domingo, 4 de enero de 2026

24 - Traducción para Donkey Kong Country 3 de SNES al Español

 



Donkey Kong Country 3: Dixie Kong Double Trouble! es un juego de plataformas de 1996 desarrollado por Rare y publicado por Nintendo para la Super Nintendo Entertainment System (SNES). Es la tercera entrega de la serie Donkey Kong Country y la secuela de Donkey Kong Country 2: Diddy's Kong Quest de 1995. También se relanzó para Game Boy Advance (GBA) en 2005. El juego se pudo descargar en la Consola Virtual de Wii en 2007, así como en la Consola Virtual de Wii U en 2014.






Traducciones Koda tiene el orgullo de presentar la primera traducción al español del Donkey Kong Country 3 de Super Nintendo. A continuación un par de detalles con de los aspectos técnicos que incluye la traducción.

1. Romhacking

Entre las dificultades técnicas que ha supuesto traducir tal obra, se encuentra la creación de una herramienta que permite editar los textos que se encuentran comprimidos. Para ello se ha hecho un dumping de todo el script, se ha modificado y se ha empaquetado nuevamente. Algo a destacar es que el algoritmo de compresión ocupa un diccionario con una cantidad limitada de caracteres, y si bien el compresor permite editar el texto, no se ha tenido como prioridad la modificación interna de este diccionario, ya que afortunadamente este título cuenta de salida con la posibilidad de seleccionar entre 2 idiomas, inglés y francés. Es por esto que se ha editado el idioma francés, que cuenta con un diccionario más grande (15 caracteres extra), lo que permite la inclusión de los acentos, eñe y signos de apertura de interrogación y exclamación.

En primeros términos eso habría sido suficiente para crear una traducción competente que permitiese jugar al juego de manera completa; sin embargo, se le tiene un gran cariño a este título, así que se ha prestado mucha atención a los detalles para conseguir una traducción más refinada.

Entre más modificaciones hechas, se han editado las siguientes rutinas mediante lenguaje ensamblador de SNES. En este caso se ha usado una herramienta ensambladora que permite modificar parte del código, su nombre: ensamblador Asar.

Recapitulando, una de las primeras rutinas que se modificó fue en este caso la de los nombres de los niveles. En la ROM base, al terminar un nivel y encontrar en él las dos monedas bonus, se nos modificará el nombre escribiendo un signo de exclamación "!" al final. Puesto así, se ha modificado para que incluya el signo de apertura de la exclamación "¡" al inicio, dejando un buen resultado visual.



Además, se ha modificado la rutina que indica el nombre del jugador por parte de los NPC. En la versión vanilla, si un oso habla con el jugador se referirá a él con el nombre "Kongs" si es que ambos estuviesen vivos, y en caso contrario como Dixie o Kiddy, respectivamente. Esto, a la hora de traducir, puede crear problemas de sintaxis, y para evitarlos se ha decidido eliminar la propiedad de hablar en plural con el pronombre "Kongs", y ahora solo se hablará en singular. Además, se ha tenido especial cuidado con el uso de adjetivos neutros, ya que, como sabrán, este suele ser otro problema al traducir de inglés al español.




Otras rutinas que se han modificado pero que quizás pasen desapercibidas son el cambio del signo ampersand "&" por "Y" en la pantalla de selección de juego y en la cueva de guarado de "Wrinkly". Además como se dijo más arribla el idioma modificado fue le francés, por lo tanto se ha cambiado el idioma de inicio por defecto, como también se ha bloqueado el cambio de idioma, esto es porque se han reemplazado ciertos gráficos que impedirian el jugar el juego en el idioma original, inglés.

2. Arreglando Errores

La versión publicada para USA es la primera revisión del juego; lamentablemente no está exenta de errores, que afortunadamente fueron arreglados en versiones posteriores en las publicaciones europea y japonesa.

Un error conocido es el "Knautilus" en la pelea contra Baron K. Roolestein. Durante la secuencia donde se lanza un rayo, si el jugador pone pausa, dicho rayo no será pausado, moviéndose y golpeando al jugador sin posibilidad de esquivarlo.



