Sitio web del proyecto jiclMAME

Antes de que Yahoo Geocities cerrara logre rescatar la vieja pagina web de jiclMAME que desarrolle en años pasados. es una pagina muy sencilla, si no me equivoco contiene una animación en flash 4 que hice en ese tiempo solo para darle algo de animación al nombre del emulador.

Hacking MAME for Linux – SF Mini Mix

Después de bastante tiempo dejar abandonado el proyecto MAME, me anime a meterle algo de código al emulador, no me tarde mucho pero no me fue muy sencillo ya que desde hace 7 o mejor dicho casi 8 años no me metía en el código fuente, cabe señalar que NO soy desarrollador oficial del proyecto ya que el mame team no acepto, por allá del año 2002, mi parche que permitía en ese entonces emular 3 nuevos juegos el cual uno de ellos, Metal Slug 4, estaba de moda en los salones de videojuegos, más sin embargo, posteriormente compile una nueva versión del emulador con las mejoras que había propuesto y lo nombre JICLMAME, el cual funciona solo para Microsoft Windows pero como los cambios que añadí son parte del core, no hay ningún problema en portar hacia otro sistema operativo como Linux, Mac OS..etc.

En esta ocasión añadí un juego que ya funciona desde hace tiempo en las mas nuevas versiones del emulador, me refiero al juego Street Fighter Gem Mini Mix, es un juego muy divertido el cual me gusta mucho y que realmente no lo llegue a ver en todos los salones de video juego salvo en algunos.

Estas notas que a continuación describo NO son la guía oficial de como añadir drivers o juegos que funcionen exitosamente en el emulador pero quizá te puedan ayudar para intentar hacer algo, pero necesitas el pcb(la tarjeta madre)  del juego para conocer acerca del “hardware” me refiero al cpu de vídeo, sonido, controles y dipswitches que usa el juego y si no la tienes pues investigar en los manuales de la pcb, por otro lado si ya sabes que el juego usa por ejemplo un cpu de un sistema como CPS2 (Capcom Play System 2) , inclusive el Z80, quizá puedas probar con lo que ya esta implementando en el emulador lo cual no es muy sencillo ya que tienes que descifrar muchas cosas, pero quizá pueda que funcione.

En primera instancia hay que descargar y descomprimir el código fuente de xmame, lamentablemente ya no es posible obtenerlo del sitio oficial http://x.mame.net ya que no existe más, voy a abrir más delante un fork y un sitio web para darle seguimiento.

Hay que tener en cuenta que necesitamos conocimientos entre básico avanzados en el lenguaje C, manejo de la memoria, hardware,  punteros entre otras loqueras.

¿Porque no usar una nueva versión de un emulador de MAME hermano para Linux?

porque las nuevas versiones van creciendo de tamaño y van necesitando mas recursos de cpu y memoria y yo lo que quiero es seguir usando el emulador en mi computadora de siempre, es una cuestión de decisión personal.

¿Qué es lo que sabemos de nuestro juego que posiblemente vamos a emular?

El hardware es: cpu 68000 @ 16 MHz y el famoso cpu Z80 @ 8MHz , el audio: Q-Sound @4MHz (CPS2)

La orientación del juego es horizontal a una resolución de 384×224 con una frecuencia de 59.629403Hz

También necesitamos el rom con los dumps que le pertenecen, para nuestro caso son:

