La tabla es como te digo porque la N64 trabaja con el byte más significativo primero, justo al revés que otras consolas, y no es la primera vez que tengo que crear la tabla así. Eso no quiere decir que en otras ocasiones no se cree como la tienes tú.
Se puede comprobar de una forma muy sencilla. Fíjate en la primera imagen que has puesto, donde únicamente hay textos, sin códigos raros. Se puede ver claramente que el fin de cada línea de texto es el código 0xFFFF (por experiencia, no porque consideremos que es el código más bonito), y cogiendo de 2 en 2 los bytes que le preceden se puede construir la tabla. Si lo haces a tu manera, nunca encontrarás el código 0xFFFF pues interpretas que cada uno de los bytes esté en códigos diferentes, y por eso tienes que crear varios alfabetos, según el byte final que pongas. Eso hará que al final tengas que crear 256 tablas, donde el primer byte indicará el carácter real y el segundo cualquiera de los 256 posibles valores.
Aquí te la subo, para que la pruebes:
http://www.megaupload.com/?d=BNPN8X87
Verás cosas raras. Por ejemplo, con la tabla que usas ves "Transyl" pero con la mía resulta que es "ransylv", pero eso es debido a los códigos de compresión/control que hay, que hacen que los textos empiecen en una dirección par o impar, o que estén completos o no. Para poder ver los textos en condiciones hay que sacar todos los códigos, pero me temo que no es tan sencillo como parece, y se debe empezar a interpretar los textos desde su inicio. En este caso, "Transylvania" no es el inicio del texto, pues forma parte de más cosas.
Analizando un poco lo que hay, hay un montón de códigos de 2 bytes, además de los caracteres. AA-00 indica inicio de selección, y luego se ponen las opciones a elegir precedidas por AB-00, y el bloque de selección termina con AC-00. En otros casos se emplea AB-nn, donde 'nn' se va incrementando. Puedes buscar los textos de comprar/vender, que ahí se ve bien.
Parece que si un código es del tipo Ax ó Bx siempre va seguido de otro byte. Otro código que parece que es válido es el 0x0000, que indica final de un bloque de líneas de texto. También hay códigos de 3 bytes, y aquí dejé de mirar.
Pero el mayor problema es que, efectivamente, hay textos comprimidos con alguna variante de compresión LZ. En los siguientes bytes se ve bien, que corresponden al texto inicial del juego:
Código: Seleccionar todo
??8F <-- aquí va más, pero ni idea
36 T <-- el 00 viene de antes
0054 r
0043 a
0050 n
0055 s
005B y
004E l
0058 v
0C0C85 <-- aquí indica 'an', que está 0x0C bytes antes
coger 0x05 bytes de 0x0C bytes antes: 00-43-00-50-00
4B i <-- el 00 viene de antes
0043 a
000E ,
09309A <-- ni idea
004B i
0050 n
0002 <espacio>
0056 t
004A h
0047 e
0002 <espacio>
004F m
004B i
0046 d
0002 <espacio>
0013 1
001B 9
0C1496 <-- aquí indica 'th', que está 0x14 bytes antes
coger 0x05 bytes de 0x14 bytes antes: 00-56-00-4A-00
02 <espacio> <-- el 00 viene de antes
0045 c
0047 e
0050 n
0056 t
0057 u
0054 r
005B y
0010 .
A300 <-- ni idea
FFFF <fin>
...
El 00 que debería ir con la 'T' no está porque se saca con los bytes anteriores, que no he analizido. Se puede ver cómo salen las distintas letras hasta que llegamos a 0C-0C-85. No tengo muy claro como interpretar esa información, pero hay que tratar con los bits de esos datos en vez de con los bytes, excepto el byte central, que indica la posición del texto que se debe poner. En este caso es 0x0C (12 en decimal), y si contamos 12 bytes antes de 0C-0C-85, nos dice dónde está el texto. En este caso se cogen 5 bytes (00-43-00-50-00), que 'reemplazan' al 0C-0C-85, lo que nos permite poner 'a' (00-43), 'n' (00-50) y el 00 de la 'i', que no está. El valor de 5 bytes se saca a partir del resto de bits, y no voy a explicar cómo porque no estoy muy convencido de que funcione siempre.
Para probar que lo explicado es correcto, se puede cambiar ese valor 0x0C (12) por 0x10 (16), indicando que se tome el texto que hay 4 bytes antes que el tomado originalmente, es decir, el que está contando 16 bytes. Ahora debería tomar 'Tr' en vez de 'an'. Efectivamente, así es, como se ve en la siguiente imagen, donde ese texto aparece 3 veces, TransylvTria-Trd-Trcient en lugar de Transylvania-and-ancient (cambiamos el código del primer texto, el segundo texto apunta al primero, que ha cambiado, y el tercero apunta al segundo, que también ha cambiado):
[img]
http://img337.imageshack.us/img337/6449 ... vania1.png[/img]
Más adelante aparace otro 0C-14-96, que indica que hay que coger 5 caracteres de una posición que está 0x14 caracteres antes (20), correspondientes a 'th'.
Entremedias está el código 09-30-9A, que no tengo ni idea de lo que es, aunque debe estar relacionado con el salto de línea/centrado de texto. Más adelante está el A3-00, que significará otra cosa.
Mi conclusión: a no ser que se sepa bastante de la consola, con conocimientos suficientes para poder desensamblar el código, usar un emulador que permita ver el código según se ejecute, se sepa cómo encontrar el inicio de las partes comprimidas, tener tiempo y ganas para descifrar todos los códigos que hay, etc/etc/etc, veo bastante complicado que se pueda traducir el juego. Yo poco más puedo hacer, pues no conozco demasiado cómo trabajar para esa consola y no me considero capaz de ayudarte mucho más.