作为我一直在回答这个关于 Pokémon Red 中故障的技术工作问题的工作的一部分,我一直在寻找一种使用标准调试器来调试 Game Boy ROM 的方法。尽管我发现的许多仿真器都支持调试,但到目前为止我还没有发现任何有用的东西。
作为背景,到目前为止,我已经尝试使用 Visual Boy Advance 的内置功能进行调试,但它们对于我正在尝试做的事情并不是特别有用。VBA 缺乏设置断点的能力,并且由于它在帧级别而不是指令级别上向前推进,因此当我真正需要它时,我无法看到代码是如何执行的。虽然 VBA 说它支持 GDB 调试,但我完全无法让它工作。我尝试按照说明为 ARM 交叉编译 GDB,但无法让 GDB 连接到模拟器(它会识别出有要连接的程序,但报告违反了协议)。我在带有 Cygwin 的 Windows 和 Ubuntu Linux 上都以类似的成功重复了这一点。我和一个朋友尝试使用 Insight/GDB,但遇到了完全相同的问题。
我也尝试使用 NO$GBA 调试器,但它拒绝为 Pokémon Red 加载我的 ROM(然后侮辱我说我无法尝试做任何事情来修复它,因为文件完全错误)。
此外,我尝试下载这个版本的 Visual Boy Advance,声称其中有一个调试器,但由于某种原因,我无法让它启用调试器。按照它的说明按 F11 没有任何效果。
我相信我已经尽职尽责地试图让调试器正常工作,但令我惊讶的是,其中没有一个工作正常。有谁知道使用标准调试技术调试 Game Boy 游戏的简单、直接的方法?我最感兴趣的是能够在内存中设置写断点(以查看哪些例程正在破坏内存的某些部分)。如果有第一手经验的人可以提供有关如何执行此操作的详细信息,我将不胜感激,因为有关该主题的在线资源似乎非常有限。