
2.9-rc2 / 07-12-2022
Bizhawk
Accuracy
Performance
Features
BizHawk is a multi-platform emulator written in C# which focuses on core accuracy and power user tools. Its main features are TASVideo (Tool-Assisted Speedrunners) for full recording and debugging tools as well as Lua scripting. The consoles covered include but are not limited to Apple II, Atari 2600/7800, ColecoVision, DOS, Game Boy/Game Boy Color/Super Game Boy, MSX, Nintendo Entertainement System, Super Nintendo, Gameboy/Color, Sega Master, Sega Genesis, Sega 32X, Sega Saturn, Sega GameGear, ZX Spectrum, Atari 2600/7800, Commodore 64 and a few more!
--
Windows: 7+
.NET Framework 4.6.1, Visual C++ Redists (2010 SP1, 2012, 2015) & Direct3D 9 required.
They provide a pre-requisite package
Linux: As stated by the authors, support is a work-in-progress
Most Recent Changes
--2.9-RCx--
2.9 will see Ares64 graduate from experimental, including Ares64's N64DD emulation, the merge of the MAME experiment, new cores for Atari Jaguar/Jaguar CD and TIC-80, and a subframe-capable BSNES.
It will also replace the two old Lua engines with a new one using KeraLua, meaning the features of Lua 5.2 through 5.4 such as integers will be available.Please check here for changes
--2.8--
This release sees BSNESv115+ and MSXHawk graduate from experimental, and the addition of 5(!) new cores emulating GB/C, N64, PSX, and TI-83.
Misc. changes to EmuHawk
fixed various bugs with the Paths config dialog
fixed "Close and reload ROM" in Firmware Manager crashing if it was opened from missing FW dialog (#3054)
fixed hotkeys triggering accidentally when typing in Virtual Pad fields (#3087)
fixed typos which broke INTV, NES, and PSX gamedb lookups
fixed known good Saturn BIOS choices marked as unknown (#3095)
updated list of Sega CD / Mega CD BIOSes in firmware database
many gamedb additions and updates
fixed RAM Search difference fields can't fit all possible values (#3117)
fixed `File` > `Load State` > `Auto-load Last Slot` breaking movie recording/playback (#2384)
fixed .dsm importer
fixed .smv importer nagging about core choice thousands of times (#3022)
fixed .vbm importer
made OSD message duratin (time to fade)
configurable in UI, and allow API calls to override it
added option to split RAM Watch entries (#1024)
fixed drag+drop bug (#1483)
made `Config` > `Customize...` > `Pause when menu activated` behave consistently
fixed overlapping UI elements in Debugger (#3026)
tidied up numbering of save slots and TAStudio branches (#3112)
fixed `ObjectDisposedException` when triggering single-instance passthrough
fixed throttle edge cases
fixed edge cases where post-frame tool updates would run twice after a frame advance
added more logging and warning dialogs for edge cases
many smaller fixes and even some frontend speed optimisations (not sarcasm, this is a first)
Linux port
added support for PSX (see Nymashock below) and technically N64 and TI-83 (see Ares64 and Emu83 below)
fixed various problems w/ alignment and size under Mono
added Nix expression for reproducible EmuHawk (and DiscoHawk) builds without dependency issues
TAStudio
re-enabled editing of movie comments (#3063)
added an edit dialog for TAStudio palette (#2119)fixed branch screenshots (#1513)
fixed weird edge case putting TAStudio in an unaccounted-for state (#3066)
fixed error when autoloading a rom and TAStudio AND a .tasproj for a different rom
fixed incorrect behaviour when jumping to frame 0
Lua/ApiHawk
added support for `"#RRGGBB"` format when parsing colours ("luacolor" in docs) in Lua API
fixed `joypad.setfrommnemonicstr` not working without reinitialising MovieSession (#2525)
DiscoHawk
fixed deadlocks (#3128)
New and graduating cores
Nymashock:new PSX core ported from Mednafen (like Octoshock, though this is newer and more easily updated, which also means it has more peripherals)
SameBoy
new ported GB/C core with comparable accuracy to Gambatte and GBHawk (not to be confused with the SameBoy SGB core in older releases)
Emu83
new TI-83 core
BSNESv115+
BSNESv115+ (the "new BSNES port") is no longer experimental
fixed Hex Editor and others using read instead of peek (#3060)
implemented memory callbacks
fixed ram and rom memory domains
increased MmapHeapSize to prevent crashes, affected
Star Ocean
refactored latching to improve dumping/verification
reduced savestate size (increased frequency for
TAStudio/rewind)
improved speed of fast ppu check
MSXHawk
MSXHawk is no longer experimental
implemented more hardware/mappers
added Linux port
Ares64
2 new experimental cores ported from Ares: one for casual play which is slow and desync-prone ("Performance"), and one for TASing which is even slower but will sync ("Accuracy")
Other cores:
A7800Hawk
fixed nondeterminism caused by incorrect savestate code
fixed Basketbrawl and summer games
fixed off pixel detection in write mode, affected baby pac man
Atari2600Hawkfixed audio issues, affected ms pac man
Gambatteupdated core
fixed error when attempting to write to some registers e.g. with the Debugger (#3028)
fixed crash on Linux
refactored GambatteLink to be more modular and add support for 3x/4x
added proper memory callback scopes for link play
enabled disassembly in link play
allowed linking w/ GBC cart IR
stopped using fine-grained timing for link play when the link is disconnected
added more scopes for memory callbacks
GBHawkupdated GBA startup state, affected Konami collection vol. 4
fixed link play, affected perfect dark
Genplus-gxadded support for SRAM larger than 8MB (#3073)
prevented crash when loading Debugger (#2769, #2958)
Handyfixed crash on Linux (#2425)
IntelliHawk:adjusted sme timings and fixed accesses to registers, affected motocross
cleaned up CPU, fix trace logger and throw less exceptions
fixed intellicart, affected various homebrew roms
fixed MOBs with x-coord 0 being visible, affected bowling
fixed overflow flag calculation, affected checkers and reversi
more compatibility work
MAMEstopped treating warnings as errors
set System Bus correctly
melonDSupdated core, adding experimental DSiWare support
enabled memory callbacks
fixed empty strings in firmware settings preventing roms from loading (#3030)
Mupen64Plusfixed haptic feedback causing movie playback to crash
enabled GLideN64's texture wildcard support (#3104)
NesHawkadded mapper for Pokemon bootlegs
fixed not parsing iNES v2 headers (#3082)
other small accuracy improvements and bugfixes
O2Hawk:fixed blobbers and Popeye
PCEHawk:fixed crash related to framebuffer resizing (#3018)
SMSHawk:fixed sprite collision inaccuracy (#1611), affected Ecco the Dolphin
fixed Fray (vert lock update)
fixed SMS backdrop colors
fixed ys (JPN) by emulating VRAM masking bit
improved SG-1000 8kb ram adapter emulation
VectrexHawkimplemented 64K bank switching
--2.7--
New Core melonDS!
Linux
Lua support!
Fix Basic Bot
SGB
Sameboy is removed; Gambatte is the new default SGB core
Gambatte
fix Cart Bus Pullup setting
update gambatte upstream
GBHawk
Set bk2 movie CGB flag properly
Fix GBHawk settings dialog not appearing
NesHawk
Increase IRQ delay in mapper 48 to fix graphics glitch in Jetsons
Fix Zelda SaveRAM (#1623)
Give Jump II initial SRAM of 0xFF
Fix Tsuri Kichi Blue Marlin Hen
Atari7800Hawk
Fix nondeterminism issues (reported for Choplifter)
Atari2600Hawk
game db updates
SMS
Balance audio better (#2814)
Add SRAM to Terminator (#2966)
fix pop breaker
PCEHawk
Improve memory domains
PSX
Update octoshock to Mednafen 1.27.1 (#2989)
Bsnes-v115
Fix snes graphics debugger getting permanently hidden (til app is restarted) (#2950)
EmuHawkGroup SGB in with GB/C in PathConfig (#2992)
Encode screenshot as JPEG when it has the extension (#2982)TAStudioFix TAStudio not loading saved branches (#2640)
Add confirmation modal when launching TAStudio during casual play
Do not seek when needing to load greenzone on paint
Fix Frame Number Hover (#2811)Luaimplement client.get_approx_framerate()
implement save_image_to_disk() to Lua canvas (#2744)
Discohawk
Fix HAWK Commandline option (#2947)
Fix freezing when extracting music (#2952)
Multi-thread audio extracting
ApiHawk
Implement client api GetApproxFramerate()
--2.6.3--
Updated nyma cores to Mednafen 1.27.1
TurboNyma
fixed #2873 - Mnemonic display for PCECD shows ! instead of the II, III, IV and VI buttons as well as the mode "buttons"
BSNES
Fixed #2856 - SNES Super Scope gives an exeption error
Addedsa1_iram
memory domain for new bsnes
Fixed #2942 - Adaptating the bsnes gamma ramp shader
Mupen64Plus
Added haptic feedback passthrough (with rumble pak enabled in controller settings, look in keybinds after analog)
Fixed #2808 - Support null (any) address for N64 breakpoints
Updated GLideN64
Added new GLideN64 settings:BackgroundsMode
,txEnhancedTextureFileStorage
, andtxHiresTextureFileStorage
fixed #2864 - N64 PAL roms in .n64 format are treated as NTSC
Octoshock
Fix fast forwarding
NESHawk
Fix mapper 88 mirroring. Closes #2847
Improve power on state accuracy
mGBA
Fixed #2805 - memory hooks (
event.onmemorywrite
) not being removed properly
Fixed #1112 and #1870 - Add Game Overrides as a Sync Setting (including rtcEnabled)
ZXHawk
Overhaul datacorder and cassette loading code. This should now be more accurate and fixes a number of loading isues with particular games and loading schemes. Fixes #1446
Gambatte
BizHawk changes mainlined into upstream gambatte-core, which is now split from gambatte-speedrun
Linux support added
full HLE SGB mode implemented in Gambatte, better than SameBoy
no BIOS accuracy improvements and HLE of CGB-DMG colors (restoring to original Gambatte behavior of hacking in the post BIOS state)
Expose isCgbDmg + add isCGBDMGMode instead of isCGBMode to movie headers if active
Tracelogger fixes #2710 #2701 #2902
Open Bus Emulation
Use dumped uninitalized AGB WRAM for AGB instead of CGB initial RAM layout
fix rare crash when changing window when the LCD is disabled and an hdma was requested within that lcd disabled period, #2919
initialize controller once on core construction and require core reboot to change it, #2921
automatically create missing BIOS files by patching files you already have (GBC<->GBA, DMG<->MGB, and SGB2<->SGB1)
various other improvements to accuracy, savestate consistency, and stability
VirtualBoyee
Update to Mednafen 1.27.1
Added options for virtualboy to only show left or right screen
ColecoHawk
fixed Virtual Pad schemata
Libretro
Add to Linux port
EmuHawk
Fixed #2747 and #2077 - improper handling of file paths
fixed #2787 - unable to open roms in EmuHawk via File Explorer on Windows
fixed #2759 - strange behaviour of minimised windows on Windows
fixed #2435 - tab labyrinth in `Config` > `Paths...`
fixed #2643 - include frame numbers when copying rows in TAStudio
fixed #2784 - xbone or gamepads pretending to be xbone are detected as two gamepads
prevent crashing when unplugging gamepads using DirectInput+XInput method
rewrote most of the OpenTK gamepad code and some of the DirectInput+XInput gamepad code, probably fixing obscure bugs
respect system chosen for file ext. (i.e. `Config` > `File Extensions...`) when loading an archive containing a single file
Fixed Basic Bot
RAM Watch
Added HandleWatchSizeSelected() to allow user-initiated watch size changes to be ignored if they reset the setting to the same value. fixes #2857
Rewinder
fixed #2463 - config option for rewinds every fixed number of frames
Fixed #2826 - bad interaction between rewind+movie+savestates when using delta state rewinder
Fixed #2877 - rewinds sometimes drifting 1 frame forward when loaded
Lua
allow loaded ext. tools to be queried via
client
Lua library / IToolApi
Make sorting optional forforms.setdropdownitems
fixed #2844 - new lua functions for
memory
andmainmemory
:read_bytes_as_array / write_bytes_as_array / read_bytes_as_dict / write_bytes_as_dict
added
event.onconsoleclose
to Lua API
allow most of themmf
Lua library to be used without passing--mmf
on the command-line, and add some helper functions to it
fixed #2940 - madeclient.openrom
behave likeclient.reboot_core
Debugger
fixed #2760 - prevent crashes when minimizing and other cases
--2.6.2--
Set all cores to update Frame counter post-emulation. NOTE: This is a sync breaking change for MGBA movies using RTC, as the time sent to the core was the pre-incremented time.
mGBA
update to 0.9.1
Gambatte
Fix RTC on Hard Reset
MBC3 Fixes
Support setting inital RTC state during a movie recording
Fix layer masking
Move layer masking to sync settings (these settings affect sync)
Block toggle layer hotkeys when movie recording
Update GBA modeswitch timing and testROM accuracy
Fix autodetection of console mode
Add wisdom tree mapper suport
clarify sync settings (#2688)
GBHawk
Fix OAM DMA Bus Conflict emulation (#2709)
#2715 , still needs vram open bus fix but that's seperate
NesHawk
Add missing mapper variable to state for some pirate games
O2Hawk
Fix PAL time calculation (#2684)
PCE
Fix default PCE gamepad bindings (fixes #2720)
Fix crashes in PCE debugger
N64
Add N64 plugin categories (#2729)
Fix memory.read to allow addresses 0x80000000..0xFFFFFFFF (#1734)
GPGX
Add missing menacer keys (#2718)
Intellivision
Fix aspect ratio (#2670)
SMS
Fix system Id (#2650)
C64
Implement memory hooks (#2726)
EmuHawk
Fix FormatException on startup on certain locales (#2716)
Fix GB Layers not toggling (#2491)
Add utvideo to ffmpeg dumper
Movies - respect LogKey of loaded movie
Firmware Config - don't treat known-but-bad as good (#2224)
Rewinder
Fix bug where nothing happens on the first press when frame interval is 1 (#2667)
Add delta compression option (Good size reduction for some cores, less useful for others)
Ram Watch - fix autoload
Hex Editor - .tbl file loading - clear table before loading a new one, ignore empty lines in file
Debugger - Add rgbds syntax for GB/C disassembly (#2706)
CDL - Fix SNES core crash on load (#2662)
Fix Log Window (#2694)
Lua
Accept all 4 colour formats in all Lua functions (#2602)
Support swapping input using joypad.set() and joypad.get()
client.seekframe - Prevent hangs from trying to go backwards
lua socket fixes (#2194, #2671)
MovieClock.lua - use cycle based time for Gambatte/SubGBHawk (#2708)
TAStudio
Fix auto-restore bug where auto-restore position was not set correctly the first time using it after auto-restore usage earlier in the movie
Fix broken tastudio when selecting "New from the File" menu item and saving changes when asked
Fix autoload
Fix Converting to bk2 resulting in unsaved changes never asterisk appearing (#2583)
Branches
Fix branch loading (#2640)
Fix hotkeys
Fix right-clicking a branch when the contextmenu was already open would throw an exception
Branch view will now scroll to the updated branch when using hotkeys to update a branch
Fix exception, scroll to branch on updating branch and fix #2645
Make load branch hotkey deselect all but one branch
Add initial marker in frame 0 when loading older tasprojs (#2693)
--2.6.1--
Linux
Fix trying to use DIrectInput (2607)
EmuHawk
Fix single instance mode (#2577)
Update default hotkey bindings to use new names (#2576)
Limit attempts to dearchive to files with extension .zip, .7z, .rar. (#2587)
Rename and clarify Alternate Sync (#1398)
Fix clock throttle being 60fps for all systems (#2580)
Fix multi-disk bundler
Fix resizing controller config dialog
Tastudio
Fix savestate corruption bug introduced in 2.6. This bug causes desync issues on most cores!
Refresh view when pausing with middle-click
Lua
Fix client.reboot_core()
Fix drawing during onframeend() event handler (#2595)
Vectrex
HawkReport 50fps in the Play Movie dialog
GPGX
Fix VDP Viewer screenshot feature (#2596)
NesHawk
Fix Wagyan Land 2 Graphical Bugs
FIx mapper 90
--2.6.0--
New Core! Odyssey2 core is offically released
Update nyma cores to Mednafen 1.26.1
Saturnus
Fix cart detection (#2513)
Fix independence Day soft lock (Fixes #2162)
Fix .xml loading Fixes #2557.
mGBA
Update to 0.9
Gambatte
Update libgambatte to r729+
Support GB layer toggling
Add GB object viewer
Various updates from gambatte-speedrun
PSX
Add System Bus memory domain
Fix debugger window crashes when adding a breakpoint
Use Octoshock's built-in disassembler
Support memory execute callbacks
Have memcbs include actual values
Fix can't accept PSX rom converted from DiscoHawk (#2478)
GBHawk
Accuracy improvements
HDMA fixes
Implement reads for GBC visualizer
Change initial ram state
Double Speed mode fixes
Properly fade to white in GBC mode
Mode 1 overhaul, fixes several bugs
Update bad SRAM access emulation
Open bus behaviour on locked SRAM
Multi-cart check for bomberman selection
Window timing bug fixes
Sprite timing bug fix
Add Game DB entry for Litti's Summer Sports
Fix debugger disassembler
Implement LCDC write glitch for gbc-acid-hell
SubGBHawk
Save audio cycles in SubGBHawk where it's needed, fixes state integrity checker in TAStudio
bsnes
Make ROM memory domain writeable (Use at your own risk)
add CARTROM-DB and CARTROM-D blocks to CDL
Fix PAL detection (#2503)
NES
HawkChange NES framerates (#2460)
GPG
XAllow writing to rom memory domains
EmuHawk
Linux
Fix Xbox one controller stops working, (#2429)
Fix overlapping/duplicate controls in FirmwaresConfig's
menu
Fix crash when clicking on column headers in
FirmwaresConfig
Support Oem102 keyboards
Fix alt-keyboard-layout mode crashes
Add an option to capture the Lua without capturing the full OSD, when AV recording
Don't clear input when changing ROM (#2453)
Fix GBA Game Shark code conversion (#2545)
Cheats - Fix Changing selected row with arrow keys doesn't update side pane (#2550)
GB GPU Viewer - Bounds check tile drawing for OBJ window, seems to resolve random crashing
Fix SyncSettings type cast error during Rom load
Ram Search - fix crash when deleting addresses
LuaImplement joypad.getwithmovie()
Deprecate emu.getluacore in favour of new func client.get_lua_engine
Fix reverting current directory
Fix client.reboot_core() (#2571)
Fix MovieClock.lua ui, also use current frame count instead of movie length
TAStudioSupport drive states
Fix state gap when frame advancing and painting input
StateManager fixes
Do not attempt to report >100% seek progress (This could happen if the user starts a seek which results in loading a savestate past the frame previously being seeked)
Fix scrollbar behavior
Cell selection fixes
Fix opening TAStudio after starting a .tasproj
Undo history fixes
Debugger: Fix scrolling in disassembly view
Virtual Pad analog stick: Fix changing x axis name (#2467)
MoviesPass SRAM to emulator before state is made
Fix playing a movie when core is not specified and core is not one we support switching of (#2466)
CDLFix crash on GPGX
Gambatte - fix 1st opcode byte. (#2551)
GBHawk - Fix domain names (#2552)