lunes, 21 de abril de 2008

Ejemplo práctico con Emuteca

... si lo conseguís leer todo el tocho posiblemente os paséis al mundo de la emulación.

AVISO: ESTE EJEMPLO ESTÁ HECHO CON EMUTECA 0.1.2.6, PUEDE QUE ALGUNA COSA CAMBIE EN VERSIONES POSTERIORES PERO LOS CONCEPTOS DE COMO SE USA SON LOS MISMOS.

Antes de nada avisar

La emulación de otras máquinas, en principio, es legal no hay ningún problema por tener un emulador de PlayStation, de la Nintendo NES o de un Amstrad CPC.

El problema está en las ROM (ya sean juegos, programas o BIOS) ya que normalmente es ilegal tener una ROM de un juego si no se tiene el juego original. Esto, además depende de cada país: en EEUU es ilegal, aunque en muchos sitios dicen que sí en WP-en aclaran que no si se trata de una ROM en chip; en España existe el derecho de copia de seguridad para programas informáticos (la leí hace tiempo, pero creo que no especifican diferencias en el soporte) y en Chile según leí en su constitución se permite la copia de programas sin más.

Pero por suerte hay algunos juegos de sistemas como pueden ser el Amstrad CPC o el ZX Spectrum (si no todos, gran parte de ellos) en los que que los propios poseedores de los derechos de los juegos permiten su uso de esta forma, sea legal o no, y afirman que no tomarán medidas; incluso algunos han colaborado por hacerlos accesibles.

He mirando más a fondo el tema, en principio quería encontrar una consola, que tuviera juegos legales para descargar, y casi me me decanto por la Atari Lynx... pero mejor ir por lo seguro y claramente legal... así que aunque sean una excepción en cuanto a la forma que hay que tratar los juegos vamos por las recreativas...

1.- El brikindans - Preparativos

AVISO: A partir de Emuteca 0.3.0.11, en el gestor de sistemas hay un botón que permite crear toda la estructura de directorios.

Lo primero que necesitamos es Emuteca, un emulador (en este caso el MAME) y un juego del sistema que emula (una recreativa)... y para tener ordenadito todo lo primero organicémonos haciendo unos directorios, yo recomendaría como mínimo el siguiente árbol de carpetas/directorios:
  • Emulación - Directorio para tener todos emuladores ordenaditos en una carpeta.
    • !Emuladores - Dónde meteremos los emuladores, cada con su propia su carpeta y subcarpetas.
    • !Utilidades - Donde irá Emuteca y otras posibles utilidades que se puedan tener.
    • Recreativa - Directorio principal para este sistema: Recreativa
      • Imágen - Carpeta principal para las imágenes
        • Título - Imágenes de la pantalla de título
        • Juego - Imágenes del juego en funcionamiento
      • Juego - Carpeta donde meter los juegos (ROMS)
Estos serían los básicos, en la imagen tenéis lo que sería un árbol de directorios completito (mi directorio base se llama Emuteca en vez de emulación, pero espero que no seis tan cafres como para confundirlo con el directorio Emuteca que iría dentro de !Utilidades), para rellenar todos los directorios del gestor de sistemas (menos BIOS que tiene otro propósito), y dónde irían otros sistemas como el Amstrad CPC o el Spectrum (con los mismo directorios internos por supuesto XD). Como truco, !Directorio base es una copia de toda las estructura de directorios de los sistemas vacío para copiarla cuando se quiere añadir otro sistema. Antes incluso tenía como iconos de las carpetas imágenes del sistema en cuestión... XD

Ahora bajemos el emulador. El elegido: MAME versión oficial y sin UI que para algo queremos probar como UI el programa, se baja de http://mamedev.org/release.html. Así que coge el primer archivo de la segunda tabla, el .exe es un comprimido autoextraible, no es una instalación tipo Windows. Así que descomprime el contenido en Emulación\!Emuladores\MAME.

El juego: Puede ser cualquiera de los que se listan aquí. Pero para referirnos en los mismos términos cojamos el que es más conocido Spectar, aunque este otro es más bonito... Le damos a la casilla de verificación de que entendemos que son para uso no comercial y apretamos en el enlace para bajarlo. Te descargará un zip, pues ese zip va en Emulación\Recreativa\Juegos sin descomprimir.

Y finalmente si todavía no tienes Emuteca, pues baja la última versión de aquí. El directorio donde se encuentre el programa la verdad es que da igual, pero mejor meterlo en Emulación\!Utilidades\Emuteca y hacer un acceso directo donde te venga en gana.

Configurando el emulador