name size crc set flags sha1
pcfu.03 524288 ac2e8566 sgemf 5975aae46bded231c0f478f40c7257434ade36b0
pcf.04 524288 f4314c96 sgemf c40ed74039bf0096eb3648b7243a8e697638e0a6
pcf.05 524288 215655f6 sgemf 242c0f4401520f2a3b0deafc3a807b18b987e496
pcf.06 524288 ea6f13ea sgemf 1bc924a8a9da1d2ad7667685cdb92fe317a39aba
pcf.07 524288 5ac6d5ea sgemf 9ce8e4668b565658597a868830545fb75a5eeaa6
pcf.13m 4194304 22d72ab9 sgemf 653efd95c34b4b9d2ab0d219f41a99ca84e12214
pcf.15m 4194304 16a4813c sgemf bf5fce6008214f353414d1b64bea4ed0c7673670
pcf.17m 4194304 1097e035 sgemf 4bd51e4e9447af27d2cac1f6d2201e37c949912b
pcf.19m 4194304 d362d874 sgemf 30c42af18440496cc05e4418e4efa41172ae4ced
pcf.14m 1048576 0383897c sgemf aba14afa1d0c971afcee4317f480e88117d77b5e
pcf.16m 1048576 76f91084 sgemf 3d1e32467f2aa5dd6fb96bd5c866ecc9691660fc
pcf.18m 1048576 756c3754 sgemf be2f709b90222a567f198f851cf07ffb0ad433d7
pcf.20m 1048576 9ec9277d sgemf b7ceeaca30dfcdf498b61a6961f0aa1a068b8ec4
pcf.01 131072 254e5f33 sgemf c413ec0630b9bdd15e64f42893eba8958a09b573
pcf.02 131072 6902f4f9 sgemf 9bfe4ddade3c666076d26a2b545120f6d059fd7c
pcf.11m 4194304 a5dea005 sgemf 3ae79baf6ff5bd527f82b26f164c7e3c65423ae2
pcf.12m 4194304 4ce235fe sgemf 795b94557e954cc0e45fd3778b609064d57a34a2

y adicionalmente necesitamos un extra dump para que el juego pueda ser emulado exitosamente, este dump lo pueden descargar de la siguiente liga http://www.arcadeathome.com/dl2.phtml?misc/pcfux.zip

Pueden googlear para encontrar el rom sgemf que es nuestra versión de rom que necesitaremos el cual tiene un tamaño de 15 M. posteriormente lo descomprimen a un directorio y añaden a ese directorio el archivo dump extra que acabamos de descargar de arcadeathome, es importante hacer notar que tienen que renombrar el directorio sgemf a sfmhack y si lo desean pueden comprimir (zippear, zip) este directorio.

Como el juego que vamos añadir es parte del ya no tan nuevo Sistema de Capcom versión 2(CPS2), entonces tenemos que definir una macro en el archivo raizEmuladorDir/src/drivers/cps2.c y la cual ya esta declarada en el archivo de cabecera raizEmuladorDir/src/romload.h , el código que hay que añadir tiene que ser algo como esto, depende del rom que MAME quieras que emule, el nombre del rom es sfmhack ya que es una versión de street figther gem mini mix hackeada por un servidor.

ROM_START( sfmhack )  /* street fighter mini mix hacked by jacob @ frenesssi.wordpress.com*/
ROM_REGION( CODE_SIZE, REGION_CPU1, 0 )      /* 68000 code */
ROM_LOAD16_WORD_SWAP( “pcfu.03”, 0x000000, 0x80000, CRC(ac2e8566) SHA1(5975aae46bded231c0f478f40c7257434ade36b0) )
ROM_LOAD16_WORD_SWAP( “pcf.04”,  0x080000, 0x80000, CRC(f4314c96) SHA1(c40ed74039bf0096eb3648b7243a8e697638e0a6) )
ROM_LOAD16_WORD_SWAP( “pcf.05”,  0x100000, 0x80000, CRC(215655f6) SHA1(242c0f4401520f2a3b0deafc3a807b18b987e496) )
ROM_LOAD16_WORD_SWAP( “pcf.06”,  0x180000, 0x80000, CRC(ea6f13ea) SHA1(1bc924a8a9da1d2ad7667685cdb92fe317a39aba) )
ROM_LOAD16_WORD_SWAP( “pcf.07”,  0x200000, 0x80000, CRC(5ac6d5ea) SHA1(9ce8e4668b565658597a868830545fb75a5eeaa6) )

