La Gameboy Advance es una consola portátil de Nintendo que salió al mercado en marzo de 2001 y se mantuvo hasta el año 2008.
A principios de 2003 se actualizó pasándose a llamar GameBoy Advance SP (Super Portable)
La tercera versión de la consola se llamó Gameboy Micro, la cual sufrió un rediseño en su tamaño haciéndola más pequeña que el modelo anterior.

Sucesora de la popular Game Boy, es capaz de ejecutar casi todo el software escrito para la Game Boy y la Game Boy Color, a excepción de la Gameboy Micro para la que moficaron el slot de cartuchos y solo se pueden introducir de la propia Gameboy Advance.
Microprocesador: ARM7TDMI de 32 bits a 16,7 MHz, licenciado a ARM y producido por Nintendo para integrar prácticamente toda la consola en un único chip, reduciendo así el consumo de batería.
Memoria: 32 KB de memoria interna (IWRAM, Internal Work RAM) y 96 KB de VRAM (Video RAM) (32kb para sprites y 64kb para mapas), integrado en el procesador y con un bus de 32 bits, 256 KB de WRAM (Work Random Access Memory) externa, con un bus de 16 bits. 1k de memoria para paletas y 1k para la configuración de los sprites (OAM). Direccionamiento de hasta 256 megabits (32 megabytes) de ROM (memoria de solo lectura).
Pantalla color TFT matriz activa de 7,4 cm (2,9 pulgadas)
Resolución de pantalla de 240 x 160 pixeles.
Medidas de la pantalla : 40,8 mm X 61,2 mm
16 paletas de 16 colores para sprites (cuyo color 0 se usa como transparente) y 16 paletas de 16 colores para mapeado. Posibilidad de usarlas como una única paleta de 256 colores con el 0 como transparente. Hasta 32,768 colores en los modos de framebuffer.
Longitud: 144,5 mm
Anchura: 24,5 mm
Alimentación : 2 pilas LR 06 para una autonomía de 15 horas
Grosor: 82 mm
Peso: 140 g
El mejor emulador para esta consola es Visual Boy Advance
Este emulador es capaz de emular tanto la consola Gameboy Advance, como la Gameboy Color y Gameboy
Podemos optar por la versión 1.8.0 beta 3 que podemos configurarla mediante su gui, de la cual haré unos apuntes al final, o bien utilizar la versión 1.7.2-SDL-Win32 que es sobre la que se basa este tutorial.
Primero de todo descargamos el fichero con el emulador desde aquí
Una vez descomprimido en la carpeta c:\Gba nos mostrará los siguientes ficheros:

Para saber los códigos de las teclas que vamos a asignar descargaremos el configurador de SDL desde aquí y lo pondremos en una carpeta nueva dentro de la del emulador

Para hacer menos tedioso el nombre del emulador lo podemos cambiar a Vba.exe, ya que esto no influye para nada en su funcionamiento.
Ahora creamos las carpetas que necesitemos dentro del emulador, bios, guardado de partidas, roms, capturas, escaneado de los juegos,etc.
Nos debe de quedar algo así:

