Guia de Hextractor

GUIA BÁSICA DE HEXTRACTOR/HEXVIEWER (V1.00)


Hola a todos, al fin voy a liberar mi herramienta y este tutorial y las preguntas que se hagan espero que ayuden a aquellos que les ha costado terminar una traducción.

Este tutorial y esta herramienta no son una guía de principiante, deben conocerse lo que son las tablas .tbl y la edición hexadecimal como mínimo antes de usar la herramienta.

Requisitos:
1-Windows (XP o superior)
2-Java 8 o superior (Hay que descargar el JRE)
3-Notepad++ (Opcional pero recomendado)

Descarga:
Hextractor



NOTA: proyecto es el nombre de la carpeta. y NOMBREROM el nombre original de la rom.

IMPORTANTE: Hextractor trabaja con ficheros UTF8 sin BOM, si queréis modificarlos con un programa que no sea el notepad++ (que lo gestiona automáticamente) tenerlo en cuenta.

Guía en youtube (V0.95):

https://www.youtube.com/watch?v=pPL_pq2c4WM


0.El entorno

Primero descargar e instalar Java, después el editor de textos.
Mi recomendación como editor de textos es Notepad++, cargad para los ficheros ext la configuración del paquete del hextractor, se llama "nppextlang.xml".
Para ello debéis ir a "Lenguaje"->"Defina su lenguaje"->Importar, y elegir el archivo "nppextlang.xml".
Cuando queráis abrir un archivo .ext (los de extracción de scripts) le decís que lo abra siempre con el Notepad++ y os saldrá algo así:

Las ventajas de esto son varias:
1-Los comentarios son verdes, después de un ";" todo lo que viene es un comentario.
2-Textos resaltados en azul, esto es lo que hay que traducir.
3-Bloques abribles y cerrables, los bloques empiezan por @ y terminan en un | (Caracteres reservados).

Recomiendo activar el "Ajuste de Línea", en el Menú "Vista".

1.Crear el proyecto de traducción

Paso 1:

Descomprimimos el contenido del zip en una carpeta que será la base de las traducciones.

Paso 2:

Ejecutamos Hexviewer con doble clic si java está correctamente instalado.
Os recomiendo leeros "Ayuda"->"Ayuda", ya que explica todas las acciones posibles y teclas.

Paso 3:

Pulsamos CTRL+N o Archivo->Nuevo proyecto

Paso 4:

Usamos el selector de archivos o arrastramos la rom a traducir, comprobamos el formulario y pulsamos "Crear..."
Aceptamos la confirmación.
Extra: este menú de creación admite el proceso en "batch" o lotes de roms, si le arrastramos varias roms a la vez, creará los proyectos para todas esas roms (con el nombre de proyecto por defecto).
Extra 2: también podemos crear nuevos proyectos arrastrando roms que estén en la carpeta de hextractor al fichero "createProjects.bat", hasta 8 proyectos a la vez.

Paso 5:

Cerramos hextractor y entramos a la carpeta del proyecto creado.
(El programa crea varios archivos bat que usaremos más tarde.)

2.Buscando las tablas del juego

Paso 1:

Lo primero sería cargar el juego en el emulador y detectar alguna palabra larga (por ejemplo ejecutándolo en el emulador y viendo la intro o similar).

Paso 2:

Abrimos el Hextractor y arrastramos la rom o la abrimos con "Archivo"->"Abrir Archivo..."
Para ello usaremos CTRL+R o "Herramientas"->"Búsqueda Relativa".

En caso de que la palabra tenga mayúsculas y minúsculas, mi recomendación es buscar solo por las minúsculas, ya que si no coincide la alineación de mayúsculas-minúsculas con la tabla ascii, no la encontrará.

Extra: el carácter * actúa de comodín, de modo que "C*SA", encontraría, "CASA", "COSA", etc..
Esto va muy bien para encontrar letras de 16 bits, ya que hextractor no da soporte para ello, pero sí podría encontrar una palabra del estilo "c*o*s*a", y si luego damos en la tabla caracteres a lo que hay en los *, podemos extraer de una forma legible caracteres de 16 bits (Aunque cuestan más de traducir).

