DarkAyane escribió:Será que este podría ser también un archivo Playstation File System o PSP File System?
Nop, sorry, no tienen nada que ver. Al fin y al cabo la extensión es sólo parte del nombre y no tiene nada que ver con su estructura o contenido. A mi conocimiento sólo el Valkyrie Profile usa ese formato de fichero, y sólo los programas que desarrollamos son compatibles. Como mucho no recuerdo si los Star Ocean de PSP lo usan también, pero eso sería todo.
DarkAyane escribió:por lo que si logro dar con los datos correctos (aún dudo que estén descifrados...
)
La mayor parte de los datos del juego están comprimidos usando un formato proio llamado SLZ. Éste soporta varios modos de compresión, y está basado en LZSS, aunque no es exactamente igual al LZSS estándar. En su momento le hice ingeniería inversa al algoritmo para poder descomprimirlo.
En cualquier caso incluso tras descomprimir todo, no verás texto ninguno. Incluso es discutible si el juego tiene textos o no. Me explico:
- Muchos de los ficheros (no recuerdo cuántos exactamente, pero hablamos de miles), tras descomprimirlos, son pequeños paquetes compuestos de un script de código, y varios ficheros de recursos (sprites, audio, etc..). Cada uno de estos paquetes corresponde a una zona concreta del juego (una "pantalla") y regula el comportamiento de ésta a lo largo del juego.
- Por tando, dos evento en diferentes momentos del juego que sucedan en el mismo lugar, usarán el mismo script.
- El script tiene una zona en su código que regula la generación de ventana de textos. Además, uno de los recursos que le acompaña, es una fuente, sólo con los caracteres usados en su script correspondiente. Esto se traduce en dos cosas:
* El "texto" no está ordenado por eventos, sino por zonas, lo cual dificulta su traducción, dada la falta de contexto consistente.
* El juego tiene literalmente miles de fuentes. Tras traducir una "pantalla", el programa de reinserción tiene que generar una fuente compatible sólo con los caracteres usados en esa pantalla.
- La sección de código que genera el texto incluye un array de íncides a su correspondiente fuente. Por tanto puede considerarse que cada texto tiene un encoding diferente. Aunque a mi forma de ver, no es texto, sino un programa de dibujo de caracteres.
La forma en la que tradujimos el juego fue tal que:
- Durante la extracción y descompresión incial, aislamos todos los caracteres de todas las fuentes, eliminando duplicados (esto es posible ya que afortunadamente los datos binarios de un mismo caracter no varían entre diferentes fuentes).
- De uno en uno asignamos un caracter de texto a cada carater de las fuentes.
- Con esta correspondencia, parseamos cada fuente para generar una tabla de decodificación. Por ejemplo, si una ventana contiene el texto "Hola Mundo", la fuente incluirá los caracteres (HolaMund), y el array de índices dentro del script será "1234056781" (Si no recuerdo mal, el valor 0 correspondía siempre al espacio, estando el array de texto indexado a 1).
- Con esto es suficiente para extraer el texto de la mayor parte del juego. Revirtiéndolo todo es posible reinsertar.
Como ves es un error comparar este juego con cualquier otro, al menos en lo que se refiere al romhacking (excepto quizás otros juegos de Tri-Ace de la época). En aquellos tiempos los desarrolladores aun sabía programar y no dependían de herramientas estándar de terceros que luego encuentras usadas en medio catálogo de las plataformas actuales.
DarkAyane escribió:tal vez me base en tu parche para traducirlo... estaría bien verdad?
Por mi no habría ningún problema, aunque no creo que la traducción en sí sea muy buena y persomalmente, lo traduciría desde cero si fuera a empezarlo otra vez. Por mi parte me encargué principalmente de romhacking y programación y apenas toqué el texto
Un saludo:
~Sky