mGBA is an open-source Game Boy Advance emulator, copyright © 2013–2022 Vicki Pfau. This project is not affiliated in any way with Nintendo.

Features


  • Preliminary Lua scripting support
  • Presets for Game Boy palettes
  • Add Super Game Boy palettes for original Game Boy games
  • Tool for converting scanned pictures of e-Reader cards to raw dotcode data
  • Options for muting when inactive, minimized, or for different players in multiplayer
  • Cheat code support in homebrew ports
  • Acclerometer and gyro support for controllers on PC
  • Support for combo “Super Game Boy Color” SGB + GBC ROM hacks
  • Improved support for HuC-3 mapper, including RTC
  • Support for 64 kiB SRAM saves used in some bootlegs
  • Discord Rich Presence now supports time elapsed
  • Additional scaling shaders
  • Support for GameShark Advance SP (.gsv) save file importing
  • Support for multiple saves per game using .sa2, .sa3, etc.
  • Support for GBX format Game Boy ROMs
  • New unlicensed GB mappers: NT (newer type), Sachen (MMC1, MMC2)


Changelog

Emulation fixes

  • ARM7: Fix unsigned multiply timing
  • GB: Copy logo from ROM if not running the BIOS intro (fixes #2378)
  • GB: Fix HALT breaking M-cycle alignment (fixes #250)
  • GB Audio: Fix channel 1/2 reseting edge cases (fixes #1925)
  • GB Audio: Properly apply per-model audio differences
  • GB Audio: Revamp channel rendering
  • GB Audio: Fix APU re-enable timing glitch
  • GB I/O: Fix writing to WAVE RAM behavior (fixes #1334)
  • GB MBC: Fix edge case with Pocket Cam register accesses (fixes #2557)
  • GB Memory: Add cursory cartridge open bus emulation (fixes #2032)
  • GB Serialize: Fix loading MBC1 states that affect bank 0 (fixes #2402)
  • GB SIO: Fix bidirectional transfer starting (fixes #2290)
  • GB Video: Draw SGB border pieces that overlap GB graphics (fixes #1339)
  • GBA: Improve timing when not booting from BIOS
  • GBA: Fix expected entry point for multiboot ELFs (fixes #2450)
  • GBA: Fix booting multiboot ROMs with no JOY entrypoint
  • GBA: Fix 1 MiB ROM mirroring to only mirror 4 times
  • GBA Audio: Adjust PSG sampling rate with SOUNDBIAS
  • GBA Audio: Sample FIFOs at SOUNDBIAS-set frequency
  • GBA BIOS: Work around IRQ handling hiccup in Mario & Luigi (fixes #1059)
  • GBA BIOS: Initial HLE timing estimation of UnLz77 functions (fixes #2141)
  • GBA DMA: Fix DMA source direction bits being cleared (fixes #2410)
  • GBA I/O: Redo internal key input, enabling edge-based key IRQs
  • GBA I/O: Disable open bus behavior on invalid register 06A
  • GBA Memory: Fix misaligned 32-bit I/O loads (fixes #2307)
  • GBA Video: Fix OpenGL rendering on M1 Macs
  • GBA Video: Ignore horizontally off-screen sprite timing (fixes #2391)
  • GBA Video: Fix Hblank timing (fixes #2131, #2310)
  • GBA Video: Fix rare crash in modes 3-5
  • GBA Video: Fix sprites with mid-frame palette changes in GL (fixes #2476)
  • GBA Video: Fix OBJ tile wrapping with 2D char mapping (fixes #2443)
  • GBA Video: Fix horizontal lines in GL when charbase is changed (fixes #1631)
  • GBA Video: Fix sprite layer priority updating in GL

Other fixes


  • ARM: Disassemble Thumb mov pseudo-instruction properly
  • ARM: Disassemble ARM asr/lsr #32 properly
  • ARM: Disassemble ARM movs properly
  • Core: Don’t attempt to restore rewind diffs past start of rewind
  • Core: Fix the runloop resuming after a game has crashed (fixes #2451)
  • Core: Fix crash if library can’t be opened
  • Debugger: Fix crash with extremely long CLI strings
  • Debugger: Fix multiple conditional watchpoints at the same address
  • FFmpeg: Fix crash when encoding audio with some containers
  • FFmpeg: Fix GIF recording (fixes #2393)
  • GB: Fix temporary saves
  • GB: Fix replacing the ROM crashing when accessing ROM base
  • GB: Don’t try to map a 0-byte SRAM (fixes #2668)
  • GB, GBA: Save writeback-pending masked saves on unload (fixes #2396)
  • mGUI: Fix FPS counter after closing menu
  • Qt: Fix some hangs when using the debugger console
  • Qt: Fix crash when clicking past last tile in viewer
  • Qt: Fix preloading for ROM replacing
  • Qt: Fix screen not displaying on Wayland (fixes #2190)
  • Qt: Fix crash when selecting 256-color sprite in sprite view
  • Qt: Fix coloration of swatches on styles with distinct frame backgrounds
  • VFS: Failed file mapping should return NULL on POSIX

Miscellaneous


  • Core: Suspend runloop when a core crashes
  • Core: Add wallclock offset RTC type
  • Debugger: Save and restore CLI history
  • Debugger: GDB now works while the game is paused
  • Debugger: Add command to load external symbol file (fixes #2480)
  • FFmpeg: Support dynamic audio sample rate
  • GB: Support CGB0 boot ROM loading
  • GB Audio: Increase sample rate
  • GB MBC: Filter out MBC errors when cartridge is yanked (fixes #2488)
  • GB MBC: Partially implement TAMA5 RTC
  • GB Video: Add default SGB border
  • GBA: Automatically skip BIOS if ROM has invalid logo
  • GBA: Refine multiboot detection (fixes #2192)
  • GBA Cheats: Implement “never” type codes (closes #915)
  • GBA DMA: Enhanced logging (closes #2454)
  • GBA Memory: Implement adjustable EWRAM waitstates (closes #1276)
  • GBA Savedata: Store RTC data in savegames (closes #240)
  • GBA Video: Implement layer placement for OpenGL renderer (fixes #1962)
  • GBA Video: Fix highlighting for sprites with mid-frame palette changes
  • mGUI: Add margin to right-aligned menu text (fixes #871)
  • mGUI: Autosave less frequently when fast-forwarding
  • Qt: Rearrange menus some
  • Qt: Clean up cheats dialog
  • Qt: Only set default controller bindings if loading fails (fixes #799)
  • Qt: Save converter now supports importing GameShark Advance saves
  • Qt: Save positions of multiplayer windows (closes #2128)
  • Qt: Add optional frame counter to OSD (closes #1728)
  • Qt: Add optional emulation-related information on reset (closes #1780)
  • Qt: Add QOpenGLWidget cross-thread codepath for macOS (fixes #1754)
  • Qt: Enable -b for Boot BIOS menu option (fixes #2074)
  • Qt: Add tile range selection to tile viewer (closes #2455)
  • Qt: Show warning if XQ audio is toggled while loaded (fixes #2295)
  • Qt: Add e-Card passing to the command line (closes #2474)
  • Qt: Boot both a multiboot image and ROM with CLI args (closes #1941)
  • Qt: Improve cheat parsing (fixes #2297)
  • Qt: Change lossless setting to use WavPack audio
  • Qt: Use FFmpeg to convert additional camera formats, if available
  • Qt: Resume crashed game when loading a save state
  • Qt: Include cheats in bug report
  • SDL: Support exposing an axis directly as the gyro value (closes #2531)
  • Windows: Attach to console if present
  • VFS: Early return NULL if attempting to map 0 bytes from a file
  • Vita: Add bilinear filtering option (closes #344)



https://mgba.io/