跨平台的 RetroArch,设计方式竟和 RetroPie 如出一辙

RetroPie 的设计

对于 RetroPie,我之前写过一篇关于其内部设计的文章:

嵌入式界的顶流开源项目,RetroPie 内部是怎么设计的?

RetroPie 为了支持各种软件包,定义了一组 API:


分别对应获取源码、编译、安装、配置 4个步骤。

每一个要接入 RetroPie 的 软件,例如游戏模拟器 RetroArch、启动器 Emulationsataion 等,都要实现这一套 API,以供 RetroPie 的核心层调用,以 RetroArch 为例:


这是很典型的模块化设计,每一个软件包都只需要关注在自身的编译安装流程上,不需要理会其他事情。

RetroArch 也是相同的设计思路

RetroArch 一个 C 语言编写的跨平台复古游戏模拟框架。

RetroArch 本身不进行实质的模拟功能,而是提供一套框架,所有的第三方开源模拟器都可以接入到这套框架中,从而为用户提供更多更好的功能和体验。
嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!

无偿分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。

点击这里找小助理0元领取:加微信领取资料

跨平台的 RetroArch,设计方式竟和 RetroPie 如出一辙

跨平台的 RetroArch,设计方式竟和 RetroPie 如出一辙

RetroArch 和 RetroPie 的功能需求上有一个相似之处

RetroPie 需要管理各种游戏相关的软件;

RetroArch 也需要管理各种模拟器软件;

所以,RetroArch 也采用了和 RetroPie 类似的设计思路,定义了一组 API


每一个要接入 RetroArch 的第三方模拟器,都要实现上面的 API。

以第三方模拟器 gambatte-libretro 为例,下面是 retro_run() 的实现:


当用户要求启动模拟某个游戏时, RetroArch 的核心层就会先调用相应的第三方模拟器的 retro_init() 进行初始化。

最关键的一步是会调用到 retro_run(),模拟器会在这个函数里实现最重要的游戏功能

1、处理用户输入;

2、模拟出游戏的画面,然后调用 RetroArch 核心层里显示相关的接口将画面数据显示出来;

3、模拟出游戏的声音,然后调用 RetroArch 核心层里音频相关的接口将声音数据播放出来;

这就是 RetroArch 最核心的设计。

RetroArch 是一个跨平台的应用,代码量庞大,其内部实现有许多值得学习了解的地方,大家可以先自行学习。

总结

设计软件是一件很有挑战的事情。

我们可以从流行的开源软件上,学习到真正优秀的设计。因为正是这些优秀的设计,让这些开源软件得以存活下来。

相关资料

API

https://github.com/libretro

https://github.com/libretro/gambatte-libretro/blob/master/libgambatte/libretro/libretro.cpp

文章链接:

https://mp.weixin.qq.com/s/T4sys9NdZzHizWm4NHFnew

转载自:老吴嵌入式,作者吴伟东Jack

文章链接:跨平台的 RetroArch ,设计方式竟和 RetroPie 如出一辙!

来源:嵌入式范范

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年10月19日
下一篇 2022年10月19日

相关推荐