# bsnes: coprocessor accuracy, HD mode 7, and the version gap between v115 and current nightly builds

> bsnes is a multi-platform C++ Super Nintendo emulator that defaults to low-level emulation of cartridge coprocessors and ships an HD mode 7 renderer. The last tagged stable release is v115 from 2020-03-20; current binaries are nightly builds with no versioned releases in between.

**bsnes-emu/bsnes** — bsnes is a Super Nintendo (SNES) emulator focused on performance, features, and ease of use.

- Repository: https://github.com/bsnes-emu/bsnes
- Stars: 2,015 · Forks: 205
- Language: C++
- License: NOASSERTION
- Published: 2026-10-09 · Updated: 2026-10-09 · Language: en
- Canonical page: https://hysenlabs.com/projects/bsnes-emu-bsnes

## A multi-platform SNES emulator with roots in Near's original work

bsnes is a Super Nintendo (Super Famicom) emulator written in C++, originally developed by Near. It runs on Windows, macOS, Linux and FreeBSD. The project describes its goals as performance, features and ease of use, in that order.

Emulating the SNES means handling not just the main CPU but also the coprocessor chips that came bundled inside cartridges, the peripheral devices that attached to the console, and the graphical modes the original hardware could produce. bsnes addresses all three: its unique features list covers coprocessors, the Super Game Boy adapter, the Satellaview satellite modem attachment and a high-resolution mode 7 renderer. Its standard features list includes save states, shader support, rewind, movie recording and input remapping.

higan is a related project. bsnes supports the higan game folder format as an option, though standard ROM files are also fully supported. Users with an existing library in either format can run either path without converting files.

## Coprocessor emulation defaults to low-level and can fall back to high-level for most chips

The SNES cartridge slot accepted games that carried their own processor chips. DSP-n, ST-01n and Cx4 are three coprocessor families listed in the README. bsnes emulates all of them at low level by default, meaning the emulator runs each chip's internal logic cycle by cycle.

High-level emulation of most coprocessors is available as an optional setting. HLE replaces a chip's cycle-accurate behavior with a software approximation that matches the chip's observed outputs without running its internal logic. The README frames HLE as an option rather than the default, which means the factory configuration favors accuracy.

For games that depend on exact coprocessor timing, including prototype cartridges, the low-level path is the one that reproduces behavior down to the cycle. The README lists customizable per-byte game mappings to support any cartridge, including prototype games, as a unique feature. That entry exists for games where the memory map is unusual or undocumented and where a standard mapping would fail.

## HD mode 7 outputs the SNES perspective layer above its original resolution

Mode 7 is the SNES affine transformation layer, used for rotating maps, racing track surfaces and scaling boss backgrounds. bsnes includes an HD mode 7 renderer contributed by DerKoun that outputs the mode 7 layer at a higher internal resolution than the original hardware, with optional supersampling on top.

The multi-threaded PPU (picture processing unit) renderer is a separate entry in the unique features list. The SNES PPU generates backgrounds and sprites; running it across CPU cores reduces per-frame generation time. Both items appear under unique features rather than standard features, which puts them in a separate category from the software filters and shaders.

Several software filters are listed under standard features: HQ2x by MaxSt and snes_ntsc by blargg. OpenGL multi-pass pixel shaders are also supported. On Windows, Direct3D exclusive mode video and WASAPI exclusive mode audio are available as separate options, allowing the emulator to take sole ownership of display and audio hardware.

## Super Game Boy emulation uses the SameBoy core, and Satellaview covers flash wear-leveling

The Super Game Boy adapter let the SNES play Game Boy games through the cartridge slot. bsnes handles it through the SameBoy core by Lior Halphon. SameBoy is a standalone open source Game Boy emulator, so bsnes's Super Game Boy accuracy depends directly on SameBoy's own accuracy. A bug in SameBoy that affects Super Game Boy behavior will appear in bsnes too, and a fix in SameBoy requires bsnes to update its copy of the core before the improvement reaches bsnes users.

Satellaview was a satellite modem addon sold with the Super Famicom in Japan. Nintendo used it to broadcast downloadable games to subscribers. bsnes describes its Satellaview emulation as extensive, and specifically names BS Memory flash write and wear-leveling emulation. Wear-leveling distributes write operations evenly across flash storage cells to extend their usable life. Emulating it at that level of detail is necessary for software that depended on the Satellaview's storage behavior rather than just its program output.

These two peripheral paths serve distinct needs. Super Game Boy support covers the large library of Game Boy cartridges; Satellaview coverage applies to region-specific broadcast software from Japan.

## Download a nightly binary for your platform; the repository documents no build steps

The repository root holds source directories for several libraries: hiro/, libco/, nall/ and ruby/ are all present alongside bsnes/. An mkdocs.yml file at the root and a docs/ directory point to a documentation site. The README contains no build command, no list of required libraries, no compiler version and no step-by-step instructions for compiling from source.

For installing without compiling, nightly binary packages are available for all four platforms. The Windows, macOS and Linux packages are named bsnes-windows.zip, bsnes-macos.zip and bsnes-ubuntu.zip and all sit at the same GitHub releases path. FreeBSD requires a separate download through Cirrus CI.

