在旧 ZX Spectrum 机器码和 Rust 上测试编码代理

发布: (2026年2月28日 GMT+8 23:00)
3 分钟阅读
原文: Dev.to

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 编写。
  • 由于版权限制,我无法公开发布源码或二进制文件;该项目仅供私人使用。

截图

Jet Set Willy – Title screen

Jet Set Willy – Room 21

Jet Set Willy – Game Over screen

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

0 浏览
Back to Blog

相关文章

阅读更多 »

不糟糕的语义失效

缓存问题 如果你在 Web 应用上工作了一段时间,你就会了解缓存的情况。你加入缓存,一切都变快了,然后有人……

ClamAv 与 Rust‑TUI

ClamAv 与 Rust‑TUI 的封面图片 https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s...