RG350

RG350

Enlaces

Documentación

Blogs, Foros

Emuladores, Ports y Aplicaciones

Sistema

Hardware

Conceptos

Emuladores / Juegos / Ports / Aplicaciones

Cada elemento que aparece en el lanzador, en las distintas secciones, es una especie de acceso directo. Algunos llevan a comandos o ejecutables que hay en el sistema (fundamentalmente los de la sección Settings) pero normalmente nosotros sólo vamos a tratar con los que provengan de OPKs.

Los OPKs son paquetes (una especie de ZIP) que podemos asimilar a una aplicación de móvil. Un OPK o aplicación puede ser un emulador, un juego o port, una utilidad, etc. Dentro del OPK en un fichero se le dice al lanzador en qué categoría debe aparecer. Básicamente las secciones que se ven y que se recorren con L1 y R1:

  • Applications
  • Emulators
  • Games
  • Settings

Los ports son los que aparecen en Games. Nada impide que un emulador aparezca dentro de Games, pero todo el mundo pone las cosas siguiendo esta organización. Un port es una aplicación que ejecuta un juego concreto, normalmente un clásico, del que se dispone del código y que alguien ha compilado para OpenDingux que es el sistema de la RG-350. También en Games están los remakes hechos por aficionados o homebrew.

Un emulador es una aplicación, normalmente también de código abierto, que alguien ha compilado para OpenDingux. El emulador no contiene el código de ningún juego en concreto ni la BIOS de la máquina que emula. En teoría esto permite la libre distribución de los emuladores. Un emulador simula por software (virtualiza) un sistema que normalmente puede ejecutar códigos de juegos distintos que venían en cartucho, CD, un chip de memoria, tarjeta de memoria, etc. Son las ROMs.

En resumen:

  • Port o juego: Un juego concreto normalmente un clásico de PC, un remake, juego indie o homebrew. En la RG350 tendrán forma de OPK.
  • Emulador: Virtualiza una máquina que puede ejecutar varios juegos/ROMS. En cualquier máquina emuladora como la RG-350 tendrán distintas formas (.bin, .zip, .iso, .pbp, .smc, .nes, .sms, hasta el infinito). También suelen venir en forma de OPK.

Las ROMs y su organización

Las ROMs son los volcados a fichero del soporte digital donde se almacenaba el código y los datos (sonidos por ejemplo) del juego en la máquina original. En viejas recreativas y en máquinas de cartucho, este soporte solían ser chips de memoria no volátil. En las máquinas más modernas normalmente son CDs, DVDs, Bluray's. Las ROMs en la RG350 se suelen colocar en la tarjeta microSD externa. Pueden ir en la interna pero suele complicar el proceso de actualización del firmware. En cuanto a la estructura de carpetas, puede ser cualquiera ya que los emuladores normalmente al abrirlos, presentan una especie de explorador de archivos para seleccionar la ruta y archivo de la ROM a ejecutar.

A pesar de que las ROMs puedan estar en cualquier lugar, todo el mundo tiende a utilizar una estructura similar en la que los distintos sistemas se meten dentro de una carpeta llamada roms en la raíz de la tarjeta. Cada sistema a su vez suele ser otra carpeta con el acrónimo de la máquina como nombre. Más o menos se utilizan los siguientes acrónimos:

  • FBA: Final Burn Alpha
  • FC: NES (por Famicom)
  • GB: Gameboy
  • GBA: Gameboy Advance
  • GBC: Gameboy Color
  • GG: SEGA GameGear
  • MD: SEGA Megadrive
  • NGP: NeoGeo Pocket
  • PCE: PC Engine / TurboGrafx-16
  • PS: Sony PlayStation
  • SFC: SuperNES (por Super Famicom)
  • SMS: SEGA MasterSystem
  • WSC: WonderSwan

La importancia de las BIOS

Las BIOS son unos ficheros parecidos a las ROMs que a diferencia de éstas están siempre presentes en la máquina. Es decir, así como las ROMs son código particular de cada juego, que digamos entra y sale de la máquina (cuando cambias el CD o cartucho), la BIOS también es código pero permanente de la máquina. Está guardado en un chip y contiene el código que se ejecuta cuando arranca la máquina (los menús de lanzamiento de juegos por ejemplo en consolas avanzadas) y librerías que utilizan los desarrolladores para hacer los juegos más fáciles de programar.

Los emuladores o bien incorporan una reimplementación de la BIOS (como el HLE de Pcsx4all) o bien es necesario que la pongamos nosotros. Aún en ese primer caso es conveniente utilizar la BIOS original. Si no la incluyen los emuladores es porque son código propietario del fabricante de la máquina, lo que impediría la libre distribución del emulador. Lo mismo que sucede con las ROMs.

Más adelante se incluye un listado de dónde buscan las BIOS los distintos emuladores.

BIOS de PlayStation

Siguiendo con el ejemplo de la BIOS HLE del emulador Pcsx4all, no es la real que puso Sony en sus máquinas, sino una BIOS que alguien prepararó haciendo ingeniería inversa por lo que nunca queda igual que la original. Esto se hace para poder distribuir el emulador y que sea funcional desde un principio. Porque si se incluye la BIOS original se comete un delito de propiedad intelectual y si no se incluye ningún tipo de BIOS el emulador ni siquiera arranca. Entonces se pone algo para salir del paso pero luego se le pide a los usuarios que busquen por su cuenta la BIOS original y la incorporen al emulador.

