From 8b8dfe62d6ea0a0795ffba8690d6db362b4e32eb Mon Sep 17 00:00:00 2001 From: Phil Bennett Date: Fri, 13 Aug 2010 08:28:37 +0000 Subject: [PATCH] 03996: All games in taito_x.c: Crash before OK [Atari Ace] ---------- Forwarded message ---------- From: Atari Ace Date: Thu, Aug 12, 2010 at 5:01 PM Subject: [patch] Fix taito_x (seta driver_data conversion fallout) To: submit@mamedev.org Cc: atariace@hotmail.com - Hide quoted text - Hi mamedev, I inexplicably missed the fact that taito_x depended on seta for video support, so the driver_data conversion broke it. This patch fixes it. ~aa --- src/mame/drivers/taito_x.c | 40 +++++++++++++++++++++++++------------- src/mame/includes/seta.h | 1 + 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/src/mame/drivers/taito_x.c b/src/mame/drivers/taito_x.c index 75322778aba..647764e21b4 100644 --- a/src/mame/drivers/taito_x.c +++ b/src/mame/drivers/taito_x.c @@ -395,16 +395,18 @@ static WRITE16_HANDLER( kyustrkr_input_w ) /**************************************************************************/ -static INT32 banknum; - static void reset_sound_region(running_machine *machine) { - memory_set_bankptr(machine, "bank2", memory_region(machine, "audiocpu") + (banknum * 0x4000) + 0x10000 ); + seta_state *state = machine->driver_data(); + + memory_set_bankptr(machine, "bank2", memory_region(machine, "audiocpu") + (state->taitox_banknum * 0x4000) + 0x10000 ); } static WRITE8_HANDLER( sound_bankswitch_w ) { - banknum = (data - 1) & 3; + seta_state *state = space->machine->driver_data(); + + state->taitox_banknum = (data - 1) & 3; reset_sound_region(space->machine); } @@ -423,8 +425,8 @@ static ADDRESS_MAP_START( superman_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x900802, 0x900803) AM_READWRITE(cchip1_ctrl_r, cchip1_ctrl_w) AM_RANGE(0x900c00, 0x900c01) AM_WRITE(cchip1_bank_w) AM_RANGE(0xb00000, 0xb00fff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0xd00000, 0xd007ff) AM_RAM AM_BASE_GENERIC(spriteram ) // Sprites Y - AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_BASE_GENERIC(spriteram2 ) // Sprites Code + X + Attr + AM_RANGE(0xd00000, 0xd007ff) AM_RAM AM_BASE_MEMBER(seta_state, spriteram) // Sprites Y + AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_BASE_MEMBER(seta_state, spriteram2) // Sprites Code + X + Attr AM_RANGE(0xf00000, 0xf03fff) AM_RAM /* Main RAM */ ADDRESS_MAP_END @@ -437,8 +439,8 @@ static ADDRESS_MAP_START( daisenpu_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x800002, 0x800003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0x00ff) AM_RANGE(0x900000, 0x90000f) AM_READWRITE(daisenpu_input_r, daisenpu_input_w) AM_RANGE(0xb00000, 0xb00fff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0xd00000, 0xd007ff) AM_RAM AM_BASE_GENERIC(spriteram ) // Sprites Y - AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_BASE_GENERIC(spriteram2 ) // Sprites Code + X + Attr + AM_RANGE(0xd00000, 0xd007ff) AM_RAM AM_BASE_MEMBER(seta_state, spriteram) // Sprites Y + AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_BASE_MEMBER(seta_state, spriteram2) // Sprites Code + X + Attr AM_RANGE(0xf00000, 0xf03fff) AM_RAM /* Main RAM */ ADDRESS_MAP_END @@ -451,8 +453,8 @@ static ADDRESS_MAP_START( gigandes_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x800002, 0x800003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0x00ff) AM_RANGE(0x900000, 0x90000f) AM_READWRITE(daisenpu_input_r, daisenpu_input_w) AM_RANGE(0xb00000, 0xb00fff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0xd00000, 0xd007ff) AM_RAM AM_BASE_GENERIC(spriteram) // Sprites Y - AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_BASE_GENERIC(spriteram2 ) // Sprites Code + X + Attr + AM_RANGE(0xd00000, 0xd007ff) AM_RAM AM_BASE_MEMBER(seta_state, spriteram) // Sprites Y + AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_BASE_MEMBER(seta_state, spriteram2) // Sprites Code + X + Attr AM_RANGE(0xf00000, 0xf03fff) AM_RAM /* Main RAM */ ADDRESS_MAP_END @@ -465,8 +467,8 @@ static ADDRESS_MAP_START( ballbros_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x800002, 0x800003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w, 0x00ff) AM_RANGE(0x900000, 0x90000f) AM_READWRITE(daisenpu_input_r, daisenpu_input_w) AM_RANGE(0xb00000, 0xb00fff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0xd00000, 0xd007ff) AM_RAM AM_BASE_GENERIC(spriteram ) // Sprites Y - AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_BASE_GENERIC(spriteram2 ) // Sprites Code + X + Attr + AM_RANGE(0xd00000, 0xd007ff) AM_RAM AM_BASE_MEMBER(seta_state, spriteram) // Sprites Y + AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_BASE_MEMBER(seta_state, spriteram2) // Sprites Code + X + Attr AM_RANGE(0xf00000, 0xf03fff) AM_RAM /* Main RAM */ ADDRESS_MAP_END @@ -892,8 +894,10 @@ static STATE_POSTLOAD( taitox_postload ) static MACHINE_START( taitox ) { - banknum = -1; - state_save_register_global(machine, banknum); + seta_state *state = machine->driver_data(); + + state->taitox_banknum = -1; + state_save_register_global(machine, state->taitox_banknum); state_save_register_postload(machine, taitox_postload, NULL); } @@ -907,6 +911,8 @@ static const tc0140syt_interface taitox_tc0140syt_intf = static MACHINE_DRIVER_START( superman ) + MDRV_DRIVER_DATA( seta_state ) + /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) /* verified on pcb */ MDRV_CPU_PROGRAM_MAP(superman_map) @@ -949,6 +955,8 @@ MACHINE_DRIVER_END static MACHINE_DRIVER_START( daisenpu ) + MDRV_DRIVER_DATA( seta_state ) + /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) /* verified on pcb */ MDRV_CPU_PROGRAM_MAP(daisenpu_map) @@ -988,6 +996,8 @@ MACHINE_DRIVER_END static MACHINE_DRIVER_START( gigandes ) + MDRV_DRIVER_DATA( seta_state ) + /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M68000, 8000000) /* 8 MHz? */ MDRV_CPU_PROGRAM_MAP(gigandes_map) @@ -1029,6 +1039,8 @@ MACHINE_DRIVER_END static MACHINE_DRIVER_START( ballbros ) + MDRV_DRIVER_DATA( seta_state ) + /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M68000, 8000000) /* 8 MHz? */ MDRV_CPU_PROGRAM_MAP(ballbros_map) diff --git a/src/mame/includes/seta.h b/src/mame/includes/seta.h index 61fecdbce75..27d19ac87e2 100644 --- a/src/mame/includes/seta.h +++ b/src/mame/includes/seta.h @@ -51,6 +51,7 @@ public: tilemap_t *tilemap_3; // Layer 1 int tilemaps_flip; int samples_bank; + int taitox_banknum; uPD71054_state uPD71054; const game_offset *global_offsets;