From cef30608c817b7b5828737e09870a5a57b57f732 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Wed, 24 Jul 2024 18:26:39 +0200 Subject: New systems marked not working ------------------------------ Boo 1000 [Ioannis Bampoulas] Icescape (V104FA) [Ioannis Bampoulas] Triple Fever (V107US) [Ioannis Bampoulas] Wild Fruit (V208US) [Ioannis Bampoulas] New clones marked not working ----------------------------- Crazy Bugs (V200US) [Ioannis Bampoulas] Crazy Bugs (V202US) [Ioannis Bampoulas] Crazy Bugs (V204US) [Ioannis Bampoulas] Haunted House (IGS, V109US) [Ioannis Bampoulas] - igs/igs_fear.cpp, igs/igs_m27.cpp: preliminary decryptions for the added sets [IQ_132] --- src/mame/igs/igs_fear.cpp | 30 +++++++ src/mame/igs/igs_m027.cpp | 206 ++++++++++++++++++++++++++++++++++++++++++---- src/mame/igs/pgmcrypt.cpp | 187 ++++++++++++++++++++++++++++++++++++++++- src/mame/igs/pgmcrypt.h | 4 + src/mame/mame.lst | 14 +++- src/mame/skeleton/boo.cpp | 171 ++++++++++++++++++++++++++++++++++++++ 6 files changed, 589 insertions(+), 23 deletions(-) create mode 100644 src/mame/skeleton/boo.cpp diff --git a/src/mame/igs/igs_fear.cpp b/src/mame/igs/igs_fear.cpp index dc5c12ec9cd..9b9abc8c4b8 100644 --- a/src/mame/igs/igs_fear.cpp +++ b/src/mame/igs/igs_fear.cpp @@ -38,6 +38,7 @@ public: void igs_fear(machine_config &config); void init_igs_fear(); + void init_igs_icescape(); void init_igs_superkds(); protected: @@ -542,6 +543,29 @@ ROM_START( superkds ) ROM_LOAD( "superkids_music1.u26", 0x400000, 0x400000, CRC(5f080dbf) SHA1(f02330db3336f6606aae9f5a9eca819701caa3bf) ) ROM_END +ROM_START( icescape ) // IGS PCB-0433-16-GK (same PCB as Fearless Pinocchio) - Has IGS027A, MX10EXAQC, 2x Actel A54SX32A, ICS2115, 2x 8-DIP banks + ROM_REGION( 0x04000, "maincpu", 0 ) + // Internal ROM of IGS027A ARM based MCU + ROM_LOAD( "a7.bin", 0x00000, 0x4000, NO_DUMP ) // sticker marked 'A7', unreadable location + + ROM_REGION32_LE( 0x80000, "user1", 0 ) // external ARM data / prg + ROM_LOAD( "icescape_v-104fa.u37", 0x000000, 0x80000, CRC(e3552726) SHA1(bac34ac4fce1519c1bc8020064090e77b5c2a629) ) // TMS27C240 + + ROM_REGION( 0x10000, "xa", 0 ) // MX10EXAQC (80C51 XA based MCU) marked O7 + ROM_LOAD( "o7.u33", 0x00000, 0x10000, NO_DUMP ) + + ROM_REGION( 0x2000000, "gfx1", 0 ) // FIXED BITS (0xxxxxxx) (graphics are 7bpp) + ROM_LOAD32_WORD( "icescape_fa_cg_u7.u7", 0x0000000, 0x800000, NO_DUMP ) + ROM_LOAD32_WORD( "icescape_fa_cg_u6.u6", 0x0000002, 0x800000, NO_DUMP ) + ROM_LOAD32_WORD( "icescape_fa_cg_u14.u14", 0x1000000, 0x800000, NO_DUMP ) + ROM_LOAD32_WORD( "icescape_fa_cg_u13.u13", 0x1000002, 0x800000, NO_DUMP ) + // u17 and u18 not populated + + ROM_REGION( 0x400000, "ics", 0 ) + ROM_LOAD( "icescape_fa_sp_u25.u25", 0x000000, 0x200000, CRC(a01febd6) SHA1(6abe8b700c5725909939421e2493940421fc823f) ) // M27C160 + ROM_LOAD( "icescape_fa_sp_u26.u26", 0x200000, 0x200000, CRC(35085613) SHA1(bdc6ecf5ee6fd095a56e33e8ce893fe05bcb426c) ) // M27C160 +ROM_END + void igs_fear_state::init_igs_fear() { fearless_decrypt(machine()); @@ -552,7 +576,13 @@ void igs_fear_state::init_igs_superkds() superkds_decrypt(machine()); } +void igs_fear_state::init_igs_icescape() +{ + icescape_decrypt(machine()); +} + } // anonymous namespace GAME( 2005, superkds, 0, igs_fear, superkds, igs_fear_state, init_igs_superkds, ROT0, "IGS", "Super Kids (S019CN)", MACHINE_IS_SKELETON ) GAME( 2006, fearless, 0, igs_fear, fear, igs_fear_state, init_igs_fear, ROT0, "IGS", "Fearless Pinocchio (V101US)", MACHINE_IS_SKELETON ) +GAME( 2006, icescape, 0, igs_fear, fear, igs_fear_state, init_igs_icescape, ROT0, "IGS", "Icescape (V104FA)", MACHINE_IS_SKELETON ) // IGS FOR V104FA 2006-11-02 diff --git a/src/mame/igs/igs_m027.cpp b/src/mame/igs/igs_m027.cpp index 3f6f31cb3b0..405bee82849 100644 --- a/src/mame/igs/igs_m027.cpp +++ b/src/mame/igs/igs_m027.cpp @@ -71,9 +71,12 @@ public: void init_mgzz(); void init_mgcs3(); void init_crzybugs(); + void init_crzybugsj(); void init_jking02(); void init_luckycrs(); void init_olympic5(); + void init_tripfev(); + void init_wldfruit(); [[maybe_unused]] void init_no_dec(); protected: @@ -1025,7 +1028,34 @@ ROM_END // cg at u32 / u12 // samples at u3 -ROM_START( haunthig ) // IGS PCB-0575-04-HU - Has IGS027A, MX10EXAQC, IGS031, Oki M6295, 2x 8-dip banks +ROM_START( haunthig ) + ROM_REGION( 0x04000, "maincpu", 0 ) + // Internal ROM of IGS027A ARM based MCU + ROM_LOAD( "haunthig_igs027a", 0x00000, 0x4000, NO_DUMP ) + + ROM_REGION32_LE( 0x80000, "user1", 0 ) // external ARM data / prg + ROM_LOAD( "hauntedhouse_ver-109us.u34", 0x000000, 0x80000, CRC(300fed78) SHA1(afa4c8855cd780c57d4f92ea6131ed4e77063268) ) + + ROM_REGION( 0x10000, "xa", 0 ) + ROM_LOAD( "hauntedhouse.u17", 0x000000, 0x10000, BAD_DUMP CRC(3c76b157) SHA1(d8d3a434fd649577a30d5855e3fb34998041f4e5) ) // not dumped for this set + + ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 ) + ROM_LOAD( "haunted-h_text.u15", 0x000000, 0x80000, CRC(c23f48c8) SHA1(0cb1b6c61611a081ae4a3c0be51812045ff632fe) ) + + // are these PGM-like sprites? + ROM_REGION( 0x800000, "igs017_igs031:sprites", 0 ) + ROM_LOAD( "haunted-h_cg.u32", 0x000000, 0x400000, BAD_DUMP CRC(e0ea10e6) SHA1(e81be78fea93e72d4b1f4c0b58560bda46cf7948) ) // not dumped for this set, FIXED BITS (xxxxxxx0xxxxxxxx) + ROM_LOAD( "haunted-h_ext.u12", 0x400000, 0x400000, BAD_DUMP CRC(662eb883) SHA1(831ebe29e1e7a8b2c2fff7fbc608975771c3486c) ) // not dumped for this set, FIXED BITS (xxxxxxxx0xxxxxxx) + + ROM_REGION( 0x200000, "samples", 0 ) // Oki M6295 samples, missing sample table, bad? + ROM_LOAD( "haunted-h_sp.u3", 0x00000, 0x200000, BAD_DUMP CRC(fe3fcddf) SHA1(ac57ab6d4e4883747c093bd19d0025cf6588cb2c) ) // not dumped for this set + + ROM_REGION( 0x500, "plds", ROMREGION_ERASE00 ) + ROM_LOAD( "hu_u38a.u38", 0x000, 0x117, NO_DUMP ) // ATF16V8B, protected + ROM_LOAD( "hu_u39.u39", 0x200, 0x2dd, CRC(75f58b46) SHA1(7cb136a41899ddd50c95a67ca6353ce5d8d92149) ) // AT22V10 +ROM_END + +ROM_START( haunthiga ) // IGS PCB-0575-04-HU - Has IGS027A, MX10EXAQC, IGS031, Oki M6295, 2x 8-dip banks ROM_REGION( 0x04000, "maincpu", 0 ) // Internal ROM of IGS027A ARM based MCU ROM_LOAD( "haunthig_igs027a", 0x00000, 0x4000, NO_DUMP ) // sticker marked 'H2' @@ -1052,28 +1082,97 @@ ROM_START( haunthig ) // IGS PCB-0575-04-HU - Has IGS027A, MX10EXAQC, IGS031, Ok ROM_LOAD( "hu_u39.u39", 0x200, 0x2dd, CRC(75f58b46) SHA1(7cb136a41899ddd50c95a67ca6353ce5d8d92149) ) // AT22V10 ROM_END -ROM_START( crzybugs ) // IGS PCB-0575-04-HU - Has IGS027A, MX10EXAQC, IGS031, Oki M6295, 2x 8-dip banks +ROM_START( crzybugs ) // 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( "m7.u37", 0x00000, 0x4000, NO_DUMP ) // sticker marked 'M7' + + ROM_REGION32_LE( 0x80000, "user1", 0 ) // external ARM data / prg + ROM_LOAD( "crazy_bugs_v-204us.u23", 0x000000, 0x80000, CRC(d1232462) SHA1(685a292f39bf57a80d6ef31289cf9f673ba06dd4) ) // MX27C4096 + + ROM_REGION( 0x10000, "xa", 0 ) // MX10EXAQC (80C51 XA based MCU) marked J9, probably same as haunthig, but not dumped for this set + ROM_LOAD( "j9.u27", 0x00000, 0x10000, BAD_DUMP CRC(3c76b157) SHA1(d8d3a434fd649577a30d5855e3fb34998041f4e5) ) + + ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 ) // not dumped for this set + ROM_LOAD( "crazy_bugs_text_u10.u10", 0x000000, 0x80000, BAD_DUMP CRC(db0d679a) SHA1(c5d039aa4fa2218b6f574ccb5b6da983b8d4067d) ) + + // are these PGM-like sprites? + ROM_REGION( 0x200000, "igs017_igs031:sprites", 0 ) // not dumped for this set + ROM_LOAD( "crazy_bugs_cg.u19", 0x000000, 0x200000, BAD_DUMP CRC(9d53ad47) SHA1(46690a37acf8bd88c7fbe973db2faf5ef0cff805) ) // FIXED BITS (xxxxxxx0xxxxxxxx) + // u18 not populated + + ROM_REGION( 0x200000, "samples", 0 ) // plain Oki M6295 samples + ROM_LOAD( "crazy_bugs_sp.u15", 0x000000, 0x200000, CRC(b15974a1) SHA1(82509902bbb33a2120d815e7879b9b8591a29976) ) // M27C160 +ROM_END + +ROM_START( crzybugsa ) + ROM_REGION( 0x04000, "maincpu", 0 ) + // Internal ROM of IGS027A ARM based MCU + ROM_LOAD( "crzybugsa.u37", 0x00000, 0x4000, NO_DUMP ) + + ROM_REGION32_LE( 0x80000, "user1", 0 ) // external ARM data / prg + ROM_LOAD( "crazy_bugs_v-202us.u23", 0x000000, 0x80000, CRC(210da1e6) SHA1(c726497bebd25d6a9053e331b4c26acc7e2db0b2) ) // MX27C4096 + + ROM_REGION( 0x10000, "xa", 0 ) // MX10EXAQC (80C51 XA based MCU) probably same as haunthig, but not dumped for this set + ROM_LOAD( "j9.u27", 0x00000, 0x10000, BAD_DUMP CRC(3c76b157) SHA1(d8d3a434fd649577a30d5855e3fb34998041f4e5) ) + + ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 ) + ROM_LOAD( "crazy_bugs_text_u10.u10", 0x000000, 0x80000, CRC(db0d679a) SHA1(c5d039aa4fa2218b6f574ccb5b6da983b8d4067d) ) // M27C4002 + + // are these PGM-like sprites? + ROM_REGION( 0x200000, "igs017_igs031:sprites", 0 ) + ROM_LOAD( "crazy_bugs_cg.u19", 0x000000, 0x200000, CRC(9d53ad47) SHA1(46690a37acf8bd88c7fbe973db2faf5ef0cff805) ) // M27C160, FIXED BITS (xxxxxxx0xxxxxxxx) + // u18 not populated + + ROM_REGION( 0x200000, "samples", 0 ) // plain Oki M6295 samples + ROM_LOAD( "crazy_bugs_sp.u15", 0x000000, 0x200000, CRC(591b315b) SHA1(fda1816d83e202170dba4afc6e7898b706a76087) ) // M27C160 +ROM_END + +ROM_START( crzybugsb ) + ROM_REGION( 0x04000, "maincpu", 0 ) + // Internal ROM of IGS027A ARM based MCU + ROM_LOAD( "crzybugsb.u37", 0x00000, 0x4000, NO_DUMP ) + + ROM_REGION32_LE( 0x80000, "user1", 0 ) // external ARM data / prg + ROM_LOAD( "crazy_bugs_v-202us.u23", 0x000000, 0x80000, CRC(129e36e9) SHA1(53f20bc3792249de8ef276f84283baa9abd30acd) ) // MX27C4096 + + ROM_REGION( 0x10000, "xa", 0 ) // MX10EXAQC (80C51 XA based MCU) probably same as haunthig, but not dumped for this set + ROM_LOAD( "j9.u27", 0x00000, 0x10000, BAD_DUMP CRC(3c76b157) SHA1(d8d3a434fd649577a30d5855e3fb34998041f4e5) ) + + ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 ) + ROM_LOAD( "crazy_bugs_text_u10.u10", 0x000000, 0x80000, BAD_DUMP CRC(db0d679a) SHA1(c5d039aa4fa2218b6f574ccb5b6da983b8d4067d) ) // not dumped for this set + + // are these PGM-like sprites? + ROM_REGION( 0x200000, "igs017_igs031:sprites", 0 ) + ROM_LOAD( "crazy_bugs_cg.u19", 0x000000, 0x200000, BAD_DUMP CRC(9d53ad47) SHA1(46690a37acf8bd88c7fbe973db2faf5ef0cff805) ) // not dumped for this set, FIXED BITS (xxxxxxx0xxxxxxxx) + // u18 not populated + + ROM_REGION( 0x200000, "samples", 0 ) // plain Oki M6295 samples + ROM_LOAD( "crazy_bugs_sp.u15", 0x000000, 0x200000, BAD_DUMP CRC(591b315b) SHA1(fda1816d83e202170dba4afc6e7898b706a76087) ) // not dumped for this set +ROM_END + +ROM_START( crzybugsj ) // IGS PCB-0575-04-HU - Has IGS027A, MX10EXAQC, IGS031, Oki M6295, 2x 8-dip banks ROM_REGION( 0x04000, "maincpu", 0 ) // Internal ROM of IGS027A ARM based MCU ROM_LOAD( "m6.u42", 0x00000, 0x4000, NO_DUMP ) // sticker marked 'M6' ROM_REGION32_LE( 0x200000, "user1", 0 ) // external ARM data / prg - ROM_LOAD( "cray_bugs_v-103jp.u34", 0x000000, 0x200000, CRC(1e35ed79) SHA1(0e4f8b706cdfcaf2aacdc40eec422df9d865b311) ) + ROM_LOAD( "crazy_bugs_v-103jp.u34", 0x000000, 0x200000, CRC(1e35ed79) SHA1(0e4f8b706cdfcaf2aacdc40eec422df9d865b311) ) ROM_REGION( 0x10000, "xa", 0 ) ROM_LOAD( "e9.u17", 0x00000, 0x10000, CRC(3c76b157) SHA1(d8d3a434fd649577a30d5855e3fb34998041f4e5) ) // MX10EXAQC (80C51 XA based MCU) marked E9, same as haunthig ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 ) - ROM_LOAD( "cray_bugs_text_u15.u15", 0x000000, 0x80000, CRC(db0d679a) SHA1(c5d039aa4fa2218b6f574ccb5b6da983b8d4067d) ) + ROM_LOAD( "crazy_bugs_text_u15.u15", 0x000000, 0x80000, CRC(db0d679a) SHA1(c5d039aa4fa2218b6f574ccb5b6da983b8d4067d) ) // u14 not populated // are these PGM-like sprites? ROM_REGION( 0x200000, "igs017_igs031:sprites", 0 ) - ROM_LOAD( "cray_bugs_ani-cg-u32.u32", 0x000000, 0x200000, CRC(9d53ad47) SHA1(46690a37acf8bd88c7fbe973db2faf5ef0cff805) ) // FIXED BITS (xxxxxxx0xxxxxxxx) + ROM_LOAD( "crazy_bugs_ani-cg-u32.u32", 0x000000, 0x200000, CRC(9d53ad47) SHA1(46690a37acf8bd88c7fbe973db2faf5ef0cff805) ) // FIXED BITS (xxxxxxx0xxxxxxxx) // u12 not populated ROM_REGION( 0x200000, "samples", 0 ) // plain Oki M6295 samples - ROM_LOAD( "cray_bugs_sp_u3.u3", 0x000000, 0x200000, CRC(b15974a1) SHA1(82509902bbb33a2120d815e7879b9b8591a29976) ) + ROM_LOAD( "crazy_bugs_sp_u3.u3", 0x000000, 0x200000, CRC(b15974a1) SHA1(82509902bbb33a2120d815e7879b9b8591a29976) ) ROM_REGION( 0x500, "plds", ROMREGION_ERASE00 ) ROM_LOAD( "hu_u38.u38", 0x000, 0x117, NO_DUMP ) // ATF16V8B, protected @@ -1179,6 +1278,51 @@ ROM_START( extradrw ) // IGS PCB 0326-05-DV-1 ROM_LOAD( "igs s3002.u18", 0x00000, 0x200000, CRC(48601c32) SHA1(8ef3bad80931f4b1badf0598463e15508602f104) ) // BADADDR --xxxxxxxxxxxxxxxxxxx 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_REGION32_LE( 0x80000, "user1", 0 ) // external ARM data / prg + ROM_LOAD( "triple_fever_u23_v107_us.u23", 0x000000, 0x80000, CRC(aa56d888) SHA1(0b8b2765079259b76ea803289841d867c33c8cb2) ) // 27C4096 + + ROM_REGION( 0x10000, "xa", 0 ) // MX10EXAQC (80C51 XA based MCU) marked P7 + ROM_LOAD( "p7.u27", 0x00000, 0x10000, NO_DUMP ) + + ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 ) + ROM_LOAD( "triple_fever_u10_text.u10", 0x000000, 0x80000, CRC(522a1030) SHA1(9a7a5ba9b26bceb0d251be6139c10e4655fc19ec) ) // M27C4002 + + ROM_REGION( 0x400000, "igs017_igs031:sprites", 0 ) + ROM_LOAD( "triple_fever_u19_cg.u19", 0x000000, 0x400000, CRC(cd45bbf2) SHA1(7f1cf270245bbe4604de2cacade279ab13584dbd) ) // M27C322, FIXED BITS (xxxxxxx0xxxxxxxx) + // u18 not populated + + ROM_REGION( 0x200000, "samples", 0 ) // plain Oki M6295 samples + ROM_LOAD( "triplef_sp_u15.u15", 0x000000, 0x200000, CRC(98b9cafd) SHA1(3bf3971f0d9520c98fc6b1c2e77ab9c178d21c62) ) // M27C160 +ROM_END + +ROM_START( wldfruit ) // 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_REGION32_LE( 0x80000, "user1", 0 ) // external ARM data / prg + ROM_LOAD( "wild_fruit_v-208us.u23", 0x000000, 0x80000, CRC(d43398f1) SHA1(ecc4bd5cb6da16b35c63b843cf7beec1ab84ed9d) ) // M27C4002 + + ROM_REGION( 0x10000, "xa", 0 ) // MX10EXAQC (80C51 XA based MCU) marked J9 + ROM_LOAD( "j9.u27", 0x00000, 0x10000, NO_DUMP ) + + ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 ) + ROM_LOAD( "wild_fruit_text.u10", 0x000000, 0x80000, CRC(d6f0fd58) SHA1(5ddae5d4df53504dbb2e0fe9f7caea961c961ef8) ) // 27C4096 + + ROM_REGION( 0x400000, "igs017_igs031:sprites", 0 ) + ROM_LOAD( "wild_fruit_cg.u19", 0x000000, 0x400000, CRC(119686a8) SHA1(22583c1a1018cfdd20f0ef696d91fa1f6e01ab00) ) // M27C322, FIXED BITS (xxxxxxx0xxxxxxxx) + // u18 not populated + + ROM_REGION( 0x200000, "samples", 0 ) // plain Oki M6295 samples + ROM_LOAD( "wild_fruit_sp.u15", 0x000000, 0x200000, CRC(9da3e9dd) SHA1(7e447492713549e6be362d4aca6d223dad20771a) ) // M27C160 +ROM_END + + void igs_m027_state::pgm_create_dummy_internal_arm_region() { u16 *temp16 = (u16 *)memregion("maincpu")->base(); @@ -1343,6 +1487,13 @@ void igs_m027_state::init_crzybugs() pgm_create_dummy_internal_arm_region(); } +void igs_m027_state::init_crzybugsj() +{ + crzybugsj_decrypt(machine()); + //qlgs_gfx_decrypt(machine()); + pgm_create_dummy_internal_arm_region(); +} + void igs_m027_state::init_jking02() { jking02_decrypt(machine()); @@ -1364,6 +1515,20 @@ void igs_m027_state::init_olympic5() pgm_create_dummy_internal_arm_region(); } +void igs_m027_state::init_tripfev() +{ + tripfev_decrypt(machine()); + //qlgs_gfx_decrypt(machine()); + pgm_create_dummy_internal_arm_region(); +} + +void igs_m027_state::init_wldfruit() +{ + wldfruit_decrypt(machine()); + //qlgs_gfx_decrypt(machine()); + pgm_create_dummy_internal_arm_region(); +} + } // anonymous namespace @@ -1386,20 +1551,25 @@ GAME( 200?, jking02, 0, igs_mahjong, sdwx, igs_m027_state, init_jki GAME( 2005, olympic5, 0, igs_mahjong, sdwx, 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, sdwx, 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, sdwx, igs_m027_state, init_amazoni2, ROT0, "IGS", "Amazonia King II (V202BR)", MACHINE_IS_SKELETON ) -GAME( 200?, sddz, 0, igs_mahjong, sdwx, igs_m027_state, init_sddz, ROT0, "IGS", "Super Dou Di Zhu", MACHINE_IS_SKELETON ) -GAME( 2000, zhongguo, 0, igs_mahjong, sdwx, igs_m027_state, init_zhongguo, ROT0, "IGS", "Zhong Guo Chu Da D", MACHINE_IS_SKELETON ) +GAME( 200?, sddz, 0, igs_mahjong, sdwx, igs_m027_state, init_sddz, ROT0, "IGS", "Super Dou Di Zhu", MACHINE_IS_SKELETON ) +GAME( 2000, zhongguo, 0, igs_mahjong, sdwx, igs_m027_state, init_zhongguo, ROT0, "IGS", "Zhong Guo Chu Da D", MACHINE_IS_SKELETON ) GAME( 200?, lhzb3, 0, igs_mahjong, sdwx, igs_m027_state, init_lhzb3, ROT0, "IGS", "Long Hu Zhengba III", MACHINE_IS_SKELETON ) // 龙虎争霸Ⅲ GAME( 2004, lhzb4, 0, igs_mahjong, sdwx, igs_m027_state, init_lhzb4, ROT0, "IGS", "Long Hu Zhengba 4", MACHINE_IS_SKELETON ) // 龙虎争霸4 -GAME( 200?, klxyj, 0, igs_mahjong, sdwx, igs_m027_state, init_klxyj, ROT0, "IGS", "Kuai Le Xi You Ji", MACHINE_IS_SKELETON ) -GAME( 2000, mgfx, 0, igs_mahjong, sdwx, igs_m027_state, init_mgfx, ROT0, "IGS", "Man Guan Fu Xing", MACHINE_IS_SKELETON ) -GAME( 200?, gonefsh2, 0, igs_mahjong, sdwx, igs_m027_state, init_gonefsh2, ROT0, "IGS", "Gone Fishing 2", MACHINE_IS_SKELETON ) -GAME( 2002, chessc2, 0, igs_mahjong, sdwx, igs_m027_state, init_chessc2, ROT0, "IGS", "Chess Challenge II", MACHINE_IS_SKELETON ) -GAME( 200?, extradrw, 0, igs_mahjong, sdwx, igs_m027_state, init_qlgs, ROT0, "IGS", "Extra Draw", MACHINE_IS_SKELETON ) -GAME( 2003, mgzz, 0, igs_mahjong, sdwx, igs_m027_state, init_mgzz, ROT0, "IGS", "Man Guan Zhi Zun (V100CN)", MACHINE_IS_SKELETON ) -GAME( 2007, mgcs3, 0, igs_mahjong, sdwx, igs_m027_state, init_mgcs3, ROT0, "IGS", "Man Guan Caishen 3 (V101CN)", MACHINE_IS_SKELETON ) +GAME( 200?, klxyj, 0, igs_mahjong, sdwx, igs_m027_state, init_klxyj, ROT0, "IGS", "Kuai Le Xi You Ji", MACHINE_IS_SKELETON ) +GAME( 2000, mgfx, 0, igs_mahjong, sdwx, igs_m027_state, init_mgfx, ROT0, "IGS", "Man Guan Fu Xing", MACHINE_IS_SKELETON ) +GAME( 200?, gonefsh2, 0, igs_mahjong, sdwx, igs_m027_state, init_gonefsh2, ROT0, "IGS", "Gone Fishing 2", MACHINE_IS_SKELETON ) +GAME( 2002, chessc2, 0, igs_mahjong, sdwx, igs_m027_state, init_chessc2, ROT0, "IGS", "Chess Challenge II", MACHINE_IS_SKELETON ) +GAME( 200?, extradrw, 0, igs_mahjong, sdwx, igs_m027_state, init_qlgs, ROT0, "IGS", "Extra Draw", MACHINE_IS_SKELETON ) +GAME( 2003, mgzz, 0, igs_mahjong, sdwx, igs_m027_state, init_mgzz, ROT0, "IGS", "Man Guan Zhi Zun (V100CN)", MACHINE_IS_SKELETON ) +GAME( 2007, mgcs3, 0, igs_mahjong, sdwx, igs_m027_state, init_mgcs3, ROT0, "IGS", "Man Guan Caishen 3 (V101CN)", MACHINE_IS_SKELETON ) // These use the MX10EXAQC (80c51XA from Philips) and maybe don't belong in here // the PCBs are closer to igs_fear.cpp in terms of layout -GAME( 2006, haunthig, 0, igs_mahjong_xa, sdwx, igs_m027_state, init_hauntedh, ROT0, "IGS", "Haunted House (IGS)", MACHINE_IS_SKELETON ) -GAME( 2007, crzybugs, 0, igs_mahjong_xa, sdwx, igs_m027_state, init_crzybugs, ROT0, "IGS", "Crazy Bugs (V103JP)", MACHINE_IS_SKELETON ) - +GAME( 2008, haunthig, 0, igs_mahjong_xa, sdwx, igs_m027_state, init_hauntedh, ROT0, "IGS", "Haunted House (IGS, V109US)", MACHINE_IS_SKELETON ) // IGS FOR V109US 2008 10 14 +GAME( 2006, haunthiga, haunthig, igs_mahjong_xa, sdwx, igs_m027_state, init_hauntedh, ROT0, "IGS", "Haunted House (IGS, V101US)", MACHINE_IS_SKELETON ) // IGS FOR V101US 2006 08 23 +GAME( 2009, crzybugs, 0, igs_mahjong_xa, sdwx, igs_m027_state, init_crzybugs, ROT0, "IGS", "Crazy Bugs (V204US)", MACHINE_IS_SKELETON ) // IGS FOR V204US 2009 5 19 +GAME( 2006, crzybugsa, crzybugs, igs_mahjong_xa, sdwx, igs_m027_state, init_crzybugs, ROT0, "IGS", "Crazy Bugs (V202US)", MACHINE_IS_SKELETON ) // IGS FOR V100US 2006 3 29 but also V202US string +GAME( 2005, crzybugsb, crzybugs, igs_mahjong_xa, sdwx, igs_m027_state, init_crzybugs, ROT0, "IGS", "Crazy Bugs (V200US)", MACHINE_IS_SKELETON ) // FOR V100US 2005 7 20 but also V200US string +GAME( 2007, crzybugsj, crzybugs, igs_mahjong_xa, sdwx, igs_m027_state, init_crzybugsj, ROT0, "IGS", "Crazy Bugs (V103JP)", MACHINE_IS_SKELETON ) // IGS FOR V101JP 2007 06 08 +GAME( 2006, tripfev, 0, igs_mahjong_xa, sdwx, igs_m027_state, init_tripfev, ROT0, "IGS", "Triple Fever (V107US)", MACHINE_IS_SKELETON ) // IGS FOR V107US 2006 09 07 +GAME( 200?, wldfruit, 0, igs_mahjong_xa, sdwx, igs_m027_state, init_wldfruit, ROT0, "IGS", "Wild Fruit (V208US)", MACHINE_IS_SKELETON ) // IGS-----97----V208US diff --git a/src/mame/igs/pgmcrypt.cpp b/src/mame/igs/pgmcrypt.cpp index 2748727e67a..05fc751d77a 100644 --- a/src/mame/igs/pgmcrypt.cpp +++ b/src/mame/igs/pgmcrypt.cpp @@ -1866,7 +1866,7 @@ void mgzz_decrypt(running_machine &machine) // IGS FOR V101JP 2007 06 08 -static const uint8_t crzybugs_tab[0x100] = { +static const uint8_t crzybugsj_tab[0x100] = { 0x67, 0x9b, 0x05, 0x4a, 0x32, 0xcf, 0x41, 0xf8, 0xf8, 0xd5, 0xac, 0x5e, 0xd2, 0x6d, 0xbc, 0xd9, 0x3a, 0x15, 0x63, 0x71, 0xd6, 0x65, 0x5f, 0xce, 0xba, 0x9d, 0x1c, 0x75, 0x75, 0x25, 0x3c, 0x64, 0xd6, 0x83, 0xc6, 0x7c, 0x7a, 0xe1, 0x13, 0x3c, 0xb9, 0xbe, 0xd4, 0x12, 0x1e, 0xcf, 0x0e, 0xa4, @@ -1885,7 +1885,7 @@ static const uint8_t crzybugs_tab[0x100] = { 0x15, 0x10, 0xe5, 0x63, 0x12, 0xa5, 0x1a, 0xee, 0x77, 0x49, 0x2e, 0xb4, 0x25, 0xd4, 0x83, 0x2d }; -void crzybugs_decrypt(running_machine &machine) +void crzybugsj_decrypt(running_machine &machine) { auto const src = reinterpret_cast(machine.root_device().memregion("user1")->base()); @@ -1905,7 +1905,7 @@ void crzybugs_decrypt(running_machine &machine) IGS27_CRYPT7 IGS27_CRYPT8 - x ^= crzybugs_tab[(i >> 1) & 0xff] << 8; + x ^= crzybugsj_tab[(i >> 1) & 0xff] << 8; src[i] = x; } @@ -2092,3 +2092,184 @@ void olympic5_decrypt(running_machine &machine) src[i] = x; } } + + + +static const uint8_t crzybugs_tab[0x100] = { + 0x49, 0x47, 0x53, 0x30, 0x31, 0x38, 0x36, 0x52, 0x44, 0x34, 0x30, 0x34, 0x30, 0x39, 0x31, 0x30, // IGS0186RD040910 + 0xa4, 0x16, 0xa0, 0x3c, 0x4e, 0xd6, 0x43, 0x3f, 0xcb, 0xf2, 0xb4, 0x36, 0xd4, 0x13, 0x81, 0x30, + 0x71, 0x69, 0xb9, 0x44, 0xeb, 0x86, 0x7a, 0x95, 0xf4, 0x7a, 0xb5, 0x8c, 0x15, 0x35, 0x45, 0x52, + 0x59, 0x19, 0x30, 0x8c, 0x38, 0xde, 0x3c, 0x5b, 0xc6, 0xab, 0xb6, 0x93, 0x1c, 0x72, 0x7e, 0x3a, + 0x07, 0x8d, 0x57, 0x44, 0xf0, 0x97, 0x6e, 0x8d, 0x0b, 0x8c, 0x28, 0x18, 0xc4, 0x23, 0x30, 0x86, + 0x66, 0x6c, 0xc1, 0xda, 0x0e, 0xa6, 0x31, 0x6c, 0xd0, 0x63, 0xbf, 0x2a, 0x27, 0xdf, 0x9e, 0x17, + 0xa2, 0x9d, 0x41, 0xfd, 0xcd, 0x43, 0xe9, 0x75, 0x5e, 0xb8, 0x6d, 0x1a, 0xa1, 0x7b, 0x49, 0x0a, + 0x25, 0x47, 0xea, 0x9d, 0xa8, 0xe5, 0x39, 0x69, 0x40, 0x51, 0x66, 0x76, 0xcc, 0x10, 0xf6, 0xbe, + 0x9a, 0xd1, 0x10, 0xe9, 0x5a, 0x43, 0x04, 0x47, 0x43, 0x36, 0x1c, 0x0d, 0x84, 0xf5, 0xa8, 0xd4, + 0xed, 0xe2, 0x44, 0x4f, 0xde, 0x53, 0x6d, 0x4c, 0x70, 0xad, 0x44, 0xee, 0xe3, 0xbf, 0xa1, 0x29, + 0x48, 0x61, 0x5b, 0x7e, 0x6f, 0x4e, 0xd6, 0xf8, 0x13, 0x3e, 0xcf, 0x68, 0x44, 0x47, 0x64, 0xdd, + 0x16, 0x76, 0x67, 0x66, 0x88, 0xa9, 0xe4, 0x0b, 0xb7, 0xb0, 0xf0, 0x09, 0x44, 0xa4, 0xb5, 0x4e, + 0x02, 0x86, 0xbb, 0x35, 0xe4, 0x1c, 0x78, 0x83, 0x27, 0x09, 0x1b, 0xa2, 0xbb, 0x2b, 0x96, 0x1c, + 0xf8, 0x3a, 0xea, 0x5b, 0x7e, 0x9e, 0xb7, 0x9f, 0x6d, 0x90, 0x03, 0x40, 0xc7, 0x75, 0x4a, 0x26, + 0x22, 0x77, 0xc7, 0x86, 0x92, 0x66, 0x02, 0xdf, 0xd5, 0xce, 0x9a, 0x34, 0xc1, 0x58, 0x55, 0x8b, + 0xeb, 0x66, 0x65, 0xa6, 0x99, 0xea, 0xfd, 0x00, 0xea, 0x88, 0x14, 0x0c, 0x44, 0xec, 0x79, 0xa9 +}; + +void crzybugs_decrypt(running_machine &machine) +{ + auto const src = reinterpret_cast(machine.root_device().memregion("user1")->base()); + + int const rom_size = 0x80000; + + for (int i = 0; i < rom_size / 2; i++) + { + uint16_t x = src[i]; + + IGS27_CRYPT1 + IGS27_CRYPT2_ALT + IGS27_CRYPT3 + IGS27_CRYPT4 + IGS27_CRYPT5 + IGS27_CRYPT6 + IGS27_CRYPT7 + IGS27_CRYPT8 + + x ^= crzybugs_tab[(i>> 1) & 0xff] << 8; + + src[i] = x; + } +} + + +static const uint8_t icescape_tab[0x100] = { + 0x49, 0x47, 0x53, 0x30, 0x32, 0x32, 0x31, 0x52, 0x44, 0x34, 0x30, 0x35, 0x30, 0x38, 0x33, 0x30, // IGS0221RD4050830 + 0x5b, 0x35, 0xae, 0x6a, 0x98, 0x65, 0x89, 0xce, 0x06, 0x64, 0xe3, 0x19, 0x6c, 0x84, 0xb3, 0xbd, + 0x41, 0xb4, 0xcd, 0xa7, 0xd0, 0x4a, 0x16, 0xad, 0x8d, 0x12, 0x07, 0x32, 0xb2, 0x97, 0x65, 0x1b, + 0x1d, 0xb1, 0x3e, 0xf7, 0x6e, 0x4f, 0x28, 0x6a, 0x5c, 0x86, 0xb6, 0xda, 0x58, 0xdb, 0x3b, 0x5e, + 0x66, 0xcd, 0xc2, 0xe3, 0x38, 0xa6, 0x4d, 0xa0, 0x8c, 0x84, 0x4e, 0xbd, 0xc7, 0xa2, 0x64, 0x3f, + 0xd3, 0xec, 0x57, 0x37, 0x36, 0xc3, 0x56, 0x2b, 0x73, 0x0d, 0x6f, 0xc5, 0xa6, 0x81, 0x50, 0xba, + 0x5a, 0x31, 0x3d, 0xfe, 0xae, 0x59, 0x51, 0x26, 0xa9, 0x67, 0xf8, 0x1d, 0xda, 0x4a, 0xad, 0x0b, + 0x34, 0xff, 0xf1, 0x82, 0x28, 0x5a, 0x8c, 0xeb, 0x04, 0x12, 0x08, 0x30, 0x8b, 0x11, 0x6b, 0xab, + 0xd6, 0xf9, 0x34, 0x4f, 0x6a, 0xfa, 0x98, 0x16, 0x9b, 0xd3, 0xfd, 0xaa, 0x20, 0x27, 0xb8, 0x57, + 0xf8, 0x02, 0x04, 0x30, 0x7c, 0xac, 0x42, 0x81, 0xc5, 0xad, 0x78, 0x75, 0x41, 0x20, 0x03, 0x08, + 0x90, 0x3d, 0xa0, 0x30, 0xa5, 0x22, 0x9b, 0x47, 0x1a, 0xe2, 0x55, 0xbc, 0xd3, 0xd0, 0xfd, 0xfb, + 0xd7, 0x0d, 0x87, 0x99, 0x6b, 0x4f, 0xf0, 0xc4, 0x70, 0xf5, 0xb6, 0xeb, 0xff, 0x49, 0x92, 0xa9, + 0x42, 0x14, 0x78, 0xf8, 0x96, 0x68, 0xd2, 0x93, 0xdf, 0xa9, 0xf8, 0xac, 0x2b, 0xde, 0xf3, 0xcf, + 0x8a, 0x37, 0x73, 0x16, 0x2c, 0xde, 0x0e, 0x8e, 0xbd, 0x02, 0xbb, 0xea, 0xfd, 0x22, 0x8e, 0x67, + 0xa4, 0x97, 0xb6, 0xff, 0x75, 0x65, 0xb4, 0xd1, 0xa1, 0x43, 0xde, 0xd0, 0x5e, 0xe8, 0x13, 0xab, + 0xc8, 0x98, 0xc0, 0xfd, 0xf7, 0xef, 0x13, 0xb6, 0x62, 0xed, 0x7f, 0xc9, 0x74, 0x43, 0x71, 0x18 +}; + +void icescape_decrypt(running_machine &machine) +{ + auto const src = reinterpret_cast(machine.root_device().memregion("user1")->base()); + + int const rom_size = 0x80000; + + for (int i = 0; i < rom_size / 2; i++) + { + uint16_t x = src[i]; + + IGS27_CRYPT1 + IGS27_CRYPT2_ALT // $18ed0 + IGS27_CRYPT3_ALT // $1030 + IGS27_CRYPT4 // $106d0 + IGS27_CRYPT5_ALT // $10800 + IGS27_CRYPT6 + IGS27_CRYPT7_ALT + IGS27_CRYPT8 + + x ^= icescape_tab[(i>> 1) & 0xff] << 8; + + src[i] = x; + } +} + + +static const uint8_t tripfev_tab[0x100] = { + 0x49, 0x47, 0x53, 0x30, 0x32, 0x31, 0x35, 0x52, 0x44, 0x34, 0x30, 0x35, 0x30, 0x36, 0x32, 0x30, // IGS0213RD4050620 + 0xc2, 0x79, 0xb0, 0xbf, 0xc7, 0xe0, 0x48, 0x2b, 0x40, 0x7c, 0x02, 0x52, 0xfb, 0xf2, 0xec, 0xfa, + 0xa3, 0xfe, 0xd0, 0xf8, 0x8b, 0xb5, 0x9e, 0x8b, 0xba, 0xf9, 0x17, 0xfb, 0x37, 0x3d, 0xbc, 0x72, + 0x96, 0x7b, 0xf6, 0x1b, 0xc3, 0x72, 0x86, 0x79, 0x0e, 0x25, 0x30, 0x09, 0x77, 0x90, 0xa3, 0x1b, + 0x3c, 0xad, 0xac, 0xee, 0xa1, 0xa8, 0x9c, 0x0b, 0xff, 0x5e, 0xf7, 0xe4, 0x10, 0x1b, 0x5e, 0xac, + 0x79, 0x95, 0xbf, 0x79, 0x99, 0x24, 0xbb, 0x98, 0x91, 0x44, 0x57, 0x31, 0x94, 0x4d, 0xe7, 0x1c, + 0x70, 0x71, 0x38, 0x02, 0x5d, 0xf6, 0xfd, 0xb8, 0x06, 0xb5, 0x7c, 0xd8, 0xd6, 0xd4, 0x79, 0xa1, + 0x84, 0xc0, 0x63, 0x11, 0xe2, 0x6e, 0xbd, 0x41, 0xe2, 0xd2, 0xd0, 0x01, 0xe9, 0x9f, 0x8f, 0xb4, + 0x58, 0x41, 0xca, 0x6d, 0x58, 0x19, 0x97, 0x4a, 0xe7, 0xf8, 0xfe, 0x11, 0x20, 0xde, 0xe4, 0x0a, + 0xcf, 0xf4, 0x3a, 0x1c, 0x35, 0xc7, 0x66, 0x2b, 0x18, 0xc7, 0xf1, 0xb1, 0x0f, 0xff, 0x73, 0x9b, + 0x0c, 0x17, 0xbc, 0x66, 0x2a, 0x87, 0x44, 0x7a, 0xb9, 0x1d, 0xd5, 0xc6, 0x87, 0xb2, 0x77, 0x9e, + 0x71, 0x28, 0x9c, 0xd1, 0x2b, 0xa8, 0x8d, 0x0e, 0x4c, 0x1a, 0x14, 0x79, 0x9d, 0xe5, 0x6b, 0x89, + 0xa3, 0xe9, 0x65, 0x25, 0x6a, 0xb9, 0xdb, 0xff, 0x94, 0x1d, 0x59, 0x30, 0xa3, 0xc8, 0x0a, 0x15, + 0x83, 0x56, 0xe1, 0x69, 0x5b, 0x89, 0x09, 0xa3, 0x95, 0xc5, 0x90, 0x92, 0x2c, 0xc9, 0x4f, 0x37, + 0x35, 0xb0, 0x1c, 0xe3, 0xb1, 0x27, 0x34, 0x91, 0x91, 0xf0, 0xe2, 0x86, 0x0b, 0x98, 0x75, 0x27, + 0x1c, 0x74, 0x61, 0x1a, 0x5e, 0xe2, 0xb4, 0xa1, 0x0c, 0xbe, 0xbc, 0x33, 0x53, 0x23, 0xf7, 0x5c +}; + +void tripfev_decrypt(running_machine &machine) +{ + auto const src = reinterpret_cast(machine.root_device().memregion("user1")->base()); + + int const rom_size = 0x80000; + + for (int i = 0; i < rom_size / 2; i++) + { + uint16_t x = src[i]; + + IGS27_CRYPT1 + IGS27_CRYPT2 // + IGS27_CRYPT3 + IGS27_CRYPT4_ALT // $2fc0 + IGS27_CRYPT5_ALT // $35da0 + IGS27_CRYPT6_ALT + IGS27_CRYPT7_ALT // $2b0 + IGS27_CRYPT8 // $1100 + + x ^= tripfev_tab[(i>> 1) & 0xff] << 8; + + src[i] = x; + } +} + + +static const uint8_t wldfruit_tab[0x100] = { + 0x49, 0x47, 0x53, 0x30, 0x31, 0x37, 0x38, 0x52, 0x44, 0x34, 0x30, 0x34, 0x30, 0x38, 0x32, 0x37, // IGS0178RD4040827 + 0xf1, 0x99, 0x0f, 0xbf, 0xa4, 0x08, 0xb1, 0xfa, 0x5d, 0x08, 0x89, 0xc7, 0x3a, 0x97, 0x68, 0x2e, + 0x01, 0xd0, 0x4e, 0x14, 0xfa, 0x7f, 0x64, 0x6a, 0x0c, 0xe5, 0x37, 0x96, 0x1b, 0xc8, 0x37, 0x21, + 0xa1, 0xbf, 0x6f, 0xa3, 0x8b, 0xbc, 0x87, 0xec, 0x56, 0xda, 0xf7, 0x74, 0x6a, 0x69, 0x8d, 0x05, + 0xb6, 0x37, 0x22, 0xa7, 0x8e, 0x21, 0x98, 0xcc, 0xc1, 0xdb, 0x18, 0xbd, 0xfe, 0xfc, 0x8a, 0x44, + 0x69, 0x4d, 0x55, 0x9b, 0x79, 0x53, 0x59, 0x95, 0x15, 0x1a, 0x29, 0x0b, 0xef, 0x44, 0x8d, 0x89, + 0x20, 0x53, 0x38, 0x3a, 0x05, 0x33, 0xc6, 0x11, 0x59, 0x0b, 0xf9, 0x39, 0x93, 0x45, 0x35, 0xc0, + 0x82, 0xdc, 0x39, 0x7f, 0x27, 0xe5, 0x20, 0x4c, 0xd3, 0x61, 0x97, 0x64, 0x81, 0x41, 0x60, 0x12, + 0x76, 0xbb, 0x08, 0xa5, 0x17, 0xcc, 0xe4, 0x91, 0x0a, 0x0e, 0x52, 0xe4, 0x91, 0xbc, 0x2e, 0xec, + 0x23, 0x03, 0x93, 0x27, 0x4c, 0x8b, 0xd3, 0x6b, 0xc7, 0x46, 0xb9, 0x56, 0xd9, 0x78, 0xfe, 0xf9, + 0xf0, 0x07, 0x09, 0xc0, 0x7d, 0x05, 0xec, 0xa5, 0x0f, 0x7c, 0x9b, 0x95, 0xb0, 0x79, 0x6e, 0x22, + 0x84, 0x5b, 0xda, 0x6b, 0xa0, 0x5d, 0x6c, 0x49, 0x29, 0x62, 0x07, 0xbb, 0xae, 0x01, 0x5e, 0x94, + 0xc7, 0xd1, 0xb4, 0x63, 0xee, 0xf6, 0xd3, 0xa3, 0x9d, 0xec, 0x4b, 0x24, 0xa9, 0x93, 0xed, 0xb9, + 0xde, 0x7b, 0x87, 0x23, 0xdc, 0x72, 0xe1, 0x3e, 0x31, 0x4c, 0xf8, 0x6a, 0xb8, 0xf2, 0x7a, 0x3c, + 0x32, 0xae, 0x82, 0x66, 0x22, 0xb6, 0x94, 0xe4, 0xee, 0xf6, 0xdc, 0x69, 0x33, 0x22, 0xa3, 0x09, + 0x68, 0xfd, 0x12, 0x28, 0xb7, 0xe3, 0x2b, 0xa2, 0x18, 0x9d, 0x05, 0x3b, 0xb0, 0x66, 0x48, 0x4a +}; + +void wldfruit_decrypt(running_machine &machine) +{ + auto const src = reinterpret_cast(machine.root_device().memregion("user1")->base()); + + int const rom_size = 0x80000; + + for (int i = 0; i < rom_size / 2; i++) + { + uint16_t x = src[i]; + + IGS27_CRYPT1 + IGS27_CRYPT2 // + IGS27_CRYPT3 + IGS27_CRYPT4_ALT // $2fc0 + IGS27_CRYPT5_ALT // $35da0 + IGS27_CRYPT6_ALT + IGS27_CRYPT7 // $2b0 + IGS27_CRYPT8 // $1100 + + x ^= wldfruit_tab[(i>> 1) & 0xff] << 8; + + src[i] = x; + } +} diff --git a/src/mame/igs/pgmcrypt.h b/src/mame/igs/pgmcrypt.h index 861f3a77fb5..618b14a768a 100644 --- a/src/mame/igs/pgmcrypt.h +++ b/src/mame/igs/pgmcrypt.h @@ -44,7 +44,11 @@ void amazoni2_decrypt(running_machine &machine); void mgzz_decrypt(running_machine &machine); void mgcs3_decrypt(running_machine &machine); void crzybugs_decrypt(running_machine &machine); +void crzybugsj_decrypt(running_machine &machine); void qlgs_decrypt(running_machine &machine); void jking02_decrypt(running_machine &machine); void luckycrs_decrypt(running_machine &machine); void olympic5_decrypt(running_machine &machine); +void icescape_decrypt(running_machine &machine); +void tripfev_decrypt(running_machine &machine); +void wldfruit_decrypt(running_machine &machine); diff --git a/src/mame/mame.lst b/src/mame/mame.lst index fb7ade9c694..a8d0301a8e2 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -20198,6 +20198,7 @@ tjsb // (c) 1997 @source:igs/igs_fear.cpp fearless // (c) 2006 +icescape // (c) 2006 superkds @source:igs/igs_m027.cpp @@ -20205,11 +20206,15 @@ amazoni2 // (c) 2002 amazonia // (c) 1999 amazonkp // (c) 1999 chessc2 // (c) 200? -crzybugs // (c) 200? +crzybugs // (c) 2009 +crzybugsa // (c) 2006 +crzybugsb // (c) 2005 +crzybugsj // (c) 2007 extradrw // (c) 200? fruitpar // (c) 200? gonefsh2 // (c) 200? -haunthig // (c) 200? +haunthig // (c) 2008 +haunthiga // (c) 2006 jking02 // (c) 200? klxyj // (c) 200? lhzb3 // (c) 200? @@ -20226,6 +20231,8 @@ qlgs // (c) 1999 sddz // (c) 200? sdwx // (c) 2002 slqz3 // (c) 1999 +tripfev // (c) 2006 +wldfruit // (c) 200? zhongguo // (c) 2000 @source:igs/igs_m036.cpp @@ -41809,6 +41816,9 @@ bitgrphb // @source:skeleton/bolsaint.cpp bolsaint // (c) 2000 Sleic/Petaco +@source:skeleton/boo.cpp +boo1000 + @source:skeleton/bpmmicro.cpp bp1200 // (c) 1991 BP Microsystems diff --git a/src/mame/skeleton/boo.cpp b/src/mame/skeleton/boo.cpp new file mode 100644 index 00000000000..75df476c7b0 --- /dev/null +++ b/src/mame/skeleton/boo.cpp @@ -0,0 +1,171 @@ +// license:BSD-3-Clause +// copyright-holders: + +/* +Boo 1000 by JK Amusement + +PCB pic is very blurry. Components which could be identified: + +Motorola MC68HC11A1 CPU +Winbond WF19054 sound chip (AY-8910 compatible) +12 (?) MHz XTAL +Altera Max (exact type unreadable) +Altera Acex (exact type unreadable) +3x 8-DIP banks +4-DIP bank +*/ + +#include "emu.h" + +#include "cpu/mc68hc11/mc68hc11.h" +#include "sound/ay8910.h" + +#include "emupal.h" +#include "screen.h" +#include "speaker.h" +#include "tilemap.h" + + +namespace { + +class boo_state : public driver_device +{ +public: + boo_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_gfxdecode(*this, "gfxdecode") + { } + + void boo(machine_config &config); + +private: + required_device m_maincpu; + required_device m_gfxdecode; + + uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + + void program_map(address_map &map); +}; + + +uint32_t boo_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +{ + bitmap.fill(rgb_t::black(), cliprect); + + return 0; +} + + +void boo_state::program_map(address_map &map) +{ + map(0x8000, 0xffff).rom().region("maincpu", 0x0000); +} + + +static INPUT_PORTS_START(boo) + PORT_START("IN0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("IN1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("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") + PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "SW1:6") + PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "SW1:7") + PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "SW1:8") + + PORT_START("DSW2") + PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "SW2:1") + PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "SW2:2") + PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "SW2:3") + PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "SW2:4") + PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "SW2:5") + PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "SW2:6") + PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "SW2:7") + PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "SW2:8") + + PORT_START("DSW3") + PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "SW3:1") + PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "SW3:2") + PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "SW3:3") + PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "SW3:4") + PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "SW3:5") + PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "SW3:6") + PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "SW3:7") + PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "SW3:8") + + PORT_START("DSW4") + PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "SW4:1") + PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "SW4:2") + PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "SW4:3") + PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "SW4:4") +INPUT_PORTS_END + + +static GFXDECODE_START( gfx_boo ) // TODO +GFXDECODE_END + + +void boo_state::boo(machine_config &config) +{ + MC68HC11A1(config, m_maincpu, 12_MHz_XTAL); // TODO: verify XTAL if better pics appear + m_maincpu->set_addrmap(AS_PROGRAM, &boo_state::program_map); + + // TODO: everything + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(64*8, 32*8); + screen.set_visarea(0*8, 64*8-1, 2*8, 30*8-1); + screen.set_screen_update(FUNC(boo_state::screen_update)); + + GFXDECODE(config, m_gfxdecode, "palette", gfx_boo); + + PALETTE(config, "palette").set_entries(0x100); // TODO + + SPEAKER(config, "mono").front_center(); + + AY8910(config, "ay", 12_MHz_XTAL / 12).add_route(ALL_OUTPUTS, "mono", 0.30); // clock and divisor not verified +} + + +ROM_START( boo1000 ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "epr6.u14", 0x00000, 0x10000, CRC(83b1a60b) SHA1(becc1f7242e321aefbaf3d27c86b5b680f08c2d1) ) // 27C512 + // the 2 halves are almost identical (just 4 bytes differ) + + ROM_REGION( 0x80000, "reels", 0 ) // ?? + ROM_LOAD( "epr7.u16", 0x00000, 0x80000, CRC(5655b3aa) SHA1(91faf832ddd59ea59ab63142da1791cd0f4f15a8) ) // 27C4001 + + ROM_REGION( 0x140000, "tiles", 0 ) // ??, all 27C2001 + ROM_LOAD( "epr1.u2", 0x000000, 0x40000, CRC(abc679c6) SHA1(48c35c9a432864d980d8a48ecfdea39dcf3a6954) ) + ROM_LOAD( "epr2.u3", 0x040000, 0x40000, CRC(a5755f8e) SHA1(453c2d2e518ef86e38483b28d424837ae4554ff5) ) + ROM_LOAD( "epr3.u4", 0x080000, 0x40000, CRC(f556920d) SHA1(36a6bfa9ff4b88e157e29e61f873379d5f9d6b2a) ) // BADADDR xxxxxxxxxxxxxxxx-- + ROM_LOAD( "epr4.u5", 0x0c0000, 0x40000, CRC(9e255bc1) SHA1(6122432a99af7b768e70b4602209d3f38f6cd117) ) // 1xxxxxxxxxxxxxxxxx = 0xFF + ROM_LOAD( "epr5.u6", 0x100000, 0x40000, CRC(038836cf) SHA1(c15cbef95c54cd38dcf6f3d790668710c1b6c400) ) // 1xxxxxxxxxxxxxxxxx = 0xFF +ROM_END + +} // anonymous namespace + + +GAME( 2000, boo1000, 0, boo, boo, boo_state, empty_init, ROT0, "JK Amusement", "Boo 1000", MACHINE_IS_SKELETON ) -- cgit v1.2.3