AX 爱鲜报

FSHistory 微软模拟飞行历史

在浏览器中重温微软模拟飞行早期历史,基于 C 语言与 WebAssembly 实现 8086 模拟器,可运行 1982 至 1989 年的四款经典飞行模拟游戏,支持鼠标键盘操作。

爱鲜报评分

0.0

0 人评分

787

星数

否

中文

C

主语言

是

活跃

5

贡献者

人工分析

EDITORIAL

推荐理由

项目用 C 语言手写 8086 模拟器并编译为 WebAssembly,技术实现干净利落,二进制仅 93KB 且零依赖。它被微软官方收录为《微软模拟飞行 2020》四十周年纪念版的彩蛋,兼具技术学习与怀旧价值。对模拟器、WebAssembly 和复古游戏感兴趣的开发者不容错过。

适用场景

  • 学习 8086 模拟器与 WebAssembly 编译原理
  • 在浏览器中体验复古飞行模拟游戏
  • 研究 DOS/BIOS 中断与硬件模拟实现
  • 作为 C 语言与 SDL 跨平台开发的参考案例

优点

  • 纯 C 实现,代码简洁,零依赖
  • WebAssembly 版本仅 93KB,加载迅速
  • 完整模拟 8086/286/386 CPU 及外设
  • 被微软官方彩蛋收录,品质有保证
  • 支持鼠标键盘,移动端也可游玩

缺点

  • 游戏数据不包含在 MIT 许可内,需自行获取
  • 模拟器功能有限,仅支持特定几款游戏
  • 需要熟悉 C 和 SDL2 才能本地构建
  • 移动端操作体验不如桌面端
上手难度 进阶

FSHistory:在浏览器里重温微软模拟飞行的起点

FSHistory 是一个用 C 语言编写的 8086 模拟器项目,它把 1982 年至 1989 年间由 Sublogic 和 Bruce Artwick 开发的四款初代微软模拟飞行游戏搬到了网页上。你只需要打开浏览器,就能体验飞行模拟游戏最初的模样。

技术亮点

项目作者选择 C 语言,因为模拟器需要底层硬件操作,而 C 正好擅长此道。通过 LLVM 的 clang 编译器,代码被编译成 WebAssembly,并且作者自己实现了一个极简的 libc(包括 printf、malloc、memcpy 等),使得最终二进制文件只有 93KB,且零依赖。

核心功能包括:

  • 模拟 8086 CPU,并支持 286 和 386 的部分特性
  • 模拟键盘、鼠标、图形、中断控制器和定时器
  • 实现类似 DOSBox 的 DOS 和 BIOS 功能
  • 通过 SDL 编译为原生可执行文件,或通过 LLVM 编译为 WebAssembly

如何构建

构建原生版本需要安装 gcc 和 SDL2,然后运行:

make

构建 WebAssembly 版本需要安装 clang,然后运行:

./scripts/compile_wasm.sh

彩蛋故事

有趣的是,这个项目被 Asobo Studio 的开发者看中,并作为彩蛋放进了《微软模拟飞行 2020》四十周年纪念版中。在钻石 DA62 飞机上按下 ELT 开关,就能在机载屏幕上玩到这四款经典游戏。作者本人也确认了这一点。

许可说明

软件部分采用 MIT 许可证,但 data 目录下的游戏数据不在 MIT 许可范围内,使用时请注意。

评论

登录后才可评论与评分

0 条评论

  • 暂无评论,来写第一条吧。