New clones marked as NOT_WORKING

--------------------------------
Cherry Bonus III (set 5, encrypted bootleg) [Ioannis Bampoulas]
This commit is contained in:
Ivan Vangelista 2021-08-27 06:37:11 +02:00
parent 0b3d99dccd
commit ffe2284326
3 changed files with 68 additions and 4 deletions

View File

@ -9067,10 +9067,16 @@ void cmaster_state::chryangl(machine_config &config)
{
cm(config);
m_maincpu->set_addrmap(AS_IO, &cmaster_state::super7_portmap);
m_maincpu->set_addrmap(AS_OPCODES, &cmaster_state::chryangl_decrypted_opcodes_map);
}
void cmaster_state::super7(machine_config &config)
{
chryangl(config);
m_maincpu->set_addrmap(AS_IO, &cmaster_state::super7_portmap);
}
void goldstar_state::cmast91(machine_config &config)
{
/* basic machine hardware */
@ -10476,6 +10482,33 @@ ROM_START( cb3e )
ROM_END
ROM_START( cb3f ) // original Wing W4 PCB + subboard with Z80, ROM, RAM and encryption logic
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "en27c512.u6", 0x00000, 0x10000, CRC(de6d6050) SHA1(7164584b159c8180ffc65d4e0bedbb4a405c74d9) ) // encrypted
ROM_REGION( 0x18000, "gfx1", 0 )
ROM_LOAD( "5.7h", 0x00000, 0x08000, CRC(83650a94) SHA1(e79420ab559d3f74013708767ca3f238fd333fb7) )
ROM_LOAD( "6.8h", 0x08000, 0x08000, CRC(2f46a3f5) SHA1(3e6022ee8f84039e48f41aea5e68ee28aabdc556) )
ROM_LOAD( "7.10h", 0x10000, 0x08000, CRC(dcf97517) SHA1(0a29696e0464c8878c499b1786a17080fd088a72) )
ROM_REGION( 0x8000, "gfx2", 0 )
ROM_LOAD( "1.1h", 0x00000, 0x02000, CRC(7cc6d26b) SHA1(de33e8985affce7bd3ead89463117c9aaa93d5e4) )
ROM_LOAD( "2.3h", 0x02000, 0x02000, CRC(e73ea4e3) SHA1(c9fd56461f6986d6bc170403d298fcc408a524e9) )
ROM_LOAD( "3.4h", 0x04000, 0x02000, CRC(91162010) SHA1(3acc21e7074602b247f2f392eb181802092d2f21) )
ROM_LOAD( "4.5h", 0x06000, 0x02000, CRC(cbcc6bfb) SHA1(5bafc934fef1f50d8c182c39d3a7ce795c89d175) )
ROM_REGION( 0x0200, "proms", 0 )
ROM_LOAD_NIB_LOW( "n82s129.13g", 0x0000, 0x0100, CRC(59ac98e4) SHA1(5fc0f1a48c49c956cdb8826e20663dc57a9175e4) ) // 1st bank colors, low 4 bits.
ROM_LOAD_NIB_HIGH( "n82s129.14g", 0x0000, 0x0100, CRC(0d8f35bd) SHA1(0c2a0145cdaaf9beabdce241731a36b0c65f18a2) ) // 1st bank colors, high 4 bits.
ROM_LOAD( "dm74s288.13d", 0x0080, 0x0020, CRC(77a85e21) SHA1(3b41e0ab7cc55c5d78914d23e8289383f5bd5654) ) // 2nd bank colors
ROM_REGION( 0x100, "unkprom", 0 )
ROM_LOAD( "82s129.f3", 0x0000, 0x0100, CRC(1d668d4a) SHA1(459117f78323ea264d3a29f1da2889bbabe9e4be) )
ROM_REGION( 0x20, "unkprom2", 0 )
ROM_LOAD( "dm74s288.d12", 0x0000, 0x0020, CRC(6df3f972) SHA1(0096a7f7452b70cac6c0752cb62e24b643015b5c) )
ROM_END
/* Cherry Gold I (bootleg)
It runs in CB3e similar hardware...
@ -15084,7 +15117,7 @@ ROM_START( nc96 )
ROM_REGION( 0x20000, "graphics", 0 )
ROM_LOAD( "ch96seh.bin", 0x00000, 0x10000, CRC(65dee6ba) SHA1(77f5769ed0b745a4735576e9f0ce90dcdd9b5410) ) /* Correct graphics for this set, shows (R)COPYRIGHT(C) 1996 */
ROM_LOAD( "ch96sel.bin", 0x10000, 0x10000, CRC(c21cc114) SHA1(f7b6ff5ac34dc1a7332e8c1b9cc40f3b65deac05) ) /* the other set shows a currupted TM graphic */
ROM_LOAD( "ch96sel.bin", 0x10000, 0x10000, CRC(c21cc114) SHA1(f7b6ff5ac34dc1a7332e8c1b9cc40f3b65deac05) ) /* the other set shows a corrupted TM graphic */
ROM_REGION( 0x10000, "user1", ROMREGION_ERASEFF )
@ -18452,6 +18485,22 @@ uint8_t cb3_state::cb3_decrypt(uint8_t cipherText, uint16_t address)
return output ^ sbox[idx];
}
uint8_t cb3_state::cb3f_decrypt(uint8_t cipherText, uint16_t address)
{
uint8_t output;
int rotation[8] = {0, 1, 1, 1, 1, 0, 0, 1};
int sbox[8] = {0x20, 0x80, 0x20, 0x08, 0x08, 0x20, 0x80, 0x80};
int idx = BIT(cipherText, 1) | (BIT(address, 0) << 1) | (BIT(address, 4) << 2);
if (rotation[idx] == 0)
output = bitswap<8>(cipherText, 5, 6, 3, 4, 7, 2, 1, 0); // rotates bit #3, #5 and #7 in one direction...
else
output = bitswap<8>(cipherText, 3, 6, 7, 4, 5, 2, 1, 0); // ... or in the other
return output ^ sbox[idx];
}
uint8_t cb3_state::chry10_decrypt(uint8_t cipherText)
{
return cipherText ^ (BIT(cipherText, 4) << 3) ^ (BIT(cipherText, 1) << 5) ^ (BIT(cipherText, 6) << 7);
@ -19208,6 +19257,16 @@ void cb3_state::init_cb3e()
}
}
void cb3_state::init_cb3f()
{
// program bitswap
uint8_t *rom = memregion("maincpu")->base();
do_blockswaps(rom);
for (int i = 0; i < 0x9000; i++) // TODO: why? Up to 0x8fff everything's fine, but there are jumps to > 0x9000 where it seems to expect undecrypted code?
rom[i] = cb3f_decrypt(rom[i], i);
}
/* todo: remove these patches! */
void unkch_state::init_unkch1()
@ -19534,9 +19593,10 @@ GAMEL( 199?, ncb3, 0, ncb3, ncb3, cb3_state, empty_init
GAMEL( 199?, cb3a, ncb3, ncb3, cb3a, cb3_state, empty_init, ROT0, "Dyna", "Cherry Bonus III (ver.1.40, set 2)", 0, layout_cherryb3 )
GAMEL( 199?, cb3, ncb3, ncb3, ncb3, cb3_state, init_cb3, ROT0, "Dyna", "Cherry Bonus III (ver.1.40, encrypted)", 0, layout_cherryb3 )
GAMEL( 199?, cb3b, ncb3, cherrys, ncb3, cb3_state, init_cherrys, ROT0, "Dyna", "Cherry Bonus III (alt)", 0, layout_cherryb3 )
GAME( 199?, cb3c, ncb3, cb3c, chrygld, cb3_state, init_cb3, ROT0, "bootleg", "Cherry Bonus III (alt, set 2)", MACHINE_NOT_WORKING)
GAME( 199?, cb3c, ncb3, cb3c, chrygld, cb3_state, init_cb3, ROT0, "bootleg", "Cherry Bonus III (alt, set 2)", MACHINE_NOT_WORKING) // encrypted
GAMEL( 199?, cb3d, ncb3, ncb3, ncb3, cb3_state, empty_init, ROT0, "bootleg", "Cherry Bonus III (set 3)", 0, layout_cherryb3 )
GAMEL( 199?, cb3e, ncb3, cb3e, chrygld, cb3_state, init_cb3e, ROT0, "bootleg", "Cherry Bonus III (set 4, encrypted bootleg)", 0, layout_chrygld )
GAMEL( 199?, cb3f, ncb3, ncb3, ncb3, cb3_state, init_cb3f, ROT0, "bootleg (Cleco)", "Cherry Bonus III (set 5, encrypted bootleg)", MACHINE_NOT_WORKING, layout_chrygld ) // partially decrypted, stops at 'call attendant'
GAMEL( 199?, chryglda, ncb3, cb3e, chrygld, cb3_state, init_cb3e, ROT0, "bootleg", "Cherry Gold I (set 2, encrypted bootleg)", 0, layout_chrygld ) // Runs in CB3e hardware.
GAME( 1994, chryangla, ncb3, chryangla,ncb3, cb3_state, init_chryangl, ROT0, "bootleg (G.C.I.)", "Cherry Angel (encrypted, W-4 hardware)", MACHINE_NOT_WORKING ) // DYNA CB3 V1.40 string, decrypted but only test screens work
@ -19574,7 +19634,7 @@ GAMEL( 1991, cmasterh, cmaster, cm, cmasterh, cmaster_state, init_cmv4,
GAMEL( 1991, cmasteri, cmaster, cm, cmasterb, cmaster_state, init_cmv4, ROT0, "Dyna", "Cherry Master I (ver.1.01, set 9)", 0, layout_cmasterb ) // NMC27CP128Q being 32k x8 instead of 16k x8...
GAMEL( 1991, cmasterj, cmaster, cm, cmasterb, cmaster_state, init_cmv4, ROT0, "Dyna", "Cherry Master I (ver.1.01, set 10, BET stops all)", 0, layout_cmasterb )
GAMEL( 1991, cmasterk, cmaster, cm, cmasterb, cmaster_state, init_cmv4, ROT0, "Dyna", "Cherry Master I (ver.1.01, set 11, TAKE stops all)", 0, layout_cmasterb )
GAMEL( 199?, super7, cmaster, chryangl, cmaster, cmaster_state, init_super7, ROT0, "bootleg", "Super Seven", MACHINE_NOT_WORKING, layout_cmasterb ) // bad palette, no reels, decryption might be missing something, too
GAMEL( 199?, super7, cmaster, super7, cmaster, cmaster_state, init_super7, ROT0, "bootleg", "Super Seven", MACHINE_NOT_WORKING, layout_cmasterb ) // bad palette, no reels, decryption might be missing something, too
GAME ( 199?, wcat3a, wcat3, chryangl, cmaster, cmaster_state, init_wcat3a, ROT0, "E.A.I.", "Wild Cat 3 (CMV4 hardware)", MACHINE_NOT_WORKING ) // does not boot. Wrong decryption, wrong machine or wrong what?
GAMEL( 1991, tonypok, 0, cm, tonypok, cmaster_state, init_tonypok, ROT0, "Corsica", "Poker Master (Tony-Poker V3.A, hack?)", 0 , layout_tonypok )

View File

@ -203,6 +203,7 @@ public:
void amcoe1(machine_config &config);
void chryangl(machine_config &config);
void ss2001(machine_config &config);
void super7(machine_config &config);
void amcoe1_portmap(address_map &map);
void amcoe2_portmap(address_map &map);
void cm_portmap(address_map &map);
@ -295,6 +296,7 @@ public:
void init_cb3();
void init_cb3e();
void init_cb3f();
void init_cherrys();
void init_chrygld();
void init_chry10();
@ -315,6 +317,7 @@ protected:
void dump_to_file(uint8_t *rom);
uint8_t cb3_decrypt(uint8_t cipherText, uint16_t address);
uint8_t cb3f_decrypt(uint8_t cipherText, uint16_t address);
uint8_t chry10_decrypt(uint8_t cipherText);
};

View File

@ -15529,6 +15529,7 @@ cb3b // (c) 199? Dyna Electronics
cb3c // (c) 199? Dyna Electronics
cb3d // (c) 199? Dyna Electronics
cb3e // 199? bootleg
cb3f // 199? bootleg
cherry96 // bootleg
chry10 // bootleg
chryangl // (c) 199? Dyna Electronics