几年前,[Smashcat] 把 ZX Spectrum 上的《Manic Miner》移植到了 Arduino Uno 上。Arduino 的内存比当年的 Spectrum 还少,要在这样一块 8 位单片机上完成移植,并不是一件轻松的事。
打开网易新闻 查看精彩图片
此后,这次移植中的部分代码被改造成了一套游戏引擎,[Smashcat] 也因此把更多游戏搬上了 Arduino Uno。
这套引擎能承载一张可滚动的 2D 地图,分辨率为 256×256,同时最多显示 9 个精灵。画面被锁定在 50 FPS,但前提是使用带晶振的正版 Arduino Uno——部分仿制板没有足够精确的计时芯片,无法复现视频信号。整个视频输出不依赖帧缓冲,直接生成;两路 PWM 音频同样如此。接上显示器和手柄只需要几个电阻,其中还包括使用 NES 手柄的选项。
当这一切在 Arduino 上跑起来,并接上提供手柄接口、视频信号所需电阻以及扬声器驱动的小板之后,系统现在能运行原版《Manic Miner》,以及另外三款游戏:
- 《Scramble》
- 《Space Invaders》
- 《Pac Man》
引擎和其余代码都发布在 GitHub 页面上,甚至还有一个 WebAssembly 版本,可以在没有相应硬件的情况下运行这套软件的各个部分。初代 ZX Spectrum 本身也是一台有意思的机器,问世至今已超过 40 年,仍在启发着这样的作品。
热门跟贴