Cosas que aprendí de... Yava
diciembre 19, 2015

Yava es un lanzador de aplicaciones escrito en C#, pensado para ser usado principalmente con emuladores como Dolphin, Mame, Snes9x, etc... Es un pequeño menú desde el que ejecutar los juegos de una manera cómoda y rápida.

Tiene esta pinta:

Yava

Aunque ya existen muchos programas parecidos (como LaunchBox o mGalaxy) no pude encontrar ninguno que cumpliese los siguientes requisitos:

Arquitectura

Yava es prácticamente idéntico a GaGa en diseño.

Yava

Usa las mismas librerías: mINI y LowKey. Los componentes son también los mismos, excepto que no existe el concepto de Player (no hay reproductor) y StreamsFile es ahora FoldersFile, que es el fichero donde reside la configuración de todos los juegos/emuladores.

Las únicas partes complicadas del código de Yava son probablemente el código que se encarga de recordar qué rom está seleccionada para cada carpeta (líneas 276 en adelante en Yava.cs) y lo relativo a ejecutar el emulador final pasándole la ruta correcta de la carpeta donde está.

Paths

¿No es tan complicado, no? Solo es ejecutar el emulador + la rom. El problema es que no hay una ruta correcta, sino múltiples rutas que pueden ser absolutas o relativas.

Por ejemplo, si el archivo Folders.ini contiene...

[Wii]
path = Romset\Wii
executable = Emulators\Dolphin 4.0.3\Play\Dolphin.exe
parameters = --batch --exec "%FILEPATH%"
extensions = iso, wbfs

Entonces:

Dos curiosidades

¿Cuál es el rendimiento que cabe esperar de un programa como Yava? Según mis pruebas tarda menos de 1 segundo en cargar las más de 45.000 roms de Mame directamente del sistema de archivos, sin base de datos ni nada. Buscar es instantáneo.

¿Qué ocurre si configuramos el archivo Folders.ini así?

[Snes]
path = Romset\Snes
executable = %FILEPATH%
extensions = smc

Yava intentará abrir las roms con extensión .smc con la aplicación asociada a ellas por defecto (sea el emulador que sea). Es posible hacer esto para cualquier extensión.