ducalex/retro-go

GitHub: ducalex/retro-go

一款面向 ODROID-GO 等 ESP32 设备的复古游戏模拟器固件,集成多平台模拟器并提供丰富的游戏管理与存档功能。

Stars: 1243 | Forks: 329

# 目录 - [描述](#description) - [安装](#installation) - [使用说明](#usage) - [常见问题](#issues) - [开发](#development) - [鸣谢](#acknowledgements) - [许可证](#license) # 描述 Retro-Go 是一个用于在基于 ESP32 的设备上玩复古游戏的固件(官方支持的设备有 ODROID-GO 和 MRGC-G32,请查看[此列表了解其他设备](components/retro-go/README.md))。 该项目由一个启动器和半打应用程序组成,这些程序经过了深度 优化,在不降低兼容性的前提下减少了 CPU、内存和 flash 的需求! ### 支持的系统: - Nintendo:**NES、SNES(较慢)、Gameboy、Gameboy Color、Game & Watch** - Sega:**SG-1000、Master System、Mega Drive / Genesis、Game Gear** - Coleco:**Colecovision** - NEC:**PC Engine** - Atari:**Lynx** - 其他:**DOOM**(包含 mod!) ### Retro-Go 功能: - 游戏内菜单 - 收藏夹和最近游玩 - GB 调色板、RTC 调整与存档 - NES 调色板、PAL roms、支持 NSF - 更多模拟器和应用程序 - 缩放和过滤选项 - 更好的性能和兼容性 - Turbo 速度 / 快进 - 可自定义的启动器 - 封面图和存档状态预览 - 每个游戏多个存档位 - Wifi 文件管理器 - 以及更多! ### 截图 ![预览](https://static.pigsec.cn/wp-content/uploads/repos/cas/a6/a6cbbb9fd0b35defdbf727ee2eee877b7983817787b5e8e3c569a6590d9b08ee.jpg) # 安装 ### ODROID-GO 1. 从[发布页面](https://github.com/ducalex/retro-go/releases/)下载 `retro-go_1.x_odroid-go.fw` 并将其复制到 SD 卡的 `/odroid/firmware` 目录下。 2. 按住 B 键的同时给设备上电。 3. 在文件列表中选择 retro-go 并进行刷写。 ### MyRetroGameCase G32 (GBC) 1. 从[发布页面](https://github.com/ducalex/retro-go/releases/)下载 `retro-go_1.x_mrgc-g32.fw` 并将其复制到 SD 卡的 `/espgbc/firmware` 目录下。 2. 按住 MENU 键(音量旋钮)的同时给设备上电。 3. 在文件列表中选择 retro-go 并进行刷写。 ### 其他设备 1. 从[发布页面](https://github.com/ducalex/retro-go/releases/)下载适用于您设备的 .img 文件。 2. 使用 USB 线缆将您的设备连接到电脑。 3. 使用 esptool 刷入镜像: - [命令行](https://github.com/espressif/esptool/releases/):运行 `esptool.py write_flash --flash_size detect 0x0 retro-go_*.img` - [网页版](https://espressif.github.io/esptool-js/):连接您的设备,点击 Erase Flash,然后选择您的 .img 文件并将地址设置为 0x0,最后点击 Program) 您的特定设备可能需要额外的步骤(例如开机时按住某个按钮),或需要不同的 esptool 标志,亦或是特殊的数据线。如果上述步骤失败,您可能需要向制造商询问如何刷写新固件的说明! 如果您的设备尚未被支持,或者没有预编译版本可用,您可以查看[开发部分](#Development)以获取有关如何为您的设备进行构建的更多信息。 # 使用说明 ## 游戏封面 / 图像 游戏封面应放置在 SD 卡根目录下的 `romart` 文件夹中。您可以[在此处](https://github.com/ducalex/retro-go-covers)获取预制的封面包。Retro-Go 也兼容旧版的 Go-Play romart 包。 您可以通过创建 PNG 图像(160x168,8位)来添加缺失的封面图。支持两种命名方案: - 基于文件名:`/romart/nes/Super Mario.png`(注意*不*包含 rom 扩展名) - 基于 CRC32:`/romart/nes/A/ABCDE123.png`,其中 `nes` 与 rom 文件夹名称相同,`ABCDE123` 是游戏的 CRC32(在启动器中按 A -> Properties 即可找到),而 `A` 是 CRC32 的第一个字符 _注意:基于 CRC32 的方式(预制包使用的方式)比基于名称的方式慢得多!这种方式之所以有用,是因为即使游戏的 CRC 相同,文件名也可能千差万别,但如果您自己生成图像,我建议您使用基于文件名的格式,并删除 SD 卡上所有基于 CRC 的图像,以提高响应速度。_ ## BIOS 文件 某些模拟器支持加载 BIOS。文件应按以下方式放置: - GB:`/retro-go/bios/gb_bios.bin` - GBC:`/retro-go/bios/gbc_bios.bin` - FDS:`/retro-go/bios/fds_bios.bin` - MSX:在 `/retro-go/bios/msx/` 文件夹中放入:`MSX.ROM` `MSX2.ROM` `MSX2EXT.ROM` `MSX2P.ROM` `MSX2PEXT.ROM` `FMPAC.ROM` `DISK.ROM` `MSXDOS2.ROM` `PAINTER.ROM` `KANJI.ROM` ## Game & Watch roms 必须使用 [LCD-Game-Shrinker](https://github.com/bzhxx/LCD-Game-Shrinker) 打包,相关教程可以[在此找到](https://gist.github.com/DNA64/16fed499d6bd4664b78b4c0a9638e4ef)。 ## Wifi 要使用 wifi,您需要创建一个 `/retro-go/config/wifi.json` 配置文件。您最多可以定义 4 个不同的网络,随后可以在菜单中选择。其内容应如下所示: ``` { "ssid0": "my-network", "password0": "my-password", "ssid1": "my-other-network", "password1": "my-password", "ssid2": "my-third-network", "password2": "my-password", "ssid3": "my-last-network", "password3": "my-password" } ``` ### 时间同步 时间同步会在成功连接到网络后立即在启动器中进行。 这是通过联系 `pool.ntp.org` 的 NTP 完成的,目前无法禁用。 时区可以在启动器的选项菜单中进行配置。 ### 文件管理器 您可以在 retro-go 的 *about* 菜单中找到设备的 IP 地址。然后在您的 PC 上访问 http://192.168.x.x/ 即可打开文件管理器。 ## 外部 DAC(耳机) Retro-Go 支持[专为 ODROID-GO 设计的外部 DAC mod](https://github.com/backofficeshow/odroid-go-audio-hat) 它允许通过耳机输出高质量音频。您可以在菜单中的 `Audio Out: Ext DAC` 选项进行切换。
引脚定义 | GO 引脚 | PCM5102A 引脚 | |--------|---------| | 1 | GND | | 2 | - | | 3 | LCK | | 4 | DIN | | 5 | BCK | | 6 | VIN | | 7 | - | | 8 | - | | 9 | - | | 10 | - |
# 常见问题 ### 黑屏 / 无限重启 Retro-Go 通常会自动检测并解决应用程序的崩溃和死机。但是,如果您确实 陷入了无限重启,您可以在设备上电时按住 `DOWN` 键以返回启动器。 ### 音质 GO 的音量衰减不正确,导致较大的音量过于刺耳, 而较小的音量则因为 DAC 分辨率问题而产生失真。改善音频的一个快速方法是剪断其中 一根扬声器线,并串联一个 `33 欧姆(或附近阻值)`的电阻。焊接效果更好,但非必需, 将线紧紧拧在一起也能很好地工作。 [更复杂的解决方案可以在此查看。](https://wiki.odroid.com/odroid_go/silent_volume) 或者,您可以使用本文档前面提到的耳机 DAC mod。 ### Game Boy SRAM *(即 存档/电池/备份 RAM)* 在 Retro-Go 中,存档状态将为您提供最佳且最可靠的存档体验。话虽如此,如果您 需要或想要 SRAM 存档,请继续阅读。SRAM 格式与 VisualBoyAdvance 兼容,因此可以 用于导入或导出存档。 您可以在选项菜单中配置自动保存 SRAM 的功能。较长的延迟会减少卡顿,但代价是 如果在关机时过快断电可能会导致数据丢失。还要注意,当*恢复*游戏时,如果存在存档状态,Retro-Go 将优先 读取存档状态。 ### ZIP 文件 现在大多数 Retro-Go 应用程序都支持 ZIP 文件。ZIP 压缩包应仅包含一个 ROM 文件,且不能包含其他任何内容。不幸的是,ZIP 支持还取决于可用内存,较大的 ROM 在某些设备上可能会加载失败。 # 开发 如果您希望构建或修改 Retro-Go,您可以在以下文档中找到帮助: - 构建说明请见 [BUILDING.md](BUILDING.md) - 主题说明请见 [THEMING.md](THEMING.md) - 移植说明请见 [PORTING.md](PORTING.md) - 翻译说明请见 [LOCALIZATION.md](LOCALIZATION.md) # 鸣谢 - NES/GBC/SMS 模拟器和基础库最初来自于由 crashoverride、Nemo1984 等人开发的[官方 Go-Play 固件](https://github.com/othercrashoverride/go-play) 的“Triforce”分支。 - 启动器的设计最初受到/借鉴自 [pelle7 的 go-emu](https://github.com/pelle7/odroid-go-emu-launcher)。 - PCE-GO 是 [HuExpress](https://github.com/kallisti5/huexpress) 的一个分支,并参考了 [pelle7 的移植版](https://github.com/pelle7/odroid-go-pcengine-huexpress/)。 - Lynx 模拟器是 [libretro-handy](https://github.com/libretro/libretro-handy) 的一个移植版。 - SNES 模拟器是 [Snes9x 2005](https://github.com/libretro/snes9x2005) 的一个移植版。 - DOOM 引擎是 [PrBoom 2.5.0](http://prboom.sourceforge.net/) 的一个移植版。 - Genesis 模拟器是 bzhxx 开发的 [Gwenesis](https://github.com/bzhxx/gwenesis/) 的一个移植版。 - Game & Watch 模拟器是 bzhxx 开发的 [lcd-game-emulator](https://github.com/bzhxx/lcd-game-emulator) 的一个移植版。 - MSX 模拟器是 Marat Fayzullin 开发的 [fMSX](https://fms.komkon.org/fMSX/) 的一个移植版。 - PNG 支持由 [lodepng](https://github.com/lvandeve/lodepng/) 提供。 - PCE 封面图来自 [Christian_Haitian](https://github.com/christianhaitian)。 - 部分图标来自 [Rokey](https://iconarchive.com/show/seed-icons-by-rokey.html)。 - 背景图片来自 [es-theme-gbz35](https://github.com/rxbrad/es-theme-gbz35)。 - 特别感谢 [RGHandhelds](https://www.rghandhelds.com/) 和 [MyRetroGamecase](https://www.myretrogamecase.com/) 送给我一台 [G32](https://www.myretrogamecase.com/products/game-mini-g32-esp32-retro-gaming-console-1) 设备。 - 感谢 [ODROID-GO](https://forum.odroid.com/viewtopic.php?f=159&t=37599) 社区对 retro-go 开发的鼓励与支持! # 许可证 本项目中所有内容均采用 [GPLv2 许可证](COPYING),以下组件除外: - fmsx/components/fmsx (MSX 模拟器,自定义非商业许可证) - handy-go/components/handy (Lynx 模拟器,zlib 许可证)
标签:ESP32, 固件, 复古游戏, 客户端加密, 嵌入式系统, 游戏机, 物联网