最近看了很多开源项目,主要都集中在模拟器方面,我指的是游戏模拟器比如GameBoy或者PlayStation这一类。现在想玩这系列的游戏可以在手机或者电脑下载相应的模拟器,并且获取对应的ROM文件,不过也有一些模拟器是可以运行在Linux上面的,为了进一步探索,我选择了相对较小的项目并尝试将它移植到OERV上面,本次实验的环境是OpenEuler 24.03 SP1(RISC-V架构)。

  我选择的项目是gbemu,这个项目可以在Github上面找到,项目本身并不大,拿到项目直接在本地运行make就可以编译,非常简单。但是会出现缺包的问题,这个就得需要对OpenEuler的软件包比较熟悉。

  先上手看看这个CMakeLists.txt,关注到了find_package这个部分

  既然是find_package(SDL2),说明需要SDL2-devel这个软件包(通常需要开发文件),因此也只需要dnf install SDL2-devel就能解决重要的依赖。

  由于这个项目比较小而且也相对简单,需要的依赖不复杂,因此编译的过程没什么阻碍。相比于其它GameBoy模拟器的项目,往往都需要各种复杂的依赖甚至对图形驱动有要求,以及复杂的编译参数。不过最终gbemu这个项目运行也依然出现了一些问题。

  

  看起来似乎运行成功,不过没有图形显示出来,相比之下,我放到了Ubuntu x86的本机试了一下,是可以运行出窗口的,这个原因主要跟图形驱动有关,暂时先跳过。

  第二个项目是gbsplay,用于播放 Game Boy 游戏机音效的程序或工具。这个项目也是为数不多可以顺利进行编译的,只需要先./configure配置好环境再make编译即可。

  gbsplay gbs2gb gbsinfo都是编译出来的可执行程序,顺利通过编译~

  总结:

  1、目前还有大量的GameBoy Emulator值得去研究,不过对软件包依赖较高,需要先将依赖解决,这些依赖可能OE本身没有。

  2、即便编译通过了但是也没有运行成功,这个可能跟驱动,有机会获得合适的硬件环境的话再试试看。

  3、GameBoy模拟器有一些项目里面涉及到了SIMD指令集,如果放到RISC-V上面的话得做RVV优化,这是一个可以做的点。

OERV兴趣探索:模拟器移植的更多相关文章

  1. PyNN:神经网络模拟器的通用接口

    PyNN:神经网络模拟器的通用接口 计算神经科学已经产生了用于模拟神经元网络的多样化软件,同时具有消极和积极的后果.一方面,每个模拟器都使用自己的编程或配置语言,导致将模型从一个模拟器移植到另一个模拟 ...

  2. Appium&python

    Appium官网所描述的特性,都很吸引人,刚好最近在研究Mobile Automation Testing,所以很有兴趣探索下Appium这个年轻的工具. 不过看了官网的documents,实在是让初 ...

  3. ASP.NET Core官方计划路线及需要废除的一些Framework技术

    概述 下面是 ASP.NET Core的时间表和路线图. 注意日期和特性都可能更改. 作为.NET Core这么大的一个项目,很难准确预测每一个计划的是否有变动. 即便如此,我们还是计划公开和透明的实 ...

  4. 使用NuGet管理项目类库引用

    NuGet 是微软开发平台(包括.NET平台)的一个包管理器,这里只介绍和.NET相关的NuGet Visual Studio扩展客户端, 在VS2010 ,VS2012 ,VS2013中默认集成了N ...

  5. China Brain Project: Basic Neuroscience, Brain Diseases, and Brain-Inspired Computing

    日前,中国科学院神经科学研究所.中国科学院脑科学与智能技术卓越创新中心.香港科技大学生命科学部和分子神经科学国家重点实验室.中国科技大学自动化研究所在 Cell 上联合发表了一篇概述论文<Chi ...

  6. NuGet管理

    使用NuGet管理项目类库引用   NuGet 是微软开发平台(包括.NET平台)的一个包管理器,这里只介绍和.NET相关的NuGet Visual Studio扩展客户端, 在VS2010 ,VS2 ...

  7. 人人都是CEO

    在这个互联网崛起的时代有些流行说法,比如:人人都是产品经理,人人都是程序员以突显行业繁荣的特点,但从更基本的出发点,难道人人不都是 CEO 么?个人的 CEO. 从这个名字套路出发,我沿着想了下去,作 ...

  8. 如何在Python中从零开始实现随机森林

    欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 决策树可能会受到高度变异的影响,使得结果对所使用的特定测试数据而言变得脆弱. 根据您的测试数据样本构建多个模型(称为套袋)可以减少这种差异,但是 ...

  9. 【20170920校内模拟赛】小Z爱学习

    所有题目开启-O2优化,开大栈空间,评测机效率为4亿左右. T1 小 Z 学数学(math) Description ​ 要说小 Z 最不擅长的学科,那一定就是数学了.这不,他最近正在学习加法运算.老 ...

  10. AWTK(Toolkit AnyWhere): 为嵌入式、手机和桌面开发的通用GUI【转】

    转自:https://blog.csdn.net/absurd/article/details/80958279 AWTK = Toolkit AnyWhere AWTK是吸取了FTK和CanTK的精 ...

