From 9a6095696ca1aa0659ae21ec5af5547ca6ab9141 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Tue, 17 Oct 2023 21:47:01 +0200 Subject: New working clones ------------------ Geo Storm (Japan, 026 custom sound CPU) [playero] - dynax/royalmah.cpp: minor comments update --- src/mame/dynax/royalmah.cpp | 14 +++++++------- src/mame/irem/m92.cpp | 44 +++++++++++++++++++++++++++++++++++++++++++- src/mame/irem/m92.h | 1 + src/mame/mame.lst | 1 + 4 files changed, 52 insertions(+), 8 deletions(-) diff --git a/src/mame/dynax/royalmah.cpp b/src/mame/dynax/royalmah.cpp index 1cbe5a4703b..efb7f92c1ad 100644 --- a/src/mame/dynax/royalmah.cpp +++ b/src/mame/dynax/royalmah.cpp @@ -1462,7 +1462,7 @@ void royalmah_prgbank_state::cafepara_map(address_map &map) map(0x7ff0, 0x7ff0).w(FUNC(royalmah_prgbank_state::janptr96_coin_counter_w)); map(0x7ff1, 0x7ff1).portr("SYSTEM").nopw(); map(0x7ff3, 0x7ff3).w(FUNC(royalmah_prgbank_state::input_port_select_w)); - map(0x7ff4, 0x7ff4).lw8(NAME([this] (uint8_t data) { m_mainbank->set_entry(data); logerror("mainbank_w: %02x\n", data); })); + map(0x7ff4, 0x7ff4).lw8(NAME([this] (uint8_t data) { m_mainbank->set_entry(data); if (data >= 0x10) logerror("mainbank_w: %02x\n", data); })); map(0x7ff5, 0x7ff5).lw8(NAME([this] (uint8_t data) { logerror("0x7ff5 write: %02x\n", data); })); // bit 1 seems coin counter but it's actually at 0x7ff0 map(0x7ff6, 0x7ff6).w(FUNC(royalmah_prgbank_state::mjderngr_palbank_w)); map(0x7ff7, 0x7ff7).w(FUNC(royalmah_prgbank_state::cafetime_7fe3_w)); @@ -4144,16 +4144,16 @@ void royalmah_prgbank_state::cafepara(machine_config &config) tmp.set_addrmap(AS_PROGRAM, &royalmah_prgbank_state::cafepara_map); tmp.port_read<3>().set([this] () { logerror("%s: p3 in\n", machine().describe_context()); return uint8_t(0); }); // read sometimes tmp.port_read<4>().set([this] () { logerror("%s: p4 in\n", machine().describe_context()); return uint8_t(0); }); // not seen yet - tmp.port_read<5>().set([this] () { logerror("%s: p5 in\n", machine().describe_context()); return uint8_t(0); }); // dips - tmp.port_read<6>().set([this] () { logerror("%s: p6 in\n", machine().describe_context()); return uint8_t(0); }); // dips + tmp.port_read<5>().set([this] () { logerror("%s: p5 in\n", machine().describe_context()); return uint8_t(0); }); // dips 5-8 for each of the 4 dip banks + dips 9-10 for first and second bank + tmp.port_read<6>().set([this] () { logerror("%s: p6 in\n", machine().describe_context()); return uint8_t(0); }); // dips 1-4 for each of the 4 dip banks + dips 9-10 for third and fourth bank tmp.port_read<7>().set([this] () { logerror("%s: p7 in\n", machine().describe_context()); return uint8_t(0); }); // not seen yet tmp.port_read<8>().set([this] () { logerror("%s: p8 in\n", machine().describe_context()); return uint8_t(0); }); tmp.port_write<3>().set([this] (uint8_t data) { logerror("%s: p3 out %02X\n", machine().describe_context(), data); }); // 0x6c at startup, remnant of older games? tmp.port_write<4>().set([this] (uint8_t data) { logerror("%s: p4 out %02X\n", machine().describe_context(), data); }); // 0x00 at startup tmp.port_write<5>().set([this] (uint8_t data) { logerror("%s: p5 out %02X\n", machine().describe_context(), data); }); // not seen yet tmp.port_write<6>().set([this] (uint8_t data) { logerror("%s: p6 out %02X\n", machine().describe_context(), data); }); // not seen yet - tmp.port_write<7>().set([this] (uint8_t data) { logerror("%s: p7 out %02X\n", machine().describe_context(), data); }); // seen 0x07, 0x0b, 0x0d, 0x0f. ??? - tmp.port_write<8>().set([this] (uint8_t data) { logerror("%s: p8 out %02X\n", machine().describe_context(), data); }); // 0x00 or 0x08, most probably view + tmp.port_write<7>().set([this] (uint8_t data) { logerror("%s: p7 out %02X\n", machine().describe_context(), data); }); // seen 0x07, 0x0b, 0x0d, 0x0f. DSW select + tmp.port_write<8>().set([this] (uint8_t data) { logerror("%s: p8 out %02X\n", machine().describe_context(), data); }); // 0x00 or 0x08, most probably view but could also have to do with DSW select } void royalmah_prgbank_state::mjvegasa(machine_config &config) @@ -5145,7 +5145,7 @@ ROM_END /*************************************************************************** -Mahjong Shinkirou Deja Vu (+ some ROMs from Jan Oh (Toapan) !?) +Mahjong Shinkirou Deja Vu (+ some ROMs from Jan Oh (Toaplan) !?) This game runs on Royal Mahjong hardware. @@ -5990,4 +5990,4 @@ GAME( 1996, janptr96, 0, janptr96, janptr96, royalmah_prgbank_state, ini GAME( 1997, janptrsp, 0, janptr96, janptr96, royalmah_prgbank_state, init_janptr96, ROT0, "Dynax", "Janputer Special (Japan)", 0 ) GAME( 1997, pongboo2, 0, pongboo2, ichiban, royalmah_prgbank_state, init_pongboo2, ROT0, "OCT", "Pong Boo! 2 (Ver. 1.31)", MACHINE_NOT_WORKING | MACHINE_WRONG_COLORS ) // banking, palette, inputs GAME( 1999, cafebrk, 0, mjifb, mjifb, royalmah_prgbank_state, init_mjifb, ROT0, "Nakanihon / Dynax", "Mahjong Cafe Break", MACHINE_NOT_WORKING ) // missing internal ROM dump -GAME( 1999, cafepara, 0, cafepara, cafetime, royalmah_prgbank_state, init_mjtensin, ROT0, "Techno-Top", "Mahjong Cafe Paradise (Ver. 1.00)", MACHINE_NOT_WORKING ) // needs correct memory map and CPU ports +GAME( 1999, cafepara, 0, cafepara, cafetime, royalmah_prgbank_state, init_mjtensin, ROT0, "Techno-Top", "Mahjong Cafe Paradise (Ver. 1.00)", MACHINE_NOT_WORKING ) // needs correct banking and / or ROM descrambling diff --git a/src/mame/irem/m92.cpp b/src/mame/irem/m92.cpp index 0aaa6a74a0f..c60caf86993 100644 --- a/src/mame/irem/m92.cpp +++ b/src/mame/irem/m92.cpp @@ -1099,6 +1099,12 @@ void m92_state::gunforc2(machine_config &config) m_soundcpu->set_decryption_table(lethalth_decryption_table); } +void m92_state::geostorma(machine_config &config) +{ + gunforc2(config); + m_soundcpu->set_decryption_table(dsoccr94_decryption_table); +} + /***************************************************************************/ ROM_START( bmaster ) // M92-B-B 05C04171B1 ROM board @@ -2504,6 +2510,41 @@ ROM_START( geostorm ) // M92-B-G 05C04171G1 ROM board ROM_LOAD( "m92_b-7j-a.ic41", 0x0a00, 0x0117, CRC(09f57872) SHA1(19c3e0f3ae106e75dba3450745edd4bb9afdd923) ) // PAL16L8 - bruteforced ROM_END +ROM_START( geostorma ) // same as above, but uses a different custom sound CPU and thus different sound CPU ROMs + ROM_REGION( 0x100000, "maincpu", 0 ) // white labels + ROM_LOAD16_BYTE("ic37", 0x000001, 0x040000, CRC(9be58d09) SHA1(ab98b91abc8129c342c59674eab9683cccc6ca35) ) + ROM_LOAD16_BYTE("ic49", 0x000000, 0x040000, CRC(59abb75d) SHA1(52b48685470ffa3f36a8259bf333448bf40caea9) ) + ROM_LOAD16_BYTE("ic36", 0x080001, 0x040000, CRC(34280b88) SHA1(3fd3cdf8acfa845abacb0708fb48741ee44dbf13) ) + ROM_LOAD16_BYTE("ic48", 0x080000, 0x040000, CRC(c8c13f51) SHA1(fde3fd983ebb920f79e6898aa0576da9dd9f0c15) ) + + ROM_REGION( 0x20000, "soundcpu", 0 ) // white labels + ROM_LOAD16_BYTE("ic24", 0x00001, 0x10000, CRC(62a13a96) SHA1(48dc41173ab8a78a28a194132d68b2971bd7a9f6) ) + ROM_LOAD16_BYTE("ic31", 0x00000, 0x10000, CRC(16b8b6b5) SHA1(c312dd6d86f69cf751579defc5bc2e661a7b20d4) ) + + ROM_REGION( 0x200000, "gfx1", 0 ) // Tiles + ROM_LOAD("a2_-c0-.ic1", 0x000000, 0x080000, CRC(68b8f574) SHA1(fb935947cdde43e84453f82caeea141a4ae7226d) ) + ROM_LOAD("a2_-c1-.ic2", 0x080000, 0x080000, CRC(0b9efe67) SHA1(1df4108d30d2538f6407e328513517cd3412321f) ) + ROM_LOAD("a2_-c2-.ic16", 0x100000, 0x080000, CRC(7a9e9978) SHA1(241dc310e75960e306701a2e86e30d9c1a60ebff) ) + ROM_LOAD("a2_-c3-.ic17", 0x180000, 0x080000, CRC(1395ee6d) SHA1(e9befc966e6ee046eaca185a9969976304a119d8) ) + + ROM_REGION( 0x400000, "gfx2", 0 ) // Sprites + ROM_LOAD( "a2_-000-.ic44", 0x000000, 0x100000, CRC(38e03147) SHA1(cc5bacad9592aa5e91632b139955e1c704a67a33) ) + ROM_LOAD( "a2_-010-.ic45", 0x100000, 0x100000, CRC(1d5b05f8) SHA1(884f134ed51b432965a4e5e79915ba9c0ab562c6) ) + ROM_LOAD( "a2_-020-.ic46", 0x200000, 0x100000, CRC(f2f461cc) SHA1(04e91efc749d022c8012caac493767ec1f6a992d) ) + ROM_LOAD( "a2_-030-.ic47", 0x300000, 0x100000, CRC(97609d9d) SHA1(71ddff85a8ddeac69863bbf6c493c5c3973fd175) ) + + ROM_REGION( 0x100000, "irem", 0 ) // Samples + ROM_LOAD("a2_-da-.ic10", 0x000000, 0x100000, CRC(3c8cdb6a) SHA1(d1f4186e8ddf99698443f8ee1c60a6e6bc367b09) ) + + ROM_REGION( 0x0c00, "plds", 0 ) + ROM_LOAD( "m92_a-3m-.ic11", 0x0000, 0x0117, CRC(fc718efe) SHA1(d554dd74cecd95754a1e6e24c6a207d6d3428253) ) // PAL16L8 - bruteforced + ROM_LOAD( "m92_a-7j-.ic41", 0x0200, 0x0117, CRC(5730b25a) SHA1(1877b807f6a94f6d515afc940e1d615a453490fd) ) // PAL16L8 - bruteforced + ROM_LOAD( "m92_a-9j-.ic51", 0x0400, 0x0117, CRC(92d477cf) SHA1(6a1e9bfdb367384e8611f46300f378730817514b) ) // PAL16L8 - bruteforced + ROM_LOAD( "m92_b-3f-.ic14", 0x0600, 0x0117, CRC(52ecf083) SHA1(1a1819e572f7fdd5aab2caeca8741441ffbea01d) ) // PAL16L8 - bruteforced + ROM_LOAD( "m92_b-4f-.ic21", 0x0800, 0x0117, CRC(5e87fd01) SHA1(f076dea6bc94f5aa01121f8c70a39d8e5ee805e8) ) // PAL16L8 - bruteforced + ROM_LOAD( "m92_b-7j-a.ic41", 0x0a00, 0x0117, CRC(09f57872) SHA1(19c3e0f3ae106e75dba3450745edd4bb9afdd923) ) // PAL16L8 - bruteforced +ROM_END + /***************************************************************************/ /* has bankswitching */ @@ -2576,4 +2617,5 @@ GAME( 1993, psoldier, ssoldier, psoldier, psoldier, m92_state, empty_in GAME( 1994, dsoccr94j, dsoccr94, dsoccr94j, dsoccr94j, m92_state, init_bank, ROT0, "Irem", "Dream Soccer '94 (Japan, M92 hardware)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) GAME( 1994, gunforc2, 0, gunforc2, gunforc2, m92_state, init_bank, ROT0, "Irem", "Gun Force II (US)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) -GAME( 1994, geostorm, gunforc2, gunforc2, gunforc2, m92_state, init_bank, ROT0, "Irem", "Geo Storm (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) +GAME( 1994, geostorm, gunforc2, gunforc2, gunforc2, m92_state, init_bank, ROT0, "Irem", "Geo Storm (Japan, 014 custom sound CPU)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) +GAME( 1994, geostorma, gunforc2, geostorma, gunforc2, m92_state, init_bank, ROT0, "Irem", "Geo Storm (Japan, 026 custom sound CPU)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) diff --git a/src/mame/irem/m92.h b/src/mame/irem/m92.h index 7dae130cca8..b3bf9ddc5e7 100644 --- a/src/mame/irem/m92.h +++ b/src/mame/irem/m92.h @@ -55,6 +55,7 @@ public: void psoldier(machine_config &config); void rtypeleo(machine_config &config); void gunforc2(machine_config &config); + void geostorma(machine_config &config); void nbbatman2bl(machine_config &config); void bmaster(machine_config &config); void nbbatman(machine_config &config); diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 6dc66627159..e5dc790f625 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -21051,6 +21051,7 @@ bmaster // (c) 1991 Irem (World) crossbld // (c) 1991 Irem (Japan) dsoccr94j // (c) 1994 Irem (Japan) geostorm // (c) 1994 Irem (Japan) +geostorma // (c) 1994 Irem (Japan) gunforc2 // (c) 1994 Irem (World) gunforce // (c) 1991 Irem (World) gunforcej // (c) 1991 Irem (Japan) -- cgit v1.2.3