【(首发)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

相关文章

公共筛选组件(二次封装antd)支持代码提示

如果项目是基于antd组件库为基础搭建,可使用此公共筛选组件 使用到的库 npm i antdnpm i lodash-esnpm i @types/lodash-es -D /components/CommonSearch index.tsx import React from 'react';import { Button, Card, Form } from 'antd'

(超详细)YOLOV7改进-Soft-NMS(支持多种IoU变种选择)

1.在until/general.py文件最后加上下面代码 2.在general.py里面找到这代码,修改这两个地方 3.之后直接运行即可

高仿精仿愤怒的小鸟android版游戏源码

这是一款很完美的高仿精仿愤怒的小鸟android版游戏源码,大家可以研究一下吧、 为了报复偷走鸟蛋的肥猪们,鸟儿以自己的身体为武器,仿佛炮弹一样去攻击肥猪们的堡垒。游戏是十分卡通的2D画面,看着愤怒的红色小鸟,奋不顾身的往绿色的肥猪的堡垒砸去,那种奇妙的感觉还真是令人感到很欢乐。而游戏的配乐同样充满了欢乐的感觉,轻松的节奏,欢快的风格。 源码下载

剑指offer(C++)--孩子们的游戏(圆圈中最后剩下的数)

题目 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去

【服务器08】之【游戏框架】之【加载主角】

首先简单了解一下帧率 FixedUpdate( )   >   Update( )   >   LateUpdate( ) 首先FixedUpdate的设置值 默认一秒运行50次 虽然默认是0.02秒,但FiexedUpdate并不是真的0.02秒调用一次,因为在脚本的生命周期内,FixedUpdate有一个小循环,这个循环也是通过物理时间累计看是不是大于0.02了,然后调用一次。有

2024年6月24日-6月30日(ue独立游戏为核心)

试过重点放在独立游戏上,有个indienova独立游戏团队是全职的,由于他们干了几个月,节奏暂时跟不上,紧张焦虑了。五一时也有点自暴自弃了,实在没必要,按照自己的节奏走即可。精力和时间也有限,放在周末进行即可。除非哪天失业了,再也找不到工作了,再把重心放在独立游戏上。 另外,找到一个同样业余的美术,从头做肉鸽游戏,两周一次正式交流即可。节奏一定要放慢,不能影响正常工作生活。如果影响到了,还不如自

植物大战僵尸杂交版2.1版本终于来啦!游戏完全免费

在这个喧嚣的城市里,我找到了一片神奇的绿色世界——植物大战僵尸杂交版。它不仅是一款游戏,更像是一扇打开自然奥秘的窗户,让我重新认识了植物和自然的力量。 植物大战僵尸杂交版最新绿色版下载链接: https://pan.quark.cn/s/d60ed6e4791c 🌱 🔥 激情介绍:不只是游戏,更是生态课 植物大战僵尸杂交版将经典的策略塔防游戏带入了一个全新的维度。这里,每一种植物都拥

基于ZYNQ7000的交叉编译工具链Qt+OpenCV+ffmpeg等库支持总结

最近刚刚接触XILINX的ZYNQ板,刚接触没有十天。XILINX定位它为SOC,我也很认同,起码比TI定位MPU为SOC强很多。据说今年TI的最新产品也加入了ZYNQ板。 之前的MIPS处理器设计与实现的项目就算做告一段落,搞了将近7个月,成果显著,收获颇多,最近打算搞搞ZYNQ。 之前MIPS也有一套交叉编译工具,不过是老师提供的,自己也尝试搞了搞,太辛苦了,而且也没什么成果,因为我

让IE8支持@media query

方法一:polyfill Respond.js 方法二:css hack @media \0screen {} 写在@media \0screen {} 中的代码只会在IE8中执行,其他浏览器会忽略这些代码 注:推荐使用方法一

让IE8支持CSS3属性(border-radius、box-shadow、linear-gradient)

下载 PIE-1.0.0.zip解压后,将文件夹重命名为PIE,放到项目目录下在CSS3文件中添加一行代码 behavior: url(PIE/PIE.htc); 例如: .form__input{border-radius: 0.3em;behavior: url(PIE/PIE.htc);} 参考: TYStudio-专注WEB前端开发 css3pie