bsnes is a Super Nintendo (SNES) emulator focused on performance, features, and ease of use.
Go to file
Tim Allen 0dcbe627c2 target-bsnes: Do not set the window background to black.
To resize a window on X11, the window manager tells the X11 server to change the
window size, then the X11 server tells the application to paint itself, and then
(eventually) the application tells the X11 server what to draw. This adds an
arbitrary amount of latency to resizing, so to make things feel more responsive,
the X11 server will paint any newly-exposed parts of the window with a default
background colour. If it happens to be the same colour as the appplication would
paint anyway, this gives resizing a much better user-experience.

Since most of bsnes' window is occupied by the viewport, which is always black,
bsnes accordingly set its window background colour to black for the best
resizing experience. However, this had two additional effects:

  - When no game is loaded, bsnes displays the bsnes icon in the main display
    area. Black canvas widgets are used as spacers to position the icon
    correctly, but the spacers don't cover the entire background, and the window
    background shines through.
  - GTK+3 draws widget transparent by default, so the background colour of the
    parent widget shines through child widgets. In particular, setting the
    window background to black makes the menu background black, even if the menu
    text is also a dark colour.

In order to get the menu to display properly in GTK+3 builds, we have to stop
bsnes from setting the top-level window background colour, and we also have to
ensure that the spacer widgets around the icon cover the entire surface of the
window.

Fixes #108.
2021-01-08 23:00:39 +11:00
.assets Make the README use local assets, not remotely-hosted ones. 2020-07-30 10:31:09 +10:00
.github/workflows Implement GitHub Actions Based CI. 2020-10-19 17:37:02 +11:00
bsnes target-bsnes: Do not set the window background to black. 2021-01-08 23:00:39 +11:00
docs Add a skeleton for bsnes user documentation. 2020-11-07 23:45:20 +11:00
hiro hiro: Fix screensaver suspension under GNOME on X11. 2020-11-12 20:56:40 +11:00
libco Merge commit '5e109224fb3480d806e44d74587d052c7f88bf83' into master 2020-10-09 02:31:32 +11:00
nall Use XDG base directories 2020-11-10 17:59:14 +11:00
ruby correctly set O_NONBLOCK in OSS 2020-11-06 21:34:39 +11:00
shaders Added 17 new pixel shaders courtesy of hunterk porting and testing them. 2019-10-05 13:44:51 +09:00
sourcery v107.8 2019-07-17 21:11:46 +09:00
.cirrus.yml Prevent Debian packages from prompting for configuration. 2020-06-09 06:02:16 +10:00
.gitattributes Language detection fix attempt 1. 2019-10-12 15:47:34 +09:00
.gitignore hiro: qt.moc should be generated, not committed to the repo. 2020-09-18 22:31:17 +10:00
CREDITS.md Convert bsnes into a group project and relicense it to GPLv3 or later. 2020-03-23 00:57:29 +09:00
GPLv3.txt Update version and license 2017-10-24 23:37:22 -04:00
LICENSE.txt Use byuu.org/bsnes as the official homepage. 2020-10-27 23:21:19 +11:00
README.md Make the README use local assets, not remotely-hosted ones. 2020-07-30 10:31:09 +10:00
mkdocs.yml Add a skeleton for bsnes user documentation. 2020-11-07 23:45:20 +11:00
update-subtrees.sh Apply bsnes' customisations back on top of the upstream SameBoy source. 2020-10-12 18:40:44 +11:00

README.md

bsnes

bsnes logo

bsnes is a multi-platform Super Nintendo (Super Famicom) emulator, originally developed by byuu, 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

Nightly Builds

Preview

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