[转摘] 从零开始 打造EmuELEC全能怀旧游戏机 高度定制计划 (二)

EmuELEC 带的 EmulationStation (ES) 和 RetroArch (RA) 是两个独立的模拟器前端程序. 两者关系如下图.


202002261422297328699.jpg

ES 是纯粹的前端, 通过外调 RA 或其它独立的模拟器运行游戏.

RA 是自带前端的整合型模拟器, 通过调用不同的 Libre 模拟内核运行游戏.

一. 定制 EmuELEC 启动画面

准备一张 png, 尺寸最好 1920x1080, 保存为 oemslpash.png (必须是 png 格式! 拿 .jpg 等改名 .png 无法显示!).

然后把 oemslpash.png 复制到 EmuELEC 的引导分区根目录.

下次重启时就能看到新的启动画面了.

二. 更换 EmulationStation 主题

EmuELEC 内置的 ES 主题是 RetroPie 项目中的 ComicBook .

RetroPie 目前有公布 100 多个主题, 可以在 EmuELEC 系统的 

/storage/.config/emuelec/scriptmodules/supplementary/esthemes.sh

文件中找到.

以 ES 默认的 Simple 主题为例, 演示下如何更换 ES 的主题.

首先从 gayhub 下载 Simple 主题包, 会得到一个 es-theme-simple-master.zip.

然后解压出 es-theme-simple-master 文件夹并将其改名为 Simple.

最后将 Simple 文件夹复制到 EmuELEC 系统的 

/storage/.emulationstation/themes 

文件夹中, 这样你会看到 ComicBook 和 Simple两个主题包在一起了.

现在打开 ES 主菜单, 进入 UI SETTINGS, 就可以将 THEME SET 切换为 Simple 了.

de885e69afaf4756b3c3195585f38be4.jpg

三. 添加 EmulationStation 游戏启动图

ES 可以在启动游戏时显示指定的启动图, 可以给每个 ROM 指定启动图 (ROM 文件名匹配), 也可以给每个主机平台指定启动图 (主机名匹配). 如果不自己指定, EmuELEC 会用默认选择下图作为启动图.

943a7cb70ed544acae73094f2dd81b84.jpg

启动图加载脚本位于 /storage/.config/emuelec/scripts/show_splash.sh.

排骨找了一张 ComicBook 作者做的街机启动图 (splash.png) 和一张街机双截龙II (ddragon2.png) 启动图来给演示.

首先创建 /storage/roms/mame 文件夹, 将1943和双截龙I/II的 ROM (文件名为 1943, ddragon.zip, ddragon2.zip) 复制到 mame 中.

然后再创建 /storage/overlays/splash/ARCADE 文件夹, 可能需要先建 splash 再建 ARCADE (大写). (为什么是 ARCADE 而不是 MAME? 去看 show_splash.sh 的第10行)

最后将街机启动图和双截龙II启动图分别命名为 splash.png 和 ddragon2.png, 一起复制到 /storage/overlays/splash/ARCADE 中.

现在依次启动 1943/双截龙I/双截龙II, 你会看到三种启动画面.

1943 的 没有匹配的启动图, 用了 splash.png 代替.

双截龙I 用不完全匹配的 ddragon2.png 启动, 算是 BUG. 可以修改 show_splash.sh 的第31行解决.

双截龙II 完全匹配 ddragon2.png 启动.

四. 添加 RetroArch 游戏边框图

可以通过 RA 的屏幕图层功能给每个游戏添加一个边框图, 用于消除黑边或者提供游戏提示.

下面两张双截龙II的截图, 下面那张就是增加了边框图的效果.

621659b846a24236a0e8263ad3942802.jpg

添加游戏边框图的方法与添加启动图类似, 同样以双截龙II为例, 创建 /storage/overlays/bezels/ARCADE 文件夹, 放入 ddragon2.cfg 和 ddragon2.png 两个文件.

a2f199998c6c413dbac1fd162e83be2f.jpg

cf15817bb4d446208fe6b3467d9d9cbe.jpg

注: 游戏边框图功能只对 RetroArch 的 Libretro 模拟器有效. 需要更多游戏边框图请搜索 thebezelproject.

五. 定制 EmulationStation 游戏列表

ES 是纯粹的前端, 提供用户体验很好的界面, 支持任何模拟器.

ES 默认会查找 /storage/roms 下的主机目录 (见下表), 从每个主机目录中读取 游戏列表 (gamelist.xml文件), 再与主机目录下的 ROM 文件名 (去掉后缀) 匹配后显示出游戏列表结果.

5e0d069ff8134fe9b57b2bb5d28b35cd.jpg


如果没找到 gamelist.xml 或者 gamelist.xml 中没有相关 ROM 文件的记录, ES 的游戏列表只会列出 ROM 的文件名 (后后续).

608c193889974fba93a94eae38555d35.jpg


通过添加并完善 gamelist.xml 文件可以让游戏列表的内容丰富起来.

ee40aec16f774658a89db5e229b2eac4.jpg

上图的游戏列表不但显示了 ROM 的中文名称/游戏简介/发布日期/游戏类型/开发公司, 还显示了游戏的标题截图.

