Code:
INPUT_PORTS_START( gt98 )
PORT_INCLUDE(gt3d)
PORT_MODIFY("DIPS")
PORT_DIPNAME( 0x0020, 0x0000, DEF_STR( Unknown )) /* Seem to have no effect on the game */
PORT_DIPSETTING( 0x0000, DEF_STR( Off ))
PORT_DIPSETTING( 0x0020, DEF_STR( On ))
PORT_DIPNAME( 0x0040, 0x0000, DEF_STR( Cabinet ))
PORT_DIPSETTING( 0x0000, DEF_STR( Upright ))
PORT_DIPSETTING( 0x0040, DEF_STR( Cocktail ))
INPUT_PORTS_END
INPUT_PORTS_START( gt3d )
PORT_INCLUDE(itech32_base)
PORT_MODIFY("P1")
PORT_BIT( 0x00f0, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_MODIFY("P2")
PORT_BIT( 0x00f0, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_MODIFY("P3")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_VOLUME_UP )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_VOLUME_DOWN )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 )
PORT_BIT( 0x00f8, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_MODIFY("DIPS")
PORT_DIPNAME( 0x0010, 0x0000, DEF_STR( Unknown ))
PORT_DIPSETTING( 0x0000, DEF_STR( Off ))
PORT_DIPSETTING( 0x0010, DEF_STR( On ))
PORT_DIPNAME( 0x0020, 0x0000, "Trackball Orientation" )
PORT_DIPSETTING( 0x0000, "Normal Mount" )
PORT_DIPSETTING( 0x0020, "45 Degree Angle" )
PORT_DIPNAME( 0x0040, 0x0000, DEF_STR( Controls ))
PORT_DIPSETTING( 0x0000, "One Trackball" )
PORT_DIPSETTING( 0x0040, "Two Trackballs" )
PORT_START_TAG("TRACKX1")
PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_MINMAX(0,255) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_REVERSE PORT_PLAYER(1)
PORT_START_TAG("TRACKY1")
PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_MINMAX(0,255) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_PLAYER(1)
PORT_START_TAG("TRACKX2")
PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_MINMAX(0,255) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_REVERSE PORT_COCKTAIL PORT_PLAYER(2)
PORT_START_TAG("TRACKY2")
PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_MINMAX(0,255) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_COCKTAIL PORT_PLAYER(2)
INPUT_PORTS_END
INPUT_PORTS_START( itech32_base )
PORT_START_TAG("P1") /* 080000 */
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
PORT_START_TAG("P2") /* 100000 */
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
PORT_START_TAG("P3") /* 180000 */
PORT_BIT( 0x00ff, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START_TAG("P4") /* 200000 */
PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START_TAG("DIPS") /* 280000 */
PORT_SERVICE_NO_TOGGLE( 0x0001, IP_ACTIVE_LOW )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_VBLANK )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_SPECIAL )
PORT_DIPNAME( 0x0010, 0x0000, "Video Sync" )
PORT_DIPSETTING( 0x0000, "-" )
PORT_DIPSETTING( 0x0010, "+" )
PORT_DIPNAME( 0x0020, 0x0000, DEF_STR( Flip_Screen ))
PORT_DIPSETTING( 0x0000, DEF_STR( Off ))
PORT_DIPSETTING( 0x0020, DEF_STR( On ))
PORT_DIPNAME( 0x0040, 0x0000, DEF_STR( Unknown ))
PORT_DIPSETTING( 0x0040, DEF_STR( Off ))
PORT_DIPSETTING( 0x0000, DEF_STR( On ))
PORT_DIPNAME( 0x0080, 0x0000, DEF_STR( Service_Mode ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Off ))
PORT_DIPSETTING( 0x0080, DEF_STR( On ))
PORT_START_TAG("EXTRA") /* 78000 */
PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
Resolution: 384x240 @ 60Hz
Rules: https://www.twingalaxies.com/scores.php?scores=70048
ROMSet: GT98
Service Mode: Off
Trackball Orientation: Normal Mount
Cabinet: Upright
Controls: One Trackball
Internal Defaults
-----------------
Skill Level 3
No Hole In One Contest
Sample correct TG:
DIPS: offset 0x33, repeat varies due to analogue input, typical value 0x0F
- DIPS: 0x0001 (unused): [not relevant]
- DIPS: 0x0002 (service 1): [not relevant]
- DIPS: 0x0004 (vertical blank): [not relevant]
- DIPS: 0x0008 (special): [not relevant]
Note: the DIPs here don't make sense from the source. Both the Controls and the Cabinet occupy the same 0x40 mask. The following is worked out by testing.
- DIPS: 0x0010 (Trackball Orientation): 0x0000 (Normal Mount) [0x0010 = 45 Degree Angle]
- DIPS: 0x0020 (Cabinet): 0x0000 (Upright) [0x0020 = Cocktail]
- DIPS: 0x0040 (Controls): 0x0000 (One Trackball) [0x0040 = Two Trackballs]
- DIPS: 0x0080 (Service_Mode): 0x0000 (Off)
30: 00 00 00 0F 00 00 00 FF 00 00 00 00 00 00 00 00 | ....... ........
A0: 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 0F | ... ... ... ....
120: 00 00 00 FF 00 00 00 FF 00 00 00 0B 00 00 00 FF | ... ... .......