OpenSNES v0.35.0

Open-source SNES SDK · C11 · MIT

Write Super Nintendo
games in C.

A modern, open-source toolchain that turns C into a real cartridge — sprites, Mode 7, HDMA, sound and coprocessors, built and tested on Linux, macOS and Windows.

83
example ROMs
21
API tutorials
7
asset tools
3
host OSes
A side-scrolling platformer running on the SNES, built with OpenSNES examples/games/likemario · real ROM

The pipeline

From your art to a real cartridge.

The SNES does not eat PNGs, Tiled maps or WAV files — it eats tiles, BGR555 palettes and BRR samples. OpenSNES ships the converters that bridge the two, and the build system chains them for you.

source art

What you make

.png · .tmj · .wav · .it
the toolbox

Seven converters

gfx4snes tmx2snes img2snes font2snes wav2brr smconv palplan …chained
the output

A game

game.sfc · runs on hardware

It runs real games

Every frame here is a ROM in the repo.

Not mock-ups — captures of example cartridges executing in a cycle-accurate emulator. Each one is a few hundred lines of C you can read and build today.

Why it feels solid

A real toolchain, not a wrapper.

Compile

C11 all the way to the ROM

A genuine C compiler (cc65816 = cproc + QBE) targets the 65816, with fixed-width types, a documented ABI, and a linker that lays out banks for you. No assembly required — though it is there when you want it.

Verify

Cycle-accurate tests

Every example is exercised by a cycle-accurate emulator on each change — liveness, visual regression against baselines, and functional probes. SA-1, Super FX and DSP-1 all run natively.

Learn

Docs that build confidence

83 worked examples on a guided learning path, 21 API tutorials, a game-craft track for the design decisions, and a documented tool for every asset — so the hard parts are written down, not discovered at runtime.

60-second start

Hello, Super Nintendo.

A complete ROM is a short main.c and a five-line Makefile. The build finds your assets, links only the modules you name, and writes a .sfc.

  1. Write your game in CInit the console, load your art, run a frame loop at 60 Hz.
  2. Name what you linkList the modules you use — the resolver pulls their dependencies.
  3. makeAssets convert, C compiles, banks link. Out comes a cartridge.

Free · open-source · MIT

Build a cartridge this weekend.

Clone the repo, run make, and open an example in a browser emulator or on real hardware. The whole toolchain is yours.