Changes

Jump to navigation Jump to search

Game Boy Advance emulators

No change in size, 11:55, 6 October 2023
m
no edit summary
'''List of recommended GBA emulators for Android:'''
* [https://www.androidauthority.com/best-game-boy-emulators-for-android-368530/ 10 best Game Boy Advanced, Game Boy Color, and Game Boy emulators for Android] (SEPTEMBER 2, 2018. Includes some emulators not found in above charts. Reviews may be subjective.)
 
==Emulation issues==
 
===Oversaturation===
[[File:1406913527173-1-.png|400px|thumb|right|'''Left:''' The default game.<br/>'''Right:''' The "Gameboy Colors" mode on [[VisualBoy Advance#VBA-M|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 Game Boy Advance SP <abbr title="AGS-001">model</abbr> into account since its screen was actually <abbr title="A newer model, AGS-101, was released in 2005 that was actually backlit">frontlit</abbr>. For everything else though, emudevs have given some solutions:
 
====Emulator Options====
'''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
 
'''mGBA:''' Under Tools > Settings > Shaders > Load New Shader, select "gba-color.shader"
 
'''VBA-M:''' (nightly only): Under Options > Game Boy Advance, you will find the option, '''LCD Filter'''.
 
'''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.
'''NanoBoyAdvance''': Enabled by default. Under Config > Video > Color Correction > GBA
 
'''SkyEmu''': Color Correction is set by default to 1.00 force in this emulator, and there are 2 types of desaturation methods. The first one is named SkyEmu and is selected by default, and the other one is named Higan and, as it's name suggests, is based on higan's color correction. Change the desaturation type by pressing the ≡ button, then select GBA Color Correction Type. You can also change the intensity of the desaturation: slide the slider to 0.00 to brighten the screen a tad bit.
 
====Shaders====
Cg [[Shaders and Filters|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.
 
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.
 
For Game Boy Advance shader presets see the "Shader Presets" page;
{{Main|Shader_Presets}}
 
===Horrible Sound Quality===
As a handheld rushed to the market (because of the WonderSwan Color competition), the Game Boy Advance had some cut corners. The sound hardware was affected the hardest: while it could play Game Boy Color sound in addition to samples and sequenced music like what would be heard on the SNES, the actual playback quality is awful compared to the sound samples stored internally in the ROM.
 
There were [https://www.romhacking.net/utilities/881/ tools] made to extract the internal high-quality music (as midi files plus a sound font, to be played on foobar2000), however, interest remains limited in implementing its playback in real-time on emulators. It's worth noting it exists as a very experimental feature on [[mGBA]] (nightly versions) under Enhancements as "XQ GBA Audio", but very buggy and still limited to games using the standard sound engine, the so-called "Sappy" engine, which is still a big part of the GBA's software library.
 
===High Resolution Affine Transformation Graphical Effects===
Similar to the scaling effects used on the Super NES known commonly as "Mode 7" graphics, the Game Boy Advance has affine transformation effects for some backgrounds and individual sprites that can be done in hardware. Due to the GBA's lower resolution, some detail may be lost.
 
The [[mGBA]] emulator added an Enhancements menu where you can change the resolution of those graphical effects, for a smoother effect. The graphical render engine will need to be OpenGL for those to take effect. It won't work on games where those effects are done in software instead of the hardware scaling features (like the 3D environment in Asterix & Obelix XXL)
 
===Save formats===
Originally, when saves were implemented, nobody settled on a format, so the Visual Boy Advance devs made their 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 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
[https://github.com/libretro/vba-next/blob/master/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 [https://thysbelon.github.io/gbaconv-web/ website version of this tool can be found here].
==Connectivity==
===Glucoboy===
* '''Glucoboy:''' An obscure medical peripheral designed to monitor a child's blood glucose levels and reward them for keeping tabs on their condition. No known emulator supports this so far, especially given the niche nature of this accessory. Not to mention that [https://assemblergames.com/threads/glucoboy-for-gameboy-is-this-the-rarest-game-accessory-for-gameboy-advance.41853/page-2 Bayer Healthcare destroyed all unsold stock] making it hard to find.
 
==Emulation issues==
 
===Oversaturation===
[[File:1406913527173-1-.png|400px|thumb|right|'''Left:''' The default game.<br/>'''Right:''' The "Gameboy Colors" mode on [[VisualBoy Advance#VBA-M|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 Game Boy Advance SP <abbr title="AGS-001">model</abbr> into account since its screen was actually <abbr title="A newer model, AGS-101, was released in 2005 that was actually backlit">frontlit</abbr>. For everything else though, emudevs have given some solutions:
 
====Emulator Options====
'''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
 
'''mGBA:''' Under Tools > Settings > Shaders > Load New Shader, select "gba-color.shader"
 
'''VBA-M:''' (nightly only): Under Options > Game Boy Advance, you will find the option, '''LCD Filter'''.
 
'''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.
'''NanoBoyAdvance''': Enabled by default. Under Config > Video > Color Correction > GBA
 
'''SkyEmu''': Color Correction is set by default to 1.00 force in this emulator, and there are 2 types of desaturation methods. The first one is named SkyEmu and is selected by default, and the other one is named Higan and, as it's name suggests, is based on higan's color correction. Change the desaturation type by pressing the ≡ button, then select GBA Color Correction Type. You can also change the intensity of the desaturation: slide the slider to 0.00 to brighten the screen a tad bit.
 
====Shaders====
Cg [[Shaders and Filters|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.
 
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.
 
For Game Boy Advance shader presets see the "Shader Presets" page;
{{Main|Shader_Presets}}
 
===Horrible Sound Quality===
As a handheld rushed to the market (because of the WonderSwan Color competition), the Game Boy Advance had some cut corners. The sound hardware was affected the hardest: while it could play Game Boy Color sound in addition to samples and sequenced music like what would be heard on the SNES, the actual playback quality is awful compared to the sound samples stored internally in the ROM.
 
There were [https://www.romhacking.net/utilities/881/ tools] made to extract the internal high-quality music (as midi files plus a sound font, to be played on foobar2000), however, interest remains limited in implementing its playback in real-time on emulators. It's worth noting it exists as a very experimental feature on [[mGBA]] (nightly versions) under Enhancements as "XQ GBA Audio", but very buggy and still limited to games using the standard sound engine, the so-called "Sappy" engine, which is still a big part of the GBA's software library.
 
===High Resolution Affine Transformation Graphical Effects===
Similar to the scaling effects used on the Super NES known commonly as "Mode 7" graphics, the Game Boy Advance has affine transformation effects for some backgrounds and individual sprites that can be done in hardware. Due to the GBA's lower resolution, some detail may be lost.
 
The [[mGBA]] emulator added an Enhancements menu where you can change the resolution of those graphical effects, for a smoother effect. The graphical render engine will need to be OpenGL for those to take effect. It won't work on games where those effects are done in software instead of the hardware scaling features (like the 3D environment in Asterix & Obelix XXL)
 
===Save formats===
Originally, when saves were implemented, nobody settled on a format, so the Visual Boy Advance devs made their 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 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
[https://github.com/libretro/vba-next/blob/master/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 [https://thysbelon.github.io/gbaconv-web/ website version of this tool can be found here].
==References==
11,183
edits

Navigation menu