summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/goldstar.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/goldstar.cpp')
-rw-r--r--src/mame/drivers/goldstar.cpp41
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?