ROM_REGION16_BE( CODE_SIZE, REGION_USER1, 0 )
ROM_LOAD16_WORD_SWAP( “pcfux.03”, 0x000000, 0x80000, CRC(652b7647) SHA1(03259f536e8c988b288de5e13df8b2ee22d8a168) )

ROM_REGION( 0x1400000, REGION_GFX1, 0 )
ROMX_LOAD( “pcf.13m”,   0x0000000, 0x400000, CRC(22d72ab9) SHA1(653efd95c34b4b9d2ab0d219f41a99ca84e12214) , ROM_GROUPWORD | ROM_SKIP(6) )
ROMX_LOAD( “pcf.15m”,   0x0000002, 0x400000, CRC(16a4813c) SHA1(bf5fce6008214f353414d1b64bea4ed0c7673670) , ROM_GROUPWORD | ROM_SKIP(6) )
ROMX_LOAD( “pcf.17m”,   0x0000004, 0x400000, CRC(1097e035) SHA1(4bd51e4e9447af27d2cac1f6d2201e37c949912b) , ROM_GROUPWORD | ROM_SKIP(6) )
ROMX_LOAD( “pcf.19m”,   0x0000006, 0x400000, CRC(d362d874) SHA1(30c42af18440496cc05e4418e4efa41172ae4ced) , ROM_GROUPWORD | ROM_SKIP(6) )
ROMX_LOAD( “pcf.14m”,   0x1000000, 0x100000, CRC(0383897c) SHA1(aba14afa1d0c971afcee4317f480e88117d77b5e) , ROM_GROUPWORD | ROM_SKIP(6) )
ROMX_LOAD( “pcf.16m”,   0x1000002, 0x100000, CRC(76f91084) SHA1(3d1e32467f2aa5dd6fb96bd5c866ecc9691660fc) , ROM_GROUPWORD | ROM_SKIP(6) )
ROMX_LOAD( “pcf.18m”,   0x1000004, 0x100000, CRC(756c3754) SHA1(be2f709b90222a567f198f851cf07ffb0ad433d7) , ROM_GROUPWORD | ROM_SKIP(6) )
ROMX_LOAD( “pcf.20m”,   0x1000006, 0x100000, CRC(9ec9277d) SHA1(b7ceeaca30dfcdf498b61a6961f0aa1a068b8ec4) , ROM_GROUPWORD | ROM_SKIP(6) )

ROM_REGION( QSOUND_SIZE, REGION_CPU2, 0 ) /* 64k for the audio CPU (+banks) */
ROM_LOAD( “pcf.01”,   0x00000, 0x08000, CRC(254e5f33) SHA1(c413ec0630b9bdd15e64f42893eba8958a09b573) )
ROM_CONTINUE(         0x10000, 0x18000 )
ROM_LOAD( “pcf.02”,   0x28000, 0x20000, CRC(6902f4f9) SHA1(9bfe4ddade3c666076d26a2b545120f6d059fd7c) )

ROM_REGION( 0x800000, REGION_SOUND1, 0 ) /* QSound samples */
ROM_LOAD16_WORD_SWAP( “pcf.11m”,   0x000000, 0x400000, CRC(a5dea005) SHA1(3ae79baf6ff5bd527f82b26f164c7e3c65423ae2) )
ROM_LOAD16_WORD_SWAP( “pcf.12m”,   0x400000, 0x400000, CRC(4ce235fe) SHA1(795b94557e954cc0e45fd3778b609064d57a34a2) )
ROM_END

Hacking MAME for Linux

en el trozo de código anterior se definen varias cosas importantes como la carga de los dumps de un rom los cuales se dividen para el procesador, usuario, efectos o gfx’s y sonido, estos dumps tienen varias formas de ser validados como la suma CRC, SHA1 y los cuales deben de coincidir con los dumps del rom que se esta intentado emular, si no es así MAME te indicara con un error al momento que intentes emular el juego.no me meto en más detalles ya que técnicamente hay varias cosas que explicar y esto da para varios posts, como por ejemplo la expansión de las macros ROM_LOAD, ROM_START, ROM_END, ROM_REGION..etc.

