$4016 是 手柄1 的选通 ...
此 IO端口 在读写时候有着不同的行为 ...
首先读手柄的状态 ... 要先向 $4016 写 1 此时内部的计数器开始工作并且会为数据流上锁... 表示已经做好准备 ... 此时在往$4016 写0 解锁 数据才能正确读取出来 ...
数据流一共有 24 bit 如图
信号用来检测是4端口的接入状态:
%0000:没有连接设备
%0001:只有$4016手柄
%0010:只有$4017手柄 (此段话摘自任天堂产品文件)
对于一般的输入 ... 只要 获取0 - 7 位即可 ...
NES的输入设备流还有一个十分古怪的之处 ... 每次读取只能读取 1 Bit 也就是想要完整的获取手柄的输入必须要读取8次 $4016 ...
6502 伪代码 ...
LDA #$1
STA $4016 ; 写 1 复位设备 此时设备以及准备好并且上锁
LDA #$0
STA $4016 ; 解锁 获取输入设备数据流 此时可以开始获取数据流
LDA $4016 ; 第1次读 获取 A键 的状态
LDA $4016 ; 第2次读 获取 B键 的状态
LDA $4016 ; 第3次读 获取 Select键 的状态
LDA $4016 ; 第4次读 获取 Start键 的状态
LDA $4016 ; 第5次读 获取 上键 的状态
LDA $4016 ; 第6次读 获取 下键 的状态
LDA $4016 ; 第7次读 获取 左键 的状态
LDA $4016 ; 第8次读 获取 右键 的状态
有心的朋友 看过 NES模拟器的源代码就知道 ... $4016内部有一个计数器 ... 复位之后此计数器被初始化为0 ... 在初始化之后每一次读取计数器都会自增 之后左移 计数器值 ...
高级语言伪代码就是 ...
bool isLocked = TRUE ; 数据流锁
uint Counter4016 = 0 ; 移位计数器
UINT InputData ; 输入数据 可以来自 IDirectInput8 也可以来自Win消息回调
BYTE ReadAddr4016 () {
if(isLocked == TRUE)
return 0 ; 如被锁定什么也读不到 直接返回一个无意义的值
else {
return (InputData >> Counter4016) & 1
++Counter4016 ; 每次读取后自增 1 访问下一位数据
}
}
VOID WriteAddr4016(BYTE val){
if(val == 0)
isLocked = FALSE ; 解锁
else (val == 1) {
Counter4016 = 0 ; 初始化计数器 从 第一位开始读取数据流
isLocked = TRUE ; 锁定
}
}
}
$4017 同理
分享到:
相关推荐
NES的游戏开发软件 含教程 想自已做NES游戏朋友的福音//
NES模拟器代码,可用于野火STM32MINI板NES模拟器实验
中国象棋nes
在STM32上制作的NES模拟器,不需要外部RAM,不需要NOR、NAND、SPIflash等,直接使用stm32片上外设。超频至128M后还算基本流畅,能玩一些64K以下的nes游戏,超级玛丽、坦克大战等。
天使之翼2.nes天使之翼2.nes天使之翼2.nes
NES 文件(图1)是 小时候 我们玩的红白机 游戏的 模拟文件 ROM 直接双击是打不开的必须要用 红白机的模拟器才可以打开
超级玛丽nes游戏
426个 nes游戏打包,没有模拟器,是本人辛苦收集的!真的有1407个 nes游戏!!!本人拿人格担保!我收集有可以有重复的,但是不会有很多的!
洛克人5-6nes游戏
坦克大战-怀旧fc.nes
我们将 NES(Nintendo Entertainment System)模拟器移植到我们的 Alientek Worship(v3) stm32f103zet6 开发板上。这是一个超级马里奥兄弟的演示。
这是基于STM32F103ZET6移植的NES游戏框架资料包。 里面包含了: 1. 完整的NES框架移植源码: 包含LCD、游戏手柄、SD卡、FATFS文件系统、VS1053。可以正常从SD卡选择游戏加载,通过手柄玩耍,游戏声音通过VS1053播放。 ...
很好用的NES 日产技术标准规格M01412011-NNES 日产技术标准规格M01412011-NNES 日产技术标准规格M01412011-NNES 日产技术标准规格M01412011-NNES 日产技术标准规格M01412011-NNES 日产技术标准规格M01412011-N
Nbasic语言编译为NES 网上找到的 用于FC游戏制作 NES游戏制作
NES模拟器
快打旋风中文版.nes
该资源包内包含以下文件: mck_0228.zip mckc025.zip dmcconv005.zip mckc-e.txt mkit251_dos.zip 提取教程参照: http://nicotine.knight.blog.163.com/blog/static/26926112200891515239224/
手机nes模拟器(含80个经典游戏)vNesJ2MEvNesJ2ME
讲述了怎么用C来开发NES 游戏,详细讲述了相关的软件,和用途,怎么一步一步的做Nes游戏的开发
修改FC游戏NES文件mapper值的工具 有的FC游戏文件可以在手机上玩但是却无法在电脑上玩或者在电脑上玩却不可以在手机上玩 可以通过这个工具修改就可以了