[DUDA-GBA] Encontrar Fuente y Tabla de Punteros con Debugger

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

[DUDA-GBA] Encontrar Fuente y Tabla de Punteros con Debugger

Mensaje por Loz » 15 Abr 2014, 17:25

Hola a todos, después de mucho tiempo reanude mi traducción, ya que estaba parada por problemas en mi pc.

Bueno, como retome la traducción de Naruto - Ninja Council para GBA, me surgieron un par de dudas con respecto a la forma de encontrar la Tabla de Punteros y la Fuente.

Hace tiempo leí un comentario en un foro italiano que mencionaba que la forma más exacta de conocer la ubicación de la Tabla de Punteros y la Fuente es por medio de la búsqueda con un Debugger, bueno esto solo era un comentario que un usuario hacia que no daban más explicaciones sobre el tema.

Mi duda seria si ¿es posible encontrar las direcciones offset de la Tabla de Punteros realizando una búsqueda con un Debugger? Y si es así ¿Cuáles serían los pasos o la forma de realizarlo?, también me gustaría saber si la búsqueda con un Debugger funcionaria para encontrar la ubicación de la Fuente, ya que en este ROM visualizándolo con el TileMolester me muestran como unas catorce fuentes, y a estas fuentes las modifique una por una y ninguna de ellas es la que utiliza el ROM.

No sé si alguien conoce sobre el tema, pero les agradecería mucho si me pudieran orientar sobre este tema.

Saludos.

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

Mensaje por CUE » 15 Abr 2014, 19:19

Eso es como si te dicen que la fuente está en la ROM y los punteros también, que la gente lo dice sin más y creen que están ayudando pero no están haciendo nada. Si no conoces el ensamblador de GBA no te sirve de nada usar un debugger.

La fuente creo recordar que era de 8x16 y no sé dónde se guardaba.

Los punteros estaban antes de los textos, en series de 4 bytes, dos con el offset relativo en low-endian y dos con la longitud del mensaje en low-endian. Como la longitud no supera los 256 caracteres puedes ver que todos son del tipo X-Y-Z-0, así que sólo tienes que buscar el primero que haya con ese cero final. Los bytes X-Y de ese primer mensaje serán su offset relativo y Z la longitud.

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

Mensaje por Loz » 20 Abr 2014, 19:04

Perdón por no responder más antes CUE, resulta que se me acumularon algunos deberes y no puede conectarme.
Eso es como si te dicen que la fuente está en la ROM y los punteros también, que la gente lo dice sin más y creen que están ayudando pero no están haciendo nada.
Es muy cierto lo que comentas CUE, esos tipos de respuestas abundan en la red y lo que hacen es desmotivar a los personas y perder el interés o las ganas que uno tiene.
Si no conoces el ensamblador de GBA no te sirve de nada usar un debugger.
Bueno estuve observando algunos documentos que encontré por la red como estos:
http://www.mediafire.com/download/lp4w8 ... -THUMB.rar

Aunque no los leí detenidamente como quisiera (a veces los deberes del estudio no me dejan tiempo) pero estuve practicando buscando algunos CodeBreak para algunos juegos, cosas sencillas que no sea complicados de hallar.

Bueno algo que no mencione antes fue que un buen amigo me comento que este juego lo habían traducido al ruso, así que puse en contacto con el que lo tradujo y me proporciono muy amablemente un programa con el que cambió las fuentes y tradujo el juego, así que le pregunte si me podría explicar como hizo para hallar la fuente y los punteros, a lo que me respondió que no podría explicarme porque él no había creado el programa si no que lo había creado un colega suyo, así que me puse en contacto con su colega, él también amablemente me respondió (aunque solo hablamos un par de veces) pero me dijo que sería algo complicado de explicarme y solo me dio algunas pautas, justamente es lo mismo que mencionas CUE, que las fuentes tienen un tamaño de 8x16 pixeles, que el juego contiene 473 cadenas de texto con punteros que se encuentran antes del texto y que la longitud de los de los diálogos tiene que multiplicarlos por dos para hallar los bits que componen cada párrafo.

Lo que me lleva a insistir en mi duda, no por este juego en concreto, ya que cuento con el programa que me proporcionaron para traducirlo, sino porque supongo que abra algunos otros juegos que la fuente y los punteros no estén a la vista y sean difíciles de hallar.

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

Mensaje por CUE » 21 Abr 2014, 18:50

Como suele decirse, cada juego es un mundo. Yo hasta ahora en muy pocos juegos he tenido que usar un debugger para encontrar fuentes y punteros. Hasta que no te pones con algo no sabes cómo tienes que enfocarlo. Además, pocos emuladores hay con un debugger en condiciones, exceptuando GB y NES.

Curiosamente, este fin de semana he usado el debugger del no$gba para ver unas cosas del Zelda de GBA, y al final he pasado el tema, que es un coñazo y hace perder más tiempo del necesario.

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

