[MD] Traducción al castellano de Nekketsu Soccer (Kunio-kun) — ¡Ya disponible!

Imagen
Nekketsu Koukou Dodgeball-bu — Soccer Hen MD · Traducción al castellano

Mega Drive · Technos Japan · 1992 · Exclusivo de Japón


Cómo se ha hecho esto

Antes de nada, debo aclarar algunas cosas.

No soy romhacker. No tengo conocimientos de ingeniería inversa, ni sé leer ensamblador del 68000 y todo lo que sé sobre editar el contenido de un ROM es bastante básico. Todo el trabajo técnico de este proyecto —el análisis del formato de compresión, el desensamblado, la localización de punteros, los parches de código, la reubicación de assets— lo ha hecho una IA con la que he trabajado codo con codo.

Imagen Imagen

Mi aportación ha sido, principalmente, dirigir el proyecto: decidir qué se traducía y cómo, probar cada versión, detectar los fallos y aportar mi intuición cuando el análisis se atascaba —lo cual ha pasado demasiadas veces—. Muchas de esas intuiciones resultaron decisivas para no romper nada o salir de lo que parecían callejones sin salida. También he realizado el pixel art: fuentes, rediseño de sprites y el rótulo del título, entre otras cosas.

Todo el trabajo de ingeniería inversa, programación y modificación de la ROM ha sido realizado por la IA. Me parece importante dejarlo claro, porque sin ese trabajo este proyecto no habría sido posible.

El dato que me parece más relevante de todo esto es que el proyecto completo ha llevado entre dos y tres días de trabajo intenso. Un juego sin traducción a ningún idioma occidental en más de treinta años, completamente en japonés, con texto comprimido y gráficos que había que redibujar. Un romhacker en solitario habría tardado meses, o más, y eso teniendo ya la experiencia. No lo digo para restarle mérito a nadie: lo digo porque creo que evidencia lo que la IA permite hacer a día de hoy en el romhacking —y en muchísimas otras cosas—, y me parece una noticia en sí misma.

No descarto que haya errores (que los habrá, seguro), porque no hemos podido probar el juego entero. Si os encontráis alguno, reportadlo y lo abordaremos.

Imagen

El juego

En 1992 Technos publicó para Mega Drive el único juego de toda la saga Kunio-kun que apareció en esta consola. Se trata de un juego de fútbol protagonizado por Kunio-kun, el gamberro del instituto Nekketsu que muchos conocimos como el protagonista de Renegade o, si tuvimos suerte, como el de River City Ransom. El título completo es un trabalenguas —Nekketsu Koukou Dodgeball-bu: Soccer Hen MD— y viene a significar algo así como «Club de balón prisionero del instituto Nekketsu: edición fútbol».

De fútbol tiene lo justo. Hay once contra once y una pelota, pero también placajes, patadas voladoras, bombas y campos con minas. Es el fútbol de patio de colegio elevado a género, con la estética cabezona de la saga Kunio y una dificultad bastante puñetera.

Nunca salió de Japón. Ni versión americana, ni europea, ni una mísera traducción al inglés en más de treinta años. Para cualquiera que no lea japonés, el juego era jugable a medias: te enterabas de que había que meter goles, pero la historia (que la tiene —con bastante más contenido del que pensaba—, y se va desarrollando conforme vamos avanzando en el juego), los menús, los nombres de los equipos y las instrucciones eran un muro.

Eso es lo que ha motivado este proyecto. No hay versión en inglés que sirva de base: hay que ir directo al japonés y reconstruirlo todo. Sé que el original de NES sí cuenta con traducciones, pero no lo he usado de referencia salvo para comparar gráficos, velocidad del texto y alguna otra cosa.

Imagen

Qué se ha traducido

Absolutamente todo el texto visible (salvo el 'Player 1' en la pantalla de cambio de posición de los miembros del equipo. Podéis verlo más abajo, en la primera imagen de la sección de capturas):

  • Los 86 bloques de diálogo de la historia
  • Menús, opciones y pantalla de clave
  • Los trece nombres de equipo en la selección de DUELO 2J
  • La pantalla de alineación (¿CAMBIAR POSICIÓN?, RES / VEL / TIR)
  • El marcador de resultados con los nombres de ambos equipos
  • Los rótulos de escena: sala del club, vestuarios, títulos de partido
  • Los créditos
  • Los corazones que aparecían en la versión de NES fueron sustituidos por cruces en Mega Drive. Para esta traducción he recuperado el concepto original diseñando unos nuevos sprites inspirados en aquellos.

Y se han redibujado los gráficos que contenían texto japonés: el rótulo del título, la placa de selección de escuela, la cinta verde del club (en realidad, representa el tejado) y una fuente gruesa nueva para los nombres de equipo.

Imagen

Cómo se ha hecho

El proyecto se ha llevado con un método estricto de ingeniería inversa: nada de escribir bytes a ciegas ni de probar offsets al azar. Cada cambio se ha demostrado antes con trazas de ejecución, volcados de VRAM, puntos de ruptura y comparaciones frame a frame contra la ROM japonesa original.

Todo el proceso está documentado en un diario de investigación de más de 8.800 líneas, en el que las hipótesis descartadas no se borran: se anotan con el motivo por el que resultaron falsas. Se han escrito unas 60 herramientas en Python para el análisis: descompresor y recompresor del formato propietario del juego, desensamblador 68000, editor de fuentes, generador de parches y un arnés de emulación instrumentado sobre Genesis Plus GX.

Imagen

Problemas interesantes

No todo fue traducir cadenas. Algunos obstáculos merecen mención porque son el tipo de cosa con la que uno se encuentra al abrir un cartucho de 1992.


El espacio no existe