The tagged release history shows v115, dated 2020-03-20, as the last versioned stable release. Nightly builds continue under the label "bsnes nightly 2026-05-23". No tagged version exists between v115 and that nightly label. Anyone who needs to pin a version newer than 2020 must identify a specific commit hash rather than a named release. The last push to the repository was on 2026-09-27, so the source has continued to receive changes after the 2026-05-23 nightly label.

## Speed settings run the emulated CPU at 50 to 200 percent while keeping audio smooth

Five execution speed settings are available: 50%, 75%, 100%, 150% and 200%. Each one changes how fast the emulated CPU runs, yet smooth audio output is retained across all five values according to the README. Keeping audio smooth while the CPU rate changes requires the emulator to decouple its sound output from execution speed, because raw samples generated at 50% would pitch-shift without correction. 

Run-ahead support removes input latency introduced by the game engine itself. The technique works by simulating some number of frames ahead, then displaying an earlier frame while discarding intermediate states. Save states make the rollback possible; bsnes also provides save state undo and redo as a separate standard feature for recovering from accidental overwrites.

Just-in-time input polling reads controller state as close to the frame boundary as possible. An advanced mapping system allows multiple physical bindings per emulated input. CPU, SA1 and SuperFX overclocking are listed separately, for games that benefit from running those chips above their original clock speeds. Turbo support for controller inputs handles rapid-fire at the emulator level rather than requiring hardware.

## The licence is a custom file GitHub cannot classify, with GPLv3.txt also present at the root

Two files at the repository root relate to the licence: LICENSE.txt and GPLv3.txt. GitHub shows the licence as "Other" because its classifier cannot identify the type from the LICENSE.txt contents. The README does not explain whether bsnes is dual-licensed, whether the GPLv3 text applies to a subset of the code, or how the two files relate to each other.

CREDITS.md is also present at the root. Several contributors are named in the README: DerKoun for the HD mode 7 renderer, Lior Halphon for SameBoy, MaxSt for HQ2x, blargg for snes_ntsc and mightymo for the cheat code database. Each of those components may carry terms of its own, and CREDITS.md is the file to consult for their full attributions.

Anyone planning to redistribute bsnes or bundle it in another project should read LICENSE.txt and GPLv3.txt together rather than relying on the GitHub "Other" tag. The README's feature list is not a substitute for that reading.

## Active commits continue past v115, but rollback and movie file formats are undocumented

The last push was on 2026-09-27 and the repository is not archived. Commits have continued well past both the v115 stable release from 2020-03-20 and the nightly label from 2026-05-23. The README does not describe a rollback path if a newer nightly introduces a regression. The only options visible from the documentation are to install a different nightly package or to check out a specific commit hash.

Movie recording and playback are in the standard features list, as is rewind support. The README names no file format for recorded movies. It sets no documented limit on the rewind state buffer size either, so both features need testing against your specific setup before you rely on them for archiving or extended sessions.

The optional emulation of flaws in older emulators exists for compatibility with unofficial software written to rely on incorrect emulator behavior. It is a narrow feature aimed at ROM hack authors and at running software that depended on bugs in earlier emulators. Users who are emulating commercial games can ignore it.

## Conclusion

bsnes suits anyone who needs accurate SNES coprocessor behavior, HD mode 7 output, or Super Game Boy emulation anchored to the SameBoy core. It is not the right choice if you require a pinned stable release more recent than v115 from 2020-03-20 or documented build steps from the source tree. Before adopting bsnes where the licence terms matter, read LICENSE.txt and GPLv3.txt at the repository root together, since GitHub cannot classify the licence and the README does not explain how those two files relate. The nightly package for your platform is the documented install path.

## FAQ

### Does bsnes support Super Game Boy cartridges?

bsnes includes Super Game Boy emulation using the SameBoy core by Lior Halphon. The Super Game Boy adapter lets the SNES play Game Boy games, and bsnes handles the hardware interaction through SameBoy's implementation.

### Where can I download bsnes?

The README links nightly binary packages for Windows (bsnes-windows.zip), macOS (bsnes-macos.zip) and Linux (bsnes-ubuntu.zip) at the project's GitHub releases path. A FreeBSD package is available through Cirrus CI. No build instructions appear in the README for compiling from source.

### What was the last stable release of bsnes?

The last tagged release in the repository is v115, dated 2020-03-20. More recent binaries are distributed as nightly builds labeled "bsnes nightly 2026-05-23", with no versioned releases between v115 and the current nightlies.

### Does bsnes emulate SNES coprocessors at low level?

By default, bsnes uses low-level emulation for all SNES coprocessors, including the DSP-n, ST-01n and Cx4 families. High-level emulation is available as an optional setting for most coprocessors.

### What platforms does bsnes run on?

Nightly binary downloads are provided for Windows, macOS, Linux and FreeBSD. The Windows, macOS and Linux packages share the same GitHub releases location, while the FreeBSD package is served through Cirrus CI.

## Sources

- [bsnes-emu/bsnes on GitHub](https://github.com/bsnes-emu/bsnes)
- [Issues](https://github.com/bsnes-emu/bsnes/issues)
- [README](https://github.com/bsnes-emu/bsnes/blob/master/README.md)
- [Releases](https://github.com/bsnes-emu/bsnes/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/bsnes-emu-bsnes
