修改正点原子综合实验的NES模拟器按键控制加横屏

​​​​​​​

开发板:stm32f407探索者开发板V2

屏幕是4.3寸-800-480-MCU屏

手头没有V3开发板,只有V2,所以没法测试

所以只讲修改哪里,请自行修改

先改手柄部分,把手柄改成按键

找到左边的nes文件夹中的nes_main.c文件

void nes_get_gamepadval(void)//读取手柄数据函数

把函数里面的语句全部注释掉

//u8 *pt;
    
    /*
    while((usbx.bDeviceState&0XC0)==0X40)//USB设备插入了,但是还没连接成功,猛查询.
    {
        usbapp_pulling();    //轮询处理USB事务
    }
    usbapp_pulling();        //轮询处理USB事务
    if(usbx.hdevclass==4)    //USB游戏手柄
    {    
        PADdata=fcpad.ctrlval;
        PADdata1=0;
    }else if(usbx.hdevclass==3)//USB键盘模拟手柄
    {
        KEYBRD_FCPAD_Decode(pt,0);
        PADdata=fcpad.ctrlval;
        PADdata1=fcpad1.ctrlval; 
    }    
    */

加入下面的语句

手柄1键值 [7:0]右7 左6 下5 上4 Start3 Select2 B1 A0  
    
    
    if(WK_UP==0)
    {
        PADdata = PADdata | 0x08;//Start3
    }
    else
    {
        PADdata = PADdata & ~0x08;
    }
    
    
    if(KEY0==0)
    {
        PADdata = PADdata | 0x04;//Select2
    }
    else
    {
        PADdata = PADdata & ~0x04;
    }
    
    if(KEY1==0)
    {
        PADdata = PADdata | 0x02;//B1
    }
    else
    {
        PADdata = PADdata & ~0x02;
    }
    
    if(KEY2==0)
    {
        PADdata = PADdata | 0x01;//A0
    }
    else
    {
        PADdata = PADdata & ~0x01;
    }

由于开发板上的按键只有4个,所以就改了4个,

下载测试就可以了

下面开始改横屏

我的屏幕的ID是5510  如果您是这个屏幕就可以按下面的修改

还是在nes_main.c文件中

找到void nes_set_window(void)

使用下面的语句   替换这个全部函数


//设置游戏显示窗口
void nes_set_window(void)
{    
    u16 xoff=0,yoff=0; 
    u16 lcdwidth,lcdheight;//
    
    u16 regval=0;//定义寄存器地址
    u16 dirreg=0;//定义寄存器的值
    

    dirreg=0X3600;//给寄存器的地址
    regval|=(0<<7)|(1<<6)|(1<<5); //寄存器的值   扫描方式为 U2D_R2L

    LCD_WriteReg(dirreg,regval);//设置屏的扫描方式寄存器
    

    lcdwidth=480;//显示宽度
    lcdheight=480; //显示高度
    nes_xoff=(256-(lcddev.width/2))/2;//得到x轴方向的偏移量
     xoff=0; 
    
    LCD_Set_Window(160,0,lcdwidth,lcdheight);//让NES始终在屏幕的正中央显示
    LCD_SetCursor(160,0);//设置屏幕光标位置
    
    LCD_WriteRAM_Prepare();//写入LCD RAM的准备   
}

全部修改完毕

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/209119.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

采用轨到轨输出设计 LTC6363HMS8-2、LTC6363HMS8-1、LTC6363HRD、LTC6363IDCB差分放大器I

产品详情 LTC6363 系列包括四个全差分、低功耗、低噪声放大器&#xff0c;具有经优化的轨到轨输出以驱动 SAR ADC。LTC6363 是一款独立的差分放大器&#xff0c;通常使用四个外部电阻设置其增益。LTC6363-0.5、LTC6363-1 和 LTC6363-2 都有内部匹配电阻&#xff0c;可分别创建…

【Python百宝箱】代码冲突?文件合并不再是问题!Python解决方案大揭秘

Python脚本与图形工具&#xff1a;文件比较与合并的完整指南 前言 在软件开发、版本控制和数据处理领域&#xff0c;文件比较和合并是至关重要的任务。Python生态系统中涌现了许多强大的工具和库&#xff0c;为开发者提供了丰富的选择。本指南将深入探讨 Python 中常用的文件…

看完了一个动画电影-心灵奇旅

refer: 开二倍速看完了&#xff0c;一部分是听的&#xff0c;剧情还可以&#xff0c;就是普通的治愈片。 里边有个台词&#xff1a; 一条小鱼游到一条老鱼旁边说,“我要找到他们称之为海洋的东西。” “海洋?”老鱼问,“你现在就在海洋里啊。” “这儿?”小鱼说,“这儿是水…

人工智能:走向未来的智慧之路

1. 定义与范畴 人工智能&#xff08;AI&#xff09;是一门研究如何使计算机系统能够模拟人类智慧的科学与技术。这包括了机器学习、深度学习、自然语言处理、计算机视觉等多个子领域。机器学习让计算机能够通过数据学习&#xff0c;而深度学习则通过模拟人脑神经网络的方式实现…

C++数据结构:B树

目录 一. 常见的搜索结构 二. B树的概念 三. B树节点的插入和遍历 3.1 插入B树节点 3.2 B树遍历 四. B树和B*树 4.1 B树 4.2 B*树 五. B树索引原理 5.1 索引概述 5.2 MyISAM 5.3 InnoDB 六. 总结 一. 常见的搜索结构 表示1为在实际软件开发项目中&#xff0c;常用…

博途PLC SCL间接寻址编程应用