Emuteca solo es un Front-End, no configura nada ni cambia la configuración que tenga emulador. Tan solo busca en un directorio archivos de la extensión que se le especifica, con ayuda de un fichero con información intenta reconocerlos para poner los detalles, busca en otros directorios imágenes que se correspondan para mostrarlas y cuando se pulsa dos veces sobre un juego descomprime (si es necesario) y ejecuta el emulador pasándole como parámetro dicho juego. Siendo más avanzados o no, todos los Front-End se basan solo en eso, pasar parámetros a otro programa (o como mucho editar un archivo de configuración).

Por tanto, hay que configurar el emulador para que funcione independientemente de si se usa Emuteca o no. Un tutorial de MAME para configurarlo bien del todo ocuparía tanto como la instalación del MediaWiki para comprender todas las opciones y elegir la correctas; todas ellas vienen descritas detalladamente el los archivos de texto de la carpeta docs del directorio de MAME pero como os conozco (y sobre todo siendo la versión fea de MAME) la solución rápida es:
  1. Ir a la carpeta donde está el MAME, y crear un nuevo archivo que se llame mame.ini (No os pienso decir cómo, pero si tenéis problemas seguro que lo que estáis haciendo es crear uno llamado mame.ini.txt o similar)
  2. Editar el archivo... con el bloc de notas y escribir (si la estructura de directorios es la misma a la expuesta a la de antes, sino entonces será mejor poner los directorios absolutos en vez de los relativos):
    rompath ..\..\Recreativa\Juego snapshot_directory ..\..\Recreativa\Imagen
  3. Guardar.
Ahora pulsa sobre mame.exe, si te sale un menu listando el juego puedes probarlo y ya de paso puedes configurar las teclas o incluso sacar ya de paso un par de capturas de pantalla (una del título y otra del juego en acción).

Pista: Cuando dice pulse OK para continuar, se refiere a eso, pulsar la O y luego la K; también se puede pulsar las teclas de flecha izquierda y luego derecha (a eso se refiere como joystick en caso de no tener uno...)

También como pista os doy un par de teclas para manejarse con el MAME:
  • ESC - Salir
  • Flechas - Movimiento de la palanca
  • Las de disparo no las sé, porque soy diestro y como las cambio ahora no me acuerdo cuáles son por defecto y no lo quiero buscar. (Nunca entenderé porque la gente se vuelve zurda cuando juega con un teclado)
  • F12 - Sacar foto.
  • P - Pausa
  • Tabulador - Menú (Configurar todas las teclas, configurar solo las del juego, configurar la máquina, historial de partidas, etc...)

Configuración de Emuteca

La configuración de Emuteca consiste básicamente elegir directorios y un par de opciones. Para el listado de roms, le vale con el directorio de los juegos, sus extensiones y las posibles opciones dependiendo del tipo de ROMs a manejar. Para ejecutar juegos, con decir donde está el ejecutable de emulador, los parámetros a pasar y asociar al sistema con el emulador también es suficiente. Todo lo demás son adornos.

La única parte difícil son los parámetros y tener claro como el programa debe manejar las ROM. Para ejecutar un juego directamente en MAME desde las consola, además de tener configurado bien el directorio de ROMs, hay que pasarle como parámetro el nombre clave del juego, para entendernos sencillamente se trata del nombre del zip pero sin la extensión de la siguiente forma:
mame.exe nombre_juego
Así de simple es el parámetro. Lo de como se deben manejar las ROM, bien veamos lo normal es que cada juego sean solo un archivo, pero en las recreativas esto no es así y suelen ser varios dentro un directorio/archivo zip. Además el MAME busca unos archivos muy precisos y con unas características para cada juego.

Sin embargo a desde el punto de vista de Emuteca esto no importa, tan solo le importa saber los zip que hay, sin interesarle lo que haya dentro de ellos, y como enlos zip el CRC32 es inestable (dos zip con el mismo contenido pueden tener CRC32 distintos) así que mejor indicar que en la base de datos a la hora de exportar e importar información se haga por el nombre del archivo. Sabiendo esto pasemos a configurar Emuteca.
  1. Ejecuta el programa.
  2. Si es la primera vez, aunque diga que abras el gestor de sistemas; vamos a abrir el de emuladores en el menú Emulador (así no hay que abrir el gestor de sistemas dos veces).
  3. En el nuevo formulario, seleccionamos MAME (si no está listado lo podemos crear pulsando el botón oculto justo arriba a la izquierda del todo) y lo marcamos, pasamos a la segunda pestaña (la primera por ahora no tiene uso práctico), en la parte superior elige el ejecutable del MAME. Y en Parámetros escribe "%ROMNAMENOEXT%" (sin comillas) puesto que lo que necesita como parámetro, como hemos dicho, es el nombre del zip sin extensión.
  4. Guardamos y pasamos al Gestor de Sistemas (Menú Sistema).
  5. Aquí marcamos y seleccionamos "Recreativa". En la primera página: no hace falta poner "zip" en Tipos de Archivos puesto que los zip los reconoce automáticamente (aunque en un futuro puede que lo cambie); marcamos No usar CRC32 y No buscar dentro de 7z/zip.
  6. Pasamos a la página Directorios; En Directorio juegos ponemos el directorio donde esté el directorio de juegos (pulsa sobre el botón de al lado y búscalo para no ponerlo a mano) y si se quiere los demás (por ejemplo el de las imágenes del juego).
  7. Pasamos a la página Emuladores y en la caja de arriba seleccionamos "Mame" (que es el emulador que configuramos en el gestor de emuladores)
  8. Guardamos. Y listo.
