一台ESP32能装下14台游戏机?Retro-Go复古模拟器5分钟快速上手指南
【免费下载链接】retro-goRetro emulation for the ODROID-GO and other ESP32 devices项目地址: https://gitcode.com/gh_mirrors/re/retro-go
深夜刷到一条视频:UP主手里那台透明壳小掌机,居然在跑《塞尔达》《索尼克》和几十个童年游戏。评论区的热评是"求链接",而你盯着自己抽屉里那块积灰的ESP32开发板陷入了沉思——它,能行吗?
答案是:能行。Retro-Go 就是一个专门为 ESP32 芯片打造的开源复古游戏模拟器固件,它能把你手头几十块钱的开发板,变成一台能玩 NES、GameBoy、世嘉 MD 等十余种平台游戏的"十合一掌机"。不需要再花几百块买开源掌机,也不用忍受手机搓玻璃的手感,更不用跟电脑模拟器较劲——你要的童年,一个固件就装得下。
先回答一个问题:你为什么会搜索"复古掌机"
每个人的理由都差不多:
- 手机模拟器:触摸屏没有实体按键,搓玻璃搓到怀疑人生,还经常误触。
- 电脑模拟器:画质确实好,但坐在工位前玩《超级马里奥》,总感觉少了点什么。
- 买开源掌机:动辄两三百起步,买回来新鲜两天,性价比存疑。
你会发现,痛点其实不在"能不能模拟",而在"有没有那台掌机的味道"——实体按键、掌上尺寸、往沙发一躺就开玩。而 Retro-Go 的思路很直接:既然 ESP32 芯片便宜、功耗低、还能接屏幕和按键,为什么不让它"兼职"当一台复古掌机?
上面这张图就是 Retro-Go 的真实界面:左边跑着 GameBoy 游戏,右边是世嘉游戏的运行画面,底部甚至实时显示"Speed: 100%(60/60)"的性能数据。它不是一个简单的模拟器,而是一整套嵌入式游戏系统。
一张表看懂:这个固件里到底装了多少台"游戏机"
打开项目的launcher/main/applications.c,你会发现系统里注册了整整14 个平台。ROM 按目录分类存放,开机后启动器会自动扫描,做成游戏列表供你选择:
| 平台 | SD卡目录 | 模拟器核心 |
|---|---|---|
| FC / NES | /roms/nes/ | nofrendo |
| SFC / SNES | /roms/snes/ | snes9x |
| GameBoy | /roms/gb/ | gnuboy |
| GameBoy Color | /roms/gbc/ | gnuboy |
| GameBoy Advance | /roms/gba/ | gbsp |
| Game & Watch | /roms/gw/ | gw-emulator |
| Sega Master System | /roms/sms/ | smsplus |
| Game Gear | /roms/gg/ | smsplus |
| Mega Drive / Genesis | /roms/md/ | gwenesis |
| ColecoVision | /roms/col/ | smsplus |
| PC Engine | /roms/pce/ | pce-go |
| Atari Lynx | /roms/lnx/ | handy |
| MSX | /roms/msx/ | fmsx |
| DOOM(含MOD) | /roms/doom/ | prboom-go |
注意最后一行——DOOM 不是模拟器,而是原生移植,连prboom.wad都给你备好了。想在掌机上打《毁灭战士》,这件事 Retro-Go 免费搞定。
5分钟快速上手:从吃灰板到开机就能玩
别被"刷固件"三个字吓到,整个过程大概就是泡一杯咖啡的时间。
第1步:确认你的板子在支持名单里
打开components/retro-go/targets/目录,你会发现一个"硬件天团":经典款的odroid-go、GBC 造型的mrgc-g32、透明 DIY 掌机byteboi-rev1、T 型键盘的t-deck-plus……每个子目录里都有现成的config.h引脚配置和env.py构建脚本。只要你的设备在上面,基本是"开箱即用"。
即使你的板子不在名单里,项目也提供了完整的移植流程,见根目录的PORTING.md,理论上任何带屏幕、按键和 SD 卡的 ESP32 都有机会"上岗"。
第2步:刷入固件
Retro-Go 的发布版一般提供两种文件:.fw(给 ODROID-GO 这类自带刷机流程的设备)和.img(给通用 ESP32 设备)。
- ODROID-GO 用户:把
retro-go_1.x_odroid-go.fw拷到 SD 卡的/odroid/firmware/,按住 B 键开机,在文件列表里选中刷入。 - MRGC-G32 用户:固件放
/espgbc/firmware/,按住 MENU 键开机。 - 其他设备:用 USB 连上电脑,执行一条命令即可:
esptool.py write_flash --flash_size detect 0x0 retro-go_1.x_你的设备.img第3步:按目录结构放好ROM
SD 卡根目录建roms文件夹,每个平台一个子目录,把对应 ROM 丢进去就完事了:
/sd/roms/ ├── nes/ # FC红白机游戏 ├── gb/ # GameBoy游戏 ├── gbc/ # GameBoy Color游戏 ├── md/ # 世嘉MD/Genesis游戏 ├── pce/ # PC Engine游戏 └── lnx/ # Atari Lynx游戏开机进启动器,选平台、选游戏、按下 A 键——恭喜,你的童年回来了。🎮
第一次开机,你会发现这其实是个"系统"
如果你以为它只是个"能跑 ROM 的播放器",那就低估它了。Retro-Go 的启动器(launcher/main/)自带一整套现代游戏系统才有的功能:
- 收藏夹与最近游玩:好游戏一键收藏,玩过的自动记录。
- 多存档槽位:每个游戏多个存档位,还能保存屏幕截图当封面。
- 游戏内菜单:游戏中按菜单键呼出,亮度、音量、缩放模式、滤镜、快进速度随手可调。
- 封面艺术:把 160x168 的 PNG 封面放进
/romart/,游戏列表瞬间从"文件管理器"变成"游戏商店"。 - WiFi 文件管理器:连上局域网后,在电脑浏览器打开设备 IP,直接拖拽上传 ROM,再也不用反复拔 SD 卡。
这些细节堆在一起,决定了它是一款"成品固件",而不是"能跑起来的demo"。
为什么一套固件能通吃这么多设备?
这是 Retro-Go 最聪明的地方,也是它和普通模拟器项目的分水岭。
项目的核心是components/retro-go/这一层硬件抽象层:rg_system.h、rg_display.h、rg_audio.h、rg_input.h、rg_storage.h……屏幕、声音、按键、存储全部被封装成统一接口。模拟器(比如retro-core/components/gnuboy/)根本不需要关心你的屏幕是 ILI9341 还是 ST7789,它只跟抽象层打交道。
你可以把它想象成手机充电器协议:模拟器是"充电头",设备是"充电线"。只要线材(targets/xxx/config.h)定义好自己的引脚和硬件参数,同一个充电头就能给所有手机充电。
这张图特别能说明问题——Retro-Go 甚至被装进了一把"尺子"里。连这种非常规形态的设备都能适配,从侧面印证了它的硬件抽象层有多省心。
进阶玩法:三个被低估的实用功能
1. 配置 WiFi,网页直接传游戏
在 SD 卡上新建/retro-go/config/wifi.json,最多可配置 4 个网络:
{ "ssid0": "my-network", "password0": "my-password" }开机连上网后,启动器的"关于"菜单里能看到设备 IP,浏览器打开它,就能网页上传、下载、删除游戏文件。ROM 再也不用拔卡搬运了。
2. 换主题,把启动器变成你自己的样子
启动器的配色和布局由themes/default/theme.json控制,背景图也按平台分好类(background_gb.png、background_md.png……)。想深度定制?tools/gen_images.py能帮你把素材批量生成到位,改完 SD 卡拷贝即可生效。
3. 补上 BIOS,模拟器兼容性翻倍
部分平台有 BIOS 会更完美:GameBoy 的放/retro-go/bios/gb_bios.bin,GBC 的放gbc_bios.bin,MSX 则放进/retro-go/bios/msx/。放对位置,兼容性和开机画面都有惊喜。
新手最容易踩的3个坑
作为一个"过来人",这三个坑我替你提前踩过了:
- ROM 目录放错。
/roms/gb/和/roms/gbc/是分开的,GBC 游戏塞进 GB 目录虽然能玩但体验打折,别问我怎么知道的。 - 文件扩展名不支持。列表里看不到游戏?先确认扩展名是否在支持范围内(比如 NES 支持
nes fc fds nsf zip),以及 SD 卡是否用了 FAT32 格式。 - 固件刷错设备。
.fw和.img是两套流程,ODROID-GO 的固件刷到别的板子上会白屏。刷前务必核对型号。
下一步:从"玩"到"造"
Retro-Go 的魅力在于,当你玩腻了现成固件,它还是一座巨大的"学习金矿"。retro-core/里躺着 gnuboy、snes9x、nofrendo 这些经典模拟器核心,tools/里有rg_tool.py、mkfw.py等一整套构建工具,translations.h里还有多语言体系等着你贡献一个中文之外的语言包。
想自己动手编译?把仓库克隆下来,按BUILDING.md配好 ESP-IDF 环境,然后跑:
git clone https://gitcode.com/gh_mirrors/re/retro-go cd retro-go python rg_tool.py build-fw launcher retro-core一块几十块的开发板、一个周末的晚上、一台"十合一"掌机——Retro-Go 把"复古游戏"重新定义成了普通人也能上手的事。去把它点亮吧,屏幕亮起的那一刻,你会觉得这个周末值了。✨
【免费下载链接】retro-goRetro emulation for the ODROID-GO and other ESP32 devices项目地址: https://gitcode.com/gh_mirrors/re/retro-go
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考