From aa3f5d587558f32bdf86340539c4412790b7bc5c Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Fri, 15 Oct 2021 19:03:08 +0200 Subject: [PATCH] New working clones ------------------ Guttang Gottong (Sede 3 bootleg on Galaxian type hardware) [Retromaniacs] --- src/mame/drivers/galaxian.cpp | 74 +++++++++++++++++++++++++++++++++++ src/mame/includes/galaxian.h | 5 ++- src/mame/mame.lst | 1 + 3 files changed, 79 insertions(+), 1 deletion(-) diff --git a/src/mame/drivers/galaxian.cpp b/src/mame/drivers/galaxian.cpp index 6e7d0009ad6..cb7e1c51dd3 100644 --- a/src/mame/drivers/galaxian.cpp +++ b/src/mame/drivers/galaxian.cpp @@ -2662,6 +2662,25 @@ void guttangt_state::guttangt_map(address_map &map) map(0x7800, 0x7800).r("watchdog", FUNC(watchdog_timer_device::reset_r)); } +// map not derived from schematics +void guttangt_state::guttangts3_map(address_map &map) +{ + galaxian_map_discrete(map); + + map(0x0000, 0x3fff).rom().nopw(); + map(0x4000, 0x47ff).ram(); + map(0x5000, 0x53ff).ram().w(FUNC(galaxian_state::galaxian_videoram_w)).share("videoram"); + map(0x5800, 0x58ff).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(0x7001, 0x7001).w(FUNC(galaxian_state::irq_enable_w)); + map(0x7006, 0x7006).w(FUNC(galaxian_state::galaxian_flip_screen_x_w)); // always set to 0? + map(0x7007, 0x7007).w(FUNC(galaxian_state::galaxian_flip_screen_y_w)); // always set to 0? + map(0x7800, 0x7800).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0x8000, 0x87ff).rom().region("maincpu", 0x4000); +} + /************************************* * * Sound CPU memory maps @@ -7498,6 +7517,12 @@ void guttangt_state::guttangt(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &guttangt_state::guttangt_map); } +void guttangt_state::guttangts3(machine_config &config) +{ + galaxian(config); + m_maincpu->set_addrmap(AS_PROGRAM, &guttangt_state::guttangts3_map); +} + void galaxian_state::jumpbug(machine_config &config) @@ -8455,6 +8480,19 @@ void guttangt_state::init_guttangt() m_rombank->set_entry(0); } +void guttangt_state::init_guttangts3() +{ + common_init(&galaxian_state::galaxian_draw_bullet, &galaxian_state::galaxian_draw_background, nullptr, &galaxian_state::guttangt_extend_sprite_info); + + uint8_t *romdata = memregion("maincpu")->base(); + uint8_t buf[0x4800]; + memcpy(buf, romdata, 0x4800); + + // descramble the content of each 0x100 block + for (int i = 0; i < 0x4800; i++) + romdata[i] = buf[i ^ 0xff]; +} + /************************************* * * Moon Cresta-derived games @@ -15017,6 +15055,41 @@ ROM_START( guttangt ) ROM_END +// by Sede 3 +ROM_START( guttangts3 ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "3g-2716.bin", 0x0000, 0x0200, CRC(0bf9dea8) SHA1(fc2e7870b2459c6c448f90642d6ca13b2dcdbb11) ) + ROM_CONTINUE( 0x2200, 0x0600) + ROM_LOAD( "3h-trg6-2716.bin", 0x0800, 0x0200, CRC(6b649460) SHA1(dad706dff1e1d7c530ffc320b8ee1bf91823de2a) ) + ROM_CONTINUE( 0x2a00, 0x0600) + ROM_LOAD( "5h-2516.bin", 0x1000, 0x0200, CRC(716fe0e8) SHA1(35d02d27768782f80956097af8ee691460445828) ) + ROM_CONTINUE( 0x3200, 0x0600) + ROM_LOAD( "6h-trg8-2716.bin", 0x1800, 0x0200, CRC(f65edad1) SHA1(ac09ca51babf3fd06f4c81bc67de103418ecc489) ) + ROM_CONTINUE( 0x3a00, 0x0600) + ROM_LOAD( "8g-trg9-2716.bin", 0x2000, 0x0200, CRC(1ee689b8) SHA1(53072f9274574dd4f42cfce4755a9cd281970606) ) + ROM_CONTINUE( 0x0200, 0x0600) + ROM_LOAD( "7g-2716.bin", 0x2800, 0x0200, CRC(aa62ba8c) SHA1(43f10497a75c46a63c9b6145caf860d4cdfe9f47) ) + ROM_CONTINUE( 0x0a00, 0x0600) + ROM_LOAD( "6g-2516.bin", 0x3000, 0x0200, CRC(6f053e71) SHA1(a77fffb55d1fbdb5e6da76d9bbb59d3ce70a4f62) ) + ROM_CONTINUE( 0x1200, 0x0600) + ROM_LOAD( "5g-2516.bin", 0x3800, 0x0200, CRC(1f9dd8fb) SHA1(d48dc76e059235c417ccf58b2e1a8d8d94236f80) ) + ROM_CONTINUE( 0x1a00, 0x0600) + ROM_LOAD( "7h-2716.bin", 0x4000, 0x0800, CRC(d18b8e78) SHA1(7dd1c5ec025b755a0396cf5412e98fbae3f5a8a0) ) + + ROM_REGION( 0x2000, "gfx1", 0 ) + ROM_LOAD( "9a-tr1-2732.bin", 0x0000, 0x1000, CRC(2003b2b2) SHA1(6b232424ad4d696b398d1ffa03c6cb82a4d09533) ) + ROM_LOAD( "7a-2732.bin", 0x1000, 0x1000, CRC(790e09d3) SHA1(74f8c2bb1cdc0be5c1590255223327c8e43ff2c8) ) + + ROM_REGION( 0x20, "proms", 0 ) + ROM_LOAD( "7f-6331-1.bin", 0x00, 0x20, CRC(4e3caeab) SHA1(a25083c3e36d28afdefe4af6e6d4f3155e303625) ) + + ROM_REGION( 0x100, "extra_prom", 0 ) // decryption related? + ROM_LOAD( "9g-tbp28l22.bin", 0x000, 0x100, CRC(1093293a) SHA1(71f436c9e670cdc8de03363d118d1d83e4b7048f) ) + + ROM_REGION( 0x200, "plds", 0 ) + ROM_LOAD( "pal16l8cn", 0x000, 0x104, NO_DUMP ) +ROM_END + /************************************* * * Game drivers @@ -15084,6 +15157,7 @@ GAME( 1982, catacomb, 0, galaxian, catacomb, galaxian_state, init_ GAME( 19??, omegab, theend, galaxian, omegab, galaxian_state, init_galaxian, ROT270, "bootleg?", "Omega (bootleg?)", MACHINE_SUPPORTS_SAVE ) GAME( 1982, highroll, 0, highroll, highroll, galaxian_state, init_highroll, ROT90, "bootleg?", "High Roller", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // auto starts game after inserting coin, bad cards GFX, bad inputs response, not all inputs are mapped GAME( 1982, guttangt, locomotn, guttangt, guttangt, guttangt_state, init_guttangt, ROT90, "bootleg (Recreativos Franco?)", "Guttang Gottong (bootleg on Galaxian type hardware)", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE ) // or by 'Tren' ? +GAME( 1982, guttangts3, locomotn, guttangts3, guttangt, guttangt_state, init_guttangts3, ROT90, "bootleg (Sede 3)", "Guttang Gottong (Sede 3 bootleg on Galaxian type hardware)", MACHINE_SUPPORTS_SAVE ) // still has Konami copyright on screen // Basic hardware + extra RAM GAME( 1982, victoryc, 0, victoryc, victoryc, galaxian_state, init_victoryc, ROT270, "Comsoft", "Victory (Comsoft)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/includes/galaxian.h b/src/mame/includes/galaxian.h index d148d50e8b4..081921da51c 100644 --- a/src/mame/includes/galaxian.h +++ b/src/mame/includes/galaxian.h @@ -727,13 +727,16 @@ public: } void guttangt(machine_config &config); + void guttangts3(machine_config &config); void init_guttangt(); + void init_guttangts3(); private: void guttangt_map(address_map &map); + void guttangts3_map(address_map &map); void guttangt_rombank_w(uint8_t data); - required_memory_bank m_rombank; + optional_memory_bank m_rombank; }; diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 2764309688f..190ab6ba418 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -14513,6 +14513,7 @@ gteikokub // bootleg gteikokub2 // bootleg gteikokub3 // bootleg (Honly Enterprises) guttangt // +guttangts3 // highroll // jumpbug // (c) 1981 Rock-ola jumpbugb // (c) 1981 Sega