01887: pushman, pushmana, pushmans: Flip screen DIP switch doesn't work.

This commit is contained in:
Nicola Salmoria 2008-07-12 17:30:52 +00:00
parent 4e3880457b
commit ec3652a3af
2 changed files with 23 additions and 3 deletions

View File

@ -38,6 +38,16 @@ static UINT16 latch,new_latch=0;
/******************************************************************************/
static WRITE16_HANDLER( pushman_flipscreen_w )
{
if (ACCESSING_BITS_8_15)
{
flip_screen_set(data & 0x0200);
coin_counter_w(0, data & 0x4000);
coin_counter_w(1, data & 0x8000);
}
}
static WRITE16_HANDLER( pushman_control_w )
{
if (ACCESSING_BITS_8_15)
@ -150,6 +160,7 @@ static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x01ffff) AM_WRITE(SMH_ROM)
AM_RANGE(0x060000, 0x060007) AM_WRITE(pushman_68705_w)
AM_RANGE(0xfe0800, 0xfe17ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16)
AM_RANGE(0xfe4000, 0xfe4001) AM_WRITE(pushman_flipscreen_w)
AM_RANGE(0xfe4002, 0xfe4003) AM_WRITE(pushman_control_w)
AM_RANGE(0xfe8000, 0xfe8003) AM_WRITE(pushman_scroll_w)
AM_RANGE(0xfe800e, 0xfe800f) AM_WRITE(SMH_NOP) /* ? */
@ -207,6 +218,7 @@ static ADDRESS_MAP_START( bballs_writemem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x00000, 0x1ffff) AM_WRITE(SMH_ROM)
AM_RANGE(0x60000, 0x60007) AM_WRITE(bballs_68705_w)
AM_RANGE(0xe0800, 0xe17ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16)
AM_RANGE(0xe4000, 0xe4001) AM_WRITE(pushman_flipscreen_w)
AM_RANGE(0xe4002, 0xe4003) AM_WRITE(pushman_control_w)
AM_RANGE(0xe8000, 0xe8003) AM_WRITE(pushman_scroll_w)
AM_RANGE(0xe800e, 0xe800f) AM_WRITE(SMH_NOP) /* ? */
@ -257,9 +269,9 @@ static INPUT_PORTS_START( pushman )
PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Level_Select ) )
PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Flip_Screen ) )
PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Cabinet ) )
PORT_DIPSETTING( 0x0008, DEF_STR( Upright ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Cocktail ) )
PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0010, DEF_STR( On ) )

View File

@ -99,6 +99,14 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap,const rectan
flipx=spriteram16[offs+1]&2;
flipy=spriteram16[offs+1]&1; /* flip y untested */
if (flip_screen_get())
{
x = 240 - x;
y = 240 - y;
flipx = !flipx;
flipy = !flipy;
}
drawgfx(bitmap,machine->gfx[1],
sprite,
color,flipx,flipy,x,y,