ALL PREVIOUS UPDATES & CHANGELOGS LISTED BELOW
v0.1.1 to v0.8.2
mGBA 0.8.2
Jun 14, 2020 – written by endrift
A new release of mGBA, version 0.8.2, is available. This version is a bugfix release, which contains many stability and accuracy fixes. Notably, several rendering edge cases were fixed in both the default renderer and the OpenGL renderer. An extensive list of changes follows after the cut.
Emulation fixes:
- ARM: Fix timing on Thumb shift instructions
- GB: Fix GBC game registers after skipping BIOS
- GB MBC: Support 4MB MBC30 ROMs (fixes #1713)
- GB Video: Fix BGPS value after skipping BIOS (fixes #1717)
- GBA: Add missing RTC overrides for Legendz games
- GBA BIOS: Reset renderer when RegisterRamReset called (fixes #1756)
- GBA SIO: Fix Multiplayer busy bit
- GBA SIO: Fix double-unloading active driver
- GBA Timers: Fix deserializing count-up timers
- GBA Video: Fix mosaic objects drawing past the end (fixes #1702)
- GBA Video: Fix disabling OBJWIN in GL renderer (fixes #1759)
- GBA Video: Add missing parts of 256-color mode 0 mosaic (fixes #1701)
- GBA Video: Fix double-size OBJ wrapping in GL renderer (fixes #1712)
- GBA Video: Simplify sprite cycle counting (fixes #1279)
- GBA Video: Fix sprite/backdrop blending regression
Other fixes:
- 3DS: Fix framelimiter on newer citro3d (fixes #1771)
- ARM: Fix disassembling of several S-type instructions (fixes #1778)
- ARM Debugger: Clear low bit on breakpoint addresses (fixes #1764)
- CMake: Always use devkitPro toolchain when applicable (fixes #1755)
- Core: Fix ELF loading regression (fixes #1669)
- Core: Fix crash modifying hash table entry (fixes #1673)
- GB Video: Fix some cases where SGB border doesn't draw to multi-buffers
- GBA: Reject incorrectly sized BIOSes
- GBA: Break infinite loop for 0-frame mVLs (fixes #1723)
- Qt: Fix OpenGL 2.1 support (fixes #1678)
- Qt: Fix unmapping zipped ROM (fixes #1777)
Misc:
- 3DS: Clean up legacy initialization (fixes #1768)
- GBA Serialize: Only flunk BIOS check if official BIOS was expected
- Qt: Disable Replace ROM option when no game loaded
- Qt: Defer texture updates until frame is drawn (fixes #1590)
- Qt: Set icon for Discord Rich Presence
- Qt: Show a warning when save file can't be opened
mGBA 0.8.1
Feb 16, 2020 – written by endrift
A new release of mGBA, version 0.8.1, is available. This version is a bugfix release, which contains many stability and accuracy fixes. Notably, many Qt frontend bugs have been fixed, and the SDL version was updated. An extensive list of changes follows after the cut.
Emulation fixes:
- GB Serialize: Fix timing bug loading channel 4 timing
- GBA: Fix multiboot entry point while skipping BIOS
- GBA BIOS: Fix undefined instruction HLE behavior
- GBA DMA: Fix invalid audio DMA parameters
- GBA Memory: Misaligned SRAM writes are ignored
- GBA Serialize: Fix serializing DMA transfer register
- GBA Serialize: Fix audio DMA timing deserialization
- GBA Video: Fix OAM not invalidating after reset (fixes #1630)
- GBA Video: Fix backdrop blending on lines without sprites (fixes #1647)
- GBA Video: Fix OpenGL sprite flag priority
Other fixes:
- Core: Fix race condition initializing thread proxy
- Core: Fix integer overflow in ELF loading
- FFmpeg: Fix crash when -strict -2 is needed for vcodec or container
- FFmpeg: Disallow recording video with no audio nor video
- GBA: Automatically skip BIOS for multiboot ROMs
- Qt: Only dynamically reset video scale if a game is running
- Qt: Fix race condition with proxied video events
- Qt: Fix color selection in asset view (fixes #1648)
- Qt: Fix missing OSD messages
- Qt: Fix crash unloading shaders
- Qt: Fix toggled actions on gamepads (fixes #1650)
- Qt: Fix extraneous dialog (fixes #1654)
- Qt: Fix window title not updating after shutting down game
- Qt: Fix GIF view not allowing manual filename entry
- Qt: Fix non-GB build (fixes #1664)
- Qt: Fix pausing Qt Multimedia audio (fixes #1643)
- Qt: Fix invalid names for modifier keys (fixes #525)
- SDL: Refresh stale pointers after adding a joystick (fixes #1622)
- Util: Fix crash reading invalid ELFs
- VFS: Fix handle leak when double-mapping (fixes #1659)
Misc:
- FFmpeg: Add more presets
- Qt: Fix non-SDL build (fixes #1656)
- SDL: Use DirectSound audio driver by default on Windows
- Switch: Make OpenGL scale adjustable while running
mGBA 0.8.0
Jan 21, 2020 – written by endrift
A little late (okay, a lot late), mGBA 0.8.0 is finally available as a stable release. This is a major feature release and includes some highly anticipated features. Notably, the high-resolution OpenGL renderer for GBA games, BattleChip Gate support, interframe blending, and much more. Additionally, it includes over 50 bug fixes and hundreds of other changes. A preview of the features follows after the cut, along with a full list of changes.
High-resolution OpenGL renderer
The most anticipated feature of mGBA 0.8.0 is the high-resolution OpenGL renderer. With this enabled the GBA screen is rendered on the GPU instead of the usual software rendering, which allows scaling up beyond the usual 240×160 resolution without thrashing the CPU. With a good GPU it can even render at 4K resolution. This lets rotation and scaling effects look much cleaner and allows the "mode 7" effect to be even more impressive.
The high-resolution OpenGL renderer is available on Windows, Linux, macOS, and Switch. Enable it under the Enhancements pane in Settings. Performance improvements and bug fixes are expected in future releases.
BattleChip Gate
The BattleChip Gate (and associated Progress Gate and Beast Link Gate) are long unemulated peripherals for the GBA. They hook up to MegaMan Battle Network 4, 5 and 6 respectively and allow access to the Operation Battle minigame, as well as using chips in-game. Apart from use in multiplayer, these peripherals are fully supported in mGBA 0.8.0. Just open the BattleChip Gate dialog, under Emulation, before the title screen comes up to use them. If inserted too late the game may not recognize it and you'll need to reset.
The first time the BattleChip Gate screen is opened it will prompt to download all of the BattleChip icons. This is optional, but recommended. After opening the dialog you can select a deck of chips you want to use and simply click on them to insert them.
Interframe blending
A common effect on the GBA is to do every-other frame flickering. While this is not a new effect by any stretch of the imagination—games have been doing this for decades—it only works well on screens with ghosting. On old console games this targeted phosphor fading on CRTs, whereas on the GBA it targets the LCD panel's ghosting. However, most modern LCDs have a much better response time, and sometimes the framerate isn't perfect, leading to visible flickering. As such, a long-standing request for mGBA has been
interframe blending. While ghosting has been possible for some time now with shaders, it was never single-frame and baked into the frontends. In mGBA 0.8.0 every official port received a single-frame interframe blending feature. Some examples of the effects of this feature are seen below.
In this example, Golden Sun jitters the world map to provide a temporal anti-aliasing effect.
Many games flicker parts of the screen to create a semi-transparency effect. Here F-Zero: Maximum Velocity flickers the minimap.
Frame inspector
The new frame inspector feature in mGBA 0.8.0 allows for advanced dissection of rendered frames. By replaying the rendering of a single frame with settings tweaked it lets users figure out which component of a screen is rendered where on the screen, disable specific layers, or even select sprites. Disabling scanline effects also lets users see tricks that a game employs for more advanced scenes. These tweaked versions of a frame can be exported to a PNG if desired.
The frame inspector showing off a highlighted sprite and several HUD sprites disabled.
Currently only GBA games are supported in the frame inspector. GB/C games and more tweaking features will be added in later versions of mGBA.
And more…
Some smaller and experimental features were also added in 0.8.0:
- mGBA now has Discord Rich Presence integration for displaying the current game you're playing. Turn it on in the Interface panel in settings.
- A work-in-progress "XQ" audio feature that works with most GBA games is included in the Enhancements pane in settings. It's a very early WIP and not production ready but may work decently with some games. It also does not work yet with A/V recording due to implementation limitations.
- Support for loading a few additional cheat code file formats. However, VBA .clt files are still not supported at this time.
- Several smaller debugging features, such as an improved map viewer, an improved sprite viewer, and memory range dumping.
Changes from 0.7.3
Features
- Improved logging configuration
- One-Player BattleChip/Progress/Beast Link Gate support
- Add Game Boy Color palettes for original Game Boy games
- Debugger: Add unary operators and memory dereferencing
- GB: Expose platform information to CLI debugger
- Support Discord Rich Presence
- Debugger: Add tracing to file
- Enhanced map viewer, supporting bitmapped GBA modes and more displayed info
- OpenGL renderer with high-resolution upscaling support
- Experimental high level "XQ" audio for most GBA games
- Interframe blending for games that use flicker effects
- Frame inspector for dissecting and debugging rendering
- Switch: Option to use built-in brightness sensor for Boktai
- Ports: Ability to enable or disable all SGB features (closes #1205)
- Ports: Ability to crop SGB borders off screen (closes #1204)
- Cheats: Add support for loading Libretro-style cht files
- GBA Cheats: Add support for loading EZ Flash-style cht files
- Support for unlicensed Wisdom Tree Game Boy mapper
- Qt: Add export button for tile view (closes #1507)
- Qt: Add recent game list clearing (closes #1380)
- GB: Yanking gamepak now supported
- Qt: Memory range dumping (closes #1298)
Emulation fixes
- GB: Fix using boot ROM with MMM01 games
- GB Audio: Only reset channel 3 sample in DMG mode
- GB Audio: Sample inactive channels (fixes #1455, mgba.io/i/1456)
- GB Audio: Fix channel 4 volume (fixes #1529)
- GB I/O: Filter IE top bits properly (fixes #1329)
- GB Memory: Better emulate 0xFEA0 region on DMG, MGB and AGB
- GB Video: Delay LYC STAT check (fixes #1331)
- GB Video: Fix window being enabled mid-scanline (fixes #1328)
- GB Video: Fix mode 0 window edge case (fixes #1519)
- GB Video: Fix color scaling in AGB mode
- GBA: All IRQs have 7 cycle delay (fixes #539, mgba.io/i/1208)
- GBA: Reset now reloads multiboot ROMs
- GBA BIOS: Fix multiboot entry point (fixes Magic Floor)
Other fixes
- Core: Improved lockstep driver reliability (Le Hoang Quyen)
- FFmpeg: Drain recording buffers
- GB: Fix reading ROM immediately after unmapping BIOS
- GB SIO: Fix lockstep failing games aren't reloaded
- GBA Cheats: Fix value incrementing in CB slide codes (fixes #1501)
- Libretro: Fix crash changing allowing opposing directions (hhromic)
- Qt: Fix some Qt display driver race conditions
- Qt: Fix menu bar staying hidden in full screen (fixes #317)
- Qt: Only show emulator restart warning once per settings saving
- Qt: Fix LibraryController initialization (fixes #1324)
- Shaders: Fix gba-color shader resolution (fixes #1435)
- Switch: Fix audio when video rate desyncs (fixes #1532)
Miscellaneous
- CMake: Don't use libzip on embedded platforms (fixes #1527)
- Core: Add keysRead callback
- Core: Create game-related paths if they don't exist (fixes #1446)
- Core: Add more memory search ops (closes #1510)
- Debugger: Make tracing compatible with breakpoints/watchpoints
- Debugger: Print breakpoint/watchpoint number when inserting
- Feature: Switch from ImageMagick to FFmpeg for GIF generation
- FFmpeg: Support audio-only recording
- GB Memory: Support running from blocked memory
- GBA BIOS: Add timings for HLE BIOS math functions (fixes #1396)
- GBA BIOS: Fix clobbered registers in CpuSet (fixes #1531)
- GBA Savedata: EEPROM performance fixes
- GBA Savedata: Automatically map 1Mbit Flash files as 1Mbit Flash
- Debugger: Add breakpoint and watchpoint listing
- mGUI: Remember name and position of last loaded game
- OpenGL: Only resize textures when needed
- Qt: Don't unload ROM immediately if it crashes
- Qt: Support switching webcams
- Qt: Cap window size on start to monitor size
- Qt: Open a message box for Qt frontend errors
- Qt: Increase maximum magnifications and scaling
- Qt: Add native FPS button to settings view
- Qt: Improve sync code
- Qt: Add option to pause on minimizing window (closes #1379)
- Qt: Scale pixel color values to full range (fixes #1511)
- Qt: Remove What's This icon from dialogs
- Qt: Printer quality of life improvements (fixes #1540)
- Qt: Add copy and QoL improvements to graphic views (closes #1541)
- Qt: Show list of all sprites in sprite view
- Qt: Add option for disabling OSD messages
- Qt, OpenGL: Disable integer scaling for dimensions that don't fit
- SM83: Support PC-relative opcode decoding
- Switch: Dynamic display resizing
- Switch: Support file associations
- Vita: L2/R2 and L3/R3 can now be mapped on PSTV (fixes #1292)
Changes from 0.8 beta 1
Emulation fixes
- ARM: Fix STR writeback pipeline stage
- ARM: Partially fix LDM/STM writeback with empty register list
- ARM: Fix stepping when events are pending
- GBA DMA: Fix case where DMAs could get misaligned (fixes #1092)
- GBA Memory: Fix open bus from IWRAM (fixes #1575)
- GBA Timers: Improve timer startup emulation
- GBA Video: Fix OpenGL renderer 512x512 backgrounds (fixes #1572)
- GBA Video: Fix BLDY for semitransparent sprite on non-target-2 backgrounds
- GBA Video: Fix effects blending improperly in some non-last windows
- GBA Video: Copy higher priority target 1 flag
Other fixes
- 3DS: Fix screen darkening (fixes #1562)
- Core: Fix uninitialized memory issues with graphics caches
- Core: Return null for out of bounds cached tile VRAM querying
- GBA Video: Fix OpenGL fragment data binding
- GBA Video: Fix mosaic in modes 1-5 in OpenGL (fixes #1620)
- Debugger: Fix tracing skipping instructions (fixes #1614)
- OpenGL: Only invalidate texture if dimensions change (fixes #1612)
- Qt: Fix fast forward mute being reset (fixes #1574)
- Qt: Fix scrollbar arrows in memory view (fixes #1558)
- Qt: Fix several cases where shader selections don't get saved
- Qt: Fix division by zero error in invalid TilePainter state
- Qt: Fix "restart needed" dialog after first config (fixes #1601)
- Qt: Fix undesired screen filtering when paused (fixes #1602)
- Qt: Fix sprite view using wrong base address (fixes #1603)
- Qt: Fix inability to clear default keybindings
- Qt: Release held actions if they get rebound
- Qt: Fix crash double-clicking menus in shortcut settings (fixes #1627)
- Qt: Fix record A/V window not updating resolution (fixes #1626)
- Vita: Fix analog controls (fixes #1554)
- Wii: Fix game fast-forwarding after slowing down
- Wii: Improve audio buffering (fixes #1617)
Miscellaneous
- GB Memory: Support manual SRAM editing (fixes #1580)
- GBA: Trim non-movie ROMs to 32 MiB if applicable
- GBA Audio: Redo channel 4 batching for GBA only
- GBA I/O: Stop logging several harmless invalid register reads
- GBA Video: Changing OpenGL scaling no longer requires restart
- Debugger: Separate aliases from main commands
- Debugger: Print break-/watchpoint ID when breaking in CLI
- Debugger: Minor interface cleanup
- SDL: Use controller GUID instead of name
- SM83: Rename LR35902 to SM83
- Tools: Allow using threaded renderer in perf.py
- Tools: Clean up unused argument in mgba-perf
mGBA 0.8 beta 1
Oct 20, 2019 – written by endrift
After far too long in development, mGBA 0.8.0 is almost ready for release. While there are still a few missing features left to finish, I didn't want to hold up 0.8 that much longer. While I'm working on those last features I'm hoping a final push for testing will help flatten out any more serious issues before the final release of mGBA 0.8.0, so I'm releasing the first beta for mGBA 0.8.
Some notable new features of mGBA 0.8 include:
- A high-resolution hardware renderer for enhanced GBA graphics
- Discord Rich Presence support
- BattleChip Gate emulation
There are also several smaller features, some incomplete features, new debugger capabilities, and more. While mGBA 0.8 beta 1 is relatively well tested for a beta, I encourage heavy testing before deeming this a stable release, while I work on the last few features. The final release of mGBA 0.8.0 will hopefully be within the next few weeks.
The following changes were made between 0.7.3 and 0.8 beta 1:
Features:
- Improved logging configuration
- One-Player BattleChip/Progress/Beast Link Gate support
- Add Game Boy Color palettes for original Game Boy games
- Debugger: Add unary operators and memory dereferencing
- GB: Expose platform information to CLI debugger
- Support Discord Rich Presence
- Debugger: Add tracing to file
- Enhanced map viewer, supporting bitmapped GBA modes and more displayed info
- OpenGL renderer with high-resolution upscaling support
- Experimental high level "XQ" audio for most GBA games
- Interframe blending for games that use flicker effects
- Frame inspector for dissecting and debugging rendering
- Switch: Option to use built-in brightness sensor for Boktai
- Ports: Ability to enable or disable all SGB features (closes #1205)
- Ports: Ability to crop SGB borders off screen (closes #1204)
- Cheats: Add support for loading Libretro-style cht files
- GBA Cheats: Add support for loading EZ Flash-style cht files
- Support for unlicensed Wisdom Tree Game Boy mapper
- Qt: Add export button for tile view (closes #1507)
- Qt: Add recent game list clearing (closes #1380)
- GB: Yanking gamepak now supported
- Qt: Memory range dumping (closes #1298)
Emulation fixes:
- GB: Fix using boot ROM with MMM01 games
- GB Audio: Only reset channel 3 sample in DMG mode
- GB Audio: Sample inactive channels (fixes #1455, mgba.io/i/1456)
- GB Audio: Fix channel 4 volume (fixes #1529)
- GB I/O: Filter IE top bits properly (fixes #1329)
- GB Memory: Better emulate 0xFEA0 region on DMG, MGB and AGB
- GB Video: Delay LYC STAT check (fixes #1331)
- GB Video: Fix window being enabled mid-scanline (fixes #1328)
- GB Video: Fix mode 0 window edge case (fixes #1519)
- GB Video: Fix color scaling in AGB mode
- GBA: All IRQs have 7 cycle delay (fixes #539, mgba.io/i/1208)
- GBA: Reset now reloads multiboot ROMs
- GBA BIOS: Fix multiboot entry point (fixes Magic Floor)
Other fixes:
- Core: Improved lockstep driver reliability (Le Hoang Quyen)
- FFmpeg: Drain recording buffers
- GB: Fix reading ROM immediately after unmapping BIOS
- GB SIO: Fix lockstep failing games aren't reloaded
- GBA Cheats: Fix value incrementing in CB slide codes (fixes #1501)
- Libretro: Fix crash changing allowing opposing directions (hhromic)
- Qt: Fix some Qt display driver race conditions
- Qt: Fix menu bar staying hidden in full screen (fixes #317)
- Qt: Only show emulator restart warning once per settings saving
- Qt: Fix LibraryController initialization (fixes #1324)
- Shaders: Fix gba-color shader resolution (fixes #1435)
- Switch: Fix audio when video rate desyncs (fixes #1532)
Misc:
- CMake: Don't use libzip on embedded platforms (fixes #1527)
- Core: Add keysRead callback
- Core: Create game-related paths if they don't exist (fixes #1446)
- Core: Add more memory search ops (closes #1510)
- Debugger: Make tracing compatible with breakpoints/watchpoints
- Debugger: Print breakpoint/watchpoint number when inserting
- Feature: Switch from ImageMagick to FFmpeg for GIF generation
- FFmpeg: Support audio-only recording
- GB Memory: Support running from blocked memory
- GBA BIOS: Add timings for HLE BIOS math functions (fixes #1396)
- GBA BIOS: Fix clobbered registers in CpuSet (fixes #1531)
- GBA Savedata: EEPROM performance fixes
- GBA Savedata: Automatically map 1Mbit Flash files as 1Mbit Flash
- Debugger: Add breakpoint and watchpoint listing
- LR35902: Support PC-relative opcode decoding
- mGUI: Remember name and position of last loaded game
- OpenGL: Only resize textures when needed
- Qt: Don't unload ROM immediately if it crashes
- Qt: Support switching webcams
- Qt: Cap window size on start to monitor size
- Qt: Open a message box for Qt frontend errors
- Qt: Increase maximum magnifications and scaling
- Qt: Add native FPS button to settings view
- Qt: Improve sync code
- Qt: Add option to pause on minimizing window (closes #1379)
- Qt: Scale pixel color values to full range (fixes #1511)
- Qt: Remove What's This icon from dialogs
- Qt: Printer quality of life improvements (fixes #1540)
- Qt: Add copy and QoL improvements to graphic views (closes #1541)
- Qt: Show list of all sprites in sprite view
- Qt: Add option for disabling OSD messages
- Qt, OpenGL: Disable integer scaling for dimensions that don't fit
- Switch: Dynamic display resizing
- Switch: Support file associations
- Vita: L2/R2 and L3/R3 can now be mapped on PSTV (fixes #1292)
mGBA 0.7.3
Sep 15, 2019 – written by endrift
A new release of mGBA, version 0.7.3, is available. This version is a bugfix release, which contains many stability and accuracy fixes. Notably, sprites that are broken at the top of the screen are fixed. An extensive list of changes follows after the cut.
Emulation fixes:
- GB: Fix savedata initialization (fixes #1478, #1478)
- GB: Fix SGB controller incrementing (fixes #1104)
- GB Audio: Improve channel 4 supersampling
- GB Printer: Reset printer buffer index after printing
- GB Audio: Deschedule channel 3 when disabled (fixes #1463)
- GB Audio: Deschedule channel 1 when disabled by sweep (fixes #1467)
- GB Video: Increment BCPS/OCPS even in mode 3 (fixes #1462)
- GBA Memory: Fix STM to VRAM (fixes #1430)
- GBA Memory: Fix STM/LDM to invalid VRAM
- GBA Video: Fix wrapped sprite mosaic clamping (fixes #1432)
- GBA Audio: Fix channel 4 aliasing (fixes #1265)
Other fixes:
- Core: Fix crashes if core directories aren't set
- Core: Fix crash when exiting game with cheats loaded
- GBA: Set up GPIO mapping on null and ELF ROM regions (fixes #1481)
- GBA Cheats: Fix PARv3 Thumb hooks
- GBA Cheats: Fix value incrementing in CB slide codes (fixes #1501)
- Qt: Fix FPS target maxing out at 59.727 (fixes #1421)
- Qt: Cap audio buffer size to 8192 (fixes #1433)
- Qt: Fix race conditions initializing GDB stub
- Qt: Improve cheat view UX
- Libretro: Fix crash changing allowing opposing directions (hhromic)
- mGUI: Fix crash if last loaded ROM directory disappears (fixes #1466)
- Switch: Fix threading-related crash on second launch
Misc:
- Qt: Make mute menu option also toggle fast-forward mute (fixes #1424)
- Qt: Show error message if file failed to load
mGBA 0.7.2
May 25, 2019 – written by endrift
A new release of mGBA, version 0.7.2, is available. This version is a bugfix release, which contains many stability and accuracy fixes. Notably, the 3DS version no longer hangs on non-CFW New 3DSes. An extensive list of changes follows after the cut.
Emulation fixes:
- GB: Fix HALT when IE and IF unused bits are set (fixes #1349)
- GB Timer: Fix timing adjustments when writing to TAC (fixes #1340)
- GB Video: Fix window y changing mid-window (fixes #1345)
- GB Video: Fix more window edge cases (fixes #1346)
- GBA: Fix RTC on non-standard sized ROMs (fixes #1400)
- GBA DMA: Fix DMA0-2 lengths (fixes #1344)
- GBA Memory: Fix writing to OBJ memory in modes 3 and 5
- GBA Memory: Prevent writing to mirrored BG VRAM (fixes #743)
- GBA Video: Fix scanline cache with scale factor change edge cases
- GBA Video: Fix sprite mosaic clamping (fixes #1008)
- GBA Video: Implement mosaic on transformed sprites (fixes #5)
Other fixes:
- 3DS: Ensure core 2 can be used for threaded renderer (fixes #1371)
- All: Fix several memory leaks
- GB Core: Fix toggling WIN and OBJ being swapped
- GBA: Fix skipping BIOS on irregularly sized ROMs
- CMake: Fix .deb imagemagick dependencies
- FFmpeg: Improve initialization reliability and cleanup
- FFmpeg: Fix audio conversion producing gaps
- LR35902: Fix disassembly of several CB-prefix instructions
- LR35902: Fix trailing whitespace in disassembly
- Qt: More app metadata fixes
- Qt: Fix load recent from archive (fixes #1325)
- Qt: Fix overrides getting discarded (fixes #1354)
- Qt: Fix saved scale not getting set on resize (fixes #1074)
- Qt: Fix crash in sprite viewer magnification (fixes #1362)
- Qt: Fix adjusting magnification in tile viewer when not fitting to window
- Qt: Fix bounded fast forward with Qt Multimedia
- Qt: Fix saving settings with native FPS target
- Wii: Fix aspect ratio (fixes #500)
Misc:
- Qt: Add missing HEVC NVENC option (fixes #1323)
- Qt: Improve camera initialization
- Vita: Improved frame drawing speed
mGBA 0.7.1
Feb 24, 2019 – written by endrift
A new release of mGBA, version 0.7.1, is available. This version is a bugfix release, which contains many stability and accuracy fixes. Notably, the new Switch port no longer crashes on second load and the dreaded save bug in the Vita port is now fixed. An extensive list of changes follows after the cut.
Bugfixes:
- 3DS: Work around menu freezing (fixes #1294)
- GB: Fix crash when accessing SRAM if no save loaded and cartridge has no SRAM
- GB Serialize: Fix loading states with negative pixel x (fixes #1293)
- GB, GBA Serialize: Fix loading two states in a row
- GBA: Fix video timing when skipping BIOS (fixes #1318)
- GBA DMA: Fix Display Start DMAs
- GBA DMA: Fix DMA start/end timing
- GBA DMA: Fix invalid DMA handling (fixes #1301)
- GBA Memory: Fix a few AGBPrint crashes
- GBA Memory: Fix OOB ROM reads showing up as AGBPrint memory
- GBA SIO: Prevent writing read-only multiplayer bits
- GBA Video: Fix enabling layers in non-tile modes (fixes #1317)
- Python: Fix crash when deleting files owned by library
- Python: Make sure GB link object isn't GC'd before GB object
- PSP2: Fix file descriptors dying on suspend (fixes #1123)
- Qt: Fix tile and sprite views not always displaying at first
- Qt: Fix audio context holding onto closed game controller
- Qt: Fix color picking in sprite view (fixes #1307)
- Qt: Fix window icon on X11
- Qt: Fix quick load recent accidentally saving (fixes #1309)
- Switch: Fix final cleanup (fixes #1283)
- Switch: Fix gyroscope orientation (fixes #1300)
Misc:
- GBA Video: Improve sprite cycle counting (fixes #1274)
- Qt: Updated Italian translation (by Vecna)
mGBA 0.7.0
Jan 26, 2019 – written by endrift
After an extended incubation period mGBA 0.7.0 is now available. This is a major feature release. It features a brand new Nintendo Switch port, vastly improved Game Boy support, dozens of bugfixes and accuracy improvements, and more debugging features. A full list of changes follows after the cut.
Changes from 0.6.3
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
- ARM: Fix MSR when T bit is set
- Core: Fix audio sync breaking when interrupted
- Core: Fix ordering events when scheduling during events
- FFmpeg: Fix encoding audio/video queue issues
- GB: Revamp IRQ handling based on new information
- GB: Fix IRQ disabling on the same T-cycle as an assert
- GB Audio: Make audio unsigned with bias (fixes #749)
- GB Audio: Clock frame events on DIV
- GB Audio: Fix channel 3 reset value
- GB Audio: Fix channel 4 initial LFSR
- GB Audio: Fix channel 1, 2 and 4 reset timing
- GB I/O: DMA register is R/W
- GB MBC: Improve multicart detection heuristic (fixes #1177)
- GB, GBA Savedata: Fix savestate loading overwriting saves on reset
- GB, GBA Savedata: Fix unmasking savedata crash
- GB Serialize: Fix audio state loading
- GB Serialize: Fix game title check
- GB Serialize: Fix IRQ pending/EI pending confusion
- GB Timer: Minor accuracy improvements
- GB Video: Fix dot clock timing being slightly wrong
- GB Video: Fix loading states while in mode 3
- GB Video: Fix enabling window when LY > WY (fixes #409)
- GB Video: Fix SCX timing
- GB, GBA Video: Don't call finishFrame twice in thread proxy
- GBA: Reset WAITCNT properly
- GBA BIOS: Fix BitUnPack final byte
- GBA BIOS: Fix BitUnPack narrowing
- GBA DMA: Fix invalid DMA reads (fixes #142)
- GBA DMA: Fix temporal sorting of DMAs of different priorities
- GBA Hardware: Fix RTC overriding light sensor (fixes #1069)
- GBA Hardware: Fix RTC handshake transition (fixes #1134)
- GBA Memory: Fix Vast Fame support (taizou) (fixes #1170)
- GBA Savedata: Fix savedata modified time updating when read-only
- GBA Serialize: Fix loading channel 3 volume (fixes #1107)
- GBA Serialize: Fix loading states in Hblank
- GBA SIO: Fix unconnected SIOCNT for multi mode (fixes #1105)
- GBA Timer: Fix timers sometimes being late (fixes #1012)
- GBA Video: Don't mask out high bits of BLDY (fixes #899)
- GBA Video: Add delay when enabling BGs (fixes #744, #752)
- GBA Video: Start timing mid-scanline when skipping BIOS
- GBA Video: Improve sprite cycle counting (fixes #1126)
- GBA Video: Make layer disabling work consistently
- PSP2: Fix more issues causing poor audio
- Qt: Fix GL display when loading a game from CLI (fixes #843)
- Qt: Improve FPS timer stability
- Util: Fix wrapping edge cases in RingFIFO
Miscellaneous
- 3DS: Remove deprecated CSND interface
- All: Make FIXEDi_ROM_BUFFER an option instead of 3DS-only
- Core: Remove broken option for whether rewinding restores save games
- Feature: Added loading savestates from command line
- FFmpeg: Support libswresample (fixes #1120, #123)
- FFmpeg: Support lossless h.264 encoding
- FFmpeg: Support lossless VP9 encoding
- GBA Cheats: Allow multiple ROM patches in the same slot
- GB: Skip BIOS option now works
- GB: Fix VRAM/palette locking (fixes #1109)
- GB Audio: Improved audio quality
- GB, GBA Audio: Increase max audio volume
- GB MBC: Remove erroneous bank 0 wrapping
- GB Video: Darken colors in GBA mode
- GBA: Extend oddly-sized ROMs to full address space (fixes #722)
- GBA: Implement display start DMAs
- GBA: Improve multiboot image detection
- GBA Memory: 64 MiB GBA Video cartridge support
- GBA Savedata: Remove ability to disable realistic timing
- GBA Timer: Use global cycles for timers
- Libretro: Add frameskip option
- mGUI: Add fast forward toggle
- PSP2: Use system enter key by default
- Python: Integrate tests from cinema test suite
- Qt: Redo GameController into multiple classes
- Qt: Prevent window from being created off-screen
- Qt: Add option to disable FPS display
- Qt: Options to mess around with layer placement
- Qt: Add load alternate save option
- Qt: Allow pausing game at load (fixes #1129)
- Qt: Clean up FPS target UI (fixes #436)
- Test: Restructure test suite into multiple executables
- Util: Don't build crc32 if the function already exists
- Wii: Move audio handling to callbacks (fixes #803)
Changes from 0.7 beta 1
Features
- Libretro: Add Game Boy cheat support
- Qt: Separate fast forward volume control (fixes #846, #1143)
- Switch: Rumble support
- Switch: Rotation support
- Switch: Screen stretching options
- Qt: State file load/save menu options
- Windows installer
- Tile viewer now has adjustable width
- Python: Experimental audio API
Bugfixes
- 3DS: Fix unused screens not clearing (fixes #1184)
- Core: Remember to deinit proxy ring FIFO
- Core: Reroot timing list when (de)scheduling
- GB, GBA: Fix broken opposing button filter (fixes #1191)
- GB MBC: Fix MBC30 SRAM
- GB, GBA Savedata: Fix leaks when loading masked save (fixes #1197)
- GB Video: Fix SGB border hole size
- GB Video: Changing LYC while LCDC off doesn't affect STAT (fixes #1224)
- GBA: Fix GB Player features
- GBA I/O: SOUNDCNT_HI is readable when sound is off
- GBA Savedata: Fix EEPROM writing codepath when savetype is not EEPROM
- GBA Video: Fix caching with background toggling (fixes #1118)
- Libretro: Fix adding codes with hooks
- PSP2: Fix audio crackling after fast forward
- PSP2: Fix audio crackling when buffer is full
- Qt: Fix jumbled background when paused
- Qt: Fix FPS counter on Windows
- Qt: Fix focus issues with load/save state overlay
- Switch: Fix incorrect mapping for fast forward cap
- Wii: Fix drawing caching regression (fixes #1185)
- PSP2: Fix tearing issues (fixes #1211)
- Qt: Fix mapping analog triggers (fixes #495)
- Qt: Grab focus when game starts (fixes #804)
- Qt: Ensure FATAL logs reach log view
- SDL: Fix handling of invalid gamepads (fixes #1239)
Miscellaneous
- CMake: Fix libswresample version dependencies (fixes #1229)
- Debugger: Minor text fixes
- Debugger: Readability improvements (fixes #1238)
- GB: Improved SGB2 support
- GB Audio: Skip frame if enabled when clock is high
- Libretro: Reduce rumble callbacks
- mGUI: Add SGB border configuration option
- mGUI: Add support for different settings types
- Python: Minor API improvements
- Qt: Ensure camera image is valid
- Qt: Debugger console history
mGBA 0.7 beta 1
Sep 24, 2018 – written by endrift
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
[email protected].
- 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
mGBA 0.6.3
Apr 14, 2018 – written by endrift
A new release of mGBA, version 0.6.3, is available. This version is a bugfix release to address some major audio and video regressions that snuck into 0.6.2. As such, all users of 0.6.2 are encouraged to update, especially if they are playing Game Boy games.
Bugfixes:
- GB Audio: Revert unsigned audio changes
- GB Video: Fix bad merge (fixes #1040)
- GBA Video: Fix OBJ blending regression (fixes #1037)
mGBA 0.6.2
Apr 3, 2018 – written by endrift
A new release of mGBA, version 0.6.2, is available. This version is a bugfix release, which contains many stability and accuracy fixes. An extensive list of changes follows after the cut.
Bugfixes:
- Core: Fix ROM patches not being unloaded when disabled (fixes mgba.io/i/962)
- 3DS: Fix opening files in directory names with trailing slashes
- LR35902: Fix watchpoints not reporting new value
- GB MBC: Fix MBC2 saves (fixes mgba.io/i/954)
- GB Memory: HDMAs should not start when LCD is off (fixes mgba.io/i/310)
- GB Memory: Fix OAM DMA blocking regions (fixes mgba.io/i/1013)
- GB Video: Only trigger STAT write IRQs when screen is on (fixes mgba.io/i/912)
- GBA: Fix some GBA ROM misdetection (fixes mgba.io/i/978)
- GBA: Fix SharkPort saves for EEPROM games
- GBA Audio: Increase PSG volume (fixes mgba.io/i/932)
- GBA BIOS: Fix incorrect exit condition in LZ77
- GBA Cheats: Fix PARv3 slide codes (fixes mgba.io/i/919)
- GBA Cheats: Fix slide codes not initializing properly
- GBA DMA: ROM reads are forced to increment
- GBA Hardware: RTC accuracy improvements
- GBA I/O: Fix writing to DISPCNT CGB flag (fixes mgba.io/i/902)
- GBA Memory: Fix copy-on-write memory leak
- GBA Memory: Partially revert prefetch changes (fixes mgba.io/i/840)
- GBA Savedata: Fix crash when resizing flash
- GBA Video: Force align 256-color tiles
- GBA Video: OBJWIN can change blend params after OBJ is drawn (fixes mgba.io/i/921)
- PSP2: Fix issues causing poor audio
- Python: Fix package directory
- Qt: Fix locale being set to English on settings save (fixes mgba.io/i/906)
- Qt: Fix opening in fullscreen (fixes mgba.io/i/993)
- Wii: Fix screen tear when unpausing
- Wii: Fix various setup and teardown drawing issues (fixes mgba.io/i/988)
Misc:
- 3DS: Scale font based on glyph heights (fixes mgba.io/i/961)
- GB MBC: Remove erroneous bank 0 wrapping
- GBA: Improve multiboot image detection
- PSP2: Use system enter key by default
mGBA 0.6.1
Oct 1, 2017 – written by endrift
A new release of mGBA, version 0.6.1, is available. This version is a bugfix release, which contains many stability and accuracy fixes. An extensive list of changes follows after the cut.
Bugfixes:
- GB, GBA: Fix crashes when attempting to identify null VFiles
- GB, GBA: Fix sync to video with frameskip
- GB, GBA Savedata: Fix savestate-related save overwriting (fixes #834)
- GB Audio: Fix NRx2 writes while active (fixes #866)
- GB Core: Fix palette loading when loading a foreign config
- GB MBC: Pocket Cam memory should be accessible without enabling
- GB MBC: Fix SRAM sizes 4 and 5
- GB MBC: Fix RTC initialization (fixes #825)
- GB MBC: Fix RTC loading when file size is off
- GB Memory: Initialize peripheral pointers
- GB Memory: Prevent accessing empty SRAM (fixes #831)
- GB Memory: Fix HDMA count starting in mode 0 (fixes #855)
- GB Memory: Actually load latch time from savestate
- GB Serialize: Fix deserializing video STAT
- GB Video: Fix 16-bit screenshots (fixes #826)
- GB Video: Fix potential hang when ending mode 0
- GB Video: Fix read mode when enabling LCD
- GBA: Reset active region as needed when loading a ROM
- GBA: Fix keypad IRQs not firing when extra buttons are pressed
- GBA BIOS: Use core's VRAM variable instead of renderer's
- GBA Cheats: Fix PARv3 multiline blocks (fixes #889)
- GBA I/O: Fix reading from a few invalid I/O registers (fixes #876)
- GBA Savedata: Fix 512 byte EEPROM saving as 8kB (fixes #877)
- GBA Savedata: Fix size of SRAM saves (fixes #883)
- GBA Video: Fix broken sprite blending hack (fixes #532)
- Python: Fix importing .gb or .gba before .core
- Qt: Fix command line debugger closing second game
- Qt: Fix LOG argument order
- Qt: Fix timezone issues with time overrides
- Qt: Fix sprite export pausing game indefinitely (fixes #841)
- SDL: Fix potential race condition when pressing keys (fixes #872)
Misc:
- CMake: Fix CPack dependencies for libpng 1.6
- GBA: Detect hardware for Pokémon FireRed ROM hacks
- GBA Cheats: Improve detection of raw cheats
- Qt: Don't rebuild library view if style hasn't changed
- Qt: Allow overrides to be saved before a game is loaded
- Qt: Hide mouse immediately when loading
- SDL: Fix 2.0.5 build on macOS under some circumstances
- VFS: Make VFile.truncate work growing files on PSV (fixes #885)
mGBA 0.6.0
Jul 16, 2017 – written by endrift
After many months of delays mGBA 0.6.0 is finally available. This is a major feature release. Some of the more prominent features include a library view, translations to German, Spanish and Italian, and many new debugging features. A full list of changes follows after the cut.
Changes from 0.5.2
Features
- Library view
- Sprite viewer
- Debugging console
- Improved memory viewer
- Memory search
- Command line ability to override configuration values
- Add option to allow preloading the entire ROM before running
- Add option for whether rewinding restores save games
- Savestates now contain any RTC override data
- Add option to lock video to integer scaling
- LR35902: Watchpoints
- LR35902/GB-Z80 disassembler
- GB: Tile viewer
- GB: Video/audio channel enabling/disabling
- GB: Symbol table support
- GB MBC: Add MBC1 multicart support
- GBA: Support printing debug strings from inside a game
- GBA: Better cheat type autodetection
- Implement keypad interrupts
- Configuration of gamepad hats
- Video log recording for testing and bug reporting
- Debugger: Segment/bank support
- Debugger: Execution tracing
- Partial Python scripting support
- Qt: German translation (by Lothar Serra Mari)
- Qt: Spanish translation (by Kevin López)
- Qt: Italian translation (by theheroGAC)
Bugfixes
- ARM7: Fix MLA/MULL/MLAL timing
- Core: Fix crash with rewind if savestates shrink
- Core: Fix interrupting a thread while on the thread (fixes #692)
- Core: Fix directory sets crashing on close if base isn't properly detached
- FFmpeg: Fix overflow and general issues with audio encoding
- GB: Fix flickering when screen is strobed quickly
- GB: Fix STAT blocking
- GB MBC: Fix ROM bank overflows getting set to bank 0
- GB MBC: Fix swapping carts not detect new MBC
- GB Timer: Improve DIV reset behavior
- GB Timer: Fix DIV batching if TAC changes
- GB Video: Reset renderer when loading state
- GBA: Fix multiboot ROM loading
- GBA: Fix multiboot loading resulting in too small WRAM
- GBA BIOS: Implement BitUnPack
- GBA BIOS: Fix ArcTan sign in HLE BIOS
- GBA BIOS: Fix ArcTan2 sign in HLE BIOS (fixes #689)
- GBA BIOS: Fix INT_MIN/-1 crash
- GBA Hardware: Fix crash if a savestate lies about game hardware
- GBA I/O: Handle audio registers specially when deserializing
- GBA Memory: Improve initial skipped BIOS state
- GBA Savedata: Fix savedata unmasking (fixes #441)
- GBA Savedata: Update and fix Sharkport importing (fixes #658)
- GBA Video: Fix wrong palette on 256-color sprites in OBJWIN
- GBA Video: Don't update background scanline params in mode 0 (fixes #377)
- Libretro: Fix saving in GB games (fixes #486)
- LR35902: Fix core never exiting with certain event patterns
- LR35902: Fix pc overflowing current region off-by-one
- LR35902: Fix decoding LD r, $imm and 0-valued immediates (fixes #735)
- OpenGL: Fix some shaders causing offset graphics
- GB Timer: Fix sub-M-cycle DIV reset timing and edge triggering
- Qt: Fix timing issues on high refresh rate monitors
- Qt: Fix linking after some windows have been closed
- Qt: Fix crash when changing audio settings after a game is closed
- Qt: Ensure CLI backend is attached when submitting commands (fixes #662)
- Qt: Disable "New multiplayer window" when MAX_GBAS is reached (fixes #107)
- Qt: Fix game unpausing after frame advancing and refocusing
- SDL: Fix game crash check
- SDL: Fix race condition with audio thread when starting
- SDL: Fix showing version number
- Test: Fix crash when loading invalid file
- Test: Fix crash when fuzzing fails to load a file
- Test: Don't rely on core for frames elapsed
- Test: Fix crash when loading invalid file
- Test: Fix crash when fuzzing fails to load a file
- Tools: Fix recurring multiple times over the same library
- Util: Fix overflow when loading invalid UPS patches
- Util: Fix highest-fd socket not being returned by SocketAccept
- Windows: Fix VDir.rewind
Miscellaneous
- All: Add C++ header guards
- All: Move time.h include to common.h
- 3DS, PSP2, Wii: Last directory loaded is saved
- CMake: Add ability to just print version string
- Core: New, faster event timing subsystem
- Core: Clean up some thread state checks
- Core: Add generic checksum function
- Core: Cores can now have multiple sets of callbacks
- Core: Restore sleep callback
- Core: Move rewind diffing to its own thread
- Core: Ability to enumerate and modify video and audio channels
- Core: List memory segments in the core
- Core: Move savestate creation time to extdata
- Core: Config values can now be hexadecimal
- Core: Improved threading interrupted detection
- Debugger: Modularize CLI debugger
- Debugger: Make building with debugging aspects optional
- Debugger: Add functions for read- or write-only watchpoints
- Debugger: Make attaching a backend idempotent
- Debugger: Add mDebuggerRunFrame convenience function
- Feature: Move game database from flatfile to SQLite3
- Feature: Support ImageMagick 7
- Feature: Make -l option explicit
- FFmpeg: Return false if a file fails to open
- FFmpeg: Force MP4 files to YUV420P
- GB: Trust ROM header for number of SRAM banks (fixes #726)
- GB: Reset with initial state of DIV register
- GB MBC: New MBC7 implementation
- GB Audio: Simplify envelope code
- GB Audio: Improve initial envelope samples
- GB Audio: Start implementing "zombie" audio (fixes #389)
- GB Video: Improved video timings
- GBA: Ignore invalid opcodes used by the Wii U VC emulator
- GBA, GB: ROM is now unloaded if a patch is applied
- GBA DMA: Refactor DMA out of memory.c
- GBA DMA: Move DMAs to using absolute timing
- GBA I/O: Clear JOYSTAT RECV flag when reading JOY_RECV registers
- GBA I/O: Set JOYSTAT TRANS flag when writing JOY_TRANS registers
- GBA Memory: Support for Mo Jie Qi Bing by Vast Fame (taizou)
- GBA Memory: Support reading/writing POSTFLG
- GBA Memory: Remove unused prefetch cruft
- GBA Timer: Improve accuracy of timers
- GBA Video: Clean up unused timers
- GBA Video: Allow multiple handles into the same tile cache
- GBA Video, GB Video: Colors are now fully scaled
- GBA Video: Optimize when BLD* registers are written frequently
- OpenGL: Add xBR-lv2 shader
- Qt: Move last directory setting from qt.ini to config.ini
- Qt: Improved HiDPI support
- Qt: Expose configuration directory
- Qt: Merge "Save" and "OK" buttons in shader options
- Qt: Automatically load controller profile when plugged in
- Qt: Rename "Resample video" option to "Bilinear filtering"
- Qt: Remove audio thread
- Qt: Remove audio buffer sizing in AudioProcessorQt
- Qt: Re-enable QtMultimedia on Windows
- Qt: Make "Mute" able to be bound to a key
- Qt: Add .gb/.gbc files to the extension list in Info.plist
- Qt: Relax hard dependency on OpenGL
- Qt: Better highlight active key in control binding
- SDL: Remove scancode key input
- SDL: Automatically map controllers when plugged in
- Test: Add a basic test suite
- Util: Add size counting to Table
- Util: Add 8-bit PNG write support
- Util: Tune patch-fast extent sizes
- VFS: Call msync when syncing mapped data
- VFS: Allow truncating memory chunk VFiles
- VFS: Fix some minor VFile issues with FILEs
- VFS: Optimize expanding in-memory files
- VFS: Add VFileFIFO for operating on circle buffers
Changes from 0.6 beta 1
Features
- Qt: Italian translation (by theheroGAC)
- Qt: Updated German translation
Bugfixes
- Core: Fix rewinding getting out of sync (fixes #791)
- GB Audio: Fix incorrect channel 4 iteration
- GB Audio: Fix zombie mode bit masking
- GB Serialize: Fix timer serialization
- GB Video: Fix LYC regression
- GBA SIO: Improve SIO Normal dummy driver (fixes #520)
- GBA Timer: Fix count-up timing overflowing timer 3
- PSP2: Use custom localtime_r since newlib version is broken (fixes #560)
- Qt: Fix memory search close button (fixes #769)
- Qt: Fix window icon being stretched
- Qt: Fix initial window size (fixes #766)
- Qt: Fix data directory path
- Qt: Fix controls not saving on non-SDL builds
- Qt: Fix translation initialization (fixes #776)
- Qt: Fix patch loading while a game is running
- Qt: Fix shader selector on Ubuntu (fixes #767)
- Qt: Fix GL-less build
- Qt: Fix Software renderer not handling alpha bits properly
- Qt: Fix screen background improperly stretching
- SDL: Fix cheats not loading
Miscellaneous
- GB Serialize: Add MBC state serialization
- GBA Memory: Call crash callbacks regardless of if hard crash is enabled
- GBA Timer: Improve accuracy of timers
- PSP2: Update toolchain to use vita.cmake
- Qt: Add language selector
- Qt: Minor text fixes
- Qt: Move shader settings into main settings window
- Qt: Dismiss game crashing/failing dialogs when a new game loads
- Qt: Properly ship Qt translations
- SDL: Remove writing back obtained samples (fixes #768)
mGBA 0.6 beta 1
Jun 29, 2017 – written by endrift
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
[email protected].
- 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
mGBA 0.5.2
Dec 31, 2016 – written by endrift
A new release of mGBA, version 0.5.2, is available. This version is a bugfix release, which contains many stability and accuracy fixes. An extensive list of changes follows after the cut.
Bugfixes:
- All: Fix fullscreen config option being ignored
- ARM7: PSR mode bits should not get sign extended
- GB: Fix audio not being deinitialized
- GB: Fix crash when masking savedata
- GB: Properly initialize sramRealVf variable
- GB Audio: Fix serialization of channel 3 and NR52 properties
- GB Audio: Reset envelope timer when reseting sound channel
- GB MBC: Fix SRAM dangling pointer with RTC games
- GB MBC: Fix initializing MBC when no ROM is loaded
- GB Memory: Fix patching ROM bank 0
- GB Memory: Fix starting HDMAs during mode 0
- GB Memory: Fix HDMA5 value after DMA completes
- GB Video: Initialize LCDC in renderer
- GB Video: Hblank IRQs should mask LYC=LY IRQs
- GBA: Fix IRQs firing after already being cleared
- GBA: Only unhalt CPU if appropriate bit is set in IE
- GBA: Add savegame override for Crash Bandicoot 2
- GBA BIOS: Fix MidiKey2Freq BIOS reads
- GBA BIOS: Fix invalid CpuSet not setting BIOS prefetch
- GBA Cheats: Fix GameShark ROM patches
- GBA I/O: Mask off WAITCNT bits that cannot be written
- GBA Memory: Fix misaligned BIOS reads
- GBA Memory: Fix VCOUNT being writable
- GBA Video: Fix out of bounds sprite transforms
- Libretro: Fix unterminated SET_INPUT_DESCRIPTORS
- Libretro: Fix disabling BIOS
- Libretro: Fix Game Boy savestates and audio
- Qt: Fix changing resolution of software renderer
- Qt: Fix setting overrides
- Qt: Fix cut off tiles and alignment issues in tile viewer
- Qt: Only reset window dimensions when first shown
- Qt: Fix Qt Multimedia audio driver on big endian
- Qt: Fix Apply button for key and controller configurations
- VFS: Fix resizing memory chunks when not needed
- Windows: Fix Unicode directory handling
Misc:
- GB, GBA: Prevent loading null ROMs
- GB Audio: Initialize wave RAM to GBC values
- GB Memory: Reset ROM bank when loading a ROM
- PSP2: Improved controller rumble
mGBA 0.5.1
Oct 5, 2016 – written by endrift
A new release of mGBA, version 0.5.1, is available. This version is a bugfix release, which fixes many issues that weren't caught before the release of 0.5.0. An extensive list of changes follows after the cut.
Bugfixes:
- Core: Fix importing save games as read-only
- FFmpeg: Fix encoding AAC
- GB: Fix invalid STOP behavior on Game Boy Color
- GB: Initialize audio properly
- GB: Properly clear KEY1 bit 0 when switching speeds
- GB: Properly unload save files when unloading a ROM
- GB, GBA: Fix emulator hardlocking when halting with IRQs off
- GB MBC: Fix MBC7 when size is incorrectly specified
- GB MBC: Fix RTC access when no save file is loaded
- GB SIO: Don't auto-clock external shift clock
- GB Video: Setting LYC=LY during mode 2 should trigger an IRQ
- GB Video: Fix video frames getting missed when LCDC is off
- GB Video: Clear screen when LCDC is off
- GBA Cheats: Fix holding onto pointers that may get invalidated
- GBA Cheats: Fix key-activated CodeBreaker cheats
- GBA Cheats: Fix uninitialized memory getting freed when saving
- GBA Hardware: Improve Game Boy Player rumble behavior
- GBA Memory: Fix several unused I/O register read values
- GBA Savedata: Fix loading savestates with 512Mb Flash saves
- LR35902: Fix events running with the wrong cycle active
- Qt: Fix "close" button on Overrides view
- Qt: Fix saving overrides
- Qt: Fix directory set unloading when replacing the ROM
- Qt: Fix patch loading
- Qt: Fix crash when saving an override if a game isn't loaded
- Qt: Fix showing default display driver as OpenGL (force 1.x)
- SDL: Attach rumble in SDL frontend
- Util: Fix PNG identification on files too small to be a PNG
Misc:
- All: Only update version info if needed
- All: Split out install locations for Libretro and OpenEmu
- FFmpeg: Encoding cleanup
- GB: Reset active region when reloading ROM
- GB Memory: Initialize RAM pattern for GBC
- GB Video: Improved video timings
- Qt: Manage window sizes slightly better
- Qt: Remember scale option independent of core dimensions
mGBA 0.5.0
Sep 19, 2016 – written by endrift
After a long dry spell, a new release of mGBA, version 0.5.0, is available. This is a major feature release, and includes, among other features, Game Boy and Game Boy Color support. There are other enhancements and bugfixes across the board, and an extensive list follows after the cut.
Furthermore, if you enjoy using mGBA and wish to give back, there is now a list of ways to donate on the
donations page, including the newly launched
mGBA Patreon.
Features:
- Game Boy support
- Support for encrypted CodeBreaker GBA cheats
- Emulation of Vast Fame protected GBA carts (taizou)
- Tile viewer
- Threaded rendering mode
- Libretro: Memory map and achievement support (leiradel)
- GUI: Add UI control remapping
- GUI: Add fast-forward
- Wii: 240p support
- 3DS: Adjustable screen darkening
- Ability to temporarily load a savegame
- Load specific files out of archives
- Automatic BIOS detection
Bugfixes:
- ARM7: Fix decoding of Thumb ADD (variants 5 and 6)
- Debugger: Fix GDB breakpoints
- GBA: Fix losing IRQs when CPSR I bit isn't cleared
- GBA: Fix filehandle leak with savegames
- GBA: Timer 0 cannot be count up
- GBA: Count up timers should not count themselves
- GBA Memory: Fix mirror on non-overdumped Classic NES games
- GBA Memory: Fix ldm {pc}
- GBA Savedata: Fix savedata sync timer
- GBA Savedata: Only unmap savedata if present
- GBA Serialize: Savestates now properly store prefetch
- GBA Video: WIN0/1 take priority over OBJWIN
- GBA Video: Fix out-of-order OBJWIN
- PSP2: Fix GPU crash while exiting
- PSP2: Fix VSync
- PSP2: Fix accelerometer range
- PSP2: Actually load screen mode setting
- PSP2: Fix gyroscope direction
- PSP2: Delete threads after they return
- PSP2: Fix mapping/unmapping from not at 0
- Qt: Fix bug in software renderer scaling
- Qt: Fix hanging key press after disabling autofire
- Qt: Fix being unable to pause manually when using auto-pausing
- SDL: Fix axes being mapped wrong
- Util: Fix realloc semantics in utf16to8
- Util: Fix inserting too many items into a hash table
- VFS: Fix uninitialized varaible reading from 7z
- VFS: Fix reading multiple files from a 7z archive
- Wii: Fix framelimiting after a slowdown
- Wii: Fix garbage flash at startup
Misc:
- 3DS: Use blip_add_delta_fast for a small speed improvement
- 3DS: Allow UTF-16 filenames
- 3DS: Port to using citro3D
- 3DS: Use system font for menus
- 3DS: Attempt to use Core 2 for threads
- 3DS: Adjustable filering
- 3DS: 3D banner
- All: Add QUIET parameter to silence CMake
- All: Faster memory read/write
- ARM7: Support forcing Thumb mode via MSR
- ARM7: Flush prefetch cache when loading CPSR via MSR
- ARM7: Clean up instruction decoding for future expandability
- Debugger: Support register and memory writes via GDB stub
- Debugger: Add software breakpoint support to gdb
- FFmpeg: Full support for libavcodec 56+
- GBA: Better debug logging if event processing breaks
- GBA Audio: Force audio DMAs to not increment destination
- GBA BIOS: Use custom ArcTan, not relying on OS
- GBA Hardware: Clean up dead code in GBP
- GBA Memory: Optimize stalling behavior
- GBA Memory: Optimize Load-/StoreMultiple
- GBA Savedata: Add realistic timing for EEPROM
- GBA Serialize: Savestates now store if CPU was halted
- GBA Video: Remove old slow path fallback
- GBA Video: Optimize sprite drawing
- GBA Video: Optimize mode 0 rendering
- GBA Video: Optimize compositing cases slightly
- GUI: Screenshot dimensions are now passed through
- GUI: Add back logging
- GUI: Only reload config if manually saved
- GUI: Increase scrolling speed
- OpenGL: Log shader compilation failure
- OpenGL: Add texSize uniform
- Qt: Make -g flag work in Qt build
- Qt: Simplify OpenGL context creation
- Qt: Thread startup improvements
- Qt: Make audio channel/video layer options shortcut mappable
- Qt: Remove some C99isms from C++ code
- Qt: Remove default autofire mappings
- Qt: Make reseting when pasued frame-accurate
- Qt: Rearchitect game closing codepath
- PSP2: Use system font for menus
- PSP2: Add rumble for PS TV
- PSP2: Add fit-to-height screen mode
- PSP2: Sync files per descriptor
- PSP2: Allow UTF-8 filenames
- PSP2: Screenshots are now saved into the Photo Gallery
- PSP2: Stop underclocking when menuing
- SDL: Increase default audio buffer size to 1024 samples
- SDL: More responsive rumble
- Util: Add Vector GetConstPointer
- Util: Add rtrim
- Util: Add endswith
- VFS: Improve zip file detection
- Wii: Add pixelated resample filter
- Windows: Add native VDir support
- Util: Add PRIz macro for libc versions that don't support %z
mGBA 0.4.1
Jul 11, 2016 – written by endrift
A new release of mGBA, version 0.4.1, is available. This version is a bugfix release. An extensive list of changes follows after the cut.
Bugfixes:
- All: Fix several file handle leaks
- All: Fix instruction tables getting zeroed when linking sometimes
- ARM7: Fix flags on SBC/RSC
- ARM7: Fix setting spsr privilege bits when spsr is empty
- GBA Audio: Reset audio FIFO DMA if an invalid destination is set
- GBA BIOS: Fix RegisterRamReset setting DISPCNT to the wrong value
- GBA BIOS: Fix ArcTan2 accuracy and boundary conditions
- GBA Memory: Fix executing code from OBJ region of VRAM
- GBA Serialize: Fix memory corruption bug in GBAExtdataSerialize
- GBA Serialize: Fix loading savegames from savestates
- OpenGL: Correct boolean vector strcmp strings for uniforms
- Qt: Fix sending gameStopped twice
- Qt: Fix hang if audio sync is enabled and audio fails to initialize
- Qt: Fix initial state of key mapping
- Qt: Initialize m_useBios
- SDL: Fix joystick initialization on BSD
- SDL: Fix potential joystick crash in games with rumble
- SDL: Fix SDL 1.2 build
- SDL: Fix sporadic crash when deinitializing audio
- Shaders: Fix AGS-001 shader with some bad drivers
- Util: Use closesocket on Windows
- Util: Fix socket bind addresses
- VFS: Fix reading 7z archives without rewinding first
- VFS: VFileFromFD should not open directories
- Wii: Fix tilting direction
- Util: Fix realloc semantics in utf16to8
Misc:
- All: Allow use of external minizip library
- Debugger: CLI debugger now exits when end-of-stream is reached
- FFmpeg: Update dependencies on Ubuntu
- GBA: Slightly optimize GBAProcessEvents
- GBA: Add overrides for DBZ: Legacy of Goku II and Ueki no Housoku
- GBA Video: Null renderer should return proper register values
- Libretro: Disable logging game errors, BIOS calls and stubs in release builds
- Qt: Add preset for DualShock 4
- Qt: Update 360 input profile on OS X to reflect newer drivers
- Qt: Remove use of NaN
- Qt: Canonicalize file paths when loading games
- Qt: Add refresh button to controller editing
- SDL: Remove default gamepad mappings
- Util: Fix intermittent build failure on OS X
- VFS: VFile.sync now updates modified time
mGBA 0.4.0
Feb 2, 2016 – written by endrift
A new release of mGBA, version 0.4.0, is available. This is a major feature release. Some of the more prominent features include official ports to the Nintendo 3DS, Wii, and PlayStation Vita, shader support, an official OpenEmu core for OS X users, and controller hotplugging. An extensive list follows after the cut.
Features:
- Officially supported ports for the Nintendo 3DS, Wii, and PlayStation Vita
- I/O viewer
- Booting of multiboot images
- Customization of GIF recording
- Libretro: Cheat code support
- Support for GLSL shaders
- ROM information view
- Support for VBA-style cheat codes
- Savestates now store creation timestamps
- Key autofire
- Libretro: Allow blocking opposing directional input
- OpenEmu core for OS X
- Libretro: Settings for using BIOS and skipping intro
- Libretro: Customizable idle loop removal
- Implemented cycle counting for sprite rendering
- Cleaner, unified settings window
- Added a setting for pausing when the emulator is not in focus
- Customizable paths for save games, save states, screenshots and patches
- Controller hotplugging
- Ability to store save games and active cheats within savestates
Bugfixes:
- ARM7: Fix sign of unaligned LDRSH
- ARM7: Fix decoding of some ARM ALU instructions with shifters
- Debugger: Fix watchpoints in gdb
- GBA: Fix warnings when creating and loading savestates
- GBA: Fix Iridion II savetype
- GBA BIOS: Fix misaligned CpuSet
- GBA Cheats: Fix cheats setting the Action Replay version
- GBA Hardware: Fix GPIO on big endian
- GBA Memory: Fix DMA register writing behavior
- GBA Memory: Fix DMAs triggering two cycles early
- Libretro: Fix aspect ratio
- Qt: Fix some potential crashes with the gamepad mapping
- Qt: Fix keys being mapped incorrectly when loading configuration file
- Util: Fix PowerPC PNG read/write pixel order
- Util: Fix excessive memory allocation when decoding a PNG
- VFS: Fix VFileReadline and remove _vfdReadline
Misc:
- All: Improved PowerPC support
- All: Fix some undefined behavior warnings
- ARM7: Combine shifter-immediate and shifter-register functions to reduce binary size
- Debugger: Convert breakpoints and watchpoints from linked-lists to vectors
- GBA: Implement bad I/O register loading
- GBA: Allow jumping to OAM and palette RAM
- GBA BIOS: Finish implementing RegisterRamReset
- GBA Config: Add "override" layer for better one-time configuration
- GBA Input: Consolidate GBA_KEY_NONE and GBA_NO_MAPPING
- GBA Memory: Use a dynamically sized mask for ROM memory
- GBA Memory: Implement several unimplemented memory access types
mGBA 0.3.2
Dec 16, 2015 – written by endrift
A new release of mGBA, version 0.3.2, is available. This version is a bugfix release. An extensive list of changes follows after the cut.
Bugfixes:
- ARM7: Fix STRT/STRBT
- ARM7: Implement undefined STRH/LDRH/LDRSH/LDRSB versions
- ARM7: Fix bank switching with LDRT/STRT
[*]Libretro: Fix problems with rumble not turning off
[*]GBA: Fix idle skip state being retained between games
[*]GBA: Initialize uninitialized pristineRom and pristineRomSize members
[*]GBA BIOS: Fix CpuSet on 0x01XXXXXX addresses
[*]GBA BIOS: Fix Sqrt sign
[*]GBA BIOS: Fix misaligned RLUnCompReadNormalWrite*
[*]GBA Hardware: Fix Game Boy Player rumble in Pokemon Pinball
[*]GBA Memory: Fix DMA behavior for SRAM accesses
[*]GBA Memory: Fix Store8 to OBJ VRAM
[*]GBA Memory: Fix alignment of LDM/STM on SRAM
[*]GBA Memory: Fix unaligned out-of-bounds ROM loads
[*]GBA Memory: Fix timing of DMAs
[*]GBA Video: Fix _mix for 15-bit color
[*]GBA Video: Fix OAM and palette initialization
[*]OpenGL: Fix fast-forward on some OpenGL drivers where it may block early
[*]Qt: Use safer isLoaded check in GameController
[*]Qt: Fix a race condition in PainterGL that could lead to a crash
[*]Qt: Fix clear button/analog buttons in gamepad mapper on some platforms
[*]Qt: Fix font size in memory viewer
[*]Qt: Fix a crash in the memory viewer
[*]Qt: Add additional checks in CheatModel to prevent crashes
[*]Qt: Fix race condition with setting sample rate
[*]Qt: Fix crash when closing multiplayer windows
[*]Qt: Fix resetting while paused
Misc:
- GBA Audio: Implement missing flags on SOUNDCNT_X register
- Qt: Add mute option to menu
mGBA 0.3.1
Oct 24, 2015 – written by endrift
A new release of mGBA, version 0.3.1, is available. This version is a bugfix release. An extensive list of changes follows after the cut.
Bugfixes:
- ARM7: Fix instruction decoding of Thumb shifts
- GBA: Deinit savegame when unloading a ROM
- GBA: Fix BIOS check on big endian
- GBA: Fix autodetect problems with some bad dumps of Super Mario Advance 2
- GBA Audio: Fix 8-bit writes to audio channel 3 and 4 registers
- GBA Audio: Fix audio channels being silenced at the wrong time
- GBA Memory: Fix bad BIOS Load16 on big endian
- GBA Memory: Fix bad Load8 on big endian
- GBA Video: Start on the scanline BIOS finishes on if no BIOS is loaded
- GBA Video: Fix edge case with sprite blend modes and semitransparency
- GBA Video: Fix objwin and blending interaction on sprites
- GBA Video: Fix OBJ semitransparency improperly interacting with other blending ops
- Libretro: Fix a memory leak with the render buffer
- Qt: Windows no longer spawn in the top left on first launch
- Qt: Fix install path of XDG desktop file with DESTDIR
- Qt: Fix drag and drop on Windows
- Qt: Reenable double buffering, as disabling it broke some Windows configs
- VFS: Fix return values of VFileFILE.read and .write
Misc:
- All: Reset next event to cycles instead of zero to interrupt
- ARM7: Force disable LTO on two files to work around a GCC bug
- GBA: Attempting to save a screenshot-style savestate should be allowed without libpng
- GBA: Better memory handling with PNG savestates
- GBA: Additional savestate sanity checks
- GBA: Check for cycle count being too high
- GBA Audio: Allow GBAAVStream to have no video callback
- GBA BIOS: Implement RegisterRamReset for SIO registers
- Qt: Remove useless help icons in dialogs
- Qt: Prevent savestate window from opening while in multiplayer
- Qt: Disable menu items in multiplayer that don't make sense to have enabled
- Qt: Dropping multiplayer windows works more cleanly now
mGBA 0.3.0
Aug 16, 2015 – written by endrift
A new release of mGBA, version 0.3.0, is available. This is a major feature release. Some of the more prominent features include the addition of support for rotation and tilt sensors on controllers with analog sticks, default controller profiles for some of the more common controllers, improved synchronization, the beginning of the debug suite, and much more. An extensive list follows after the cut.
Features:
- Ability to hide individual background layers, or OBJs
- Ability to mute individual audio channels
- Palette viewer and exporter
- More shortcuts are editable (e.g. quick save/load)
- Rewind now shows the frame after rewinding
- Import/Export of GameShark/Action Replay snapshots
- Add "Step backwards" item for single increment rewind
- Deadzone estimation for game controllers
- Analog inputs can be used for shortcuts
- Menu items for specific solar sensor brightness levels
- Remappable controls for tilt and gyroscope sensors
- Status messages for actions taken while a game is running (e.g. save/load state)
- Screensaver can now be suspended while a game is running
- Load/save the most recent savestate slot
- Support varible speed (PWM) rumble
- Ability to cap fast forward speed
- Finer control over FPS target
- Holdable shortcut for rewinding one frame at a time
- Ability to boot directly into the BIOS
- Preliminary support for yanking out the game pak while a game is running
- Thumb-drive mode by putting a file called portable.ini in the same folder
- Configurable display driver, between software and OpenGL
- Undo-able savestate loading and saving
- Controller profiles now store shortcut settings
- Default controller profiles for several common controllers
- Libretro now supports BIOS, rumble and solar sensor
- Implement BIOS call Stop, for sleep mode
- Automatically load patches, if found
- Improved video synchronization
- Configurable audio output sample rate
Bugfixes:
- ARM7: Fix SWI and IRQ timings
- ARM7: Fix Thumb MUL timing
- ARM7: Fix timing of multiplies to use N cycles
- ARM7: ARMHotplugDetach should call deinit
- Debugger: Fix use-after-free in breakpoint clearing code
- GBA: Fix crash if a 512kb flash save is loaded when a game has a 1Mb flash override
- GBA: Cap audio FIFO read size during deserialization
- GBA: Check for corrupted savestates when loading
- GBA: Check for improperly sized savestates when loading
- GBA: Check for savestates made from differently sized ROMs
- GBA: Fix calls to endian-independent loadstores
- GBA: Fix timing of reading from timer registers
- GBA: Ensure cycles never go negative
- GBA Audio: Force audio FIFOs to 32-bit
- GBA Audio: Fix audio pitch changing when adjusting buffer size
- GBA Audio: Fix sample order in audio channel 3
- GBA Audio: Fix 8-bit writes to audio channel 3 frequency
- GBA Cheats: Fix Pro Action Replay and GameShark issues when used together
- GBA Memory: Improve Thumb open bus behavior
- GBA Memory: Fix potential DMA issue when loading a savestate
- GBA Memory: Fix load/store multiple video memory waitstates
- GBA SIO: Fix reseting when there are SIO devices attached
- GBA Video: Blended sprites should never have other effects applied
- GBA Video: Fix out-of-bounds tiles in mosaic
- GBA Video: Fix windows not affecting sprites
- GBA Video: Prevent tiles < 512 from being used in modes 3 - 5
- GBA Video: Fix timing on first scanline
- Qt: Better cleanup when a game crashes
- Qt: Fix open ROM dialog filtering for archive formats
- Qt: Cap the maximum number of multiplayer windows
- Qt: Fix maximum year in sensor override
- Qt: Fix window being too tall after exiting fullscreen
- Qt: Fix a missing va_end call in the log handler lambda within the GameController constructor
- Qt: Fix analog buttons not getting unmapped
- Qt: Fix passing command line options
- Qt: Fix crashes on Windows by using using QMetaObject to do cross-thread calls
- SDL: Fix SDL build when OpenGL is missing
- Util: Allow loading IPS patches that grow the ROM
- VFS: Fix resource leaks if some allocations fail
- VFS: Fix line-reading to return proper values
- Video: Fix an issue with very long filenames
- Util: Fix formatting of floats
Misc:
- All: Add –help flag for command line programs
- All: Fix sanitize-deb script to set file permissions properly if run as (fake)root
- All: Enable static linking for Windows
- All: Enable static linking for OS X
- All: Threads are now named
- All: Proper handling of Unicode file paths
- ARM7: Add emulation for Undefined CPU mode
- ARM7: Reduce the size of the Thumb instruction table
- GBA: Add status log level
- GBA: GBARewind now returns how many states it has rewound
- GBA BIOS: Stub out SoundBias
- GBA: More accurate cycle estimation for ROM prefetch and flash save chips
- GBA: Don't include GBACLIDebugger struct unless needed
- GBA: Savedata is now synced shortly after data finishes being written
- GBA: Process multiple timer events at once, if necessary
- GBA Audio: Implement audio reset for channels A/B
- GBA Audio: Process multiple audio events at once, if necessary
- GBA Hardware: Backport generic RTC source into core
- GBA Input: Allow axes and buttons to be mapped to the same key
- GBA Memory: Run multiple DMAs in a tight loop if they all occur before present
- GBA SIO: Add a dummy driver for Normal mode
- GBA Thread: Add functionality for running callbacks on the GBA thread
- GBA Thread: Split GBASync into a separate file
- GBA Video: Refactor software renderer into separate files
- GBA Video: Slightly optimize mode 0 mosaic rendering
- Debugger: Free watchpoints in addition to breakpoints
- Qt: Handle saving input settings better
- Qt: Move GL frame drawing back onto its own thread
- Qt: Fast forward (held) option moved from Other to Emulation menu
- Qt: Show version info in window title
- Qt: Migrate multiplayer window handling into GBAApp
- Qt: Unified file opening and saving with last location
- Qt: Fix windows being resizable when they shouldn't have been
- Qt: Only hide cursor in full screen
- Qt: Replace pause-after-frame mutex with an atomic
- Qt: Add application icon and XDG desktop files
- Qt: Rename "Fullscreen" to "Toggle fullscreen"
- Qt: Don't save window size when entering fullscreen
- Qt: Make the default fullscreen binding for Windows be Alt-Enter
- Qt: Gamepads can now have both buttons and analog axes mapped to the same key
- Qt: Increase usability of key mapper
- Qt: Show checkmark for window sizes
- Qt: Set window path to loaded ROM
- Perf: Ability to load savestates immediately on launch
- SDL: Properly check for initialization
- SDL: Clean up initialization functions
- Util: Allow disabling the threading code entirely
- VFS: Add sync method to force syncing with backing
mGBA 0.2.1
May 13, 2015 – written by endrift
A new release of mGBA, version 0.2.1, is available. This version is primarily a bugfix release. An extensive list of changes follows after the cut.
Bugfixes:
- All: Fix sanitize-deb script not cleaning up after itself
- All: Fix dependencies for libavcodec on Debian-derived platforms
- ARM7: Handle writeback for PC in addressing modes 2 and 3
- ARM7: Make illegal instruction decoding consistent between ARM and Thumb
- ARM7: Fix ARM multiply instructions when PC is a destination register
- Debugger: Fix use-after-free in breakpoint clearing code
- Debugger: Fix boundary conditions in tab completion
- GBA: Fix timers not updating timing when writing to only the reload register
- GBA: Fix rewind boundary conditions
- GBA: Add initial I/O register settings for background matrix registers
- GBA: Fix hang when loading a savestate if sync to video is enabled
- GBA: Handle out-of-bounds I/O access
- GBA: Fix bounds-checking on EEPROM access
- GBA Audio: FIFOs should not poll DMAs that are not scheduled for audio
- GBA BIOS: Initialize a variable that may be uninitialized in very rare cases
- GBA Memory: Allow SRAM to be 64kB
- GBA Memory: Fix 32-bit loads from unaddress cartridge space
- GBA Memory: Fix jumping to invalid memory when switching from Thumb to ARM
- GBA Video: Fix second frame mode 5
- Perf: Fix race condition if a game crashes immediately on start
- Qt: Fix Display object leak when closing a window
- Qt: Fix .deb dependencies
- Qt: Fix "QOpenGLContext::swapBuffers() called with non-exposed window" warning
- Qt: Fix window not regaining focus after exiting savestate window
- Qt: Fix regression where video would not record if the game had already started
- Qt: Fix potential crash if a gamepad causes focus to change
- Qt: Fix controller axis querying
- Qt: Fix multiplayer windows opening as the wrong size
- Qt: Fix controllers sometimes not loading the right profile
- SDL: Fix boundary conditions for joystick adjustments
- SDL: Allocate properly sized input maps
- SDL: Fix potential build issues when Qt and SDL2 are in use
- Util: Fix resource leak in UTF-8 handling code
- Util: Fix a null-pointer issue when attempting to delete a key
- VFS: Fix resource leaks if some allocations fail
- Video: Fix an issue with very long filenames
Misc:
- GBA Memory: Soft-crash if jumping past the end of a ROM
- Qt: Show multiplayer numbers in window title
- Qt: Solar sensor can have shortcuts set
mGBA 0.2.0
Apr 3, 2015 – written by endrift
A new release of mGBA, version 0.2.0, is available. Two years to the day since mGBA started development, 0.2.0 marks a major feature release. Some of the more prominent features include the addition of support for local link cable multiplayer, cheat code support, the Solar Sensor (as used in Boktai), configuration options, and much more. An extensive list follows after the cut.
Features:
- Support for gamepad axes, e.g. analog sticks or triggers
- Add scale presets for up to 6x
- Bilinear resampling option
- Add option to skip BIOS start screen
- List of recently opened games
- Support for games using the Solar Sensor
- Better audio resampling via blip-buf
- Game Pak overrides dialog for setting savetype and sensor values
- Support for games using the tilt sensor
- Remappable shortcuts for keyboard and gamepad
- Implemented BIOS routines SoftReset, RegisterRamReset, Diff8bitUnFilterWram, Diff8bitUnFilterVram, and Diff16bitUnFilter
- Save directory of last loaded file
- Automatically detect and optimize out idle loops
- Configurable game overrides
- Support loading 7-Zip files
- Drag and drop game loading
- Runtime configurable audio driver
- Libretro core for use with RetroArch and other front-ends
- Controller profiles for setting different bindings for different controllers
- Ability to lock aspect ratio
- Ability to switch which game controller is in use per instance
- Ability to prevent opposing directional input
- Warning dialog if an unimplemented BIOS feature is called
- Debugger: Add CLI "frame", frame advance command
- Debugger: Add CLI functions for writing to memory
- Debugger: Add CLI functions for examining memory regions
- Debugger: Add CLI function for writing a register
Bugfixes:
- ARM7: Extend prefetch by one stage
- ARM7: Fix cycle counting for loads
- Debugger: Disassembly now lists PSR bitmasks (fixes #191)
- GBA: Fix savestate loading of DISPSTAT and WAITCNT registers
- GBA: Initialize gba.sync to null
- GBA: Fix timer initialization
- GBA Audio: Support 16-bit writes to FIFO audio
- GBA Audio: Audio buffer sizes are now correct sizes for both sample rates
- GBA BIOS: Fix BIOS prefetch after returning from an IRQ
- GBA BIOS: Fix BIOS prefetch after reset
- GBA BIOS: Prevent CpuSet and CpuFastSet from using BIOS addresses as a source (fixes #184)
- GBA BIOS: Fix BIOS decompression routines with invalid source addresses
- GBA Memory: Fix alignment of open bus 8- and 16-bit loads
- GBA Memory: Fix I cycles that had been moved to ARM7 core
- GBA Memory: Fix cycle counting for 32-bit load/stores
- GBA RR: Fix fallthrough error when reading tags from a movie
- GBA Thread: Fix possible hang when loading an archive
- GBA Thread: Fix possible deadlock in video sync
- Perf: Fix crash when the GBA thread fails to start
- Qt: Fix crash starting a GDB stub if a game isn't loaded
- Qt: Fix crash when adjusting settings after closing a game
- Qt: Fix crash when starting GDB stub after closing a game
- Qt: Fix patch loading while a game is running
- Qt: Fix crash when loading a game after stopping GDB server
- Qt: Pause game while open file dialogs are open (fixes #6 on GitHub)
- Qt: Fix crash when attempting to pause if a game is not running
- SDL: Properly clean up if a game doesn't launch
- Util: Fix sockets on Windows
Misc:
- All: Enable link-time optimization
- Debugger: Watchpoints now work on STM/LDM instructions
- Debugger: Clean up GDB stub network interfacing
- Debugger: Simplify debugger state machine to play nicer with the GBA thread loop
- Debugger: Merge Thumb BL instructions when disassembling
- Debugger: Clean up debugger interface, removing obsolete state (fixes #67)
- Debugger: Watchpoints now report address watched (fixes #68)
- Debugger: Add support for soft breakpoints
- Debugger: Make I/O register names be addresses instead of values
- Debugger: Rename read/write commands
- GBA: Improve accuracy of event timing
- GBA: Add API for getting Configuration structs for overrides and input
- GBA: Refactor gba-sensors and gba-gpio into gba-hardware
- GBA: Refactor gba directory, dropping gba- prefix and making supervisor directory
- GBA: Move A/V stream interface into core
- GBA: Savestates now take into account savedata state machines (fixes #109)
- GBA Audio: Change internal audio sample buffer from 32-bit to 16-bit samples
- GBA Memory: Simplify memory API and use fixed bus width
- GBA Thread: Make GBASyncWaitFrameStart time out
- GBA Video: Start video at the last scanline instead of the first
- Qt: Optimize logo drawing
- Qt: Move frame upload back onto main thread
- Qt: Remember window position
- Qt: Double-clicking on the window toggles full screen
- Util: Use proper locale for reading and writing float values
mGBA 0.1.1
Jan 24, 2015 – written by endrift
A bugfix release of mGBA, version 0.1.1, is released. Please note that this is a bugfix release only and does not include any new features. It aims to increase the compatibility and stability over the previous version.
Bugfixes:
- ARM7: Fix LDM writeback to a register already written
- GBA: Fix timers 2 and 3 updating incorrectly
- GBA Audio: Make larger buffer sizes than 2048 actually work properly
- GBA Audio: Fix GB audio channels being too quiet (fixes #159)
- GBA Audio: Properly initialize audio FIFO channels
- GBA BIOS: Fix HLE Lz77 and RL functions to properly account for width and invalid addresses
- GBA BIOS: Fix BIOS prefetch after returning from a SWI
- GBA BIOS: Fix LZ77UnCompVram to use 16-bit loads from decompressed memory
- GBA BIOS: Fix HuffUnComp to work when games pass an invalid bit length
- GBA BIOS: Fix GetBiosChecksum to return the value of a real GBA, regardless of used BIOS
- GBA BIOS: Fix HuffUnComp boundary conditions
- GBA Memory: Don't call into GPIO write calls if GPIO devices are absent
- GBA Memory: Properly initialize 1 Mb flash, and add debug logging
- GBA Memory: Filter out top nybble of DMA addresses
- GBA Memory: Properly bounds-check VRAM accesses
- GBA Memory: Fix initial DMA state
- GBA Thread: Allow halted games to exit cleanly
- GBA Video: Fix blend issues with obscured middle layers
- GBA Video: Fix windows not disabling target 1 appropriately (fixes #161)
- GBA Video: Fix sprite mis-ordering behavior in some cases (fixes #168)
- GBA Video: Fix window interactions with 16-color mode 0 mosaic
- GBA Video: Fix sprite boundary conditions with mosaic
- GBA Video: Fix mode 0 being able to read tiles above appropriate tile range
- Qt: Fix issue with set frame sizes being the wrong height
- Qt: Fix emulator crashing when full screen if a game is not running
- Qt: Fix window focus issues
- Qt: Properly set default video recording settings
- Qt: Fix a race condition when a game crashes immediately
- Qt: Fix some cases where key mapping can break if focus is adjusted
- Qt: Fix crash if a game pauses before any frames are shown
- Debugger: Negative PC-relative loads now properly subtract the offset
- Debugger: Align PC-relative loads in Thumb
- Debugger: Fix watchpoints triggering too late
- Debugger: Fix binary print putting spaces between digits
- Video: Ensure FFmpeg encoder has audio frames
- Video: Fix uncompressed PCM audio recording
- Video: Fix FFmpeg crashing when the file extension is wrong
- Util: Fix SOCKET_FAILED macro
Misc:
- GBA: Exit cleanly on FATAL if the port supports it
- GBA Memory: Implement 16- and 32-bit loads from SRAM
- Qt: Disable sync to video by default
- Qt: Handle a game crash without crashing
- Qt: Set default log level to FATAL, ERROR and WARN
- Qt: Clarify some phrasing in the menus
- Qt: Clear active buttons when focus is lost