summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Fabio Priuli <etabeta78@users.noreply.github.com>2010-03-17 08:22:06 +0000
committer Fabio Priuli <etabeta78@users.noreply.github.com>2010-03-17 08:22:06 +0000
commit9aa86db4c88346dce7000ca72692dd5210caecc7 (patch)
tree7557a710075b3260a8578da7d2dbcb1f950316cd
parent20aeb1cfcd75c56c90c1427ca953484960f46444 (diff)
tlcs90.c: added save states [Fabio Priuli]
ddenlovr.c, dynax.c: replaced memory_set_bankptr with memory_set_bankp and added save state support [Fabio Priuli] side note: this and rev.8619 took definitely more time than I expected (especially to test as many drivers as possible), but there should be no regressions /me crossing fingers
-rw-r--r--src/emu/cpu/tlcs90/tlcs90.c48
-rw-r--r--src/mame/drivers/ddenlovr.c363
-rw-r--r--src/mame/drivers/dynax.c177
-rw-r--r--src/mame/includes/dynax.h3
4 files changed, 384 insertions, 207 deletions
diff --git a/src/emu/cpu/tlcs90/tlcs90.c b/src/emu/cpu/tlcs90/tlcs90.c
index 75055706631..b9bbbe05bf7 100644
--- a/src/emu/cpu/tlcs90/tlcs90.c
+++ b/src/emu/cpu/tlcs90/tlcs90.c
@@ -2636,12 +2636,58 @@ static WRITE8_HANDLER( t90_internal_registers_w )
cpustate->internal_registers[offset] = data;
}
+static void state_register( running_device *device )
+{
+ t90_Regs *cpustate = get_safe_token(device);
+
+ state_save_register_device_item(device, 0, cpustate->prvpc.w.l);
+ state_save_register_device_item(device, 0, cpustate->pc.w.l);
+ state_save_register_device_item(device, 0, cpustate->sp.w.l);
+ state_save_register_device_item(device, 0, cpustate->af.w.l);
+ state_save_register_device_item(device, 0, cpustate->bc.w.l);
+ state_save_register_device_item(device, 0, cpustate->de.w.l);
+ state_save_register_device_item(device, 0, cpustate->hl.w.l);
+ state_save_register_device_item(device, 0, cpustate->ix.w.l);
+ state_save_register_device_item(device, 0, cpustate->iy.w.l);
+ state_save_register_device_item(device, 0, cpustate->af2.w.l);
+ state_save_register_device_item(device, 0, cpustate->bc2.w.l);
+ state_save_register_device_item(device, 0, cpustate->de2.w.l);
+ state_save_register_device_item(device, 0, cpustate->hl2.w.l);
+ state_save_register_device_item(device, 0, cpustate->halt);
+ state_save_register_device_item(device, 0, cpustate->after_EI);
+ state_save_register_device_item(device, 0, cpustate->irq_state);
+ state_save_register_device_item(device, 0, cpustate->irq_mask);
+ state_save_register_device_item(device, 0, cpustate->icount);
+ state_save_register_device_item(device, 0, cpustate->extra_cycles);
+
+ state_save_register_device_item_array(device, 0, cpustate->internal_registers);
+ state_save_register_device_item(device, 0, cpustate->ixbase);
+ state_save_register_device_item(device, 0, cpustate->iybase);
+
+ state_save_register_device_item_array(device, 0, cpustate->timer_value);
+ state_save_register_device_item(device, 0, cpustate->timer4_value);
+
+ // Work registers
+ state_save_register_device_item(device, 0, cpustate->op);
+ state_save_register_device_item(device, 0, cpustate->mode1);
+ state_save_register_device_item(device, 0, cpustate->r1);
+ state_save_register_device_item(device, 0, cpustate->r1b);
+ state_save_register_device_item(device, 0, cpustate->mode2);
+ state_save_register_device_item(device, 0, cpustate->r2);
+ state_save_register_device_item(device, 0, cpustate->r2b);
+
+ state_save_register_device_item(device, 0, cpustate->cyc_t);
+ state_save_register_device_item(device, 0, cpustate->cyc_f);
+ state_save_register_device_item(device, 0, cpustate->addr);
+}
+
+
static CPU_INIT( t90 )
{
t90_Regs *cpustate = get_safe_token(device);
int i, p;
-// state_save_register_device_item(device, 0, Z80.prvpc.w.l);
+ state_register(device);
for (i = 0; i < 256; i++)
{
diff --git a/src/mame/drivers/ddenlovr.c b/src/mame/drivers/ddenlovr.c
index d63c9a728f1..e8a57216f57 100644
--- a/src/mame/drivers/ddenlovr.c
+++ b/src/mame/drivers/ddenlovr.c
@@ -1266,7 +1266,6 @@ static READ16_HANDLER( ddenlovr_gfxrom_r )
}
-
static void copylayer(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int layer )
{
dynax_state *state = (dynax_state *)machine->driver_data;
@@ -1632,11 +1631,11 @@ static READ8_DEVICE_HANDLER( quiz365_input_r )
{
dynax_state *state = (dynax_state *)device->machine->driver_data;
- if (!(state->dsw_sel & 0x01)) return input_port_read(device->machine, "DSW1");
- if (!(state->dsw_sel & 0x02)) return input_port_read(device->machine, "DSW2");
- if (!(state->dsw_sel & 0x04)) return input_port_read(device->machine, "DSW3");
- if (!(state->dsw_sel & 0x08)) return 0xff;//mame_rand(device->machine);
- if (!(state->dsw_sel & 0x10)) return 0xff;//mame_rand(device->machine);
+ if (!BIT(state->dsw_sel, 0)) return input_port_read(device->machine, "DSW1");
+ if (!BIT(state->dsw_sel, 1)) return input_port_read(device->machine, "DSW2");
+ if (!BIT(state->dsw_sel, 2)) return input_port_read(device->machine, "DSW3");
+ if (!BIT(state->dsw_sel, 3)) return 0xff;//mame_rand(device->machine);
+ if (!BIT(state->dsw_sel, 4)) return 0xff;//mame_rand(device->machine);
return 0xff;
}
@@ -1924,9 +1923,9 @@ static READ16_HANDLER( nettoqc_input_r )
{
dynax_state *state = (dynax_state *)space->machine->driver_data;
- if (!(state->dsw_sel & 0x01)) return input_port_read(space->machine, "DSW1");
- if (!(state->dsw_sel & 0x02)) return input_port_read(space->machine, "DSW2");
- if (!(state->dsw_sel & 0x04)) return input_port_read(space->machine, "DSW3");
+ if (!BIT(state->dsw_sel, 0)) return input_port_read(space->machine, "DSW1");
+ if (!BIT(state->dsw_sel, 1)) return input_port_read(space->machine, "DSW2");
+ if (!BIT(state->dsw_sel, 2)) return input_port_read(space->machine, "DSW3");
return 0xffff;
}
@@ -2006,26 +2005,26 @@ static READ8_HANDLER( rongrong_input_r )
{
dynax_state *state = (dynax_state *)space->machine->driver_data;
- if (!(state->dsw_sel & 0x01)) return input_port_read(space->machine, "DSW1");
- if (!(state->dsw_sel & 0x02)) return input_port_read(space->machine, "DSW2");
- if (!(state->dsw_sel & 0x04)) return 0xff;//mame_rand(space->machine);
- if (!(state->dsw_sel & 0x08)) return 0xff;//mame_rand(space->machine);
- if (!(state->dsw_sel & 0x10)) return input_port_read(space->machine, "DSW3");
+ if (!BIT(state->dsw_sel, 0)) return input_port_read(space->machine, "DSW1");
+ if (!BIT(state->dsw_sel, 1)) return input_port_read(space->machine, "DSW2");
+ if (!BIT(state->dsw_sel, 2)) return 0xff;//mame_rand(space->machine);
+ if (!BIT(state->dsw_sel, 3)) return 0xff;//mame_rand(space->machine);
+ if (!BIT(state->dsw_sel, 4)) return input_port_read(space->machine, "DSW3");
return 0xff;
}
static WRITE8_HANDLER( rongrong_select_w )
{
dynax_state *state = (dynax_state *)space->machine->driver_data;
- UINT8 *rom = memory_region(space->machine, "maincpu");
//logerror("%04x: rongrong_select_w %02x\n",cpu_get_pc(space->cpu),data);
+
/* bits 0-4 = **both** ROM bank **AND** input select */
- memory_set_bankptr(space->machine, "bank1", &rom[0x10000 + 0x8000 * (data & 0x1f)]);
+ memory_set_bank(space->machine, "bank1", data & 0x1f);
state->dsw_sel = data;
/* bits 5-7 = RAM bank */
- memory_set_bankptr(space->machine, "bank2", &rom[0x110000 + 0x1000 * ((data & 0xe0) >> 5)]);
+ memory_set_bank(space->machine, "bank2", ((data & 0xe0) >> 5));
}
@@ -2119,8 +2118,7 @@ static READ8_HANDLER( magic_r )
static WRITE8_HANDLER( mmpanic_rombank_w )
{
- UINT8 *rom = memory_region(space->machine, "maincpu");
- memory_set_bankptr(space->machine, "bank1", &rom[0x10000 + 0x8000 * (data & 0x7)]);
+ memory_set_bank(space->machine, "bank1", data & 0x7);
/* Bit 4? */
}
@@ -2283,22 +2281,21 @@ static WRITE8_HANDLER( funkyfig_blitter_w )
static WRITE8_HANDLER( funkyfig_rombank_w )
{
dynax_state *state = (dynax_state *)space->machine->driver_data;
- UINT8 *rom = memory_region(space->machine, "maincpu");
state->dsw_sel = data;
- memory_set_bankptr(space->machine, "bank1", &rom[0x10000 + 0x8000 * (data & 0x0f)]);
+ memory_set_bank(space->machine, "bank1", data & 0x0f);
// bit 4 selects palette ram at 8000?
- memory_set_bankptr(space->machine, "bank2", &rom[0x90000 + 0x1000 * ((data & 0xe0) >> 5)]);
+ memory_set_bank(space->machine, "bank2", ((data & 0xe0) >> 5));
}
static READ8_HANDLER( funkyfig_dsw_r )
{
dynax_state *state = (dynax_state *)space->machine->driver_data;
- if (!(state->dsw_sel & 0x01)) return input_port_read(space->machine, "DSW1");
- if (!(state->dsw_sel & 0x02)) return input_port_read(space->machine, "DSW2");
- if (!(state->dsw_sel & 0x04)) return input_port_read(space->machine, "DSW3");
+ if (!BIT(state->dsw_sel, 0)) return input_port_read(space->machine, "DSW1");
+ if (!BIT(state->dsw_sel, 1)) return input_port_read(space->machine, "DSW2");
+ if (!BIT(state->dsw_sel, 2)) return input_port_read(space->machine, "DSW3");
logerror("%06x: warning, unknown bits read, ddenlovr_select = %02x\n", cpu_get_pc(space->cpu), state->dsw_sel);
return 0xff;
}
@@ -2399,11 +2396,8 @@ ADDRESS_MAP_END
static WRITE8_HANDLER( hanakanz_rombank_w )
{
- UINT8 *rom = memory_region(space->machine, "maincpu");
-
- memory_set_bankptr(space->machine, "bank1", &rom[0x10000 + 0x8000 * (data & 0x0f)]);
-
- memory_set_bankptr(space->machine, "bank2", &rom[0x90000 + 0x1000 * ((data & 0xf0) >> 4)]);
+ memory_set_bank(space->machine, "bank1", data & 0x0f);
+ memory_set_bank(space->machine, "bank2", ((data & 0xf0) >> 4));
}
static ADDRESS_MAP_START( hanakanz_map, ADDRESS_SPACE_PROGRAM, 8 )
@@ -2432,11 +2426,11 @@ static READ8_HANDLER( hanakanz_keyb_r )
UINT8 val = 0xff;
- if (!(state->keyb & 0x01)) val = input_port_read(space->machine, offset ? "KEY5" : "KEY0");
- else if (!(state->keyb & 0x02)) val = input_port_read(space->machine, offset ? "KEY6" : "KEY1");
- else if (!(state->keyb & 0x04)) val = input_port_read(space->machine, offset ? "KEY7" : "KEY2");
- else if (!(state->keyb & 0x08)) val = input_port_read(space->machine, offset ? "KEY8" : "KEY3");
- else if (!(state->keyb & 0x10)) val = input_port_read(space->machine, offset ? "KEY9" : "KEY4");
+ if (!BIT(state->keyb, 0)) val = input_port_read(space->machine, offset ? "KEY5" : "KEY0");
+ else if (!BIT(state->keyb, 1)) val = input_port_read(space->machine, offset ? "KEY6" : "KEY1");
+ else if (!BIT(state->keyb, 2)) val = input_port_read(space->machine, offset ? "KEY7" : "KEY2");
+ else if (!BIT(state->keyb, 3)) val = input_port_read(space->machine, offset ? "KEY8" : "KEY3");
+ else if (!BIT(state->keyb, 4)) val = input_port_read(space->machine, offset ? "KEY9" : "KEY4");
val |= input_port_read(space->machine, offset ? "HOPPER" : "BET");
return val;
@@ -2446,11 +2440,11 @@ static READ8_HANDLER( hanakanz_dsw_r )
{
dynax_state *state = (dynax_state *)space->machine->driver_data;
- if (!(state->dsw_sel & 0x01)) return input_port_read(space->machine, "DSW1");
- if (!(state->dsw_sel & 0x02)) return input_port_read(space->machine, "DSW2");
- if (!(state->dsw_sel & 0x04)) return input_port_read(space->machine, "DSW3");
- if (!(state->dsw_sel & 0x08)) return input_port_read(space->machine, "DSW4");
- if (!(state->dsw_sel & 0x10)) return input_port_read(space->machine, "DSW5");
+ if (!BIT(state->dsw_sel, 0)) return input_port_read(space->machine, "DSW1");
+ if (!BIT(state->dsw_sel, 1)) return input_port_read(space->machine, "DSW2");
+ if (!BIT(state->dsw_sel, 2)) return input_port_read(space->machine, "DSW3");
+ if (!BIT(state->dsw_sel, 3)) return input_port_read(space->machine, "DSW4");
+ if (!BIT(state->dsw_sel, 4)) return input_port_read(space->machine, "DSW5");
return 0xff;
}
@@ -2620,11 +2614,11 @@ static READ8_HANDLER( mjchuuka_keyb_r )
dynax_state *state = (dynax_state *)space->machine->driver_data;
UINT8 val = 0xff;
- if (!(state->keyb & 0x01)) val = input_port_read(space->machine, offset ? "KEY5" : "KEY0");
- else if (!(state->keyb & 0x02)) val = input_port_read(space->machine, offset ? "KEY6" : "KEY1");
- else if (!(state->keyb & 0x04)) val = input_port_read(space->machine, offset ? "KEY7" : "KEY2");
- else if (!(state->keyb & 0x08)) val = input_port_read(space->machine, offset ? "KEY8" : "KEY3");
- else if (!(state->keyb & 0x10)) val = input_port_read(space->machine, offset ? "KEY9" : "KEY4");
+ if (!BIT(state->keyb, 0)) val = input_port_read(space->machine, offset ? "KEY5" : "KEY0");
+ else if (!BIT(state->keyb, 1)) val = input_port_read(space->machine, offset ? "KEY6" : "KEY1");
+ else if (!BIT(state->keyb, 2)) val = input_port_read(space->machine, offset ? "KEY7" : "KEY2");
+ else if (!BIT(state->keyb, 3)) val = input_port_read(space->machine, offset ? "KEY8" : "KEY3");
+ else if (!BIT(state->keyb, 4)) val = input_port_read(space->machine, offset ? "KEY9" : "KEY4");
val |= input_port_read(space->machine, offset ? "HOPPER" : "BET");
@@ -2759,9 +2753,8 @@ ADDRESS_MAP_END
static WRITE8_HANDLER( mjmyster_rambank_w )
{
- UINT8 *rom = memory_region(space->machine, "maincpu");
- memory_set_bankptr(space->machine, "bank2", &rom[0x90000 + 0x1000 * (data & 0x07)]);
-// logerror("%04x: rambank = %02x\n", cpu_get_pc(space->cpu), data);
+ memory_set_bank(space->machine, "bank2", data & 0x07);
+ //logerror("%04x: rambank = %02x\n", cpu_get_pc(space->cpu), data);
}
static WRITE8_HANDLER( mjmyster_select2_w )
@@ -2795,11 +2788,11 @@ static READ8_HANDLER( mjmyster_keyb_r )
dynax_state *state = (dynax_state *)space->machine->driver_data;
UINT8 ret = 0xff;
- if (state->keyb & 0x01) ret = input_port_read(space->machine, "KEY0");
- else if (state->keyb & 0x02) ret = input_port_read(space->machine, "KEY1");
- else if (state->keyb & 0x04) ret = input_port_read(space->machine, "KEY2");
- else if (state->keyb & 0x08) ret = input_port_read(space->machine, "KEY3");
- else if (state->keyb & 0x10) ret = input_port_read(space->machine, "KEY4");
+ if (BIT(state->keyb, 0)) ret = input_port_read(space->machine, "KEY0");
+ else if (BIT(state->keyb, 1)) ret = input_port_read(space->machine, "KEY1");
+ else if (BIT(state->keyb, 2)) ret = input_port_read(space->machine, "KEY2");
+ else if (BIT(state->keyb, 3)) ret = input_port_read(space->machine, "KEY3");
+ else if (BIT(state->keyb, 4)) ret = input_port_read(space->machine, "KEY4");
else logerror("%06x: warning, unknown bits read, keyb = %02x\n", cpu_get_pc(space->cpu), state->keyb);
state->keyb <<= 1;
@@ -2811,11 +2804,11 @@ static READ8_HANDLER( mjmyster_dsw_r )
{
dynax_state *state = (dynax_state *)space->machine->driver_data;
- if (!(state->dsw_sel & 0x01)) return input_port_read(space->machine, "DSW4");
- if (!(state->dsw_sel & 0x02)) return input_port_read(space->machine, "DSW3");
- if (!(state->dsw_sel & 0x04)) return input_port_read(space->machine, "DSW2");
- if (!(state->dsw_sel & 0x08)) return input_port_read(space->machine, "DSW1");
- if (!(state->dsw_sel & 0x10)) return input_port_read(space->machine, "DSW5");
+ if (!BIT(state->dsw_sel, 0)) return input_port_read(space->machine, "DSW4");
+ if (!BIT(state->dsw_sel, 1)) return input_port_read(space->machine, "DSW3");
+ if (!BIT(state->dsw_sel, 2)) return input_port_read(space->machine, "DSW2");
+ if (!BIT(state->dsw_sel, 3)) return input_port_read(space->machine, "DSW1");
+ if (!BIT(state->dsw_sel, 4)) return input_port_read(space->machine, "DSW5");
logerror("%06x: warning, unknown bits read, ddenlovr_select = %02x\n", cpu_get_pc(space->cpu), state->dsw_sel);
return 0xff;
}
@@ -2880,8 +2873,7 @@ ADDRESS_MAP_END
static WRITE8_HANDLER( hginga_rombank_w )
{
dynax_state *state = (dynax_state *)space->machine->driver_data;
- UINT8 *rom = memory_region(space->machine, "maincpu");
- memory_set_bankptr(space->machine, "bank1", &rom[0x10000 + 0x8000 * (data & 0x7)]);
+ memory_set_bank(space->machine, "bank1", data & 0x7);
state->hginga_rombank = data;
}
@@ -2910,11 +2902,11 @@ static READ8_DEVICE_HANDLER( hginga_dsw_r )
{
dynax_state *state = (dynax_state *)device->machine->driver_data;
- if (!(state->dsw_sel & 0x01)) return input_port_read(device->machine, "DSW4");
- if (!(state->dsw_sel & 0x02)) return input_port_read(device->machine, "DSW3");
- if (!(state->dsw_sel & 0x04)) return input_port_read(device->machine, "DSW2");
- if (!(state->dsw_sel & 0x08)) return input_port_read(device->machine, "DSW1");
- if (!(state->dsw_sel & 0x10)) return input_port_read(device->machine, "DSW5");
+ if (!BIT(state->dsw_sel, 0)) return input_port_read(device->machine, "DSW4");
+ if (!BIT(state->dsw_sel, 1)) return input_port_read(device->machine, "DSW3");
+ if (!BIT(state->dsw_sel, 2)) return input_port_read(device->machine, "DSW2");
+ if (!BIT(state->dsw_sel, 3)) return input_port_read(device->machine, "DSW1");
+ if (!BIT(state->dsw_sel, 4)) return input_port_read(device->machine, "DSW5");
logerror("%s: warning, unknown bits read, ddenlovr_select = %02x\n", cpuexec_describe_context(device->machine), state->dsw_sel);
return 0xff;
@@ -3062,11 +3054,11 @@ static UINT8 hgokou_player_r( const address_space *space, int player )
dynax_state *state = (dynax_state *)space->machine->driver_data;
UINT8 hopper_bit = ((state->hopper && !(video_screen_get_frame_number(space->machine->primary_screen) % 10)) ? 0 : (1 << 6));
- if (!(state->input_sel & 0x01)) return input_port_read(space->machine, player ? "KEY5" : "KEY0") | hopper_bit;
- if (!(state->input_sel & 0x02)) return input_port_read(space->machine, player ? "KEY6" : "KEY1") | hopper_bit;
- if (!(state->input_sel & 0x04)) return input_port_read(space->machine, player ? "KEY7" : "KEY2") | hopper_bit;
- if (!(state->input_sel & 0x08)) return input_port_read(space->machine, player ? "KEY8" : "KEY3") | hopper_bit;
- if (!(state->input_sel & 0x10)) return input_port_read(space->machine, player ? "KEY9" : "KEY4") | hopper_bit;
+ if (!BIT(state->input_sel, 0)) return input_port_read(space->machine, player ? "KEY5" : "KEY0") | hopper_bit;
+ if (!BIT(state->input_sel, 1)) return input_port_read(space->machine, player ? "KEY6" : "KEY1") | hopper_bit;
+ if (!BIT(state->input_sel, 2)) return input_port_read(space->machine, player ? "KEY7" : "KEY2") | hopper_bit;
+ if (!BIT(state->input_sel, 3)) return input_port_read(space->machine, player ? "KEY8" : "KEY3") | hopper_bit;
+ if (!BIT(state->input_sel, 4)) return input_port_read(space->machine, player ? "KEY9" : "KEY4") | hopper_bit;
return 0x7f; // bit 7 = blitter busy, bit 6 = hopper
}
@@ -3175,13 +3167,12 @@ ADDRESS_MAP_END
static WRITE8_HANDLER( hparadis_select_w )
{
dynax_state *state = (dynax_state *)space->machine->driver_data;
- UINT8 *rom = memory_region(space->machine, "maincpu");
state->dsw_sel = data;
state->keyb = 0;
- memory_set_bankptr(space->machine, "bank1", &rom[0x10000 + 0x8000 * (data & 0x07)]);
- memory_set_bankptr(space->machine, "bank2", &rom[0x50000 + 0x1000 * ((data & 0xe0) >> 5)]);
+ memory_set_bank(space->machine, "bank1", data & 0x07);
+ memory_set_bank(space->machine, "bank2", ((data & 0xe0) >> 5));
}
@@ -3208,11 +3199,11 @@ static READ8_HANDLER( hparadis_dsw_r )
{
dynax_state *state = (dynax_state *)space->machine->driver_data;
- if (!(state->dsw_sel & 0x01)) return input_port_read(space->machine, "DSW1");
- if (!(state->dsw_sel & 0x02)) return input_port_read(space->machine, "DSW2");
- if (!(state->dsw_sel & 0x04)) return 0xff;
- if (!(state->dsw_sel & 0x08)) return 0xff;
- if (!(state->dsw_sel & 0x10)) return input_port_read(space->machine, "DSW3");
+ if (!BIT(state->dsw_sel, 0)) return input_port_read(space->machine, "DSW1");
+ if (!BIT(state->dsw_sel, 1)) return input_port_read(space->machine, "DSW2");
+ if (!BIT(state->dsw_sel, 2)) return 0xff;
+ if (!BIT(state->dsw_sel, 3)) return 0xff;
+ if (!BIT(state->dsw_sel, 4)) return input_port_read(space->machine, "DSW3");
return 0xff;
}
@@ -3413,14 +3404,13 @@ ADDRESS_MAP_END
static WRITE8_HANDLER( mjflove_rombank_w )
{
- UINT8 *rom = memory_region(space->machine, "maincpu");
- memory_set_bankptr(space->machine, "bank1", &rom[0x10000 + 0x8000 * (data & 0xf)]);
+ memory_set_bank(space->machine, "bank1", data & 0xf);
}
static WRITE8_DEVICE_HANDLER( mjflove_okibank_w )
{
okim6295_set_bank_base(device, (data & 0x07) * 0x40000);
-// popmessage("SOUND = %02x",data);
+ //popmessage("SOUND = %02x", data);
}
static READ8_HANDLER( mjflove_protection_r )
@@ -3433,11 +3423,11 @@ static READ8_HANDLER( mjflove_keyb_r )
dynax_state *state = (dynax_state *)space->machine->driver_data;
UINT8 val = 0xff;
- if (!(state->keyb & 0x01)) val = input_port_read(space->machine, offset ? "KEY5" : "KEY0");
- else if (!(state->keyb & 0x02)) val = input_port_read(space->machine, offset ? "KEY6" : "KEY1");
- else if (!(state->keyb & 0x04)) val = input_port_read(space->machine, offset ? "KEY7" : "KEY2");
- else if (!(state->keyb & 0x08)) val = input_port_read(space->machine, offset ? "KEY8" : "KEY3");
- else if (!(state->keyb & 0x10)) val = input_port_read(space->machine, offset ? "KEY9" : "KEY4");
+ if (!BIT(state->keyb, 0)) val = input_port_read(space->machine, offset ? "KEY5" : "KEY0");
+ else if (!BIT(state->keyb, 1)) val = input_port_read(space->machine, offset ? "KEY6" : "KEY1");
+ else if (!BIT(state->keyb, 2)) val = input_port_read(space->machine, offset ? "KEY7" : "KEY2");
+ else if (!BIT(state->keyb, 3)) val = input_port_read(space->machine, offset ? "KEY8" : "KEY3");
+ else if (!BIT(state->keyb, 4)) val = input_port_read(space->machine, offset ? "KEY9" : "KEY4");
return val;
}
@@ -3557,11 +3547,11 @@ static READ8_HANDLER( sryudens_keyb_r )
dynax_state *state = (dynax_state *)space->machine->driver_data;
UINT8 val = 0x3f;
- if (!(state->keyb & 0x01)) val = input_port_read(space->machine, offset ? "KEY5" : "KEY0");
- else if (!(state->keyb & 0x02)) val = input_port_read(space->machine, offset ? "KEY6" : "KEY1");
- else if (!(state->keyb & 0x04)) val = input_port_read(space->machine, offset ? "KEY7" : "KEY2");
- else if (!(state->keyb & 0x08)) val = input_port_read(space->machine, offset ? "KEY8" : "KEY3");
- else if (!(state->keyb & 0x10)) val = input_port_read(space->machine, offset ? "KEY9" : "KEY4");
+ if (!BIT(state->keyb, 0)) val = input_port_read(space->machine, offset ? "KEY5" : "KEY0");
+ else if (!BIT(state->keyb, 1)) val = input_port_read(space->machine, offset ? "KEY6" : "KEY1");
+ else if (!BIT(state->keyb, 2)) val = input_port_read(space->machine, offset ? "KEY7" : "KEY2");
+ else if (!BIT(state->keyb, 3)) val = input_port_read(space->machine, offset ? "KEY8" : "KEY3");
+ else if (!BIT(state->keyb, 4)) val = input_port_read(space->machine, offset ? "KEY9" : "KEY4");
val |= input_port_read(space->machine, offset ? "HOPPER" : "BET");
if (offset)
@@ -3589,9 +3579,8 @@ static WRITE8_HANDLER( sryudens_coincounter_w )
static WRITE8_HANDLER( sryudens_rambank_w )
{
- UINT8 *rom = memory_region(space->machine, "maincpu");
- memory_set_bankptr(space->machine, "bank2", &rom[0x90000 + 0x1000 * (data & 0x0f)]);
-// logerror("%04x: rambank = %02x\n", cpu_get_pc(space->cpu), data);
+ memory_set_bank(space->machine, "bank2", data & 0x0f);
+ //logerror("%04x: rambank = %02x\n", cpu_get_pc(space->cpu), data);
}
static ADDRESS_MAP_START( sryudens_portmap, ADDRESS_SPACE_IO, 8 )
@@ -3635,11 +3624,11 @@ static READ8_HANDLER( daimyojn_keyb1_r )
dynax_state *state = (dynax_state *)space->machine->driver_data;
UINT8 val = 0x3f;
- if (!(state->keyb & 0x01)) val = input_port_read(space->machine, "KEY0");
- else if (!(state->keyb & 0x02)) val = input_port_read(space->machine, "KEY1");
- else if (!(state->keyb & 0x04)) val = input_port_read(space->machine, "KEY2");
- else if (!(state->keyb & 0x08)) val = input_port_read(space->machine, "KEY3");
- else if (!(state->keyb & 0x10)) val = input_port_read(space->machine, "KEY4");
+ if (!BIT(state->keyb, 0)) val = input_port_read(space->machine, "KEY0");
+ else if (!BIT(state->keyb, 1)) val = input_port_read(space->machine, "KEY1");
+ else if (!BIT(state->keyb, 2)) val = input_port_read(space->machine, "KEY2");
+ else if (!BIT(state->keyb, 3)) val = input_port_read(space->machine, "KEY3");
+ else if (!BIT(state->keyb, 4)) val = input_port_read(space->machine, "KEY4");
val |= input_port_read(space->machine, "BET");
return val;
@@ -3650,11 +3639,11 @@ static READ8_HANDLER( daimyojn_keyb2_r )
dynax_state *state = (dynax_state *)space->machine->driver_data;
UINT8 val = 0x3f;
- if (!(state->keyb & 0x01)) val = input_port_read(space->machine, "KEY5");
- else if (!(state->keyb & 0x02)) val = input_port_read(space->machine, "KEY6");
- else if (!(state->keyb & 0x04)) val = input_port_read(space->machine, "KEY7");
- else if (!(state->keyb & 0x08)) val = input_port_read(space->machine, "KEY8");
- else if (!(state->keyb & 0x10)) val = input_port_read(space->machine, "KEY9");
+ if (!BIT(state->keyb, 0)) val = input_port_read(space->machine, "KEY5");
+ else if (!BIT(state->keyb, 1)) val = input_port_read(space->machine, "KEY6");
+ else if (!BIT(state->keyb, 2)) val = input_port_read(space->machine, "KEY7");
+ else if (!BIT(state->keyb, 3)) val = input_port_read(space->machine, "KEY8");
+ else if (!BIT(state->keyb, 4)) val = input_port_read(space->machine, "KEY9");
val |= input_port_read(space->machine, "HOPPER");
return val;
@@ -7597,6 +7586,7 @@ static MACHINE_START( ddenlovr )
state_save_register_global(machine, state->hginga_rombank);
state_save_register_global(machine, state->mjflove_irq_cause);
state_save_register_global(machine, state->daimyojn_palette_sel);
+ state_save_register_global_array(machine, state->palram);
state_save_register_global(machine, state->irq_count);
}
@@ -7627,6 +7617,79 @@ static MACHINE_RESET( ddenlovr )
state->quiz365_protection[1] = 0;
state->romdata[0] = 0;
state->romdata[1] = 0;
+
+ memset(state->palram, 0, ARRAY_LENGTH(state->palram));
+}
+
+static MACHINE_START( rongrong )
+{
+ UINT8 *ROM = memory_region(machine, "maincpu");
+ memory_configure_bank(machine, "bank1", 0, 0x20, &ROM[0x010000], 0x8000);
+ memory_configure_bank(machine, "bank2", 0, 8, &ROM[0x110000], 0x1000);
+
+ MACHINE_START_CALL(ddenlovr);
+}
+
+static MACHINE_START( mmpanic )
+{
+ UINT8 *ROM = memory_region(machine, "maincpu");
+ memory_configure_bank(machine, "bank1", 0, 8, &ROM[0x10000], 0x8000);
+
+ MACHINE_START_CALL(ddenlovr);
+}
+
+static MACHINE_START( funkyfig )
+{
+ UINT8 *ROM = memory_region(machine, "maincpu");
+ memory_configure_bank(machine, "bank1", 0, 0x10, &ROM[0x10000], 0x8000);
+ memory_configure_bank(machine, "bank2", 0, 8, &ROM[0x90000], 0x1000);
+
+ MACHINE_START_CALL(ddenlovr);
+}
+
+static MACHINE_START( hanakanz )
+{
+ UINT8 *ROM = memory_region(machine, "maincpu");
+ memory_configure_bank(machine, "bank1", 0, 0x10, &ROM[0x10000], 0x8000);
+ memory_configure_bank(machine, "bank2", 0, 0x10, &ROM[0x90000], 0x1000);
+
+ MACHINE_START_CALL(ddenlovr);
+}
+
+static MACHINE_START( mjmyster )
+{
+ UINT8 *ROM = memory_region(machine, "maincpu");
+ memory_configure_bank(machine, "bank1", 0, 8, &ROM[0x10000], 0x8000);
+ memory_configure_bank(machine, "bank2", 0, 8, &ROM[0x90000], 0x1000);
+
+ MACHINE_START_CALL(ddenlovr);
+}
+
+static MACHINE_START( hparadis )
+{
+ UINT8 *ROM = memory_region(machine, "maincpu");
+ memory_configure_bank(machine, "bank1", 0, 8, &ROM[0x10000], 0x8000);
+ memory_configure_bank(machine, "bank2", 0, 8, &ROM[0x50000], 0x1000);
+
+ MACHINE_START_CALL(ddenlovr);
+}
+
+static MACHINE_START( mjflove )
+{
+ UINT8 *ROM = memory_region(machine, "maincpu");
+ memory_configure_bank(machine, "bank1", 0, 0x10, &ROM[0x10000], 0x8000);
+ memory_configure_bank(machine, "bank2", 0, 8, &ROM[0x90000], 0x1000);
+
+ MACHINE_START_CALL(ddenlovr);
+}
+
+static MACHINE_START( sryudens )
+{
+ UINT8 *ROM = memory_region(machine, "maincpu");
+ memory_configure_bank(machine, "bank1", 0, 0x10, &ROM[0x10000], 0x8000);
+ memory_configure_bank(machine, "bank2", 0, 0x10, &ROM[0x90000], 0x1000);
+
+ MACHINE_START_CALL(ddenlovr);
}
/***************************************************************************
@@ -7775,7 +7838,7 @@ static MACHINE_DRIVER_START( quizchq )
MDRV_CPU_IO_MAP(quizchq_portmap)
MDRV_CPU_VBLANK_INT("screen", quizchq_irq)
- MDRV_MACHINE_START(ddenlovr)
+ MDRV_MACHINE_START(rongrong)
MDRV_MACHINE_RESET(ddenlovr)
/* video hardware */
@@ -7859,7 +7922,7 @@ static MACHINE_DRIVER_START( mmpanic )
MDRV_CPU_IO_MAP(mmpanic_sound_portmap)
MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) // NMI by main cpu
- MDRV_MACHINE_START(ddenlovr)
+ MDRV_MACHINE_START(mmpanic)
MDRV_MACHINE_RESET(ddenlovr)
/* video hardware */
@@ -7932,7 +7995,7 @@ static MACHINE_DRIVER_START( hanakanz )
MDRV_CPU_IO_MAP(hanakanz_portmap)
MDRV_CPU_VBLANK_INT("screen", hanakanz_irq)
- MDRV_MACHINE_START(ddenlovr)
+ MDRV_MACHINE_START(hanakanz)
MDRV_MACHINE_RESET(ddenlovr)
/* video hardware */
@@ -8024,6 +8087,8 @@ static MACHINE_DRIVER_START( funkyfig )
MDRV_CPU_IO_MAP(funkyfig_portmap)
MDRV_CPU_VBLANK_INT("screen", mjchuuka_irq)
+ MDRV_MACHINE_START(funkyfig)
+
MDRV_CPU_MODIFY("soundcpu")
MDRV_CPU_IO_MAP(funkyfig_sound_portmap)
@@ -8086,6 +8151,8 @@ static MACHINE_DRIVER_START( mjmyster )
MDRV_CPU_VBLANK_INT_HACK(mjmyster_irq, 2)
MDRV_CPU_PERIODIC_INT(rtc_nmi_irq, 1)
+ MDRV_MACHINE_START(mjmyster)
+
MDRV_SOUND_ADD("aysnd", AY8910, 3579545)
MDRV_SOUND_CONFIG(mjmyster_ay8910_interface)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
@@ -8134,6 +8201,8 @@ static MACHINE_DRIVER_START( hginga )
MDRV_CPU_IO_MAP(hginga_portmap)
MDRV_CPU_VBLANK_INT("screen", hginga_irq)
+ MDRV_MACHINE_START(mjmyster)
+
MDRV_SOUND_ADD("aysnd", AY8910, 3579545)
MDRV_SOUND_CONFIG(hginga_ay8910_interface)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
@@ -8147,6 +8216,8 @@ static MACHINE_DRIVER_START( hgokou )
MDRV_CPU_IO_MAP(hgokou_portmap)
MDRV_CPU_VBLANK_INT("screen", hginga_irq)
+ MDRV_MACHINE_START(mjmyster)
+
MDRV_SOUND_ADD("aysnd", AY8910, 3579545)
MDRV_SOUND_CONFIG(hginga_ay8910_interface)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
@@ -8169,6 +8240,8 @@ static MACHINE_DRIVER_START( mjmyuniv )
MDRV_CPU_VBLANK_INT_HACK(mjmyster_irq, 2)
MDRV_CPU_PERIODIC_INT(rtc_nmi_irq, 1)
+ MDRV_MACHINE_START(mjmyster)
+
MDRV_SOUND_ADD("aysnd", AY8910, 1789772)
MDRV_SOUND_CONFIG(mjmyster_ay8910_interface)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
@@ -8182,6 +8255,8 @@ static MACHINE_DRIVER_START( mjmyornt )
MDRV_CPU_VBLANK_INT_HACK(mjmyster_irq, 2)
MDRV_CPU_PERIODIC_INT(rtc_nmi_irq, 1)
+ MDRV_MACHINE_START(mjmyster)
+
MDRV_SOUND_ADD("aysnd", AY8910, 1789772)
MDRV_SOUND_CONFIG(mjmyster_ay8910_interface)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
@@ -8214,6 +8289,8 @@ static MACHINE_DRIVER_START( mjflove )
MDRV_CPU_IO_MAP(mjflove_portmap)
MDRV_CPU_VBLANK_INT_HACK(mjflove_irq, 2)
+ MDRV_MACHINE_START(mjflove)
+
MDRV_VIDEO_START(mjflove) // blitter commands in the roms are shuffled around
MDRV_SOUND_ADD("aysnd", AY8910, 28636363/8)
@@ -8234,6 +8311,8 @@ static MACHINE_DRIVER_START( hparadis )
MDRV_CPU_PROGRAM_MAP(hparadis_map)
MDRV_CPU_IO_MAP(hparadis_portmap)
MDRV_CPU_VBLANK_INT("screen", hparadis_irq)
+
+ MDRV_MACHINE_START(hparadis)
MACHINE_DRIVER_END
static MACHINE_DRIVER_START( jongtei )
@@ -8247,7 +8326,7 @@ static MACHINE_DRIVER_START( jongtei )
MDRV_CPU_IO_MAP(jongtei_portmap)
MDRV_CPU_VBLANK_INT("screen", hanakanz_irq)
- MDRV_MACHINE_START(ddenlovr)
+ MDRV_MACHINE_START(hanakanz)
MDRV_MACHINE_RESET(ddenlovr)
/* video hardware */
@@ -8293,7 +8372,7 @@ static MACHINE_DRIVER_START( sryudens )
MDRV_CPU_IO_MAP(sryudens_portmap)
MDRV_CPU_VBLANK_INT("screen", mjchuuka_irq)
- MDRV_MACHINE_START(ddenlovr)
+ MDRV_MACHINE_START(sryudens)
MDRV_MACHINE_RESET(ddenlovr)
/* video hardware */
@@ -8342,7 +8421,7 @@ static MACHINE_DRIVER_START( daimyojn )
MDRV_CPU_IO_MAP(daimyojn_portmap)
MDRV_CPU_VBLANK_INT("screen", hanakanz_irq)
- MDRV_MACHINE_START(ddenlovr)
+ MDRV_MACHINE_START(mjflove)
MDRV_MACHINE_RESET(ddenlovr)
/* video hardware */
@@ -10091,35 +10170,35 @@ ROM_START( daimyojn )
ROM_END
-GAME( 1992, mmpanic, 0, mmpanic, mmpanic, 0, ROT0, "Nakanihon + East Technology (Taito license)", "Monkey Mole Panic (USA)", GAME_NO_COCKTAIL )
-GAME( 1993, funkyfig, 0, funkyfig, funkyfig, 0, ROT0, "Nakanihon + East Technology (Taito license)", "The First Funky Fighter", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS ) // scrolling, priority?
-GAME( 1993, quizchq, 0, quizchq, quizchq, 0, ROT0, "Nakanihon", "Quiz Channel Question (Ver 1.00) (Japan)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
-GAME( 1993, quizchql, quizchq, quizchq, quizchq, 0, ROT0, "Nakanihon (Laxan license)", "Quiz Channel Question (Ver 1.23) (Taiwan?)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
-GAME( 1993, animaljr, 0, mmpanic, animaljr, 0, ROT0, "Nakanihon + East Technology (Taito license)", "Animalandia Jr.", GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND )
-GAME( 1994, hginga, 0, hginga, hginga, 0, ROT0, "Dynax", "Hanafuda Hana Ginga", GAME_NO_COCKTAIL )
-GAME( 1994, mjmyster, 0, mjmyster, mjmyster, 0, ROT0, "Dynax", "Mahjong The Mysterious World (set 1)", GAME_NO_COCKTAIL )
-GAME( 1994, mjmywrld, mjmyster, mjmywrld, mjmyster, 0, ROT0, "Dynax", "Mahjong The Mysterious World (set 2)", GAME_NO_COCKTAIL )
-GAME( 1994, mjmyornt, 0, mjmyornt, mjmyornt, 0, ROT0, "Dynax", "Mahjong The Mysterious Orient", GAME_NO_COCKTAIL )
-GAME( 1994, mjmyuniv, 0, mjmyuniv, mjmyster, 0, ROT0, "Dynax", "Mahjong The Mysterious Universe", GAME_NO_COCKTAIL )
-GAME( 1994, quiz365, 0, quiz365, quiz365, 0, ROT0, "Nakanihon", "Quiz 365 (Japan)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_UNEMULATED_PROTECTION )
-GAME( 1994, quiz365t, quiz365, quiz365, quiz365, 0, ROT0, "Nakanihon + Taito", "Quiz 365 (Hong Kong & Taiwan)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_UNEMULATED_PROTECTION )
-GAME( 1994, rongrong, 0, rongrong, rongrong, rongrong, ROT0, "Nakanihon (Activision licence)", "Puzzle Game Rong Rong (Europe)", GAME_NO_COCKTAIL | GAME_IMPERFECT_COLORS )
-GAME( 1994, rongrongj,rongrong, rongrong, rongrong, rongrong, ROT0, "Nakanihon (Activision licence)", "Puzzle Game Rong Rong (Japan)", GAME_NO_COCKTAIL | GAME_IMPERFECT_COLORS )
-GAME( 1994, rongrongg,rongrong, rongrong, rongrong, rongrong, ROT0, "Nakanihon (Activision licence)", "Puzzle Game Rong Rong (Germany)", GAME_NO_COCKTAIL | GAME_IMPERFECT_COLORS )
-GAME( 1994, hparadis, 0, hparadis, hparadis, 0, ROT0, "Dynax", "Super Hana Paradise (Japan)", GAME_NO_COCKTAIL )
-GAME( 1995, hgokou, 0, hgokou, hgokou, 0, ROT0, "Dynax (Alba licence)", "Hanafuda Hana Gokou (Japan)", GAME_NO_COCKTAIL )
-GAME( 1995, mjdchuka, 0, mjchuuka, mjchuuka, 0, ROT0, "Dynax", "Mahjong The Dai Chuuka Ken (China, v. D111)", GAME_NO_COCKTAIL )
-GAME( 1995, nettoqc, 0, nettoqc, nettoqc, 0, ROT0, "Nakanihon", "Nettoh Quiz Champion (Japan)", GAME_NO_COCKTAIL | GAME_IMPERFECT_COLORS )
-GAME( 1995, ddenlovj, 0, ddenlovj, ddenlovj, 0, ROT0, "Dynax", "Don Den Lover Vol. 1 - Shiro Kuro Tsukeyo! (Japan)", GAME_NO_COCKTAIL )
-GAME( 1995, ddenlovrk,ddenlovj, ddenlovrk,ddenlovr, 0, ROT0, "Dynax", "Don Den Lover Vol. 1 - Heukbaeg-euro Jeonghaja (Korea)", GAME_NO_COCKTAIL )
-GAME( 1995, ddenlovrb,ddenlovj, ddenlovr, ddenlovr, 0, ROT0, "[Dynax] (bootleg)", "Don Den Lover Vol. 1 - Heukbaeg-euro Jeonghaja (Korea, bootleg)", GAME_NO_COCKTAIL )
-GAME( 1996, ddenlovr, ddenlovj, ddenlovr, ddenlovr, 0, ROT0, "Dynax", "Don Den Lover Vol. 1 (Hong Kong)", GAME_NO_COCKTAIL )
-GAME( 1996, hanakanz, 0, hanakanz, hanakanz, 0, ROT0, "Dynax", "Hana Kanzashi (Japan)", GAME_NO_COCKTAIL )
-GAME( 1996, akamaru, 0, akamaru, akamaru, 0, ROT0, "Dynax (Nakanihon licence)", "Panel & Variety Akamaru Q Jousyou Dont-R", GAME_NO_COCKTAIL )
-GAME( 1996, sryudens, 0, sryudens, sryudens, 0, ROT0, "Dynax / Face", "Mahjong Seiryu Densetsu (Japan, NM502)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
-GAME( 1996, mjflove, 0, mjflove, mjflove, 0, ROT0, "Nakanihon", "Mahjong Fantasic Love (Japan)", GAME_NO_COCKTAIL )
-GAME( 1997, hkagerou, 0, hkagerou, hkagerou, 0, ROT0, "Nakanihon + Dynax", "Hana Kagerou [BET] (Japan)", GAME_NO_COCKTAIL )
-GAME( 1998, mjchuuka, 0, mjchuuka, mjchuuka, 0, ROT0, "Dynax", "Mahjong Chuukanejyo (China)", GAME_NO_COCKTAIL )
-GAME( 1998, mjreach1, 0, mjreach1, mjreach1, 0, ROT0, "Nihon System", "Mahjong Reach Ippatsu (Japan)", GAME_NO_COCKTAIL )
-GAME( 1999, jongtei, 0, jongtei, jongtei, 0, ROT0, "Dynax", "Mahjong Jong-Tei (Japan, ver. NM532-01)", GAME_NO_COCKTAIL )
-GAME( 2002, daimyojn, 0, daimyojn, daimyojn, 0, ROT0, "Dynax / Techno-Top / Techno-Planning", "Mahjong Daimyojin (Japan, T017-PB-00)", GAME_NO_COCKTAIL )
+GAME( 1992, mmpanic, 0, mmpanic, mmpanic, 0, ROT0, "Nakanihon + East Technology (Taito license)", "Monkey Mole Panic (USA)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1993, funkyfig, 0, funkyfig, funkyfig, 0, ROT0, "Nakanihon + East Technology (Taito license)", "The First Funky Fighter", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // scrolling, priority?
+GAME( 1993, quizchq, 0, quizchq, quizchq, 0, ROT0, "Nakanihon", "Quiz Channel Question (Ver 1.00) (Japan)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
+GAME( 1993, quizchql, quizchq, quizchq, quizchq, 0, ROT0, "Nakanihon (Laxan license)", "Quiz Channel Question (Ver 1.23) (Taiwan?)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
+GAME( 1993, animaljr, 0, mmpanic, animaljr, 0, ROT0, "Nakanihon + East Technology (Taito license)", "Animalandia Jr.", GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1994, hginga, 0, hginga, hginga, 0, ROT0, "Dynax", "Hanafuda Hana Ginga", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1994, mjmyster, 0, mjmyster, mjmyster, 0, ROT0, "Dynax", "Mahjong The Mysterious World (set 1)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1994, mjmywrld, mjmyster, mjmywrld, mjmyster, 0, ROT0, "Dynax", "Mahjong The Mysterious World (set 2)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1994, mjmyornt, 0, mjmyornt, mjmyornt, 0, ROT0, "Dynax", "Mahjong The Mysterious Orient", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1994, mjmyuniv, 0, mjmyuniv, mjmyster, 0, ROT0, "Dynax", "Mahjong The Mysterious Universe", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1994, quiz365, 0, quiz365, quiz365, 0, ROT0, "Nakanihon", "Quiz 365 (Japan)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE )
+GAME( 1994, quiz365t, quiz365, quiz365, quiz365, 0, ROT0, "Nakanihon + Taito", "Quiz 365 (Hong Kong & Taiwan)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE )
+GAME( 1994, rongrong, 0, rongrong, rongrong, rongrong, ROT0, "Nakanihon (Activision licence)", "Puzzle Game Rong Rong (Europe)", GAME_NO_COCKTAIL | GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
+GAME( 1994, rongrongj, rongrong, rongrong, rongrong, rongrong, ROT0, "Nakanihon (Activision licence)", "Puzzle Game Rong Rong (Japan)", GAME_NO_COCKTAIL | GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
+GAME( 1994, rongrongg, rongrong, rongrong, rongrong, rongrong, ROT0, "Nakanihon (Activision licence)", "Puzzle Game Rong Rong (Germany)", GAME_NO_COCKTAIL | GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
+GAME( 1994, hparadis, 0, hparadis, hparadis, 0, ROT0, "Dynax", "Super Hana Paradise (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1995, hgokou, 0, hgokou, hgokou, 0, ROT0, "Dynax (Alba licence)", "Hanafuda Hana Gokou (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1995, mjdchuka, 0, mjchuuka, mjchuuka, 0, ROT0, "Dynax", "Mahjong The Dai Chuuka Ken (China, v. D111)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1995, nettoqc, 0, nettoqc, nettoqc, 0, ROT0, "Nakanihon", "Nettoh Quiz Champion (Japan)", GAME_NO_COCKTAIL | GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
+GAME( 1995, ddenlovj, 0, ddenlovj, ddenlovj, 0, ROT0, "Dynax", "Don Den Lover Vol. 1 - Shiro Kuro Tsukeyo! (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1995, ddenlovrk, ddenlovj, ddenlovrk, ddenlovr, 0, ROT0, "Dynax", "Don Den Lover Vol. 1 - Heukbaeg-euro Jeonghaja (Korea)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1995, ddenlovrb, ddenlovj, ddenlovr, ddenlovr, 0, ROT0, "[Dynax] (bootleg)", "Don Den Lover Vol. 1 - Heukbaeg-euro Jeonghaja (Korea, bootleg)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1996, ddenlovr, ddenlovj, ddenlovr, ddenlovr, 0, ROT0, "Dynax", "Don Den Lover Vol. 1 (Hong Kong)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1996, hanakanz, 0, hanakanz, hanakanz, 0, ROT0, "Dynax", "Hana Kanzashi (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1996, akamaru, 0, akamaru, akamaru, 0, ROT0, "Dynax (Nakanihon licence)", "Panel & Variety Akamaru Q Jousyou Dont-R", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1996, sryudens, 0, sryudens, sryudens, 0, ROT0, "Dynax / Face", "Mahjong Seiryu Densetsu (Japan, NM502)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
+GAME( 1996, mjflove, 0, mjflove, mjflove, 0, ROT0, "Nakanihon", "Mahjong Fantasic Love (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1997, hkagerou, 0, hkagerou, hkagerou, 0, ROT0, "Nakanihon + Dynax", "Hana Kagerou [BET] (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1998, mjchuuka, 0, mjchuuka, mjchuuka, 0, ROT0, "Dynax", "Mahjong Chuukanejyo (China)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1998, mjreach1, 0, mjreach1, mjreach1, 0, ROT0, "Nihon System", "Mahjong Reach Ippatsu (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1999, jongtei, 0, jongtei, jongtei, 0, ROT0, "Dynax", "Mahjong Jong-Tei (Japan, ver. NM532-01)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 2002, daimyojn, 0, daimyojn, daimyojn, 0, ROT0, "Dynax / Techno-Top / Techno-Planning", "Mahjong Daimyojin (Japan, T017-PB-00)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/dynax.c b/src/mame/drivers/dynax.c
index 3892243aa98..283597d3b91 100644
--- a/src/mame/drivers/dynax.c
+++ b/src/mame/drivers/dynax.c
@@ -275,23 +275,20 @@ static WRITE8_HANDLER( hanamai_keyboard_w )
static WRITE8_HANDLER( dynax_rombank_w )
{
- UINT8 *ROM = memory_region(space->machine, "maincpu");
- memory_set_bankptr(space->machine, "bank1",&ROM[0x08000+0x8000*(data & 0x0f)]);
+ memory_set_bank(space->machine, "bank1", data & 0x0f);
}
static WRITE8_HANDLER( jantouki_sound_rombank_w )
{
- UINT8 *ROM = memory_region(space->machine, "soundcpu");
- memory_set_bankptr(space->machine, "bank2",&ROM[0x08000+0x8000*data]);
+ memory_set_bank(space->machine, "bank2", data);
}
static WRITE8_HANDLER( hnoridur_rombank_w )
{
dynax_state *state = (dynax_state *)space->machine->driver_data;
- UINT8 *ROM = memory_region(space->machine, "maincpu") + 0x10000 + 0x8000*data;
-//logerror("%04x: rom bank = %02x\n",cpu_get_pc(space->cpu),data);
- memory_set_bankptr(space->machine, "bank1",ROM);
+ //logerror("%04x: rom bank = %02x\n", cpu_get_pc(space->cpu), data);
+ memory_set_bank(space->machine, "bank1", data);
state->hnoridur_bank = data;
}
@@ -764,8 +761,7 @@ static READ8_HANDLER( yarunara_input_r )
static WRITE8_HANDLER( yarunara_rombank_w )
{
dynax_state *state = (dynax_state *)space->machine->driver_data;
- UINT8 *rom = memory_region(space->machine, "maincpu") + 0x10000 + 0x8000 * data;
- memory_set_bankptr(space->machine, "bank1", rom);
+ memory_set_bank(space->machine, "bank1", data);
state->hnoridur_bank = data;
}
@@ -982,8 +978,7 @@ static READ8_HANDLER( jantouki_blitter_busy_r )
static WRITE8_HANDLER( jantouki_rombank_w )
{
- UINT8 *ROM = memory_region(space->machine, "maincpu");
- memory_set_bankptr(space->machine, "bank1",&ROM[0x8000 + 0x8000*(data&0x0f)]);
+ memory_set_bank(space->machine, "bank1", data & 0x0f);
set_led_status(space->machine, 0, data & 0x10); // maybe
}
@@ -1213,9 +1208,8 @@ static READ8_HANDLER( htengoku_coin_r )
static WRITE8_HANDLER( htengoku_rombank_w )
{
dynax_state *state = (dynax_state *)space->machine->driver_data;
- UINT8 *rom = memory_region(space->machine, "maincpu") + 0x10000 + 0x8000 * (data & 0x7);
- memory_set_bankptr(space->machine, "bank1", rom);
+ memory_set_bank(space->machine, "bank1", data & 0x07);
state->hnoridur_bank = data;
}
@@ -1611,7 +1605,7 @@ static void gekisha_set_rombank( running_machine *machine, UINT8 data )
{
dynax_state *state = (dynax_state *)machine->driver_data;
state->rombank = data;
- state->gekisha_rom = memory_region(machine, "maincpu") + 0x8000 + state->rombank * 0x8000;
+ state->romptr = memory_region(machine, "maincpu") + 0x8000 + state->rombank * 0x8000;
}
static WRITE8_HANDLER( gekisha_p4_w )
@@ -1626,7 +1620,7 @@ static READ8_HANDLER( gekisha_8000_r )
dynax_state *state = (dynax_state *)space->machine->driver_data;
if (state->gekisha_rom_enable)
- return state->gekisha_rom[offset];
+ return state->romptr[offset];
switch (offset + 0x8000)
{
@@ -4228,6 +4222,7 @@ static MACHINE_START( dynax )
state_save_register_global(machine, state->tenkai_6c);
state_save_register_global(machine, state->tenkai_70);
state_save_register_global_array(machine, state->gekisha_val);
+ state_save_register_global_array(machine, state->palette_ram);
state_save_register_global(machine, state->gekisha_rom_enable);
}
@@ -4267,8 +4262,36 @@ static MACHINE_RESET( dynax )
state->gekisha_val[0] = 0;
state->gekisha_val[1] = 0;
state->gekisha_rom_enable = 0;
+
+ memset(state->palette_ram, 0, ARRAY_LENGTH(state->palette_ram));
+}
+
+static MACHINE_START( hanamai )
+{
+ UINT8 *ROM = memory_region(machine, "maincpu");
+ memory_configure_bank(machine, "bank1", 0, 0x10, &ROM[0x8000], 0x8000);
+
+ MACHINE_START_CALL(dynax);
}
+static MACHINE_START( hnoridur )
+{
+ UINT8 *ROM = memory_region(machine, "maincpu");
+ int bank_n = (memory_region_length(machine, "maincpu") - 0x10000) / 0x8000;
+
+ memory_configure_bank(machine, "bank1", 0, bank_n, &ROM[0x10000], 0x8000);
+
+ MACHINE_START_CALL(dynax);
+}
+
+static MACHINE_START( htengoku )
+{
+ UINT8 *ROM = memory_region(machine, "maincpu");
+
+ memory_configure_bank(machine, "bank1", 0, 8, &ROM[0x10000], 0x8000);
+
+ MACHINE_START_CALL(dynax);
+}
/***************************************************************************
Hana no Mai
@@ -4306,7 +4329,7 @@ static MACHINE_DRIVER_START( hanamai )
MDRV_CPU_IO_MAP(hanamai_io_map)
MDRV_CPU_VBLANK_INT("screen", sprtmtch_vblank_interrupt) /* IM 0 needs an opcode on the data bus */
- MDRV_MACHINE_START(dynax)
+ MDRV_MACHINE_START(hanamai)
MDRV_MACHINE_RESET(dynax)
MDRV_NVRAM_HANDLER(generic_0fill)
@@ -4367,7 +4390,7 @@ static MACHINE_DRIVER_START( hnoridur )
MDRV_CPU_IO_MAP(hnoridur_io_map)
MDRV_CPU_VBLANK_INT("screen", sprtmtch_vblank_interrupt) /* IM 0 needs an opcode on the data bus */
- MDRV_MACHINE_START(dynax)
+ MDRV_MACHINE_START(hnoridur)
MDRV_MACHINE_RESET(dynax)
MDRV_NVRAM_HANDLER(generic_0fill)
@@ -4416,7 +4439,7 @@ static MACHINE_DRIVER_START( hjingi )
MDRV_CPU_IO_MAP(hjingi_io_map)
MDRV_CPU_VBLANK_INT("screen", sprtmtch_vblank_interrupt) /* IM 0 needs an opcode on the data bus */
- MDRV_MACHINE_START(dynax)
+ MDRV_MACHINE_START(hnoridur)
MDRV_MACHINE_RESET(dynax)
MDRV_NVRAM_HANDLER(generic_0fill)
@@ -4478,7 +4501,7 @@ static MACHINE_DRIVER_START( sprtmtch )
MDRV_CPU_IO_MAP(sprtmtch_io_map)
MDRV_CPU_VBLANK_INT("screen", sprtmtch_vblank_interrupt) /* IM 0 needs an opcode on the data bus */
- MDRV_MACHINE_START(dynax)
+ MDRV_MACHINE_START(hanamai)
MDRV_MACHINE_RESET(dynax)
MDRV_NVRAM_HANDLER(generic_0fill)
@@ -4524,7 +4547,7 @@ static MACHINE_DRIVER_START( mjfriday )
MDRV_CPU_IO_MAP(mjfriday_io_map)
MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
- MDRV_MACHINE_START(dynax)
+ MDRV_MACHINE_START(hanamai)
MDRV_MACHINE_RESET(dynax)
MDRV_NVRAM_HANDLER(generic_0fill)
@@ -4658,6 +4681,11 @@ static const msm5205_interface jantouki_msm5205_interface =
static MACHINE_START( jantouki )
{
dynax_state *state = (dynax_state *)machine->driver_data;
+ UINT8 *MAIN = memory_region(machine, "maincpu");
+ UINT8 *SOUND = memory_region(machine, "soundcpu");
+
+ memory_configure_bank(machine, "bank1", 0, 0x10, &MAIN[0x8000], 0x8000);
+ memory_configure_bank(machine, "bank2", 0, 12, &SOUND[0x8000], 0x8000);
state->top_scr = devtag_get_device(machine, "top");
state->bot_scr = devtag_get_device(machine, "bottom");
@@ -4665,7 +4693,6 @@ static MACHINE_START( jantouki )
MACHINE_START_CALL(dynax);
}
-
static MACHINE_DRIVER_START( jantouki )
/* driver data */
@@ -4858,7 +4885,7 @@ static MACHINE_DRIVER_START( htengoku )
MDRV_CPU_VBLANK_INT("screen", sprtmtch_vblank_interrupt) /* IM 0 needs an opcode on the data bus */
MDRV_CPU_PERIODIC_INT(yarunara_clock_interrupt, 60) // RTC
- MDRV_MACHINE_START(dynax)
+ MDRV_MACHINE_START(htengoku)
MDRV_MACHINE_RESET(dynax)
MDRV_NVRAM_HANDLER(generic_0fill)
@@ -4915,6 +4942,18 @@ static const ay8910_interface tenkai_ay8910_interface =
DEVCB_NULL, DEVCB_HANDLER(tenkai_dswsel_w) // Write
};
+static STATE_POSTLOAD( tenkai_bank_postload )
+{
+ tenkai_update_rombank(machine);
+}
+
+static MACHINE_START( tenkai )
+{
+ MACHINE_START_CALL(dynax);
+
+ state_save_register_postload(machine, tenkai_bank_postload, NULL);
+}
+
static MACHINE_DRIVER_START( tenkai )
/* driver data */
@@ -4926,7 +4965,7 @@ static MACHINE_DRIVER_START( tenkai )
MDRV_CPU_IO_MAP(tenkai_io_map)
MDRV_CPU_VBLANK_INT_HACK(tenkai_interrupt,3)
- MDRV_MACHINE_START(dynax)
+ MDRV_MACHINE_START(tenkai)
MDRV_MACHINE_RESET(dynax)
MDRV_NVRAM_HANDLER(generic_0fill)
@@ -4968,6 +5007,20 @@ MACHINE_DRIVER_END
Mahjong Gekisha
***************************************************************************/
+static STATE_POSTLOAD( gekisha_bank_postload )
+{
+ dynax_state *state = (dynax_state *)machine->driver_data;
+
+ gekisha_set_rombank(machine, state->rombank);
+}
+
+static MACHINE_START( gekisha )
+{
+ MACHINE_START_CALL(dynax);
+
+ state_save_register_postload(machine, gekisha_bank_postload, NULL);
+}
+
static MACHINE_RESET( gekisha )
{
MACHINE_RESET_CALL(dynax);
@@ -4986,7 +5039,7 @@ static MACHINE_DRIVER_START( gekisha )
MDRV_CPU_IO_MAP(gekisha_io_map)
MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
- MDRV_MACHINE_START(dynax)
+ MDRV_MACHINE_START(gekisha)
MDRV_MACHINE_RESET(gekisha)
MDRV_NVRAM_HANDLER(generic_0fill)
@@ -7147,42 +7200,42 @@ ROM_END
***************************************************************************/
-GAME( 1989, hnkochou, 0, hanamai, hnkochou, 0, ROT180, "Dynax", "Hana Kochou (Japan, Bet)", 0 )
-GAME( 1988, hanamai, hnkochou, hanamai, hanamai, 0, ROT180, "Dynax", "Hana no Mai (Japan)", 0 )
-GAME( 1990, hjingi, 0, hjingi, hjingi, 0, ROT180, "Dynax", "Hana Jingi (Japan, Bet)", 0 )
-GAME( 1989, hnoridur, hjingi, hnoridur, hnoridur, 0, ROT180, "Dynax", "Hana Oriduru (Japan)", 0 )
-GAME( 1989, drgpunch, 0, sprtmtch, sprtmtch, 0, ROT0, "Dynax", "Dragon Punch (Japan)", 0 )
-GAME( 1989, sprtmtch, drgpunch, sprtmtch, sprtmtch, 0, ROT0, "Dynax (Fabtek license)", "Sports Match", 0 )
+GAME( 1989, hnkochou, 0, hanamai, hnkochou, 0, ROT180, "Dynax", "Hana Kochou (Japan, Bet)", GAME_SUPPORTS_SAVE )
+GAME( 1988, hanamai, hnkochou, hanamai, hanamai, 0, ROT180, "Dynax", "Hana no Mai (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1990, hjingi, 0, hjingi, hjingi, 0, ROT180, "Dynax", "Hana Jingi (Japan, Bet)", GAME_SUPPORTS_SAVE )
+GAME( 1989, hnoridur, hjingi, hnoridur, hnoridur, 0, ROT180, "Dynax", "Hana Oriduru (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1989, drgpunch, 0, sprtmtch, sprtmtch, 0, ROT0, "Dynax", "Dragon Punch (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1989, sprtmtch, drgpunch, sprtmtch, sprtmtch, 0, ROT0, "Dynax (Fabtek license)", "Sports Match", GAME_SUPPORTS_SAVE )
/* these 4 are Korean hacks / bootlegs of Dragon Punch / Sports Match */
-GAME( 1994, maya, 0, sprtmtch, sprtmtch, maya, ROT0, "Promat", "Maya (set 1)", 0 ) // this set has backgrounds blacked out in attract
-GAME( 1994, mayaa, maya, sprtmtch, sprtmtch, maya, ROT0, "Promat", "Maya (set 2)", 0 )
-GAME( 199?, inca, 0, sprtmtch, sprtmtch, maya, ROT0, "<unknown>", "Inca", 0 )
-GAME( 199?, blktouch, 0, sprtmtch, sprtmtch, blktouch, ROT0, "Yang Gi Co Ltd.", "Black Touch (Korea)", 0 )
-
-GAME( 1989, mjfriday, 0, mjfriday, mjfriday, 0, ROT180, "Dynax", "Mahjong Friday (Japan)", 0 )
-GAME( 1989, gekisha, 0, gekisha, gekisha, 0, ROT180, "Dynax", "Mahjong Gekisha", 0 )
-GAME( 1990, mcnpshnt, 0, mcnpshnt, mcnpshnt, 0, ROT0, "Dynax", "Mahjong Campus Hunting (Japan)", 0 )
-GAME( 1990, 7jigen, 0, nanajign, nanajign, 0, ROT180, "Dynax", "7jigen no Youseitachi - Mahjong 7 Dimensions (Japan)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1990, jantouki, 0, jantouki, jantouki, 0, ROT0, "Dynax", "Jong Tou Ki (Japan)", 0 )
-GAME( 1991, mjdialq2, 0, mjdialq2, mjdialq2, 0, ROT180, "Dynax", "Mahjong Dial Q2 (Japan)", 0 )
-GAME( 1991, yarunara, 0, yarunara, yarunara, 0, ROT180, "Dynax", "Mahjong Yarunara (Japan)", 0 )
-GAME( 1991, mjangels, 0, yarunara, yarunara, 0, ROT180, "Dynax", "Mahjong Angels - Comic Theater Vol.2 (Japan)", 0 )
-GAME( 1992, quiztvqq, 0, yarunara, quiztvqq, 0, ROT180, "Dynax", "Quiz TV Gassyuukoku Q&Q (Japan)", 0 )
-GAME( 1993, mjelctrn, 0, mjelctrn, mjelctrn, mjelct3, ROT180, "Dynax", "Mahjong Electron Base (parts 2 & 4, Japan)", 0 )
-GAME( 1990, mjelct3, mjelctrn, mjelctrn, mjelct3, mjelct3, ROT180, "Dynax", "Mahjong Electron Base (parts 2 & 3, Japan)", 0 )
-GAME( 1990, mjelct3a, mjelctrn, mjelctrn, mjelct3, mjelct3a, ROT180, "Dynax", "Mahjong Electron Base (parts 2 & 3, alt., Japan)", 0 )
-GAME( 1993, mjelctrb, mjelctrn, mjelctrn, mjelct3, mjelct3, ROT180, "Dynax", "Mahjong Electron Base (parts 2 & 4, Japan, BOOTLEG)", 0 )
-GAME( 1990, majxtal7, 0, majxtal7, majxtal7, mjelct3, ROT180, "Dynax", "Mahjong X-Tal 7 - Crystal Mahjong / Mahjong Diamond 7 (Japan)",GAME_IMPERFECT_GRAPHICS )
-GAME( 1990, neruton, 0, neruton, neruton, mjelct3, ROT180, "Dynax / Yukiyoshi Tokoro", "Mahjong Neruton Haikujiradan (Japan)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1991, hanayara, 0, yarunara, hanayara, 0, ROT180, "Dynax", "Hana wo Yaraneba! (Japan)", 0 )
-GAME( 1991, mjcomv1, 0, yarunara, yarunara, 0, ROT180, "Dynax", "Mahjong Comic Gekijou Vol.1 (Japan)", 0 )
-GAME( 1991, tenkai, 0, tenkai, tenkai, 0, ROT0, "Dynax", "Mahjong Tenkaigen", 0 )
-GAME( 1991, tenkai2b, tenkai, tenkai, tenkai, 0, ROT0, "Dynax", "Mahjong Tenkaigen Part 2 (bootleg)", GAME_NOT_WORKING )
-GAME( 1991, tenkaibb, tenkai, tenkai, tenkai, 0, ROT0, "Dynax", "Mahjong Tenkaigen (bootleg b)", 0 )
-GAME( 1991, tenkaicb, tenkai, tenkai, tenkai, 0, ROT0, "Dynax", "Mahjong Tenkaigen (bootleg c)", 0 )
-GAME( 1991, tenkaid, tenkai, tenkai, tenkai, 0, ROT0, "Dynax", "Mahjong Tenkaigen (set 1)", GAME_NOT_WORKING )
-GAME( 1991, tenkaie, tenkai, tenkai, tenkai, 0, ROT0, "Dynax", "Mahjong Tenkaigen (set 2)", 0 )
-GAME( 1992, htengoku, 0, htengoku, htengoku, 0, ROT180, "Dynax", "Hanafuda Hana Tengoku (Japan)", 0 )
-GAME( 1994, mjreach, 0, tenkai, mjreach, mjreach, ROT0, "Dynax", "Mahjong Reach (bootleg)", 0 )
-GAME( 1995, shpeng, 0, sprtmtch, sprtmtch, 0, ROT0, "WSAC Systems?", "Sea Hunter Penguin", GAME_WRONG_COLORS ) // not a dynax board. proms?
-GAME( 1996, majrjhdx, 0, majrjhdx, tenkai, 0, ROT0, "Dynax", "Mahjong Raijinhai DX", GAME_NOT_WORKING )
+GAME( 1994, maya, 0, sprtmtch, sprtmtch, maya, ROT0, "Promat", "Maya (set 1)", GAME_SUPPORTS_SAVE ) // this set has backgrounds blacked out in attract
+GAME( 1994, mayaa, maya, sprtmtch, sprtmtch, maya, ROT0, "Promat", "Maya (set 2)", GAME_SUPPORTS_SAVE )
+GAME( 199?, inca, 0, sprtmtch, sprtmtch, maya, ROT0, "<unknown>", "Inca", GAME_SUPPORTS_SAVE )
+GAME( 199?, blktouch, 0, sprtmtch, sprtmtch, blktouch, ROT0, "Yang Gi Co Ltd.", "Black Touch (Korea)", GAME_SUPPORTS_SAVE )
+
+GAME( 1989, mjfriday, 0, mjfriday, mjfriday, 0, ROT180, "Dynax", "Mahjong Friday (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1989, gekisha, 0, gekisha, gekisha, 0, ROT180, "Dynax", "Mahjong Gekisha", GAME_SUPPORTS_SAVE )
+GAME( 1990, mcnpshnt, 0, mcnpshnt, mcnpshnt, 0, ROT0, "Dynax", "Mahjong Campus Hunting (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1990, 7jigen, 0, nanajign, nanajign, 0, ROT180, "Dynax", "7jigen no Youseitachi - Mahjong 7 Dimensions (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
+GAME( 1990, jantouki, 0, jantouki, jantouki, 0, ROT0, "Dynax", "Jong Tou Ki (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1991, mjdialq2, 0, mjdialq2, mjdialq2, 0, ROT180, "Dynax", "Mahjong Dial Q2 (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1991, yarunara, 0, yarunara, yarunara, 0, ROT180, "Dynax", "Mahjong Yarunara (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1991, mjangels, 0, yarunara, yarunara, 0, ROT180, "Dynax", "Mahjong Angels - Comic Theater Vol.2 (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1992, quiztvqq, 0, yarunara, quiztvqq, 0, ROT180, "Dynax", "Quiz TV Gassyuukoku Q&Q (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1993, mjelctrn, 0, mjelctrn, mjelctrn, mjelct3, ROT180, "Dynax", "Mahjong Electron Base (parts 2 & 4, Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1990, mjelct3, mjelctrn, mjelctrn, mjelct3, mjelct3, ROT180, "Dynax", "Mahjong Electron Base (parts 2 & 3, Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1990, mjelct3a, mjelctrn, mjelctrn, mjelct3, mjelct3a, ROT180, "Dynax", "Mahjong Electron Base (parts 2 & 3, alt., Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1993, mjelctrb, mjelctrn, mjelctrn, mjelct3, mjelct3, ROT180, "Dynax", "Mahjong Electron Base (parts 2 & 4, Japan, BOOTLEG)", GAME_SUPPORTS_SAVE )
+GAME( 1990, majxtal7, 0, majxtal7, majxtal7, mjelct3, ROT180, "Dynax", "Mahjong X-Tal 7 - Crystal Mahjong / Mahjong Diamond 7 (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
+GAME( 1990, neruton, 0, neruton, neruton, mjelct3, ROT180, "Dynax / Yukiyoshi Tokoro", "Mahjong Neruton Haikujiradan (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
+GAME( 1991, hanayara, 0, yarunara, hanayara, 0, ROT180, "Dynax", "Hana wo Yaraneba! (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1991, mjcomv1, 0, yarunara, yarunara, 0, ROT180, "Dynax", "Mahjong Comic Gekijou Vol.1 (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1991, tenkai, 0, tenkai, tenkai, 0, ROT0, "Dynax", "Mahjong Tenkaigen", GAME_SUPPORTS_SAVE )
+GAME( 1991, tenkai2b, tenkai, tenkai, tenkai, 0, ROT0, "Dynax", "Mahjong Tenkaigen Part 2 (bootleg)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
+GAME( 1991, tenkaibb, tenkai, tenkai, tenkai, 0, ROT0, "Dynax", "Mahjong Tenkaigen (bootleg b)", GAME_SUPPORTS_SAVE )
+GAME( 1991, tenkaicb, tenkai, tenkai, tenkai, 0, ROT0, "Dynax", "Mahjong Tenkaigen (bootleg c)", GAME_SUPPORTS_SAVE )
+GAME( 1991, tenkaid, tenkai, tenkai, tenkai, 0, ROT0, "Dynax", "Mahjong Tenkaigen (set 1)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
+GAME( 1991, tenkaie, tenkai, tenkai, tenkai, 0, ROT0, "Dynax", "Mahjong Tenkaigen (set 2)", GAME_SUPPORTS_SAVE )
+GAME( 1992, htengoku, 0, htengoku, htengoku, 0, ROT180, "Dynax", "Hanafuda Hana Tengoku (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1994, mjreach, 0, tenkai, mjreach, mjreach, ROT0, "Dynax", "Mahjong Reach (bootleg)", GAME_SUPPORTS_SAVE )
+GAME( 1995, shpeng, 0, sprtmtch, sprtmtch, 0, ROT0, "WSAC Systems?", "Sea Hunter Penguin", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE ) // not a dynax board. proms?
+GAME( 1996, majrjhdx, 0, majrjhdx, tenkai, 0, ROT0, "Dynax", "Mahjong Raijinhai DX", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
diff --git a/src/mame/includes/dynax.h b/src/mame/includes/dynax.h
index 0fb012a8528..3b9e1bc3be9 100644
--- a/src/mame/includes/dynax.h
+++ b/src/mame/includes/dynax.h
@@ -88,12 +88,11 @@ public:
UINT8 soundlatch_full;
UINT8 latch;
int rombank;
- UINT8 *romptr;
UINT8 tenkai_p5_val;
int tenkai_6c, tenkai_70;
UINT8 gekisha_val[2];
UINT8 gekisha_rom_enable;
- UINT8 *gekisha_rom;
+ UINT8 *romptr;
/* ddenlovr misc (TODO: merge with the above, where possible) */
UINT8 palram[0x200];