Para pasar de usar la BIOS emulada (HLE) a una original, primero hay que colocarla en el directorio /media/data/local/home/.pcsx4all/bios/, después arrancar el emulador, entrar en las opciones (tecla Power), abrir la sección Core settings y allí desactivar HLE emulated BIOS y seleccionar en Set BIOS file una de las que hayamos situado en el directorio indicado anteriormente. Por ejemplo:

opciones_pcsx4all

Sistemas de archivo

OpenDingux, el sistema que utiliza la RG350, es una distribución Linux. Por tanto es un sistema UNIX. En UNIX no existe el concepto de las unidades (como las típicas C:, D:, etc en Windows). Todo forma parte de un árbol de directorios cuya raíz es la / o root. Esto no quiere decir que un UNIX sólo pueda tener una unidad de almacenamiento. Lo que ocurre es que las distintas unidades se "montan" en distintos puntos del árbol de directorios.

El árbol de directorios base sobre el que se montan las unidades es ese archivo rootfs.squashfs (el nombre quiere decir "sistema de archivos raíz") que puede verse al pinchar la tarjeta interna en el PC poco antes de flashearla con otro firmware. Ahí comprimido está todo el sistema menos lo que se monta desde las tarjetas de memoria.

La tarjeta interna tiene dos particiones. La primera contiene el árbol root como hemos comentado, el kernel (del que no vamos a hablar, aunque es muy importante) y es de tipo FAT32, por eso se puede ver en Windows. Básicamente contiene el sistema. La segunda partición se monta en /media/data y está dedicada a contener la información de soporte a las aplicaciones, es decir configuraciones, librerías, archivos de datos (savestates por ejemplo) y las propias aplicaciones instaladas en la tarjeta interna. El formato de esta partición es EXT3, propio de Linux y por eso no se monta en Windows.

La tarjeta externa funciona de forma parecida a la segunda partición de la interna, es decir, sirve para contener aplicaciones y archivos de usuario, por ejemplo es donde se suelen colocar las ROMs. La única partición de esta tarjeta se monta en /media/sdcard. Esta tarjeta externa puede estar en formatos FAT32 o los propios de Linux (ext2, ext3, ext4). ROGUE soporta además exFAT, lo que permite aprovechar mejor las tarjetas de gran capacidad. En esta tarjeta lo único importante en cuanto a la estructura de carpetas es que exista en la raíz de la misma un directorio llamado apps (si está en formato FAT32 o exFAT será indiferente si está en mayúsculas, ya que estos sistemas de archivos no distinguen mayúsculas y minúsculas). El resto de cosas que pongamos en esta tarjeta (fundamentalmente ROMs) podrán organizarse como queramos (ver apartado Las ROMs y su organización).

Existe cierta confusión sobre si hay que formatear la tarjeta interna. En realidad la imagen que se graba o flashea (como se suele decir) incluye el formato. Flashear una tarjeta microSD es reconstruir el formato y el contenido de otra tarjeta, es decir clonarla. La imagen es un volcado bit a bit de la tarjeta original (forma y contenido). Entonces, ¿por qué sugieren muchos videos y procedimientos formatear la microSD a la que luego se le va a flashear una imagen? Sospecho que es para hacer desaparecer las dos particiones de la tarjeta con el firmware que vamos a sobreescribir, para que luego no haya dudas de lo que hay que seleccionar en el programa de flasheo. Eso en Windows. En Linux se puede hacer muy fácilmente referencia a la tarjeta en sí, además de a las particiones, por lo que el formateo previo es redundante. En resumen, que en teoría da igual el formato en que está la tarjeta antes de flashear la imagen. El flasheo "construye" el formato a la vez que le da contenido. Es como estampar un vinilo a partir de un molde master.

Conexión de red

El puerto USB2 cuando se conecta al PC se monta como una tarjeta de red adicional. Por ejemplo en una máquina Linux aparece este adaptador al conectar el cable:

