No se entra así como así en Moria, éste archivo tiene truco y no es un TXT normal. Parece ser un grupo de bloques, como se describe a continuación, que a su vez contiene un grupo de bloques de texto (descritos a continuación de la continuación... y así todo el día ;P).
TIPO BYTES ALIAS DESCRIPCIÓN
--------------------------------------------------------------------------------
uint 4 ID Un identificador. En estos dos archivos, es
33340001 que es texto de 1 bytes por
carácter. Dado que permite japonés, hebreo y
otros idiomas no latinos, podría haber algún
identificador que indicase 2 bytes por
carácter.
uint 4 Offset Posición donde termina el bloque.
byte[] ? Bloques Los bloques de texto con su correspondiente
formato más abajo. Parece que siempre deben
ser 64.
TIPO BYTES ALIAS DESCRIPCIÓN
--------------------------------------------------------------------------------
byte 1 Offset El tamaño de la longitud de la cadena. Como
máximo, puede mostrar 255 por cadena en
TINSEL V1 (Discworld 1).
char[] Tamaño Texto El texto dicho por el personaje.
Si un texto tiene un tamaño de 0, entonces no habrá texto pero seguirá contando el ID... supongo, claro. Lo comento porque el primer texto (y algunos bloques del final) sólo tienen huecos vacíos. Curiosamente, parece que cada conjunto de bloques tiene una cantidad de 64... ¿valor fijo?
No parece muy complicado hacer un programa sabiendo esos datos, pero hasta que no se haga el programa es un trabajo de chinos personas asiáticas ultrapoderosas comparar líneas.
Fun Fact: la versión en castellano contiene trozos de texto de la versión en inglés, lo cual indica que el programa que usaron para crear estos archivos sobrescribía archivos (esto es una suposición, claro). ¿O hay cosas sin traducir? ¿O es cut-content? (¿Cut-Content? Como me vengo arriba).