这篇博客里我们将要学习Pointer和Any指针&#xff0c;PEEK和POKE指令&#xff0c;当然我们还可以数组类型数据实现数组指针寻址&#xff0c;具体应用介绍请参考下面文章链接&#xff1a; https://rxxw-control.blog.csdn.net/article/details/134761364https://rxxw-control.b…

一文讲解如何从 Clickhouse 迁移数据至 DolphinDB

ClickHouse 是 Yandex 公司于2016年开源的 OLAP 列式数据库管理系统&#xff0c;主要用于 WEB 流量分析。凭借面向列式存储、支持数据压缩、完备的 DBMS 功能、多核心并行处理的特点&#xff0c;ClickHouse 被广泛应用于广告流量、移动分析、网站分析等领域。 DolphinDB 是一款…

【Hadoop_02】Hadoop运行模式

1、Hadoop的scp与rsync命令&#xff08;1&#xff09;本地运行模式&#xff08;2&#xff09;完全分布式搭建【1】利用102将102的文件推到103【2】利用103将102的文件拉到103【3】利用103将102的文件拉到104 &#xff08;3&#xff09;rsync命令&#xff08;4&#xff09;xsync…

使用 HTML 地标角色提高可访问性

请务必确保所有用户都可以访问您的网站&#xff0c;包括使用屏幕阅读器等辅助技术的用户。 一种方法是使用 ARIA 地标角色来帮助屏幕阅读器用户轻松浏览您的网站。使用地标角色还有其他好处&#xff0c;例如改进 HTML 的语义并更轻松地设置网站样式。在这篇博文中&#xff0c;我…

深度探索Linux操作系统 —— 构建initramfs

系列文章目录 深度探索Linux操作系统 —— 编译过程分析 深度探索Linux操作系统 —— 构建工具链 深度探索Linux操作系统 —— 构建内核 深度探索Linux操作系统 —— 构建initramfs 文章目录 系列文章目录前言一、为什么需要 initramfs二、initramfs原理探讨三、构建基本的init…

tomcat篇---第二篇

系列文章目录 文章目录 系列文章目录前言一、tomcat容器是如何创建servlet类实例?用到了什么原理?二、tomcat 如何优化?三、熟悉tomcat的哪些配置?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女…

Web应用JSON数据保护(密码算法、密钥、数字签名和数据加密)

1.JSON&#xff08;JavaScript Object Notation&#xff09; JSON是一种轻量级的数据交换格式&#xff0c;采用完全独立于编程语言的文本格式来存储和表示数据。JSON通过简单的key-value键值对来描述数据&#xff0c;可以被广泛用于网络通信、数据存储等各种应用场景&#xff0…

【重点】Flink四大基石

1. Time&#xff08;时间机制&#xff09; 时间概念 处理时间&#xff1a;执行具体操作时的机器时间&#xff08;例如 Java的 System.currentTimeMillis()) &#xff09;事件时间&#xff1a;数据本身携带的时间&#xff0c;事件产生时的时间。摄入时间&#xff1a;数据进入 …

代码随想录算法训练营第四十六天 _ 动态规划_198.打家劫舍、213.打家劫舍II、337.打家劫舍 III。

学习目标&#xff1a; 动态规划五部曲&#xff1a; ① 确定dp[i]的含义 ② 求递推公式 ③ dp数组如何初始化 ④ 确定遍历顺序 ⑤ 打印递归数组 ---- 调试 引用自代码随想录&#xff01; 60天训练营打卡计划&#xff01; 学习内容&#xff1a; 198.打家劫舍 动态规划五步曲&a…

Python面向对象基础

Python面向对象基础 一、概念1.1面向对象的设计思想1.2 面向过程和面向对象1.2.1 面向过程1.2.2 面向对象1.2.3 面向过程和面向对象的优缺点 二、类和对象2.1 概念2.2 类的定义2.3 对象的创建2.3.1 类中未定义构造函数2.3.2 类中定义构造函数 2.4 类的设计 三、类中的成员3.1 变…

vue文件下载

第一种方法 const downloadfile (url) > {if (!url) {return ElMessage.error("暂无文件&#xff01;无法下载")}axios({url,method: GET,responseType: blob// headers: {// token:getCache(TOKEN), // 可以携带token// }}).then(res > {const href …

go-zero 开发入门-API服务开发示例

接口定义 定义 API 接口文件 接口文件 add.api 的内容如下&#xff1a; syntax "v1"info (title: "API 接口文件示例"desc: "演示如何编写 API 接口文件"author: "一见"date: "2023年12月07日"version: "…

Python教程-数组

作为软件开发者&#xff0c;我们总是努力编写干净、简洁、高效的代码。在本文中&#xff0c;我们将探索 Python 数组的各种特性和功能。我们将学习如何在 Python 中创建、操作和使用数组&#xff0c;以及数组与 Python 编程语言中的其他数据结构有何不同。我们的目标是提供有关…

找重复的数据(一维数组)

在一大堆数据中找出重复的是一件经常要做的事情。现在&#xff0c;我们要处理许多整数&#xff0c;在这些整数中&#xff0c;可能存在重复的数据。 你要写一个程序来做这件事情&#xff0c;读入数据&#xff0c;检查是否有重复的数据。如果有&#xff0c;输出“YES”这三个字母…

资源文件、布局管理器、样式表拓展

QT 资源文件 提供了和本地路径无关的资源管理。 图片资源的获取&#xff1a;阿里巴巴矢量图库&#xff08;&#x1f448; 安全链接&#xff0c;放心跳转&#xff09; widget.ui .qrc widget.h #ifndef WIDGET_H #define WIDGET_H#include <QtWidgets>namespace Ui { c…