Difference between revisions of "Game Boy Advance emulators"

From Emulation General Wiki
Jump to navigation Jump to search
(copyedits and reworking)
Line 1: Line 1:
[[File:Gameboy-glacier.jpg|thumb|The Game Boy Advance handheld console]]The '''[https://en.wikipedia.org/wiki/Game_Boy_Advance Game Boy Advance]''' (often shortened to GBA) is a 32-bit handheld video game console developed by Nintendo. It is the successor to the Game Boy Color. It was released in Japan on March 21, 2001; in North America on June 11, 2001; in Australia and Europe on June 22, 2001.
+
[[File:Gameboy-glacier.jpg|thumb|The Game Boy Advance handheld console]]The '''[[wikipedia:Game_Boy_Advance|Game Boy Advance]]''' (often shortened to GBA) is a 32-bit handheld video game console developed by Nintendo. It is the successor to the Game Boy Color. It was released in Japan on March 21, 2001; in North America on June 11, 2001; in Australia and Europe on June 22, 2001.
  
 
==Emulators==
 
==Emulators==
{| class="wikitable"
+
{| class="wikitable" style="text-align:center;"
|+PC
+
|-
 
! scope="col"|Name
 
! scope="col"|Name
 
! scope="col"|Operating System(s)
 
! scope="col"|Operating System(s)
Line 14: Line 14:
 
! scope="col"|[[Recommended emulators|Recommended]]
 
! scope="col"|[[Recommended emulators|Recommended]]
 
|-
 
|-
|style="text-align:center;"|[[mGBA]]
+
!colspan="9"|PC
|style="text-align:center;"|Multi-platform
 
|style="text-align:center;"|[https://mgba.io/downloads.html {{MGBAVer}}]
 
|style="text-align:center;"|✓
 
|style="text-align:center;"|✓
 
|style="text-align:center;"|✓*
 
|style="text-align:center;"|✓
 
|style="text-align:center;"|✓
 
|style="text-align:center;"|
 
 
|-
 
|-
|style="text-align:center;"|[[Visual Boy Advance -M|Visual Boy Advance-M (VBA-M)]]
+
|[[mGBA]]
|style="text-align:center;"|Multi-platform
+
|Multi-platform
|style="text-align:center;"|[https://github.com/visualboyadvance-m/visualboyadvance-m/releases v2.0.1 GitHub] [http://www.emucr.com/search/label/VisualBoyAdvance-M/ SVN]
+
|[https://mgba.io/downloads.html {{MGBAVer}}]
|style="text-align:center;"|✓
+
|✓ ||✓ ||✓<ref group=N name=medusa>Experimental separate build under the name of Medusa.</ref> ||✓ ||✓ ||
|style="text-align:center;"|✓
 
|style="text-align:center;"|✗
 
|style="text-align:center;"|✓
 
|style="text-align:center;"|✓
 
|style="text-align:center;"|
 
 
|-
 
|-
|style="text-align:center;"|[[higan]]
+
|[[VisualBoy Advance#VBA-M|VBA-M]]
|style="text-align:center;"|Windows, OS X, Linux
+
|Multi-platform
|style="text-align:center;"|[http://byuu.org/emulation/higan/ {{higanVer}}]
+
|[https://github.com/visualboyadvance-m/visualboyadvance-m/releases v2.0.1]/[http://www.emucr.com/search/label/VisualBoyAdvance-M/ SVN]
|style="text-align:center;"|✓
+
|✓ ||✓ ||✗ ||||||✗
|style="text-align:center;"|✓
 
|style="text-align:center;"|✗
 
|style="text-align:center;"|
 
|style="text-align:center;"|
 
|style="text-align:center;"|✗
 
 
|-
 
|-
|style="text-align:center;"|iDeaS
+
|[[higan]]
|style="text-align:center;"|Windows, Linux
+
|Windows, macOS, Linux
|style="text-align:center;"|[http://ciacin.site90.com/ideas.php 1.0.4.0]
+
|[http://byuu.org/emulation/higan/ {{higanVer}}]
|style="text-align:center;"|
+
|||✓ ||||✗ ||✗ ||✗
|style="text-align:center;"|✓
 
|style="text-align:center;"|
 
|style="text-align:center;"|✗
 
|style="text-align:center;"|✗
 
|style="text-align:center;"|✗
 
 
|-
 
|-
|style="text-align:center;"|[[GBE+]]
+
|iDeaS
|style="text-align:center;"|Multi-platform
+
|Windows, Linux
|style="text-align:center;"|[https://github.com/shonumi/gbe-plus GitHub]
+
|[http://ciacin.site90.com/ideas.php 1.0.4.0]
|style="text-align:center;"|✓
+
|||✓ ||✓ ||✗ ||✗ ||✗
|style="text-align:center;"|✓
 
|style="text-align:center;"|✓
 
|style="text-align:center;"|✗
 
|style="text-align:center;"|✗
 
|style="text-align:center;"|✗
 
 
|-
 
|-
|style="text-align:center;"|[[MAME]]
+
|[[GBE+]]
|style="text-align:center;"|Multi-platform
+
|Multi-platform
|style="text-align:center;"|[http://www.mamedev.org/release.html {{MAMEVer}}]
+
|[https://github.com/shonumi/gbe-plus GitHub]
|style="text-align:center;"|✓
+
|✓ ||✓ ||✓ ||✗ ||||✗
|style="text-align:center;"|✓
 
|style="text-align:center;"|✗
 
|style="text-align:center;"|?
 
|style="text-align:center;"|✓
 
|style="text-align:center;"|✗
 
 
|-
 
|-
|style="text-align:center;"|Meteor
+
|[[MAME]]
|style="text-align:center;"|Linux
+
|Multi-platform
|style="text-align:center;"|[https://github.com/blastrock/meteor 1.4]
+
|[http://www.mamedev.org/release.html {{MAMEVer}}]
|style="text-align:center;"|
+
|||✓ ||✗ ||? ||✓ ||✗
|style="text-align:center;"|✓
 
|style="text-align:center;"|✗
 
|style="text-align:center;"|
 
|style="text-align:center;"|✓
 
|style="text-align:center;"|✗
 
 
|-
 
|-
|style="text-align:center;"|[[No$GBA]]
+
|Meteor
|style="text-align:center;"|Windows, MS-DOS
+
|Linux
|style="text-align:center;"|[http://problemkaputt.de/gba.htm 2.8e]
+
|[https://github.com/blastrock/meteor 1.4]
|style="text-align:center;"|✗
+
|✗ ||✓ ||✗ ||✗ ||✓ ||✗
|style="text-align:center;"|✓
+
|-
|style="text-align:center;"|✓
+
|[[No$GBA]]
|style="text-align:center;"|✓
+
|Windows, MS-DOS
|style="text-align:center;"|✗
+
|[http://problemkaputt.de/gba.htm 2.8e]
|style="text-align:center;"|✗
+
|✗ ||✓ ||✓ ||✓ ||✗ ||✗
 
|-
 
|-
 
!colspan="9"|Mobile
 
!colspan="9"|Mobile
 
|-
 
|-
|style="text-align:center;"|[[mGBA]]
+
|[[mGBA]]
|style="text-align:center;"|Multi-platform
+
|Multi-platform
|style="text-align:center;"|[https://mgba.io/downloads.html {{MGBAVer}}]
+
|[https://mgba.io/downloads.html {{MGBAVer}}]
|style="text-align:center;"|✓
+
|✓ ||✓ ||✓<ref group=N name=medusa /> ||✓ ||✓ ||✓
|style="text-align:center;"|✓
 
|style="text-align:center;"|✓*
 
|style="text-align:center;"|✓
 
|style="text-align:center;"|✓
 
|style="text-align:center;"|✓
 
 
|-
 
|-
|style="text-align:center;"|[[Visual Boy Advance -M|Visual Boy Advance-M (VBA-M)]]
+
|[[VisualBoy Advance#VBA-M|VBA-M]]
|style="text-align:center;"|Multi-platform
+
|Multi-platform
|style="text-align:center;"|[https://github.com/visualboyadvance-m/visualboyadvance-m GitHub] [http://www.emucr.com/search/label/VisualBoyAdvance-M/ SVN]
+
|[https://github.com/visualboyadvance-m/visualboyadvance-m v2.0.1]/[http://www.emucr.com/search/label/VisualBoyAdvance-M/ SVN]
|style="text-align:center;"|✓
+
|✓ ||✓ ||✗ ||✓ ||✓ ||✗
|style="text-align:center;"|✓
 
|style="text-align:center;"|✗
 
|style="text-align:center;"|✓
 
|style="text-align:center;"|✓
 
|style="text-align:center;"|✗
 
 
|-
 
|-
|style="text-align:center;"|VBA8
+
|VBA8
|style="text-align:center;"|Windows Phone 8/8.1
+
|Windows Phone 8/8.1
|style="text-align:center;"|2.27
+
|2.27
|style="text-align:center;"|✓
+
|✓ ||✓ ||✗ ||✓ ||? ||✓
|style="text-align:center;"|✓
 
|style="text-align:center;"|✗
 
|style="text-align:center;"|✓
 
|style="text-align:center;"|?
 
|style="text-align:center;"|✓
 
 
|-
 
|-
|style="text-align:center;"|VBA10
+
|VBA10
|style="text-align:center;"|Windows 10/Mobile
+
|Windows 10/Mobile
|style="text-align:center;"|1.22
+
|1.22
|style="text-align:center;"|✓
+
|✓ ||✓ ||✗ ||✓ ||? ||✓
|style="text-align:center;"|✓
 
|style="text-align:center;"|✗
 
|style="text-align:center;"|✓
 
|style="text-align:center;"|?
 
|style="text-align:center;"|✓
 
 
|-
 
|-
 
!colspan="9"|Consoles
 
!colspan="9"|Consoles
 
|-
 
|-
|style="text-align:center;"|[[mGBA]]
+
|[[mGBA]]
|style="text-align:center;"|[[Wii]]
+
|Wii
|style="text-align:center;"|[https://s3.amazonaws.com/mgba/mGBA-nightly-latest-wii.7z SVN]
+
|[https://s3.amazonaws.com/mgba/mGBA-nightly-latest-wii.7z SVN]
|style="text-align:center;"|✓
+
|✓ ||✓ ||✗ ||✗ ||✓ ||✓
|style="text-align:center;"|✓
 
|style="text-align:center;"|✗
 
|style="text-align:center;"|✗
 
|style="text-align:center;"|✓
 
|style="text-align:center;"|✓
 
 
|-
 
|-
|style="text-align:center;"|[[Visual Boy Advance -M|VBA GX]]
+
|[[VisualBoy Advance#VBA-GX|VBA GX]]
|style="text-align:center;"|[[Wii]], [[Gamecube]]
+
|Wii, Gamecube
|style="text-align:center;"|[https://gbatemp.net/threads/new-vba-gx-fork-2-3-0.371284/ 2.3.2]
+
|[https://gbatemp.net/threads/new-vba-gx-fork-2-3-0.371284/ 2.3.2]
|style="text-align:center;"|✓
+
|✓ ||✓ ||✗ ||✓ ||✓<ref group=N>As VBA-Next.</ref> ||✗
|style="text-align:center;"|✓
 
|style="text-align:center;"|✗
 
|style="text-align:center;"|✓
 
|style="text-align:center;"|✓ (as VBA-Next)
 
|style="text-align:center;"|✗
 
 
|-
 
|-
|style="text-align:center;"|TempGBA4PSP
+
|TempGBA4PSP
|style="text-align:center;"|[[PlayStation Portable]]
+
|PlayStation Portable
|style="text-align:center;"|[http://www.mediafire.com/download/41ny5xrwxizalx4/TempGBA4PSP-26750221.zip 26750221]
+
|[http://www.mediafire.com/download/41ny5xrwxizalx4/TempGBA4PSP-26750221.zip 26750221]
|style="text-align:center;"|✗
+
|✗ ||✓ ||✗ ||✗ ||✓ ||✓
|style="text-align:center;"|✓
 
|style="text-align:center;"|✗
 
|style="text-align:center;"|✗
 
|style="text-align:center;"|✓
 
|style="text-align:center;"|✓
 
 
|-
 
|-
|style="text-align:center;"|[[gpSP]]
+
|[[gpSP]]
|style="text-align:center;"|[[PlayStation Portable]]
+
|PlayStation Portable
|style="text-align:center;"|0.9
+
|0.9
|style="text-align:center;"|✗
+
|✗ ||✓ ||✗ ||✗ ||✓ ||✗
|style="text-align:center;"|✓
 
|style="text-align:center;"|✗
 
|style="text-align:center;"|✗
 
|style="text-align:center;"|✓
 
|style="text-align:center;"|✗
 
 
|}
 
|}
<small>*Experimental separate build under the name of Medusa.</small>
+
<references group=N />
  
==Comparisons==
+
===Comparisons===
* [[mGBA]] aims to be accurate while maintaining speed. It's actively developed and has features that VBA-M lacks such as a Solar and Tilt Sensor, and more recently Game Boy Camera support.
+
;[[mGBA]]:Aims for accuracy, speed, and features. For its accuracy, it's gradually becoming the best at that. It's actively developed and has features VBA-M lacks such as a Solar and Tilt Sensor, and more recently Game Boy Camera support.
* [[Visual Boy Advance -M|Visual Boy Advance-M (VBA-M)]] forks VBA with additional improvements. It is not updated as often these days and is falling behind in terms of accuracy and performance compared to mGBA.
+
;[[VisualBoy Advance|Visual Boy Advance]]:The original GBA emulator. Discovered to have an ACE vulnerability detailed below.
** RetroArch's VBA-Next is based off an older revision of VBA-M with added speedhacks and tweaks, making it useful for lower-end devices. It is a bit less accurate in some respects, though it fixes a few games such as Advance Wars 2.
+
:;[[VisualBoy Advance#VBA-M|Visual Boy Advance-M (VBA-M)]]:A fork with additional improvements. It is not updated as often these days and is falling behind in terms of accuracy and performance compared to mGBA.
* [[gpSP]]'s last official version was 0.9. There are, however, two forks of interest: [http://dl.qj.net/psp/emulators/gpsp-mod-20090720.html gpSPmod], and [http://filetrip.net/psp-downloads/homebrew/download-gpsp-j-12-06-16-f29570.htmlgpSP-J gpSP-J]. gpSP-J has superior compatibility, while gpSPmod has more options for customization (full screen, cheats, etc). Both are superior to Kai.
+
::;VBA-Next:A RetroArch fork from an older revision of VBA-M with added speedhacks and tweaks, making it useful for lower-end devices. A bit less accurate in some respects, but fixes a few games such as Advance Wars 2.
* [[higan]]'s GBA core is cycle-accurate as of v095.
+
;[[gpSP]]:Its last official version was 0.9. There are, however, two forks of interest: [http://dl.qj.net/psp/emulators/gpsp-mod-20090720.html gpSPmod], and [http://filetrip.net/psp-downloads/homebrew/download-gpsp-j-12-06-16-f29570.htmlgpSP-J gpSP-J]. gpSP-J has superior compatibility, while gpSPmod has more options for customization (full screen, cheats, etc). Both are superior to Kai.
 +
;[[higan]]:Its GBA core is cycle-accurate as of v095.
 +
;[[MAME]]:Has a <code>gba</code> driver markup as working but both graphics and sound are "imperfect".
  
'''NOTE:''' There's a ''huge'' <abbr title="Arbitrary Code Execution">ACE</abbr> vulnerability affecting the original version of VBA and most of its forks, except for VBA-M. The function for adding GameShark codes ("Import > Gameshark code file") doesn't check if the file's size is within 1024 kilobits, meaning cheat code files from dubious sources can be engineered with malware in mind. There is good news; VBA-M still doesn't do a sanity check for those files, but it just crashes instead of letting the code wreak havoc. So, depending on your use case, avoid using:
+
'''NOTE:''' There's a ''huge'' <abbr title="Arbitrary Code Execution">ACE</abbr> vulnerability affecting VBA and most of its forks, except for VBA-M. The function for adding GameShark codes ("Import > Gameshark code file") doesn't check if the file's size is within 1024 kilobits, meaning cheat code files from dubious sources can be engineered with malware in mind. There is good news; VBA-M still doesn't do a sanity check for those files, but it just crashes instead of letting the code wreak havoc. So, depending on your use case, avoid using:
 
# Cheat code files bigger than 1024Kb that you got online from untrustworthy sources.
 
# Cheat code files bigger than 1024Kb that you got online from untrustworthy sources.
 
# The import code files feature.
 
# The import code files feature.
Line 196: Line 120:
 
===Oversaturation===
 
===Oversaturation===
 
[[File:1406913527173-1-.png|400px|thumb|right|'''Left:''' The default game.<br/>'''Right:''' The "Gameboy Colors" mode on [[VBA-M]].]]
 
[[File:1406913527173-1-.png|400px|thumb|right|'''Left:''' The default game.<br/>'''Right:''' The "Gameboy Colors" mode on [[VBA-M]].]]
Game developers often programmed a game's colors to be oversaturated by default. This is because the screen on the Game Boy Advance is not backlit so that the result would look normal on hardware. In emulation, however, this appearance can be blinding and undesirable. Some games made after 2003 may have also taken the Advance SP model in mind since that one actually is backlit. For everything else, there are several ways to deal with this:
+
The screen on the original Game Boy Advance is not backlit and can be hard to see in some conditions. To compensate, game developers often used oversaturated colors by default so that the result would look normal on hardware. On standard computer screens, saturation is not an issue so this can look jarring and undesirable for gameplay. Some games made after 2003 may have also taken the Advance SP model into account since its screen is actually backlit. For everything else though, emudevs have given some solutions:
 
 
'''No$GBA'''
 
  
 +
====No$GBA====
 
Under "Emulation Options", select "GBA Mode". There are four modes.
 
Under "Emulation Options", select "GBA Mode". There are four modes.
  
- GBA (no backlight) = strong desaturation
+
;GBA (no backlight):Strong desaturation
 
+
;GBA SP (backlight):Strong desaturation
- GBA SP (backlight) = strong desaturation
+
;Nintendo DS in GBA mode:Some desaturation
 
+
;VGA Mode (poppy bright):No desaturation
- Nintendo DS in GBA mode = some desaturation
 
 
 
- VGA Mode (poppy bright): no desaturation
 
 
 
'''VBA-M'''
 
 
 
(VBA-M for Windows only) Under "Options->Gameboy" you will find the options:
 
 
 
- "Real Colors": no desaturation
 
 
 
- "Gameboy Colors": strong desaturation
 
  
'''higan'''
+
====VBA-M====
 +
:''<small>Only applies to Windows.</small>''
  
Under Settings->Video Filter, you will find the "Color Emulation" checkbox.
+
Under Options > Gameboy, you will find the options:
  
- Color Emulation off: no desaturation
+
;"Real Colors":No desaturation
 +
;"Gameboy Colors":Strong desaturation
  
- Color Emulation on: gamma correction and adjusted color range.
+
====higan====
 +
Under Settings > Video Filter, you will find the "Color Emulation" checkbox.
  
'''Shaders'''
+
;Color Emulation off:No desaturation
 +
;Color Emulation on:Gamma correction and adjusted color range.
  
There are Cg [[shaders]] which can be used in [[OpenEmu]] or [[RetroArch]] that adjust the colors to those of a real GBA screen, as well as other screen types. These are available in GLSL<ref name="GLSL">https://github.com/libretro/glsl-shaders/tree/master/handheld/shaders/color</ref> for OpenGL, and Slang<ref name="Slang">https://github.com/libretro/slang-shaders/tree/master/handheld/shaders/color</ref> for Vulkan.
+
====Shaders====
 +
Cg [[shaders]] can be used in [[OpenEmu]] or [[RetroArch]] that adjust the colors to those of a real GBA screen, as well as other screen types. These are available in GLSL<ref name="GLSL">https://github.com/libretro/glsl-shaders/tree/master/handheld/shaders/color</ref> for OpenGL, and Slang<ref name="Slang">https://github.com/libretro/slang-shaders/tree/master/handheld/shaders/color</ref> for Vulkan.
  
 
For GBA, there is <code>gba-color.cg</code><ref>https://github.com/libretro/common-shaders/blob/master/handheld/shaders/color/gba-color.cg</ref>, which simulates the color profile of a GBA screen under an external light source more accurately than VBA-M or No$GBA color options. If you prefer the darker color options that those emulators have, then use <code>vba-color.cg</code><ref>https://github.com/libretro/common-shaders/blob/master/handheld/shaders/color/vba-color.cg</ref> instead.  
 
For GBA, there is <code>gba-color.cg</code><ref>https://github.com/libretro/common-shaders/blob/master/handheld/shaders/color/gba-color.cg</ref>, which simulates the color profile of a GBA screen under an external light source more accurately than VBA-M or No$GBA color options. If you prefer the darker color options that those emulators have, then use <code>vba-color.cg</code><ref>https://github.com/libretro/common-shaders/blob/master/handheld/shaders/color/vba-color.cg</ref> instead.  
Line 234: Line 151:
 
There is also <code>nds-color.cg</code><ref>https://github.com/libretro/common-shaders/blob/master/handheld/shaders/color/nds-color.cg</ref> and <code>psp-color.cg</code><ref>https://github.com/libretro/common-shaders/blob/master/handheld/shaders/color/psp-color.cg</ref>, which simulates the color profiles of the original Nintendo DS frontlit screen and the PSP-1000/PSP-2000 backlit screen, respectively.
 
There is also <code>nds-color.cg</code><ref>https://github.com/libretro/common-shaders/blob/master/handheld/shaders/color/nds-color.cg</ref> and <code>psp-color.cg</code><ref>https://github.com/libretro/common-shaders/blob/master/handheld/shaders/color/psp-color.cg</ref>, which simulates the color profiles of the original Nintendo DS frontlit screen and the PSP-1000/PSP-2000 backlit screen, respectively.
  
===Save file issues===
+
===Save formats===
There are a number of different save formats for GBA games. With raw save data, it's very hard to detect what save type it is just by looking at it. Visual Boy Advance tries to autodetect save type but often is incorrect and this causes issues. A fix to this issue is to use a file called "vba-over.ini" to tell VBA what each game's proper save type is, which eliminates most issues regarding save type. Current VBA-M versions come with vba-over.ini by default, but older versions of VBA like VBA 1.7.2 and VBALink did not.
+
Originally, when saves were implemented, nobody settled on a format, so the Visual Boy Advance devs made its own. Because other emulators often went with raw data, having to exchange different saves caused problems. The original Visual Boy Advance tries to figure out which format a given save is but often fails at it. By explicitly telling the emulator to read it as a specific type using a file called <code>vba-over.ini</code>, VBA complies. VBA-M includes this config file by default, but older revisions like VBA 1.7.2 and VBALink do not.
  
The libretro versions of VBA, libretro-VBA-Next and libretro-VBA-M, come with vba-over.ini baked into the binary so it is able to load raw .sav files, but also changes the save file output to be a 136KB .srm file for every save type, with save type info contained within the file. This completely avoids any save type issues, but makes its save files incompatible with standalone VBA and most other emulators.
+
The VBA-Next and VBA-M cores in Libretro have the file baked into the binary so that it can load raw .sav files, but converts the format to its own derivative at exactly 136 KB every time, with save type info contained within the file. This completely avoids the previous issues at the cost of incompatibility with standalone VBA and most others.
  
Libretro devs created a  
+
To solve this incompatibility, Libretro devs created a  
[https://github.com/libretro/vbam-libretro/blob/master/src/libretro/gbaconv/gbaconv.c command line tool] to convert libretro-VBA .srm save files to raw .sav save data for other emulators. You can just drag and drop a .srm onto the executable and it will output raw .sav. The same can be done in reverse. A precompiled Windows 64-bit binary of this tool can be found  
+
[https://github.com/libretro/vbam-libretro/blob/master/src/libretro/gbaconv/gbaconv.c command-line tool] to convert .srm save files made from these cores to raw .sav save data for other emulators. It takes standard input (i.e. just drag and drop the .srm onto the executable) and outputs accordingly. It can also be done in reverse. A 64-bit binary of this tool for Windows can be found  
 
[https://www.mediafire.com/?6bg8ag0bjs1b7ng here].
 
[https://www.mediafire.com/?6bg8ag0bjs1b7ng here].
  
 
==Connectivity==
 
==Connectivity==
 
===GBA Link Multiplayer (1~4GBA)===
 
===GBA Link Multiplayer (1~4GBA)===
* VBA-M: This doesn't work with old VBA versions.  
+
;VBA-M: This doesn't work with old VBA versions.
 +
:Just disable "Pause when Inactive", configure all four Joypads each with their own button layout, enable "Link, Enable GBA Link". Now open VBA-M again as much times needed for each player, and have them each use their separate Joypad configuration. Each player will have a separate SRAM save file.
 +
;VBA Link + e-Reader:Useful if you want to use the Pokémon Battle-e Cards. Downloads and instructions reside [http://projectpokemon.org/forums/showthread.php?42433-RELEASE-VBA-LINK-E-READER here].
 +
;mGBA:Select "New multiplayer window" from the menu. As you load your ROMs into each window, "Player [X] of [Y]" will appear across the title bar. This can be done for up to four players. However, multiple instances of the same ROM will share a save file.
 +
;No$GBA:No information about how to get it working at this time, but the functionality also works with DS emulation, and that's how users can check out the incomplete multiplayer Wi-Fi implementation.
  
Just disable "Pause when Inactive", configure all four Joypads each with their own button layout, enable "Link, Enable GBA Link". Now open VBA-M again as much times needed for each player, and have them each use their separate Joypad configuration. Each player will have a separate SRAM save file.
+
===GBA Wireless Multiplayer===
 
+
The [[Wikipedia:Game Boy Advance Wireless Adapter|wireless adapter]] has the ability to connect five players to each other, and includes its own software to download a subset of another player's game that runs when no cartridge is inserted. ''Pokémon Fire Red'' and ''Leaf Green'' came bundled with this accessory but it can also work with ''Pokémon Emerald'' and the ''Classic NES Series''.
* VBA Link + e-Reader
 
A combined version of VBA Link and VBA e-Reader is useful if you want to use the Pokémon Battle-e Cards. Downloads and instructions reside [http://projectpokemon.org/forums/showthread.php?42433-RELEASE-VBA-LINK-E-READER here].
 
 
 
* mGBA
 
While running mGBA, select "New multiplayer window" from the menu. As you load your ROMs into each window, "Player [X] of [Y]" will appear across the title bar. This can be done for up to four players. However, multiple instances of the same ROM will share a save file.
 
  
* No$GBA: This method also works with DS ROMs, and that's the actual way to see the incomplete non-functional local Wi-Fi DS multiplayer implementation. (todo)
+
No emulator has currently implemented this add-on. The only project whose developers put this on its roadmap is [[mGBA]].
 
 
===GBA Wireless Multiplayer===
 
There is a [[Wikipedia:Game Boy Advance Wireless Adapter|wireless adaptor]] that can replace using a traditional wired link, but only if the game supports the hardware. It has the ability to have 5 connected players at once. ''Pokémon Fire Red'' and ''Leaf Green'' came bundled with the accessory but the accessory also work with ''Pokémon Emerald'' and the ''Classic NES Series'' games. If no game is inserted into the slot, it has it's own software that it can run, which behaves as a method to do a single pack download play. Unfortunately, no emulator is capable of this feature. The only emulator with plans for such a feature is [[mGBA]].
 
  
 
===GameCube Connectivity===
 
===GameCube Connectivity===
The GBA unit can connect to a GameCube.
+
The Game Boy Advance can also connect to the GameCube. e-Reader functionality with GC games isn't emulated as of yet, but [[Dolphin]] supports connectivity through rudimentary joybus emulation made in parallel with VBA-M. Because this emulator has fallen behind, the Dolphin team is currently rewriting the feature from scratch to better interface with more accurate emulators. They showcased early higan support in a video, but nothing has been released as of yet.
 
 
====Dolphin and VBA-M====
 
 
 
Game Boy connection support can be supported via joybus emulation. Such requires VBA-M (r947 or newer) and a dump of a GBA BIOS.
 
 
 
'''Connect 1~4 GBA Unit Without Game to GC Game'''
 
  
First Part!
+
====Dolphin/VBA-M====
* Open Dolphin and VBA-M. Make sure neither are blocked by your firmware.
+
:''Requires VBA-M r947 or newer.''
* '''Dolphin:''' Start your game and play until you get to the in-game menu where you're asked to connect a GBA. Under the GC controller options (earlier "Config, Gamecube", now it's with the GC/Wii controller options). You have 4 GC controller ports: change how much you need to "GBA". Leave the game and its music running :)
 
* '''VBA-M:''' You'll need to uncheck "Options, Emulator, Pause When Inactive". Then, under "Options, Link, Joybus Options", Make sure to enable "Enable Joybus Connection" and set "IP/Hostname" to use default settings, that is (127.0.0.1) or (localhost) - without the brackets.  
 
* THEN, Dolphin will freeze. You'll want to not have the system sound too high if you're using headphones.
 
  
Second Part!
+
# Reduce your volume. You won't want it to be high, especially with headphones.
* '''VBA-M''': Open the GBA BIOS in VBA-M as if it were a regular GBA ROM. There will be that splash screen but it will stutter a bit.  
+
# Open Dolphin and VBA-M. Make sure neither are blocked by your firmware.
* Dolphin should recognize the Joybus Link by then and the GC game will detect that a GBA unit was connected.
+
# In Dolphin, launch the game and navigate to the area where you're asked to connect the GBA. Then, under the controller options, assign the GameCube controllers as "GBA" for whichever you need.
* To connect other GBA units, open another VBA-M instance and repeat what you did with VBA-M.
+
# In VBA-M, uncheck Pause When Inactive in Options > Emulator. Then, under Options > Link > Joybus Options, Make sure to "Enable Joybus Connection" is on and set "IP/Hostname" to use default settings, that is <code>127.0.0.1</code> or <code>localhost</code>.
 +
# Dolphin will freeze.
 +
# Open the GBA BIOS in VBA-M as if it were a regular GBA ROM. The regular splash screen will stutter a bit.
 +
# Dolphin should recognize the Joybus Link by then and the GC game will detect that a GBA was connected.
 +
# To connect other units, open another VBA-M instance and repeat its process.
  
 
Notable games that work:
 
Notable games that work:
* The Legend of Zelda Four Swords Adventures: Both two modes available for the US/PAL version work. The third Japan-only Navi Trackers mode works as well, but the game crashes after the naming screen due to a bug in the GC/GBA connectivity.
+
*[https://wiki.dolphin-emu.org/index.php?title=The_Legend_of_Zelda:_Four_Swords_Adventures The Legend of Zelda Four Swords Adventures]: Both two modes available for the US/PAL version work. The third Japan-only Navi Trackers mode works as well, but the game crashes after the naming screen due to a bug in the GC/GBA connectivity.
* Final Fantasy Crystal Chronicles
+
*[https://wiki.dolphin-emu.org/index.php?title=Final_Fantasy_Crystal_Chronicles Final Fantasy Crystal Chronicles]
* Billy Hatcher: You can download games to your GBA. Amusingly, a RAM dump from VBA-M can be opened as a functional GBA ROM.
+
*[https://wiki.dolphin-emu.org/index.php?title=Billy_Hatcher_and_the_Giant_Egg Billy Hatcher and the Giant Egg]: You can download games to your GBA. Amusingly, a RAM dump from VBA-M can be opened as a functional GBA ROM.
* Kururin Squash
+
*[https://wiki.dolphin-emu.org/index.php?title=Kururin_Squash! Kururin Squash!]
* Sonic Adventure 2 (buggy)
+
*[https://wiki.dolphin-emu.org/index.php?title=Sonic_Adventure_2:_Battle Sonic Adventure 2: Battle] (buggy)
 
 
Don't work:
 
* The Legend of Zelda Wind Waker: Tingle Trainer connection always fails, though some messages do display on VBA-M.
 
* Drill Land
 
* Any Pokémon game
 
* lots more
 
 
 
'''Connect GBA Game to GC Game'''
 
 
 
* '''VBA-M''': Under "Emulator, Bios Files" set the GBA BIOS file directory, and have the emulator use it. This will cause each regular GBA ROM you load in VBA-M to show the BIOS splash screen then proceed to the game. It has higher compatibility too.
 
* You do the all the steps above in the '''first part''' of the previous section (connecting a GBA unit without Game to a GC game) until the line with Dolphin freezing when you enable Joylink in VBA-M.
 
 
 
Then:
 
* '''VBA-M''': Open the regular GBA ROM to be connected with the GC game in VBA-M as if it were a regular GBA ROM.
 
* There will be that splash screen, but if you do nothing the GBA game starts as usual and the connection doesn't actually happen. What you must do is to hold '''Select+Start''' while the BIOS is loading. This will cause the BIOS animation to stop and wait for connections, and the regular GBA ROM game won't boot immediately. If it goes as intended, VBA-M will stutter a bit and the connection will be initiated.
 
* Dolphin should recognize the Joybus Link by then and the GC game will detect that a GBA unit was connected.
 
* To connect other GBA units, open another VBA-M instance and repeat what you did with VBA-M.
 
  
Please note e-Reader functionality with GC games isn't emulated as of yet.
+
Notable games that don't:
 
+
*[https://wiki.dolphin-emu.org/index.php?title=The_Legend_of_Zelda:_The_Wind_Waker The Legend of Zelda: The Wind Waker]: Tingle Trainer connection always fails, though some messages do display on VBA-M.
====Dolphin and other emulators====
+
*[https://wiki.dolphin-emu.org/index.php?title=Mr_Driller:_Drill_Land Mr. Driller: Drill Land]
Dolphin devs are working at rewriting the entire GBA connectivity code in a far better way from scratch with more accurate emulators. They did a video using the higan emulator. Nothing of the sort is published at the moment.
+
*Any Pokémon title
 +
*lots more
  
 
===GBA/DS Connectivity===
 
===GBA/DS Connectivity===
Inserting a GBA card in Slot-2 in a Nintendo DS unit (that's not a DSi) while a DS game is running could unlock various gameplay features in some DS games. DeSmuME can emulate this: while playing the DS ROM, go to "Config, Slot 2 (GBA Slot)" and select "GBA Cartridge". Now select the GBA ROM file, and make sure its sav file is in the same folder. You may need to reset the game sometimes to see the effect in-game.
+
:''Main section: [[Nintendo_DS_emulators#GBA.2FDS_Connectivity|Nintendo DS § GBA/DS Connectivity]]''
  
 
===e-Reader===
 
===e-Reader===
A device that connects to the GBA, which can read content off e-Card paper stripes either as standalone content, or additional content to GBA games (or even GC ones). Also known as the GBA's DLC.
+
:''Main page: [[GBA e-Reader emulators]]''
 
+
This device can read content off e-Card paper stripes either as standalone content, or additional content to GBA/GC games. Can be thought of as DLC.
''Main Page: [[GBA e-Reader emulators]]''
 
  
 
==Special Hardware==
 
==Special Hardware==

Revision as of 11:29, 3 November 2017

The Game Boy Advance handheld console

The Game Boy Advance (often shortened to GBA) is a 32-bit handheld video game console developed by Nintendo. It is the successor to the Game Boy Color. It was released in Japan on March 21, 2001; in North America on June 11, 2001; in Australia and Europe on June 22, 2001.

Emulators

Name Operating System(s) Latest Version GB/GBC GBA NDS Game Link Support Libretro Core Recommended
PC
mGBA Multi-platform 0.10.3 [N 1]
VBA-M Multi-platform v2.0.1/SVN
higan Windows, macOS, Linux v110
iDeaS Windows, Linux 1.0.4.0
GBE+ Multi-platform GitHub
MAME Multi-platform 0.265 ?
Meteor Linux 1.4
No$GBA Windows, MS-DOS 2.8e
Mobile
mGBA Multi-platform 0.10.3 [N 1]
VBA-M Multi-platform v2.0.1/SVN
VBA8 Windows Phone 8/8.1 2.27 ?
VBA10 Windows 10/Mobile 1.22 ?
Consoles
mGBA Wii SVN
VBA GX Wii, Gamecube 2.3.2 [N 2]
TempGBA4PSP PlayStation Portable 26750221
gpSP PlayStation Portable 0.9
  1. 1.0 1.1 Experimental separate build under the name of Medusa.
  2. As VBA-Next.

Comparisons

mGBA
Aims for accuracy, speed, and features. For its accuracy, it's gradually becoming the best at that. It's actively developed and has features VBA-M lacks such as a Solar and Tilt Sensor, and more recently Game Boy Camera support.
Visual Boy Advance
The original GBA emulator. Discovered to have an ACE vulnerability detailed below.
Visual Boy Advance-M (VBA-M)
A fork with additional improvements. It is not updated as often these days and is falling behind in terms of accuracy and performance compared to mGBA.
VBA-Next
A RetroArch fork from an older revision of VBA-M with added speedhacks and tweaks, making it useful for lower-end devices. A bit less accurate in some respects, but fixes a few games such as Advance Wars 2.
gpSP
Its last official version was 0.9. There are, however, two forks of interest: gpSPmod, and gpSP-J. gpSP-J has superior compatibility, while gpSPmod has more options for customization (full screen, cheats, etc). Both are superior to Kai.
higan
Its GBA core is cycle-accurate as of v095.
MAME
Has a gba driver markup as working but both graphics and sound are "imperfect".

NOTE: There's a huge ACE vulnerability affecting VBA and most of its forks, except for VBA-M. The function for adding GameShark codes ("Import > Gameshark code file") doesn't check if the file's size is within 1024 kilobits, meaning cheat code files from dubious sources can be engineered with malware in mind. There is good news; VBA-M still doesn't do a sanity check for those files, but it just crashes instead of letting the code wreak havoc. So, depending on your use case, avoid using:

  1. Cheat code files bigger than 1024Kb that you got online from untrustworthy sources.
  2. The import code files feature.
  3. The old emulator altogether, and settle for other options like mGBA or VBA-M. All of them support the same SRAM save data the cartridge uses.

Emulation issues

Oversaturation

Left: The default game.
Right: The "Gameboy Colors" mode on VBA-M.

The screen on the original Game Boy Advance is not backlit and can be hard to see in some conditions. To compensate, game developers often used oversaturated colors by default so that the result would look normal on hardware. On standard computer screens, saturation is not an issue so this can look jarring and undesirable for gameplay. Some games made after 2003 may have also taken the Advance SP model into account since its screen is actually backlit. For everything else though, emudevs have given some solutions:

No$GBA

Under "Emulation Options", select "GBA Mode". There are four modes.

GBA (no backlight)
Strong desaturation
GBA SP (backlight)
Strong desaturation
Nintendo DS in GBA mode
Some desaturation
VGA Mode (poppy bright)
No desaturation

VBA-M

Only applies to Windows.

Under Options > Gameboy, you will find the options:

"Real Colors"
No desaturation
"Gameboy Colors"
Strong desaturation

higan

Under Settings > Video Filter, you will find the "Color Emulation" checkbox.

Color Emulation off
No desaturation
Color Emulation on
Gamma correction and adjusted color range.

Shaders

Cg shaders can be used in OpenEmu or RetroArch that adjust the colors to those of a real GBA screen, as well as other screen types. These are available in GLSL[1] for OpenGL, and Slang[2] for Vulkan.

For GBA, there is gba-color.cg[3], which simulates the color profile of a GBA screen under an external light source more accurately than VBA-M or No$GBA color options. If you prefer the darker color options that those emulators have, then use vba-color.cg[4] instead.

There is also nds-color.cg[5] and psp-color.cg[6], which simulates the color profiles of the original Nintendo DS frontlit screen and the PSP-1000/PSP-2000 backlit screen, respectively.

Save formats

Originally, when saves were implemented, nobody settled on a format, so the Visual Boy Advance devs made its own. Because other emulators often went with raw data, having to exchange different saves caused problems. The original Visual Boy Advance tries to figure out which format a given save is but often fails at it. By explicitly telling the emulator to read it as a specific type using a file called vba-over.ini, VBA complies. VBA-M includes this config file by default, but older revisions like VBA 1.7.2 and VBALink do not.

The VBA-Next and VBA-M cores in Libretro have the file baked into the binary so that it can load raw .sav files, but converts the format to its own derivative at exactly 136 KB every time, with save type info contained within the file. This completely avoids the previous issues at the cost of incompatibility with standalone VBA and most others.

To solve this incompatibility, Libretro devs created a command-line tool to convert .srm save files made from these cores to raw .sav save data for other emulators. It takes standard input (i.e. just drag and drop the .srm onto the executable) and outputs accordingly. It can also be done in reverse. A 64-bit binary of this tool for Windows can be found here.

Connectivity

GBA Link Multiplayer (1~4GBA)

VBA-M
This doesn't work with old VBA versions.
Just disable "Pause when Inactive", configure all four Joypads each with their own button layout, enable "Link, Enable GBA Link". Now open VBA-M again as much times needed for each player, and have them each use their separate Joypad configuration. Each player will have a separate SRAM save file.
VBA Link + e-Reader
Useful if you want to use the Pokémon Battle-e Cards. Downloads and instructions reside here.
mGBA
Select "New multiplayer window" from the menu. As you load your ROMs into each window, "Player [X] of [Y]" will appear across the title bar. This can be done for up to four players. However, multiple instances of the same ROM will share a save file.
No$GBA
No information about how to get it working at this time, but the functionality also works with DS emulation, and that's how users can check out the incomplete multiplayer Wi-Fi implementation.

GBA Wireless Multiplayer

The wireless adapter has the ability to connect five players to each other, and includes its own software to download a subset of another player's game that runs when no cartridge is inserted. Pokémon Fire Red and Leaf Green came bundled with this accessory but it can also work with Pokémon Emerald and the Classic NES Series.

No emulator has currently implemented this add-on. The only project whose developers put this on its roadmap is mGBA.

GameCube Connectivity

The Game Boy Advance can also connect to the GameCube. e-Reader functionality with GC games isn't emulated as of yet, but Dolphin supports connectivity through rudimentary joybus emulation made in parallel with VBA-M. Because this emulator has fallen behind, the Dolphin team is currently rewriting the feature from scratch to better interface with more accurate emulators. They showcased early higan support in a video, but nothing has been released as of yet.

Dolphin/VBA-M

Requires VBA-M r947 or newer.
  1. Reduce your volume. You won't want it to be high, especially with headphones.
  2. Open Dolphin and VBA-M. Make sure neither are blocked by your firmware.
  3. In Dolphin, launch the game and navigate to the area where you're asked to connect the GBA. Then, under the controller options, assign the GameCube controllers as "GBA" for whichever you need.
  4. In VBA-M, uncheck Pause When Inactive in Options > Emulator. Then, under Options > Link > Joybus Options, Make sure to "Enable Joybus Connection" is on and set "IP/Hostname" to use default settings, that is 127.0.0.1 or localhost.
  5. Dolphin will freeze.
  6. Open the GBA BIOS in VBA-M as if it were a regular GBA ROM. The regular splash screen will stutter a bit.
  7. Dolphin should recognize the Joybus Link by then and the GC game will detect that a GBA was connected.
  8. To connect other units, open another VBA-M instance and repeat its process.

Notable games that work:

Notable games that don't:

GBA/DS Connectivity

Main section: Nintendo DS § GBA/DS Connectivity

e-Reader

Main page: GBA e-Reader emulators

This device can read content off e-Card paper stripes either as standalone content, or additional content to GBA/GC games. Can be thought of as DLC.

Special Hardware

Most of these have not been emulated as of yet. There used to be patches that could be applied to GBA ROMs with a utility like Lunar IPS (mostly from No Frills), but they're for the most part lost to time nowadays. Your best bet is to use Action Replay to emulate those.

Solar Sensor

Emulation

This feature has been emulated in mGBA, VBA-M and no$gba 2.6 onwards:

  • mGBA: In the shortcuts editor, shortcuts can be configured to raise/lower the solar level incrementally or to set any particular brightness level.
  • VBA-M: This emulator uses the keys of the lateral motion controls to change the Solar Sensor levels. You can find those keys and modify them in Options -> Input -> Configure... -> "Special" tab.
  • no$GBA: Under Options/Emulation Setup, you can find the Solar Sensor Level option. You are given the choice between only three brightness levels though: Darkness, 100 Watts, and Bright Sunlight.

ROM Patches

Fixes applied directly to the ROM by various scene release groups to make it compatible with any emulator/flashcard, making the in-game brightness level controllable with L+Left/Right. It's argued this makes for a better experience actually, but sadly not all releases are covered.

  • Boktai 1: JP, US, EU.
  • Boktai 2: JP, US, EU.
  • Boktai 3: JP Fix.
  • Combinations of Boktai 4 JP with earlier solar sensors to get solar sensor bonuses aren't emulated yet in any DS emulator.

Motion Control

VBA-M has an option for Motion controls "Input, Set, Motion". It currently works with all versions of the GBC title Kirby Tilt'n Tumble, which also was a special cartridge with a motion sensor built-in to control movement in-game. But VBA-M does not support motion controls for GBA games yet.

Emulation

  • VBA doesn't emulate this feature, and its "Motion Control" option (with keys mapped to each tilt direction) covers the GBC title Kirby Tilt'n Tumble.
  • mGBA supposedly includes this feature but key remapping for tilt sensors is not present in the latest builds.

ROM Patches

Fixes applied directly to the ROM (with the Lunar IPS utility, or at runtime using mGBA or VBA-M and naming them the same as the ROM in the same directory) by various scene release groups to make it compatible with any emulator/flashcard. D-Pad controls substituting motion controls don't work as well here as they tilt it "too much" at times to be very playable.

  • Yoshi Topsy Turvy/Universal Gravitation: JP, EU, US
  • Warioware Twisted! (Patch: JP, US)

Rumble Feature

There are various rumble features found in GBA/GBC cards:

  • GBC Rumble: GBC games which came on special cartridges with additional hardware for the rumble feature. It was actually used by dozens of releases, and some games like Tarzan 2 GBC were programmed to have rumble support but shipped on regular cartridges. Emulated by VBA-M GX (Wii-only), which also cover the dummied-out rumble games. Not emulated anywhere else.
  • GBA Gyro Rumble: WarioWare Twisted was shipped on a cart with rumble support. It would rumble when you tilt to one "extreme". Emulated by VBA-M GX (Wii-only, functional), mGBA has this feature but it's not enabled in current builds.
  • GBA Variable Rumble: Drill Dozer has rumble support, with variable force and speed depending on the rock type you drill through ingame. Partially emulated by VBA-M GX (Wii-only, functional), mGBA has this feature but it's not enabled in current builds.
  • Game Boy Player Rumble: Many regular GBA games, shipped on regular cartridges, enable rumble during gameplay when played on GB Player hardware (which is essentially GBA hardware). These include Super Mario Advance 4, Summon Night Hajimari no Ishi, Mario & Luigi 1, Shikakui Atama wo Marukusuru Advance (both releases), Pokémon Pinball, as well as Drill Dozer which disables its original cartridge rumble scheme and enables this one instead. None of the emulators support this, though it's being under development for the mGBA emulator.

Figurine Readers

  • Figurine Add-on: Legendz: Isle Of Trials, Legendz: Sign Of Necromu, Plaston Gate (Fix), Plaston Gate DX (Fix). The add-on is essentially Skylanders before it became popular.

Other Add-ons

Not emulated yet:

  • Battle Chip Gate (and variations): compatible with Japanese versions of Megaman Zero 3, Megaman Battle Network 4, 4.5, 5 and 6.

References