bsnes is a Super Nintendo (SNES) emulator focused on performance, features, and ease of use.

Overview

bsnes

bsnes logo

bsnes is a multi-platform Super Nintendo (Super Famicom) emulator, originally developed by Near, which focuses on performance, features, and ease of use.

Unique Features

  • True Super Game Boy emulation (using the SameBoy core by Lior Halphon)
  • HD mode 7 graphics with optional supersampling (by DerKoun)
  • Low-level emulation of all SNES coprocessors (DSP-n, ST-01n, Cx4)
  • Multi-threaded PPU graphics renderer
  • Speed mode settings which retain smooth audio output (50%, 75%, 100%, 150%, 200%)
  • Built-in games database with thousands of game entries
  • Built-in cheat code database for hundreds of popular games (by mightymo)
  • Built-in save state manager with screenshot previews and naming capabilities
  • Customizable per-byte game mappings to support any cartridges, including prototype games
  • 7-zip decompression support
  • Extensive Satellaview emulation, including BS Memory flash write and wear-leveling emulation
  • Optional higan game folder support (standard game ROM files are also fully supported!)
  • Advanced mapping system allowing multiple bindings to every emulated input

Standard Features

  • MSU1 support
  • BPS and IPS soft-patching support
  • Save states with undo and redo support (for reverting accidental saves and loads)
  • OpenGL multi-pass pixel shaders
  • Several built-in software filters, including HQ2x (by MaxSt) and snes_ntsc (by blargg)
  • Adaptive sync and dynamic rate control for perfect audio/video synchronization
  • Just-in-time input polling for minimal input latency
  • Run-ahead support for removing internal game engine input latency
  • Support for Direct3D exclusive mode video
  • Support for WASAPI exclusive mode audio
  • Periodic auto-saving of game saves
  • Auto-saving of states when unloading games, and auto-resuming of states when reloading games
  • Sprite limit disable support
  • Cubic audio interpolation support
  • Optional high-level emulation of most SNES coprocessors
  • Optional emulation of flaws in older emulators for compatibility with older unofficial software
  • CPU, SA1, and SuperFX overclocking support
  • Frame advance support
  • Screenshot support
  • Cheat code search support
  • Movie recording and playback support
  • Rewind support
  • HiDPI support
  • Multi-monitor support
  • Turbo support for controller inputs

Links

Nightly Builds

Preview

bsnes user interface bsnes running Bahamut Lagoon bsnes running Tengai Makyou Zero

