igs_m027.cpp - updates (#12711)
Some checks failed
CI (Linux) / build-linux (-U_FORTIFY_SOURCE, gcc, gcc, g++, mametiny, tiny) (push) Waiting to run
CI (Linux) / build-linux (clang, clang, clang++, mame, mame) (push) Waiting to run
CI (macOS) / build-macos (push) Waiting to run
CI (Windows) / build-windows (clang, clang, clang++, mametiny, tiny) (push) Waiting to run
CI (Windows) / build-windows (gcc, gcc, g++, mame, mame) (push) Waiting to run
XML/JSON validation / validate (push) Has been cancelled

- added internal IGS027A ROMs for lhzb4, oceanpar, triplfev, extradrw [Ioannis Bampoulas, Team Europe, XingXing]
- added chessc2 IGS027A internal ROM [Siftware]


New clones marked not working
-----------------------------
Fruit Paradise (V206US) [Ioannis Bampoulas]
This commit is contained in:
mamehaze 2024-09-03 01:55:51 +01:00 committed by GitHub
parent 706137deae
commit bf54761b48
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 123 additions and 52 deletions

View file

@ -51,6 +51,7 @@ public:
{ }
void igs_mahjong(machine_config &config);
void extradraw(machine_config &config);
void init_sdwx();
void init_chessc2();
@ -73,6 +74,7 @@ public:
void init_lthy();
void init_luckycrs();
void init_olympic5();
void init_extradrw();
protected:
virtual void machine_start() override;
@ -100,6 +102,7 @@ private:
void pgm_create_dummy_internal_arm_region();
void igs_mahjong_map(address_map &map);
void extradraw_map(address_map &map);
u32 m_dsw_io_select;
u32 m_unk2_write_count;
@ -147,6 +150,12 @@ void igs_m027_state::igs_mahjong_map(address_map &map)
map(0xf0000000, 0xf000000f).nopw(); // magic registers
}
void igs_m027_state::extradraw_map(address_map &map)
{
igs_mahjong_map(map);
map(0x18088000, 0x1808ffff).ram(); // Extra Draw needs RAM here, maybe just a mirror, maybe due to PCB difference
}
/***************************************************************************
Input Ports
@ -450,6 +459,12 @@ void igs_m027_state::igs_mahjong(machine_config &config)
OKIM6295(config, m_oki, 1000000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.5);
}
void igs_m027_state::extradraw(machine_config &config)
{
igs_mahjong(config);
m_maincpu->set_addrmap(AS_PROGRAM, &igs_m027_state::extradraw_map);
}
/***************************************************************************
ROMs Loading
@ -557,10 +572,28 @@ ROM_START( fruitpar )
ROM_LOAD( "igs_w4102.u28", 0x00000, 0x80000, CRC(558cab25) SHA1(0280b37a14589329f0385c048e5742b9e89bd587) )
ROM_END
ROM_START( fruitpara )
ROM_REGION( 0x04000, "maincpu", 0 )
// Internal ROM of IGS027A type G ARM based MCU
ROM_LOAD( "q5_027a.bin", 0x00000, 0x4000, CRC(df756ac3) SHA1(5b5d2a7f6363260166e3411d1571056cc30a5e56) )
ROM_REGION32_LE( 0x80000, "user1", ROMREGION_ERASEFF )
ROM_LOAD( "f paradise v-206us.u23", 0x00000, 0x80000, CRC(ee2fa627) SHA1(6e964213e17d7db021ec63c7a1af08f863483369) )
ROM_REGION( 0x080000, "igs017_igs031:tilemaps", 0 )
ROM_LOAD16_WORD_SWAP( "paradise_text.u12", 0x000000, 0x080000, CRC(bdaa4407) SHA1(845eead0902c81290c2b5d7543ac9dfda375fdd1) )
ROM_REGION( 0x400000, "igs017_igs031:sprites", 0 )
ROM_LOAD( "igs_m4101.u13", 0x000000, 0x400000, CRC(84899398) SHA1(badac65af6e03c490798f4368eb2b15db8c590d0) ) // FIXED BITS (xxxxxxx0xxxxxxxx)
ROM_REGION( 0x80000, "oki", 0 )
ROM_LOAD( "igs_w4102.u28", 0x00000, 0x80000, CRC(558cab25) SHA1(0280b37a14589329f0385c048e5742b9e89bd587) )
ROM_END
ROM_START( oceanpar ) // IGS PCB-0331-02-FG
ROM_REGION( 0x04000, "maincpu", 0 )
// Internal ROM of IGS027A type G ARM based MCU
ROM_LOAD( "oceanpar_igs027a", 0x00000, 0x4000, NO_DUMP ) // possibly B1
ROM_LOAD( "b1_027a.bin", 0x00000, 0x4000, CRC(e64a01a0) SHA1(22f2afbe1fc66c3c9e6d5d87c98b0974615b8a20) )
ROM_REGION32_LE( 0x80000, "user1", 0 ) // external ARM data / prg
ROM_LOAD( "ocean_paradise_v105us.u23", 0x00000, 0x80000, CRC(e6eb66c3) SHA1(f6c1e31ccddc8ebb8218f52b5c0d97f0797b2e84) )
@ -578,7 +611,7 @@ ROM_END
ROM_START( oceanpara ) // IGS PCB-0331-01-FG
ROM_REGION( 0x04000, "maincpu", 0 )
// Internal ROM of IGS027A type G ARM based MCU
ROM_LOAD( "b1_igs027a", 0x00000, 0x4000, NO_DUMP ) // stickered B1
ROM_LOAD( "b1_027a.bin", 0x00000, 0x4000, CRC(e64a01a0) SHA1(22f2afbe1fc66c3c9e6d5d87c98b0974615b8a20) )
ROM_REGION32_LE( 0x80000, "user1", 0 ) // external ARM data / prg
ROM_LOAD( "ocean_paradise_v101us.u23", 0x00000, 0x80000, CRC(4f2bf87a) SHA1(559c8728632336ba84f455ac22b6e514967c644b) )
@ -1211,7 +1244,7 @@ IGS 0027 - Custom programmed ARM9
ROM_START( chessc2 )
ROM_REGION( 0x04000, "maincpu", 0 )
// Internal ROM of IGS027A ARM based MCU
ROM_LOAD( "c8_igs027a", 0x00000, 0x4000, NO_DUMP ) // stickered C8
ROM_LOAD( "c8_027a.bin", 0x00000, 0x4000, CRC(0ef83d8b) SHA1(31ee4bf95561cdccf4262463545839bcde9ce087) ) // stickered C8
ROM_REGION32_LE( 0x80000, "user1", 0 ) // external ARM data / prg
ROM_LOAD( "ccii_v-707uso.u12", 0x000000, 0x80000, CRC(5937b67b) SHA1(967b3adf6f5bf92d63ec460d595e473898a78372) )
@ -1253,7 +1286,7 @@ ROM_END
ROM_START( lhzb4 )
ROM_REGION( 0x04000, "maincpu", 0 )
// Internal ROM of IGS027A ARM based MCU
ROM_LOAD( "lhzb4_igs027a", 0x00000, 0x4000, NO_DUMP ) // unknown sticker
ROM_LOAD( "lhzb4_igs027a", 0x00000, 0x4000, CRC(de12c918) SHA1(87c1cf92a95565d78c6fe7629c19729f5fb5c2a5) ) // unknown sticker
ROM_REGION32_LE( 0x80000, "user1", 0 ) // external ARM data / prg
ROM_LOAD( "lhzb4_104.u17", 0x000000, 0x80000, CRC(6f349bbb) SHA1(54cf895889ef0f208637ba732ede696ca3603ee0) )
@ -1309,17 +1342,17 @@ ROM_END
ROM_START( extradrw ) // IGS PCB 0326-05-DV-1
ROM_REGION( 0x04000, "maincpu", 0 )
// Internal rom of IGS027A ARM based MCU
ROM_LOAD( "e1_igs027a", 0x00000, 0x4000, NO_DUMP ) // has a 'E1' sticker
ROM_LOAD( "e1_027a.bin", 0x00000, 0x4000, CRC(ebbf4922) SHA1(d2d196756317523db650bfe9e4bf2aa243e87a00) ) // has a 'E1' sticker
ROM_REGION32_LE( 0x80000, "user1", 0 ) // external ARM data / prg?
ROM_LOAD( "u21", 0x00000, 0x80000, BAD_DUMP CRC(c1641b14) SHA1(bd2525a5b38d4d8a39e99e43ef62e1d2fd3c044d) ) // 1ST AND 2ND HALF IDENTICAL, label not readable, suspected bad dump (doesn't decrypt with usual methods)
ROM_REGION32_LE( 0x80000, "user1", 0 ) // external ARM data / prg
ROM_LOAD( "u21", 0x00000, 0x80000, CRC(c1641b14) SHA1(bd2525a5b38d4d8a39e99e43ef62e1d2fd3c044d) ) // 1ST AND 2ND HALF IDENTICAL, but correct, label not readable
ROM_REGION( 0x280000, "igs017_igs031:tilemaps", 0 )
ROM_LOAD16_WORD_SWAP( "u12", 0x000000, 0x200000, CRC(642247fb) SHA1(69c01c3551551120a3786522b28a80621a0d5082) ) // 1xxxxxxxxxxxxxxxxxxxx = 0xFF, label not readable
ROM_LOAD16_WORD_SWAP( "igs m3001.u4", 0x000000, 0x080000, CRC(d161f8f7) SHA1(4b495197895fd805979c5d5c5a4b7f07a68f4171) ) // label barely readable
ROM_REGION( 0x080000, "igs017_igs031:tilemaps", 0 )
ROM_LOAD( "igs m3001.u4", 0x000000, 0x080000, CRC(d161f8f7) SHA1(4b495197895fd805979c5d5c5a4b7f07a68f4171) ) // label barely readable
ROM_REGION( 0x100000, "igs017_igs031:sprites", 0 )
ROM_LOAD( "u3", 0x000000, 0x80000, CRC(97227767) SHA1(c6a1916c0df1aceafbd488ecace5794390058c49) ) // FIXED BITS (xxxxxxx0xxxxxxxx), label not readable
ROM_REGION( 0x280000, "igs017_igs031:sprites", 0 )
ROM_LOAD( "u12", 0x000000, 0x200000, CRC(642247fb) SHA1(69c01c3551551120a3786522b28a80621a0d5082) ) // 1xxxxxxxxxxxxxxxxxxxx = 0xFF, label not readable
ROM_LOAD( "u3", 0x200000, 0x080000, CRC(97227767) SHA1(c6a1916c0df1aceafbd488ecace5794390058c49) ) // FIXED BITS (xxxxxxx0xxxxxxxx), label not readable
ROM_REGION( 0x200000, "oki", 0 )
ROM_LOAD( "igs s3002.u18", 0x00000, 0x200000, CRC(48601c32) SHA1(8ef3bad80931f4b1badf0598463e15508602f104) ) // BADADDR --xxxxxxxxxxxxxxxxxxx
@ -1366,15 +1399,14 @@ void igs_m027_state::init_klxyj()
void igs_m027_state::init_chessc2()
{
chessc2_decrypt(machine());
//m_igs017_igs031->sdwx_gfx_decrypt();
pgm_create_dummy_internal_arm_region();
m_igs017_igs031->sdwx_gfx_decrypt();
}
void igs_m027_state::init_lhzb4()
{
lhzb4_decrypt(machine());
//m_igs017_igs031->sdwx_gfx_decrypt();
pgm_create_dummy_internal_arm_region();
m_igs017_igs031->sdwx_gfx_decrypt();
m_igs017_igs031->tarzan_decrypt_sprites(0, 0);
}
void igs_m027_state::init_sddz()
@ -1413,8 +1445,8 @@ void igs_m027_state::init_fruitpar()
void igs_m027_state::init_oceanpar()
{
oceanpar_decrypt(machine());
//m_igs017_igs031->sdwx_gfx_decrypt();
pgm_create_dummy_internal_arm_region();
m_igs017_igs031->sdwx_gfx_decrypt();
m_igs017_igs031->tarzan_decrypt_sprites(0, 0);
}
void igs_m027_state::init_amazonia()
@ -1438,6 +1470,14 @@ void igs_m027_state::init_qlgs()
m_igs017_igs031->tarzan_decrypt_sprites(0, 0);
}
void igs_m027_state::init_extradrw()
{
extradrw_decrypt(machine());
m_igs017_igs031->sdwx_gfx_decrypt();
}
void igs_m027_state::init_mgzz()
{
mgzz_decrypt(machine());
@ -1447,7 +1487,7 @@ void igs_m027_state::init_mgzz()
void igs_m027_state::init_mgcs3()
{
mgcs3_decrypt(machine());
m_igs017_igs031->sdwx_gfx_decrypt(); // wrong?
m_igs017_igs031->sdwx_gfx_decrypt();
m_igs017_igs031->tarzan_decrypt_sprites(0, 0);
}
@ -1504,33 +1544,35 @@ void igs_m027_state::init_lhdmgp()
***************************************************************************/
// Complete dumps
GAME( 1999, slqz3, 0, igs_mahjong, base, igs_m027_state, init_slqz3, ROT0, "IGS", "Mahjong Shuang Long Qiang Zhu 3 (China, VS107C)", MACHINE_IS_SKELETON )
GAME( 1999, qlgs, 0, igs_mahjong, qlgs, igs_m027_state, init_qlgs, ROT0, "IGS", "Que Long Gao Shou", MACHINE_IS_SKELETON )
GAME( 1999, fruitpar, 0, igs_mahjong, base, igs_m027_state, init_fruitpar, ROT0, "IGS", "Fruit Paradise (V214)", MACHINE_IS_SKELETON )
GAME( 1999, lhdmg, 0, igs_mahjong, base, igs_m027_state, init_lhdmg, ROT0, "IGS", "Long Hu Da Man Guan", MACHINE_IS_SKELETON )
GAME( 1999, lhdmgp, lhdmg, igs_mahjong, base, igs_m027_state, init_lhdmgp, ROT0, "IGS", "Long Hu Da Man Guan Plus", MACHINE_IS_SKELETON )
GAME( 1999, lhzb3, lhdmg, igs_mahjong, base, igs_m027_state, init_lhdmg, ROT0, "IGS", "Long Hu Zhengba III", MACHINE_IS_SKELETON ) // 龙虎争霸Ⅲ
GAME( 1999, lthy, 0, igs_mahjong, base, igs_m027_state, init_lthy, ROT0, "IGS", "Long Teng Hu Yue", MACHINE_IS_SKELETON )
GAME( 2000, zhongguo, 0, igs_mahjong, base, igs_m027_state, init_zhongguo, ROT0, "IGS", "Zhong Guo Chu Da D", MACHINE_IS_SKELETON )
GAME( 200?, jking02, 0, igs_mahjong, jking02, igs_m027_state, init_jking02, ROT0, "IGS", "Jungle King 2002 (V209US)", MACHINE_IS_SKELETON )
GAME( 2003, mgzz, 0, igs_mahjong, base, igs_m027_state, init_mgzz, ROT0, "IGS", "Man Guan Zhi Zun (V101CN)", MACHINE_IS_SKELETON )
GAME( 2000, mgzza, mgzz, igs_mahjong, base, igs_m027_state, init_mgzz, ROT0, "IGS", "Man Guan Zhi Zun (V100CN)", MACHINE_IS_SKELETON )
GAME( 2007, mgcs3, 0, igs_mahjong, base, igs_m027_state, init_mgcs3, ROT0, "IGS", "Man Guan Caishen 3 (V101CN)", MACHINE_IS_SKELETON )
GAME( 1999, slqz3, 0, igs_mahjong, base, igs_m027_state, init_slqz3, ROT0, "IGS", "Mahjong Shuang Long Qiang Zhu 3 (China, VS107C)", MACHINE_NOT_WORKING )
GAME( 1999, qlgs, 0, igs_mahjong, qlgs, igs_m027_state, init_qlgs, ROT0, "IGS", "Que Long Gao Shou", MACHINE_NOT_WORKING )
GAME( 1999, fruitpar, 0, igs_mahjong, base, igs_m027_state, init_fruitpar, ROT0, "IGS", "Fruit Paradise (V214)", MACHINE_NOT_WORKING )
GAME( 1999, fruitpara, fruitpar, igs_mahjong, base, igs_m027_state, init_fruitpar, ROT0, "IGS", "Fruit Paradise (V206US)", MACHINE_NOT_WORKING )
GAME( 1999, lhdmg, 0, igs_mahjong, base, igs_m027_state, init_lhdmg, ROT0, "IGS", "Long Hu Da Man Guan", MACHINE_NOT_WORKING )
GAME( 1999, lhdmgp, lhdmg, igs_mahjong, base, igs_m027_state, init_lhdmgp, ROT0, "IGS", "Long Hu Da Man Guan Plus", MACHINE_NOT_WORKING )
GAME( 1999, lhzb3, 0, igs_mahjong, base, igs_m027_state, init_lhdmg, ROT0, "IGS", "Long Hu Zhengba III", MACHINE_NOT_WORKING ) // 龙虎争霸Ⅲ
GAME( 2004, lhzb4, 0, igs_mahjong, base, igs_m027_state, init_lhzb4, ROT0, "IGS", "Long Hu Zhengba 4", MACHINE_NOT_WORKING ) // 龙虎争霸4
GAME( 1999, lthy, 0, igs_mahjong, base, igs_m027_state, init_lthy, ROT0, "IGS", "Long Teng Hu Yue", MACHINE_NOT_WORKING )
GAME( 2000, zhongguo, 0, igs_mahjong, base, igs_m027_state, init_zhongguo, ROT0, "IGS", "Zhong Guo Chu Da D", MACHINE_NOT_WORKING )
GAME( 200?, jking02, 0, igs_mahjong, jking02, igs_m027_state, init_jking02, ROT0, "IGS", "Jungle King 2002 (V209US)", MACHINE_NOT_WORKING )
GAME( 2003, mgzz, 0, igs_mahjong, base, igs_m027_state, init_mgzz, ROT0, "IGS", "Man Guan Zhi Zun (V101CN)", MACHINE_NOT_WORKING )
GAME( 2000, mgzza, mgzz, igs_mahjong, base, igs_m027_state, init_mgzz, ROT0, "IGS", "Man Guan Zhi Zun (V100CN)", MACHINE_NOT_WORKING )
GAME( 2007, mgcs3, 0, igs_mahjong, base, igs_m027_state, init_mgcs3, ROT0, "IGS", "Man Guan Caishen 3 (V101CN)", MACHINE_NOT_WORKING )
GAME( 1999, oceanpar, 0, igs_mahjong, base, igs_m027_state, init_oceanpar, ROT0, "IGS", "Ocean Paradise (V105US)", MACHINE_NOT_WORKING ) // 1999 copyright in ROM
GAME( 1999, oceanpara, oceanpar, igs_mahjong, base, igs_m027_state, init_oceanpar, ROT0, "IGS", "Ocean Paradise (V101US)", MACHINE_NOT_WORKING ) // 1999 copyright in ROM
GAME( 200?, extradrw, 0, extradraw, base, igs_m027_state, init_extradrw, ROT0, "IGS", "Extra Draw", MACHINE_NOT_WORKING )
// these have an IGS025 protection device instead of the 8255
GAME( 2002, chessc2, 0, igs_mahjong, base, igs_m027_state, init_chessc2, ROT0, "IGS", "Chess Challenge II", MACHINE_NOT_WORKING )
// Incomplete dumps
GAME( 1999, amazonia, 0, igs_mahjong, amazonia, igs_m027_state, init_amazonia, ROT0, "IGS", "Amazonia King (V104BR)", MACHINE_IS_SKELETON )
GAME( 1999, amazonkp, amazonia, igs_mahjong, amazonia, igs_m027_state, init_amazonia, ROT0, "IGS", "Amazonia King Plus (V204BR)", MACHINE_IS_SKELETON )
GAME( 1999, oceanpar, 0, igs_mahjong, base, igs_m027_state, init_oceanpar, ROT0, "IGS", "Ocean Paradise (V105US)", MACHINE_IS_SKELETON ) // 1999 copyright in ROM
GAME( 1999, oceanpara, oceanpar, igs_mahjong, base, igs_m027_state, init_oceanpar, ROT0, "IGS", "Ocean Paradise (V101US)", MACHINE_IS_SKELETON ) // 1999 copyright in ROM
GAME( 200?, luckycrs, 0, igs_mahjong, base, igs_m027_state, init_luckycrs, ROT0, "IGS", "Lucky Cross (V106SA)", MACHINE_IS_SKELETON )
GAME( 2005, olympic5, 0, igs_mahjong, base, igs_m027_state, init_olympic5, ROT0, "IGS", "Olympic 5 (V112US)", MACHINE_IS_SKELETON ) // IGS FOR V112US 2005 02 14
GAME( 2003, olympic5a, olympic5, igs_mahjong, base, igs_m027_state, init_olympic5, ROT0, "IGS", "Olympic 5 (V107US)", MACHINE_IS_SKELETON ) // IGS FOR V107US 2003 10 2
GAME( 2003, amazoni2, 0, igs_mahjong, base, igs_m027_state, init_amazoni2, ROT0, "IGS", "Amazonia King II (V202BR)", MACHINE_IS_SKELETON )
GAME( 2002, sdwx, 0, igs_mahjong, base, igs_m027_state, init_sdwx, ROT0, "IGS", "Sheng Dan Wu Xian", MACHINE_IS_SKELETON ) // aka Christmas 5 Line? (or Amazonia King II, shares roms at least?)
GAME( 200?, sddz, 0, igs_mahjong, base, igs_m027_state, init_sddz, ROT0, "IGS", "Super Dou Di Zhu", MACHINE_IS_SKELETON )
GAME( 2004, lhzb4, 0, igs_mahjong, base, igs_m027_state, init_lhzb4, ROT0, "IGS", "Long Hu Zhengba 4", MACHINE_IS_SKELETON ) // 龙虎争霸4
GAME( 200?, klxyj, 0, igs_mahjong, base, igs_m027_state, init_klxyj, ROT0, "IGS", "Kuai Le Xi You Ji", MACHINE_IS_SKELETON )
GAME( 200?, extradrw, 0, igs_mahjong, base, igs_m027_state, init_qlgs, ROT0, "IGS", "Extra Draw", MACHINE_IS_SKELETON )
GAME( 1999, amazonia, 0, igs_mahjong, amazonia, igs_m027_state, init_amazonia, ROT0, "IGS", "Amazonia King (V104BR)", MACHINE_NOT_WORKING )
GAME( 1999, amazonkp, amazonia, igs_mahjong, amazonia, igs_m027_state, init_amazonia, ROT0, "IGS", "Amazonia King Plus (V204BR)", MACHINE_NOT_WORKING )
GAME( 2005, olympic5, 0, igs_mahjong, base, igs_m027_state, init_olympic5, ROT0, "IGS", "Olympic 5 (V112US)", MACHINE_NOT_WORKING ) // IGS FOR V112US 2005 02 14
GAME( 2003, olympic5a, olympic5, igs_mahjong, base, igs_m027_state, init_olympic5, ROT0, "IGS", "Olympic 5 (V107US)", MACHINE_NOT_WORKING ) // IGS FOR V107US 2003 10 2
GAME( 200?, luckycrs, 0, igs_mahjong, base, igs_m027_state, init_luckycrs, ROT0, "IGS", "Lucky Cross (V106SA)", MACHINE_NOT_WORKING )
GAME( 2003, amazoni2, 0, igs_mahjong, base, igs_m027_state, init_amazoni2, ROT0, "IGS", "Amazonia King II (V202BR)", MACHINE_NOT_WORKING )
GAME( 2002, sdwx, 0, igs_mahjong, base, igs_m027_state, init_sdwx, ROT0, "IGS", "Sheng Dan Wu Xian", MACHINE_NOT_WORKING ) // aka Christmas 5 Line? (or Amazonia King II, shares roms at least?)
GAME( 200?, sddz, 0, igs_mahjong, base, igs_m027_state, init_sddz, ROT0, "IGS", "Super Dou Di Zhu", MACHINE_NOT_WORKING )
GAME( 200?, klxyj, 0, igs_mahjong, base, igs_m027_state, init_klxyj, ROT0, "IGS", "Kuai Le Xi You Ji", MACHINE_NOT_WORKING )
// these have an IGS025 protection device instead of the 8255
GAME( 200?, gonefsh2, 0, igs_mahjong, base, igs_m027_state, init_gonefsh2, ROT0, "IGS", "Gone Fishing 2", MACHINE_IS_SKELETON )
GAME( 2002, chessc2, 0, igs_mahjong, base, igs_m027_state, init_chessc2, ROT0, "IGS", "Chess Challenge II", MACHINE_IS_SKELETON )
GAME( 200?, gonefsh2, 0, igs_mahjong, base, igs_m027_state, init_gonefsh2, ROT0, "IGS", "Gone Fishing 2", MACHINE_NOT_WORKING )

