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.cpp112
1 files changed, 33 insertions, 79 deletions
diff --git a/src/mame/drivers/galaxian.cpp b/src/mame/drivers/galaxian.cpp
index 3cc3ef61875..caae5457a0d 100644
--- a/src/mame/drivers/galaxian.cpp
+++ b/src/mame/drivers/galaxian.cpp
@@ -5703,9 +5703,6 @@ static MACHINE_CONFIG_START( galaxian_base )
MCFG_SCREEN_UPDATE_DRIVER(galaxian_state, screen_update_galaxian)
- /* blinking frequency is determined by 555 counter with Ra=100k, Rb=10k, C=10uF */
- MCFG_TIMER_DRIVER_ADD_PERIODIC("stars", galaxian_state, galaxian_stars_blink_timer, PERIOD_OF_555_ASTABLE(100000, 10000, 0.00001))
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("speaker")
MACHINE_CONFIG_END
@@ -5785,6 +5782,14 @@ static MACHINE_CONFIG_START( konami_sound_2x_ay8910 )
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( scramble_base, konami_base )
+ MCFG_FRAGMENT_ADD(konami_sound_2x_ay8910)
+
+ /* blinking frequency is determined by 555 counter with Ra=100k, Rb=10k, C=10uF */
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("stars", galaxian_state, scramble_stars_blink_timer, PERIOD_OF_555_ASTABLE(100000, 10000, 0.00001))
+MACHINE_CONFIG_END
+
+
/*************************************
*
@@ -6048,43 +6053,24 @@ static MACHINE_CONFIG_DERIVED( turpins, turtles )
MACHINE_CONFIG_END
-static MACHINE_CONFIG_DERIVED( theend, galaxian_base )
+static MACHINE_CONFIG_DERIVED( theend, konami_base )
MCFG_FRAGMENT_ADD(konami_sound_2x_ay8910)
/* alternate memory map */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(theend_map)
- MCFG_DEVICE_ADD("ppi8255_0", I8255A, 0)
- MCFG_I8255_IN_PORTA_CB(IOPORT("IN0"))
- MCFG_I8255_IN_PORTB_CB(IOPORT("IN1"))
- MCFG_I8255_IN_PORTC_CB(IOPORT("IN2"))
+ MCFG_DEVICE_MODIFY("ppi8255_0")
MCFG_I8255_OUT_PORTC_CB(WRITE8(galaxian_state, theend_coin_counter_w))
-
- MCFG_DEVICE_ADD("ppi8255_1", I8255A, 0)
- MCFG_I8255_OUT_PORTA_CB(DEVWRITE8("soundlatch", generic_latch_8_device, write))
- MCFG_I8255_OUT_PORTB_CB(WRITE8(galaxian_state, konami_sound_control_w))
- MCFG_I8255_IN_PORTC_CB(IOPORT("IN3"))
- MCFG_I8255_OUT_PORTC_CB(WRITE8(galaxian_state, konami_portc_1_w))
MACHINE_CONFIG_END
-static MACHINE_CONFIG_DERIVED( scramble, galaxian_base )
- MCFG_FRAGMENT_ADD(konami_sound_2x_ay8910)
-
+static MACHINE_CONFIG_DERIVED( scramble, scramble_base )
/* alternate memory map */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(theend_map)
- MCFG_DEVICE_ADD("ppi8255_0", I8255A, 0)
- MCFG_I8255_IN_PORTA_CB(IOPORT("IN0"))
- MCFG_I8255_IN_PORTB_CB(IOPORT("IN1"))
- MCFG_I8255_IN_PORTC_CB(IOPORT("IN2"))
- MCFG_I8255_OUT_PORTC_CB(WRITE8(galaxian_state, konami_portc_0_w))
-
- MCFG_DEVICE_ADD("ppi8255_1", I8255A, 0)
- MCFG_I8255_OUT_PORTA_CB(DEVWRITE8("soundlatch", generic_latch_8_device, write))
- MCFG_I8255_OUT_PORTB_CB(WRITE8(galaxian_state, konami_sound_control_w))
+ MCFG_DEVICE_MODIFY("ppi8255_1")
MCFG_I8255_IN_PORTC_CB(READ8(galaxian_state, scramble_protection_r))
MCFG_I8255_OUT_PORTC_CB(WRITE8(galaxian_state, scramble_protection_w))
MACHINE_CONFIG_END
@@ -6103,17 +6089,17 @@ static MACHINE_CONFIG_DERIVED( explorer, galaxian_base )
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
- /* sound hardware */
- MCFG_SOUND_ADD("8910.0", AY8910, KONAMI_SOUND_CLOCK/8)
+ /* sound hardware is a pair of AY-3-8912 */
+ MCFG_SOUND_ADD("8910.0", AY8912, KONAMI_SOUND_CLOCK/8)
MCFG_AY8910_PORT_A_READ_CB(READ8(galaxian_state, explorer_sound_latch_r))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25)
- MCFG_SOUND_ADD("8910.1", AY8910, KONAMI_SOUND_CLOCK/8)
+ MCFG_SOUND_ADD("8910.1", AY8912, KONAMI_SOUND_CLOCK/8)
MCFG_AY8910_PORT_A_READ_CB(READ8(galaxian_state, konami_sound_timer_r))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25)
MACHINE_CONFIG_END
-static MACHINE_CONFIG_DERIVED( takeoff, explorer ) // takeoff shares the same main map as explorer, but uses only an AY8912 for sound.
+static MACHINE_CONFIG_DERIVED( takeoff, explorer ) // takeoff shares the same main map as explorer, but uses only one AY8912 for sound.
MCFG_SOUND_MODIFY("maincpu")
MCFG_DEVICE_CLOCK(XTAL_12MHz / 8) // XTAL verified, divider not verified
@@ -6133,20 +6119,12 @@ static MACHINE_CONFIG_DERIVED( takeoff, explorer ) // takeoff shares the same ma
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25)
MACHINE_CONFIG_END
-static MACHINE_CONFIG_DERIVED( scorpion, theend )
-
- MCFG_DEVICE_REMOVE("ppi8255_0")
- MCFG_DEVICE_REMOVE("ppi8255_1")
-
- MCFG_DEVICE_ADD("ppi8255_0", I8255A, 0)
- MCFG_I8255_IN_PORTA_CB(IOPORT("IN0"))
- MCFG_I8255_IN_PORTB_CB(IOPORT("IN1"))
- MCFG_I8255_IN_PORTC_CB(IOPORT("IN2"))
- MCFG_I8255_OUT_PORTC_CB(WRITE8(galaxian_state, konami_portc_0_w))
+static MACHINE_CONFIG_DERIVED( scorpion, scramble_base )
+ /* alternate memory map */
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(theend_map)
- MCFG_DEVICE_ADD("ppi8255_1", I8255A, 0)
- MCFG_I8255_OUT_PORTA_CB(DEVWRITE8("soundlatch", generic_latch_8_device, write))
- MCFG_I8255_OUT_PORTB_CB(WRITE8(galaxian_state, konami_sound_control_w))
+ MCFG_DEVICE_MODIFY("ppi8255_1")
MCFG_I8255_IN_PORTC_CB(READ8(galaxian_state, scorpion_protection_r))
MCFG_I8255_OUT_PORTC_CB(WRITE8(galaxian_state, scorpion_protection_w))
@@ -6161,9 +6139,7 @@ static MACHINE_CONFIG_DERIVED( scorpion, theend )
MACHINE_CONFIG_END
-static MACHINE_CONFIG_DERIVED( sfx, galaxian_base )
- MCFG_FRAGMENT_ADD(konami_sound_2x_ay8910)
-
+static MACHINE_CONFIG_DERIVED( sfx, scramble_base )
MCFG_DEVICE_REMOVE("watchdog")
/* alternate memory map */
@@ -6175,18 +6151,6 @@ static MACHINE_CONFIG_DERIVED( sfx, galaxian_base )
MCFG_CPU_PROGRAM_MAP(sfx_sample_map)
MCFG_CPU_IO_MAP(sfx_sample_portmap)
- MCFG_DEVICE_ADD("ppi8255_0", I8255A, 0)
- MCFG_I8255_IN_PORTA_CB(IOPORT("IN0"))
- MCFG_I8255_IN_PORTB_CB(IOPORT("IN1"))
- MCFG_I8255_IN_PORTC_CB(IOPORT("IN2"))
- MCFG_I8255_OUT_PORTC_CB(WRITE8(galaxian_state, konami_portc_0_w))
-
- MCFG_DEVICE_ADD("ppi8255_1", I8255A, 0)
- MCFG_I8255_OUT_PORTA_CB(DEVWRITE8("soundlatch", generic_latch_8_device, write))
- MCFG_I8255_OUT_PORTB_CB(WRITE8(galaxian_state, konami_sound_control_w))
- MCFG_I8255_IN_PORTC_CB(IOPORT("IN3"))
- MCFG_I8255_OUT_PORTC_CB(WRITE8(galaxian_state, konami_portc_1_w))
-
MCFG_DEVICE_ADD("ppi8255_2", I8255A, 0)
MCFG_I8255_IN_PORTA_CB(DEVREAD8("soundlatch2", generic_latch_8_device, read))
@@ -6210,11 +6174,9 @@ static MACHINE_CONFIG_DERIVED( monsterz, sfx )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(monsterz_map)
- MCFG_DEVICE_REMOVE("ppi8255_1")
- MCFG_DEVICE_ADD("ppi8255_1", I8255A, 0)
+ MCFG_DEVICE_MODIFY("ppi8255_1")
MCFG_I8255_OUT_PORTA_CB(WRITE8(galaxian_state, monsterz_porta_1_w))
MCFG_I8255_OUT_PORTB_CB(WRITE8(galaxian_state, monsterz_portb_1_w))
- MCFG_I8255_IN_PORTC_CB(IOPORT("IN3"))
MCFG_I8255_OUT_PORTC_CB(WRITE8(galaxian_state, monsterz_portc_1_w))
/* there are likely other differences too, but those can wait until after protection is sorted out */
@@ -6222,9 +6184,7 @@ static MACHINE_CONFIG_DERIVED( monsterz, sfx )
MACHINE_CONFIG_END
-static MACHINE_CONFIG_DERIVED( scobra, konami_base )
- MCFG_FRAGMENT_ADD(konami_sound_2x_ay8910)
-
+static MACHINE_CONFIG_DERIVED( scobra, scramble_base )
/* alternate memory map */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(scobra_map)
@@ -6335,21 +6295,9 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( moonwar, scobra )
- MCFG_DEVICE_REMOVE("ppi8255_0")
- MCFG_DEVICE_REMOVE("ppi8255_1")
-
- MCFG_DEVICE_ADD("ppi8255_0", I8255A, 0)
- MCFG_I8255_IN_PORTA_CB(IOPORT("IN0"))
- MCFG_I8255_IN_PORTB_CB(IOPORT("IN1"))
- MCFG_I8255_IN_PORTC_CB(IOPORT("IN2"))
+ MCFG_DEVICE_MODIFY("ppi8255_0")
MCFG_I8255_OUT_PORTC_CB(WRITE8(galaxian_state, moonwar_port_select_w))
- MCFG_DEVICE_ADD("ppi8255_1", I8255A, 0)
- MCFG_I8255_OUT_PORTA_CB(DEVWRITE8("soundlatch", generic_latch_8_device, write))
- MCFG_I8255_OUT_PORTB_CB(WRITE8(galaxian_state, konami_sound_control_w))
- MCFG_I8255_IN_PORTC_CB(IOPORT("IN3"))
- MCFG_I8255_OUT_PORTC_CB(WRITE8(galaxian_state, konami_portc_1_w))
-
MCFG_PALETTE_MODIFY("palette")
MCFG_PALETTE_INIT_OWNER(galaxian_state,moonwar) // bullets are less yellow
MACHINE_CONFIG_END
@@ -7210,6 +7158,12 @@ DRIVER_INIT_MEMBER(galaxian_state,scramble)
common_init(&galaxian_state::scramble_draw_bullet, &galaxian_state::scramble_draw_background, nullptr, nullptr);
}
+DRIVER_INIT_MEMBER(galaxian_state,explorer)
+{
+ // not sure how stars work here, but there is definitely no 555 timer
+ common_init(&galaxian_state::scramble_draw_bullet, &galaxian_state::galaxian_draw_background, nullptr, nullptr);
+}
+
DRIVER_INIT_MEMBER(galaxian_state,mandinga)
{
DRIVER_INIT_CALL(scramble);
@@ -12153,13 +12107,13 @@ GAME( 1982, mandinga, amidar, scramble, amidars, galaxian_state, mandi
/* The End/Scramble based hardware */
GAME( 1980, theend, 0, theend, theend, galaxian_state, theend, ROT90, "Konami", "The End", MACHINE_SUPPORTS_SAVE )
GAME( 1980, theends, theend, theend, theend, galaxian_state, theend, ROT90, "Konami (Stern Electronics license)", "The End (Stern Electronics)", MACHINE_SUPPORTS_SAVE )
-GAME( 1980, takeoff, theend, takeoff, explorer, galaxian_state, scramble, ROT90, "bootleg (Sidam)", "Take Off (bootleg of The End)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // tempo is way too fast
+GAME( 1980, takeoff, theend, takeoff, explorer, galaxian_state, explorer, ROT90, "bootleg (Sidam)", "Take Off (bootleg of The End)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // tempo is way too fast
GAME( 1981, scramble, 0, scramble, scramble, galaxian_state, scramble, ROT90, "Konami", "Scramble", MACHINE_SUPPORTS_SAVE )
GAME( 1981, scrambles, scramble, scramble, scramble, galaxian_state, scramble, ROT90, "Konami (Stern Electronics license)", "Scramble (Stern Electronics set 1)", MACHINE_SUPPORTS_SAVE )
GAME( 1981, scrambles2, scramble, scramble, scramble, galaxian_state, scramble, ROT90, "Konami (Stern Electronics license)", "Scramble (Stern Electronics set 2)", MACHINE_SUPPORTS_SAVE )
GAME( 1981, strfbomb, scramble, scramble, strfbomb, galaxian_state, scramble, ROT90, "bootleg (Omni)", "Strafe Bomb (bootleg of Scramble)", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, explorer, scramble, explorer, explorer, galaxian_state, scramble, ROT90, "bootleg (Sidam)", "Explorer (bootleg of Scramble)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, explorer, scramble, explorer, explorer, galaxian_state, explorer, ROT90, "bootleg (Sidam)", "Explorer (bootleg of Scramble)", MACHINE_SUPPORTS_SAVE )
GAME( 1981, scramblebf, scramble, scramble, scramble, galaxian_state, scramble, ROT90, "bootleg (Karateco)", "Scramble (Karateco, French bootleg)", MACHINE_SUPPORTS_SAVE )
GAME( 1981, scrambp, scramble, scramble, scramble, galaxian_state, 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, scramble, ROT90, "bootleg (Centromatic S.A.)", "Scramble (Centromatic S.A., Spanish bootleg)", MACHINE_SUPPORTS_SAVE ) // similar to above