2011-08-04 12 views
5

Como parte del trabajo que he estado haciendo para responder this question about the technical workings of a glitch in Pokémon Red, he estado buscando una forma de utilizar un depurador estándar para depurar una ROM de Game Boy. Aunque muchos de los emuladores que he encontrado tienen algún soporte para la depuración, nada de lo que he encontrado hasta ahora ha sido útil.Emulador de Game Boy con un depurador completo?

Como telón de fondo, a partir de ahora he tratado de utilizar el Avance Visual Boy características integradas de hacer la depuración, pero no son particularmente útiles para lo que estoy tratando de hacer. VBA carece de la capacidad de establecer puntos de interrupción, y dado que avanza al nivel de cuadros en lugar de instrucciones, no puedo ver cómo se está ejecutando el código cuando realmente lo necesito. Aunque VBA dice que es compatible con la depuración de GDB, he sido completamente incapaz de hacerlo funcionar. Probé la compilación cruzada de GDB para ARM según las instrucciones, pero no pude hacer que GDB se conectara al emulador (reconocería que había un programa para conectarse, pero me informó que el protocolo había sido violado). Repetí esto con éxito similar tanto en Windows con Cygwin como en Ubuntu Linux. Un amigo y yo intentamos usar Insight/GDB, pero nos encontramos exactamente con los mismos problemas.

También traté de usar el depurador NO $ GBA, pero se negó a cargar mi ROM para Pokémon Rojo (y luego me insultó diciendo que nada de lo que intentara hacer lo arreglaría, ya que el archivo era simplemente plano) fuera mal).

Además, traté de descargar this version de Visual Boy Advance que dice tener un depurador, pero por alguna razón no puedo conseguir que habilite el depurador. Presionar F11 según sus instrucciones no tiene ningún efecto en absoluto.

Creo que he hecho mi diligencia debida tratando de hacer funcionar un depurador, y me sorprende que ninguno de ellos haya funcionado. ¿Alguien sabe de una manera simple y directa de depurar juegos de Game Boy usando técnicas de depuración estándar? Me interesa sobre todo poder poner en la memoria puntos de interrupción de escritura (para ver qué rutina está destruyendo ciertas partes de la memoria). Realmente agradecería que alguien con experiencia de primera mano al hacer esto pudiera proporcionar detalles sobre cómo hacer esto, ya que los recursos en línea sobre el tema parecen bastante limitados.

Respuesta

1

Eche un vistazo al sitio GbaDev.org y mire en los foros. Este es el mejor lugar en la web para preguntas de GBA o incluso GBC. Puedo decirte que hay muchas versiones de VBA y no $ out. El No $ que desea técnicamente es un pago por la versión, pero Martin Korth no ha estado respondiendo correos electrónicos ni nada por años y ahora no estoy seguro de su estado. También puedo responder algunas preguntas personalmente si desea o ayuda con el depurador.

Pude acceder al sitio web no $ main, descargar la versión de Windows de no $ gmb, y usarlo para depurar cuando se ejecuta en modo B/N - debería ser suficiente para sus necesidades. F12 abre roms, F2 alterna puntos de interrupción, rastros de espacio, pasos de F3, Ctrl-G te lleva a una dirección (o símbolo), y Ctrl_B permite puntos de interrupción condicionales (con mucho, la característica más poderosa para que uses). Por ejemplo , (3000) establecería un punto de interrupción de lectura/escritura en la dirección 0x3000. (0300..03003)! establece en un rango. Como está buscando cambios de dirección específicos, esto es lo que quiere.

5

Si solo quieres depurar tus viejos juegos de gameboy también puedes usar bgb que tiene varias opciones de depuración como rastreo, puntos de interrupción, generador de perfiles y mucho más.

4

No $ GBA es para juegos de GBA; quieres NO $ GMB. Tenga en cuenta que es muy defectuoso, y sin una versión registrada (que puede ser imposible de obtener legítimamente) más bien paralizado.

bgb es gratis y es muy similar a No $ GMB, pero incluso buggier.

Se supone que VBA tiene un depurador, pero hay un millón de versiones diferentes, así que buena suerte para encontrar la correcta.