Comments
  • Black Screen for Super Mario Kart (USA) DSP1B

    Black Screen for Super Mario Kart (USA) DSP1B

    Hi, both games show the known clean image icon and while Super Mario Kart (USA) with DSP1 works, the variant using DSP1B gives a black screen. Using bsnes built against latest commit.

    The game hashes shown by manifest viewer: sha256: 89ad4ba02a2518ca792cf96b61b36613f86baac92344c9c10d7fab5433bebc16 (DSP1) sha256: 76d293e5a772eb2f326e173eac62ca323873b1f329f9b935a97ba86974e1fcd5 (DSP1B)

    Update: In higan built against latest commit both variants work.

    opened by n3vu0r 14
  • Merge emulation fixes from higan

    Merge emulation fixes from higan

    A few minor emulation fixes have landed in higan since bsnes was forked. We should cherry-pick those fixes across to maintain parity. You can generate a list of candidates in the higan repository with git log v110.. higan/sfc (assuming byuu already synced any changes from the fork-point to v110), but as of this writing they include:

    • [X] https://github.com/higan-emu/higan/commit/caed1556ebb460cee27589bac7bdf9b0567a88e1
    • [x] https://github.com/higan-emu/higan/commit/56bdd466461201f80001cc9db4bded1360e81336
    • [x] https://github.com/higan-emu/higan/commit/e422ddc7293b10aae8a1935d4c7f96aeb8445430

    (I'm not sure about that middle one, but it's worth investigating)

    bug 
    opened by Screwtapello 12
  • Running in Linux?

    Running in Linux?

    Sorry if this is the wrong place to put this. I am running Linux Mint and trying to get bsnes Ubuntu running, but the 'executable' doesn't open, even when I tell Linux to allow it to execute as a program. It says it can't find the program to open it. I've been able to get the Windows version working alright with WINE, but it would be nice to be able to run the Linux version ya'll have spent good time getting together. Thanks!

    opened by cheekylions 11
  • target-bsnes: Do not set the window background colour.

    target-bsnes: Do not set the window background colour.

    The bsnes window is mostly covered by the viewport, which is supposed to be black. When the window is resized, the hiro Viewport widget repaints itself, according to whatever hiro backend is in use.

    However, on some platforms that's not enough. Specifically on X11, when the user resizes a window the window manager, the X server, and the application can all have different ideas about the exact window size. The X11 protocol gives each window a "default background colour", to be used by the X server to fill the blanks after the window manager has resized the window, but before the application has been able to repaint it. Because the bsnes window is mostly black, bsnes sets its window background colour to black, so the flickering of X-server-drawn and application-drawn content will be less obvious.

    Unfortunately, it gets more complex. GTK+2 was designed around the X11 model, and so it works basically the way bsnes expects. GTK+3 was designed around the more modern compositing model, which doesn't need that "default background colour" hack, and as a result when you set the window background colour on GTK+3. that background colour is used for everything. Even the menu-bar, which by default draws text in a very dark grey, so you can hardly read what it says.

    Perhaps there is a way to both avoid flicker on GTK+2 and not break GTK+3, but until we find it, I would rather occasional flicker on GTK+2 than permanently broken GTK+3.

    Fixes #108.

    opened by Screwtapello 9
  • Fix auto-joypad polling

    Fix auto-joypad polling

    This merges SNES auto-joypad polling fixes. The new code runs the auto-joypad polling at 128-cycle granularity instead of 256-cycle granularity, so that the first event can happen ~128 cycles after the start of Vblank. I've left comments for the unknown behaviors. I also removed the hacks since they are no longer needed.

    This fixes issue 3 of 3 for https://github.com/bsnes-emu/bsnes/issues/61, which means we can close issue 61 now.

    I have tested and confirmed these fixes work with every game affected.

    opened by ghost 9
  • Create website and update the about box URL

    Create website and update the about box URL

    It's very important to put together an official website for bsnes, with features, screenshots, and download links. It could also prove helpful to include documentation for bsnes on said page at some point.

    bsnes has a URL in the about box which points to the bsnes-emu GitHub repository. It should be updated to point at the new webpage once this is done.

    opened by bass-assembler 9
  • Prevent Satellaview games smaller than 1024kb from crashing, Hide Bottom Most Scanline When Playing SGB Games & LibRetro: Allow MSU-1 SGB games to work properly

    Prevent Satellaview games smaller than 1024kb from crashing, Hide Bottom Most Scanline When Playing SGB Games & LibRetro: Allow MSU-1 SGB games to work properly

    This change allows for a SGB boot rom with the same name as a SGB rom to be loaded from the same folder, which allows for MSU-1 enhanced SGB games to work without having to rely on the subsystem menu. If it fails to load a SGB boot rom from the same folder, it will first revert to the already implemented method of loading the boot rom from the system directory and etc.

    opened by ds22x 7
  • bsnes-emu/bsnes Cirrus CI builds failing

    bsnes-emu/bsnes Cirrus CI builds failing

    Hi

    When I saw that bsnes had been updated with the latest SameBoy my heart skipped a beat but it appears the buildbot is failing building Windows binaries.

    What causes the builds to fail and is there a kindhearted soul out there that have managed to build the latest bsnes with all commits up to https://github.com/bsnes-emu/bsnes/commit/f98cb01d0ab1d791d52039515f7300429f72bdd5

    Many thanks in advance!!

    opened by ghost 7
  • Support integrating newer revisions of Sameboy as they release.

    Support integrating newer revisions of Sameboy as they release.

    I don't know if you are already doing this or not but I was wondering if you plan on integrating future revisions of Sameboy into the emulator for it's Super Game Boy emulation. Sameboy is only on revision 0.12.3 so it would make sense to update BSNES's Sameboy core as new releases come out.

    enhancement 
    opened by Yersho 7
  • hiro gtk3: Black menu bar

    hiro gtk3: Black menu bar

    When building bsnes with hiro=gtk3, the menu-bar is drawn as normal (usually dark-grey) text on a black background, instead of the (usually light-grey) background the theme provides.

    I have no idea why it does this, but this is a blocker for making GTK3 the default hiro backend.

    bug help wanted 
    opened by Screwtapello 6
  • Fix build failure on UCRT mingw64

    Fix build failure on UCRT mingw64

    closes #198.

    Note that #define __MSVCRT_VERSION__ WINVER is the only thing that broke the build, but I've removed the others regardless because

    1. it doesn't feel right to define some of these and not others
    2. Looks like they're bound to cause issues in the future as well

    Note that the resulting binary does change after removing #define _WIN32_IE WINVER... don't ask me why, I genuinely have no idea why the internet explorer is of any relevancy here. Chose to ignore and move on 👍

    opened by Morilli 5
  • Windows OS BSNES Fullscreen mode request

    Windows OS BSNES Fullscreen mode request

    Could someone please change the bsnes to "focus" on this new fullscreen tab when it comes to windows?

    Basically, what I mean is that when an application is "focused" that means that it is in use. For example: Google Chrome. When it is "not focused" (you click on a place that isn't the application or you open up a minimized application), you can see all the black font on its tabs to switch to a slightly greyer color. When you click on a Google Chrome tab again, it becomes "focused". Could you make it so that when you use fullscreen mode again you "focus" on this new fullscreen tab?

    opened by ScraperMan2002 0
  • Cannot download binaries

    Cannot download binaries

    Hello.

    If I click on 'Download' from the GitHub repo page under Nightly Builds, then click the first item, then linux-x86_64-binaries, then under Artifacts click the Download arrow icon on the right next to bsnes-nightly, a 22-byte .zip file downloads.

    If instead of clicking the download arrow icon I click bsnes-nightly itself, it displays a file, bsnes-nightly.zip. If I click this, it takes me here which displays the following error:

    image

    Have I missed something or is this broken? Thanks.

    opened by drone1 1
  • Video jittering. Is vsync not enabled by default? I can't find vsync in settings.

    Video jittering. Is vsync not enabled by default? I can't find vsync in settings.

    LIke title says. Playing games, I see slight jitter, but I cannot find vsync option in any video or emulation settings of bsnesv v115. What am I missing here?

    opened by goodstuff626 5
  • Incorrect multiplication behavior on last cycle prior to next multiplication/division

    Incorrect multiplication behavior on last cycle prior to next multiplication/division

    Forwarded from the NESDev forums. Tested on my end using the latest master commit, 6fc6bf14a39d32dab69c4f9687a81df26d412758 .

    According to regiscaelus...

    • On write to WRMPYB ($4203), always clear RDMPY ($4216-$4217), but only start a new multiplication if the current multiplication is complete (> 8 cycles).
    • RDDIV ($4214-$4215) is updated with WRMPYA ($4202) & WRMPYB ($4203) if multiplication is complete or on the last cycle (>7 cycles).
    • On cycle 8, multiplication should not be started and RDDIV ($4214-$4215) should only get updated once with WRMPYA ($4202) & WRMPYB ($4203.
    • On write to WRDIVB ($4206),

    It looks like the cycle 16 case is not emulated correctly on division, and the cycle 8 case on multiplication is also not emulated correctly.

    Two test ROMs were provided: one by Myself086, and one by Undisbeliever.

    opened by KungFuFurby 5
  • psuedo hires mode always starts off

    psuedo hires mode always starts off

    I've noticed that sometimes when the SNES comes out of reset, psuedo hires mode is on and I have to manually turn it off by clearing bit 3 of SETINI or else I get black vertical lines on the screen.

    BSNES does not appear to accurately implement this behavior as I never get these black vertical lines when testing these ROMs that lack the STZ SETINI in it.

    opened by jeffythedragonslayer 1
Releases(nightly)
Owner
bsnes
bsnes
Part copy from the Google Code repository by Shiru, part fork of SNES Game Sound System by Shiru

Part copy from the Google Code repository by Shiru, part fork of SNES Game Sound System by Shiru

null 5 Sep 6, 2022
Nintendo DS(i) ROM editor for the Nintendo DS(i) consoles themselves

NitroEdit NDS(i) ROM editor for the Nintendo DS(i) consoles themselves NitroEdit is a NDS(i) ROM editor for the Nintendo DS(i) consoles themselves, wh

XorTroll 39 Aug 19, 2022
DOSBox Pure is a new fork of DOSBox built for RetroArch/Libretro aiming for simplicity and ease of use.

DOSBox Pure is a fork of DOSBox, an emulator for DOS games, built for RetroArch/Libretro aiming for simplicity and ease of use.

Bernhard Schelling 549 Nov 28, 2022
MVS64 -- A NeoGeo emulator for Nintendo 64

MVS64 -- A NeoGeo emulator for Nintendo 64 Status This emulator is in VERY EARLY STAGE. Only a handful of games boot or work. Performance on N64 is st

Giovanni Bajo 24 Nov 9, 2022
yuzu is an experimental open-source emulator for the Nintendo Switch from the creators of Citra.

yuzu (Nintendo Switch Emulator) yuzu is an experimental open-source emulator for the Nintendo Switch from the creators of Citra. It is written in C++

null 521 Dec 1, 2022
Experimental Nintendo 64 emulator in C11

shibumi | 渋味 "Shibui (adjective), shibumi (noun) or shibusa (noun) are Japanese words that refer to a particular aesthetic or beauty that is simple, s

Simone Coco 10 Oct 20, 2022
Code samples to show how to use Rendering features in Unreal :)

UE4GraphicsSample Code samples to show how to use Rendering features in Unreal :) Clear Texture Example (MAP_ClearTexture) Shows basics of how to use

