复古精灵 CM4一体化扩展坞
官方来源链接:GitHub - StonedEdge/Retro-Lite-CM4-Dock:一款专为Retro Lite CM4游戏主机设计的扩展坞产品。
描述
更新时间:2023年7月9日
注意:代码库目前已实现启动画面、统计图表以及带有文本换行功能的元数据等功能!我认为本项目现阶段已基本完成。欢迎大家对其进行优化,并根据自身需求自由使用!
Retro Lite CM4扩展坞/集线器专为Retro Lite CM4游戏主机设计,但也能兼容任何运行RetroPie系统的通用Linux主机。该项目的主要目标是为您的RetroPie系统提供元数据管理功能,并实时获取您正在玩的游戏信息——通过这个项目,我们希望能保存一小部分复古游戏历史。项目的主要功能包括:
- 完全集成的 1.5 英寸 128x128 SPI 驱动 16 位彩色显示屏
- 包含三种模式:启动画面,不过,数据统计并且游戏模式。导航是通过连接到 GPIO 引脚的按钮来实现的。
- 配备3个外置USB 2.0接口,可用于连接键盘、鼠标及其他外设设备
- USB-C 充电
- HDMI 视频输出
以下是该程序的大致流程,以及通电后它的运行机制:
- 分屏模式
- 启动画面会一直播放,直到EmulationStation启动。之后,系统会进入统计模式。
- 数据统计模式
- 显示系统的总体统计信息,包括IP地址、SoC温度、RAM使用情况等。统计数据每隔5秒钟更新一次。
- 复古数据统计 - 查看您的系统中玩得最多的前五款游戏,按(a)游戏时长和(b)游戏次数进行排序。
- 游戏模式
显示任何游戏启动时正在进行游戏的合成图像。
通过对接站上附带的按钮,可切换查看五种不同的元数据视图。这些视图包括:
a) 轮子与截图的组合矢量图像
安装步骤
若要安装,请运行该程序(目前尚未能正常运行!)
执行以下命令:
建议通过RetroPie安装脚本菜单中的内置抓取工具来抓取你的媒体文件。这将下载所有必需的元数据,并自动将其存储在/home/pi/RetroPie/roms/{系统名称}/media目录下。
元数据目录位置
a)游戏封面(包装盒图案)- /opt/retropie/configs/all/emulationstation/downloaded_images/{系统}/{rom_name}.png
b)截图 + 组合轮盘图片- /home/pi/retropie/roms/{系统}/media/wheel/{rom_name}.png 以及 /home/pi/retropie/roms/{系统}/media/screenshot/{rom_name}.png
c)随机生成的游戏机控制器矢量图已发布- /home/pi/pico/pico-examples/pico-spi/consolevectors
d)使用垂直滚动功能的游戏描述- /opt/retropie/configs/all/emulationstation/gamelists', 系统名称, 'gamelist.xml'
e)游戏开发者- /opt/retropie/configs/all/emulationstation/gamelists', 系统名称, 'gamelist.xml'
f)发布日期- /opt/retropie/configs/all/emulationstation/gamelists', 系统名称, 'gamelist.xml'
g)视频- /home/pi/retropie/roms/{系统}/media/videos/{rom_name}.mp4
硬件
将OLED屏幕连接到扩展坞的引脚排布如上图所示。待软件开发完成后,Gerber文件和CAD图纸(包括扩展坞和独立OLED盒子)将尽快更新上传。
待办事项
- 使用 runcommand 命令检测当前已启动的游戏/系统
- 开机时添加 Retrolite CM4 的启动画面
- 将Pi 4(Python)上的截图和轮盘图片缩小尺寸并转换为128x128 RGB565格式
- 通过产品/供应商 ID(VID/PID)检测 RP2040
- 说明如何使用 Python 提取游戏文本元数据
- 通过 USB 将系统统计数据发送至 RP2040
- 每当游戏关闭时,执行 runcommand-onend.sh 脚本时,会清空缓冲区,并将用户带回 Pi 统计数据界面。
- 停止在检测到 COM 端口时显示启动画面,并切换至统计模式。
- 通过串行端口发送未损坏的 RGB565 合并图像文件 combined.png,并能自动从树莓派状态界面切换至当前游戏界面。
- 编写一个 Python 脚本,将游戏封面图正确缩放,使其适应屏幕尺寸。
- 将随机图像发送至 Pico,该图像位于控制台向量中,基于当前在 RetroPie 上运行的系统(无需进行缩放处理)。
- 实现一个按钮状态机,用于在统计数据显示模式和图片展示模式之间切换。
- 实现一个超时功能,当用户没有进行任何按键操作时,OLED屏幕会逐渐变黑。若用户在设备闲置X分钟后按下按键,OLED屏幕将随即重新点亮。
- 将游戏元数据整合到游戏模式中
- 当控制台关机时,优雅地关闭 OLED 显示屏;当控制台重新通电时,再重新启动它。
- 说明如何在SSD1351上对游戏描述文本进行硬件(或软件)垂直滚动操作。
- 修复元数据模式中的一些新行错误
- 弄清楚如何对特殊字符进行编码——可能需要使用欧洲字符集(CP1250/1252)。
挺不错的,但短期内应该不会实施吧!
- 编写一个 Python 脚本,在树莓派 4 上将视频拆分为单独的视频帧。
- 设置tinyUSB库,尝试实现所有帧的0.9MB/s传输速度,用于通过USB 1.1接口以30帧/秒的帧率传输视频(最大传输速度为1.5MB
- 将“Retrostats”功能整合到统计模式中,向用户展示他们玩得最多的游戏。出场次数并且时间持续时间使用 RetroStats 脚本。注意:由于没有实时时钟
Model Source
