Skip to content

v0.7 System Examples

Chixpy edited this page Feb 3, 2024 · 1 revision

Warning

Esta ayuda es para la versión 0.7. Está obsoleta e incompleta.

Cada sistema es un mundo, y como tal para su emulación se requieren un tratamiento y estructura distinto para cada uno de ellos, lo cuál dificulta la tarea de hacer una generalización sencilla a través de un interfaz para gestionarlos todos como es la intención de Emuteca.

Por poner un ejemplo muy sencillo para que se vea claramente, no es lo mismo: una videoconsola de cartuchos que una recreativa. Aunque básicamente requieren lo mismo (emulador + juegos + a veces BIOS), la organización difiere totalmente. En una videoconsola (de cartuchos) cada juego normalmente es un solo fichero, mientras que en la recreativa cada juego se trata de un conjunto de archivos (cada uno con un tamaño, nombre.ext y CRC32 específico) dentro de una carpeta o zip con un nombre clave para el juego.

Por tanto, ahora paso a comentar cual creo que es la mejor forma de tratar cada tipo de sistema para su uso con Emuteca.

NOTA: Cuando digo: "La carpeta 'nombre' del sistema", me refiero a una de las carpetas que se crean cuando se usa el botón de autoconfigurar en el Gestor de Sistemas.

Videoconsolas de cartuchos

Bien, en este tipo de sistema tenemos la siguiente situación:

  • 1 juego = 1 fichero

Es decir, tan solo se necesita tener el emulador correspondiente y el fichero para poder jugar. No se crea ni modifica ningún fichero (por algo son lo que literalmente se llama ROM), excluyendo las partidas guardadas.

En este caso se puede usar Emuteca tal y como ha sido concebida:

  • Guardar todas las versiones de un mismo juego dentro de un 7z (GoodTools + GoodMerge)
  • Que descomprima solo ese juego en una carpeta temporal sistema
  • Una vez terminado lo borre
  • Para la exportación/importación de datos usar CRC32

Y todo debería ir como la seda.

Detalles a tener en cuenta:

  • Hay que asegurarse de configurar el emulador para que las partidas guardadas lo hagan en una carpeta diferente a dónde se encuentre el juego, porque la carpeta temporal se borrará. Normalmente se suele hacer una carpeta dentro del propio emulador, pero a veces varios emuladores son compatibles entre sí y posiblemente sea mejor usar la carpeta "Guardadas" dentro del sistema (Ojo, solo lo que son partidas guardadas dentro del juego, no los estados del emulador llamados "savestates"). En un futuro puede que añada la posibilidad de renombrar estos archivos (ya que muchos emuladores leen esta memoria en base al nombre del archivo de la ROM, muy similar a lo que hace Emuteca con las imágenes).
  • En algunos sistemas se tiene que los emuladores tienen una lista de juegos propia (N64) o que directamente no tiene un parámetro para ejecutar el juego desde la línea de comandos (WinAPE usándolo para los cartuchos de Amstrad GX4000). Este caso, lo mejor es configurar que el archivo temporal dónde se descomprimirán sea una carpeta conocida, para ese fin es la carpeta "Temporal" del sistema. En el caso de la N64 también habrá que configurar dicha carpeta como directorio base para que lo liste.
  • Si el sistema tiene diferentes extensiones, mejor dicho formatos de archivos equivalentes, lo mejor es atenerse a uno solo, pero esto es un consejo.

Recreativas

Las recreativas tienen el siguiente panorama:

  • Un juego = Un número variable de archivos, cada uno con un nombre.ext, tamaño y CRC32 específicos, todos ellos en una carpeta con nombre clave específico (aunque en verdad se dan otras macedonias)
  • Para ejecutarlo tan solo se requiere el nombre de la carpeta.
  • Por suerte la carpeta puede ser comprimida en un zip que conserve el nombre.

Bueno, pues este sistema es muy complejo debido a la cantidad de posibilidades, e incluso se puede hacer un experimento que luego comentaré.

Lo ideal es dejarlo como está, a no ser que se tengan juegos padre e hijo en el mismo zip ("merged / no split" que se llama), aunque una pasada con el ClrMAMEPro nunca viene mal XD.

