¿Por qué no se borra toda esta porquería de mensajes que no conducen a nada? (sobre todo los de tipo SMS, que hacen más daño a la vista que meterse un tenedor oxidado en el ojo).
Volviendo al tema principal y dejando ya de lado los lloriqueos de nadie, la traducción de estos juegos me parece la cosa más simple del mundo. No digo que sea fácil porque ni me he puesto con ello ni creo que me ponga, pero entre los montones de basura que tengo por el disco duro he encontrado alguna cosilla que hice hace tiempo y creo que os puede interesar. Lo primero: el tema de la longitud de los textos o las fuentes lo puede resolver cualquiera. Cada fichero con textos (los X5*.BIN, si no lo tengo mal apuntado) lleva la fuente incorporada. Estos ficheros son, más o menos, de la siguiente manera:
cabecera
- 12 bytes con los datos a la fuente (4 bytes con el offset, 4 bytes a 0, 4 bytes a 0)
- 12 bytes con los datos a NI_ZORRA_IDEA (4 bytes con el offset, 4 bytes a 0, 4 bytes a 0)
- 12 bytes con los datos a los punteros de las páginas de los textos (4 bytes con el offset, 4 bytes a 0, 4 bytes a 0)
Los offsets están puestos como direccionamiento de memoria, así que no os extrañéis si son del tipo 0x0020XXXX (no sé si se usan sólo los 4 últimos digitos hexadecimales o sin son 5, pero tampoco me preocupa mucho el tema, la verdad).
La fuente es lo más simple del mundo. Es un simple bitmap de 1bpp, de 14 pixeles de alto y 16 de ancho, con 2 bytes antes de cada carácter indicando el ancho que se usará durante el juego. Un ejemplo extraído:
Si os fijáis bien, la primera línea de cada carácter tiene unos "puntitos". Es la anchura mencionada y realmente no forma parte del carácter, pero mis juguetitos la sacan como si fuese parte del mismo.
La segunda parte, eso que denomino "NI_ZORRA_IDEA" es eso mismo: NI PAJORERA IDEA de lo que es y nunca tuve tiempo ni ganas de averiguarlo. Lo que se ve a simple vista es que son 512 punteros que apuntan a una de datos que está entre la fuente y los punteros y a saber lo que significa.
La tercera parte direcciona a una zona con 9 punteros, que apuntan a una zona entre lo anterior y ésta. Creoq ue son algo así como páginas de textos (9 páginas de 256 textos). Estos textos tienen el siguiente formato:
- 1 byte con la longitud N
- N bytes con el texto, que está codificado o comprimido, y es donde nunca me apeteció meterme
Si la longitud N es cero indica que se han acabado los textos de la página.
Un ejemplo (el primer número es la página, el segundo el número de texto y el tercero es la longitud, seguido de los datos):
0-00=0A: 8D EA F7 A0 2E 68 61 7B 4F A0 (esto es "Select a file")
0-01=0C: 8D EA F7 A0 2F C3 E5 03 1E E5 3E 80 (esto es "Select an option")
0-02=0F: 8D DC B0 6A 47 DF 3D 3F C3 F8 ED 3D 6B 4F A0 (esto es "System or cartridge?")
0-03=10: 94 D9 D2 1E 3B F7 B6 90 16 2C 68 61 7A D6 9F 40 (esto es "OK to erase this file?")
Hace tiempo eché un ojo a los programas usados para traducir el juego y, para ser sinceros, me parecen bastante coñazo, pues es muchísimo más sencillo traducir un simple fichero de texto que como lo tienen. El problema que me encontré entonces es que no hay documentación sobre la compresión de los textos y pasé del tema, pero sabiendo cómo es no cuesta nada extraer los textos a simples ficheros para poder ser traducidos. Insertar los textos o la fuente modificada tampoco es problema, pues sólo hay que actualizar los ditintos punteros. En total serían los 3 que hay en la cabecera, los 512 de la segunda parte y los 9 del final.
Más o menos lo anterior debería quedar así:
0-00=[Select a file]
0-01=[Select an option]
0-02=[System or cartridge?]
0-03=[OK to erase this file?]
.....
Creo que tener un fichero con los textos de esta forma facilita muchísimo la labor de traducción.
Repito: a mí no me interesa ni el juego ni su traducción, pero si alguien consigue la documentación sobre el sistema de compresión o codificación, y teniendo algo de tiempo, puedo hacer unos juguetitos para el tratamiento de los textos. Para las fuentes no hay ningún problema, las puedo sacar sin problema.