From aca6a26c11310bb457a8ab36401816b965c81426 Mon Sep 17 00:00:00 2001 From: Zsolt Vasvari Date: Mon, 7 Jan 2008 02:38:35 +0000 Subject: [PATCH] Fixes suprridr0122u2gra by multiplexing inputs --- src/mame/drivers/suprridr.c | 42 ++++++++++++++++++++++++++++++------ src/mame/includes/suprridr.h | 1 + src/mame/video/suprridr.c | 6 ++++++ 3 files changed, 42 insertions(+), 7 deletions(-) diff --git a/src/mame/drivers/suprridr.c b/src/mame/drivers/suprridr.c index 4b396d3407e..e0184e24c7b 100644 --- a/src/mame/drivers/suprridr.c +++ b/src/mame/drivers/suprridr.c @@ -215,18 +215,30 @@ ADDRESS_MAP_END /************************************* * - * Port definitions + * Port definitions and helpers * *************************************/ +#define SUPRRIDR_P1_CONTROL_PORT_TAG ("CONTP1") +#define SUPRRIDR_P2_CONTROL_PORT_TAG ("CONTP2") + +static UINT32 suprridr_control_r(void *param) +{ + UINT32 ret; + + /* screen flip multiplexes controls */ + if (suprridr_is_screen_flipped()) + ret = readinputportbytag(SUPRRIDR_P2_CONTROL_PORT_TAG); + else + ret = readinputportbytag(SUPRRIDR_P1_CONTROL_PORT_TAG); + + return ret; +} + + static INPUT_PORTS_START( suprridr ) PORT_START /* IN0 */ - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY - PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) - PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(suprridr_control_r, 0) PORT_START /* IN1 */ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) @@ -259,6 +271,22 @@ static INPUT_PORTS_START( suprridr ) PORT_DIPNAME( 0x80, 0x00, "Invulnerability?" ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x80, DEF_STR( On ) ) + + PORT_START_TAG(SUPRRIDR_P1_CONTROL_PORT_TAG) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY + PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) + PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + + PORT_START_TAG(SUPRRIDR_P2_CONTROL_PORT_TAG) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_COCKTAIL + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_COCKTAIL + PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL + PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNKNOWN ) INPUT_PORTS_END diff --git a/src/mame/includes/suprridr.h b/src/mame/includes/suprridr.h index d16590bcc3f..6d6a67c6d55 100644 --- a/src/mame/includes/suprridr.h +++ b/src/mame/includes/suprridr.h @@ -17,6 +17,7 @@ WRITE8_HANDLER( suprridr_flipy_w ); WRITE8_HANDLER( suprridr_fgdisable_w ); WRITE8_HANDLER( suprridr_fgscrolly_w ); WRITE8_HANDLER( suprridr_bgscrolly_w ); +int suprridr_is_screen_flipped(void); WRITE8_HANDLER( suprridr_fgram_w ); WRITE8_HANDLER( suprridr_bgram_w ); diff --git a/src/mame/video/suprridr.c b/src/mame/video/suprridr.c index 98fbac87624..ec25da47a8d 100644 --- a/src/mame/video/suprridr.c +++ b/src/mame/video/suprridr.c @@ -130,6 +130,12 @@ WRITE8_HANDLER( suprridr_bgscrolly_w ) } +int suprridr_is_screen_flipped(void) +{ + return flipx; /* or is it flipy? */ +} + + /************************************* *