top of page

2.9.1 / 04-05-2023





average rating is null out of 5
average rating is null out of 5
average rating is null out of 5

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



  • portfixed last issue in #2951 properly

AppleII / C64

  • fixed states sometimes crashing when a disk change actually happens


  • fixed #3638 (snes_get_board returns empty string)
    fixed #3643 ("No PPU sprite limit" option doesn't seem to work)


  • fixed #3648 ([GameBoy Link] Buzzing noise when one of the Players is muted)


  • fixed BIOS selection menu
    added emulation issues and ROM info to RomDetails dialog
    report emulation status via ROM info icon and text
    fixed #3631 (bgaregga locks up the process)
    hide settings for optional dip switches (for now)
    use 0x3ffffffc as framerate numerator, like actual MAME does since 0.254 (fixes MP4 processing on YouTube)
    fixed #3565 (kinst + kinst2 = crash)
    fixed #3615 (rom loading regression)
    fixed crash with games using k001006_device (e.g. windheat)


  • Hawkfix open bus execution following write instructions (#3633)


  • fixed exe load crash


  • fix noise audio channel on SMS VDP (LFSR is 16 bit wide) (#3602)


  • fixed #3268 ("Unthrottled" setting burns cpu when paused)
    If a PSX .bin is loaded, try synthesising a .cue
    don't keep multidisk flag on after it was set once
    speedup the PlayMovie dialog
    Prevent annoying waits when using firmware manager with DSi NANDs present


  • fixed #3616 (error loading module in lua (socket.dll))


  • speedup column drawing
    fixed bugs with entries in patternsform (#3649)


  • fixed RetroAchievements rich presence not working
    fixed Jaguar CD homebrew hashing wrt retroachievements
    disabled leaderboard list form
    fixed various crashes and deadlocks


Lots of updates and fixes to existing cores and to EmuHawk.

New Cores

  • MAME

  • Arcade-only build of MAME 0.252

  • Ares64

  • Interim version after v130.1

  • Angrylion-rdp for RDP and VI emulation

  • Transfer Pak support and N64 Mouse support

  • Debugging features: disassembler, get registers, System Bus domain

  • SIMD RSP implementation

  • N64DD support

  • VirtualJaguar

  • Jaguar and Jaguar CD emulation

  • TIC-80

  • core for the TIC-80 fantasy computer, using nesbox's own reference implementation

  • SubBSNESv115+

  • subframe capable variant of the BSNESv115+ core (#3281)

Linux port

  • fixed various file pickers using case-sensitive file extensions

  • added short-circuit to Mupen64Plus loading to avoid error messages and any       strange failure state

  • enabled menu       mnemonics (Alt+X) for MainForm

  • fixed       inconsistent application of colours from GTK theme when Mono is able to       use it

  • added Gentoo       to Linux run script


  • fixed crash       when pushing Select on Karate title screen


  • made this core default in places where the old BSNES core was

  • reworked Payload peripheral and fixed Virtual Pads

  • improved peripheral selection for P1

  • reimplemented MSU1 properly

  • added fast DSP and fast coprocessor settings

  • fixed crash  when loading a savestate after a reset (#3173)

  • added region override setting

  • added overscan and aspect ratio correction settings

  • implemented an ExtendedGamepad controller which acts like a normal gamepad with 4 extra buttons

  • fixed justifier controller

  • added option to disable ppu sprite limit (#3440)

  • implemented SNES graphics debugger

  • updated internal sameboy version for SGB by linking it to the standalone sameboy core, fix SGB saveRAM

  • fixed CARTROM and CARTRAM memory domain names (#3405), provide SGB memory domains, set MainMemory and SystemBus domains properly

  • fixed lag detection in certain games

  • implemented bsx + bs memory loading (#3457)

  • added RTC support (#3577)

(old) BSNES

  • fixed graphics debugger exception when freezing a tile (#3195)

  • fixed apossible IndexOutOfRangeException in the graphics debugger (#3399)

  • also fixed a potential DivideByZeroException (#3398)


  • various savestate fixes

  • added SaveRAM support


  • removed redundant AmstradCpcPokeMemory tool

  • renamed some bundled firmware files (#3494)


  • allowed .pc2 (Pocket Challenge v2) files to be loaded


  • updated to Mednafen 1.29.0


  • improved MBC1/MBC1M emulation

  • improved HuC1 emulation and implement HuC1 IR support

  • improved HuC3 emulation and implement support for mapper sound (HuC3 is currently the only use case)

  • implemented MMM01 emulation

  • implemented M161 emulation

  • improved       heuristics for various multicart mappers and remove the multicart       detection setting (now effectively always true)

  • implemented       remote control controls, expanded remote control emulation for HuC1 IR       and CGB IR (previously only HuC3 IR had this implemented, using a       hardcoded value)

  • cleaned up the       mapper internals, IR, and RTC code

  • made various       optimizations to the CPU loop and read/write code (around 10-15%       performance increase)

  • trimmed down       initial time settings to a single setting, using total number of seconds

  • implemented       quirk with bit 4 of rLCDC, fixes cgb-acid-hell testrom compliance

  • fixed sprite       priority in CGB-DMG mode

  • prevent       crashes due to "negative" numbers being added to the sound       buffer pointer (#3425)

  • fixed audio       output being too quiet (#3338)

  • added a CGB       color correction option using the same formula as SameBoy, and made that       the default

  • time fixes       (long periods of pausing causing rtc overflows in real time mode; time       incorrectly advancing when loading in a save file)


  • fixed       Code-Data Logger crashing due to typo'd mem domain name (#3497)

  • fixed wrong       MBC5 mapper being given a battery


  • stopped       byteswapping Z80 domains (#3290)

  • changed       default peripheral to 3-button Genesis gamepad (#2775, #3262)

  • added option       to disable ppu sprite limit (#3440)

  • prevent svp       dereferences when not using an svp cart (#3297)

  • give NHL 96 (Genesis)       SRAM (#3300)

  • fixed disc       swapping, re-enabled the disc buttons

  • fixed disabled       layers being wrongly re-enabled on a load state (#3388)

  • fixed pattern       cache invalidation (#3363)


  • updated to       Mednafen 1.29.0


  • rewrote       Libretro host implementation, fixing some crashes, adding memory domains,       and slightly improving performance (#3211, #3216)

  • fixed input       display (#3360)

  • implemented       needed environment functions for resolution changes

  • added reset       support (#3482)


  • updated to       interim version after 0.9.5

  • fixed SaveRAM       not getting written to disk when unloading/reloading core (#3165)

  • implemented       threaded renderer support

  • replaced darm       with a new DS centric disassembler, fixing various issues with       tracing/disassembly

  • r13/r14/r15       reported as sp/lr/pc for tracelogs

  • split       ARM7/touch screen polls to an "alt lag" variable and added a       setting for whether to consider this "alt lag" (#3278)

  • reduced state       size a bit

  • improve audio       resampling; get rid of libspeex dependency

  • added missing       TMD for Zombie Skape, improved error message when TMD cannot be found

  • ensured       firmware settings match up with sync settings if real firmware is not       used (#3377)

  • did various       internal cleanups

  • add TCM memory       areas for melonDS core (#3420)

  • added Clear       NAND setting

  • added dsiware       saveram support


  • updated to       interim version after 0.10.0

  • fixed a       softlock in Hamtaro: Ham Ham Heartbreak (#2541)

  • implemented       save override support with EEPROM512 and SRAM512

  • correctly       account for multiboot GBA ROMs (#3421)


  • always       savestate expansion pak regardless of settings, resolves some       desyncs/crashes due to shoddy no expansion pak implementation (#3092, #3328)

  • fixed changing       expansion pack setting

  • added       angrylion as yet another graphics plugin

  • fixed mistake       in angrylion implementation (#3372)


  • updated to       Mednafen 1.29.0


  • relaxed       restriction on VRC1 PRG registers, so they can be larger than the       original VRC1 chip allows (for rom-expanding hacks)

  • fixed PGR       writes for VRC1 not using mask for address

  • fixed SXROM       detection (#3168)

  • fixed crash       for Namco 163 mapper (#3192)

  • "un-implemented" ICycleTiming so       that NesHawk no longer tries to use the cycle timing intended for       SubNesHawk


  • updated to       Mednafen 1.29.0

  • fixed disc       switching

  • fixed light       guns (#3359)

  • wired up       rumble support

  • improve analog       input range (#3528)


  • updated to       interim version after 0.15.7, fixing some bugs (#3185)

  • added GB       palette customiser (#3239)

  • wired up       rumble support

  • exposed audio       channel enable/disabling

  • .GBS support


  • updated to       Mednafen 1.29.0

  • fixed disc       switching

  • fixed light       guns (#3359)


  • fixed InvalidOperationException when       using SMS peripherals (#3282)

  • fixed       screechy/static audio during Sega logo in Ys (Japan) (#3160)


  • fixed typo in       sound settings bitfield (#1208)

T. S. T.

  • updated to       Mednafen 1.29.0


  • updated to       Mednafen 1.29.0


  • fixed some       internal state not being overwritten by savestates

  • changed RTC to       use deterministic time when recording instead of (host) system time

  • changed up       AppleII's "main ram" domain, added aux ram domain

  • added SaveRAM       support


  • refactored       core to use the same Nyma system as the other Mednafen ports

  • updated to       Mednafen 1.29.0


  • removed       redundant ZXSpectrumPokeMemory tool

  • renamed some       bundled firmware files (#3494)


  • fixed keybinds       not working after waking from lock screen on Windows (#3161)

  • added warning       when current firmware customization does not match the one specified in       the movie header (#2498)

  • refactored       memory poking, allowing negative values for fixed-point watches and       fixing other bugs (#3175)

  • fixed .gmv importer       not setting the core name in the .bk2 header

  • fixed       regression where screenshots from some cores were transparent (#3166)

  • fixed Lua       referencing a core after it's unloaded, making scripts crash (#3226)

  • made DirectX       optional on Windows (it's still in the prereq installer because it's       usually faster)

  • fixed opening       roms from "jump list" in Windows shell / file manager (#3224)

  • improved UX of       loading a savestate from an older (or newer) version

  • fixed shaders'       height being used for width

  • finished UX       for merging/unmerging LShift+RShift and other modifier keys (#3184, #3257)

  • fixed .dsm importer       which relied on non-deterministic Dictionary (hashmap) ordering       for axis names, also parse RTC in DsmImport

  • stopped       offering to remove missing file from recent roms when it's not actually       missing, just failed to load (#3006)

  • fixed hotkeys       triggering accidentally in Virtual Pad on Windows (#3087)

  • increased       precision when tweaking axis sensitivity/deadzone (#3038)

  • fixed category       radio buttons being cut off in Messages config

  • restored       "priority" option for U+D/L+R policy, and made it the default       again (#2752)

  • refactored       firmware config so the acceptability status icons make sense (#3157)

  • fixed Screenshot       (raw) -> Clipboard not showing keybind hint

  • added UI for       editing any* core's settings/syncsettings without it being loaded

  • fixed strange       behaviour when trying to extract archive which contains folders

  • bumped FFmpeg       to 4.4.1, added auto-download to Linux port (#3259)

  • reordered Config       -> Preferred Cores submenu

  • removed some       unnecessary prompts to reboot core

  • moved       "Save Window Position" for main window to Config ->       Display... -> Window and added a "Stay on Top"

  • fixed Windows       version detection and enabled warning for unsupported versions (#2972, #3194)

  • fixed some       systems not having a name to display in the window title

  • fixed MSX rom       loading

  • made file       extension check for disc images case-insensitive

  • added warning       dialog when running as Superuser/Administrator

  • fixed       overlapping UI elements in Config -> Controllers... when       Windows UI scale is not 100% (#2605)

  • fixed       overlapping UI elements in Record Movie dialog when Windows UI scale is       not 100% and on Linux (#2605)

  • fixed the       autoselection of a movie when opening the Play Movie dialog

  • fixed %recent% being       expanded to the wrong path

  • fixed window       title being blank when chromeless mode is enabled

  • improved       handling of host sound init failure

  • added prompt       for if you start movie playback while cheats are enabled (#3389)

  • improved cheat       editing UX

  • removed       default bindings for virtual keyboards

  • updated       virtualpads immediately when the movie status changes between read-only       and record mode

  • fix key       releases not getting handled correctly when modifier keys are pressed (#3327)

  • fix a crash       when selecting user shaders (#3495)

  • fix gamedb       loading not blocking when loading a rom, potentially causing a miss with       a slow hdd (#3489)

  • fix crashes       when setting absurdly large padding values (#3321)

  • make DisplayConfig defaults       button set padding back to 0

  • add auto save       state on close (#1861)

  • zstd       compression is used instead of deflate compression where possible       (rewind, .wbx cores, internal resource files, binary blobs in movies,       savestates, etc)

  • hardware       accelerated CRC32 and SHA1 algorithms are used if the user's hardware       allows it

  • add hash for       newly discovered GBC-GBA bootrom

  • removed       gongshell, added "simple" code for opening win32 context menu       (gongshell's only actual use) (#2261)

  • fixed firmware       fields with a dummy checksum using the wrong firmware info (#3159)

  • fixed       "Toggle All Cheats" hotkey behaviour

  • did minor       refactors to byteswapping (N64 rom loading and Lua bit library)

  • implemented       RetroAchievements support (#3407)

  • fixed pause at       end of movie when playing a tasproj without tastudio

  • fixed NaN       values displaying in RewindConfig, use system's canonical framerate for       rewind duration estimate

  • various NES       PPU viewer fixes

  • updated       Windows version check to reflect 8.1 EOL

  • fix audio not       getting muted when opening modal dialogs (see #3545)

  • added hotkey       for toggling on-screen messages

  • renamed       quicksave slot 0 to 10

  • strip       "SHA1:" and "MD5:" when copying lines in the log       window

  • have TAS       profile also enable NDS BIOS

  • improved       DisplaySurface performance (#3517)

  • fix malformed       PC Engine gamedb entry ("Sounds" was interpreted as the sysID)

  • add N64 to       multidisk bundler list

  • add some sort       of documentation for B/V gamedb flags

  • hide debug       tools from Tool Box and add ext. tools

  • added Magnum       (FBX) and Wavebeam NES palettes

  • added --userdata CLI       flag

  • added .cdi       support

  • fixed window       title after loading rom via FW config (#3581)

  • clear MovieSession._queuedMovie if       rom load fails (#3582)

  • .bin file       Mode2/2336 support (#3387)

  • added keybind       (hardcoded) for MainForm context menu

  • persist A/V       settings to disk properly (#1226)

  • fixes and       improvements to SNES lightguns

  • RAM Watch

  • fix CTRL+A        not working properly

  • RAM Search

  • added Select        All/None

  • switch _watchList from        a List to an Array (faster)

  • fix hang with        "Go to Address" dialog in RamSearch (#3384)

  • Hex Editor

  • fixed        incorrect handling of big / little endian (#3516)

  • disabled        "Save to rom file"        when not looking at rom

  • TAStudio

  • fixed        "Select between Markers" hotkey not working

  • fixed .tasproj headers        being written differently based on locale (i.e. ',' instead of '.')

  • don't        autorestore if current frame remained valid

  • refactors for        selection in InputRoll, standardising behaviour of Select        All and Insert Separator buttons

  • resolve some        inputs showing ! in Nymashock and hide some columns by default

  • when starting        new .tasproj from SaveRAM, don't clone SaveRAM twice

  • fixed        modifier key check in TAStudio.TasView_MouseDown

  • added 'Edit        marker frame' feature

  • fixed ArgumentOutOfRangeException when        loading TAStudio with cheats

  • improved        input copy/paste behavior (#3506)

  • fixed        incorrect behavior when switching systems and improve handling of default.tasproj (#3462)

  • improved        clarity of label texts in custom color dialog (#2119)

  • fix KeyLog        not being respected in TAStudio and custom LogKey getting discarded (#2843)

  • Lua

  • replace the        two lua engines with an updated version of NLua, backed internally by        native lua 5.4.4

  • update lua        documentation in reflection of new lua features

  • rely on a        system provided lua 5.4 .so (or lua 5.3 if needed) when on Linux,        resolving issues due to providing our own lua

  • various        changes due to real integer support in new lua

  • deprecate bit        library functions which have direct operator counterparts in new lua

  • add in a        migration helper for lua bitwise ops (put bit = (require        "migration_helpers").EmuHawk_pre_2_9_bit(); at top of        file)

  • added        arguments to memory callback functions (cb will be called with addr,        val, flags)—check event.can_use_callback_params("memory") when        writing polyfills

  • fixed setting        size of Lua Forms (#3034)

  • fixed        encoding bug which caused e.g. Japanese text to become mojibake/garbled        (#190, #2041)

  • fixed        the forms.* functions for LuaPictureBoxes erroneously        affecting every form instead of the one specified (#3395)

  • renamed        (deprecated) event.onmemory{read,write,exec,execany} to event.on_bus_{read,write,exec,exec_any}        (#759)

  • added bizstring.pad_{start,end}        convenience functions

  • changed Lua        Console to trigger a clear of drawing surfaces and the OSD when removing        a Lua script, and to reset padding when removing the last script

  • fixed require not        looking in Lua dir on Linux

  • added        "Clear Output" button to Lua Console

  • fix        documentation error in client.gettool

  • set Form.Owner to        MainForm for Lua-made forms

  • fixed wiki        export, add more notes to fill in some of the holes

  • documented        frameadvance loop

  • documented        socket response format

  • fixed        possible crash in print (#3513)

  • fixed mainmemory lib        keeping reference to unloaded core's memdomain

  • suppress        updates while rebooting core (#3424)

  • fixed various        things in the LuaConsole (#3476)

  • fixed        unwrapped lua exceptions not being correctly thrown

  • properly        handle errors when running a lua script, using Resume/Yield methods        added to the LuaThread class (see

  • fix        mainmemory.write_bytes_as_dict

  • Pass through        input/hotkeys while Lua form is focused (to restore previous behaviour,        call forms.setproperty(form_handle,        "BlocksInputWhenFocused", true);)

  • fix        PictureBox when width or height is null

  • use        LuaPictureBox' custom resize in all cases

  • CloseRom acts        like rebooting the core, so make it just reset Lua libs (fixes #3226)

  • fix detaching        registered functions

  • support        marshalling arrays of length 0 through BizInvoker, fixing a crash with        lua

  • fixed event.onmemoryread behaviour        under mGBA (#3230)

  • improved how        removing callbacks from within a callback is processed (#1823)

  • have MemoryDomain inherit IMonitor,        which can be used to avoid waterbox overhead for many nonsequential        memory accesses (already used internally to speedup RAM Search and some        lua functions; no-op for non-waterbox cores) (#3296)

  • ApiHawk

  • improve error        message for IToolFormAutoConfig ext. tool missing menu

  • merged IGameInfoApi into IEmulationApi,        and some other minor API method signature changes

  • changed        injector to include non-public properties when looking for ApiContainer

  • deprecated        some ExternalToolApplicability.* attributes

  • added IMovieApi.PlayFromStart/movie.play_from_start (#384)

  • added saveChanges parameter        to IMovieApi.Stop/movie.stop

  • fixed edge        cases for MemoryApi.{Read,Write}ByteRange/{memory,mainmemory}.read_bytes_as_{array,dict}/{memory,mainmemory}.write_bytes_as_array

  • added IUserDataApi.Keys/userdata.get_keys

  • fixed trying        to load tool Forms when services aren't satisfied, causing NREs (#3329)

  • fixed HTTP        and sockets not being initialised in time for tools autoloaded on        startup

  • added        "memory" of which ext. tools the user has vetted so the prompt        does not appear when restarting EmuHawk

  • added length        prefix to ICommApi.Sockets.SendScreenshot/comm.socketServerScreenShot to        match SendString/socketServerSend

  • return        success bool from OpenRom APIs (#3514)

  • have IMovieApi.Stop implementation        use MainForm.StopMovie

  • fix --open-ext-tool-dll

  • made ext.        tool build and run scripts pass args through to dotnet

  • deprecated        `IGuiApi.DrawText` in favour of new method `PixelText` to match Lua

  • made        `ApiContainer` props `MemoryEvents` and `MemorySaveState` return `null`        if req. services unavailable

  • Use bulk peek        in IMemoryApi.{ReadByteRange,HashRegion}

  • Basic Bot

  • added warning        when loading a .bot into the Basic Bot which was made on a        different game or system, or on an older version

  • increased max        frames from 999 to 9999

  • added NOT        operator

  • fixed anchor        points and a misaligned label

  • fixed code        logic error for 3 way tie breakers

  • refactor BasicBot.IsBetter

  • fixed issue        where the Copy button was not toggled on/off properly

  • change        addresses to ulong? (fixes empty address fields being saved        as 0x0)

  • Debugger

  • fixed the        "To PC" button not updating the disassembler view

  • fixed        breakpoint crash with mGBA (#3287)


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


  • 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


  • added support for `"#RRGGBB"` format when parsing colours ("luacolor" in docs) in Lua API

  • fixed `joypad.setfrommnemonicstr` not working without reinitialising MovieSession (#2525)


  • 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)


  • new ported GB/C core with comparable accuracy to Gambatte and GBHawk (not to be confused with the SameBoy SGB core in older releases)


  • new TI-83 core


  • 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 is no longer experimental

  • implemented more hardware/mappers

  • added Linux port


  • 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:

  • fixed nondeterminism caused by incorrect savestate code

  • fixed Basketbrawl and summer games

  • fixed off pixel detection in write mode, affected baby pac man


  • fixed audio issues, affected ms pac man


  • updated 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


  • updated GBA startup state, affected Konami collection vol. 4
    fixed link play, affected perfect dark


  • added support for SRAM larger than 8MB (#3073)
    prevented crash when loading Debugger (#2769, #2958)


  • fixed crash on Linux (#2425)


  • 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


  • stopped treating warnings as errors
    set System Bus correctly


  • updated core, adding experimental DSiWare support
    enabled memory callbacks
    fixed empty strings in firmware settings preventing roms from loading (#3030)


  • fixed haptic feedback causing movie playback to crash
    enabled GLideN64's texture wildcard support (#3104)


  • added mapper for Pokemon bootlegs
    fixed not parsing iNES v2 headers (#3082)
    other small accuracy improvements and bugfixes


  • fixed blobbers and Popeye


  • fixed crash related to framebuffer resizing (#3018)


  • 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


  • implemented 64K bank switching


New Core melonDS!


  • Lua support!

Fix Basic Bot


  • Sameboy is removed; Gambatte is the new default SGB core


  • fix Cart Bus Pullup setting

  • update gambatte upstream


  • Set bk2 movie CGB flag properly

  • Fix GBHawk settings dialog not appearing


  • 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


  • Fix nondeterminism issues (reported for Choplifter)


  • game db updates


  • Balance audio better (#2814)

  • Add SRAM to Terminator (#2966)
    fix pop breaker


  • Improve memory domains


  • Update octoshock to Mednafen 1.27.1 (#2989)


  • 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)


  • Fix HAWK Commandline option (#2947)
    Fix freezing when extracting music (#2952)
    Multi-thread audio extracting


  • Implement client api GetApproxFramerate()


  • Updated nyma cores to Mednafen 1.27.1


  • fixed #2873 - Mnemonic display for PCECD shows ! instead of the II, III, IV and VI buttons as well as the mode "buttons"


  • Fixed #2856 - SNES Super Scope gives an exeption error
    Added sa1_iram memory domain for new bsnes
    Fixed #2942 - Adaptating the bsnes gamma ramp shader


  • 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, and txHiresTextureFileStorage
    fixed #2864 - N64 PAL roms in .n64 format are treated as NTSC


  • Fix fast forwarding


  • Fix mapper 88 mirroring. Closes #2847
    Improve power on state accuracy


  • Fixed #2805 - memory hooks (event.onmemorywrite) not being removed properly
    Fixed #1112 and #1870 - Add Game Overrides as a Sync Setting (including rtcEnabled)


  • 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


  • 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


  • Update to Mednafen 1.27.1
    Added options for virtualboy to only show left or right screen


  • fixed Virtual Pad schemata


  • Add to Linux port


  • 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


  • 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


  • allow loaded ext. tools to be queried via client Lua library / IToolApi
    Make sorting optional for forms.setdropdownitems
    fixed #2844 - new lua functions for memory and mainmemory: 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 the mmf Lua library to be used without passing --mmf on the command-line, and add some helper functions to it
    fixed #2940 - made client.openrom behave like client.reboot_core


  • fixed #2760 - prevent crashes when minimizing and other cases


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.


  • update to 0.9.1


  • 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)


  • Fix OAM DMA Bus Conflict emulation (#2709)
    #2715 , still needs vram open bus fix but that's seperate


  • Add missing mapper variable to state for some pirate games


  • Fix PAL time calculation (#2684)


  • Fix default PCE gamepad bindings (fixes #2720)
    Fix crashes in PCE debugger


  • Add N64 plugin categories (#2729)
    Fix to allow addresses 0x80000000..0xFFFFFFFF (#1734)


  • Add missing menacer keys (#2718)


  • Fix aspect ratio (#2670)


  • Fix system Id (#2650)


  • Implement memory hooks (#2726)


  • 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)


  • 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)


  • 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)


  • 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)


  • 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)

Show Previous Changes



  • Fix trying to use DIrectInput (2607)


  • 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


  • Fix savestate corruption bug introduced in 2.6. This bug causes desync issues on most cores!

  • Refresh view when pausing with middle-click


  • Fix client.reboot_core()

  • Fix drawing during onframeend() event handler (#2595)


  • HawkReport 50fps in the Play Movie dialog


  • Fix VDP Viewer screenshot feature (#2596)


  • Fix Wagyan Land 2 Graphical Bugs

  • FIx mapper 90


New Core! Odyssey2 core is offically released

Update nyma cores to Mednafen 1.26.1


  • Fix cart detection (#2513)

  • Fix independence Day soft lock (Fixes #2162)

  • Fix .xml loading Fixes #2557.


  • Update to 0.9


  • Update libgambatte to r729+

  • Support GB layer toggling

  • Add GB object viewer

  • Various updates from gambatte-speedrun


  • 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)


  • 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


  • Save audio cycles in SubGBHawk where it's needed, fixes state integrity checker in TAStudio


  • Make ROM memory domain writeable (Use at your own risk)

  • add CARTROM-DB and CARTROM-D blocks to CDL

  • Fix PAL detection (#2503)


  • HawkChange NES framerates (#2460)


  • XAllow writing to rom memory domains



  • 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


  • Implement 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


  • Support 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)


  • Pass 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)


  • Fix crash on GPGX

  • Gambatte - fix 1st opcode byte. (#2551)

  • GBHawk - Fix domain names (#2552)

bottom of page