Llevaba tiempo con una espina clavada con el
Double Dragon II de recreativa, y por fin está resuelta. Dejo aquí la versión 1.1 del parche y la explicación.
El problemaEn la placa original de Technōs los dos botones de ataque
no son «puño» y «patada». Son direccionales: uno golpea siempre hacia la izquierda de la pantalla y el otro siempre hacia la derecha.
Como Billy se gira, eso significa que el botón que era el puño pasa a ser la coz (le quitaron la patada normal hacia el frente y la convirtieron en una coz) en cuanto cambias de lado. Y al revés. Medido en la ROM original:
ORIGINAL
mirando DERECHA Fire1 = coz Fire3 = puño
mirando IZQUIERDA Fire1 = puño Fire3 = coz
En 1988, en Technōs Japan se pusieron especialmente creativos en cuanto a la jugabilidad del juego, y hay a quien le parece parte de su encanto. Pero si vienes de cualquier
beat’em up posterior, tu cabeza espera que un botón sea siempre el mismo golpe, y en la práctica acabas dando patadas cuando querías dar puñetazos.
Lo que hace el parche[spoiler]Rehace la gestión de la entrada para que
cada botón sea siempre el mismo movimiento, mires hacia donde mires, corrigiendo además el mapeo inicial y la lógica de objetos:
Botón 1 = puño
Botón 2 = salto (sin tocar)
Botón 3 = patada
Y no sólo en el golpe básico. Está aplicado a todos los ataques del juego:
[Situación] [Botón 1 (Puño)] [Botón 3 (Patada)]
En el suelo Puño Coz
Salto + ataque (a la vez) Codazo Patada al ras
En el aire (tras saltar) Huracán, en la cúspide Patada voladora
Con el cuchillo Lanzamiento Lanzamiento giratorio
Con látigo o pala Golpe normal Golpe giratorio
Con caja o tronco Lanzamiento Lanzamiento giratorio
Recoger un arma o caja Todo con el puño — (Nunca recoge)
Patear una caja o tronco — Lo desliza / patea
Compatibilidad con FBNeo restauradaFBNeo valida el CRC de cada fichero del romset y se niega a arrancar un juego cuyos ficheros hayan sido modificados. Eso es justo lo que pasaba con los DOS ficheros que parchea este hack. FBNeo daba el error:
«Verify the following romsets: ddragon2
ROM with name 26a9-04.bin / ROM with name 26ac-0e.63»
El parche reescribe unos pocos bytes de RELLENO (no usados) en cada fichero parcheado para que su CRC vuelva a ser idéntico al original. El juego
carga en FBNeo igual que el original, sin carpetas especiales, sin opciones del core y sin pasos extra. MAME y FB Alpha, que son mas permisivos, siguen funcionando como antes.
NOTA: En el primer Double Dragon, los ataques giratorios con arma u objeto (caja, piedra, barril) se ejecutaban con la combinación del codazo; en Double Dragon II, como la patada no tiene uso al llevar algo pesado en la mano (excepto con el cuchillo), aprovecharon ese botón para que el personaje se dé media vuelta y ejecute el golpe o lanzamiento propio de ese objeto.La prueba de spritesEsto es lo que sale al pulsar cada botón desde reposo, en los dos lados. La primera pareja de números es la acción interna y el sprite que se dibuja:
ORIGINAL CON EL PARCHE
DERECHA Fire1 puño spr 12/13 puño spr 12/13 <-- corregido en v1.1
DERECHA Fire3 coz spr 73/74 coz spr 73/74 <-- corregido en v1.1
IZQUIERDA Fire1 puño spr 92/93 puño spr 92/93
IZQUIERDA Fire3 coz spr F3/F4 coz spr F3/F4
Los sprites
92/93 y
F3/F4 son los mismos
12/13 y
73/74 con el bit de volteo puesto (
$12|$80 = $92): es el mismo movimiento mirando al otro lado, no otro distinto.
Cambios de apoyo y notas de diseño• La ventana del buffer de combinaciones pasa de 3 a 4 frames. Con 3 era muy fácil perder el «salto + ataque» una vez que los dos ataques dejan de ser intercambiables.
• Ya no se fuerza el volteo en el aire. En el original, el ataque aéreo obliga al sprite a mirar hacia donde golpea el botón. Como los botones ya no son direccionales, ese volteo forzado no tenía sentido.
• El giro con objetos en mano: Cuando llevas un arma o caja y pulsas patada, el personaje se da media vuelta antes de atacar/lanzar. Esto no es un bug; es la patada trasera original de la ROM (un ataque inverso deliberado). Funciona como los creadores idearon y se queda intacto.
• El huracán con armas: Sigue sin poder hacerse mientras cargas un objeto, exactamente igual que en el juego de fábrica.
PARCHE (v1.2)Double Dragon II - Fixed Attack Controls (v1.2) (by Psicopompo).zip
Enlaces de interés:
Ficha oficial en RomHacking.netRepositorio en GitHubCómo se aplicaEl juego de recreativa no es una ROM suelta: son 18 ficheros dentro de
ddragon2.zip. El parche toca
dos, así que hay dos .bps:
26a9-04.bin.bps -> 26a9-04.bin (CPU principal, 253 bytes)
26ac-0e.63.bps -> 26ac-0e.63 (banco conmutado, 10 bytes)
Abre
ddragon2.zip y extrae
26a9-04.bin y
26ac-0e.63.
Aplica cada parche a su fichero con Flips, beat o cualquier herramienta BPS.
Vuelve a meter los dos ficheros en el zip, sustituyendo los originales.
Los otros 16 no se tocan.
MD5 de control (v1.2)26a9-04.bin 66e634a78217cab840e61ffbef72ef68 (CRC32 0xf2cfc649, = original)
26ac-0e.63 580701f52cb0f08ca6714c757fe3d2d1 (CRC32 0x57acad2c, = original)
¿Por qué no un solo parche del zip entero?Porque el checksum de un zip depende del nivel de compresión y del orden de los ficheros: el mismo contenido puede dar zips distintos. Un parche hecho contra un zip concreto fallaría con cualquier otro. Las ROMs de dentro sí son estables, así que se parchean esas.
CompatibilidadProbado con
FB Alpha 2012 y
FB Neo. Debería funcionar en cualquier emulador que mueva el set
ddragon2, y en hardware real: sólo cambian las ROMs de programa, y ni su tamaño ni su disposición se alteran.
El modo de dos jugadores funciona con normalidad. Todo el código modificado va indexado por jugador, así que ambos se comportan igual.
Si alguien le pega un repaso a esta v1.2 y ve cualquier cosa, que avise por aquí.