Cómo agregar soporte a los nuevos juegos desencriptados de NEOGEO (NeoRAGEx y otros) en el XMAME/MAME
(RG)

Bueno, existe gente que gusta jugar a los juegos del NEOGEO en el MAME para jugar en Kaillera o porque les va mejor que los emuladores "especiales" para estos sistemas, etc. pero, con la última modificación a los "estándares" de los nombres de las ROMS (si a esto se le puede llamar estándar) todos los nombres de la roms han cambiado jodiendo totalmente al NeoRAGEX, que hasta la extensión modificaron, el archivo sigue siendo el mismo, pero al parecer la única intención es impedir que los usuarios sin muchos conocimientos en el manejo de computadoras puedan jugar a los juegos más recientes en el emulador más sencillo (y más rápido) de usar, otra joda es que estos juegos no están soportados en el binario oficial, y los drivers que están en el source solo contienen las versiones encriptadas o con archivos rom que aún no han salido. Afortunadamente están disponibles las fuentes del mismo y con esto se puede solucionar el problema.

Si eres de los que usan Neoragex y quieres jugar el mismo juego en el propio MAME, pues este manual te ayudará a como crear tu propia versión del MAME que soporte la misma ROM que usa el NeoRAGEx. Si eres de los que usan Nebula o Kawaks, pero también quieres jugarlo en el MAME también servirá (espero que sí) y, principalmente, si eres usuario de Linux, pero no lograste configurar el Wine para jugarlo en el NeoRAGEx.

