From 286783d057c1b1fe60e96f6d7fc777f25736bc6f Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Fri, 2 Aug 2024 07:26:26 +0200 Subject: [PATCH] New systems marked not working ------------------------------ Magical Jack (VA 4.00) [Ioannis Bampoulas] Magical Jack Plus (VA 6.03) [Ioannis Bampoulas] Wan Wan Dash [TeamEurope, Darksoft] New clones marked not working ----------------------------- Fruit Genie (Version 1-1-03, set 2) [Ioannis Bampoulas] Fruit Genie (Version 1-1-03, set 3) [Ioannis Bampoulas] Fruit Genie (Version 1-1-03, set 4) [Ioannis Bampoulas] Fruit Genie (VT 2.11) [Ioannis Bampoulas] Magical Jack (VA 3.30) [Ioannis Bampoulas] Magical Jack (VA 3.11) [Ioannis Bampoulas] Magical Jack (VA 2.0) [Ioannis Bampoulas] Magical Jack Plus (VA 6.01) [Ioannis Bampoulas] - igs/goldstar.cpp: redumped GFX ROM for hamhouse9 [taksangs] - irem/m72.cpp: decapped and added MCU for gallopm72 [TeamEurope, Darksoft, The Dumping Union] - taito/taitotz.cpp: documented batlgr2' hdd [Guru] --- src/mame/igs/goldstar.cpp | 7 +- src/mame/irem/m72.cpp | 21 +-- src/mame/irem/m72.h | 1 - src/mame/mame.lst | 11 ++ src/mame/misc/amuzy.cpp | 10 ++ src/mame/misc/jungleyo.cpp | 296 ++++++++++++++++++++++++++++++++++--- src/mame/taito/taitotz.cpp | 4 +- 7 files changed, 307 insertions(+), 43 deletions(-) diff --git a/src/mame/igs/goldstar.cpp b/src/mame/igs/goldstar.cpp index 7bda515679d..4c3af989ce0 100644 --- a/src/mame/igs/goldstar.cpp +++ b/src/mame/igs/goldstar.cpp @@ -14546,12 +14546,11 @@ ROM_START( hamhouse9 ) // basically same PCB as above but this has standard PROM ROM_LOAD( "m27256.u43", 0x10000, 0x08000, CRC(a5105928) SHA1(ea3a4fb7a0ca3e14da001beb5aca03bfbd43410d) ) ROM_REGION( 0x08000, "gfx2", 0 ) - // TODO: u24 and u10 are identical, this can't be right. Marking both as bad for now, even though one is good - ROM_LOAD( "intel27128.u24", 0x00000, 0x02000, BAD_DUMP CRC(69ce2859) SHA1(68cb0c81a471d09f173d8534d94877f3f5c276f4) ) // 1ST AND 2ND HALF IDENTICAL + ROM_LOAD( "intel27128.u24", 0x00000, 0x02000, CRC(36486029) SHA1(8b0b7e7ad0252a049c0d3d66f102198a31151991) ) // 1ST AND 2ND HALF IDENTICAL ROM_IGNORE( 0x2000 ) ROM_LOAD( "hn4827128g.u26", 0x02000, 0x02000, CRC(6ba11862) SHA1(ce34727190689df8d591147dc342fe7bf230ce26) ) // 1ST AND 2ND HALF IDENTICAL ROM_IGNORE( 0x2000 ) - ROM_LOAD( "am27c128.u10", 0x04000, 0x02000, BAD_DUMP CRC(69ce2859) SHA1(68cb0c81a471d09f173d8534d94877f3f5c276f4) ) // 1ST AND 2ND HALF IDENTICAL + ROM_LOAD( "am27c128.u10", 0x04000, 0x02000, CRC(69ce2859) SHA1(68cb0c81a471d09f173d8534d94877f3f5c276f4) ) // 1ST AND 2ND HALF IDENTICAL ROM_IGNORE( 0x2000 ) ROM_LOAD( "tms27c128.u11", 0x06000, 0x02000, CRC(61a17c65) SHA1(b1212c45c9c98aba50aeed6a38e17960f868ccd3) ) // 1ST AND 2ND HALF IDENTICAL ROM_IGNORE( 0x2000 ) @@ -22115,7 +22114,7 @@ GAMEL( 1991, srmagic, cmv4, cm, cmv4, cmaster_state, empty_ini GAMEL( 1991, cmv4zg, cmv4, cmv4zg, cmv4, cmaster_state, empty_init, ROT0, "hack", "Cherry Bonus III (Ziogas V4.1 hack, set 1)", MACHINE_NOT_WORKING, layout_cmv4 ) // needs correct I/O, maybe slightly protected GAMEL( 1991, cmv4zga, cmv4, cmv4zg, cmv4, cmaster_state, empty_init, ROT0, "hack", "Cherry Bonus III (Ziogas V4.1 hack, set 2)", MACHINE_NOT_WORKING, layout_cmv4 ) // needs correct I/O, maybe slightly protected GAMEL( 199?, hamhouse, cmaster, cm, cmaster, cmaster_state, init_hamhouse, ROT0, "bootleg", "Hamburger House", MACHINE_NOT_WORKING, layout_cmaster ) // needs correct I/O -GAMEL( 199?, hamhouse9, cmaster, cm, cmaster, cmaster_state, init_hamhouse9, ROT0, "bootleg", "Hamburger House 9", MACHINE_IMPERFECT_COLORS | MACHINE_NOT_WORKING, layout_cmaster ) // bad reel colors, needs correct I/O +GAMEL( 199?, hamhouse9, cmaster, cm, cmaster, cmaster_state, init_hamhouse9, ROT0, "bootleg", "Hamburger House 9", MACHINE_NOT_WORKING, layout_cmaster ) //needs correct I/O GAMEL( 1991, tonypok, 0, cm, tonypok, cmaster_state, init_tonypok, ROT0, "Corsica", "Poker Master (Tony-Poker V3.A, hack?)", 0 , layout_tonypok ) GAME( 1998, jkrmast, 0, jkrmast, jkrmast, goldstar_state, init_jkrmast, ROT0, "Pick-A-Party USA", "Joker Master 2000 Special Edition (V515)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_NOT_WORKING ) // needs correct FG colors and controls diff --git a/src/mame/irem/m72.cpp b/src/mame/irem/m72.cpp index d2372ecfc63..41d763d17f3 100644 --- a/src/mame/irem/m72.cpp +++ b/src/mame/irem/m72.cpp @@ -473,17 +473,6 @@ void m72_state::dkgenm72_sample_trigger_w(offs_t offset, u16 data, u16 mem_mask) if (ACCESSING_BITS_0_7 && (data & 0xff) < 28) m_audio->set_sample_start(a[data & 0xff]); } -void m72_state::gallop_sample_trigger_w(offs_t offset, u16 data, u16 mem_mask) -{ - static const int a[31] = { - 0x00000, 0x00020, 0x00040, 0x01360, 0x02580, 0x04f20, 0x06240, 0x076e0, - 0x08660, 0x092a0, 0x09ba0, 0x0a560, 0x0cee0, 0x0de20, 0x0e620, 0x0f1c0, - 0x10200, 0x10220, 0x10240, 0x11380, 0x12760, 0x12780, 0x127a0, 0x13c40, - 0x140a0, 0x16760, 0x17e40, 0x18ee0, 0x19f60, 0x1bbc0, 0x1cee0 }; - - if (ACCESSING_BITS_0_7 && (data & 0xff) < 31) m_audio->set_sample_start(a[data & 0xff]); -} - /*************************************************************************** @@ -615,11 +604,6 @@ void m72_state::init_dkgenm72() m_maincpu->space(AS_IO).install_write_handler(0xc0, 0xc1, write16s_delegate(*this, FUNC(m72_state::dkgenm72_sample_trigger_w))); } -void m72_state::init_gallop() -{ - m_maincpu->space(AS_IO).install_write_handler(0xc0, 0xc1, write16s_delegate(*this, FUNC(m72_state::gallop_sample_trigger_w))); -} - template u16 m72_state::palette_r(offs_t offset) @@ -1882,7 +1866,6 @@ void m72_state::m72_dbreed(machine_config &config) - /****************************************** M81 ***********************************************/ // M81 is closest to M72 @@ -3663,7 +3646,7 @@ ROM_START( gallopm72 ) ROM_RELOAD( 0xc0000, 0x20000 ) ROM_REGION( 0x1000, "mcu", 0 ) // i8751 microcontroller - ROM_LOAD( "cc_c-pr-.ic1", 0x0000, 0x1000, NO_DUMP ) // read protected (only used for sample triggering, not supplying code / warning screens) + ROM_LOAD( "cc_c-pr-.ic1", 0x0000, 0x1000, CRC(ac4421b1) SHA1(4614acbc4efb26b27f3871b4d22879d74df5e2e0) ) // i8751 MCU labeled CC C-PR- ROM_REGION( 0x080000, "sprites", 0 ) // sprites - same data as the cosmccop/gallop sets ROM_LOAD( "cc_c-00.ic53", 0x00000, 0x20000, CRC(9d99deaa) SHA1(acf16bea0f482306107d2a305c568406b6c21e9a) ) // == cc-b-n0.ic31 @@ -4724,7 +4707,7 @@ GAME( 1989, xmultiplm72, xmultipl, m72_xmultipl, xmultipl, m72_state, init_m GAME( 1989, dbreedm72, dbreed, m72_dbreedw, dbreed, m72_state, init_dbreedm72, ROT0, "Irem", "Dragon Breed (World, M72 hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // missing i8751 MCU code GAME( 1989, dbreedjm72, dbreed, m72_dbreed, dbreed, m72_state, init_m72_8751, ROT0, "Irem", "Dragon Breed (Japan, M72 hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, gallopm72, cosmccop, m72, gallop, m72_state, init_gallop, ROT0, "Irem", "Gallop - Armed Police Unit (Japan, M72 hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // missing i8751 MCU code +GAME( 1991, gallopm72, cosmccop, m72_airduel, gallop, m72_state, init_m72_8751, ROT0, "Irem", "Gallop - Armed Police Unit (Japan, M72 hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) GAME( 1990, airduelm72, airduel, m72_airduel, airduel, m72_state, init_m72_8751, ROT270, "Irem", "Air Duel (World, M72 hardware)", MACHINE_SUPPORTS_SAVE ) GAME( 1990, airdueljm72, airduel, m72_airduel, airduel, m72_state, init_m72_8751, ROT270, "Irem", "Air Duel (Japan, M72 hardware)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/irem/m72.h b/src/mame/irem/m72.h index 4980573443d..6405ca4d3f6 100644 --- a/src/mame/irem/m72.h +++ b/src/mame/irem/m72.h @@ -96,7 +96,6 @@ public: void nspiritj(machine_config &config); void init_dkgenm72(); - void init_gallop(); void init_m72_8751(); void init_dbreedm72(); void init_nspirit(); diff --git a/src/mame/mame.lst b/src/mame/mame.lst index a09f8adf657..b65f7540880 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -28661,6 +28661,7 @@ amhbattl docchift mmhammer shpchamp +wwdash zenponta @source:misc/anes.cpp @@ -30680,7 +30681,17 @@ jubileep // @source:misc/jungleyo.cpp frtgenie +frtgeniea +frtgenieb +frtgeniec +frtgenied jungleyo +magjack +magjacka +magjackb +magjackc +magjackp +magjackpa @source:misc/kas89.cpp kas89 // 1989, SFC S.R.L. diff --git a/src/mame/misc/amuzy.cpp b/src/mame/misc/amuzy.cpp index 6d78cd36b5f..792bf906989 100644 --- a/src/mame/misc/amuzy.cpp +++ b/src/mame/misc/amuzy.cpp @@ -300,10 +300,20 @@ ROM_START( zenponta ) // HA9020-0 ROM_LOAD( "29lv160.u3", 0x200000, 0x200000, CRC(76ed6b4a) SHA1(5b3523353771d91c0382b8c2440cae795a8207ed) ) // 1xxxxxxxxxxxxxxxxxxxx = 0x00 ROM_END +ROM_START( wwdash ) + ROM_REGION(0x80000, "maincpu", 0) + ROM_LOAD16_WORD_SWAP( "s29al004d70tfi01.u1", 0x000000, 0x080000, CRC(b8984518) SHA1(23f8f2988a44bf0f0a14c39363f97f8e1b12cf62) ) // 1xxxxxxxxxxxxxxxxxx = 0xFF + + ROM_REGION(0x400000, "gfx", 0) + ROM_LOAD( "s29al016d70tfi01.u2", 0x000000, 0x200000, CRC(c02c4fed) SHA1(e3fd56621fc7ca4558f3044a1b13b6b58dd4c368) ) + ROM_LOAD( "s29al016d70tfi01.u3", 0x200000, 0x200000, CRC(cd66dc10) SHA1(76051b248882f7b5c0adfd0ae62283a16d440523) ) +ROM_END + } // anonymous namespace GAME( 2005, zenponta, 0, amuzy, amuzy, amuzy_state, empty_init, ROT0, "Amuzy Corporation", "Zenigata Ponta", MACHINE_NOT_WORKING ) GAME( 2006, amhbattl, 0, amuzy, amuzy, amuzy_state, empty_init, ROT0, "Amuzy Corporation", "Acchi Muite Hoi Battle", MACHINE_NOT_WORKING ) GAME( 2007, docchift, 0, amuzy, amuzy, amuzy_state, empty_init, ROT0, "Amuzy Corporation", "Docchi Fighter", MACHINE_NOT_WORKING ) +GAME( 2007, wwdash, 0, amuzy, amuzy, amuzy_state, empty_init, ROT0, "Amuzy Corporation", "Wan Wan Dash", MACHINE_NOT_WORKING ) GAME( 2008, mmhammer, 0, amuzy, amuzy, amuzy_state, empty_init, ROT0, "Amuzy Corporation", "Mogu Mogu Hammer", MACHINE_NOT_WORKING ) GAME( 2008, shpchamp, 0, amuzy, amuzy, amuzy_state, empty_init, ROT0, "Amuzy Corporation", "Shippe Champion", MACHINE_NOT_WORKING ) diff --git a/src/mame/misc/jungleyo.cpp b/src/mame/misc/jungleyo.cpp index df588d4ecf8..b5bf1d290d6 100644 --- a/src/mame/misc/jungleyo.cpp +++ b/src/mame/misc/jungleyo.cpp @@ -32,11 +32,24 @@ - decryption seems good but gets stuck with 'data error' and 'illegal inst' errors. Second one probably due to same problem as jungleyo. First one possibly checksum failure due to patch in init_frtgenie()? - To bypass do: bp 5732,1,{curpc=0x5810;g} - - second half of the main CPU ROM seems to contain an earlier version of the - data 'GENIE FRUITS DATA: 2001/08/15 VERSION: VA1.00'. Can it be reached or - just a leftover? + To bypass do: + frtgenie, frtgeniea: bp 5732,1,{curpc=0x5810;g} + frtgenieb: bp 581e,1,{curpc=0x58fe;g} + frtgeniec: bp 5812,1,{curpc=0x58f0;g} + frtgenied: bp 80de,1,{curpc=0x81bc;g} + - second half of frtgenie's main CPU ROM seems to contain an earlier version + of the data 'GENIE FRUITS DATA: 2001/08/15 VERSION: VA1.00'. Can it be + reached or just a leftover? + - interestingly not only the program ROMs, but the GFX ROMs differ for the + various sets. Only the Oki ROM is always identical - it hits the layer_enable_w popmessage + - dip settings are good for frtgenie, need to be checked for the other clones + - title screen uses 4th 'reel'. Not implemented yet. + + Magical Jack (Plus) + - with a clean NVRAM MAME needs to be soft reset after init or the game + will trip a '1111 exception'; + - dip settings TBD. =============================================================================== @@ -114,15 +127,16 @@ public: void init_frtgenie(); void init_jungleyo(); + template void init_magjack(); protected: virtual void video_start() override; private: - void output_w(uint16_t data); + void output_w(u16 data); // video-related - uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); TILE_GET_INFO_MEMBER(get_bg_tile_info); TILE_GET_INFO_MEMBER(get_fg_tile_info); template TILE_GET_INFO_MEMBER(get_reel_tile_info); @@ -139,8 +153,8 @@ private: required_device m_maincpu; required_device m_gfxdecode; - required_shared_ptr m_bg_videoram; - required_shared_ptr m_fg_videoram; + required_shared_ptr m_bg_videoram; + required_shared_ptr m_fg_videoram; required_shared_ptr_array m_reel_vram; required_device m_palette; memory_share_creator m_paletteram; @@ -219,7 +233,7 @@ void jungleyo_state::video_start() save_item(NAME(m_video_priority)); } -uint32_t jungleyo_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +u32 jungleyo_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { bitmap.fill(m_palette->black_pen(), cliprect); @@ -265,7 +279,7 @@ void jungleyo_state::palette_ram_w(offs_t offset, u8 data) m_palette->set_pen_color(pal_offs, rgb_t(r, g, b)); } -void jungleyo_state::output_w(uint16_t data) +void jungleyo_state::output_w(u16 data) { // bit 15 ? // bit 14 coin counter? @@ -591,7 +605,8 @@ void jungleyo_state::jungleyo(machine_config &config) } -ROM_START( jungleyo ) +// version 3.02 built on 2001/02/09, there's copyright both for Yonshi and Global in strings +ROM_START( jungleyo ) // MADE IN TAIWAN YONSHI PCB NO-006F ROM_REGION( 0x80000, "maincpu", ROMREGION_ERASE00 ) // 68000 code, encrypted ROM_LOAD16_BYTE( "jungle_=record=_rom3_vi3.02.u15", 0x00000, 0x20000, CRC(7c9f431e) SHA1(fb3f90c4fe59c938f36b30c5fa3af227031e7d7a) ) ROM_LOAD16_BYTE( "jungle_=record=_rom2_vi3.02.u14", 0x00001, 0x20000, CRC(f6a71260) SHA1(8e48cbb9d701ad968540244396820359afe97c28) ) @@ -612,6 +627,7 @@ ROM_START( jungleyo ) ROM_LOAD( "atf20v8b.u37", 0x000, 0x157, NO_DUMP ) ROM_END +// first half is version 1-1-03, with copyright both for Yonshi and Global in strings, second half is version VA1.0 2001/08/15 with copyright both for Yonshi and Global in strings ROM_START( frtgenie ) // MADE IN TAIWAN YONSHI PCB NO-006E ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code, encrypted ROM_LOAD16_BYTE( "fruit_genie_rom3_va1_1.03.u15", 0x00000, 0x40000, CRC(747099c3) SHA1(99f4aa6814ed2868d9758ad94b4497fd4c3142dc) ) @@ -633,10 +649,220 @@ ROM_START( frtgenie ) // MADE IN TAIWAN YONSHI PCB NO-006E ROM_LOAD( "atf20v8b.u37", 0x000, 0x157, NO_DUMP ) ROM_END +ROM_START( frtgeniea ) // MADE IN TAIWAN YONSHI PCB NO-006E + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code, encrypted + ROM_LOAD16_BYTE( "fruit_genie_rom3_va1_1.03.u15", 0x00000, 0x40000, CRC(c9141977) SHA1(6b57631802eab7f4a0d99074844407d009eff07b) ) // SLDH, 27C020 + ROM_LOAD16_BYTE( "fruit_genie_rom2_va1_1.03.u14", 0x00001, 0x40000, CRC(cacd2806) SHA1(af572697b434630740b0edbe901c7b704f2be908) ) // SLDH, 27C020 + + ROM_REGION( 0x40000, "oki", 0 ) + ROM_LOAD( "fruit_genie_rom_1.u99", 0x00000, 0x40000, CRC(28b0c8fb) SHA1(5cdf59dcbed7da9b882c7dcf27020c1c37dd22cc) ) // 27C020 + + ROM_REGION( 0x80000, "reelgfx", 0 ) + ROM_LOAD( "fruit_genie_rom_4.u58", 0x00000, 0x80000, CRC(74e8235a) SHA1(f16391f824f7ae7ce89e917d94cb784b5ca4a9e1) ) // SLDH, 27C040 + + ROM_REGION( 0x80000, "gfx2", 0 ) + ROM_LOAD( "fruit_genie_rom_5.u59", 0x00000, 0x80000, CRC(00d73415) SHA1(26e65e0e2c91bc71f39cefd065e234e49f2a1d81) ) // SLDH, 27C040 + + ROM_REGION( 0x80000, "gfx3", 0 ) + ROM_LOAD( "fruit_genie_rom_6.u60", 0x00000, 0x80000, CRC(a57f5f4e) SHA1(b7ee54d250a127c211cd5ad11ddb38ae1e0119d5) ) // SLDH, 27C040 + + ROM_REGION( 0x157, "plds", ROMREGION_ERASE00 ) + ROM_LOAD( "atf20v8b.u37", 0x000, 0x157, NO_DUMP ) +ROM_END + +ROM_START( frtgenieb ) // MADE IN TAIWAN YONSHI PCB NO-006G + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code, encrypted + ROM_LOAD16_BYTE( "fruit_genie_rom3_va1_1.03.u15", 0x00000, 0x40000, CRC(fae885b8) SHA1(ac923469cc0c7866be490a43344fe1677d64f617) ) // SLDH, 27C020 + ROM_LOAD16_BYTE( "fruit_genie_rom2_va1_1.03.u14", 0x00001, 0x40000, CRC(4b5e1cbc) SHA1(4e2af889c669d80c6cdba01948858b9e8d8fab95) ) // SLDH, 27C020 + + ROM_REGION( 0x40000, "oki", 0 ) + ROM_LOAD( "fruit_genie_rom_1.u99", 0x00000, 0x40000, CRC(28b0c8fb) SHA1(5cdf59dcbed7da9b882c7dcf27020c1c37dd22cc) ) // 27C020 + + ROM_REGION( 0x80000, "reelgfx", 0 ) + ROM_LOAD( "fruit_genie_rom_4.u58", 0x00000, 0x80000, CRC(16aaba0a) SHA1(0bad575724d44f5ad62412ec8391fcd42bd0628e) ) // SLDH, 27C040 + + ROM_REGION( 0x80000, "gfx2", 0 ) + ROM_LOAD( "fruit_genie_rom_5.u59", 0x00000, 0x80000, CRC(fe3eece5) SHA1(0fc785a04ee42c5bce4f0e72e608e7ba5aa28412) ) // SLDH, 27C040 + + ROM_REGION( 0x80000, "gfx3", 0 ) + ROM_LOAD( "fruit_genie_rom_6.u60", 0x00000, 0x80000, CRC(8d364563) SHA1(fd1257680eb610885b65f41a8f86e32b5635acfc) ) // SLDH, 27C040 + + ROM_REGION( 0x157, "plds", ROMREGION_ERASE00 ) + ROM_LOAD( "atf20v8b.u37", 0x000, 0x157, NO_DUMP ) +ROM_END + +ROM_START( frtgeniec ) // MADE IN TAIWAN YONSHI PCB NO-006G + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code, encrypted + ROM_LOAD16_BYTE( "fruit_genie_rom3_va1_1.03.u15", 0x00000, 0x40000, CRC(ec6721b5) SHA1(f9621a66964ef5a312c185540f3c4fc52f76c7ef) ) // SLDH, 27C020 + ROM_LOAD16_BYTE( "fruit_genie_rom2_va1_1.03.u14", 0x00001, 0x40000, CRC(3112f27d) SHA1(7d7cc15552e9c453a2f7f7403163123cd392c18d) ) // SLDH, 27C020 + + ROM_REGION( 0x40000, "oki", 0 ) + ROM_LOAD( "fruit_genie_rom_1.u99", 0x00000, 0x40000, CRC(28b0c8fb) SHA1(5cdf59dcbed7da9b882c7dcf27020c1c37dd22cc) ) // 27C020 + + ROM_REGION( 0x80000, "reelgfx", 0 ) + ROM_LOAD( "fruit_genie_rom_4.u58", 0x00000, 0x80000, CRC(16aaba0a) SHA1(0bad575724d44f5ad62412ec8391fcd42bd0628e) ) // SLDH, 27C040 + + ROM_REGION( 0x80000, "gfx2", 0 ) + ROM_LOAD( "fruit_genie_rom_5.u59", 0x00000, 0x80000, CRC(fe3eece5) SHA1(0fc785a04ee42c5bce4f0e72e608e7ba5aa28412) ) // SLDH, 27C040 + + ROM_REGION( 0x80000, "gfx3", 0 ) + ROM_LOAD( "fruit_genie_rom_6.u60", 0x00000, 0x80000, CRC(b7056d04) SHA1(87b1ffa3c722a0f0eb7e249ba07f540c314d2d79) ) // SLDH, 27C040 + + ROM_REGION( 0x157, "plds", ROMREGION_ERASE00 ) + ROM_LOAD( "atf20v8b.u37", 0x000, 0x157, NO_DUMP ) +ROM_END + +ROM_START( frtgenied ) // MADE IN TAIWAN YONSHI PCB NO-006E + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code, encrypted + ROM_LOAD16_BYTE( "fruit_genie_rom3_vt_2.11.u15", 0x00000, 0x20000, CRC(37bac681) SHA1(39b0b8596e8acc988e4d8c7b0249e9d666b3fc1e) ) // M27C1001 + ROM_LOAD16_BYTE( "fruit_genie_rom2_vt_2.11.u14", 0x00001, 0x20000, CRC(0918cefc) SHA1(4a1bc853f7deb71f504780b84fa7f8c5c1d3330e) ) // M27C1001 + + ROM_REGION( 0x40000, "oki", 0 ) + ROM_LOAD( "fruit_genie_rom_1.u99", 0x00000, 0x40000, CRC(28b0c8fb) SHA1(5cdf59dcbed7da9b882c7dcf27020c1c37dd22cc) ) // M27C2001 + + ROM_REGION( 0x80000, "reelgfx", 0 ) + ROM_LOAD( "fruit_genie_rom_4.u58", 0x00000, 0x80000, CRC(b3b467b6) SHA1(f1a64af7a8fe22c7ef76617aba359df11e4af737) ) // M27C4001 + + ROM_REGION( 0x80000, "gfx2", 0 ) + ROM_LOAD( "fruit_genie_rom_5.u59", 0x00000, 0x80000, CRC(a7926b81) SHA1(650d85a2dd6850234e0fb68c19470f34aed76577) ) // SLDH, 27C4001 + + ROM_REGION( 0x80000, "gfx3", 0 ) + ROM_LOAD( "fruit_genie_rom_6.u60", 0x00000, 0x80000, CRC(91faa324) SHA1(cda033e948d6f42abb36497619164b26b2201cad) ) // SLDH, 27C4001 + + ROM_REGION( 0x157, "plds", ROMREGION_ERASE00 ) + ROM_LOAD( "atf20v8b.u37", 0x000, 0x157, NO_DUMP ) +ROM_END + +ROM_START( magjack ) // MADE IN TAIWAN PCB NO-006A + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code, encrypted + ROM_LOAD16_BYTE( "3.u15", 0x00000, 0x20000, CRC(7d0855d0) SHA1(489e54f529c648da2333a3a811ced20f0d578029) ) // 27C010 + ROM_LOAD16_BYTE( "2.u14", 0x00001, 0x20000, CRC(5564101a) SHA1(30fc23acf4387221cab705b166d551883c7aaa29) ) // 27C010 + + ROM_REGION( 0x40000, "oki", 0 ) + ROM_LOAD( "1.u99", 0x00000, 0x40000, CRC(0bce2433) SHA1(2c9e9cb3ab9076e1a2eb0a58ad0079b86bf4e922) ) // 27C020 + + ROM_REGION( 0x80000, "reelgfx", 0 ) + ROM_LOAD( "4.u58", 0x00000, 0x80000, CRC(9b630db6) SHA1(00e04e4b4207ba44617851017c1505eacfcc5375) ) // 27C040 + + ROM_REGION( 0x80000, "gfx2", 0 ) + ROM_LOAD( "5.u59", 0x00000, 0x80000, CRC(5991a0c5) SHA1(29848eae911c47ff911a49f0b3552b0dc958a6c5) ) // 27C040 + + ROM_REGION( 0x80000, "gfx3", 0 ) + ROM_LOAD( "6.u60", 0x00000, 0x80000, CRC(94d25396) SHA1(5bfe7ddf4a5b6a541dac10c50529e025140fd8f2) ) // 27C040 + + ROM_REGION( 0x157, "plds", ROMREGION_ERASE00 ) + ROM_LOAD( "atf20v8b.u37", 0x000, 0x157, NO_DUMP ) +ROM_END + +ROM_START( magjacka ) // MADE IN TAIWAN PCB NO-006E + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code, encrypted + ROM_LOAD16_BYTE( "3.u15", 0x00000, 0x20000, CRC(7ef54fad) SHA1(d4839912a149f42b410a961f356c648521c3f42a) ) // SLDH, 27C010 + ROM_LOAD16_BYTE( "2.u14", 0x00001, 0x20000, CRC(8ad958f3) SHA1(92ee2995189fc423d5f63c26db5e04ac4f09fcb1) ) // SLDH, 27C010 + + ROM_REGION( 0x40000, "oki", 0 ) + ROM_LOAD( "1.u99", 0x00000, 0x40000, CRC(0bce2433) SHA1(2c9e9cb3ab9076e1a2eb0a58ad0079b86bf4e922) ) // 27C020 + + ROM_REGION( 0x80000, "reelgfx", 0 ) + ROM_LOAD( "4.u58", 0x00000, 0x80000, CRC(9b630db6) SHA1(00e04e4b4207ba44617851017c1505eacfcc5375) ) // 27C040 + + ROM_REGION( 0x80000, "gfx2", 0 ) + ROM_LOAD( "5.u59", 0x00000, 0x80000, CRC(5991a0c5) SHA1(29848eae911c47ff911a49f0b3552b0dc958a6c5) ) // 27C040 + + ROM_REGION( 0x80000, "gfx3", 0 ) + ROM_LOAD( "6.u60", 0x00000, 0x80000, CRC(94d25396) SHA1(5bfe7ddf4a5b6a541dac10c50529e025140fd8f2) ) // 27C040 + + ROM_REGION( 0x157, "plds", ROMREGION_ERASE00 ) + ROM_LOAD( "atf20v8b.u37", 0x000, 0x157, NO_DUMP ) +ROM_END + +ROM_START( magjackb ) // MADE IN TAIWAN PCB NO-006A + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code, encrypted + ROM_LOAD16_BYTE( "3.u15", 0x00000, 0x20000, CRC(7033037a) SHA1(78f3e699094b81630afee18c897dc68ee163634f) ) // SLDH, 27C010 + ROM_LOAD16_BYTE( "2.u14", 0x00001, 0x20000, CRC(926e3a96) SHA1(92bf53bf48307f5656662f2242a99a0af0eeb62d) ) // SLDH, 27C010 + + ROM_REGION( 0x40000, "oki", 0 ) + ROM_LOAD( "1.u99", 0x00000, 0x40000, CRC(0bce2433) SHA1(2c9e9cb3ab9076e1a2eb0a58ad0079b86bf4e922) ) // 27C020 + + ROM_REGION( 0x80000, "reelgfx", 0 ) + ROM_LOAD( "4.u58", 0x00000, 0x80000, CRC(9b630db6) SHA1(00e04e4b4207ba44617851017c1505eacfcc5375) ) // 27C040 + + ROM_REGION( 0x80000, "gfx2", 0 ) + ROM_LOAD( "5.u59", 0x00000, 0x80000, CRC(5991a0c5) SHA1(29848eae911c47ff911a49f0b3552b0dc958a6c5) ) // 27C040 + + ROM_REGION( 0x80000, "gfx3", 0 ) + ROM_LOAD( "6.u60", 0x00000, 0x80000, CRC(94d25396) SHA1(5bfe7ddf4a5b6a541dac10c50529e025140fd8f2) ) // 27C040 + + ROM_REGION( 0x157, "plds", ROMREGION_ERASE00 ) + ROM_LOAD( "atf20v8b.u37", 0x000, 0x157, NO_DUMP ) +ROM_END + +ROM_START( magjackc ) // MADE IN TAIWAN PCB NO-006A + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code, encrypted + ROM_LOAD16_BYTE( "3.u15", 0x00000, 0x20000, CRC(86c3adc8) SHA1(7e3ee5847f2c170c168b1d9341093e97be855526) ) // SLDH, 27C010 + ROM_LOAD16_BYTE( "2.u14", 0x00001, 0x20000, CRC(e2fa5dbf) SHA1(3d68f57342fa1f70b7f0d956e8d06cb39e84d9f4) ) // SLDH, 27C010 + + ROM_REGION( 0x40000, "oki", 0 ) + ROM_LOAD( "1.u99", 0x00000, 0x40000, CRC(bee977a7) SHA1(f924c53781e6a9b2796c23b5d9e63a62e0b75b9a) ) // SLDH, 27C020 + + ROM_REGION( 0x80000, "reelgfx", 0 ) + ROM_LOAD( "4.u58", 0x00000, 0x80000, CRC(9b630db6) SHA1(00e04e4b4207ba44617851017c1505eacfcc5375) ) // 27C040 + + ROM_REGION( 0x80000, "gfx2", 0 ) + ROM_LOAD( "5.u59", 0x00000, 0x80000, CRC(6a2c11cc) SHA1(0d3e32f2279a60779b228e5ee485dcdb9c27f30a) ) // SLDH, 27C040 + + ROM_REGION( 0x80000, "gfx3", 0 ) + ROM_LOAD( "6.u60", 0x00000, 0x80000, CRC(e16a09be) SHA1(cc4124841b0fa12776bd20eb9c86e809667f3f49) ) // SLDH, 27C040 + + ROM_REGION( 0x157, "plds", ROMREGION_ERASE00 ) + ROM_LOAD( "atf20v8b.u37", 0x000, 0x157, NO_DUMP ) +ROM_END + +ROM_START( magjackp ) + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code, encrypted + ROM_LOAD16_BYTE( "3.u15", 0x00000, 0x20000, CRC(c59d43c2) SHA1(a58f1a7b618956d93c27e321e64b86b12f15e3d8) ) // 27C010 + ROM_LOAD16_BYTE( "2.u14", 0x00001, 0x20000, CRC(35321d52) SHA1(31049d154a68c4f65d748cc24c8b680fefe36b89) ) // 27C010 + + ROM_REGION( 0x40000, "oki", 0 ) + ROM_LOAD( "1.u99", 0x00000, 0x40000, CRC(0bce2433) SHA1(2c9e9cb3ab9076e1a2eb0a58ad0079b86bf4e922) ) // 27C020, same as the magjack sets + + ROM_REGION( 0x80000, "reelgfx", 0 ) + ROM_LOAD( "4.u58", 0x00000, 0x80000, CRC(59aa4f5f) SHA1(a7d713009efe2077ff26ba3c9bbf960386a43d40) ) // 27C040 + + ROM_REGION( 0x80000, "gfx2", 0 ) + ROM_LOAD( "5.u59", 0x00000, 0x80000, CRC(70784939) SHA1(189c7328ad76496acbbdc02edc2e949be8cff077) ) // 27C040 + + ROM_REGION( 0x80000, "gfx3", 0 ) + ROM_LOAD( "6.u60", 0x00000, 0x80000, CRC(cc397dab) SHA1(564e442364059411038819582b5215ec83752f9a) ) // 27C040 + + ROM_REGION( 0x157, "plds", ROMREGION_ERASE00 ) + ROM_LOAD( "atf20v8b.u37", 0x000, 0x157, NO_DUMP ) +ROM_END + +ROM_START( magjackpa ) + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code, encrypted + ROM_LOAD16_BYTE( "3.u15", 0x00000, 0x20000, CRC(f7c965e6) SHA1(07139219df87f174a87cd3e524c575fd98265aa8) ) // SLDH, 27C010 + ROM_LOAD16_BYTE( "2.u14", 0x00001, 0x20000, CRC(7bc8c1fa) SHA1(aed37b1585ac05777495fe84ac0d76c6d1e7e377) ) // SLDH, 27C010 + + ROM_REGION( 0x40000, "oki", 0 ) + ROM_LOAD( "1.u99", 0x00000, 0x40000, CRC(0bce2433) SHA1(2c9e9cb3ab9076e1a2eb0a58ad0079b86bf4e922) ) // 27C020, same as the magjack sets + + ROM_REGION( 0x80000, "reelgfx", 0 ) + ROM_LOAD( "4.u58", 0x00000, 0x80000, CRC(59aa4f5f) SHA1(a7d713009efe2077ff26ba3c9bbf960386a43d40) ) // 27C040 + + ROM_REGION( 0x80000, "gfx2", 0 ) + ROM_LOAD( "5.u59", 0x00000, 0x80000, CRC(70784939) SHA1(189c7328ad76496acbbdc02edc2e949be8cff077) ) // 27C040 + + ROM_REGION( 0x80000, "gfx3", 0 ) + ROM_LOAD( "6.u60", 0x00000, 0x80000, CRC(cc397dab) SHA1(564e442364059411038819582b5215ec83752f9a) ) // 27C040 + + ROM_REGION( 0x157, "plds", ROMREGION_ERASE00 ) + ROM_LOAD( "atf20v8b.u37", 0x000, 0x157, NO_DUMP ) +ROM_END + void jungleyo_state::init_jungleyo() { - uint16_t *src = (uint16_t *)memregion("maincpu")->base(); + u16 *src = (u16 *)memregion("maincpu")->base(); for (int i = 0x00000; i < 0x10000 / 2; i++) src[i] = bitswap<16>(src[i] ^ 0x00ff, 8, 10, 15, 11, 9, 14, 12, 13, 6, 4, 2, 7, 3, 0, 1, 5); @@ -660,7 +886,7 @@ void jungleyo_state::init_jungleyo() void jungleyo_state::init_frtgenie() { - uint16_t *src = (uint16_t *)memregion("maincpu")->base(); + u16 *src = (u16 *)memregion("maincpu")->base(); for (int i = 0x00000; i < 0x10000 / 2; i++) src[i] = bitswap<16>(src[i] ^ 0x00ff, 11, 12, 14, 9, 10, 13, 8, 15, 5, 0, 2, 3, 6, 1, 4, 7); @@ -685,12 +911,46 @@ void jungleyo_state::init_frtgenie() src[0x006 / 2] = 0x01f8; // reset opcode } +template +void jungleyo_state::init_magjack() +{ + u16 *src = (u16 *)memregion("maincpu")->base(); -} // Anonymous namespace + for (int i = 0x00000; i < 0x10000 / 2; i++) + src[i] = bitswap<16>(src[i] ^ 0xffff, 15, 12, 9, 13, 14, 11, 8, 10, 0, 4, 7, 1, 6, 5, 2, 3); + + for (int i = 0x10000 / 2; i < 0x20000 / 2; i++) + src[i] = bitswap<16>(src[i] ^ 0x00ff, 9, 11, 14, 15, 8, 13, 10, 12, 7, 6, 1, 3, 2, 4, 0, 5); + + for (int i = 0x20000 / 2; i < 0x30000 / 2; i++) + src[i] = bitswap<16>(src[i] ^ 0xff00, 12, 15, 8, 10, 13, 9, 14, 11, 2, 7, 4, 0, 1, 6, 5, 3); + + for (int i = 0x30000 / 2; i < 0x40000 / 2; i++) + src[i] = bitswap<16>(src[i] ^ 0x00ff, 14, 8, 13, 11, 9, 15, 12, 10, 5, 0, 2, 6, 4, 1, 3, 7); + + // TODO: Stack Pointer/Initial PC settings don't seem to decrypt correctly + // hack these until better understood (still wrong values) + src[0x000 / 2] = 0x0000; + src[0x002 / 2] = 0x0000; + src[0x004 / 2] = 0x0000; + src[0x006 / 2] = Reset_addr; // reset opcode +} + +} // anonymous namespace -// version 3.02 built on 2001/02/09, there's copyright both for Yonshi and Global in strings -GAME( 2001, jungleyo, 0, jungleyo, jungleyo, jungleyo_state, init_jungleyo, ROT0, "Yonshi", "Jungle (Italy VI3.02)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 2001, jungleyo, 0, jungleyo, jungleyo, jungleyo_state, init_jungleyo, ROT0, "Yonshi", "Jungle (Italy VI3.02)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -// first half is version 1-1-03, with copyright both for Yonshi and Global in strings, second half is version VA1.0 2001/08/15 with copyright both for Yonshi and Global in strings -GAME( 2003, frtgenie, 0, jungleyo, frtgenie, jungleyo_state, init_frtgenie, ROT0, "Global", "Fruit Genie (Version 1-1-03)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 2003, frtgenie, 0, jungleyo, frtgenie, jungleyo_state, init_frtgenie, ROT0, "Global", "Fruit Genie (Version 1-1-03, set 1)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 2003, frtgeniea, frtgenie, jungleyo, frtgenie, jungleyo_state, init_frtgenie, ROT0, "Global", "Fruit Genie (Version 1-1-03, set 2)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 2003, frtgenieb, frtgenie, jungleyo, frtgenie, jungleyo_state, init_frtgenie, ROT0, "Global", "Fruit Genie (Version 1-1-03, set 3)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 2003, frtgeniec, frtgenie, jungleyo, frtgenie, jungleyo_state, init_frtgenie, ROT0, "Global", "Fruit Genie (Version 1-1-03, set 4)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 2002, frtgenied, frtgenie, jungleyo, frtgenie, jungleyo_state, init_jungleyo, ROT0, "Winnin World", "Fruit Genie (VT 2.11)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) + +GAME( 2000, magjack, 0, jungleyo, frtgenie, jungleyo_state, init_magjack<0x260>, ROT0, "Global", "Magical Jack (VA 4.00)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // 2000/09/28 +GAME( 2000, magjacka, magjack, jungleyo, frtgenie, jungleyo_state, init_magjack<0x268>, ROT0, "Global", "Magical Jack (VA 3.30)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // 2000/08/04 +GAME( 2000, magjackb, magjack, jungleyo, frtgenie, jungleyo_state, init_magjack<0x268>, ROT0, "Global", "Magical Jack (VA 3.11)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // 2000/06/29 +GAME( 1999, magjackc, magjack, jungleyo, frtgenie, jungleyo_state, init_magjack<0x268>, ROT0, "Global", "Magical Jack (VA 2.0)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // 1999/10/28 + +GAME( 2001, magjackp, 0, jungleyo, frtgenie, jungleyo_state, init_magjack<0x1fe>, ROT0, "Global", "Magical Jack Plus (VA 6.03)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // 2001/07/23 +GAME( 2000, magjackpa, magjackp, jungleyo, frtgenie, jungleyo_state, init_magjack<0x1fe>, ROT0, "Global", "Magical Jack Plus (VA 6.01)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // 2001/02/14 diff --git a/src/mame/taito/taitotz.cpp b/src/mame/taito/taitotz.cpp index 89eaa68337f..eaee3b6b236 100644 --- a/src/mame/taito/taitotz.cpp +++ b/src/mame/taito/taitotz.cpp @@ -2918,6 +2918,8 @@ ROM_START( batlgr2 ) ROM_REGION( 0x10000, "sound_cpu", 0 ) /* Internal ROM :( */ ROM_LOAD( "e68-01.ic7", 0x000000, 0x010000, NO_DUMP ) + // BATTLE GEAR 2 M9005023A VER.2.04J + // FUJITSU MPE3064AT DISK_REGION( "ata:0:hdd" ) DISK_IMAGE( "bg2_204j", 0, SHA1(7ac100fba39ae0b93980c0af2f0212a731106912) ) ROM_END @@ -3051,7 +3053,7 @@ ROM_START( dendego3 ) DISK_IMAGE( "ddg3", 0, SHA1(468d699e02ef0a0242de4e7038613cc5d0545591) ) ROM_END -} // Anonymous namespace +} // anonymous namespace GAME( 1999, taitotz, 0, taitotz, taitotz, taitotz_state, empty_init, ROT0, "Taito", "Type Zero BIOS", MACHINE_NO_SOUND|MACHINE_NOT_WORKING|MACHINE_IS_BIOS_ROOT )