在lvgl上实现nes模拟器的显示和控制,版本更新,持续更新中...欢迎关注!

介绍

最近我有一个想法:既然LVGL能担任显示和外部输入(触摸和按键)的工作,为什么不用LVGL来写一个游戏模拟器呢?

这是成果演示视频列表,每次有重大进展都会更新新视频,接下来我会继续添加更多的功能,大家觉得好玩吗?

项目仓库更新在 lv_lib_100ask:https://gitee.com/weidongshan/lv_lib_100ask

image

演示视频

源码获取

ROMs测试文件

ROM.zip (1.2 MB)

声明:仅供学习使用,不可作为任何其他商业用途!

注意:你可能需要修改默认的路径才能让文件浏览器打开你的目录,详细信息请查看 lv_100ask_nes_simple_test.c 。默认情况是:

  • windows: D:/ROM/NES
  • linux: /root/ROM/NES

工程模板(Project)

2 个赞

谢谢大哥 :grinning: :grinning: :grinning: :grinning:

lv_100ask_nes 的工程模板运行起来后,为什么文件管理系统加载不出来?

注意lv_100ask_nes 源码的 README 文档中的说明:
企业微信截图_16589769351051

然后在 lv_100ask_nes_simple_test.c 中的代码有指定ROMs目录的代码,

#if LV_USE_FS_WIN32
    lv_100ask_file_explorer_open_dir(file_explorer, "D:/ROM/NES");
#else
    lv_100ask_file_explorer_open_dir(file_explorer, "/root/ROM/NES");
#endif

所有有两个办法可以解决这个问题:

  1. 将测试用的ROMs压缩包下载并解压到上面代码指定的目录中
  2. 修改指定ROMs目录的代码为自己的目录

ps: ROMs下载: https://forums.100ask.net/t/topic/397#roms-4


linux下文件浏览器,目录不能点进去,

NES游戏什么时候加上声音呢?

看样子是点击的目录是 L/e 而不是 //etc

你应该按照示例指定根目录:

   // [linux]打开根目录
    lv_100ask_file_explorer_open_dir(file_explorer, "/");

NES游戏方面,我们在准备一个更新的方案,还需要些时间。



如果lv_100ask_file_explorer_open_dir(file_explorer, “/”);这样的话,文件列表都没出来。

看你的窗口像是mac开发环境,如果是的话,需要注意权限问题,一些敏感目录会无法访问,指定一个普通用户能访问的目录看看


是ubuntu系统,指定到个人目录也不行。

在ubuntu上的模拟器没有尝试过,你可以发你的工程给我看看: fae_100ask@163.com
或者添加我的微信发送: baiwenkeji_fae

需要打开对应的文件系统api的宏定义,并指定一个盘符,在访问的时候,在地址前面加上最高盘符就好了。
例如下面这样:
/API for open, read, etc/
#define LV_USE_FS_POSIX 1
#if LV_USE_FS_POSIX
#define LV_FS_POSIX_LETTER ‘S’ /Set an upper cased letter on which the drive will accessible (e.g. ‘A’)/
#define LV_FS_POSIX_PATH “” /Set the working directory. File/directory paths will be appended to it./
#define LV_FS_POSIX_CACHE_SIZE 0 />0 to cache this number of bytes in lv_fs_read()/
#endif

老师您好我把这个程序移植到我的imx6ull板子上,点击nes文件后,串口打印出如下图所示,整个系统直接崩溃,是什么原因呢

3$UCN_DI4TTUYZCXZ8%EV

使用这里的roms试试看: #roms-4