Dave-Agent/monty-on-the-run

GitHub: Dave-Agent/monty-on-the-run

该项目是对 C64 游戏《Monty on the Run》的完整带注释 6502 汇编重构,汇编输出与 1985 年原版磁带完全字节一致。

Stars: 4 | Forks: 0

# Monty on the Run — 重构源码 这是 198 年由 Gremlin Graphics 发行的 Commodore 64 游戏*Monty on the Run*的带有完整注释的 6502 汇编源代码,通过静态和 动态分析重构而成。每个函数、数据块和内存地址都已被识别和命名。 ## 构建 你需要 [Java](https://adoptium.net) 和 [KickAssembler](https://theweb.dk/KickAssembler/)。 ``` java -jar /path/to/KickAss.jar src/motr.asm -o motr.prg ``` 输出的 `motr.prg` 是一个标准的 C64 PRG 文件。 要在 VICE 中运行,由于该游戏没有 BASIC stub,因此 `RUN` 无法生效。请通过键盘缓冲区直接传递 `sys` 命令: ``` x64 -keybuf "sys 2064\x0d" motr.prg ``` ## 起源 该源代码的初始构建是通过在 [Ghidra](https://ghidra-sre.org) 中对磁带二进制文件进行反汇编,并使用 [ghidra-kickass-export](https://github.com/Dave-Agent/ghidra-kickass-export) 插件进行导出开始的,该插件能直接从 Ghidra 项目生成 KickAssembler 语法的 `.asm` 文件。这提供了一个随时可进行汇编的起点,并保留了所有原始地址;此后的所有工作就是重命名、添加注释以及深入理解。 ## 两个版本 | 分支 | 输出 | |--------|--------| | `main` | 字节完美 — 汇编输出与原始 PRG 完全一致 | | `enhanced` *(计划中)* | 完整的 KickAssembler 对象语法,可能包含优化和修复;非字节一致 | ## 布局 ``` src/motr.asm Single-file assembly source. Every instruction carries its original address and opcode bytes in the end-of-line comment. Every function has a section banner; every data block a label. src/symbols.asm Address map for memory outside the PRG: zero-page variables, hardware registers, KERNAL entry points. src/libs/ Hardware register definitions imported by motr.asm. vic.asm VIC-II registers ($D000–$D3FF) sid.asm SID registers ($D400–$D7FF) cia.asm CIA1/CIA2 registers ($DC00–$DDFF) cpu.asm 6510/6502 CPU-level constants (stack, vectors, flags) docs/ Standalone HTML viewers — open in any browser, no server needed. sprite_viewer.html All VIC bank 1 sprites, filterable by category enemy_sprites.html Enemy sprite sheet with type IDs fk_sprites.html Freedom Kit item sprites hiscore_sprites.html Flying-banner composites decor_viewer.html Room decoration tile viewer world_map.html Room connectivity map ``` ## 原版游戏 *Monty on the Run* 由 Peter Harrap 编写,于 1985 年由 Gremlin Graphics 发行。音乐由 Rob Hubbard 制作。本仓库仅包含重构的 源代码,不包含原始二进制文件。 字节完美的目标是直接从原始磁带版本加载的纯净副本,没有任何补丁、破解或修改。如果你想验证字节一致性,你需要一份该磁带版本的合法副本。 ``` ██ ██████ ██████ ██████████ ██████ ████████████████ ██ ████████ ██████ ██ ████ ██████ ██████ ████ ██ ██████ ██████ ████ ██ ████ ████ ██████████████ ████ ██████████ ████ ████ ████████████ ████ ██████████ ████████ ████ ████████ ██████████ ██████████ ██████ ██████ ████████ ```
标签:6502, Commodore 64, JS文件枚举, URL提取, 云资产清单, 反编译, 多模态安全, 安全报告生成, 汇编, 游戏, 逆向工程