行业#游戏移植#虚拟化

开发者用纯 JavaScript 复刻整台 486 PC:浏览器里开机进 FreeDOS,还能拔插显卡声卡

GitHub 用户 jandej 发布 Retro486 v0.1,纯 JS 复刻 486 整机,一键挂载 FreeDOS 与游戏盘,v0.1 部分游戏报错。

模拟器主板视图里的 Intel i486 DX2-66 处理器、四条 4MB SIMM 内存槽和 VLB 显卡插槽

GitHub 用户 jandej 在 2026 年 10 月 21 日发布了 e486-web(界面名 Retro486,当前版本 v0.1):一个用纯 ES6 JavaScript 写成的 Intel 80486DX2-66 整机模拟器,不依赖 WebAssembly、不带任何构建步骤,克隆仓库起一个静态服务器就能在浏览器里开机。它跑真实的 SeaBIOS 和 VGA BIOS,默认挂载 FreeDOS 1.3 软盘和一块 250 MB 的 MS-DOS 硬盘镜像,存储页里还带一个磁盘库,Commander Keen 4、Wolfenstein 3D、Duke Nukem II 和 DOOM 共享版软盘一键挂载。Tom’s Hardware 在 10 月 31 日实测后写道,FreeDOS 启动正常,但试玩磁盘库里部分游戏时报了错——这个项目还处在 v0.1。

要点

  • e486-web 仓库 2026-10-21 创建,当天提交「Release v0.1」,最后一次推送是 10 月 29 日——合并的 PR #1 只做 GitHub Pages 部署;NE2000 网卡来自 10 月 23 日的独立提交。截至 2026-11-01 有 53 星、6 fork、7 次提交,无 LICENSE 文件(package.json 里标了 MIT)。
  • CPU 核心实现了实模式、16/32 位保护模式、V86 模式、按需分页和硬件任务切换,外加 80487 FPU;总线层有双 8259A PIC、8254 定时器、MC146818 CMOS 和 8042 键盘控制器,声卡是 SB16 加 AdLib OPL3,走 WebAudio 合成。
  • 界面分五个标签页:CRT 显示器、主板与插槽、存储仓、自定义卡工作室、系统诊断;CRT 滤镜有绿磷、琥珀、纸白单色等五档,ROM 和软盘镜像自动缓存在 IndexedDB,刷新后硬件配置保留。

它能模拟到什么程度

e486-web 的 CPU 核心在 js/cpu_486.js,约 5700 行,覆盖 80486 的三种工作模式和 4096 项 TLB 的按需分页;CPUID、BSWAP、CMPXCHG、XADD 这些 486 时代的指令都在列表里。主板层按 AT / i440FX 结构搭,中断、定时器、DMA、CMOS 各有对应模块,主板视图里能看到地址总线、IRQ 线和 7 段 POST 码的实时显示。显卡默认是 VLB 总线上的 SVGA 卡(带 Bochs VBE 支持),也提供 EGA 和 CGA 卡;Mode 13h 的 320×200×256 色模式就是 DOOM 和多数 DOS 游戏跑的画面。

扩展卡全部做成热插拔模块,js/cards/ 目录下有 SVGA、EGA、CGA、SB16+OPL3、多 I/O 存储卡(双通道 ATA 加软驱)、POST 诊断卡、MPU-401 和 10 月 23 日新增的 NE2000 网卡。仓库还附带一个 1990 年代风格的样例项目:一个跑在 DOS 里、经网关调用 Gemini、GPT-4o 和 Claude 的 AI 聊天客户端,源码和 Makefile 都在 projects/ 下。

怎么试

最短路径是打开在线 demo(jandej.github.io/e486-web),点屏幕上的 FreeDOS 软盘直接进 DOS 提示符,全程不需要装任何东西。想本地跑就克隆仓库后执行 npm start(起一个 Python 静态服务器),打开 http://localhost:8080/;npm test 可以跑三个 Node 单元测试套件(CPU、扩展卡、存储)。上传自己的 .img 或 .iso 镜像用拖拽,写进软盘的数据也会缓存在浏览器里。存储页的「1-Click Bundled & Cached Disks」就是那些游戏盘的入口——不过按 Tom’s Hardware 的实测,v0.1 的游戏兼容性还没有打磨好,部分游戏会报错。

各方说法

Tom’s Hardware 的报道是唯一的独立媒体评测。作者抓住的细节是开发署名:Claude 出现在 10 月 29 日部署 Pages 的合并提交的 Co-Authored-By 里,Tom’s Hardware 由此推断 “we guess you could say e486-web was (partially) vibe-coded”,文末期待那些毛刺正被 de Jager 和 Claude 忙着磨平。快科技在 11 月 1 日做了中文转译,内容与原文一致,没有补充新信息。Hacker News 上 10 月 31 日有一则转贴,到 11 月 1 日只有 7 个赞、1 条评论——这个项目目前还没出圈。

浏览器里的 x86 模拟器早有先例:Fabian Hemmer 的 v86 在浏览器里跑 Linux 已有多年,archive.org 的 DOS 游戏区用 DOSBox 的 WASM 版撑着。e486-web 的差异点在硬件展示层:主板可视化、可拔插的卡和自定义卡工作室是面向教学的,v86 没有这一层。

编辑判断

这个项目最有趣的用法是当硬件教学沙盘。想给学生讲「按开机键之后发生了什么」,从 POST 码、BIOS 自检、引导扇区到 DOS 提示符,这里每一步都看得见,还能把显卡拔下来看会怎样——这比截图讲总线的幻灯片直观得多。自定义卡工作室带模板和 I/O 测试台,动手空间是真实的。

写这篇稿子时我们保留三个疑点。其一,版本只有 v0.1,Tom’s Hardware 实测游戏报错,把它当能用的 DOS 游戏机还为时过早。其二,仓库没有 LICENSE 文件,package.json 里标了 MIT;v0.1 曾把 DOOM、Wolfenstein 3D 等商业游戏的共享版软盘镜像一起跟踪在仓库里,10 月 23 日的提交把它们移出了仓库(存储页的磁盘库入口还在,线上已取不到这些镜像),这些镜像的分发授权没有任何一方讨论过——DOS Zone 的《罪恶都市》网页版 10 月刚因 Take-Two 的下架请求被移除,AI 把老游戏搬上网页 那批项目面对的是同一个问题。其三,除 Tom’s Hardware 外没有第二家媒体报道,热度尚谈不上。

AI 参与开发也不是新闻,但参与深度值得看:一个 5724 行的 CPU 核心加 1793 行的总线代码,署名里带上了 Claude,Tom’s Hardware 据此称它「部分 vibe-coded」——按其原文这是媒体推断,不是作者的自我标注。此前 Epic 用 vibe coding 重写游戏启动器、我们写过,谷歌给 vibe-coded 应用开了 Play 商店的私有库通道,也有一篇。从网页小游戏到整机模拟器,这条线在往底层走。

接下来

仓库 10 月 29 日合并的部署请求把项目带上了 GitHub Pages,10 月 23 日的提交则留下了 NE2000 网卡——网络功能在 DOS 模拟器里是下一步的基础。作者没有公布路线图,v0.1 之后的方向只能看提交记录。如果你在意游戏兼容性,建议等一个打了补丁的版本再试磁盘库;如果只是想看 486 怎么开机,现在就能打开。