前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >基于小安派AiPi-Eye-S1的小霸王,可以玩超级玛丽

基于小安派AiPi-Eye-S1的小霸王,可以玩超级玛丽

原创
作者头像
安信可科技
发布2024-12-27 11:48:09
发布2024-12-27 11:48:09
660
举报
文章被收录于专栏:DIYDIY

以下作品由安信可社区(用户ID:bzhou830)制作,原创独有!

1.作品展示

00.png
00.png

外壳可以使用灰太狼大佬提供的外壳 STL 文件。外壳从以下的帖子中获取:模型分享

2.作品说明

2.1 硬件部分

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

1.png
1.png

2.2 软件部分

  1. 开发环境 个人是在 WSL ubuntu18.04 环境下使用 VSCode 进行项目的开发,具体的环境搭建过程可参考帖子: 【轻松上手】1.小安派开箱及开发环境搭建)
2.png
2.png
  1. ui 设计 本项目直接使用了 LCD 的 bsp 驱动来进行 UI 的绘制。UI 界面分为两层,底层是 game 的界面,上浮的一层显示的是 game 手柄的 8 个触摸按键。为了方便的确定触摸按键的位置,特地在 solidworks 中绘制了一个草图,用草图的尺寸来方便确定每个按键的屏幕像素坐标。
3.png
3.png

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

4.png
4.png
5.png
5.png

程序设计思路

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

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

3. 使用说明

3.1 固件烧录

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

  1. 程序编译 在项目根目录下打开终端,输入 make
6.png
6.png

如无错误,最终会显示以下内容

7.png
7.png
  1. 固件烧录 在终端中输入 make flash COMX=COMxx 其中 xx 为实际连接的下载器的 COM 口号,如下图中 COM 口为 39。
8.png
8.png

烧录正常输出:

9.png
9.png

3.2 Rom 替换

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

10.png
10.png

4.其他说明

  1. 因为模拟器是我在多年前用 C 写的,方便调试该模拟器可以运行在 Windows 平台上,使用 SDL 显示画面。当然因为当时写模拟器的时候也没有考虑音频解码,所以 game 是没有声音的。后续有兴趣我们可以一起来讲更优秀的 nofrendo 模拟器移植过来,它是支持音频的。 当前 nofrendo 的移植已经编译通过正在调试。
  2. 当前触摸屏太小了,所以操作起来不是很方便。所以也在考虑使用 uniapp 在手机端做一个基于 wifi 连接的手柄。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 以下作品由安信可社区(用户ID:bzhou830)制作,原创独有!
  • 1.作品展示
  • 2.作品说明
    • 2.1 硬件部分
    • 2.2 软件部分
  • 3. 使用说明
    • 3.1 固件烧录
    • 3.2 Rom 替换
  • 4.其他说明
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档