在旧 ZX Spectrum 机器码和 Rust 上测试编码代理
Source: Dev.to
引言
小时候我拥有一台 ZX Spectrum(Didaktik M)。我并没有在上面玩太多游戏——我更感兴趣的是编程——但有一款游戏我非常喜欢:Jet Set Willy。我花了很长时间去通关那些荒诞、搞笑的关卡,并且好奇这么多房间、图形、技巧和秘密是如何塞进仅 48 KB 的代码中的。
几十年后,我仍然会想到这款游戏。我从未成为常规玩家;我偶尔才玩一下俄罗斯方块。我曾多次尝试使用 C 和 C++ 为 PC 重写 Jet Set Willy,依赖粉丝发布的机器码清单,但始终进展不大。
昨天,我决定尝试使用基于 AI 的编码代理,将 Jet Set Willy 用 Rust 重写,使用我在网上找到的反汇编源码。
用 Rust 重写 Jet Set Willy
AI 帮助将原始的 Z80 汇编翻译成符合 Rust 习惯的代码。我在保持音乐、图形和游戏逻辑忠实于原作方面非常谨慎,因此 Rust 版的游戏仍然感觉原汁原味。主要挑战包括:
- 将 Z80 硬件寄存器映射到 Rust 抽象层。
- 重新实现驱动精灵引擎的时间关键例程。
- 保持原始关卡数据的精确行为。
仅用了不到一天的时间,游戏就可以再次玩了。由于整个代码库现在全部是 Rust,实现 bug 修复或小幅度改动变得非常直接。
结果
- 所有 60 个房间均已实现,并且可以在 Rust 中顺利编译。
- 游戏运行流畅,已不再包含任何 Z80 机器码——全部 100 % 使用 Rust 编写。
- 由于版权限制,我无法公开发布源码或二进制文件;该项目仅供私人使用。
截图



三十年后,我终于可以再次玩我最喜欢的游戏了。<3 Jet Set Willy