基于小安派AiPi-Eye-S1的Nes游戏机

2023-10-29 15:44
文章标签 s1 游戏机 eye nes aipi 小安派

本文主要是介绍基于小安派AiPi-Eye-S1的Nes游戏机,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.作品展示

作品功能可见以下B站视频

外壳可以使用灰太狼大佬提供的外壳STL文件。在嘉立创三维猴上打印(外壳12元+快递6元)。
外壳从以下的帖子中获取:
模型分享

2.作品说明

2.1 硬件部分

硬件上使用到了AiPi-Eye-S1开发板以及3.5寸 240*320像素的电容触摸屏,使用时可以使用USB Type-C线通过开发板上的Type-C接口为设备进行供电。也可以使用锂电池给板子供电,实测壳体的液晶屏和PCB之间的间距足够放下一个3.7v的锂电池。程序下载使用USB转TTL工具。
在这里插入图片描述

2.2 软件部分

  1. 开发环境
    个人是在WSL ubuntu18.04环境下使用VSCode进行项目的开发,具体的环境搭建过程可参考帖子: 【轻松上手】1.小安派开箱及开发环境搭建)
    在这里插入图片描述

  2. ui设计
    本项目直接使用了LCD的bsp驱动来进行UI的绘制。UI界面分为两层,底层是game的界面,上浮的一层显示的是game手柄的8个触摸按键。为了方便的确定触摸按键的位置,特地在solidworks中绘制了一个草图,用草图的尺寸来方便确定每个按键的屏幕像素坐标。
    在这里插入图片描述

额外需要说明的是显示是使用的横向的坐标系,但是触摸驱动使用的是纵向的坐标系。他们的坐标原点是不一样的,需要进行坐标的变换。

在这里插入图片描述

在这里插入图片描述

  1. 程序设计思路

本项目程序直接使用官方SDK的example/hello案例上进行添加代码的,其整体的实现思路如下:

系统初始化
基于FreeRTOS创建两个任务
(1) button_task任务负责对触摸屏进行实时的读取;
(2) main_task中对输入的game rom进行读取,然后解析并模拟6502的执行。整个game的核心就在这个任务中。在完成每一行的解码后,在这个task中会及时的去渲染屏幕中的对应行。

3. 使用说明

3.1 固件烧录

以下操作需要再环境配置完成后进行。

  1. 程序编译
    在项目根目录下打开终端,输入make
    在这里插入图片描述

    如无错误,最终会显示以下内容
    在这里插入图片描述

  2. 固件烧录
    在终端中输入make flash COMX=COMxx 其中xx为实际连接的下载器的COM口号,如下图中COM口为39。
    在这里插入图片描述

    烧录正常输出:
    在这里插入图片描述

3.2 Rom替换

理论上这个项目的模拟器是支持所有不带多合一的rom的。而且由于模组的rom空间比较大,其实可以放下很多的game数据。当前预放了三个gamerom, 需要运行哪一个就去掉哪一个的注释,然后编译烧录。rom替换的具体方法可以参考:【轻松上手】小安派nes game rom替换

在这里插入图片描述

4.其他说明

  1. 因为模拟器是我在多年前用C写的,方便调试该模拟器可以运行在Windows平台上,使用SDL显示画面。当然因为当时写模拟器的时候也没有考虑音频解码,所以game是没有声音的。后续有兴趣我们可以一起来讲更优秀的nofrendo模拟器移植过来,它是支持音频的。

    当前nofrendo的移植已经编译通过正在调试。

  2. 当前触摸屏太小了,所以操作起来不是很方便。所以也在考虑使用uniapp在手机端做一个基于wifi连接的手柄。

总结一下,小安派的性能是非常强大的。玩法也是随心所欲,欢迎一起加油,把小安派用到自己想要的地方。

这篇关于基于小安派AiPi-Eye-S1的Nes游戏机的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/301651

相关文章

np.identity和np.eye

numpy.identity(n, dtype=None) >>> np.identity(3)array([[ 1., 0., 0.],[ 0., 1., 0.],[ 0., 0., 1.]]) numpy.eye(N, M=None, k=0, dtype=< class ‘float’>, order=’C’) Parameters: N : int 行数 M : i

SuperMarioBros-Nes with OpenAI baseline, How?

