Saltar a contenido

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 que tiene la tarjeta que tenía 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 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:

1
2
3
4
5
6
7
8
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:

1
2
3
4
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 se ve cómo se usa.

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.

Opciones para actualizar el firmware RG350-ROGUE-CFW

Entre los assents de cada release encontramos tres opciones:

  1. Update: Por ejemplo en la release 1.7.9.6 el fichero sería: rg350-update-1.7.9.6-2020-02-03.opk. 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.
  2. Flasher: Por ejemplo en la release 1.7.9.6 el fichero sería: rg350-flasher-1.7.9.6-2020-02-03.opk. 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.
  3. sd_image.bin: Por ejemplo en la release 1.7.9.6 el fichero sería: sd_image.bin. 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 que tenemos que abrir la consola para extraer la microSD interna y utilizar algunas utilidades poco habituales. En este video se ilustra todo el procedimiento.

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. Abrir la consola. El tornillo inferior izquierdo tiene encima un sello que no se puede despegar entera; 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 por lo que lo más probable sea que sea vieja y lenta.
  3. Bajar la imágen que queremos flashear. Existen dos ramas (para el caso de ROGUE consultar el apartado anterior):
    • BASE: https://rs97.bitgala.xyz/RG-350/Latest%20Firmware/
    • ROGUE: https://github.com/Ninoh-FOX/RG350-ROGUE-CFW
  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):

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

Gestión de OPKs

  • Descompresión: unsquashfs fichero.opk
  • Compresión: mksquashfs directorio fichero.opk

Cheatsheets

Versiones del firmware

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

Controles

Aplicación Function Shortcut
General Sharpness adjustment Power + Up/Down
General Force joystick mode Power + B
General Brighness adjustment Power + Volumen+/Volumen-
General Change hardware scaling Power + A
General Take screenshot Power + X
General Force return to gmenu2x/reload gmenu2x Power + Select
General Reset Power + Start or Reset button
MAME X Guardar START + Izquierda luego seleccionar casilla de guardado (por letras, hay 29) y pulsar A
MAME X Recuperar START + Derecha luego seleccionar casilla donde se guardó y pulsar A
MAME X Salir SELECT + START + L1 + R1
FBA Abrir menú START + L1 + R1 (exit para volver al menu principal de seleccion de juegos, desde allí dos veces SELECT para volver al menu principal de la consola)

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

Directorio Contenido
/media/data/local/home/ Configuraciones. Enlace simbólico desde /media/home
/media/data/local/home/.pcsx4all/ Configuraciones del emulador PCSX4All (como las memory cards, los save states o BIOS). Consultar aquí los directorios de datos de otras aplicaciones
/media/data/apps/ Aplicaciones (.opk) instaladas en la tarjeta interna
/media/data/ROMS/ ROMS de emuladores instaladas en la tarjeta interna (en v1.7 no viene este directorio)
/usr/share/gmenu2x/sections/ Aplicaciones y lanzadores de comandos en las distintas secciones del menú
/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/ Themes
/media/data/local/home/.gmenu2x/skins/Default/wallpapers/ Wallpapers
/media/data/local/sbin/frontend_start Lanzador frontend
/media/home Enlace simbólico de /media/data/local/home
/usr/local Enlacce simbólico de /media/data/local

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

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

Particularidades juegos

  • Metal Gear Solid (PS): Desactivar HLE en el emulador y seleccionar BIOS scph1001.bin (instrucciones aquí). BIOS de sistemas. Realmente este ajuste, aunque imprescindible para MGS y otros, es recomendable en general.
  • 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
  • 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.

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

    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:

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

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

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

Para restaurar:

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

Monográficos en blog

Previews de ROMs en Gmenu2x

Instalación y configuración de launcher SimpleMenu

Instalación y configuración de FBA

Conexión a internet

Instalación y configuración de launcher EmulationStation