Fixed crash regression with spangbl / pangba [Angelo Salese]

This commit is contained in:
Angelo Salese 2010-06-09 19:35:29 +00:00
parent 363b273816
commit d26f0bd139
3 changed files with 41 additions and 2 deletions

View File

@ -352,7 +352,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( spangbl_io_map, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x02) AM_READ(input_r)
AM_RANGE(0x00, 0x00) AM_WRITE(pang_gfxctrl_w) /* Palette bank, layer enable, coin counters, more */
AM_RANGE(0x00, 0x00) AM_WRITE(pangbl_gfxctrl_w) /* Palette bank, layer enable, coin counters, more */
AM_RANGE(0x02, 0x02) AM_WRITE(pang_bankswitch_w) /* Code bank register */
AM_RANGE(0x03, 0x03) AM_DEVWRITE("ymsnd", ym2413_data_port_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE("ymsnd", ym2413_register_port_w)

View File

@ -11,7 +11,7 @@ class mitchell_state
public:
static void *alloc(running_machine &machine) { return auto_alloc_clear(&machine, mitchell_state(machine)); }
mitchell_state(running_machine &machine)
mitchell_state(running_machine &machine)
: audiocpu(machine.device<cpu_device>("audiocpu")),
oki(machine.device<okim6295_device>("oki")) { }
@ -58,6 +58,7 @@ READ8_HANDLER( pang_videoram_r );
WRITE8_HANDLER( pang_colorram_w );
READ8_HANDLER( pang_colorram_r );
WRITE8_HANDLER( pang_gfxctrl_w );
WRITE8_HANDLER( pangbl_gfxctrl_w );
WRITE8_HANDLER( pang_paletteram_w );
READ8_HANDLER( pang_paletteram_r );

View File

@ -188,6 +188,44 @@ logerror("PC %04x: pang_gfxctrl_w %02x\n",cpu_get_pc(space->cpu),data);
/* up marukin - you can see partially built up screens during attract mode. */
}
WRITE8_HANDLER( pangbl_gfxctrl_w )
{
mitchell_state *state = (mitchell_state *)space->machine->driver_data;
logerror("PC %04x: pang_gfxctrl_w %02x\n",cpu_get_pc(space->cpu),data);
{
#if 0
char baf[40];
sprintf(baf,"%02x",data);
popmessage(baf);
#endif
}
/* bit 0 is unknown (used, maybe back color enable?) */
/* bit 1 is coin counter */
coin_counter_w(space->machine, 0, data & 2);
/* bit 2 is flip screen */
if (state->flipscreen != (data & 0x04))
{
state->flipscreen = data & 0x04;
tilemap_set_flip_all(space->machine, state->flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
}
/* bit 3 is unknown (used, e.g. marukin pulses it on the title screen) */
/* bit 4 selects OKI M6295 bank, nop'ed here */
/* bit 5 is palette RAM bank selector (doesn't apply to mgakuen) */
state->paletteram_bank = data & 0x20;
/* bits 6 and 7 are unknown, used in several places. At first I thought */
/* they were bg and sprites enable, but this screws up spang (screen flickers */
/* every time you pop a bubble). However, not using them as enable bits screws */
/* up marukin - you can see partially built up screens during attract mode. */
}
WRITE8_HANDLER( mstworld_gfxctrl_w )
{
mitchell_state *state = (mitchell_state *)space->machine->driver_data;