更多帖子
帖子进阶

《模拟飞行 95/98》终于在 64 位 Windows 上跑起来,由 Claude Code 打补丁

Flight Simulator 95/98 finally running on 64-bit Windows, patched by Claude Code

AI 导读

这是 r/ClaudeAI 上的一篇社区帖子,作者是《模拟飞行》老玩家,讲述用 Claude Code 排查 FS95 与 FS98 在 64 位 Windows 上因除零异常崩溃的问题:先让 Claude 修改 WINDOW.DLL 和 G3D.DLL 修好 FS95,调试 FS98 时又发现真正原因在 EXE 自身,并据此回溯到 FS95 的 EXE,从而可保留原 DLL。帖中引用了 Claude 对 EXE 内除零处理例程与 __try / __except 机制的说明。适合正在用 Claude Code 处理旧程序兼容性调试、对二进制逆向与补丁修复感兴趣的人阅读。

分级
值得看
收录时间
2026-10-26

原帖

So the patch adds 86 bytes at the program’s entry point that register the routine with AddVectoredExceptionHandler and then start the game normally. One patch covers every division with exactly the results the game was written for.

Torturephile · · 在 Reddit 查看原帖(新标签页打开)

中文大意

发帖人 Torturephile 是老飞行模拟爱好者,用 Claude Code 让 FS95 和 FS98 在 64 位 Windows 上跑起来。他原本以为问题出在 WINDOW.DLL 和 G3D.DLL 的除零异常,Claude 先修补了 FS95 的 DLL 并成功;调试 FS98 时发现真正问题在 EXE,于是回头定位 FS95 的 EXE(其除法处理例程实际在 DIVTRAP.DLL),用 AddVectoredExceptionHandler 在入口处加 86 字节补丁,绕过窗口回调边界上 __try/__except 无法生效的限制。他提供 MediaFire 与 GitHub 的 EXE 打补丁工具,需自备游戏光盘或自行获取并阅读 readme;后根据评论建议把补丁改为只处理除法异常,并附上汇编源码。流程约 20–30 分钟,他自称不是程序员。适合复古游戏玩家、老游戏…

讨论区核心观点

依据 40 条评论

  • 多数人觉得这是很酷的成就,勾起对 Meigs Field、Cessna 的怀旧,并希望 Claude 同样复活其他老游戏(如 Black & White、Nox、Midtown Madness)。 出处(新标签页打开)
  • 发帖人补充工作流:约 20–30 分钟,先喂崩溃日志并说明只在 64 位 Windows 上出现,再给 x32dbg 截图和 DLL;Claude 从 DLL 追到 EXE,还写了打补丁工具以免直接分发游戏文件。 出处(新标签页打开)
  • kbr89 用微软 WNDPROC 文档解释原理:WOW64 下系统会抑制逃出窗口过程的异常,向量化处理器在栈展开前调用所以能绕过;并提醒补丁要放行与除法无关的异常,发帖人据此重做了补丁。 出处(新标签页打开)
  • 有人指出 AI 发现的真正价值在于问题在 EXE 而非发帖人猜的 DLL,建议处理老代码时先给崩溃和症状,先不抛出自己的假设。 出处(新标签页打开)
  • 有人问能否在 Proton(Steam Deck/Linux)或 Mac 上运行;发帖人认为 FS95/98 也许可行,更老的 DOS 飞行模拟可用 DOSBox 跑,并推荐 DDrawCompat 修渲染问题。 出处(新标签页打开)
  • 讨论提及这类 90 年代工具链(masm、老版 Visual C++、缺失的 SDK)几近绝迹,Claude 能处理的低层汇编空间很大,甚至进一步改画质、分辨率、帧率解锁等。 出处(新标签页打开)