Skip to content

Commit 31c8050

Browse files
authored
igs/igs_m027xa.cpp: Dumped internal CPU ROM for Crazy Bugs (V103JP). (#12847)
Systems promoted to workin ------------------ Crazy Bugs (V103JP) [buffi, Peter Wilhelmsen, XingXing]
1 parent aeaf19f commit 31c8050

File tree

2 files changed

+13
-36
lines changed

2 files changed

+13
-36
lines changed

src/mame/igs/igs_m027xa.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -612,7 +612,7 @@ ROM_END
612612
ROM_START( crzybugsj ) // IGS PCB-0575-04-HU - Has IGS027A, MX10EXAQC, IGS031, Oki M6295, 2x 8-dip banks
613613
ROM_REGION( 0x04000, "maincpu", 0 )
614614
// Internal ROM of IGS027A ARM based MCU
615-
ROM_LOAD( "m6.u42", 0x00000, 0x4000, NO_DUMP ) // sticker marked 'M6'
615+
ROM_LOAD( "m6.u42", 0x00000, 0x4000, CRC(ae3a0b2a) SHA1(60265c98278625791cdf6af6b242888e45b6b3bb) ) // sticker marked 'M6'
616616

617617
ROM_REGION32_LE( 0x200000, "user1", 0 ) // external ARM data / prg
618618
ROM_LOAD( "crazy_bugs_v-103jp.u34", 0x000000, 0x200000, CRC(1e35ed79) SHA1(0e4f8b706cdfcaf2aacdc40eec422df9d865b311) )
@@ -766,8 +766,8 @@ void igs_m027xa_state::init_crzybugs()
766766
void igs_m027xa_state::init_crzybugsj()
767767
{
768768
crzybugsj_decrypt(machine());
769-
//qlgs_gfx_decrypt(machine());
770-
pgm_create_dummy_internal_arm_region();
769+
m_igs017_igs031->sdwx_gfx_decrypt();
770+
m_igs017_igs031->tarzan_decrypt_sprites(0, 0);
771771
}
772772

773773
void igs_m027xa_state::init_tripfev()
@@ -795,7 +795,7 @@ GAMEL( 2009, crzybugs, 0, igs_mahjong_xa_xor, crzybugs, igs_m027xa_state
795795
GAMEL( 2006, crzybugsa, crzybugs, igs_mahjong_xa_xor, crzybugs, igs_m027xa_state, init_crzybugs, ROT0, "IGS", "Crazy Bugs (V202US)", 0, layout_crzybugs ) // IGS FOR V100US 2006 3 29 but also V202US string
796796
GAMEL( 2005, crzybugsb, crzybugs, igs_mahjong_xa_xor, crzybugs, igs_m027xa_state, init_crzybugs, ROT0, "IGS", "Crazy Bugs (V200US)", 0, layout_crzybugs ) // FOR V100US 2005 7 20 but also V200US string
797797

798-
GAME( 2007, crzybugsj, crzybugs, igs_mahjong_xa, crzybugs, igs_m027xa_state, init_crzybugsj, ROT0, "IGS", "Crazy Bugs (V103JP)", MACHINE_NOT_WORKING ) // IGS FOR V101JP 2007 06 08
798+
GAMEL( 2007, crzybugsj, crzybugs, igs_mahjong_xa_xor, crzybugs, igs_m027xa_state, init_crzybugsj, ROT0, "IGS", "Crazy Bugs (V103JP)", 0, layout_crzybugs ) // IGS FOR V101JP 2007 06 08 (test mode calls this V102JP, ROM label was V103JP)
799799

800800
GAMEL( 2006, tripfev, 0, igs_mahjong_xa_xor, tripfev, igs_m027xa_state, init_tripfev, ROT0, "IGS", "Triple Fever (V108US)", 0, layout_tripfev )
801801
GAMEL( 2006, tripfeva, tripfev, igs_mahjong_xa_xor, tripfev, igs_m027xa_state, init_tripfev, ROT0, "IGS", "Triple Fever (V107US)", 0, layout_tripfev ) // IGS FOR V107US 2006 09 07

src/mame/igs/pgmcrypt.cpp

+9-32
Original file line numberDiff line numberDiff line change
@@ -1476,49 +1476,26 @@ void mgzz_decrypt(running_machine &machine)
14761476
}
14771477

14781478
// IGS FOR V101JP 2007 06 08
1479-
1480-
static const uint8_t crzybugsj_tab[0x100] = {
1481-
0x67, 0x9b, 0x05, 0x4a, 0x32, 0xcf, 0x41, 0xf8, 0xf8, 0xd5, 0xac, 0x5e, 0xd2, 0x6d, 0xbc, 0xd9,
1482-
0x3a, 0x15, 0x63, 0x71, 0xd6, 0x65, 0x5f, 0xce, 0xba, 0x9d, 0x1c, 0x75, 0x75, 0x25, 0x3c, 0x64,
1483-
0xd6, 0x83, 0xc6, 0x7c, 0x7a, 0xe1, 0x13, 0x3c, 0xb9, 0xbe, 0xd4, 0x12, 0x1e, 0xcf, 0x0e, 0xa4,
1484-
0x43, 0x07, 0xdd, 0x7f, 0x7d, 0x93, 0x8d, 0x79, 0xaf, 0xc5, 0x5e, 0x16, 0x26, 0xc6, 0x7b, 0x77,
1485-
0xd1, 0xdf, 0x0e, 0xe3, 0x7a, 0x64, 0xfe, 0xd3, 0x60, 0xd0, 0xa3, 0x3e, 0x4e, 0x10, 0x66, 0x98,
1486-
0x57, 0x03, 0x3d, 0xea, 0x4b, 0x0e, 0x5e, 0x83, 0xf6, 0xcf, 0xc8, 0x19, 0x4f, 0xd6, 0x0b, 0xcc,
1487-
0xc8, 0x69, 0x21, 0x82, 0x0c, 0xdd, 0x6f, 0x6a, 0x34, 0xe1, 0x4f, 0x15, 0xe6, 0xfd, 0xa7, 0xce,
1488-
0xbe, 0xd1, 0x38, 0x58, 0x17, 0xf2, 0xa1, 0xf7, 0xbe, 0x2e, 0x4c, 0x0e, 0xc8, 0x5d, 0xf7, 0xa1,
1489-
0x2a, 0x71, 0xd2, 0xe6, 0x07, 0x6f, 0x56, 0xcb, 0xdd, 0xe3, 0x00, 0x0b, 0x3e, 0x3d, 0xd4, 0xbf,
1490-
0x24, 0x41, 0x7a, 0x4e, 0xb8, 0xb4, 0x67, 0xc3, 0x2e, 0xa0, 0x57, 0xb5, 0xf1, 0xe4, 0x67, 0x29,
1491-
0x9e, 0xf8, 0x4e, 0x81, 0x45, 0x62, 0x90, 0xff, 0x7c, 0x90, 0xad, 0xea, 0xee, 0x18, 0x02, 0x1c,
1492-
0x6e, 0x14, 0x6a, 0x44, 0x08, 0x9f, 0x6b, 0xe9, 0xe8, 0x5a, 0x7c, 0x2e, 0xa2, 0x32, 0x60, 0x5d,
1493-
0x6a, 0x8d, 0x9c, 0xf7, 0x9d, 0x23, 0x24, 0x39, 0x47, 0x65, 0xb7, 0x3f, 0x8e, 0xb7, 0x68, 0xe4,
1494-
0xa6, 0x19, 0x60, 0xc2, 0xde, 0xc7, 0xb5, 0x4e, 0x23, 0x94, 0x39, 0x76, 0x6b, 0x9f, 0x16, 0xf7,
1495-
0x39, 0xb0, 0x65, 0xb6, 0xe7, 0xe5, 0xdb, 0xbf, 0xd7, 0x95, 0xbd, 0x3b, 0x36, 0x71, 0xfe, 0x8f,
1496-
0x15, 0x10, 0xe5, 0x63, 0x12, 0xa5, 0x1a, 0xee, 0x77, 0x49, 0x2e, 0xb4, 0x25, 0xd4, 0x83, 0x2d
1497-
};
1498-
14991479
void crzybugsj_decrypt(running_machine &machine)
15001480
{
1501-
auto const src = reinterpret_cast<u16 *>(machine.root_device().memregion("user1")->base());
1502-
1503-
int const rom_size = 0x80000;
1481+
memory_region *const region = machine.root_device().memregion("user1");
1482+
auto const src = util::little_endian_cast<u16>(reinterpret_cast<u32 *>(region->base()));
1483+
auto const rom_size = region->bytes();
15041484

15051485
for (int i = 0; i < rom_size / 2; i++)
15061486
{
1507-
int x = src[i];
1487+
uint16_t x = 0;
15081488

1509-
// may need corrected
15101489
IGS27_CRYPT1
1511-
IGS27_CRYPT2_ALT // correct
1512-
IGS27_CRYPT3_ALT // correct
1513-
IGS27_CRYPT4 // correct
1514-
IGS27_CRYPT5 // correct
1490+
IGS27_CRYPT2_ALT
1491+
IGS27_CRYPT3_ALT
1492+
IGS27_CRYPT4
1493+
IGS27_CRYPT5
15151494
IGS27_CRYPT6
15161495
IGS27_CRYPT7
15171496
IGS27_CRYPT8
15181497

1519-
x ^= crzybugsj_tab[(i >> 1) & 0xff] << 8;
1520-
1521-
src[i] = x;
1498+
src[i] ^= x;
15221499
}
15231500
}
15241501

0 commit comments

Comments
 (0)