Whack a Hack Foro!

Samu
Samu
Me temo que no hay una forma fiable de hacer lo que quieres con la información de un rom (en este caso un fichero binario similar a un .elf).
Este tipo de ficheros almacenan únicamente información en crudo sin haber ninguna posibilidad de diferenciar entre datos, instrucciones y los propios punteros.
Un conjunto de 4 bytes que se puedan leer como un puntero pueden ser interpretados en muchas ocasiones tanto como punteros en sí, como datos (imagen/sonido) o instrucciones.

Es decir, No estás trabajando con un fichero fuente en el que se indique que algo es un puntero, junto con el tipo de información que referencia el puntero.
No sé con seguridad a que corresponden los bytes 0F 00 antes del texto, pero en el caso de los bytes "67 [pointer] 66" te puedo decir que corresponden con los códigos de los comandos de scripting "message" y "waitmessage", es decir, que estarías buscando aquellos textos que se muestren en un script de la siguiente manera:
Samu
Samu
Código:
message pointer
waitmessage
Hay muchos textos que se muestran con msgbox que corresponde a una llamada callstd(0x9) de tipos 2, 3, 4, 5,6 y 9 que seguiría un formato como este:
Código:
msgbox pointer == callstd pointer 2(o 3, 4, 5...)

En binario habría quedado compilado como ''09 pointer 02'' (o 03, 04, 05...)
También hay muchos otros textos que no se muestran haciendo uso de estos comandos, como podrían ser los textos del combate o de varios menús.
Samu
Samu
Volviendo a lo que decía antes, no existe ninguna forma fiable de de determinar de forma automática si algo es un texto o no, o si se trata de un puntero a un texto o no. Perfectamente se podría dar el caso de que parte de la información de una imagen o de parte del audio del juego (incluso de las propias instrucciones) coincidiese por casualidad con lo que tu identificas como puntero a un texto.
Es decir, una imagen podría contener los bytes '67 10 41 28 08 66', pero tu los identificarías como un puntero al texto, entonces cambiarías este falso puntero provocando una corrupción de la imagen.

Lo mismo podría ocurrir con el audio (pudiendo llegar a colgar el juego al reproducir la pista/pistas afectadas) o peor aún a una sección del código, la cual podría quedar totalmente inservible y casi seguro colgaría el juego en su ejecución.
Samu
Samu
No te digo que no sigas con la herramienta, pero ten en cuenta que existe la posibilidad de que aparezcan errores inesperados.

Sobre como detectar lo textos que no están traducidos... tendrías que ir mirando las funciones que se llaman para imprimir el texto en esos casos usando decomp.

Otra opción sería buscar el byte que se usa como caracter "fin de texto", pero me temo que hay muchas ocurrencias de ese byte en el rom que no hacen referencia a texto (seguramente la mayoría).

@PkPower Me cago en tu puta limitación de 1000 caracteres en los tablones.
Arriba