Otro error es en la paleta de colores para "Kiddy" tras usar el código secreto "COLOR". Si jugamos un bonus, notaremos en la pantalla a "Kiddy" con la paleta de colores equivocada. Esto fue resuelto en la versión japonesa 1.1.


Entre otros errores está la inexistencia de la letra "G" en el nivel "Rocket Rush", la modificación de la posición de los enemigos en el nivel "Pot Hole Panic" para evitar la ralentización del juego.



3. Traducción

Se utilizó parte del script original de Nintendo de la versión de Game Boy Advance. Sin embargo, se puso especial énfasis en crear un español lo más neutro posible, disfrutable tanto para jugadores de España como de Latinoamérica. Entre los ajustes realizados se reemplazó el uso de "vosotros" por "ustedes", además de adaptar frases muy localizadas al español de España.

En general, los nombres de niveles, NPC y objetos se mantienen prácticamente iguales a los originales, lo que hace a esta traducción totalmente compatible con la guía oficial de Nintendo.

Cambios destacados:
  • El nivel "Duelo de Chorros" fue renombrado a "Duelo de Squirt", nombre original de la versión japonesa.
  • El objeto "concha" fue renombrado a "almeja".

4. Descarga

El parche debe ser aplicado a la versión americana sin cabecera.

Database match: Donkey Kong Country 3 - Dixie Kong's Double Trouble! (USA) (En,Fr)
Database: No-Intro: Super Nintendo Entertainment System (v. 20210222-050638)
File/ROM SHA-1: D737E90D91DBA8620FD5C2985EB6FF2CDA7F23F9
File/ROM CRC32: 448EEC19

Versión 1.0 (04/01/2026):
  • Agregados los caracteres del idioma español.
  • Traducidos todos los textos y nombres de los niveles.
  • Traducido el menú secreto de prueba de sonido tras usar el código "MUSIC".
  • Editados los gráficos del menú principal y de la presentación.
  • Editada la rutina que agrega el carácter "!" al nombre de la etapa tras conseguir las dos monedas bonus; ahora se agrega "¡" al inicio.
  • Editada la rutina de pluralización. El juego ahora siempre se refiere al jugador por el nombre del personaje activo (Dixie o Kiddy).
  • Editado el menú principal. El idioma por defecto es el español y el cambio de idioma queda bloqueado.
  • Reemplazado el ampersand "&" por la "Y" latina en el menú de selección de juego y en la pantalla de guardado de la cueva de Wrinkly en modo cooperativo.
  • Corregido un error en el nivel "Rocket Rush", donde la letra "G" no existía.
  • Corregido un error en el nivel "Pot Hole Panic", donde al final de la etapa había un problema de ralentización. Se cambiaron los enemigos para que coincidan con la versión Europea/Japonesa.
  • Reubicado el globo rojo en el nivel "Krevice Kreepers", dejándolo en la misma posición que en la versión Europea/Japonesa.
  • Corregido un problema de paleta de colores de Kiddy en la pantalla de bonus tras usar el código oculto "COLOR". Normalmente solo se cambiaba la paleta de Diddy; este error fue corregido oficialmente en la versión japonesa 1.1.
  • Corregido un error en el nivel "Knautilus", si el jugador pausa el juego en el momento de que un rayo es lanzado, este continuará moviéndose y golpeando inevitablemente al jugador.

  • Versión 1.1 (07/01/2026):
  • Arreglado error que crashea el juego tras intentar guardar la partida en cueva de Wrinkly tras ciertas condiciones.


También puedes crear el parche tu mismo, link del proyecto.

5. Créditos

  • Gdkchan: Uso de parte de su código fuente para la herramienta de compresión y descompresión de textos.
  • Kingizor: Creador de la herramienta para extraer e insertar gráficos comprimidos de DKC3 y de su editor de niveles.
  • Insectduel: Creador de un parche para depurar DKC3 con todo el inventario lleno.
  • Blaziken257: Notas de ASM para el cambio de paleta de Kiddy tras usar el código "COLOR".
  • Mattrizzle: Notas de ASM para corregir el bug del rayo en el Knautilus al pausar el juego.

miércoles, 15 de octubre de 2025

[Notas Romhacking] 15-10-2025

