📄 cs5382b.asm
字号:
;================================================================
L_GameFail ;UNnormal state
SETB B_GmOvFlag
LDA #G2_Over
JB B_Gm2Flag,L_G2Over
LDA #06H
L_G2Over:
JSR PlaySound
SETB B_FlashGmDisp
JB B_Gm2Flag,SkipNxt
SMB1 LCD_20+2
SkipNxt
SMB5 LCD_10+1
SMB5 LCD_20+1
JSR Wait500MS
RMB5 LCD_10+1
RMB5 LCD_20+1
JSR Wait500MS
SMB5 LCD_10+1
SMB5 LCD_20+1
JSR Wait500MS
RMB5 LCD_20+1
RMB5 LCD_10+1
JSR Wait500MS
SMB5 LCD_20+1
SMB5 LCD_10+1
JSR Wait500MS
RMB5 LCD_20+1
RMB5 LCD_10+1
JSR Wait500MS
SMB5 LCD_20+1
SMB5 LCD_10+1
JSR Wait500MS
RMB5 LCD_20+1
RMB5 LCD_10+1
JSR Wait500MS
SMB5 LCD_20+1
SMB5 LCD_10+1
JSR Wait500MS
RMB5 LCD_20+1
RMB5 LCD_10+1
JSR Wait500MS
SMB5 LCD_20+1
SMB5 LCD_10+1
JSR Wait500MS
RMB5 LCD_20+1
RMB5 LCD_10+1
JSR Wait500MS
SETB B_FlashDisp
JMP DemoIni
;---------------------------------------
L_GameWin_
JMP L_GameWin
;========================================================================
L_UpLevel: ;and judge whether up level or not
CLRB B_UpLevel
CLRB B_NormState
LDA R_Level
CMP #04h
BCS L_GameWin_
INC R_Level
LDA #00H
STA R_TMCnt_1500ms
LDA R_Level
CMP #02H
BEQ L_Lev2SocNum
CMP #03H
BEQ L_Lev3SocNum
CMP #04H
BEQ L_Lev4SocNum
L_Lev2SocNum:
LDA #15
STA R_SocCnt
JB B_Gm2Flag,SndGm2Lev2TmCt
LDA #14
STA LevelTmCnt2
LDA #30
STA LevelTmCnt ;50,40,30,20, 75,50,36,25
JMP L_UpLevelC
SndGm2Lev2TmCt
LDA #24
STA LevelTmCnt ;40,30,24,20
JMP L_UpLevelC
L_Lev3SocNum:
LDA #25
STA R_SocCnt
JB B_Gm2Flag,SndGm2Lev3TmCt
LDA #10
STA LevelTmCnt2
LDA #24
STA LevelTmCnt ;75,50,36,25
JMP L_UpLevelC
SndGm2Lev3TmCt
LDA #20
STA LevelTmCnt ;40,30,24,20
JMP L_UpLevelC
L_Lev4SocNum:
LDA #40
STA R_SocCnt
JB B_Gm2Flag,SndGm2Lev4TmCt
LDA #8
STA LevelTmCnt2
LDA #20
STA LevelTmCnt ;75,30,24,20
JMP L_UpLevelC
SndGm2Lev4TmCt
LDA #18
STA LevelTmCnt ;40,30,24,20
L_UpLevelC
SETB B_FlashLevelDisp
LDA #0H
STA SocRow1
STA SocRow2
STA SocRow3
SETB B_FlashSocDisp
SETB B_FlashDisp
JSR DispLcdRout
cli
LDA #G2_UpLevel
JB B_Gm2Flag,L_G2LevelUp
LDA #04H
L_G2LevelUp:
JSR PlaySound
JSR UpLevelPlay
JSR UpLevelPlay
LDA #0
STA R_Pig1Wolf2Move
SETB B_FlashWolfDisp
SETB B_NormState
; SETB B_FlashDisp
RTS ;JMP MAIN
;==============================================================
L_GameWin:
LDA #G2_Win
JB B_Gm2Flag,L_G2GameWin
LDA #5
L_G2GameWin:
JSR PlaySound
JSR AllLcdOn
LDA #00H
STA R_TmCnt1Min
STA R_TmCnt1Min+1
clrb B_Sleep
clrb B_HavKey
JSR F_Check1Min
JSR Wait500MS
JSR AllLcdOff
JSR Wait500MS
JSR AllLcdOn
JSR Wait500MS
JSR AllLcdOff
JSR Wait500MS
JSR AllLcdOn
JSR Wait500MS
JSR AllLcdOff
JSR Wait500MS
JSR AllLcdOn
JSR Wait500MS
JSR AllLcdOff
JSR Wait500MS
JSR AllLcdOn
JSR Wait500MS
JSR AllLcdOff
JSR Wait500MS
JSR AllLcdOn
JSR Wait500MS
; JB B_Sleep,L_Sleep
; JNB B_HavKey,L_NoKey
; JMP L_GameComplete
; JMP MAIN
JMP DemoIni
;=========================================================================
L_Sleep:
CLRB B_Sleep
LDA #00H
STA IER
EN_KEY_IRQ
JSR AllLcdOff
LCD_OFF
PWM_OFF
Fcpu_Fsys
NOP
Fext_OFF
NOP
STA HALT
NOP
NOP
NOP
Fext_ON
NOP
Fcpu_Fsys
NOP
LCD_ON
JMP Start
;-------------------------------
.INCLUDE lcd.asm
.INCLUDE sound.asm
.INCLUDE key.asm
;--------------------------------
;;=========================================================================
Wait500MS
LDA #00H
STA R_TMCnt_1500ms2
Wait500MSC:
JSR F_UpDataSound
LDA R_TMCnt_1500ms2
CMP #42
BCC Wait500MSC
RTS
;-----------------------------------------------------
ProRandPigWolf
; INC R_Buffer
; LDA R_Buffer
; CMP #9
; BCC ProRandPigWolf1
; LDA #0
; STA R_Buffer
;ProRandPigWolf1
LDA R_Random
AND #00000011B
CLC
BNE ProRandPigWolf2
SEC
ProRandPigWolf2
ROL R_Random
RTS
;-------------------------------------------------------
UpLevelPlay
RMB5 LCD_20
RMB5 LCD_10
RMB5 LCD_00
RMB4 LCD_00
JSR Wait500MS
SETB B_FlashLevelDisp
SETB B_FlashDisp
JSR DispLcdRout
JSR Wait500MS
RTS
;-------------------------------------------------------
F_Check1Min:
LDA R_TmCnt1Min+1
CMP #09H
BEQ L_NextByte
RTS
L_NextByte:
LDA R_TmCnt1Min
CMP #0F6H
BCS L_To_Sleep
RTS
L_To_Sleep:
SETB B_Sleep
RTS
;============================================================================================
;;//---------------------------------------------------------------
IRQ:
PHA
LDA IER
AND IFR
sta IFR
bbs4 IFR,paIrq
bbs2 IFR,tmr1Irq
bbs6 IFR,LcdIrq
bbs1 IFR,tmr0Irq
PLA
RTI
;;//---------------------------------------------------------------
;;//---------------------------------------------------------------
paIrq:
CLR_KEY_IRQ_FLAG
paIExt:
PLA
RTI
tmr1Irq:
CLR_TMR1_IRQ_FLAG
INC R_TMCnt
PLA
RTI
;;//---------------------------------------------------------------
;;//---------------------------------------------------------------
tmr0Irq:
CLR_TMR0_IRQ_FLAG
lda PCD
eor #00110000b
sta PCD
tmr0IrqX:
PLA
RTI
;//---------------------------------------------------------------
RestoreTMCnt
SETB B_UpDtWolf2
RestoreTMCnt1
JNB B_DemoFlag,RestoreTMCnt2
LDA #38
STA R_TMCnt
RTS
;//---------------------------------------------------------------
RestoreTMCnt2
LDA R_Level
CMP #01H
BEQ L_Lev1TMCnt
CMP #02H
BEQ L_Lev2TMCnt
CMP #03H
BEQ L_Lev3TMCnt
LDA #24
STA R_TMCnt
RTS
;-----------------------------
L_Lev1TMCnt:
LDA #63
STA R_TMCnt
RTS
L_Lev2TMCnt:
LDA #51
STA R_TMCnt
RTS
L_Lev3TMCnt:
LDA #38
STA R_TMCnt
RTS
;;//---------------------------------------------------------------
;;//---------------------------------------------------------------
LcdIrq:
CLR_LCD_IRQ_FLAG
; INC R_Buffer
INCW R_TmCnt1Min
JNB B_Gm2Flag,G1State
DEC R_TMCnt
BNE G1State
JSR RestoreTMCnt
G1State
INC R_TMCnt_1500ms2
INC R_TMCnt_1500ms
JNB B_NormState,extIrq
JB B_Gm2Flag,G1State2
LDA R_TMCnt_1500ms
CMP LevelTmCnt2
BNE G1State2
setb B_UpDtPigGm1
; LDA LevelTmCnt
; SBC #15
; CMP R_TMCnt_1500ms
; BNE G1State2
; setb B_UpDtPigGm1
G1State2
JNB B_DemoFlag,NOTdemoSta
LDA R_TMCnt_1500ms ;Demo mode
; CMP #6
; BEQ LCDIrq2
CMP #8
BEQ LCDIrq2
CMP #18
BEQ Do25hzRoutX
; CMP #18
; BEQ LCDIrq2
; CMP #18
; BEQ LCDIrq2
JMP LCDIrq3
LCDIrq2
SETB B_ChkDemoMode ;gm1,wolf move
LCDIrq3
LDA R_TMCnt_1500ms
JMP Do25hzRout0
NOTdemoSta
LDA R_TMCnt_1500ms
CMP #10
BNE Do25hzRout0
Do25hzRoutX
SETB B_ChkSocRow3
Do25hzRout0
CMP LevelTmCnt
BCC Do25hzRout
SETB B_UpDtSocArrow
LDA #00H
STA R_TMCnt_1500ms
Do25hzRout:
JNB B_25hzF,Do25hzRoutC
CLRB B_25hzF
JSR DispLcdRout
JMP extIrq
Do25hzRoutC
SETB B_25hzF
extIrq:
lcdIrqX:
PLA
RTI
;;//---------------------------------------------------------------
;;//---------------------------------------------------------------
;;//---------------------------------------------------------------
;============================================================================================
;============================================================================================
ORG FFF8H
DB 80H ; RST(FFF8.7)=0, PA3 used as Quick Edge trigger Reset
; RST(FFF8.7)=1, PA3 used as I/O
db 01H ; FFF9.0=1, POR sensitivity
;;//---------------------------------------------------------------
ORG FFFCH
DW Start
DW IRQ
;-------------------------------------
.ENDS
.END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -