Translate

lunes, 26 de enero de 2015

Rom Translator

Este programa pretende traducir todos los ROM de NES y Otros equipos, por supuesto no lo logra, jajaja, pero de ilusiones también se vive. lo tengo muy atrasado, desde el 2011, vamos a ver si termino algo que empiezo.

MANUAL
El programa puede abrir un archivo .BIN de NES, si estos archivos los abres con un editor Hexadecimal podrás ver que empiezan por la palabra NES. estas letras son parte de 16 bytes que son la cabecera del ROM e identifica ciertos datos del mismo ROM.
Si dentro del archivo logras ver las palabras del juego, no tendrías problemas en traducirlas, claro siempre que no te pases de los tamaños de las palabras en ingles.
Si el archivo esta encriptado, no podrás ver las palabras.

Que hace el programa
Busca palabras comunes usando algunos métodos de des-encriptación.
Entre ella puede buscar estas palabras u otras que el usuario escriba.

START=JUGAR
GAME=JUEGO
PLAYER=JUGADOR
SCORE=PUNTOS
START=INICIO

Busca las palabras anteriores en ingles, según 2 métodos.
1.- Rotación de carácter: suma 1 a cada codigo de carácter de la palabra (No del ROM, es mas rápido así) y los busca en el rom, si no encuentra las palabras suma otro 1 a cada código de caracter y así hasta 256 rotaciones. Si detecta las palabras se detiene y ya lo tenemos des-encriptado.

Si no, usa el siguiente método
2.- XOR de las palabras por un numero (0- 255), para ver si están en la ROM

Por ejemplo el ROM 1943 - The Battle of Midway (U).nes esta encriptado y al abrirlo con el programa lo desencripta, por rotación con el codigo 0x6B o 107, esto quiere decir que rota 107 veces cada letra o mas exactamente le suma a cada codigo ASCII 107 y si el resultado es mayor de 255, resta 255.
Es de notar que una vez desencriptado, generalmente la palabra NES no se podrá ver.
Esto tambien se puede hacer manualmente cambiando el método e introduciendo el codigo a mano (no tiene mucho sentido pero se puede).
También se pueden usar otras palabras, por si las de arriba no están, (usar BUSCAR).

Si el ROM no esta encriptado, pasa a la siguiente etapa.

Luego busca palabras según un método (sin diccionario) y las trata de traducir según el diccionario preexistente o una por una a mano (las va agregando al diccionario) por lo tanto el diccionario se incrementa con cada palabra que traduzcas y con cada ROM, (aquí tengo algunos problemas, ya que comparten las traducciones de las palabras a veces hay choques y no traduce bien)
El método de buscar palabras tampoco es bueno pues encuentra muchas tonterías, un diccionario de palabras a buscar seria mejor pero cada juego cambia mucho (veré que hago).
Sencillo por ahora, Abrir, Grabar y Opciones.

Menú











En la barra superior pone:
BUSCAR: aquí colocas la palabra a buscar para ayudar a la des-encriptación, normalmente no es necesario pues automáticamente o usando el botón [Auto], el sistema lo hara solo, para esto usara las palabras del diccionario (lista anterior).
Si lo des-encripta coloca el método y el codigo
Caracteres: Debido a que tome los caracteres de otro programa anterior (el juego de caracteres de la Color computer) se ven esos colores, esto lo tendré que cambiar a algún juego de caracteres NES (el cual no existe).
ANCHO: Quitarlo (no sirve aca)
ZOOM: Agranda o encoge las fuentes

OPCIONES:

Diccionario: 
Editor: Nombre del editor para ver el diccionario, normalmente notepad.exe, puede tener una ruta de ser necesaria.
Diccionario: Ruta del archivo de diccionario; normalmente C:\Documents and Settings\Operador\Datos de programa\RomTranslator\Diccionary.txt

Al Abrir
Des-encriptar con palabras sugeridas (automático)
Buscar textos a traducir.

Opciones al buscar textos:
Tamaño mínimo: Es el tamaño mínimo que debe tener una palabra a traducir y puede ser de 1 a 10 letras (normalmente 3). El problema es que si tratas de buscar palabras de 1 o 2 letras puede haber muchas falsas.
Espacio: Normalmente el espacio es el carácter 32 pero en muchos roms es otro código ASCII
Ver como espacio: Al estar marcado, veras el carácter elegido como un espacio verdadero

Aceptar palabras con letras:
Tiene varias opciones a elegir, se sugiere buscar palabras con mayúsculas, sin minúsculas, sin números, sin mínimo 1 vocal, puede tener espacios repetidos y un máximo de 1 repeticiones (0=LIBRE).
Tiene un botón de predeterminados.

El sistema tratará de buscar palabras en el otro idioma (sin diccionario) y se las presenta para que luego las puedas traducir (manualmente), el sistema guardará el diccionario de las que cambies y así servirán para otro ROM.

El problema viene si no encuentra las palabras, habría que marcarlas y esto no esta terminado, acá es mejor en editor hexa-decimal, aunque el sistema las marca en la parte de vista de caracteres, no camina muy bien.

Al ir encontrando palabras te indica en que lugar están y su ancho en letras, una muestra de la palabra y la misma traducida o para traducir.
Al tocar una linea te la ubica en la vista de caracteres.
Las palabras las puedes traducir una a una o si ya tienes un diccionario, el solo lo hará.

Para traducir cambie la segunda copia de la palabra, el no permitirá una palabra mas larga que la original y rellenará de espacios si es mas corta.

Al grabar, se debe encriptar de nuevo, a menos que lo desee grabar des-encriptado para usarlo con  algún otro editor

GENERAR PARCHES AUTOMÁTICAMENTE
En el menú de herramientas hay una opción de parches automáticos. (por mejorar)
- Trabaja un directorio completo.
Esta función crea archivos de parches .IPS a partir de los ROMS Originales y los ROMS modificados, por comparación, Generando los respectivos archivos de Parche (*.IPS), Los ROMS originales se reconocen por no tener corchetes [ ] y los modificados si.
- Falta el trabajo contrario, Parchear todo el directorio.
- Falta Parcheo individual y lo contrario


Al colocarle un directorio con archivos de ROM NES, el buscara los originales (sin corchetes), y los comparara con los modificados (mismo nombre con algún adicional y corchetes), también creara los archivos IPS de parches, que se pueden usar en emuladores como Nestopia que acepta el rom original + los archivos IPS, sin necesidad de los archivos de copias parcheadas, ocupando menos espacio (esto ya no es muy necesario, porque realmente no son grandes pero esa es la idea)

El formato de los IPS esta acá romhacking IPS format.txt que en resumen es
5 bytes Palabra 'PATCH'
3 bytes Posición a cambiar (en formato little-endian) Menos significativo primero
2 Bytes Tamaño a cambiar (en formato little-endian) Menos significativo primero
Si son ceros, el Byte siguiente es un byte a repetir y el byte siguiente, la cantidad de veces.

RomTraslator V0.81Pack.zip
RomTranlator V0.80.zip

Foro en español http://www.retrowiki.es/fororw/viewtopic.php?f=768&t=31773