• This repository has been archived on 15/Oct/2023
  • Stars
    star
    131
  • Rank 275,867 (Top 6 %)
  • Language
    C
  • License
    Other
  • Created about 11 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The SNES Wi-Fi adapter

SNESoIP: The SNES ethernet adapter

SNESoIP prototype

Introduction

The SNESoIP ethernet adapter for the Super Nintendo Entertainment System (also known as the Super NES, SNES or Super Nintendo) is an open-source, proof-of-concept, network-bridge for sharing local controller-inputs over the Internet.

The project it currently in its early stage, but fully functional and could be used to play multiplayer games over the Internet. Also some kind of server-controlled BBS system could be conceivable as a future project.

SNESoIP is an open-source project developed completely in my spare time. If you find it useful, please consider donating a small amount of money. Your donation will be used to support further development of the project.

The easiest way to donate is via PayPal, simply click here.

If you want to help in the development of this project, join us in #retrotardation on euIRC. We're also working on a similar Gameboy Classic / Super Gameboy project.

And feel free to contribute to our development wiki. Any help is welcome!

Features

  • Plug and play (IP is obtained via DHCP),
  • DNS lookup of the server hostname,
  • small firmware size (fits on an ATmega8),
  • easy to rebuild (even on a stripboard),
  • low component count,
  • adaption of other platforms (e.g. Sega Mega Drive) is possible,
  • possible cross-platform capability.

Todo

  • Some kind of interface to avoid hard-coded configuration,
  • detailed documentation.

How it works

Communication

The SNESoIP ethernet adapter is continuously sending 4-byte data packets via UDP to a (remote) server and receive 2-byte answer packets from the (remote) server.

A packet sent to the server has the following format:

+--------+--------+--------+--------+
| Controller Data |  CID   | P2CID  |
+--------+--------+--------+--------+

An answer packet has the following format:

+--------+--------+
| Controller Data |
+--------+--------+

The 2-byte Controller Data field holds the state of SNES controller which is basically a 16 bit shift register of which 12 bits are being used to represent button states (unused bits are pulled high).

CID is a value uniqely identifying the sending controller instance to the server and used to store its state on the server.

P2CID is the CID of your selected "Player Two". The server will answer your packet with the controller data of the controller identified by P2CID.

Update packets are being sent to the server continuously even if the local controller state does not change state.

Switch Mode

To ease sorting out which player is to play as player 1 and which is to play as player 2 and prevent tedious interchanging of plugs the SNESoIP implements a "Switched mode" which exchanges player 1 and 2 in software.

To activate "Switched mode" simply hold down the B and Y keys of your controller while booting the SNESoIP. If successful, the SNESoIP's LED will blink briefly.

To deactivate "Switch Mode", simply reboot the SNESoIP without any buttons held down.

Special thanks goes to

  • lytron for testing the initial prototype,
  • Farbauti for his code improvements,
  • the snesfreaks.com community for all the support and motivation and
  • last but not least, to my mates at our local hackerspace, shackspace. You guys rock!

License

The whole project (except the IP stack by tuxgraphics.org) has has been released under the terms of a BSD-like license. See the file LICENSE for details.

"Nintendo" is a registered trademark of Nintendo of America Inc.

More Repositories

1

eszFW

A cross-platform game engine written in C
C
49
star
2

WSODFix

A repair tool for Symbian Nokia phones affected by the infamous white screen of death.
C
42
star
3

rainbow-joe

A classic 2D platformer game in the spirit of the 1990s.
C
16
star
4

GizmoBoy

A portable fantasy console inspired by PICO-8 from Lexaloffle Games.
C
14
star
5

CMOS-Holga

A DIY digital camera using the Mitsubishi M64282FP image sensor.
C
11
star
6

SDL2_gfx

Library containing 20+ graphics primitives (line, box, circle, polygon, etc.) for SDL2.
C
9
star
7

Ashfall

Ashfall – TES3MP script repository
5
star
8

janitor-jamboree

A now obsolete project I used to work on to learn the art of game programming.
C
4
star
9

Rifts

A toolchain designed to build a DRM-free version of Rifts: Promise of Power for the Nokia N-Gage.
C++
4
star
10

TauCeti

A cross-platform 2D sci-fi themed tech demo using eszFW
C
4
star
11

CleanUp

A MS-DOS shooter game
C++
3
star
12

boondock-sam

A classic 2D platformer game in the spirit of the 1990s.
C
3
star
13

TrackMAG

An open hardware development board primarily intended for the development of accessible input devices.
C
2
star
14

BluePrint

A base project for the STM32F103C8T6 aka blue pill board
C
2
star
15

n-gage.games

N-Gage Games website
HTML
2
star
16

Xbox-Flight-Simulation-Rig

An inexpensive entry into the realm of serious flight simulation based on Xbox Series S and custom-built peripherals.
C
1
star
17

cprintf

Portable C Library for printing colored text on the terminal with the C formatting style.
C
1
star
18

SDLexample

A simple SDL 2.0.x sample project.
CMake
1
star
19

Tamago

A clone of the famous digital pet from 1996
C
1
star
20

GameComms

A GameComms.dll re-implementation for the Nokia N-Gage.
C++
1
star