【(首发)H750NES模拟器,支持上百个映射器,读档存档金手指。支持重装机兵吞食天地等游戏】

本文主要是介绍【(首发)H750NES模拟器,支持上百个映射器,读档存档金手指。支持重装机兵吞食天地等游戏】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

先上效果:

在这里插入图片描述
在这里插入图片描述

基于STM32H750的NES模拟器演示,支持上百个映射器。开源

	芯片采用STM32H750XB,CubeMX工程,内存卡+U盘导入NES游戏。控制是使用2.4G的PS无线手柄。支持绝大部分游戏。支持存档和金手指。暂不支持音频输出。移植PC端的任天堂0.97源码。因为时间问题,有想研究的可以自行查看NES APU部分源码修复音频。工程都是简陋版,比如控制和菜单显示都是随便弄的。所以比较丑。游戏没算过多少FPS。在800*480的屏幕上流畅运行,感觉有40-50FPS吧。需要移植的要注意以下几点地方:1.游戏进入。挂载文件系统后,可以直接使用NES.c文件里的uint8_t NES_init( const char* fname )函数。传入nes游戏路径即可,比如NES_init("0:rxgd.nes");2.ROM加载。因为STM32H750只有不到1M的RAM。所以使用了外部SDRAM做内存。该工程是将游戏的ROM数据存放到了外部SDRAM的地址。![在这里插入图片描述](https://img-blog.csdnimg.cn/1fe20c9bc1b7432891360bc702d0c2d7.png#pic_center)从以上代码可以看出最重要的是rom.lp这个指针。代码会将游戏文件数据全部存到SDRAM里。然后rom.lp直接指向该地址。如果要移植的话,需要给一个足够大的RAM空间。部分游戏大小有超过1M的。3.游戏运行。在主程序中周期性调用NES.c文件里的NES_Process();  详细调用请看源码。4.画面显示。NES.c文件里的NES_Process_update(); x,y分别是坐标,temp值为RGB656的数据。5.手柄控制。源码采用PS2手柄的控制,相关资料请自行查找。NES控制代码可以在ps2.c的PS2_Data_Process();函数里查看。pad.key |= getDataBit(PS2Data[3],7)<<FC_KEY_LEFT;//左键pad.key |= getDataBit(PS2Data[3],6)<<FC_KEY_DOWN;//下键pad.key |= getDataBit(PS2Data[3],5)<<FC_KEY_RIGHT;//右键pad.key |= getDataBit(PS2Data[3],4)<<FC_KEY_UP;//上键pad.key |= getDataBit(PS2Data[3],3)<<FC_KEY_START;//STARTpad.key |= getDataBit(PS2Data[3],0)<<FC_KEY_SELECT;//SELECTpad.key |= getDataBit(PS2Data[4],7)<<FC_KEY_B;//Xpad.key |= getDataBit(PS2Data[4],6)<<FC_KEY_A;//Apad.key |= getDataBit(PS2Data[4],5)<<FC_KEY_X;//Bpad.key |= getDataBit(PS2Data[4],4)<<FC_KEY_Y;//Ypad的值就是NES游戏控制的手柄值。该变量每一个位表示游戏的相应的按键。

这篇关于【(首发)H750NES模拟器,支持上百个映射器,读档存档金手指。支持重装机兵吞食天地等游戏】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

mybatis映射器配置小结

《mybatis映射器配置小结》本文详解MyBatis映射器配置,重点讲解字段映射的三种解决方案(别名、自动驼峰映射、resultMap),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定... 目录select中字段的映射问题使用SQL语句中的别名功能使用mapUnderscoreToCame

Python38个游戏开发库整理汇总

《Python38个游戏开发库整理汇总》文章介绍了多种Python游戏开发库,涵盖2D/3D游戏开发、多人游戏框架及视觉小说引擎,适合不同需求的开发者入门,强调跨平台支持与易用性,并鼓励读者交流反馈以... 目录PyGameCocos2dPySoyPyOgrepygletPanda3DBlenderFife

Python标准库之数据压缩和存档的应用详解

《Python标准库之数据压缩和存档的应用详解》在数据处理与存储领域,压缩和存档是提升效率的关键技术,Python标准库提供了一套完整的工具链,下面小编就来和大家简单介绍一下吧... 目录一、核心模块架构与设计哲学二、关键模块深度解析1.tarfile:专业级归档工具2.zipfile:跨平台归档首选3.

游戏闪退弹窗提示找不到storm.dll文件怎么办? Stormdll文件损坏修复技巧

《游戏闪退弹窗提示找不到storm.dll文件怎么办?Stormdll文件损坏修复技巧》DLL文件丢失或损坏会导致软件无法正常运行,例如我们在电脑上运行软件或游戏时会得到以下提示:storm.dll... 很多玩家在打开游戏时,突然弹出“找不到storm.dll文件”的提示框,随后游戏直接闪退,这通常是由于

升级至三频BE12000! 华硕ROG魔盒Pro路由器首发拆解评测

《升级至三频BE12000!华硕ROG魔盒Pro路由器首发拆解评测》华硕前两天推出新一代电竞无线路由器——ROG魔盒Pro(StrixGR7Pro),该产品在无线规格、硬件配置及功能设计上实现全... 作为路由器行业的T1梯队厂商,华硕近期发布了新旗舰华硕ROG魔盒Pro,除了保留DIY属性以外,高达120

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

华为鸿蒙HarmonyOS 5.1官宣7月开启升级! 首批支持名单公布

《华为鸿蒙HarmonyOS5.1官宣7月开启升级!首批支持名单公布》在刚刚结束的华为Pura80系列及全场景新品发布会上,除了众多新品的发布,还有一个消息也点燃了所有鸿蒙用户的期待,那就是Ha... 在今日的华为 Pura 80 系列及全场景新品发布会上,华为宣布鸿蒙 HarmonyOS 5.1 将于 7

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3