View file

@ -329,7 +329,7 @@ ROM_END
ROM_START( tripfev ) // IGS PCB-0447-05-GM - Has IGS027A, MX10EXAQC, IGS031, Oki M6295, 3x 8-DIP banks
ROM_REGION( 0x04000, "maincpu", 0 )
// Internal ROM of IGS027A ARM based MCU
ROM_LOAD( "w1.u37", 0x00000, 0x4000, NO_DUMP ) // sticker marked 'W1'
ROM_LOAD( "m1_igs027a.u37", 0x00000, 0x4000, CRC(a40ec1f8) SHA1(f6f7005d61522934758fd0a98bf383c6076b6afe) ) // sticker marked 'W1'
ROM_REGION32_LE( 0x80000, "user1", 0 ) // external ARM data / prg
ROM_LOAD( "triple_fever_u23_v107_us.u23", 0x000000, 0x80000, CRC(aa56d888) SHA1(0b8b2765079259b76ea803289841d867c33c8cb2) ) // 27C4096
@ -419,8 +419,8 @@ void igs_m027xa_state::init_crzybugsj()
void igs_m027xa_state::init_tripfev()
{
tripfev_decrypt(machine());
//qlgs_gfx_decrypt(machine());
pgm_create_dummy_internal_arm_region();
m_igs017_igs031->sdwx_gfx_decrypt();
m_igs017_igs031->tarzan_decrypt_sprites(0, 0);
}
void igs_m027xa_state::init_wldfruit()

