某个周末下午,我突然想重温当年在诺亚舟学习机上玩过的三款 RPG 游戏,于是开始了这次考古。下图是项目的时间线和统计数据。虽说用上了一些前沿模型,但也没有夸张到 1 小时就完成,而是断断续续花费了很多个 1 小时。

项目时间线与统计

当年我玩过的是这三款游戏,不知道屏幕前的你是否也玩过?

《天龙传奇》

《天龙传奇》讲的是一场带着上古神话色彩的江湖冒险。轩辕天龙是轩辕黄帝的后人,一日得到黄帝托梦,得知分封于五岳的蚩尤封印正在松动,于是和青梅竹马的欧阳若水离开桥山,踏上重新封印魔神的旅途,途中还有志同道合的赵天鹏加入,依次在五岳击败了各个堂主,最终击败嵩山掌门人,化解了这次危机。

《天龙传奇》游戏画面 1
《天龙传奇》游戏画面 2

《天明》

《天明》将故事放在元末乱世。淮西百家庄的少年郑明,原本只是与朱重八相约进山猎鸟,却在回村后发现家园遭到血洗,从此被卷入江湖与乱世的纷争。一部与陆游有关的《旷世宝典》,牵出武学传承和宝藏的秘密。随着旅程展开,李玉儿、朱重八等人的命运与郑明交织,个人恩怨也逐渐与天下局势连在一起。最有意思的可能是这个游戏是英文版,大部分对话是英文,还有一些智力问答题目。更有趣的是游戏中将明朝的由来归到了朱重八的好朋友郑明(以前都没注意到这点设计,很有想法的剧情)。

《天明》游戏画面 1
《天明》游戏画面 2
《天明》游戏画面 3

《天降风云录》

《天降风云录》的主角陆孤梵,是一个从天而降、在平安镇长大的孤儿,平日靠替镇民跑腿维生。故事从寻找失窃的西瓜、向猎户求助这些小事开始,随后将他带入拜师学艺、结伴远行的江湖。途中,他与柳紫仪、赵梦雪相伴,经历困洞脱险、地牢救援与复仇,也逐渐卷入魔教和武林各派的纷争。随着假教主的疑点浮现、被囚的师长获救,众人才发现,江湖动乱背后还有兽神的操纵。最初小镇少年的冒险,就这样与人与兽的冲突联系起来,而三位同伴之间的牵挂,也贯穿了这段旅程。

《天降风云录》游戏画面 1
《天降风云录》游戏画面 2
《天降风云录》游戏画面 3
这些游戏,当年就运行在这样的学习机上。诺亚舟 NP360+ 是大概 2005—2007 年间流行的一款学习机,同时期还有好记星、文曲星。我在闲鱼花 40 多元淘到了一台成色相当不错的机器,它当年的价格大约是 1000 元。
诺亚舟 NP360+ 展开键盘后的完整外观 收起键盘后的 NP360+ 机身外观 NP360+ 屏幕上的游戏文件列表
淘回来的 NP360+:展开的键盘、机身外观,以及屏幕里的游戏文件。

这些游戏在今天看来,剧情相对简单,画面也是像素风格,算不上精致,BGM 大概也是几首来回循环。在我的那个上学时代,在为数不多的娱乐活动可选项中,它们算是比较用心和精致的游戏。

这是原机的游戏视频和最终实现的模拟器运行的效果:

原机游戏视频 · 在 YouTube 观看
浏览器游戏视频 · 在 YouTube 观看

起源

为什么到了 2026 年,我又开始折腾这个旧 RPG 游戏

AI 帮我们提高了很多工作的完成速度,如果可以帮我完成一些之前做不到的事情,会不会是更有趣的用法?

之前也想过还原游戏、重温一遍,但想到要投入的时间和精力,以及最后可能仍然做不出来,就迟迟没有开始。而现在,AI 帮我补上了启动这件事所缺的那一点行动力。