Aquí la idea consiste en tratar los archivos zip como si se trataran un cartucho ya descomprimido y no complicarse más, atendiendo a sus características especiales.

  • Extensiones: zip (Especificarlo expresamente)
  • No usar CRC32 (dos zip distintos pueden tener el mismo contenido, por tanto desactivado la hora de exportar, además de que así se usa el nombre del fichero y como resulta que se trata de una clave... perfecto)
  • No buscar dentro de los comprimidos (lo que queremos es el zip externo, sino lo que haría sería buscar archivos .zip dentro de los archivos comprimidos para extraerlo)

Basicamente lo que estamos haciendo es hacer que Emuteca se comporte como si tuvieramos los juegos ya descomprimidos.

Para importar el nombre y la relación entre los juegos hay una herramienta específica para ello (usando el ejecutable de MAME) que crea un archivo para importar con esa información, lamentablemente no saco ni la compañía ni el año y como remedio cutre se puede usar un archivo de datos exportado anteriormente en los que se haya puesto a mano.

Con esto se consigue una estructura muy similar a lo que tienen los interfaces gráficos de MAME, salvo una diferencia lo que se considera un juego padre en Emuteca es considerado como cualquier otro (aunque las familias tengan el nombre del juego padre).

Otra cosilla, es que el nombre de los ficheros multimedia para las familias (por defecto) es el nombre clave del que se considera juego padre. Así se pueden aprovechar las capturas tal y como las usan los interfaces específicos de MAME. Así que mejor no cambiarlo con la herramienta para cambiar el nombre del fichero usado para las familias basándose en el nombre real del juego.

Para la llamada al emulador se usará %ROMNAMENOEXT% ya que se trata de la clave para que busque el juego y santas pascuas.

EXPERIMENTO: Una idea extraña que puede ser realizada sería comprimir los juegos de una misma familia en un 7z y hacer que Emuteca descomprima todos los ficheros de dentro del 7z antes de llamar al emulador (tienen que ser todos para asegurarse de que también lo hace el padre). Además, ahora que normalmente están separadas, las BIOS ya deberían encontrarse descomprimidas (y mejor en un directorio aparte). Como haciendo esto no se gana (que yo sepa) mucho espacio, y lo que hace es ralentizar más aún el lanzamiento del juego, además del tiempo que se debe emplear para preparalo; entonces la verdad es que no merece mucho la pena.

Ordenadores, sistemas de disco o casetes

Bueno, comienzan los problemas, pero no son muy serios. Para empezar, aclarar que no me refiero a CD-ROM (Eso lo vamos a dar de comer aparte).

Un juego deja de ser necesariamente un único archivo (o al menos la posibilidad de considerarse de esa forma):

  • Un juego: 1 o más discos/casetes (a partir de ahora solo diré "discos")
  • Un disco: 1 o 2 caras = 1 o 2 archivos
  • Guardar partidas: 1 o más discos, cabiendo la posibilidad de que se modifique el contenido de los discos del juego
  • Si el juego se compone de varios discos puede que solo uno sea diferente en una versión distinta (por ejemplo, si tiene un "trainer" o crack puede que solo cambie el primero)

La consistencia de este tipo de imágenes me deja serias dudas pero vamos a suponerla, lo mejor es usar GoodTools (o TOSEC + ClrMAMEPro) + GoodMerge. GoodMerge habiendo usado TOSEC + ClrMAMEPro no es tan efectivo juntando versiones (si cambian el título) pero ayuda bastante y en general debería ir bien todo.

Las partidas guardadas serían el único pero ya que si modifican algún disco del juego en sí además de que el CRC32 haya cambiado si es un archivo que ha sido descomprimido Emuteca lo borrará..., por tanto hay que guardarlo en otra carpeta ("Guardadas"). El cómo hacerlo mientras está ejecutándose el emulador dependerá de la situación. :P

Por lo demás no debería haber ningún problema, excepto que el número de juegos será incorrecto ya que cuenta cada juego como archivo.

CD-ROM/DVD

Bien, aquí se nos plantean dos problemas:

  • El tamaño de archivos
  • Los .cue y .mds no son nada consistentes en CRC32 (dependen del nombre del .bin o .mdf asociado)

Y aún así los .iso, .bin y .mdf tampoco los veo tan consistentes...

