ADI Blackfin DSP处理器-BF533的开发详解70:NES 红白机模拟器(含源码)
硬件准备
ADSP-EDU-BF533:BF533开发板
AD-HP530ICE:ADI DSP仿真器
软件准备
Visual DSP++软件
硬件链接
代码实现功能
代码实现了 NES 游戏模拟器在 BF53x 平台上的运行。运行代码后,会通过文件系统打开工程目录下 ROM 内 的 NES 游戏 ROM,然后运行游戏,在液晶屏上显示出游戏内容。通过开发板上的按键可进行游戏娱乐。目前代码
解码支持 128K 及以下的 ROM 文件,大于 128K 的 ROM 文件不支持运行。
注意:模拟器音频部分还没有做,有兴趣的朋友可以补上。
代码使用说明
代码通过文件系统打开 ROM:
fp = fopen(“…/rom/hundouluo.nes”, “rb”);
lenth = fread(rom_file, 1, 0x200000, fp);
fclose(fp);
打开液晶屏驱动:
LCDBK_Disable();
InitDMA();
InitPPI();
InitTimer();
PPI_TMR_DMA_Enable();
LCD_Enable();
Init_Timers0(1999);//1~1999 控制背光亮度
Enable_Timers0();
LCDBK_Enable();
运行模拟器:
InfoNES_ReadRom();
InfoNES_Reset();
InfoNES_Main();
液晶屏数据更新:
void InfoNES_LoadFrame(void)
{
int x,y;
u16 color_data;
u8 color_r,color_g,color_b;
for(x = 0;x < 240;x++)
{
for(y = 0;y < 256;y++)
{
color_data = ChColor(WorkFrame[x*256+y]);
color_r = (color_data>>11)& 0x1f;
color_g = (color_data>>5)& 0x2f;
color_b = (color_data)& 0x1f;
color_data = (color_r) | (color_g<<5) | (color_b<<11);
DisplayBuffer_565[x][y2+220] = (color_data & 0xff) ;
DisplayBuffer_565[x][y2+221] = ((color_data>>8) & 0xff);
}
}
}
模拟器按键操作:
u8 ReadKey(u8 KeyCodeLast)
{
u8 KeyCode,i;
u8 temp_code = 0;
static u8 KeyDly[10]={3,3,3,3,3,3,3,3,3,3};
temp_code = ~*pKEY_DAT;
KeyCode = ((temp_code>>0)&0x1)<<4 ;
KeyCode |= ((temp_code>>1)&0x1)<<6;
KeyCode |= ((temp_code>>2)&0x1)<<5 ;
KeyCode |= ((temp_code>>3)&0x1)<<7;
KeyCode |= ((temp_code>>4)&0x1)<<3;
KeyCode |= ((temp_code>>5)&0x1)<<1;
KeyCode |= ((temp_code>>6)&0x1)<<0;
KeyCode |= ((temp_code>>7)&0x1)<<2;
for (i = 0; i < 7; i++)
{
if ((board_input&(1<<i))!=(KeyCode&(1<<i)))
{
KeyDly[i] = 3;
}
else
{
if ((KeyCode&(1<<i)))
{
if (KeyDly[i] < 6)
{
KeyDly[i]++;
}
else
return (KeyCode);
}
else
{
if (KeyDly[i] > 0)
{
KeyDly[i]–;
}
else
return (KeyCode);
}
}
}
return(KeyCodeLast);
}
按键设置说明:
代码实验步骤
- 编译运行代码
- 待屏幕出现魂斗罗画面,通过按键输入:上上下下左右左右 BABA,按 START,开始游戏。
- 30 条命,祝游戏愉快。
代码实验结果
在液晶屏上出现魂斗罗画面,通过按键控制可进行游戏。
ADI Blackfin DSP处理器-BF533的开发详解70:NES 红白机模拟器(含源码)相关推荐
- ADI Blackfin DSP处理器-BF533的开发详解64:电子相册的设计(含源码)
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 代码实现功能 代码实现了将 SD 卡根目录下的 ...
- ADI Blackfin DSP处理器-BF533的开发详解67:PCM的播放(含源码)
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 代码实现功能 代码实现了打开代码工程目录下的& ...
- ADI Blackfin DSP处理器-BF533的开发详解25:USB接口设计(含源代码)
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 硬件设计原理图 功能介绍 跟网口一样,USB这 ...
- ADI Blackfin DSP处理器-BF533的开发详解14:LED跑马灯(含源代码)
接口讲完了,下面写点应用程序,GPIO最典型的应用,LED跑马灯. 硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DS ...
- ADI Blackfin DSP处理器-BF533的开发详解1:软件和硬件的准备
BF533是ADI Blackfin系列DSP处理器里的最经典型号,这个DSP我用了20年,单就这一颗DSP来讲,我相信国内应该没有比我更资深的了,下面就来说一说这颗DSP. 这颗IC是Blackfi ...
- ADI Blackfin DSP处理器-BF533的开发详解3:GPIO(含源代码)
我们从最基础的GPIO开始,先讲外设,这玩意不管是单片机,还是ARM,又或是FPGA,甚至SOC的芯片,都有GPIO,有共性,就好理解,让我们看看在ADI的DSP里头,GPIO是怎么一回事吧. 硬件准 ...
- ADI Blackfin DSP处理器-BF533的开发详解58:DSP控制ADXL345三轴加速度传感器的应用(含源码)
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 MEMS三轴加速度传感器 我做了一个三轴加速度 ...
- ADI Blackfin DSP处理器-BF533的开发详解60:DSP控制ADXL345三轴加速度传感器-电子水平仪(含源码)
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 MEMS三轴加速度传感器 我做了一个三轴加速度 ...
- ADI Blackfin DSP处理器-BF533的开发详解21:RTC实时时钟的原理及应用(含源码)
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 硬件设计原理图 功能介绍 ADSP-BF53x ...
最新文章
- spring in action 4 第5章
- .exe已停止工作_这几天我遇到了前所未有的问题windows10 1809 explorer.exe资源管理器频繁崩溃...
- 开工大吉,先送一波福利~
- 《廖雪峰 . Git 教程》学习总结
- 创建一个dynamics 365 CRM online plugin (四) - PreValidation
- HTML+CSS+JS实现 ❤️九宫格图片悬停遮罩层特效❤️
- 小米商城抢购脚本_四季度注意了!茅台酒抢购发生了变化
- 本地访问网站好使外网不好用 可能是防火墙端口
- RHEL6.2上使用 libvirt创建和管理KVM虚拟机
- diy操作系统 0:万事开头难
- sql server代理无法启动_DungProxy代理资源服务系统,
- 最简单DIY的51蓝牙遥控小车设计方案
- Python词频统计的3种方法
- 【Go】blockchain-tutorial 区块链技术教程
- 亚马逊速卖通tro律所禁令冻结资金的解决方法
- 基于腾讯地图+Ant-Design-Vue封装省市区联动查询组件
- Kafka的灵魂伴侣Logi-KafkaManger(3)之运维管控--集群列表
- lopa分析_AQ/T 3054-2015保护层分析(LOPA)方法应用导则
- 蚁群算法ACO求解TSP问题
- 深度学习中mAP的含义