Hace bastante que no creaba una entrada para contar en qué proyectos estoy trabajando, en parte porque muchas veces no estoy seguro de si los terminaré, y en otras simplemente por mera procrastinación.

En fin, comencemos:

1.- Donkey Kong Country 3 (SNES):


Trás terminada la herramienta de edición, me he propuesto en traducir este juego de la infancia de muchos, si bien existe la versión en español de GBA, personalmente nunca me gustó, es cierto que se considera superior en música y permite entre otras cosas un guardado más automático, pero el "zoom in" en los mapas, y  algunas modificaciones nunca me convencieron. Así que la solución para mi es hacer una traducción a la versión de SNES, para ello ocuparé parte del script de la versión de GBA. 


Entre algunas más complicadas. he modificado cierta rutina que pone al final la exclamación "!" cuando una etapa es pasada completamente (conseguir las 2 monedas bonus y la moneda DK), que debo decir que de las muchas veces que he jugado este título, nunca me había dado cuenta de esto, aquí parte de la rutina.

copy_stage_name:
	STA $FFE0,X		; Store current character into buffer
	INX			; Move output index
	INY			; Move input index
	LDA $A9DE,Y		; Load next character from stage-name table
	BIT #$00FF		; Test if character is zero (end of string)
	BNE copy_stage_name	; If not zero, continue copying
check_stage_complete:
	LDA $001C65		; Load stage completion flags
	AND #$001C		; 
	EOR #$001C		; Compare with full completion
	BNE return_to_routine	; If result != 0, stage is not 100%		
	LDA #$0021		; Add character "!"
	STA $7EFFE0,X		; Store after the stage name
	INX			; Move output index
return_to_routine:
	PLB			; Restore data bank												
	TDC			; Transfer Direct Page register to A (A = DP)
	STA $7EFFE0,X		; Store DP, add 00 to end
	RTS			; Return
Si bien encontrar la rutina me llevo un tiempo, en parte por mi falta de ganas. Modificarla ha sido menos complejo de lo que pensaba, puesto que si tuve que mover de sitio esta rutina, pero de manera afortunada en un espacio libre dentro del mismo banco, por lo cual no tuve que adentrarme demasiado en el código fuente. A continuación una imágen con el resultado después de modificar.



Así que si todo sale bien, será mi regalo de Navidad para la comunidad.

2.- Bomberman Jetters (GBA):

Este es el primer juego de Game Boy Advance que estoy traduciendo, y me he encontrado con varias ventajas que ofrece esta consola. La principal es que los juegos se cargan completamente en la CPU. ¿Y cuál es la ventaja de eso? —se preguntarán—.
Pues bien, en resumen, podemos acceder a cualquier parte de la ROM en cualquier momento, ya que no dependemos de manejar bancos que se vayan alternando, como ocurre en consolas más viejas, como la NES o la SNES.

Esto tiene un impacto directo en la traducción, ya que podemos mover el texto libremente a los lugares más convenientes, y solo debemos preocuparnos de manejar correctamente los punteros. Y qué mejor que hacerlo con mi propia herramienta, que gestiona punteros de 4 bytes en GBA (perdón por la autopromoción 😅).

Hablando de la ROM, esta es japonesa y nunca tuvo una versión americana, por lo que estoy usando como base una traducción puente realizada por Normmatt, quien además implementó la difícil tarea de incluir una rutina de texto con ancho variable (VWF).

Algo a destacar es que dicha rutina complica un poco el conteo de caracteres por línea, ya que el juego no formatea el texto automáticamente como en otros títulos. Así que habrá que tener paciencia con este proyecto, porque no sé cuánto me demoraré en completarlo.






Con respecto al apartado técnico que supone la traducción, los gráficos se encuentran comprimidos con LZ77, el algoritmo usado en la BIOS del GBA. Afortunadamente, nuestro colega CUE ha creado una herramienta que permite descomprimir y comprimir gráficos con facilidad. A él, por supuesto, se le darán los créditos correspondientes.

3.- Romancing SaGa (SNES):

