OpenSNES
Modern Open-Source SNES Development SDK
Loading...
Searching...
No Matches
OpenSNES Documentation

A modern, open-source SDK for Super Nintendo development. Write game logic in C, produce .sfc ROMs that run on emulators or real hardware.

Start Here

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

Guides

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

Game-Craft Guides – Design decisions: budgeting, choosing a mode, composing layers

Tools

The OpenSNES toolbox – The asset pipeline: turn images, maps, fonts and audio into SNES data

Tutorials

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

Hardware Reference

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

Examples (Annotated Source Code)

OpenSNES Examples – All examples grouped by category (sources + READMEs)

Example Source Code – Example Source Code (annotated by topic)

API Reference

Framework opt-ins

Contributing

OpenSNES Code Style Guide – Code style conventions

Contributing to OpenSNES – How to contribute

Third-Party Components – Third-party components and licenses

Acknowledgments

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.

Links

License

OpenSNES is released under the MIT License.