Previous 199869 Revisions Next

r30689 Wednesday 28th May, 2014 at 00:14:36 UTC by Alex Jackson
xexex.c: small cleanup to audiocpu banking; start removal of KONAMI_ROM_DEINTERLEAVE crap (nw)
[src/mame/drivers]neogeo.c xexex.c
[src/mame/includes]neogeo.h xexex.h
[src/mame/video]neogeo.c

trunk/src/mame/drivers/neogeo.c
r30688r30689
17911791   MCFG_SCREEN_RAW_PARAMS(NEOGEO_PIXEL_CLOCK, NEOGEO_HTOTAL, NEOGEO_HBEND, NEOGEO_HBSTART, NEOGEO_VTOTAL, NEOGEO_VBEND, NEOGEO_VBSTART)
17921792   MCFG_SCREEN_UPDATE_DRIVER(neogeo_state, screen_update_neogeo)
17931793
1794   /* 4096 colors * two banks * normal and shadow */
1795   MCFG_PALETTE_ADD("palette", 4096*2*2)
1796
17941797   MCFG_DEVICE_ADD("spritegen", NEOGEO_SPRITE_OPTIMZIED, 0)
17951798   
17961799   /* audio hardware */
trunk/src/mame/drivers/xexex.c
r30688r30689
287287   return soundlatch3_byte_r(space, 0);
288288}
289289
290void xexex_state::reset_sound_region()
291{
292   membank("bank2")->set_entry(m_cur_sound_region & 0x07);
293}
294
295290WRITE8_MEMBER(xexex_state::sound_bankswitch_w)
296291{
297   m_cur_sound_region = data & 7;
298   reset_sound_region();
292   membank("z80bank")->set_entry(data & 0x07);
299293}
300294
301295static void ym_set_mixing(device_t *device, double left, double right)
r30688r30689
409403
410404
411405static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, xexex_state )
412   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2")
413   AM_RANGE(0x0000, 0xbfff) AM_ROM
406   AM_RANGE(0x0000, 0x7fff) AM_ROM
407   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("z80bank")
414408   AM_RANGE(0xc000, 0xdfff) AM_RAM
415409   AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("k054539", k054539_device, read, write)
416410   AM_RANGE(0xec00, 0xec01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
r30688r30689
465459   "gfx1", 0,
466460   K056832_BPP_4,
467461   1, 0,
468   KONAMI_ROM_DEINTERLEAVE_2,
462   KONAMI_ROM_DEINTERLEAVE_NONE,
469463   xexex_tile_callback, "none"
470464};
471465
r30688r30689
474468   "gfx2", 1,
475469   NORMAL_PLANE_ORDER,
476470   -48, 32,
477   KONAMI_ROM_DEINTERLEAVE_4,
471   KONAMI_ROM_DEINTERLEAVE_NONE,
478472   xexex_sprite_callback
479473};
480474
481475void xexex_state::xexex_postload()
482476{
483477   parse_control2();
484   reset_sound_region();
485478}
486479
487480void xexex_state::machine_start()
488481{
489   UINT8 *ROM = memregion("audiocpu")->base();
482   membank("z80bank")->configure_entries(0, 8, memregion("audiocpu")->base(), 0x4000);
483   membank("z80bank")->set_entry(0);
490484
491   membank("bank2")->configure_entries(0, 8, &ROM[0x10000], 0x4000);
492   membank("bank2")->set_entry(0);
493
494485   save_item(NAME(m_cur_alpha));
495486   save_item(NAME(m_sprite_colorbase));
496487   save_item(NAME(m_layer_colorbase));
r30688r30689
500491   save_item(NAME(m_frame));
501492
502493   save_item(NAME(m_cur_control2));
503   save_item(NAME(m_cur_sound_region));
504494   machine().save().register_postload(save_prepost_delegate(FUNC(xexex_state::xexex_postload), this));
505495
506496   m_dmadelay_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(xexex_state::dmaend_callback),this));
r30688r30689
519509   m_sprite_colorbase = 0;
520510
521511   m_cur_control2 = 0;
522   m_cur_sound_region = 0;
523512   m_suspension_active = 0;
524513   m_resume_trigger = 1000;
525514   m_frame = -1;
r30688r30689
602591   ROM_LOAD16_BYTE( "067b03.13d",   0x100000, 0x040000, CRC(97833086) SHA1(a564f7b1b52c774d78a59f4418c7ecccaf94ad41) )
603592   ROM_LOAD16_BYTE( "067b04.13f",   0x100001, 0x040000, CRC(26ec5dc8) SHA1(9da62683bfa8f16607cbea2d59a1446ec8588c5b) )
604593
605   ROM_REGION( 0x030000, "audiocpu", 0 )
594   ROM_REGION( 0x020000, "audiocpu", 0 )
606595   ROM_LOAD( "067eaa05.4e", 0x000000, 0x020000, CRC(0e33d6ec) SHA1(4dd68cb78c779e2d035e43fec35a7672ed1c259b) )
607   ROM_RELOAD(              0x010000, 0x020000 )
608596
609597   ROM_REGION( 0x200000, "gfx1", 0 )
610   ROM_LOAD( "067b14.1n",   0x000000, 0x100000, CRC(02a44bfa) SHA1(ad95df4dbf8842820ef20f54407870afb6d0e4a3) )
611   ROM_LOAD( "067b13.2n",   0x100000, 0x100000, CRC(633c8eb5) SHA1(a11f78003a1dffe2d8814d368155059719263082) )
598   ROM_LOAD32_WORD( "067b14.1n",   0x000000, 0x100000, CRC(02a44bfa) SHA1(ad95df4dbf8842820ef20f54407870afb6d0e4a3) )
599   ROM_LOAD32_WORD( "067b13.2n",   0x000002, 0x100000, CRC(633c8eb5) SHA1(a11f78003a1dffe2d8814d368155059719263082) )
612600
613601   ROM_REGION( 0x400000, "gfx2", 0 )
614   ROM_LOAD( "067b12.17n",  0x000000, 0x100000, CRC(08d611b0) SHA1(9cac60131e0411f173acd8ef3f206e5e58a7e5d2) )
615   ROM_LOAD( "067b11.19n",  0x100000, 0x100000, CRC(a26f7507) SHA1(6bf717cb9fcad59a2eafda967f14120b9ebbc8c5) )
616   ROM_LOAD( "067b10.20n",  0x200000, 0x100000, CRC(ee31db8d) SHA1(c41874fb8b401ea9cdd327ee6239b5925418cf7b) )
617   ROM_LOAD( "067b09.22n",  0x300000, 0x100000, CRC(88f072ef) SHA1(7ecc04dbcc29b715117e970cc96e11137a21b83a) )
602   ROM_LOAD64_WORD( "067b12.17n",  0x000000, 0x100000, CRC(08d611b0) SHA1(9cac60131e0411f173acd8ef3f206e5e58a7e5d2) )
603   ROM_LOAD64_WORD( "067b11.19n",  0x000002, 0x100000, CRC(a26f7507) SHA1(6bf717cb9fcad59a2eafda967f14120b9ebbc8c5) )
604   ROM_LOAD64_WORD( "067b10.20n",  0x000004, 0x100000, CRC(ee31db8d) SHA1(c41874fb8b401ea9cdd327ee6239b5925418cf7b) )
605   ROM_LOAD64_WORD( "067b09.22n",  0x000006, 0x100000, CRC(88f072ef) SHA1(7ecc04dbcc29b715117e970cc96e11137a21b83a) )
618606
619607   ROM_REGION( 0x080000, "k053250", 0 )
620608   ROM_LOAD( "067b08.22f",  0x000000, 0x080000, CRC(ca816b7b) SHA1(769ce3700e41200c34adec98598c0fe371fe1e6d) )
r30688r30689
634622   ROM_LOAD16_BYTE( "067b03.13d",   0x100000, 0x040000, CRC(97833086) SHA1(a564f7b1b52c774d78a59f4418c7ecccaf94ad41) )
635623   ROM_LOAD16_BYTE( "067b04.13f",   0x100001, 0x040000, CRC(26ec5dc8) SHA1(9da62683bfa8f16607cbea2d59a1446ec8588c5b) )
636624
637   ROM_REGION( 0x030000, "audiocpu", 0 )
625   ROM_REGION( 0x020000, "audiocpu", 0 )
638626   ROM_LOAD( "067eaa05.4e", 0x000000, 0x020000, CRC(0e33d6ec) SHA1(4dd68cb78c779e2d035e43fec35a7672ed1c259b) )
639   ROM_RELOAD(              0x010000, 0x020000 )
640627
641628   ROM_REGION( 0x200000, "gfx1", 0 )
642   ROM_LOAD( "067b14.1n",   0x000000, 0x100000, CRC(02a44bfa) SHA1(ad95df4dbf8842820ef20f54407870afb6d0e4a3) )
643   ROM_LOAD( "067b13.2n",   0x100000, 0x100000, CRC(633c8eb5) SHA1(a11f78003a1dffe2d8814d368155059719263082) )
629   ROM_LOAD32_WORD( "067b14.1n",   0x000000, 0x100000, CRC(02a44bfa) SHA1(ad95df4dbf8842820ef20f54407870afb6d0e4a3) )
630   ROM_LOAD32_WORD( "067b13.2n",   0x000002, 0x100000, CRC(633c8eb5) SHA1(a11f78003a1dffe2d8814d368155059719263082) )
644631
645632   ROM_REGION( 0x400000, "gfx2", 0 )
646   ROM_LOAD( "067b12.17n",  0x000000, 0x100000, CRC(08d611b0) SHA1(9cac60131e0411f173acd8ef3f206e5e58a7e5d2) )
647   ROM_LOAD( "067b11.19n",  0x100000, 0x100000, CRC(a26f7507) SHA1(6bf717cb9fcad59a2eafda967f14120b9ebbc8c5) )
648   ROM_LOAD( "067b10.20n",  0x200000, 0x100000, CRC(ee31db8d) SHA1(c41874fb8b401ea9cdd327ee6239b5925418cf7b) )
649   ROM_LOAD( "067b09.22n",  0x300000, 0x100000, CRC(88f072ef) SHA1(7ecc04dbcc29b715117e970cc96e11137a21b83a) )
633   ROM_LOAD64_WORD( "067b12.17n",  0x000000, 0x100000, CRC(08d611b0) SHA1(9cac60131e0411f173acd8ef3f206e5e58a7e5d2) )
634   ROM_LOAD64_WORD( "067b11.19n",  0x000002, 0x100000, CRC(a26f7507) SHA1(6bf717cb9fcad59a2eafda967f14120b9ebbc8c5) )
635   ROM_LOAD64_WORD( "067b10.20n",  0x000004, 0x100000, CRC(ee31db8d) SHA1(c41874fb8b401ea9cdd327ee6239b5925418cf7b) )
636   ROM_LOAD64_WORD( "067b09.22n",  0x000006, 0x100000, CRC(88f072ef) SHA1(7ecc04dbcc29b715117e970cc96e11137a21b83a) )
650637
651638   ROM_REGION( 0x080000, "k053250", 0 )
652639   ROM_LOAD( "067b08.22f",  0x000000, 0x080000, CRC(ca816b7b) SHA1(769ce3700e41200c34adec98598c0fe371fe1e6d) )
r30688r30689
666653   ROM_LOAD16_BYTE( "067b03.13d",   0x100000, 0x040000, CRC(97833086) SHA1(a564f7b1b52c774d78a59f4418c7ecccaf94ad41) )
667654   ROM_LOAD16_BYTE( "067b04.13f",   0x100001, 0x040000, CRC(26ec5dc8) SHA1(9da62683bfa8f16607cbea2d59a1446ec8588c5b) )
668655
669   ROM_REGION( 0x030000, "audiocpu", 0 )
656   ROM_REGION( 0x020000, "audiocpu", 0 )
670657   ROM_LOAD( "067jaa05.4e", 0x000000, 0x020000, CRC(2f4dd0a8) SHA1(bfa76c9c968f1beba648a2911510e3d666a8fe3a) )
671   ROM_RELOAD(              0x010000, 0x020000 )
672658
673659   ROM_REGION( 0x200000, "gfx1", 0 )
674   ROM_LOAD( "067b14.1n",   0x000000, 0x100000, CRC(02a44bfa) SHA1(ad95df4dbf8842820ef20f54407870afb6d0e4a3) )
675   ROM_LOAD( "067b13.2n",   0x100000, 0x100000, CRC(633c8eb5) SHA1(a11f78003a1dffe2d8814d368155059719263082) )
660   ROM_LOAD32_WORD( "067b14.1n",   0x000000, 0x100000, CRC(02a44bfa) SHA1(ad95df4dbf8842820ef20f54407870afb6d0e4a3) )
661   ROM_LOAD32_WORD( "067b13.2n",   0x000002, 0x100000, CRC(633c8eb5) SHA1(a11f78003a1dffe2d8814d368155059719263082) )
676662
677663   ROM_REGION( 0x400000, "gfx2", 0 )
678   ROM_LOAD( "067b12.17n",  0x000000, 0x100000, CRC(08d611b0) SHA1(9cac60131e0411f173acd8ef3f206e5e58a7e5d2) )
679   ROM_LOAD( "067b11.19n",  0x100000, 0x100000, CRC(a26f7507) SHA1(6bf717cb9fcad59a2eafda967f14120b9ebbc8c5) )
680   ROM_LOAD( "067b10.20n",  0x200000, 0x100000, CRC(ee31db8d) SHA1(c41874fb8b401ea9cdd327ee6239b5925418cf7b) )
681   ROM_LOAD( "067b09.22n",  0x300000, 0x100000, CRC(88f072ef) SHA1(7ecc04dbcc29b715117e970cc96e11137a21b83a) )
664   ROM_LOAD64_WORD( "067b12.17n",  0x000000, 0x100000, CRC(08d611b0) SHA1(9cac60131e0411f173acd8ef3f206e5e58a7e5d2) )
665   ROM_LOAD64_WORD( "067b11.19n",  0x000002, 0x100000, CRC(a26f7507) SHA1(6bf717cb9fcad59a2eafda967f14120b9ebbc8c5) )
666   ROM_LOAD64_WORD( "067b10.20n",  0x000004, 0x100000, CRC(ee31db8d) SHA1(c41874fb8b401ea9cdd327ee6239b5925418cf7b) )
667   ROM_LOAD64_WORD( "067b09.22n",  0x000006, 0x100000, CRC(88f072ef) SHA1(7ecc04dbcc29b715117e970cc96e11137a21b83a) )
682668
683669   ROM_REGION( 0x080000, "k053250", 0 )
684670   ROM_LOAD( "067b08.22f",  0x000000, 0x080000, CRC(ca816b7b) SHA1(769ce3700e41200c34adec98598c0fe371fe1e6d) )
trunk/src/mame/includes/xexex.h
r30688r30689
5050
5151   /* misc */
5252   UINT16     m_cur_control2;
53   INT32      m_cur_sound_region;
5453   INT32      m_strip_0x1a;
5554   int        m_suspension_active;
5655   int        m_resume_trigger;
r30688r30689
9594   void xexex_postload();
9695   void xexex_objdma( int limiter );
9796   void parse_control2(  );
98   void reset_sound_region();
9997};
10098
10199/*----------- defined in video/xexex.c -----------*/
trunk/src/mame/includes/neogeo.h
r30688r30689
150150   void neogeo_set_display_counter_msb(UINT16 data);
151151   void neogeo_set_display_counter_lsb(UINT16 data);
152152   void set_video_control( UINT16 data );
153   
154153
155
156
157
158154   void compute_rgb_weights(  );
155   void create_rgb_lookups();
159156   void regenerate_pens();
160157   pen_t get_pen( UINT16 data );
161158   void neogeo_set_palette_bank( UINT8 data );
r30688r30689
349346   UINT16 get_video_control(  );
350347
351348   // color/palette related
352   // TODO: disentangle from the rest of the video emulation
349   UINT8      m_palette_lookup[32][4];
353350   double     m_rgb_weights_normal[5];
354351   double     m_rgb_weights_normal_bit15[5];
355352   double     m_rgb_weights_dark[5];
trunk/src/mame/video/neogeo.c
r30688r30689
4848}
4949
5050
51void neogeo_state::create_rgb_lookups()
52{
53   static const int resistances[] = {3900, 2200, 1000, 470, 220};
54
55   /* compute four sets of weights - with or without the pulldowns -
56      ensuring that we use the same scaler for all */
57   double weights_normal[5];
58   double scaler = compute_resistor_weights(0, 255, -1,
59                                 5, resistances, weights_normal, 0, 0,
60                                 0, NULL, NULL, 0, 0,
61                                 0, NULL, NULL, 0, 0);
62
63   double weights_dark[5];
64   compute_resistor_weights(0, 255, scaler,
65                     5, resistances, weights_dark, 8200, 0,
66                     0, NULL, NULL, 0, 0,
67                     0, NULL, NULL, 0, 0);
68
69   double weights_shadow[5];
70   compute_resistor_weights(0, 255, scaler,
71                     5, resistances, weights_shadow, 150, 0,
72                     0, NULL, NULL, 0, 0,
73                     0, NULL, NULL, 0, 0);
74
75   double weights_dark_shadow[5];
76   compute_resistor_weights(0, 255, scaler,
77                     5, resistances, weights_dark_shadow, 1.0 / ((1.0 / 8200) + (1.0 / 150)), 0,
78                     0, NULL, NULL, 0, 0,
79                     0, NULL, NULL, 0, 0);
80
81   for (int i = 0; i < 32; i++)
82   {
83      int i4 = (i >> 4) & 1;
84      int i3 = (i >> 3) & 1;
85      int i2 = (i >> 2) & 1;
86      int i1 = (i >> 1) & 1;
87      int i0 = (i >> 0) & 1;
88      m_palette_lookup[i][0] = combine_5_weights(weights_normal, i0, i1, i2, i3, i4);
89      m_palette_lookup[i][1] = combine_5_weights(weights_dark, i0, i1, i2, i3, i4);
90      m_palette_lookup[i][2] = combine_5_weights(weights_shadow, i0, i1, i2, i3, i4);
91      m_palette_lookup[i][3] = combine_5_weights(weights_dark_shadow, i0, i1, i2, i3, i4);
92   }
93}
94
95
5196pen_t neogeo_state::get_pen( UINT16 data )
5297{
5398   double *weights;
r30688r30689
155200   m_pens = auto_alloc_array(machine(), pen_t, NUM_PENS);
156201
157202   compute_rgb_weights();
203   create_rgb_lookups();
158204
159205   memset(m_palettes[0], 0x00, NUM_PENS * sizeof(UINT16));
160206   memset(m_palettes[1], 0x00, NUM_PENS * sizeof(UINT16));

Previous 199869 Revisions Next


© 1997-2024 The MAME Team