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提取, 云资产清单, 反编译, 多模态安全, 安全报告生成, 汇编, 游戏, 逆向工程