diff options
author | angelosa <salese_corp_ltd@email.it> | 2016-09-28 21:13:13 +0200 |
---|---|---|
committer | angelosa <salese_corp_ltd@email.it> | 2016-09-28 21:13:38 +0200 |
commit | dd7d97ad600dfdbe778aa2217109d37457401092 (patch) | |
tree | 669b3c0c696eaf6ac9a3e51ba2b20b0050dadee9 | |
parent | e0747962dad5f7d32a299e477cfb3edf1071c13b (diff) |
pdriftl: spotted link ID and link communication mode, game playable in stand-alone, pending MNW promotion, nw
bigrun: link protocol notes, nw
-rw-r--r-- | src/mame/drivers/cischeat.cpp | 4 | ||||
-rw-r--r-- | src/mame/drivers/segaybd.cpp | 43 | ||||
-rw-r--r-- | src/mame/includes/segaybd.h | 2 |
3 files changed, 44 insertions, 5 deletions
diff --git a/src/mame/drivers/cischeat.cpp b/src/mame/drivers/cischeat.cpp index 70d7aeb64e3..6ae4e0295d6 100644 --- a/src/mame/drivers/cischeat.cpp +++ b/src/mame/drivers/cischeat.cpp @@ -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 diff --git a/src/mame/drivers/segaybd.cpp b/src/mame/drivers/segaybd.cpp index c20dccc7c7d..637ce3f72eb 100644 --- a/src/mame/drivers/segaybd.cpp +++ b/src/mame/drivers/segaybd.cpp @@ -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 diff --git a/src/mame/includes/segaybd.h b/src/mame/includes/segaybd.h index 42538b57b69..90b6a2e2777 100644 --- a/src/mame/includes/segaybd.h +++ b/src/mame/includes/segaybd.h @@ -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); |