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

📄 cs5382b.asm

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