Pero... posiblemente no verás nada nuevo; si no está seleccionado en la caja de arriba "Recreativa" selecciónalo... y pulsa F5 (Actualizar lista). Si, al fin aparece algo es que tienes bien configurado al menos el directorio de juegos de dicho sistema, si pulsas sobre la línea aparecerá otra línea con casi lo mismo y si pulsas dos veces sobre esa nueva línea, y está todo bien, debería ejecutarse el juego en el MAME y todo.

Pues ya está esa es la función básica de Emuteca

¿Tanto para eso? ¿Una simple lista?

Bueno ahora que está todo configurado:
  1. Pulsando F3 podrás cambiar el año, compañía, versión, nombre y familia de los juegos (y si estás modificando una familia puedes cambiar la de todos sus hijos a la vez)
  2. Para añadir nuevos juegos tan solo hay que copiarlos en la carpeta y pulsar F5 (o actualizar) y aparecerán automáticamente. (Eso sí, acuérdate de exportar los datos antes e importar los datos después para no perder datos como la compañía o el año, si usas una versión más antigua a la 0.2.0.8)
  3. Las imágenes y textos van en sus respectivos directorios, y si tienen el mismo nombre que el fichero del juego o el fichero de la familia (por supuesto, con extensión de imagen que reconozca: png, jpg, bmp, etc.) se muestran automáticamente. Pulsando sobre su imagen en pequeño se muestran en el panel y si se pulsa dos veces sobre la imagen "grande" del panel entonces aparece en una ventana al doble de su tamaño (si es demasiado grande se puede arrastrar para desplazarla), para cerrar otro doble click o cerrar normalmente.
  4. Creo, si no recuerdo mal, unas pocas bases de datos de algunos sistemas de muestra para importarlos.

Preguntas que no pienso reponder

Pero... ¿para eso no sería mejor usar entonces usar el MAMEUI (MAMEPLUS, etc)?

Pues sí, si solo lo vas a usar para el MAME... por supuesto que es mejor usar esos emuladores, tan solo esto que descrito es un ejemplo de para que sirve. Si usas tienes muchos sistemas diferentes entonces se necesitará un Front-End.

Entonces ¿Por qué no usar MESSUI? sirve para muchos sistemas

Es una opción, pero es mucho más complicado de manejar, no funcionan todos los sistemas que emula (o lo hace mal), es más lento que emuladores específicos por separado, y si te parece complicado Emuteca mejor que busques en un diccionario que significa "mess" en inglés.... De hecho se podría usar Emuteca como Front-End para ejecutar el propio emulador MESS/MESSUI.

¿y otro Front-End genérico?

Normalmente por ahora casi ninguno reconoce/extrae los juegos de un 7z antes de llamar a un emulador... :P, si no lo necesitas porque no tienes los juegos agrupados en un 7z, no lo uses, seguro que los otros tendrán más funciones y estarán terminados. Por ahora el único que conozco que reconoce y extrae los juegos de los 7z es Quickplay.

Entonces usaré QuickPlay

Bien que haces, yo también lo uso.

¿Le vas a poner los iconitos que faltan, añadir tal o cual función?

Sí, si tengo tiempo y ganas. La principal función del programa está hecha, todo lo demás son adornos, hay muchas cosas que se que se podrían añadir/mejorar (algunas se pueden imaginar debido a los botones que no hacen nada XD ).

¿Vas a liberar el código fuente?

Ya veré, posiblemente sí. Aunque me da vergüenza que al alguien se pueda reir de mí y de lo mal que programo XD XD




Editado: Dando formato, añadiendo enlaces y otras cosillas

Editado 2: Quitando algunas cosillas (atajos sobre todo) que pueden hacer confundir a la gente que usa una versión posterior a la 0.1.2.6.

Editado 3: Aviso que hay un botón que permite crear la estructura de directorios de los sistema de forma automática.

1 comentario:

  1. yo lo leería, pero no soy de los que juegan, tengo suficiente tratando de ponerle cosas nuevas a mi ipod touch xD

    ResponderEliminar