⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 key.asm.bak

📁 本程序为一语音LCD GAME
💻 BAK
字号:
;--------------------------------- 	  Scan key and set the key flag	
Chkkey:
	LDA     PA
        EOR     #64H	; #4CH
	AND	#64H	;#4CH
	STA	KeyValue1		; new PA
	LDA	KeyValue2		; old PA
	STA	KeyTemp
	CMP	KeyValue1	
	BEQ	Check
	LDA	KeyValue1		; if no equal, key act
	STA	KeyValue2
	EOR	KeyTemp
	BEQ	Check
	STA	KeyValue
        LDA     #10			; KeyCNT=10, Debounce time = 10*2 = 20ms
        STHN    KeyCNT
	SETB	fKEYDeb	
	
Check:
	JNB	fKEYDeb,CheckKeyEnd
	DECHN	KeyCNT
	BNE	CheckKeyEnd
	CLRB	fKEYDeb		
        LDA     PA
        EOR     #64H
	AND	#64h		;4CH
	AND	KeyValue
	CMP	KeyValue
	BNE	NoKey
	
CheckKeyEnd1:
	SETB	B_HavKey
        CAJE	KeyValue,#04H,KEY_N1
        CAJE	KeyValue,#20H,KEY_N2
        CAJE	KeyValue,#40H,KEY_N3
        CLRB	B_HavKey	
CheckKeyEnd:
NoKey
	RTS		
KEY_N1:
	SETB	B_KeyMoveLeft
	RTS
KEY_N2:
	SETB	B_KeyMoveRight
        RTS
KEY_N3:
	SETB	B_KeyFire
        RTS
;----------------------------------
ChkSocRow3Lcd		;Gm2 CLear up wolf flag,1 up lvl,clr socro3
	CLRB	B_ChkSocRow3
	JB	B_Gm2Flag,CheckArrowRow3Lcd_			;KeyFunEXIT
	BBS1	R_Wolf1Pig2Move,KeyFun23
	BBS0	R_Wolf1Pig2Move,KeyFun22
;	JMP	KeyFun21
KeyFun21
	BBR0	SocRow3,KeyFunEND
	DEC	R_SocCnt
	BNE	KeyFun21C
	SETB	B_UpLevel
KeyFun21C
	LDA	SocRow3
	AND	#11111110B
KeyFunCom	
	STA	SocRow3
	SETB	B_FlashSocDisp
	SETB	B_FlashDisp
	RTS
CheckArrowRow3Lcd_
	JMP	CheckArrowRow3Lcd
KeyFun22
	BBR1	SocRow3,KeyFunEND
	DEC	R_SocCnt
	BNE	KeyFun22C
	SETB	B_UpLevel
KeyFun22C
	LDA	SocRow3
	AND	#11111101B
	JMP	KeyFunCom
KeyFun23
	BBR2	SocRow3,KeyFunEND
	DEC	R_SocCnt
	BNE	KeyFun23C
	SETB	B_UpLevel
KeyFun23C
	LDA	SocRow3
	AND	#11111011B
	JMP	KeyFunCom
KeyFunEND
	RTS

;----------------------------------
KeyFunction:
	JNB	B_KeyMoveLeft,L_KeyMoveRight
	CLRB	B_KeyMoveLeft
	LDA	#00H
	STA	R_TmCnt1Min
	STA	R_TmCnt1Min+1
	JB	B_DemoFlag,DemoSltRout1_
	LDA	#01h
	JSR	PlaySound
	CLRB	B_HavKey
	LDA	R_Wolf1Pig2Move
	BEQ	ChkSocRow3Lcd		;Gm2 CLear up wolf flag,1 up lvl,clr socro3
	DEC	R_Wolf1Pig2Move
	SETB	B_FlashWolfDisp
	SETB	B_FlashDisp
	JMP	ChkSocRow3Lcd		;Gm2 CLear up wolf flag,1 up lvl,clr socro3

L_KeyMoveRight:
	JNB	B_KeyMoveRight,L_KeyFire
	clrb	B_KeyMoveRight
	LDA	#00H
	STA	R_TmCnt1Min
	STA	R_TmCnt1Min+1
	JB	B_DemoFlag,DemoSltRout2_
	LDA	#01h
	JSR	PlaySound
	BBS1	R_Wolf1Pig2Move,ChkSocRow3Lcd	;Gm2 CLear up wolf flag,1 up lvl,clr socro3
	INC	R_Wolf1Pig2Move
	SETB	B_FlashWolfDisp
	SETB	B_FlashDisp
	JMP	ChkSocRow3Lcd		;Gm2 CLear up wolf flag,1 up lvl,clr socro3
DemoSltRout1_
	JMP	DemoSltRout1
DemoSltRout2_
	JMP	DemoSltRout2
L_KeyFire:
	JNB	B_KeyFire,KeyFunEND
	CLRB	B_KeyFire
	LDA	#00H
	STA	R_TmCnt1Min
	STA	R_TmCnt1Min+1
	JB	B_DemoFlag,ClrDemoFlag
	JNB	B_Gm2Flag,KeyFunEND
	LDA	#G2_KeyFire
	JSR	PlaySound
	BBS1	R_Wolf1Pig2Move,Set_SocRow32
	BBS0	R_Wolf1Pig2Move,Set_SocRow31
Set_SocRow30
	SETB	B_SocRow30
;	LDA	#0
;	STA	R_TMCnt_1500ms
	SETB	B_FlashSocDisp
	SETB	B_FlashDisp
	CLRB	B_HavKey
	RTS
ClrDemoFlag
	JNB	B_Gm2Flag,L_GAME1_Init
	LDA	#G2_Start
	JSR	PlaySound
	JMP	ClrDemoFlagC