En el mismo archivo que estamos editando cps2.c , añadimos al final de el una entrada como la siguiente:

GAME( 1997, sfmhack,    0,       cps2, sfmhack,   cps2, ROT0,   “Capcom”, “Super Gem Fighter Mini Mix Hacked by jacob (US 970904)”, 0 )

esta definición de la expansión de la macro tiene varios parámetros:

*el año.

*el nombre del driver o controlador.

*el nombre del rom padre si es que existe alguno si no se especifica con un 0(cero),

*el cuarto parámetro indica el driver o controlador para el sistema de hardware que necesita para ser emulado, en este caso cps2.

*el quinto parámetro establece el nombre de las definiciones y como serán mapeados los puertos de entrada que usara el rom específicamente como controles de mando y dipswitches, estos se definen a tiempo de ejecución y se construye dinamicamente un puntero a una función como por ejemplo : construct_ipt_sfmhack.

*el sexto parámetro indicas el nombre del driver que va ser inicializado en este caso cps2, esto sirve para desencriptar el acceso al rom entre otras cosas importantes.

*el séptimo parámetro permite definir como va rotar el juego a 90, 180, 270..básicamente consiste en 3bits (X,Y,XY) y eso esta definido por varias macros que después comentare, por ejemplo pacman tiene que rotar a 90 ya que es la orientación es vertical.

*el octavo parámetro define la empresa quien desarrollo el juego.

*el noveno elemento establece un nombre amigable para el rom.

* el ultimo elemento define el estado del rom , esto permite saber si funciona , si no esta emulado al 100%, si tiene problemas de sonido..etc. de igual forma hay macros para esto, en este caso como es un rom que estoy añadiendo y sabiendo que no hay problemas habrá que poner un 0(cero).

A continuación hay que añadir en raizEmuladorDir/src/mamedriv.c la siguiente linea:

DRIVER ( sfmhack )

la cual define un  array de drivers que se van añadiendo recursivamente, quizá les interese verificar el código fuente.

En el archivo de cabecera raizEmuladorDir/src/driver.h se define la macro para el paso anterior que he descrito

#define GAME(YEAR,NAME,PARENT,MACHINE,INPUT,INIT,MONITOR,COMPANY,FULLNAME,FLAGS)        \
game_driver driver_##NAME =                                     \
{                                                                                       \
__FILE__,                                                               \
#PARENT,                                                                \
#NAME,                                                                  \
system_bios_0,                                                  \
FULLNAME,                                                               \
#YEAR,                                                                  \
COMPANY,                                                                \
construct_##MACHINE,                                    \
construct_ipt_##INPUT,                                  \
init_##INIT,                                                    \
rom_##NAME,                                                             \
(MONITOR)|(FLAGS)                                               \
};

Existen muchas cuestiones que describir pero ya será para otro post mas técnico y formal, esto es solo una pequeña introducción informal y puesto que lo que nos interesa es ver el resultado, les dejo algunos pantallazos:

Hacking MAME for Linux

Hacking MAME for Linux

Enhorabuena hemos añadido un nuevo juego a nuestro querido emulador favorito de arcades MAME.

Nota: A fin de año es muy posible que deje en linea los binarios y fuentes del emulador como software libre 100%, ya que es un trabajo derivativo del proyecto MAME el cual he bautizado como JICLMAME for Linux y el cual merece su propio sitio web ya que de aquí se separa como un proyecto aparte.

Referencias:

http://cps2shock.retrogames.com/techinfo.html

http://caesar.logiqx.com/php/emulator_game.php?id=m1_linux&game=sgemf

http://www.solvalou.com/subpage/arcade_roms/S/sgemf


Capcom System 3 emulator on Linux

Gracias a wine, en Linux podemos ejecutar un emulador para el ultimo sistema 3 de capcom.

