From ecf65b94f23c9bd6bbbca624b7b8538db886cd02 Mon Sep 17 00:00:00 2001 From: mamehaze <140764005+mamehaze@users.noreply.github.com> Date: Wed, 9 Oct 2024 14:18:07 +0100 Subject: igs/igs_m027.cpp: Added Chaoji Dou Dizhu Jiaqiang Ban. (#12865) New working systems ---------- Chaoji Dou Dizhu Plus (S300CN) [XingXing] --- src/mame/igs/igs_m027.cpp | 31 ++++++++++++++++++++++++++++++- src/mame/igs/pgmcrypt.cpp | 23 +++++++++++++++++++++++ src/mame/igs/pgmcrypt.h | 1 + src/mame/mame.lst | 1 + 4 files changed, 55 insertions(+), 1 deletion(-) diff --git a/src/mame/igs/igs_m027.cpp b/src/mame/igs/igs_m027.cpp index 0fd5e8bf76d..27051658e3b 100644 --- a/src/mame/igs/igs_m027.cpp +++ b/src/mame/igs/igs_m027.cpp @@ -95,6 +95,7 @@ public: void init_lhzb4() ATTR_COLD; void init_gonefsh2() ATTR_COLD; void init_cjddz() ATTR_COLD; + void init_cjddzp() ATTR_COLD; void init_zhongguo() ATTR_COLD; void init_klxyj() ATTR_COLD; void init_slqz3() ATTR_COLD; @@ -2699,6 +2700,26 @@ ROM_START( cjddz ) ROM_LOAD( "ddz_sp.u4", 0x00000, 0x200000, CRC(7ef65d95) SHA1(345c587cd449d6d06908e9687480be76b2cb2d28) ) ROM_END +// 超级斗地主加强版 (Chāojí Dòu Dìzhǔ Jiāqiáng Bǎn) +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_REGION32_LE( 0x80000, "user1", 0 ) // external ARM data / prg + ROM_LOAD( "cjddzp_s300cn.u17", 0x000000, 0x80000, CRC(5c1501ee) SHA1(701ba1cd1c4487846159c444bc58204348c1f590) ) + + ROM_REGION( 0x200000, "igs017_igs031:tilemaps", 0 ) + ROM_LOAD16_WORD_SWAP( "cjddzp_text.u27", 0x000000, 0x200000, CRC(c4daedd6) SHA1(1c06e9b8f8c9849d808e12d81588f8d5603941d1) ) + + ROM_REGION( 0x600000, "igs017_igs031:sprites", 0 ) + ROM_LOAD( "cjddzp_anicg.u28", 0x000000, 0x400000, CRC(72487508) SHA1(9f4bbc858960ddaae403e4a3330b2345f6fd6cb3) ) + ROM_LOAD( "cjddzp_extcg.u29", 0x400000, 0x200000, CRC(b0447269) SHA1(bf639abc135b52781340a24820e402db497d8d09) ) + + ROM_REGION( 0x200000, "oki", 0 ) + ROM_LOAD( "cjddzp_sp-1.u4", 0x00000, 0x200000, CRC(7ef65d95) SHA1(345c587cd449d6d06908e9687480be76b2cb2d28) ) +ROM_END + // 龙虎争霸4 (Lóng Hǔ Zhēngbà 4) ROM_START( lhzb4 ) ROM_REGION( 0x04000, "maincpu", 0 ) @@ -2834,6 +2855,13 @@ void igs_m027_state::init_cjddz() m_igs017_igs031->tarzan_decrypt_sprites(0, 0); } +void igs_m027_state::init_cjddzp() +{ + cjddzp_decrypt(machine()); + m_igs017_igs031->sdwx_gfx_decrypt(); + m_igs017_igs031->tarzan_decrypt_sprites(0x400000, 0x400000); +} + void igs_m027_state::init_gonefsh2() { gonefsh2_decrypt(machine()); @@ -2975,7 +3003,7 @@ void igs_m027_state::init_chessc2() GAME( 1999, slqz3, 0, slqz3, slqz3, igs_m027_state, init_slqz3, ROT0, "IGS", "Shuang Long Qiang Zhu 3 (China, VS107C)", 0 ) GAME( 1999, qlgs, 0, qlgs, qlgs, igs_m027_state, init_qlgs, ROT0, "IGS", "Que Long Gaoshou", MACHINE_NODEVICE_LAN ) GAME( 1999, lhdmg, 0, lhdmg, lhdmg, igs_m027_state, init_lhdmg, ROT0, "IGS", "Long Hu Da Manguan", 0 ) -GAME( 1999, lhdmgp, lhdmg, lhdmg, lhdmg, igs_m027_state, init_lhdmg, ROT0, "IGS", "Long Hu Da Manguan Plus", 0 ) +GAME( 1999, lhdmgp, 0, lhdmg, lhdmg, igs_m027_state, init_lhdmg, ROT0, "IGS", "Long Hu Da Manguan Plus", 0 ) GAME( 1999, lhzb3, 0, lhdmg, lhzb3, igs_m027_state, init_lhdmg, ROT0, "IGS", "Long Hu Zhengba III", 0 ) GAME( 2004, lhzb4, 0, lhzb4, lhzb4, igs_m027_state, init_lhzb4, ROT0, "IGS", "Long Hu Zhengba 4", 0 ) GAME( 1999, lthy, 0, lthy, lthy, igs_m027_state, init_lthy, ROT0, "IGS", "Long Teng Hu Yue", MACHINE_NODEVICE_LAN ) @@ -2989,6 +3017,7 @@ GAMEL( 1999, oceanpara, oceanpar, oceanpar, oceanpara,igs_m027_state, init_o GAMEL( 1999, fruitpar, 0, oceanpar, oceanpar, igs_m027_state, init_fruitpar, ROT0, "IGS", "Fruit Paradise (V214)", 0, layout_oceanpar ) GAMEL( 1999, fruitpara, fruitpar, oceanpar, fruitpara,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", 0 ) +GAME( 200?, cjddzp, 0, cjddz, cjddz, igs_m027_state, init_cjddzp, ROT0, "IGS", "Chaoji Dou Dizhu Jiaqiang Ban (S300CN)", 0 ) 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 GAME( 2001, extradrw, 0, extradrw, base, igs_m027_state, init_extradrw, ROT0, "IGS", "Extra Draw (V100VE)", MACHINE_NOT_WORKING ) diff --git a/src/mame/igs/pgmcrypt.cpp b/src/mame/igs/pgmcrypt.cpp index 28f3084773b..3afacdf28ba 100644 --- a/src/mame/igs/pgmcrypt.cpp +++ b/src/mame/igs/pgmcrypt.cpp @@ -1115,6 +1115,29 @@ void cjddz_decrypt(running_machine &machine) } } +void cjddzp_decrypt(running_machine &machine) +{ + memory_region *const region = machine.root_device().memregion("user1"); + auto const src = util::little_endian_cast(reinterpret_cast(region->base())); + auto const rom_size = region->bytes(); + + for (int i = 0; i < rom_size / 2; i++) + { + uint16_t x = 0; + + IGS27_CRYPT1_ALT + IGS27_CRYPT2 + IGS27_CRYPT3 + IGS27_CRYPT4_ALT + IGS27_CRYPT5 + IGS27_CRYPT6_ALT + IGS27_CRYPT7 + IGS27_CRYPT8 + + src[i] ^= x; + } +} + // IGS FOR V000CN 2004 12 01 void lhzb4_decrypt(running_machine &machine) diff --git a/src/mame/igs/pgmcrypt.h b/src/mame/igs/pgmcrypt.h index 9bf366b4e35..d80b13eafe2 100644 --- a/src/mame/igs/pgmcrypt.h +++ b/src/mame/igs/pgmcrypt.h @@ -35,6 +35,7 @@ void klxyj_decrypt(running_machine &machine); void zhongguo_decrypt(running_machine &machine); void gonefsh2_decrypt(running_machine &machine); void cjddz_decrypt(running_machine &machine); +void cjddzp_decrypt(running_machine &machine); void lhzb4_decrypt(running_machine &machine); void fearless_decrypt(running_machine &machine); void superkds_decrypt(running_machine &machine); diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 3f725fc923f..23e165e6d3e 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -20324,6 +20324,7 @@ amazonia // (c) 1999 amazonkp // (c) 1999 chessc2 // (c) 200? cjddz // (c) 200? +cjddzp // (c) 200? extradrw // (c) 200? fruitpar // (c) 1999 fruitpara // (c) 1999 -- cgit v1.2.3