玩转easyARM imax283A开发版(二),移植NES模拟器并增加按键驱动,让板子可以玩超级玛丽游戏

news/2025/2/13 2:51:20/

移植移植infoNES模拟器到嵌入式linux上,并增加支持声音输出和按键

代码放在了github上。

https://github.com/yongzhena/infoNES

先来个效果截图:

按键驱动源码:

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/fs.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <asm/uaccess.h>
#include <asm/irq.h>
#include <asm/io.h>
#include <linux/device.h>
#include <../arch/arm/mach-mx28/mx28_pins.h>
#include "gpio.h"static struct class *joypad_drv_class;/*** FC手柄 bit 键位对应关系 真实手柄中有一个定时器,处理 连A  连B * 0  1   2       3       4    5      6     7* A  B   Select  Start  Up   Down   Left  Right
*/
static ssize_t joypad_drv_read(struct file *file, char __user *buf, size_t size, loff_t *ppos)
{//利用 sszie_t 返回 手柄键值 //buf 是有符号无法保存 8 bitint i;ssize_t val = 0;if(!gpio_get_value(MXS_PIN_TO_GPIO(PINID_SSP0_DATA6))){//printk(KERN_INFO "key1 pressed!\n");val = 1<<0; //A}else{//printk(KERN_INFO "no key pressed!\n");}if(!gpio_get_value(MXS_PIN_TO_GPIO(PINID_SSP0_DATA5))){//printk(KERN_INFO "key2 pressed!\n");val = 1<<6;//LEFT}if(!gpio_get_value(MXS_PIN_TO_GPIO(PINID_SSP0_DATA4))){//printk(KERN_INFO "key3 pressed!\n");val = 1<<3;//start}if(!gpio_get_value(MXS_PIN_TO_GPIO(PINID_LCD_D18))){//printk(KERN_INFO "key4 pressed!\n");val = 1<<7;//RIGHT}if(!gpio_get_value(MXS_PIN_TO_GPIO(PINID_LCD_D17))){//printk(KERN_INFO "key5 pressed!\n");val = 1<<5;//UP}return val;
}
static struct file_operations joypad_drv_fops = {.owner  =   THIS_MODULE,.read   =   joypad_drv_read,
};int major;
//注册驱动程序
int joypad_drv_init(void)
{printk(KERN_INFO "joypad_drv_init\n");major = register_chrdev(0, "joypad_drv", &joypad_drv_fops);//自动创建 dev 节点joypad_drv_class = class_create(THIS_MODULE, "joypad_drv");device_create(joypad_drv_class, NULL, MKDEV(major, 0), NULL, "joypad");//P3.26 PINID_SAIF1_SDATA0配置为输入gpio_direction_input(MXS_PIN_TO_GPIO(PINID_SAIF1_SDATA0));gpio_direction_input(MXS_PIN_TO_GPIO(PINID_LCD_D17));gpio_direction_input(MXS_PIN_TO_GPIO(PINID_LCD_D18));gpio_direction_input(MXS_PIN_TO_GPIO(PINID_SSP0_DATA4));gpio_direction_input(MXS_PIN_TO_GPIO(PINID_SSP0_DATA5));gpio_direction_input(MXS_PIN_TO_GPIO(PINID_SSP0_DATA6));return 0;
}//卸载驱动程序
void joypad_drv_exit(void)
{printk(KERN_INFO "joypad_drv_exit\n");unregister_chrdev(major, "joypad_drv");device_destroy(joypad_drv_class, MKDEV(major, 0));class_destroy(joypad_drv_class);
}module_init(joypad_drv_init);
module_exit(joypad_drv_exit);
MODULE_LICENSE("GPL");

编译驱动为joypad.ko的makefile:

KERN_DIR = /mnt/hgfs/b503/imax283/linux-2.6.35.3all:make -C $(KERN_DIR) M=`pwd` modules clean:make -C $(KERN_DIR) M=`pwd` modules cleanrm -rf modules.orderobj-m	+= joypad.o

