Tutorial de emulación sobre Gameboy Advance

#4310

Introducción

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.

gba.png

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.

Características técnicas

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).

Tamaños

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.

Dimensiones

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

Emulación

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.

Configuración

Primero de todo descargamos el fichero con el emulador desde aquí

Una vez descomprimido en la carpeta c:\Gba nos mostrará los siguientes ficheros:

sshot-1.png

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

sshot-2.png

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í:

sshot-4.png

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

sshot-3.png

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
Izquierda Cursor izquierda 0114
Derecha Cursor derecha 0113
Arriba Cursor arriba 0111
Abajo 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

Pantalla de inicio

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

No filter

Filtro AdvanceMAME Scale2x

AdvanceMAME Scale2x

Filtro Modo TV

Filtro Modo TV

Filtro Modo Pixelado

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.

Implementación en Frontends

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 )

Mamewah 1.68

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                              0

M.A.L.A.

Tan sencillo como rellenar el configurador de la siguiente forma

mala1.png

mala2.png

mala3.png

Hyperspin

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

Maximus Arcade

MAXIMUS.png

Visualboy Advance 1.8.0 beta 3

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

1801.png

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

1802.png

Y dentro de ella seleccionar la siguiente entrada

1803.png

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í.

1804.png

Para modificar los controles

1805.png

1806.png

Y para ponerlo a pantalla completa

1807.png

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

Publicidad



Arcade