Otro RPG. En este caso, mi idea inicial era ayudar a Damniel a pulir un poco su traducción, simplemente por mera satisfacción de ayudar a a terminar un proyecto de la comunidad. Así que comencé toqueteando la ROM para ver como modificar la introducción, integrar las letras del alfabeto español y ajustar las tablas de anchos variables presentes en la traducción puente, ya que este juego es originalmente japonés.

Sin embargo, soy consciente del tiempo que requieren este tipo de proyectos, y dado su poco tiempo disponible, él me ha autorizado a utilizar y modificar su trabajo para ofrecer una versión mejorada de su traducción.

Así que… próximamente 😉






Al igual que con Bomberman Jetter, alterar el texto con rutina VWF puede ser un calvario a la hora de contar caracteres, esto supone un gran problema a la hora de traducir, y es evidente la falta de una herramienta que se encargue de esto...

En el apartado técnico no tengo mucho que decir, si bien modificar los punteros es cosa sencilla, me he encontrado con un pequeño problema en el menú incial, en el que deber crear tu personaje, que impide volver atrás, por el momentos no lo he arreglado, porque me encuentro haciendo el grueso de la traducción, el script principal.

ROMS DE PICADILLO


Bomberman Tournament (GBA)

Internamente es igual al Jetters, por lo que debería ser relativamente sencillo, aunque igual de demandante en tiempo.

Bill & Ted’s Excellent Adventure (NES)

Si bien encontré los textos comprimidos en 5 bits, aún no he localizado los diccionarios de palabras del MTE que incluye internamente, pese a que sé cuáles son.

Otro punto desalentador es que los punteros parecen estar desordenados, lo que me hace pensar que requeriré una herramienta propia para modificarlos. Y sinceramente, ahora mismo me da pereza programarla, ya que necesitaría bastante depuración.

Wurm – Journey to the Center of the Earth! (NES)

Algo parecido ocurre con este juego. He encontrado los textos, el diccionario y los punteros, pero también están desordenados. En resumen, otro pequeño calvario.

Demi Kids: Light Version (GBA)

Mientras escribía esta entrada me había olvidado por completo de este juego. Actualmente manejo todos mis proyectos mediante batch files: de esta forma, al terminar, simplemente ejecuto un build.bat y se genera todo automáticamente, desde la ROM hasta el parche IPS. Esto tiene muchas ventajas, entre ellas poder mantener y modificar facilmente, teniendo un registro de todo, sin embargo me hace más olvidadizo, porque puedo dejar proyectos  a medio hacer, sin tener que preocuparme por olvidar cosas.

Entre lo que recuerdo, hace falta el dump completo del texto. Si bien  los gráficos comprimidos se encuentran extraidos y listos para reinsetarlos, creo aún hace falta algunos. Al menos encontré la fuente principal, que es una de las partes más importantes.

En cuanto al script, curiosamente maneja entradas multibyte, lo cual no debería representar un problema.






domingo, 28 de septiembre de 2025

23 - Traducción para Who Framed Roger Rabbit de NES al Español

Who Framed Roger Rabbit es un videojuego de acción y aventuras de 1989, desarrollado por Rare y publicado por LJN para la Nintendo Entertainment System (NES). Está inspirado de forma libre en la película homónima de 1988 y combina elementos de las aventuras gráficas de ordenador con un estilo de juego más tradicional de acción y aventura.

   





    


La traducción no ha supuesto mayor dificultad, fuera de configurar correctamente el descompresor/compresor de texto. Una cosa a destacar es que, una vez que las comadrejas del juego te capturan, te preguntan por el remate de una lista de chistes. Muchos de estos no tienen sentido en español, ya que son juegos de palabras, así que han sido reemplazados por chistes en español, puesto que esta es la gracia original del juego.

Este parche debe ser aplicado a la versión americana.

Database match: Who Framed Roger Rabbit (USA)
Database: No-Intro: Nintendo Entertainment System (v. 20210216-231042)
File SHA-1: 2D0637ADD8D84BE3E1CB754A91346AFA502904CD
File CRC32: E21DAB3E
ROM SHA-1: C8895753A379903F7B06F1D4A5CFB654F53390BB
ROM CRC32: 12B2C361

