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

📄 guess.asm

📁 我写的一个关于猜数字的小游戏
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	cmp		mGuessDrawNum2
	beq		?exit	
	cmp		mGuessDrawNum3
	beq		?exit	
	jsr		GuessDrawNum
	stz		mGuessStep
 	jsr		GuessDrawEnter
; 	lda		mGuessStepNum
; 	inc
; 	inc		mGuessStepNum
; 	cmp		#08
; 	beq		?over
 	bra		?exit
?exit2
	bra		?exit
?one
	jsr		WordCloseCursor
	jsr		GuessClearCursorRec
	jsr		WordOpenCursor
	lda		mGuessDrawNum
	sta		mGuessDrawNum1
	jsr		GuessDrawNum
	inc		mGuessStep
	bra		?exit	
?two
	jsr		WordCloseCursor
	jsr		WordOpenCursor
	lda		mGuessDrawNum
	sta		mGuessDrawNum2
	cmp		mGuessDrawNum1
	beq		?exit
	jsr		GuessDrawNum
	inc		mGuessStep
	bra		?exit	
?three
	jsr		WordCloseCursor
	jsr		WordOpenCursor
	lda		mGuessDrawNum
	sta		mGuessDrawNum3
	cmp		mGuessDrawNum1
	beq		?exit
	cmp		mGuessDrawNum2
	beq		?exit		
	jsr		GuessDrawNum
	inc		mGuessStep
	bra		?exit
;?over
?exit 	
 	rts	 	
;============================================================================== 
; Function:		GuessDrawNum ;
; Input:   		none	; 
 ;Output:		none	; 
;Description:	
;==============================================================================
DRAW_NUM_POINT:
		db	23H,32H,41H,50H
GuessDrawNum:
	phx
	ldx		mGuessStep
	lda		DRAW_NUM_POINT,x
	sta		mDstLocX
	lda		#35
	sta		mDstLocY
	lda		mGuessDrawNum
	sta		mCharCode1
	stz		mCharCode2
	jsr		GuessDrawChar
	plx
 	rts	 
;============================================================================== 
; Function:		GuessDrawEnter ;
; Input:   		none	; 
 ;Output:		none	; 
;Description:	
;==============================================================================
GuessDrawEnter:
	jsr		GuessGetWholeRight
	jsr		GuessGetHalfRight
	jsr		GuessDrawEnterNum
	jsr		GuessDrawEnterAns
 	inc		mGuessStepNum	
	lda		mGuessWholeRight
	cmp		#34H
	beq		?win
	lda		mGuessStepNum
	cmp		#8
	beq		?lose
	bra		?exit
?win
	jsr		GuessGameWin
	bra		?exit
?lose
	jsr		GuessGameLose		
?exit	
 	rts
DRAW_ENTER_POINTX:
		db	65H,75H,84H,93H
DRAW_ENTER_POINTX1:
		db	AEH,BDH,CCH,DBH		
DRAW_ENTER_POINTY:
		db	20H,2DH,3AH,47H,54H,61H,6EH,7BH
GuessDrawEnterNum:
	phx
	phy
	ldx		#0
?retry
	ldy		mGuessStepNum
	lda		DRAW_ENTER_POINTX,x
	sta		mDstLocX
	lda		DRAW_ENTER_POINTY,y
	sta		mDstLocY
	lda		mGuessDrawNum1,x
	sta		mCharCode1
	stz		mCharCode2
	jsr		GuessDrawChar
	inx
	cpx		#04
	bne		?retry
	ply
	plx
 	rts	  	
GuessDrawEnterAns:
	phx
	phy	
	lda		#65
	sta		mGuessCharA
	lda		#66
	sta		mGuessCharB
	ldx		#0
?retry
	ldy		mGuessStepNum
	lda		DRAW_ENTER_POINTX1,x
	sta		mDstLocX
	lda		DRAW_ENTER_POINTY,y
	sta		mDstLocY
	lda		mGuessWholeRight,x
	sta		mCharCode1
	stz		mCharCode2
	jsr		GuessDrawChar
	inx
	cpx		#04
	bne		?retry
	ply
	plx
 	rts	  	
