jueves, 27 de agosto de 2026

Tres días de hackeos fructíferos

Aprovechando las vacaciones y que el calor ha dejado de apretar por aquí, decidí dedicarle unas horas a Policenauts recientemente, el resultado: maravilloso.

Recordaréis que en un test inicial saqué imágenes y textos, e incluso hice una pseudotraducción inicial. Me quedé satisfecho y ahí quedó la cosa. Pero obviamente había mucho trabajo por hacer todavía, trabajo que ha sido realizado durante estos últimos días y paso a enumerar:

Mejoras brutales en la detección de kanjis japoneses: el texto original no es SJIS: son índices a una tabla de fuente propia. Reconstruir el mapa kanji→carácter arrastraba errores de OCR. Hice una auditoría léxica sistemática (~500 correcciones) validando contra diccionario, contexto y el guion inglés de slowbeef como apoyo, alineándolo JP↔EN por orden para cazar los glifos equivocados que se me colaban.

El DATCH es necesario: en un principio pensaba que este hack no era necesario, pero el español ocupa más que el japonés. En vez de copiar la solución del equipo inglés de hace 16 años, integré un text-chaining propio (DATCH) vía hook en ASM: el bytecode original queda intacto y las traducciones largas se encadenan aparte.

Autosegmentador de líneas: a ojo de buen cubero se calculó el máximo de pixeles que caben en una línea y se construyó un autosegmentador de textos, que coloca el salto de línea en el punto óptimo.

Nombres de personajes cuando hablan: amplié en ancho de la textura de 40 px a 56 px. Dichos nombres estaban distribuidos en 3 columnas, los puse a 2 columnas, ya que había espacio para ello, así gané algo de ancho. No sé si será suficiente para todos los personajes, ya se verá.

Menús: hackeados y ubicados los menús de sistema (guardar/cargar, opciones), la gestión de Memory Card, y el menú interactivo de verbos (mirar/hablar/…) enganchado también por DATCH.

Subtítulos en las partes habladas: los audios llevan los subtítulos incrustados, curiosamente siguen la misma estructura que en Metal Gear Solid, la experiencia acumulada me ha permitido hackear esto rápido y fácil. A parte de los punteros propios de los subtítulos, hay un par de tablas maestras (TOC) que hay que tener en cuenta.

Subtítulos de las cinemáticas: los vídeos llevan los subtítulos incrustados, ya controlo la inserción de traducciones en ellos sin problemas.

Texturas sobre los vídeos: hay ciertas texturas, también incrustadas en ciertos vídeos, que muestran los TELOPS y diversos mensajes, costó algo de hackear pero también lo tengo controlado.

Creo que eso es todo, saludos.

jueves, 21 de mayo de 2026

¿Es posible traducir el Policenauts?

Hola a todos, os cuento el quilombo. Todo esto empezó a raíz de una conversación que tuve con Víctor hace unos días. Ya había leído antes los textos de slowbeef en Let's Play, viendo lo jodidamente difícil que fue traducir el Policenauts al inglés, eso unido a que Víctor lleva ya unos 14 años con ello, me dio curiosidad por ver el juego internamente, a ver si realmente es un proyecto maldito o no.

Sé que en general hay mucha gente en contra de la IA, pero yo al no tener ni idea de programación informática he tenido que apoyarme en ella.

Lo primero que hice fue volcar todos los archivos de las ISOs y estudiar estructuras, pronto descubrí los contenedores .DPK con sus subarchivos.

Luego me puse a buscar la fuente obviamente, cosa que encontré fácil y vi que hay varias de ellas, siendo una tipo Rodin y otra tipo Mincho, ambas con infinidad de kanjis. Una vez sacada la fuente vi que había que convertir de alguna manera todos esos kanjis low-res a algo legible por procesador de textos, usé software especializado de OCR y bueno, seguro que tengo algún que otro kanji mal, pero lo gordo ya está hecho.

Después descubrí dónde se alojaban los textos, todo está estructurado en los archivos .SZ, al principio no lo sabía, pensaba que era texto sin más, los saqué en formato XLIFF, hice unas pruebas de inserción, me di por satisfecho y lo dejé ahí para centrarme en las imágenes.

Respecto a las imágenes, vi que el equipo inglés nunca consiguió hackear el codec original de Konami y tuvieron que usar una técnica llamada LZO Hijack, pero yo a base de insistir conseguí replicar el codec original y ya saco todas las imágenes, o casi todas porque nunca he jugado al juego ni sabría deciros si las tengo todas ya, pero sé que son un montón. Esto de las imágenes fue bastante duro, estuve varios días dale que te pego.

Siguiendo con los textos, descubrí que al inicio de cada archivo hay un checksum raro (CRC-32/BZIP2), y además los textos en sí están codificados también de forma rara, MIPS negated se llama la técnica, ni idea de cómo explicároslo, pero lo que hace es aplicar una transformación de bytes.

Para terminar, entre ayer y hoy he conseguido hackear la expansión de textos, me inspiré en Metal Gear Solid. Siendo ambos juegos de Konami estaba bastante seguro que habrían usado estructuras similares, y creo que es así, hay un anidamiento de estructuras y cada estructura lleva punteros de tamaño. Cualquier mínimo cambió en strings de texto implica actualizar todos los punteros que haya por arriba de forma jerárquica, y esto es un quilombo de mucho cuidado.

Los ingleses nunca llegaron a hackear estas estructuras y decidieron hacer otro hack llamado DATCH, es decir mover los textos de sitio, punteros de sitio también, más añadidos ASM para leer todo esto. Por suerte nada de eso me ha hecho falta, mis textos se insertan en un principio en el mismo lugar que los originales, pudiendo expandirse o reducirse a placer, y actualizando todos los punteros necesarios.

Mi idea es compartir las cosas que vaya descubriendo por aquí, y quizá algún día traducir el juego al valenciano o catalán, ya veremos.

Test de inserción con pseudotraducción:



Tres días de hackeos fructíferos

Aprovechando las vacaciones y que el calor ha dejado de apretar por aquí, decidí dedicarle unas horas a Policenauts recientemente, el result...