Ghidraboy:Sharp SM83 / Ghidra的游戏男孩扩展
非常实验!没有兼容性保证!
支持Ghidra版本:

特征
- Sharp SM83(游戏男孩中使用的CPU核心)支持雪橇
- Game Boy ROM加载器:
- 可以加载未账的ROM(<= 32KB,例如Tetris)
- 可以加载银行的ROM(> 32KB,例如Pokemon)
- 可以加载GreyScale Boot ROM(DMG/DMG0/MGB/SGB/SGB2)
- 可以加载颜色启动ROM(CGB/CGB0)
- 基于硬件内存图的内存块
- 银行的地区使用叠加层(todo:弄清楚是否有更好的支持方法)
- GB与GBC的差异已处理(例如,银行WRAM)
- 硬件寄存器的符号(0xffxx范围)
- GB与GBC的差异已处理(例如,Key1寄存器的存在)
如何安装
- 下载预构建的Ghidraboy版本,或自己构建。
- 启动Ghidra
- 文件 - >安装扩展
- 按Plus图标(“添加扩展”)
- 选择构建或下载的Ghidraboy Zip文件
- 当提示正确加载扩展时,重新启动Ghidra
如何构建
作为先决条件,您需要在某处安装Ghidra(实际安装,而不是Ghidra源代码的副本!)。
export GHIDRA_INSTALL_DIR=/path/to/ghidra
./gradlew
或者
./gradlew -Pghidra.dir=/path/to/ghidra
然后,您可以在build/distributions目录中找到构建的扩展。
打开问题 /问题
- 如果使用某些说明,则很难阅读分解器输出(例如旋转,JP HL用于jumptables)
- 默认的“ ASM调用约定”假定所有寄存器都可以是输入和/或输出。输入/输出通常错误地猜测,因此几乎每个功能都需要手动调整
- 叠加层是处理银行存储区域的唯一 /最佳解决方案吗?目前,在银行的ROM中,每个功能都需要手动解决至0x4000-0x7fff
执照
根据Apache许可证获得许可,版本2.0。