nzeemin/bk0011m-tower-rev
GitHub: nzeemin/bk0011m-tower-rev
对 BK-0011M 平台上的苏联版 Tower Toppler 游戏进行完整逆向工程,产出带注释的 PDP-11 汇编源代码。
Stars: 0 | Forks: 0
# 塔游戏 (BK-0011M) 逆向工程
对一款运行在 **BK-0011M** 家用电脑上的苏联克隆版
**[Tower Toppler](https://en.wikipedia.org/wiki/Tower_Toppler)**(也被称为
**Nebulus**)的完整逆向工程。最终成果是一份带有注释的汇编源代码,编译后可生成与原版(大体上)完全一致的二进制文件。
## 关于游戏
Tower Toppler(1987年,Epyx 出品)是一款平台游戏,玩家需要控制 Pogo 攀爬旋转的圆柱形塔,躲避敌人并进入门中以推进游戏进度。

这是一款适用于 BK-0011M 的未授权克隆版,由一位苏联业余程序员(自称为“Magic Bytes Software”)于 1994 年编写。
该游戏忠实再现了原版:五座塔、相同的敌人类型、电梯平台、塔与塔之间的水下过渡画面,以及标志性的圆柱旋转效果。
## 关于平台 — BK-0011M
**BK-0011M**(俄语为 **БК-0011М**)是 20 世纪 80 年代由泽列诺格勒设计的一款苏联家用电脑。它是一台秉承 LSI-11 精神的 PDP-11 兼容机器。
**主要规格:**
- **CPU:** К1801ВМ1 — 一款兼容 PDP-11 的 16 位处理器
- **RAM:** 128 KB,划分为八个 16 KB 页面
- **显示:** 256×256 像素,2bpp(4 色),双缓冲
- **声音:** 1-bit 蜂鸣器
- **存储:** 5.25 英寸软盘
- **输入:** 键盘和操纵杆
其不寻常的 bank switching 设计:在一个固定的 16 KB 代码页之上,使用两个可独立切换的 16 KB 窗口——这是该游戏能够同时管理其 sprite 数据、屏幕缓冲区和关卡地图的核心所在。
## 仓库内容
| 文件 | 描述 |
|------|-------------|
| `TOWER.asm` | 带有注释的逆向汇编源代码 |
| `TBLOCK.TOW` | Sprite 数据,来自原版 BK-0011M 游戏的文件 |
| `TBLOCK2.TOW` | Sprite 数据,来自原版 BK-0011M 游戏的文件 |
| `MAZE.TOW` | 塔数据,来自原版 BK-0011M 游戏的文件 |
| `PANEL.TOW` | 数据,来自原版 BK-0011M 游戏的文件 |
| `sprite-completion.spr` | 游戏通关信息的 Sprite 数据 |
该源代码使用 BKTurbo8 进行汇编,并生成可在 [GID 的 BK 模拟器](https://gid.pdp-11.ru/) 中与原版文件
`TBLOCK.BLK`、`TBLOCK2.BLK`、`MAZE.TOW`、`PANEL.TOW` 配合运行的二进制文件。
## 逆向工程方法
1. 在 BKBTL 模拟器中收集**执行跟踪**
2. 在已知位置进行**内存转储**,以确认静态数据和初始变量值
3. 在编译输出和原版之间进行**二进制比对**,以验证每个区域
4. **迭代注释** — 跟踪特定的游戏行为以填补未知的代码路径
这种跟踪方法意味着理解是逐步加深的:从主循环和 game_frame 开始,然后沿着每个分支深入到移动、渲染、声音以及特殊序列中。
## 许可证
原版游戏二进制文件和磁盘镜像未包含在内,其著作权仍归各自作者所有。
本仓库中带有注释的源代码和文档代表了原创的逆向工程工作,并在 [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) 许可下发布。
标签:PDP-11, 云资产清单, 复古计算机, 安全报告生成, 快速连接, 汇编语言, 游戏, 逆向工程