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

📄 cs5382b.asm

📁 本程序为一语音LCD GAME
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;================================================================
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 + -