diff options
author | 2010-03-17 08:22:06 +0000 | |
---|---|---|
committer | 2010-03-17 08:22:06 +0000 | |
commit | 9aa86db4c88346dce7000ca72692dd5210caecc7 (patch) | |
tree | 7557a710075b3260a8578da7d2dbcb1f950316cd | |
parent | 20aeb1cfcd75c56c90c1427ca953484960f46444 (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.c | 48 | ||||
-rw-r--r-- | src/mame/drivers/ddenlovr.c | 363 | ||||
-rw-r--r-- | src/mame/drivers/dynax.c | 177 | ||||
-rw-r--r-- | src/mame/includes/dynax.h | 3 |
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]; |