微型模拟器:在浏览器里复活 8 位机
文章摘要
这是开发者 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 评论精华
评论区既有对模拟技术的技术性讨论,也充满了老玩家的怀旧情绪,还夹带着英式怀旧的”地图炮”。
- flohofwoe(作者本人)出面澄清并科普:提交的是过时的 preview URL,正确地址是 tiny8bit/;他重点介绍了”引脚级模拟”和”逐周期步进 CPU”两大特性,并给出学习代码的路径——从顶层的模拟器可执行文件往下读到各系统实现,再到芯片模拟器,附上了讲解 Z80 逐周期实现的博客链接。
- Lerc 被这种引脚级模拟模型打动,进而思考一个更大的命题:”极薄但定义明确的接口”是否是一个被低估的互操作领域。他设想在 AI 生成代码的时代,只要黑盒无法违反其行为约束,人们就可以不关心盒子内部发生了什么——模块化组件加上明确的一致性测试,可能有远超芯片模拟的应用价值。
- ikari_pl 分享了亲身经验:他自己也做过引脚级的 Amstrad CPC 模拟,谈到了其中的性能取舍,并表示计划开源代码、探索接入真实硬件的可能。
- ChrisArchitect 呼吁把提交 URL 更正为官方地址,并追问 OP 从哪儿翻出这个 preview 链接的——这条评论也促成了作者本人现身澄清。
- renaudg 挑起了一场轻松的”民族情结”论战:他感谢这个合集展示了 Amstrad CPC 有多棒、又多么被低估,顺带调侃”英式怀旧扭曲力场”过度偏爱 ZX Spectrum。keyle 则一句话戳中一代人的记忆点——当年用磁带载入这些游戏要等到天荒地老,如今零点几秒就好了,”ZX Spectrum 上的《李小龙》是我的最爱”。
- Folcon 由此联想到夭折的太空编程游戏 0x10c,他一直着迷于”用虚拟迷你电脑构建世界观”的设定,甚至设计过赛博朋克、太空旅行等多个变体,但始终说服不了自己这不是极小众的爱好,于是在评论里征集同好。20k 则给这类构想泼了冷水:要求玩家亲手搭建整个操作系统的门槛高得难以逾越,注定只能吸引极窄的受众。