7 月的某个周末下午,想着重温旧时游戏的我在网上又完整地找了一遍(尝试过 Google、Bing,呃,还有 Baidu 和 AI web search),冷门游戏,目前互联网可以找到的资源不多。没有找到直接可玩的诺亚舟 RPG 游戏模拟器。意外地在贴吧里面找到了有人在 2014 年就已经靠着热情对其中之一《天降风云录》 进行了复刻还原,而且还将素材进行了彩色加工,估计这里面的工作量不小,对此表示无比的敬意。而我想要重温一下之前的黑白原版游戏,特别是另外两款游戏。

image-20260909095113407

一番查找后,了解到诺亚舟之后公司改名为优学派,而且还非常良心地保留了其中一款游戏的下载方式:NP360+大型RPG游戏:天龙传奇V1.1版,于是幸运地找到了我想要玩的第一款游戏的安装包。

image-20260909095602080

《天明》的安装包却一直没找到。寻找它的过程后来还带来了意外收获,这个留到后面再讲。

有了安装包,没有逆向静态分析经验的我,能把游戏运行起来吗?提取人物、怪物、地图和音频等素材,与还原完整的游戏行为,仍是两回事。要不用 AI 试试?放在以前,走到这里我可能就知难而退了。

技术路线与实现流程概览

游戏还原的技术路线
从第一帧到结局的实现过程

《天龙传奇》和后两款游戏采用的技术不同。诺亚舟游戏工作室从《天明》开始采用“诺亚舟游戏制作大师”(似乎是 RPG Maker 的修改版本,待考证),因此它们的兼容运行时也需要采用不同的实现。

考古之路 #1 天龙传奇

7 月 12 日,我在 Codex app 中新建了项目,准备好两个目录,向 GPT 5.6 Sol Medium 写下了第一条指令:

我 → Codex · 第一条指令

这里有两个目录,里面是我小时候玩过的一个 rpg 小游戏,但是目前这个设备已经没有了,我想重温下这个游戏。

我和 Codex、Claude 对比了几条路线,最终选择实现兼容运行时。图片、物品表和音乐虽然可以从安装包中提取,但《天龙传奇》的战斗公式、数值成长、剧情触发等逻辑位于 RPGData.npe 中,以 65C02 机器码执行。

我希望尽量保留原作的行为。让原始代码继续运行,可以减少重写逻辑带来的偏差,但平台服务是否还原正确,仍需要逐项验证。

当时遇到的三个路径选择:

路线 做法 当时的判断
资源级复刻 提取素材,用现代引擎重写逻辑 需要重新理解并实现规则,容易引入行为差异
完整模拟器 直接用 MAME 的 ST22xx 模拟整台 NP360+ 硬件语义现成,但要模拟 NAND、文件系统、完整固件启动,WASM 体积和性能负担大,确定性重放和快照难做干净;作为后备
兼容运行时 用 Rust 的 W65C02S 核心跑原始代码,固件服务用类型化接口重实现 能够沿用原始游戏逻辑,但仍需验证平台行为;适合编译到 WASM;代价是要一个忙等循环一个忙等循环地补平台语义;我们选择了这个方案

天龙传奇游戏的安装包,包含这几份文件:

  • 天龙传奇.npe 是 1.5 KB 的启动器。
  • RPGData.npe 约 97 KB 是游戏程序本体。
  • RPGBIN.npe 约 6 MB 装着图片、物品表、过场和 MP3 音乐。