随机推荐

  1. 10C++选择结构(4)

    一.switch语句 问题:风之巅小学规定,若测试成绩大于或等于90分为"A",大于或等于70分小于90分为"B",大于或等于60分小于70分为"C& ...

  2. GraphQL Part II: 中间件

    GraphQL Part II: 中间件 如果您熟悉 ASP.NET Core 的中间件,您可能注意到在我们上一篇博客中我们已经拥有了一个中间件.在初始的空白应用中,中间件的职责是返回 hello W ...

  3. Jackson ObjectMapper - 指定对象属性的序列化顺序

    注释很有用,但在任何地方应用起来都会很痛苦.您可以配置整个 ObjectMapper 以这种方式工作 当前杰克逊版本: objectMapper.configure(MapperFeature.SOR ...

  4. FLASK的基础

    1.导入flask from flask import Flask  #导入所需要的包 app = Flask(__name__)  #实例化对象 @app.route('/hello') #装饰器r ...

  5. Qt编写跨平台视频监控系统(64通道占用7%CPU/支持win_linux_mac等)

    一.前言 视频监控组件经历过数十年的迭代,从最初的只简单播放个rtsp视频流,到现在支持各种音频视频文件格式(mp3.wav.mp4.asf.rm.rmvb.mkv等).支持各种视频流格式(rtp.r ...

  6. Qt编写可视化大屏电子看板系统28-模块6送检合格

    一.前言 送检合格率模块包括钢件合格率.电机合格率.当天合格率.模具零件合格率四个子模块,其中钢件合格率和电极合格率都是采用的曲线图展示,统计的15天内的合格率,定位线放在90这个值的位置,相当于90 ...

  7. Qt数据库应用8-数据导出组件示例说明

    一.前言 为了方便用户学习使用本组件,特意针对每个功能模块,每种可能的应用场景,都编写了对应的示例demo,从初级示例到中级示例再到高级示例以及多线程示例等,层层加码,针对结构体数据都做了相当详细细致 ...

  8. Python PEP8 代码规范常见问题及解决方法

    之前一直用 Python IDLE 写代码,最近换成 PyCharm 写代码总是会出现波浪号,这才了解到 Python 的 PEP8 代码规范,所以将常见的 PEP8 代码规范问题和解决方法记录一下, ...

  9. 开源即时通讯IM框架MobileIMSDK的H5端技术概览

    一.基本介绍 MobileIMSDK的H5端是一套纯JS编写的基于标准WebSocket的即时通讯库: 1)超轻量级.极少依赖: 2)纯JS编写.高度提炼,简单易用: 3)基于标准WebSocket协 ...

  10. 『AotuHotKey』——一个小巧却高效的实用效率工具

    [!note] 本来主要是想找一下「」和『』,然后这个方法直接可以找到大部分的特殊字符 通过输入法输出 『Ctr + shift + Z』进入搜狗输入法的『符号大全』 在『标点符号』项可以找到「」和『 ...