What's new

mGBA v0.9.0 released!

Fully functional e-Reader support:


GameCube games that linked with GBA games:




e-Reader card scanning
New tool for converting between different save game formats
WebP and APNG recording
Separate overrides for GBC games that can also run on SGB or regular GB
Game Boy Player features can be enabled by default for all compatible games
Frame and I/O viewer support for Game Boy
Bug report tool for gathering information helpful for reporting bugs
Mute option in homebrew ports
Status indicators for fast-forward and mute in homebrew ports
VBA bug compatibility mode for ROM hacks that don’t work on real hardware
Read-only support for MBC6 flash memory
New unlicensed GB mappers: Pokémon Jade/Diamond, BBD, and Hitek
Stack tracing tools in ARM debugger (by ahigerd)
Command scripts for CLI debugger (by ahigerd)
Scheduled event dumping in CLI debugger
ARM disassembler now resolves addresses to symbol names
Add Game Boy Player feature support to ports
Individual window types can now be toggled in debugging views
Support for the Wii U GamePad when running as an injected VC title

Emulation fixes

ARM: Fix ALU reading PC after shifting
ARM: Fix STR storing PC after address calculation
ARM: Fix Addressing mode 1 shifter on rs == pc (fixes #1926)
ARM: Fix long multiply-and-accumulate register write order (fixes #1956)
ARM: Fix long and accumulate multiply timing
GB: Partially fix timing for skipped BIOS
GB: Downgrade DMG-only ROMs from CGB mode even without boot ROM
GB: Fix marking BIOS as unmapped when skipping BIOS (fixes #2061)
GB Audio: Fix serializing sweep time
GB Audio: Fix some channel 4 timing edge cases
GB MBC: Fix MBC1 mode changing behavior
GB MBC: Fix some MBC3 bit masking
GB Video: Fix state after skipping BIOS (fixes #1715 and #1716)
GBA: Fix timing advancing too quickly in rare cases
GBA: Clear GBP connection on reset
GBA Audio: Revamp FIFO emulation (fixes #356, #875, #1847)
GBA BIOS: Implement dummy sound driver calls
GBA BIOS: Improve HLE BIOS timing
GBA BIOS: Fix reloading video registers after reset (fixes #1808)
GBA BIOS: Make HLE BIOS calls interruptable (fixes #1711 and #1823)
GBA BIOS: Fix invalid decompression bounds checking
GBA DMA: Linger last DMA on bus (fixes #301 and #1320)
GBA DMA: Fix ordering and timing of overlapping DMAs
GBA I/O: Green swap register should be readable
GBA I/O: Ignore high bits on IME
GBA Memory: Improve gamepak prefetch timing
GBA Memory: Stall on VRAM access in mode 2 (fixes #190)
GBA Memory: Improve robustness of Matrix memory support
GBA Memory: Mark Famicom Mini games 22 through 28 as non-mirroring
GBA Memory: Return correct byte for odd ROM open bus addresses
GBA Memory: Improved AGBPrint emulation of edge cases (fixes #1867)
GBA Memory: Fix masking of misaligned jumps
GBA Serialize: Fix alignment check when loading states
GBA SIO: Fix copying Normal mode transfer values
GBA SIO: Fix Normal mode being totally broken (fixes #1800)
GBA SIO: Fix deseralizing SIO registers
GBA SIO: Fix hanging on starting a second multiplayer window (fixes #854)
GBA SIO: Fix Normal mode transfer start timing (fixes #425)
GBA Timers: Fix toggling timer cascading while timer is active (fixes #2043)
GBA Video: Latch scanline at end of Hblank (fixes #1319)
GBA Video: Fix Hblank timing
GBA Video: Implement green swap (fixes #1609)
GBA Video: Emulate sprite cycle limits in OpenGL renderer (fixes #1635)
GBA Video: Fix OBJWIN erratic rendering in OpenGL renderer
GBA Video: Fix x offset in 256-color BG mosaic (fixes #1684)
GBA Video: Fix transposed BG mosaic parameters in GL renderer
SM83: Emulate HALT bug
SM83: Improve mid-M-cycle interrupts
SM83: HALT should not consume an extra T-state

Other fixes

3DS: Fix thread cleanup
All: Improve export headers (fixes #1738)
Cheats: Fix indirect write cheats (fixes #2026)
CMake: Fix build with downstream minizip that exports incompatible symbols
CMake: Link with correct OpenGL library (fixes #1872)
Core: Ensure ELF regions can be written before trying
Core: Fix threading improperly setting paused state while interrupted
Core: Fix loading ELF files that have unexpected empty program headers
Core: Fix destroying an mVL with an invalid channel count
Debugger: Don’t skip undefined instructions when debugger attached
Debugger: Close trace log when done tracing
Debugger: Fix change watchpoints (fixes #1947)
Debugger: Call CLI debugger system init
FFmpeg: Fix some small memory leaks
FFmpeg: Fix encoding of time base
GB: Fix crash when changing ROM while in banked address space
GB: Fix loading model overrides
GB MBC: Force minimum SRAM size on rare MBCs that always have SRAM
GB Serialize: Fix crash when loading pre-0.7 SGB savestates
GB Video: Fix SGB video logs
GB Video: Discard SGB packets in non-SGB mVLs
GB Video: Fix deserializing negative LX state
GB Video: Don’t rendering negative batches
GBA: Fix loading multiboot ELF files (fixes #1949)
GBA: Fix loading subsequent save files (fixes #2067)
mGUI: Don’t attempt to preload files larger than can fit in RAM
Qt: Force OpenGL paint engine creation thread (fixes #1642)
Qt: Fix static compilation in MinGW (fixes #1769)
Qt: Fix a race condition in the frame inspector
Qt: Load/save bytes from memory viewer in the order visible (fixes #1900)
Qt: Fix running proxied video if it gets pushed to the main thread
Qt: Fix game display sometimes disappearing after closing load/save state screen
Qt: Fix cancelling pausing before the frame ends
Qt: Fix gamepad event dispatching (fixes #1922)
Qt: Pre-attach GDB stub when launching with -g (fixes #1950)
Qt: Fix crash when editing shortcuts with none selected (fixes #1964)
Qt: Fix crashing when no OpenGL context can be obtained
Qt: Fix issues with I/O viewer not properly synchronizing state
Qt: Fix loading a new game crashing on Wayland (fixes #1992)
Qt: Fix inability to clear hat bindings
SM83: Simplify register pair access on big endian
SM83: Disassemble STOP as one byte
Switch: Fix GB game height in pixel accurate mode (fixes #2073)
Wii: Fix crash on unloading irregularly sized GBA ROMs


3DS: Use “wide mode” where applicable for slightly better filtering
3DS: Batch directory reads
Core: Add savedataUpdated callback
Core: Add shutdown callback
Core: Rework thread state synchronization
Core: Improve support for ROM patch cheats, supporting disabling overlapping patches
Core: Adding to library is now recursive
GB: Allow pausing event loop while CPU is blocked
GB: Add support for sleep and shutdown callbacks
GB: Redo double speed emulation (closes #1515)
GB: Support loading CGB-on-AGB boot ROM
GB Audio: Add channel 4 batching back (fixes #1313)
GB Core: Return the current number of banks for ROM/SRAM, not theoretical max
GB I/O: Implement preliminary support for PCM12/PCM34 (closes #1468)
GB MBC: Remove unused SRAM size
GBA: Allow pausing event loop while CPU is blocked
GBA BIOS: Division by zero should emit a FATAL error
GBA Cheats: Allow unlimited ROM patch-type codes per set
GBA Video: Convert OpenGL VRAM texture to integer
GBA Video: Skip attempting to render offscreen sprites in OpenGL
GBA Video: New GL palette approach, no more batch splitting on palette edits
GBA Video: Avoid integer division using reciprocal tricks
Debugger: Keep track of global cycle count
FFmpeg: Add looping option for GIF/APNG
FFmpeg: Add CRF support for applicable codecs
mGUI: Show battery percentage
mGUI: Skip second scan loop when possible
mGUI: Improve loading speed (fixes #1957)
Qt: Renderer can be changed while a game is running
Qt: Add hex index to palette view
Qt: Add transformation matrix info to sprite view
Qt: Memory viewer now supports editing decimal values directly (closes #1705)
Qt: Add copy button to GB printer dialog
Qt: Window title updates can be disabled (closes #1912)
Qt: Redo OpenGL context thread handling (fixes #1724)
Qt: Discard additional frame draws if waiting fails
Qt: Unify monospace font usage
Qt: Add button to jump to log settings
Qt: Use relative paths in portable mode when applicable (fixes #838)
Qt: Better initial shortcut editor column sizes
SDL: Fall back to sw blit if OpenGL init fails
Switch: Optimize font rendering (fixes #2078)
Switch: Allow switching between CPU and GPU renderers without reloading
Util: Reset vector size on deinit
VFS: Change semantics of VFile.sync on mapped files (fixes #1730)

Downloads: https://mgba.io/downloads.html