Skip to content

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.

Atari Games

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

Gaelco

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) ""

Jaleco

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

Konami

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

Midway

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 ""

Namco

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 ""

Sega

Taito

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

Other/Misc

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

Other general notes/todo

  • 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.