微型模拟器:在浏览器里复活 8 位机

查看原文 HN 讨论

文章摘要

这是开发者 Andre Weissflog(网名 flohofwoe / floooh)打造的 “Tiny Emulators”(tiny8bit)项目——一整套通过 WebAssembly 在浏览器里直接运行的经典 8 位计算机与街机模拟器合集。你无需任何原始硬件或复杂配置,点开链接就能在网页里玩起当年的老游戏、进入 BASIC/FORTH/CP-M 环境、或者欣赏 demoscene 作品。

合集涵盖的系统相当丰富:家用电脑方面有东德的 KC85 系列、Amstrad CPC、ZX Spectrum、Commodore 64 与 VIC-20、Acorn Atom、Robotron Z1013/Z9001;街机方面有 Bomb Jack、Pengo;此外还有把 6502 和 Z80 处理器内部结构可视化的查看器。站点托管了数百个可运行的程序,从 Boulderdash、Pac-Man、Prince of Persia 这样的经典游戏,到开发工具和技术演示,每个程序通常都配好了专属 UI、手柄映射、载入文件和启动命令。

这个项目真正的技术亮点在于其模拟方式,作者本人在讨论中做了说明。第一是”引脚级”(pin-level)模拟:各个芯片被建模成通过引脚信号相互连接的自包含模块,而不是简单的高层行为模拟,这让组件之间的接口极其明确、可组合。第二是 CPU 采用”逐周期步进”(cycle-stepped):处理器不再扮演特殊的”控制器”角色去驱动整个系统,而是和其他芯片一样被逐时钟周期地”tick”推进。以 Z80 为例,指令解码器仍是一个巨大的 switch-case,但每个 case 分支对应的是一个指令周期(instruction cycle)而非一整条完整指令。需要说明的是,被提交到 HN 的这个带 “-preview” 的 URL 其实是作者 2021 年为测试而建、早已过时的版本;官方最新地址是 floooh.github.io/tiny8bit/。作者坦言自项目主要作为圣诞假期的”度假项目”推进,2023 年后没怎么再更新,近来只是升级了 sokol 和 Dear ImGui 等依赖。整体而言,这是一个兼具怀旧保存价值与教育意义的作品,让现代人得以亲手触碰 8 位计算的历史。

HN 评论精华

评论区既有对模拟技术的技术性讨论,也充满了老玩家的怀旧情绪,还夹带着英式怀旧的”地图炮”。