De manera que ya podemos completar nuestras carpetas
Vamos ahora a dejar el emulador totalmente configurado, para ello editamos el fichero VisualBoyAdvance.cfg y nos saldrá esto
# All numeric values are in hexadecimal # Use TAB or EQUAL sign to separate name from value # # Key configuration (all numbers are in hexadecimal!) # # Keys values are in the format YXXX where Y is the device number. 0 means # keyborad and XXX is the SDL define for the desired key (read SDL_keysym.h). # # If Y is greater than 0, it means joystick number Y-1 and it uses the # following format for XXX: # # - if XXX < 20, XXX is the axis number multiplied by 2. An even number means # movement to the negative side (on the X axis, it means left). An odd # number means movement to the positive side (on the X axis, it mean # right). For the Y axis, negative means up and positive means down. # X axis is usally axis number 0 and Y is axis number 1. # - if 20 >= XXX > 30, then XXX is the HAT number multiplied by 4 plus the # direction: 0 for up, 1 for down, 2 for right and 3 for left. Example: # 0021 is HAT 0 down, 0026 is HAT 1 right. # - if 80 >= XXX > 100, XXX is the joystick button number (XXX-080). # # Default key configuration is (value in parenthesis): # # Left Left Arrow (0114) # Right Right Arrow (0113) # Up Up Arrow (0111) # Down Down Arrow (0112) # A Z (007a) # B X (0078) # L A (0061) # R S (0073) # Start ENTER (000d) # Select BACKSPACE (0008) # Speed up SPACE (0020) # Capture F12 (0125) # Joy0_Left=0114 Joy0_Right=0113 Joy0_Up=0111 Joy0_Down=0112 Joy0_A=007a Joy0_B=0078 Joy0_L=0061 Joy0_R=0073 Joy0_Start=000d Joy0_Select=0008 Joy0_Speed=0020 Joy0_Capture=0125 # Motion support keys. Same format as above # # Default keys are (value in parenthesis): # # Left Numeric Pad 4 (0104) # Right Numeric Pad 6 (0106) # Up Numeric Pad 8 (0108) # Down Numeric Pad 2 (0102) # Motion_Left=0104 Motion_Right=0106 Motion_Up=0108 Motion_Down=0102 # Frame skip setting. Allowed values are from 0 to 5 only. frameSkip=2 # Gameboy Frame skip setting. Allowed values are from 0 to 5 only. gbFrameSkip=0 # Video setting. 0=1x, 1=2x, 2=3x, 3=4x. video=1 # Use fullscreen mode. 0=false, any other value means true fullScreen=0 # Disables MMX support disableMMX=1 # Use bios file. 0=false, any other value means true useBios=0 # Bios file full path and name (ZIP not supported) biosFile=none # Filter to use. 0=no filter, 1=TV Mode, 2=2xSaI, 3=Super 2xSaI, 4=Super Eagle # 5=Pixelate, 6=Motion Blur, 7=AdvanceMAME Scale2x, 8=Simple 2x, # 9=Bilinear, A=Bilinear Plus, B=hq2x, C=lq2x filter=0 # Disable status messages. 0=false, any other value means true disableStatus=0 # Enable Gameboy border. 0=false, any other value means true borderOn=0 # Gameboy emulator type. 0=automatic, 1=CGB/GBC, 2=SGB, 3=GB, 4=GBA, 5=SGB2 emulatorType=1 # Enable washed colors. 0=false, any other value means true colorOption=1 # Directories. Not setting one them makes the file go the rom directory. # Save state directory #saveDir= # Screen shot Capture directory #captureDir= # Battery directory #batteryDir= # Screen capture format # 0=PNG, anything else for BMP captureFormat=0 # Sound quality # 1=44 Khz, 2=22Khz, 4=11Khz soundQuality=2 # Sound Echo # 0=false, anything else for true soundEcho=0 # Sound Low pass filter # 0=false, anything else for true soundLowPass=0 # Sound reverse stereo # 0=false, anything else for true soundReverse=0 # Remove GBA intros (not supported anymore) # 0=false, anything else for true # removeIntros=0 # Save Type # 0=automatic, 1=EEPROM, 2=SRAM, 3=Flash, 4=EEPROM+Sensor, 5=NONE saveType=0 # Flash size # 0=64K Flash, 1=128K Flash flashSize=0 # Sound volume # 0=1x, 1=2x, 2=3x, 3=4x soundVolume=0 # Interframe blending # 0=none, 1=motion blur, 2=smart ifbType=0 # Show emulation speed # 0=none, 1=percentage, 2=detailed showSpeed=1 # Show speed in transparent mode # 0=normal, anything else for transparent showSpeedTransparent=1 # Enable/Disable auto frameskip # 0=disable, anything else to enable autoFrameSkip=0 # Sets the desired throttle # 0=disable, 5...1000 valid throttle speeds throttle=0 # Pauses the emulator when the window is inactive # 0=disable, anything else to enable pauseWhenInactive=0 # Enables AGBPrint support # 0=disable, anything else to enable agbPrint=0 # Enables GBA RTC support # 0=disable, anything else to enable rtcEnabled=0 # Sound OFF flag # 0=sound on, anything else turns off sound soundOff=0 # Sound Enable # Controls which channels are enabled: (add values) # 1 - Channel 1 # 2 - Channel 2 # 4 - Channel 3 # 8 - Channel 4 # 100 - DirectSound A # 200 - DirectSound B # 30f=all enabled, 0=mute all soundEnable=30f # Controls automatic SGB border # 0=disable, anything else enables automatic SGB border display borderAutomatic=0 # Skip bios code # 0=disable, anything else skips BIOS code skipBios=0 # The interval between the rewind saves # Minimum of 0 seconds to disable rewind support, # Maximum of 60 minutes. Value in seconds (hexadecimal numbers) rewindTimer=0 # Enable enhanced save type detection # 0=disable, anything else to enable (no longer used) #enhancedDetection=1
Para configurar las teclas nos ayudaremos del programa SDLTest.exe que se encuentra dentro de la carpeta SDL-Test
Lo ejecutamos y nos saldrá esto

