0.9.1: (2021-04-18)
Emulation fixes:
- ARM: Fix LDM^ with empty rlist (fixes mgba.io/i/2127)
- Core: Fix first event scheduling after loading savestate
- GB Serialize: Fix switching speed modes when loading a state (fixes mgba.io/i/2097)
- GB: Fix skipping BIOS
- GBA Memory: Fix loading Thumb savestates when in ARM mode
- GBA Video: Fix window start on modes 3-5 with mosaic (fixes mgba.io/i/1690)
- GBA Video: Fix mode 3-5 overflow with mosaic (fixes mgba.io/i/1691)
Other fixes:
- GBA: Fix non-USA 1.0 FireRed misdetecting as a ROM hack (fixes mgba.io/i/2100)
- GBA: Fix crash when ROM loading fails
- GBA e-Reader: Fix bitmap short strip scanning
- GBA Video: Fix mode 5 frame 1 caching (fixes mgba.io/i/2075)
- GBA Video: Don't attempt to copy invalid registers when switching renderer
- Qt: Fix crash when switching from high-resolution OpenGL renderer to software
- Qt: Fix OpenGL renderer lagging behind when fast-forwarding (fixes mgba.io/i/2094)
- Qt: Fix smudged window icon on Windows
- Qt: Fix saving settings enabling camera when camera name changes (fixes mgba.io/i/2125)
- Qt: Fix frames getting backlogged (fixes mgba.io/i/2122)
- Qt: Restore maximized state when starting (fixes mgba.io/i/487)
Misc:
- Core: Truncate preloading ROMs that slightly exceed max size (fixes mgba.io/i/2093)
- GBA: Default-enable VBA bug compat for Ruby and Emerald ROM hacks
- GBA Memory: Log GPIO writes on non-GPIO carts as Pak Hardware instead of Memory
- Qt: Add ROM filename and size to bug reporter
- Qt: Improve handling of disabling VBA bug compat mode (fixes mgba.io/i/2129)
0.9.0: (2021-03-28)
Features:
- e-Reader card scanning
- New tool for converting between different save game formats
- WebP and APNG recording
- Separate overrides for GBC games that can also run on SGB or regular GB
- Game Boy Player features can be enabled by default for all compatible games
- Frame and I/O viewer support for Game Boy
- Bug report tool for gathering information helpful for reporting bugs
- Mute option in homebrew ports
- Status indicators for fast-forward and mute in homebrew ports
- VBA bug compatibility mode for ROM hacks that don't work on real hardware
- Read-only support for MBC6 flash memory
- New unlicensed GB mappers: Pokémon Jade/Diamond, BBD, and Hitek
- Stack tracing tools in ARM debugger (by ahigerd)
- Command scripts for CLI debugger (by ahigerd)
- Scheduled event dumping in CLI debugger
- ARM disassembler now resolves addresses to symbol names
- Add Game Boy Player feature support to ports
- Individual window types can now be toggled in debugging views
- Support for the Wii U GamePad when running as an injected VC title
Emulation fixes:
- ARM: Fix ALU reading PC after shifting
- ARM: Fix STR storing PC after address calculation
- ARM: Fix Addressing mode 1 shifter on rs == pc (fixes mgba.io/i/1926)
- ARM: Fix long multiply-and-accumulate register write order (fixes mgba.io/1/1956)
- ARM: Fix long and accumulate multiply timing
- GB: Partially fix timing for skipped BIOS
- GB: Downgrade DMG-only ROMs from CGB mode even without boot ROM
- GB: Fix marking BIOS as unmapped when skipping BIOS (fixes mgba.io/i/2061)
- GB Audio: Fix serializing sweep time
- GB Audio: Fix some channel 4 timing edge cases
- GB MBC: Fix MBC1 mode changing behavior
- GB MBC: Fix some MBC3 bit masking
- GB Video: Fix state after skipping BIOS (fixes mgba.io/i/1715 and mgba.io/i/1716)
- GBA: Fix timing advancing too quickly in rare cases
- GBA: Clear GBP connection on reset
- GBA Audio: Revamp FIFO emulation (fixes mgba.io/i/356, mgba.io/i/875, mgba.io/i/1847)
- GBA BIOS: Implement dummy sound driver calls
- GBA BIOS: Improve HLE BIOS timing
- GBA BIOS: Fix reloading video registers after reset (fixes mgba.io/i/1808)
- GBA BIOS: Make HLE BIOS calls interruptable (fixes mgba.io/i/1711 and mgba.io/i/1823)
- GBA BIOS: Fix invalid decompression bounds checking
- GBA DMA: Linger last DMA on bus (fixes mgba.io/i/301 and mgba.io/i/1320)
- GBA DMA: Fix ordering and timing of overlapping DMAs
- GBA I/O: Green swap register should be readable
- GBA I/O: Ignore high bits on IME
- GBA Memory: Improve gamepak prefetch timing
- GBA Memory: Stall on VRAM access in mode 2 (fixes mgba.io/i/190)
- GBA Memory: Improve robustness of Matrix memory support
- GBA Memory: Mark Famicom Mini games 22 through 28 as non-mirroring
- GBA Memory: Return correct byte for odd ROM open bus addresses
- GBA Memory: Improved AGBPrint emulation of edge cases (fixes mgba.io/i/1867)
- GBA Memory: Fix masking of misaligned jumps
- GBA Serialize: Fix alignment check when loading states
- GBA SIO: Fix copying Normal mode transfer values
- GBA SIO: Fix Normal mode being totally broken (fixes mgba.io/i/1800)
- GBA SIO: Fix deseralizing SIO registers
- GBA SIO: Fix hanging on starting a second multiplayer window (fixes mgba.io/i/854)
- GBA SIO: Fix Normal mode transfer start timing (fixes mgba.io/i/425)
- GBA Timers: Fix toggling timer cascading while timer is active (fixes mgba.io/i/2043)
- GBA Video: Latch scanline at end of Hblank (fixes mgba.io/i/1319)
- GBA Video: Fix Hblank timing
- GBA Video: Implement green swap (fixes mgba.io/i/1609)
- GBA Video: Emulate sprite cycle limits in OpenGL renderer (fixes mgba.io/i/1635)
- GBA Video: Fix OBJWIN erratic rendering in OpenGL renderer
- GBA Video: Fix x offset in 256-color BG mosaic (fixes mgba.io/i/1684)
- GBA Video: Fix transposed BG mosaic parameters in GL renderer
- SM83: Emulate HALT bug
- SM83: Improve mid-M-cycle interrupts
- SM83: HALT should not consume an extra T-state
Other fixes:
- 3DS: Fix thread cleanup
- All: Improve export headers (fixes mgba.io/i/1738)
- Cheats: Fix indirect write cheats (fixes mgba.io/i/2026)
- CMake: Fix build with downstream minizip that exports incompatible symbols
- CMake: Link with correct OpenGL library (fixes mgba.io/i/1872)
- Core: Ensure ELF regions can be written before trying
- Core: Fix threading improperly setting paused state while interrupted
- Core: Fix loading ELF files that have unexpected empty program headers
- Core: Fix destroying an mVL with an invalid channel count
- Debugger: Don't skip undefined instructions when debugger attached
- Debugger: Close trace log when done tracing
- Debugger: Fix change watchpoints (fixes mgba.io/i/1947)
- Debugger: Call CLI debugger system init
- FFmpeg: Fix some small memory leaks
- FFmpeg: Fix encoding of time base
- GB: Fix crash when changing ROM while in banked address space
- GB: Fix loading model overrides
- GB MBC: Force minimum SRAM size on rare MBCs that always have SRAM
- GB Serialize: Fix crash when loading pre-0.7 SGB savestates
- GB Video: Fix SGB video logs
- GB Video: Discard SGB packets in non-SGB mVLs
- GB Video: Fix deserializing negative LX state
- GB Video: Don't rendering negative batches
- GBA: Fix loading multiboot ELF files (fixes mgba.io/i/1949)
- GBA: Fix loading subsequent save files (fixes mgba.io/i/2067)
- mGUI: Don't attempt to preload files larger than can fit in RAM
- Qt: Force OpenGL paint engine creation thread (fixes mgba.io/i/1642)
- Qt: Fix static compilation in MinGW (fixes mgba.io/i/1769)
- Qt: Fix a race condition in the frame inspector
- Qt: Load/save bytes from memory viewer in the order visible (fixes mgba.io/i/1900)
- Qt: Fix running proxied video if it gets pushed to the main thread
- Qt: Fix game display sometimes disappearing after closing load/save state screen
- Qt: Fix cancelling pausing before the frame ends
- Qt: Fix gamepad event dispatching (fixes mgba.io/i/1922)
- Qt: Pre-attach GDB stub when launching with -g (fixes mgba.io/i/1950)
- Qt: Fix crash when editing shortcuts with none selected (fixes mgba.io/i/1964)
- Qt: Fix crashing when no OpenGL context can be obtained
- Qt: Fix issues with I/O viewer not properly synchronizing state
- Qt: Fix loading a new game crashing on Wayland (fixes mgba.io/i/1992)
- Qt: Fix inability to clear hat bindings
- SM83: Simplify register pair access on big endian
- SM83: Disassemble STOP as one byte
- Switch: Fix GB game height in pixel accurate mode (fixes mgba.io/i/2073)
- Wii: Fix crash on unloading irregularly sized GBA ROMs
Misc:
- 3DS: Use "wide mode" where applicable for slightly better filtering
- 3DS: Batch directory reads
- Core: Add savedataUpdated callback
- Core: Add shutdown callback
- Core: Rework thread state synchronization
- Core: Improve support for ROM patch cheats, supporting disabling overlapping patches
- Core: Adding to library is now recursive
- GB: Allow pausing event loop while CPU is blocked
- GB: Add support for sleep and shutdown callbacks
- GB: Redo double speed emulation (closes mgba.io/i/1515)
- GB: Support loading CGB-on-AGB boot ROM
- GB Audio: Add channel 4 batching back (fixes mgba.io/i/1313)
- GB Core: Return the current number of banks for ROM/SRAM, not theoretical max
- GB I/O: Implement preliminary support for PCM12/PCM34 (closes mgba.io/i/1468)
- GB MBC: Remove unused SRAM size
- GBA: Allow pausing event loop while CPU is blocked
- GBA BIOS: Division by zero should emit a FATAL error
- GBA Cheats: Allow unlimited ROM patch-type codes per set
- GBA Video: Convert OpenGL VRAM texture to integer
- GBA Video: Skip attempting to render offscreen sprites in OpenGL
- GBA Video: New GL palette approach, no more batch splitting on palette edits
- GBA Video: Avoid integer division using reciprocal tricks
- Debugger: Keep track of global cycle count
- FFmpeg: Add looping option for GIF/APNG
- FFmpeg: Add CRF support for applicable codecs
- mGUI: Show battery percentage
- mGUI: Skip second scan loop when possible
- mGUI: Improve loading speed (fixes mgba.io/i/1957)
- Qt: Renderer can be changed while a game is running
- Qt: Add hex index to palette view
- Qt: Add transformation matrix info to sprite view
- Qt: Memory viewer now supports editing decimal values directly (closes mgba.io/i/1705)
- Qt: Add copy button to GB printer dialog
- Qt: Window title updates can be disabled (closes mgba.io/i/1912)
- Qt: Redo OpenGL context thread handling (fixes mgba.io/i/1724)
- Qt: Discard additional frame draws if waiting fails
- Qt: Unify monospace font usage
- Qt: Add button to jump to log settings
- Qt: Use relative paths in portable mode when applicable (fixes mgba.io/i/838)
- Qt: Better initial shortcut editor column sizes
- SDL: Fall back to sw blit if OpenGL init fails
- Switch: Optimize font rendering (fixes mgba.io/i/2078)
- Switch: Allow switching between CPU and GPU renderers without reloading
- Util: Reset vector size on deinit
- VFS: Change semantics of VFile.sync on mapped files (fixes mgba.io/i/1730)
0.8.4: (2020-10-29)
Emulation fixes:
- GB Audio: Fix initial sweep state
- GB Audio: Fix deserializing audio channels 2 and 3
- GB Audio: Fix deserializing while audio was disabled (fixes mgba.io/i/1305)
- GB Video: Fix drawing background when window is force-disabled by frontend
- GB, GBA Video: Copy disable flags when drawing scanlines in proxy when not blocking
- GBA Audio: Fix deserializing SOUNDCNT_L
- GBA Audio: Fix stereo in XQ audio
- GBA Audio: Fix volume/mute in XQ audio (fixes mgba.io/i/1864)
- GBA Hardware: Fix GB Player detection on big endian platforms
- GBA Video: Invalidate map cache when modifying BGCNT (fixes mgba.io/i/1846)
- GBA Video: Don't draw sprites using unmapped VRAM in GL renderer (fixes mgba.io/i/1865)
- GBA Video: Fix rare regression blending semitransparent sprites (fixes mgba.io/i/1876)
- GBA Video: Do not affect OBJ pixel priority when writing OBJWIN (fixes mgba.io/i/1890)
- GBA Video: Fix deferred blending when OBJWIN matches window (fixes mgba.io/i/1905)
- GBA Video: Fix mode 4 transparency in OpenGL (fixes mgba.io/i/1907)
Other fixes:
- ARM Decoder: Fix decoding pre-indexed writeback instructions (fixes mgba.io/i/1915)
- Core: Fix reported ROM size when a fixed buffer size is used
- Core: Fix memory leak loading ELF files
- GBA: Disable more checks when loading GS save with checks disabled (fixes mgba.io/i/1851)
- GBA: Fix endianness issues in renderer proxy
- GBA Core: Fix memory leak when loading symbols
- GBA Serialize: Ensure program counter is aligned when loading
Misc:
- GBA Video: Improve speed of window texture generation on AMD
0.8.2: (2020-06-14)
Emulation fixes:
- ARM: Fix timing on Thumb shift instructions
- GB: Fix GBC game registers after skipping BIOS
- GB MBC: Support 4MB MBC30 ROMs (fixes mgba.io/i/1713)
- GB Video: Fix BGPS value after skipping BIOS (fixes mgba.io/i/1717)
- GBA: Add missing RTC overrides for Legendz games
- GBA BIOS: Reset renderer when RegisterRamReset called (fixes mgba.io/i/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 mgba.io/i/1702)
- GBA Video: Fix disabling OBJWIN in GL renderer (fixes mgba.io/i/1759)
- GBA Video: Add missing parts of 256-color mode 0 mosaic (fixes mgba.io/i/1701)
- GBA Video: Fix double-size OBJ wrapping in GL renderer (fixes mgba.io/i/1712)
- GBA Video: Simplify sprite cycle counting (fixes mgba.io/i/1279)
- GBA Video: Fix sprite/backdrop blending regression
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:
All: Fix several memory leaks
GB Core: Fix toggling WIN and OBJ being swapped
GBA: Fix skipping BIOS on irregularly sized ROMs
Bugfixes:
- 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 mgba.io/i/1293)
- GB, GBA Serialize: Fix loading two states in a row
- GBA: Fix video timing when skipping BIOS (fixes mgba.io/i/1318)
- GBA DMA: Fix Display Start DMAs
- GBA DMA: Fix DMA start/end timing
- GBA DMA: Fix invalid DMA handling (fixes mgba.io/i/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 mgba.io/i/1317)
Misc:
- GBA Video: Improve sprite cycle counting (fixes mgba.io/i/1274)
Changes from 0.6.3
Features
ELF support
Game Boy Camera support
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
Miscellaneous
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
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
Changes from 0.7 beta 1
Features
Libretro: Add Game Boy cheat support
Tile viewer now has adjustable width
Bugfixes
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
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
A _POSIX_C_SOURCE definition is needed for some locale definitions, but
some non-standard functions are also used (notably futimes). Avoid using
a global definition for _POSIX_C_SOURCE and define it where necessary,
while also defining _BSD_SOURCE and _NETBSD_SOURCE to get the right
prototype for futimes where necessary.
Libretro is a simple but powerful development interface that allows for the
easy creation of emulators, games and multimedia applications that can plug
straight into any libretro-compatible frontend. This development interface is
open to others so that they can run these pluggable emulator and game cores
also in their own programs or devices.
mGBA is an emulator for running Game Boy Advance games. It aims to be faster
and more accurate than many existing Game Boy Advance emulators, as well as
adding features that other emulators lack. It also supports Game Boy and
Game Boy Color games.