RetroPie 为了支持各种软件包,定义了一组 API:,现在小编就来说说关于retroarch使用教程?下面内容希望能帮助到你,我们来一起看看吧!

retroarch使用教程(跨平台的RetroArch设计方式竟和)

retroarch使用教程

RetroPie 的设计

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

function depends_${package}() { ... } function sources_${package}() { ... } function build_${package}() { ... } function install_${package}() { ... }

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

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

function depends_retroarch() { ... } function sources_retroarch() { ... } function build_retroarch() { ... } function install_retroarch() { ... }

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

嵌入式物联网开发需要学的东西比较多,就业岗位也是各种各样。很多人不知道该怎么学、学什么?也不知道嵌入式开发做什么工作比较好。如果你也遇到类似问题,可以点下面链接加我V鑫(备注头条)。送你一套最新的学习路线图 100G学习资料 拉你进交流群。

嵌入式物联网单片机学习交流

RetroArch 也是相同的设计思路

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

RetroArch 本身不进行实质的模拟功能,而是提供一套框架,所有的第三方开源模拟器都可以接入到这套框架中,从而为用户提供更多更好的功能和体验。

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

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

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

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

RETRO_API void retro_init(void); RETRO_API void retro_deinit(void); RETRO_API void retro_run(void); RETRO_API bool retro_load_game(const struct retro_game_info *game); RETRO_API void retro_unload_game(void); ...

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

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

void retro_run() { ... // 获得用户输入 input_poll_cb(); ... // 播放游戏声音 render_audio(sound_buf.i16, samples); ... // 显示游戏画面 video_cb(video_buf, VIDEO_WIDTH, VIDEO_HEIGHT, VIDEO_PITCH * sizeof(gambatte::video_pixel_t)); ... }

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

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

1、处理用户输入;

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

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

这就是 RetroArch 最核心的设计。

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

总结

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

我们可以从流行的开源软件上,学习到真正优秀的设计。

原文链接:https://mp.weixin.qq.com/s/T4sys9NdZzHizWm4NHFnew

文章转载自:老吴嵌入式

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

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

,