备注:Doom中文名毁灭战士,它是id Software制作、Bethesda公司发行的一款第一人称射击类游戏,在PS4、XBOXONE、PC、Nintendo Switch上发售。2016年12月2日,该作品获得TGA 2016最佳配乐、声效、最佳动作游戏奖。
Doom(游戏毁灭战士)目前已经被移植到各种平台当中了。比如之前就被移植到了配备4MB PSRAM的ESP32 平台当中。不过话虽如此,但要将Doom移植到树莓派RP2040还是很有挑战性的。因为RP2040的RAM被限制为微控制器内置的较小储存264KB,所以对于像树莓派Pico这样只有2MB闪存的主板来说,存储容量成为了一个问题。
但Graham Sanderson通过压缩数据、更改代码从而使用更少的RAM,以及充分利用两个超频为270 MHz的Arm Cortex-M0+内核等方式解决了这一问题。为了在树莓派Pico上使用分辨率320×240 @ 60 fps来运行Doom (DOOM1.WAD) ,所以完整的Ultimate Doom和DOOM II WAD估计就需要使用配备8MB SPI闪存的树莓派RP2040板。

这一移植基于的是Chocolate Doom,主要用于支持音频的OPL2仿真源自emu8950项目,并使用ADPCM-XQ IMA-ADPCM编码器来压缩音效。以下就是Graham Sanderson经过六个月业余时间工作后取得的成果:
- RP2040超频至270MHz(注意:需要一个运行在135Mhz的闪存芯片)
- 完整的WAD可在配备了2MB闪存的树莓派Pico上运行
- Ultimate Doom和Doom II可以在StackyPi或UDOO Key等8MB的闪存设备上运行
- 320×200 @ 60 fps VGA 输出(超分辨率到 1280×1024 @ 60Hz)
- 帧速率约为 30-35+ FPS
- 音频 – 49716Hz的9通道OPL2音频,8通道立体声音效
- I2C 网络最多可支持4名玩家
- USB 键盘输入支持
- 保存/加载游戏,支持所有秘籍
- 支持所有结束场景、暂停、帮助屏幕等
你可以在通过视频了解一下结果,相关视频链接,点击此处可查看。
这一项目的源代码、构建说明和UFS固件都可以在Github上找到。但是,如果你们想了解具体是如何实现的,比如使用的压缩技术、doom移植的优化、用16 位变量替换32位变量从而来减少使用的内存,以及项目遇到的总体挑战等等,那么你们可以读一下Github.io上的这篇长文章,肯定会有所收获的。

文章翻译者:Jacob,嵌入式系统测试工程师、RAK高级工程师,物联网行业多年工作经验,熟悉嵌入式开发、测试各个环节,对不同产品有自己专业的分析与评估。