Con la ventana pequeña activa, si pulsamos una tecla, se nos mostrará en la pantalla que está detrás el código que tenemos que introducir en el archivo de configuración.
Como en principio suponemos que vamos a utilizar el emulador en máquinas arcade, asignaremos las mismas teclas que se usan en MAME y así compatibilizar al máximo el emulador. Las teclas que usaríamos en ese caso serán
| Botones | Tecla asignada | Código |
|
Cursor izquierda | 0114 |
|
Cursor derecha | 0113 |
|
Cursor arriba | 0111 |
|
Cursor abajo | 0112 |
| Botón A | LCONTROL | 0132 |
| Botón B | LALT | 0134 |
| Botón L | Espacio | 0020 |
| Botón R | LSHIFT | 0130 |
| Botón Start | 5 | 0035 |
| Botón Selec | 1 | 0031 |
| Aumentar velocidad emulador | A | 0061 |
| Captura de pantalla | S | 0073 |
Joy0_Left=0114 Joy0_Right=0113 Joy0_Up=0111 Joy0_Down=0112 Joy0_A=0132 Joy0_B=0134 Joy0_L=0020 Joy0_R=0130 Joy0_Start=0035 Joy0_Select=0031 Joy0_Speed=0061 Joy0_Capture=0073
Veamos el aspecto gráfico
Para que el juego se muestre de la mejor manera posible y sin saltos seleccionamos
# Frame skip setting. Allowed values are from 0 to 5 only. frameSkip=0 # Gameboy Frame skip setting. Allowed values are from 0 to 5 only. gbFrameSkip=0
El escalado depende del filtro que usemos. Si no aplicamos filtro debemos usar un escalado 4x para que ocupe casi toda la pantalla, en cambio con cualquier otro filtro podemos dejarlo en 1x y al seleccionar pantalla completa sí que ocupará toda la pantalla.
En cuanto al uso o no de intrucciones MMX no he notado cambio alguno, así que podemos dejarlo tal y como está.
# Video setting. 0=1x, 1=2x, 2=3x, 3=4x. video=0 # Use fullscreen mode. 0=false, any other value means true fullScreen=1 # Disables MMX support disableMMX=0
Una de las cosas que más me gusta de un emulador es que arranque igual que lo hace la máquina emulada y en este caso podemos ver la pantalla de carga si colocamos un archivo de bios en su carpeta correspondiente y le asignamos la ruta donde se encuentra
# Use bios file. 0=false, any other value means true useBios=1 # Bios file full path and name (ZIP not supported) biosFile=c:\gba\bios\gba.bin

Si queremos aprovechar la máxima velocidad en la emulación no debemos aplicar ningún tipo de filtro, pero si disponemos de una máquina más potente puede haber una notable diferencia en el aspecto gráfico haciendo uso de los mismos.Ejemplos de filtros:
Sin filtro aplicado

Filtro AdvanceMAME Scale2x

Filtro Modo TV