第一天,游戏很快就显示出了主界面。我乐观地以为 AI 太强了,差点准备发一个震惊体的帖子。却没想到,要让游戏完整、正确地运行起来,还得再等两周。“太震撼了”不适合我这个考古项目。下面是过程中遇到的一些卡点。

  • 游戏文件解密,这个是全程使用 GPT 5.6 Sol 完成的,档位从 medium 一路拉到 ultra,期间,采用 Fable 5 做了方案讨论和评审。
  • 游戏出现第一帧画面之后,运行一会就会出现定时器死循环,GPT 5.6 Sol 查阅了完整的 ST2205U 手册和 MAME,最后写出了完整的逻辑时钟的定义。
  • 让 Codex 从开局推进到大结局时,我发现它在买装备、练级和寻找宝物这些决策上的探索效率并不高。一些人玩游戏时凭直觉就能判断的事情,仍需要我补充信息,帮助它调整策略。
  • 刚开始的画面色彩不对,看起来像是一张胶卷底片,问题的根源一是屏幕的灰阶得按驱动极性反过来,二是 DMA 在内存里搬运重叠区域时,必须逐字节按原顺序执行。

AI 是怎样玩游戏的

开发时,为了快速验证,曾经直接改过等级、金钱和物品数量。但要确认自己以后能正常玩到结局,还需要在不改数值的条件下,从开局走完剧情。这个步骤花了很长时间。

Codex 和 Claude 并不是通过浏览器看画面、按按钮来玩。兼容运行时提供了 advance(input) 接口:输入一帧按键,游戏就向前推进一拍。测试程序反复调用它,并读取内存中的地图、坐标、队伍状态、背包和菜单位置。需要人工复核时,才导出截图。

  • 走路: 根据解码出的地图出口表寻找路线,先在克隆的运行时中试走,确认可行后,再在正式运行时中执行。
  • 战斗: 从 Boss 战前的状态克隆运行时试打,选出能获胜的按键序列,再在正式运行时中执行。打不过就练级、买装备,不改数值。这种方法相当于反复读档试战,并不代表 AI 像人一样一次就能打赢。
  • 完整重放: 最后从开局连续重放到结局,中途没有恢复检查点,共推进了 109 万帧。

这条验证路径能检查许多游戏逻辑,却没有覆盖浏览器里的全部操作体验。后来亲手测试时,我仍然发现了一些小问题。

考古之路 #2 天明游戏

《天明》让我印象很深的一点,是大部分对话都是英文。当时上初中的我硬着头皮玩完,时不时还得查字典。

首先难点是安装包,我找遍了互联网都没有找到可以直接下载的安装包,难道和重八、郑明两位真的无法相见了吗?此时苦恼不已的我向 L 说了说我在做的无用却有趣的考古项目,那么去闲鱼看看呢?(L 已经是一个闲鱼小达人,卖出了家里各种不用的物品,甚至考虑将我的副显示器卖掉)。于是在闲鱼花费 20+ 购买到了 诺亚舟 NP360 & NP560 的游戏安装包合集。

开开心心地告诉 Codex 开始干活了:

讨论下,我还有一个天明游戏的安装包,那么目前的设计是通用的吗

所有目前的分析得到的结论,是 天明游戏的还原,相对 天龙传奇的还原,会更加简单,还原的难度更低耗时更短是吗

Codex

从零开始比较,《天明》的固有还原难度明显低于《天龙传奇》……它的风险更集中、路线更清晰,预计完整还原的总工作量低于《天龙传奇》。

然后故事并没有这么简单,过程中走了比天龙传奇更多的弯路。

  • 第一帧游戏画面出现,就走了不少弯路,使用了太重的开发流程,导致迟迟没有获取到结果。
  • 游戏音乐不正常,全部都是噪声,Claude 声称找到了正确的解码方式,同时将音乐标记为正常。实际上后来测试之后发现都是错误解码,拿一段已知正确的音频走同一条解码链,再拿一段随机字节走同一条链,看天明的输出更像哪一个。结果是:已知正确的样本有清晰的安静段、削波为零;随机字节没有安静段、削波明显;天明的输出和随机字节落在同一簇里,一百三十八秒的“音乐”里却没有一个安静窗口。最后判断是解码器不正确输出。然后把三百多种对齐方式全部试了一遍,没有一种接近正确。真正的解码器烧在芯片的 ROM 里,从固件里获取不到。

