PVSnesLib : A small, open and free development kit for the Nintendo SNES
C
1,114
1,691 commits
updated Oct 2, 2026
Programmer Valuable Snes Library — a small, open, and free development kit for coding Nintendo SNES games in C (or assembly).
PVSnesLib bundles a compiler/linker toolchain and a library (with full source) that gives you ready-made functions for backgrounds, sprites, controller input, and music/sound on real SNES hardware — plus example projects that show how it all fits together.
It was started for the SNES's 20th anniversary in 2012, building on Ulrich Hecht's earlier SNES SDK, and has since grown into a mostly assembler-optimized library that's just as usable directly from asm if you'd rather skip C entirely.
Get a project compiling before you dive into the details.
Download the release for your OS from the latest release page, and unzip it.
Set the environment variable the toolchain expects (adjust the path to where you unzipped it):
export PVSNESLIB_HOME="/path/to/pvsneslib"
Write the classic Hello World, following this tutorial.
For the full walkthrough — Makefile setup, folder layout, and flashing to real hardware — see the Wiki.
PVSnesLib assumes you're already comfortable with C. Trying to learn C and SNES programming at the same time will slow you down a lot — get comfortable with C first. A solid grasp of the SNES hardware itself also goes a long way. Good starting points:
Prebuilt releases are available for:
Download the archive for your platform, unzip it, and follow the setup steps on the Wiki.
Generated API documentation is also available here.
Prebuilt releases not working for your setup? You can build PVSnesLib from source.
PVSnesLib supports Windows, Linux, and macOS.
A Visual Studio Code template is available in vscode-template to get syntax highlighting, build tasks, and debugging set up quickly.
Bug reports, pull requests, and discussion are all welcome on the GitHub project or on Discord.
PVSnesLib and its affiliated tools are distributed under the MIT license — see pvsneslib_license.
A few of the games built on PVSnesLib (non-exhaustive):
![]() | ![]() | ![]() |
| Yo-Yo Shuriken — Dr. Ludos | Eyra — Second Dimension | Sydney Hunter — CollectorVision |
PVSnesLib is free to use. If it's been useful to you and help you create a game, consider supporting development.
PVSnesLib exists thanks to a long list of contributors and tool authors — from toolchain maintainers and optimizers to the artists behind the intro logo and everyone active on Discord.
See the project's commit history and Discord community for the full cast of people who've helped it grow.
Thanks!
32 followers · starred May 2022
507 followers · starred Jun 2020
96 followers · starred Aug 2022
76 followers · starred Dec 2020
PVSnesLib : A small, open and free development kit for the Nintendo SNES
C
1,114
1,691 commits
updated Oct 2, 2026
Programmer Valuable Snes Library — a small, open, and free development kit for coding Nintendo SNES games in C (or assembly).
PVSnesLib bundles a compiler/linker toolchain and a library (with full source) that gives you ready-made functions for backgrounds, sprites, controller input, and music/sound on real SNES hardware — plus example projects that show how it all fits together.
It was started for the SNES's 20th anniversary in 2012, building on Ulrich Hecht's earlier SNES SDK, and has since grown into a mostly assembler-optimized library that's just as usable directly from asm if you'd rather skip C entirely.
Get a project compiling before you dive into the details.
Download the release for your OS from the latest release page, and unzip it.
Set the environment variable the toolchain expects (adjust the path to where you unzipped it):
export PVSNESLIB_HOME="/path/to/pvsneslib"
Write the classic Hello World, following this tutorial.
For the full walkthrough — Makefile setup, folder layout, and flashing to real hardware — see the Wiki.
PVSnesLib assumes you're already comfortable with C. Trying to learn C and SNES programming at the same time will slow you down a lot — get comfortable with C first. A solid grasp of the SNES hardware itself also goes a long way. Good starting points:
Prebuilt releases are available for:
Download the archive for your platform, unzip it, and follow the setup steps on the Wiki.
Generated API documentation is also available here.
Prebuilt releases not working for your setup? You can build PVSnesLib from source.
PVSnesLib supports Windows, Linux, and macOS.
A Visual Studio Code template is available in vscode-template to get syntax highlighting, build tasks, and debugging set up quickly.
Bug reports, pull requests, and discussion are all welcome on the GitHub project or on Discord.
PVSnesLib and its affiliated tools are distributed under the MIT license — see pvsneslib_license.
A few of the games built on PVSnesLib (non-exhaustive):
![]() | ![]() | ![]() |
| Yo-Yo Shuriken — Dr. Ludos | Eyra — Second Dimension | Sydney Hunter — CollectorVision |
PVSnesLib is free to use. If it's been useful to you and help you create a game, consider supporting development.
PVSnesLib exists thanks to a long list of contributors and tool authors — from toolchain maintainers and optimizers to the artists behind the intro logo and everyone active on Discord.
See the project's commit history and Discord community for the full cast of people who've helped it grow.
Thanks!
32 followers · starred May 2022
507 followers · starred Jun 2020
96 followers · starred Aug 2022
76 followers · starred Dec 2020