mGBA 0.6 beta 1
mGBA 0.6.0 has been long delayed. It’s dense with new features and unfortunately not all of those features are hugely well-tested. However, it’s almost ready for release. Before a stable release, more comprehensive testing is needed. In the getting out what’s already working and promoting testing, mGBA 0.6 beta 1 is now available. The final release of mGBA 0.6.0 should be out within a few weeks.
The following features are either new and not very well tested or heavily revamped and in need of more testing. Please focus on these while testing and report any and all bugs on GitHub or email bugs@mgba.io.
- Game Boy support got some pretty serious changes and may be buggy in some cases.
- The new debugging tools, such as the command-line debugger and the sprite viewer, may be prone to deadlocking or crashing.
- The library view is quite new and not heavily tested yet.
- There are now translations for German and Spanish that are not well reviewed and partially incomplete.
- Performance. The core event timing was rewritten and should be faster, but may be slower in some cases.
The following changes were made between 0.5.2 and 0.6 beta 1:
Features:
- GBA: Support printing debug strings from inside a game
- GBA: Better cheat type autodetection
- GB: Tile viewer
- Sprite viewer
- Debugging console
- Improved memory viewer
- GB: LR35902/GB-Z80 disassembler
- Configuration of gamepad hats
- Qt: Spanish translation (by Kevin López)
- Add option for whether rewinding restores save games
- Qt: German translation (by Lothar Serra Mari)
- Savestates now contain any RTC override data
- Command line ability to override configuration values
- Add option to allow preloading the entire ROM before running
- GB: Video/audio channel enabling/disabling
- Add option to lock video to integer scaling
- Video log recording for testing and bug reporting
- Library view
- Debugger: Segment/bank support
- GB: Symbol table support
- GB MBC: Add MBC1 multicart support
- Implement keypad interrupts
- LR35902: Watchpoints
- Memory search
- Debugger: Execution tracing
Bugfixes:
- LR35902: Fix core never exiting with certain event patterns
- GB Timer: Improve DIV reset behavior
- GBA Memory: Improve initial skipped BIOS state
- GBA BIOS: Implement BitUnPack
- ARM7: Fix MLA/*MULL/*MLAL timing
- GBA: Fix multiboot ROM loading
- Libretro: Fix saving in GB games (fixes #486)
- LR35902: Fix pc overflowing current region off-by-one
- GB MBC: Fix ROM bank overflows getting set to bank 0
- Qt: Fix timing issues on high refresh rate monitors
- GBA Savedata: Fix savedata unmasking (fixes #441)
- Util: Fix overflow when loading invalid UPS patches
- Tools: Fix recurring multiple times over the same library
- GBA I/O: Handle audio registers specially when deserializing
- Util: Fix highest-fd socket not being returned by SocketAccept
- Qt: Fix linking after some windows have been closed
- GBA Video: Fix wrong palette on 256-color sprites in OBJWIN
- Windows: Fix VDir.rewind
- SDL: Fix game crash check
- SDL: Fix race condition with audio thread when starting
- GB: Fix flickering when screen is strobed quickly
- FFmpeg: Fix overflow and general issues with audio encoding
- Qt: Fix crash when changing audio settings after a game is closed
- GBA BIOS: Fix ArcTan sign in HLE BIOS
- GBA BIOS: Fix ArcTan2 sign in HLE BIOS (fixes #689)
- GBA Video: Don’t update background scanline params in mode 0 (fixes #377)
- Qt: Ensure CLI backend is attached when submitting commands (fixes #662)
- Core: Fix crash with rewind if savestates shrink
- Test: Fix crash when loading invalid file
- GBA Hardware: Fix crash if a savestate lies about game hardware
- Test: Fix crash when fuzzing fails to load a file
- GBA: Fix multiboot loading resulting in too small WRAM
- Test: Don’t rely on core for frames elapsed
- Test: Fix crash when loading invalid file
- GBA Hardware: Fix crash if a savestate lies about game hardware
- Test: Fix crash when fuzzing fails to load a file
- Qt: Disable “New multiplayer window” when MAX_GBAS is reached (fixes #107)
- LR35902: Fix decoding LD r, $imm and 0-valued immediates (fixes #735)
- GB: Fix STAT blocking
- GB MBC: Fix swapping carts not detect new MBC
- GB Timer: Fix DIV batching if TAC changes
- GB Video: Reset renderer when loading state
- GBA BIOS: Fix INT_MIN/-1 crash
- GBA Savedata: Update and fix Sharkport importing (fixes #658)
- OpenGL: Fix some shaders causing offset graphics
- Qt: Fix game unpausing after frame advancing and refocusing
- GB Timer: Fix sub-M-cycle DIV reset timing and edge triggering
- Core: Fix interrupting a thread while on the thread (fixes #692)
- Core: Fix directory sets crashing on close if base isn’t properly detached
Misc:
- SDL: Remove scancode key input
- GBA Video: Clean up unused timers
- Test: Add a basic test suite
- GBA Video: Allow multiple handles into the same tile cache
- VFS: Call msync when syncing mapped data
- GBA Video, GB Video: Colors are now fully scaled
- VFS: Allow truncating memory chunk VFiles
- Debugger: Modularize CLI debugger
- Core: Clean up some thread state checks
- Debugger: Make building with debugging aspects optional
- GBA Memory: Support for Mo Jie Qi Bing by Vast Fame (taizou)
- GBA Memory: Support reading/writing POSTFLG
- Util: Add size counting to Table
- Qt: Move last directory setting from qt.ini to config.ini
- 3DS, PSP2, Wii: Last directory loaded is saved
- GB Audio: Simplify envelope code
- GB Audio: Improve initial envelope samples
- Debugger: Add functions for read- or write-only watchpoints
- GBA DMA: Refactor DMA out of memory.c
- GBA DMA: Move DMAs to using absolute timing
- All: Add C++ header guards
- GBA I/O: Clear JOYSTAT RECV flag when reading JOY_RECV registers
- GBA I/O: Set JOYSTAT TRANS flag when writing JOY_TRANS registers
- Qt: Improved HiDPI support
- Qt: Expose configuration directory
- Feature: Move game database from flatfile to SQLite3
- GB Audio: Start implementing “zombie” audio (fixes #389)
- VFS: Fix some minor VFile issues with FILEs
- Core: Add generic checksum function
- Feature: Support ImageMagick 7
- All: Move time.h include to common.h
- CMake: Add ability to just print version string
- Qt: Merge “Save” and “OK” buttons in shader options
- SDL: Automatically map controllers when plugged in
- Qt: Automatically load controller profile when plugged in
- OpenGL: Add xBR-lv2 shader
- GBA, GB: ROM is now unloaded if a patch is applied
- Util: Add 8-bit PNG write support
- Qt: Rename “Resample video” option to “Bilinear filtering”
- GBA Video: Optimize when BLD* registers are written frequently
- Core: Cores can now have multiple sets of callbacks
- GBA: Ignore invalid opcodes used by the Wii U VC emulator
- Qt: Remove audio thread
- Qt: Remove audio buffer sizing in AudioProcessorQt
- Qt: Re-enable QtMultimedia on Windows
- FFmpeg: Return false if a file fails to open
- FFmpeg: Force MP4 files to YUV420P
- Qt: Make “Mute” able to be bound to a key
- Core: Restore sleep callback
- Qt: Add .gb/.gbc files to the extension list in Info.plist
- Feature: Make -l option explicit
- Core: Ability to enumerate and modify video and audio channels
- Debugger: Make attaching a backend idempotent
- VFS: Optimize expanding in-memory files
- VFS: Add VFileFIFO for operating on circle buffers
- Core: Move rewind diffing to its own thread
- Util: Tune patch-fast extent sizes
- Qt: Relax hard dependency on OpenGL
- GB Video: Improved video timings
- Core: List memory segments in the core
- Core: Move savestate creation time to extdata
- Debugger: Add mDebuggerRunFrame convenience function
- GBA Memory: Remove unused prefetch cruft
- GB: Trust ROM header for number of SRAM banks (fixes #726)
- Core: Config values can now be hexadecimal
- GB: Reset with initial state of DIV register
- GB MBC: New MBC7 implementation
- Qt: Better highlight active key in control binding
- Core: Improved threading interrupted detection
Get it now in the Downloads section. Binaries are available for Windows, Ubuntu, macOS, 3DS, Wii, and Vita, and the source code is available for all other platforms.