diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mame/drivers/galaxian.cpp | 81 | ||||
-rw-r--r-- | src/mame/includes/galaxian.h | 1 |
2 files changed, 56 insertions, 26 deletions
diff --git a/src/mame/drivers/galaxian.cpp b/src/mame/drivers/galaxian.cpp index e222e403291..ef9d8459e72 100644 --- a/src/mame/drivers/galaxian.cpp +++ b/src/mame/drivers/galaxian.cpp @@ -1701,6 +1701,29 @@ static ADDRESS_MAP_START( theend_map, AS_PROGRAM, 8, galaxian_state ) AM_RANGE(0x8000, 0xffff) AM_READWRITE(theend_ppi8255_r, theend_ppi8255_w) ADDRESS_MAP_END +/* map not derived from schematics. Used by explorer and takeoff */ +static ADDRESS_MAP_START( explorer_map, AS_PROGRAM, 8, galaxian_state ) + ADDRESS_MAP_UNMAP_HIGH + AM_RANGE(0x0000, 0x3fff) AM_ROM + AM_RANGE(0x4000, 0x47ff) AM_RAM + AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram") + AM_RANGE(0x5000, 0x50ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram") + AM_RANGE(0x6800, 0x6800) AM_WRITENOP // ???? + AM_RANGE(0x6801, 0x6801) AM_MIRROR(0x07f8) AM_WRITE(irq_enable_w) + AM_RANGE(0x6802, 0x6802) AM_MIRROR(0x07f8) AM_WRITE(coin_count_0_w) + AM_RANGE(0x6803, 0x6803) AM_MIRROR(0x07f8) AM_WRITE(scramble_background_enable_w) + AM_RANGE(0x6804, 0x6804) AM_MIRROR(0x07f8) AM_WRITE(galaxian_stars_enable_w) + AM_RANGE(0x6805, 0x6805) AM_MIRROR(0x07f8) //POUT2 + AM_RANGE(0x6806, 0x6806) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_x_w) + AM_RANGE(0x6807, 0x6807) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_y_w) + AM_RANGE(0x7000, 0x7000) AM_MIRROR(0x07ff) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset_r, reset_w) /* watchdog works for writes as well? (or is it just disabled?) */ + AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x0ffc) AM_READ_PORT("IN0"); + AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x0fff) AM_WRITE(soundlatch_byte_w) + AM_RANGE(0x8001, 0x8001) AM_MIRROR(0x0ffc) AM_READ_PORT("IN1"); + AM_RANGE(0x8002, 0x8002) AM_MIRROR(0x0ffc) AM_READ_PORT("IN2"); + AM_RANGE(0x8003, 0x8003) AM_MIRROR(0x0ffc) AM_READ_PORT("IN3"); + AM_RANGE(0x9000, 0x9000) AM_MIRROR(0x0fff) AM_WRITE(explorer_sound_control_w); +ADDRESS_MAP_END /* map derived from schematics */ static ADDRESS_MAP_START( scobra_map, AS_PROGRAM, 8, galaxian_state ) @@ -2077,6 +2100,21 @@ static ADDRESS_MAP_START( checkmaj_sound_map, AS_PROGRAM, 8, galaxian_state ) ADDRESS_MAP_END +/* Take Off with 1x AY-8912*/ + +static ADDRESS_MAP_START( takeoff_sound_map, AS_PROGRAM, 8, galaxian_state ) + AM_RANGE(0x0000, 0x0fff) AM_ROM + AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x6c00) AM_RAM +ADDRESS_MAP_END + +static ADDRESS_MAP_START( takeoff_sound_portmap, AS_IO, 8, galaxian_state ) + ADDRESS_MAP_UNMAP_HIGH + ADDRESS_MAP_GLOBAL_MASK(0xff) + AM_RANGE(0x20, 0x20) AM_READ(konami_sound_timer_r) + AM_RANGE(0x40, 0x40) AM_DEVWRITE("8912", ay8912_device, address_w) + AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("8912", ay8912_device, data_r, data_w) +ADDRESS_MAP_END + /* King and Balloon with DAC */ static ADDRESS_MAP_START( kingball_sound_map, AS_PROGRAM, 8, galaxian_state ) ADDRESS_MAP_UNMAP_HIGH @@ -5839,7 +5877,7 @@ static MACHINE_CONFIG_DERIVED( explorer, galaxian_base ) /* alternate memory map */ MCFG_CPU_MODIFY("maincpu") - MCFG_CPU_PROGRAM_MAP(theend_map) + MCFG_CPU_PROGRAM_MAP(explorer_map) /* 2nd CPU to drive sound */ MCFG_CPU_ADD("audiocpu", Z80,KONAMI_SOUND_CLOCK/8) @@ -5856,6 +5894,21 @@ static MACHINE_CONFIG_DERIVED( explorer, galaxian_base ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 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. + + /* 2nd CPU to drive sound */ + MCFG_SOUND_MODIFY("audiocpu") + MCFG_CPU_PROGRAM_MAP(takeoff_sound_map) + MCFG_CPU_IO_MAP(takeoff_sound_portmap) + + /* sound hardware */ + MCFG_DEVICE_REMOVE("8910.0") + MCFG_DEVICE_REMOVE("8910.1") + + MCFG_SOUND_ADD("8912", AY8912, KONAMI_SOUND_CLOCK/8) + MCFG_AY8910_PORT_A_READ_CB(READ8(galaxian_state, explorer_sound_latch_r)) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) +MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( scorpion, theend ) @@ -6922,28 +6975,6 @@ DRIVER_INIT_MEMBER(galaxian_state,scramble) } -DRIVER_INIT_MEMBER(galaxian_state,explorer) -{ - address_space &space = m_maincpu->space(AS_PROGRAM); - - /* video extensions */ - common_init(&galaxian_state::scramble_draw_bullet, &galaxian_state::scramble_draw_background, nullptr, nullptr); - - /* watchdog works for writes as well? (or is it just disabled?) */ - watchdog_timer_device *wdog = subdevice<watchdog_timer_device>("watchdog"); - space.install_write_handler(0x7000, 0x7000, 0, 0x7ff, write8_delegate(FUNC(watchdog_timer_device::reset_w), wdog)); - - /* I/O appears to be direct, not via PPIs */ - space.unmap_readwrite(0x8000, 0xffff); - space.install_read_port(0x8000, 0x8000, 0, 0xffc, "IN0"); - space.install_read_port(0x8001, 0x8001, 0, 0xffc, "IN1"); - space.install_read_port(0x8002, 0x8002, 0, 0xffc, "IN2"); - space.install_read_port(0x8003, 0x8003, 0, 0xffc, "IN3"); - space.install_write_handler(0x8000, 0x8000, 0, 0xfff, write8_delegate(FUNC(galaxian_state::soundlatch_byte_w),this)); - space.install_write_handler(0x9000, 0x9000, 0, 0xfff, write8_delegate(FUNC(galaxian_state::explorer_sound_control_w),this)); -} - - DRIVER_INIT_MEMBER(galaxian_state,sfx) { /* basic configuration */ @@ -11583,13 +11614,13 @@ GAME( 1982, amidars, amidar, scramble, amidars, galaxian_state, scram /* 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, explorer, explorer, galaxian_state, explorer, ROT90, "bootleg (Sidam)", "Take Off (bootleg of The End)", MACHINE_NO_SOUND | 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 ) 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, explorer, ROT90, "bootleg (Sidam)", "Explorer (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, scramblebf, scramble, scramble, scramble, galaxian_state, scramble, ROT90, "bootleg (Karateko)", "Scramble (Karateko, 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 Karateko 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 diff --git a/src/mame/includes/galaxian.h b/src/mame/includes/galaxian.h index ac1e84a7b33..ad276a93f5d 100644 --- a/src/mame/includes/galaxian.h +++ b/src/mame/includes/galaxian.h @@ -239,7 +239,6 @@ public: DECLARE_DRIVER_INIT(thepitm); DECLARE_DRIVER_INIT(theend); DECLARE_DRIVER_INIT(scramble); - DECLARE_DRIVER_INIT(explorer); DECLARE_DRIVER_INIT(sfx); DECLARE_DRIVER_INIT(atlantis); DECLARE_DRIVER_INIT(scobra); |