mirror of https://github.com/bsnes-emu/bsnes.git
f09c45f3e4
hiro has two confusingly-named file-picker dialogs. "BrowserDialog" is the custom dialog built entirely with hiro widgets, "BrowserWindow" is a wrapper around the native file-picker. bsnes is built for BrowserDialog, but if you tick "Use native file picker" in the Emulator options, when it needs a file it will construct a BrowserDialog, copy the relevant config options across to a new BrowserWindow and invoke that. Unfortunately, BrowserDialog and BrowserWindow have different capabilities. Specifically, BrowserDialog includes an "options" list which bsnes uses to let the user override region detection when loading a game. BrowserWindow has no such widget. Thus, when using a BrowserDialog the options list worked as intended, but when using a BrowserWindow the options list was never initialised and no option was ever chosen. As a result, when opening a game with the native file- picker, bsnes always used NTSC emulation mode, instead of auto-detecting. Previously, constructing a BrowserDialog and calling setOptions would leave the BrowserDialog in an inconsistent state (with no option selected). This was OK if you immediately displayed the dialog to the user (this would complete the initialisation and choose a default), but bsnes also used BrowserDialog as an *interface* typee, to represent the parameters and results of a file-picker operation that was implemented elsewhere. For this use-case, the inconsistent state caused problems. Therefore, BrowserDialog has been changed: - setting the list of options always chooses a default, maintaining the invariant that `.options()` always returns one of the available options. - The internal BrowserDialogWindow class now takes a reference to a Response object, instead of constructing one from scratch and having to duplicate the "set .option to a reasonable value" code. Fixes #44. |
||
---|---|---|
.assets | ||
.github/workflows | ||
bsnes | ||
hiro | ||
libco | ||
nall | ||
ruby | ||
shaders | ||
sourcery | ||
.cirrus.yml | ||
.gitattributes | ||
.gitignore | ||
CREDITS.md | ||
GPLv3.txt | ||
LICENSE.txt | ||
README.md | ||
update-subtrees.sh |
README.md
bsnes
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