A modern, open-source SDK for Super Nintendo development. Write game logic in C, produce .sfc ROMs that run on emulators or real hardware.
Getting Started with OpenSNES – Install the SDK and build your first ROM
Learn SNES Development – 83 examples from "Hello World" to complete games
Browse Examples by Category – Browse examples by topic
SNES Graphics Programming Guide – Backgrounds, sprites, modes, VRAM
SNES Sound Programming Guide – SPC700, SNESMOD, music and SFX
Troubleshooting OpenSNES – Common problems and solutions
Game-Craft Guides – Design decisions: budgeting, choosing a mode, composing layers
The OpenSNES toolbox – The asset pipeline: turn images, maps, fonts and audio into SNES data
Graphics & Backgrounds Tutorial – Graphics & Backgrounds
Sprites & Animation Tutorial – Sprites & Animation
Animation Tutorial – Animation Techniques
Scrolling & Parallax Tutorial – Scrolling & Parallax
Controller Input Tutorial – Controller Input
Collision Detection Tutorial – Collision Detection
Scrolling maps – Scrolling Maps & the Tiled Pipeline
Audio & Music Tutorial – Audio & Music
Game States Tutorial – Game States & Transitions
9-slice panels – 9-Slice Panels (dialog boxes, HUDs)
DMA Tutorial – DMA (direct memory access)
HDMA Tutorial – HDMA (per-scanline effects)
Mode 7 Tutorial – Mode 7 Rotation and Scaling
Colour Math Tutorial – Colour Math (transparency, blending)
Mosaic Tutorial – Mosaic pixelation effect
Window Masking Tutorial – Window Masking
Fixed-Point Math Tutorial – Fixed-Point Math
SRAM Save Tutorial – SRAM Battery-Backed Saves
SA-1 Enhancement Chip Tutorial – SA-1 Coprocessor (10.74 MHz second CPU)
SuperFX (GSU) Tutorial – SuperFX (GSU) RISC Coprocessor
Interactive Debugging with luna – Debugging with luna
SNES Hardware Overview – CPU, PPU, APU architecture
SNES Memory Map – Address space layout
SNES Hardware Register Reference – PPU, DMA, I/O registers
SNES OAM (Object Attribute Memory) – Sprite attribute memory
OpenSNES Examples – All examples grouped by category (sources + READMEs)
Example Source Code – Example Source Code (annotated by topic)
OpenSNES Code Style Guide – Code style conventions
Contributing to OpenSNES – How to contribute
Third-Party Components – Third-party components and licenses
OpenSNES is built upon PVSnesLib by Alekmaul and contributors. We owe them an enormous debt of gratitude for the hardware library, SNESMOD audio engine, asset tools, and decades of SNES development knowledge.
For the full list of dependencies, licenses, and contributors, see ATTRIBUTION.md.
OpenSNES is released under the MIT License.