之后就是同样采用诺亚舟游戏大师制作出来的天降风云录,参考天明照猫画虎。唯一遇到的一个难点是开机画面全部显示雪花,无法正常显示,原因是文件层只给了播放器一个共享的读取游标,播放器一边顺序读片头动画,一边第二次打开同一个文件去加载标题模块,第二次打开的定位把第一次的读取拖到了错误的位置,在给文件层加了四个独立句柄之后,才最终正常播放十六帧的开场动画。

收获

这次折腾,让我对如何使用 AI 有了几条具体的体会。

  1. 更容易开始。 过去一想到要做逆向、还原运行环境,我就觉得困难,迟迟没有行动。AI 让这些原本停留在脑中的想法,更容易迈出第一步,但离真正做完仍有很长一段路。
  2. 仍需自己判断。 AI 说得言之凿凿,也可能是错的;不同模型交叉评审,也没能避免所有弯路。《天明》的音频问题让我尤其感到,自己缺少相关知识时,很难及时辨别它的判断。我后来开始更认真地检查:结果是真的符合游戏行为,还是只是看起来合理?
  3. 在《天明》的第一版验证中,我过早加入了 Plan 和 subagent review,迟迟没有验证最关键的问题。下次我会先跑通 MVP,之后再逐步补上流程更为合理。

开始时,我只是想重温几款游戏,后来却接触了许多原本没打算研究的东西:旧机器怎样执行指令,游戏怎样启动,一幅画面又怎样显示到屏幕上。自动测试通过后,实际游玩仍能发现动作和画面的异常。这也提醒我,测试覆盖的行为与人的实际体验之间,还有需要补上的部分。

另一个变化,是我开始重视给 AI 提供什么材料。对话逐渐从“没问题,继续实现”,变成了“实现这个,有哪些路径呢?这两个路径有哪些区别?实现难度有多大区别?”。截图、已有的决策记录,以及亲手玩出的异常,成了后半程推进开发的重要依据。和同事沟通一样,先把背景和问题交代清楚,讨论才更有效。

现在,《天龙传奇》《天明》《天降风云录》三款游戏都已经可以在浏览器中玩了。我还想把它们适配到 iPad 上,便向 GPT-6 Astra 发出了下面这条指令,期待第二天醒来后就能在平板上重温游戏。

我 → Codex · iPad 适配

我要去睡觉了,当我醒来时,我希望在我的 iPad 上运行这三个游戏,而且我不会在身边从 iPad 给你反馈。

许多地方看起来还是不够完善,目前的一个时间陷阱是,AI 给人一种幻觉:这个事项马上就能处理完,一直继续继续想让 AI 进一步完善,是不是有点像玩《文明》的感觉?不过我打算先将这部分探索的代码整理之后公开,暂时停止探索了。原因很简单,项目中做了非常多的自动化,支持了游戏开局到大结局的完整剧情推进(天明游戏有个 北京&天津的剧情分支节点没有完整测试),但是从项目开始至今,还没有将支持好的三款游戏从头到尾完整玩一遍,是时候停下来好好玩一下游戏本身了。

接下来考虑会利用业余时间进行通关,顺便完整地录像保存下来,上传到 B 站和 YouTube 上,给自己这次的旧游戏考古之路画上一个句号,给后来同样需要重温的人保留一份回忆,希望以后有人搜索这些游戏时,可以找到一些有趣的东西。

代码、使用说明和一些已知的问题还需要做一些整理,过些天应该会上传到 GitHub 公开。届时如果你发现也玩过这些游戏,或者还保存着相关资料,欢迎告诉我。目前已经整理发布的两个考古网址,感兴趣的你可以点开了解下

  1. https://noahwiki.purelind.com/ 游戏档案考古
  2. https://noah.purelind.com/ 封装好的一个在线可玩的口袋掌机

折腾许久,接下来终于可以找个安静的晚上,坐下来开始“新的征程”了。

《天龙传奇》主菜单:新的征程、再续前缘、退出游戏