03996: All games in taito_x.c: Crash before OK [Atari Ace]

---------- Forwarded message ----------
From: Atari Ace <atari_ace@frontier.com>

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
This commit is contained in:
Phil Bennett 2010-08-13 08:28:37 +00:00
parent fde112a254
commit 8b8dfe62d6
2 changed files with 27 additions and 14 deletions

View File

@ -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<seta_state>();
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<seta_state>();
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<seta_state>();
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)

View File

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