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.cpp72
1 files changed, 61 insertions, 11 deletions
diff --git a/src/mame/drivers/goldstar.cpp b/src/mame/drivers/goldstar.cpp
index 7c6d35a845b..5f570f5568b 100644
--- a/src/mame/drivers/goldstar.cpp
+++ b/src/mame/drivers/goldstar.cpp
@@ -17734,24 +17734,24 @@ void cmaster_state::init_chthree()
uint8_t *rom = memregion("maincpu")->base();
- for (int i = 0000; i < 0x8000; i++)
+ for (int i = 0x0000; i < 0x8000; i++)
{
uint8_t row = i & 0x07;
uint16_t addr;
switch (row)
{
- case 0x00: addr = 0x0c; break;
- case 0x01: addr = 0x09; break;
- case 0x02: addr = 0x0b; break;
- case 0x03: addr = 0x0a; break;
- case 0x04: addr = 0x08; break;
- case 0x05: addr = 0x0d; break;
- case 0x06: addr = 0x0f; break;
- case 0x07: addr = 0x0e; break;
+ case 0x00: addr = 0x0c; break;
+ case 0x01: addr = 0x09; break;
+ case 0x02: addr = 0x0b; break;
+ case 0x03: addr = 0x0a; break;
+ case 0x04: addr = 0x08; break;
+ case 0x05: addr = 0x0d; break;
+ case 0x06: addr = 0x0f; break;
+ case 0x07: addr = 0x0e; break;
}
- addr = (i & 0xfff0) | addr;
+ addr = (i & 0x7ff0) | addr;
if (!BIT(i, 3))
std::swap(rom[i], rom[addr]);
@@ -17761,6 +17761,56 @@ void cmaster_state::init_chthree()
rom[0x1ff] = 0xbd;
rom[0x209] = 0x9b;
rom[0x20d] = 0x9b;
+
+ // TODO: can the following be done with GFXDECODE?
+
+ uint8_t *gfx1 = memregion("gfx1")->base();
+
+ for (int i = 0x00000; i < 0x18000; i++)
+ {
+ uint8_t row = i & 0x0f;
+ uint32_t addr;
+
+ switch (row)
+ {
+ case 0x01: addr = 0x04; break;
+ case 0x02: addr = 0x01; break;
+ case 0x03: addr = 0x06; break;
+ case 0x05: addr = 0x06; break;
+ case 0x09: addr = 0x0c; break;
+ case 0x0a: addr = 0x09; break;
+ case 0x0b: addr = 0x0e; break;
+ case 0x0d: addr = 0x0e; break;
+ default: addr = row; break;
+ }
+
+ addr = (i & 0x1fff0) | addr;
+
+ std::swap(gfx1[i], gfx1[addr]);
+ }
+
+ uint8_t *gfx2 = memregion("gfx2")->base();
+
+ for (int i = 0x00000; i < 0x8000; i++)
+ {
+ uint8_t row = i & 0x0f;
+ uint16_t addr;
+
+ switch (row)
+ {
+ case 0x01: addr = 0x02; break;
+ case 0x04: addr = 0x08; break;
+ case 0x05: addr = 0x0a; break;
+ case 0x06: addr = 0x09; break;
+ case 0x07: addr = 0x0b; break;
+ case 0x0d: addr = 0x0e; break;
+ default: addr = row; break;
+ }
+
+ addr = (i & 0x7ff0) | addr;
+
+ std::swap(gfx2[i], gfx2[addr]);
+ }
}
/*
@@ -17967,7 +18017,7 @@ GAME( 1999, jkrmasta, jkrmast, pkrmast, pkrmast, goldstar_state, init_jkrma
GAME( 199?, pkrmast, jkrmast, pkrmast, pkrmast, goldstar_state, init_pkrmast, ROT0, "Fun USA", "Poker Master (ED-1993 set 1)", MACHINE_NOT_WORKING ) // needs inputs / dips fixed, puts FUN USA 95H N/G V2.20 in NVRAM
GAME( 1993, pkrmasta, jkrmast, pkrmast, pkrmast, goldstar_state, init_pkrmast, ROT0, "Fun USA", "Poker Master (ED-1993 set 2)", MACHINE_NOT_WORKING ) // needs inputs / dips fixed, puts PM93 JAN 29/1996 V1.52 in NVRAM
-GAME( 199?, chthree, cmaster, cm, cmaster, cmaster_state, init_chthree, ROT0, "Promat", "Channel Three", MACHINE_NOT_WORKING) // GFX scrambled
+GAME( 199?, chthree, cmaster, cm, cmaster, cmaster_state, init_chthree, ROT0, "Promat", "Channel Three", 0 ) // hack of cmaster, still shows DYNA CM-1 V1.01 in book-keeping
GAME( 1991, cmast91, 0, cmast91, cmast91, goldstar_state, init_cmast91, ROT0, "Dyna", "Cherry Master '91 (ver.1.30)", 0 )
GAME( 1992, cmast92, 0, cmast91, cmast91, goldstar_state, init_cmast91, ROT0, "Dyna", "Cherry Master '92", MACHINE_NOT_WORKING ) // no gfx roms are dumped