Versión 1.0 (28/09/2025):
- Traducido al español.
- Adaptados los chistes al español.
- Agregada la "ñ".
- Punteros editados.



miércoles, 17 de septiembre de 2025

22 - Traducción para "Dragon Warrior II" de NES al Español




Traducciones Koda tiene el orgullo de presentar la primera traducción al español del mítico Dragon Warrior II de Nintendo. Usualmente las entradas de traducciones no suelen ser muy extensas, más allá de detallar algunas características junto la ficha técnica, sin embargo en esta ocasión se desea recalcar algunos aspectos importantes con respecto a las características que incluye la traducción, como también el apartado técnico que ha supuesto traducir tal obra.

Antes de empezar, es importante señalar  que la traducción se basa en el script de la versión deslocalizada hecha por Translation Quest. Si bien en un inicio se había trabajado con la versión americana base, por recomendación de un amigo, Noishe se optó por usar esta versión, puesto que garantiza mayor fidelidad con el guión original, además de eliminar las censuras en diálogos, ilustraciones en algunos mapas, cambios a sprites de NPCs, y en general, todo lo relacionado con elementos religiosos.

1. Romhacking

El citado juego posee una compresión de textos de 5 bits. Aunque ya existía documentación al respecto y código que permitía su extracción, no se contaba con la parte más importante: la reinserción. Por ello se desarrolló una herramienta propia que permite automatizar el proceso completo: extracción, reinserción, búsqueda de diccionarios automáticos y formateo de punteros asociados. 

El espacio base de la ROM resultó ser muy limitado y, como se suponía desde el inicio, una traducción al español requería un mayor trabajo de romhacking. Afortunadamente, al ser un título bastante famoso, está bien documentado por la comunidad y, gracias a las notas de "disassembler", fue posible manipular parte del banco del script principal para moverlo a un lugar más conveniente, eliminando así las limitaciones de espacio para la traducción.

En general, las modificaciones de espacio no se limitaron únicamente al script principal, sino que también abarcaron las listas de nombres de monstruos, conjuros y objetos, así también los créditos finales. Asimismo, de poco habría servido ampliar el espacio de texto, si no se hubiera hecho lo propio con el espacio gráfico: por ello se expandieron los menús, para evitar recurrir a abreviaturas.



Además de expandirse las limitaciones de cadenas en los nombres de monstruos y conjuros.



Otro punto clave fue la edición de la rutina de plurales en inglés, que si bien comparte cierta regla como lo es agregar "s" al final de la palabra, las demás reglas son incompatibles. Es por esto que el código ha sido editado mediante ASM a las reglas de plurales del español, como se puede apreciar en las imágenes.

 


El juego, al ser el primero de la saga en incluir batallas contra grupo de enemigos, posee de base una rutina que indica la cantidad en pantalla. si bien cambiar los textos no supone un gran desafío, ocurre algo especial con el número uno, pues para contar se debe hacer uso del artículo un/una. Para solucionar esto, se creó una rutina que detecta el género del monstruo en pantalla.


Tras pruebas de funcionamiento, se detectó un error para dos casos de monstruos con terminaciones contrarias a lo que usualmente dictan las reglas, en este caso "Mano" y "Miasma", por lo tanto, tocó nuevamente agregar estas excepciones a la regla.



Otra funcionalidad que se agregó fue la anulación de la cuenta para los jefes, pues si bien esto sí está en la versión base, esto resulta extraño de aplicar a nombres propios, y lo hace muy poco natural. Esto ocurre para los siguientes monstruos: Atlas, Pazuzu, Belial (Zarlox), Hargon y Malroth (Shido).


2. Eliminación de Censura

Gracias al trabajo de Translation Quest se restauró la forma de cruz en el templo de Hargon, y la cruz en la iglesia de Cannock (Sumaltria), como el sprite original del clérigo. También se recuperaron otros diálogos que habían sido censurados en la versión occidental.



3. Nombres de la Princesa y el Príncipe

El juego incluye una rutina que asigna al azar nombres al príncipe de Cannock (Sumaltria) y a la princesa de Moonbrooke a partir de una lista predefinida. Sin embargo, este azar estaba condicionado: la elección dependía de la primera letra del nombre del protagonista, lo que provocaba que repitiendo el mismo nombre siempre se obtuvieran los mismos para los dos personajes.

