From b65ac64136a1a11292f50a6f849778ecbaa5ff53 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Sat, 2 Dec 2023 21:02:43 +0100 Subject: New systems marked not working ------------------------------ Monkey Land (Ver. AA.21.A) [Ioannis Bampoulas] New clones marked not working ----------------------------- Monkey Land (Ver. AA.13.B) [Ioannis Bampoulas] --- src/mame/mame.lst | 2 + src/mame/misc/astrcorp.cpp | 186 ++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 171 insertions(+), 17 deletions(-) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 9d7b256e5c7..03e52d9194c 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -28517,6 +28517,8 @@ magibombg // (c) 2004 Astro Corp. magibombh // (c) 2001? Astro Corp. magibombi // (c) 2001? Astro Corp. magibombj // (c) 2005 Astro Corp. +monkeyl // (c) 2005 Astro Corp. +monkeyla // (c) 2004 Astro Corp. showhanc // (c) 2000 Astro Corp. showhand // (c) 2000 Astro Corp. skilldrp // (c) 2002 Astro Corp. diff --git a/src/mame/misc/astrcorp.cpp b/src/mame/misc/astrcorp.cpp index 221c660b27b..11ebd264e61 100644 --- a/src/mame/misc/astrcorp.cpp +++ b/src/mame/misc/astrcorp.cpp @@ -15,23 +15,25 @@ OTHER: EEPROM, Battery 512 sprites, each made of N x M tiles. Tiles are 16x16x8 (16x32x8 in Stone Age) --------------------------------------------------------------------------------------------------------------------------------------------------------------------- -Year + Game PCB ID CPU Video Chips Notes +Year + Game PCB ID CPU Video Chips Notes --------------------------------------------------------------------------------------------------------------------------------------------------------------------- -00 Show Hand CHE-B50-4002A MC68HC000FN12 ASTRO V01 pLSI1016-60LJ, ASTRO 0001B MCU? (28 pins) -00 Wangpai Duijue CHE-B50-4002A MC68HC000FN12 ASTRO V01 pLSI1016, MDT2020AP MCU (28 pins) -01 Magic Bomb (NB4.5) None ASTRO V03 ASTRO V02 pLSI1016 Encrypted -02 Skill Drop GA None JX-1689F1028N ASTRO V02 pLSI1016-60LJ -02? Keno 21 ? ASTRO V102? ASTRO V05 ASTRO F02? not dumped -03 Speed Drop None JX-1689HP ASTRO V05 pLSI1016-60LJ -04 Zoo M1.1 ASTRO V102PX-005? ASTRO V06 ASTRO F02 2005-02-18 Encrypted -04 Magic Bomb (NB6.1) J (CS350P001 + CS350P033) ASTRO V102PX-014? ASTRO V07 ?, Encrypted, select CGA / VGA via jumper -04 Go & Stop K2 (CS350P011) no markings ASTRO V05 ASTRO F01 2007-06-03 Encrypted -04 Magic Bomb (AA.72C) M1.1 ASTRO V102PX-014? ASTRO V05 ASTRO F02 2005-02-18 Encrypted -05 Dino Dino T-3802A ASTRO V102PX-010? ASTRO V05 ASTRO F02 2003-03-12 Encrypted -05 Stone Age L1 ASTRO V102PX-012? ASTRO V05(x2) ASTRO F02 2004-09-04 Encrypted -05? Hacher (hack) M1.2 ? ? ASTRO F02 2005-02-18 Encrypted -06 Win Win Bingo M1.2 ASTRO V102PX-006? ASTRO V06 ASTRO F02 2005-09-17 Encrypted -07? Western Venture O (CS350P032) ASTRO V102? ASTRO V07 ASTRO F01 2007-06-03 Encrypted +00 Show Hand CHE-B50-4002A MC68HC000FN12 ASTRO V01 pLSI1016-60LJ, ASTRO 0001B MCU? (28 pins) +00 Wangpai Duijue CHE-B50-4002A MC68HC000FN12 ASTRO V01 pLSI1016, MDT2020AP MCU (28 pins) +01 Magic Bomb (NB4.5) None ASTRO V03 ASTRO V02 pLSI1016 Encrypted +02 Skill Drop GA None JX-1689F1028N ASTRO V02 pLSI1016-60LJ +02? Keno 21 ? ASTRO V102? ASTRO V05 ASTRO F02? not dumped +03 Speed Drop None JX-1689HP ASTRO V05 pLSI1016-60LJ +04 Zoo M1.1 ASTRO V102PX-005? ASTRO V06 ASTRO F02 2005-02-18 Encrypted +04 Magic Bomb (NB6.1) J (CS350P001 + CS350P033) ASTRO V102PX-014? ASTRO V07 ?, Encrypted, select CGA / VGA via jumper +04 Go & Stop K2 (CS350P011) no markings ASTRO V05 ASTRO F01 2007-06-03 Encrypted +04 Magic Bomb (AA.72C) M1.1 ASTRO V102PX-014? ASTRO V05 ASTRO F02 2005-02-18 Encrypted +05 Monkey Land (AA.13B) M1 ASTRO V102PX-005? ASTRO V06 ASTRO F02 2004-05-18 Encrypted +05 Monkey Land (AA.21A) M1.1 ASTRO V102PX-005? ASTRO V06 ASTRO F02 2004-12-04 Encrypted +05 Dino Dino T-3802A ASTRO V102PX-010? ASTRO V05 ASTRO F02 2003-03-12 Encrypted +05 Stone Age L1 ASTRO V102PX-012? ASTRO V05(x2) ASTRO F02 2004-09-04 Encrypted +05? Hacher (hack) M1.2 ? ? ASTRO F02 2005-02-18 Encrypted +06 Win Win Bingo M1.2 ASTRO V102PX-006? ASTRO V06 ASTRO F02 2005-09-17 Encrypted +07? Western Venture O (CS350P032) ASTRO V102? ASTRO V07 ASTRO F01 2007-06-03 Encrypted ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- - astoneag, magibomb, winbingo, etc.: to initialize EEPROM (and self test in some games), keep keyout (W) pressed during boot. @@ -59,6 +61,7 @@ TODO: - astoneag, dinodino, magibombd, magibombg: exiting from test menu goes haywire (requires a soft-reset with F3). - magibombg: needs RE of the CPU code and correct EEPROM. - gostopac: stops with 'S4' message during boot. Needs RE of the CPU code and emulation of its peculiarities. +- monkeyl,a: Needs RE of the CPU code, inputs and layout. After reset it initializes. *************************************************************************************************************/ @@ -285,6 +288,7 @@ public: void gostop(machine_config &config); void magibombd(machine_config &config); void magibombg(machine_config &config); + void monkeyl(machine_config &config); void winbingo(machine_config &config); void zoo(machine_config &config); @@ -293,6 +297,8 @@ public: void init_hacher(); void init_magibombd(); void init_magibombg(); + void init_monkeyl(); + void init_monkeyla(); void init_winbingo(); void init_winbingoa(); void init_zoo(); @@ -330,12 +336,14 @@ private: void hacher_map(address_map &map); void magibombd_map(address_map &map); void magibombg_map(address_map &map); + void monkeyl_map(address_map &map); void winbingo_map(address_map &map); void zoo_map(address_map &map); static const decryption_info dinodino_table; static const decryption_info gostop_table; static const decryption_info magibombd_table; + static const decryption_info monkeyl_table; static const decryption_info winbingo_table; static const decryption_info zoo_table; }; @@ -892,6 +900,22 @@ void zoo_state::gostop_map(address_map &map) // map(0xc00000, 0xc00001).nopr().w(FUNC(zoo_state::screen_enable_w)).umask16(0x00ff); // unknown location } +void zoo_state::monkeyl_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom().mirror(0x800000); // POST checks for ROM checksum at mirror + map(0xa00000, 0xa00fff).ram().share("spriteram"); + map(0xa02000, 0xa02001).nopr().w(FUNC(zoo_state::draw_sprites_w)); + map(0xa04000, 0xa04001).portr("INPUTS"); + map(0xa08001, 0xa08001).w(FUNC(zoo_state::eeprom_w)); + map(0xa0a000, 0xa0a001).w(FUNC(zoo_state::magibomb_outputs_w)); + map(0xa0e000, 0xa0e001).portr("EEPROM_IN"); + map(0xa80000, 0xa83fff).ram().share("nvram"); // battery + map(0xb80000, 0xb80001).portr("CPUCODE_IN"); + map(0xd00000, 0xd001ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xd80001, 0xd80001).w(FUNC(zoo_state::oki_bank_w)); + map(0xe80001, 0xe80001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} + void astoneag_state::astoneag_map(address_map &map) { map(0x000000, 0x03ffff).rom().mirror(0x800000); // POST checks for ROM checksum at mirror @@ -1315,6 +1339,12 @@ void zoo_state::gostop(machine_config &config) TIMER(config.replace(), "scantimer").configure_scanline(FUNC(zoo_state::irq_2_4_scanline_cb), "screen", 0, 1); } +void zoo_state::monkeyl(machine_config &config) +{ + winbingo(config); + m_maincpu->set_addrmap(AS_PROGRAM, &zoo_state::monkeyl_map); +} + void astoneag_state::ramdac_map(address_map &map) { map(0x000, 0x2ff).rw(m_ramdac, FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w)); @@ -1671,7 +1701,7 @@ ROM_START( magibombd ) ROM_LOAD( "magibombd_cpucode.key", 0x00, 0x02, CRC(ee980d67) SHA1(f3bdb8a14701ec01828f7c92f18e9bba4c56a4e0) ) ROM_END -ROM_START( magibombe ) +ROM_START( magibombe ) // no Bin Laden GFX, supports 8 and 16 min bet ROM_REGION( 0x20000, "maincpu", 0 ) ROM_LOAD16_BYTE( "rom1", 0x00000, 0x10000, CRC(d564fac4) SHA1(ac236a5760be6c4f518a8eb2af708f433e0fb899) ) ROM_LOAD16_BYTE( "rom2", 0x00001, 0x10000, CRC(ee212839) SHA1(e6175b27f3c510e98bc85e04be2fdde6e0289dfb) ) @@ -2203,6 +2233,62 @@ ROM_START( gostopac ) ROM_LOAD( "gostopac_cpucode.key", 0x00, 0x02, NO_DUMP ) ROM_END +/*************************************************************************** + +Monkey Land +Astro Corp. + +***************************************************************************/ + +ROM_START( monkeyl ) + ROM_REGION( 0x40000, "maincpu", 0 ) + ROM_LOAD16_BYTE( "1_m.l._aa.21.a.u26", 0x00000, 0x20000, CRC(2286237f) SHA1(cbf6589fe3eedd9482f8ba01c4510a5699085e69) ) // F29C51001T + ROM_LOAD16_BYTE( "1_m.l._aa.21.a.u25", 0x00001, 0x20000, CRC(0612f893) SHA1(6300d9defc75b1b09fad31f719c841c728fe3ff6) ) // F29C51001T + + ROM_REGION( 0x1000000, "sprites", 0 ) + ROM_LOAD( "mx29f1610mc.u26", 0x000000, 0x200000, CRC(dfa57e8f) SHA1(b24849825324695117ceea2d85412f06df96efcf) ) // the "U26" marking is present twice (should have been U31?) + ROM_LOAD( "mx29f1610mc.u30", 0x200000, 0x200000, CRC(9d26fa05) SHA1(571f5515411e504bf7661b8b5d358dc6c55e6fbe) ) + ROM_RELOAD( 0x400000, 0x200000 ) + ROM_RELOAD( 0x600000, 0x200000 ) + ROM_RELOAD( 0x800000, 0x200000 ) + ROM_RELOAD( 0xa00000, 0x200000 ) + ROM_RELOAD( 0xc00000, 0x200000 ) + ROM_RELOAD( 0xe00000, 0x200000 ) + + ROM_REGION( 0x80000, "oki", 0 ) + ROM_LOAD( "5_m.l._e1.0.u33", 0x00000, 0x80000, CRC(62122100) SHA1(519df7825ab62f0648192e6b1760dd9cc5ec7f9f) ) + + ROM_REGION16_LE( 0x80, "eeprom", 0 ) + ROM_LOAD( "93c46.u10", 0x0000, 0x0080, CRC(eab965cc) SHA1(258358c89faaf643b526d1014946e14567cba88d) ) + + ROM_REGION16_LE( 0x02, "astro_cpucode", 0 ) + ROM_LOAD( "monkeyl_cpucode.key", 0x00, 0x02, NO_DUMP ) +ROM_END + +ROM_START( monkeyla ) // MIN BET 1-XXX, % = LEVELS 1-8 + ROM_REGION( 0x40000, "maincpu", 0 ) + ROM_LOAD16_BYTE( "1_m.l._aa.13.b.u26", 0x00000, 0x20000, CRC(0ff56936) SHA1(70f9cf3b6b71514b2401b7a516ae85ad86b5321f) ) // F29C51001T + ROM_LOAD16_BYTE( "1_m.l._aa.13.b.u25", 0x00001, 0x20000, CRC(d261b6ed) SHA1(347feb51b67cd0e0faeff98fa023b3f4a8cb9c32) ) // F29C51001T + + ROM_REGION( 0x1000000, "sprites", 0 ) + ROM_LOAD( "mx29f1610mc.u26", 0x000000, 0x200000, CRC(dfa57e8f) SHA1(b24849825324695117ceea2d85412f06df96efcf) ) // the "U26" marking is present twice (should have been U31?) + ROM_LOAD( "mx29f1610mc.u30", 0x200000, 0x200000, CRC(9d26fa05) SHA1(571f5515411e504bf7661b8b5d358dc6c55e6fbe) ) + ROM_RELOAD( 0x400000, 0x200000 ) + ROM_RELOAD( 0x600000, 0x200000 ) + ROM_RELOAD( 0x800000, 0x200000 ) + ROM_RELOAD( 0xa00000, 0x200000 ) + ROM_RELOAD( 0xc00000, 0x200000 ) + ROM_RELOAD( 0xe00000, 0x200000 ) + + ROM_REGION( 0x80000, "oki", 0 ) + ROM_LOAD( "5_m.l._e1.0.u33", 0x00000, 0x80000, CRC(62122100) SHA1(519df7825ab62f0648192e6b1760dd9cc5ec7f9f) ) + + ROM_REGION16_LE( 0x80, "eeprom", 0 ) + ROM_LOAD( "93c46.u10", 0x0000, 0x0080, CRC(28e861d6) SHA1(4faa4d62954fd9a263d24caa6214353a109ec4f1) ) + + ROM_REGION16_LE( 0x02, "astro_cpucode", 0 ) + ROM_LOAD( "monkeyl_cpucode.key", 0x00, 0x02, NO_DUMP ) +ROM_END void astrocorp_state::init_showhand() { @@ -2592,6 +2678,70 @@ void zoo_state::init_gostop() #endif } +const zoo_state::decryption_info zoo_state::monkeyl_table = { + { + { + { 8, 9, 10 }, + { + { { 7, 5, 4, 6, 0, 3, 2, 1 }, 0x00 }, + { { 1, 4, 6, 0, 2, 5, 3, 7 }, 0xd0 }, + { { 1, 7, 4, 3, 6, 5, 0, 2 }, 0x88 }, + { { 6, 5, 2, 3, 7, 1, 0, 4 }, 0xd1 }, + { { 6, 1, 7, 2, 4, 0, 3, 5 }, 0x64 }, + { { 1, 7, 2, 6, 5, 4, 3, 0 }, 0x83 }, + { { 6, 7, 4, 2, 5, 0, 1, 3 }, 0x81 }, + { { 7, 5, 1, 0, 2, 4, 6, 3 }, 0xea }, + } + }, + { + { 12, 9, 11 }, + { + { { 6, 5, 4, 3, 2, 1, 0, 7 }, 0x90 }, + { { 2, 4, 0, 7, 5, 6, 3, 1 }, 0x32 }, + { { 7, 1, 0, 6, 5, 2, 3, 4 }, 0xa9 }, + { { 2, 0, 3, 5, 1, 4, 6, 7 }, 0xa2 }, + { { 3, 0, 6, 5, 2, 1, 4, 7 }, 0x02 }, + { { 0, 1, 6, 4, 5, 2, 7, 3 }, 0x30 }, + { { 3, 5, 2, 7, 6, 1, 4, 0 }, 0x0a }, + { { 0, 6, 4, 2, 7, 3, 1, 5 }, 0x81 }, + } + } + }, + { 12, 10, 8, 11, 9, 7, 5, 3, 6, 2, 4 } +}; + +void zoo_state::init_monkeyl() +{ + decrypt_rom(monkeyl_table); +#if 1 + // TODO: There's more stuff happening for addresses < 0x400... + // override reset vector for now + u16 * const rom = (u16 *)memregion("maincpu")->base(); + rom[0x00004/2] = 0x0000; + rom[0x00006/2] = 0x0470; + + rom[0x00400/2] = 0x4e75; // overlay!? + + rom[0x01352/2] = 0x4e75; // Mirror ROM word checksum (it expects 0) +#endif +} + +void zoo_state::init_monkeyla() +{ + decrypt_rom(monkeyl_table); +#if 1 + // TODO: There's more stuff happening for addresses < 0x400... + // override reset vector for now + u16 * const rom = (u16 *)memregion("maincpu")->base(); + rom[0x00004/2] = 0x0000; + rom[0x00006/2] = 0x0470; + + rom[0x00400/2] = 0x4e75; // overlay!? + + rom[0x01334/2] = 0x4e75; // Mirror ROM word checksum (it expects 0) +#endif +} + const astoneag_state::decryption_info astoneag_state::astoneag_table = { { { @@ -2677,6 +2827,8 @@ GAMEL( 2004, zoo, 0, zoo, magibombd, zoo_state, init_z GAME( 2004, gostopac, 0, gostop, dinodino, zoo_state, init_gostop, ROT0, "Astro Corp.", "Go & Stop", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) GAMEL( 2005, dinodino, 0, dinodino, dinodino, zoo_state, init_dinodino, ROT0, "Astro Corp.", "Dino Dino (Ver. A1.1, 01/13/2005)", MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION, layout_dinodino ) // 13/01.2005 10:59 GAMEL( 2005, astoneag, 0, astoneag, astoneag, astoneag_state, init_astoneag, ROT0, "Astro Corp.", "Stone Age (Astro, Ver. EN.03.A, 2005/02/21)", MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION, layout_astoneag ) +GAME( 2005, monkeyl, 0, monkeyl, magibombd, zoo_state, init_monkeyl, ROT0, "Astro Corp.", "Monkey Land (Ver. AA.21.A)", MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // 18/02/2005 15:47 +GAME( 2004, monkeyla, monkeyl, monkeyl, magibombd, zoo_state, init_monkeyla, ROT0, "Astro Corp.", "Monkey Land (Ver. AA.13.B)", MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // 23/04/2004 14:57 GAMEL( 2005, magibombd, magibomb, magibombd, magibombd, zoo_state, init_magibombd, ROT0, "Astro Corp.", "Magic Bomb (Ver. AA.72.D, 14/11/05)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING, layout_magibombb ) // 15/11/05 09:31 GAMEL( 2005, magibombj, magibomb, magibombd, magibombd, zoo_state, init_magibombd, ROT0, "Astro Corp.", "Magic Bomb (Ver. AA.72.C, 25/05/05)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING, layout_magibombb ) // 25/05/05 11:26 GAMEL( 2004, magibombg, magibomb, magibombg, magibombg, zoo_state, init_magibombg, ROT0, "Astro Corp.", "Magic Bomb (Ver. NB6.1, 26/04/04)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING, layout_magibomb ) // 26/04/04. Undumped sprite ROM -- cgit v1.2.3