Paso 3:

Una vez tenemos resultados, analizamos los mismos, si sale mas de una entrada y todas parecen usar la misma tabla, haremos clic derecho en una de ellas y elegimos que utilice la tabla.

Si no hay mas de una tabla y tendremos que hacer este proceso varias veces (guardando diferentes tablas y editando los ficheros de extraer e insertar).

Paso 4:

En este momento deberíamos poder ver el texto (o casi todo), para la tabla encontrada.
Guardaremos la tabla con CTRL+S o "Tabla"->"Salvar Tabla..."
El nombre de la primera tabla ha de ser igual que el de la carpeta del proyecto (o editar los ficheros de extraer e insertar).

Paso 5:

Ahora habría que refinar esa tabla, eliminar caracteres no usados y añadir otros caracteres.
Para ello tendremos que comparar el texto que vemos en el emulador con los códigos que vemos en el hexviewer.

Otra opción es usar un emulador que nos deje ver los tiles y así podemos refinar la tabla (si coinciden numero de tile con código del caracter).
Recomiendo utilizar el emulador BizHawk, ya que tiene soporte para ver tiles y más cosas de casi todas las plataformas.

Paso 6:

Una vez tenemos la tabla refinada, tocaría encontrar los textos.
Lo primero a hacer es desde una de las palabras antes encontradas, ver si las cadenas tienen un carácter de finalización, normalmente es 00 o FF.


Paso 7:


Accedemos a la pantalla de búsqueda de cadenas con CTRL+A o Herramientas -> Buscar todo...






El número son los caracteres que va a ignorar seguidos, si vemos que los textos a parte del carácter de finalizar tienen alguno más, aumentamos este valor, normalmente con 4 sirve.
Los caracteres de abajo es el carácter/es de finalización, ponemos el que hemos visto según el juego.
Le damos a buscar y nos generará un fichero "NOMBREROM.ext" con los textos encontrados (una vez termine la barra de progreso).











Como su nombre indica, busca TODAS las palabras que existan en el diccionario elegido en la ROM según la tabla elegida.
Esto es muy útil para evitar tener que mirar toda la rom, utiliza el diccionario "EngDict.txt" de la raíz.

 Paso 8:

Abrimos el fichero "NOMBREROM.ext".
Esto contiene la extracción de todos los textos del juego (y algo de basura), vamos a limpiarla.


Iremos eliminando todos los bloques que creamos que no son útiles.

NOTA: Cuidado al eliminar los bloques, han de eliminarse desde la @ hasta la línea del |, sino podemos dañar el archivo y no podremos seguir después.

Paso 9:

Abrimos el Hextractor (si no está ya abierto) y cargamos el archivo NOMBREROM.ext, ya sea arrastrando el fichero al programa o a través de "Rangos"->"Cargar Rangos" o CTRL+SHIFT+O.
También hay que abrir la rom y la tabla si no lo teníamos cargado.
NOTA: puedes arrastrar los 3 ficheros a la vez al programa abierto y los cargará.

Paso 10:

Con F5 ("Rangos"->"Rango Anterior") y F6("Rangos"->"Rango Siguiente"),
nos movemos por los rangos seleccionados, y los refinaremos de la siguiente forma:
Dentro de un rango podemos cortarlo con botón derecho y "Indica Inicio Offset" o "Indica Fin Offset", si queremos alargarlo, deberemos borrarlo y crear un rango nuevo (o elegir un inicio anterior y un final posterior, con lo cual "se come", a los otros rangos que haya dentro de él).
También se pueden hacer estas acciones con los botones "Inicio" y "Fin".
Al elegir "Indica Fin Offset", nos pedirá el (o los, pueden ser varios tal que 00-FF-01) caracteres de fin de cadena.

También podemos insertar nuevos rangos con "Indica Inicio Offset", y eliminarlos haciendo clic en ellos y pulsando suprimir o clic derecho en ellos y "Borrar rango".
Mi recomendación es intentar hacer los rangos lo mas grandes posibles y después utilizar botón derecho y "Partir rangos" con 1024 o el tamaño que deseéis.
El partido de rangos ayuda a ir avanzando los bloques traducidos y poder ir tirando "hacia abajo del archivo" los bloques traducidos.
También ayuda a que si se comete algún error, es más fácil detectarlo.