GuessGameWin:
	lda	  mDcROP2
	pha
	PHA_DRR
	SwitchDRR		DATA_BANK0 
	ShowMsgBox	#<DATA_BANK0,#>DATA_BANK0,#<GUESSANSWERRIGHTSTR,#>GUESSANSWERRIGHTSTR
	PLA_DRR
	pla
   	sta	  mDcROP2
   	rts		
GuessGameLose:
		lda	  mDcROP2
	pha
	PHA_DRR
	SwitchDRR		DATA_BANK0   
	ShowMsgBox	#<DATA_BANK0,#>DATA_BANK0,#<GUESSANSWERERROR,#>GUESSANSWERERROR
	PLA_DRR
	pla
	sta	  mDcROP2
	rts	 
 GuessClearCursorRec:
	lda			#35
	sta			mDstLocX
	sta			mDstLocY
	lda			#9
	sta			mDcHeight
	lda			#51
	sta			mDcWidth
	CallAPI LCD_ClearRect,0 		
	rts      	
;============================================================================== 
; Function:		GuessCursor ;
; Input:   		none	; 
 ;Output:		none	; 
;Description:	
;==============================================================================
GuessCursor:
	lda	mMsgLParL
	cmp	#TIMER_HALFSEC					;半秒一闪
	bne	?exit
	jsr	GuessDrawCursor
?exit
	rts  	
;============================================================================== 
; Function:		GuessDrawCursor ;
; Input:   		none	; 
 ;Output:		none	; 
;Description:	
;==============================================================================
GuessDrawCursor:
	phx
	ldx		mGuessStep
	lda		DRAW_NUM_POINT,x
	sta	mDstLocX
	lda	#45
	sta	mDstLocY
	lda	#3
	sta	mDcHeight
	lda	#7
	sta	mDcWidth

	CallAPI	LCD_InvertRect,0
	
	lda	mGuessCurFlag
	clc	
	adc	#128
	sta	mGuessCurFlag
	plx
	rts  		

WordCloseCursorSub:
	phx
	ldx		mGuessStep
	lda		DRAW_NUM_POINT,x
	sta	mDstLocX
	lda	#45
	sta	mDstLocY
	lda	#3
	sta	mDcHeight
	lda	#7
	sta	mDcWidth

	CallAPI	LCD_InvertRect,0
	
	plx
	rts  		
	
WordCloseCursor:
	lda	mGuessCurFlag
	beq	?exit
	jsr	WordCloseCursorSub
	stz	mGuessCurFlag
?exit
	rts

WordOpenCursor:
	stz	mGuessCurFlag
	jsr	GuessCursor
	rts	
;============================================================================== 
; Function:		GuessLimitTime ;
; Input:   		none	; 
 ;Output:		none	; 
;Description:	限定时间处理
;==============================================================================
GuessLimitTime:
	lda		mMsgLParL
	cmp		#TIMER_ONESEC
	bne		?exit
	lda		mGuessLimTime
	beq		?exit
	dec		mGuessLimTime
	jsr		GuessDrawLimTime
?exit	
	rts
GuessDrawLimTime:
	lda		#48
	sta		mDstLocX
	lda		#60
	sta		mDstLocY
	lda		mGuessLimTime
	sta		<mzTmpRegAL
	stz		<mzTmpRegAH
	lda		#3
	sta		<mzTmpRegB
	jsr		P24UIntToStr
	jsr		GuessDrawString
	rts
P24UIntToStr:
	lda		<mzRegAL
	pha
	lda		<mzRegAH
	pha
	lda		#<mTmpStr
	sta		<mzAddrL
	lda		#>mTmpStr
	sta		<mzAddrH
	lda		<mzTmpRegAL
	sta		<mzRegAL
	lda		<mzTmpRegAH
	sta		<mzRegAH
	lda		<mzTmpRegB
	CallAPI	LIB_UIntToStr,0
	sta		<mzTmpRegX
