The 1996 arcade game, playable in this browser. Not made by SEGA, and you bring your own copy of the game.
Three things, stated plainly.
Accepting this records, in this browser, that you have read it. It is not a licence, it grants you no rights, and it does not make anything lawful that would not otherwise be. If you do not own the game, close this page.
You do this once on this device. The file never leaves your browser.
This site gives you the machine, not the game. The game itself still belongs to SEGA, so you bring your own copy. It is read here on your device, and it stays here.
Somebody shared a recorded match with you. It is kept until you have set the game up here, and then the Replays screen will offer it.
sfight.zip hereThe game’s code and art are not ours to distribute. What this project produced is an engine: the arcade board’s program was translated into C ahead of time, and the hardware around it was modelled. The engine is useless without the board’s ROM data, and that data is still SEGA’s.
So the site serves the engine and you supply the data. That is the only arrangement that is honest, and it is enforced in more than one place: the page reads your file with the browser’s own file API and never sends it anywhere, there is no endpoint on the server that accepts an upload, and the server refuses outright to serve any file that looks like ROM data, even one an operator dropped into the site directory by mistake.
You can check this yourself: open your browser’s network panel and watch while the file is processed. Nothing leaves. You can also turn off your network connection first. Once the page has loaded, the whole process works offline.
Every chip in the set is verified by size, CRC32 and MD5 against the
same table tools/build_rom.py uses, and the eight images
the engine loads are then checked against the MD5 that tool produces.
A member that fails is named, with what was expected and what was
found. A chip that is missing is named. A set that is simply the
wrong game is told so rather than being reported as a missing file.
The built images are kept in this browser’s own storage for this site only. Removing them is one button, above, and clearing site data in your browser settings does the same thing.
Two players, connected straight to each other. The other one may be in a browser like this or on a desktop cabinet, and either way you do not have to choose. The server here only introduces you: once you are connected, the game data goes peer to peer.
Anyone who types this code can join your match, so it is the only thing keeping the match private. A short word like TAILS7 is short enough for somebody to guess.
Give the same room code to the other player. Both of you are asked to confirm before anything starts, and you are shown any way the host's settings differ from the arcade defaults first. Quick match pairs you with anyone else waiting. Either way the host's settings are synced to both machines and both restart onto them, so FREE PLAY is always on for a networked match and your own settings and scores are left alone. They are never written to during a match, and reloading this page brings them back. Always use the relay keeps your IP address away from the other player, at the cost of some extra delay.
Quick match keeps playing. The search runs in the background: go back to the game, and a small line in the corner tells you it is still looking. When somebody is found you get ten seconds to accept or decline, wherever you are.
Starting the match itself reloads this page once: for a quick match after both players have accepted, and for a room code as soon as you join one. That is on purpose: the game engine has to be told which side it is on before its first frame, and only the server can decide that. The board then restarts, which takes about 45 seconds before the fight begins. Your game data stays on this device and is not fetched again.
You can play people in a browser or on the desktop build. The desktop cabinet speaks the same WebRTC data channel this page does when it is pointed at this server, so a cross-play match is peer to peer like any other, with nothing relayed through the middle. It is the same game, the same rollback and the same input delay on both sides.