工具
mgbdis Game Boy ROM 反汇编器
用 Python 编写的反汇编器,可把 Game Boy 或 Game Boy Color ROM(包括多存储体 ROM)转换为与 RGBDS 兼容的汇编代码,并生成用于重新汇编的 Makefile,以便将重建出的 ROM 与输入文件比对。ROM 旁可放置同名 .sym 文件,用来提供标签,并标出代码、数据、文本、填充以及 1bpp/2bpp 图块图像区段;图像会输出为 PNG,再由 rgbgfx 转换回去,文本可使用自定义字符映射,硬件寄存器则采用 hardware.inc 中的名称。README 解释说,SM83 指令长度不一,且数据与代码交错存放,因此需要标出代码区段,避免从指令中间开始反汇编。
- 目标
- 二进制 · 游戏
- 类别
- 游戏分析工具
- 关联
- 基础工具
- 来源复核于
使用条件与局限
- 审阅时的最新发布版为 v3.0,发布于 2025-04-22;所审阅的 master 分支提交日期为 2026-07-31,比该标签多 15 个提交,版本号仍为 3.0。它是一个单独的 Python 脚本,需要 Python 3.6+;生成的汇编代码面向 RGBDS v0.8.0 或更高版本,生成的 Makefile 会调用其中的 rgbasm、rgblink、rgbfix 和 rgbgfx。命令行选项可控制十六进制大小写、缩进、操作数对齐和助记符写法,--tiny 模式用于不分存储体的 32 KiB ROM。
- 输入是使用者自备的 ROM 文件,可另附同名 .sym 文件;仓库不附带任何游戏 ROM。仓库内置 PyPNG 的 png.py 和 gbdev 的 hardware.inc 副本,唯一的测试 ROM 在测试时由项目自己的汇编源码构建而成。README 建议用作者另行开发的 Beaten Dying Moon 模拟器生成代码区段符号文件,该模拟器会记录实际执行过的指令;本条目未审阅该模拟器。
- GitHub Actions 会安装最新的 RGBDS 发布版,构建测试 ROM 并将其反汇编,把输出与仓库中提交的预期文件逐一比对,再重新汇编反汇编结果,与测试 ROM 逐字节比较。这只是在项目自带样本上检验工具,并未覆盖商业游戏。README 指出,RGBDS 会在 STOP 后自动插入 NOP,因此原 ROM 中后面不是 NOP 的 STOP 会输出为数据字节;README 还说明该工具处理大型 ROM 时速度较慢。
- 采用 MIT 许可;png.py 附有其自身的 MIT 声明。mgbdis 输出的是汇编代码而非 C 代码,标签和区段边界来自分析者编写的符号文件。本条目未反汇编任何 ROM。
关于此条目
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · mattcurrie/mgbdis · 修订 95d951a
- README.md#L35-L45 GitHub · mattcurrie/mgbdis · 修订 95d951a
- mgbdis.py#L1314-L1331 GitHub · mattcurrie/mgbdis · 修订 95d951a
- mgbdis.py#L1235-L1261 GitHub · mattcurrie/mgbdis · 修订 95d951a
- test/Makefile GitHub · mattcurrie/mgbdis · 修订 95d951a
- .github/workflows/test.yml GitHub · mattcurrie/mgbdis · 修订 95d951a
- test GitHub · mattcurrie/mgbdis · 修订 95d951a
- LICENSE GitHub · mattcurrie/mgbdis · 修订 95d951a
- https://github.com/mattcurrie/mgbdis/releases/tag/v3.0