summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/galaxian.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/galaxian.cpp')
-rw-r--r--src/mame/drivers/galaxian.cpp835
1 files changed, 389 insertions, 446 deletions
diff --git a/src/mame/drivers/galaxian.cpp b/src/mame/drivers/galaxian.cpp
index 1cbe080ddcf..e942ef73940 100644
--- a/src/mame/drivers/galaxian.cpp
+++ b/src/mame/drivers/galaxian.cpp
@@ -681,15 +681,17 @@ WRITE_LINE_MEMBER(galaxian_state::vblank_interrupt_w)
m_maincpu->set_input_line(m_irq_line, ASSERT_LINE);
}
-INPUT_CHANGED_MEMBER(galaxian_state::tenspot_fake)
+WRITE_LINE_MEMBER(galaxian_state::tenspot_interrupt_w)
{
- if (newval)
+ vblank_interrupt_w(state);
+
+ if (m_fake_select.read_safe(0x00))
{
m_tenspot_current_game++;
m_tenspot_current_game%=10;
tenspot_set_game_bank(m_tenspot_current_game, 1);
+ m_maincpu->pulse_input_line(INPUT_LINE_RESET, attotime::zero);
}
- m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE);
}
WRITE8_MEMBER(galaxian_state::irq_enable_w)
@@ -746,8 +748,8 @@ READ8_MEMBER(galaxian_state::konami_ay8910_r)
{
/* the decoding here is very simplistic, and you can address both simultaneously */
uint8_t result = 0xff;
- if (offset & 0x20) result &= m_ay8910[1]->data_r();
- if (offset & 0x80) result &= m_ay8910[0]->data_r();
+ if (offset & 0x20) result &= m_ay8910[1]->data_r(space, 0);
+ if (offset & 0x80) result &= m_ay8910[0]->data_r(space, 0);
return result;
}
@@ -757,14 +759,14 @@ WRITE8_MEMBER(galaxian_state::konami_ay8910_w)
/* AV 4,5 ==> AY8910 #2 */
/* the decoding here is very simplistic, and you can address two simultaneously */
if (offset & 0x10)
- m_ay8910[1]->address_w(data);
+ m_ay8910[1]->address_w(space, 0, data);
else if (offset & 0x20)
- m_ay8910[1]->data_w(data);
+ m_ay8910[1]->data_w(space, 0, data);
/* AV6,7 ==> AY8910 #1 */
if (offset & 0x40)
- m_ay8910[0]->address_w(data);
+ m_ay8910[0]->address_w(space, 0, data);
else if (offset & 0x80)
- m_ay8910[0]->data_w(data);
+ m_ay8910[0]->data_w(space, 0, data);
}
@@ -1080,7 +1082,7 @@ READ8_MEMBER(galaxian_state::frogger_ay8910_r)
{
/* the decoding here is very simplistic */
uint8_t result = 0xff;
- if (offset & 0x40) result &= m_ay8910[0]->data_r();
+ if (offset & 0x40) result &= m_ay8910[0]->data_r(space, 0);
return result;
}
@@ -1090,9 +1092,9 @@ WRITE8_MEMBER(galaxian_state::frogger_ay8910_w)
/* the decoding here is very simplistic */
/* AV6,7 ==> AY8910 #1 */
if (offset & 0x40)
- m_ay8910[0]->data_w(data);
+ m_ay8910[0]->data_w(space, 0, data);
else if (offset & 0x80)
- m_ay8910[0]->address_w(data);
+ m_ay8910[0]->address_w(space, 0, data);
}
@@ -1165,9 +1167,9 @@ READ8_MEMBER(galaxian_state::scorpion_ay8910_r)
{
/* the decoding here is very simplistic, and you can address both simultaneously */
uint8_t result = 0xff;
- if (offset & 0x08) result &= m_ay8910[2]->data_r();
- if (offset & 0x20) result &= m_ay8910[1]->data_r();
- if (offset & 0x80) result &= m_ay8910[0]->data_r();
+ if (offset & 0x08) result &= m_ay8910[2]->data_r(space, 0);
+ if (offset & 0x20) result &= m_ay8910[1]->data_r(space, 0);
+ if (offset & 0x80) result &= m_ay8910[0]->data_r(space, 0);
return result;
}
@@ -1175,12 +1177,12 @@ READ8_MEMBER(galaxian_state::scorpion_ay8910_r)
WRITE8_MEMBER(galaxian_state::scorpion_ay8910_w)
{
/* the decoding here is very simplistic, and you can address all six simultaneously */
- if (offset & 0x04) m_ay8910[2]->address_w(data);
- if (offset & 0x08) m_ay8910[2]->data_w(data);
- if (offset & 0x10) m_ay8910[1]->address_w(data);
- if (offset & 0x20) m_ay8910[1]->data_w(data);
- if (offset & 0x40) m_ay8910[0]->address_w(data);
- if (offset & 0x80) m_ay8910[0]->data_w(data);
+ if (offset & 0x04) m_ay8910[2]->address_w(space, 0, data);
+ if (offset & 0x08) m_ay8910[2]->data_w(space, 0, data);
+ if (offset & 0x10) m_ay8910[1]->address_w(space, 0, data);
+ if (offset & 0x20) m_ay8910[1]->data_w(space, 0, data);
+ if (offset & 0x40) m_ay8910[0]->address_w(space, 0, data);
+ if (offset & 0x80) m_ay8910[0]->data_w(space, 0, data);
}
@@ -1283,7 +1285,7 @@ WRITE8_MEMBER(galaxian_state::zigzag_ay8910_w)
/* bit 0 = WRITE */
/* bit 1 = C/D */
if ((offset & 1) != 0)
- m_ay8910[0]->data_address_w(offset >> 1, m_zigzag_ay8910_latch);
+ m_ay8910[0]->data_address_w(space, offset >> 1, m_zigzag_ay8910_latch);
break;
case 0x100:
@@ -1375,21 +1377,21 @@ WRITE8_MEMBER(galaxian_state::mshuttle_ay8910_cs_w)
WRITE8_MEMBER(galaxian_state::mshuttle_ay8910_control_w)
{
if (!m_mshuttle_ay8910_cs)
- m_ay8910_cclimber->address_w(data);
+ m_ay8910_cclimber->address_w(space, offset, data);
}
WRITE8_MEMBER(galaxian_state::mshuttle_ay8910_data_w)
{
if (!m_mshuttle_ay8910_cs)
- m_ay8910_cclimber->data_w(data);
+ m_ay8910_cclimber->data_w(space, offset, data);
}
READ8_MEMBER(galaxian_state::mshuttle_ay8910_data_r)
{
if (!m_mshuttle_ay8910_cs)
- return m_ay8910_cclimber->data_r();
+ return m_ay8910_cclimber->data_r(space, offset);
return 0xff;
}
@@ -3252,7 +3254,7 @@ static INPUT_PORTS_START( tenspot )
PORT_DIPUNKNOWN( 0x80, 0x80 )
PORT_START("FAKE_SELECT") /* fake button to move onto next game - until select rom is understood! */
- PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Next Game (Fake)") PORT_IMPULSE(1) PORT_CHANGED_MEMBER(DEVICE_SELF, galaxian_state, tenspot_fake, nullptr)
+ PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Next Game (Fake)") PORT_IMPULSE(1)
PORT_MODIFY("IN0")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY
@@ -5986,40 +5988,42 @@ DISCRETE_SOUND_END
*
*************************************/
-void galaxian_state::galaxian_base(machine_config &config)
-{
- // basic machine hardware
- Z80(config, m_maincpu, GALAXIAN_PIXEL_CLOCK/3/2);
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::galaxian_map);
+MACHINE_CONFIG_START(galaxian_state::galaxian_base)
+
+ /* basic machine hardware */
+ MCFG_DEVICE_ADD("maincpu", Z80, GALAXIAN_PIXEL_CLOCK/3/2)
+ MCFG_DEVICE_PROGRAM_MAP(galaxian_map)
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 8);
- // video hardware
+ /* video hardware */
GFXDECODE(config, m_gfxdecode, m_palette, gfx_galaxian);
PALETTE(config, m_palette, FUNC(galaxian_state::galaxian_palette), 32);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(GALAXIAN_PIXEL_CLOCK, GALAXIAN_HTOTAL, GALAXIAN_HBEND, GALAXIAN_HBSTART, GALAXIAN_VTOTAL, GALAXIAN_VBEND, GALAXIAN_VBSTART);
- m_screen->set_screen_update(FUNC(galaxian_state::screen_update_galaxian));
- m_screen->screen_vblank().set(FUNC(galaxian_state::vblank_interrupt_w));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(GALAXIAN_PIXEL_CLOCK, GALAXIAN_HTOTAL, GALAXIAN_HBEND, GALAXIAN_HBSTART, GALAXIAN_VTOTAL, GALAXIAN_VBEND, GALAXIAN_VBSTART)
+ MCFG_SCREEN_UPDATE_DRIVER(galaxian_state, screen_update_galaxian)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, galaxian_state, vblank_interrupt_w))
- // sound hardware
+ /* sound hardware */
SPEAKER(config, "speaker").front_center();
-}
+MACHINE_CONFIG_END
-void galaxian_state::sidam_bootleg_base(machine_config &config)
-{
+
+MACHINE_CONFIG_START(galaxian_state::sidam_bootleg_base)
galaxian_base(config);
/* basic machine hardware */
- m_maincpu->set_clock(12_MHz_XTAL / 2 / 2);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_CLOCK(12_MHz_XTAL / 2 / 2)
/* video hardware */
- m_gfxdecode->set_info(gfx_sidam);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_sidam)
- m_screen->set_raw(12_MHz_XTAL, SIDAM_HTOTAL, SIDAM_HBEND, SIDAM_HBSTART, GALAXIAN_VTOTAL, GALAXIAN_VBEND, GALAXIAN_VBSTART);
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_RAW_PARAMS(12_MHz_XTAL, SIDAM_HTOTAL, SIDAM_HBEND, SIDAM_HBSTART, GALAXIAN_VTOTAL, GALAXIAN_VBEND, GALAXIAN_VBSTART)
+MACHINE_CONFIG_END
void galaxian_state::konami_base(machine_config &config)
@@ -6040,12 +6044,12 @@ void galaxian_state::konami_base(machine_config &config)
}
-void galaxian_state::konami_sound_1x_ay8910(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::konami_sound_1x_ay8910)
+
/* 2nd CPU to drive sound */
- Z80(config, m_audiocpu, KONAMI_SOUND_CLOCK/8);
- m_audiocpu->set_addrmap(AS_PROGRAM, &galaxian_state::frogger_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &galaxian_state::frogger_sound_portmap);
+ MCFG_DEVICE_ADD("audiocpu", Z80, KONAMI_SOUND_CLOCK/8)
+ MCFG_DEVICE_PROGRAM_MAP(frogger_sound_map)
+ MCFG_DEVICE_IO_MAP(frogger_sound_portmap)
GENERIC_LATCH_8(config, m_soundlatch);
@@ -6059,16 +6063,17 @@ void galaxian_state::konami_sound_1x_ay8910(machine_config &config)
m_ay8910[0]->add_route(1, "konami", 1.0, 1);
m_ay8910[0]->add_route(2, "konami", 1.0, 2);
- DISCRETE(config, m_discrete, konami_sound_discrete).add_route(ALL_OUTPUTS, "speaker", 0.75);
-}
+ MCFG_DEVICE_ADD("konami", DISCRETE, konami_sound_discrete)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.75)
+MACHINE_CONFIG_END
-void galaxian_state::konami_sound_2x_ay8910(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::konami_sound_2x_ay8910)
+
/* 2nd CPU to drive sound */
- Z80(config, m_audiocpu, KONAMI_SOUND_CLOCK/8);
- m_audiocpu->set_addrmap(AS_PROGRAM, &galaxian_state::konami_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &galaxian_state::konami_sound_portmap);
+ MCFG_DEVICE_ADD("audiocpu", Z80, KONAMI_SOUND_CLOCK/8)
+ MCFG_DEVICE_PROGRAM_MAP(konami_sound_map)
+ MCFG_DEVICE_IO_MAP(konami_sound_portmap)
GENERIC_LATCH_8(config, m_soundlatch);
@@ -6089,18 +6094,18 @@ void galaxian_state::konami_sound_2x_ay8910(machine_config &config)
m_ay8910[1]->add_route(1, "konami", 1.0, 4);
m_ay8910[1]->add_route(2, "konami", 1.0, 5);
- DISCRETE(config, m_discrete, konami_sound_discrete).add_route(ALL_OUTPUTS, "speaker", 0.5);
-}
+ MCFG_DEVICE_ADD("konami", DISCRETE, konami_sound_discrete)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5)
+MACHINE_CONFIG_END
-void galaxian_state::scramble_base(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::scramble_base)
konami_base(config);
konami_sound_2x_ay8910(config);
/* blinking frequency is determined by 555 counter with Ra=100k, Rb=10k, C=10uF */
- TIMER(config, "stars").configure_periodic(FUNC(galaxian_state::scramble_stars_blink_timer), PERIOD_OF_555_ASTABLE(100000, 10000, 0.00001));
-}
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("stars", galaxian_state, scramble_stars_blink_timer, PERIOD_OF_555_ASTABLE(100000, 10000, 0.00001))
+MACHINE_CONFIG_END
@@ -6110,148 +6115,147 @@ void galaxian_state::scramble_base(machine_config &config)
*
*************************************/
-void galaxian_state::galaxian(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::galaxian)
galaxian_base(config);
- GALAXIAN(config, "cust", 0).add_route(ALL_OUTPUTS, "speaker", 0.4);
+ MCFG_DEVICE_ADD("cust", GALAXIAN, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.4)
- DISCRETE(config, GAL_AUDIO, galaxian_discrete).add_route(ALL_OUTPUTS, "speaker", 1.0);
-}
+ MCFG_DEVICE_ADD(GAL_AUDIO, DISCRETE, galaxian_discrete)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
+MACHINE_CONFIG_END
-void galaxian_state::victoryc(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::victoryc)
galaxian(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::victoryc_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(victoryc_map)
+MACHINE_CONFIG_END
-void galaxian_state::spactrai(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::spactrai)
galaxian(config);
- // strange memory map with RAM in the middle of ROM, there's a large block on the ROM board
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::spactrai_map);
-}
+ /* strange memory map with RAM in the middle of ROM, there's a large block on the ROM board */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(spactrai_map)
+MACHINE_CONFIG_END
-void galaxian_state::frogg(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::frogg)
galaxian(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::frogg_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(frogg_map)
+MACHINE_CONFIG_END
-void galaxian_state::mandingarf(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::mandingarf)
galaxian(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::mandingarf_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(mandingarf_map)
+MACHINE_CONFIG_END
-void galaxian_state::pacmanbl(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::pacmanbl)
galaxian(config);
/* separate tile/sprite ROMs */
- m_gfxdecode->set_info(gfx_pacmanbl);
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_pacmanbl)
+MACHINE_CONFIG_END
-void galaxian_state::tenspot(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::tenspot)
galaxian(config);
/* basic machine hardware */
- z80_device &selectcpu(Z80(config, "selectcpu", GALAXIAN_PIXEL_CLOCK/3/2)); // ?? mhz
- selectcpu.set_addrmap(AS_PROGRAM, &galaxian_state::tenspot_select_map);
- //selectcpu.set_vblank_int("screen", FUNC(galaxian_state::nmi_line_pulse));
+ MCFG_DEVICE_ADD("selectcpu", Z80, GALAXIAN_PIXEL_CLOCK/3/2) // ?? mhz
+ MCFG_DEVICE_PROGRAM_MAP(tenspot_select_map)
+ //MCFG_CPU_VBLANK_INT("screen", nmi_line_pulse)
/* separate tile/sprite ROMs */
- m_gfxdecode->set_info(gfx_tenspot);
-}
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_tenspot)
+ // MCFG_CPU_VBLANK_INT("screen", nmi_line_pulse)
-void galaxian_state::zigzag(machine_config &config)
-{
+ /* video hardware */
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, galaxian_state, tenspot_interrupt_w))
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(galaxian_state::zigzag)
galaxian_base(config);
/* separate tile/sprite ROMs */
- m_gfxdecode->set_info(gfx_pacmanbl);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_pacmanbl)
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::zigzag_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(zigzag_map)
/* sound hardware */
AY8910(config, m_ay8910[0], GALAXIAN_PIXEL_CLOCK/3/2).add_route(ALL_OUTPUTS, "speaker", 0.5); /* matches PCB video - unconfirmed */
-}
+MACHINE_CONFIG_END
-void galaxian_state::gmgalax(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::gmgalax)
galaxian(config);
/* banked video hardware */
- m_gfxdecode->set_info(gfx_gmgalax);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_gmgalax)
m_palette->set_entries(64);
m_palette->set_init(FUNC(galaxian_state::galaxian_palette));
-}
+MACHINE_CONFIG_END
-void galaxian_state::mooncrst(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::mooncrst)
galaxian_base(config);
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::mooncrst_map);
-
- GALAXIAN(config, "cust", 0).add_route(ALL_OUTPUTS, "speaker", 0.4);
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(mooncrst_map)
- DISCRETE(config, GAL_AUDIO, mooncrst_discrete).add_route(ALL_OUTPUTS, "speaker", 1.0);
-}
+ MCFG_DEVICE_ADD("cust", GALAXIAN, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.4)
-void galaxian_state::eagle(machine_config &config)
-{
- mooncrst(config);
- m_palette->set_init(FUNC(galaxian_state::eagle_palette));
-}
+ MCFG_DEVICE_ADD(GAL_AUDIO, DISCRETE, mooncrst_discrete)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0)
+MACHINE_CONFIG_END
-void galaxian_state::moonqsr(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::moonqsr)
mooncrst(config);
- m_maincpu->set_addrmap(AS_OPCODES, &galaxian_state::moonqsr_decrypted_opcodes_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_OPCODES_MAP(moonqsr_decrypted_opcodes_map)
+MACHINE_CONFIG_END
-void galaxian_state::thepitm(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::thepitm)
mooncrst(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::thepitm_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(thepitm_map)
+MACHINE_CONFIG_END
-void galaxian_state::skybase(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::skybase)
mooncrst(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::skybase_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(skybase_map)
+MACHINE_CONFIG_END
-void galaxian_state::kong(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::kong)
mooncrst(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::kong_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(kong_map)
+MACHINE_CONFIG_END
-void galaxian_state::scorpnmc(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::scorpnmc)
mooncrst(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::scorpnmc_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(scorpnmc_map)
+MACHINE_CONFIG_END
-void galaxian_state::fantastc(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::fantastc)
galaxian_base(config);
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::fantastc_map);
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(fantastc_map)
- // sound hardware
+ /* sound hardware */
AY8910(config, m_ay8910[0], GALAXIAN_PIXEL_CLOCK/3/2).add_route(ALL_OUTPUTS, "speaker", 0.25); // 3.072MHz
AY8910(config, m_ay8910[1], GALAXIAN_PIXEL_CLOCK/3/2).add_route(ALL_OUTPUTS, "speaker", 0.25); // 3.072MHz
-}
+MACHINE_CONFIG_END
TIMER_DEVICE_CALLBACK_MEMBER(galaxian_state::timefgtr_scanline)
@@ -6267,219 +6271,216 @@ TIMER_DEVICE_CALLBACK_MEMBER(galaxian_state::timefgtr_scanline)
}
}
-void galaxian_state::timefgtr(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::timefgtr)
fantastc(config);
- TIMER(config, "scantimer").configure_scanline(FUNC(galaxian_state::timefgtr_scanline), "screen", 0, 1);
-}
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", galaxian_state, timefgtr_scanline, "screen", 0, 1)
+MACHINE_CONFIG_END
-void galaxian_state::jumpbug(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::jumpbug)
galaxian_base(config);
- config.device_remove("watchdog");
+ MCFG_DEVICE_REMOVE("watchdog")
- // basic machine hardware
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::jumpbug_map);
+ /* basic machine hardware */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(jumpbug_map)
- // sound hardware
- AY8910(config, m_ay8910[0], GALAXIAN_PIXEL_CLOCK/3/2/2).add_route(ALL_OUTPUTS, "speaker", 0.5); // matches PCB video - unconfirmed
-}
+ /* sound hardware */
+ AY8910(config, m_ay8910[0], GALAXIAN_PIXEL_CLOCK/3/2/2).add_route(ALL_OUTPUTS, "speaker", 0.5); /* matches PCB video - unconfirmed */
+MACHINE_CONFIG_END
-void galaxian_state::checkman(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::checkman)
mooncrst(config);
/* basic machine hardware */
- Z80(config, m_audiocpu, 1620000); /* 1.62 MHz */
- m_audiocpu->set_addrmap(AS_PROGRAM, &galaxian_state::checkman_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &galaxian_state::checkman_sound_portmap);
- m_audiocpu->set_vblank_int("screen", FUNC(galaxian_state::irq0_line_hold)); /* NMIs are triggered by the main CPU */
+ MCFG_DEVICE_ADD("audiocpu", Z80, 1620000) /* 1.62 MHz */
+ MCFG_DEVICE_PROGRAM_MAP(checkman_sound_map)
+ MCFG_DEVICE_IO_MAP(checkman_sound_portmap)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", galaxian_state, irq0_line_hold) /* NMIs are triggered by the main CPU */
GENERIC_LATCH_8(config, m_soundlatch);
/* sound hardware */
AY8910(config, m_ay8910[0], 1789750).add_route(ALL_OUTPUTS, "speaker", 0.5);
-}
+MACHINE_CONFIG_END
-void galaxian_state::checkmaj(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::checkmaj)
galaxian_base(config);
- // basic machine hardware
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::galaxian_map_base); // no discrete sound
+ /* basic machine hardware */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(galaxian_map_base) /* no discrete sound */
- Z80(config, m_audiocpu, 1620000);
- m_audiocpu->set_addrmap(AS_PROGRAM, &galaxian_state::checkmaj_sound_map);
+ /* basic machine hardware */
+ MCFG_DEVICE_ADD("audiocpu", Z80, 1620000)
+ MCFG_DEVICE_PROGRAM_MAP(checkmaj_sound_map)
- TIMER(config, "irq0").configure_scanline(FUNC(galaxian_state::checkmaj_irq0_gen), "screen", 0, 8);
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("irq0", galaxian_state, checkmaj_irq0_gen, "screen", 0, 8)
GENERIC_LATCH_8(config, m_soundlatch);
- // sound hardware
+ /* sound hardware */
AY8910(config, m_ay8910[0], 1620000);
m_ay8910[0]->port_a_read_callback().set(m_soundlatch, FUNC(generic_latch_8_device::read));
m_ay8910[0]->add_route(ALL_OUTPUTS, "speaker", 2);
-}
+MACHINE_CONFIG_END
-void galaxian_state::mshuttle(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::mshuttle)
galaxian_base(config);
- // basic machine hardware
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::mshuttle_map);
- m_maincpu->set_addrmap(AS_OPCODES, &galaxian_state::mshuttle_decrypted_opcodes_map);
- m_maincpu->set_addrmap(AS_IO, &galaxian_state::mshuttle_portmap);
+ /* basic machine hardware */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(mshuttle_map)
+ MCFG_DEVICE_OPCODES_MAP(mshuttle_decrypted_opcodes_map)
+ MCFG_DEVICE_IO_MAP(mshuttle_portmap)
- // sound hardware
- CCLIMBER_AUDIO(config, "cclimber_audio", 0);
-}
+ /* sound hardware */
+ MCFG_DEVICE_ADD("cclimber_audio", CCLIMBER_AUDIO, 0)
+MACHINE_CONFIG_END
-void galaxian_state::kingball(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::kingball)
mooncrst(config);
/* basic machine hardware */
- Z80(config, m_audiocpu, 5000000/2);
- m_audiocpu->set_addrmap(AS_PROGRAM, &galaxian_state::kingball_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &galaxian_state::kingball_sound_portmap);
+ MCFG_DEVICE_ADD("audiocpu", Z80,5000000/2)
+ MCFG_DEVICE_PROGRAM_MAP(kingball_sound_map)
+ MCFG_DEVICE_IO_MAP(kingball_sound_portmap)
GENERIC_LATCH_8(config, m_soundlatch);
/* sound hardware */
- DAC_4BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.53); // unknown DAC
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_4BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.53) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
-void galaxian_state::frogger(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::frogger)
konami_base(config);
konami_sound_1x_ay8910(config);
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::frogger_map);
-}
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(frogger_map)
+MACHINE_CONFIG_END
-void galaxian_state::froggermc(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::froggermc)
galaxian_base(config);
konami_sound_1x_ay8910(config);
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::froggermc_map);
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(froggermc_map)
- m_audiocpu->set_irq_acknowledge_callback(FUNC(galaxian_state::froggermc_audiocpu_irq_ack));
-}
+ MCFG_DEVICE_MODIFY("audiocpu")
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE(DEVICE_SELF, galaxian_state, froggermc_audiocpu_irq_ack)
+MACHINE_CONFIG_END
-void galaxian_state::froggers(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::froggers)
konami_base(config);
konami_sound_1x_ay8910(config);
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::theend_map);
-}
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(theend_map)
+MACHINE_CONFIG_END
-void galaxian_state::froggervd(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::froggervd)
konami_base(config);
konami_sound_1x_ay8910(config);
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::froggervd_map);
-}
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(froggervd_map)
+MACHINE_CONFIG_END
-void galaxian_state::frogf(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::frogf)
konami_base(config);
konami_sound_1x_ay8910(config);
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::frogf_map);
-}
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(frogf_map)
+MACHINE_CONFIG_END
-void galaxian_state::turtles(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::turtles)
konami_base(config);
konami_sound_2x_ay8910(config);
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::turtles_map);
-}
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(turtles_map)
+MACHINE_CONFIG_END
-void galaxian_state::theend(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::theend)
konami_base(config);
konami_sound_2x_ay8910(config);
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::theend_map);
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(theend_map)
m_ppi8255[0]->out_pc_callback().set(FUNC(galaxian_state::theend_coin_counter_w));
m_ppi8255[1]->in_pc_callback().set(FUNC(galaxian_state::theend_protection_r));
m_ppi8255[1]->out_pc_callback().set(FUNC(galaxian_state::theend_protection_w));
-}
+MACHINE_CONFIG_END
-// TODO: should be derived from theend, re-sort machine configs later
-void galaxian_state::scramble(machine_config &config)
-{
+/* TODO: should be derived from theend, resort machine configs later */
+MACHINE_CONFIG_START(galaxian_state::scramble)
scramble_base(config);
-
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::theend_map);
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(theend_map)
m_ppi8255[1]->in_pc_callback().set(FUNC(galaxian_state::theend_protection_r));
m_ppi8255[1]->out_pc_callback().set(FUNC(galaxian_state::theend_protection_w));
-}
+MACHINE_CONFIG_END
-void galaxian_state::jungsub(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::jungsub)
galaxian_base(config);
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::jungsub_map);
- m_maincpu->set_addrmap(AS_IO, &galaxian_state::jungsub_io_map);
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(jungsub_map)
+ MCFG_DEVICE_IO_MAP(jungsub_io_map)
- Z80(config, m_audiocpu, GALAXIAN_PIXEL_CLOCK / 3 / 2); // clock not verified
- m_audiocpu->set_addrmap(AS_PROGRAM, &galaxian_state::checkman_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &galaxian_state::checkman_sound_portmap);
- m_audiocpu->set_vblank_int("screen", FUNC(galaxian_state::irq0_line_hold));
+ MCFG_DEVICE_ADD("audiocpu", Z80, GALAXIAN_PIXEL_CLOCK / 3 / 2) // clock not verified
+ MCFG_DEVICE_PROGRAM_MAP(checkman_sound_map)
+ MCFG_DEVICE_IO_MAP(checkman_sound_portmap)
+ MCFG_DEVICE_VBLANK_INT_DRIVER("screen", galaxian_state, irq0_line_hold)
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI);
/* sound hardware */
AY8910(config, m_ay8910[0], GALAXIAN_PIXEL_CLOCK / 3 / 2 / 2).add_route(ALL_OUTPUTS, "speaker", 0.5); // clock not verified
-}
+MACHINE_CONFIG_END
-void galaxian_state::explorer(machine_config &config) // Sidam 10800
-{
+MACHINE_CONFIG_START(galaxian_state::explorer) // Sidam 10800
sidam_bootleg_base(config);
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::explorer_map);
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(explorer_map)
/* 2nd CPU to drive sound */
- Z80(config, m_audiocpu, 12_MHz_XTAL / 2 / 2 / 2); /* clock not verified */
- m_audiocpu->set_addrmap(AS_PROGRAM, &galaxian_state::konami_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &galaxian_state::konami_sound_portmap);
+ MCFG_DEVICE_ADD("audiocpu", Z80, 12_MHz_XTAL / 2 / 2 / 2) /* clock not verified */
+ MCFG_DEVICE_PROGRAM_MAP(konami_sound_map)
+ MCFG_DEVICE_IO_MAP(konami_sound_portmap)
GENERIC_LATCH_8(config, m_soundlatch);
@@ -6491,15 +6492,15 @@ void galaxian_state::explorer(machine_config &config) // Sidam 10800
AY8912(config, m_ay8910[1], 12_MHz_XTAL / 2 / 2 / 2); /* matches PCB, needs verification */
m_ay8910[0]->port_a_read_callback().set(FUNC(galaxian_state::konami_sound_timer_r));
m_ay8910[0]->add_route(ALL_OUTPUTS, "speaker", 0.25);
-}
+MACHINE_CONFIG_END
-void galaxian_state::takeoff(machine_config &config) // Sidam 10900, with 1 x AY-3-8912
-{
+MACHINE_CONFIG_START(galaxian_state::takeoff) // Sidam 10900, with 1 x AY-3-8912
explorer(config);
/* 2nd CPU to drive sound */
- m_audiocpu->set_addrmap(AS_PROGRAM, &galaxian_state::takeoff_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &galaxian_state::takeoff_sound_portmap);
+ MCFG_DEVICE_MODIFY("audiocpu")
+ MCFG_DEVICE_PROGRAM_MAP(takeoff_sound_map)
+ MCFG_DEVICE_IO_MAP(takeoff_sound_portmap)
/* sound hardware */
config.device_remove("8910.0");
@@ -6508,20 +6509,19 @@ void galaxian_state::takeoff(machine_config &config) // Sidam 10900, with 1 x AY
ay8912_device &ay8912(AY8912(config, "8912", XTAL(12'000'000) / 8));
ay8912.port_a_read_callback().set(FUNC(galaxian_state::explorer_sound_latch_r));
ay8912.add_route(ALL_OUTPUTS, "speaker", 0.25);
-}
+MACHINE_CONFIG_END
-void galaxian_state::amigo2(machine_config &config) // marked "AMI", but similar to above
-{
+MACHINE_CONFIG_START(galaxian_state::amigo2) // marked "AMI", but similar to above
sidam_bootleg_base(config);
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::amigo2_map);
-
- // 2nd CPU to drive sound
- Z80(config, m_audiocpu, 12_MHz_XTAL / 2 / 2 / 2); // clock not verified
- m_audiocpu->set_addrmap(AS_PROGRAM, &galaxian_state::konami_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &galaxian_state::konami_sound_portmap);
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(amigo2_map)
+ /* 2nd CPU to drive sound */
+ MCFG_DEVICE_ADD("audiocpu", Z80, 12_MHz_XTAL / 2 / 2 / 2) /* clock not verified */
+ MCFG_DEVICE_PROGRAM_MAP(konami_sound_map)
+ MCFG_DEVICE_IO_MAP(konami_sound_portmap)
GENERIC_LATCH_8(config, m_soundlatch);
/* sound hardware */
@@ -6531,17 +6531,17 @@ void galaxian_state::amigo2(machine_config &config) // marked "AMI", but similar
m_ay8910[0]->add_route(ALL_OUTPUTS, "speaker", 0.25);
AY8910(config, m_ay8910[1], 12_MHz_XTAL / 2 / 2 / 2).add_route(ALL_OUTPUTS, "speaker", 0.25); /* matches PCB, needs verification */
-}
+MACHINE_CONFIG_END
-void galaxian_state::scorpion(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::scorpion)
scramble_base(config);
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(scorpion_map)
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::scorpion_map);
-
- m_audiocpu->set_addrmap(AS_PROGRAM, &galaxian_state::scorpion_sound_map);
- m_audiocpu->set_addrmap(AS_IO, &galaxian_state::scorpion_sound_portmap);
+ MCFG_DEVICE_MODIFY("audiocpu")
+ MCFG_DEVICE_PROGRAM_MAP(scorpion_sound_map)
+ MCFG_DEVICE_IO_MAP(scorpion_sound_portmap)
m_ppi8255[1]->in_pc_callback().set(FUNC(galaxian_state::scorpion_protection_r));
m_ppi8255[1]->out_pc_callback().set(FUNC(galaxian_state::scorpion_protection_w));
@@ -6553,22 +6553,21 @@ void galaxian_state::scorpion(machine_config &config)
m_ay8910[2]->add_route(ALL_OUTPUTS, "speaker", 0.25);
DIGITALKER(config, m_digitalker, 4_MHz_XTAL).add_route(ALL_OUTPUTS, "speaker", 0.16);
-}
+MACHINE_CONFIG_END
-void galaxian_state::sfx(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::sfx)
scramble_base(config);
+ MCFG_DEVICE_REMOVE("watchdog")
- config.device_remove("watchdog");
-
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::sfx_map);
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(sfx_map)
/* 3rd CPU for the sample player */
- Z80(config, m_audio2, KONAMI_SOUND_CLOCK/8);
- m_audio2->set_addrmap(AS_PROGRAM, &galaxian_state::sfx_sample_map);
- m_audio2->set_addrmap(AS_IO, &galaxian_state::sfx_sample_portmap);
+ MCFG_DEVICE_ADD("audio2", Z80, KONAMI_SOUND_CLOCK/8)
+ MCFG_DEVICE_PROGRAM_MAP(sfx_sample_map)
+ MCFG_DEVICE_IO_MAP(sfx_sample_portmap)
I8255A(config, m_ppi8255[2]);
m_ppi8255[2]->in_pa_callback().set("soundlatch2", FUNC(generic_latch_8_device::read));
@@ -6580,43 +6579,43 @@ void galaxian_state::sfx(machine_config &config)
m_ay8910[1]->port_b_write_callback().set(FUNC(galaxian_state::sfx_sample_control_w));
/* DAC for the sample player */
- DAC_8BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 1.0); // 16-pin IC (not identified by schematics)
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
- vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
- vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
-}
+ MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) // 16-pin IC (not identified by schematics)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+MACHINE_CONFIG_END
-void galaxian_state::monsterz(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::monsterz)
sfx(config);
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::monsterz_map);
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(monsterz_map)
+ MCFG_DEVICE_MODIFY("ppi8255_1")
m_ppi8255[1]->out_pa_callback().set(FUNC(galaxian_state::monsterz_porta_1_w));
m_ppi8255[1]->out_pb_callback().set(FUNC(galaxian_state::monsterz_portb_1_w));
m_ppi8255[1]->out_pc_callback().set(FUNC(galaxian_state::monsterz_portc_1_w));
- // there are likely other differences too, but those can wait until after protection is sorted out
-}
+ /* there are likely other differences too, but those can wait until after protection is sorted out */
+MACHINE_CONFIG_END
-void galaxian_state::scobra(machine_config &config)
-{
- scramble_base(config);
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::scobra_map);
-}
+MACHINE_CONFIG_START(galaxian_state::scobra)
+ scramble_base(config);
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(scobra_map)
+MACHINE_CONFIG_END
-void galaxian_state::anteatergg(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::anteatergg)
galaxian(config);
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::anteatergg_map);
-}
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(anteatergg_map)
+MACHINE_CONFIG_END
/*
@@ -6666,97 +6665,96 @@ Silkscreened label: "10041"
*/
-void galaxian_state::quaak(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::quaak)
konami_base(config);
konami_sound_2x_ay8910(config);
m_ay8910[0]->port_b_read_callback().set(FUNC(galaxian_state::frogger_sound_timer_r));
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::scobra_map);
-}
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(scobra_map)
+MACHINE_CONFIG_END
-void galaxian_state::froggeram(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::froggeram)
quaak(config);
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::froggeram_map);
-}
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(froggeram_map)
+MACHINE_CONFIG_END
-void galaxian_state::turpins(machine_config &config) // the ROMs came from a blister, so there aren't PCB infos available. Chip types and clocks are guessed.
-{
+MACHINE_CONFIG_START(galaxian_state::turpins) // the ROMs came from a blister, so there aren't PCB infos available. Chip types and clocks are guessed.
scobra(config);
- // alternate memory map
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::turpins_map);
+ /* alternate memory map */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(turpins_map)
- m_audiocpu->set_addrmap(AS_PROGRAM, &galaxian_state::turpins_sound_map);
-}
+ MCFG_DEVICE_MODIFY("audiocpu")
+ MCFG_DEVICE_PROGRAM_MAP(turpins_sound_map)
+MACHINE_CONFIG_END
-void galaxian_state::anteater(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::anteater)
scobra(config);
/* quiet down the sounds */
- m_discrete->reset_routes();
- m_discrete->add_route(ALL_OUTPUTS, "speaker", 0.25);
-}
+ MCFG_DEVICE_MODIFY("konami")
+ MCFG_SOUND_ROUTES_RESET()
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25)
+MACHINE_CONFIG_END
-void galaxian_state::anteateruk(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::anteateruk)
anteater(config);
- // strange memory map, maybe a kind of protection
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::anteateruk_map);
-}
+ /* strange memory map, maybe a kind of protection */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(anteateruk_map)
+MACHINE_CONFIG_END
-void galaxian_state::anteaterg(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::anteaterg)
anteater(config);
- // strange memory map, maybe a kind of protection
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::anteaterg_map);
-}
+ /* strange memory map, maybe a kind of protection */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(anteaterg_map)
+MACHINE_CONFIG_END
-void galaxian_state::moonwar(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::moonwar)
scobra(config);
m_ppi8255[0]->out_pc_callback().set(FUNC(galaxian_state::moonwar_port_select_w));
m_palette->set_init(FUNC(galaxian_state::moonwar_palette)); // bullets are less yellow
-}
+MACHINE_CONFIG_END
-void galaxian_state::fourplay(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::fourplay)
galaxian(config);
-
- // basic machine hardware
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::fourplay_map);
+ /* basic machine hardware */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(fourplay_map)
/* video hardware */
- m_gfxdecode->set_info(gfx_gmgalax);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_gmgalax)
m_palette->set_entries(64);
-}
+MACHINE_CONFIG_END
-void galaxian_state::videight(machine_config &config)
-{
+MACHINE_CONFIG_START(galaxian_state::videight)
galaxian(config);
- // basic machine hardware
- m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::videight_map);
+ /* basic machine hardware */
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(videight_map)
/* video hardware */
- m_gfxdecode->set_info(gfx_videight);
+ MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_videight)
m_palette->set_entries(8 * 32);
-}
+MACHINE_CONFIG_END
/*************************************
@@ -7035,12 +7033,6 @@ void galaxian_state::init_nolock()
space.unmap_write(0x6002, 0x6002, 0x7f8);
}
-// The first rom loads at 0800, then 1800, 2800?, 3800 and 4800.
-// Unfortunately the 3rd rom appears to be total garbage.
-// Each block of 256 bytes is in reverse order. Some code
-// is missing: 00xx, 4Axx, 10xx, 11xx at least. The game
-// uses 0200-05FF as RAM. It also accesses 6000, 6800, 700x, 7800.
-// Perhaps the missing code was stored in battery-backed RAM?
void galaxian_state::init_warofbugg()
{
uint8_t* romdata = memregion("maincpu")->base();
@@ -7048,10 +7040,9 @@ void galaxian_state::init_warofbugg()
uint8_t buf[0x4000];
memcpy(buf, romdata, 0x4000);
- // unscramble each block
- for (int i = 0; i < 0x40; i++)
- for (int j = 0; j < 0x100; j++)
- romdata[i*256+j] = buf[i*256+(j^0xff)];
+ // the rom data is at the very least, backwards, but there still seems to be missing code
+ for (int i = 0; i < 0x4000; i++)
+ romdata[i] = buf[i^0x7ff];
init_nolock();
@@ -8467,11 +8458,11 @@ ROM_END
ROM_START( warofbugg )
ROM_REGION( 0x4000, "maincpu", 0 )
- ROM_LOAD( "wotbg-u-1.bin", 0x0000, 0x0800, CRC(f43ff0a8) SHA1(b87abeb8af9105fa8fba78f9a68363bd89066e7f) ) // -> 0800
- ROM_LOAD( "wotbg-v-2.bin", 0x0800, 0x0800, CRC(eb7a028b) SHA1(8c822ae11d3cc04f749a7cd639d15b9fc830ab35) ) // -> 1800
- ROM_LOAD( "wotbg-w-3.bin", 0x1000, 0x0800, CRC(693e0e50) SHA1(00b19969cee0f95bfb8251c2df133ff2c9ae3b00) ) // -> ???? garbage
- ROM_LOAD( "wotbg-y-4.bin", 0x1800, 0x0800, CRC(885d4982) SHA1(4aeaf514a9413a9cb9a971fd258c6cf46ca66fc4) ) // -> 3800
- ROM_LOAD( "wotbg-z-5.bin", 0x2000, 0x0800, CRC(60041ef2) SHA1(cced5837a037ac5cd8fa6260d69d8e33de5ecd48) ) // -> 4800
+ ROM_LOAD( "wotbg-u-1.bin", 0x0000, 0x0800, CRC(f43ff0a8) SHA1(b87abeb8af9105fa8fba78f9a68363bd89066e7f) )
+ ROM_LOAD( "wotbg-v-2.bin", 0x0800, 0x0800, CRC(eb7a028b) SHA1(8c822ae11d3cc04f749a7cd639d15b9fc830ab35) )
+ ROM_LOAD( "wotbg-w-3.bin", 0x1000, 0x0800, CRC(693e0e50) SHA1(00b19969cee0f95bfb8251c2df133ff2c9ae3b00) )
+ ROM_LOAD( "wotbg-y-4.bin", 0x1800, 0x0800, CRC(885d4982) SHA1(4aeaf514a9413a9cb9a971fd258c6cf46ca66fc4) )
+ ROM_LOAD( "wotbg-z-5.bin", 0x2000, 0x0800, CRC(60041ef2) SHA1(cced5837a037ac5cd8fa6260d69d8e33de5ecd48) )
ROM_REGION( 0x1000, "gfx1", 0 )
ROM_LOAD( "warofbug.1k", 0x0000, 0x0800, CRC(8100fa85) SHA1(06641c431cace36dec98b87555f62e72f3e53a31) )
@@ -11626,31 +11617,6 @@ ROM_START( scramblebb ) // no PCB, just eproms...
ROM_LOAD( "c01s.6e", 0x0000, 0x0020, BAD_DUMP CRC(4e3caeab) SHA1(a25083c3e36d28afdefe4af6e6d4f3155e303625) ) // need proper dump
ROM_END
-// Two PCBs, labeled MU-1A and MU-2A
-ROM_START( kamikazesp )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "4-b.2c", 0x0000, 0x0800, CRC(ab0eef23) SHA1(53ebb2011969c3eb8d60ce30f118e6627201d2a0) ) // 2716
- ROM_LOAD( "5-b.2e", 0x0800, 0x0800, CRC(43cb40a4) SHA1(4e500f63a06865a5fd9a7d920eb866ea610a4d92) ) // 2716
- ROM_LOAD( "6-b.2f", 0x1000, 0x0800, CRC(eec265ee) SHA1(29b6cf6b93220414eb58cddeba591dc8813c4935) ) // 2716
- ROM_LOAD( "7-b.2h", 0x1800, 0x0800, CRC(dd380a22) SHA1(125e713a58cc5f2c1e38f67dad29f8c985ce5a8b) ) // 2716
- ROM_LOAD( "8-b.2j", 0x2000, 0x0800, CRC(92980e72) SHA1(7e0605b461ace534f8f91028bb82968ecd907ca1) ) // 2716
- ROM_LOAD( "9-b.2l", 0x2800, 0x0800, CRC(9fd96374) SHA1(c8456dd8a012353a023a2d3fa5d508e49c36ace8) ) // 2716
- ROM_LOAD( "10-b.2m", 0x3000, 0x0800, CRC(88ac07a0) SHA1(c57061db5984b472039356bf84a050b5b66e3813) ) // 2716
- ROM_LOAD( "11-b.2p", 0x3800, 0x0800, CRC(75232e09) SHA1(b0da201bf05c63031cdbe9f7059e3c710557f33d) ) // 2716
-
- ROM_REGION( 0x10000, "audiocpu", 0 )
- ROM_LOAD( "1-a.5c", 0x0000, 0x0800, CRC(be037cf6) SHA1(f28e5ead496e70beaada24775aa58bd5d75f2d25) ) // 2716
- ROM_LOAD( "2-a.5d", 0x0800, 0x0800, CRC(31bb79e4) SHA1(9f5370f7b1911c6a9f2c82ef2bab3f14cb0e9657) ) // 2716
- ROM_LOAD( "3-a.5e", 0x1000, 0x0800, CRC(ba2fa933) SHA1(1f976d8595706730e29f93027e7ab4620075c078) ) // 2716
-
- ROM_REGION( 0x1000, "gfx1", 0 )
- ROM_LOAD( "12-b.5f", 0x0000, 0x0800, CRC(4708845b) SHA1(a8b1ad19a95a9d35050a2ab7194cc96fc5afcdc9) ) // MB8516, dumped as 2716
- ROM_LOAD( "13-b.5h", 0x0800, 0x0800, CRC(11fd2887) SHA1(69844e48bb4d372cac7ae83c953df573c7ecbb7f) ) // 2716
-
- ROM_REGION( 0x0020, "proms", 0 )
- ROM_LOAD( "prom.6e", 0x0000, 0x0020, CRC(4e3caeab) SHA1(a25083c3e36d28afdefe4af6e6d4f3155e303625) ) // MB7051, dumped as 82S123
-ROM_END
-
ROM_START( strfbomb )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "1.2c", 0x0000, 0x0800, CRC(b102aaa0) SHA1(00560da7a2ded6afcdc1d46e12cc3c795654639a) )
@@ -12130,30 +12096,6 @@ ROM_START( scobrag )
ROM_END
-// Super Cobra bootleg (Cocamatic). PCB by "GGI Corp."
-ROM_START( scobraggi )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "2c_b.bin", 0x0000, 0x1000, CRC(04ffab61) SHA1(302ae8b224d98c405aadd363623eddf88bdc3f0e) ) // 2732
- ROM_LOAD( "2e_b.bin", 0x1000, 0x1000, CRC(4e29d35f) SHA1(f48358f30e886c65b0e38220a44d3c2d09a31fee) ) // 2732
- ROM_LOAD( "2f_b.bin", 0x2000, 0x1000, CRC(9dee81cc) SHA1(e842ad873cd5370f2c5d23334a320ebc448bfcdc) ) // 2732
- ROM_LOAD( "2h_b.bin", 0x3000, 0x1000, CRC(99dee0c6) SHA1(1f026a40f59fe33cb2ac54a7712d6d259db3ecc8) ) // 2732
- ROM_LOAD( "2j_b.bin", 0x4000, 0x1000, CRC(db7fb865) SHA1(94f1382dae4f3c12d177fd74b3493e91989b4654) ) // 2732
- ROM_LOAD( "2l_b.bin", 0x5000, 0x1000, CRC(5825d73b) SHA1(482128d723986fdf586f9ac53a0139b687cb0b58) ) // 2732
-
- ROM_REGION( 0x10000, "audiocpu", 0 )
- ROM_LOAD( "1_13_a.bin", 0x0000, 0x0800, CRC(d4346959) SHA1(5eab4505beb69a5bdd88b23db60e1193371250cf) ) // MB8516 readed as 2716
- ROM_LOAD( "2_13_a.bin", 0x0800, 0x0800, CRC(cc025d95) SHA1(2b0784c4d05c466e0b7648f16e14f34393d792c3) ) // 2716
- ROM_LOAD( "3_13_a.bin", 0x1000, 0x0800, CRC(1628c53f) SHA1(ec79a73e4a2d7373454b227dd7eff255f1cc60cc) ) // MB8516 readed as 2716
-
- ROM_REGION( 0x1000, "gfx1", 0 )
- ROM_LOAD( "5h_b.bin", 0x0000, 0x0800, CRC(64d113b4) SHA1(7b439bb74d5ecc792e0ca8964bcca8c6b7a51262) ) // 2716
- ROM_LOAD( "5f_b.bin", 0x0800, 0x0800, CRC(a96316d3) SHA1(9de0e94932e91dc34aea7c81880bde6a486d103b) ) // 2716
-
- ROM_REGION( 0x0020, "proms", 0 )
- ROM_LOAD( "6e_b.bin", 0x0000, 0x0020, CRC(4e3caeab) SHA1(a25083c3e36d28afdefe4af6e6d4f3155e303625) ) // MB7051 readed as N82S123
-ROM_END
-
-
ROM_START( suprheli )
/* this is a bootleg of Super Cobra */
ROM_REGION( 0x10000, "maincpu", 0 )
@@ -12592,7 +12534,7 @@ GAME( 1980, galaxrcgg, galaxian, galaxian, galaxrf, galaxian_state, init_
GAME( 1979, moonaln, galaxian, galaxian, superg, galaxian_state, init_galaxian, ROT90, "Namco / Nichibutsu (Karateco license?)", "Moon Alien", MACHINE_SUPPORTS_SAVE ) // or bootleg?
GAME( 1979, galapx, galaxian, galaxian, superg, galaxian_state, init_galaxian, ROT90, "hack", "Galaxian Part X (moonaln hack)", MACHINE_SUPPORTS_SAVE )
// like above but does have the energy bar, also GFX changed to planes.
-GAME( 1979, kamikazp, galaxian, galaxian, kamikazp, galaxian_state, init_galaxian, ROT90, "bootleg (Potomac Games)", "Kamikaze (Potomac Games, bootleg of Galaxian)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, kamikazp, galaxian, galaxian, kamikazp, galaxian_state, init_galaxian, ROT90, "bootleg (Potomac Games)", "Kamikaze (Potomac Games)", MACHINE_SUPPORTS_SAVE )
// this has the tiles to display the energy bar, but use the flag gfx for the 'linescroll effect' title screen, also doesn't work due to bad rom.
GAME( 1980, supergx, galaxian, galaxian, superg, galaxian_state, init_galaxian, ROT90, "Namco / Nichibutsu", "Super GX", MACHINE_NOT_WORKING | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
// these have the energy bar, and the tiles needed to display a less corrupt 'linescroll effect' title, but don't display one
@@ -12696,9 +12638,9 @@ GAME( 1980, mooncrstu, mooncrst, mooncrst, mooncrst, galaxian_state, init_
GAME( 1980, mooncrsto, mooncrst, mooncrst, mooncrsa, galaxian_state, init_mooncrst, ROT90, "Nichibutsu", "Moon Cresta (Nichibutsu, old rev)", MACHINE_SUPPORTS_SAVE )
GAME( 1980, mooncrstg, mooncrst, mooncrst, mooncrsg, galaxian_state, init_mooncrsu, ROT90, "Nichibutsu (Gremlin license)", "Moon Cresta (Gremlin)", MACHINE_SUPPORTS_SAVE )
/* straight Moon Cresta ripoffs on basic mooncrst hardware */
-GAME( 1980, eagle, mooncrst, eagle, mooncrsa, galaxian_state, init_mooncrsu, ROT90, "Nichibutsu (Centuri license)", "Eagle (set 1)", MACHINE_SUPPORTS_SAVE ) // or bootleg?
-GAME( 1980, eagle2, mooncrst, eagle, eagle2, galaxian_state, init_mooncrsu, ROT90, "Nichibutsu (Centuri license)", "Eagle (set 2)", MACHINE_SUPPORTS_SAVE ) // "
-GAME( 1980, eagle3, mooncrst, eagle, mooncrsa, galaxian_state, init_mooncrsu, ROT90, "Nichibutsu (Centuri license)", "Eagle (set 3)", MACHINE_SUPPORTS_SAVE ) // "
+GAME( 1980, eagle, mooncrst, mooncrst, mooncrsa, galaxian_state, init_mooncrsu, ROT90, "Nichibutsu (Centuri license)", "Eagle (set 1)", MACHINE_SUPPORTS_SAVE ) // or bootleg?
+GAME( 1980, eagle2, mooncrst, mooncrst, eagle2, galaxian_state, init_mooncrsu, ROT90, "Nichibutsu (Centuri license)", "Eagle (set 2)", MACHINE_SUPPORTS_SAVE ) // "
+GAME( 1980, eagle3, mooncrst, mooncrst, mooncrsa, galaxian_state, init_mooncrsu, ROT90, "Nichibutsu (Centuri license)", "Eagle (set 3)", MACHINE_SUPPORTS_SAVE ) // "
GAME( 1980, mooncrsb, mooncrst, mooncrst, mooncrsa, galaxian_state, init_mooncrsu, ROT90, "bootleg", "Moon Cresta (bootleg set 1)", MACHINE_SUPPORTS_SAVE )
GAME( 1980, mooncrs2, mooncrst, mooncrst, mooncrsa, galaxian_state, init_mooncrsu, ROT90, "bootleg", "Moon Cresta (bootleg set 2)", MACHINE_SUPPORTS_SAVE )
GAME( 1980, mooncrs3, mooncrst, mooncrst, mooncrst, galaxian_state, init_mooncrsu, ROT90, "bootleg (Jeutel)", "Moon Cresta (bootleg set 3)", MACHINE_SUPPORTS_SAVE ) /* Jeutel bootleg, similar to bootleg set 2 */
@@ -12786,9 +12728,12 @@ GAME( 1981, quaak, frogger, quaak, frogger, galaxian_state, init_
GAME( 1981, froggeram, frogger, froggeram, froggeram, galaxian_state, init_quaak, ROT90, "bootleg", "Frogger (bootleg on Amigo? hardware)", MACHINE_SUPPORTS_SAVE ) // meant to be Amigo hardware, but maybe a different bootleg than the one we have?
-// Turtles based hardware
-// CPU/Video Board: KT-4108-2
-// Sound Board: KT-4108-1
+/*
+ Turtles based hardware
+
+ CPU/Video Board: KT-4108-2
+ Sound Board: KT-4108-1
+*/
GAME( 1981, turtles, 0, turtles, turtles, galaxian_state, init_turtles, ROT90, "Konami (Stern Electronics license)", "Turtles", MACHINE_SUPPORTS_SAVE )
GAME( 1981, turpin, turtles, turtles, turpin, galaxian_state, init_turtles, ROT90, "Konami (Sega license)", "Turpin", MACHINE_SUPPORTS_SAVE )
GAME( 1981, 600, turtles, turtles, turtles, galaxian_state, init_turtles, ROT90, "Konami", "600", MACHINE_SUPPORTS_SAVE )
@@ -12812,22 +12757,21 @@ GAME( 1980, theend, 0, theend, theend, galaxian_state, init_
GAME( 1980, theends, theend, theend, theend, galaxian_state, init_theend, ROT90, "Konami (Stern Electronics license)", "The End (Stern Electronics)", MACHINE_SUPPORTS_SAVE )
GAME( 1981, takeoff, theend, takeoff, explorer, galaxian_state, init_explorer, ROT90, "bootleg (Sidam)", "Take Off (bootleg of The End)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // colors likely need bitswap<8> somewhere; needs different sound timer. reference: https://www.youtube.com/watch?v=iPYX3yJORTE
-GAME( 1981, scramble, 0, scramble, scramble, galaxian_state, init_scramble, ROT90, "Konami", "Scramble", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, scrambles, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "Konami (Stern Electronics license)", "Scramble (Stern Electronics set 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, scrambles2, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "Konami (Stern Electronics license)", "Scramble (Stern Electronics set 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, strfbomb, scramble, scramble, strfbomb, galaxian_state, init_scramble, ROT90, "bootleg (Omni)", "Strafe Bomb (bootleg of Scramble)", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, explorer, scramble, explorer, explorer, galaxian_state, init_explorer, ROT90, "bootleg (Sidam)", "Explorer (bootleg of Scramble)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // needs different sound timer
-GAME( 1981, scramblebf, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Karateco)", "Scramble (Karateco, French bootleg)", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, scrambp, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Billport S.A.)", "Impacto (Billport S.A., Spanish bootleg of Scramble)", MACHINE_SUPPORTS_SAVE ) // similar to the Karateco set above
-GAME( 1981, scramce, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Centromatic S.A.)", "Scramble (Centromatic S.A., Spanish bootleg)", MACHINE_SUPPORTS_SAVE ) // similar to above
-GAME( 1981, scrampt, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Petaco S.A.)", "Scramble (Petaco S.A., Spanish bootleg)", MACHINE_SUPPORTS_SAVE ) // ^^
-GAME( 1981, scramrf, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Recreativos Franco)", "Scramble (Recreativos Franco, Spanish bootleg)", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, offensiv, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Video Dens)", "Offensive (Spanish bootleg of Scramble)", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, ncentury, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Petaco S.A.)", "New Century (Spanish bootleg of Scramble)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // irq isn't enabled correctly
-GAME( 1981, scrammr, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Model Racing)", "Scramble (Model Racing, Italian bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // irq isn't enabled correctly
-GAME( 1981, scramblebb, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg?", "Scramble (bootleg?)", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, kamikazesp, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Euromatic S.A.)", "Kamikaze (Euromatic S.A., Spanish bootleg of Scramble)", MACHINE_SUPPORTS_SAVE )
-GAME( 198?, bomber, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Alca)", "Bomber (bootleg of Scramble)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, scramble, 0, scramble, scramble, galaxian_state, init_scramble, ROT90, "Konami", "Scramble", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, scrambles, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "Konami (Stern Electronics license)", "Scramble (Stern Electronics set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, scrambles2, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "Konami (Stern Electronics license)", "Scramble (Stern Electronics set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, strfbomb, scramble, scramble, strfbomb, galaxian_state, init_scramble, ROT90, "bootleg (Omni)", "Strafe Bomb (bootleg of Scramble)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, explorer, scramble, explorer, explorer, galaxian_state, init_explorer, ROT90, "bootleg (Sidam)", "Explorer (bootleg of Scramble)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // needs different sound timer
+GAME( 1981, scramblebf, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Karateco)", "Scramble (Karateco, French bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, scrambp, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Billport S.A.)", "Impacto (Billport S.A., Spanish bootleg of Scramble)", MACHINE_SUPPORTS_SAVE ) // similar to the Karateco set above
+GAME( 1981, scramce, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Centromatic S.A.)", "Scramble (Centromatic S.A., Spanish bootleg)", MACHINE_SUPPORTS_SAVE ) // similar to above
+GAME( 1981, scrampt, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Petaco S.A.)", "Scramble (Petaco S.A., Spanish bootleg)", MACHINE_SUPPORTS_SAVE ) // ^^
+GAME( 1981, scramrf, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Recreativos Franco)", "Scramble (Recreativos Franco, Spanish bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, offensiv, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Video Dens)", "Offensive (Spanish bootleg of Scramble)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, ncentury, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Petaco S.A.)", "New Century (Spanish bootleg of Scramble)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // irq isn't enabled correctly
+GAME( 1981, scrammr, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Model Racing)", "Scramble (Model Racing, Italian bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // irq isn't enabled correctly
+GAME( 1981, scramblebb, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg?", "Scramble (bootleg?)", MACHINE_SUPPORTS_SAVE )
+GAME( 198?, bomber, scramble, scramble, scramble, galaxian_state, init_scramble, ROT90, "bootleg (Alca)", "Bomber (bootleg of Scramble)", MACHINE_SUPPORTS_SAVE )
GAME( 1981, atlantis, 0, theend, atlantis, galaxian_state, init_atlantis, ROT90, "Comsoft", "Battle of Atlantis (set 1)", MACHINE_SUPPORTS_SAVE )
GAME( 1981, atlantis2, atlantis, theend, atlantis, galaxian_state, init_atlantis, ROT90, "Comsoft", "Battle of Atlantis (set 2)", MACHINE_SUPPORTS_SAVE )
@@ -12854,14 +12798,13 @@ GAME( 1982, monsterz, 0, monsterz, sfx, galaxian_state, init_
CPU/Video Board: A969
Sound Board: A970
*/
-GAME( 1981, scobra, 0, scobra, scobra, galaxian_state, init_scobra, ROT90, "Konami", "Super Cobra", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, scobrase, scobra, scobra, scobra, galaxian_state, init_scobra, ROT90, "Konami (Sega license)", "Super Cobra (Sega)", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, scobras, scobra, scobra, scobras, galaxian_state, init_scobra, ROT90, "Konami (Stern Electronics license)", "Super Cobra (Stern Electronics)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, scobra, 0, scobra, scobra, galaxian_state, init_scobra, ROT90, "Konami", "Super Cobra", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, scobrase, scobra, scobra, scobra, galaxian_state, init_scobra, ROT90, "Konami (Sega license)", "Super Cobra (Sega)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, scobras, scobra, scobra, scobras, galaxian_state, init_scobra, ROT90, "Konami (Stern Electronics license)", "Super Cobra (Stern Electronics)", MACHINE_SUPPORTS_SAVE )
GAME( 1981, scobrae, scobra, scobra, scobras, galaxian_state, init_scobrae, ROT90, "Konami (Stern Electronics license)", "Super Cobra (Stern Electronics) (encrypted, KONATEC XC-103SS CPU)", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, scobrab, scobra, scobra, scobras, galaxian_state, init_scobra, ROT90, "bootleg (Karateco)", "Super Cobra (bootleg, set 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, scobrag, scobra, scobra, scobras, galaxian_state, init_scobra, ROT90, "bootleg (A.V.G. by Zaccaria)", "Super Cobra (bootleg, set 2)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // uses the scramble color PROM
-GAME( 1981, scobraggi, scobra, scobra, scobras, galaxian_state, init_scobra, ROT90, "bootleg (Cocamatic)", "Super Cobra (bootleg, set 3)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // uses the scramble color PROM
-GAME( 1981, suprheli, scobra, scobra, scobras, galaxian_state, init_scobra, ROT90, "bootleg", "Super Heli (Super Cobra bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, scobrab, scobra, scobra, scobras, galaxian_state, init_scobra, ROT90, "bootleg (Karateco)", "Super Cobra (bootleg, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, scobrag, scobra, scobra, scobras, galaxian_state, init_scobra, ROT90, "bootleg (A.V.G. by Zaccaria)", "Super Cobra (bootleg, set 2)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // uses the scramble color PROM
+GAME( 1981, suprheli, scobra, scobra, scobras, galaxian_state, init_scobra, ROT90, "bootleg", "Super Heli (Super Cobra bootleg)", MACHINE_SUPPORTS_SAVE )
GAME( 1981, moonwar, 0, moonwar, moonwar, galaxian_state, init_moonwar, ROT90, "Stern Electronics", "Moonwar", MACHINE_SUPPORTS_SAVE )
GAME( 1981, moonwara, moonwar, moonwar, moonwara, galaxian_state, init_moonwar, ROT90, "Stern Electronics", "Moonwar (older)", MACHINE_SUPPORTS_SAVE )