L_GAME1_Init
	LDA	#00H
	JSR	PlaySound
ClrDemoFlagC
	CLRB	B_DemoFlag
	CLRB	B_GmOvFlag
	CLRB	B_UpLevel
	SETB	B_MainInitF
	RTS
Set_SocRow32
	SETB	B_SocRow32
;	LDA	#0
;	STA	R_TMCnt_1500ms
	SETB	B_FlashSocDisp
	SETB	B_FlashDisp
	RTS
Set_SocRow31
	SETB	B_SocRow31
;	LDA	#0
;	STA	R_TMCnt_1500ms
	SETB	B_FlashSocDisp
	SETB	B_FlashDisp
	RTS

Gm2DemoRt
	BBS1	R_Wolf1Pig2Move,ChkGm2Fun3
	BBS0	R_Wolf1Pig2Move,ChkGm2Fun2
	JMP	ChkGm2Fun1
ChkGm2Fun3
	SETB	B_ChkSocRow3
	BBS2	SocRow1,WolfLeft1
	BBS2	SocRow2,WolfLeft1
	BBS2	SocRow3,WolfLeft1
	
;	BBS2	R_Pig1Wolf2Move,Set_SocRow32
	
	JMP	Set_SocRow32
ChkGm2Fun2
	SETB	B_ChkSocRow3
	BBS1	SocRow1,JudgeMov
	BBS1	SocRow2,JudgeMov
	BBS1	SocRow3,JudgeMov
	
;	BBS1	R_Pig1Wolf2Move,Set_SocRow31
	
;	BBS2	R_Pig1Wolf2Move,WolfRight1
	JMP	Set_SocRow31
ChkGm2Fun1
	SETB	B_ChkSocRow3
	BBS0	SocRow1,WolfRight1
	BBS0	SocRow2,WolfRight1
	BBS0	SocRow3,WolfRight1
;	BBS0	R_Pig1Wolf2Move,Set_SocRow30
	
	JMP	Set_SocRow30
JudgeMov:
	BBS2	R_Pig1Wolf2Move,WolfRight1
	BBS0	R_Pig1Wolf2Move,WolfLeft1
	RTS
;============================================================================================
DemoSltRout1
	JNB	B_Gm2Flag,KeyFunEXIT
;	LDA	#01h
;	JSR	PlaySound
	CLRB	B_Gm2Flag
	SETB	B_DemoInitF
	RTS
DemoSltRout2
	JB	B_Gm2Flag,KeyFunEXIT
;	LDA	#01h
;	JSR	PlaySound
	SETB	B_Gm2Flag
	SETB	B_DemoInitF
	RTS

ChkDemoMode:
	CLRB	B_ChkDemoMode
	JB	B_Gm2Flag,Gm2DemoRt
	BBS1	R_Wolf1Pig2Move,ChkFun3
	BBS0	R_Wolf1Pig2Move,ChkFun2
	JMP	ChkFun1
ChkFun3
	BBR2	SocRow3,WolfLeft1
;	SETB	B_ChkSocRow3
	RTS
ChkFun2
	BBs1	SocRow3,KeyFunEXIT
	LDA	R_Buffer
	AND	#00000111B
	CMP	#4
	BCC	WolfRight1
;	CMP	#3
;	BEQ	WolfLeft1
;	CMP	#6
;	BEQ	WolfRight1
;	CMP	#0
;	BEQ	WolfLeft1
	BBS2	SocRow3,WolfRight1
	BBS0	SocRow3,WolfLeft1
;;	SETB	B_ChkSocRow3
	JMP	WolfLeft1
;	RTS
ChkFun1
	BBR0	SocRow3,WolfRight1
;	SETB	B_ChkSocRow3
	RTS
WolfRight1
	BBS1	R_Wolf1Pig2Move,KeyFunEXIT
	INC	R_Wolf1Pig2Move
	SETB	B_FlashWolfDisp
	SETB	B_FlashDisp
KeyFunEXIT
	RTS
WolfLeft1
	LDA	R_Wolf1Pig2Move
	BEQ	KeyFunEXIT
	DEC	R_Wolf1Pig2Move
	SETB	B_FlashWolfDisp
	SETB	B_FlashDisp
	RTS
	
;============================================================================================	
CheckArrowRow3Lcd				;CLear up wolf flag
	BBR3	LCD_10+1,KeyGm2Fun22		;Left UP
	RMB3	LCD_10+1
	RMB0	R_Pig1Wolf2Move
	RMB3	LCD_00+1
	DEC	R_SocCnt
	BNE	KeyGm2Fun21C
	SETB	B_UpLevel
KeyGm2Fun21C
;KeyGm2FunCom
;	JB	B_DemoFlag,KeyFunEXIT
	RTS
KeyGm2Fun22					;Middle UP
	BBR0	LCD_20+1,KeyGm2Fun23
	RMB0	LCD_20+1
	RMB1	R_Pig1Wolf2Move
	RMB1	LCD_10+1
	DEC	R_SocCnt
	BNE	KeyGm2Fun22C
	SETB	B_UpLevel
KeyGm2Fun22C
	RTS
;	JMP	KeyGm2FunCom
KeyGm2Fun23					;Right UP
	BBR6	LCD_20,KeyFunEXIT
	RMB6	LCD_20
	RMB2	R_Pig1Wolf2Move
	RMB6	LCD_10
	DEC	R_SocCnt
	BNE	KeyGm2Fun23C
	SETB	B_UpLevel
KeyGm2Fun23C
	RTS
;	JMP	KeyGm2FunCom

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -