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文件。你应该理解所有这些必要的内容。

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

【今日回顾】

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

目录
相关文章
|
10月前
|
人工智能 安全 JavaScript
模拟“嫦娥五号”探月小游戏【附源码】
在实际的探月过程中,这些操作都是由程序精确测量和控制的。而在这个游戏里,则需要玩家手动完成 降落 和 上升对接 这两个操作。
|
5月前
|
C# 图形学
【Unity】2D游戏-愤怒的小鸟教学实战(附源码和实现步骤 超详细)
【Unity】2D游戏-愤怒的小鸟教学实战(附源码和实现步骤 超详细)
187 1
|
5月前
|
容器
塔防游戏开发实战教程(1):实现防守塔,添加敌人的路径点
塔防游戏开发实战教程(1):实现防守塔,添加敌人的路径点
44 0
塔防游戏开发实战教程(1):实现防守塔,添加敌人的路径点
|
7月前
|
存储
星际争霸之小霸王之小蜜蜂(八)--蓝皮鼠和大脸猫
星际争霸之小霸王之小蜜蜂(八)--蓝皮鼠和大脸猫
|
9月前
|
算法 C语言 C++
c++游戏制作指南(三):c++剧情类文字游戏的制作
c++游戏制作指南(三):c++剧情类文字游戏的制作
532 0
|
12月前
|
Python
通过游戏学Python系列之小兔要上天---手把手教你使用Pygame开发平台跳跃类游戏02之物体运动
通过游戏学Python系列之小兔要上天---手把手教你使用Pygame开发平台跳跃类游戏02之物体运动
92 0
【“玩物立志”-scratch少儿编程】迷宫游戏-图片素材
【“玩物立志”-scratch少儿编程】迷宫游戏-图片素材
189 0
【“玩物立志”-scratch少儿编程】迷宫游戏-图片素材
|
弹性计算 前端开发 IDE
回忆杀!自制虚拟钢琴串烧童年经典动漫歌曲,你听过几首?
六一快乐 ! 大龄儿童如何正确过节?还只会卖萌 p 图抄文案? 快来学会这个儿童节必杀技!!制作一个虚拟的网页版的钢琴,一边弹着琴一边和大家一起在耳熟能详的歌曲中回味童年的快乐,要做就做最酷最炫的才艺小天才~
883 0
回忆杀!自制虚拟钢琴串烧童年经典动漫歌曲,你听过几首?
|
Java 图形学
java游戏开发杂谈 - 游戏物体
java游戏开发杂谈 - 游戏物体现实生活中,有很多物体,每个物体的长相、行为都不同。 物体存在于不同的空间内,它只在这个空间内发生作用。 物体没用了,空间就把它剔除,不然既占地方,又需要花精力管理。
1172 0

热门文章

最新文章