<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>mGBA</title>
    <description>mGBA is an open-source Game Boy Advance emulator, copyright &amp;copy; 2013&amp;ndash;2026 Vicki Pfau. This project is not affiliated in any way with Nintendo. Game Boy Advance is a registered trademark of Nintendo Co., Ltd.</description>
    <link>https://mgba.io/</link>
    <atom:link href="https://mgba.io/feed.xml" rel="self" type="application/rss+xml" />
    <pubDate>Sun, 26 Apr 2026 02:05:04 -0700</pubDate>
    <lastBuildDate>Sun, 26 Apr 2026 02:05:04 -0700</lastBuildDate>
    <generator>Jekyll v4.4.1</generator>
    
      <item>
        <title>mGBA 0.10.5</title>
        <description>&lt;p&gt;A new release of mGBA, version 0.10.5 is available. This version is a bugfix release, which contains several important fixes.
Though 0.10.4 was scheduled to be the last version before 0.11, some major issues were discovered and fixed.
Important fixes include save state loading leading to a small portion of the ROM getting corrupted until reset, which affected games including Golden Sun, the Wii version (and potentially other versions) crashing when loading from ZIP files that are too large, and another issue with the updater.
As this version only includes important fixes and smaller fixes that are unlikely to cause more issues the list of changes is small.
This will be the last release before 0.11 unless a major issue is discovered, and may be the last release to support Windows 7 – 8.1 and macOS 10.9 – 10.12.
An extensive list of changes follows after the cut.&lt;!--more--&gt;&lt;/p&gt;

