viernes, 20 de marzo de 2026

[Notas Romhacking] 20-03-2025

Hace tiempo no subia una nota de romhacking, hablando sobre que proyecto estoy haciendo, para comenzar:

1.- [SNES] Doraemon 3 - Nobita to Toki no Hougyoku:

Una de mis metas con respecto al romhacking es aprender ha manejar el lenguaje de ensamblador, aunque este varía de consola a consola dependiendo del proecesador, ciertos elementos se mantienen. Para ponerme a prueba mi conocimineto, una de mis metas es ser capaz de programar una rutina de anchos variable (VWF en inglés). ¿Qué signifca esto? Poder replicar el "kerning" de las fuentes de window, de modo que cada caracter tenga su ancho. Muy a menudo este recurso es llevado a  cabo en juegos RPG que poseen una gran cantidad de texto, por ejemplo la saga pokemon, earthbound, entre otros. 

Otras de las razones para hacer uso de esta rutina es por la limitación de espacio visual que se genera tras traducir del japones. Como sabrán el Japones es un lenguaje silabado, y sus glifos puede decir en 1 caracter toda una palabra tanto en inglés como en español. No es difícil de imaginar lo dificil que es escribir los menus con esta limitación. Para ello se hace uso de los anchos variable, donde una "I" o una "L" pueden ocupar un espacio de 2 pixeles.

Dejando de definiciones, tras estudiar algunas guías que me aportaron algunos hacker como Bunkai y códigos 
VWF que mire de otros hacks que se hicieron del Japones al Inglés, como el Romancing Saga. Con orgullo puedo decir que he podido crear mi primera rutina de anchos variables completa  a partir de una talba de anchos.





Con esto he comenzado el arduo camino para la creación del proyecto, extraer el texto, ver los punteros. Extraer los gráficos, que dando un spoiler, sí, están comprimidos, por lo que he comenzado ha desarrollar todas la herramientas que me permitirán traducir este título.





Una aclaración primero haré una traducción al Inglés, la razón? creo que repercutirá un poquito más, ya que siendo sincero no soy muy conocido en la scene inglesa. Si bien es cierto que no me importa mucho la fama,     uiero que el timepo invertido llegue a la mayor cantidad de personas y que mejor que hacer una tradccuón inglesa. Pero no se preocupen, también crearé una traducción al Español, eso no lo duden.

Por último, no se si vaya a seguir actualizando este pryecto aquí, ya que esta página va del español, así que he creado un hilo en romhacking.net donde pueden seguir más de cerca el desarrollo del proyecto aquí.

2.- [NES] Shadowgate:

En un principio, comenté que Uninvited, Dejavu y Shadowgate compartian la misma compresión, si bien es cierto, debo de  admitir que he tenido problemas con este juego, el compresor funciona a medias, que significa, reprogramar, fuak. Lamentablemente lo dejaré pausado hasta que me vuelvan a entrar ganas para terminarlo, por el momento me obsesionado con el Doraemon.

Adios, me despido y hasta otra nota romhacking.


26 - Traducción para Uninvited de NES al Español

 


Uninvited es un juego de aventuras de apuntar y hacer clic, desarrollado por ICOM Simulations. Originalmente un juego para Macintosh de 1986, posteriormente fue adaptado para la NES y lanzado en Japón en septiembre de 1989.




1.- Romhacking

Para la traducción se ha hecho uso de una herramienta de mi autoría que permite descomprimir y recomprimir el script, así como formatear la tabla de punteros de manera automática. Además, se expandió el diccionario para poder agregar los caracteres del español.

2.- Censura


El juego originalmente está censurado en la versión americana, por lo que se ha hecho uso de un parche que permite remover las censuras hecha por el usuario Safaribanshttps://www.romhacking.net/hacks/660/



Otra descensura que si estaba incluida en el parche de Safaribans, pero que no contaba con su animación original es el zombi decapitado. La animación de movimiento de la cabeza a sido restaurada.


3.- Traducción

El juego cuenta con conjuros que le jugador debe usar en determinados momentos, Al principio no se quiso traducir sus nombres, sin embargo más adelante se tomó la decisión de traducirlos, para ello se han doblado manteniendo el juego de palabras que tienen  en su version original. Ejemplos
  • CLOUDISI -> NUBEDISI
  • STILLINI -> QUIETINI
  • THUNDEDE -> TRUENONO
  • TELEMAZE -> TELELABE
  • DOLLDOLL -> MUÑEMUÑE
  • O SESAME  -> O SÉSAMO
4.- Descarga

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

La ROM es:

