pdriftl: spotted link ID and link communication mode, game playable in stand-alone, pending MNW promotion, nw

bigrun: link protocol notes, nw
This commit is contained in:
angelosa 2016-09-28 21:13:13 +02:00
parent e0747962da
commit dd7d97ad60
3 changed files with 44 additions and 5 deletions

View File

@ -214,6 +214,10 @@ static ADDRESS_MAP_START( bigrun_map, AS_PROGRAM, 16, cischeat_state )
AM_RANGE(0x082308, 0x082309) AM_WRITE(cischeat_comms_w)
AM_RANGE(0x082400, 0x082401) AM_WRITE(active_layers_w)
/* It's actually 0x840000-0x847ff, divided in four banks and shared with other boards.
Each board expects reads from the other boards and writes to own bank.
Amusingly, if you run the communication test as ID = X then soft reset -> ID = Y, what was at ID = X gets an OK in the second test
so it's likely to be the only thing needed. */
AM_RANGE(0x084000, 0x087fff) AM_RAM // Linking with other units
AM_RANGE(0x088000, 0x08bfff) AM_RAM AM_SHARE("share2") // Sharedram with sub CPU#2
AM_RANGE(0x08c000, 0x08ffff) AM_RAM AM_SHARE("share1") // Sharedram with sub CPU#1

View File

@ -808,17 +808,19 @@ static ADDRESS_MAP_START( link_map, AS_PROGRAM, 8, segaybd_state )
AM_RANGE(0x4000, 0x47ff) AM_DEVREADWRITE("mb8421", mb8421_device, right_r, right_w)
ADDRESS_MAP_END
#if 0
READ8_MEMBER(segaybd_state::link_portc0_r)
{
return 0xf8;
}
#endif
static ADDRESS_MAP_START( link_portmap, AS_IO, 8, segaybd_state )
ADDRESS_MAP_UNMAP_HIGH
ADDRESS_MAP_GLOBAL_MASK(0xff)
// AM_RANGE(0x40, 0x40) AM_READ_PORT("LinkDSW")
AM_RANGE(0xc0, 0xc0) AM_READ(link_portc0_r)
AM_RANGE(0x40, 0x40) AM_READ_PORT("LinkID_DSW1")
AM_RANGE(0xc0, 0xc0) AM_READ_PORT("LinkID_DSW2")
ADDRESS_MAP_END
@ -1223,11 +1225,11 @@ static INPUT_PORTS_START( pdriftl )
PORT_DIPSETTING( 0xb0, DEF_STR( 6C_1C ) )
PORT_DIPSETTING( 0x00, "Free Play (if Coin A too) or 1/1" )
PORT_START("LinkDSW")
PORT_START("LinkID_DSW1")
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) // Affects banking between
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
@ -1248,6 +1250,39 @@ static INPUT_PORTS_START( pdriftl )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("LinkID_DSW2")
PORT_DIPNAME( 0x0f, 0x01, "Cabinet ID" )
PORT_DIPSETTING( 0x00, "0" )
PORT_DIPSETTING( 0x01, "1" ) // accessed unmapped areas if stand-alone isn't setup properly?
PORT_DIPSETTING( 0x02, "2" )
PORT_DIPSETTING( 0x03, "3" )
PORT_DIPSETTING( 0x04, "4" )
PORT_DIPSETTING( 0x05, "5" )
PORT_DIPSETTING( 0x06, "6" )
PORT_DIPSETTING( 0x07, "7" )
PORT_DIPSETTING( 0x08, "8" )
PORT_DIPSETTING( 0x09, "9" )
PORT_DIPSETTING( 0x0a, "10" )
PORT_DIPSETTING( 0x0b, "11" )
// enabled for debugging
PORT_DIPSETTING( 0x0c, "12 (invalid)" )
PORT_DIPSETTING( 0x0d, "13 (invalid)" )
PORT_DIPSETTING( 0x0e, "14 (invalid)" )
PORT_DIPSETTING( 0x0f, "15 (invalid)" )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x00, "Communication Mode" )
PORT_DIPSETTING( 0x80, "Master/Slave" )
PORT_DIPSETTING( 0x00, "Stand-Alone" )
INPUT_PORTS_END

View File

@ -62,7 +62,7 @@ public:
DECLARE_READ16_MEMBER( link_r );
DECLARE_READ16_MEMBER( link2_r );
DECLARE_WRITE16_MEMBER( link2_w );
DECLARE_READ8_MEMBER( link_portc0_r );
// DECLARE_READ8_MEMBER( link_portc0_r );
// game-specific output handlers
void gforce2_output_cb1(UINT16 data);