题意:SuperMarioBros-Nes 使用 OpenAI 基线,怎么做? 问题背景: I am trying to run SuperMarioBros environment in OpenAI baselines. Usually these retro environments are different from native attari 2600 that been

【仿真与实物设计】基于51单片机设计的打地鼠游戏机——程序源码原理图proteus仿真图PCB设计文档演示视频元件清单等(文末工程资料下载)

基于51单片机设计的打地鼠游戏机 演示视频: 基于51单片机设计的打地鼠游戏机 功能描述:使用 51单片机为核心制作一个打地鼠游戏机。按下启动开关,8盏LED流水点亮并闪烁2次,随即开始播放游戏音乐,直到开始选择模式。选择的模式在数码管上显示,该游戏机共有两个模式,分别是闯关模式和无尽模式。闯关模式共3关,每通过一关,蜂鸣器就播放一小段音乐以示鼓励,完成闯关后继续播放游戏音乐;无尽模

AI播客下载:Eye on AI(AI深度洞察)

"Eye on A.I." 是一档双周播客节目,由长期担任《纽约时报》记者的 Craig S. Smith 主持。在每一集中,Craig 都会与在人工智能领域产生影响的人们交谈。该播客的目的是将渐进的进步置于更广阔的背景中,并考虑发展中的技术的全球影响。人工智能即将改变你的世界,所以请留意。 主持人Craig是纽时多年资深记者,现美国国家人工智能安全委员会(NSCAI)特别雇员。最新一期

【多视图感知】BEVFormer: Learning Bird’s-Eye-View Representation

BEVFormer: Learning Bird’s-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers 论文链接:http://arxiv.org/abs/2203.17270 代码链接:https://github.com/fundamentalvision/BEVFormer

打造专属 Switch 模拟游戏机

文章目录 2种方案Switch版RetroArchLakka系统 整体性能对比:Lakka更优核心是否兼容:并不兼容整合2种方案:共享游戏ROM和配置、资源等文件夹存储空间优化添加模拟器核心Switch版RetroArchLakka 添加游戏添加特殊类型模拟游戏示例(尤其是Lakka中需要特别处理)Dreamcast、NAOMIPS 2种方案 Switch版RetroAr

matlab中的size()、magic()、eye()函数

1、size():获取矩阵的行数和列数 ①   s=size(A),当只有一个输出参数时,返回一个行向量,该行向量的第一个元素是矩阵的行数,第二个元素是矩阵的列数。 ②   [r,c]=size(A),当有两个输出参数时,size函数将矩阵的行数返回到第一个输出变量r,将矩阵的列数返回到第二个输出变量c。 ③   size(A,n)如果在size函数的输入参数中再添加一项n,并用1或2为n赋值

MySQL填充字符串的函数LPAD(s1,len,s2)和RPAD(s1,len,s2)

MySQL填充字符串的函数LPAD(s1,len,s2) LPAD(s1,len,s2)函数将字符串s2填充到s1的开始处,使字符串的长度达到len,然后返回字符串s1。如果字符串s1的长度大于len,则返回值被缩短至len字符长度。 实例: 使用LPAD函数对字符串进行填充操作。SQL语句如下: mysql>SELECT LPAD('www.baike369.com',12,'??'),

游戏机客户WiFi问题:no network found--根本原因是WiFi driver 开关中断时序问题。

客户问题:WiFi6e no network found after stress test 问题描述: 游戏机跑reboot stress测试,1000次左右,no network found. 复现:         本地实验室很难复现。试过各种方法,后来终于找到机关,客户是用ssh 通过WiFi来控制设备。而本地是通过以太网来控制设备。最终可以本地复现。 分析Triage: 1,

【DDR 终端稳压器】Sink and Source DDR Termination Regulator [C] S0 S1 S2 S3 S4 S5 6状态

TPS51200A-Q1 器件通过 EN 功能提供 S3 支持。EN引脚可以连接到终端应用中的SLP_S3信号。当EN = 高电平(S0 状态)时,REFOUT 和 VO 引脚均导通。当EN = 低电平(S3状态)时,VO引脚关断并通过内部放电MOSFET放电时,REFOUT引脚保持不变。当EN = 低电平且REFIN电压小于0.390 V时,TPS51200A-Q1器件进入伪S5状态。当伪S5