Amit Kumar Mehar 68 Nov 11, 2022
A CTRPF plugin for the Nintendo 3DS Pokémon games in which, supports both the 6th and 7th generations.

Multi-Pokémon Framework Multi-Pokémon Framework is a Pokémon plugin developed by Jared0714 that is based off of Nanquitas' CTRPluginFramework. This pl

null 24 Sep 4, 2022
A homebrew game for Nintendo Switch

Sblerky's Game Arcade A little Game and Watch compilation for Nintendo Switch Presentation video : https://youtu.be/MeM5cFiT9bY Sblerky's Game Arcade

null 35 Nov 19, 2022
Custom Deflemask .vgm based playback engine for the Nintendo Game Boy

-DeflemaskGBVGM- Custom Deflemask .vgm based playback engine for the Nintendo Game Boy. Now the official Deflemask ROM exporter as of v1.0.3. this eng

Daniel Chu 10 Feb 20, 2022
Open-source flog (Nintendo Switch's Golf NES easter egg) reimplementation

This repository is dedicated to flog, an easter egg present on Nintendo Switch consoles, containing various tools and information, which are the result of progressive reverse-engineering of the easter egg.

XorTroll 8 Sep 29, 2022
A randomizer for Majora's Mask 3D on the Nintendo 3DS

Majora's Mask 3D Randomizer This is an item randomizer for The Legend of Zelda: Majora's Mask 3D for the Nintendo 3DS. Installation On 3DS Console wit

null 19 Sep 11, 2022
Super Mario Bros in C++ under SDL2

Super Mario Bros DEMO! Super Mario Bros in C++ under SDL2. This game is a DEMO with his first world! How to compile Code::Blocks is needed (although w

Gastón Martínez 1 Aug 22, 2022
Super Mario War, ported to Miyoo (Bittboy / PocketGo / PowKiddy V90/Q90)

Super Mario World 1.7 (April Fools Edition) Miyoo port v0.1, For Bittboy / PocketGo / PowKiddy V90/Q90 port by andrigamerita/octospacc, based on the b

null 2 Mar 3, 2022
A cycle-accurate Game Boy and Game Boy Color Emulator, with rewind feature.

Azayaka is a free and open-source Game Boy and Game Boy Color emulator written in C++. Features Cycle-Accurate emulation. Console based Debugg

Zach Collins 22 Nov 18, 2022
SameBoy DX is a Qt-based interface of SameBoy, a free, highly accurate Game Boy and Game Boy Color emulator.

SameBoy DX SameBoy DX is a Qt-based interface of SameBoy, a free, highly accurate Game Boy and Game Boy Color emulator. Build requirements: CMake Pyth

Snowy 7 Oct 2, 2022
Game Boy, Game Boy Color, and Game Boy Advanced Emulator

SkyEmu SkyEmu is low level cycle accurate GameBoy, GameBoy Color and Game Boy Advance emulator that I have been developing in my spare time. Its prima

Sky 287 Dec 3, 2022
A gameboy emulator that only plays Pokemon Blue, in ~70 lines of c++.

pokegb A gameboy emulator that only plays Pokemon Blue, in ~70 lines of c++. See the technical write-up. Features Plays Pokemon Blue (and Red).

Ben Smith 1.2k Nov 24, 2022
Modification of Marat Fayzullin's Z80 emulator to run on the Arduino Mega

Z80 Core for Arduino Mega This library only functions with the Arduino Mega or Mega 2560 due to memory constraints! This is a free, open source projec

Jack Kingsman 8 Sep 10, 2022