forked from mamedev/mame
Arcade Networking QA
Hydreigon edited this page Feb 24, 2024
·
48 revisions
Many arcade systems have a communication feature programmed to talk to one or more pcbs for multiplayer. This will list the possible systems that have a communication feature with a few exceptions:
- Any system using ethernet of some sort (e.g. seattle.cpp and vegas.cpp) will not be on this list unless they communicate in some obscure way.
- Games that use dual board comms through shared ram technically only counts as one system and shouldn't be networked.
| romset(s) | driver(s) | supported | Max Systems | Comm Devices/Ports | Communication Type | Notes |
|---|---|---|---|---|---|---|
| racedriv | harddriv.cpp | yes | 2 | MC68681 | serial | Set flow control to off, 8 data bits, no parity, 38400 baud and 1 stop bit |
| steeltal | harddriv.cpp | no | 2 | ADSP-2105 (serial port 0) | serial | Comm device not hooked up |
| roadriot roadriota |
atarig42.cpp | no | 2 | ADSP-2105 (serial port 0) | serial | Comm device not hooked up Comm board program dumped but not in MAME source |
| roadriotb | atarig42.cpp | no | 1 | dual port ram (bridged) | N/A | Dual board comms not hooked up |
| motofren | atarigx2.cpp | no | 2 | ADSP-2105 (serial port 0) | serial | Comm device and dual board comms not hooked up |
| spclords rrreveng |
atarigx2.cpp | no | 2 | COM20020 | ARCNet(multidrop) | Comm device and dual board comms not hooked up |
| tmek | atarigt.cpp | no | 6 | COM20020 | ARCNet(multidrop) | Comm device not hooked up |
| metalmx | metalmx.cpp | no | 2 | ADSP-2105 (serial port 0) | serial | Comm device not hooked up; Non-working driver |
| romset(s) | driver(s) | supported | Max Systems | Comm Devices/Ports | Communication Type | Notes |
|---|---|---|---|---|---|---|
| surfplnt radikalb |
gaelco3d.cpp | no | 2 | custom serial controller | serial(multidrop) | Comm device likely needs refactoring |
| speedup | gaelco3d.cpp | no | 4 | custom serial controller | serial(multidrop) | ...as well as multidrop support for this game |
| rollext | rollext.cpp | no | 2 | custom serial controller | serial(multidrop) | Likely similar to gaelco3d.cpp |
| atvtrack smshdrive |
atvtrack.cpp | no | 2 | custom serial controller | serial(multidrop) | "" |
| romset(s) | driver(s) | supported | Max Systems | Comm Devices/Ports | Communication Type | Notes |
|---|---|---|---|---|---|---|
| bigrun cischeat f1gpstar |
cischeat.cpp | no | 4 | custom | I2C? | According to f1gpstar's manual, network signals consist of only DATA and CLK signals; I2C-ish |
| f1gpstr2 | cischeat.cpp | no | 8 | custom | I2C? | "" |
| f1superb | ms32.cpp | no | 8 | custom | I2C? | Similar system to cischeat.cpp |
| romset(s) | driver(s) | supported | Max Systems | Comm Devices/Ports | Communication Type | Notes |
|---|---|---|---|---|---|---|
| midnrun windheat jetwave gticlub |
zr107.cpp gticlub.cpp |
no | 4 | k056230 | custom(multidrop) | Detailed TODO in device page; Needs multidrop support |
| racinfrc | konamigx.cpp | no | 8 | k056230 | custom(multidrop) | "" |
| plygonet polynetw |
plygonet.cpp | no | 4 | k056230 | custom(multidrop) | "" |
| thunderh | gticlub.cpp | no | 1 | k056230 | custom(multidrop) | Uses this for gun controls instead of cabinet linking |
| racingj racingj2 |
nwk-tr.cpp | no | 8 | GN676 LAN(custom logic) | custom(multidrop) | Network traffic stubbed; Needs multidrop support |
| thrilld | nwk-tr.cpp hornet.cpp |
no | 4 | GN676 LAN(custom logic) | custom(multidrop) | "" |
| racjamdx | cobra.cpp | no | 8 | GY676 LAN(custom logic) | custom(multidrop) | May (unsurprisingly) be same as GN676 LAN board |
| sscope2 | hornet.cpp | no | 2 | GQ931 LAN(custom logic) | custom(multidrop) | May (unsurprisingly) be similar to previous Konami networking |
| ddrsbm ddrs2k |
ksys573.cpp | no | 4 | k573dio | custom(multidrop) | Network traffic stubbed; Needs multidrop support |
| gticlub2 thrild2 xtrial |
viper.cpp | no | 4 | FPGA | custom(multidrop) | May (unsurprisingly) be similar to previous Konami networking |
| code1d | viper.cpp | no | 2 | FPGA | custom(multidrop) | "" |
| wcombat | viper.cpp | no | 1 | FPGA | custom(multidrop) | Dual board setup connected using this; Two player versions are exempt |
| romset(s) | driver(s) | supported | Max Systems | Comm Devices/Ports | Communication Type | Notes |
|---|---|---|---|---|---|---|
| crusnusa | midvunit.cpp | no | 2 | custom | unknown | Designed around keeping the main CPUs in sync acting like a CPU mailbox; Comm traffic stubbed |
| crusnwld offroadc |
midvunit.cpp | no | 4 | custom | unknown | Needs multidrop support otherwise same as above |
| crusnexo | midzeus.cpp | no | 4 | TSB12LV01A IBM21S850 |
IEEE1394 | Comm device in skeletonish status; Preliminary driver |
| thegrid | midzeus.cpp | no | 6 | TSB12LV01A IBM21S850 |
IEEE1394 | "" |
A lot of games developed by them (save for three listed below) use a serial based C139 custom for networking and is in current heavy WIP right now.
| romset(s) | driver(s) | supported | Max Systems | Comm Devices/Ports | Communication Type | Notes |
|---|---|---|---|---|---|---|
| finfurl2 raceon |
namcos23.cpp | no | 8 | MD8402 MD8412 |
IEEE1394 | Comm device not hooked up; Preliminary driver/device |
| gunwars | namcos23.cpp | no | 4 | MD8402 MD8412 |
IEEE1394 | "" |
| romset(s) | driver(s) | supported | Max Systems | Comm Devices/Ports | Communication Type | Notes |
|---|---|---|---|---|---|---|
| cadash | asuka.cpp | no | 2 | HD64180RP(z180 derivative) | serial | Needs a different implementation of handling serial traffic through two mame instances. |
| wgp | wgp.cpp | no | 8 | uPD72103/5 | HDLC(loop) | Comm device not hooked up |
| dblaxleul | taito_z.cpp | no | 2 | uPD72103/5 | HDLC(loop) | "" |
| racingb | taito_z.cpp | no | 4 | uPD72103/5 | HDLC(loop) | "" |
| gunbustr | gunbustr.cpp | no | 1 | dual port ram | N/A | Should be emulated as a dual board system |
| cbombers groundfx |
undrfire.cpp groundfx.cpp |
no | 8 | COM20020 | ARCNet(multidrop) | Comm device not hooked up |
| dangcurv sidebs sidebs2 |
taitojc.cpp | no | 4 | COM20020 | ARCNet(multidrop) | "" |
| gobyrc | taitogn.cpp | no | 4 | H8/3062 COM20020 |
ARCNet(multidrop) | H8 firmware not dumped otherwise same as above |
| batlgear batlgr2 |
taitotz.cpp | no | 4 | MD8402 MD8412 |
IEEE1394 | Comm device not hooked up; Preliminary driver |
| romset(s) | driver(s) | supported | Max Systems | Comm Devices/Ports | Communication Type | Notes |
|---|---|---|---|---|---|---|
| gstriker | gstriker.cpp | no | 2 | ACIA6850 | serial | Needs a different implementation of handling serial traffic through two mame instances. |
| tail2nos | tail2nos.cpp | no | ? | ACIA6850 | serial | As above but it's unknown how much max players this game supports |
| f1gp f1gp2 |
f1gp.cpp | no | 6 | ACIA6850 | serial(loop) | As above; This different implementation could handle looping in sequential order like with Sega networking |
| ridhero lbowling trally |
neogeo.cpp | no | 4 | HD6301V1 (m6801 derivative) | serial(multidrop) | Firmware not dumped except for ridhero prototype using an external rom; Comm device not hooked up |
| drivedge | itech32.cpp | no | 8 | M6803 | unknown(multidrop) | Unsure what area of comm cpu drives the network; Verified to link over multidrop according to manual |
| ssf2tb | cps2.cpp | yes | 4 | µPD71051C | serial | See cps2comm.cpp for how communications work. Can only run with 4 players; no more, no less. |
| wheelfir | wheelfir.cpp | no | 2 | custom | unknown | Really unsure how this actually works |
| skimaxx | skimaxx.cpp | no | 2 | custom | unknown | Also unsure how this actually works |
| gtmr2 | kaneko16.cpp | no | 4 | Kaneko TBSOP02 (uPD78324) | unknown | Uses a 16 pin crossover cable (first 8 pins swapped between last 8) for two systems or an additional undocumented comm/repeater board for multidrop. Not sure if either the MCU's serial port or custom logic drives the networking. |
| roadedge xrally |
hng64.cpp | no | 4 | KL5C80A12 COM20020 |
ARCNet(multidrop) | Comm device not hooked up |
| glpracr2l | zn.cpp | no | 4 | uPD72103/5 | HDLC(loop) | Comm device not hooked up |
- General multidrop support likely may not be possible. A much better alternative involves setting up a .py script as a relay server to broadcast data to other emulated systems all at once.
- Add IEEE1394 ports as a device_single_card_slot_interface. Doing so will likely allow linking mame instances daisy chaining comm_remotehost and comm_localhost like with cps2comm.cpp. This can also allow connecting other IEEE1394 peripherals.
- Alternatively, IEEE1394 can be networked as multidrop through a hub. The only case this is required is the PS2's iLink port for the few games that link >2 systems that way. In that case, the same .py script approach can be used there.