带有完整调试器的Game Boy模拟器?

时间:2011-08-04 02:47:16

标签: debugging reverse-engineering gameboy

作为我一直在回答this question about the technical workings of a glitch in Pokémon Red的工作的一部分,我一直在寻找一种方法来使用标准调试器来调试Game Boy ROM。虽然我发现的许多仿真器都有一些调试支持,但到目前为止我发现的任何东西都没有帮助。

作为背景,截至目前,我已尝试使用Visual Boy Advance内置功能进行调试,但它们对我正在尝试的内容并不是特别有用。 VBA缺乏设置断点的能力,并且因为它在帧的级别而不是指令上向前迈进,所以当我真正需要它时,我无法看到代码是如何执行的。虽然VBA说它支持GDB调试,但我完全无法让它工作。我尝试按照说明交叉编译GDB for ARM,但无法让GDB连接到仿真器(它会认识到有一个程序要连接,但报告说该协议已被违反)。我在使用Cygwin的Windows和Ubuntu Linux上都取得了类似的成功。我和朋友试图使用Insight / GDB,但遇到了完全相同的问题。

我也尝试使用NO $ GBA调试器,但它拒绝加载我的ROM用于神奇宝贝红(然后侮辱我说我不能尝试做的任何事情都会修复它,因为文件只是平坦的错)。

此外,我尝试下载声称有调试器的Visual Boy Advance的this version,但由于某种原因,我无法启用调试器。按照说明按F11无效。

我相信我已经完成了我的尽职调查,试图让调试器工作,我很惊讶他们中没有一个工作过。有没有人知道使用标准调试技术调试Game Boy游戏的简单,直接的方法?我最感兴趣的是能够在内存中写入断点(看看什么例程破坏了内存的某些部分)。如果有第一手经验的人可以提供有关如何执行此操作的详细信息,我将非常感激,因为有关该主题的在线资源似乎非常有限。

4 个答案:

答案 0 :(得分:6)

如果您只是想调试旧的gameboy游戏,您也可以使用bgb,它有几个调试选项,如跟踪,断点,探查器等等。

答案 1 :(得分:4)

没有$ GBA用于GBA游戏;你想要NO $ GMB。请注意,这是非常错误的,并且没有注册版本(可能无法合法地获得)相当残缺。

bgb是免费的,与No $ GMB非常相似,但即使是buggier。

VBA应该有一个调试器,但那里有一百万个不同的版本,所以祝你找到合适的版本。

答案 2 :(得分:1)

查看网站GbaDev.org并查看论坛。这是GBA甚至GBC问题的最佳网站。我可以告诉你,有许多版本的VBA,没有$ out和about。你想要的No $在技术上是版本的支付,但Martin Korth多年来一直没有回复电子邮件或任何东西,我不再确定它的状态了。如果您希望或帮助您使用调试器,我也可以为您个人回答一些问题。

我能够访问no $ main网站,下载Windows版 no $ gmb ,并在B / W模式下运行时使用它进行调试 - 应该足以满足您的需求。 F12打开roms,F2切换断点,空格,F3跨越,Ctrl-G带您到地址(或符号),Ctrl_B允许条件断点(到目前为止最强大的功能供您使用。)例如,(3000)!将在地址0x3000上设置读/写断点。 (0300..03003)!设定范围。当您正在寻找特定的地址更改时,这就是您想要的。

答案 3 :(得分:1)

VBA-M在“工具”菜单下有很多调试工具,包括内存和磁贴检查器以及反汇编程序。它甚至支持GDB。我没有使用gdbgui或VSCode的GDB支持进行任何前端测试,因此没有使用YMMV进行测试,但是其他内置工具看起来还不错。

转到releases section为您的平台构建(arch linux在AUR中也有它,以便在软件包管理器中轻松安装。)

此处在Mac上运行某些工具: enter image description here