New systems marked not working

------------------------------
Chaoji Dou Dizhu Liang Fu Pai [dyq, little0, Guru]

New working clones
------------------
Chaoji Damanguan II (China, V754C, set 2) [dyq, little0, Guru]

New clones marked not working
-----------------------------
Chaoji Dou Dizhu (V219CN) [dyq, little0, Guru]
Chaoji Dou Dizhu (V217CN) [dyq, little0, Guru]
Long Hu Zhengba III (unknown version, set 1) [dyq, little0, Guru]
Long Hu Zhengba III (unknown version, set 2) [dyq, little0, Guru]
Long Hu Zhengba 4 (V203CN) [dyq, little0, Guru]

- igs/igs_m027.cpp: renamed Long Teng Hu Yue to Long Teng Hu Yue Duizhan Jiaqiang Ban, as per title screen [dyq]
This commit is contained in:
Ivan Vangelista 2024-10-14 19:28:52 +02:00
parent 7bbf56ec82
commit 764f17e453
5 changed files with 251 additions and 24 deletions

View File

@ -671,6 +671,7 @@ public:
void init_mgdh();
void init_mgdha();
void init_sdmg2();
void init_sdmg2a();
void init_sdmg2p();
void init_slqz2();
void init_spkrform();
@ -1461,6 +1462,57 @@ void igs017_state::init_sdmg2()
}
}
//
void igs017_state::init_sdmg2a()
{
const int rom_size = memregion("maincpu")->bytes();
u16 * const rom = (u16 *)memregion("maincpu")->base();
for (int i = 0; i < rom_size / 2; i++)
{
u16 x = rom[i];
// bit 0 xor layer
if (i & 0x20/2)
{
if (i & 0x02/2)
{
x ^= 0x0001;
}
}
if (!(i & 0x4000/2))
{
if (!(i & 0x300/2))
{
x ^= 0x0001;
}
}
// bit 9 xor layer
if (i & 0x20000/2)
{
x ^= 0x0200;
}
else
{
if (!(i & 0x200/2))
{
x ^= 0x0200;
}
}
// bit 12 xor layer
if (i & 0x20000/2)
{
x ^= 0x1000;
}
rom[i] = x;
}
}
// sdmg2p
void igs017_state::init_sdmg2p()
@ -5387,6 +5439,21 @@ ROM_START( sdmg2 )
ROM_LOAD( "s0903.u15", 0x00000, 0x80000, CRC(ae5a441c) SHA1(923774ef73ab0f70e0db1738a4292dcbd70d2384) )
ROM_END
ROM_START( sdmg2a ) // supposedly earlier / easier, but reports same version as the other set
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD16_WORD_SWAP( "p0900.u25", 0x00000, 0x80000,CRC(1afc95d8) SHA1(924e198437359beec2abe6ee42a985f63d70b7e3) ) // SLDH
ROM_REGION( 0x280000, "igs017_igs031:sprites", 0 )
ROM_LOAD( "m0901.u5", 0x000000, 0x200000, CRC(9699db24) SHA1(50fc2f173c20b48d10595f01f1e9545f1b13a61b) ) // FIXED BITS (xxxxxxxx0xxxxxxx)
ROM_LOAD( "m0902.u4", 0x200000, 0x080000, CRC(3298b13b) SHA1(13b21ddeed368b7f4fea1408c8fc511244342faf) ) // FIXED BITS (xxxxxxxx0xxxxxxx)
ROM_REGION( 0x20000, "igs017_igs031:tilemaps", 0 )
ROM_LOAD( "text.u6", 0x000000, 0x020000, CRC(cb34cbc0) SHA1(ceedbdda085fd1acc9a575502bdf7cf998f54f05) )
ROM_REGION( 0x80000, "oki", 0 )
ROM_LOAD( "s0903.u15", 0x00000, 0x80000, CRC(ae5a441c) SHA1(923774ef73ab0f70e0db1738a4292dcbd70d2384) )
ROM_END
/***************************************************************************
Maque Wangchao / Chaoji Damanguan 2 - Jiaqiang Ban
@ -6094,7 +6161,8 @@ GAME ( 1996, iqblocka, iqblock, iqblocka, iqblocka, igs017_state, init_iqb
GAME ( 1997, iqblockf, iqblock, iqblockf, iqblockf, igs017_state, init_iqblocka, ROT0, "IGS", "IQ Block (V113FR, gambling)", 0 )
GAME ( 1997, mgdh, 0, mgdh, mgdh, igs017_state, init_mgdh, ROT0, "IGS", "Manguan Daheng (Taiwan, V125T1)", MACHINE_IMPERFECT_COLORS | MACHINE_UNEMULATED_PROTECTION) // 滿貫大亨, wrong colors in betting screen, game id check (patched out)
GAME ( 1997, mgdha, mgdh, mgdha, mgdh, igs017_state, init_mgdha, ROT0, "IGS", "Manguan Daheng (Taiwan, V123T1)", 0 ) // 滿貫大亨
GAME ( 1997, sdmg2, 0, sdmg2, sdmg2, igs017_state, init_sdmg2, ROT0, "IGS", "Chaoji Damanguan II (China, V754C)", 0 ) // 超級大滿貫II
GAME ( 1997, sdmg2, 0, sdmg2, sdmg2, igs017_state, init_sdmg2, ROT0, "IGS", "Chaoji Damanguan II (China, V754C, set 1)", 0 ) // 超級大滿貫II
GAME ( 1997, sdmg2a, sdmg2, sdmg2, sdmg2, igs017_state, init_sdmg2a, ROT0, "IGS", "Chaoji Damanguan II (China, V754C, set 2)", 0 ) // 超級大滿貫II
GAME ( 1997, tjsb, 0, tjsb, tjsb, igs017_state, init_tjsb, ROT0, "IGS", "Tian Jiang Shen Bing (China, V137C)", MACHINE_UNEMULATED_PROTECTION ) // 天將神兵, fails the bonus round protection check (if enabled via DSW), see e.g. demo mode
GAME ( 1998, genius6, 0, genius6, genius6, igs017_state, init_iqblocka, ROT0, "IGS", "Genius 6 (V110F)", 0 ) // shows Chinese text in puzzle game
GAME ( 1997, genius6a, genius6, genius6, genius6, igs017_state, init_iqblocka, ROT0, "IGS", "Genius 6 (V133F)", 0 ) // clone because it has older copyright year

View File

@ -7,14 +7,14 @@
These games use the IGS027A processor. This is an ARM7 with internal
ROM (also used on later PGM games).
In some cases the first part of the Internal ROM is execute only, and
In some cases the first part of the internal ROM is execute only, and
cannot be read out with a trojan. It hasn't been confirmed if these
games make use of that feature.
To emulate these games the Internal ROM will need dumping
To emulate these games the internal ROM will need dumping.
There are at least 20 other games on this and similar platforms.
Hold service on boot to access input test and sond test when
Hold service on boot to access input test and sound test when
implemented.
Some DIP switch settings stick in non-volatile RAM (e.g. link settings
@ -24,6 +24,10 @@
TODO:
* I/O for remaining games
* Coin lockout (zhongguo displays a coin error on unexpected coins)
* Verify I/O hasn't changed between versions of cjddz (current based on V215CN)
* Verify I/O hasn't changed between versions of lhzb3 (current based on V400CN).
(once the other versions work)
* Verify I/O hasn't changed between versions of lhzb4 (current based on V104CN)
*/
#include "emu.h"
@ -89,7 +93,7 @@ public:
void lhdmg(machine_config &config) ATTR_COLD;
void cjddz(machine_config &config) ATTR_COLD;
void lhzb4(machine_config &config) ATTR_COLD;
void lthy(machine_config &config) ATTR_COLD;
void lthyp(machine_config &config) ATTR_COLD;
void zhongguo(machine_config &config) ATTR_COLD;
void mgzz(machine_config &config) ATTR_COLD;
void oceanpar(machine_config &config) ATTR_COLD;
@ -114,7 +118,7 @@ public:
void init_mgcs3() ATTR_COLD;
void init_jking02() ATTR_COLD;
void init_lhdmg() ATTR_COLD;
void init_lthy() ATTR_COLD;
void init_lthyp() ATTR_COLD;
void init_luckycrs() ATTR_COLD;
void init_olympic5() ATTR_COLD;
void init_tripslot() ATTR_COLD;
@ -818,7 +822,14 @@ INPUT_PORTS_START( lhzb4 )
PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "SW3:8" )
INPUT_PORTS_END
INPUT_PORTS_START( lthy )
INPUT_PORTS_START( lhzb4_todo )
PORT_INCLUDE(lhzb4)
PORT_MODIFY("DSW1")
PORT_DIPUNKNOWN_DIPLOC( 0x01, 0x01, "SW1:1" )
INPUT_PORTS_END
INPUT_PORTS_START( lthyp )
PORT_INCLUDE(mahjong_kbd_joy)
PORT_MODIFY("TEST")
@ -1144,6 +1155,17 @@ INPUT_PORTS_START( cjddz )
PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "SW3:8" )
INPUT_PORTS_END
INPUT_PORTS_START( cjddz_todo )
PORT_INCLUDE(cjddz)
PORT_MODIFY("DSW1")
PORT_DIPUNKNOWN_DIPLOC( 0x01, 0x01, "SW1:1" )
PORT_DIPUNKNOWN_DIPLOC( 0x02, 0x02, "SW1:2" )
PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x04, "SW1:3" )
PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "SW1:4" )
PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "SW1:5" )
INPUT_PORTS_END
INPUT_PORTS_START( cjddzp )
PORT_INCLUDE(igs_mahjong_matrix)
@ -1844,7 +1866,7 @@ void igs_m027_state::lhzb4(machine_config &config)
m_oki->set_clock(2'000'000);
}
void igs_m027_state::lthy(machine_config &config)
void igs_m027_state::lthyp(machine_config &config)
{
m027_1ppi<true>(config);
@ -1859,7 +1881,7 @@ void igs_m027_state::lthy(machine_config &config)
void igs_m027_state::zhongguo(machine_config &config)
{
lthy(config);
lthyp(config);
HOPPER(config, m_hopper, attotime::from_msec(50));
}
@ -2353,6 +2375,47 @@ ROM_START( lhzb3 )
ROM_LOAD( "s2402.u14", 0x00000, 0x100000, CRC(56083fe2) SHA1(62afd651809bf5e639bfda6e5579dbf4b903b664) )
ROM_END
ROM_START( lhzb3unk )
ROM_REGION( 0x04000, "maincpu", 0 )
// Internal ROM of IGS027A type G ARM based MCU
// stickered u10. Doesn't seem to be compatible with the lhzb3 dump. Needs trojan.
ROM_LOAD( "u10_027a.bin", 0x00000, 0x4000, NO_DUMP )
ROM_REGION32_LE( 0x200000, "user1", 0 ) // external ARM data / prg
ROM_LOAD( "106c5n.u27", 0x000000, 0x200000, CRC(86031487) SHA1(d7bfe102ef4248e692d653edd479392ed7e20c28) ) // 11xxxxxxxxxxxxxxxxxxx = 0xFF
ROM_REGION( 0x080000, "igs017_igs031:tilemaps", 0 )
ROM_LOAD( "igs_m2403.u17", 0x000000, 0x080000, CRC(a82398a9) SHA1(4d2987f57096b7f24ce6571ed3be6dcb33bce88d) )
ROM_REGION( 0x400000, "igs017_igs031:sprites", 0 )
ROM_LOAD( "igs_m2401.u29", 0x000000, 0x400000, CRC(81428f18) SHA1(9fb19c8a79cc3443642f4b044e04735df2cb45be) ) // FIXED BITS (xxxxxxxx0xxxxxxx)
ROM_REGION( 0x200000, "oki", 0 )
ROM_LOAD( "igs_s2402.u26", 0x000000, 0x200000, CRC(84bc2f3e) SHA1(49dcf5eaa39accd5c6bf01782fd4221298cb43ed) ) // 1ST AND 2ND HALF IDENTICAL
ROM_END
// This board is a bit different to the others. Main osc is 22.1184MHz
// Everything is the same except no IGS027A. Instead there is a QFP128 chip in the place where the 027A would be.
// It's clear this is a 027A replacement. The PCB still has the silk-screening for the pin numbers on the 027A but no QFP pads for it.
// Only the QFP128 chip is there. With external program ROM removed and powered on, it only shows garbage.
ROM_START( lhzb3unk2 ) // sent as Long Hu Zheng Ba 3 Upgrade Version
ROM_REGION( 0x04000, "maincpu", 0 )
// Internal ROM of IGS027A sub (if there is one)
ROM_LOAD( "lhzb3unk2_igs027a", 0x00000, 0x4000, NO_DUMP )
ROM_REGION32_LE( 0x200000, "user1", 0 ) // external ARM data / prg
ROM_LOAD( "igs_p2401.u10", 0x000000, 0x80000, CRC(47d26b39) SHA1(85016799ee9cd2ccb905262a9ec7f0dee0d6537e) ) // 11xxxxxxxxxxxxxxxxxxx = 0xFF
ROM_REGION( 0x080000, "igs017_igs031:tilemaps", 0 )
ROM_LOAD( "igs_m2403.u9", 0x000000, 0x080000, CRC(a82398a9) SHA1(4d2987f57096b7f24ce6571ed3be6dcb33bce88d) )
ROM_REGION( 0x400000, "igs017_igs031:sprites", 0 )
ROM_LOAD( "igs_m2404.u18", 0x000000, 0x400000, CRC(2379cdf3) SHA1(6f73dcb9c48e7bf02d67e6580c3ff86be3d9133c) ) // FIXED BITS (xxxxxxxx0xxxxxxx)
ROM_REGION( 0x200000, "oki", 0 )
ROM_LOAD( "igs_s2402.u26", 0x000000, 0x200000, CRC(84bc2f3e) SHA1(49dcf5eaa39accd5c6bf01782fd4221298cb43ed) ) // 1ST AND 2ND HALF IDENTICAL
ROM_END
/*********************************************************************************
@ -2398,7 +2461,7 @@ Notes:
*********************************************************************************/
ROM_START( lhdmg ) // appears to be a different edition of lhzb3 and lthy (GFX and sound ROM match)
ROM_START( lhdmg ) // appears to be a different edition of lhzb3 and lthyp (GFX and sound ROM match)
ROM_REGION( 0x04000, "maincpu", 0 )
// Internal ROM of IGS027A type G ARM based MCU
ROM_LOAD( "b6_igs027a", 0x00000, 0x4000, CRC(75645f8c) SHA1(738fba64a906f4f10e78e332ad30b8da9dc86b21) )
@ -2416,7 +2479,7 @@ ROM_START( lhdmg ) // appears to be a different edition of lhzb3 and lthy (GFX a
ROM_LOAD( "s2402.u14", 0x000000, 0x100000, CRC(56083fe2) SHA1(62afd651809bf5e639bfda6e5579dbf4b903b664) )
ROM_END
ROM_START( lhdmgp ) // appears to be a different edition of lhzb3 and lthy (GFX and sound ROM match)
ROM_START( lhdmgp ) // appears to be a different edition of lhzb3 and lthyp (GFX and sound ROM match)
ROM_REGION( 0x04000, "maincpu", 0 )
// Internal ROM of IGS027A type G ARM based MCU
ROM_LOAD( "b4_igs027a", 0x00000, 0x4000, CRC(6fd48959) SHA1(75cb6fc6ea3c36805d1a61536e2f2476942c0c49) )
@ -2577,7 +2640,7 @@ Notes:
*********************************************************************************/
ROM_START( lthy ) // appears to be a different edition of lhzb3 (GFX and sound ROM match)
ROM_START( lthyp ) // appears to be a different edition of lhzb3 (GFX and sound ROM match)
ROM_REGION( 0x04000, "maincpu", 0 )
// Internal ROM of IGS027A type G ARM based MCU
ROM_LOAD( "d6_igs027a", 0x00000, 0x4000, CRC(b29ee32b) SHA1(aa5f1f8ed8d61dd328c4c28a7bba700935526d26) )
@ -2765,10 +2828,52 @@ ROM_END
// samples at u4 (or u5?)
// 超级斗地主 (Chāojí Dòu Dìzhǔ)
ROM_START( cjddz )
ROM_START( cjddz ) // PCB-0489-05-FM-1
ROM_REGION( 0x04000, "maincpu", 0 )
// Internal ROM of IGS027A ARM based MCU
ROM_LOAD( "cjddz_igs027a", 0x00000, 0x4000, CRC(124f4bee) SHA1(bf9785516ef36290c2a7bac307bb2d849f2045ae) ) // unknown sticker
// stickered B6 but doesn't work with other B6 dumps. Using the dump for cjddz215cn which works, waiting for trojan
ROM_LOAD( "cjddz_igs027a", 0x00000, 0x4000, BAD_DUMP CRC(124f4bee) SHA1(bf9785516ef36290c2a7bac307bb2d849f2045ae) )
ROM_REGION32_LE( 0x80000, "user1", 0 ) // external ARM data / prg
ROM_LOAD( "p1.u17", 0x000000, 0x80000, CRC(81bc6ff6) SHA1(ca07b9becf6dd8724be339d8eee29c908dc10422) )
ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 )
ROM_LOAD16_WORD_SWAP( "m3.u27", 0x000000, 0x80000, CRC(520dc392) SHA1(0ab2620f20af8253806b6ff4e1d9d77a694da17c) )
ROM_REGION( 0x400000, "igs017_igs031:sprites", 0 )
ROM_LOAD( "m4.u28", 0x000000, 0x400000, CRC(72487508) SHA1(9f4bbc858960ddaae403e4a3330b2345f6fd6cb3))
// OKI, sample tables are every 0x20000 starting at 0x40000
// 00000-1ffff and 20000-3ffff are likely music, always mapped at 20000 for any of the above banks
ROM_REGION( 0x200000, "oki", 0 )
ROM_LOAD( "s2.u5", 0x000000, 0x200000, CRC(64fbba95) SHA1(1aecb1b8426939262688e4dbed09d6a56e71b8d5) )
ROM_END
ROM_START( cjddz217cn ) // PCB-0489-05-FM-1
ROM_REGION( 0x04000, "maincpu", 0 )
// Internal ROM of IGS027A ARM based MCU
// stickered s12. Using the dump for cjddz215cn which works, waiting for trojan
ROM_LOAD( "cjddz217cn_igs027a", 0x00000, 0x4000, BAD_DUMP CRC(124f4bee) SHA1(bf9785516ef36290c2a7bac307bb2d849f2045ae) )
ROM_REGION32_LE( 0x80000, "user1", 0 ) // external ARM data / prg
ROM_LOAD( "v-217cn.u17", 0x000000, 0x80000, CRC(42df949c) SHA1(262237d8219d41b04a99156289858fc63f9614dd) )
ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 )
ROM_LOAD16_WORD_SWAP( "text.u27", 0x000000, 0x80000, CRC(520dc392) SHA1(0ab2620f20af8253806b6ff4e1d9d77a694da17c) )
ROM_REGION( 0x400000, "igs017_igs031:sprites", 0 )
ROM_LOAD( "igs_w05005w32m_f9ce_1d10.u28", 0x000000, 0x400000, CRC(72487508) SHA1(9f4bbc858960ddaae403e4a3330b2345f6fd6cb3))
// OKI, sample tables are every 0x20000 starting at 0x40000
// 00000-1ffff and 20000-3ffff are likely music, always mapped at 20000 for any of the above banks
ROM_REGION( 0x200000, "oki", 0 )
ROM_LOAD( "igs_w05004b16m_8fa9_427d.u5", 0x000000, 0x200000, CRC(64fbba95) SHA1(1aecb1b8426939262688e4dbed09d6a56e71b8d5) )
ROM_END
ROM_START( cjddz215cn )
ROM_REGION( 0x04000, "maincpu", 0 )
// Internal ROM of IGS027A ARM based MCU
ROM_LOAD( "cjddz215cn_igs027a", 0x00000, 0x4000, CRC(124f4bee) SHA1(bf9785516ef36290c2a7bac307bb2d849f2045ae) ) // unknown sticker
ROM_REGION32_LE( 0x80000, "user1", 0 ) // external ARM data / prg
ROM_LOAD( "ddz_218cn.u17", 0x000000, 0x80000, CRC(3cfe38d5) SHA1(9c7f82ecffbc22879583519d5f753bb35e973ee3) )
@ -2789,7 +2894,7 @@ ROM_END
ROM_START( cjddzp )
ROM_REGION( 0x04000, "maincpu", 0 )
// Internal ROM of IGS027A ARM based MCU
ROM_LOAD( "sddzp_027a.rom", 0x00000, 0x4000, CRC(6cf26c3d) SHA1(c74d4ff71ff07c38449242e7e067e956a5c441be) ) // E10
ROM_LOAD( "e10_igs027a.rom", 0x00000, 0x4000, CRC(6cf26c3d) SHA1(c74d4ff71ff07c38449242e7e067e956a5c441be) ) // E10
ROM_REGION32_LE( 0x80000, "user1", 0 ) // external ARM data / prg
ROM_LOAD( "cjddzp_s300cn.u17", 0x000000, 0x80000, CRC(5c1501ee) SHA1(701ba1cd1c4487846159c444bc58204348c1f590) )
@ -2805,8 +2910,49 @@ ROM_START( cjddzp )
ROM_LOAD( "cjddzp_sp-1.u4", 0x00000, 0x200000, CRC(7ef65d95) SHA1(345c587cd449d6d06908e9687480be76b2cb2d28) )
ROM_END
// Chaoji Dou Dizhu Liang Fu Pai
ROM_START( cjddzlf )
ROM_REGION( 0x04000, "maincpu", 0 )
// Internal ROM of IGS027A ARM based MCU
ROM_LOAD( "cjddz215cn_igs027a", 0x00000, 0x4000, CRC(124f4bee) SHA1(bf9785516ef36290c2a7bac307bb2d849f2045ae) ) // unknown sticker
ROM_REGION32_LE( 0x80000, "user1", 0 ) // external ARM data / prg
ROM_LOAD( "igs_l2405.u17", 0x000000, 0x80000, CRC(ec310408) SHA1(acf7998017b86fff8b515f239459fff0c1eb43b6) )
ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 )
ROM_LOAD16_WORD_SWAP( "igs_m2401.u27", 0x000000, 0x80000, CRC(670aa9f3) SHA1(20cf2210ce4616d82712fcc71b2e950986279b58) )
ROM_REGION( 0x800000, "igs017_igs031:sprites", 0 )
ROM_LOAD( "igs_s2402.u28", 0x000000, 0x400000, CRC(78d9c5a4) SHA1(1943b0f3b639c1b974a26e29ccc5edd61499f6f9) ) // FIXED BITS (xxxxxxx0xxxxxxxx)
ROM_LOAD( "igs_m2403.u29", 0x400000, 0x400000, CRC(a6d09c16) SHA1(c900c79d755e897b343d5b607d8395fb68158867) ) // FIXED BITS (xxxxxxxx0xxxxxxx)
// OKI, sample tables are every 0x20000 starting at 0x140000
ROM_REGION( 0x200000, "oki", 0 )
ROM_LOAD( "igs_l2404.u5", 0x00000, 0x200000, CRC(55f6dfac) SHA1(876bec8db5aa3dfd10869ecdcd98bccb2ef860ef) )
ROM_END
// 龙虎争霸4 (Lóng Hǔ Zhēngbà 4)
ROM_START( lhzb4 )
ROM_START( lhzb4 ) // was sent as 'Flower Version'. Only 2 DIP banks are populated.
ROM_REGION( 0x04000, "maincpu", 0 )
// Internal ROM of IGS027A ARM based MCU
// stickered F12. Using the dump for lhzb4104cn which works, waiting for trojan
ROM_LOAD( "f12_igs027a", 0x00000, 0x4000, CRC(de12c918) SHA1(87c1cf92a95565d78c6fe7629c19729f5fb5c2a5) ) // F12
ROM_REGION32_LE( 0x200000, "user1", 0 ) // external ARM data / prg
ROM_LOAD( "v-203cn.u46", 0x000000, 0x200000, CRC(96d0cb19) SHA1(e5a450a9767327f5ceb0611400fe40b3582c0e8d) )
ROM_REGION( 0x200000, "igs017_igs031:tilemaps", 0 )
ROM_LOAD16_WORD_SWAP( "text_u26.u26", 0x000000, 0x200000, CRC(39d10d8f) SHA1(2c4869ee0cf142a7eb34378bbdfbb6eb58ebc954) )
ROM_REGION( 0x400000, "igs017_igs031:sprites", 0 )
ROM_LOAD( "igs_a05501w032_d07e_01e0.u28", 0x000000, 0x400000, CRC(f78b3714) SHA1(c73d8e50b04126bc4f91783384713624ed133ee2) )
// OKI, sample tables are every 0x20000 starting at 0x140000
ROM_REGION( 0x200000, "oki", 0 )
ROM_LOAD( "igs_w05502b016_45d1_756d.u5", 0x00000, 0x200000, CRC(467f677e) SHA1(63927c0d606176c0e22db89ea3a9777ed702abbd) )
ROM_END
ROM_START( lhzb4104cn )
ROM_REGION( 0x04000, "maincpu", 0 )
// Internal ROM of IGS027A ARM based MCU
ROM_LOAD( "lhzb4_igs027a", 0x00000, 0x4000, CRC(de12c918) SHA1(87c1cf92a95565d78c6fe7629c19729f5fb5c2a5) ) // unknown sticker
@ -3023,9 +3169,9 @@ void igs_m027_state::init_jking02()
// the sprite ROM at 0x400000 doesn't require decryption
}
void igs_m027_state::init_lthy()
void igs_m027_state::init_lthyp()
{
lthy_decrypt(machine());
lthyp_decrypt(machine());
m_igs017_igs031->set_text_reverse_bits(false);
}
@ -3090,8 +3236,9 @@ GAME( 1999, qlgs, 0, qlgs, qlgs, igs_m027_stat
GAME( 1999, lhdmg, 0, lhdmg, lhdmg, igs_m027_state, init_lhdmg, ROT0, "IGS", "Long Hu Da Manguan (V102C3M)", 0 )
GAME( 1999, lhdmgp, 0, lhdmg, lhdmg, igs_m027_state, init_lhdmg, ROT0, "IGS", "Long Hu Da Manguan Duizhan Jiaqiang Ban (V400C3M)", 0 )
GAME( 1999, lhzb3, 0, lhdmg, lhzb3, igs_m027_state, init_lhdmg, ROT0, "IGS", "Long Hu Zhengba III (V400CN)", 0 )
GAME( 2004, lhzb4, 0, lhzb4, lhzb4, igs_m027_state, init_lhzb4, ROT0, "IGS", "Long Hu Zhengba 4 (V104CN)", 0 )
GAME( 1999, lthy, 0, lthy, lthy, igs_m027_state, init_lthy, ROT0, "IGS", "Long Teng Hu Yue (S104CN)", MACHINE_NODEVICE_LAN )
GAME( 2004, lhzb4, 0, lhzb4, lhzb4_todo, igs_m027_state, init_lhzb4, ROT0, "IGS", "Long Hu Zhengba 4 (V203CN)", MACHINE_NOT_WORKING ) // needs I/O verifying
GAME( 2004, lhzb4104cn, lhzb4, lhzb4, lhzb4, igs_m027_state, init_lhzb4, ROT0, "IGS", "Long Hu Zhengba 4 (V104CN)", 0 )
GAME( 1999, lthyp, 0, lthyp, lthyp, igs_m027_state, init_lthyp, ROT0, "IGS", "Long Teng Hu Yue Duizhan Jiaqiang Ban (S104CN)", MACHINE_NODEVICE_LAN )
GAME( 2000, zhongguo, 0, zhongguo, zhongguo, igs_m027_state, init_zhongguo, ROT0, "IGS", "Zhongguo Chu Da D (V102C)", 0 )
GAMEL( 200?, jking02, 0, jking02, jking02, igs_m027_state, init_jking02, ROT0, "IGS", "Jungle King 2002 (V209US)", MACHINE_NODEVICE_LAN, layout_jking02 ) // shows V212US in bookkeeping menu
GAME( 2003, mgzz, 0, mgzz, mgzz101cn, igs_m027_state, init_mgzz, ROT0, "IGS", "Manguan Zhizun (V101CN)", 0 )
@ -3101,7 +3248,9 @@ GAMEL( 1999, oceanpar, 0, oceanpar, oceanpar105us, igs_m027_stat
GAMEL( 1999, oceanpar101us, oceanpar, oceanpar, oceanpar101us, igs_m027_state, init_oceanpar, ROT0, "IGS", "Ocean Paradise (V101US)", 0, layout_oceanpar ) // 1999 copyright in ROM
GAMEL( 1999, fruitpar, 0, oceanpar, oceanpar105us, igs_m027_state, init_fruitpar, ROT0, "IGS", "Fruit Paradise (V214US)", 0, layout_oceanpar )
GAMEL( 1999, fruitpar206us, fruitpar, oceanpar, fruitpar206us, igs_m027_state, init_fruitpar, ROT0, "IGS", "Fruit Paradise (V206US)", 0, layout_oceanpar )
GAME( 200?, cjddz, 0, cjddz, cjddz, igs_m027_state, init_cjddz, ROT0, "IGS", "Chaoji Dou Dizhu (V215CN)", 0 )
GAME( 200?, cjddz, 0, cjddz, cjddz_todo, igs_m027_state, init_cjddz, ROT0, "IGS", "Chaoji Dou Dizhu (V219CN)", MACHINE_NOT_WORKING ) // needs I/O verifying
GAME( 200?, cjddz217cn, cjddz, cjddz, cjddz_todo, igs_m027_state, init_cjddz, ROT0, "IGS", "Chaoji Dou Dizhu (V217CN)", MACHINE_NOT_WORKING ) // needs I/O verifying
GAME( 200?, cjddz215cn, cjddz, cjddz, cjddz, igs_m027_state, init_cjddz, ROT0, "IGS", "Chaoji Dou Dizhu (V215CN)", 0 )
GAME( 200?, cjddzp, 0, cjddz, cjddzp, igs_m027_state, init_cjddzp, ROT0, "IGS", "Chaoji Dou Dizhu Jiaqiang Ban (S300CN)", MACHINE_NODEVICE_LAN )
GAMEL( 2007, tripslot, 0, tripslot, tripslot, igs_m027_state, init_tripslot, ROT0, "IGS", "Triple Slot (V200VE)", 0, layout_tripslot ) // 2007 date in internal ROM at least, could be later, default settings password is all 'start 1'
// this has a 2nd 8255
@ -3118,5 +3267,8 @@ GAME( 200?, luckycrs, 0, m027_1ppi<false>, base, igs_m027_state
GAME( 2003, amazoni2, 0, m027_1ppi<false>, base, igs_m027_state, init_amazoni2, ROT0, "IGS", "Amazonia King II (V202BR)", MACHINE_NOT_WORKING )
GAME( 2002, sdwx, 0, m027_1ppi<false>, 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?, klxyj, 0, m027_1ppi<false>, base, igs_m027_state, init_klxyj, ROT0, "IGS", "Kuai Le Xi You Ji", MACHINE_NOT_WORKING )
GAME( 1999, lhzb3unk, lhzb3, m027_1ppi<false>, base, igs_m027_state, empty_init, ROT0, "IGS", "Long Hu Zhengba III (unknown version, set 1)", MACHINE_NOT_WORKING )
GAME( 1999, lhzb3unk2, lhzb3, m027_1ppi<false>, base, igs_m027_state, empty_init, ROT0, "IGS", "Long Hu Zhengba III (unknown version, set 2)", MACHINE_NOT_WORKING )
GAME( 200?, cjddzlf, 0, m027_1ppi<false>, base, igs_m027_state, empty_init, ROT0, "IGS", "Chaoji Dou Dizhu Liang Fu Pai", MACHINE_NOT_WORKING )
// these have an IGS025 protection device instead of the 8255
GAME( 200?, gonefsh2, 0, m027_noppi<false>,base, igs_m027_state, init_gonefsh2, ROT0, "IGS", "Gone Fishing 2", MACHINE_NOT_WORKING )

View File

@ -1802,7 +1802,7 @@ void wldfruit_decrypt(running_machine &machine)
// IGS MAHJONG CHINA S104CN
void lthy_decrypt(running_machine &machine)
void lthyp_decrypt(running_machine &machine)
{
memory_region *const region = machine.root_device().memregion("user1");
auto const src = util::little_endian_cast<u16>(reinterpret_cast<u32 *>(region->base()));

View File

@ -56,7 +56,7 @@ void olympic5_decrypt(running_machine &machine);
void icescape_decrypt(running_machine &machine);
void tripfev_decrypt(running_machine &machine);
void wldfruit_decrypt(running_machine &machine);
void lthy_decrypt(running_machine &machine);
void lthyp_decrypt(running_machine &machine);
void lhdmg_decrypt(running_machine &machine);
void tripslot_decrypt(running_machine &machine);
void extradrw_decrypt(running_machine &machine);

View File

@ -20302,6 +20302,7 @@ mgcsa // (c) 1998
mgdh // (c) 1997
mgdha // (c) 1997
sdmg2 // (c) 1997
sdmg2a // (c) 1997
sdmg2p // (c) 2000
slqz2 // (c) 1998
slqz2a // (c) 1998
@ -20324,6 +20325,9 @@ amazonia // (c) 1999
amazonkp // (c) 1999
chessc2 // (c) 200?
cjddz // (c) 200?
cjddz215cn // (c) 200?
cjddz217cn // (c) 200?
cjddzlf // (c) 200?
cjddzp // (c) 200?
extradrw // (c) 200?
fruitpar // (c) 1999
@ -20334,8 +20338,11 @@ klxyj // (c) 200?
lhdmg // (c) 1999
lhdmgp // (c) 1999
lhzb3 // (c) 200?
lhzb3unk // (c) 200?
lhzb3unk2 // (c) 200?
lhzb4 // (c) 200?
lthy // (c) 1999
lhzb4104cn // (c) 200?
lthyp // (c) 1999
luckycrs // (c) 200?
mgcs3 // (c) 200?
mgzz // (c) 2003