Previous 199869 Revisions Next

r22094 Tuesday 26th March, 2013 at 05:38:33 UTC by Fabio Priuli
megadriv: reducing input tag lookups. nw.
[src/mame/drivers]megadrvb.c
[src/mame/includes]megadriv.h
[src/mame/machine]megadriv.c
[src/mess/drivers]megadriv.c

trunk/src/mess/drivers/megadriv.c
r22093r22094
2424   m_slotcart(*this, "mdslot")
2525   { }
2626   
27   ioport_port *m_io_ctrlr;
28   ioport_port *m_io_pad3b[4];
29   ioport_port *m_io_pad6b[2][4];
30   
2731   optional_device<md_cart_slot_device> m_slotcart;
2832   
2933   DECLARE_DRIVER_INIT(mess_md_common);
r22093r22094
4448   pico_state(const machine_config &mconfig, device_type type, const char *tag)
4549   : md_cons_state(mconfig, type, tag),
4650   m_picocart(*this, "picoslot") { }
47   
51
52   ioport_port *m_io_page;
53   ioport_port *m_io_pad;
54   ioport_port *m_io_penx;
55   ioport_port *m_io_peny;
56
4857   optional_device<pico_cart_slot_device> m_picocart;
4958   UINT8 m_page_register;
5059   
r22093r22094
6675READ8_MEMBER(md_cons_state::mess_md_io_read_data_port)
6776{
6877   int portnum = offset;
69   static const char *const pad6names[2][4] = {
70      { "PAD1_6B", "PAD2_6B", "UNUSED", "UNUSED" },
71      { "EXTRA1", "EXTRA2", "UNUSED", "UNUSED" }
72   };
73   static const char *const pad3names[4] = { "PAD1_3B", "PAD2_3B", "UNUSED", "UNUSED" };
7478
7579   UINT8 retdata;
7680   int controller;
r22093r22094
8084   switch (portnum)
8185   {
8286      case 0:
83         controller = (ioport("CTRLSEL")->read() & 0x0f);
87         controller = (m_io_ctrlr->read() & 0x0f);
8488         break;
8589
8690      case 1:
87         controller = (ioport("CTRLSEL")->read() & 0xf0);
91         controller = (m_io_ctrlr->read() & 0xf0);
8892         break;
8993
9094      default:
r22093r22094
101105         {
102106            /* here we read B, C & the additional buttons */
103107            retdata = (m_megadrive_io_data_regs[portnum] & helper_6b) |
104                     (((ioport(pad6names[0][portnum])->read_safe(0) & 0x30) |
105                        (ioport(pad6names[1][portnum])->read_safe(0) & 0x0f)) & ~helper_6b);
108                     (((m_io_pad6b[0][portnum]->read_safe(0) & 0x30) |
109                        (m_io_pad6b[1][portnum]->read_safe(0) & 0x0f)) & ~helper_6b);
106110         }
107111         else
108112         {
109113            /* here we read B, C & the directional buttons */
110114            retdata = (m_megadrive_io_data_regs[portnum] & helper_6b) |
111                     ((ioport(pad6names[0][portnum])->read_safe(0) & 0x3f) & ~helper_6b);
115                     ((m_io_pad6b[0][portnum]->read_safe(0) & 0x3f) & ~helper_6b);
112116         }
113117      }
114118      else
r22093r22094
117121         {
118122            /* here we read ((Start & A) >> 2) | 0x00 */
119123            retdata = (m_megadrive_io_data_regs[portnum] & helper_6b) |
120                     (((ioport(pad6names[0][portnum])->read_safe(0) & 0xc0) >> 2) & ~helper_6b);
124                     (((m_io_pad6b[0][portnum]->read_safe(0) & 0xc0) >> 2) & ~helper_6b);
121125         }
122126         else if (m_io_stage[portnum]==2)
123127         {
124128            /* here we read ((Start & A) >> 2) | 0x0f */
125129            retdata = (m_megadrive_io_data_regs[portnum] & helper_6b) |
126                     ((((ioport(pad6names[0][portnum])->read_safe(0) & 0xc0) >> 2) | 0x0f) & ~helper_6b);
130                     ((((m_io_pad6b[0][portnum]->read_safe(0) & 0xc0) >> 2) | 0x0f) & ~helper_6b);
127131         }
128132         else
129133         {
130134            /* here we read ((Start & A) >> 2) | Up and Down */
131135            retdata = (m_megadrive_io_data_regs[portnum] & helper_6b) |
132                     ((((ioport(pad6names[0][portnum])->read_safe(0) & 0xc0) >> 2) |
133                        (ioport(pad6names[0][portnum])->read_safe(0) & 0x03)) & ~helper_6b);
136                     ((((m_io_pad6b[0][portnum]->read_safe(0) & 0xc0) >> 2) |
137                        (m_io_pad6b[0][portnum]->read_safe(0) & 0x03)) & ~helper_6b);
134138         }
135139      }
136140
r22093r22094
154158      {
155159         /* here we read B, C & the directional buttons */
156160         retdata = (m_megadrive_io_data_regs[portnum] & helper_3b) |
157                  (((ioport(pad3names[portnum])->read_safe(0) & 0x3f) | 0x40) & ~helper_3b);
161                  (((m_io_pad3b[portnum]->read_safe(0) & 0x3f) | 0x40) & ~helper_3b);
158162      }
159163      else
160164      {
161165         /* here we read ((Start & A) >> 2) | Up and Down */
162166         retdata = (m_megadrive_io_data_regs[portnum] & helper_3b) |
163                  ((((ioport(pad3names[portnum])->read_safe(0) & 0xc0) >> 2) |
164                     (ioport(pad3names[portnum])->read_safe(0) & 0x03) | 0x40) & ~helper_3b);
167                  ((((m_io_pad3b[portnum]->read_safe(0) & 0xc0) >> 2) |
168                     (m_io_pad3b[portnum]->read_safe(0) & 0x03) | 0x40) & ~helper_3b);
165169      }
166170   }
167171
r22093r22094
177181   switch (portnum)
178182   {
179183      case 0:
180         controller = (ioport("CTRLSEL")->read() & 0x0f);
184         controller = (m_io_ctrlr->read() & 0x0f);
181185         break;
182186
183187      case 1:
184         controller = (ioport("CTRLSEL")->read() & 0xf0);
188         controller = (m_io_ctrlr->read() & 0xf0);
185189         break;
186190
187191      default:
r22093r22094
196200         if (((m_megadrive_io_data_regs[portnum] & 0x40) == 0x00) && ((data & 0x40) == 0x40))
197201         {
198202            m_io_stage[portnum]++;
199            m_io_timeout[portnum]->adjust(machine().device<cpu_device>("maincpu")->cycles_to_attotime(8192));
203            m_io_timeout[portnum]->adjust(m_maincpu->cycles_to_attotime(8192));
200204         }
201205
202206      }
r22093r22094
318322
319323MACHINE_START_MEMBER(md_cons_state,ms_megadriv )
320324{
321   init_megadri6_io();
325   static const char *const pad6names[2][4] = {
326      { "PAD1_6B", "PAD2_6B", "UNUSED", "UNUSED" },
327      { "EXTRA1", "EXTRA2", "UNUSED", "UNUSED" }
328   };
329   static const char *const pad3names[4] = { "PAD1_3B", "PAD2_3B", "UNUSED", "UNUSED" };
322330
331   m_io_ctrlr = ioport("CTRLSEL");
332
333   for (int i = 0; i < 4; i++)
334   {
335      m_io_pad3b[i] = ioport(pad3names[i]);
336      m_io_pad6b[0][i] = ioport(pad6names[0][i]);
337      m_io_pad6b[1][i] = ioport(pad6names[1][i]);
338   }
339
340   // setup timers for 6 button pads   
341   for (int i = 0; i < 3; i++)
342      m_io_timeout[i] = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(md_base_state::io_timeout_timer_callback),this), (void*)(FPTR)i);
343
323344   vdp_get_word_from_68k_mem = vdp_get_word_from_68k_mem_console;
324345
325346   machine().device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7fffff, read16_delegate(FUNC(base_md_cart_slot_device::read),(base_md_cart_slot_device*)m_slotcart), write16_delegate(FUNC(base_md_cart_slot_device::write),(base_md_cart_slot_device*)m_slotcart));
r22093r22094
886907   switch (pen)
887908   {
888909      case PICO_PENX:
889         penpos = ioport("PENX")->read_safe(0);
910         penpos = m_io_penx->read_safe(0);
890911         penpos |= 0x6;
891912         penpos = penpos * 320 / 255;
892913         penpos += 0x3d;
893914         break;
894915      case PICO_PENY:
895         penpos = ioport("PENY")->read_safe(0);
916         penpos = m_io_peny->read_safe(0);
896917         penpos |= 0x6;
897918         penpos = penpos * 251 / 255;
898919         penpos += 0x1fc;
r22093r22094
912933         retdata = (m_export << 6) | (m_pal << 5);
913934         break;
914935      case 1:
915         retdata = ioport("PAD")->read_safe(0);
936         retdata = m_io_pad->read_safe(0);
916937         break;
917938
918939         /*
r22093r22094
945966         either page 5 or page 6 is often unused.
946967      */
947968         {
948            UINT8 tmp = ioport("PAGE")->read_safe(0);
969            UINT8 tmp = m_io_page->read_safe(0);
949970            if (tmp == 2 && m_page_register != 0x3f)
950971            {
951972               m_page_register <<= 1;
r22093r22094
10171038
10181039MACHINE_START_MEMBER(pico_state,pico)
10191040{
1041   m_io_page = ioport("PAGE");
1042   m_io_pad = ioport("PAD");
1043   m_io_penx = ioport("PENX");
1044   m_io_peny = ioport("PENY");
1045   
10201046   machine().device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7fffff, read16_delegate(FUNC(base_md_cart_slot_device::read),(base_md_cart_slot_device*)m_picocart), write16_delegate(FUNC(base_md_cart_slot_device::write),(base_md_cart_slot_device*)m_picocart));
10211047   machine().device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0xa13000, 0xa130ff, read16_delegate(FUNC(base_md_cart_slot_device::read_a13),(base_md_cart_slot_device*)m_picocart), write16_delegate(FUNC(base_md_cart_slot_device::write_a13),(base_md_cart_slot_device*)m_picocart));
10221048   machine().device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_handler(0xa15000, 0xa150ff, read16_delegate(FUNC(base_md_cart_slot_device::read_a15),(base_md_cart_slot_device*)m_picocart), write16_delegate(FUNC(base_md_cart_slot_device::write_a15),(base_md_cart_slot_device*)m_picocart));
trunk/src/mame/machine/megadriv.c
r22093r22094
9191   }
9292}
9393
94// this is used by 6 button pads and gets installed in machine_start for drivers requiring it
9495TIMER_CALLBACK_MEMBER(md_base_state::io_timeout_timer_callback)
9596{
9697   m_io_stage[(int)(FPTR)ptr] = -1;
9798}
9899
99void md_base_state::init_megadri6_io()
100{
101   int i;
102100
103   for (i=0; i<3; i++)
104   {
105      m_io_timeout[i] = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(md_base_state::io_timeout_timer_callback),this), (void*)(FPTR)i);
106   }
107}
108
109101/*
110102
111103    A10001h = A0         Version register
r22093r22094
216208{
217209   int portnum = offset;
218210   UINT8 retdata, helper = (m_megadrive_io_ctrl_regs[portnum] & 0x3f) | 0xc0; // bits 6 & 7 always come from m_megadrive_io_data_regs
219   static const char *const pad3names[] = { "PAD1", "PAD2", "IN0", "UNK" };
220   static const char *const pad6names[] = { "EXTRA1", "EXTRA2", "IN0", "UNK" };
221211
222212   if (m_megadrive_io_data_regs[portnum] & 0x40)
223213   {
r22093r22094
225215      {
226216         /* here we read B, C & the additional buttons */
227217         retdata = (m_megadrive_io_data_regs[portnum] & helper) |
228                  (((ioport(pad3names[portnum])->read_safe(0) & 0x30) |
229                     (ioport(pad6names[portnum])->read_safe(0) & 0x0f)) & ~helper);
218                  (((m_io_pad_3b[portnum]->read_safe(0) & 0x30) |
219                     (m_io_pad_6b[portnum]->read_safe(0) & 0x0f)) & ~helper);
230220      }
231221      else
232222      {
233223         /* here we read B, C & the directional buttons */
234224         retdata = (m_megadrive_io_data_regs[portnum] & helper) |
235                  ((ioport(pad3names[portnum])->read_safe(0) & 0x3f) & ~helper);
225                  ((m_io_pad_3b[portnum]->read_safe(0) & 0x3f) & ~helper);
236226      }
237227   }
238228   else
r22093r22094
241231      {
242232         /* here we read ((Start & A) >> 2) | 0x00 */
243233         retdata = (m_megadrive_io_data_regs[portnum] & helper) |
244                  (((ioport(pad3names[portnum])->read_safe(0) & 0xc0) >> 2) & ~helper);
234                  (((m_io_pad_3b[portnum]->read_safe(0) & 0xc0) >> 2) & ~helper);
245235      }
246236      else if (m_io_stage[portnum]==2)
247237      {
248238         /* here we read ((Start & A) >> 2) | 0x0f */
249239         retdata = (m_megadrive_io_data_regs[portnum] & helper) |
250                  ((((ioport(pad3names[portnum])->read_safe(0) & 0xc0) >> 2) | 0x0f) & ~helper);
240                  ((((m_io_pad_3b[portnum]->read_safe(0) & 0xc0) >> 2) | 0x0f) & ~helper);
251241      }
252242      else
253243      {
254244         /* here we read ((Start & A) >> 2) | Up and Down */
255245         retdata = (m_megadrive_io_data_regs[portnum] & helper) |
256                  ((((ioport(pad3names[portnum])->read_safe(0) & 0xc0) >> 2) |
257                     (ioport(pad3names[portnum])->read_safe(0) & 0x03)) & ~helper);
246                  ((((m_io_pad_3b[portnum]->read_safe(0) & 0xc0) >> 2) |
247                     (m_io_pad_3b[portnum]->read_safe(0) & 0x03)) & ~helper);
258248      }
259249   }
260250
r22093r22094
269259{
270260   int portnum = offset;
271261   UINT8 retdata, helper = (m_megadrive_io_ctrl_regs[portnum] & 0x7f) | 0x80; // bit 7 always comes from m_megadrive_io_data_regs
272   static const char *const pad3names[] = { "PAD1", "PAD2", "IN0", "UNK" };
273262
274263   if (m_megadrive_io_data_regs[portnum] & 0x40)
275264   {
276265      /* here we read B, C & the directional buttons */
277266      retdata = (m_megadrive_io_data_regs[portnum] & helper) |
278               (((ioport(pad3names[portnum])->read_safe(0) & 0x3f) | 0x40) & ~helper);
267               (((m_io_pad_3b[portnum]->read_safe(0) & 0x3f) | 0x40) & ~helper);
279268   }
280269   else
281270   {
282271      /* here we read ((Start & A) >> 2) | Up and Down */
283272      retdata = (m_megadrive_io_data_regs[portnum] & helper) |
284               ((((ioport(pad3names[portnum])->read_safe(0) & 0xc0) >> 2) |
285                  (ioport(pad3names[portnum])->read_safe(0) & 0x03) | 0x40) & ~helper);
273               ((((m_io_pad_3b[portnum]->read_safe(0) & 0xc0) >> 2) |
274                  (m_io_pad_3b[portnum]->read_safe(0) & 0x03) | 0x40) & ~helper);
286275   }
287276
288277   return retdata;
r22093r22094
296285   if (ctrl == 0x55)
297286   {
298287         /* A keys */
299         retdata = ((ioport("PAD1")->read() & 0x40) >> 2) |
300            ((ioport("PAD2")->read() & 0x40) >> 4) | 0xeb;
288         retdata = ((m_io_pad_3b[0]->read() & 0x40) >> 2) |
289            ((m_io_pad_3b[1]->read() & 0x40) >> 4) | 0xeb;
301290   }
302291   else
303292   {
304293      if (offset == 0)
305294      {
306         retdata = (ioport("PAD1")->read() & 0x3f) | ((ioport("PAD2")->read() & 0x03) << 6);
295         retdata = (m_io_pad_3b[0]->read() & 0x3f) | ((m_io_pad_3b[1]->read() & 0x03) << 6);
307296      }
308297      else
309298      {
310         retdata = ((ioport("PAD2")->read() & 0x3c) >> 2) | 0xf0;
299         retdata = ((m_io_pad_3b[1]->read() & 0x3c) >> 2) | 0xf0;
311300      }
312301
313302   }
r22093r22094
867856
868857MACHINE_START_MEMBER(md_base_state,megadriv)
869858{
870   if (m_megadrive_6buttons_pad)
871      init_megadri6_io();
859   m_io_reset = ioport("RESET");
860   m_io_pad_3b[0] = ioport("PAD1");
861   m_io_pad_3b[1] = ioport("PAD2");
862   m_io_pad_3b[2] = ioport("IN0");
863   m_io_pad_3b[3] = ioport("UNK");
872864}
873865
874866MACHINE_RESET_MEMBER(md_base_state,megadriv)
r22093r22094
11521144
11531145   m68k_set_tas_callback(machine().device("maincpu"), megadriv_tas_callback);
11541146
1155   // the drivers which need 6 buttons pad set this to 1 in their init befare calling the megadrive init
1156   if (m_megadrive_6buttons_pad)
1157   {
1158      m_megadrive_io_read_data_port_ptr = read8_delegate(FUNC(md_base_state::megadrive_io_read_data_port_6button),this);
1159      m_megadrive_io_write_data_port_ptr = write16_delegate(FUNC(md_base_state::megadrive_io_write_data_port_6button),this);
1160      mame_printf_debug("6 button game\n");
1161   }
1162   else
1163   {
1164      m_megadrive_io_read_data_port_ptr = read8_delegate(FUNC(md_base_state::megadrive_io_read_data_port_3button),this);
1165      m_megadrive_io_write_data_port_ptr = write16_delegate(FUNC(md_base_state::megadrive_io_write_data_port_3button),this);
1166      mame_printf_debug("3 button game\n");
1167   }
1147   m_megadrive_io_read_data_port_ptr = read8_delegate(FUNC(md_base_state::megadrive_io_read_data_port_3button),this);
1148   m_megadrive_io_write_data_port_ptr = write16_delegate(FUNC(md_base_state::megadrive_io_write_data_port_3button),this);
11681149
11691150   {
11701151      /* only really useful on official games, ea games etc. don't bother
r22093r22094
13341315
13351316void md_base_state::screen_eof_megadriv(screen_device &screen, bool state)
13361317{
1337   if (screen.ioport(":RESET")->read_safe(0x00) & 0x01)
1318   if (m_io_reset->read_safe(0x00) & 0x01)
13381319      m_maincpu->set_input_line(INPUT_LINE_RESET, PULSE_LINE);
13391320
13401321   // rising edge
trunk/src/mame/includes/megadriv.h
r22093r22094
6666      m_vdp(*this,"gen_vdp"),
6767      m_32x(*this,"sega32x"),
6868      m_segacd(*this,"segacd"),
69      m_megadrive_ram(*this,"megadrive_ram"),
70      m_megadrive_6buttons_pad(0)
69      m_megadrive_ram(*this,"megadrive_ram")
7170   { }
7271   required_device<cpu_device> m_maincpu;
7372   optional_device<cpu_device> m_z80snd;
r22093r22094
7776   optional_device<sega_segacd_device> m_segacd;
7877   optional_shared_ptr<UINT16> m_megadrive_ram;
7978
79   ioport_port *m_io_reset;
80   ioport_port *m_io_pad_3b[4];
81   ioport_port *m_io_pad_6b[4];
82
8083   int m_other_hacks;   // misc hacks
8184   genesis_z80_vars m_genz80;
8285   int m_pal;
r22093r22094
122125   UINT8 m_megadrive_io_data_regs[3];
123126   UINT8 m_megadrive_io_ctrl_regs[3];
124127   UINT8 m_megadrive_io_tx_regs[3];
125   int m_megadrive_6buttons_pad;
126128   read8_delegate m_megadrive_io_read_data_port_ptr;
127129   write16_delegate m_megadrive_io_write_data_port_ptr;
128130   
129131
130132   TIMER_CALLBACK_MEMBER( io_timeout_timer_callback );
131   void init_megadri6_io();
132133   void megadrive_reset_io();
133134   DECLARE_READ8_MEMBER(megadrive_io_read_data_port_6button);
134135   DECLARE_READ8_MEMBER(megadrive_io_read_data_port_3button);
r22093r22094
183184   DECLARE_READ16_MEMBER( topshoot_200051_r );   
184185   DECLARE_READ16_MEMBER(puckpkmna_70001c_r);
185186   DECLARE_READ16_MEMBER(puckpkmna_4b2476_r);
187
188   DECLARE_MACHINE_START( md_6button );
186189};
187190
188191
trunk/src/mame/drivers/megadrvb.c
r22093r22094
650650   MCFG_FRAGMENT_ADD(md_ntsc)
651651MACHINE_CONFIG_END
652652
653MACHINE_START_MEMBER(md_boot_state, md_6button)
654{
655   MACHINE_START_CALL_MEMBER(megadriv);
656
657   m_io_pad_6b[0] = ioport("EXTRA1");
658   m_io_pad_6b[1] = ioport("EXTRA2");
659   m_io_pad_6b[2] = ioport("IN0");
660   m_io_pad_6b[3] = ioport("UNK");
661
662   // setup timers for 6 button pads   
663   for (int i = 0; i < 3; i++)
664      m_io_timeout[i] = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(md_base_state::io_timeout_timer_callback),this), (void*)(FPTR)i);
665}
666
667static MACHINE_CONFIG_START( megadrvb_6b, md_boot_state )
668   MCFG_FRAGMENT_ADD(md_ntsc)
669   MCFG_MACHINE_START_OVERRIDE(md_boot_state, md_6button)
670MACHINE_CONFIG_END
671
672
653673/*************************************
654674 *
655675 *  ROM definition(s)
r22093r22094
738758   machine().device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0x220000, 0x220001, write16_delegate(FUNC(md_boot_state::aladmdb_w),this));
739759   machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x330000, 0x330001, read16_delegate(FUNC(md_boot_state::aladmdb_r),this));
740760
741   m_megadrive_6buttons_pad = 0;
742761   DRIVER_INIT_CALL(megadrij);
743762}
744763
r22093r22094
787806
788807   machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x770070, 0x770075, read16_delegate(FUNC(md_boot_state::mk3mdb_dsw_r),this));
789808
790   m_megadrive_6buttons_pad = 1;
791809   DRIVER_INIT_CALL(megadriv);
810   // 6 button game, so overwrite 3 button io handlers
811   m_megadrive_io_read_data_port_ptr = read8_delegate(FUNC(md_base_state::megadrive_io_read_data_port_6button),this);
812   m_megadrive_io_write_data_port_ptr = write16_delegate(FUNC(md_base_state::megadrive_io_write_data_port_6button),this);
792813}
793814
794815DRIVER_INIT_MEMBER(md_boot_state,ssf2mdb)
r22093r22094
801822
802823   machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x770070, 0x770075, read16_delegate(FUNC(md_boot_state::ssf2mdb_dsw_r),this));
803824
804   m_megadrive_6buttons_pad = 1;
805825   DRIVER_INIT_CALL(megadrij);
826   // 6 button game, so overwrite 3 button io handlers
827   m_megadrive_io_read_data_port_ptr = read8_delegate(FUNC(md_base_state::megadrive_io_read_data_port_6button),this);
828   m_megadrive_io_write_data_port_ptr = write16_delegate(FUNC(md_base_state::megadrive_io_write_data_port_6button),this);
806829}
807830
808831DRIVER_INIT_MEMBER(md_boot_state,srmdb)
r22093r22094
830853
831854   machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x770070, 0x770075, read16_delegate(FUNC(md_boot_state::srmdb_dsw_r),this));
832855
833   m_megadrive_6buttons_pad = 0;
834856   DRIVER_INIT_CALL(megadriv);
835857}
836858
r22093r22094
842864   machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_port(0x200046, 0x200047, "IN2");
843865   machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_port(0x200048, 0x200049, "IN3");
844866
845   m_megadrive_6buttons_pad = 0;
846867   DRIVER_INIT_CALL(megadriv);
847868}
848869
r22093r22094
852873 *
853874 *************************************/
854875
855GAME( 1993, aladmdb,  0, megadrvb,   aladmdb, md_boot_state,  aladmdb,  ROT0, "bootleg / Sega",   "Aladdin (bootleg of Japanese Megadrive version)", 0)
856GAME( 1996, mk3mdb,   0, megadrvb,   mk3mdb, md_boot_state,   mk3mdb,   ROT0, "bootleg / Midway", "Mortal Kombat 3 (bootleg of Megadrive version)", 0)
857GAME( 1994, ssf2mdb,  0, megadrvb,   ssf2mdb, md_boot_state,  ssf2mdb,  ROT0, "bootleg / Capcom", "Super Street Fighter II - The New Challengers (bootleg of Japanese MegaDrive version)", 0)
858GAME( 1993, srmdb,    0, megadrvb,   srmdb, md_boot_state,    srmdb,    ROT0, "bootleg / Konami", "Sunset Riders (bootleg of Megadrive version)", 0)
859GAME( 1995, topshoot, 0, md_bootleg, topshoot, md_boot_state, topshoot, ROT0, "Sun Mixing",       "Top Shooter", 0)
876GAME( 1993, aladmdb,  0, megadrvb,     aladmdb,  md_boot_state,  aladmdb,  ROT0, "bootleg / Sega",   "Aladdin (bootleg of Japanese Megadrive version)", 0)
877GAME( 1996, mk3mdb,   0, megadrvb_6b,  mk3mdb,   md_boot_state,  mk3mdb,   ROT0, "bootleg / Midway", "Mortal Kombat 3 (bootleg of Megadrive version)", 0)
878GAME( 1994, ssf2mdb,  0, megadrvb_6b,  ssf2mdb,  md_boot_state,  ssf2mdb,  ROT0, "bootleg / Capcom", "Super Street Fighter II - The New Challengers (bootleg of Japanese MegaDrive version)", 0)
879GAME( 1993, srmdb,    0, megadrvb,     srmdb,    md_boot_state,  srmdb,    ROT0, "bootleg / Konami", "Sunset Riders (bootleg of Megadrive version)", 0)
880GAME( 1995, topshoot, 0, md_bootleg,   topshoot, md_boot_state,  topshoot, ROT0, "Sun Mixing",       "Top Shooter", 0)

Previous 199869 Revisions Next


© 1997-2024 The MAME Team