11

作为我一直在回答这个关于 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 游戏的简单、直接的方法?我最感兴趣的是能够在内存中设置写断点(以查看哪些例程正在破坏内存的某些部分)。如果有第一手经验的人可以提供有关如何执行此操作的详细信息,我将不胜感激,因为有关该主题的在线资源似乎非常有限。

4

4 回答 4

8

如果您只想调试旧的 gameboy 游戏,您还可以使用bgb,它具有多个调试选项,例如跟踪、断点、分析器等等。

于 2011-11-03T14:29:29.250 回答
4

No$GBA 适用于 GBA 游戏;你想要 NO$GMB。请注意,它非常有缺陷,并且没有注册版本(可能无法合法获得)相当残废。

bgb 是免费的,与 No$GMB 非常相似,但更加错误。

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

于 2012-01-15T08:21:59.760 回答
3

查看网站GbaDev.org并查看论坛。这是网上关于 GBA 甚至 GBC 问题的最佳地点。我可以告诉你,有很多版本的 VBA 并且没有任何版本。您想要的 No$ 在技术上是付费版本,但 Martin Korth 多年来一直没有回复电子邮件或任何东西,我也不确定它的状态了。如果您愿意或帮助您使用调试器,我也可以亲自为您回答一些问题。

我能够访问 no$ 主网站,下载no$gmb的 windows 版本,并在以黑白模式运行时使用它进行调试 - 应该足以满足您的需要。F12 打开 rom,F2 切换断点,空格跟踪,F3 跳过,Ctrl-G 带你到一个地址(或符号),Ctrl_B 允许条件断点(迄今为止你使用的最强大的功能。)例如,(3000)!将在地址 0x3000 上设置读/写断点。(0300..03003)!设置在一个范围内。当您正在寻找特定的地址更改时,这就是您想要的。

于 2011-08-04T20:41:22.727 回答
1

VBA-M在“工具”菜单下有一堆调试工具,包括内存和瓷砖检查器和反汇编器。它甚至支持 GDB。我没有测试任何前端,如gdbgui或 VSCode 的 GDB 支持,所以 YMMV,但其他内置工具看起来相当不错。

转到发布部分为您的平台构建一个版本(arch linux 在 AUR 中也有它,以便在包管理器中轻松安装。)

这里它在 Mac 上运行一些工具: 在此处输入图像描述

于 2020-03-05T06:49:53.147 回答