Mensaje por Loz » 22 Abr 2014, 21:53

Es muy cierto lo que comentas CUE, que cada juego es un mundo, pero supongo que para poder hallar algunas cosas de la mayoría de los juegos de esta consola deben tener los mismos principios, además no encontré manuales o guías para darme una idea de cómo buscar dichas cosas, como mencionas CUE “que hasta que te topes con algo no sabes cómo enfrentarlo”, pues ese es mi caso no se por donde comenzar o que buscar.

Con respecto a los Debuggers, estuve buscando por la red y me encontré con estos: Mappy VM, VisualBoy Advance SDL-H, el mismo no$gba que comentas, entre otros, pero la semana pasada me encontré con un emulador llamado GiiBiiAdvance que más o menos se ve asi:

http://antoniond_blog.drunkencoders.com/files/2014/04/gba_debugger_1.png

No sé si ya lo conocías pero si te interesa puedes encontrarlo aquí:
http://antoniond_blog.drunkencoders.com/

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

Mensaje por CUE » 22 Abr 2014, 22:24

Hay una cosa que siempre se debe hacer: coger alguna tool gráfica para ver si los gráficos están a simple vista. Si es así, pues poco más hay que hacer. El problema es cuando no los encuentras, que muchas veces se debe a que esos datos están codificados o comprimidos, y eso ya empiezan a ser palabras mayores.

Con los debuggers no te dejes engañar. Muchas veces son simples desensambladores con unos pocos añadidos, pero nada más. Para mí el mejor de gba, con diferencia, el del no$gba. Con él puedo poner breakpoints cuando me dé la gana y como me dé la gana, que es algo que no hacen otros.

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

Mensaje por Loz » 25 Abr 2014, 17:37

Pues, como comete antes, en este juego con el visualizador de gráficos me muestra como unas doces fuentes y ninguna de ellas es la que utiliza el ROM, supongo que esto es para confundir al enemigo así que creo que en este juego la fuente debe estar en un formato especial o como tu comentas tal vez este comprimido, seguir intentando hasta que encuentre la solución.

Con los Debugger tomare en cuenta tu consejo y no me dejare guiar por las apariencias, lo malo es que no tengo muchos conocimientos de cómo manejar un Debugger. El VisualBoy Advance SDL-H conozco algo de su manejo ya que encontré un par de guías que hablaban de cómo encontrar CodeBreaks, pero el No$GBA no se usarlo, ¿conoces de algún lugar o tal vez una lección rápida de cómo manejarlo?, me sería de gran ayuda.
Última edición por Loz el 28 Abr 2014, 17:17, editado 1 vez en total.

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

Mensaje por CUE » 25 Abr 2014, 17:52

Pues a mí me pasa al revés. Con el VBA no consigo hacer casi nada porque le faltan las opciones que trae el NO$GBA y me conozco. Tampoco creas que sé mucho, que a mí lo que me va mejor es PSX o GB. Yo me limito a poner breakpoints cuando cambian valores en memoria, no cuando se llega a una instrucción donde quiero pararlo. Por ejemplo, si quiero que el programa pare cuando cambie el contenido de 02123456, le pongo el breakpoint [02123456] !! (eso lo aprendí en la ayuda del emulador), y cuando el programa se para miro el código, con dificultad, lo reconozco, porque no estoy acostumbrado ni a la consola ni a sus instrucciones. Pero eso implica que tengo que saber previamente que esa posición de memoria tiene la información que busco, y eso es lo que me suele llevar más tiempo. Y como cada juego es diferente, pues las ranas pueden criar pelo antes de que des con lo que buscas.

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

Mensaje por Loz » 28 Abr 2014, 17:34

Bueno CUE, practicare con el No$GBA para poder manejarlo, con las indicaciones que me dijiste seguiré intentando, supongo que en algún momento lo encontrare y diré “¡Ah ese era el truco!”

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

Mensaje por CUE » 28 Abr 2014, 18:49

Pues he intentado buscar algo en estos días pasados, que he estado de vaGaciones, con 'G', pero no he sacado nada en claro. Básicamente he buscado las compresiones habituales de la consola, pero no he encontrado nada, así que es algo que casi se puede descartar.

El caso es que todos los demás gráficos, que son un montón, están a la vista, por lo que no tendría mucho sentido que únicamente la fuente esté codificada.

Mira a ver si en gbatemp te pueden echar una mano, que por allí hay algunos que dominan el tema.

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

Mensaje por Loz » 30 Abr 2014, 18:30

Gracias CUE por el tú interés y esfuerzo, no sé como agradecerte la molestia que has tenido en explicarme algunas cosas, preguntare en gbatemp haber que tal me va y si descubro algo nuevo esteré por aquí. :D

Responder