[DUDA] Compilación de un programa

Lugar donde se intentarán resolver problemas específicos
Responder
Avatar de Usuario
Loz
Mensajes: 39
Registrado: 10 Dic 2012, 16:04

Mensaje por Loz » 01 Dic 2014, 16:27

Hola a todos, a sugerencia de CUE publicare el programa que me tiene la cabeza echando humo, ya que se me quemo el bombillo y no tengo más ideas de cómo hacerlo andar.

Por si alguien le interesa y quiere echarle un vistazo, he aquí el link del programa:

http://www.mediafire.com/download/ijh4u ... Naruto.rar

Avatar de Usuario
CUE
Administrador
Administrador
Mensajes: 5520
Registrado: 24 Ene 2011, 16:52

Mensaje por CUE » 01 Dic 2014, 17:46

Yo quiero decir unas cosillas antes, y no en plan crítica, más bien en plan "pensad un poco" antes:
- si un programa te lo da alguien, hay que preguntar a ese alguien, que le costará menos explicar las cosas que alguien que lo vea por primera vez, que no es plan de que unos intenten explicar y arreglar lo de otros
- si se consigue un programa, lo mejor es entender lo que hace, pero no las líneas de código, lo que hay que entender es el juego que se quiere modificar para saber qué es lo que hay que hacer, no limitarse a dar un botón y que se resuelva todo

Después de eso, ya se puede tirar ese programa, que, aunque puede que lo que haga funcione, hace cosas de forma equivocada y complicada.

El juego tiene los textos a partir de 0x647634. Los dos primeros bytes son el número de mensajes. Después, por cada mensaje, dos bytes con el offset relativo a 0x647634 donde está el mensaje, seguido de dos bytes con la longitud del mismo. A continuación están los mensajes, que comienzan con dos valores de dos bytes, que serán el código de retrato o algo de eso (no he tenido ganas de mirarlo pero alguna cosa de ésas será), seguido del texto, con caracteres de dos bytes, terminado con un doble cero. Todos los valores son low-endian. Sabiendo eso se pueden sacar los punteros y los textos para poder modificarlos con el ARMIPS. Tal como está, y es como lo hicieron los rusos, sólo se puede ocupar el espacio total de los textos originales. Con tiempo se podría buscar dónde se accede a los mensajes para ponerlos al final de la ROM, que hay muchísimo espacio libre, pero eso se lo dejo a otro.

La fuente está en 0x646AF4, con 8 bytes de cabecera y luego 16 bytes por cada tile. Son 128 tiles de 8x16 a 1 bpp, aunque los bits están en un orden concreto: 7-5-3-1-6-4-2-0. Aquí los rusos han vuelto a equivocarse porque ignoran los 3 primeros tiles (los dos primeros no se usan y el tercero es el espacio en blanco) y, además, asignan más tiles de los reales.

¿Que por qué no busco donde acceder a los textos para incrementar el espacio y poner más decente el tema de la fuente? Pues porque entonces ya tendría todo hecho y me bastaría con decir a algunos de los traductores express que hay en el foro que hiciesen la traducción en un fin de semana, que es poco texto. Como no es mi proyecto, sólo hago esto para que sea más simple, y el resto se lo dejo a quien quiera hacerlo.

Todo preparado: https://www.mediafire.com/?sxrpow95cmd3qd7

Sólo hay que traducir lo que hay en "txt.asm", darle al icono de "asm.bat" y ya se encargá el ARMIPS de meterlo todo y actualizar los punteros. La modificación que se haga en la fuente deberá indicarse en la tabla "naruto.tbl". La ROM debe llamarse "rom.gba" y produce otra llamada "new.gba".

Avatar de Usuario
Loz
Mensajes: 39
Registrado: 10 Dic 2012, 16:04

Mensaje por Loz » 02 Dic 2014, 17:08

Pero debo aclarar una cosa que creo que se mal interpreto por no mencionarla más antes.
- si un programa te lo da alguien, hay que preguntar a ese alguien, que le costará menos explicar las cosas que alguien que lo vea por primera vez, que no es plan de que unos intenten explicar y arreglar lo de otros
La verdad, si hable con el creador del programa, pero solo fue un par de veces, y bueno que desde el 2012 el no da señales de vida, y los mensajes que la mande no fueron contestadas, así que desde entonces he estado haciéndolo todo por mi cuenta, salvo algunas ocasiones que me atareaba y por falta de tiempo los dejaba, así pasaba el tiempo hasta que los podía retomar con más tiempo y tranquilidad.
El juego tiene los textos a partir de 0x647634. Los dos primeros bytes son el número de mensajes. Después, por cada mensaje, dos bytes con el offset relativo a 0x647634 donde está el mensaje, seguido de dos bytes con la longitud del mismo. A continuación están los mensajes, que comienzan con dos valores de dos bytes, que serán el código de retrato o algo de eso (no he tenido ganas de mirarlo pero alguna cosa de ésas será), seguido del texto, con caracteres de dos bytes, terminado con un doble cero. Todos los valores son low-endian. Sabiendo eso se pueden sacar los punteros y los textos para poder modificarlos con el ARMIPS. Tal como está, y es como lo hicieron los rusos, sólo se puede ocupar el espacio total de los textos originales. Con tiempo se podría buscar dónde se accede a los mensajes para ponerlos al final de la ROM, que hay muchísimo espacio libre, pero eso se lo dejo a otro.
Ahora que estoy haciendo memoria, creo recordar algo parecido a lo que mencionas, en uno de los dos mensajes que me contesto el creador del programa, la verdad no lo recuerdo a detalle porque todo estaba guardado en mi antiguo disco duro que tuve que formatearlo tres veces y que en este ultimo formateo murió. Recuerdo que menciono que en el offset de la tabla de punteros se encuentra la cantidad de caracteres que tiene cada frase que se muestra en pantalla y para que se aumente la cantidad de caracteres originales de los diálogos mostrados en pantalla, se tendría que modificar estos dos valores, o algo así. La verdad ya lo había olvidado y tú me lo hiciste recordar.

Pero bueno, con esto todo está listo, ya que solo me faltaba el tema de insertar los diálogos a la ROM, puesto que la fuente, gráficos y traducción de los diálogos ya estaban listos.

De nuevo muchas gracias CUE.

Avatar de Usuario
CUE
Administrador
Administrador
Mensajes: 5520
Registrado: 24 Ene 2011, 16:52

Mensaje por CUE » 02 Dic 2014, 19:07

¿Lo ves? Todas esas cosas son las que tienes que contar para que los demás las sepamos y no tengamos que averiguarlas por nuestra cuenta, con la pérdida de tiempo que eso conlleva. Lo otro pensé que habías hablado hace poco con el ruso, por eso lo he comentado.

Responder