El tamaño. Bueno, pues como Emuteca está escrita en Delphi 7 lee mal el tamaño de cualquier archivo de más de 2GB (y no sé si con más de 4GB morirá...), pero esto no es una cosa que os interese inicialmente, sino que al actualizar la lista de archivos se puede tirar un par de eternidades en hallar en CRC32 (aunque a partir de 0.6 se puede decidir el tamaño a partir del cual no calcular el CRC32), y un rato en la descompresión del archivo. Por tanto, no usar CRC32 y pensarse si tener los juegos comprimidos merece la pena (y ya nos da igual si los cue o los mds son inconsistentes). Eso sí, cada juego en su propio comprimido si no quieres celebrar 3 Navidades antes de poder empezar a jugar...

Por tanto, lo ideal sería que el nombre del ficheros sea lo que tenga consistencia y aquí cada uno puede optar o por usar un nombre clave (por ejemplo para la PlayStation, llamarlos SLESXXXX) o usar un nombre descriptivo. OJO al modificar el nombre de un .bin o un .mdf, ya que entonces hay que editar el .cue o el .mds asociado (el .cue no creo que haya problema con el Bloc de Notas vale, pero el mds...)

Teóricamente las extensiones a buscar deberían ser .cue, .mds e .iso, y por tanto los .bin o .mdf no haría falta cabiarle el nombre (por si tienes miedo a estropearlo) pero lamentablemente algunos emuladores solo reconocen los .bin o .mdf a pelo...

Ejecutables Windows

Sip, no es un emulador pero puedes usar Emuteca como Front-End para los juegos aunque claro siguiendo las reglas generales de Emuteca.

  • Todos los juegos dentro de una misma carpeta y solo debería tener juegos (ni se te ocurra usar "Archivos de programa" XD XD XD)
  • Usar un "emulador" especial, debido a la forma en que se ejecutan los procesos desde Emuteca varía un poco entre versiones:
    • En versiones 0.6 y anteriores era posible usar un "emulador" sin ruta a ningún ejecutable y como párámetros "%ROM%", de esta forma la ROM se ejecutaba con el programa por defecto asignado para dicha extensión o directamente si se trataba de un ejecutable, .BAT o enlace directo.
    • En versiones 0.7 en caso de no usarse directamente los .exe/.com de los juegos, tras cambiar a Lazurus al usar su forma mas portable de los juegos para ejecutar procesos en Windows debe especificarse como ejecutable cmd.exe (normalmente en c:\Windows\System32\cmd.exe) para obtener el mismo resultado. Además es interesante usar los parametros /C "%ROM%"
  • Respecto a los demás archivo (imágenes, sonidos, texto, etc.), se puede usar una carpet como si se tratara un emulador común.

Hay dos perspectivas, sobre como manejarlo:

  • Por una parte, buscar los "exe", se puede poner CRC32 pudiéndose usar una base de datos para autorreconocerlos y rellenar sus datos... El problema es que habrá muchos ejecutables que son de desinstalación, actualización, y otros que son auxiliares.
  • Buscar "bat", "pif" o "lnk", aunque tendrás que crearlos a mano. Lo de CRC32 no funciona pero a cambio se pueden definir parámetros personalizados para cada juego y además se crearía una lista "más limpia".

Hala, interfaz para ejecutar juegos de Windows lista... Y que te diviertas editando la información de lo que tengas XD XD

NOTA: Para Nintendo Game & Watch esto es útil.

Ejecutables MSDOS (DosBox/Aeon/ScummVM)

Se puede hacer algo pero hay que prepararlo bien y mirar cada caso...

DOSBox

Una idea:

  • Configurar DosBox para que use una carpeta como base.
  • Comprimir el juego ya instalado, más bien la carpeta dónde se instala.
  • Hacer que Emuteca descomprima el juego en la carpeta configurada para DosBox y lo ejecute.

Problemas:

  • Hay que ejecutar el juego desde DosBox a mano
  • La decisión de borrar o no borrar los juegos ya descomprimidos al salir (para no perder las partidas guardadas), pero si no se borran puede que Emuteca las pise al descomprimirlos cuando se vuelvan a ejecutar...

Pinball

Visual Pinball

Esto... es un caos, versiones, versiones de versiones, librerías comunes, plugins por aquí, música por allá, PinMAME, etc...

Lo único es ejecutar las mesas con -play -"%ROM%" porque el poder comprimirlas teniendo los archivos necesarios...

Future Pinball

Estos en principio parece más organizado (al menos las que he visto), tratándose simplemente de un único fichero para cada mesa.