NESASM教程——第九天——运动的主角

简介:

【啥?】

今天不是教程,更像是前天留的作业的解决方案,即用手柄控制主角运动。我相信我们实际上已经掌握了所有必要的技能。下面给出完整代码。

【代码】

	;;--- 代码开始 ---;;
	.inesprg 1
	.inesmap 0
	.inesmir 1
	.ineschr 1

	.bank 1     
	.org $FFFA
	.dw 0        ; 
	.dw Start    ; 复位向量
	.dw 0        ; 

	.bank 0
	.org $0000
X_Pos   .db 20       ; 主角X坐标
Y_Pos   .db 20       ; 主角Y坐标

	.org $8000  ; 
Start:

	lda #%00001000  ;
	sta $2000       ; 
	lda #%00011110  ; 典型的PPU设置代码
	sta $2001       ; 

	ldx #$00    ; 清零X            ;; 开始载入调色板

	lda #$3F    ; 
	sta $2006   ; 
	lda #$00    ; 
	sta $2006

loadpal:                ; 
	lda tilepal, x  ; 
	sta $2007       ; 
	inx             ; 
	cpx #32         ; 
	bne loadpal     ; 
	                                ;; 载入调色板结束

infinite:  ; 死循环
waitblank:         
	lda $2002  ; 
	bpl waitblank ; 等待VBlank

	lda #$00   ; 开始写SPR-RAM
	sta $2003  ; 
	lda #$00   ; 
	sta $2003  ; 

	lda Y_Pos  ; 
	sta $2004 ; 纵坐标

	lda #$00  ; 
	sta $2004 ; tile编号0

	lda #$00 ; 
	sta $2004 ;

	lda X_Pos  ;
	sta $2004 ; 横坐标
	; 务必注意顺序
	
	lda #$01   ; 
	sta $4016  ;
	lda #$00   ;
	sta $4016  ; 设置/选通手柄

	lda $4016  ; A
	lda $4016  ; B
	lda $4016  ; Select
	lda $4016  ; Start
	lda $4016  ; UP
	and #1     ; 
	bne UPKEYdown  ; 
	;如果按下“UP”,跳转到UPKEYdown
	
	lda $4016  ; DOWN 
	and #1     ; 
	bne DOWNKEYdown

	lda $4016  ; LEFT 
	and #1     ; 
	bne LEFTKEYdown

	lda $4016  ; RIGHT 
	and #1     ; 
	bne RIGHTKEYdown
	jmp NOTHINGdown  ; 没有按键按下,跳到NOTHINGdown
	

UPKEYdown:
	lda Y_Pos ; 将Y坐标载入A
	sbc #1  ; 减1
	sta Y_Pos ; 保存
	jmp NOTHINGdown  ; 处理结束

DOWNKEYdown:
	lda Y_Pos 
	adc #1  ; Y坐标加1
	sta Y_Pos
	jmp NOTHINGdown ; 

LEFTKEYdown:
	lda X_Pos
	sbc #1  
	sta X_Pos
	jmp NOTHINGdown 
;左键按下,X坐标减1

RIGHTKEYdown:
	lda X_Pos
	adc #1
	sta X_Pos
	; 右键按下,X坐标加1

NOTHINGdown:
	jmp infinite

tilepal:   .incbin "our.pal"  ; 

	.bank 2
	.org $0000
	.incbin "our.bkg"
	.incbin "our.spr"

;;--- 代码结束 ---;;

希望你还保存着第五天的our.pal, our.bkg, our.spr文件。你应该理解所有这些必要的内容。

注意:在一些模拟器上你可能得按下好几次按钮,主角才出现。我不知道为啥。

【今日回顾】

感谢那些发给我运动主角代码的人,至少我知道有人读了我的教程。

目录
相关文章
|
1月前
|
数据可视化 JavaScript 图形学
Threejs实现音乐节奏表演
这篇文章详细介绍了如何使用Three.js结合音频频谱分析来创建一个随着音乐节奏变化的3D视觉表演,提供了实现音乐可视化效果的具体步骤和代码示例。
109 60
Threejs实现音乐节奏表演
|
5月前
|
编译器 API C++
【感受C++的魅力】:用C++演奏歌曲《起风了》——含完整源码
【感受C++的魅力】:用C++演奏歌曲《起风了》——含完整源码
|
4月前
情人节必备,定制520专属智能体有手就行!
情人节必备,定制520专属智能体有手就行!
28 0
|
Python 容器
星际争霸之小霸王之小蜜蜂(六)--让子弹飞
星际争霸之小霸王之小蜜蜂(六)--让子弹飞
星际争霸之小霸王之小蜜蜂(八)--蓝皮鼠和大脸猫
星际争霸之小霸王之小蜜蜂(八)--蓝皮鼠和大脸猫
|
算法 C语言 C++
c++游戏制作指南(三):c++剧情类文字游戏的制作
c++游戏制作指南(三):c++剧情类文字游戏的制作
1059 0
|
Python
通过游戏学Python系列之小兔要上天---手把手教你使用Pygame开发平台跳跃类游戏02之物体运动
通过游戏学Python系列之小兔要上天---手把手教你使用Pygame开发平台跳跃类游戏02之物体运动
123 0
|
Python
通过游戏学Python系列之小兔要上天---手把手教你使用Pygame开发平台跳跃类游戏06之死亡后游戏重新开始
通过游戏学Python系列之小兔要上天---手把手教你使用Pygame开发平台跳跃类游戏06之死亡后游戏重新开始
181 0
|
前端开发 JavaScript
2023跨年烟花(浪漫烟花+美妙音乐+雪花飘飘)含前端源码直接下载---系列最终篇
2023跨年烟花(浪漫烟花+美妙音乐+雪花飘飘)含前端源码直接下载---系列最终篇
473 0
2023跨年烟花(浪漫烟花+美妙音乐+雪花飘飘)含前端源码直接下载---系列最终篇
【“玩物立志”-scratch少儿编程】迷宫游戏-图片素材
【“玩物立志”-scratch少儿编程】迷宫游戏-图片素材
239 0
【“玩物立志”-scratch少儿编程】迷宫游戏-图片素材