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:
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)
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