summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/dec8.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/dec8.cpp')
-rw-r--r--src/mame/drivers/dec8.cpp194
1 files changed, 63 insertions, 131 deletions
diff --git a/src/mame/drivers/dec8.cpp b/src/mame/drivers/dec8.cpp
index 021b461713b..cc18e86d175 100644
--- a/src/mame/drivers/dec8.cpp
+++ b/src/mame/drivers/dec8.cpp
@@ -348,7 +348,7 @@ WRITE8_MEMBER(dec8_state::csilver_i8751_w)
WRITE8_MEMBER(dec8_state::dec8_bank_w)
{
- membank("bank1")->set_entry(data & 0x0f);
+ m_mainbank->set_entry(data & 0x0f);
}
/* Used by Ghostbusters, Meikyuu Hunter G & Gondomania */
@@ -361,7 +361,7 @@ WRITE8_MEMBER(dec8_state::ghostb_bank_w)
Bits 4-7: Bank switch
*/
- membank("bank1")->set_entry(data >> 4);
+ m_mainbank->set_entry(data >> 4);
if ((data&1)==0) m_maincpu->set_input_line(M6809_IRQ_LINE, CLEAR_LINE);
m_nmi_enable = (data & 2) >> 1;
@@ -377,7 +377,7 @@ WRITE8_MEMBER(dec8_state::csilver_control_w)
Bit 0x40 - Unused.
Bit 0x80 - Hold subcpu reset line high if clear, else low? (Not needed anyway)
*/
- membank("bank1")->set_entry(data & 0x0f);
+ m_mainbank->set_entry(data & 0x0f);
}
WRITE8_MEMBER(dec8_state::dec8_sound_w)
@@ -410,7 +410,7 @@ WRITE8_MEMBER(dec8_state::csilver_adpcm_data_w)
WRITE8_MEMBER(dec8_state::csilver_sound_bank_w)
{
- membank("bank3")->set_entry((data & 0x08) >> 3);
+ m_soundbank->set_entry((data & 0x08) >> 3);
}
/******************************************************************************/
@@ -463,7 +463,6 @@ WRITE8_MEMBER(dec8_state::flip_screen_w){ flip_screen_set(data); }
/******************************************************************************/
-
ADDRESS_MAP_START(dec8_state::lastmisn_map)
AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1")
AM_RANGE(0x1000, 0x13ff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8) AM_SHARE("palette")
@@ -486,7 +485,7 @@ ADDRESS_MAP_START(dec8_state::lastmisn_map)
AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("share2")
AM_RANGE(0x3800, 0x3fff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_SHARE("bg_data")
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
+ AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank")
AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -530,7 +529,7 @@ ADDRESS_MAP_START(dec8_state::shackled_map)
AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("share2")
AM_RANGE(0x3800, 0x3fff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_SHARE("bg_data")
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
+ AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank")
AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -578,7 +577,7 @@ ADDRESS_MAP_START(dec8_state::gondo_map)
AM_RANGE(0x3838, 0x3838) AM_READ(i8751_h_r)
AM_RANGE(0x3839, 0x3839) AM_READ(i8751_l_r)
AM_RANGE(0x383a, 0x383b) AM_WRITE(dec8_i8751_w)
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
+ AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank")
AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -600,7 +599,7 @@ ADDRESS_MAP_START(dec8_state::garyoret_map)
AM_RANGE(0x3838, 0x3839) AM_WRITE(dec8_i8751_w)
AM_RANGE(0x383a, 0x383a) AM_READ(i8751_h_r)
AM_RANGE(0x383b, 0x383b) AM_READ(i8751_l_r)
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
+ AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank")
AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -624,7 +623,7 @@ ADDRESS_MAP_START(dec8_state::meikyuh_map)
AM_RANGE(0x3840, 0x3840) AM_WRITE(ghostb_bank_w)
AM_RANGE(0x3860, 0x3860) AM_READ(i8751_l_r)
AM_RANGE(0x3860, 0x3861) AM_WRITE(dec8_i8751_w)
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
+ AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank")
AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -649,7 +648,7 @@ ADDRESS_MAP_START(dec8_state::csilver_map)
AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("share2")
AM_RANGE(0x3800, 0x3fff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_SHARE("bg_data")
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
+ AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank")
AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -689,7 +688,7 @@ ADDRESS_MAP_START(dec8_state::oscar_map)
AM_RANGE(0x3d80, 0x3d80) AM_WRITE(dec8_sound_w) /* SOUN */
AM_RANGE(0x3e00, 0x3e00) AM_WRITENOP /* COINCL */
AM_RANGE(0x3e80, 0x3e83) AM_WRITE(oscar_int_w)
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
+ AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank")
AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -720,7 +719,7 @@ ADDRESS_MAP_START(dec8_state::srdarwin_map)
AM_RANGE(0x3801, 0x3801) AM_READ_PORT("IN0") /* Player 1 */
AM_RANGE(0x3802, 0x3802) AM_READ_PORT("IN1") /* Player 2 (cocktail) + VBL */
AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW1") /* Dip 2 */
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
+ AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank")
AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -745,7 +744,7 @@ ADDRESS_MAP_START(dec8_state::cobra_map)
AM_RANGE(0x3c00, 0x3c00) AM_WRITE(dec8_bank_w)
AM_RANGE(0x3c02, 0x3c02) AM_WRITE(dec8_mxc06_karn_buffer_spriteram_w) /* DMA */
AM_RANGE(0x3e00, 0x3e00) AM_WRITE(dec8_sound_w)
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
+ AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank")
AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -787,7 +786,7 @@ ADDRESS_MAP_START(dec8_state::csilver_s_map)
AM_RANGE(0x2000, 0x2000) AM_WRITE(csilver_sound_bank_w)
AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x3400, 0x3400) AM_READ(csilver_adpcm_reset_r) /* ? not sure */
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank3")
+ AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("soundbank")
AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -1993,7 +1992,7 @@ MACHINE_CONFIG_START(dec8_state::lastmisn)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
-
+
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ym1", YM2203, 1500000)
@@ -2064,7 +2063,7 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(dec8_state::gondo)
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", HD6309,3000000*4) /* HD63C09EP */
+ MCFG_CPU_ADD("maincpu", HD6309E,3000000) /* HD63C09EP */
MCFG_CPU_PROGRAM_MAP(gondo_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", dec8_state, gondo_interrupt)
@@ -2101,7 +2100,7 @@ MACHINE_CONFIG_START(dec8_state::gondo)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
-
+
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ym1", YM2203, 1500000)
@@ -2118,7 +2117,7 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(dec8_state::garyoret)
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", HD6309,3000000*4) /* HD63C09EP */
+ MCFG_CPU_ADD("maincpu", HD6309E,3000000) /* HD63C09EP */
MCFG_CPU_PROGRAM_MAP(garyoret_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", dec8_state, gondo_interrupt)
@@ -2172,7 +2171,7 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(dec8_state::ghostb)
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", HD6309, 3000000*4)
+ MCFG_CPU_ADD("maincpu", HD6309E, 3000000) /* HD63C09EP */
MCFG_CPU_PROGRAM_MAP(meikyuh_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", dec8_state, gondo_interrupt)
@@ -2293,11 +2292,11 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(dec8_state::oscar)
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", HD6309, XTAL(12'000'000)/2) /* verified on pcb */
+ MCFG_CPU_ADD("maincpu", HD6309, XTAL(12'000'000)/2) /* PCB seen both HD6309 or MC6809, clock verified on pcb */
MCFG_CPU_PROGRAM_MAP(oscar_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", dec8_state, oscar_interrupt)
- MCFG_CPU_ADD("sub", HD6309, XTAL(12'000'000)/2) /* verified on pcb */
+ MCFG_CPU_ADD("sub", HD6309, XTAL(12'000'000)/2) /* PCB seen both HD6309 or MC6809, clock verified on pcb */
MCFG_CPU_PROGRAM_MAP(oscar_sub_map)
MCFG_CPU_ADD("audiocpu", DECO_222, XTAL(12'000'000)/8)
@@ -2334,6 +2333,8 @@ MACHINE_CONFIG_START(dec8_state::oscar)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
+
+ MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ym1", YM2203, XTAL(12'000'000)/8) /* verified on pcb */
MCFG_SOUND_ROUTE(0, "mono", 0.23)
@@ -2341,8 +2342,6 @@ MACHINE_CONFIG_START(dec8_state::oscar)
MCFG_SOUND_ROUTE(2, "mono", 0.23)
MCFG_SOUND_ROUTE(3, "mono", 0.20)
- MCFG_GENERIC_LATCH_8_ADD("soundlatch")
-
MCFG_SOUND_ADD("ym2", YM3526, XTAL(12'000'000)/4) /* verified on pcb */
MCFG_YM3526_IRQ_HANDLER(INPUTLINE("audiocpu", M6502_IRQ_LINE))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70)
@@ -2401,7 +2400,7 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(dec8_state::cobracom)
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", MC6809E, 2000000)
+ MCFG_CPU_ADD("maincpu", MC6809E, 2000000) /* MC68B09EP */
MCFG_CPU_PROGRAM_MAP(cobra_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", dec8_state, nmi_line_pulse)
@@ -2409,7 +2408,6 @@ MACHINE_CONFIG_START(dec8_state::cobracom)
MCFG_CPU_PROGRAM_MAP(dec8_s_map)
/* NMIs are caused by the main CPU */
-
/* video hardware */
MCFG_BUFFERED_SPRITERAM8_ADD("spriteram")
@@ -3215,9 +3213,8 @@ ROM_START( csilver )
ROM_REGION( 0x10000, "sub", 0 ) /* CPU 2, 1st 16k is empty */
ROM_LOAD( "dx04-1.19d", 0x0000, 0x10000, CRC(29432691) SHA1(a76ecd27d217c66a0e43f93e29efe83c657925c3) )
- ROM_REGION( 0x18000, "audiocpu", 0 )
- ROM_LOAD( "dx05.3f", 0x10000, 0x08000, CRC(eb32cf25) SHA1(9390c88033259c65eb15320e31f5d696970987cc) )
- ROM_CONTINUE( 0x08000, 0x08000 )
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "dx05.3f", 0x00000, 0x10000, CRC(eb32cf25) SHA1(9390c88033259c65eb15320e31f5d696970987cc) )
ROM_REGION( 0x1000, "mcu", 0 ) /* ID8751H MCU */
// 017F: B4 4C 0D : cjne a,#$4C,$018F (ID code 0x4c = World version)
@@ -3254,9 +3251,8 @@ ROM_START( csilverj )
ROM_REGION( 0x10000, "sub", 0 ) /* CPU 2, 1st 16k is empty */
ROM_LOAD( "dx04-1.a5", 0x0000, 0x10000, CRC(29432691) SHA1(a76ecd27d217c66a0e43f93e29efe83c657925c3) )
- ROM_REGION( 0x18000, "audiocpu", 0 )
- ROM_LOAD( "dx05.a6", 0x10000, 0x08000, CRC(eb32cf25) SHA1(9390c88033259c65eb15320e31f5d696970987cc) )
- ROM_CONTINUE( 0x08000, 0x08000 )
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "dx05.a6", 0x00000, 0x10000, CRC(eb32cf25) SHA1(9390c88033259c65eb15320e31f5d696970987cc) )
ROM_REGION( 0x1000, "mcu", 0 ) /* ID8751H MCU */
ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
@@ -3293,9 +3289,8 @@ ROM_START( csilverja ) // DE-0250-3 + DE-0251-2
ROM_REGION( 0x10000, "sub", 0 ) /* CPU 2, 1st 16k is empty */
ROM_LOAD( "dx04-1.19d", 0x0000, 0x10000, CRC(29432691) SHA1(a76ecd27d217c66a0e43f93e29efe83c657925c3) )
- ROM_REGION( 0x18000, "audiocpu", 0 )
- ROM_LOAD( "dx05.3f", 0x10000, 0x08000, CRC(eb32cf25) SHA1(9390c88033259c65eb15320e31f5d696970987cc) )
- ROM_CONTINUE( 0x08000, 0x08000 )
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "dx05.3f", 0x00000, 0x10000, CRC(eb32cf25) SHA1(9390c88033259c65eb15320e31f5d696970987cc) )
ROM_REGION( 0x1000, "mcu", 0 ) /* ID8751H MCU */
ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
@@ -3622,114 +3617,51 @@ ROM_END
DRIVER_INIT_MEMBER(dec8_state,dec8)
{
+ if (m_mainbank.found())
+ {
+ uint8_t *ROM = memregion("maincpu")->base();
+ uint32_t max_bank = (memregion("maincpu")->bytes() - 0x10000) / 0x4000;
+ m_mainbank->configure_entries(0, max_bank, &ROM[0x10000], 0x4000);
+ }
m_latch = 0;
}
-/* Below, I set up the correct number of banks depending on the "maincpu" region size */
-DRIVER_INIT_MEMBER(dec8_state,lastmisn)
-{
- uint8_t *ROM = memregion("maincpu")->base();
- membank("bank1")->configure_entries(0, 4, &ROM[0x10000], 0x4000);
- DRIVER_INIT_CALL(dec8);
-}
-
-DRIVER_INIT_MEMBER(dec8_state,shackled)
-{
- uint8_t *ROM = memregion("maincpu")->base();
- membank("bank1")->configure_entries(0, 16, &ROM[0x10000], 0x4000);
- DRIVER_INIT_CALL(dec8);
-}
-
-DRIVER_INIT_MEMBER(dec8_state,gondo)
-{
- uint8_t *ROM = memregion("maincpu")->base();
- membank("bank1")->configure_entries(0, 12, &ROM[0x10000], 0x4000);
- DRIVER_INIT_CALL(dec8);
-}
-
-DRIVER_INIT_MEMBER(dec8_state,garyoret)
-{
- uint8_t *ROM = memregion("maincpu")->base();
- membank("bank1")->configure_entries(0, 16, &ROM[0x10000], 0x4000);
- DRIVER_INIT_CALL(dec8);
-}
-
-DRIVER_INIT_MEMBER(dec8_state,ghostb)
-{
- uint8_t *ROM = memregion("maincpu")->base();
-
- membank("bank1")->configure_entries(0, 16, &ROM[0x10000], 0x4000);
- DRIVER_INIT_CALL(dec8);
-}
-
-DRIVER_INIT_MEMBER(dec8_state,meikyuh)
-{
- uint8_t *ROM = memregion("maincpu")->base();
-
- membank("bank1")->configure_entries(0, 12, &ROM[0x10000], 0x4000);
- DRIVER_INIT_CALL(dec8);
-}
-
DRIVER_INIT_MEMBER(dec8_state,csilver)
{
- uint8_t *ROM = memregion("maincpu")->base();
uint8_t *RAM = memregion("audiocpu")->base();
-
- membank("bank1")->configure_entries(0, 14, &ROM[0x10000], 0x4000);
- membank("bank3")->configure_entries(0, 2, &RAM[0x10000], 0x4000);
- DRIVER_INIT_CALL(dec8);
-}
-
-DRIVER_INIT_MEMBER(dec8_state,oscar)
-{
- uint8_t *ROM = memregion("maincpu")->base();
- membank("bank1")->configure_entries(0, 4, &ROM[0x10000], 0x4000);
- DRIVER_INIT_CALL(dec8);
-}
-
-DRIVER_INIT_MEMBER(dec8_state,srdarwin)
-{
- uint8_t *ROM = memregion("maincpu")->base();
- membank("bank1")->configure_entries(0, 6, &ROM[0x10000], 0x4000);
- DRIVER_INIT_CALL(dec8);
-}
-
-DRIVER_INIT_MEMBER(dec8_state,cobracom)
-{
- uint8_t *ROM = memregion("maincpu")->base();
- membank("bank1")->configure_entries(0, 8, &ROM[0x10000], 0x4000);
+ m_soundbank->configure_entries(0, 2, &RAM[0], 0x4000);
DRIVER_INIT_CALL(dec8);
}
/******************************************************************************/
-GAME( 1986, lastmisn, 0, lastmisn, lastmisn, dec8_state, lastmisn, ROT270, "Data East USA", "Last Mission (US revision 6)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, lastmisno, lastmisn, lastmisn, lastmisn, dec8_state, lastmisn, ROT270, "Data East USA", "Last Mission (US revision 5)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, lastmisnj, lastmisn, lastmisn, lastmisnj, dec8_state, lastmisn, ROT270, "Data East Corporation", "Last Mission (Japan)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, shackled, 0, shackled, shackled, dec8_state, shackled, ROT0, "Data East USA", "Shackled (US)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, breywood, shackled, shackled, breywood, dec8_state, shackled, ROT0, "Data East Corporation", "Breywood (Japan revision 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, gondo, 0, gondo, gondo, dec8_state, gondo, ROT270, "Data East USA", "Gondomania (US)", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, makyosen, gondo, gondo, gondo, dec8_state, gondo, ROT270, "Data East Corporation", "Makyou Senshi (Japan)", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, garyoret, 0, garyoret, garyoret, dec8_state, garyoret, ROT0, "Data East Corporation", "Garyo Retsuden (Japan)", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, ghostb, 0, ghostb, ghostb, dec8_state, ghostb, ROT0, "Data East USA", "The Real Ghostbusters (US 2 Players, revision 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, ghostb2a, ghostb, ghostb, ghostb2a, dec8_state, ghostb, ROT0, "Data East USA", "The Real Ghostbusters (US 2 Players)", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, ghostb3, ghostb, ghostb, ghostb3, dec8_state, ghostb, ROT0, "Data East USA", "The Real Ghostbusters (US 3 Players)", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, ghostb3a, ghostb, ghostb, ghostb3, dec8_state, ghostb, ROT0, "Data East USA", "The Real Ghostbusters (US 3 Players, revision ?)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // ROMs confirmed working on PCB, confirmed problem with the fake MCU ROM
-GAME( 1987, meikyuh, ghostb, meikyuh, meikyuh, dec8_state, meikyuh, ROT0, "Data East Corporation", "Meikyuu Hunter G (Japan, set 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, meikyuha, ghostb, meikyuh, meikyuh, dec8_state, meikyuh, ROT0, "Data East Corporation", "Meikyuu Hunter G (Japan, set 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, csilver, 0, csilver, csilver, dec8_state, csilver, ROT0, "Data East Corporation", "Captain Silver (World)", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, csilverj, csilver, csilver, csilverj, dec8_state, csilver, ROT0, "Data East Corporation", "Captain Silver (Japan, revision 3)", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, csilverja, csilver, csilver, csilverj, dec8_state, csilver, ROT0, "Data East Corporation", "Captain Silver (Japan, revision 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, oscar, 0, oscar, oscar, dec8_state, oscar, ROT0, "Data East Corporation", "Psycho-Nics Oscar (World revision 0)", MACHINE_SUPPORTS_SAVE )
-GAME( 1988, oscaru, oscar, oscar, oscarj, dec8_state, oscar, ROT0, "Data East USA", "Psycho-Nics Oscar (US)", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, oscarj1, oscar, oscar, oscarj, dec8_state, oscar, ROT0, "Data East Corporation", "Psycho-Nics Oscar (Japan revision 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, oscarj2, oscar, oscar, oscarj, dec8_state, oscar, ROT0, "Data East Corporation", "Psycho-Nics Oscar (Japan revision 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, srdarwin, 0, srdarwin, srdarwin, dec8_state, srdarwin, ROT270, "Data East Corporation", "Super Real Darwin (World)", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, srdarwinj, srdarwin, srdarwin, srdarwinj, dec8_state, srdarwin, ROT270, "Data East Corporation", "Super Real Darwin (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, lastmisn, 0, lastmisn, lastmisn, dec8_state, dec8, ROT270, "Data East USA", "Last Mission (US revision 6)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, lastmisno, lastmisn, lastmisn, lastmisn, dec8_state, dec8, ROT270, "Data East USA", "Last Mission (US revision 5)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, lastmisnj, lastmisn, lastmisn, lastmisnj, dec8_state, dec8, ROT270, "Data East Corporation", "Last Mission (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, shackled, 0, shackled, shackled, dec8_state, dec8, ROT0, "Data East USA", "Shackled (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, breywood, shackled, shackled, breywood, dec8_state, dec8, ROT0, "Data East Corporation", "Breywood (Japan revision 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, gondo, 0, gondo, gondo, dec8_state, dec8, ROT270, "Data East USA", "Gondomania (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, makyosen, gondo, gondo, gondo, dec8_state, dec8, ROT270, "Data East Corporation", "Makyou Senshi (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, garyoret, 0, garyoret, garyoret, dec8_state, dec8, ROT0, "Data East Corporation", "Garyo Retsuden (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, ghostb, 0, ghostb, ghostb, dec8_state, dec8, ROT0, "Data East USA", "The Real Ghostbusters (US 2 Players, revision 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, ghostb2a, ghostb, ghostb, ghostb2a, dec8_state, dec8, ROT0, "Data East USA", "The Real Ghostbusters (US 2 Players)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, ghostb3, ghostb, ghostb, ghostb3, dec8_state, dec8, ROT0, "Data East USA", "The Real Ghostbusters (US 3 Players)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, ghostb3a, ghostb, ghostb, ghostb3, dec8_state, dec8, ROT0, "Data East USA", "The Real Ghostbusters (US 3 Players, revision ?)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // ROMs confirmed working on PCB, confirmed problem with the fake MCU ROM
+GAME( 1987, meikyuh, ghostb, meikyuh, meikyuh, dec8_state, dec8, ROT0, "Data East Corporation", "Meikyuu Hunter G (Japan, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, meikyuha, ghostb, meikyuh, meikyuh, dec8_state, dec8, ROT0, "Data East Corporation", "Meikyuu Hunter G (Japan, set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, csilver, 0, csilver, csilver, dec8_state, csilver, ROT0, "Data East Corporation", "Captain Silver (World)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, csilverj, csilver, csilver, csilverj, dec8_state, csilver, ROT0, "Data East Corporation", "Captain Silver (Japan, revision 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, csilverja, csilver, csilver, csilverj, dec8_state, csilver, ROT0, "Data East Corporation", "Captain Silver (Japan, revision 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, oscar, 0, oscar, oscar, dec8_state, dec8, ROT0, "Data East Corporation", "Psycho-Nics Oscar (World revision 0)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, oscaru, oscar, oscar, oscarj, dec8_state, dec8, ROT0, "Data East USA", "Psycho-Nics Oscar (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, oscarj1, oscar, oscar, oscarj, dec8_state, dec8, ROT0, "Data East Corporation", "Psycho-Nics Oscar (Japan revision 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, oscarj2, oscar, oscar, oscarj, dec8_state, dec8, ROT0, "Data East Corporation", "Psycho-Nics Oscar (Japan revision 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, srdarwin, 0, srdarwin, srdarwin, dec8_state, dec8, ROT270, "Data East Corporation", "Super Real Darwin (World)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, srdarwinj, srdarwin, srdarwin, srdarwinj, dec8_state, dec8, ROT270, "Data East Corporation", "Super Real Darwin (Japan)", MACHINE_SUPPORTS_SAVE )
// Unlike most Deco games of this period Cobra Command does not seem to have a Data East USA release. Instead the Data East Corporation release
// was used in the US as evidenced by boards with the EL romset bearing AAMA seal stickers (American Amusement Machine Association)
-GAME( 1988, cobracom, 0, cobracom, cobracom, dec8_state, cobracom, ROT0, "Data East Corporation", "Cobra-Command (World/US revision 5)", MACHINE_SUPPORTS_SAVE )
-GAME( 1988, cobracoma, cobracom, cobracom, cobracom, dec8_state, cobracom, ROT0, "Data East Corporation", "Cobra-Command (World/US revision 4)", MACHINE_SUPPORTS_SAVE )
-GAME( 1988, cobracomj, cobracom, cobracom, cobracom, dec8_state, cobracom, ROT0, "Data East Corporation", "Cobra-Command (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, cobracom, 0, cobracom, cobracom, dec8_state, dec8, ROT0, "Data East Corporation", "Cobra-Command (World/US revision 5)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, cobracoma, cobracom, cobracom, cobracom, dec8_state, dec8, ROT0, "Data East Corporation", "Cobra-Command (World/US revision 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, cobracomj, cobracom, cobracom, cobracom, dec8_state, dec8, ROT0, "Data East Corporation", "Cobra-Command (Japan)", MACHINE_SUPPORTS_SAVE )