Filtro Modo Pixelado
![]()
Para mi gusto el filtro Advmame es el más elegante por lo menos en monitor TFT.
# Filter to use. 0=no filter, 1=TV Mode, 2=2xSaI, 3=Super 2xSaI, 4=Super Eagle # 5=Pixelate, 6=Motion Blur, 7=AdvanceMAME Scale2x, 8=Simple 2x, # 9=Bilinear, A=Bilinear Plus, B=hq2x, C=lq2x filter=7
Las siguientes instrucciones las dejamos como siguen
# Disable status messages. 0=false, any other value means true disableStatus=0 # Enable Gameboy border. 0=false, any other value means true borderOn=0 # Gameboy emulator type. 0=automatic, 1=CGB/GBC, 2=SGB, 3=GB, 4=GBA, 5=SGB2 emulatorType=0 # Enable washed colors. 0=false, any other value means true colorOption=1
Damos las rutas a los directorios siguientes
# Directories. Not setting one them makes the file go the rom directory. # Save state directory #saveDir=c:\gba\Saves # Screen shot Capture directory #captureDir=c:\gba\Snap # Battery directory #batteryDir=c:\gba\Battery
Y el resto de instrucciones las dejamos de la siguiente forma, ya es cuestión de cada uno si quiere modificar algo, pero en principio funcionaría correctamente así.
# Screen capture format # 0=PNG, anything else for BMP captureFormat=0 # Sound quality # 1=44 Khz, 2=22Khz, 4=11Khz soundQuality=2 # Sound Echo # 0=false, anything else for true soundEcho=0 # Sound Low pass filter # 0=false, anything else for true soundLowPass=0 # Sound reverse stereo # 0=false, anything else for true soundReverse=0 # Remove GBA intros (not supported anymore) # 0=false, anything else for true # removeIntros=0 # Save Type # 0=automatic, 1=EEPROM, 2=SRAM, 3=Flash, 4=EEPROM+Sensor, 5=NONE saveType=0 # Flash size # 0=64K Flash, 1=128K Flash flashSize=0 # Sound volume # 0=1x, 1=2x, 2=3x, 3=4x soundVolume=0 # Interframe blending # 0=none, 1=motion blur, 2=smart ifbType=0 # Show emulation speed # 0=none, 1=percentage, 2=detailed showSpeed=0 # Show speed in transparent mode # 0=normal, anything else for transparent showSpeedTransparent=1 # Enable/Disable auto frameskip # 0=disable, anything else to enable autoFrameSkip=0 # Sets the desired throttle # 0=disable, 5...1000 valid throttle speeds throttle=0 # Pauses the emulator when the window is inactive # 0=disable, anything else to enable pauseWhenInactive=0 # Enables AGBPrint support # 0=disable, anything else to enable agbPrint=0 # Enables GBA RTC support # 0=disable, anything else to enable rtcEnabled=0 # Sound OFF flag # 0=sound on, anything else turns off sound soundOff=0 # Sound Enable # Controls which channels are enabled: (add values) # 1 - Channel 1 # 2 - Channel 2 # 4 - Channel 3 # 8 - Channel 4 # 100 - DirectSound A # 200 - DirectSound B # 30f=all enabled, 0=mute all soundEnable=30f # Controls automatic SGB border # 0=disable, anything else enables automatic SGB border display borderAutomatic=0 # Skip bios code # 0=disable, anything else skips BIOS code skipBios=0 # The interval between the rewind saves # Minimum of 0 seconds to disable rewind support, # Maximum of 60 minutes. Value in seconds (hexadecimal numbers) rewindTimer=0 # Enable enhanced save type detection # 0=disable, anything else to enable (no longer used) #enhancedDetection=1
Con esto terminamos la configuración del fichero VisualBoyAdvance.cfg
Si quereis el emulador configurado directamnete para usarlo en recreativas y con las mismas teclas de MAME, muy útil si utilizamos J-PAC, podeis descargarlo al final del tutorial.
La línea de comandos que utiliza este emulador es la siguiente
vba.exe "[ruta del juego]\[nombre del juego].[extensión]"
Un ejemplo sería
vba.exe "c:\gba\roms\aladdin.zip"
Pasamos a implementarlos en diversos lanzadores (o fontends )
El ini correspondiente a este sistema sería
### gba.ini (mamewah v1.68) ###
emulator_title Gameboy Advance
### List Generation Settings ###
rom_path c:\Gba\roms
rom_extension zip
dat_file auto
nms_file auto
catver_ini_file auto
list_generation_method auto
### Execution Settings ###
pre_emulator_app_commandlines
emulator_commandline c:\Gba\vba.exe "[rompath]\[name].[romext]"{nodosbox}{nosafelaunch}
post_emulator_app_commandlines
general_app_commandlines
### Artwork Settings ###
artwork_image_paths c:\Gba\Snap
movie_preview_path c:\Gba\Videos
movie_artwork_no 1
enable_fuzzy_search 0
history_dat_file auto
history_dat_artwork_no 2
### Screen-Saver Settings ###
enable_music_in_screensaver 1
select_random_game 0
saver_type gamelist_slideshow
movie_path
movie_fullscreen 1
quit_delay 0
saver_commandline
### Additional Settings ###
music_path
lcd_display_file_path
description_display [description]{scroll}
### Settings used by MAMEWAH ###
current_list 0Tan sencillo como rellenar el configurador de la siguiente forma



El fichero ini lo tenemos que modificar de la siguiente forma (solo pongo la parte relacionada con el emulador)
[exe info] path = C:\Gba\ rompath = C:\Gba\Roms\ userompath = true exe = Vba.exe romextension = zip parameters = searchsubfolders = false pcgame = false winstate = HIDDEN hyperlaunch = false

También podemos hacer uso de este fantástico emulador ya que gracias a tener gui es totalmente configurable, de la misma forma que hemos hecho anteriormente, pero de manera más palpable.
Veamos una captura del mismo

Lo que realmente nos interesa de él es cómo configurarlo para que salga con la tecla Esc, elegir las teclas de control y cómo ponerlo directamente a pantalla completa.
Para lo primero basta con entrar en la pestaña siguiente

Y dentro de ella seleccionar la siguiente entrada

Marcamos la tecla y pulsamos Remove para eliminarla y pulsamos la tecla Esc y nos dirá que ya está asignada, nos vamos a la acción que indica y la borramos, y ahora nos volvemos a la opción FileExit volvemos a pulsar Esc en el recuadro de Select New Shortcut Key y le damos a Assign, con lo que nos quedará así.

Para modificar los controles


Y para ponerlo a pantalla completa

Ya con eso tenemos nuestro emulador totalmente configurado par utilizarlo en nuestro frontend favorito.
Ahora solo queda lanzar el frontend y disfrutar de este fantástico emulador.
Os dejo para descarga el emulador Visual Boy Advance 1.7.2-SDL-Win32 especialmente modificado para recreativas.
Un saludo