He estado dedicando algo de tiempo a este proyecto en este par de meses que no escribo por aquí y os traigo novedades. Lo primero obviamente es encargarme de la parte más extensa del juego que son los diálogos (es un juego de Kojima por lo tanto hay muchísimo texto que traducir).
Los textos están ubicados, como ya comenté, dentro de los archivos .ISZ, en SHIFT-JIS byte-negados. Antes de los textos hay puro bytecode de la VM que hicieron los programadores de Konami. Le pedí a la IA una especie de compilador/descompilador y lo hizo, sacando todos los opcodes y toda la pesca.
Eso no fue lo único, al ser un juego que nunca salió de Japón, he tenido que meterle numerosos hacks para adaptarlo a idiomas occidentales, hacks que paso a enumerar:
- Fuente VFW. El juego original solo admitía caracteres japoneses de 12 x 12 pixeles, fue costoso la VFW pero al final la conseguí. Como peculiaridad, os diré que el caracter que ocupa el lugar de la O y la W está reservado para un par de códigos de control (salto de línea y código de color), así que esos no se pueden usar en un principio, pero como hay espacio de sobra no importa demasiado.
- Ampliación del buffer reservado en RAM de los archivos .ISZ. Resulta que los textos traducidos al español ocupan más que los textos originales (el español como sabéis es un idioma muy expansivo) así que he tenido que duplicar el buffer reservado a este propósito.
- Codificación de caracteres a 1 byte por caracter. En un principio, siendo el juego en SHIFT-JIS, cada caracter japonés ocupa 2 bytes, y la idea era usar también esta codificación a doble byte en mi traducción, pero los ISZ, como he explicado antes, tienen un buffer reservado en RAM que no permite ampliarlos hasta el infinito, hay limitaciones de espacio y hay que ahorrarlo como sea. Entonces los primeros 96 caracteres ahora ocupan 1 único byte por caracter. Metí el ASCII clásico, ya que es lo que más voy a usar, y así ahorro mogollón de espacio en el bytecode.
- Tabla de remapeo indexada: el juego original usa opcodes con doble función, pero al expandir los textos durante la traducción dichos opcodes pierden esta doble funcionalidad y ya no sirven, entonces se ha optado por añadir al final de cada archivo .ISZ una tabla indexada con el nuevo mapeado de cadenas de texto. Esto es más complejo de explicar, lo he simplificado lo máximo que he podido.
A parte de todo esto he conocido por Discord a un chico llamado Killer Bee que al parecer también está interesado en traducir el juego, y de momento me está ayudando con el tema de los audios, clasificándolos, etiquetándolos y viendo su traducción al inglés. La idea es hacer un doblaje al español cuando llegue el momento, ya buscaremos al equipo adecuado para ello.
Por otro lado las imágenes también las extraigo con facilidad todas ellas, no he traducido ni re-empaquetado ninguna todavía, he preferido centrarme en los textos, pero ya llegará esa parte.
También decir que en un principio contacté con los chicos que tradujeron al español el Snatcher de Sega Mega CD, y uno de ellos (Drasglaf) me dio permiso para usar los textos con dos condiciones: darles crédito y no usar nunca la traducción con ánimo de lucro. He estado revisando los textos estos, y no siendo una mala traducción, hay cosas muy mejorables, así que no usaré la traducción tal cual, como mucho me apoyaré en ella pero prefiero darle mi toque personal a los textos.
Creo que eso es todo, por mi parte voy a seguir traduciendo los extensos textos y ya os iré informando de más novedades. Os dejo este pequeño adelanto que puse en Youtube hace unos días: