Skip to content

This project contains hardware schematics and software for building a device that is able to decode and encode the SNES controller protocol on the fly.

License

Notifications You must be signed in to change notification settings

RaphMad/SNESControl

Repository files navigation

image.png

Introduction

This project contains hardware schematics and software for building a device that is able to decode and encode the SNES controller protocol on the fly.

Features:

  • Play back replay files converted from external sources (most notably TAS runs generated via lsnes!)
  • Save stream of pressed buttons into a replay file (so you can use it to record your own playing sessions)
  • Play back replay files saved this way

Hardware is based on the Arduino Uno in combination with some simple electronic parts.

Arduino sources

The Arduino code is located in the folder arduino_code. The project is based on platformio and was developed for the Arduino Uno (although most other models should also work).

Client sources

The client code is located in the folder client_code. The project is based on C# / .NET / Microsoft Visual Studio.

Additional information

Usage

  • For most consistent results, shut down the console and prepare the client load (l) or save (s) mode
  • Then power on console, this ensures inputs are synced with the first button poll
    • Most desyncs occur directly after powering on because of the nature of initial idle frames, so if an early desync becomes apparent just try again
    • Later desyncs should only happen very rarely because of random bitflips caused by electromagnetic interference

Pitfalls

  • On modded consoles, make sure to use correct clock setting (set SNES to 60Hz for NTSC carts, 50Hz for PAL ones)
    • Using native consoles for specific replays might be even better (even though I successfully replayed NTSC TASes on a PAL console modded to 60Hz)
  • Initial state matters (e.g. no saved game in Super Mario World)

Verified Games

License

MIT, see LICENSE file.

About

This project contains hardware schematics and software for building a device that is able to decode and encode the SNES controller protocol on the fly.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published