Skip to content

NES, SNES and Game Boy v0.3

Choose a tag to compare

@vivitheblackmage vivitheblackmage released this 08 Nov 15:01
· 4 commits to main since this release

NES, SNES and Game Boy netplay for MiSTer v0.3

This release adds Game Boy link-cable netplay. Two MiSTers play Game Boy link-cable games together over the internet or a LAN, with the same lockstep as NES and SNES. NES and SNES netplay work as before.

Download: mister-netplay-v0.3.zip (check it against md5sums.txt). It contains:

  • SD card/: the NES, SNES and Game Boy 2P cores, the netplay Main binary, scripts and NetPong
  • Server/: the lobby server for Windows, Linux and Raspberry Pi

New: Game Boy 2P

  • GAMEBOY2P_netplay.rbf: pomstazlesa's Game Boy 2P core (two Game Boys joined by a link cable inside the FPGA) with lockstep netplay. Each MiSTer runs both Game Boys. The host plays Game Boy 1, the other player Game Boy 2. Only the controller input goes over the network, so the link cable's timing is the same as on one MiSTer.
  • Link-cable games such as Tetris, Tennis and Dr. Mario.
    • One game for both: both players load the same file (same extension too: .gb and .gbc start the Game Boy in different modes).
    • Two different games (for example two Pokémon versions): load game 1 with Rom for second GB Off, then switch it On and load game 2.
  • Show → My screen shows only your own Game Boy, centred at the right aspect ratio. Audio select → Own GB (the default) plays your own Game Boy's sound.
  • Both Game Boys run on one shared clock, and the SDRAM serves both from one read when they read the same word, so the core runs at full speed with clean sound.
  • The Game Boys' RAM and the cartridge clock (MBC3, HuC3, TAMA) are cleared at the start of a session, so a MiSTer that ran other games before starts like a freshly loaded one.
  • Same lobby as NES and SNES: OSD → Netplay → Host in GAMEBOY2P_netplay. The other player joins from _Netplay/Rooms; a room with two games holds both files. The server's Game Boy games go in roms/GB.
  • Battery saves work as on NES: both players need the same .sav file, or none.
  • Not supported: MegaDuck games (.bin). During netplay, OSD reset, Reload Backup RAM and Sync Video are off. Needs the SDRAM board, as the original core.

Tested:

  • On hardware: a Tetris link match between two MiSTers through the lobby server; Tennis with clean sound at full speed.
  • In simulation: two MiSTers stay in sync over 1,800 frames of a Tetris link match, and also when one of them ran another game first.

Other changes

  • The lobby folder is now created on a MiSTer that has no games folder for the core yet.

Good to know

  • Put your Game Boy games in games/GAMEBOY2P (.gb, .gbc).
  • To switch between the netplay cores (NES, SNES, Game Boy 2P), reboot from the MiSTer's menu first.
  • Both players need the same release. Otherwise netplay shows Different core build.
  • If the players are in different netplay cores, netplay shows The other player runs another console.

Upgrading from v0.2

  1. Copy the new SD card folder onto both MiSTers.
  2. Run Scripts → netplay_on again.
  3. Replace the server's binary.

netplay.ini and netplay-server.ini stay as they are.

Source: this repository at tag v0.3. ./setup.sh applies the patches to the upstream NES_MiSTer, SNES_MiSTer, Gameboy2PUW_MiSTer and Main_MiSTer.