Apenas en junio de 2007 el método de encriptamiento fue descifrado por Andreas Naive, lo cual permitió hacer la emulación.

para ponerlo en marcha sigue los siguientes pasos:

Paso 1) Instala wine en tu distribución de Linux y para esto hay varias maneras de hacerlo. si estas usando Ubuntu Linux instala wine usando apt-get, aptitude o synaptic, por ejemplo:

$ sudo apt-get install wine

La ultima versión de wine es la 1.1.8, pero desde la versión 1.0 realice las pruebas.

Paso 2) Una vez que ya tengas instalado wine, descargarte el emulador y para esto lo puedes hacer desde mi host. para probar el emulador es necesario que descargues algunos roms(juegos).

descarga emulador: http://jacob.ad-sistemas.com/emu/cps3/cps3emulator.zip

descarga roms desde rapidshare:

http://rapidshare.com/files/43733212/sfiii2.zip

http://rapidshare.com/files/43730650/sfiii.zip

http://rapidshare.com/files/43726768/sfiii3.zip

http://rapidshare.com/files/43721921/jojoba.zip

Paso 3) Descomprime en el directorio de tu elección y crea ahí mismo un directorio con nombre de “roms” y copia los archivos que descargarte de rapidshare. básicamente el emulador busca una carpeta de roms en el mismo directorio.

Paso 4) Abre una terminal o consola, cámbiate al directorio donde descomprimiste el emulador y ejecuta lo siguiente:

$ wine emulator.exe

Paso 5) En el menú “Emulator” de emulador selecciona “Load Rom” y haz clic en el juego de tu elección.

Algunas imágenes:

capcom-_system_3_emulator_on_linux

cps3linux2

Un detalle es que el cpu esta al tope!!!

cps3linux3

Pero corre muy bien en Linux.

Mi equipo es una computadora portátil con un procesador Amd  Sempron 1.8 Ghz y memoria de 1.5G.

Nota: para configurar los controles, primero hay que cargar el rom y después configurar.

Mupen64 Plus

__  __                         __   _  _   ____  _
|  \/  |_   _ _ __   ___ _ __  / /_ | || | |  _ \| |_   _ ___
| |\/| | | | | ‘_ \ / _ \ ‘_ \| ‘_ \| || |_| |_) | | | | / __|
| |  | | |_| | |_) |  __/ | | | (_) |__   _|  __/| | |_| \__ \
|_|  |_|\__,_| .__/ \___|_| |_|\___/   |_| |_|   |_|\__,_|___/
|_|         http://code.google.com/p/mupen64plus/

Mupen64 Plus es un emulador de Nintendo 64 open source basado en plugins y emula bastantes juegos. para su funcionamiento es necesario contar plugins para vídeo, audio, controles de mando,memoria. al día de hoy es posible usar el emulador a través de 3 interfaces: linea de comando, interfaz Gtk e interfaz KDE4.

la versión actual y estable es la versión 1.4, la lista de compatibilidad de roms la puedes consultar aqui.

la descargas de los binarios y código fuente del emulador para Linux y Windows (32/64) la puedes hacer desde esta liga http://code.google.com/p/mupen64plus/downloads/list

para ponerlo en marcha solo descarga los binarios, descomprime y ejecuta el programa!!!!

quiza te interese primero leer el archivo README para consultar como compilar el programa en caso de que quieras hacerlo.

si tienes problemas para ejecutarlo, asegúrate que cuentes con un tarjeta aceleradora de vídeo por hardware, sitúate en el directorio donde descomprimiste el programa ejecutable y teclea ./mupen64plus ….si como lo esta viendo!!!! el primero carácter es punto , el siguiente caracter es diagonall ,enseguida y sin espacios el nompre del programa, mas sencillo no puede ser!!!!

algunas imágenes:

con una interfaz muy sencilla puedes configurar las opciones de los controles, vídeo y audio.

zelda 64 es un excelente y muy entretenido juego para nintendo 64, de los mejores en su época!!!!