&lt;p&gt;Fixes:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;ARM Debugger: Fix disassembly of ror r0 barrel shift (fixes &lt;a href=&quot;https://mgba.io/i/3412&quot;&gt;#3412&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;FFmpeg: Fix failing to record videos with CRF video (fixes &lt;a href=&quot;https://mgba.io/i/3368&quot;&gt;#3368&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GB Core: Fix cloning savedata when backing file is outdated (fixes &lt;a href=&quot;https://mgba.io/i/3388&quot;&gt;#3388&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA Cheats: Let VBA-style codes patch ROM (fixes &lt;a href=&quot;https://mgba.io/i/3423&quot;&gt;#3423&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA Core: Fix booting into BIOS when skip BIOS is enabled&lt;/li&gt;
  &lt;li&gt;GBA Hardware: Fix loading states unconditionally overwriting GPIO memory&lt;/li&gt;
  &lt;li&gt;Updater: Fix rewriting folders and files on Windows (fixes &lt;a href=&quot;https://mgba.io/i/3384&quot;&gt;#3384&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Wii: Fix crash on loading large ZIP files (fixes &lt;a href=&quot;https://mgba.io/i/3404&quot;&gt;#3404&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Misc:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;GB: Allow use of CGB-E and AGB-0 BIOS versions (closes &lt;a href=&quot;https://mgba.io/i/3427&quot;&gt;#3427&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Get it now in the &lt;a href=&quot;/downloads.html&quot;&gt;Downloads&lt;/a&gt; section. Binaries are available for Windows, Ubuntu, other Linux distros (via AppImage), macOS, Nintendo Switch, 3DS, Wii, and PlayStation Vita, and the source code is available for all other platforms.&lt;/p&gt;

&lt;p&gt;If you enjoy using mGBA and wish to give back, crowd-sourced translations contributions are welcome on &lt;a href=&quot;https://hosted.weblate.org/projects/mgba/&quot;&gt;Weblate&lt;/a&gt;, and there is a list of ways to donate on the &lt;a href=&quot;/donate.html&quot;&gt;donations page&lt;/a&gt;, including a &lt;a href=&quot;https://www.patreon.com/mgba&quot;&gt;Patreon&lt;/a&gt;.&lt;/p&gt;
</description>
        <pubDate>Sat, 08 Mar 2025 00:00:00 -0800</pubDate>
        <link>https://mgba.io/2025/03/08/mgba-0.10.5/</link>
        <guid isPermaLink="true">https://mgba.io/2025/03/08/mgba-0.10.5/</guid>
        
        <category>announcement</category>
        
        <category>release</category>
        
        
      </item>
    
      <item>
        <title>mGBA 0.10.4</title>
        <description>&lt;p&gt;A new release of mGBA, version 0.10.4 is available. This version is a bugfix release, which contains several important fixes.
Important fixes include the Wii version being unable to launch in some cases, and an multiple issue with the updater.
If you are running on Windows and have used the installer (instead of the portable version),
you will need to update manually as a bug that prevents the built-in updater from working properly has only been identified and fixed after the release of 0.10.3.
This will be the last release before 0.11 unless a major issue is discovered, and may be the last release to support Windows 7 – 8.1 and macOS 10.9 – 10.12.
An extensive list of changes follows after the cut.&lt;!--more--&gt;&lt;/p&gt;

&lt;p&gt;Emulation fixes:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;GB Audio: Fix audio envelope timing resetting too often (fixes &lt;a href=&quot;https://mgba.io/i/3164&quot;&gt;#3164&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GB I/O: Fix STAT writing IRQ trigger conditions (fixes &lt;a href=&quot;https://mgba.io/i/2501&quot;&gt;#2501&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA GPIO: Fix gyro read-out start (fixes &lt;a href=&quot;https://mgba.io/i/3141&quot;&gt;#3141&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA I/O: Fix HALTCNT access behavior (fixes &lt;a href=&quot;https://mgba.io/i/2309&quot;&gt;#2309&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA I/O: Fix audio register 8-bit write behavior (fixes &lt;a href=&quot;https://mgba.io/i/3086&quot;&gt;#3086&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA Serialize: Properly restore GPIO register state (fixes &lt;a href=&quot;https://mgba.io/i/3294&quot;&gt;#3294&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA SIO: Fix MULTI mode SIOCNT bit 7 writes on secondary GBAs (fixes &lt;a href=&quot;https://mgba.io/i/3110&quot;&gt;#3110&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Other fixes:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Core: Fix patch autoloading leaking the file handle&lt;/li&gt;
  &lt;li&gt;GB: Fix uninitialized save data when loading undersized temporary saves&lt;/li&gt;
  &lt;li&gt;GB, GBA Core: Fix memory leak if reloading debug symbols&lt;/li&gt;
  &lt;li&gt;GB Serialize: Prevent loading invalid states where LY &amp;gt;= 144 in modes other than 1&lt;/li&gt;
  &lt;li&gt;GBA Audio: Fix crash if audio FIFOs and timers get out of sync&lt;/li&gt;
  &lt;li&gt;GBA Audio: Fix crash in audio subsampling if timing lockstep breaks&lt;/li&gt;
  &lt;li&gt;GBA Core: Fix loading symbols from ELF files if the file doesn’t end with .elf&lt;/li&gt;
  &lt;li&gt;GBA Memory: Let raw access read high MMIO addresses&lt;/li&gt;
  &lt;li&gt;Qt: Fix crash when applying changes to GB I/O registers in I/O view&lt;/li&gt;
  &lt;li&gt;Qt: Fix LCDC background priority/enable bit being mis-mapped in I/O view&lt;/li&gt;
  &lt;li&gt;Qt: Fix saving named states breaking when screenshot states disabled (fixes &lt;a href=&quot;https://mgba.io/i/3320&quot;&gt;#3320&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Fix potential crash on Wayland with OpenGL (fixes &lt;a href=&quot;https://mgba.io/i/3276&quot;&gt;#3276&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Fix installer updates if a version number is in the filename (fixes &lt;a href=&quot;https://mgba.io/i/3109&quot;&gt;#3109&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Updater: Fix updating appimage across filesystems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Misc:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Qt: Make window corners square on Windows 11 (fixes &lt;a href=&quot;https://mgba.io/i/3285&quot;&gt;#3285&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Switch: Add bilinear filtering option (closes &lt;a href=&quot;https://mgba.io/i/3111&quot;&gt;#3111&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Vita: Add imc0 and xmc0 mount point support&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Get it now in the &lt;a href=&quot;/downloads.html&quot;&gt;Downloads&lt;/a&gt; section. Binaries are available for Windows, Ubuntu, other Linux distros (via AppImage), macOS, Nintendo Switch, 3DS, Wii, and PlayStation Vita, and the source code is available for all other platforms.&lt;/p&gt;

&lt;p&gt;If you enjoy using mGBA and wish to give back, crowd-sourced translations contributions are welcome on &lt;a href=&quot;https://hosted.weblate.org/projects/mgba/&quot;&gt;Weblate&lt;/a&gt;, and there is a list of ways to donate on the &lt;a href=&quot;/donate.html&quot;&gt;donations page&lt;/a&gt;, including a &lt;a href=&quot;https://www.patreon.com/mgba&quot;&gt;Patreon&lt;/a&gt;.&lt;/p&gt;
</description>
        <pubDate>Sat, 07 Dec 2024 00:00:00 -0800</pubDate>
        <link>https://mgba.io/2024/12/07/mgba-0.10.4/</link>
        <guid isPermaLink="true">https://mgba.io/2024/12/07/mgba-0.10.4/</guid>
        
        <category>announcement</category>
        
        <category>release</category>
        
        
      </item>
    
      <item>
        <title>mGBA 0.10.3</title>
        <description>&lt;p&gt;A new release of mGBA, version 0.10.3 is available. This version is a bugfix release, which contains several important fixes.
Important fixes include multiplayer windows always going too fast, and an issue with the updater that prevented switching to the development branch.
An extensive list of changes follows after the cut.&lt;!--more--&gt;&lt;/p&gt;

&lt;p&gt;Emulation fixes:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;ARM: Remove obsolete force-alignment in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bx pc&lt;/code&gt; (fixes &lt;a href=&quot;https://mgba.io/i/2964&quot;&gt;#2964&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;ARM: Fake bpkt instruction should take no cycles (fixes &lt;a href=&quot;https://mgba.io/i/2551&quot;&gt;#2551&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GB Audio: Fix channels 1/2 staying muted if restarted after long silence&lt;/li&gt;
  &lt;li&gt;GB Audio: Fix channel 1 restarting if sweep applies after stop (fixes &lt;a href=&quot;https://mgba.io/i/2965&quot;&gt;#2965&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GB Audio: Fix restarting envelope when writing to register (fixes &lt;a href=&quot;https://mgba.io/i/3067&quot;&gt;#3067&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GB Audio: Improve “zombie mode” emulation in CGB mode (fixes &lt;a href=&quot;https://mgba.io/i/2029&quot;&gt;#2029&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GB I/O: Read back proper SVBK value after writing 0 (fixes &lt;a href=&quot;https://mgba.io/i/2921&quot;&gt;#2921&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GB SIO: Disabling SIO should cancel pending transfers (fixes &lt;a href=&quot;https://mgba.io/i/2537&quot;&gt;#2537&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA Audio: Fix sample timing drifting when changing sample interval&lt;/li&gt;
  &lt;li&gt;GBA Audio: Fix initial channel 3 wave RAM (fixes &lt;a href=&quot;https://mgba.io/i/2947&quot;&gt;#2947&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA Audio: Fix sample position issues when rate changes (fixes &lt;a href=&quot;https://mgba.io/i/3006&quot;&gt;#3006&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA GPIO: Fix tilt scale and orientation (fixes &lt;a href=&quot;https://mgba.io/i/2703&quot;&gt;#2703&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA BIOS: Fix clobbering registers with word-sized CpuSet&lt;/li&gt;
  &lt;li&gt;GBA SIO: Fix normal mode SI/SO semantics (fixes &lt;a href=&quot;https://mgba.io/i/2925&quot;&gt;#2925&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Other fixes:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;GB: Fix applying a patch that changes the cartridge mapper (fixes &lt;a href=&quot;https://mgba.io/i/3077&quot;&gt;#3077&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA Savedata: Fix crash when resizing flash save games for RTC data&lt;/li&gt;
  &lt;li&gt;mGUI: Fix cases where an older save state screenshot would be shown (fixes &lt;a href=&quot;https://mgba.io/i/2183&quot;&gt;#2183&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Re-enable sync for multiplayer windows that aren’t connected (fixes &lt;a href=&quot;https://mgba.io/i/2974&quot;&gt;#2974&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Fix mute settings not being loaded on setting screen (fixes &lt;a href=&quot;https://mgba.io/i/2990&quot;&gt;#2990&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Fix screen freezing on macOS after closing save state window (fixes &lt;a href=&quot;https://mgba.io/i/2885&quot;&gt;#2885&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Vita: Fix camera setting not appearing (fixes &lt;a href=&quot;https://mgba.io/i/3012&quot;&gt;#3012&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Misc:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;mGUI: Persist fast forwarding after closing menu (fixes &lt;a href=&quot;https://mgba.io/i/2414&quot;&gt;#2414&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Add exporting of SAV + RTC saves from Save Converter to strip RTC data&lt;/li&gt;
  &lt;li&gt;VFS: Use anonymousMemoryMap for large 7z allocations (fixes &lt;a href=&quot;https://mgba.io/i/3013&quot;&gt;#3013&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Get it now in the &lt;a href=&quot;/downloads.html&quot;&gt;Downloads&lt;/a&gt; section. Binaries are available for Windows, Ubuntu, other Linux distros (via AppImage), macOS, Nintendo Switch, 3DS, Wii, and PlayStation Vita, and the source code is available for all other platforms.&lt;/p&gt;

&lt;p&gt;If you enjoy using mGBA and wish to give back, crowd-sourced translations contributions are welcome on &lt;a href=&quot;https://hosted.weblate.org/projects/mgba/&quot;&gt;Weblate&lt;/a&gt;, and there is a list of ways to donate on the &lt;a href=&quot;/donate.html&quot;&gt;donations page&lt;/a&gt;, including a &lt;a href=&quot;https://www.patreon.com/mgba&quot;&gt;Patreon&lt;/a&gt;.&lt;/p&gt;
</description>
        <pubDate>Sun, 07 Jan 2024 00:00:00 -0800</pubDate>
        <link>https://mgba.io/2024/01/07/mgba-0.10.3/</link>
        <guid isPermaLink="true">https://mgba.io/2024/01/07/mgba-0.10.3/</guid>
        
        <category>announcement</category>
        
        <category>release</category>
        
        
      </item>
    
      <item>
        <title>mGBA 0.10.2</title>
        <description>&lt;p&gt;A new release of mGBA, version 0.10.2 is available. This version is a bugfix release, which contains several important fixes.
Important fixes include crashing on start on very old graphics cards and flickering issues on Nvidia GPUs when using the OpenGL renderer.
An extensive list of changes follows after the cut.&lt;!--more--&gt;&lt;/p&gt;

&lt;p&gt;Emulation fixes:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;GBA Audio: Fix improperly deserializing GB audio registers (fixes &lt;a href=&quot;https://mgba.io/i/2793&quot;&gt;#2793&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA Audio: Clear GB audio state when disabled&lt;/li&gt;
  &lt;li&gt;GBA Memory: Make VRAM access stalls only apply to BG RAM&lt;/li&gt;
  &lt;li&gt;GBA Overrides: Fix saving in PMD:RRT (JP) (fixes &lt;a href=&quot;https://mgba.io/i/2862&quot;&gt;#2862&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA SIO: Fix SIOCNT SI pin value after attaching player 2 (fixes &lt;a href=&quot;https://mgba.io/i/2805&quot;&gt;#2805&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA SIO: Fix unconnected normal mode SIOCNT SI bit (fixes &lt;a href=&quot;https://mgba.io/i/2810&quot;&gt;#2810&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA SIO: Normal mode transfers with no clock should not finish (fixes &lt;a href=&quot;https://mgba.io/i/2811&quot;&gt;#2811&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA Timers: Cascading timers don’t tick when disabled (fixes &lt;a href=&quot;https://mgba.io/i/2812&quot;&gt;#2812&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA Video: Fix interpolation issues with OpenGL renderer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Other fixes:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Core: Allow sending thread requests to a crashed core (fixes &lt;a href=&quot;https://mgba.io/i/2784&quot;&gt;#2784&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;FFmpeg: Force lower sample rate for codecs not supporting high rates (fixes &lt;a href=&quot;https://mgba.io/i/2869&quot;&gt;#2869&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Fix crash when attempting to use OpenGL 2.1 to 3.1 (fixes &lt;a href=&quot;https://mgba.io/i/2794&quot;&gt;#2794&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Disable sync while running scripts from main thread (fixes &lt;a href=&quot;https://mgba.io/i/2738&quot;&gt;#2738&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Properly cap number of attached players by platform (fixes &lt;a href=&quot;https://mgba.io/i/2807&quot;&gt;#2807&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Disable attempted linking betwen incompatible platforms (fixes &lt;a href=&quot;https://mgba.io/i/2702&quot;&gt;#2702&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Fix modifier key names in shortcut editor (fixes &lt;a href=&quot;https://mgba.io/i/2817&quot;&gt;#2817&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Fix a handful of edge cases with graphics viewers (fixes &lt;a href=&quot;https://mgba.io/i/2827&quot;&gt;#2827&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Fix full-buffer rewind&lt;/li&gt;
  &lt;li&gt;Qt: Fix crash if loading a shader fails&lt;/li&gt;
  &lt;li&gt;Qt: Fix black screen when starting with a game (fixes &lt;a href=&quot;https://mgba.io/i/2781&quot;&gt;#2781&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Fix OSD on modern macOS (fixes &lt;a href=&quot;https://mgba.io/i/2736&quot;&gt;#2736&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Fix checked state of mute menu option at load (fixes &lt;a href=&quot;https://mgba.io/i/2701&quot;&gt;#2701&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Remove OpenGL proxy thread and override SwapInterval directly instead&lt;/li&gt;
  &lt;li&gt;Scripting: Fix receiving packets for client sockets&lt;/li&gt;
  &lt;li&gt;Scripting: Fix empty receive calls returning unknown error on Windows&lt;/li&gt;
  &lt;li&gt;Scripting: Return proper callback ID from socket.add&lt;/li&gt;
  &lt;li&gt;Vita: Work around broken mktime implementation in Vita SDK (fixes &lt;a href=&quot;https://mgba.io/i/2876&quot;&gt;#2876&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Misc:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Qt: Include wayland QPA in AppImage (fixes &lt;a href=&quot;https://mgba.io/i/2796&quot;&gt;#2796&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Stop eating boolean action key events (fixes &lt;a href=&quot;https://mgba.io/i/2636&quot;&gt;#2636&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Automatically change video file extension as appropriate&lt;/li&gt;
  &lt;li&gt;Qt: Swap P1 and other player’s save if P1 loaded it first (closes &lt;a href=&quot;https://mgba.io/i/2750&quot;&gt;#2750&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Get it now in the &lt;a href=&quot;/downloads.html&quot;&gt;Downloads&lt;/a&gt; section. Binaries are available for Windows, Ubuntu, other Linux distros (via AppImage), macOS, Nintendo Switch, 3DS, Wii, and PlayStation Vita, and the source code is available for all other platforms.&lt;/p&gt;

&lt;p&gt;If you enjoy using mGBA and wish to give back, there is a list of ways to donate on the &lt;a href=&quot;/donate.html&quot;&gt;donations page&lt;/a&gt;, including an &lt;a href=&quot;https://www.patreon.com/mgba&quot;&gt;mGBA Patreon&lt;/a&gt;.&lt;/p&gt;
</description>
        <pubDate>Sun, 23 Apr 2023 00:00:00 -0700</pubDate>
        <link>https://mgba.io/2023/04/23/mgba-0.10.2/</link>
        <guid isPermaLink="true">https://mgba.io/2023/04/23/mgba-0.10.2/</guid>
        
        <category>announcement</category>
        
        <category>release</category>
        
        
      </item>
    
      <item>
        <title>mGBA Turns Ten</title>
        <description>&lt;p&gt;Time sure does fly, huh? It’s been 10 years now since the &lt;a href=&quot;https://mgba.io/r/009bef870c3539918be19d01bb1f2b0cd2e8f84f&quot;&gt;very first commit&lt;/a&gt; to the mGBA git repository.
And while you can read all about the early history of mGBA on the &lt;a href=&quot;/timeline.html&quot;&gt;timeline page&lt;/a&gt;, I can assure you I had no expectation I’d still be working on this ten years later.
But here we are, a decade later, and I’m still working on it.
&lt;!--more--&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/gba-birthday.jpg&quot; alt=&quot;mGBA gets its own birthday cake&quot; class=&quot;superhero&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I can say for sure that things have changed a lot since I started mGBA.
Back in 2013, I had only been out of college for a year and change, had just started my career, and this was a hobby I’d had on my mind since before I’d graduated.
The intended scope was much smaller, and I wasn’t originally even planning to port it to Windows!
Obviously what happened as I got further along was completely different.
The scope grew immensely, and that’s why the m doesn’t stand for “micro” or “mini”.
(Actually, it doesn’t stand for anything, but originally it was going to stand for mini.)&lt;/p&gt;

&lt;p&gt;So what’s coming in the next ten years?
Well, I’m inexorably approaching 1.0, and hopefully that’ll be out the door in less than half that decade.
And after 1.0?
I’ll probably spend more time focusing on &lt;a href=&quot;/2017/04/08/medusa/&quot;&gt;medusa&lt;/a&gt;, and maybe taking a bit of a break for a while.
We’ll see.&lt;/p&gt;

&lt;p&gt;By the way, you might notice I keep using first person pronouns in this article.
I did this, I planned that, etc.
Did you know that this whole time this has been primarily a single person project?
I’m not the only contributor by a wide margin, but I’m the only person who regularly commits code, and I’m the only person who’s written major features.
It’s been my passion project this whole time, but when I started this I’d hoped I’d get more people helping out as the years went on.
Unfortunately, the reality of the situation is that very few people have joined the project.
Only one other person has a Developer role on the Discord, and it’s actually someone I’ve known since before I started working on mGBA.&lt;/p&gt;

&lt;p&gt;I’m definitely still looking for more developers who are looking to help me pick up the pace a bit; it’s definitely been slowing down in the latter half of this decade.
Don’t worry, I’m still planning to work on this for the foreseeable future, but I keep having to extend the intended timeline since, well, it keeps taking longer than I had hoped.
I’ve updated the timeline page to hopefully be a bit more realistic going forwards, since a lot more people seem to be expecting it to be realistic these days than when I first made it.&lt;/p&gt;

&lt;p&gt;Working on mGBA has consumed thousands of my own hours, and I’ve purchased a significant amount of hardware and games for testing.
mGBA has also gained a &lt;em&gt;lot&lt;/em&gt; of traction in the past few years, increasing the amount of time I’ve had to provide in support too.
I’d love to onboard some more people to help work on the project, be it for coding, translating, or just providing support.
I know there are a lot of streamers out there that use it for their videos too, and while there’s obviously no obligation to do so, for the streamers out there that make money off of streaming GBA games using mGBA it’d be a nice gesture to give back by pledging to &lt;a href=&quot;https://patreon.com/mgba&quot;&gt;mGBA’s Patreon&lt;/a&gt;.
The basic level is only US$1, which is less than a single Tier 1 Twitch subscription, and for US$5 you can get a fancy role on the Discord too.&lt;/p&gt;

&lt;p&gt;In the meantime, I’m going keep churning out code. I still have a release or six I want to get out the door in the next abstract span of time.
Oh yeah, and I did buy a cake for my GBA to take that photo.
GBAs can’t eat of course, but the cake was delicious regardless.&lt;/p&gt;
</description>
        <pubDate>Mon, 03 Apr 2023 00:00:00 -0700</pubDate>
        <link>https://mgba.io/2023/04/03/mgba-turns-ten/</link>
        <guid isPermaLink="true">https://mgba.io/2023/04/03/mgba-turns-ten/</guid>
        
        <category>anniversary</category>
        
        <category>future plans</category>
        
        
      </item>
    
      <item>
        <title>mGBA 0.10.1</title>
        <description>&lt;p&gt;A new release of mGBA, version 0.10.1 is available. This version is a bugfix release, which contains several important fixes. This release took a lot longer than expected, but hopefully it’ll be free of new bugs as a result. An extensive list of changes follows after the cut.&lt;!--more--&gt;&lt;/p&gt;

&lt;p&gt;Emulation fixes:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;GB Audio: Fix channels 1/2 not playing when resetting volume (fixes &lt;a href=&quot;https://mgba.io/i/2614&quot;&gt;#2614&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GB Audio: Fix channel 3 volume being changed between samples (fixes &lt;a href=&quot;https://mgba.io/i/1896&quot;&gt;#1896&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GB Audio: Fix up boot sequence&lt;/li&gt;
  &lt;li&gt;GB Audio: Fix updating channels other than 2 when writing NR5x&lt;/li&gt;
  &lt;li&gt;GB Memory: Actually, HDMAs should start when LCD is off (fixes &lt;a href=&quot;https://mgba.io/i/2662&quot;&gt;#2662&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GB Serialize: Don’t write BGP/OBP when loading SCGB state (fixes &lt;a href=&quot;https://mgba.io/i/2694&quot;&gt;#2694&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GB SIO: Further fix bidirectional transfer starting&lt;/li&gt;
  &lt;li&gt;GBA: Fix resetting key IRQ state (fixes &lt;a href=&quot;https://mgba.io/i/2716&quot;&gt;#2716&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA BIOS: Include timing in degenerate ArcTan2 cases (fixes &lt;a href=&quot;https://mgba.io/i/2763&quot;&gt;#2763&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA Video: Ignore disabled backgrounds as OBJ blend target (fixes &lt;a href=&quot;https://mgba.io/i/2489&quot;&gt;#2489&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Other fixes:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;GBA: Fix forceskip BIOS logic for multiboot ROMs (fixes &lt;a href=&quot;https://mgba.io/i/2753&quot;&gt;#2753&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA Cheats: Fix issues detecting unencrypted cheats (fixes &lt;a href=&quot;https://mgba.io/i/2724&quot;&gt;#2724&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Manually split filename to avoid overzealous splitting (fixes &lt;a href=&quot;https://mgba.io/i/2681&quot;&gt;#2681&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Fix scanning specific e-Reader dotcodes (fixes &lt;a href=&quot;https://mgba.io/i/2693&quot;&gt;#2693&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Don’t re-enable sync if GBA link modes aren’t the same (fixes &lt;a href=&quot;https://mgba.io/i/2044&quot;&gt;#2044&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Improve handling of multiplayer syncing (fixes &lt;a href=&quot;https://mgba.io/i/2720&quot;&gt;#2720&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Fix initializing update revision info&lt;/li&gt;
  &lt;li&gt;Qt: Redo stable branch detection heuristic (fixes &lt;a href=&quot;https://mgba.io/i/2679&quot;&gt;#2679&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Res: Fix species name location in Ruby/Sapphire revs 1/2 (fixes &lt;a href=&quot;https://mgba.io/i/2685&quot;&gt;#2685&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;VFS: Fix minizip write returning 0 on success instead of size&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Misc:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;macOS: Add category to plist (closes &lt;a href=&quot;https://mgba.io/i/2691&quot;&gt;#2691&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;macOS: Fix modern build with libepoxy (fixes &lt;a href=&quot;https://mgba.io/i/2700&quot;&gt;#2700&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Keep track of current palette preset name (fixes &lt;a href=&quot;https://mgba.io/i/2680&quot;&gt;#2680&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Move OpenGL proxy onto its own thread (fixes &lt;a href=&quot;https://mgba.io/i/2493&quot;&gt;#2493&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Get it now in the &lt;a href=&quot;/downloads.html&quot;&gt;Downloads&lt;/a&gt; section. Binaries are available for Windows, Ubuntu, other Linux distros (via AppImage), macOS, Nintendo Switch, 3DS, Wii, and PlayStation Vita, and the source code is available for all other platforms.&lt;/p&gt;

&lt;p&gt;If you enjoy using mGBA and wish to give back, there is a list of ways to donate on the &lt;a href=&quot;/donate.html&quot;&gt;donations page&lt;/a&gt;, including an &lt;a href=&quot;https://www.patreon.com/mgba&quot;&gt;mGBA Patreon&lt;/a&gt;.&lt;/p&gt;
</description>
        <pubDate>Tue, 10 Jan 2023 00:00:00 -0800</pubDate>
        <link>https://mgba.io/2023/01/10/mgba-0.10.1/</link>
        <guid isPermaLink="true">https://mgba.io/2023/01/10/mgba-0.10.1/</guid>
        
        <category>announcement</category>
        
        <category>release</category>
        
        
      </item>
    
      <item>
        <title>mGBA 0.10.0</title>
        <description>&lt;p&gt;Been a bit, huh?
It’s been 10 months since the last minor release, and over a year and a half since the last major release, but progress definitely has not stopped in the meantime.
Although a lot of the changes in this version are under the hood, cleaning up a lot of older code, paying down &lt;a href=&quot;https://en.wikipedia.org/wiki/Technical_debt&quot;&gt;technical debt&lt;/a&gt; and fixing bugs, there are still some major new features in this release.
Maybe we spent a bit too long on the polish, though, since this release was intended to be released months ago.
Note also that mGBA is written primarily by &lt;a href=&quot;https://github.com/endrift&quot;&gt;a single developer&lt;/a&gt;, so at times progress can stagnate; after all, mGBA has a &lt;a href=&quot;https://en.wikipedia.org/wiki/Bus_factor&quot;&gt;bus factor&lt;/a&gt; of one.
Fortunately, the extra-long wait is over, and mGBA 0.10.0 is here now!&lt;/p&gt;

&lt;!--more--&gt;
&lt;p&gt;Without further ado, let’s get to the feature list, as this first one is big.&lt;/p&gt;

&lt;h2 id=&quot;lua-scripting-support&quot;&gt;Lua scripting support&lt;/h2&gt;

&lt;p&gt;The biggest feature in this release is preliminary support for Lua scripting.
For those of you who are familiar with what scripting brings to emulation, please be aware that there are a lot of features still forthcoming.
As such, what is possible to do with scripting is currently somewhat limited.
For those of you who aren’t, here are some quick ideas.&lt;/p&gt;

&lt;p&gt;Ever wanted to keep track of which Pokémon are in your party, their stats, and more, with an external tracker that auto-updates as you play the game?
What about feeding text into an automated translation utility to get a comically bad auto-translation to compare against the comically bad official, in-house translation?
And how about keeping track of the RNG state so you can develop RNG manipulation tricks for speedruns?
All of these ideas, and more, have been implemented in various other emulators with Lua scripting before, and now with Lua scripting in mGBA it’ll be possible to start writing similar scripts for mGBA.&lt;/p&gt;

&lt;p&gt;To access scripting, click on the Scripting… option under tools.
By default, there’s not much to look at; it’s just a window with three empty panes and a text entry field at the bottom.
Until you load a script, none of these panes will actually do anything, though you can enter Lua directly into the text entry field and run it.&lt;/p&gt;

&lt;p&gt;The left pane is a list of text buffers that have been created by scripts, and the contents of those buffers are displayed on the top pane.
You can change which text buffer you’re currently viewing simply by clicking on its name in the list.
The output log, which is shared between all scripts, is shown on the bottom pane.
None of these do much of anything without any script loaded, but after running a script they can be used to display information to the user.&lt;/p&gt;

&lt;p class=&quot;gallery&quot;&gt;&lt;img src=&quot;/assets/scripting-window.png&quot; alt=&quot;The Scripting window&quot; /&gt;&lt;/p&gt;

&lt;p&gt;There are also a handful of example scripts that are included with mGBA.
You can find them in the scripts folder.
There’s also automatically generated API documentation located &lt;a href=&quot;/docs/scripting.html&quot;&gt;on its own page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As of this release there is no way to display any sort of graphical information in-emulator yet: no overlays, no separate windows, nothing.
Only textual and network interaction are supported in the initial release.
Although this feature was originally looking like it was going to get pushed back to 0.11, I got in enough early work on it that I decided to make a push to complete it for 0.10.
That said…it’s also a big part of why 0.10 is so late.
There’s plenty more planned for the future, but I had to cut a release sooner or later, so that’s it until 0.11.&lt;/p&gt;

&lt;h2 id=&quot;built-in-updater&quot;&gt;Built-in Updater&lt;/h2&gt;

&lt;p&gt;One of the more commonly requested features for mGBA is to have an auto-updater.
Many major emulators these days are getting auto-updaters, especially the ones that update frequently.
This release introduces an updater that can check for and automatically download and set up new versions for the user.
The updater itself is located in the settings, and can be run manually, or configured to check for updates every time mGBA starts.&lt;/p&gt;

&lt;p&gt;Though mGBA releases are fairly rare, mGBA is actively developed and development builds are updated along with these.
As such, the new updater features two update channels: stable, for releases like 0.10.0, and later 0.10.1, 0.11.0, etc., when they come out, and development, which is updated with every single code change.
Currently, the updater is supported on the desktop version, though the auto-setup does not work on standard Linux builds, as that’s generally managed differently on Linux.&lt;/p&gt;

&lt;p class=&quot;gallery&quot;&gt;&lt;img src=&quot;/assets/updater-settings.png&quot; alt=&quot;Updater settings&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Believe it or not, while 0.10 is the first version to feature an updater for the whole program, the groundwork for adding an updater has been in the works for several years!
Notably, parts of it were first used in the BattleChip Gate feature in 0.8 to download updated chip images.
Though currently only the desktop version has a built-in updater, the homebrew ports will support it in the future too.&lt;/p&gt;

&lt;h2 id=&quot;game-boy-enhancements&quot;&gt;Game Boy enhancements&lt;/h2&gt;

&lt;p&gt;Though less exciting for many users than the aforementioned features, this release also includes some commonly requested features for the Game Boy core.&lt;/p&gt;

&lt;h3 id=&quot;palette-presets&quot;&gt;Palette presets&lt;/h3&gt;

&lt;p&gt;Nostalgic for the color palette of Pokémon Red on your Game Boy Color?
How about Super Mario Land on the Super Game Boy?
An often-requested feature, mGBA now includes all of the color palettes that could be selected on the Game Boy Color and Super Game Boy, along with the defaults used in the various games that had built-in support for these palettes.
Further, you can manually select these palettes, plus a few additional palettes meant to mimic the colors on the original Game Boy, the Game Boy Pocket, and even the Game Boy Light.
These can be selected in settings on both the desktop and homebrew versions.&lt;/p&gt;

&lt;p class=&quot;gallery&quot;&gt;&lt;img src=&quot;/assets/sml-gray.png&quot; alt=&quot;Super Mario Land title screen in grayscale&quot; /&gt;
&lt;img src=&quot;/assets/sml-ugly.png&quot; alt=&quot;Super Mario Land title screen with garish colors&quot; /&gt;
&lt;img src=&quot;/assets/sml-dmg.png&quot; alt=&quot;Super Mario Land title screen in DMG green&quot; /&gt;
&lt;img src=&quot;/assets/sml-gb-light.png&quot; alt=&quot;Super Mario Land title screen in INDIGLOⓡ&quot; /&gt;&lt;/p&gt;

&lt;p class=&quot;gallery-caption&quot;&gt;In mGBA 0.9 there were no presets and the default was just grayscale. Some new presets included in 0.10 range from nostalgic to extra bright.&lt;/p&gt;

&lt;h3 id=&quot;super-game-boy-color&quot;&gt;Super Game Boy Color&lt;/h3&gt;

&lt;p&gt;If you’ve never heard of the Super Game Boy Color, well, there’s a good reason for that. It doesn’t exist.
Fortunately, &lt;a href=&quot;https://en.wikipedia.org/wiki/Fantasy_video_game_console&quot;&gt;not existing isn’t an impediment for emulator developers&lt;/a&gt; and hasn’t stopped emulators from implementing it.
So then, what is the Super Game Boy Color?
While most features of the Super Game Boy are superseded by the Game Boy Color, the biggest feature that still isn’t present is dynamic borders.&lt;/p&gt;

&lt;p class=&quot;article-aside&quot;&gt;&lt;img src=&quot;/assets/crystal-clear.png&quot; alt=&quot;Crystal Clear&quot; /&gt;
Crystal Clear uses the borders to display party, badges and ‘dex info&lt;/p&gt;

&lt;p&gt;Although some emulators have an option to use a single Super Game Boy border in Game Boy Color mode in games that support both modes, this doesn’t actually work by running both modes at the same time.
In fact, it turns out these two modes in practice are mutually exclusive—and as such, there are almost no games that will attempt to upload Super Game Boy borders while in Game Boy Color mode.
Turns out, the option to use borders in GBC mode works by booting the game in SGB mode invisibly, waiting for the game to upload a border, and then restarting the game in Game Boy Color mode with the border displayed.
Since the whole reboot process is invisible to the user, lots of users reasonably, but erroneously assume that this is actually just running in either pure Game Boy Color mode or some hybrid mode.
There is one caveat however: since a Super Game Boy game can actually upload a border at any time, it can dynamically change the border while the game is running, but the SGB-then-GBC-reboot mode cannot support this.&lt;/p&gt;

&lt;p&gt;Super Game Boy Color mode removes this restriction, as now ROM hacks can upload borders at any time as well.
This will not affect most, if any, existing games, as they tend to assume the modes are mutually exclusive.
Going forwards, mGBA may implement the SGB-then-GBC-reboot mode, SGBC mode is already implemented in some ROM hacks, such as Crystal Clear, which uses it to display information about your party and game progress.&lt;/p&gt;

&lt;h3 id=&quot;improved-audio-emulation&quot;&gt;Improved audio emulation&lt;/h3&gt;

&lt;p&gt;mGBA’s Game Boy audio emulation has been a pain point for many years.
While work has progressed on fixing various inaccuracies regarding edge cases, which the Game Boy’s audio processor is absolutely rife with, one of the limiting factors in improving the audio quality has been &lt;a href=&quot;https://en.wikipedia.org/wiki/Sampling_%28signal_processing%29&quot;&gt;audio sampling&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Internally, mGBA uses a sample rate of exactly 32768 Hz, which is the default sample rate on the GBA.
Due to some widely criticized design measures used in the GBA, audio is output at an entirely digital level from the processor, one bit every clock cycle, and smoothed out by a rudimentary &lt;a href=&quot;https://en.wikipedia.org/wiki/Digital-to-analog_converter&quot;&gt;DAC&lt;/a&gt; to make the final audio waveform.
Since the clock rate of the GBA is 16.78 MHz, a 32768 Hz “internal” sample rate equates to sending 512 cycle long &lt;a href=&quot;https://en.wikipedia.org/wiki/Pulse-width_modulation&quot;&gt;pulse-width modulated&lt;/a&gt; (equivalent to about 9 bit depth) samples 32768 times per second.&lt;/p&gt;

&lt;p&gt;That doesn’t sound great, especially since GB audio channels, which are present on the GBA as well, could change within that 512 cycle period.
This can result in terrible &lt;a href=&quot;https://en.wikipedia.org/wiki/Aliasing&quot;&gt;aliasing&lt;/a&gt;, leading to audible artifacts.
And it turns out, the GBA’s sample rate is &lt;em&gt;dynamic&lt;/em&gt; and most GBA games actually &lt;em&gt;change&lt;/em&gt; this sample rate to 65536 Hz.
Further, the Game Boy’s audio processor doesn’t operate at a sample level the same way as the GBA does.
It actually has the ability to directly output a (roughly) analog signal every cycle, which means the theoretical sample rate of the Game Boy is orders of magnitude above 32768 Hz, compounding the GBA-specific issues.
Taking all this into account, it meant that fixing this problem wasn’t as simple as just increasing the internal sample rate.
Further, there were several parts of mGBA that internally assumed samples would always be generated at 32768 Hz, so having to shake those out alone wasn’t trivial.&lt;/p&gt;

&lt;p&gt;Another surprisingly major problem: speed.
The audio subsystems of the GB and GBA cores are the third most intensive components of these cores, after the PPU and CPU, so running it twice as often, or more, is effectively a non-starter due to how much slower it would make the cores overall.
One of the biggest tricks mGBA uses to make things faster is batching: instead of doing something twice as often, do twice as much in a single time running, or some other multiple.
While this doesn’t sound like it should help that much, it can reduce the overhead in a bunch of different ways.
Unfortunately, I wasn’t able to match the old speed of the audio subsystem in 0.9, but I’ve tried hard to make it nearly as fast, and I’ll be working on more optimizations in the future.&lt;/p&gt;

&lt;p&gt;After implementing the fairly extensive changes needed, I tested a few games.
The audio is cleaner sounding in general, and while that’s a subjective measure, I decided to try and run a more objective test.
There’s a project designed specifically for this sort of thing, called &lt;a href=&quot;https://junkerhq.net/MDFourier/&quot;&gt;MDFourier&lt;/a&gt;, which can compare recordings of an emulator to recordings from hardware and give actual metrics on how close or far it is.
Though it’s technically for comparing different models of the same system, there’s nothing stopping you from calling mGBA’s GB core a model of Game Boy.
I guess.
If you really wanted to.
Regardless, the difference between spectrograms itself is striking.&lt;/p&gt;

&lt;section class=&quot;inline-gallery&quot; style=&quot;column-count: 3;&quot;&gt;
&lt;figure&gt;
				&lt;a href=&quot;/assets/mdfourier-freq-ref.png&quot;&gt;&lt;img src=&quot;/assets/mdfourier-freq-ref.png&quot; /&gt;&lt;/a&gt;
				&lt;figcaption&gt;Spectrogram recorded from a DMG, the original model of Game Boy &lt;/figcaption&gt;
			&lt;/figure&gt;
&lt;figure&gt;
				&lt;a href=&quot;/assets/mdfourier-freq-before.png&quot;&gt;&lt;img src=&quot;/assets/mdfourier-freq-before.png&quot; /&gt;&lt;/a&gt;
				&lt;figcaption&gt;Spectrogram of mGBA before the changes—a mess with tons of frequencies present that shouldn&apos;t be, largely due to heavy aliasing, as well as an entirely missing high range (which is mostly above human hearing) &lt;/figcaption&gt;
			&lt;/figure&gt;
&lt;figure&gt;
				&lt;a href=&quot;/assets/mdfourier-freq-after.png&quot;&gt;&lt;img src=&quot;/assets/mdfourier-freq-after.png&quot; /&gt;&lt;/a&gt;
				&lt;figcaption&gt;Spectrogram of mGBA after the changes—a lot cleaner, though the high range is mostly still missing, and there&apos;s still some aliasing and additional frequencies present &lt;/figcaption&gt;
			&lt;/figure&gt;
&lt;/section&gt;

&lt;p&gt;As an actually listenable example, I recorded and compared the intro sequence of The Legend of Zelda: Link’s Awakening, both before and after the change.
While for the most part the differences were small, there are definitely some noticeable changes, leading to an overall cleaner sound.
The clips are embedded below, in case you want to compare yourself before downloading.&lt;/p&gt;

&lt;p class=&quot;gallery&quot;&gt;&lt;img src=&quot;/assets/lozla-spectro-diff.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p class=&quot;gallery-caption&quot;&gt;Spectrograms of portions of the music in mGBA, before and after the change. Note that the “after” spectrogram is visibly lacking several subharmonics that were created by aliasing and gave it a “muddy” sound.&lt;/p&gt;

&lt;div style=&quot;text-align: center&quot;&gt;
  &lt;div style=&quot;display: inline-block&quot;&gt;
    &lt;audio controls=&quot;&quot; preload=&quot;none&quot;&gt;
      &lt;source src=&quot;/assets/lozla-before.mp3&quot; type=&quot;audio/mpeg&quot; /&gt;
    &lt;/audio&gt;
    &lt;p&gt;Audio before the change&lt;/p&gt;
  &lt;/div&gt;
  &lt;div style=&quot;display: inline-block&quot;&gt;
    &lt;audio controls=&quot;&quot; preload=&quot;none&quot;&gt;
      &lt;source src=&quot;/assets/lozla-after.mp3&quot; type=&quot;audio/mpeg&quot; /&gt;
    &lt;/audio&gt;
    &lt;p&gt;Audio after the change&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Now that this major shortcoming has been addressed, cleaning up the edge cases and other audio glitches in mGBA should lead to much less noticeable advances in quality.
There’s still plenty of work to be done, but this was the biggest single impediment detracting from Game Boy audio quality in mGBA.&lt;/p&gt;

&lt;h3 id=&quot;improved-mapper-support&quot;&gt;Improved mapper support&lt;/h3&gt;

&lt;p&gt;Also new in 0.10 is improved support for a small handful of mappers, mostly with support for a few unlicensed mappers.&lt;/p&gt;

&lt;p&gt;The officially-licensed HuC-3 mapper, used in the Hudson Soft series &lt;a href=&quot;https://en.wikipedia.org/wiki/Robopon_Sun%2C_Star%2C_and_Moon_Versions&quot;&gt;Robopon&lt;/a&gt; and Pocket Family, has a real-time clock, much like the MBC3 mapper used in Pokémon gen 2, but has additional features such as a buzzer that can be set off by the game.
Through some &lt;a href=&quot;https://gbdev.gg8.se/forums/viewtopic.php?id=744&quot;&gt;ongoing research&lt;/a&gt; I’ve been doing, and reverse engineering of the games by the &lt;a href=&quot;https://sameboy.github.io/&quot;&gt;SameBoy&lt;/a&gt; developer, these features are now well-understood enough to be implemented, and are in mGBA 0.10.
Just in case you wanted to play a laggy Pokémon clone, but with robots.&lt;/p&gt;

&lt;p class=&quot;gallery&quot;&gt;&lt;img src=&quot;/assets/robopon-title.png&quot; alt=&quot;Robopon title screen&quot; /&gt;
&lt;img src=&quot;/assets/robopon-battle.png&quot; alt=&quot;Robopon battle screen&quot; /&gt;&lt;/p&gt;

&lt;p class=&quot;gallery-caption&quot;&gt;This sure is a Pokémon clone…&lt;/p&gt;

&lt;p&gt;Another officially-licensed mapper that’s been a thorn in every GB emulator’s side, colloquially known as TAMA5 due to the marking on the chip, is used in exactly one game: Game de Hakken!! Tamagotchi Osucchi to Mesucchi.
That’s a bit of a mouthful, so being the third Tamagotchi game for the Game Boy, it’s usually just called Tamagotchi 3.
Unless you follow weird Game Boy games, you’ve probably never heard of this game.
It was never released outside of Japan, and was based on the &lt;a href=&quot;https://tamagotchi.fandom.com/wiki/Tamagotchi_Osutchi_and_Mesutchi&quot;&gt;similarly named Tamagotchi series&lt;/a&gt;, also never released outside of Japan.&lt;/p&gt;

&lt;p class=&quot;gallery&quot;&gt;&lt;img src=&quot;/assets/tama3-before.png&quot; alt=&quot;Real Time mode before&quot; /&gt;
&lt;img src=&quot;/assets/tama3-after.png&quot; alt=&quot;Real Time mode after&quot; /&gt;&lt;/p&gt;

&lt;p class=&quot;gallery-caption&quot;&gt;I have no idea what time 1:ꞨꞨ is. Now you can set it to a real time, and if you’re lucky, pacify the screaming baby.&lt;/p&gt;

&lt;p&gt;While the basic functionality has been relatively well documented for a few years, the game also has a real-time clock that had never been successfully reverse engineered.
Tamagotchi 3 has two modes of operation: Tamagotchi Time, which ticks fairly quickly and only keeps track of time while the game is running, and Real Time, which is exactly what it sounds like.
Since the RTC had never been successfully reverse engineered, no emulator properly supported the RTC.
Following &lt;a href=&quot;https://gbdev.gg8.se/forums/viewtopic.php?id=469&quot;&gt;literally 5 years&lt;/a&gt; of (admittedly sporadic) research on my part, the RTC is now well-understood enough for Real Time mode to work in this single game.
Just in case you wanted to play this one specific Tamagotchi game that’s only in Japanese.&lt;/p&gt;

&lt;p&gt;There’s also new support when it comes to unlicensed mappers used in bootleg titles.
Continuing with porting the support for unlicensed mappers from &lt;a href=&quot;https://github.com/tzlion/hhugboy&quot;&gt;hhugboy&lt;/a&gt;, there’s now support for Sachen MMC1 and MMC2, as well as NT’s newer mapper type.
Though for the vast majority of users this support is wholly irrelevant, if mGBA only had support for things relevant to most users it wouldn’t be where it is today.
One of the goals of mGBA is making as much as possible playable, for the sake of preservation, and even that crust at the bottom of the barrel is worth preserving…I guess…maybe.&lt;/p&gt;

&lt;p class=&quot;gallery&quot;&gt;&lt;img src=&quot;/assets/pokemon-mewtwo-bootleg.png&quot; alt=&quot;Robopon title screen&quot; /&gt;
&lt;img src=&quot;/assets/digimon-bootleg.png&quot; alt=&quot;Robopon battle screen&quot; /&gt;&lt;/p&gt;

&lt;p class=&quot;gallery-caption&quot;&gt;Nothing says Kwality™ like these font choices!&lt;/p&gt;

&lt;p&gt;On that note, the author of hhugboy has defined a new format called GBX.
GBX is designed primarily for unlicensed ROMs and contains additional information about the ROM mappers, similar to how iNES headers define information about the mappers for NES ROMs.
This is generally unnecessary for officially licensed Game Boy games as the internal Game Boy ROM header specifies which mapper it uses, but bootleg games don’t tend to follow those conventions.
This means that quite often special heuristics are needed to determine which unlicensed mapper a given ROM uses.
Heuristics are notably imperfect, however, and for some of these mappers, detection is done at a per-ROM level.
When detection is that error-prone, every time another previously-undumped bootleg is released, the heuristics need to be updated.&lt;/p&gt;

&lt;p&gt;This isn’t really sustainable, so GBX takes another approach.
While attaching other metadata to the file means it’s no longer just a raw dump, this new format with an additional footer works around this per-ROM detection by simply telling the emulator what mapper is in use to bypass the need for heuristics at all.
mGBA 0.10.0 adds support for this GBX format, though not all mappers defined in the GBX specification are currently supported. More will be &lt;a href=&quot;https://[#2437](https://mgba.io/i/2437)&quot;&gt;coming in future releases&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;new-builds&quot;&gt;New builds&lt;/h2&gt;

&lt;p&gt;As mGBA has gotten more popular, there has been some demand for additional binaries for various platforms.
While this version doesn’t add support for any new platforms, it does add two new precompiled binary versions for existing platforms.&lt;/p&gt;

&lt;h3 id=&quot;modern-macos&quot;&gt;Modern macOS&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;/assets/macos-logo.svg&quot; alt=&quot;&quot; class=&quot;article-aside&quot; /&gt;&lt;/p&gt;

&lt;p&gt;If you’ve used mGBA on macOS any time in the past 4 or so years, you’ve probably noticed that the macOS version has been getting somewhat…crusty.
It doesn’t support dark mode, it doesn’t have an Arm (sorry, I mean “Apple silicon”) native version, etc., due to being built with a very old version of the SDK.
However, due to threading OpenGL seemingly being intentionally broken on newer macOS SDKs, I couldn’t use a newer version of the SDK to be more in-line with modern features of macOS.&lt;/p&gt;

&lt;p&gt;I spent a lot of time attempting various workaround to this problem, and eventually managed to come up with a slightly janky solution.
It seems to have some minor performance and flickering issues on some Macs, however, which I’ve as of yet been unable to resolve.
Over the past few months I’ve worked on bringing up a modern version of the macOS port, which is now available as a Universal Binary and supports macOS versions 10.13 and newer.
Most people are on a supported version of macOS, so you can grab this version.
However, for the handful of users on very old macOS, the “legacy” version is still supported (for now) on macOS versions 10.9 and newer.&lt;/p&gt;

&lt;h3 id=&quot;linux-appimage&quot;&gt;Linux AppImage&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;/assets/appimage-logo.svg&quot; alt=&quot;&quot; class=&quot;article-aside&quot; /&gt;&lt;/p&gt;

&lt;p&gt;While mGBA has provided builds for Ubuntu releases for several years, Ubuntu is far from the only Linux distro.
However, even just building several Ubuntu versions at the same time is a bit of a strain on the build infrastructure, so building separate versions for Debian, Fedora, CentOS, Arch, Manjaro, and whatever other distros people might want isn’t really feasible.&lt;/p&gt;

&lt;p&gt;Fortunately, there are a few solutions for having pre-packaged Linux binaries that run on several platforms.
The simplest one of these appears to be AppImage, so I spent some time wrangling a builder for AppImages that can be run on a wide variety of distros, and AppImages are now built automatically for both stable and development channels.
Best of all, since it doesn’t require special privileges to install them, they work with the new updater too!&lt;/p&gt;

&lt;h2 id=&quot;cheat-codes-in-the-homebrew-ports&quot;&gt;Cheat codes in the homebrew ports&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/assets/gameshark.webp&quot; alt=&quot;&quot; class=&quot;article-aside&quot; /&gt;&lt;/p&gt;

&lt;p&gt;For years now, every few months someone will ask “how do I access cheat codes on the 3DS?” or on Vita, or on Wii, or on Switch.
And for these same years, the answer has always been “it’s complicated, but you probably shouldn’t.”
While you could use cheats on the homebrew ports, it was tedious to set up, required exporting a file from the desktop version, and you couldn’t actually update or view the cheats from the homebrew version.
Obviously, this was unsatisfactory for everyone, so 0.10 brings along the long-since planned cheat interface for the homebrew ports.&lt;/p&gt;

&lt;p&gt;To use the new cheats interface, start a game, open the menu, and select the new Cheats submenu.
Much like on the desktop version, there’s an option to add a new cheat set, and from there you can add lines to the cheat set in question.
The cheats will be automatically saved to an associated .cheats file, and automatically loaded on next run.
You can also enable or disable the cheat, view the current cheat’s code, rename the cheat, or delete it.
Further, .cheats files from the desktop version and the homebrew ports are compatible, so you can export or import them and share them between platforms.&lt;/p&gt;

&lt;h2 id=&quot;quality-of-life&quot;&gt;Quality of life&lt;/h2&gt;

&lt;p&gt;This release also polishes some existing features with new niceties. Some highlights are as follows:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Additional settings for handling mute, including for multiplayer windows, or when minimized&lt;/li&gt;
  &lt;li&gt;The accelerometers and gyroscopes in game controllers like DualShock/DualSense or Switch Pro Controller can be directly used in supported games, such as Kirby: Tilt ‘n’ Tumble and WarioWare: Twisted&lt;/li&gt;
  &lt;li&gt;Discord Rich Presence now supports displaying time elapsed in-game&lt;/li&gt;
  &lt;li&gt;GameShark Advance SP format save games can be imported using the existing save importing methods&lt;/li&gt;
  &lt;li&gt;Multiplayer windows will now by default have separate save game files per window: .sav for player 1, .sa2 for player 2, .sa3 for player 3, and .sa4 for player 4&lt;/li&gt;
  &lt;li&gt;A new RTC override type lets you use an offset from the computer’s current time&lt;/li&gt;
  &lt;li&gt;A default Super Game Boy border is displayed before a game uploads its border&lt;/li&gt;
  &lt;li&gt;The settings dialog was cleaned up and rearranged to make things easier to find&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;what-about-10&quot;&gt;What about 1.0?&lt;/h2&gt;

&lt;p&gt;Some of you are probably wondering why mGBA went from 0.9 to 0.10 instead of 1.0. After all, that’s not how math works!
This is, however, how &lt;a href=&quot;https://en.wikipedia.org/wiki/Software_versioning#Semantic_versioning&quot;&gt;semantic versioning&lt;/a&gt; works, and there is a relatively well-defined set of criteria that has been laid out for what features and polish are required before releasing a 1.0 version:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Netplay (&lt;a href=&quot;/faq.html#glossary&quot;&gt;codenamed&lt;/a&gt; mNP)&lt;/li&gt;
  &lt;li&gt;IDE-style debugging interface&lt;/li&gt;
  &lt;li&gt;A much-more polished user interface for the homebrew ports (&lt;a href=&quot;/faq.html#glossary&quot;&gt;codenamed&lt;/a&gt; mGUI2)&lt;/li&gt;
  &lt;li&gt;A relatively stable API for developers wishing to integrate mGBA as a library (also known as libmgba), which will benefit projects that integrate libmgba like Dolphin and BizHawk&lt;/li&gt;
  &lt;li&gt;Documentation on both libmgba and the more obscure features of mGBA&lt;/li&gt;
  &lt;li&gt;Scripting support&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As mGBA 0.10 adds scripting support, albeit only preliminary scripting support, this checks off that item from the checklist.
Subsequent releases, such as 0.11, should check off more items until 1.0 comes out with the list completed.&lt;/p&gt;

&lt;h2 id=&quot;changelog&quot;&gt;Changelog&lt;/h2&gt;

&lt;h3 id=&quot;features&quot;&gt;Features&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Preliminary Lua scripting support&lt;/li&gt;
  &lt;li&gt;Presets for Game Boy palettes&lt;/li&gt;
  &lt;li&gt;Add Super Game Boy palettes for original Game Boy games&lt;/li&gt;
  &lt;li&gt;Tool for converting scanned pictures of e-Reader cards to raw dotcode data&lt;/li&gt;
  &lt;li&gt;Options for muting when inactive, minimized, or for different players in multiplayer&lt;/li&gt;
  &lt;li&gt;Cheat code support in homebrew ports&lt;/li&gt;
  &lt;li&gt;Accelerometer and gyro support for controllers on PC&lt;/li&gt;
  &lt;li&gt;Support for combo “Super Game Boy Color” SGB + GBC ROM hacks&lt;/li&gt;
  &lt;li&gt;Improved support for HuC-3 mapper, including RTC&lt;/li&gt;
  &lt;li&gt;Support for 64 kiB SRAM saves used in some bootlegs&lt;/li&gt;
  &lt;li&gt;Discord Rich Presence now supports time elapsed&lt;/li&gt;
  &lt;li&gt;Additional scaling shaders&lt;/li&gt;
  &lt;li&gt;Support for GameShark Advance SP (.gsv) save file importing&lt;/li&gt;
  &lt;li&gt;Support for multiple saves per game using .sa2, .sa3, etc.&lt;/li&gt;
  &lt;li&gt;Support for GBX format Game Boy ROMs&lt;/li&gt;
  &lt;li&gt;New unlicensed GB mappers: NT (newer type), Sachen (MMC1, MMC2)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;emulation-fixes&quot;&gt;Emulation fixes&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;ARM7: Fix unsigned multiply timing&lt;/li&gt;
  &lt;li&gt;GB: Copy logo from ROM if not running the BIOS intro (fixes &lt;a href=&quot;https://mgba.io/i/2378&quot;&gt;#2378&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GB: Fix HALT breaking M-cycle alignment (fixes &lt;a href=&quot;https://mgba.io/i/250&quot;&gt;#250&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GB Audio: Fix channel 1/2 reseting edge cases (fixes &lt;a href=&quot;https://mgba.io/i/1925&quot;&gt;#1925&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GB Audio: Properly apply per-model audio differences&lt;/li&gt;
  &lt;li&gt;GB Audio: Revamp channel rendering&lt;/li&gt;
  &lt;li&gt;GB Audio: Fix APU re-enable timing glitch&lt;/li&gt;
  &lt;li&gt;GB I/O: Fix writing to WAVE RAM behavior (fixes &lt;a href=&quot;https://mgba.io/i/1334&quot;&gt;#1334&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GB MBC: Fix edge case with Pocket Cam register accesses (fixes &lt;a href=&quot;https://mgba.io/i/2557&quot;&gt;#2557&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GB Memory: Add cursory cartridge open bus emulation (fixes &lt;a href=&quot;https://mgba.io/i/2032&quot;&gt;#2032&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GB Serialize: Fix loading MBC1 states that affect bank 0 (fixes &lt;a href=&quot;https://mgba.io/i/2402&quot;&gt;#2402&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GB SIO: Fix bidirectional transfer starting (fixes &lt;a href=&quot;https://mgba.io/i/2290&quot;&gt;#2290&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GB Video: Draw SGB border pieces that overlap GB graphics (fixes &lt;a href=&quot;https://mgba.io/i/1339&quot;&gt;#1339&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA: Improve timing when not booting from BIOS&lt;/li&gt;
  &lt;li&gt;GBA: Fix expected entry point for multiboot ELFs (fixes &lt;a href=&quot;https://mgba.io/i/2450&quot;&gt;#2450&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA: Fix booting multiboot ROMs with no JOY entrypoint&lt;/li&gt;
  &lt;li&gt;GBA: Fix 1 MiB ROM mirroring to only mirror 4 times&lt;/li&gt;
  &lt;li&gt;GBA Audio: Adjust PSG sampling rate with SOUNDBIAS&lt;/li&gt;
  &lt;li&gt;GBA Audio: Sample FIFOs at SOUNDBIAS-set frequency&lt;/li&gt;
  &lt;li&gt;GBA BIOS: Work around IRQ handling hiccup in Mario &amp;amp; Luigi (fixes &lt;a href=&quot;https://mgba.io/i/1059&quot;&gt;#1059&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA BIOS: Initial HLE timing estimation of UnLz77 functions (fixes &lt;a href=&quot;https://mgba.io/i/2141&quot;&gt;#2141&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA DMA: Fix DMA source direction bits being cleared (fixes &lt;a href=&quot;https://mgba.io/i/2410&quot;&gt;#2410&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA I/O: Redo internal key input, enabling edge-based key IRQs&lt;/li&gt;
  &lt;li&gt;GBA I/O: Disable open bus behavior on invalid register 06A&lt;/li&gt;
  &lt;li&gt;GBA Memory: Fix misaligned 32-bit I/O loads (fixes &lt;a href=&quot;https://mgba.io/i/2307&quot;&gt;#2307&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA Video: Fix OpenGL rendering on M1 Macs&lt;/li&gt;
  &lt;li&gt;GBA Video: Ignore horizontally off-screen sprite timing (fixes &lt;a href=&quot;https://mgba.io/i/2391&quot;&gt;#2391&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA Video: Fix Hblank timing (fixes &lt;a href=&quot;https://mgba.io/i/2131&quot;&gt;#2131&lt;/a&gt;, &lt;a href=&quot;https://mgba.io/i/2310&quot;&gt;#2310&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA Video: Fix rare crash in modes 3-5&lt;/li&gt;
  &lt;li&gt;GBA Video: Fix sprites with mid-frame palette changes in GL (fixes &lt;a href=&quot;https://mgba.io/i/2476&quot;&gt;#2476&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA Video: Fix OBJ tile wrapping with 2D char mapping (fixes &lt;a href=&quot;https://mgba.io/i/2443&quot;&gt;#2443&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA Video: Fix horizontal lines in GL when charbase is changed (fixes &lt;a href=&quot;https://mgba.io/i/1631&quot;&gt;#1631&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA Video: Fix sprite layer priority updating in GL&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;other-fixes&quot;&gt;Other fixes&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;ARM: Disassemble Thumb mov pseudo-instruction properly&lt;/li&gt;
  &lt;li&gt;ARM: Disassemble ARM asr/lsr #32 properly&lt;/li&gt;
  &lt;li&gt;ARM: Disassemble ARM movs properly&lt;/li&gt;
  &lt;li&gt;Core: Don’t attempt to restore rewind diffs past start of rewind&lt;/li&gt;
  &lt;li&gt;Core: Fix the runloop resuming after a game has crashed (fixes &lt;a href=&quot;https://mgba.io/i/2451&quot;&gt;#2451&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Core: Fix crash if library can’t be opened&lt;/li&gt;
  &lt;li&gt;Debugger: Fix crash with extremely long CLI strings&lt;/li&gt;
  &lt;li&gt;Debugger: Fix multiple conditional watchpoints at the same address&lt;/li&gt;
  &lt;li&gt;FFmpeg: Fix crash when encoding audio with some containers&lt;/li&gt;
  &lt;li&gt;FFmpeg: Fix GIF recording (fixes &lt;a href=&quot;https://mgba.io/i/2393&quot;&gt;#2393&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GB: Fix temporary saves&lt;/li&gt;
  &lt;li&gt;GB: Fix replacing the ROM crashing when accessing ROM base&lt;/li&gt;
  &lt;li&gt;GB: Don’t try to map a 0-byte SRAM (fixes &lt;a href=&quot;https://mgba.io/i/2668&quot;&gt;#2668&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GB, GBA: Save writeback-pending masked saves on unload (fixes &lt;a href=&quot;https://mgba.io/i/2396&quot;&gt;#2396&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;mGUI: Fix FPS counter after closing menu&lt;/li&gt;
  &lt;li&gt;Qt: Fix some hangs when using the debugger console&lt;/li&gt;
  &lt;li&gt;Qt: Fix crash when clicking past last tile in viewer&lt;/li&gt;
  &lt;li&gt;Qt: Fix preloading for ROM replacing&lt;/li&gt;
  &lt;li&gt;Qt: Fix screen not displaying on Wayland (fixes &lt;a href=&quot;https://mgba.io/i/2190&quot;&gt;#2190&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Fix crash when selecting 256-color sprite in sprite view&lt;/li&gt;
  &lt;li&gt;Qt: Fix coloration of swatches on styles with distinct frame backgrounds&lt;/li&gt;
  &lt;li&gt;VFS: Failed file mapping should return NULL on POSIX&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;miscellaneous&quot;&gt;Miscellaneous&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Core: Suspend runloop when a core crashes&lt;/li&gt;
  &lt;li&gt;Core: Add wallclock offset RTC type&lt;/li&gt;
  &lt;li&gt;Debugger: Save and restore CLI history&lt;/li&gt;
  &lt;li&gt;Debugger: GDB now works while the game is paused&lt;/li&gt;
  &lt;li&gt;Debugger: Add command to load external symbol file (fixes &lt;a href=&quot;https://mgba.io/i/2480&quot;&gt;#2480&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;FFmpeg: Support dynamic audio sample rate&lt;/li&gt;
  &lt;li&gt;GB: Support CGB0 boot ROM loading&lt;/li&gt;
  &lt;li&gt;GB Audio: Increase sample rate&lt;/li&gt;
  &lt;li&gt;GB MBC: Filter out MBC errors when cartridge is yanked (fixes &lt;a href=&quot;https://mgba.io/i/2488&quot;&gt;#2488&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GB MBC: Partially implement TAMA5 RTC&lt;/li&gt;
  &lt;li&gt;GB Video: Add default SGB border&lt;/li&gt;
  &lt;li&gt;GBA: Automatically skip BIOS if ROM has invalid logo&lt;/li&gt;
  &lt;li&gt;GBA: Refine multiboot detection (fixes &lt;a href=&quot;https://mgba.io/i/2192&quot;&gt;#2192&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA Cheats: Implement “never” type codes (closes &lt;a href=&quot;https://mgba.io/i/915&quot;&gt;#915&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA DMA: Enhanced logging (closes &lt;a href=&quot;https://mgba.io/i/2454&quot;&gt;#2454&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA Memory: Implement adjustable EWRAM waitstates (closes &lt;a href=&quot;https://mgba.io/i/1276&quot;&gt;#1276&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA Savedata: Store RTC data in savegames (closes &lt;a href=&quot;https://mgba.io/i/240&quot;&gt;#240&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA Video: Implement layer placement for OpenGL renderer (fixes &lt;a href=&quot;https://mgba.io/i/1962&quot;&gt;#1962&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA Video: Fix highlighting for sprites with mid-frame palette changes&lt;/li&gt;
  &lt;li&gt;mGUI: Add margin to right-aligned menu text (fixes &lt;a href=&quot;https://mgba.io/i/871&quot;&gt;#871&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;mGUI: Autosave less frequently when fast-forwarding&lt;/li&gt;
  &lt;li&gt;Qt: Rearrange menus some&lt;/li&gt;
  &lt;li&gt;Qt: Clean up cheats dialog&lt;/li&gt;
  &lt;li&gt;Qt: Only set default controller bindings if loading fails (fixes &lt;a href=&quot;https://mgba.io/i/799&quot;&gt;#799&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Save converter now supports importing GameShark Advance saves&lt;/li&gt;
  &lt;li&gt;Qt: Save positions of multiplayer windows (closes &lt;a href=&quot;https://mgba.io/i/2128&quot;&gt;#2128&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Add optional frame counter to OSD (closes &lt;a href=&quot;https://mgba.io/i/1728&quot;&gt;#1728&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Add optional emulation-related information on reset (closes &lt;a href=&quot;https://mgba.io/i/1780&quot;&gt;#1780&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Add QOpenGLWidget cross-thread codepath for macOS (fixes &lt;a href=&quot;https://mgba.io/i/1754&quot;&gt;#1754&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Enable -b for Boot BIOS menu option (fixes &lt;a href=&quot;https://mgba.io/i/2074&quot;&gt;#2074&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Add tile range selection to tile viewer (closes &lt;a href=&quot;https://mgba.io/i/2455&quot;&gt;#2455&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Show warning if XQ audio is toggled while loaded (fixes &lt;a href=&quot;https://mgba.io/i/2295&quot;&gt;#2295&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Add e-Card passing to the command line (closes &lt;a href=&quot;https://mgba.io/i/2474&quot;&gt;#2474&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Boot both a multiboot image and ROM with CLI args (closes &lt;a href=&quot;https://mgba.io/i/1941&quot;&gt;#1941&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Improve cheat parsing (fixes &lt;a href=&quot;https://mgba.io/i/2297&quot;&gt;#2297&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Change lossless setting to use WavPack audio&lt;/li&gt;
  &lt;li&gt;Qt: Use FFmpeg to convert additional camera formats, if available&lt;/li&gt;
  &lt;li&gt;Qt: Resume crashed game when loading a save state&lt;/li&gt;
  &lt;li&gt;Qt: Include cheats in bug report&lt;/li&gt;
  &lt;li&gt;SDL: Support exposing an axis directly as the gyro value (closes &lt;a href=&quot;https://mgba.io/i/2531&quot;&gt;#2531&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Windows: Attach to console if present&lt;/li&gt;
  &lt;li&gt;VFS: Early return NULL if attempting to map 0 bytes from a file&lt;/li&gt;
  &lt;li&gt;Vita: Add bilinear filtering option (closes &lt;a href=&quot;https://mgba.io/i/344&quot;&gt;#344&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;downloads&quot;&gt;Downloads&lt;/h2&gt;

&lt;p&gt;Get it now in the &lt;a href=&quot;/downloads.html&quot;&gt;Downloads&lt;/a&gt; section. Binaries are available for Windows, Ubuntu, other Linux distros (via AppImage), macOS, Nintendo Switch, 3DS, Wii, and PlayStation Vita, and the source code is available for all other platforms.&lt;/p&gt;

&lt;p&gt;If you enjoy using mGBA and wish to give back, there is a list of ways to donate on the &lt;a href=&quot;/donate.html&quot;&gt;donations page&lt;/a&gt;, including an &lt;a href=&quot;https://www.patreon.com/mgba&quot;&gt;mGBA Patreon&lt;/a&gt;.&lt;/p&gt;
</description>
        <pubDate>Tue, 11 Oct 2022 00:00:00 -0700</pubDate>
        <link>https://mgba.io/2022/10/11/mgba-0.10.0/</link>
        <guid isPermaLink="true">https://mgba.io/2022/10/11/mgba-0.10.0/</guid>
        
        <category>announcement</category>
        
        <category>release</category>
        
        
      </item>
    
      <item>
        <title>Scripting support now available in dev builds</title>
        <description>&lt;p&gt;The highly-anticipated scripting feature, which has been in development for the past several months, has now been merged and is available in development builds.
With this merged, users can now write and run scripts in Lua, as is possible in some other emulators.
Currently, there is only preliminary support and many features are not yet exposed.
These builds include an example script that shows how to interact with the emulator, and can pull information about the party from the US releases of the first three Pokémon generations.
There is also documentation on the current API available &lt;a href=&quot;/docs/scripting.html&quot;&gt;on its own page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As this feature is still nascent, we’re looking for feedback on how to improve it and what should be added in the future.
For this, there is now a #scripting channel in the Discord server (linked on the sidebar) to discuss writing scripts or requesting support or new features.
If you’ve wanted to write scripts for mGBA, now’s the time to start looking into it!&lt;/p&gt;

&lt;p&gt;The current features are currently implemented:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Read/write access to emulator memory (via the full address space, or via memory domains) and registers&lt;/li&gt;
  &lt;li&gt;Save state saving and loading&lt;/li&gt;
  &lt;li&gt;Getting and updating the currently pressed buttons&lt;/li&gt;
  &lt;li&gt;Getting various informational state about the emulated game&lt;/li&gt;
  &lt;li&gt;Taking a screenshot to file&lt;/li&gt;
  &lt;li&gt;Various callbacks, such as per-frame, when the core is reset, right before keys are read, and more&lt;/li&gt;
  &lt;li&gt;Instruction advance, frame advance, and resetting the emulation state&lt;/li&gt;
  &lt;li&gt;A console for logging, and buffers for displaying textual information to the user
&lt;!--more--&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are several features that are currently notably absent, however:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Overlays or similar&lt;/li&gt;
  &lt;li&gt;Debugger integration&lt;/li&gt;
  &lt;li&gt;Interaction with state that is managed by the front-end, such as fast-forwarding or pausing&lt;/li&gt;
  &lt;li&gt;Support on the homebrew ports&lt;/li&gt;
  &lt;li&gt;“Headless” mode, for running scripts in the background without the emulator being visible to the user&lt;/li&gt;
  &lt;li&gt;Support for languages other than Lua, such as Python&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While these features will be added in the future, these may not make it into the first release with scripting.&lt;/p&gt;

&lt;p&gt;As per usual, development builds can be downloaded at the &lt;a href=&quot;/downloads.html#development-downloads&quot;&gt;bottom of Downloads page&lt;/a&gt;&lt;/p&gt;
</description>
        <pubDate>Sun, 29 May 2022 00:00:00 -0700</pubDate>
        <link>https://mgba.io/2022/05/29/scripting/</link>
        <guid isPermaLink="true">https://mgba.io/2022/05/29/scripting/</guid>
        
        <category>announcement</category>
        
        
      </item>
    
      <item>
        <title>mGBA 0.9.3</title>
        <description>&lt;p&gt;A new release of mGBA, version 0.9.3 is available. This version is a bugfix release, which contains many important fixes. Importantly, random freezing with the OpenGL display driver, mostly when using fast forward, which had only partially been fixed in 0.9.2, should now be properly fixed. An extensive list of changes follows after the cut.&lt;!--more--&gt;&lt;/p&gt;

&lt;p&gt;Emulation fixes:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;GB I/O: Fix incrementing SGB controller when P14 is low (fixes &lt;a href=&quot;https://mgba.io/i/2202&quot;&gt;#2202&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GB Video: Render SGB border when unmasking with ATTR/PAL_SET (fixes &lt;a href=&quot;https://mgba.io/i/2261&quot;&gt;#2261&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA SIO: Fix SI value for unattached MULTI mode&lt;/li&gt;
  &lt;li&gt;GBA Video: Fix backdrop color if DISPCNT is first set to 0 (fixes &lt;a href=&quot;https://mgba.io/i/2260&quot;&gt;#2260&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA Video: Don’t iterate affine backgrounds when disabled&lt;/li&gt;
  &lt;li&gt;GBA Video: Delay enabling backgrounds in bitmap modes (fixes &lt;a href=&quot;https://mgba.io/i/1668&quot;&gt;#1668&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Other fixes:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;ARM Decoder: Fix decoding of lsl r0 (fixes &lt;a href=&quot;https://mgba.io/i/2349&quot;&gt;#2349&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;FFmpeg: Don’t attempt to use YUV 4:2:0 for lossless videos (fixes &lt;a href=&quot;https://mgba.io/i/2084&quot;&gt;#2084&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GB Video: Fix memory leak when reseting SGB games&lt;/li&gt;
  &lt;li&gt;GBA: Fix out of bounds ROM accesses on patched ROMs smaller than 32 MiB&lt;/li&gt;
  &lt;li&gt;GBA: Fix maximum tile ID in caching for 256-color modes&lt;/li&gt;
  &lt;li&gt;GBA Video: Fix cache updating with proxy and GL renderers&lt;/li&gt;
  &lt;li&gt;Libretro: Fix crash when using Game Boy codes (fixes &lt;a href=&quot;https://mgba.io/i/2281&quot;&gt;#2281&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;mGUI: Fix crash if autosave file can’t be opened (fixes &lt;a href=&quot;https://mgba.io/i/2268&quot;&gt;#2268&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Remove potentially deadlocking optimization&lt;/li&gt;
  &lt;li&gt;Qt: Fix corrupted savestate and fatal error text&lt;/li&gt;
  &lt;li&gt;Qt: Fix sprite compositing when sprite tiles go out of bounds (fixes &lt;a href=&quot;https://mgba.io/i/2348&quot;&gt;#2348&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Misc:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;GBA I/O: Update KEYINPUT in internal I/O memory (fixes &lt;a href=&quot;https://mgba.io/i/2235&quot;&gt;#2235&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;SDL: Use SDL_JoystickRumble where available&lt;/li&gt;
  &lt;li&gt;Wii: Add adjustable gyroscope settings (closes &lt;a href=&quot;https://mgba.io/i/2245&quot;&gt;#2245&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Get it now in the &lt;a href=&quot;/downloads.html&quot;&gt;Downloads&lt;/a&gt; section. Binaries are available for Windows, Ubuntu, macOS, 3DS, Switch, Vita, and Wii, and the source code is available for all other platforms.&lt;/p&gt;
</description>
        <pubDate>Fri, 17 Dec 2021 00:00:00 -0800</pubDate>
        <link>https://mgba.io/2021/12/17/mgba-0.9.3/</link>
        <guid isPermaLink="true">https://mgba.io/2021/12/17/mgba-0.9.3/</guid>
        
        <category>announcement</category>
        
        <category>release</category>
        
        
      </item>
    
      <item>
        <title>mGBA 0.9.2</title>
        <description>&lt;p&gt;A new release of mGBA, version 0.9.2 is available. This version is a bugfix release, which contains many important fixes. Importantly, random freezing with the OpenGL display driver, especially when using fast forward, is fixed. An extensive list of changes follows after the cut.&lt;!--more--&gt;&lt;/p&gt;

&lt;p&gt;Emulation fixes:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;GB Video: Clear VRAM on reset (fixes &lt;a href=&quot;https://mgba.io/i/2152&quot;&gt;#2152&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA SIO: Add missing NORMAL8 implementation bits (fixes &lt;a href=&quot;https://mgba.io/i/2172&quot;&gt;#2172&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA SIO: Fix missing interrupt on an unattached NORMAL transfer&lt;/li&gt;
  &lt;li&gt;GBA Memory: Fix prefetch mask when swapping modes within a region&lt;/li&gt;
  &lt;li&gt;GBA Serialize: Fix loading audio enable bit late (fixes &lt;a href=&quot;https://mgba.io/i/2230&quot;&gt;#2230&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;GBA Video: Revert scanline latching changes (fixes &lt;a href=&quot;https://mgba.io/i/2153&quot;&gt;#2153&lt;/a&gt;, &lt;a href=&quot;https://mgba.io/i/2149&quot;&gt;#2149&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Other fixes:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;3DS: Fix disabling “wide” mode on 2DS (fixes &lt;a href=&quot;https://mgba.io/i/2167&quot;&gt;#2167&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;ARM Debugger: Fix disassembly alignment (fixes &lt;a href=&quot;https://mgba.io/i/2204&quot;&gt;#2204&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Core: Fix memory leak in opening games from the library&lt;/li&gt;
  &lt;li&gt;Core: Fix memory searches for relative values (fixes &lt;a href=&quot;https://mgba.io/i/2135&quot;&gt;#2135&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Core: Fix portable mode on macOS&lt;/li&gt;
  &lt;li&gt;GB Audio: Fix audio channel 4 being slow to deserialize&lt;/li&gt;
  &lt;li&gt;GB Core: Fix GBC colors setting breaking default model overrides (fixes &lt;a href=&quot;https://mgba.io/i/2161&quot;&gt;#2161&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;mGUI: Cache save state screenshot validity in state menu (fixes &lt;a href=&quot;https://mgba.io/i/2005&quot;&gt;#2005&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Fix infrequent deadlock when using sync to video&lt;/li&gt;
  &lt;li&gt;Qt: Fix applying savetype-only overrides&lt;/li&gt;
  &lt;li&gt;Qt: Fix crash in sprite view for partially out-of-bounds sprites (fixes &lt;a href=&quot;https://mgba.io/i/2165&quot;&gt;#2165&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Fix having to press controller buttons twice for menu items (fixes &lt;a href=&quot;https://mgba.io/i/2143&quot;&gt;#2143&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Redo sensor binding to be less fragile&lt;/li&gt;
  &lt;li&gt;Qt: Reuse timer when rescheduling missing frames (fixes &lt;a href=&quot;https://mgba.io/i/2236&quot;&gt;#2236&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Qt: Fix bounded fast forward with enhancement OpenGL renderer&lt;/li&gt;
  &lt;li&gt;Util: Fix loading UPS patches that affect the last byte of the file&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Misc:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Util: Improve speed of UPS patch loading&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Get it now in the &lt;a href=&quot;/downloads.html&quot;&gt;Downloads&lt;/a&gt; section. Binaries are available for Windows, Ubuntu, macOS, 3DS, Switch, Vita, and Wii, and the source code is available for all other platforms. Please note that this will be the last official release that supports Ubuntu 16.04 (xenial) and Ubuntu 20.10 (groovy).&lt;/p&gt;
</description>
        <pubDate>Sat, 10 Jul 2021 00:00:00 -0700</pubDate>
        <link>https://mgba.io/2021/07/10/mgba-0.9.2/</link>
        <guid isPermaLink="true">https://mgba.io/2021/07/10/mgba-0.9.2/</guid>
        
        <category>announcement</category>
        
        <category>release</category>
        
        
      </item>
    
  </channel>
</rss>