La ROM original son 512 KB apretados. El texto japonés ocupa poco —cada kanji es un carácter— y el castellano necesita muchas más letras. Además, los nombres de equipo estaban dibujados como gráficos, no como texto.

El primer intento renderizaba cada nombre como un mapa de bits continuo y lo troceaba después en celdas de 8×8 píxeles. Resultado: 146 tiles únicos para trece nombres, porque la misma letra caía en posiciones distintas de la rejilla y generaba tiles diferentes cada vez. No cabía por 390 bytes.

La solución llegó cuando deduje que había que tratarlos como texto, no como gráficos (aun siéndolo). Alineando cada letra a una celda, una S produce siempre los mismos tiles. El coste pasó a depender sólo del alfabeto, y como los trece nombres sólo usan 20 letras (sobran J L Q V W X, más la Ñ y los acentos), bajó de 146 tiles a 35. Con el contorno negro incluido y 1.466 bytes de margen.


Assets que se pisan

Al ampliar el rótulo del título, éste creció 37 bytes y machacó el principio del gráfico de la sala del club, que una versión anterior había colocado justo detrás. La escena salía completamente corrupta.

Detectarlo requirió bisecar entre versiones —comprobando la misma pantalla en la ROM japonesa, en la v1.6, v1.7, v1.8 y v1.9— hasta aislar en qué punto se rompió. Fue la sexta vez en el proyecto que un asset pisaba a otro, y quedó como norma: al agrandar algo, comprobar siempre qué hay inmediatamente detrás.


Un byte que colgaba el juego

Para evitar que la cinta verde del rótulo se redibujara en cada fotograma (lo que producía un parpadeo del borde inferior), se añadió un pequeño envoltorio en ensamblador con un salto condicional. El desplazamiento estaba mal calculado por 4 bytes: el salto caía en mitad de una instrucción, la CPU leía basura y el juego se colgaba con una nota de sonido fija.

El 68000 no avisa de estas cosas. Norma nueva: desensamblar siempre cualquier salto relativo escrito a mano antes de meterlo en la ROM.


El destello fantasma

El más esquivo. En la pantalla de resultados aparecían durante unos instantes caracteres japoneses sueltos, números romanos y símbolos, justo antes de que se dibujaran los nombres correctos.

Costó muchos intentos fallidos. El diagnóstico correcto volvió a salir de la intuición tras haber visto el mismo patrón antes: «aparecen cuando sustituimos un gráfico donde ya había otro». Y así era: el código original de la pantalla de resultados reutiliza la tabla de descriptores de la pantalla de selección para pintar los dos nombres. Esos tilemaps apuntan a una base de tiles que en esa escena contiene otra cosa, así que durante siete fotogramas se veía basura hasta que el código nuevo repintaba encima.

Se resolvió anulando ese bloque original, que era redundante.


La lección más incómoda

A mitad del proyecto se descubrió que los puntos de ruptura no funcionaban: faltaba activar una opción del emulador instrumentado. Una prueba de control con dos rutinas que se ejecutan con toda seguridad devolvía cero aciertos en ambas.

Eso significaba que varias conclusiones previas, todas basadas en "cero aciertos, por lo tanto, esto no se ejecuta", eran falsos negativos. Quedó apuntado en el diario como norma: un contador a cero no prueba nada si antes no has validado que el contador puede subir.


Capturas

Imagen Imagen Imagen
Imagen Imagen Imagen


Descarga y uso

Nekketsu Soccer MD (ES) v2.8 (por Psicopompo).zip


Se aplica sobre la ROM japonesa original sin cabecera:

Tamaño : 524.288 bytes (512 KB)
CRC32  : F49C3A86
MD5    : FF7A9A6FB74A640F40F10DFF53E9CF4D
SHA-1  : D865B01E58A269400DE369FC1FBB3B3E84E1ADD0


ROM resultante:

Tamaño : 1.048.576 bytes (1 MB)
CRC32  : 8BA4F074
MD5    : 30C69454512344419B622DB67D51E65B
SHA-1  : 608739BF89A75915A5D90719D9E0BAC3D8AAA3F2


Usa Flips, Lunar IPS o cualquier parcheador compatible. Se recomienda el BPS, que verifica que la ROM base sea la correcta.

No se distribuye la ROM. Sólo el parche.


Estado y limitaciones

La traducción está completa y es jugable de principio a fin. Detalles conocidos:

  • En la pantalla de alineación, la flecha del cursor SÍ/NO aparece un instante antes que la pregunta. Cosmético.
  • Las zonas de difícil acceso (torneo completo hasta el final, modo VS, claves) han recibido menos pruebas. Se agradece cualquier informe.

Probado en Genesis Plus GX. No se ha probado en hardware real; si alguien lo hace con un flashcart, el informe sería bienvenido.


Aviso legal

Trabajo de aficionados sin ánimo de lucro. Nekketsu Koukou Dodgeball-bu - Soccer Hen MD es propiedad de sus respectivos titulares. Esta traducción no está autorizada ni respaldada por Technos Japan ni por sus sucesores. Se distribuye únicamente el parche.
@psicopompo que lujo compañero. Mis felicitaciones. [beer]

Me entra la curiosidad de como lo has hecho con la IA. ¿Cual has usado?
Gracias por la traducción.
Enhorabuena! Tremendo trabajazo! [beer]
DeVlL escribió:@psicopompo que lujo compañero. Mis felicitaciones. [beer]

Me entra la curiosidad de como lo has hecho con la IA. ¿Cual has usado?

Gracias. He usado Claude, ChatGPT, Hermes Agent con Gemma 4 en local y Arena.AI.

@doblete @viericrespo Gracias. 🤜🏻🤛🏻🙂🙃
Muy buen aporte, ¡espero que te haya picado el gusanillo y nos traigas más "intraducibles"!
5 respuestas