📄 cs5382b.asm
字号:
CHIP W65C02S
INCLIST ON
MACLIST ON
;-------------------------------------
; Program Start
;-------------------------------------
.include main.h
.include mem.inc
.include main.mac
;============================================================================================
;============================================================================================
.CODE
ORG 0F221H
Start:
.INCLUDE MainIni.asm
SEI
LDA #0 ; RAM initial subroutine
STA <81h
LDA #82h
STA <80h
CLRRam40_1:
LDA #0
STA (80h)
LDA <80h
cmp #(72+80h-1)
BEQ CLRRam40_2
INC <80h
jmp CLRRam40_1
CLRRam40_2:
LDA #0
STA <80h
STA <81h
;LOOP2:
; LDA <80H
; jsr PlaySound
; inc <80h
;LOOP:
; JSR F_UpDataSound
; jb fSounding,LOOP
;
; JMP LOOP2
LDA #0
STA TMR1
TMR1_ON ;2hz
; EN_KEY_IRQ
CLI
LCD_ON
JSR AllLcdOn
CLRB B_NormState
LDA #00H
STA R_TMCnt
EN_TMR1_IRQ
Wait2S:
LDA R_TMCnt
CMP #4
BCC Wait2S
TMR1_OFF
DIS_TMR1_IRQ
LDA #00H
STA R_TMCnt
CLRB B_Gm2Flag ;Gm1
DemoIni:
SEI
_SPToA
LDA #47H ; stack ﹍address
_AToSP
CLI
CLRB B_DemoInitF
SETB B_DemoFlag
SETB B_GmOvFlag
SETB B_FlashGmDisp
JB B_Gm2Flag,Gm2TmFlashF
LDA #10
STA LevelTmCnt2 ;FOR PIG UPDATE
LDA #30
JMP GameTmFlashC
Gm2TmFlashF
LDA #38H
STA R_TMCnt
LDA #20
GameTmFlashC
STA LevelTmCnt ;75,50,36,25
MainInit ;4 level circulating
EN_LCD_IRQ ;DIS_LCD_IRQ
CLRB B_MainInitF
JSR F_GameInit
;42.5hz
; JSR UpLevelPlay
; JSR UpLevelPlay
;============================================================================================
;Demo AND Normal mode
MAIN:
INC R_Buffer
JB B_DemoInitF,DemoIni
JB B_MainInitF,MainInit
JSR ProRandPigWolf
JSR Chkkey
JSR KeyFunction
JSR F_UpDataSound
JSR F_Check1Min
JNB B_UpDtPigGm1,MainRt0
JSR UpDtGm1PigMove
MainRt0
JNB B_UpDtSocArrow,MainRt1
INC R_Buffer
JSR UpDtSocArrow ;gm1 pro pig socro1,lose life and update rowjudg
MainRt1
JNB B_UpDtWolf2,MainRt2
INC R_Buffer
JSR UpDtWolfRt ;Gm2 pro wolf,set up wolf flag lose life,
MainRt2
JNB B_ChkSocRow3,MainRt3
INC R_Buffer
JSR ChkSocRow3Lcd ;Gm2 CLear up wolf flag,1 up lvl,clr socro3
MainRt3
JNB B_Sleep,MainRt4
JMP L_Sleep
MainRt4:
JB B_DemoFlag,MainRt5
JNB B_UpLevel,MainRt5
JSR L_UpLevel
MainRt5:
JNB B_ChkDemoMode,MainRt6
JSR ChkDemoMode
MainRt6
JMP MAIN
;=================================================================
F_GameInit:
CLRB B_FlashDisp
; JSR AllLcdOn
; JSR Wait500MS
JSR AllLcdOff
LDA #0H
STA SocRow1
STA SocRow2
STA SocRow3
SETB B_FlashSocDisp
SETB B_FlashGmDisp
LDA #00H
STA R_TMCnt_1500ms
JB B_DemoFlag,F_GameInit2
JB B_Gm2Flag,SndGm2TmCt
LDA #18
STA LevelTmCnt2
LDA #40
STA LevelTmCnt ;50,40,30,20
JMP F_GameInit2
SndGm2TmCt
LDA #63
STA R_TMCnt
LDA #29
STA LevelTmCnt ;40,30,24,20
F_GameInit2
LDA #0 ;1H
STA R_Pig1Wolf2Move
STA R_Wolf1Pig2Move
SETB B_FlashWolfDisp
LDA #03H
STA R_Life
LDA #01H
STA R_Level
SETB B_FlashLifeDisp
SETB B_FlashLevelDisp
LDA #10
STA R_SocCnt
LDA #10010010B
STA R_Random
SETB B_NormState
SETB B_FlashDisp
JSR DispLcdRout
RTS
;=====================================================================
;Gm2 pro wolf,set up wolf flag lose life,1 pro pig socro1,lose life and update rowjudg
UpDtSocArrow:
CLRB B_UpDtSocArrow
; JSR ProRandPigWolf
JB B_Gm2Flag,UpDtGm2ArrowRt
LDA SocRow3
AND #07H
BNE LoseALife_ ;det while being pro ball
UpDtSocArrow3
; sei
JB B_DemoFlag,UpDtSocArrow3X
LDA #02h
JSR PlaySound
UpDtSocArrow3X
LDA SocRow2
STA SocRow3
LDA SocRow1
STA SocRow2
LDA R_Buffer
AND #00000111B
; CMP #1
; BEQ UpDtSocArrow3A
CMP #3
BEQ UpDtSocArrow3A
LDA R_Pig1Wolf2Move
UpDtSocArrow3B
STA SocRow1
UpDtSocArrow3C
CLI
SETB B_FlashSocDisp
SETB B_FlashDisp
JMP DispLcdRout
UpDtSocArrow3A
LDA #0
JMP UpDtSocArrow3B
;--------------------------
LoseALife_
JMP LoseALife
;-------------------------
;-----------------------------------------------------------------------------
;Gm1 pro pig,about 200ms before update ball,
UpDtGm1PigMove
CLRB B_UpDtPigGm1
LDA R_Pig1Wolf2Move
AND #00000101B
BNE SndMidGm1Pig ;not in middle
LDA R_Buffer
AND #00001111B
CMP #8
BCS SndLftGm1Pig
JMP SndRightGm1Pig
;; BBR0 R_Buffer,SndLftGm1Pig
;; JMP SndRightGm1Pig
; LDA R_Pig1Wolf2Move
; AND #00000111B
; STA R_Buffer2
;
; LDA R_Random
; AND #00000111B
; CMP R_Buffer2
; BNE UpDtSocArrow2
;; LDA R_Random
;; CMP R_Pig1Wolf2Move
;; BNE UpDtSocArrow2
;
; LDA R_Random
; AND #00000011B
; CLC
; BNE UpDtSocArrow1
; SEC
;UpDtSocArrow1
; ROL R_Random
; LDA R_Random
UpDtSocArrow2
STA R_Pig1Wolf2Move
SETB B_FlashWolfDisp
SETB B_FlashDisp
RTS
SndMidGm1Pig
LDA #10010010
JMP UpDtSocArrow2
SndLftGm1Pig
LDA #01001001b
JMP UpDtSocArrow2
SndRightGm1Pig
LDA #00100100
JMP UpDtSocArrow2
;================================================================
UpDtGm2ArrowRt
; JNB B_DemoFlag,UpDtGm2ArrowRtx
; SETB B_UpDtWolf2
;UpDtGm2ArrowRtx
; sei
BBR0 SocRow1,UpDtGm2ArrowRt3
BBR0 R_Pig1Wolf2Move,UpDtGm2ArrowRt3
SMB3 LCD_10+1
JB B_DemoFlag,UpDtGm2ArrowRt3
LDA #G2_HitWolfy
JSR PlaySound
UpDtGm2ArrowRt3
BBR1 SocRow1,UpDtGm2ArrowRt4
BBR1 R_Pig1Wolf2Move,UpDtGm2ArrowRt4
SMB0 LCD_20+1
JB B_DemoFlag,UpDtGm2ArrowRt4
LDA #G2_HitWolfy
JSR PlaySound
UpDtGm2ArrowRt4
BBR2 SocRow1,UpDtGm2ArrowRt5
BBR2 R_Pig1Wolf2Move,UpDtGm2ArrowRt5
SMB6 LCD_20
JB B_DemoFlag,UpDtGm2ArrowRt5
LDA #G2_HitWolfy
JSR PlaySound
UpDtGm2ArrowRt5
LDA SocRow2
STA SocRow1
LDA SocRow3
STA SocRow2
LDA #0
STA SocRow3
CLI
SETB B_FlashWolfDisp
SETB B_FlashSocDisp
SETB B_FlashDisp
JMP DispLcdRout
;------------------------------------------------------------------------------
;Gm2 pro wolf,set up wolf flag lose life,
UpDtWolfRt
CLRB B_UpDtWolf2
LDA R_Pig1Wolf2Move
EOR #00000111B
AND #00000111B
BEQ LoseALife
LDA R_Random
AND #00000111B
AND R_Pig1Wolf2Move
BEQ UpDtGm2ArrowRt2
; JMP UpDtGm2ArrowRt2
LDA R_Random
AND #00000011B
CLC
BNE UpDtGm2ArrowRt1
SEC
UpDtGm2ArrowRt1
ROL R_Random
UpDtGm2ArrowRt2
LDA R_Random
AND #00000111B
ORA R_Pig1Wolf2Move
STA R_Pig1Wolf2Move
RTS
;=========================================================================
LoseLifeSound
JB B_Gm2Flag,Gm2LoseLifeSound
LDA #03H
JMP PlaySound
Gm2LoseLifeSound
LDA #G2_Lose
JMP PlaySound
;------------------------------------
LoseALife
CLI
CLRB B_LoseLive
CLRB B_NormState
JB B_DemoFlag,LoseALifeSlt
JSR LoseLifeSound
SEC
LDA R_Life
SBC #1
BCC L_GameFail_ ;;;no in demo mode
STA R_Life
LoseALifeSlt
JB B_Gm2Flag,Gm2LoseLife
SMB1 LCD_20+2
JSR Wait500MS
RMB1 LCD_20+2
JSR Wait500MS
SMB1 LCD_20+2
JSR Wait500MS
RMB1 LCD_20+2
JSR Wait500MS
JMP LoseALifeC
;------------------------
L_GameFail_
JMP L_GameFail
;------------------------
Gm2LoseLife
RMB7 LCD_20+1
RMB1 LCD_10+2
RMB3 LCD_20+2
JSR Wait500MS
SETB B_FlashWolfDisp
SETB B_FlashDisp
JSR DispLcdRout
JSR Wait500MS
RMB7 LCD_20+1
RMB1 LCD_10+2
RMB3 LCD_20+2
JSR Wait500MS
SETB B_FlashWolfDisp
SETB B_FlashDisp
JSR DispLcdRout
JSR Wait500MS
RMB7 LCD_20+1
RMB1 LCD_10+2
RMB3 LCD_20+2
JSR Wait500MS
JSR RestoreTMCnt1
CLRB B_UpDtWolf2
LoseALifeC
LDA #1
STA R_Wolf1Pig2Move
LDA #0
STA R_Pig1Wolf2Move
SETB B_FlashWolfDisp
SETB B_FlashLifeDisp
SETB B_FlashDisp
LDA #0
STA SocRow1
STA SocRow2
STA SocRow3
SETB B_FlashSocDisp
JSR DispLcdRout
; cli
SETB B_NormState
RTS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -