一台原装红白机(NES),屏幕上出现了类似Windows 98的桌面、开始菜单,甚至还能点开一局扫雷。整套系统没有换主板,没有加装PC,跑的还是那台8位主机。
YouTube复古游戏实验频道Throaty Mumbo完成了这个名为NESPC的项目,相关代码和固件已放到GitHub上,其中包括他为RP2350编写的固件——正是这颗芯片让NES的手柄接口能接上USB键盘、鼠标和MIDI设备。
难点从一开始就很清楚:NES搭载的6502 8位微处理器太慢,根本带不动x86模拟。他的做法是把重活外包出去——用EverDrive N8 Pro卡带,这块卡带内置ARM架构的Cyclone IV FPGA,插进卡槽后利用NES的卡带侧处理能力,相当于给主机外接了一块“显卡”,把任务交给另一颗处理单元。
要跑x86,他选用了Next186——一个开源的FPGA软处理器核心,能让FPGA执行兼容Intel 80186的指令,表现得像一颗x86 CPU。
项目并非一步到位。他最初从网上找来的ROM试起,其中一个中文版Windows 98 ROM看着像那么回事,有画图、资源管理器,还有一堆酷似Win98程序的图标,但全都不能用,只是程序大概长什么样的图片。他也试了decrazyo的Linux项目NES86,结果慢到无法使用,这才决定自己写ROM。
早期版本是命令行界面。他演示过在环境里快速导航、运行tty-tetris这类命令行程序——分辨率太低,效果不好;但一段命令行火车动画跑得相当流畅。后来他做出了完整的桌面环境,观感比之前那个Win98 ROM还要精简,功能却更实在:它替代了EverDrive N8 Pro的菜单ROM,开始菜单里有一局能完整玩的扫雷,程序图标则用来启动游戏ROM、访问卡带存储里的文件。
输入设备换了几轮。用NES手柄移动光标、打字显然不是好的桌面体验,他先试着通过NES扩展槽和转接板把Famicom的Family BASIC键盘接上去,结果每次按键都输出多个字母和符号,键盘底部太厚还让主机没法平放在桌上。
改用带自定义固件的RP2350微控制器后,USB设备可以直接插进NES手柄口,鼠标输入变得顺滑。但只有一个USB口,键盘和鼠标只能二选一,他的解法是用自带USB Hub的键盘。他还把这套USB输入当MIDI设备用,接上USB钢琴键盘,在一个很基础的数字音频工作站里弹奏,甚至播放NSF(任天堂音效格式)文件里的马里奥配乐。
为了更像一台复古PC,他把自己此前3D打印的NESCD光驱项目接了回来。这个光驱通过EverDrive N8 Pro卡带上的一个端口和扩展槽连接,可以一边玩NES游戏一边后台放音乐,性能不受影响。之后他又用Seeed Studio XIAO ESP32升级NESCD,加上WiFi,下载速度4 MB/s、上传90 KB/s。
网络能力有限,NES实际是通过他的笔记本电脑做代理,把请求从互联网取回并简化,以便在有限分辨率下显示。他也留了直连互联网的选项——按他的说法,那会是一段很糟糕的体验。
从卡带里的FPGA到USB接口固件,这套系统的每一环都在绕开8位主机的算力天花板。它跑不动现代软件,但桌面、扫雷、光驱、联网、MIDI,该有的复古PC体验一样不缺。
热门跟贴