Una vez hayamos terminado de refinar, guardamos los rangos con CTRl+SHIFT+S o con "Rangos"->"Guardar Rangos..." (con el nombre del proyecto, es decir, el de la carpeta, el mismo que la tabla, el fichero hex, etc).

Paso 11:

Extraemos los textos con "1.extractScript.bat" y revisamos el fichero proyecto.ext, verificando que los textos extraídos sean correctos. Sino volveríamos a refinar con el paso 10.

Paso 12:

Si no tenemos ya el fichero tr_proyecto.ext, copiamos proyecto.ext como tr_proyecto.ext, si ya lo teníamos con algo traducido y hemos cambiado algún rango, habrá que abrir los dos archivos y pasar a la traducción las partes nuevas copiando los bloques correspondientes.

3.Traduciendo

Paso 1:

¡Traducir!
Ahora toca traducir el archivo tr_proyecto.ext, las tablas que genera por defecto el programa enmascaran las letras con acentos, ñ ¡ y ¿ como sus versiones normales, así que no tengáis miedo a usarlas aunque no tengáis su gráfico, más adelante en caso de añadirlo, con un simple cambio de tabla y reinsertándola, se activarán.
NOTA: SIEMPRE hay que sustituir un carácter por otro (recomiendo tener el modo INSERT), no debería dar otros problemas. (Aunque hay de todo)
También hay que tener cuidado al mover "caracteres de control" del juego (algunos no dejan), y con los caracteres "~00~" estos caracteres actúan como uno solo, no se pueden romper o no irá bien la cosa, de todos modos en estos casos el insert debería quejarse con que hay cosas raras. 

Paso 2:

Ejecuta "3.insertAll.bat" para crear el archivo TR_NOMBREROM, ¡y prueba tu traducción!

Paso 3:

Cuando ya tengas tu versión final, ejecuta "4.createPatch.bat" y se creará un archivo de parche para transformar el original en el traducido con nombre "proyecto.ips".

JUEGOS MULTITABLA

En caso de que un juego tenga múltiples tablas, deberemos repetir los pasos de la acción normal pero con alguna salvedad, estas son:
1-La tabla guardarla con otro nombre, (por ejemplo proyectoAlt.tbl, proyectoAlt2.tbl, etc).
2-Buscamos textos y generamos su archivo de rangos de la misma forma pero lo guardamos como proyectoAlt.off
3-Modificamos "1.extractScript.bat", copiamos la línea:
java -jar Hextractor.jar -a %SCRIPTNAME%.tbl %T_FILENAME% %SCRIPTNAME%.ext %SCRIPTNAME%.off
y la pegamos debajo como:
java -jar Hextractor.jar -a %SCRIPTNAME%Alt.tbl %T_FILENAME% %SCRIPTNAME%Alt.ext %SCRIPTNAME%Alt.off
Por tantas tablas como tengamos (con sus nombres de tabla)
4-Modificamos "3.insertAll.bat", copiamos la línea:
java -jar Hextractor.jar -h %SCRIPTNAME%.tbl tr_%SCRIPTNAME%.ext %T_FILENAME%
y la pegamos debajo como:
java -jar Hextractor.jar -h %SCRIPTNAME%Alt.tbl tr_%SCRIPTNAME%Alt.ext %T_FILENAME%
Por tantas tablas como tengamos (con sus nombres de tabla)
5-Cuando extraigáis los textos con "1.extractScript.bat", ahora os generará tantos archivos como tablas, cada uno tendréis que copiarlo como tr_nombreoriginal.ext para que "3.insertAll.bat" pueda insertarlos en la rom.
6-Y ya podemos ir cambiando los rangos que necesitemos, siempre podemos arrastrar tabla y rangos al programa para que cambie ambos.
NOTA: si habéis buscado rangos con una tabla y vais a buscar con otra, de limpiar los rangos con: CTRL+L o "Rangos"->"Limpiar rangos".