Database match: Uninvited (USA)
Database: No-Intro: Nintendo Entertainment System (v. 20210216-231042)
File SHA-1: 38A0F366DF579C86679F54FE8803FE9D81223257
File CRC32: 8579FA86
ROM SHA-1: 6802A12A7A33D09C6DA6185A59DB69FDD5A9A6D9
ROM CRC32: 9BAC73EF

Versión 1.0 (20/03/2026):

- Agregados los caracteres del idioma español.
- Editada la pantalla de título al español y el final.
- Traducido completamente el script.
- Esta versión incluye un parche anti-censura realizado por Safaribans.
- Ojo del Zombi restaurado.
- Referencias religiosas restauradas.
- Máscaras en la habitación del maestro restauradas.
- Restaurado gráfico y animación del zombi decapitado.


5.- Créditos

- Safaribans: Versión original descensurada.


jueves, 19 de marzo de 2026

25 - Traducción para Déjà Vu de NES al Español




Déjà Vu es un juego de aventuras de apuntar y hacer clic de 1985 desarrollado por ICOM Simulations para Macintosh como la primera entrega de la serie MacVenture- Ambientado en el Chicago de la década de 1940 , la historia sigue al detective Ace Harding en su intento de limpiar su nombre y recuperar sus recuerdos tras ser incriminado por un asesinato. La temática se inspira en variasnovelas y películas de detectives de temática dura.

Déjà Vu se lanzó por primera vez en octubre de 1985. Posteriormente, se adaptó a varias plataformas, como Amiga , MS-DOS y Nintendo Entertainment System . Inicialmente, el juego presentaba gráficos en blanco y negro, y versiones posteriores introdujeron el color. Una secuela, Déjà Vu II: Lost in Las Vegas, se lanzó en 1988.







1.- Romhacking

Para la traducción se ha hecho uso de una herramienta de mi autoría que permite descomprimir y recomprimir el script, así como formatear la tabla de punteros de manera automática. Además, se expandió el diccionario para poder agregar los caracteres del español.

2.- Censura


El juego originalmente está censurado en la versión americana, por lo que, como trabajo previo, se ha creado un parche que permite remover dicha censura:
https://www.romhacking.net/hacks/9368/


Entre los elementos censurados se encuentran la sangre del cadáver y el caimán.



Además, se ha restaurado la pantalla de título original, junto con la pantalla de game over.




También se ha descensurado la palabra jeringa y silla eléctrica, dejándolas tal como en su contraparte original.

3.- Corrección de Errores



El juego base tiene un pequeño bug de desborde (overflow) en el contador de monedas. En términos normales, superar las 255 monedas reinicia el contador a 0. En general, sobrepasar este límite durante un gameplay normal es extremadamente difícil; sin embargo, al traducir el juego se genera una nueva problemática.

Para que se entienda: la cadena para el nombre de los objetos está limitada a 8 caracteres. Si se cambia la palabra COIN por MONEDA, no se excede este límite, pero el juego tiene una rutina que agrega un contador a esta palabra, es decir, se añade =<cantidad de monedas>. Suponiendo que tengamos una cantidad de tres cifras, al sumar todo —por ejemplo, MONEDA=100— se excede el límite por 2 caracteres.

Para resolver esto se ha utilizado tiles vacíos para acortar la palabra MONEDA, reduciéndola en 1 tile, y mediante ensamblador se ha limitado el contador de monedas a 99. Además, se ha corregido el bug de desborde, por lo que al llegar al máximo el contador simplemente se quedará en 99.

4.- Descarga


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


La ROM es:


Database match: Deja Vu (USA)
Database: No-Intro: Nintendo Entertainment System (v. 20210216-231042)
File SHA-1: B15BB34CC2392323AC16DE1A6EA4198DE1971DC1
File CRC32: 67B25DB5
ROM SHA-1: C8CA009CFB56EDB86ACD8BB8F05D96D19132AD66
ROM CRC32: 43D01C10


Versión 1.0 (19/03/2026):

- Agregados los caracteres del idioma español.
- editada la pantalla de título al español y el certificado al final.
- Traducido completamente el script.
- Pantalla de título restaurada japonesa
- Sangre del caimán restaurada.
- Gráficos del baño de mujeres restaurados.
- Sangre del cadáver restaurado.
- Pantalla "Game Over" restaurado japonesa.
- Reemplazado silla de dentista por silla eléctrica.
- Reemplazado capsulas por jeringas.
- Pantalla final retraducida y más fiel a la versión japonesa.
- Se ha limitado el máximo de monedas a 99. Para evitar un bug gráfico.




5.- Créditos

- Ryu: Por el parche sin restaurada que contiene una traducción más fiel del final.




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.