Table of contents
Upgrade Notes and Prerequisites
- The readme on GitHub has more instructions, and is usually more up-to-date than this page.
- Never mix different versions of BizHawk. Keep each version in its own folder.
- Windows users: Don't forget to run the prereq installer first!
- Due to how BizHawk has evolved, earlier releases (1.x and 2.x before 2.4) might not work unless you also run an older version of the prereq installer.
- BizHawk versions starting from 2.0 require a 64-bit OS. A "backport" release, 1.13.2, is available for users of Windows XP, 7, or 8.1 32-bit.
- Linux users: Distro-specific build instructions / packages are linked from the readme. A list of known bugs affecting the latest release can be found in issue #1430.
BizHawk 2.11
- Windows download
- Linux download
- Released September 20th, 2025
- New cores
- DSDA-Doom for Doom/Heretic/Hexen
- Warning: Analog Weapon Selection does not work at all! Wait for 2.11.1!
- DOSBox-X for DOS and early Windows
- Opera for 3DO
- DSDA-Doom for Doom/Heretic/Hexen
- Atari2600Hawk
- Fixed #4176 - [C64, 6502] Incorrect behavior for "undocumented" CPU functions
- A7800Hawk
- Fixed #4176 - [C64, 6502] Incorrect behavior for "undocumented" CPU functions
- BSNES
- C64Hawk
- Encore
- Fixed local timezone being used to offset RTC (UTC is now always used)
- Prevent "Update" CIAs being booted
- Update/DLC CIA installation exception is now friendlier (simply states the Update/DLC CIA was successfully installed)
- System Bus domain is added (super important for pointers!)
- Loading a savestate will restore the framebuffer again
- Fixed #4374 - Encore fails to create savestate
- Faust
- Fixed #4278 - Earthbound (SNES) crashes in Faust when trying to record input
- Gambatte
- Fix minor sound issues in GBA mode (non-sync change, purely audio output fix)
- Enhancement #3813 - Value from mem address is not passed to read callback
- Fixed #4394 - BizHawk crashes when using FFmpeg writer
- GBHawk
- Enhancement #3813 - Value from mem address is not passed to read callback
- Genplus-gx
- Update to commit 956fdba
- Enable PC address error checks for gpgx. Needed for a speedrun glitch in Spider-Man that allows for skipping to the next level
- Enhancement #3813 - Value from mem address is not passed to read callback
- Fixed #4206 - [Genplus GX] Sega CD game, After Armageddon Gaiden malfunctions in 2.10
- Fixed #4371 - XJ220 Sega CD doesn't run in Bizhawk 2.10.
- Fixed #4324 - [GEN/MD] BizHawk crashed without error reporting after opening Demons of Asteborg newer versions
- Fixed #4293 - Crash without error when Loading MegaCD Games in EU
- Fixed #4229 - Demons of Asteborg does not work in 2.10
- Fixed #3862 - Weird mem callback issue with high address locations under genplus-gx
- MAME
- melonDS
- Updated to post 1.0 (commit 8a6fa3a
- Loading a savestate will restore the framebuffer again
- melonDS JIT is now supported
- DLDI and DSi SD Card is partly now supported (for a simple blank SD card given, required for some homebrew)
- DSi NAND apps that are not DSiWare can now be loaded in (considered DSiWare for purposes of the movie header)
- Enhancement #3813 - Value from mem address is not passed to read callback
- Fixed #4414 - System.NullReferenceException upon loading NDS ROM
- Fixed #4344 - DS games unable to save, saveram overwritten upon reloading game
- Fixed #4317 - MelonDS game printf is formatted weirdly
- Fixed #3840 - DSiware games do not works
- mGBA
- Update to commit cef7dde
- Mupen64Plus
- NesHawk
- Nymashock
- Fixed #3436 - Bizhawk stops working in about half an hour of playing
- O2Hawk
- Fixed #4391 - '.' key mnemonic in .bk2 is indistinguishable from "not pressed"
- PicoDrive32x
- Fixed #4419 - The SEGA 32x Games don't work on Bizhawk, the screen is always Black. Please fix it (I prefer the Kega Fusion core, better than gen-plus).
- QuickNes
- Merged #4211 - QuickerNES NES 2.0 header read fix
- Fixed #4186 - Crash when loading Digital Devil Story: Megami Tensei
- Merged #4429 - [Fix] Adding a fix to QuickerNES to support certain games with submapper > 0
- Fixed #4368 - QuickerNES only loads MiG-29 by codemasters on a black screen
- Fixed #4402 - Glitched graphics in NES Beauty and the Beast
- Fixed #4246 - QuickNES crashed when I tried to switch games (Bizhawk 2.10)
- Fixed #4244 - Incorrect MMC5 emulation on QuickNES on Bizhawk 2.10.
- Fixed #4243 - [quickerNES] Blacklist FDS Titles.
- Fixed #4240 - Glitched battle screen in Lagrange Point English Translation on QuickerNES
- Fixed #4239 - Super Mario All-Stars NES does not work on quickerNES core.
- Merged #4211 - QuickerNES NES 2.0 header read fix
- SameBoy
- Saturnus
- Fixed #4314 - Saturnus runs FMV sequences slow on Linux
- Snes9x
- Stella
- TIC-80
- UAE
- Virtu
- DiscoHawk
- Sped up chd writing by an order of magnitude
- EmuHawk
- Support relative mouse input (
RMouse
)- To bind to analog input, just bind regular mouse input (
WMouse
) twice. - Does not work in frame-by-frame mode!
- To bind to analog input, just bind regular mouse input (
-
Toggle Stay on Top
hotkey - Fix crashes on startup with certain old Intel iGPUs
- Fixed JumpList (Task bar recent items list) items not launching correctly
- Merged #4452 - Ensure absolute paths in HawkFile
- Merged #4403 - Fix input/hotkey bugs
- Merged #4337 - usable movie sram
- Merged #4210 - Add more courier font sizes instead of upscaling the 16px one
- Merged #4191 - Update author/source metadata for several cores where it's missing
- Merged #4450 - Fix libretro "no game" loading
- Enhancement #3573 - [F.Rq.] Mouse cursor capture toggle (bound to Middle-Click by default)
- "Mouse Capture Forces Topmost" option (Config -> Display -> Window)
- Enhancement #4325 - [Suggestion] Update OpenAL-related dlls may bring better performance.
- Enhancement #3734 - Savestate/bk2 `Framebuffer` isn't easily user-accessible
- Enhancement #4168 - Unreleased cores aren't included in
Help
>About...
- Enhancement #4081 - OOTB haptic feedback binds for GB, GBA, and PSX
- Enhancement #4009 - Option for double sized Messages
- Enhancement #3960 - Preferred Cores picker is opaque and inflexible
- Enhancement #3707 - Rewind should increment rerecords
- Enhancement #3419 -
sync -f
after every.SaveRAM
and.bk2
backup write - Enhancement #3309 - Confusing "Desired frame length" option name in Rewind configuration
- Enhancement #2926 - [Feature Req.] Play sound when movie playback is finished
- Enhancement #2308 - StatusBar icon when Rewind is active
- Fixed #4448 -
config.ReplaceKeysInBindings
isn't taking effect until binding a new key or restarting - Fixed #4436 - Rare access violation when loading a rom while RamWatch is open
- Fixed #4396 - [🐧] Hang when playing Need for Speed Carbon - Own the City
- Fixed #4379 - [🐧] Open [anything] in Browser button does not work, instead closing the app.
- Fixed #4376 - [🐧] Label for SOCD setting cut off in Controller Config dialogue
- Fixed #4358 - Latest dev build win 64. Can not change preferred core
- Fixed #4346 - Movie fails to switch to record after loading a last-frame save state.
- Fixed #4339 - doesn't recognize L and R of controller
- Fixed #4312 - CLI launch fails with RCheevos-Hardcore Mode + Autosave
- Fixed #4281 - Arch Linux - Sound not working
- Fixed #4277 - xml games are loaded twice
- Fixed #4208 - Use
IDialogParent
(instead ofCoreComm
) for UI inRomLoader
- Fixed #4202 - Attempting to record movie with Libretro core throws NRE
- Fixed #4197 - Play Movie dialog crashes with
OverflowException
: "unable to convert from decimal..." when a MAME movie is present - Fixed #4182 - "Autostart RetroAchievements" crashes emuhawk when offline
- Fixed #4116 - Having "Input cycle" axis input set to 0 in SubGBHawk core with Audio Throttle with Unthrottled option enabled while using the XAudio2 output crashes BizHawk
- Fixed #4082 - XMLGame file generated in Windows fails to load in Linux
- Fixed #3989 - TAStudio modifies global "On Movie End" setting
- Fixed #3962 - Auto-generated (sync-)settings descriptions are cut off
- Fixed #3582 - Loading movies with nonexistent core name header doesn't fall back
- Fixed #3496 - NRE from
IGL_SlimDX9.FreeRenderTarget
- Fixed #3053 - Rewinding while the emulator is paused has much worse performance.
- Fixed #2907 - v2.6.1 or Latest - Fail to play with 2 controllers simultaneously
- Fixed #2741 - LogWindow something causes crash on Mono
- Fixed #2090 - BizHawk crashes when trying to load a savestate made with different sync settings
- Fixed #1930 - [🪟] Windows' UI scale still causes problems w/ WinForms
- TAStudio
- position restore logic was missing when drawing analog
- Merged #4433 - Seek fixes
- Merged #4382 - Undo redo
- Merged #4381 - Fix a situation where copy/paste hotkeys don't work.
- Merged #4377 - Add some hotkeys for markers, and display them in tool tips.
- Merged #4347 - Fixes to seeking and auto restore
- Merged #4341 - Don't save when the user says no.
- Merged #4330 - Respect the user's "ancient" savestate interval
- Merged #4319 - Make the number of frames per TAStudio rewind configurable.
- Merged #4272 - TAStudio marker lua
- Enhancement #4172 - TAStudio export to bk2: specify name
- Enhancement #3376 - TAStudio "new project" (Ctrl+N) cannot be rebound
- Enhancement #2449 - QoL suggestion for Columns menu in TAStudio
- Enhancement #2373 - TAStudio: scroll to a specific numbered frame
- Fixed #3401 - TAStudio projects for the wrong game can be loaded, crashing on loadstate
- Fixed #4430 - [TAStudio] Exception when truncating with markers
- Fixed #4375 - [🐧] TAStudio "Clone # Times" doesn't work
- Fixed #4184 - Cannot stop Bizhawk advance in TAStudio
- Fixed #4103 - TAStudio child dialogs aren't parented correctly, and will be shown behind when "Always On Top" enabled
- Fixed #3708 - TAStudio horizontal layout problems
- Fixed #2622 - Make "Autopause at end of Movie" work in TAStudio
- Fixed #2332 - [TAStudio] Certian error window prevents bizhawk from closing.
- Fixed #2329 - Clicking the left column in TAStudio should pause when it reaches the target frame
- Lua Console
- Fixed #4271 - BizHawk crashes when opening lua console on Void Linux
- Fixed #4252 - Apparent Lua bug, something about the call stack when using
pcall
- Fixed #4248 - [🐧] Lua Console: select all, Clear Output leads to NRE in Mono WinForms internals
- Fixed #4167 -
genesis
Lua library not included in autodocs until core loaded
- RAM Search
- Enhancement #2974 - Don't reset RAM search results when changing value size
- Log Window
- Fixed #2741 - LogWindow something causes crash on Mono
- Support relative mouse input (
- Lua API/scripting
- Merged #4335 - Add more Lua functions for TAStudio markers
- Fixed #1161 - TAStudio branches/markers lua functions
- Merged #4445 - Fix error when creating empty Lua form dropdowns
- Merged #4188 - Add a method to the
comm
Lua library to allow settingExpectContinue
- Fixed #4187 - Lua
Comm.httpPost
fails when posting to servers that don't supportExpect: 100-Continue
- Fixed #4187 - Lua
- Merged #4256 - implement
emu.setrenderplanes
inEmulationApi
for snes9x - Merged #3821 - Memory hook improvements (GPGX)
- Merged #4283 - Memory Hook Improvements (Return value)
- Enhancement #3035 - [Lua request] Read bytes as string (
memory.read_bytes
) - Fixed #4387 - IndexOutOfRangeException with Virtu core and Lua
joypad.get()
/joypad.getimmediate()
- Fixed #4356 - Lua
memory.write_bytes_as_array
may not preserve order, keeps non-integer keys - Fixed #4252 - Apparent Lua bug, something about the call stack when using
pcall
- Fixed #4219 -
tastudio.onqueryitembg
,tastudio.onqueryitemicon
broken in release 2.10 and latest build - Fixed #3796 - Lua script sees different working directory when re-entered via callback
- Fixed #2310 - Lua
joypad.setanalog
sets analog indefinitely
- Merged #4335 - Add more Lua functions for TAStudio markers
- APIHawk
- Multiplatform
- Movie importers
- gamedb
- RetroAchievements
- Fixed #4182 - "Autostart RetroAchievements" crashes emuhawk when offline
- Libretro
BizHawk 2.10
- Windows download
- Linux download
- Released January 7th, 2025
- New cores
- Encore (Citra) for 3DS
- UAE for Amiga
- Based on libretro-uae 5.0.0
- Stella for Atari2600
- ChannelFHawk
- A7800Hawk
- Fixed #3895 - Change A7800Hawk's default peripherals to 2xProLine (from 2xJoystick)
- Ares64
- Fixed #3710 - Pull Ares64 from upstream to fix Rareware games
- BSNES (v115)
- provide proper OAM memory domain
- update to latest upstream commit
- update included sameboy (used for SGB emulation) to ~0.16.5
- C64Hawk
- Warning: SaveRAM is incompatible to previous versions!
- Merged #4162 - Fix Domark/HES/MagicDesk cartridge mapper bank loading
- Merged #4161 - Fix filter stage passing sound when no filters are enabled
- Fixed #4153 - SID: Filtered voices are audible when no filter output is selected
- Merged #4160 - EasyFlash overhaul
- Merged #4152 - Fix memory performance issues
- Fixed #4151 - DeltaSerializer allocates tons of memory with disk drive active
- Genplus-gx
- update to latest upstream version
- implement paddle controller
- disasm: limit pc to 24 bits, not just disasm address
- Merged #3889 - Update Genesis Plus GX Core
- Merged #3902 - Wiring up GPGX as core for SMS, GG, and SG
- Fixed #3955 - Jeopardy for Sega CD crash
- Fixed #3942 - SMS - Pause button missing in controller config
- Fixed #3919 - SMS Paddle games don't load and use SMSHawk instead
- Fixed #3906 - Enabling BIOS does not launch the game after the startup sequence.
- Fixed #3850 - SegaCD: Dungeon Explorer broken in Bizhawk
- Fixed #3662 - CRAM memorydomain is scrambled
- Fixed #2901 - Manually editing CRAM in Genesis does not work correctly
- Enhancement #4120 - Unable to shoot outside the screen to reload (Menacer et al. for MD)
- Enhancement #4069 - swap A and D regs in gpgx_getregs()
- Enhancement #3905 - option for overscan
- Enhancement #3917 - "VDP mode" option (to eliminate region lockups / megakey behavior)
- Enhancement #2230 - Add TMSS to Genesis Core
- MAME
- Add soft reset input
- add driver source code file to dump info
- mnemonics for Robotron 2084, Jurassic Park, defender
- Fixed #3721
- Allow view selection
- Enhancement #3715 - option to hide the gear hud in certain games
- Fixed #3704 - crashes when trying to record some games that have duplicate / mirrored controls
- melonDS
- Add many more missing TMDs
- Fixed #4028 - Can't launch 2 iQue DSiWare Titles due to missing TMD
- Fixed #3535 - Error when creating any NDS cheats
- Fixed #3534 - MelonDS: screen rotate doesn't work correctly with window size 2x and higher and "Maintain aspect ratio" set
- Fixed #3397 - Hotel Dusk - Room 215, Chapter 8 puzzle is impossible
- Add many more missing TMDs
- mGBA
- Mupen64Plus
- NesHawk
- Merged #3964 - Neshawk Tracelogger no longer prints incorrect addresses if a branch would overflow/underflow the PC
- Fixed #3963 - Tracelogger shows a 32 bit address when a branch wraps around address $FFFF
- Fixed #3856 - NESHawk initial RAM pattern override length must be a multiple of 2, otherwise changes cannot be applied
- Fixed #3664 - NullReferenceException on Gimmick! (JP) (NesHawk, Mapper 69)
- Enhancement #3854 - NESHawk: missing palette RAM memory domain
- Merged #3964 - Neshawk Tracelogger no longer prints incorrect addresses if a branch would overflow/underflow the PC
- QuickerNes
- Sameboy
- Update sameboy to ~0.16.5
- Snes9x
- SubGBHawk
- SubNesHawk
- Fixed #3949 - SubNesHawk doesn't recognize FDS disk operations
- TIC-80
- TurboNyma
- Fixed #3663 - pce bug Lady Sword - Ryakudatsu Sareta 10-nin no Otome (Japan) (Unl)
- DiscoHawk
- Fixed #3859 - Discohawk About Page has Google Code link
- EmuHawk
- various performance improvements related to movie recording
- fixed subtitles button in the Play Movie dialog
- fixed movie loading duplicating subtitles in movies
- allowed editing subtitles and comments from the Play Movie dialog
- optimized the lsmv importer (other importers may also be faster)
- include debug information in binary: this will improve reported exception messages
- fixed a possible crash when savestating while recording a movie by disabling savestates past movie end
- updated core preferences picker
- prefer ideal over acceptable firmware when both exist
- improved axis input value calculation (420cf323a)
- fixed some default axis controls incorrectly having deadzone
- fixed potential exception when an invalid path was set in the Path Configuration
- fixed middle mouse button input bind not working
- rework firmware icons, better tooltip for ideal bind
- video dumper: mention dependency for AVC AVI (x264vfw or ffmpeg based decoder)
- fixed GmvImport's six button controller handling
- Add support for game controller touchpads (i.e. on PS4/PS5 controllers)
- Fixed #4144 - SaveRAM filename collision when using Libretro
- Fixed #4159 - Movies preserve old input text
- Fixed #3966 - Config > Save Config doesn't save core settings
- Merged #4087 - order firmware groups in the dialog and in the code
- Merged #4029 - Main window auto-size fixes
- Fixed #2850 - Window Size & position incorrectly adjusted when exiting Fullscreen
- Merged #4027 - Cheat load/save fixes
- Fixed #3085 - tool savefile paths doesn't track current rom
- Merged #4024 - Fix Sega CD/Saturn disc hashing
- Merged #4022 - Disk Drive Activity LED ToolTip enhancement
- Merged #4011 - Add option to disable automatic resize of main window
- Fixed #1560 - Window is spontaneously moved/recreated during Yoshi's island's opening
- Fixed #3039 - N64 Graphics Plugin's "graphics resolution" shouldn't govern the size of the application Window
- Fixed #3410 - Nymashock changes emulator window size between each game resolution change, no matter the settings
- Merged #4010 - Fix movie header values being potentially outdated upon starting a movie record
- Fixed #3980 - GB: Default settings don't properly save the boot ROM in movie settings
- Merged #4008 - Change OnMovieEnd default to 'Pause' instead of 'Finish'
- Fixed #4007
- Merged #3987 - Make external tools path independent of working directory
- Merged #3981 - movies: normalize loaded hashes to upper case
- Fixes #3979 - Hashes in movie headers should not be case-sensitive
- Merged #3975 - Fix Uzebox framerate
- Merged #3751 - Dispose disks in Nyma cores
- Fixed #3750 - EmuHawk 2.9.1 doesn't release file after closing game
- Merged #3935 - Refactor IControlMainform handling in Mainform
- Merged #3914 - Expanded color palette object inside Nes PPU Viewer
- Merged #3913 - Updated Amstrad CPC Non-Sync Settings name
- Fixed #3845 - CPCHawk - Incorrect Text Label Under "Other Non-Sync Settings"
- Merged #3869 - Replace SortedSet with SortedList<T> in InputRoll (better performance)
- Merged #3876 - Remove DInput input adapter
- Merged #3872 - Add some larger sizes to View -> Window Size
- Enhancement #3826 - Add more window size option?
- Merged #3747 - Set inputdisplay correctly on LoadState
- Fixed #3741 - Input display doesn't update when loading states in read-only mode
- Merged #3733 - Allow migrating non-SHA1 hashes on movie import
- Fixed #3727 - BizHawk handles imported SNES9x CRC32 incorrectly
- Merged #3728 - Change Odyssey 2 framerate
- Enhancement #3709
- Merged #3691 - Update CurrentlyOpenRom before Tools.Restart
- Fixed #3527 - Hex editor shows wrong "File on Disk" when switching games
- Merged #3690 - Add StringFormat to pixeltext DrawString parameters
- Fixed #3669 - gui.pixeltext is misaligned when message starts with too many spaces
- Merged #3684 - Sanitize text pasted into hex text boxes
- Enhancement #3682 - Allow pasting 0xHHHH-formatted numbers in a HexTextBox (e.g. in WatchEditor)
- Fixed #4136 - Duplicate firmware filenames
- Fixed #4086 - Auto-Hide Mouse Cursor Doesn't work
- Fixed #3986 - GameInfo is not cleared when rom loading fails
- Fixed #3983 - Opening/closing tools from Lua can crash BizHawk
- Fixed #3957 - N64 Background analog input being read even when turned off
- Fixed #3842 - Key priority setting doesn't compare individually mapped keys to key combinations
- Fixed #3833 - Freezing many values in hex editor, then choosing not to freeze will still freeze the first value (Bizhawk 2.8)
- Fixed #3779 - fm2 movies for FDS games cause an IndexOutOfRangeException
- Fixed #3776 - Problems when adding padding to the EmuCore drawing surface
- Fixed #3679 - FFmpeg custom commands can mess up video output extension
- Fixed #3567 - NES cheats compare byte changes every core reboot
- Fixed #3523 - Cheat serialisation is borked
- Fixed #3341 - Crash when any of cropping parameters are set to very high negative value (ex. -1000000)
- Enhancement #4132 - Display keyboard keys at the end of input OSD
- Enhancement #4108 - Mapping Analog to dpad gives too narrow diagonals when using XInput controllers
- Enhancement #4070 - Rename "AVI/WAV" in menus
- Enhancement #4017 - When Dumping Create a Warning if/when Closing the Program
- Enhancement #3915 - Bump up FFmpeg Writer above AVI Writer
- Enhancement #3900 - Restore Default Current Tab in Hotkeys
- Enhancement #3835 - Make the Admin privs warning less useless for the user
- Enhancement #3763 - Movie creation: GB firmware defaulting is unintuitive
- Enhancement #3737 - EmuHawk consumes extra GPU while paused
- Enhancement #3644 - BizHawk does not inhibit display or system sleep while running
- Enhancement #3570 - Movie importing requires a rom to be loaded
- Enhancement #3532 - "IOException: The device is not ready" when loading .cue
- Enhancement #3481 - Hotkey to accept background input
- Enhancement #3177 - [import Movie] .smv import on BSNES Core, when Snes9X core selected
- Enhancement #2605 - OSD not affected by system UI scale
- Enhancement #1879 - Add low-level support for the Nintendo GameCube Controller Adapter drivers (on host)
- Enhancement #1482 - Request: CHD file format support
- Linux port
- Fixed #4145 - Host audio stops when MainForm dragged
- Fixed #4021 - BizHawk 2.9.1 crashes when trying to encode with FFmpeg
- Fixed #3972 - Hang when using "Hide Lag Frames" on Linux
- Fixed #3912 - Problems on drag-and-drop of lua script
- Fixed #3843 - Random crashes when playing PS1 games on Manjaro Linux
- Fixed #3828 - Crashing when open any rom file
- Fixed #3678 - LUA Console instant crash on startup
- Debugger
- Hex Editor
- Merged #3998 - HexEditor "File on Disk" fixes
- MultiDisk Bundler
- Lua Console
- Lua
- improved bundled input display script's handling of unsupported systems
- Fixed #3897 - Script using tastudio.onqueryitemtext gets IndexOutOfRangeException after updating from 2.8
- Enhancement #3651 - Lua functions search filter doesn't search through description
- Enhancement #2600 - Unable to fully display two .lua scripts at the same time in 2.6
- Ram Search
- Ram Watch
- Fixed #4044 - 8 character limit when poking a 4 byte binary value
- Fixed #4045 - Invalid input produces no error when poking 4 byte binary values
- Fixed #4001 - "Changes" column is broken in certain cases in RAM watch
- Enhancement #4046 - "New watch" window layout
- Enhancement #4051 - Context menu for RAM Watch separator rows has split, poke, and un/freeze options
- Enhancement #3688 - Input display seems to use hardcoded 0 instead of AxisSpec.Neutral when under specific circumstances
- Enhancement #3802 - Add setting to control what happens when double-clicking RAM watch
- RetroAchievements
- TAStudio
- bump default undo count to 1000
- removed unused tastudio menus and config params
- use normal control BG color for tastudio color editor
- don't let branch screenshot appear below screen edge
- allowed TAStudio to save cycle count in bk2 export
- optimized performance and reduced memory allocations
- sped up the state history integrity checker by more than an order of magnitude
- improved autofire / autohold handling (15ff0ec2c)
- Fixed #4068 - TAStudio does not handle movie start failures gracefully
- Fixed #4065 - TAStudio will save even when you press "no" in certain cases
- Fixed #3675 - Deleting too many frames is massively inefficient
- WIP #3708 - TAStudio horizontal layout problems
- fix axis value editing logic: specifically allow typing without immediately clamping to the min value when the user isn't finished
- Fixed #4115 - GunCon unable to type any aY value besides 16X (and 16)
- Merged #3936 - Fix possible TAStudio NRE
- Fixed #3499 - TAStudio NullReferenceException after movie playback
- Fixed #4125 - Right-clicking TAStudio Frame# column header causes exception
- Fixed #4058 - Recording mode gets extremely slow for longer movies
- Fixed #3968 - Opening a .tasproj file and reordering branches would cause exception
- Fixed #3933 - TAStudio suggests to save tasproj changes on every bk2 import
- Fixed #3899 - Marker changes to branches can save even when the branch itself isn't saved
- Fixed #3870 - Loading a tasproj does not dispose the rewind buffer
- Fixed #3685 - TAStudio axis cell is set to 0 instead of AxisSpec.Neutral under specific circumstances
- Fixed #3500 - TAStudio recording mode may get toggled on erroneously
- Fixed #3478 - Max Undo Level keeps resetting to 100
- Fixed #3220 - Possible Bug With Lag Log / Follow Cursor / TASProj Loading
- Fixed #2292 - TAStudio records extra frames at the end during playback
- Fixed #2081 - Turbo seek doesn't render the proper frame
- Fixed #734 - Auto-adjust input according to lag
- Enhancement #3992 - Add a hotkey for "Clone # Times" in the TAStudio tab
- Enhancement #3969 - Improved Clear Frame performance
- Enhancement #3714 - marker edit dialogue box spawns in bad locations
- Enhancement #3504 - TAStudio .bk2 export is disabled until a .tasproj is saved
- Enhancement #3124 - Add tooltip to TAStudio column headers w/ full name of button/axis
- Enhancement #2369 - context menu spawns a bit too close to the cursor
- Enhancement #2144 - Painting input on TAStudio's tiles should disable recording mode
- ApiHawk
- meta: The .NET 8 SDK is now required for working with BizHawk. The VS installer will automatically include this with VS2022 updates.
- Fix confusing failures when an
ApiContainer
prop is accidentally marked with[RequiredApi]
/[OptionalApi]
- Ext. tools now receive
ToolFormUpdateType.General
events regularly while paused (and while unpaused! you should have been checking the enum anyway)- If you're subclassing
ToolFormBase
, this will have no impact on your existing code, but you can choose to overrideGeneralUpdate
to make use of it
- If you're subclassing
- Fix signature of
IMemoryApi.WriteFloat
(the value param is now float and not double—the implementation was converting it to a float anyway) - Add an overload
IGuiApi.WithSurface(DisplaySurfaceID, Action<IGuiApi>)
and deprecate the old one- For the time being, there will be no difference between using the lambda parameter as instructed, and discarding it and continuing to make calls to whatever
IGuiApi
instance you were using.
- For the time being, there will be no difference between using the lambda parameter as instructed, and discarding it and continuing to make calls to whatever
- Remove the deprecated
IGameInfoApi
library - Remove the deprecated attributes
[RomWhitelist]
,[SingleRom(CoreSystem, string)]
, and[SingleSystem(CoreSystem)]
- Rewrite most of
GuiApi
(the implementation ofIGuiApi
). Parity with the old implementation is a goal, but there may be bugs