下图更是在上面的基础了增加了演示视频!

7df34c1351b446f4b0bc395ae1d40023.jpg

游戏列表文件 gamelist.xml (注意文件名小写) 的结构很简单, 其中包含一个根节点 gameList 和多个 子节点 game.

77e5f5eec1614e7188fcabd42cf6d11b.jpg


下图中的火焰之纹章-纹章之迷就是个比较完整的示例.

0113ccc153684e22b116f5c732eda36b.jpg


下图是游戏列表的在 ComicBook 和 Simple 主题下的显示效果. Simple 主题比 ComicBook 显示的信息更详细)

0289fc63cd354fa7b1636f50924373fe.jpg


游戏描述不用担心内容过长, 它会滚动显示. 游戏列表最重要的是 path/name/image 三个属性, 其它的只是画蛇点睛而已.

看看下图这个 oldroom 主题的游戏列表是不是帅炸了?!

6d5e475ec31240f8bab8eec3b3d4fb75.jpg


老外做的 ES 主题都不支持中文的游戏列表, 比如 ComicBook 主题的默认字体 Shaka Pow不能显示中文, 会把中文显示成方块, 我们需要用中文字体替换它. 找一个喜欢的中文字体改名为 Shaka_Pow.ttf 并复制到 /storage/.emulationstation/themes/ComicBook/art 文件夹中, 重启 ES 后就可以正确的显示中文游戏列表了. 

建议在 ES 主菜单的 UI SETTINGS 中将 GAMELIST VIEW STYLE 设置成 AUTOMATIC, 这样可以让游戏列表呈现最好的效果.

9c2a189f85ae4bbb9ac427950d9eb491.jpg

六. 定制 RetroArch 游戏列表

EmuELEC 中的 RA 是基于 Libretro 核心的整合型模拟器, 可以脱离 ES 独立使用. 同时也提供了漂亮的用户界面和游戏列表. RA 默认使用仿 PS/PSP 的 xmb 主题.

RA 的菜单支持多语言, 也是需要替换字体来保证中文显示正常. 字体文件路径为 /storage/assets/xmb/monochrome/font.ttf, 排骨找了个华康金刚黑字体替换了.

RA 的游戏列表效果 (xmb主题) 如下面两张图. 主机名称在左上, 有单独的主机图标, 游戏名称和图片.

bf23659fa8f74b37a8592565f946e98c.jpg

RA 的游戏列表文件 (lpl) 的默认存放位置是/storage/playlists, 文件名格式为平台名.lpl, 如果游戏列表文件不在下面列表中, 将无法获取对应的主机图标, 会被一个默认小火箭图标代替.

259d90af01974164997a2d705d5b17c9.jpg

RA 的游戏列表文件有新旧两种格式, 如下图. 旧格式为六行一组的纯文本, 新格式是 JSON.

a7fad80497794414bcd8d8584340299c.jpg

RA 会把旧格式的 lpl 保存为新的 JSON 格式, 可以把 lpl 改成只读文件来避免被 RA 修改.

游戏列表文件中的 path/label/core_path/core_name/crc32/db_name 分别表示 ROM路径/游戏显示名称/模拟器内核路径/模拟器内核名称/ROM 校验码/列表文件名.

path: 建议用完整路径 (绝对路径) 指向 ROM 文件的位置.

label: 不要在名称中使用 \ / : * ? " < > | 字符, 因为 RA 会用这个 label 去匹配游戏图片. 如果 label 是 1943(?), 对应的图片文件名 1943?.png 不是有效的文件名 (文件名不能包含 ? 号).

core_path/core_name: 填 DETECT 就行了.

crc32/db_name: 留空就行了.

lpl 文件完成后, 就能在 RA 中看到游戏列表和 ROM 名称了. 而游戏相关图片还需要一些额外的步骤.

6194890a0f444fcfa46b1c0de614744e.jpg

RA 默认从 /storage/thumbnails 下读取游戏图片. 需要给每个 lpl 文件建一个名字相当的文件夹. 每个文件夹下面再建议名为 Named_Boxarts/Named_Snaps/Named_Titles 的三个文件夹, 用来存储游戏的包装图/标题图/游戏截图.

a4770de6344e4ccba6171af0a0145072.jpg

将游戏的包装图/标题图/游戏截图都成之前 lpl 文件中对应的 label, 后缀必须是 .png. 最终效果如下图.

1d4ab60367d94905ae9662a253fd33ff.jpg

RA 还有个 ozone 主题也不错, 风格比较简明紧凑 (如下图). 由于 RA 的主题不能自制, 所以本文不再继续讨论.

1ac8d391cd4744e8b33493580289d448.jpg

七. 游戏 ROM 相关信息和图片

游戏列表中与 ROM 文件对应的相关游戏信息和图片视频等信息请大家自行搜索.

以下是用到的一些平台.

0cbcb3c2c5fb4991ade95e89b26e955a.jpg

本文出处:https://www.toutiao.com/a6729134431354749448/

作者:水王 | 日期:2020-02-26 | 浏览:1 | 评论:0