Let's set up our inputs (I wrote a tool to do this, I find it tedious)
static INPUT_PORTS_START( gotya )
PORT_START("P1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
PORT_SERVICE( 0x10, IP_ACTIVE_LOW )
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P1 Paper") PORT_PLAYER(1)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P1 Scissors") PORT_PLAYER(1)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Rock") PORT_PLAYER(1)
PORT_START("P2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
PORT_DIPNAME( 0x10, 0x10, "Sound Test" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P2 Paper") PORT_PLAYER(2)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P2 Scissors") PORT_PLAYER(2)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P2 Rock") PORT_PLAYER(2)
PORT_START("DSW")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Cabinet ) )
PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
PORT_DIPSETTING( 0x02, DEF_STR( Cocktail ) )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 )
PORT_DIPNAME( 0x10, 0x00, DEF_STR( Difficulty ) )
PORT_DIPSETTING( 0x00, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x10, DEF_STR( Hard ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Bonus_Life ) )
PORT_DIPSETTING( 0x00, DEF_STR( None ) )
PORT_DIPSETTING( 0x20, "15000" )
PORT_DIPNAME( 0x40, 0x00, DEF_STR( Lives ) )
PORT_DIPSETTING( 0x00, "3" )
PORT_DIPSETTING( 0x40, "5" )
PORT_DIPNAME( 0x80, 0x80, "Game Type" ) /* Manual Says: Before main switch on: Test Pattern */
PORT_DIPSETTING( 0x80, DEF_STR( Normal ) ) /* After main switch on: Endless game */
PORT_DIPSETTING( 0x00, "Endless" )
INPUT_PORTS_END
Please note the numbers to the far right! these are important for our dip switches!
static struct BurnInputInfo gotyaInputList[] = {
{"P1 Coin", BIT_DIGITAL, DrvJoy3 + 0, "p1 coin" }, // 0
{"P1 Start", BIT_DIGITAL, DrvJoy3 + 2, "p1 start" }, // 1
// PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
// BIT = (1 << 0) [0x01] -> DrvJoy + 0
{"P1 Left", BIT_DIGITAL, DrvJoy1 + 0, "p1 left" }, // 2
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
// BIT = (1 << 1) [0x02] -> DrvJoy + 1
{"P1 Right", BIT_DIGITAL, DrvJoy1 + 1, "p1 right" }, // 3
{"P1 Down", BIT_DIGITAL, DrvJoy1 + 2, "p1 down" }, // 4
{"P1 Up", BIT_DIGITAL, DrvJoy1 + 3, "p1 up" }, // 5
{"P1 Paper", BIT_DIGITAL, DrvJoy1 + 5, "p1 fire 1" }, // 6
{"P1 Scissors", BIT_DIGITAL, DrvJoy1 + 6, "p1 fire 2" }, // 7
{"P1 Rock", BIT_DIGITAL, DrvJoy1 + 7, "p1 fire 3" }, // 8
{"P2 Start", BIT_DIGITAL, DrvJoy3 + 3, "p2 start" }, // 9
{"P2 Left", BIT_DIGITAL, DrvJoy2 + 0, "p2 left" }, // 0x0a
{"P2 Right", BIT_DIGITAL, DrvJoy2 + 1, "p2 right" }, // 0x0b
{"P2 Down", BIT_DIGITAL, DrvJoy2 + 2, "p2 down" }, // 0x0c
{"P2 Up", BIT_DIGITAL, DrvJoy2 + 3, "p2 up" }, // 0x0d
{"P2 Paper", BIT_DIGITAL, DrvJoy2 + 5, "p2 fire 1" }, // 0x0e
{"P2 Scissors", BIT_DIGITAL, DrvJoy2 + 6, "p2 fire 2" }, // 0x0f
{"P2 Rock", BIT_DIGITAL, DrvJoy2 + 7, "p2 fire 3" }, // 0x10
{"Reset", BIT_DIGITAL, &DrvReset, "reset" }, // 0x11
{"Service", BIT_DIGITAL, DrvJoy1 + 4, "service" }, // 0x12
{"Dip A", BIT_DIPSWITCH, DrvDips + 0, "dip" }, // 0x13
{"Dip B", BIT_DIPSWITCH, DrvDips + 1, "dip" }, // 0x14
};
STDINPUTINFO(gotya)
static struct BurnDIPInfo gotyaDIPList[]=
{
// defaults!
// #0 is the offset in the input struct to where we're putting the dip info
// #1 and #2 are always the same
// #3 is the default for this dip!
// ignore the NULL
{0x13, 0xff, 0xff, 0x10, NULL },
{0x14, 0xff, 0xff, 0x6b, NULL },
// actual dips
// #0 is always 0
// #1 is always fe
// #2 is always 0
// #3 is how many dips for this selection
// #4 is the description of this switch
{0 , 0xfe, 0 , 2, "Sound Test" },
// #0 is the offset to the input struct where this dip setting is getting stored (DrvDips + 0 for this one)
// #1 is always 1
// #2 is the bit mask
// #3 is the actual value we're using
// #4 is the description
{0x13, 0x01, 0x10, 0x10, "Off" },
{0x13, 0x01, 0x10, 0x00, "On" },
PORT_START("DSW")
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Cabinet ) )
PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
PORT_DIPSETTING( 0x02, DEF_STR( Cocktail ) )
PORT_DIPNAME( 0x10, 0x00, DEF_STR( Difficulty ) )
PORT_DIPSETTING( 0x00, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x10, DEF_STR( Hard ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Bonus_Life ) )
PORT_DIPSETTING( 0x00, DEF_STR( None ) )
PORT_DIPSETTING( 0x20, "15000" )
PORT_DIPNAME( 0x40, 0x00, DEF_STR( Lives ) )
PORT_DIPSETTING( 0x00, "3" )
PORT_DIPSETTING( 0x40, "5" )
PORT_DIPNAME( 0x80, 0x80, "Game Type" ) /* Manual Says: Before main switch on: Test Pattern */
PORT_DIPSETTING( 0x80, DEF_STR( Normal ) ) /* After main switch on: Endless game */
PORT_DIPSETTING( 0x00, "Endless" )
// we're not setting up flipscreen, so disable this...
// {0 , 0xfe, 0 , 2, "Cabine" },
// {0x14, 0x01, 0x02, 0x00, "Upright" },
// {0x14, 0x01, 0x02, 0x02, "Cocktail" },
{0 , 0xfe, 0 , 2, "Difficulty" },
{0x0d, 0x01, 0x10, 0x00, "Easy" },
{0x0d, 0x01, 0x10, 0x10, "Hard" },
{0 , 0xfe, 0 , 2, "Bonus Life" },
{0x0d, 0x01, 0x20, 0x00, "None" },
{0x0d, 0x01, 0x20, 0x20, "15000" },
{0 , 0xfe, 0 , 2, "Lifes" },
{0x0d, 0x01, 0x40, 0x00, "3" },
{0x0d, 0x01, 0x40, 0x40, "5" },
{0 , 0xfe, 0 , 2, "Game Type" },
{0x0d, 0x01, 0x80, 0x80, "Endless" },
{0x0d, 0x01, 0x80, 0x00, "Normal" },
};
STDDIPINFO(gotya)