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
This commit is contained in:
Fabio Priuli 2010-03-17 08:22:06 +00:00
parent 20aeb1cfcd
commit 9aa86db4c8
4 changed files with 383 additions and 206 deletions

View File

@ -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++)
{

View File

@ -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 )

View File

@ -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( 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)", 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( 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 )

View File

@ -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];