# 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 指令长度不一，且数据与代码交错存放，因此需要标出代码区段，避免从指令中间开始反汇编。

- 类型：工具
- 目标：二进制 · 游戏
- 类别：游戏分析工具
- 关联：基础工具
- 来源复核于：2026-10-27
- 收录于：2026-11-02
- 原始资源：<https://github.com/mattcurrie/mgbdis>
- 一手来源：<https://github.com/mattcurrie/mgbdis/blob/95d951a9881a0d7ff1a42a94d1be175da92b1777/README.md>
- 目录页面：<https://awesomerea.org/zh/resources/mgbdis/>
- 记录 JSON：<https://awesomerea.org/resources/mgbdis/record.json>
- 英文版：[English](https://awesomerea.org/resources/mgbdis/index.md)

## 使用条件与局限

- 审阅时的最新发布版为 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 代码，标签和区段边界来自分析者编写的符号文件。

## 一手来源

1. <https://github.com/mattcurrie/mgbdis/blob/95d951a9881a0d7ff1a42a94d1be175da92b1777/README.md>
2. <https://github.com/mattcurrie/mgbdis/blob/95d951a9881a0d7ff1a42a94d1be175da92b1777/README.md#L35-L45>
3. <https://github.com/mattcurrie/mgbdis/blob/95d951a9881a0d7ff1a42a94d1be175da92b1777/mgbdis.py#L1314-L1331>
4. <https://github.com/mattcurrie/mgbdis/blob/95d951a9881a0d7ff1a42a94d1be175da92b1777/mgbdis.py#L1235-L1261>
5. <https://github.com/mattcurrie/mgbdis/blob/95d951a9881a0d7ff1a42a94d1be175da92b1777/test/Makefile>
6. <https://github.com/mattcurrie/mgbdis/blob/95d951a9881a0d7ff1a42a94d1be175da92b1777/.github/workflows/test.yml>
7. <https://github.com/mattcurrie/mgbdis/tree/95d951a9881a0d7ff1a42a94d1be175da92b1777/test>
8. <https://github.com/mattcurrie/mgbdis/blob/95d951a9881a0d7ff1a42a94d1be175da92b1777/LICENSE>
9. <https://github.com/mattcurrie/mgbdis/releases/tag/v3.0>

## 同分区更多条目：游戏

- [ghidra-allegrex PSP Allegrex 处理器模块](https://awesomerea.org/zh/resources/ghidra-allegrex/index.md) · 工具
- [GM8Decompiler GameMaker 8 游戏反编译器](https://awesomerea.org/zh/resources/gm8decompiler/index.md) · 工具
- [UELib Unreal 包文件解析与反编译库](https://awesomerea.org/zh/resources/uelib-unreal-package-library/index.md) · 工具
- [DiztinGUIsh Super NES ROM 反汇编工具](https://awesomerea.org/zh/resources/diztinguish/index.md) · 工具
- [Zygisk-Il2CppDumper 运行时导出 IL2CPP 元数据的 Zygisk 模块](https://awesomerea.org/zh/resources/zygisk-il2cppdumper/index.md) · 工具
- [UABEA Unity 资源包读写工具](https://awesomerea.org/zh/resources/uabea/index.md) · 工具

## 关于此条目

说明已依据一手来源复核。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