Comentarios

  1. Mientras que no podía descargar el Java decidí informarme con la guía que me compartiste y un tutorial en youtube y aprendí algo con el Windhex y aprendí hace las tablas y a modificar palabras, en si, aparte del aprender a traducir los Super Mario World pues quiero hacer uno que otro capricho como en el juego de chip and dale en cambia la palabra de Chop a Dale y Gadget a Gaddy como la version latinoamericana, con el Windehex metí en búsqueda Relativa la palabra Chop y me apareció para luego hacer la tabla y pude corregir el CHOP de la pantalla de selección Chip o Chop de la pantalla de inicio, pero cuando luego volví hacer búsqueda de chop no me aparecía y tampoco gadget; primera vez que hago el intento de traducir y por lo tanto solo pude avanzar hasta ahi pero la meta es prender con tu metodo y tus herraminetas, cualquier cosa es bien recibida cualquier ayuda.

    ResponderEliminar
  2. Wave una pregunta que tengo desde hace un par de años pero creo que ya es necesaria hacerla, sobre las capturas de las traducciones, veo que publicas capturas de los finales del juegos, Mi pregunta es , como haces para obtenerlas? juegas todo los juegos? o haces algún truco con el emulador? pregunto debido a que se me alboroto esto de traducir, hice lo que pude en Dirty Harry y creo que quedo algo biennpara se r mi primera, pero como tu sabrás uno debe llegar a la escena del juego para ver si esta bien el texto etc . Ya instalè el Bizhawk . muchas gracias de antemano

    ResponderEliminar
    Respuestas
    1. Suelo pasármelos enteros con trucos (invencible sobre todo) pero pocas veces te puedes saltar partes.

      Eliminar
    2. wow master, eso pues eso si es de dedicar mas tiempo.

      Eliminar
  3. Hola, tengo una duda. He leído y visto tu tutorial, pero siempre llego a la misma parte, no importa cuanto busque los diálogos del juego con hextractor con la búsqueda relativa, nunca aparecen en un juego GBA, probé con un juego de NES y con la búsqueda relativa me salieron a la primera. ¿Entonces solo se pueden traducir juegos de NES?

    ResponderEliminar
    Respuestas
    1. Hola, si los textos están comprimidos o las letras no están correlativas (te recomiendo buscar solo partes en minúscula o mayúscula por si un caso) no las encontrará.
      Esto no depende del sistema sino de como guarden los textos.

      Eliminar
  4. hola me gustaria traducir varios roms de snes, gba y nes ya que tengo mucho tiempo libre me gustaria traducir casi las 24 horas del dia a si k espero puedas ayudarme porfa

    ResponderEliminar
    Respuestas
    1. Pues empieza por algún tutorial de hexadecimal/tablas, etc y luego si quieres pásate a este.

      Eliminar
  5. Y para juegos de pc de MS-DOS, tienes algo?

    ResponderEliminar
    Respuestas
    1. Funciona igual, aunque puede que haya que modificar varios archivos, como en mi añadido del Cobra Mission.

      Eliminar
  6. ¿Hola todo bien?
    Me gustaría ayuda para traducir Gunstar Heroes al portugués brasileño.
    ¿Tiene algún consejo sobre cómo puedo encontrar la mesa para este juego?
    (perdón por mi español)

    ResponderEliminar
    Respuestas
    1. Hola, puedes consultar mi traducción aquí:
      https://github.com/sewave/translations/tree/master/smd/gunstarheroes
      Un saludo.

      Eliminar
    2. Wow, muchas gracias!
      Te daré crédito por esta gran ayuda amigo! X3

      Eliminar
  7. Hola wave, esta herramienta sirve para textos con compresion MTE/DTE?

    ResponderEliminar
    Respuestas
    1. Hola, es posible y he hecho varios juegos pero es un proceso bastante manual además de que en el visor no se muestran las asignaciones multiletra a una entrada de la tabla

      Eliminar

Publicar un comentario

Sugerencias de juegos:
https://traduccioneswave.blogspot.com/p/peticiones-de-juegos.html
Juegos que no traduciré:
https://traduccioneswave.blogspot.com/p/juegos-no-traducibles.html