?exit
	pla
	sta		<mzRegAH
	pla
	sta		<mzRegAL
	lda		<mzTmpRegX
	rts
;============================================================================== 
; Function:		GuessUserTimerPaint ;
; Input:   		none	; 
 ;Output:		none	; 
;Description:	自定义时间修改图形位置
;==============================================================================
GuessUserTimerPaint:
	lda			mMsgLParL
	cmp			#TIMER_USER
	bne			?exit
	lda			mMsgRPar
	and			mGuessPaintTimer
	beq			?exit
	lda			mGuessPicLocY
	cmp			#120
	bcs			?destroy
	lda			mGuessPicLocY
	clc
	adc			#20
	sta			mGuessPicLocY		
	jsr			GuessDrawSmaPic
	bra			?exit
?destroy
	lda			mGuessPaintTimer
    CallAPI SYS_DestroyUserTimer,0	
?exit	
	rts
GuessCreatPaintTimer:
	lda			#200
	CallAPI SYS_CreateUserTimer,0	
	sta			mGuessPaintTimer
	rts
;============================================================================== 
; Function:		GuessDrawNFAImage ;
; Input:   		none	; 
 ;Output:		none	; 
;Description:	画图
;==============================================================================
GuessDrawNFAImage:
	pha
	PHA_DRR

	CallAPI	NFLASH_StartByteRead,0
	lda		#<GAMEIMG_ADDR
	sta		mNFAAddr1
	lda		#>GAMEIMG_ADDR
	sta		mNFAAddr2
	stz		mNFAAddr3
	stz		mNFAAddr4
	CallAPI	    NFLASH_SetAddr,0
	CallAPI		NFLASH_ByteRead,0
	
	pha		
	CallAPI		NFLASH_ByteRead,0
	pha
	CallAPI		NFLASH_ByteRead,0
	pha
	CallAPI		NFLASH_ByteRead,0
	pha
	
	pla
	sta		mImgBankH
	pla
	sta		mImgBankL
	pla
	sta		mImgAddrH
	pla
	sta		mImgAddrL
	CallAPI	NFLASH_EndByteRead,0
	txa
	CallJSR Sys_DrawImageNFByID
	PLA_DRR
	pla
	rts
GuessDrawSmaPic:
	lda		#<BM301_IMG_P24_THINK_ICO
	sta		mImgAddrL
	lda		#>BM301_IMG_P24_THINK_ICO
	sta		mImgAddrH
	lda		#10
	sta		mDstLocX
	lda		mGuessPicLocY
	sta		mDstLocY
	lda		#<DATA_BANK0
	sta		mImgBankL
	lda		#>DATA_BANK0
	sta		mImgBankH
	CallAPI	LCD_DrawImage,0
	rts	
;============================================================================== 
; Function:		GuessDrawChar ;
; Input:   		none	; 
 ;Output:		none	; 
;Description:	
;==============================================================================
GuessDrawChar:
  CallAPI		LCD_DrawChar12,0
 	rts	 	
GuessDrawString:
	CallAPI LCD_DrawFont12String,0 
	rts
;******************************************************************************
;*Data Bank #0
;******************************************************************************
DS0_BANK	.SECTION		;Data Bank 0;
GUESSANSWERRIGHTSTR:
	db   " GOOD!",0AH
	db    "你好厉害呀!",0
GUESSANSWERERROR:
	db   "就差一点了!",0AH
	db	"继续努力吧",0
GUESS_NAME:
	db	 "猜数字    你只有三分钟的时间!",0
BM301_IMG_P24_THINK_ICO: 	db	6DH,6AH,19,14
							db	10H,02H,00H,09H,E4H,00H,03H,30H
							db	00H,06H,18H,00H,04H,08H,00H,15H
							db	2BH,00H,06H,D8H,00H,02H,50H,00H
							db	03H,70H,00H,09H,24H,00H,11H,E2H
							db	00H,01H,20H,00H,01H,E0H,00H,00H
							db	C0H,00H	
;*******************************************************************************
.END	

⌨️ 快捷键说明

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