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.- 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.

2.- 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.
  • Agrega 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.

miércoles, 9 de julio de 2025

[ACTUALIZACIÓN] Hexstring v1.4.0

Nueva actualización de la herramienta hexstring.

Lista de cambios (09-07-2025):

ELIMINADO:

- La opción de ignorar un código de fin de línea hasta que algo sea decodificado.

CORREGIDO:

- Arreglado el caso que la codificación DTE/MTE al tener bytes crudos eran separados incorrectamente, po lo que la optimización de la claves era afectada.
- Arreglado soporte completo al UTF-8, ahora se puede utilizar caracteres de otros idiomas como por ejemplo el japones.
- Arreglados algunas opciones mal escritas.

MEJORAS:

- Lineas en el script que inicien con "/" serán ignoradas.
- Códigos escritos entre corchetes en las tablas .tbl y que conincidan con los corchetes de los bytes crudos podrán ahora ser utilizados.
- Mejorado el tiempo de busqueda de claves DTE/MTE.
- Mejorada la interfaz.
- Mejorada la calidad de vida del código.

NUEVAS FUNCIONES:

- Agregados atajos de teclado.
- Agregado barra de estado en la esquina inferior.
- Soporte a tablas multibyte.
- Herramienta de análisis de script. (Ahora peude buscar los caracteres que se encuentren en el script, como los que no son usados, además la búsqueda de mejores combinacioones para DTE/MTE.
- Herramienta para compresión de texto. (LZ77-LZSS-LZW) *experimental por el momento.

Recuerden el tutorial paso a paso lo tienen aquí.

Link de descarga aquí.