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 – 88 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

Frequently asked questions – Frequently asked questions

Migrating from PVSnesLib – Migrating a PVSnesLib project

Game-Craft

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

Measured frame costs of the library – What the library functions cost per frame, measured in five real scenes

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

The Opt-In Framework Tutorial – The Opt-In Framework (game loop, asset bundles)

Text & Fonts Tutorial – Text & Fonts

Object Engine Tutorial – The Object Engine (entities, gravity, map collision)

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

Far RAM Tutorial — FAR objects beyond the 8 KB band – Far RAM (FAR objects beyond the 8 KB band)

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

Profiling: measuring where the frame goes – Profiling: measuring where the frame goes

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.