Para los que llevan tiempo en esto, la opción más viable es "engañar" al emulador haciéndolo pasar por otro juego, (el más común, el King of Fighters '98), pero esto es una jalada, ya que se tiene que renombrar toooodas las roms y hacer una "copia" del mismo juego, ocupando el doble de espacio.

Otra opción (y la mejor) es recompilar el código, esta opción es desconocida por muchos, pero no es nada fuera del otro mundo. Este pequeño manual explicará (o al menos eso intentaré) para dar soporte a los nuevos juegos "no estándares".

OJO: Para los puristas, me jode que siempre andan con sus mamadas de siempre de que "dañas a la compañía, ese no es el propósito de la emulación, etc", cuando son los primeros maricones que andan descargando las ROMs, lo que estoy haciendo no es contra la ley, ya que simplemente se está modificando el código fuente para nuestras necesidades, de lo contrario las fuentes nunca se liberarían, y si así fuera pues me vale, así que, si vas a enviar correos chingando con que quite esto, pues menos vas a lograr que borre esto del server, y si lo lograran borrar, pues tengo una copia de esto en mi disco duro XDDDDDDD

REQUERIMIENTOS:

Windows

MinGW para compilar el MAME32, o el DJGPP si es para MSDOS.
Un editor de texto, con el Notepad o el Edit es más que suficiente.
Las fuentes del MAME (de preferencia la más actual), En estos momentos ronda la 0.67
La calculadora del Windows (opcional)
Un poco de sentido común.

Linux

GCC (Aunque con versiones anteriores también puede funcionar)
Un editor de texto, con el vi es más que suficiente, aunque si no te sabes su funcionamiento pues entonces usa otro como el KEdit.
Las fuentes del XMAME (de preferencia la más actual) En estos momentos ronda la 0.67
Una calculadora, con el KCalc es suficiente (opcional)
Un poco de sentido común


Como se puede ver, los requerimientos para ambos SO son prácticamente los mismos, no pongo como requerimiento conocimiento de lenguaje C, porque de nada serviría si no sabes cómo funcionan los drivers.

Para esto he de suponer que ya instalaste el compilador (los usuarios de Linux no deben batallar en este paso, ya que en la mayoría de las veces viene junto con el sistema) y este FAQ no abarca sobre cómo instalar el compilador, para más información ve a la página oficial http://www.mame.net y encontrarás suficiente info sobre esto.

Pienso que no hay nada mejor que aprender mediante ejemplos, así que en este FAQ le daremos soporte al King of Fighters 2002.

INICIANDO:

Como primer paso hay que descomprimir las fuentes en un directorio que hayamos previamente creado (OJO, en la versión de windows las fuentes deben estar en el mismo directorio que el compilador) ya sea con Winzip (Windows) o con tar o Ark (Linux), nos encontraremos con bastantes archivos (tranquilo con esto, que es prácticamente nada lo que habremos de modificar)

Una vez descomprimido entramos al directorio donde se encuentran, dentro de estas, encontrarás un directorio con el nombre "src", pues bien, entramos ahí y nos encotraremos con más archivos (obvio), ahora encontraremos un directorio con el nombre "drivers", pues lógico, entramos en él y ahora nos encontraremos con muchos archivos, el único que nos interesa y que habremos de editar es el "neogeo.c".

Sentido común.- ¿Qué era lo que hacíamos anteriormente para poder jugar este juego en el MAME? Claro, renombrar sus roms como si fuera el KOF98, entonces, si esto lo hacía funcionar correctamente, en este caso buscaremos en este archivo fuente el driver del KOF98, encontraremos lo siguiente, a continuación explico:

ROM_START( kof98 )
ROM_REGION( 0x500000, REGION_CPU1, 0 )
ROM_LOAD16_WORD_SWAP( "242-p1.bin", 0x000000, 0x100000, 0x61ac868a )
ROM_LOAD16_WORD_SWAP( "242-p2.bin", 0x100000, 0x400000, 0x980aba4c )

NEO_SFIX_128K( "242-s1.bin", 0x7f7b4805 )

NEO_BIOS_SOUND_256K( "242-m1.bin", 0x4e7a6b1b )

ROM_REGION( 0x1000000, REGION_SOUND1, ROMREGION_SOUNDONLY )
ROM_LOAD( "242-v1.bin", 0x000000, 0x400000, 0xb9ea8051 )
ROM_LOAD( "242-v2.bin", 0x400000, 0x400000, 0xcc11106e )
ROM_LOAD( "242-v3.bin", 0x800000, 0x400000, 0x044ea4e1 )
ROM_LOAD( "242-v4.bin", 0xc00000, 0x400000, 0x7985ea30 )

NO_DELTAT_REGION

ROM_REGION( 0x4000000, REGION_GFX3, 0 )
ROM_LOAD16_BYTE( "242-c1.bin", 0x0000000, 0x800000, 0xe564ecd6 ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "242-c2.bin", 0x0000001, 0x800000, 0xbd959b60 ) /* Plane 2,3 */
ROM_LOAD16_BYTE( "242-c3.bin", 0x1000000, 0x800000, 0x22127b4f ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "242-c4.bin", 0x1000001, 0x800000, 0x0b4fa044 ) /* Plane 2,3 */
ROM_LOAD16_BYTE( "242-c5.bin", 0x2000000, 0x800000, 0x9d10bed3 ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "242-c6.bin", 0x2000001, 0x800000, 0xda07b6a2 ) /* Plane 2,3 */
ROM_LOAD16_BYTE( "242-c7.bin", 0x3000000, 0x800000, 0xf6d7a38a ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "242-c8.bin", 0x3000001, 0x800000, 0xc823e045 ) /* Plane 2,3 */
ROM_END

Para los despistados, vemos que el MAME usa un driver "genérico" para los antiguos juegos que salían desencriptados, por lo que, simplemente, basta con copiar esta macro y pegarla precisamente donde termina esta (de preferencia), pero con los parámetros del King of Fighters 2002, veamos los parámetros que hemos de modificar:

ROM_START( kof98 )

Nombre de la rom, en mi caso, como uso el Neoragex, la rom que tengo se llama kof2k2, en Nébula y Kawaks se acostumbra llamar kof2002, pero repito, uso Neoragex y se me hace más viable modificar el DAT del Nébula que renombrar toda la rom (si, soy un huevón), si tu tienes la rom con otro nombre modifícaselo por el que tengas.

ROM_LOAD16_WORD_SWAP( "242-p1.bin", 0x000000, 0x100000, 0x61ac868a )

Esta entrada (o como quieran llamarle) tiene varios parámetros así que trataré de explicarlos:

"242-p1.bin" Nombre de la rom interna (como podrás ver, el emulador lo busca con los nuevos nombres, pero como ya lo dije anteriormente, el archivo es el mismo, así que es cuestion que lo modifiquemos al viejo formato (o sea "kof2k2_p1.rom")
0x000000 Posición en memoria en donde se alojará la ROM (posición de alojamiento, una especie de pila), este valor no se modifica
0x100000 Su tamaño en formato hexadecimal, si el tamaño varía debemos modificarselo por otro valor de acuerdo a su tamaño.
0x61ac868a Su valor CRC para saber esto abre el Winzip o el Ark y el mismo programa al visualizar los archivos te mostrará este valor

Bien, como el siguiente valor es idéntico no tiene caso explicarlo, pasemos al siguiente:

NEO_SFIX_128K( "242-s1.bin", 0x7f7b4805

Esta sección se encargará de leer el archivo s1, veamos:

NEO_SFIX_128K Su nombre tiene algo curioso, ya que en el especifica el tamaño del archivo, si por extrañas razones llegase a pesar más (o menos) deberemos modificar su nombre de acuerdo a su tamaño
"242-s1.bin" Nombre de la rom, como ya lo expliqué arriba, no tiene caso explicarlo de nuevo
0x7f7b4805 CRC, también ya explicado en el cuadro anterior

Pasemos al siguiente:

NEO_BIOS_SOUND_256K( "242-m1.bin", 0x4e7a6b1b )

Muy similar a los anteriores, por lo que sólo explicaré el primer valor

NEO_BIOS_SOUND_256K Lo mismo que con la rom s1, en este caso es más probable que los tamaños varíen, en el kof2k2 mi m1 pesa solo 128kb, por lo que el nombre cambiaría por NEO_BIOS_SOUND_128K

Pasamos ahora a la sección los samples (o sea los archivos V)

ROM_LOAD( "242-v1.bin", 0x000000, 0x400000, 0xb9ea8051 )

Sólo he de decir que tiene la misma estructura que los archivos P y es redundante explicarla

Pasamos ahora con la sección de gráficos (archivos C):

ROM_LOAD16_BYTE( "242-c1.bin", 0x0000000, 0x800000, 0xe564ecd6 )

Vaya, es exactamente lo mismo que los archivos P y V :-)

Nos quedaría más o menos de la siguiente forma:

ROM_START( kof2k2 )
ROM_REGION( 0x500000, REGION_CPU1, 0 )
ROM_LOAD16_WORD_SWAP( "kof2k2_p1.rom", 0x000000, 0x100000, 0x9ede7323 )
ROM_LOAD16_WORD_SWAP( "kof2k2_p2.rom", 0x100000, 0x400000, 0x432fdf53 )

NEO_SFIX_128K( "kof2k2_s1.rom", 0xe0eaaba3 )

NEO_BIOS_SOUND_128K( "kof2k2_m1.rom", 0xf6fab859 )

ROM_REGION( 0x1000000, REGION_SOUND1, ROMREGION_SOUNDONLY )
ROM_LOAD( "kof2k2_v1.rom", 0x000000, 0x400000, 0x13d98607 )
ROM_LOAD( "kof2k2_v2.rom", 0x400000, 0x400000, 0x9cf74677 )
ROM_LOAD( "kof2k2_v3.rom", 0x800000, 0x400000, 0x8e9448b5 )
ROM_LOAD( "kof2k2_v4.rom", 0xc00000, 0x400000, 0x067271b5 )

NO_DELTAT_REGION

ROM_REGION( 0x4000000, REGION_GFX3, 0 )
ROM_LOAD16_BYTE( "kof2k2_c1.rom", 0x0000000, 0x800000, 0x7efa6ef7 ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "kof2k2_c2.rom", 0x0000001, 0x800000, 0xaa82948b ) /* Plane 2,3 */
ROM_LOAD16_BYTE( "kof2k2_c3.rom", 0x1000000, 0x800000, 0x959fad0b ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "kof2k2_c4.rom", 0x1000001, 0x800000, 0xefe6a468 ) /* Plane 2,3 */
ROM_LOAD16_BYTE( "kof2k2_c5.rom", 0x2000000, 0x800000, 0x74bba7c6 ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "kof2k2_c6.rom", 0x2000001, 0x800000, 0xe20d2216 ) /* Plane 2,3 */
ROM_LOAD16_BYTE( "kof2k2_c7.rom", 0x3000000, 0x800000, 0x8a5b561c ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "kof2k2_c8.rom", 0x3000001, 0x800000, 0xbef667a3 ) /* Plane 2,3 */
ROM_END

Recuerda que estos son mis CRCs, si tienes un archivo diferente deberás darlo de alta de acuerdo a tus roms, de lo contrario el emulador te mostrará un warning al momento de cargar el juego, similar como cuando lo cargabas como el kof98.

Habiendo modificado estos valores nos vamos hasta el final del archivo y nos encontraremos con una tabla en la cual debemos de dar de alta este juego y buscamos de nueva cuenta la cadena "kof2002", (recordar que este juego ya está soportado, pero no dado de alta) encontraremos la siguiente línea:

GAME( 2002, kof2002, neogeo, neogeo, neogeo, kof2002, ROT0, "Eolith / Playmore Corporation", "The King of Fighters 2002" )

Copiamos esta línea y la pegamos enseguida, (para no desgraciar el driver original) lo modificamos de acuerdo con el nombre de nuestra rom y modificamos el nombre del driver por el "genérico" de los juegos antiguos, nos quedaría de la siguiente forma:

GAME( 2002, kof2k2, neogeo, neogeo, neogeo, neogeo, ROT0, "Eolith / Playmore Corporation", "The King of Fighters 2002" )

Si aún no captas qué es lo que debes modificar muestro las dos cabeceras (original y la modificada por nosotros)

GAME( 2002, kof2002, neogeo, neogeo, neogeo, kof2002, ROT0, "Eolith / Playmore Corporation", "The King of Fighters 2002" )
GAME( 2002, kof2k2, neogeo, neogeo, neogeo, neogeo, ROT0, "Eolith / Playmore Corporation", "The King of Fighters 2002" )

Hecho esto guardamos los cambios y cerramos el archivo (la parte difícil ha pasado), salimos de este directorio y nos vamos al directorio "drivers", ahora editaremos el archivo "driver.c"

Por alguna extraña razón, los juegos de neogeo están hasta el final del archivo, lo que nos simplifica las cosas, veremos los nombres de las roms, lo único que tendremos que hacer es dar de alta el kof2k2, para esto agregamos la iguiente línea al final:

DRIVER( kof2k2 ) /* 0265 (c) 2002 Eolith / Playmore Corporation */

Lo que aparece entre /* --------- */ son comentarios y lo ignorará el compilador, así que puedes poner lo que quieras (hasta una grosería) de todas formas el compilador la pasará por alto.

Si habías leído anteriormente el parámetro TESTDRIVER invalida la rom para jugar, o sea que no estará dada de alta en su base de datos, si deseas activar un juego que en su versión oficial no aparece cambia este parámetro por DRIVER.

Bien, ahora guardamos los cambios y salimos de este directorio y nos posicionamos dentro del directorio donde se encuentran las fuentes del MAME (para explicarme mejor deberás ver archivos como el readme, Makefile, etc.) simplemente escribe la palabra mágica "make" (sin comillas) y pulsa Enter, verás una extrañas lineas en la pantalla, el proceso tarda un poco, así que no te desesperes.

En windows, una vez generado el ejecutable, notarás que el archivo es demasiado grande, para comprimirlo al tamaño que todos conocemos deberás bajarte el programa UPX, disponible en la misma página oficial de MAME.

Una vez compilado estará listo para usarse, solo copia o mueve los ejecutables a donde usualmente tienes el MAME.

Los usuarios de Linux deberán entrar como root y escribir el comando "make install" (sin comillas)

Ahora intenta cargar el juego, si lo hiciste bien, felicidades!! disfruta de este maravilloso juego, si de lo contrario te sale un error o un warning al leer archivos, revisa los pasos anteriores y revisa que hayas modificado correctamente la macro o hayas introducido incorrectamente un CRC (este último error es algo frecuente)

Splash Open Title




Al principio esto puede sonar confuso y laborioso, pero en verdad no lo es, y hecho una vez la próxima vez que modifiques el emulador lo podrás hacer hasta con los ojos cerrados.

Ya sé que el diseño de la página es muy pinche, pero no soy diseñador ni nada por el estilo.



Dudas o comentarios javargash@yahoo.com.mx


Esta página se ve mejor en cualquiera de los Tres Mosqueteros ;)

Get Firefox! Title Title
Cuida tu salud mental, no uses Internet Explorer.

PD: No mandes mails pidiendo drivers ya hechos.