diff options
Diffstat (limited to 'src/mame/drivers/galaxian.cpp')
-rw-r--r-- | src/mame/drivers/galaxian.cpp | 142 |
1 files changed, 141 insertions, 1 deletions
diff --git a/src/mame/drivers/galaxian.cpp b/src/mame/drivers/galaxian.cpp index 91d4858c7bc..1b2ac4d3d01 100644 --- a/src/mame/drivers/galaxian.cpp +++ b/src/mame/drivers/galaxian.cpp @@ -1,5 +1,5 @@ // license:BSD-3-Clause -// copyright-holders:Aaron Giles, Couriersud,Stephane Humbert +// copyright-holders:Aaron Giles, Couriersud,Stephane Humbert, Robbbert /*************************************************************************** Galaxian-derived hardware @@ -12719,3 +12719,143 @@ GAME( 1982, losttombh, losttomb, scobra, losttomb, galaxian_state, init_ GAME( 1984, spdcoin, 0, scobra, spdcoin, galaxian_state, init_scobra, ROT90, "Stern Electronics", "Speed Coin (prototype)", MACHINE_SUPPORTS_SAVE ) GAME( 1985, superbon, 0, scobra, superbon, galaxian_state, init_superbon, ROT90, "Signatron USA", "Agent Super Bond (Super Cobra conversion)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) + + + +/************************************* + * + * Four Play + * + *************************************/ + +void galaxian_state::fourplay_map(address_map &map) { + map(0x0000,0x3fff).bankr("bank1"); + map(0x4000,0x47ff).ram(); + map(0x5000,0x53ff).mirror(0x0400).ram().w(FUNC(galaxian_state::galaxian_videoram_w)).share("videoram"); + map(0x5800,0x58ff).mirror(0x0700).ram().w(FUNC(galaxian_state::galaxian_objram_w)).share("spriteram"); + map(0x6000,0x6000).portr("IN0"); + map(0x6800,0x6800).portr("IN1"); + map(0x7000,0x7000).portr("IN2"); + map(0x7800,0x7fff).r("watchdog",FUNC(watchdog_timer_device::reset_r)); + map(0x6000,0x6001).w(FUNC(galaxian_state::start_lamp_w)); + map(0x6002,0x6002).nopw(); // AM_WRITE(coin_lock_w) + map(0x6003,0x6003).w(FUNC(galaxian_state::coin_count_0_w)); + map(0x6004,0x6007).w("cust",FUNC(galaxian_sound_device::lfo_freq_w)); + map(0x6800,0x6807).w("cust",FUNC(galaxian_sound_device::sound_w)); + map(0x7001,0x7001).w(FUNC(galaxian_state::irq_enable_w)); + map(0x7002,0x7003).w(FUNC(galaxian_state::fourplay_rombank_w)); + map(0x7004,0x7004).w(FUNC(galaxian_state::galaxian_stars_enable_w)); + map(0x7005,0x7005).nopw(); /* bit 3 of rombank select - always 0 */ + map(0x7006,0x7006).w(FUNC(galaxian_state::galaxian_flip_screen_x_w)); + map(0x7007,0x7007).w(FUNC(galaxian_state::galaxian_flip_screen_y_w)); + map(0x7008,0x7008).nopw(); /* bit 4 of rombank select - always 0 */ + map(0x7800,0x7800).w("cust",FUNC(galaxian_sound_device::pitch_w)); +} + +MACHINE_CONFIG_START( galaxian_state::fourplay ) + galaxian(config); + /* info can be found at http://www.ionpool.net/arcade/galaxian_hacks/fourplay.htm */ + /* basic machine hardware */ + MCFG_DEVICE_MODIFY("maincpu") + MCFG_DEVICE_PROGRAM_MAP(fourplay_map) + + /* video hardware */ + MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_gmgalax) + MCFG_PALETTE_MODIFY("palette") + MCFG_PALETTE_ENTRIES(64) +MACHINE_CONFIG_END + +void galaxian_state::init_fourplay() +{ + membank("bank1")->configure_entries(0, 4, memregion("maincpu")->base() + 0x10000, 0x4000); + membank("bank1")->set_entry(0); + + /* video extensions */ + common_init(NULL, NULL, &galaxian_state::pisces_extend_tile_info, &galaxian_state::pisces_extend_sprite_info); +} + +ROM_START( fourplay ) + ROM_REGION( 0x20000, "maincpu", 0 ) + ROM_LOAD( "fourplay.bin", 0x10000, 0x10000, CRC(b42b2c2c) SHA1(f3b6f136b39e7a6adadecb9acf906fcfe649f398) ) + + ROM_REGION( 0x2000, "gfx1", 0 ) + ROM_LOAD( "graph1.bin", 0x0000, 0x1000, CRC(359c0c1f) SHA1(9e39baae4ab5763db236d0a49a6665d2e69cba11) ) + ROM_LOAD( "graph2.bin", 0x1000, 0x1000, CRC(b22a51c9) SHA1(cccfbab0c92dba81e3451de72d1f1899226e30e2) ) + + ROM_REGION( 0x0020, "proms", 0 ) + ROM_LOAD( "6l.bpr", 0x0000, 0x0020, CRC(c3ac9467) SHA1(f382ad5a34d282056c78a5ec00c30ec43772bae2) ) +ROM_END + +GAME( 2002, fourplay, 0, fourplay, galaxian, galaxian_state, init_fourplay, ROT90, "Macro", "Four Play", MACHINE_SUPPORTS_SAVE ) + + + +/************************************* + * + * Video Eight + * + *************************************/ + + void galaxian_state::videight_map(address_map &map) { + map(0x0000,0x3fff).bankr("bank1"); + map(0x4000,0x47ff).ram(); + map(0x5000,0x53ff).mirror(0x400).ram().w(FUNC(galaxian_state::galaxian_videoram_w)).share("videoram"); + map(0x5800,0x58ff).mirror(0x700).ram().w(FUNC(galaxian_state::galaxian_objram_w)).share("spriteram"); + map(0x6000,0x6000).portr("IN0"); + map(0x6800,0x6800).portr("IN1"); + map(0x7000,0x7000).portr("IN2"); + map(0x7800,0x7fff).r("watchdog",FUNC(watchdog_timer_device::reset_r)); + map(0x6000,0x6002).w(FUNC(galaxian_state::videight_gfxbank_w)); + map(0x6003,0x6003).w(FUNC(galaxian_state::coin_count_0_w)); + map(0x6004,0x6007).w("cust",FUNC(galaxian_sound_device::lfo_freq_w)); + map(0x6800,0x6807).w("cust",FUNC(galaxian_sound_device::sound_w)); + map(0x6808,0x68ff).nopw(); + map(0x7001,0x7001).w(FUNC(galaxian_state::irq_enable_w)); + map(0x7002,0x7005).w(FUNC(galaxian_state::videight_rombank_w)); + map(0x7006,0x7006).w(FUNC(galaxian_state::galaxian_flip_screen_x_w)); + map(0x7007,0x7007).w(FUNC(galaxian_state::galaxian_flip_screen_y_w)); + map(0x7008,0x7008).nopw(); /* bit 4 of rombank select - always 0 */ + map(0x7800,0x7800).w("cust",FUNC(galaxian_sound_device::pitch_w)); +} + +static GFXDECODE_START( gfx_videight ) + GFXDECODE_SCALE( "gfx1", 0x0000, galaxian_charlayout, 0, 8*32, GALAXIAN_XSCALE,1) + GFXDECODE_SCALE( "gfx1", 0x0000, galaxian_spritelayout, 0, 8*32, GALAXIAN_XSCALE,1) +GFXDECODE_END + +MACHINE_CONFIG_START( galaxian_state::videight ) + galaxian(config); + + /* basic machine hardware */ + MCFG_DEVICE_MODIFY("maincpu") + MCFG_DEVICE_PROGRAM_MAP(videight_map) + + /* video hardware */ + MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_videight) + MCFG_PALETTE_MODIFY("palette") + MCFG_PALETTE_ENTRIES(8*32) +MACHINE_CONFIG_END + +void galaxian_state::init_videight() +{ + membank("bank1")->configure_entries(0, 8, memregion("maincpu")->base() + 0x10000, 0x4000); + membank("bank1")->set_entry(0); + + /* video extensions */ + common_init(NULL, NULL, &galaxian_state::videight_extend_tile_info, &galaxian_state::videight_extend_sprite_info); +} + +ROM_START( videight ) + ROM_REGION( 0x30000, "maincpu", 0 ) + ROM_LOAD( "videight.bin", 0x10000, 0x20000, CRC(0601db09) SHA1(0c9cd1afb0034946261219bf42b2f9b1ed5bdb17) ) + + ROM_REGION( 0x10000, "gfx1", 0 ) + ROM_LOAD( "v8g1.bin", 0x0000, 0x8000, CRC(af771e33) SHA1(cdc960c5f548e19da4eabdaf8b789ca8ffb6a29f) ) + ROM_LOAD( "v8g2.bin", 0x8000, 0x8000, CRC(776c34e6) SHA1(de70a29f73469a58ab15acb95aaad1efeb4de08d) ) + + ROM_REGION( 0x0100, "proms", 0 ) + ROM_LOAD( "v8c.bin", 0x0000, 0x0100, CRC(b35a6ca8) SHA1(d9195215bf2482a1b02a019bb708a9981eb0bdf8) ) +ROM_END + +GAME( 2001, videight, 0, videight, warofbug, galaxian_state, init_videight, ROT90, "Macro", "Video Eight", MACHINE_SUPPORTS_SAVE ) + |