mGBA 0.7 beta 1
While it’s been long enough since mGBA 0.6.0 came out that the release of mGBA 0.7.0 has seemed like it may never happen, I’m glad to say we’re finally reaching the end of mGBA 0.6’s time. Due to significant life changes, not the least of which is getting a new job with a long, tiring commute, I’ve not has as much time to do serious feature work. However, there have been plenty of changes, fixes, improvements under the hood. Though mGBA 0.7.0 is almost ready I’d like to see a signficant wave of testing and bugfixes before I deem it stable. As such, mGBA 0.7 beta 1 is now available, and hopefully the release of mGBA 0.7.0 will be out within a week or two.
This time around the biggest areas of change are not new features, but rather significant improvements in existing areas. Please focus on these while testing and report any and all bugs on GitHub or email bugs@mgba.io.
- Game Boy audio has been revamped. It may not sound correct in many cases and narrowing down which cases are reliably broken will help fix them.
- New Game Boy peripherals are supported, including the Camera, Printer, and Super Game Boy. Additionally, several new mappers have partial support.
- Debugging tools are improved, including a map viewer, conditional breakpoints, and symbol loading.
- There are now translations for Italian and French that are not well reviewed and partially incomplete.
- Switch support is brand new and very young. It’s very likely to be full of bugs.
The following changes were made between 0.6.3 and 0.7 beta 1:
Features:
- ELF support
- Game Boy Camera support
- Qt: Set default Game Boy colors
- Game Boy Printer support
- Super Game Boy support
- Customizable autofire speed
- Ability to set default Game Boy model
- Map viewer
- Automatic cheat loading and saving
- GameShark and Action Replay button support
- AGBPrint support
- Debugger: Conditional breakpoints and watchpoints
- Ability to select GB/GBC/SGB BIOS on console ports
- Optional automatic state saving/loading
- Access to ur0 and uma0 partitions on the Vita
- Partial support for MBC6, MMM01, TAMA and HuC-1 GB mappers
- GBA: ARMIPS/A22i-style and ELF symbol table support
- Initial Switch port
Bugfixes:
- GB Audio: Make audio unsigned with bias (fixes #749)
- GB Serialize: Fix audio state loading
- GB Video: Fix dot clock timing being slightly wrong
- Qt: Fix GL display when loading a game from CLI (fixes #843)
- ARM: Fix MSR when T bit is set
- GB Serialize: Fix game title check
- GB: Revamp IRQ handling based on new information
- GBA Video: Don’t mask out high bits of BLDY (fixes #899)
- GB Video: Fix loading states while in mode 3
- GBA DMA: Fix invalid DMA reads (fixes #142)
- GBA Video: Add delay when enabling BGs (fixes #744, #752)
- GB Timer: Minor accuracy improvements
- GB Audio: Clock frame events on DIV
- GBA Timer: Fix timers sometimes being late (fixes #1012)
- GBA Hardware: Fix RTC overriding light sensor (fixes #1069)
- GBA Savedata: Fix savedata modified time updating when read-only
- GB Video: Fix enabling window when LY > WY (fixes #409)
- GBA Video: Start timing mid-scanline when skipping BIOS
- Core: Fix audio sync breaking when interrupted
- Qt: Improve FPS timer stability
- GBA Serialize: Fix loading channel 3 volume (fixes #1107)
- GBA SIO: Fix unconnected SIOCNT for multi mode (fixes #1105)
- GBA BIOS: Fix BitUnPack final byte
- GB I/O: DMA register is R/W
- GB Video: Fix SCX timing
- GBA Video: Improve sprite cycle counting (fixes #1126)
- GB, GBA Savedata: Fix savestate loading overwriting saves on reset
- GBA Video: Make layer disabling work consistently
- GB: Fix IRQ disabling on the same T-cycle as an assert
- Core: Fix ordering events when scheduling during events
- GBA: Reset WAITCNT properly
- GBA Serialize: Fix loading states in Hblank
- PSP2: Fix more issues causing poor audio
- GBA Memory: Fix Vast Fame support (taizou) (fixes #1170)
- GB, GBA Savedata: Fix unmasking savedata crash
- GBA DMA: Fix temporal sorting of DMAs of different priorities
- FFmpeg: Fix encoding audio/video queue issues
- GB Serialize: Fix IRQ pending/EI pending confusion
- GB MBC: Improve multicart detection heuristic (fixes #117)
- GB Audio: Fix channel 3 reset value
- GB Audio: Fix channel 4 initial LFSR
- GB, GBA Video: Don’t call finishFrame twice in thread proxy
- GB Audio: Fix channel 1, 2 and 4 reset timing
- Util: Fix wrapping edge cases in RingFIFO
Misc:
- GBA Timer: Use global cycles for timers
- GBA: Extend oddly-sized ROMs to full address space (fixes #722)
- All: Make FIXED_ROM_BUFFER an option instead of 3DS-only
- Qt: Redo GameController into multiple classes
- Test: Restructure test suite into multiple executables
- Python: Integrate tests from cinema test suite
- Util: Don’t build crc32 if the function already exists
- GBA: Implement display start DMAs
- Qt: Prevent window from being created off-screen
- Qt: Add option to disable FPS display
- GBA: Improve multiboot image detection
- GB MBC: Remove erroneous bank 0 wrapping
- GBA Cheats: Allow multiple ROM patches in the same slot
- GB: Skip BIOS option now works
- Libretro: Add frameskip option
- GBA Memory: 64 MiB GBA Video cartridge support
- PSP2: Use system enter key by default
- 3DS: Remove deprecated CSND interface
- Qt: Options to mess around with layer placement
- GBA Savedata: Remove ability to disable realistic timing
- Qt: Add load alternate save option
- GB Audio: Improved audio quality
- GB, GBA Audio: Increase max audio volume
- GB: Fix VRAM/palette locking (fixes #1109)
- GB Video: Darken colors in GBA mode
- FFmpeg: Support libswresample (fixes #1120, Bug 123)
- FFmpeg: Support lossless h.264 encoding
- Feature: Added loading savestates from command line
- Qt: Allow pausing game at load (fixes #1129)
- Wii: Move audio handling to callbacks (fixes #803)
- Qt: Clean up FPS target UI (fixes #436)
- Core: Remove broken option for whether rewinding restores save games
- FFmpeg: Support lossless VP9 encoding
- mGUI: Add fast forward toggle
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.