enp0s29u1u2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.1.1.1  netmask 255.255.255.252  broadcast 10.1.1.3
        inet6 fe80::f721:afcb:94:3078  prefixlen 64  scopeid 0x20<link>
        ether a6:7b:58:c5:fe:30  txqueuelen 1000  (Ethernet)
        RX packets 13  bytes 2786 (2.7 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 24  bytes 4097 (4.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Ahí puede verse que se define una red con un rango de IPs muy reducido (sólo 2 bits). El PC toma la IP 10.1.1.1 y la consola la 10.1.1.2.

Si hacemos una detección de puertos abiertos en la máquina a través de este adaptador de red veremos que se encuentran abiertos los puertos correspondientes a FTP, SSH (lo que nos permite hacer transmisiones SCP y SFTP) y Telnet:

PORT   STATE SERVICE
21/tcp open  ftp
22/tcp open  ssh
23/tcp open  telnet

Por defecto el sistema de red está configurado para utilizar password. Se desactiva abriendo la aplicación Network que hay en la sección Settings

network

Como el enrutado del adaptador éste no da salida a internet no hay problema de inseguridad por quitar el password. El programa anterior sólo es se utiliza para cambiar esos ajustes, no es necesario que esté abierto para que funcione la conectividad.

En Windows un buen programa para transferir archivos por FTP a la consola es WinSCP. A partir del minuto 3:45 de este vídeo (en inglés) se ve cómo se usa. Este otro vídeo (en español) también muestra el proceso.

En Linux no es necesario, pero en Windows, dependiendo de la versión hay que instalar un driver. En el post inicial de este foro lo comentan. También se describe a partir del minuto 19:42 de este vídeo.

Cambio de iconos a las aplicaciones

Los iconos de los OPKs que muestra Gmenu2x (ya sean emuladores, juegos, ports o utilidades) se pueden cambiar muy fácilmente. Algo que se suele hacer es cambiar el icono de los emuladores para que representen a la máquina emulada.

Para cambiarlos hay dos opciones:

  1. Copiar el fichero (.PNG por ejemplo) en cualquier lugar de alguna de las tarjetas (un buen sitio puede ser el mismo directorio apps), editar el OPK (pulsando Select) y cambiarlo en el campo Icon (esta opción sólo está disponible en ROGUE):

    rg350 edit icon rg350 change icon

  2. Desempaquetar los OPKs de los emuladores, cambiar el icono y volver a empaquetar. Para desempaquetar/reempaquetar ver la sección Gestión de OPKs más adelante.

En la opción 1, en el pantallazo, puede verse que el icono lo está cogiendo de dentro del OPK del propio emulador (el paso al interior es con el #). Pero se puede elegir cualquier ruta del sistema de ficheros.

Batería

El puerto de carga de la RG350 es el etiquetado como USB2. Es un conector USB tipo C.

Los cargadores USB tipo C son más complejos que los microUSB. Con las nuevas tecnologías de carga rápida de los móviles, el cargador no se limita a enviar corriente al dispositivo, sino que hay una negociación previa, una especie de protocolo. Fue famoso el problema de la Raspberry Pi 4 por el cual no se podía alimentar con algunos alimentadores tipo C porque identificaban a la Raspberry de forma incorrecta y luego se negaban a darle corriente. Además de todo esto, da la impresión de que la RG350 tiene una circuitería de carga muy elemental (por los distintos comportamientos que tiene el LED de carga entre los distintos usuarios).

Por todos estos motivos, si hay que elegir un cargador, mejor optar por uno sencillo, no uno preparado para gestionar carga rápida por USB-C. Escoger uno de sólo 5 Voltios (los de carga rápida tienen tensión variable de hasta 12V) y entre 1 y 1.5 Amperios.

Una buena opción es cargar conectandola a un PC. Los puertos USB de un PC están limitados a 500mA, lo que se puede considerar una carga lenta, lo que en realidad es saludable para la batería.

La batería de la RG350 es de 3,7V y 2.5Ah. Los alimentadores USB son de 5V. Considerando la diferencia de 3,7 a 5 como la pérdida de rendimiento que hay en el proceso (aproximación burda), se pueden echar las cuentas más fácilmente. Estos serían los tiempos con cargadores de distintas intensidades:

Intensidad de carga Tiempo para carga completa
2,5A 1 hora
1A 2,5 horas
500mA (PC) 5 horas

Todos estos tiempos son en el peor de los casos cuando la carga necesaria sea completa.

El LED de la consola informa de varios aspectos de la batería de la siguiente manera:

Estado LED Significado
Verde fijo Consola encendida con batería con buen nivel de carga. También indica carga completada cuando cargamos la batería con la consola encendida, al pasar de rojo a verde
Parpadeo en verde Batería baja
Rojo fijo Cargando (tanto con consola encendida como apagada)
Apagado Carga completada (con la consola apagada)

Algunos usuarios comentan que no llegan a ver apagarse nunca el LED rojo cuando la cargan con la consola apagada. Esto parece indicar que el circuito de carga no es muy avanzado y en ocasiones no es capaz de determinar correctamente el final de la carga. En esos casos, tener en cuenta los tiempos de carga indicados más arriba en función de la intensidad del cargador utilizado, para desconectar el cargador cuando haya pasado dicho tiempo.

FAQ

¿Qué máquinas puedo emular?

En general la PlayStation original (o PS1) marca el techo. Incluso en esta máquina hay juegos particularmente exigentes que hacen sudar al procesador de la RG350 que se nota sobre todo en el sonido y la fluidez de las animaciones. Otras máquinas de potencia parecida que por tanto podrían dar problemas con emuladores poco eficientes son la Game Boy Advance o incluso la SuperNintendo en los juegos que incluían chips especiales en el cartucho. Con máquinas más complejas como N64, Dreamcast o PSP podemos llegar a encontrar emuladores, pero eso no significa que vayan a resultar jugables.

¿Qué es un romset?

Romset = set de ROMs, es decir un conjunto cerrado y definido de ROMs. En los emuladores de máquinas arcade suele manejarse el término más que con el resto de emuladores, aunque también aplica. Por ejemplo, cuando decimos que xMAME soporta el romset 84, quiere decir que es capaz de emular todas las ROMs contenidas en ese set. Los sets se definen con unos ficheros XML llamados DATs que se pueden consultar aquí. De hecho la forma de verificar si una ROM está correctamente definida para ser ejecutada en xMAME, FBA o MAME4all es echar mano de estos DATs revisando los nombres tanto de la ROM como de los ficheros que la constituyen, así como sus hashes. Los romsets soportados por xMAME, MAME4All y FBA son los siguientes:

Este artículo es un buen tutorial sobre cómo podemos gestionar y solucionar los problemas que tengamos al montar un romset.

No estoy seguro de que el romset de FBA indicado antes sea correcto. Este comentario es lo más detallado que he podido encontrar.

¿Cómo se activan los sticks analógicos en los juegos de PS?

Depende del juego. Es decir, hay juegos que no los soportan porque son anteriores a la aparición del Dual Analog o del Dual Shock (mediados y finales de 1997, respectivamente). Hay por tanto que probar en cada juego todas las opciones que aparecen en Core settings > Analog Mode:

Analog mode Digital Analog mode DualAnalog Analog mode DualShock Analog mode DualShock A

No es lo mismo (porque no deja de ser digital), pero siempre existe la opción de usar la emulación de la cruceta con el stick izquierdo pulsando Power + B.

En los juegos de PlayStation en formato CUE+BIN ¿qué archivos tengo que copiar a la consola?

El cue no es necesario si el bin es único. Es decir si hay un bin y un cue con copiar el bin a la consola es suficiente. Si hay un cue y por ejemplo 8 bin (esto puede ocurrir en los juegos que tenían pistas de audio en el CD según cómo se haya hecho el dump) entonces sí interesa copiar el cue y lanza el juego desde él. En esos casos lo más recomendable es empaquetar todas las pistas en pbp que ocupa menos y es un sólo archivo. Si se utilizan los cue+bin en los lanzadores aparece varias veces el mismo nombre del juego repetido tantas como ficheros cue y bin tengamos (en el ejemplo anterior 1+8=9 veces).

El cue es una especie de directorio de las pistas que contenía el disco. De hecho es un fichero de texto que se puede leer. Si se le da sólo un bin el emulador se adapta y entiende que es la única pista que tiene que usar y que lo contiene todo. Como curiosidad, si el juego es de los de varias pistas y se copia sólo el primer bin (que solía ser la pista que contenía el código del juego) también funciona, pero entonces el juego se ejecuta sin pistas de audio.

¿Por qué salen los juegos de GBC en blanco y negro en Gambatte?

Algunos cartuchos de Game Boy eran mixtos, es decir servían tanto para la Game Boy original como la Color. Cuando el juego se insertaba en la consola correspondiente mostraba los gráficos adecuados. En Gambatte, al ser un mismo emulador para las dos máquinas, hay que seleccionar el tipo de máquina con que queremos ejecutar la ROM mixta. El ajuste está en Settings > System. Priority DMG se corresponde con la Game Boy original y Priority GBC con la Game Boy Color. Así pues lo más recomendable es ajustar el segundo valor. Así los juegos de la Game Boy original (extensión .gb normalmente) se ejecutarán en blanco y negro y los de la Game Boy Color (extensión .gbc normalmente) en color:

Gambatte settings 1 Gambatte settings 2

Como tras hacer este cambio tenemos que reiniciar el emulador, hay que hacer que el nuevo valor sea el predeterminado seleccionando Save as default y luego confirmando:

Gambatte settings 3 Gambatte settings 4

¿Qué formato hay que dar a la tarjeta interna antes de flashear el firmware?

La interna no es necesario formatearla antes de flashear la imagen, a pesar de todo lo que se lee por ahí. El flasheo es formateo+instalación de datos, así que el formato previo se sobreescribe.

¿Qué tamaño es recomendable que tenga la tarjeta interna?

Si sólo es para alojar el sistema, hasta con una de 4GB sería suficiente. Si se quiere meter además emuladores y ROMs, entonces hay que subir el tamaño lo que se considere que se va a necesitar. En el debate sobre qué tarjeta poner más grande (si la interna o la externa), hay que tener en cuenta que pasar cosas por cable a la interna es muy lento. Lo más rápido para incorporar contenidos es copiarlos a la externa directamente en el ordenador. También hay considerar que mantener muchos contenidos en la interna dificulta los cambios de firmware en el futuro (no las actualizaciones) ya que se sustituye completamente el contenido de esta tarjeta. En esa situación habría que rescatar los contenidos previamente por cable, lo que como hemos dicho ya es lento. Una opción más rápida sería copiar de la interna a la externa por medio de DinguxCmdr, pero esto demuestra que antes de llegar a esa situación sería mejor idea mantener esos ficheros directamente en la tarjeta externa.

Opciones para actualizar el firmware RG350-ROGUE-CFW

Entre los assets de cada release encontramos tres opciones:

Tipo Descarga Descripción
Update RG350
RG350M
Es una aplicación OpenDingux, por tanto se ejecuta desde la propia consola. No formatea, sino que sustituye los archivos que han cambiado en el nuevo firmware respecto de un sistema anterior. Recomendable para no perder ajustes de usuario, aunque dependiendo de la versión del sistema de partida puede no quedar del todo fino. Se recomienda utilizar esta opción sólo para actualizar entre versiones de ROGUE, es decir si se parte de BASE, hay que utilizar una de las dos siguientes (preferentemente la última).
Flasher RG350 Es una aplicación OpenDingux, por tanto se ejecuta desde la propia consola. Formatea completamente la SD interna con el nuevo firmware por lo que se pierden ajustes del usuario. Recomendable para solucionar problemas en updates que no han quedado bien. En este video se ilustra todo el procedimiento.
sd_image.bin RG350
RG350M
Es una imagen para flashear la tarjeta interna desde un ordenador. Es parecida a la opción 2 y la única que sirve si se parte de un sistema que no arranca. La imagen ocupa más porque es un volcado de todo lo que contiene la SD (incluidos los espacios vacíos de la tarjeta). El proceso incorpora la complejidad adicional de tener que utilizar algunas utilidades poco habituales, y en el modelo normal de la consola, además el tener que abrirla para extraer la microSD interna. En este video (en inglés) se ilustra todo el procedimiento. La primera parte de este otro vídeo también muestra el proceso, esta vez en español.

Así pues, para la primera actualización (y posteriores) se puede utilizar cualquier método. Dependiendo de la situación es más recomendable uno que otro. En general empezar por la opción 1, si no queda bien pasar a la 2 y si tampoco queda bien o no es posible utilizarlo porque la consola no arranca, usar el método 3.

Flash de SD interna

De los procesos de actualización descritos en el apartado anterior, el que más dudas y temores plantea es el tercero. Sin embargo es el más recomendable ya que nos permite cambiar la tarjeta por una de más calidad, lo que a la larga es beneficioso.

Los pasos para realizar el flasheo de la tarjeta interna son los siguientes:

  1. En el modelo normal, abrir la consola. El tornillo inferior izquierdo tiene encima un sello que no se puede despegar entero; se desintegra. Sólo hay que tener cuidado con no partir el cable de la batería por darle un tirón. Es perfectamente normal que se descuelguen los gatillos L y R. No pasa nada, nos ocuparemos de ello justo antes de cerrar.
  2. Sacar la SD rompiendo un nuevo sello que no se puede despegar de una pieza. Sale a cachos. Si no se ha flasheado anteriormente la tarjeta interna por otros medios, se recomienda apartarla, es decir guardarla como está y flashear otra tarjeta. Las recomendaciones para la tarjeta son que tenga 16GB class 10. Sería suficiente con una tarjeta de 4GB, ya que el sistema ocupa menos de 1GB, pero tarjetas de esa capacidad ya no se suelen encontrar y de hacerlo, lo más probable es que sea una tarjeta vieja y lenta.
  3. Bajar la imágen que queremos flashear. Existen dos ramas (para el caso de ROGUE consultar el apartado anterior):
  4. Instalar uno de estos programas:
  5. Montar la tarjeta elegida para flashear en el PC con un adaptador o lector.
  6. Utilizando el programa del punto 4 flashear la imagen (hay quien recomienda formatear antes pero considero que confunde el proceso más que otra cosa). En este documento de la fundación Raspberry Pi se detallan los pasos para flashear una imagen de sistema para esta placa. El proceso es idéntico en RG350 (cambiando la imagen naturalmente).
  7. Expulsar la SD del ordenador.
  8. Pinchar en la RG y cerrarla cuidando de que encajen bien los gatillos L/R.

Desde Linux el paso 6 de la lista anterior se puede hacer con este comando desde consola (adaptando el nombre del dispositivo si en nuestro sistema es distinto):

$ sudo dd if=sd_image.bin of=/dev/mmcblk0 bs=2M

Gestión de OPKs

Este artículo del viejo wiki de la GCW Zero (que afortunadamente se conserva en archive.org), documenta muy bien cómo construir un OPK y algunos de los parámetros que contienen sus ficheros.

En Linux se puede hacer y deshacer un OPK muy fácilmente con los siguientes comandos:

  • Descompresión: unsquashfs fichero.opk
  • Compresión: mksquashfs directorio fichero.opk -all-root -noappend -no-exports -no-xattrs

Cheatsheets

Versiones del firmware BASE

En BASE no se muestra la versión del firmware (como sí hace ROGUE), por lo que hay que adivinar la versión en base a la fecha de creación:

Fecha Versión
2019-10-10 1.4
2019-10-18 1.5
2019-10-27 1.5.1
2019-11-10 (build date) 1.6
2019-11-17 (build date) 1.7

Flags de ROGUE

Existen 5 ficheros ocultos en el directorio /media/data que sirven para activar varias tareas de mantenimiento/instalación inicial durante el arranque. Para reactivarlos sólo hay que borrar el fichero correspondiente que se crea al finalizar la operación:

Fichero Operación
.clean Comprobación del sistema de ficheros.
.linker Instala los links para GMenu2X de los programas preinstalados. Se comprueba durante el script de arranque /usr/sbin/frontend_start
.partition_resized Redimensiona la partición data de la SD interna para aprovechar todo el espacio disponible en la tarjeta ejecutando este script.
.reconfig Borra algunos ficheros residuales SSH, de otros programas y de estado (como el volumen y brillo) ejecutando este script.
.swapon Crea el fichero para la memoria SWAP ejecutando este script.

Controles

Situación Function Shortcut
General Ajuste de nitidez (hardware scaling) Power + Up/Down
General Emulación de crucerta con stick izquierdo Power + B
General Ajuste de brillo Power + Volumen+/Volumen-
General Fuerza el escalado de la pantalla Power + A
General Pantallazo (se guarda en /media/data/local/home/screenshots) Power + X
General Emulación de ratón con stick derecho (los botones son L2/R2) Power + R1
General Fuerza la salida al frontend (normalmente GMenu2X) Power + Select
General Reset Power + Start or Reset button
General Forzar apagado Power mantenido 4 segundos
GMenu2X Salvapantallas Power
SimpleMenu Todos Listado
FBA (CPS/NeoGeo) Todos Listado
FBA (CPS/NeoGeo) Salir L1+R1+Start > Exit o Power > Exit
ScummVM Todos Listado
ScummVM Salir Start
xMAME Todos Listado
xMAME Salir Select + L1 + R1
Daphne Todos Listado
Daphne Salir Select
OpenBOR Todos Listado
OpenBOR Salir Salir primero del juego (normalmente con Quit) y luego pulsar Y en el interfaz de OpenBOR (a pesar de que en la leyenda pone X)
MAME4All Todos Listado
MAME4All Salir Power
Gambatte (GB/GBC) Salir Power > QUIT
ReGBA (GBA) Salir Power > Exit
Game & Watch Salir Select
FCEUX (NES) Salir Power > Exit
PocketSNES (SNES) Salir Select + Start > Exit
Genesis Plus GX (GG/SMS) Salir Power > Quit
Picodrive (MD) Salir Select > Exit
PCSX4All (PS) Salir Power > Quit
Temper (PCE) Salir Power > Exit Temper
NGPCEmu (NGP) Salir Power > Quit
SwanEmu (WS) Salir Power > Quit
Stella (A2600) Salir Start > Exit Game (desplazando cursor con stick izquierdo y confirmando con A)
A5200 Salir Select+Start > Exit
ProSystem (A7800) Salir Select+Start > Exit
Handy (LYNX) Salir Power
JzIntv (Intellivision) Select > Quit to rom chooser o Power
ColecoD (ColecoVision) Salir Select+Start > Exit
Retro8 (PICO8) Salir Select
DOSBox Salir Hay que localizar la opción del juego en ejecución para salir a DOS

Puntos de montaje de las tarjetas

Directorio Elemento montado
/media/system Primera partición de la SD interna
/media/data Segunda partición de la SD interna
/media/sdcard Primera partición de la SD externa

Directorios/Ficheros interesantes

En este documento se indican rutas importantes de varios emuladores y ports populares.

Directorio Contenido
/media/data/local/home/ Configuraciones de emuladores, ports y aplicaciones en general. Es el llamado Home del sistema. Enlace simbólico desde /media/home
/media/data/apps/ Aplicaciones (.opk) instaladas en la tarjeta interna
/media/sdcard/apps/ Aplicaciones (.opk) instaladas en la tarjeta externa
/usr/share/gmenu2x/sections/ Lanzadores de las aplicaciones y settings preinstaladas en el sistema y que se copian a /media/data/local/home/.gmenu2x/sections
/var/log/messages Logs del sistema
/proc/ Ficheros asociados a procesos en ejecución como cpuinfo que muestra información sobre el procesador
/media/data/local/home/.gmenu2x/skins Themes de GMenu2X
/media/data/local/home/.gmenu2x/skins/<tema>/wallpapers/ Wallpapers
/usr/sbin/frontend_start Lanzador de frontend predeterminado
/media/data/local/sbin/frontend_start Lanzador de frontend personalizado
/media/home Enlace simbólico de /media/data/local/home
/usr/local Enlacce simbólico de /media/data/local
/usr/share/scriptrunner/scripts Scripts preinstalados en ScriptRunner
/sys/class/power_supply/battery/ Ficheros de control de batería; voltage_now da el voltaje actual de la batería
/sys/class/graphics/fb0/ Ficheros de control de la pantalla; bits_per_pixel da la profundidad de color
/usr/share/gmenu2x/sections/ Lanzadores de aplicaciones preinstaladas en rootfs.

Directorios de savestates

Sistema Emulador Directorio
Atari 2600 Stella /media/data/local/home/.stella/state
Atari 7800 ProSystem Mismo directorio de las ROMs
Capcom System I, II, III y Neo Geo FBA /media/data/local/home/.fba/saves
NES FCEUX /media/data/local/home/.fceux/fcs
Game Boy y Game Boy Color Gambatte /media/data/local/home/.gambatte/saves
Game Boy Advance ReGBA /media/data/local/home/.gpsp
Game Gear y MasterSystem SMS Plus /media/data/local/home/.smsplus/state
Game Gear y MasterSystem Genesis Plus /media/data/local/home/.genplus/saves
Atari Lynx Handy /media/data/local/home/.handy
Mega Drive PicoDrive /media/data/local/home/.picodrive/mds
Neo Geo Pocket NGPCEmu /media/data/local/home/.ngpcemu/sstates
PC Engine Temper /media/data/local/home/.temper/save_states
PlayStation PCSX4All /media/data/local/home/.pcsx4all/sstates y /media/data/local/home/.pcsx4all/memcards
SNES PocketSNES /media/data/local/home/.pocketsnes
WonderSwan SwanEmu /media/data/local/home/.swanemu/sstates
Arcade xMAME /media/data/local/share/xmame/xmame52/sta, /media/data/local/share/xmame/xmame69/sta y /media/data/local/share/xmame/xmame84/sta

BIOS

Sistema Emulador Directorio Fichero
Atari 5200 A5200 /media/data/local/home 5200.rom
Atari Lynx Handy /media/data/local/home/.handy lynxboot.img
Gameboy Gambatte /media/data/local/home/.gambatte/bios/ gb_bios.bin
Gameboy Color Gambatte /media/data/local/home/.gambatte/bios/ gbc_bios.bin
Gameboy Advance Gpsp /media/data/local/home/.gpsp/ gba_bios.bin
MegaCD Picodrive /media/data/local/home/.picodrive/ bios_CD_E.bin; bios_CD_J.bin; bios_CD_U.bin
NeoGeo Mismo directorio de las ROMs neogeo.zip/uni-bios.rom
PC-Engine CD Temper /media/data/local/home/.Temper/syscards/ syscard3.pce
PlayStation Pcsx4all /media/data/local/home/.pcsx4all/bios/ psxonpsp660.bin; scph1001.bin; scph5500.bin; scph5501.bin; scph5502.bin

Códigos teclas para mappers DOSBOX

Control Código Tecla de PC en mapper predeterminado
A 306 key_lctrl
B 308 key_lalt
X 32 key_space
Y 304 key_lshift
L1 9 key_tab
L2 280 key_pageup
R1 8 key_bspace
R2 281 key_pagedown
UP 273 key_up
DOWN 274 key_down
LEFT 276 key_left
RIGHT 275 key_right
START 13 key_enter
SELECT 27 key_esc
POWER 278 key_home

Solución de problemas

Corrupción de lanzador

En ocasiones no se muestra correctamente el icono de una aplicación, o no apunta a donde debería. Puede suceder cuando hay dos OPK's con el mismo nombre en la SD interna y externa, y se borra uno de ellos por ejemplo. Para resetear la información, entrar en la sección donde esté el problema dentro de el directorio /media/data/local/home/.gmenu2x/sections y borrar el nombre de la aplicación problemática. Lo que hay allí no es la aplicación en sí sino un fichero tipo .desktop con metainformación (icono, descripción, etc.).

Programas que se cierran

En ocasiones los emuladores, aplicaciones o frontends (EmulationStation, PyMenu, SimpleMenu, etc.) cuando no están bien configurados se cierran sin dar más explicaciones al abrirlos o durante su manipulación. Para tener algo que analizar, si los hemos lanzado desde GMenu2X, podemos activar un log que nos ofrecerá la salida de error en la invocación de estos programas. Para activarla hay que entrar en los ajustes de GMenu2X y poner a ON el parámetro Output logs (Archivos de registro de sucesos si tenemos el interfaz en español):

GMenu2X log 1 GMenu2X log 2

Una vez que en el log haya algo que mostrar aparecerá un lanzador nuevo de nombre Log Viewer (Lector de Registros de sucesos si tenemos el interfaz en español) donde podremos consultar la salida de error del proceso que se ha cerrado y con suerte obtener alguna pista sobre el motivo del cierre:

GMenu2X log 3

Particularidades juegos

  • Metal Gear Solid (PS): Desactivar HLE en el emulador y seleccionar BIOS scph1001.bin (instrucciones aquí). Realmente este ajuste, aunque imprescindible para MGS y otros, es recomendable en general.
  • Metal Gear Solid (PS): En un momento dado del juego (alerta Spoiler) hay que superar un boss cambiando el mando de puerto en la consola original. Como con la RG esto no se puede hacer, hay un truco que consiste en llamar mucho al coronel, entonces se puede quitarles las vendas a los bustos que hay detras, y el boss se desconcierta haciendo que cueste menos derrotarle.
  • Final Fantasy VIII, IX y algunos juegos europeos (PS): Necesitan parche anticopy o poner el archivo .sbi correspondiente a cada cd en el mismo directorio y con el mismo nombre. Ficheros SBI
  • Harry Potter y la Cámara secreta, Vagrant Story y Bugs Bunny & Taz - Time Busters (PS): Estos juegos se quedan atascado en los videos introductorios. La solución es cambiar la opción Core settings > Emulation core de rec a int. El emulador es más lento pero más preciso y se puede superar ese punto. En ese momento grabar un savestate, volver a poner rec en Core settings > Emulation core y finalmente cargar el savestate. En el Vagrant Story el Analog Mode que soporta este juego es DualShock. Recordar además que este juego es de los que necesita SBI.
  • Dragon Ball Z: The Legacy of Goku (GBA): Este juego al poco de empezar a jugar en algunos emuladores muestra el error Este juego no funcionará con el hardware encontrado. Intentar el truco que comentan en este comentario.
  • VVVVVV (port): Si hay problemas durante el arranque (pantalla en negro), borrar el directorio de settings /usr/local/home/.local/share/VVVVVV/. Si no existe la ruta previa al directorio VVVVVV, es decir /usr/local/home/.local/share/ el juego abrirá pero no guardará los estados. En ese caso crear manualmente la ruta desde terminal o DinguxCmdr.
  • Run and Gun (XMAME): Para saltar el Memory Check, enchufar un teclado al puerto USB1/OTG y pulsar F7. Otra opción es mapear L2 a F2 (Service mode en Input (this game)) y R2 a F3 (Reset game en Input (general)) y pulsarlos a la vez.
  • Parasite Eve 2 y Vandal Hearts 1/2 (PS): Estos juegos tienen un fix específico para ellos en las opciones del emulador:

    Parasite Eve 2 Fix

  • InuYasha Sengoku Battle (PS): Este juego tiene un fix específico para ellos en las opciones del emulador:

    InuYasha Fix

Particularidades emuladores

  • A5200 (Atari 5200): Hay que colocar la BIOS en /media/data/local/home/5200.rom. Las ROMs pueden estar en cualquier lugar porque el emulador permite seleccionarlas al abrirlo mediante un explorador de ficheros, pero deben estar descomprimidas y con extensión .a52.
  • ReGBA: La resolución de pantalla de Game Boy Advance es de 240x160, lo que hace que si se quiere aprovechar bien la pantalla de la RG350 haya que utilizar algún tipo de escalado. Los siguientes son los más recomendados (se ajustan en Display settings > Image scaling en ReGBA):
    • None: Encaja la resolución de GBA pixel a pixel en la pantalla de la RG. Tiene el inconveniente de que la pantalla queda un poco pequeña. Si se utiliza la versión modificada sin bezel que se puede bajar aquí no se verá el marco con aspecto de GBA SP que trae la aplicación original.
    • Aspect, bilinear: Scaling recomendado por muchos usuarios.
    • Hardware: Nos permitirá ajustar el enfoque manualmente, a continuación se describe el proceso. Empezamos pulsando Power+A hasta poner las bandas negras arriba y abajo. Luego pulsamos Power+Abajo varias veces hasta alcanzar el mínimo, momento en el que se pierde toda la difuminación del escalado. Ahora ejecutamos un juego que tenga varios elementos críticos en pantalla como texto y/o sprites detallados. Pulsando Power+Arriba iremos aumentando el grado de interpolación de los gráficos. Si lo llevamos hasta el extremo (pulsando Power+Arriba muchas veces) veremos cómo la imagen termina por coger mucho ruido. Se trata pues de localizar el equilibrio en un buen nivel de interpolación sin que llegue a aparecer ruido.
  • Pcsx4all (PS): Algunos juegos de PS superan la resolución de la pantalla de la RG350 (320x240). En esos juegos los textos pueden llegar a leerse mal. En esos casos configurar el parámetro Video scaling de GPU settings al valor hardware y luego durante el juego utilizar la combinación de teclas Power+A para conmutar entre los distintos modos de scaling. También podremos ajustar el grado de interpolación del scaling pulsando Power+Arriba y Power+Abajo de la misma forma que se ha descrito en el caso de ReGBA.

    PS Scaling

Modos de arranque seguro

Durante el arranque se puede modificar la forma de iniciar el sistema pulsando algunas teclas:

  • Y: Carga el último kernel que funcionó correctamente.
  • X: Carga el último sistema de archivos (rootfs) que funcionó correctamente.
  • X+Y: Carga el último sistema (kernel+rootfs) que funcionó correctamente.

Corrupción de archivos de texto

Linux y Windows utilizan distintos sistemas para codificar los retornos de carro de los ficheros de texto. Si creamos o editamos uno de estos ficheros y luego lo transferimos a la RG350, dependiendo del uso que vaya a tener ese fichero podría no funcionar. Unos ficheros especialmente sensibles son los scripts como el que determina el lanzador de aplicacione predeterminado, es decir /media/data/local/sbin/frontend_start. Para reconvertir los ficheros de texto del formato de Windows al de Linux existe una pequeña utilidad llamada dos2unix. Para utilizarla tenemos que conectar con la RG350 por SSH para tener acceso a una terminal o utilizar la aplicación de terminal ST-SDL. Desde uno de estos terminales ejecutaremos:

RG350:/media/data/local/home # dos2unix fichero_a_convertir.txt

Backup de home

El directorio /home/data/local/home pertenece a la tarjeta interna y es de los más importantes puesto que es donde la mayoría (por no decir todos) los programas (emuladores, ports, aplicaciones) guardan sus ajustes (como los savestates de los emuladores o las memory cards de pcsx4all). Cuando flasheamos la tarjeta interna (con las opciones 2 y 3 del apartado Opciones para actualizar el firmware RG350-ROGUE-CFW) el contenido de este directorio se pierde. Una idea sería hacer un respaldo del mismo en la tarjeta externa (que no se altera durante el flasheo) y luego restaurarlo.

Podemos hacer el backup lanzando un comando de terminal ya sea conectando por SSH o utilizando una aplicación de terminal (como ST-SDL). El comando para realizar el backup es:

tar -cf /media/sdcard/home_backup.tar -C /media/data/local home

En caso de querer excluir algún directorio concreto que ocupe mucho y que tengamos respaldado por otro lado (por ejemplo si tuviéramos las ROMs allí), utilizar el parámetro --exclude. Vamos a ver cómo se excluirían por ejemplo las imágenes de previsualización de FBA:

tar -cf /media/sdcard/home_backup.tar -C /media/data/local --exclude=home/.fba/previews home

Para restaurar:

tar -xf /media/sdcard/home_backup.tar -C /media/data/local

El comando no es sensible a la ruta, es decir puede lanzarse desde cualquier directorio y genera el fichero home_backup.tar en la raíz de la tarjeta externa (ruta /media/sdcard/ en el sistema de la consola).

Aquí puede leerse un monográfico sobre el tema.

Monográficos en blog

Primeros pasos con la consola RG350

Instalación y configuración de FBA

Instalación y configuración de xMAME

Instalación y configuración de MAME4All

Instalación y configuración de ScummVM

Instalación y configuración de Daphne

Instalación y configuración de OpenBOR

Instalación y configuración de DOSBox

Previews de ROMs en Gmenu2x

Instalación y configuración de launcher SimpleMenu

Instalación y configuración de launcher PyMenu

Instalación y configuración de launcher EmulationStation

Conexión a internet

Backup

Compilación de Buildroot con toolchain de RG350 en un contenedor Docker

Ejemplos de compilación de algunas aplicaciones para RG350 por medio del toolchain en Docker

Procedimiento para generar una imagen de tarjeta SD flasheable para RG350, Raspberry Pi y otras

Integración en frontends y mejora en la gestión del modo vertical en FBA

Sustitución de pantalla por la del modelo M