Skip to content

Instantly share code, notes, and snippets.

@nderscore
Last active November 27, 2022 14:50
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save nderscore/a79486fcd17fca17108b17fc94c6049e to your computer and use it in GitHub Desktop.
Save nderscore/a79486fcd17fca17108b17fc94c6049e to your computer and use it in GitHub Desktop.
Guide for configuring Retroarch with Snes9x Core for Tetris Attack netplay.

Tetris Attack

Tetris Attack Netplay Guide

Guide for configuring Retroarch with Snes9x Core for Tetris Attack netplay.

Last updated: 2017.08.13 by _nderscore

Looking for an opponent? Join the Discord!


  1. Why Retroarch?
  2. Files
  3. Setup and Configuration
  4. Hosting Games
  5. Joining Games
  6. FAQ
  7. Helpful Links

Why Retroarch?

ZSNES 1.36 is Windows only, old enough to drive a car, and above the age of consent in most countries. ZSNES Netplay also suffers from input lag and severe audio glitches during periods of high latency. While it works, it's not an optimal experience.

RetroArch implements rollback netplay (similar to the netplay code found in GGPO). With this method, controller inputs are sent with a frame number attached to them. When a new input is recieved for a frame that happened in the past, the emulator rolls back to a savestate from that frame, then re-emulates the game up until the current frame. This results in input-lag-free netplay without desyncs.

Also, Retroarch has a lobby system, so you don't need to send IP's and ports to opponents in order for them to connect.


Files

You will need these files to get started:


Setup and Configuration

  1. Extract RetroArch wherever you want to put it.

  2. Extract the Tetris Attack rom somewhere.

    (I like putting my roms in a folder called roms in my retroarch folder)

  3. Open up RetroArch

    (See here for keyboard controls for navigating the RetroArch menus - tl;dr: use arrows + enter + backspace, or just use a game controller)

  4. In the menu:

    👾 Quick Menu Tab -> Load Core -> Download core...
    
  5. Download the SNES / Super Famicom (Snes9x) core. (Note: Do not get the the 2005 or 2010 variants)

  6. In the menu:

    ⚙️ Settings Tab -> Input -> Input User 1 Binds
    

    Configure your controls here.

    Note: If you're using a USB or Wireless Controller, you might not need to configure the controls. Retroarch will automatically try to configure your controller and has a lot of presets already included for various controllers.

  7. In the menu:

    ⚙️ Settings Tab -> User -> Username
    

    Set your username here. This will be the name you use during netplay.

  8. In the menu:

    ⚙️ Settings Tab -> User Interface -> Show Advanced Settings
    

    Set this option to ON.

  9. In the menu:

     ⚙️ Settings Tab -> Network
    

    Set the following settings:

    Netplay TCP Port = Set this to a port that is forwarded on your computer (or leave as default). Not sure if your port is forwarded? Check the FAQ.

    Server Password = Set this to tetrisattack. This will be the password needed to join a game you host. It's an easy enough password for everyone to remember

    Server Spectate-Only Password = Set this to tetrisattack_spectate. This will be the password needed to join a game as a spectator.

  10. In the menu:

    ⚙️ Settings Tab -> Directory -> File Browser
    

    Set this to point to the folder where your roms are.

  11. In the menu:

    ⚙️ Settings Tab -> User Interface -> Don't run in background
    

    Set this option to OFF. This will prevent emulation from being paused when the Retroarch window is not in focus.

  12. In the menu:

    👾 Quick Menu Tab -> Load Content -> Start directory
    

    Open the Tetris Attack rom file.

    Test out the game and check to see if it's working! If so, you should be good to go.


Hosting Games

  1. In the menu:

    🎧 Netplay Rooms Tab -> Start netplay host
    
  2. In the menu:

    👾 Quick Menu Tab -> Load Content -> Start directory
    

    Open the Tetris Attack rom.

  3. Tell your opponent to join your game. Maybe practice in single player until they connect ?

Notes:

  • You can start or stop the netplay host at any point during your game. It doesn't really matter. Your opponent can join the game at any point as well.

Joining Games

  1. In the menu:

    🎧 Netplay Rooms Tab -> Refresh Room List
    
  2. Find your opponent's game in the list of available rooms.

  3. Join with password tetrisattack.


FAQ

  • Q: How do I forward my ports?

    The easiest way is to use a tool like UPnP Wizard to configure port forwarding.

    You can use any port you want. Just make sure to forward it as a TCP port. The External Port, Internal Port, and the Retroarch TCP Port setting should all match.

    Alternatively, you can configure port forwarding in your router. For more info, see this website.

  • Q: I forwarded my ports, but my opponent still can't join me!

    Depending on your internet situation, you might be unable to properly forward ports.

    As an alternative, you can try enabling NAT Traversal:

    In the menu:

    ⚙️ Settings Tab -> Network -> Netplay NAT Traversal
    

    Toggle this to ON.

  • Q: My opponent still can't join! Help!

    There's one more thing you can try...

    In the menu:

    ⚙️ Settings Tab -> Network -> Use Relay Server
    

    Toggle this to ON.

    Note that this option may introduce additional latency.

    Using the relay server is required if one of the players is on a mobile internet connection (4G/LTE/etc) even if the hosting player is properly port-forwarded.

  • Q: I'm having latency issues with my opponent.

    Depending on your network stability and location, it's possible that you might still run into latency issues.

    Here are a few troubleshooting ideas:

    • Increase the rollback frames.

      By default, Retroarch uses 30 frames (half a second) of rollback that it can rewind to.

      You can try increasing this number to account for more latency.

      In the menu:

      ⚙️ Settings Tab -> Network -> Netplay Check Frames
      
    • Add some input delay.

      By default, Retroarch uses 0 frames of input lag in netplay. It's not the best experience, but adding input delay can help.

      In the menu:

      ⚙️ Settings Tab -> Network -> Input Latency Frames
      
  • Q: I get an error about different implementations when joining a game / when my opponent joins.

    Make sure both you and your opponent have the latest version of the Snes9x core.

    To update your Snes9x core...

    👾 Quick Menu Tab -> Online Updater -> Core Updater -> SNES / Super Famicom (Snes9x)
    

    Make sure both you and your opponent have the latest version of RetroArch.

    The latest version is currently 1.6.4

  • Q: I get an error about CRC32 when joining a game / when my opponent joins.

    This means that your ROM files are not exact copies. In order to play netplay, you must both have identical rom files.

  • Q: How do I chat in-game?

    Retroarch currently has no netplay chat. There's an open issue on the RetroArch git repository, but it hasn't been updated since 2015. 😭 Maybe some day...

    For now, the best way to chat in-game is using Discord Direct Messages.


Helpful Links:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment