Netplay core testing - GregorR/RetroArch GitHub Wiki

Find here some info on the cores I've tested. In every case I've used delay frames: My new Netplay does not break with any delay frames value unless the core's savestates are broken. I've tested for nondeterminism in only limited cases. For cores marked working that only have one input (e.g. handhelds), naturally the second player can't DO anything, but the ability to flip players makes this still a useful test. This should all be integrated into the RetroArch wiki when a RetroArch release with my new Netplay implementation has been made public.

Working

(Note: These cores are working with netplay, but some have caveats. ¹, ² and ³ are major caveats and these cores probably shouldn't be used, while ⁴ and ⁵ are minor caveats.)

  • 4do⁵ (3DO)
  • bnes² (NES)
  • bsnes_accuracy (SNES)
  • bsnes_balanced (SNES)
  • bsnes_mercury_accuracy (SNES)
  • bsnes_mercury_balanced (SNES)
  • bsnes_mercury_performance (SNES)
  • bsnes_performance (SNES)
  • fbalpha⁵ (Arcade)
  • fceumm⁴ (NES)
  • gambatte (Game Boy)
  • genesis_plus_gx⁴ (Genesis/Mega Drive, Master System)
  • gpsp (Game Boy Advance)
  • handy⁵ (Lynx)
  • mame¹ (Arcade)
  • mame2003¹ (Arcade)
  • mame2010¹ (Arcade)
  • mame2014¹ (Arcade)
  • mednafen_gba (Game Boy Advance): Core barely functions as a GBA emulator, but does keep in sync.
  • mednafen_ngp (Neo Geo Pocket (Color))
  • mednafen_pce_fast⁴ (TurboGrafx-16/PC Engine)
  • mednafen_psx (PlayStation)
  • mednafen_snes (SNES)
  • mednafen_vb⁴ (VirtualBoy)
  • meteor (Game Boy Advance)
  • mgba (Game Boy Advance)
  • mupen64plus (Nintendo 64)
  • nestopia³ (NES)
  • picodrive⁴ (Genesis/Mega Drive, Master System)
  • prosystem¹ (Atari 7800)
  • quicknes (NES)
  • snes9x (³ Fixed) (SNES)
  • snes9x2002⁴ (SNES)
  • snes9x2005⁴ (SNES)
  • snes9x2010⁴ (³ Fixed) (SNES)
  • stella¹ (Atari 2600)
  • tgbdual⁴ (Game Boy)
  • vbam⁴ (Game Boy Advance)
  • vba_next⁴ (Game Boy Advance)
  • vecx (Vectrex)
  • virtualjaguar¹ (Jaguar)
  • yabause⁵ (Saturn)

¹ Does not support savestates, and thus forces stateless_mode=true, which will only work well on very fast networks.

² Core is nondeterministic and incompatible with check_frames. Will possibly work with stateless_mode=true, but not otherwise.

³ Core is nondeterministic when frequently loading states, thus check_frames is mandatory and it would be wise for the host to use delay_frames=0.

⁴ Savestates are architecture-specific, so netplay will not work in some inter-architecture circumstances.

⁵ Core has savestate quirks which prevent states from being transferred across the network (and thus prevent explicitly loading states), but still allows netplay.

Nonworking

  • gw (Game&Watch): Core is very nondeterministic. One "frame" of behavior seems to really be one unknowable period of time worth of behavior.
  • ppsspp (PSP): Appears to have a memory leak in its savestate function. Connect netplay to watch your memory get chewed to shreds. Reported.

Nonworking because of non-retropad input:

  • 81 (Sinclair)
  • bluemsx (MSX)
  • desmume (Nintendo DS)
  • dosbox (PC)
  • fmsx (MSX)
  • fuse (ZX Spectrum)
  • hatari (Atari ST)
  • scummvm (Adventure games)

Untestable

These are cores that didn't work for me regardless of netplay.

  • bsnes_cplusplus98 (SNES)
  • mednafen_lynx (Lynx)

Untested

  • mednafen_pcfx (NEC PC-FX)
  • mednafen_supergrafx (PC Engine)
  • mednafen_wswan (Wonder Swan)
  • o2em (Odyssey 2)
  • pcsx1 (PlayStation)
  • pcsx_rearmed (PlayStation)
  • prboom (Doom)
  • tyrquake (Quake)