nzeemin/bk0011m-dizzy1td-rev
GitHub: nzeemin/bk0011m-dizzy1td-rev
对苏联 BK-0011M 计算机上经典冒险游戏 Dizzy 1 的完整反汇编与逆向工程笔记项目。
Stars: 0 | Forks: 0
# bk0011m-dizzy1td-rev - 逆向 Dizzy 1 游戏 (MBS/TD) BK-0011M
## 游戏
该游戏名为 **Dizzy 1**,但其实是作者对由 Oliver Twins 设计并于 1989 年由 Codemasters 发行的 **Dizzy III** 或 **Fantasy World Dizzy** 的重新制作。

该移植版本由 **Magic Bytes Software** / **TD Corp** (Тюрев Дмитрий) 于 1994 年制作。
## 平台
**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 数据、屏幕缓冲区和关卡地图的核心所在。
## 仓库内容
| 文件 | 描述 |
|------|-------------|
| `dizzy.asm` | `DIZZY.DIZ` 的完整反汇编(游戏代码,16 KB),采用 MACRO-11 风格。使用 BKTurbo8 汇编器编译后,可生成与原始二进制文件逐字节相同的文件。 |
| `dizzy-font.inc` | 字体字形表(76 个字形,每个 10 字节,8×10 像素)。 |
| `dizzy-strings.inc` | 所有游戏内对话字符串以 `.BYTE` 指令形式呈现,并附带解码后的俄文文本。 |
| `REVERSE.md` | 详细的逆向工程笔记:数据格式、内存布局、解谜逻辑、sprite 表和房间系统。 |
## 反汇编状态
主游戏文件 `DIZZY.DIZ`(地址 `000300`–`037771`)已**完全反汇编并添加了标签**。其二进制输出与原始文件完全一致。
加载器 `DIZZY1` 未包含在内 —— 它是一个独立的文件,不在此项目的范围内。
## 构建代码
该汇编代码是为 **BKTurbo8** 汇编器(兼容 BK-0011M 的交叉汇编器)编写的。
运行以下命令以重新汇编:
```
BKTurbo8.exe -ik --raw -s000300 -ldizzy.lst CO dizzy.asm
```
输出的文件应与原始的 `DIZZY.DIZ` 在二进制上完全一致。
## 逆向方法
1. 在 GID 的 BK 模拟器中收集**执行轨迹**
2. 在已知位置进行**内存转储**,以确认静态数据和初始变量值
3. 对比编译输出和原始文件进行**二进制比对**,以验证二进制一致性
4. 对代码进行**迭代式注释**
## 参考
- [维基百科上的 Dizzy 系列](https://en.wikipedia.org/wiki/Dizzy_(series))
- [维基百科上的 BK-0011M](https://en.wikipedia.org/wiki/Elektronika_BK)
- [BK 软件目录中的 Dizzy 1](https://kalininskiy.github.io/bk-catalog/#game-847)
标签:PDP-11, Wayback Machine, 云资产清单, 反汇编, 复古计算机, 安全报告生成, 快速连接, 汇编语言, 游戏开发, 自动回退, 逆向工程