Translation Quest modificó esta rutina para que la elección fuese totalmente aleatoria, lo que da mayor rejugabilidad al título. Asimismo, el nombre de la princesa ahora aparece durante la secuencia introductoria.
 

4. Características de la Traducción


La citada traducción incluye todos los signos de puntuación del idioma castellano. En cuanto a la terminología empleada se ha optado por el uso de los nombres japoneses para las ciudades, además se ha usado el nombre de Loto para referirse al héroe legendario. 

Otro punto importante es que esta traducción trata de estandarizar la terminología para los conjuros, objetos y nombres de enemigos con el doblaje contemporáneo. Para el caso de la inexistencia algunos de estos que no se encuentre estandarizado, se ha hecho uso de la traducción literal, dejando pendiente para futuro, una revisión completa de esto, con la pronta salida de "Dragon Quest I+II HD-2D Remake".

Se incluye un parche para cambiar los nombres de las ciudades a las de la versión americana, como también el nombre del guerrero legendario a Edrick.

5. Descarga

El parche debe ser aplicado a la versión americana con cabecera.

Database match: Dragon Warrior II (USA)
Database: No-Intro: Nintendo Entertainment System (v. 20210216-231042)
File SHA-1: D77A4F66E7314F3E67C1AC647DE3B72DD681A9E3
File CRC32: FFB8C056
ROM SHA-1: 191A131E7E27E121D094CC412FED87C708147B2C
ROM CRC32: 8C5A784E

Versión 1.0 (17/09/2025):
  • Traducido completamente al español.
  • Editada pantalla de presentación y de inicio.
  • Agregados caracteres del español.
  • Menús expandidos.
  • Función interna de refresco de pantalla expandida para que coincidan con los menús.
  • Editado tamaño máximo de cadenas para monstruos y conjuros.
  • Bloque principal del script expandido.
  • Editadas rutinas de plurales para el correcto uso del español.
  • Creadas rutinas que permiten identificar un enemigo o un grupo de enemigos, creando un byte de control nuevo para ha/han.
  • Creada rutina de control que permite identificar el genero de los enemigos, creando un byte de control nuevo un/una.
  • Arreglado un error en la función interna del byte "F2", para el conteo del oro.
  • Arreglada la función de detener el sonido de los diálogos de los personajes, tras cerrar un diálogo con el caracter ’.
  • Aleatoriedad completa para los nombres del príncipe de Cannock y la princesa de Moonbroke, ya no se usa la letra inicial del jugador como semilla para elección de nombres.
  • Eliminada la censura en el mapa del templo de Hargon y la iglesia de Cannock.
  • Recuperado el "sprite" original del clérigo en la iglesia.
  • Recuperados algunos diálogos censurados por la versión inglesa.
  • Créditos finales expandidos y traducidos.
5.1 Instrucciones

Se incluyen 2 parches, el principal "Dragon Quest 2 (ESP).ips" y el secundario  "Dragon Quest 2 (ESP)_localización_americana.ips" que utiliza los nombres para las ciudades de la primera localización de NES, junto con el nombre del héroe denominado Erdrick, además la pantalla de título se mantiene el nombre del juego como "Dragon Warrior - parte 2", más detalles sobre las diferencias en el README.txt

Ambos parches son independientes y deben aplicarse a la ROM base.

Además se incluyen 2 parches que modifican la dificultad del juego, uno con la dificultad americana, y otro con la japonesa, para las personas que quieran experimentar la dificultad original.

NOTA: Ambos parches citados arriba ya incluyen por defecto la dificultad americana, si se ha incluido es solo por si alguien decide arrepentirse.


6. Créditos

  • A todo el equipo de Translation Quest.
  • A Alex_231 por las notas iniciales de descompresión.
  • A Osteoclave por el código original de dumpeo.
  • A Noishe por recomendar usar esta versión.
  • A Wave por ayudar a hacer un repaso general al script.
  • Y en especial a los usuarios "abw" y "Joe73ffdq" por todas las notas de "disassembler", sin ustedes esta traducción no habría sido posible.