加载驱动的方法:

insmod joypad.ko

卸载驱动方法:

rmmod joypad.ko

移植InfoNES到imx6ull(一) | 码农家园 

单片机---HLK-W801移植Nes模拟器(一)_胖哥王老师的博客-CSDN博客_nes模拟器源码


http://www.ppmy.cn/news/330935.html

相关文章

nes 模拟器_如何使用模拟器在PC上玩自己喜欢的NES,SNES和其他复古游戏

nes 模拟器 You’ve seen it. Maybe it was on an airplane, maybe it was at a friend’s house, but you saw people playing old Nintendo, Sega, or even PlayStation games on their computers. And yet, when you searched for those particular games in Steam, nothing…

raspberry pi pico|在raspberry pi pico上玩nes游戏(1)(开源树莓派pico NES模拟器)-效果演示及介绍

文章目录 前言raspberry pi pico NES模拟器效果图功能介绍 制作过程硬件准备制作思路实现思路搭建开发环境 获取源码 raspberry pi pico|【项目一】找回童年&#xff01;Raspberry pi pico NES模拟器 前言 在国内因为外观被称为红白机的任天堂FC(欧美版叫NES)&#xff0c;或者说…

nes模拟器java怎么用_nes 红白机模拟器 第7篇 编译使用方法

模拟器&#xff0c;基于 InfoNES &#xff0c;作者添加修改以下功能&#xff1a; 1, joypad 真实手柄驱动程序(字符型设备驱动) 2,原始图像只有256*240 &#xff0c;添加 图像放大算法&#xff0c;这里实现了2种&#xff0c;a, 最近邻插值 b, 双线性插值 (因为2440 速度太慢&am…

NES模拟器开发笔记(001)缘起、资料及开发准备

红白机对我们这些八零后来说&#xff0c;是一个时代的记忆。而我自从2000年有了自己的第一台PC&#xff0c;就开始接触NES模拟器了。自从在吉林大学计算机科学与技术专业毕业当了程序员&#xff0c;这些年也看了不少NES模拟器的代码&#xff0c;今年则心血来潮想自己写个模拟器…

如何写一个NES模拟器(一)

1.认识NES文件格式 偏移0&#xff0d;3 字符串“NES^Z”用来识别.NES 文件 偏移4 16kB ROM 的数目 偏移5 8kB VROM 的数目 &#xff08;摘自《任天堂产品系统文件》&#xff09; NES文件的前16个字节是文件头&#xff0c;前4个字节是NES^Z,文件标识。第5个字节是16K ROM的…

单片机---HLK-W801移植Nes模拟器(二)

总目录 《单片机—HLK-W801移植Nes模拟器&#xff08;一&#xff09;》 《单片机—HLK-W801移植Nes模拟器&#xff08;二&#xff09;》 《单片机—HLK-W801移植Nes模拟器&#xff08;三&#xff09;》 前面已经完成了程序的移植&#xff0c;今天试一下按键操作&#xff0c;好…

单片机---HLK-W801移植Nes模拟器(三)

总目录 《单片机—HLK-W801移植Nes模拟器&#xff08;一&#xff09;》 《单片机—HLK-W801移植Nes模拟器&#xff08;二&#xff09;》 《单片机—HLK-W801移植Nes模拟器&#xff08;三&#xff09;》 本章重点—优化显示 前两章完成之后&#xff0c;测试了一下刷新速率&am…

移植NES模拟器到STM32G431 详细移植教程 CubeMX HAL库

框架 开发环境移植步骤1.新建工程2.移植NES文件 效果展示程序下载 开发环境 MUC:STM32G431RBT6 板子&#xff1a;蓝桥杯 CT117E_M4 LCD:TFTLCD 2.4寸 注&#xff1a;若使用蓝桥杯 CT117E_M4板子&#xff0c;可以直接烧录该程序使用。 移植步骤 1.新建工程 配置LED、按键IO和…