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.
Category Archives: 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
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:
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:
Un detalle es que el cpu esta al tope!!!
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!!!!