What's new

mGBA 0.3.0 released!

spotanjo3

Moderator
Moderator
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
Volume control
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)
Memory inspector
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: SIO logging layer
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
SDL: Clean up GL context
Util: Allow disabling the threading code entirely
VFS: Add sync method to force syncing with backing

Get it now in the Downloads section. Binaries are available for Windows, Ubuntu and OS X, and the source code is available for all other platforms.
 

Top