diff options
Diffstat (limited to 'src/mame/drivers/goldstar.cpp')
-rw-r--r-- | src/mame/drivers/goldstar.cpp | 41 |
1 files changed, 37 insertions, 4 deletions
diff --git a/src/mame/drivers/goldstar.cpp b/src/mame/drivers/goldstar.cpp index 9be1164c8a6..f25318b9d52 100644 --- a/src/mame/drivers/goldstar.cpp +++ b/src/mame/drivers/goldstar.cpp @@ -11096,7 +11096,10 @@ ROM_END // the program roms on these seem scrambled somehow ROM_START( jkrmast ) ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "pid-515.u5", 0x0000, 0x10000, CRC(73caf824) SHA1(b7a7bb6190465f7c3b40f2ef97f4f6beeb89ec41) ) + ROM_LOAD( "pid-515.u5", 0x4000, 0x4000, CRC(73caf824) SHA1(b7a7bb6190465f7c3b40f2ef97f4f6beeb89ec41) ) + ROM_CONTINUE(0x0000, 0x4000) + ROM_CONTINUE(0xc000, 0x4000) + ROM_CONTINUE(0x8000, 0x4000) ROM_REGION( 0x20000, "gfx1", 0 ) ROM_LOAD( "2000b.u48", 0x00000, 0x20000, CRC(e7b406ec) SHA1(c0a10cf8bf5467ecfe3c90e6897db3ab9aae0127) ) @@ -11113,7 +11116,10 @@ ROM_END ROM_START( jkrmasta ) ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "pid-513.u5", 0x0000, 0x10000, CRC(12fa7ea0) SHA1(71ee141fe01ae2ce9913620b52c54cf445fd0b00) ) + ROM_LOAD( "pid-513.u5", 0x4000, 0x4000, CRC(12fa7ea0) SHA1(71ee141fe01ae2ce9913620b52c54cf445fd0b00) ) + ROM_CONTINUE(0x0000, 0x4000) + ROM_CONTINUE(0xc000, 0x4000) + ROM_CONTINUE(0x8000, 0x4000) ROM_REGION( 0x20000, "gfx1", 0 ) ROM_LOAD( "2000b.u48", 0x00000, 0x20000, CRC(e7b406ec) SHA1(c0a10cf8bf5467ecfe3c90e6897db3ab9aae0127) ) @@ -15951,6 +15957,33 @@ void goldstar_state::init_goldstar() } } +void goldstar_state::init_jkrmast() +{ + uint8_t *ROM = memregion("maincpu")->base(); + + for (int A = 0; A < 0x8000; A++) + { + uint8_t x = ROM[A]; + x = bitswap<8>(x ^ 0x0a, 5, 6, 1, 4, 7, 2, 3, 0); + ROM[A] = x; + } + + uint8_t buf[0x8000]; + memcpy(buf, ROM, 0x8000); + + for (int i = 0; i < 0x8000; i++) + { + if ((i & 0x60) == 0x00) + ROM[i] = buf[i^0x08]; + else if ((i & 0x60) == 0x60) + ROM[i] = buf[i^0x10]; + else if ((i & 0x60) == 0x40) + ROM[i] = buf[i^0x18]; + else if ((i & 0x60) == 0x20) + ROM[i] = buf[i]; + } +} + // this block swapping is the same for chry10, chrygld and cb3 // the underlying bitswaps / xors are different however void cb3_state::do_blockswaps(uint8_t* ROM) @@ -16749,8 +16782,8 @@ GAMEL( 1991, cmasterh, cmaster, cm, cmasterb, cmaster_state, init_cmv4, GAMEL( 199?, super7, cmaster, cm, cmaster, cmaster_state, init_super7, ROT0, "bootleg", "Super Seven", MACHINE_NOT_WORKING, layout_cmasterb ) GAMEL( 1991, tonypok, 0, cm, tonypok, cmaster_state, init_tonypok, ROT0, "Corsica", "Poker Master (Tony-Poker V3.A, hack?)", 0 , layout_tonypok ) -GAME( 199?, jkrmast, 0, pkrmast, pkrmast, goldstar_state, empty_init, ROT0, "<unknown>", "Joker Master (V515)", MACHINE_NOT_WORKING ) // encrypted -GAME( 199?, jkrmasta, jkrmast, pkrmast, pkrmast, goldstar_state, empty_init, ROT0, "<unknown>", "Joker Master (V512)", MACHINE_NOT_WORKING ) // encrypted +GAME( 1999, jkrmast, 0, pkrmast, pkrmast, goldstar_state, init_jkrmast, ROT0, "Pick-A-Party USA", "Joker Master (V515)", MACHINE_NOT_WORKING ) // encryption broken, needs GFX and controls +GAME( 1999, jkrmasta, jkrmast, pkrmast, pkrmast, goldstar_state, init_jkrmast, ROT0, "Pick-A-Party USA", "Joker Master (V512)", MACHINE_NOT_WORKING ) // encryption broken, needs GFX and controls GAME( 199?, pkrmast, jkrmast, pkrmast, pkrmast, goldstar_state, empty_init, ROT0, "<unknown>", "Poker Master (ED-1993 set 1)", MACHINE_NOT_WORKING ) // incomplete dump + encrypted? GAME( 1993, pkrmasta, jkrmast, pkrmast, pkrmast, goldstar_state, empty_init, ROT0, "<unknown>", "Poker Master (ED-1993 set 2)", MACHINE_NOT_WORKING ) // incomplete dump + encrypted? |