View file

@ -1602,7 +1602,7 @@ void oceanpar_decrypt(running_machine &machine)
IGS27_CRYPT5_ALT
IGS27_CRYPT6
IGS27_CRYPT7_ALT
IGS27_CRYPT8_ALT
IGS27_CRYPT8
x ^= oceanpar_tab[(i>> 1) & 0xff] << 8;
@ -2172,7 +2172,7 @@ void tripfev_decrypt(running_machine &machine)
IGS27_CRYPT3
IGS27_CRYPT4_ALT // $2fc0
IGS27_CRYPT5_ALT // $35da0
IGS27_CRYPT6_ALT
IGS27_CRYPT6
IGS27_CRYPT7_ALT // $2b0
IGS27_CRYPT8 // $1100
@ -2361,3 +2361,30 @@ void lhdmgp_decrypt(running_machine &machine)
src[i] = x;
}
}
void extradrw_decrypt(running_machine &machine)
{
auto const src = util::little_endian_cast<u16>(reinterpret_cast<u32 *>(machine.root_device().memregion("user1")->base()));
int const rom_size = 0x80000;
for (int i = 0; i < rom_size / 2; i++)
{
uint16_t x = 0;
IGS27_CRYPT1
IGS27_CRYPT2_ALT
IGS27_CRYPT3_ALT2
IGS27_CRYPT4
IGS27_CRYPT5
IGS27_CRYPT6
IGS27_CRYPT7
IGS27_CRYPT8_ALT
x |= (x << 8);
src[i] ^= x;
}
}

View file

@ -54,3 +54,4 @@ void wldfruit_decrypt(running_machine &machine);
void lthy_decrypt(running_machine &machine);
void lhdmg_decrypt(running_machine &machine);
void lhdmgp_decrypt(running_machine &machine);
void extradrw_decrypt(running_machine &machine);

View file

@ -20237,7 +20237,8 @@ amazonia // (c) 1999
amazonkp // (c) 1999
chessc2 // (c) 200?
extradrw // (c) 200?
fruitpar // (c) 200?
fruitpar // (c) 1999
fruitpara // (c) 1999
gonefsh2 // (c) 200?
jking02 // (c) 200?
klxyj // (c) 200?