NESASM教程——第十二天——VBlank和中断

简介:

【VBlank?】

如果你不知道什么是VBlank, 那么假装我给了你一条鳟鱼;

如果你知道什么是VBlank,那么假装我给了你一条鳟鱼;

如果你不确定一条鳟鱼和NES有什么关系,那么假装我给了你一条鳟鱼;

既然我们房间里有一股想象中的鱼臭味,那么让我们学习更好的方式来与VBlank同步。

【我们怎么用它?】

首先我们有个标签,比如VBlank_Routine,无哦一我们把它放在段1的地址$FFFA处,就像这样:

	.bank 1
	.org $FFFA
	.dw VBlank_Routine ; VBlank中断向量
	.dw Start ; 复位向量
	.dw 0  ; 当BRK指令执行时的中断向量,改天再谈

	.bank 0
	.org $0000  ;保留一个变量VBlankOrNo
VBlankOrNo  .db 0
	.org $8000  ;code
VBlank_Routine:
	;VBlank子程序开始
	inc VBlankOrNo
	; 使变量VBlankOrNo增1
	rti  ; RTI 意思是中断返回 (Interrupt RETurn or ReTurn from Interrupt)

Start:
	;主程序开始
	;
;waitforvblank:  旧代码
;	lda $2002  旧代码
;	bpl waitforvblank 旧代码
;  新代码如下

WaitForVBlank:
	lda VBlankOrNo ; A = VBlankOrNO
	cmp #1         ; if A == 1 说明发生了VBlank
	bne WaitForVBlank ; 没有发生VBlank,循环
	dec VBlankOrNo ; 发生了VBlank,使变量VBlankOrNo减一,变为0

	; 代码如旧

希望你懂了总体思想。

哦对了,别忘了将PPU控制寄存器中的“Generate VBlank Bit"设为1(我记得是bit7,可以复习第三天内容)。

修改后的代码比之前旧的循环更稳定。

晚安~

目录
相关文章
|
存储 负载均衡 安全
分布式文件系统实战,使用MinIO构建分布式文件系统!
随着文件数据的越来越多,传统的文件存储方式通过tomcat或nginx虚拟化的静态资源文件在单一的服务器节点内已经无法满足系统需求,也不利于文件的管理和维护,这就需要一个系统来管理多台计算机节点上的文件数据,这就是分布式文件系统。
6394 0
分布式文件系统实战,使用MinIO构建分布式文件系统!
|
8月前
|
人工智能 自然语言处理 搜索推荐
WritingBench:阿里最新大模型写作能力多维测评工具,开源32B深度思考写作模型
近日,阿里研究团队联合中国人民大学和上海交通大学共同开源了WritingBench ——该评估基准覆盖6大领域、100个细分场景,共包含1239条评测数据,以期为生成式写作提供全面的评估。团队进一步发现,凭借思维链技术和动态评估体系的加持,基于Qwen开发的32B创作模型在创意型任务上表现接近顶尖模型R1,为高效能创作开辟了新路径。
777 5
|
10月前
|
Java
Java快速入门之判断与循环
本文介绍了编程中的流程控制语句,主要包括顺序结构、判断结构(if语句和switch语句)以及循环结构(for、while和do...while)。通过这些语句可以精确控制程序的执行流程。if语句有三种格式,分别用于简单条件判断、二选一判断和多条件判断。switch语句适用于有限个离散值的选择判断,而循环结构则用于重复执行某段代码,其中for循环适合已知次数的情况,while循环适合未知次数但有明确结束条件的情况,do...while则是先执行后判断。文中还提供了多个示例和练习,帮助读者理解并掌握这些重要的编程概念。
|
数据采集 监控 物联网
MQTT协议在智能制造中的应用案例与效益分析
【6月更文挑战第8天】MQTT协议在智能制造中的应用案例与效益分析
564 1
|
机器学习/深度学习 人工智能 算法
图解机器学习 | 朴素贝叶斯算法详解
朴素贝叶斯是一个非常直观的模型。本文讲解朴素贝叶斯算法的核心思想、贝叶斯公式、条件独立假设、平滑出等重要知识点,并图解多项式贝叶斯和伯努利贝叶斯等多种形态。
2370 1
图解机器学习 | 朴素贝叶斯算法详解
|
机器学习/深度学习 算法 Python
CatBoost中级教程:模型解释与调试
CatBoost中级教程:模型解释与调试【2月更文挑战第10天】
850 0
|
小程序 JavaScript Java
医院预约挂号|基于Springboot+vue的医院预约挂号系统小程序的设计与实现(源码+数据库+文档)
医院预约挂号|基于Springboot+vue的医院预约挂号系统小程序的设计与实现(源码+数据库+文档)
617 0
|
存储 缓存 安全
Flutter Dio进阶:使用Flutter Dio拦截器实现高效的API请求管理和身份验证刷新
Flutter Dio进阶:使用Flutter Dio拦截器实现高效的API请求管理和身份验证刷新
1686 0
|
存储 机器学习/深度学习 安全
哪些行业最需要云计算?
【6月更文挑战第22天】哪些行业最需要云计算?
446 5
IDEA 中 project窗口,不显示项目工程目录,解决方法
IDEA 中 project窗口,不显示项目工程目录,解决方法