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 – 54 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
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
Audio & Music Tutorial – Audio & Music
Game States Tutorial – Game States & Transitions
SA-1 Enhancement Chip Tutorial – SA-1 Coprocessor (10.74 MHz second CPU)
SuperFX (GSU) Tutorial – SuperFX (GSU) RISC Coprocessor
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
See the Example Source Code page for all 54 examples organized by topic, with links to fully documented source files.
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.