📄 guess.asm
字号:
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 + -