Files
Andrea de26b0e2c4 Add linked-cabinet networking through RetroArch Netplay
Simulate the Model 3 network board in the Libretro core and carry its
frames over RetroArch Netplay's packet interface
(RETRO_ENVIRONMENT_SET_NETPACKET_INTERFACE), so linked cabinets can play
together without the standalone socket board.

Supported families: Daytona USA 2, Harley-Davidson, Scud Race, Sega
Rally 2, Ski Champ, Spikeout and Spikeout Final Edition (Type 1); Le
Mans 24, Virtual On 2 and Dirt Devils (Type 2). Two to sixteen cabinets,
with a handshake, a common roster, role checks and a per-frame exchange
with a timeout. New options: Network Board (connected by default) and
Linked Cabinets (2-16).

Squashed from these commits, whose intermediate steps (Daytona 2 only,
then Scud Race, then all Type 1, then Type 2) have no value on their own:
  e7ea7d48b0 Add experimental Daytona 2 cabinet networking
  437256ddbb Add experimental Scud Race cabinet networking
  c4f012958a Recognize linked-cabinet network hardware
  d43eda03ec Enable Sega Rally 2 network transport
  55b59bbcb3 Support multi-cabinet linked play
  bc3788aea7 Enable netpacket transport for all Type 1 games
  f7029c25f6 Add Type 2 linked-cabinet transport
  03ee7631c0 Connect the network board by default
  ad99627b37 Document all supported linked-cabinet families
  74da0c469b Document linked-cabinet role requirements (option text)

Adapted on dev:
- The game-aware NVRAM settings options are not on dev, so each
  cabinet's link role (Master/Slave/Satellite) and car or machine number
  are set in the game's Service Menu, as on real cabinets; the option
  descriptions say so. Option visibility per game is left out.
- The NetBoard config defaults were only defined for Windows; they are
  now defined on every platform, and NetworkCabinets uses unsigned
  bounds so it compiles.
- Network, NetworkCabinets and SimulateNet are applied after the
  Supermodel.ini merge, like the other core options.
- jni/Android.mk gets -DNET_BOARD and the new source file.
- The README part of 74da0c4 waits for the dev README.

Tested: Linux, two RetroArch 1.22.2 instances over localhost Netplay:
Daytona 2 (Type 1) and Le Mans 24 (Type 2) link as Master and Slave and
exchange frames; Daytona 2 races show the other cabinet's car at full
speed. Single player with the board connected and no Netplay: Daytona 2,
Scud Race, Sega Rally 2 and Le Mans 24 boot to attract mode as before,
same speed and log. Windows, macOS, RPi5 and Android arm64 (ndk-build)
builds pass.
2026-11-10 03:26:50 +02:00
..