;************************************************************************
;*									*
;*	title name	: "yossy"					*
;*	proccess	: enemy sub.2					*
;*	file name	: ys_enmy3					*
;*									*
;************************************************************************
;
;
		SALL
;
		include		ys_header.inc
		include		ys_unit.h
		include		ys_color.h
		include		ys_pld.h
		include		ys_presno.h
		include		ys_ename.h
		include		../union/ys_bgcheck.h
;
		XALL
;
;
;------------------------------------------------------------------------
;-		global symbol						-
;------------------------------------------------------------------------
		GLB	TSUBOIN,OBAKEIN,IWATSIN,OBFIRIN,POLY1IN
		GLB	KERO0IN,GATE0IN,DWNBGIN,MSTARIN
		GLB	CSTARIN,ITEGGIN,BG_00IN,BKMKJIN,AW_FGIN
		GLB	ON_DWIN,DRKEYIN
		GLB	POLDRIN,KEYDRIN,ZDOORIN,CDOORIN
		GLB	DWBL0IN,DWBL1IN,DWBL2IN,DWBL3IN ;,DWBLSIN
		GLB	GOAL1IN
		GLB	BOSDRIN,LBSDRIN,GOLYSIN,MRBLKIN
		GLB	MONK0IN,MONK1IN,MONK2IN,MONK3IN,NEXTGIN
		GLB	MONK4IN,UNBABIN,INGERIN,BHEIRIN,BHEIGIN
		GLB	IEKI0IN,DNXGOIN,DNXG2IN,SNXGOIN,SNXG2IN
		GLB	BSCLRIN,BSCLWIN,WAVLFIN
;
		GLB	TSUBOMV,OBAKEMV,IWATSMV,OBFIRMV,POLY1MV
		GLB	KERO0MV,GATE0MV,DWNBGMV,MSTARMV
		GLB	CSTARMV,ITEGGMV,BG_00MV,BKMKJMV,AW_FGMV
		GLB	ON_DWMV,DRKEYMV
		GLB	POLDRMV,KEYDRMV,ZDOORMV,CDOORMV
		GLB	DWBL0MV,DWBL1MV,DWBL2MV,DWBL3MV ;,DWBLSMV
		GLB	GOAL1MV
		GLB	BOSDRMV,LBSDRMV,GOLYSMV,MRBLKMV
		GLB	MONK0MV,MONK1MV,MONK2MV,MONK3MV,NEXTGMV
		GLB	MONK4MV,UNBABMV,INGERMV,BHEIRMV,BHEIGMV
		GLB	IEKI0MV,DNXGOMV,DNXG2MV,SNXGOMV,SNXG2MV
		GLB	BSCLRMV,BSCLWMV,WAVLFMV
;
		GLB	BG3POLYST,BG3POLYST0,KUMOB_SET,KUMOB_SET_2,BG3POLY_INIT
		GLB	KIRAKIRA_SET,KIRA_AUTO_ST,ICE_IN_CK,QAROW_SET_CK,QAROW_SET_CK_2
		GLB	BSCLR_KIRA_SET,FUSNB_SET_2
		GLB	MONKY_FAIL_SET,MKY_BABY_GET
		GLB	GO_NEXTGOTO,GO_NEXTGOTO_2
		GLB	BOSS_CLEAR,BOSS_CLEAR_M,BSCLW_SET_M,BSCLW_SET_B,BSCLW_SET_B_T
		GLB	BSCLW_SET_PLSET
		GLB	DOOR_CHR_SET,TROBJ_OAM_4x4_F
;
		GLB	MARIO_CHANGE,ITEGG_INIT
		GLB	TO_PLDEMO,TO_PLDEMO_2,TO_COIN_CHANGE,GOAL_EN_CHANGE
		GLB	BOSS_EN_CHANGE
		GLB	GOAL0_CHR_SET,MID_POINT_SAVE
;
		GLB	MKY_OKAJ
;
		GLB	YOSHI_COLOR
;
;------------------------------------------------------------------------
;-		extern symbol						-
;------------------------------------------------------------------------
;
;-------------< ys_main >------------------------------------------------
		EXT	SOUND_3_ON,RANDAM
		EXT	GMIN,BS_SCRE
		EXT	GMFD
;
;-------------< ys_rpro >------------------------------------------------
		EXT	JSRSUB
		EXT	CHIPON,CHIPON_RAM_READ
;
;-------------< ys_init >------------------------------------------------
		EXT	UNCOMPRES,UNCOMPRES_X,VRAMDX_ST
		EXT	VRAMDX_H_ST,VRAMDX_L_ST,VRAMDX_L_C_ST
		EXT	M_DMA_BFST
;
;-------------< ys_play >------------------------------------------------
		EXT	PLCOLTR,BERO_CANCEL,BERO_CANCEL_2
		EXT	EGG_WARE_SET,PLTYPE_RAMCLR
		EXT	PCOLTBL
		EXT	PFAL,PSTP,PMOV,PGUS,PGOL,PSHT,PDEM,PDKN,PCLR,PBSC
		EXT	PBNS
		EXT	PFLP
;
;-------------< ys_bgsc >------------------------------------------------
		EXT	UNITCHG
;
		EXT	BGCG,DBG0
;
;-------------< ys_enmy >------------------------------------------------
		EXT	ENMOVE,ENCLEAR,ENCLEAR_NORETN,DISPCK0,DISPCK1,DISPCK2
		EXT	ENINSR,ENINSR2,ENINSR_I,ENINSR2_I,EEXCHK,EEYCHK,EEXYCK,ESTATST
		EXT	PL_1UP_SET,BEAT_P_SET,FSMK0_SET4,FSMK0_SET2,FSMK0_SET2_2
		EXT	ENMDCK,XSDOWN,EPCRCK,MUKEOR,XSPEOR,MKEOR2,PLFLST,ENDEATH_SET
		EXT	EN_XYMOVE,ENCHRB_SET,XSDOWN2
		EXT	ANGLCAL,EGG_WARE,POBBGCR,POBBGCR_2,POBBGCR_3,POBBGCR_X
		EXT	PLCRMKCK,PDON0ST
		EXT	SHOT_EN_KILL,ENDEATH_SET_4,EGG_PLCROSS
;;;;		    EXT	    BOBBGCR,BOBBGCR_2
		EXT	ENFALL_END
		EXT	EGGKILL,EGGKILL_ALL,EGG_SP_CHECK,EGG,EGG_OPTION,EGGSET
		EXT	ENRETURN
		EXT	FSMK2_SET,EX_COIN_SET
		EXT	EXIST_CHECK,NON_EXIST_SET,EXIST_CHECK2,QKM_NON_EXIST
		EXT	EXIST_CHECK_S2,EXIST_CHECK_S3,NON_EXIST_SET2,NON_EXIST_SET3
		EXT	TROBJ_CANCEL
		EXT	TROBJ_OAM_2x2,TROBJ_OAM_2x2_I
		EXT	TROBJ_OAM_4x4,TROBJ_OAM_4x4_I
		EXT	TROBJ_OAM_4x2,TROBJ_OAM_4x2_I
		EXT	TROBJ_OAM_8x4,TROBJ_OAM_8x4_I
		EXT	TROBJ_OAM_8x8,TROBJ_OAM_8x8_I
		EXT	TROBJ_SR_2x2,TROBJ_SR_2x2_CL
		EXT	TROBJ_SR_4x4,TROBJ_SR_4x4_CL
		EXT	TROBJ_SR_4x2,TROBJ_SR_4x2_CL
		EXT	TROBJ_SR_8x4,TROBJ_SR_8x4_CL
		EXT	TROBJ_SR_8x8,TROBJ_SR_8x8_CL
		EXT	TROBJ_CLEAR,TROBJ_CLEAR_CHK
;
		EXT	ATSCRL_XYCL_L
;
		EXT	EINIT,EFAIL,EMOVE,EEATM,ENOSE,EBABL,ECHNG
;
		EXT	TROBJ_PLOT_X,TROBJ_PLOT_Y,TROBJ_CHAR_NO
;
;-------------< ys_enmy2 >-----------------------------------------------
		EXT	KINOMI_CANCEL,KINOMI_CANCEL_2,FUSNB_SET
;
;-------------< ys_enmy5 >-----------------------------------------------
		EXT	SUIKT_DOWN_ST
;
;-------------< ys_enmy6 >-----------------------------------------------
		EXT	GEROZ_RMODE60
;
;-------------< ys_enmy8 >-----------------------------------------------
		EXT	TRBOX_BREAK,TRBOX_SMK0_SET
;
;-------------< ys_enmy9 >-----------------------------------------------
		EXT	KAMC2COLRESET_L,DOROBOUCANCEL
		EXT	CURTAIN_COL0,CURTAIN_COL1
;
		EXT	Gero,Tubo,Kmkj
;
;-------------< ys_exst >------------------------------------------------
		EXT	EXINSR
;
;-------------< ys_hijime-chan >------------------------------------------------
		EXT	BABYM_CHR_TR2
		EXT	BABYM_SHABN_C2
		EXT	BABYM_DOROB_C2
;
;-------------< ys_game >------------------------------------------------
		EXT	EGG_SAVE
;
		EXT	HF_MG_INT
;
;-------------< ys_hmap >------------------------------------------------
		EXT	WINAREA
;
;-------------< ys_data >------------------------------------------------
		EXT	COS,SIN
;
;
;------------------------------------------------------------------------
;-		define symbol						-
;------------------------------------------------------------------------
;
;
;
;************************************************************************
;*									*
;*		program start						*
;*									*
;************************************************************************
;
		EXTEND
;
		MEM16
		IDX8
;
		DPAGE	EN0RAM
;
Group_2		GROUP	Enemy3_pro
Enemy3_pro	SECT	REL
;
;************************************************************************
;*		ゴールヨッシーカラーテーブル				*
;************************************************************************
YOSHI_COLOR	EQU	$
;			[1] [2] [3] [4] [5] [6] [7] [8] [S] [B] [dummy]
		HEX	 0,  1,	 3,  2,	 4,  5,	 6,  7,	 0,  0,	 0,0 ;[W1-]
		HEX	 0,  1,	 3,  2,	 4,  5,	 6,  7,	 0,  0,	 0,0 ;[W2-]
		HEX	 0,  1,	 3,  2,	 4,  5,	 6,  7,	 0,  0,	 0,0 ;[W3-]
		HEX	 0,  1,	 3,  2,	 4,  5,	 6,  7,	 0,  0,	 0,0 ;[W4-]
		HEX	 0,  1,	 3,  2,	 4,  5,	 6,  7,	 0,  0,	 0,0 ;[W5-]
		HEX	 0,  1,	 3,  2,	 4,  5,	 6,  0,	 0,  0,	 0,0 ;[W6-]
;
;
;------------------------------------------------------------------------
;-		ジャバラキャラクターセット				-
;------------------------------------------------------------------------
GOAL0_CHR_SET	EQU	$
		LDA	#0100H
		STA	R6		;(R6)  <-- X zoom flag
		LDA	<ENCONT,X
		STA	R11		;(R11) <-- Y zoom flag
		LDY	ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_Y,X
		STA	R2		;(R2) <-- plot start Y pos
		LDA	>TROBJ_PLOT_X,X
		STA	R3		;(R3) <--      "     X  "
		LDA	#010H
		STA	R8		;(R8) <-- center X pos
		LDA	#01FH
		STA	R9		;(R9) <-- center Y pos
		LDA	#CIPCHD2+0040H
		STA	R12		;(R12) <-- chara address(L,H)
		LDA	#BANK CIPCHD2
		STA	R13		;(R13) <--	  "     (B)
		M_CHIP	C_32_ZOOM_XY
;
		INC	OBM7WF		;mode 7 OBJ chara DMA "ON"
;
		LDX	<ENINDX
		RTL
;
;--------------------------------------------------------
;-		雲セットルーチン			-
;--------------------------------------------------------
KUMOB_SET	EQU	$
		LDA	#KUMOB		;(A) <-- exstra no.
		JSL	>EXINSR
		LDA	#0BH
		STA	EXWRK0,Y	;counter set
		LDA	#06H
		STA	EXTIM0,Y	;timer set
		LDA	ENXPSL,X
		STA	EXXPSL,Y	;X pos set
		LDA	ENYPSL,X
		STA	EXYPSL,Y	;Y pos set
		RTL
;
;--------------------------------------------------------
;-		雲セットルーチン（敵ＳＴＯＰ無視）	-
;--------------------------------------------------------
KUMOB_SET_2	EQU	$
		JSL	>KUMOB_SET
		LDA	#01H
		STA	EXWRK2,Y
		RTL
;
;************************************************************************
;*		initial							*
;************************************************************************
POLYCOLIN	EQU	$						;[ENCLOR]
		WORD	(POLYCOL0-POLYCOLD)+(POLYCOL1-POLYCOL0-2)	;[0]
		WORD	(POLYCOL1-POLYCOLD)+(POLYCOL1-POLYCOL0-2)	;[1]
		WORD	(POLYCOL2-POLYCOLD)+(POLYCOL1-POLYCOL0-2)	;[2]
;
POLYCOLD	EQU	$
POLYCOL0	BYTE	(0886H&(1FH<<10))>>10,(0886H&(1FH<<5))>>5,0886H&1FH	 ;[0]
		BYTE	(0886H&(1FH<<10))>>10,(0886H&(1FH<<5))>>5,0886H&1FH
		BYTE	(0000H&(1FH<<10))>>10,(0000H&(1FH<<5))>>5,0000H&1FH
		BYTE	(0886H&(1FH<<10))>>10,(0886H&(1FH<<5))>>5,0886H&1FH	 ;[1]
		BYTE	(0886H&(1FH<<10))>>10,(0886H&(1FH<<5))>>5,0886H&1FH
		BYTE	(0000H&(1FH<<10))>>10,(0000H&(1FH<<5))>>5,0000H&1FH
		BYTE	(3E11H&(1FH<<10))>>10,(3E11H&(1FH<<5))>>5,3E11H&1FH	 ;[2]
		BYTE	(34E5H&(1FH<<10))>>10,(34E5H&(1FH<<5))>>5,34E5H&1FH
		BYTE	(314AH&(1FH<<10))>>10,(314AH&(1FH<<5))>>5,314AH&1FH
		BYTE	(3E11H&(1FH<<10))>>10,(3E11H&(1FH<<5))>>5,3E11H&1FH	 ;[3]
		BYTE	(34E5H&(1FH<<10))>>10,(34E5H&(1FH<<5))>>5,34E5H&1FH
		BYTE	(314AH&(1FH<<10))>>10,(314AH&(1FH<<5))>>5,314AH&1FH
;
POLYCOL1	BYTE	(3216H&(1FH<<10))>>10,(3216H&(1FH<<5))>>5,3216H&1FH	 ;[0]
		BYTE	(34E5H&(1FH<<10))>>10,(34E5H&(1FH<<5))>>5,34E5H&1FH
		BYTE	(314AH&(1FH<<10))>>10,(314AH&(1FH<<5))>>5,314AH&1FH
		BYTE	(3216H&(1FH<<10))>>10,(3216H&(1FH<<5))>>5,3216H&1FH	 ;[1]
		BYTE	(34E5H&(1FH<<10))>>10,(34E5H&(1FH<<5))>>5,34E5H&1FH
		BYTE	(314AH&(1FH<<10))>>10,(314AH&(1FH<<5))>>5,314AH&1FH
		BYTE	(3216H&(1FH<<10))>>10,(3216H&(1FH<<5))>>5,3216H&1FH	 ;[2]
		BYTE	(34E5H&(1FH<<10))>>10,(34E5H&(1FH<<5))>>5,34E5H&1FH
		BYTE	(314AH&(1FH<<10))>>10,(314AH&(1FH<<5))>>5,314AH&1FH
		BYTE	(3216H&(1FH<<10))>>10,(3216H&(1FH<<5))>>5,3216H&1FH	 ;[3]
		BYTE	(34E5H&(1FH<<10))>>10,(34E5H&(1FH<<5))>>5,34E5H&1FH
		BYTE	(314AH&(1FH<<10))>>10,(314AH&(1FH<<5))>>5,314AH&1FH
;
POLYCOL2	BYTE	(0465H&(1FH<<10))>>10,(0465H&(1FH<<5))>>5,0465H&1FH	 ;[0]
		BYTE	(0465H&(1FH<<10))>>10,(0465H&(1FH<<5))>>5,0465H&1FH
		BYTE	(0000H&(1FH<<10))>>10,(0000H&(1FH<<5))>>5,0000H&1FH
		BYTE	(0465H&(1FH<<10))>>10,(0465H&(1FH<<5))>>5,0465H&1FH	 ;[1]
		BYTE	(0465H&(1FH<<10))>>10,(0465H&(1FH<<5))>>5,0465H&1FH
		BYTE	(0000H&(1FH<<10))>>10,(0000H&(1FH<<5))>>5,0000H&1FH
		BYTE	(1D91H&(1FH<<10))>>10,(1D91H&(1FH<<5))>>5,1D91H&1FH	 ;[2]
		BYTE	(0CA8H&(1FH<<10))>>10,(0CA8H&(1FH<<5))>>5,0CA8H&1FH
		BYTE	(152DH&(1FH<<10))>>10,(152DH&(1FH<<5))>>5,152DH&1FH
		BYTE	(1D91H&(1FH<<10))>>10,(1D91H&(1FH<<5))>>5,1D91H&1FH	 ;[3]
		BYTE	(0CA8H&(1FH<<10))>>10,(0CA8H&(1FH<<5))>>5,0CA8H&1FH
		BYTE	(152DH&(1FH<<10))>>10,(152DH&(1FH<<5))>>5,152DH&1FH
;
IWTSINX		EQU	$
		WORD	00028H,0FFD8H
;
IWATSIN		EQU	$
		LDA	BG1TYP
		CMP	#0AH
		BNE	BG3POLY_INIT	;カベコース？ ( yes:BG3POLY_INIT )
;
		LDA	ENCLOR,X	;第２カラーへ
		ORA	#02H*2
		STA	ENCLOR,X
;
BG3POLY_INIT	EQU	$
		JSR	BG3USECK	;BG3 use check
		STZ	BG3TYP		;[ ※タイムアップで消えない様に！！ ]
;
		PHB			;(DBR) save
		PHK			;(DBR) <-- (PBR)
		PLB
;
		LDY	SCHMK1
		LDA	ENXPSL,X
		CLC
		ADC	!IWTSINX,Y
		STA	ENXPSL,X
		ORA	#08H
		STA	POLYXPS		;polygon center X pos set
		LDA	#0104H		;display center Z pos set
		STA	POLYZPS
		STZ	POLYANG
		STZ	POLYMUK
;
		LDA	ENCLOR,X
		AND	#07H*2
		TAX
		LDY	!POLYCOLIN,X
		LDX	#POLYCOL1-POLYCOL0-2
IWTI010		EQU	$
		LDA	!POLYCOLD,Y
		STA	>POLYCOL,X
		DEY
		DEY
		DEX
		DEX
		BPL	IWTI010
		LDX	<ENINDX
;
		PLB
		RTL
;
;------------------------------------------------------------------------
;-		BG3 use check						-
;------------------------------------------------------------------------
BG3USECK	EQU	$
		LDA	BG3USEFG
		BEQ	B3UC010		;now BG3 use ? ( no:B3UC010 )
;
		PLA			;[ pull pull return !! ]
		JMP	>ENCLEAR
;
B3UC010		EQU	$
		INC	BG3USEFG	;BG3 use "ON" !!
		RTS
;
;************************************************************************
;*		move							*
;************************************************************************
POLYDIN		EQU	$
		WORD	POLYDT		;[0] kabe
		WORD	POLYDT2		;[1] small kabe
		WORD	POLYDT3		;[2] 8 face
;
POLYDT		EQU	$
		HEX	4		;[ point no ]
		BYTE	10H,-72H,60H	;[0] [ (Z),(Y),(Xwide) ]
		BYTE	00H,-72H,60H	;[1] [ (Z),(Y),(Xwide) ]
		BYTE	00H, 00H,60H	;[2] [ (Z),(Y),(Xwide) ]
		BYTE	10H, 00H,60H	;[3] [ (Z),(Y),(Xwide) ]
		HEX	4
		HEX	00,0,1		;[ (color),(P1),(P2) ]
		HEX	42,1,2		;[ (color),(P1),(P2) ]
		HEX	80,2,3		;[ (color),(P1),(P2) ]
		HEX	C2,3,0		;[ (color),(P1),(P2) ]
;
POLYDT2		EQU	$
		HEX	4		;[ point no ]
		BYTE	 08H,-20H,50H	;[0] [ (Z),(Y),(Xwide) ]
		BYTE	-08H,-20H,50H	;[1] [ (Z),(Y),(Xwide) ]
		BYTE	-08H, 20H,50H	;[2] [ (Z),(Y),(Xwide) ]
		BYTE	 08H, 20H,50H	;[3] [ (Z),(Y),(Xwide) ]
		HEX	4
		HEX	60,0,1		;[ (color),(P1),(P2) ]
		HEX	A2,1,2		;[ (color),(P1),(P2) ]
		HEX	E0,2,3		;[ (color),(P1),(P2) ]
		HEX	22,3,0		;[ (color),(P1),(P2) ]
;
POLYDT3		EQU	$
		HEX	8		;[ point no ]
		BYTE	 00H,-38H,60H	;[0] [ (Z),(Y),(Xwide) ]
		BYTE	-27H,-27H,60H	;[1] [ (Z),(Y),(Xwide) ]
		BYTE	-38H, 00H,60H	;[2] [ (Z),(Y),(Xwide) ]
		BYTE	-27H, 27H,60H	;[3] [ (Z),(Y),(Xwide) ]
		BYTE	 00H, 38H,60H	;[4] [ (Z),(Y),(Xwide) ]
		BYTE	 27H, 27H,60H	;[5] [ (Z),(Y),(Xwide) ]
		BYTE	 38H, 00H,60H	;[5] [ (Z),(Y),(Xwide) ]
		BYTE	 27H,-27H,60H	;[5] [ (Z),(Y),(Xwide) ]
		HEX	8
		HEX	e0,0,1		;[ (color),(P1),(P2) ] color high 4bit...n/16
		HEX	c2,1,2		;[ (color),(P1),(P2) ]	 n...n men_tai
		HEX	a1,2,3		;[ (color),(P1),(P2) ]
		HEX	83,3,4		;[ (color),(P1),(P2) ]
		HEX	60,4,5		;[ (color),(P1),(P2) ]
		HEX	42,5,6		;[ (color),(P1),(P2) ]
		HEX	21,6,7		;[ (color),(P1),(P2) ]
		HEX	03,7,0		;[ (color),(P1),(P2) ]
;
;------------------------------------------------------------------------
ROTSPAD		EQU	$-1
		WORD	0FFFCH,00004H
ROTSPCP		EQU	$-1
		WORD	0F000H,00800H
;
ROTANCP		EQU	$-1
		WORD	0FFC0H,00000H
;
;-------------- player cross check data ---------------------------------
PLZW		EQU	060H
;
IWATSMV		EQU	$
		JSL	>BG3POLYST0	;ＢＧ３ポリゴンセット
;
		LDA	EPWIDX,X
		CLC
		ADC	#070H
		CMP	#070H*2+1
		LDA	#15H+(02H*100H)
		BCS	IWTS060		;範囲外にいる？ ( yes:IWTS060 )
;
		LDA	#10H+(07H*100H)
		LDY	POLYANG
		DEY
		CPY	#0BFH
		BCS	IWTS060		;BG3 pri. up ? ( no:IWTS060 )
		LDA	#14H+(07H*100H)
IWTS060		EQU	$
		STA	MANSEL		;main & sub select set
;
		JSL	>ENMDCK		;mode check
;
;-------------- polygon move ------------------------------------
		LDA	ENTIM0,X
		BNE	IWTS022		;wait ? ( yes:IWTS022 )
;
		LDY	POLYMUK
		BNE	IWTS020		;down wait ? ( no:IWTS020 )
;
;-------------- down wait -------------------------------
		LDA	EPWIDX,X
		CLC
		ADC	#030H
		CMP	#060H+1
		BCS	IWTS022		;go down ok X wide ? ( no:IWTS022 )
		LDA	EPWIDY,X
		CLC
		ADC	#030H
		CMP	#060H+1
		BCS	IWTS022		;go down ok Y wide ? ( no:IWTS022 )
;
		LDA	PLMODE
		CMP	#PMOV
		BNE	IWTS022		;player normal move ? ( no:IWTS022 )
;
		INC	POLYMUK
		INY
;
IWTS022		EQU	$
		JMP	IWTS050
;
;-------------- down move -------------------------------
IWTS020		EQU	$
;
;-------------- rotation ------------------------
		LDA	ENWRK6,X	;down speed set
		CLC
		ADC	!ROTSPAD,Y
		CMP	!ROTSPCP,Y
		BNE	IWTS030		;max down speed over ? ( no:IWTS030 )
		LDA	!ROTSPCP,Y
IWTS030		EQU	$
		STA	ENWRK6,X
		LDA	ENWRK8,X
		AND	#00FFH
		CLC
		ADC	ENWRK6,X
		STA	ENWRK8,X
		AND	#0FF00H
		BPL	IWTS040
		ORA	#00FFH
IWTS040		EQU	$
		XBA
		CLC
		ADC	POLYANG
		STA	POLYANG
		SEC
		SBC	!ROTANCP,Y
		EOR	!ROTSPCP,Y
		BMI	IWTS044		;down end ? ( no:IWTS044 )
;
		LDA	#040H		;wait timer set
		CPY	#1
		BEQ	IWTS0402
		LDX	PLMODE
		CPX	#PGUS
		BNE	IWTS0400
		LDA	#040H+(060H*2)	;プレイヤー安全の為ウェイトタイマー延長
IWTS0400	EQU	$
		LDX	<ENINDX
IWTS0402	EQU	$
		STA	ENTIM0,X
;
		LDA	!ROTANCP,Y	;rotation angle reset !!
		STA	POLYANG
		STZ	ENWRK6,X	;rotation speed reset !!
		STZ	ENWRK8,X	;	 "
;
		LDA	#00
		DEY
		BNE	IWTS042		;go to wait ? ( no:IWTS042 )
;
		LDA	#047H		;[♪]
		JSL	>SOUND_3_ON
;
		LDA	#060H
		STA	TILTCT		;tilt set !!
		LDA	#03H
IWTS042		EQU	$
		STA	POLYMUK		;go to up move !!
;
;-------------- player cross check ------------------------------
IWTS044		EQU	$
		TXY			;(Y) <-- enemy index
;
;-------------- polygon cross Y size set ----------------
;
		I16
;
		LDA	POLYANG
		BIT	#040H
		PHP
		BEQ	IWTS44E
		EOR	#03FH
		INC	A
IWTS44E		EQU	$
		EOR	#0FFH
		INC	A
		AND	#03FH
		ASL	A
		TAX
		LDA	>TAN,X
		LSR	A		;（＋）のみへ
		PLP
		BNE	IWTS44F
		EOR	#0FFFFH
		INC	A
IWTS44F		EQU	$
;
		M8
;
		STA	211BH
		XBA
		STA	211BH
		LDA	#PLZW
		STA	211CH
		LDA	2134H
		ASL	A		;(C) <-- ０．５
;
		M16
;
		LDA	2135H
		ROL	A
		STA	POLYHIGH	;player cross check polygon high
;
;-------------- player X cross check --------------------
		LDA	PLMODE
		CMP	#PGUS
		BNE	IWTS04400	;player "Gusha" !! mode ? ( no:IWTS04400 )
		STY	PONLFFG		;リフト乗りフラグセット
		BRA	IWTS04402
;
IWTS04400	EQU	$
		LDA	POLYMUK
		DEC	A
		BNE	IWTS04402	;polygon down muki ? ( no:IWTS04402 )
;
		LDA	POLYZPS		; player cross check X wide calculate
		SEC			;
		SBC	#PLZW		;
		ASL	A		;
		TAX			;
		LDA	>DIVBUF,X	;
		STA	<EWORK8		;(EWK8) <-- player Z pos convert div data
;					;
		M8			;
;					;
		STA	211BH		;
		XBA			;
		STA	211BH		;
		LDA	#060H/2		;
		STA	211CH		;
;					;
		M16			;
;					;
		LDA	2135H		;
		STA	<EWORK6		;
;
		LDA	PLXPSL
		SEC
		SBC	ENXPSL,Y
		STA	<EWORK2		;(EWK2) <-- player cross X wide sigh data
		BPL	IWTS0440
		EOR	#0FFFFH
		INC	A
IWTS0440	EQU	$
		CLC
		ADC	#08H
		STA	<EWORK4		;(EWK4) <-- player cross X wide(+)
		CMP	<EWORK6
		BCC	IWTS0441	;player X cross ? ( yes:IWTS0441 )
IWTS04402	EQU	$
		JMP	IWTS04490
;
;-------------- player Z cross check --------------------
IWTS0441	EQU	$
		LDA	POLYANG
		AND	#00FFH
		ASL	A
		TAX
		LDA	>SIN,X
;
		M8
;
		STA	211BH
		XBA
		STA	211BH
		LDA	#070H		;(A) <-- polygon high
		STA	211CH
		LDA	2135H		;(A) <-- zw = polygon hogh * sin
		CMP	#PLZW
;
		M16
;
		BCC	IWTS04402	;player Z pos cross ? ( no:IWTS04402 )
;
		LDA	#0FH-04H
		LDX	PLSITD
		BEQ	IWTS0442	;player sit down ? ( no:IWTS0442 )
;
		LDA	#0FH-0AH
IWTS0442	EQU	$
		CLC
		ADC	ENDSYL,Y
		SEC
		SBC	PLDSYL
		BMI	IWTS04490	;player cross ? ( no:IWTS04490 )
		SEC
		SBC	POLYHIGH
		BMI	IWTS04490	;	      "
		CMP	#030H
		BCS	IWTS04490	;	      "
;
;-------------- player cross !! -------------------------
		LDX	PLJUMP
		BEQ	IWTS0444	;player jump ? ( no:IWTS0444 )
;
		LDX	PLYSPD
		BPL	IWTS0443	;player jump up ? ( yes:IWTS0443 )
		STZ	PLYSPD		;   "   Y speed clear !!
;
IWTS0443	EQU	$
		CLC
		ADC	PLYPSL
		STA	PLYPSL		;player hed pos hosei !!
		CLC
		ADC	#010H
		SEC
		SBC	ENYPSL,Y
		BMI	IWTS04490	;foot BG cross ? ( no:IWTS04490 )
;
		EOR	#0FFFFH
		SEC			;[ INC A ]
		ADC	PLYPSL
		STA	PLYPSL		;player foot pos hosei !!
;
;-------------- player "Gusha" !! ---------------
IWTS0444	EQU	$
		LDA	#PGUS
		STA	PLMODE		;player "Gusha" !! mode set
		STZ	PLMVSP		;   "   X speed clear !!
		STZ	PLXSPD		;   "   X speed clear !!
		STZ	PLYSPD		;   "   Y       "
;
		JSL	>BERO_CANCEL	;舌ショットキャンセル
		JSL	>EGGKILL_ALL
;
		INC	PLEATFG		;リフト乗りキャンセル
;
		LDA	<EWORK8
		ASL	A		;x2
		TAX
		LDA	>DIVBUF,X
;
		M8
;
		STA	211BH
		XBA
		STA	211BH
		LDA	<EWORK4
		STA	211CH
;
		M16
;
		LDA	2135H
		LDX	<EWORK2
		BPL	IWTS0446
		EOR	#0FFFFH
		INC	A
IWTS0446	EQU	$
		STA	POLYPLXL	;player polygon X pos
;
IWTS0449	EQU	$
;
		M16
;
IWTS04490	EQU	$
;
		I8
;
;-------------- BG3 polygon set ---------------------------------
IWTS050		EQU	$
		LDX	<ENINDX
		RTL
;
;------------------------------------------------------------------------
;-		ＢＧ３ポリゴンセット					-
;------------------------------------------------------------------------
BG3POLYST0	EQU	$
		LDY	#00		;(Y) <-- BG3 polygon type no.
;
BG3POLYST	EQU	$
		PHY
		PHB			;(DBR) save
		PHK			;(DBR) <-- (PBR)
		PLB
;
		LDA	!POLYDIN,Y
		STA	R13		;(R13) <--	    "          (L,H)
		LDA	#078H
		SEC
		SBC	ENDSXL,X
		STA	SCCH3		;BG3 scroll counter_H set
		STA	R1		;(R1) <-- BG3 scroll counter_H
;
		LDA	ENDSYL,X
		CLC
;;;;		ADC	#03H
		ADC	#0FH
		STA	R2		;(R2)  <-- display center Y pos
		CLC
		ADC	SCCV1
		STA	POLYYPS
		LDA	POLYZPS		;polygon center Z pos set
		STA	R3		;(R3)  <--	  "       Z pos
		LDA	POLYANG
		AND	#00FFH
		STA	R4		;(R4)  <-- rotation angle
		LDA	#BANK POLYDT
		STA	R12		;(R12) <-- polygon data address(B)
		M_CHIP	BG3POLY
;
		JSL	>M_DMA_BFST
		LWORD	HDMABUF		;転送先アドレス
		LWORD	HDMABF		;転送元アドレス
;;;;		    WORD    (0B2H*2)	    ;転送バイト数
		WORD	(0D2H*2)	;転送バイト数
;
;-------------- PPU Reg. set ----------------------------
		LDA	HD420C
		AND	#11100111B
		ORA	#00010000B
		STA	HD420C		;H-DMA "ON" !!
;
		PLB
;
		LDX	<ENINDX
		PLY
		CPY	#004		;８面体 ?
		BEQ	B3DC010		; yes: B3DC010
;
;------------------------------------------------------------------------
;-		BG3 not display clear check				-
;------------------------------------------------------------------------
BG3DSCK		EQU	$
;
;-------------- not display clear check -------------------------
		JSL	>DISPCK1
		BCC	B3DC010		;display pos ok ? ( yes:B3DC010 )
;
;-------------- not display clear set -------------------
		STZ	BG3USEFG	;BG3 use cancel !!
;
;-------------- polygon move ------------------------------------
B3DC010		EQU	$
		RTL
;
;
;************************************************************************
;*		initial							*
;************************************************************************
TSUBOIN		EQU	$
;
;-------------- おばけセット --------------------------------------------
		LDA	#OBAKE		;(A) <-- 敵Ｎｏ．
		JSL	>ENINSR		;敵エリア確保
		BCS	TSUBOIN_0010	;     ”     ？ ( yes:TSUBOIN_0010 )
		JMP	>ENCLEAR
;
TSUBOIN_0010	EQU	$
		LDA	#OB_WAIT	;出現ウェイトモードセット
		STA	ENWRK0,Y
;;;;		    LDA	    #01H
		STA	ENCBFG,Y	;着地フラグセット
		TYA			;おばけセットフラグ”ＯＮ”
		STA	<ENWRK0,X
		JSR	OBAKE_POS_SET
;
;-------------- ＯＢＪカラーセット --------------------------------------
		LDY	#Tubo
		JSL	>KAMC2COLRESET_L
;
;-------------- 壷ヘイホーセット ----------------------------------------
		LDA	#TBHIH		;(A) <-- 敵Ｎｏ．
		TXY			;(Y) <-- サーチスタート敵インデックス
		JSL	>ENINSR2_I	;敵エリア確保
		BCC	TSUBOIN_0030	;     ”     ？ ( no:TSUBOIN_0030 )
;
		LDA	ENXPSL,X
		CLC
		ADC	#040H
		STA	ENXPSL,Y
		LDA	ENYPSL,X
		STA	ENYPSL,Y
		TXA
		STA	ENWRK0,Y
;
;------------------------------------------------------------------------
;-		壷おばけＢＧ２カラーセット				-
;------------------------------------------------------------------------
TSUBOIN_0030	EQU	$
		LDX	#((15+16)-1)*2
TSUBOIN_0040	EQU	$
		LDA	>COL_ADDRESS+BG2_OBAKE,X
		STA	>MOTOCOL+(61H*2),X
		STA	>DATACOL+(61H*2),X
		DEX
		DEX
		BPL	TSUBOIN_0040
		LDX	<ENINDX
		RTL
;
;------------------------------------------------------------------------
;-		おばけ座標セット					-
;------------------------------------------------------------------------
OBAKE_POS_SET	EQU	$
		LDA	ENXPSL,X	;obake X pos set
		STA	ENXPSL,Y
		LDA	ENYPSL,X	;   "  Y    "
		STA	ENYPSL,Y
		RTS
;
;************************************************************************
;*		move							*
;************************************************************************
TSUBO_PUSH_PLXS EQU	$
		WORD	00100H,0FF00H
TSUBO_PUSH_ENXS EQU	$
		WORD	0006CH,0FFA0H
;
TSUBOMV		EQU	$
		JSL	>ENMDCK		;mode check
;
;-------------- おばけ座標セット ----------------------------------------
		LDY	<ENWRK0,X	;(Y) <-- おばけインデックス
		JSR	OBAKE_POS_SET	;おばけ座標セット
		LDA	ENXSPD,X	;おばけＸスピードセット
		STA	ENXSPD,Y
;
;-------------- player cross check ------------------------------
		LDA	ENXSPD,X	;前回フレームＸスピードセット
		STA	ENWRKC,X
		STZ	ENXSPD,X	;Ｘスピードリセット
;
		LDA	ONLFFG
		BNE	TSBM008		;player on check ok ? ( yes:TSBM008 )
;
		LDY	ECRSFG,X
		BPL	TSBM008		;プレイヤーと衝突？ ( no:TSBM008 )
;
		LDA	PLMVSP
		PHA			;プレイヤーＸスピード保存
		JSL	>POBBGCR_3	;player OBJ BG cross check
		PLA			;プレイヤーＸスピード復帰
		BCS	TSBM008		;サイド当たり？ ( no:TSBM008 )
;
;-------------- 押しチェック ----------------------------
		CMP	PLMVSP
		BEQ	TSBM008		;サイド当たりＯＫ？ ( no:TSBM008 )
;
		PHA			;プレイヤーＸスピード保存
		CLC
		ADC	#0100H
		CMP	#0100H*2+1
		LDY	#00H
		PLA			;プレイヤーＸスピード復帰
		BCC	TSBM002
;
		BPL	TSBM000
		LDY	#02H
TSBM000		EQU	$
		LDA	!TSUBO_PUSH_ENXS,Y
		STA	ENXSPD,X
		LDA	!TSUBO_PUSH_PLXS,Y
TSBM002		EQU	$
		STA	PLMVSP
;
		INC	PUSHFG		;敵押しフラグ”ＯＮ”
		INC	PSPUSH		;押しカウンターセット
		JSL	>TRBOX_SMK0_SET
;
;-------------- tsubo move --------------------------------------
TSBM008		EQU	$
		LDY	<ENWRK0,X	;(Y) <-- おばけインデックス
		LDA	ENWRK0,Y
		CMP	#OB_WAIT
		BNE	TSBM050		;おばけ出現？ ( yes:TSBM050 )
;
;-------------- おばけ出現チェック ----------------------
		LDA	PLMODE
		CMP	#PDEM
		BNE	TSBM060		;カメック”ＯＮ”？ ( no:TSBM060 )
;
		LDA	BOSS_START
		BNE	TSBM009		;カメックスタート？ ( no:TSBM009 )
;
		LDA	PLJUMP
		BEQ	TSBM0080	;着地？ ( yes:TSBM0080 )
;
		LDA	#040H
		STA	ENTIM0,X
TSBM0080	EQU	$
		LDA	ENTIM0,X
		BNE	TSBM060		;ウェイト？ ( yes:TSBM060 )
;
		INC	BOSS_START
TSBM009		EQU	$
		BPL	TSBM060		;obake display ok X pos ? ( no:TSBM060 )
;
;-------------- おばけ出現！！ ------------------
		STZ	BOSS_START	;カメック”ＯＦＦ”
;
		LDA	#OB_INIT
		STA	ENWRK0,Y
		LDA	#0180H		;ファイヤーショットウェイトタイマーセット
		STA	ENTIM1,Y
		LDA	#0100H		;顔面アタックウェイトタイマーセット
		STA	ENTIM2,Y
		BRA	TSBM060
;
TSBM050		EQU	$
		CMP	#OB_FAIL
		BNE	TSBM060		;おばけ落下？ ( no:TSBM060 )
;
		LDA	ENGPOW,X	;重力セット
		CMP	#040H
		BCS	TSBM052
		INC	ENGPOW,X
TSBM052		EQU	$
		LDA	ENDSYL,X
		CMP	#0300H
		BCC	TSBM060		;落下終了？ ( no:TSBM060 )
;
		LDA	#OB_END		;おばけボスクリアーモードセット
		STA	ENWRK0,Y
;;;;		    LDA	    #080H+0180H	    ;ウェイトタイマーセット
		LDA	#040H		;ウェイトタイマーセット
		STA	ENTIM3,Y
		LDA	#0FFH		;ＢＧ３表示無しセット
		STA	ENYUSN,Y
;
		LDA	#047H		;[♪]
		JSL	>SOUND_3_ON
;
		LDA	#060H		;地震セット！！
		STA	TILTCT
;
;-------------- ボスクリアーウィンドウ効果セット ----------------
		LDA	ENXPSL,X
		STA	<EWORK0		;(EWK0,1) <-- Ｘ座標
		LDA	ENYPSL,X
		STA	<EWORK2		;(EWK2,3) <-- Ｙ座標
		JSL	>BSCLW_SET_B
;
		JMP	>ENCLEAR_NORETN
;
TSBM060		EQU	$
		LDA	ENCBFG,X	;おばけの着地フラグセット
		AND	#00000001B
		STA	ENCBFG,Y
		BEQ	TSBM070		;着地？ ( no:TSBM070 )
;
		STZ	ENYSPD,X
TSBM070		EQU	$
		RTL
;
;************************************************************************
;*		initial							*
;************************************************************************
OBAKEIN		EQU	$
		RTL
;
;************************************************************************
;*		move							*
;************************************************************************
OBAKEMV		EQU	$
;
;------------------------------------------------------------------------
;-		おばけＢＧ３セット＆ＯＡＭセット			-
;------------------------------------------------------------------------
		JSR	OBAKE_BG3SET	;おばけＢＧ３セット
;
;------------------------------------------------------------------------
;-		モードチェック						-
;------------------------------------------------------------------------
		JSL	>ENMDCK
;
;------------------------------------------------------------------------
;-		おばけ処理						-
;------------------------------------------------------------------------
		LDA	<ENWRK0,X
		ASL	A
		TXY
		TAX
		JSR	(!OBAKE_TBL,X)
;
;-------------- プレイヤーとＢＧ３との衝突チェック ----------------------
		TXA
		STA	CCWORK9		;(CWK9) <-- 敵インデックス
		LDA	PLDSXL
		STA	CCWORKA		;(CWKA) <-- player display X pos
		LDA	PLDSYL
		STA	CCWORKB		;(CWKB) <--	   "       Y  "
		LDA	PLSITD
		STA	CCWORKC		;(CWKC) <--    "   sit down flag
		M_CHIP	BG3_CROSS_CK
;
		LDX	<ENINDX
		LDA	CCWORKD
		BEQ	OBAKEMV_0100	;プレイヤー当たり？ ( no:OBAKEMV_0100 )
;
		LDA	#013H		;[♪]
		JSL	>SOUND_3_ON
;
		LDA	PLMVSP
		CLC
		ADC	#0FF80H
		CMP	#0FC00H
		BPL	OBAKEMV_0050	;max speed over ? ( no:OBAKEMV_0050 )
;
		LDA	#0FC00H
OBAKEMV_0050	EQU	$
		STA	PLMVSP
;
OBAKEMV_0100	EQU	$
		LDA	CCWORKA
		BEQ	OBAKEMV_0200	;赤ちゃん当たり？ ( no:OBAKEMV_0200 )
;
		LDA	ENXSPD
		CLC
		ADC	#0FF80H
		CMP	#0FE00H
		BPL	OBAKEMV_0150	;max speed over ? ( no:OBAKEMV_0150 )
;
		LDA	#0FE00H
OBAKEMV_0150	EQU	$
		STA	ENXSPD
;
;-------------- 敵とＢＧ３との衝突チェック ------------------------------
OBAKEMV_0200	EQU	$
		LDY	ECRSFG,X
		DEY
		BMI	OBAKEMV_0500	;敵当たり？ ( no:OBAKEMV_0500 )
;
		LDA	ENSHOT,Y
		BEQ	OBAKEMV_0500	;ショット？ ( no:OBAKEMV_0500 )
;
;-------------- 敵跳ね返しセット --------------------------------
		TYX
		JSL	>ENDEATH_SET_4
;
OBAKEMV_0500	EQU	$
		RTL
;
;------------------------------------------------------------------------
;-		おばけ処理テーブル					-
;------------------------------------------------------------------------
OBAKE_TBL	EQU	$
OBAK_INIT	WORD	OBAKE_INIT	;出現
OBAK_FIRE	WORD	OBAKE_FIRE	;ファイヤーショット！！
OBAK_ATCK	WORD	OBAKE_ATCK	;顔面アタック！！
OBAK_PUSH	WORD	OBAKE_PUSH	;押される〜
OBAK_FAIL	WORD	OBAKE_FAIL	;落下！！
OBAK_END	WORD	OBAKE_END	;ボスクリアーセット
OBAK_WAIT	WORD	OBAKE_WAIT	;出現ウェイト
;
OB_INIT		EQU	(OBAK_INIT-OBAKE_TBL)/2
OB_FIRE		EQU	(OBAK_FIRE-OBAKE_TBL)/2
OB_ATCK		EQU	(OBAK_ATCK-OBAKE_TBL)/2
OB_PUSH		EQU	(OBAK_PUSH-OBAKE_TBL)/2
OB_FAIL		EQU	(OBAK_FAIL-OBAKE_TBL)/2
OB_END		EQU	(OBAK_END-OBAKE_TBL)/2
OB_WAIT		EQU	(OBAK_WAIT-OBAKE_TBL)/2
;
;------------------------------------------------------------------------
;-		出現ウェイト						-
;------------------------------------------------------------------------
OBAKE_WAIT	EQU	$
		TYX
		RTS
;
;------------------------------------------------------------------------
;-		出現							-
;------------------------------------------------------------------------
OBAKE_P_ST_PT	EQU	$-1
		HEX	00,01,02,03,04,05,06
OBAKE_P_ST_PT_S HEX	07,08,09,08
OBAKE_P_ST_PT_E EQU	$
OBAKE_P_ST_TM	EQU	$-1
		HEX	01,01,01,02,02,03,04
		HEX	08,04,08,04
OB_P_STS	EQU	OBAKE_P_ST_PT_S-OBAKE_P_ST_PT
OB_P_STE	EQU	OBAKE_P_ST_PT_E-OBAKE_P_ST_PT
;
OBAKE_INIT	EQU	$
		TYX
;
;-------------- 顔のパターンセット --------------------------------------
		LDY	ENMOD2+1,X
		CPY	#(3+1)<<3
		BCC	OBAKE_INIT_0500 ;顔表示中？ ( no:OBAKE_INIT_0500 )
;
		LDA	ENTIM3,X
		BNE	OBAKE_INIT_0200 ;パターン切り替え？ ( no:OBAKE_INIT_0200 )
;
		LDY	<ENWRK4,X
		INY
		CPY	#OB_P_STE
		BCC	OBAKE_INIT_0150 ;パターンＭＡＸ？ ( no:OBAKE_INIT_0150 )
;
;;;;		    LDA	    #PMOV
		STZ	PLMODE		;プレイヤーノーマルモードセット
		LDY	#OB_P_STS
OBAKE_INIT_0150 EQU	$
		TYA
		STA	<ENWRK4,X
		LDA	!OBAKE_P_ST_PT,Y ;パターンＮｏ．セット
		AND	#00FFH
		STA	ENCHPT,X
		LDA	!OBAKE_P_ST_TM,Y ;パターン切り替えタイマーセット
		AND	#00FFH
		STA	ENTIM3,X
;
;-------------- ファイヤーショットチェック ------------------------------
OBAKE_INIT_0200 EQU	$
		LDA	ENTIM1,X
		BNE	OBAKE_INIT_0250 ;ファイヤーショット？ ( no:OBAKE_INIT_0250 )
;
;-------------- ファイヤーショットへ ----------------------------
		LDA	#OB_FIRE
		STA	<ENWRK0,X
		LDA	#OB_P_FR
		STA	<ENWRK4,X
		LDA	#03H		;ファイヤーショット数セット
		STA	ENWRK8,X
		BRA	OBAKE_INIT_0500
;
;-------------- 顔面アタックチェック ------------------------------------
OBAKE_INIT_0250 EQU	$
		LDA	ENTIM2,X
		BNE	OBAKE_INIT_0300 ;顔面アタックＯＫ？ ( no:OBAKE_INIT_0300 )
;
;-------------- 顔面アタックへ ----------------------------------
		LDA	<ENWRK2,X
		CMP	#OB_B_STS
		BCC	OBAKE_INIT_0300 ;ＢＧ３パターンＯＫ？ ( no:OBAKE_INIT_0300 )
		LDA	EPWIDX,X
		CMP	#030H
		BCS	OBAKE_INIT_0300 ;プレイヤー近い？ ( no:OBAKE_INIT_0300 )
		LDA	EPWIDY,X
		CMP	#030H
		BCS	OBAKE_INIT_0300 ;		   ”
;
;-------------- 顔面アタックへ ----------------------------------
		LDA	#OB_ATCK
		STA	<ENWRK0,X
		LDA	#OB_B_ATS
		STA	<ENWRK2,X
		STZ	ENTIM3,X
		STZ	<ENCONT,X
		BRA	OBAKE_INIT_0500
;
;-------------- 押されチェック ------------------------------------------
OBAKE_SUB	EQU	$
OBAKE_INIT_0300 EQU	$
		LDA	ENWRK6,X
		CMP	#0800H
		BCC	OBAKE_INIT_0500 ;押された？ ( no:OBAKE_INIT_0500 )
;
;-------------- 押されモードへ ----------------------------------
		LDA	#OB_PUSH
		STA	<ENWRK0,X
		STZ	<ENWRK4,X
		STZ	ENTIM3,X
;
;-------------- ＢＧ３パターンセット ------------------------------------
OBAKE_SUB_2	EQU	$
OBAKE_INIT_0500 EQU	$
		LDA	ENCBFG,X
		BNE	OBAKE_INIT_0502 ;落下？ ( no:OBAKE_INIT_0502 )
;
;-------------- 落下！！ ----------------------------------------
		LDA	#082H		;[♪]
		JSL	>SOUND_3_ON
;
		LDA	#OB_FAIL
		STA	<ENWRK0,X
		LDA	#OB_B_FLS
		STA	<ENWRK2,X
		STZ	<ENCONT,X
		LDA	ENYPSL,X
		STA	<ENWRK4,X
		LDA	#013H
		STA	ENCHPT,X
		LDA	#04H
		STA	ENTIM3,X
		JSL	>BOSS_EN_CHANGE
		RTS
;
OBAKE_INIT_0502 EQU	$
		LDA	<ENCONT,X
		CLC
		ADC	#08H
		CMP	#0100H+1
		BCC	OBAKE_INIT_0600 ;次のパターンへ？ ( no:OBAKE_INIT_0600 )
;
		LDA	<ENWRK2,X	;(Y) <-- ＢＧ３パターンＮｏ．
		INC	A
		CMP	#OB_B_STE
		BCC	OBAKE_INIT_0550 ;パターンＭＡＸ？ ( no:OBAKE_INIT_0550 )
;
		LDY	ENMOD2+1,X
		CPY	#(3+1)<<3
		BCS	OBAKE_INIT_0510 ;顔表示？ ( yes:OBAKE_INIT_0510 )
;
		LDA	ENMOD2,X	;顔表示”ＯＮ”
		CLC
		ADC	#12<<(3+8)
		STA	ENMOD2,X
;
;;;;		    LDA	    #PMOV
		STZ	PLMODE		;プレイヤーＳＴＯＰ解除！！
OBAKE_INIT_0510 EQU	$
		LDA	#OB_B_STS
OBAKE_INIT_0550 EQU	$
		STA	<ENWRK2,X
		LDA	#00
OBAKE_INIT_0600 EQU	$
		STA	<ENCONT,X
;
;-------------- 押されカウンターセット ----------------------------------
		LDA	ENXSPD,X
		DEC	A
		BPL	OBAKE_INIT_0650 ;押されてる？ ( yes:OBAKE_INIT_0650 )
;
		STZ	ENWRK6,X
		BRA	OBAKE_INIT_0700
;
OBAKE_INIT_0650 EQU	$
		CLC
		ADC	ENWRK6,X
		STA	ENWRK6,X
;
OBAKE_INIT_0700 EQU	$
		RTS
;
;------------------------------------------------------------------------
;-		ファイヤーショット！！					-
;------------------------------------------------------------------------
OBAKE_P_FR_PT	EQU	$
		HEX	06,05,04,03,02,01,0A,0B,0A,02,03,04,05,06,07
OBAKE_P_FR_TM	EQU	$
		HEX	01,01,01,01,01,01,02,10,02,01,01,01,01,01,10
OB_P_FR		EQU	OBAKE_P_FR_TM-OBAKE_P_FR_PT
;
OBAKE_FIRE	EQU	$
		TYX
;
		LDA	ENTIM1,X
		BNE	OBAKE_FIRE_0010 ;パターン切り替え？ ( no:OBAKE_FIRE_0010 )
;
		LDY	<ENWRK4,X
		BNE	OBAKE_FIRE_0100 ;パターンＭＡＸ？ ( no:OBAKE_FIRE_0100 )
;
		DEC	ENWRK8,X
		BNE	OBAKE_FIRE_0050 ;ファイヤーショット終了？ ( no:OBAKE_FIRE_0050 )
;
;-------------- ファイヤーショット終了 ----------------------------------
		LDA	#01C0H		;次のファイヤーショットまでのタイマーセット
		STA	ENTIM1,X
		STZ	<ENWRK0,X
		LDA	#OB_P_STS
		STA	<ENWRK4,X
OBAKE_FIRE_0010 EQU	$
		BRA	OBAKE_FIRE_0150
;
OBAKE_FIRE_0050 EQU	$
		LDY	#OB_P_FR
OBAKE_FIRE_0100 EQU	$
		DEY
		TYA
		STA	<ENWRK4,X
		LDA	!OBAKE_P_FR_TM,Y ;パターン切り替えタイマーセット
		AND	#00FFH
		STA	ENTIM1,X
		LDA	!OBAKE_P_FR_PT,Y ;パターンＮｏ．セット
		AND	#00FFH
		STA	ENCHPT,X
		CMP	#0BH
		BNE	OBAKE_FIRE_0150 ;ファイヤーセット？ ( no:OBAKE_FIRE_0150 )
;
;-------------- ファイヤーセット ----------------------------------------
		LDA	#OBFIR		;(A) <-- 敵Ｎｏ．
		JSL	>ENINSR		;敵エリア確保
		BCC	OBAKE_FIRE_0150 ;     ”     ？ ( no:OBAKE_FIRE_0150 )
;
		PHY			;(Y) save
		LDA	#04H		;[♪]
		JSL	>SOUND_3_ON
		PLY			;(Y) load
;
		LDA	ENXPSL,X
		CLC
		ADC	CCWORK0
		SEC
		SBC	#08H
		STA	ENXPSL,Y	;X pos set
		LDA	ENYPSL,X
		CLC
		ADC	CCWORK1
		CLC
		ADC	#06H
		STA	ENYPSL,Y	;Y pos set
		LDA	#0FE80H
		STA	ENXSPD,Y	;X speed set
		LDA	#010H
		STA	ENXPOW,Y	;X power set
		LDA	#0120H
		STA	ENTIM0,Y	;move timer set
		LDA	#02H
		STA	ENTIM1,Y	;pattern change timer set
		LDA	#020H
		STA	ENTIM2,Y	;wait timer set
;
		LDX	<ENINDX
OBAKE_FIRE_0150 EQU	$
		JMP	OBAKE_SUB_2
;
;------------------------------------------------------------------------
;-		顔面アタック！！					-
;------------------------------------------------------------------------
OBAKE_ATCK	EQU	$
		TYX
;
		LDA	<ENWRK2,X
		ASL	A
		TAY
		LDA	<ENCONT,X
		CLC
		ADC	!OBAKE_AT_CTAD,Y
		CMP	#0100H+1
		BCC	OBAKE_ATCK_0100 ;次のパターンへ？ ( no:OBAKE_INIT_0100 )
;
		LDA	<ENWRK2,X	;(Y) <-- ＢＧ３パターンＮｏ．
		INC	A
		CMP	#OB_B_ATE
		BCC	OBAKE_ATCK_0050 ;顔面アタック終了？ ( no:OBAKE_ATCK_0050 )
;
;-------------- 顔面アタック終了 ----------------------------------------
		STZ	<ENWRK0,X
		LDA	#080H		;次の顔面アタックまでのウェイトタイマーセット
		STA	ENTIM2,X
;
		LDA	#OB_B_STS
OBAKE_ATCK_0050 EQU	$
		STA	<ENWRK2,X
		CMP	#OB_B_ATS+1
		BNE	OBAKE_ATCK_0060 ;顔面アタックサウンドセット？ ( no:OBAKE_ATCK_0060 )
;
;-------------- 顔面アタックサウンドセット ------------------------------
		LDA	#083H	;[♪]
		JSL	>SOUND_3_ON
;
OBAKE_ATCK_0060 EQU	$
		LDA	#00
OBAKE_ATCK_0100 EQU	$
		STA	<ENCONT,X
OBAKE_ATCK_0150 EQU	$
		RTS
;
;------------------------------------------------------------------------
;-		押される〜						-
;------------------------------------------------------------------------
OBAKE_P_PU_PT	EQU	$-1
		HEX	07,06,05,0C,0D,0E,0F
OBAKE_P_PU_PT_S HEX	10,11,10,0F
OBAKE_P_PU_PT_E EQU	$
OBAKE_P_PU_TM	EQU	$-1
		HEX	10,01,01,01,01,01,10
		HEX	02,20,02,10
OB_P_PUS	EQU	OBAKE_P_PU_PT_S-OBAKE_P_PU_PT
OB_P_PUE	EQU	OBAKE_P_PU_PT_E-OBAKE_P_PU_PT
;
OBAKE_PUSH	EQU	$
		TYX
;
		LDA	ENTIM3,X
		BNE	OBAKE_PUSH_0150 ;パターン切り替え？ ( no:OBAKE_PUSH_0150 )
;
		LDY	<ENWRK4,X
		INY
		CPY	#OB_P_PUE
		BCC	OBAKE_PUSH_0100 ;パターンＭＡＸ？ ( no:OBAKE_PUSH_0100 )
;
;-------------- 押される〜モード終了 ------------------------------------
		STZ	<ENWRK0,X
		STZ	ENWRK6,X
		LDA	#OB_P_STS
		STA	<ENWRK4,X
		STZ	ENTIM2,X	;顔面アタックＯＫセット
		BRA	OBAKE_PUSH_0150
;
OBAKE_PUSH_0100 EQU	$
		TYA
		STA	<ENWRK4,X
		LDA	!OBAKE_P_PU_PT,Y ;パターンＮｏ．セット
		AND	#00FFH
		STA	ENCHPT,X
		LDA	!OBAKE_P_PU_TM,Y ;パターン切り替えタイマーセット
		AND	#00FFH
		STA	ENTIM3,X
;
OBAKE_PUSH_0150 EQU	$
		JMP	OBAKE_SUB_2
;
;------------------------------------------------------------------------
;-		落下！！						-
;------------------------------------------------------------------------
OBAKE_P_FL_TM	EQU	$-13H
		HEX	02,FF
;
OBAKE_FAIL	EQU	$
		TYX
;
;-------------- ＢＧ３パターンセット ------------------------------------
		LDA	ENYPSL,X
		SEC
		SBC	<ENWRK4,X
		CMP	#0FCH-07EH	;[ 0FCH:0FF04H , 07EH:0FF82H ]
		BCS	OBAKE_FAIL_0300 ;のび戻り？ ( yes:OBAKE_FAIL_0300 )
;
;-------------- のびる ------------------------------------------
		XBA
		STA	4204H
		LDY	#0FCH-07EH
		STY	4206H		;[ Ans - OBAKE_FAIL_0150 ]
;wwwwwwwwwwwwww 除算ウェイト wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
;
;-------------- 顔のパターンセット --------------------------------------
		LDA	ENTIM3,X
		BNE	OBAKE_FAIL_0150 ;パターン切り替え？ ( no:OBAKE_FAIL_0150 )
;
		LDY	ENCHPT,X
		CPY	#14H
		BEQ	OBAKE_FAIL_0100 ;ＭＡＸパターン？ ( yes:OBAKE_FAIL_0100 )
		INY
OBAKE_FAIL_0100 EQU	$
		TYA
		STA	ENCHPT,X	 ;パターンＮｏ．セット
		LDA	!OBAKE_P_FL_TM,Y ;パターン切り替えタイマーセット
		AND	#00FFH
		STA	ENTIM3,X
		BRA	OBAKE_FAIL_0200
;
;wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
OBAKE_FAIL_0150 EQU	$
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
OBAKE_FAIL_0200 EQU	$
		LDA	4214H		;[ Ans ]
		STA	<ENCONT,X
		RTS
;
;-------------- ちじむ ------------------------------------------
OBAKE_FAIL_0300 EQU	$
		LDA	<ENWRK2,X
		CMP	#OB_B_FLS
		BNE	OBAKE_FAIL_0350 ;ちじみの初期セット？ ( no:OBAKE_FAIL_0350 )
;
		INC	<ENWRK2,X
		STZ	<ENCONT,X
OBAKE_FAIL_0350 EQU	$
		LDA	<ENCONT,X
		CMP	#0100H
		BCS	OBAKE_FAIL_0400
;;;;		    CLC
		ADC	#010H
		STA	<ENCONT,X
OBAKE_FAIL_0400 EQU	$
		RTS
;
;------------------------------------------------------------------------
;-		ボスクリアーセット					-
;------------------------------------------------------------------------
OBAKE_END	EQU	$
		TYX
;
		LDA	ENTIM3,X
		BEQ	OBAKE_END_0010	;ウェイト？ ( no:OBAKE_END_0010 )
		RTS
;
;-------------- 破片セット --------------------------------------
OBAKE_END_0010	EQU	$
		LDA	SCCH1
		CLC
		ADC	#078H
		STA	<EWORK0
		LDA	SCCV1
		CLC
		ADC	#0C0H
		STA	<EWORK2
		JSL	>TRBOX_BREAK
;
		JSL	>ENCLEAR_NORETN
		PLA			;[ pull pull return !! ]
		RTL
;
;------------------------------------------------------------------------
;-		プレイヤーデモモードセット				-
;------------------------------------------------------------------------
TO_PLDEMO	EQU	$
		STZ	PLMVSP
TO_PLDEMO_2	EQU	$
		LDA	#PDEM		;プレイヤーＳＴＯＰ！！
		STA	PLMODE
		STZ	P_KEYC1L
		STZ	P_KEYC2L
		STZ	PLFLSH
		STZ	PLNAGE
		STZ	PLNAGL
		STZ	PLNAGP
OBAKE_END_0050	EQU	$
		RTL
;
;------------------------------------------------------------------------
;-		おばけＢＧ３セット＆ＯＡＭセット			-
;------------------------------------------------------------------------
OBAKE_BG3SET	EQU	$
		LDY	ENYUSN,X
		BPL	OBAKE_BG3SET_FF ;おばけ表示ＯＫ？ ( yes:OBAKE_BG3SET_FF )
		RTS
;
OBAKE_BG3SET_FF EQU	$
		LDA	ENWRK0,X
		CMP	#OB_WAIT
		BNE	OBAKE_BG3SET_00 ;おばけＢＧ３セットＯＫ？ ( yes:OBAKE_BG3SET_00 )
;
		LDA	#08H
		STA	<EWORK0		;(EWK0) <-- 花のＯＡＭＸ座標補正値
		STZ	<EWORK2
		JSR	OBAKE_BG3SET_02
		PLA			;[ pull pull return !! ]
		RTL
;
;-------------- ＢＧ３セット --------------------------------------------
OBAKE_BG3SET_00 EQU	$
		LDA	<ENWRK2,X
		ASL	A
		TAY
		LDA	!OBAKE_BG3_ADR,Y
		STA	R1		;(R1) <-- モーフィング元データアドレス
		LDA	!OBAKE_BG3_ADR+2,Y
		STA	R2		;(R2) <-- モーフィング先データアドレス
		LDA	#BANK OBAKE_BG3_DT
		STA	R0		;(R0)  <-- モーフィングデータアドレス（Ｂ）
		LDA	#OBAKE_BG3_DT_N
		STA	R3		;(R3)  <-- ポイント数
		STZ	R4		;(R4)  <-- 中心ポイントＮｏ．
		LDA	#BG3_POLYGON_DT
		STA	R5		;(R5)  <-- モーフィングデータ格納アドレス
		LDA	<ENCONT,X
		STA	R6		;(R6)  <-- モーフィング率
		LDA	ENDSXL,X
		CLC
		ADC	#02H
		STA	CREG0		;表示Ｘ座標セット
		LDA	ENDSYL,X
		SEC
		SBC	#08H
		STA	CREG1		;表示Ｙ座標セット
		M_CHIP	BG3_MORPHING_N
;
		JSL	>M_DMA_BFST
		LWORD	HDMABUF		;転送先アドレス
		LWORD	HDMABF		;転送元アドレス
;;;;		    WORD    (0B2H*2*2)	    ;転送バイト数
		WORD	(0D2H*2*2)	;転送バイト数
;
		LDX	<ENINDX
;
;-------------- ＰＰＵレジスタセット ------------------------------------
		LDA	#00000010B	;ＢＧ２表示セット
		STA	SUBSEL
		LDA	#01100101B	;加算フラグセット
		STA	SUBADF
		LDA	#00011000B
		TSB	HD420C		;H-DMA "ON" !!
;
;-------------- ＯＡＭセット --------------------------------------------
		LDA	>BG3_POLYGON_DT+((OBAKE_BG3_DT_N-1)*4)
		STA	<EWORK0		;(EWK0) <-- 花のＯＡＭＸ座標補正値
		LDA	>BG3_POLYGON_DT+((OBAKE_BG3_DT_N-1)*4)+2
		STA	<EWORK2		;(EWK2) <-- 花のＯＡＭＹ座標補正値
;
OBAKE_BG3SET_02 EQU	$
;
		I16
;
		LDY	ENOAML,X	;(Y) <-- ＯＡＭポインター
		LDX	#3		;(X) <-- ＯＡＭ数
OBAKE_BG3SET_10 EQU	$
		LDA	SOAM_DX,Y	;花のＯＡＭＸ座標補正
		CLC
		ADC	<EWORK0
		STA	SOAM_DX,Y
		LDA	SOAM_DX+2,Y	;花のＯＡＭＹ座標補正
		CLC
		ADC	<EWORK2
		STA	SOAM_DX+2,Y
		TYA
		CLC
		ADC	#08
		TAY
		DEX
		BNE	OBAKE_BG3SET_10
;
		LDX	<ENINDX
		LDA	ENMOD2,X
		CMP	#(3+1)<<(3+8)
		BCC	OBAKE_BG3SET_30 ;花だけ表示？ ( yes:OBAKE_BG3SET_30 )
;
		LDA	>BG3_POLYGON_DT+((OBAKE_BG3_DT_N-2)*4)
		SEC
		SBC	#010H
		STA	CCWORK0		;(CWK0) <-- おばけの顔ＯＡＭＸ座標補正値
		LDA	>BG3_POLYGON_DT+((OBAKE_BG3_DT_N-2)*4)+2
		SEC
		SBC	#04H
		STA	CCWORK1		;(CWK2) <-- おばけの顔ＯＡＭＹ座標補正値
;
		LDX	#12		;(X) <-- ＯＡＭ数
OBAKE_BG3SET_20 EQU	$
		LDA	SOAM_DX,Y	;ウンババの目ＯＡＭＸ座標補正
		CLC
		ADC	CCWORK0
		STA	SOAM_DX,Y
		LDA	SOAM_DX+2,Y	;ウンババの目ＯＡＭＹ座標補正
		CLC
		ADC	CCWORK1
		STA	SOAM_DX+2,Y
		TYA
		CLC
		ADC	#08
		TAY
		DEX
		BNE	OBAKE_BG3SET_20
;
OBAKE_BG3SET_30 EQU	$
;
		I8
;
		LDX	<ENINDX
		RTS
;
;------------------------------------------------------------------------
;-		おばけＢＧ３データ					-
;------------------------------------------------------------------------
OBAKE_BG3_ADR	EQU	$
		WORD	OBAKE_BG3_DT_0	;[0] 水平
		WORD	OBAKE_BG3_DT_1	;[1] 出現パターン．１
		WORD	OBAKE_BG3_DT_2	;[2]	   ”	 ．２
		WORD	OBAKE_BG3_DT_3	;[3]	   ”	 ．３
		WORD	OBAKE_BG3_DT_4	;[4]	   ”	 ．４
		WORD	OBAKE_BG3_DT_5	;[5]	   ”	 ．５
		WORD	OBAKE_BG3_DT_6	;[6]	   ”	 ．６
OBAKE_BG3_ST_S	WORD	OBAKE_BG3_DT_7	;[7]	   ”	 ．７
		WORD	OBAKE_BG3_DT_8	;[8]	   ”	 ．８
OBAKE_BG3_ST_E	WORD	OBAKE_BG3_DT_7	;[9]	   ”	 ．７
;
OBAKE_BG3_AT_S	WORD	OBAKE_BG3_DT_7	;[8] 出現パターン．７
		WORD	OBAKE_BG3_DT_A	;[8] 顔面ショット準備
		WORD	OBAKE_BG3_DT_B	;[9] 顔面ショット
OBAKE_BG3_AT_E	WORD	OBAKE_BG3_DT_7	;[A] ダミー
;
OBAKE_BG3_FL_S	WORD	OBAKE_BG3_DT_7	;[B] 落下！！
		WORD	OBAKE_BG3_DT_C	;[C]   ”
		WORD	OBAKE_BG3_DT_3	;[D]   ”
OB_B_STS	EQU	(OBAKE_BG3_ST_S-OBAKE_BG3_ADR)/2
OB_B_STE	EQU	(OBAKE_BG3_ST_E-OBAKE_BG3_ADR)/2
OB_B_ATS	EQU	(OBAKE_BG3_AT_S-OBAKE_BG3_ADR)/2
OB_B_ATE	EQU	(OBAKE_BG3_AT_E-OBAKE_BG3_ADR)/2
OB_B_FLS	EQU	(OBAKE_BG3_FL_S-OBAKE_BG3_ADR)/2
;
OBAKE_AT_CTAD	EQU	$-((OB_B_STE+1)*2)
		WORD	0008H,0010H,0008H,0008H
;
OBAKE_BG3_DT	EQU	$
OBAKE_BG3_DT_0	EQU	$
;file <kage-obake-8bitA.CH7>
;screen no.<0>
		BYTE	000H,000H, 000H,000H, 000H,000H, 000H,000H
		BYTE	000H,000H, 000H,000H, 001H,000H, 001H,000H
		BYTE	001H,000H, 001H,000H, 001H,000H, 001H,000H
		BYTE	001H,000H, 001H,000H, 002H,000H, 002H,000H
		BYTE	002H,000H, 002H,000H, 003H,000H, 003H,000H
		BYTE	003H,000H, 003H,000H, 004H,000H, 004H,000H
		BYTE	004H,000H, 004H,000H, 006H,000H, 006H,000H
		BYTE	006H,000H, 006H,000H, 008H,000H, 008H,000H
		BYTE	008H,000H, 008H,000H, 00AH,000H, 00AH,000H
		BYTE	00AH,000H, 00AH,000H, 00BH,000H, 00BH,000H
		BYTE	00BH,000H, 00BH,000H, 00CH,000H, 00CH,000H
		BYTE	00CH,000H, 00CH,000H, 00DH,000H, 00DH,000H
		BYTE	00DH,000H, 00DH,000H, 00DH,000H, 00DH,000H
		BYTE	00DH,000H, 00DH,000H, 00EH,000H, 00EH,000H
		BYTE	00EH,000H, 00EH,000H, 00EH,000H, 00EH,000H
		BYTE	00EH,000H, 00EH,000H, 00EH,000H, 00FH,000H
		BYTE	00FH,000H, 008H,000H
OBAKE_BG3_DT_E	EQU	$
OBAKE_BG3_DT_N	EQU	(OBAKE_BG3_DT_E-OBAKE_BG3_DT)/2
;
OBAKE_BG3_DT_1	EQU	$
;file <kage-obake-8bitA.CH7>
;screen no.<0>
		BYTE	000H,000H, 000H,000H, 000H,000H, 000H,000H
		BYTE	000H,000H, 000H,000H, 001H,000H, 001H,000H
		BYTE	001H,000H, 001H,000H, 001H,000H, 001H,000H
		BYTE	001H,000H, 001H,000H, 002H,0FFH, 002H,0FFH
		BYTE	002H,0FFH, 002H,0FFH, 003H,0FFH, 003H,0FFH
		BYTE	003H,0FFH, 003H,0FFH, 004H,0FEH, 004H,0FEH
		BYTE	004H,0FEH, 004H,0FEH, 006H,0FEH, 006H,0FEH
		BYTE	006H,0FEH, 006H,0FEH, 008H,0FEH, 008H,0FEH
		BYTE	008H,0FEH, 008H,0FEH, 00AH,0FEH, 00AH,0FEH
		BYTE	00AH,0FEH, 00AH,0FEH, 00BH,0FEH, 00BH,0FEH
		BYTE	00BH,0FEH, 00BH,0FEH, 00CH,0FFH, 00CH,0FFH
		BYTE	00CH,0FFH, 00CH,0FFH, 00DH,0FFH, 00DH,0FFH
		BYTE	00DH,0FFH, 00DH,0FFH, 00DH,0FFH, 00DH,0FFH
		BYTE	00DH,0FFH, 00DH,0FFH, 00EH,000H, 00EH,000H
		BYTE	00EH,000H, 00EH,000H, 00EH,000H, 00EH,000H
		BYTE	00EH,000H, 00EH,000H, 00EH,000H, 00FH,000H
		BYTE	00FH,000H, 008H,000H
;
OBAKE_BG3_DT_2	EQU	$
;file <kage-obake-8bitA.CH7>
;screen no.<1>
		BYTE	000H,000H, 000H,000H, 000H,000H, 002H,0FFH
		BYTE	002H,0FFH, 002H,0FFH, 003H,0FDH, 003H,0FDH
		BYTE	003H,0FDH, 003H,0FDH, 004H,0FBH, 004H,0FBH
		BYTE	004H,0FBH, 004H,0FBH, 005H,0F8H, 005H,0F8H
		BYTE	005H,0F8H, 005H,0F8H, 005H,0F5H, 005H,0F5H
		BYTE	005H,0F5H, 005H,0F5H, 006H,0F2H, 006H,0F2H
		BYTE	006H,0F2H, 006H,0F2H, 008H,0F1H, 008H,0F1H
		BYTE	008H,0F1H, 008H,0F1H, 00BH,0F1H, 00BH,0F1H
		BYTE	00BH,0F1H, 00BH,0F1H, 00FH,0F1H, 00FH,0F1H
		BYTE	00FH,0F1H, 00FH,0F1H, 010H,0F2H, 010H,0F2H
		BYTE	010H,0F2H, 010H,0F2H, 012H,0F3H, 012H,0F3H
		BYTE	012H,0F3H, 012H,0F3H, 013H,0F6H, 013H,0F6H
		BYTE	013H,0F6H, 013H,0F6H, 012H,0F9H, 012H,0F9H
		BYTE	012H,0F9H, 012H,0F9H, 012H,0FBH, 012H,0FBH
		BYTE	012H,0FBH, 012H,0FBH, 00FH,0FEH, 00FH,0FEH
		BYTE	00FH,0FEH, 00FH,0FEH, 00FH,0FEH, 00FH,000H
		BYTE	00FH,000H, 00BH,0F5H
;
OBAKE_BG3_DT_3	EQU	$
;file <kage-obake-8bitA.CH7>
;screen no.<2>
		BYTE	000H,000H, 000H,0FFH, 0FFH,0FEH, 0FFH,0FDH
		BYTE	0FEH,0FCH, 0FEH,0FBH, 0FEH,0FAH, 0FEH,0F9H
		BYTE	0FFH,0F8H, 0FFH,0F6H, 000H,0F5H, 000H,0F3H
		BYTE	000H,0F1H, 000H,0F0H, 0FFH,0EFH, 0FEH,0EEH
		BYTE	0FDH,0EDH, 0FCH,0EBH, 0FBH,0EAH, 0FBH,0E9H
		BYTE	0FAH,0E8H, 0FAH,0E7H, 0FAH,0E5H, 0FBH,0E4H
		BYTE	0FCH,0E3H, 0FDH,0E2H, 0FFH,0E1H, 000H,0E1H
		BYTE	002H,0E1H, 003H,0E1H, 005H,0E1H, 007H,0E1H
		BYTE	009H,0E1H, 00AH,0E1H, 00CH,0E2H, 00DH,0E3H
		BYTE	00FH,0E3H, 010H,0E3H, 011H,0E4H, 012H,0E4H
		BYTE	014H,0E5H, 015H,0E6H, 016H,0E7H, 016H,0E8H
		BYTE	017H,0E9H, 017H,0EBH, 017H,0EDH, 016H,0EFH
		BYTE	015H,0F0H, 013H,0F1H, 011H,0F2H, 010H,0F3H
		BYTE	00FH,0F4H, 00EH,0F5H, 00DH,0F6H, 00CH,0F7H
		BYTE	00CH,0F9H, 00CH,0FAH, 00CH,0FBH, 00CH,0FCH
		BYTE	00CH,0FDH, 00DH,0FEH, 00EH,0FFH, 00FH,000H
		BYTE	00FH,000H, 005H,0E5H
;
OBAKE_BG3_DT_4	EQU	$
;file <kage-obake-8bitA.CH7>
;screen no.<3>
		BYTE	000H,000H, 001H,0FEH, 002H,0FDH, 002H,0FCH
		BYTE	003H,0FBH, 003H,0FAH, 003H,0F7H, 002H,0F6H
		BYTE	001H,0F4H, 000H,0F3H, 0FFH,0F2H, 0FEH,0F1H
		BYTE	0FCH,0EFH, 0FBH,0EDH, 0FAH,0EBH, 0FAH,0E9H
		BYTE	0F8H,0E7H, 0F5H,0E6H, 0F2H,0E4H, 0F1H,0E2H
		BYTE	0F0H,0E0H, 0F0H,0DEH, 0F0H,0DBH, 0F2H,0D9H
		BYTE	0F4H,0D7H, 0F7H,0D5H, 0F9H,0D4H, 0FBH,0D2H
		BYTE	0FDH,0D1H, 0FFH,0D1H, 001H,0D1H, 003H,0D1H
		BYTE	005H,0D1H, 007H,0D2H, 009H,0D3H, 00AH,0D4H
		BYTE	00CH,0D5H, 00EH,0D5H, 010H,0D6H, 012H,0D7H
		BYTE	013H,0D9H, 014H,0DAH, 014H,0DCH, 014H,0DEH
		BYTE	015H,0E0H, 016H,0E1H, 018H,0E3H, 019H,0E5H
		BYTE	01AH,0E7H, 01AH,0E9H, 01BH,0EBH, 01BH,0EDH
		BYTE	01AH,0EFH, 018H,0F1H, 016H,0F3H, 015H,0F5H
		BYTE	016H,0F7H, 017H,0F9H, 017H,0FBH, 016H,0FDH
		BYTE	014H,0FEH, 012H,0FFH, 010H,0FFH, 00FH,000H
		BYTE	00FH,000H, 001H,0D5H
;
OBAKE_BG3_DT_5	EQU	$
;file <kage-obake-8bitB.CH7>
;screen no.<0>
		BYTE	000H,000H, 0FFH,0FFH, 0FDH,0FFH, 0FBH,0FDH
		BYTE	0FAH,0FBH, 0F9H,0F9H, 0F8H,0F7H, 0F8H,0F5H
		BYTE	0F8H,0F3H, 0F9H,0F1H, 0F9H,0EFH, 0F9H,0ECH
		BYTE	0F9H,0E9H, 0F7H,0E7H, 0F5H,0E6H, 0F3H,0E4H
		BYTE	0F2H,0E1H, 0F3H,0DDH, 0F2H,0D9H, 0EFH,0D6H
		BYTE	0EEH,0D3H, 0EDH,0CEH, 0EEH,0CAH, 0EFH,0C6H
		BYTE	0F1H,0C3H, 0F4H,0C0H, 0F6H,0BEH, 0F8H,0BBH
		BYTE	0FCH,0BAH, 000H,0B9H, 004H,0B9H, 007H,0B9H
		BYTE	00BH,0BAH, 00EH,0BAH, 010H,0BBH, 012H,0BCH
		BYTE	014H,0BDH, 016H,0BFH, 018H,0C1H, 018H,0C3H
		BYTE	017H,0C6H, 018H,0C8H, 01CH,0CAH, 01FH,0CCH
		BYTE	020H,0D0H, 021H,0D2H, 022H,0D6H, 020H,0DBH
		BYTE	01DH,0DEH, 01AH,0E2H, 018H,0E5H, 016H,0E7H
		BYTE	014H,0E9H, 013H,0EBH, 011H,0EDH, 010H,0EFH
		BYTE	00FH,0F1H, 00EH,0F4H, 00DH,0F6H, 00DH,0F9H
		BYTE	00EH,0FBH, 00EH,0FDH, 00FH,0FFH, 00FH,000H
		BYTE	00FH,000H, 004H,0BDH
;
OBAKE_BG3_DT_6	EQU	$
;file <kage-obake-8bitB.CH7>
;screen no.<1>
		BYTE	000H,000H, 0FFH,0FEH, 0FFH,0FBH, 0FEH,0F8H
		BYTE	0FEH,0F5H, 0FCH,0F2H, 0FAH,0EFH, 0F9H,0ECH
		BYTE	0F8H,0E9H, 0F8H,0E6H, 0F9H,0E3H, 0F8H,0E0H
		BYTE	0F7H,0DCH, 0F5H,0D7H, 0F4H,0D4H, 0F1H,0D3H
		BYTE	0EEH,0D0H, 0EDH,0CCH, 0EDH,0C8H, 0EEH,0C3H
		BYTE	0EAH,0C0H, 0E9H,0BAH, 0E9H,0B5H, 0EAH,0B0H
		BYTE	0ECH,0ABH, 0EFH,0A7H, 0F3H,0A3H, 0FAH,09EH
		BYTE	000H,09CH, 005H,09AH, 00FH,099H, 015H,09AH
		BYTE	01AH,09CH, 01EH,09EH, 021H,0A0H, 023H,0A3H
		BYTE	025H,0A5H, 026H,0A8H, 026H,0ACH, 027H,0B0H
		BYTE	026H,0B5H, 024H,0BAH, 020H,0BDH, 01CH,0C0H
		BYTE	018H,0C5H, 016H,0CAH, 015H,0D0H, 017H,0D5H
		BYTE	01AH,0D9H, 01CH,0DDH, 01CH,0E0H, 01CH,0E3H
		BYTE	01CH,0E6H, 01CH,0E9H, 01BH,0EBH, 01AH,0EDH
		BYTE	019H,0F0H, 018H,0F3H, 017H,0F6H, 015H,0F9H
		BYTE	013H,0FBH, 012H,0FDH, 010H,0FFH, 00FH,000H
		BYTE	00FH,000H, 00FH,09DH
;
OBAKE_BG3_DT_7	EQU	$
;file <kage-obake-8bitB.CH7>
;screen no.<2>
		BYTE	000H,000H, 000H,0FDH, 0FFH,0FAH, 0FFH,0F7H
		BYTE	0FFH,0F4H, 000H,0F1H, 0FFH,0EEH, 0FEH,0EBH
		BYTE	0FEH,0E8H, 0FBH,0E5H, 0FAH,0E1H, 0F7H,0DDH
		BYTE	0F2H,0D7H, 0EEH,0D1H, 0ECH,0CCH, 0EAH,0C7H
		BYTE	0EBH,0C0H, 0EBH,0BAH, 0E9H,0B5H, 0E8H,0B0H
		BYTE	0E6H,0AAH, 0E6H,0A4H, 0E7H,09EH, 0EAH,098H
		BYTE	0ECH,092H, 0EEH,08CH, 0F2H,088H, 0F6H,085H
		BYTE	0FAH,083H, 0FFH,082H, 005H,082H, 00AH,083H
		BYTE	00FH,084H, 013H,086H, 017H,088H, 019H,08AH
		BYTE	01CH,08DH, 01FH,090H, 021H,093H, 023H,096H
		BYTE	024H,09CH, 025H,0A1H, 024H,0A7H, 022H,0ACH
		BYTE	01EH,0B0H, 01CH,0B8H, 01DH,0BEH, 020H,0C4H
		BYTE	023H,0CAH, 024H,0D0H, 023H,0D6H, 023H,0DAH
		BYTE	021H,0DEH, 01FH,0E2H, 01CH,0E5H, 019H,0E9H
		BYTE	017H,0ECH, 016H,0F0H, 015H,0F4H, 014H,0F7H
		BYTE	012H,0F9H, 00FH,0FCH, 00CH,0FEH, 00BH,000H
		BYTE	0FEH,098H, 005H,086H
;
OBAKE_BG3_DT_8	EQU	$
;file <kage-obake-8bitB.CH7>
;screen no.<3>
		BYTE	000H,000H, 001H,0FDH, 000H,0FAH, 0FFH,0F7H
		BYTE	0FCH,0F4H, 0FAH,0F1H, 0F8H,0EEH, 0F6H,0EBH
		BYTE	0F5H,0E8H, 0F5H,0E4H, 0F4H,0DFH, 0F4H,0DAH
		BYTE	0F3H,0D5H, 0F3H,0D0H, 0F2H,0CBH, 0F1H,0C6H
		BYTE	0EDH,0C0H, 0EAH,0BAH, 0E8H,0B6H, 0E6H,0B0H
		BYTE	0E7H,0AAH, 0E8H,0A4H, 0E8H,09DH, 0EBH,097H
		BYTE	0EEH,091H, 0F1H,08CH, 0F6H,088H, 0FAH,085H
		BYTE	0FEH,083H, 001H,082H, 006H,082H, 00BH,082H
		BYTE	00FH,083H, 013H,084H, 017H,086H, 01BH,088H
		BYTE	01EH,08AH, 021H,08DH, 023H,091H, 024H,096H
		BYTE	024H,09CH, 024H,0A1H, 022H,0A7H, 022H,0ABH
		BYTE	024H,0B1H, 024H,0B8H, 021H,0BFH, 01EH,0C5H
		BYTE	01EH,0CCH, 01FH,0D0H, 020H,0D6H, 021H,0DBH
		BYTE	022H,0DFH, 022H,0E3H, 022H,0E6H, 022H,0EAH
		BYTE	020H,0EDH, 01EH,0F0H, 01BH,0F4H, 017H,0F7H
		BYTE	014H,0F9H, 010H,0FCH, 00DH,0FEH, 00BH,000H
		BYTE	0F9H,09CH, 006H,086H
;
OBAKE_BG3_DT_A	EQU	$
;file <kage-obake-8bit-2.CH7>
;screen no.<2>
		BYTE	000H,000H, 000H,0FEH, 001H,0FBH, 002H,0F9H
		BYTE	003H,0F7H, 005H,0F4H, 006H,0F1H, 006H,0EEH
		BYTE	005H,0EAH, 004H,0E6H, 003H,0E2H, 002H,0DFH
		BYTE	001H,0DBH, 0FFH,0D7H, 0FDH,0D3H, 0FBH,0CFH
		BYTE	0FAH,0CCH, 0F9H,0C8H, 0F8H,0C4H, 0F8H,0BDH
		BYTE	0F8H,0B6H, 0F9H,0B0H, 0FBH,0ABH, 0FDH,0A7H
		BYTE	000H,0A3H, 003H,0A0H, 007H,09EH, 00AH,09DH
		BYTE	00EH,09CH, 012H,09BH, 016H,09BH, 01AH,09BH
		BYTE	01EH,09CH, 022H,09DH, 026H,09EH, 02AH,0A0H
		BYTE	02EH,0A2H, 032H,0A4H, 035H,0A6H, 038H,0A9H
		BYTE	03CH,0ADH, 040H,0B2H, 044H,0B7H, 047H,0BBH
		BYTE	04AH,0C1H, 04DH,0C7H, 04FH,0CEH, 051H,0D3H
		BYTE	052H,0D7H, 053H,0DCH, 053H,0E0H, 053H,0E4H
		BYTE	052H,0E8H, 050H,0ECH, 04DH,0F1H, 04AH,0F4H
		BYTE	047H,0F7H, 043H,0F9H, 03EH,0FBH, 037H,0FDH
		BYTE	030H,0FFH, 027H,000H, 01AH,000H, 00FH,000H
		BYTE	037H,0E0H, 016H,09FH
;
OBAKE_BG3_DT_B	EQU	$
;file <kage-obake-8bit-2.CH7>
;screen no.<3>
		BYTE	000H,000H, 0E8H,000H, 0CFH,000H, 0B8H,000H
		BYTE	0AAH,000H, 09EH,0FFH, 097H,0FEH, 092H,0F9H
		BYTE	090H,0F3H, 090H,0EDH, 091H,0E9H, 095H,0E4H
		BYTE	09AH,0E0H, 0A2H,0DEH, 0A9H,0DDH, 0B1H,0DCH
		BYTE	0B8H,0DBH, 0BEH,0D8H, 0C2H,0D5H, 0C6H,0D1H
		BYTE	0C9H,0CEH, 0CCH,0CAH, 0CFH,0C6H, 0D2H,0C2H
		BYTE	0D6H,0BEH, 0D9H,0BAH, 0DCH,0B7H, 0E0H,0B4H
		BYTE	0E4H,0B2H, 0E9H,0B0H, 0EDH,0B0H, 0F1H,0B0H
		BYTE	0F6H,0B1H, 0FAH,0B2H, 0FEH,0B4H, 002H,0B6H
		BYTE	005H,0B8H, 007H,0BAH, 009H,0BDH, 00BH,0C2H
		BYTE	00CH,0C6H, 00CH,0CBH, 00BH,0CFH, 00AH,0D3H
		BYTE	007H,0D7H, 004H,0DAH, 001H,0DCH, 0FEH,0DFH
		BYTE	0FBH,0E2H, 0F7H,0E5H, 0F4H,0E6H, 0F1H,0E8H
		BYTE	0EEH,0EDH, 0EFH,0F1H, 0F2H,0F4H, 0F5H,0F5H
		BYTE	0FAH,0F7H, 000H,0F8H, 004H,0F8H, 008H,0F9H
		BYTE	00BH,0FAH, 00DH,0FBH, 00FH,0FEH, 00FH,000H
		BYTE	09FH,0F0H, 0EDH,0B4H
;
OBAKE_BG3_DT_C	EQU	$
;file <kage-obake-8bitB.CH7>
;screen no.<2>
		BYTE	000H,000H, 000H,0FAH, 000H,0F4H, 000H,0EEH
		BYTE	000H,0E8H, 000H,0E2H, 000H,0DCH, 0FFH,0D6H
		BYTE	0FFH,0D0H, 0FCH,0CAH, 0FCH,0C2H, 0F9H,0BAH
		BYTE	0F5H,0AEH, 0F2H,0A2H, 0F0H,098H, 0EFH,08EH
		BYTE	0F0H,080H, 0F0H,074H, 0EEH,06AH, 0EDH,060H
		BYTE	0ECH,054H, 0ECH,048H, 0ECH,03CH, 0EFH,030H
		BYTE	0F0H,024H, 0F2H,018H, 0F5H,010H, 0F8H,00AH
		BYTE	0FCH,006H, 000H,004H, 004H,004H, 008H,006H
		BYTE	00CH,008H, 00FH,00CH, 012H,010H, 014H,014H
		BYTE	016H,01AH, 018H,020H, 01AH,026H, 01CH,02CH
		BYTE	01CH,038H, 01DH,042H, 01CH,04EH, 01BH,058H
		BYTE	018H,060H, 016H,070H, 017H,07CH, 019H,088H
		BYTE	01CH,094H, 01CH,0A0H, 01CH,0ACH, 01CH,0B4H
		BYTE	01AH,0BCH, 018H,0C4H, 016H,0CAH, 014H,0D2H
		BYTE	012H,0D8H, 011H,0E0H, 010H,0E8H, 010H,0EEH
		BYTE	00EH,0F2H, 00CH,0F8H, 009H,0FCH, 008H,000H
		BYTE	0FFH,030H, 004H,008H
;
;
;************************************************************************
;*		obake fire initial					*
;************************************************************************
OBFIRIN		EQU	$
		RTL
;
;************************************************************************
;*		obake fire move						*
;************************************************************************
OBFRPCP		EQU	$
		WORD	08H*2,0CH*2
OBFRPRS		EQU	$
		WORD	04H*2,0BH*2
;
OBFRPT		EQU	$
		WORD	00H,01H,02H,03H,04H,05H,04H,05H,03H,02H,01H,00H
OBFRAT		EQU	$
		WORD	00H,00H,00H,00H,00H,00H,40H,40H,00H,00H,00H,00H
OBFRTM		EQU	$
		WORD	02H,02H,02H,02H,08H,08H,08H,08H,06H,06H,06H,06H
;
OBFRMXS		EQU	$
		WORD	0FF80H,00080H
OBFRADS		EQU	$
		WORD	0FF00H,00100H
;
OBFIRMV		EQU	$
		JSL	>ENMDCK		;mode check
;
		INC	<ENCONT,X	;counter set
;
;-------------- obake fire move ---------------------------------
		LDA	ENTIM0,X
		BNE	OBFR000		;end ? ( no:OBFR000 )
;
;-------------- fire clear !! -----------------------------------
		LDA	#08H
		STA	ENXPOW,X
		STZ	ENXMAX,X
		LDA	#040H
		STA	ENGPOW,X
		LDA	#0FF80H
		STA	ENGMAX,X
		LDY	#02		;(Y) <-- pattern change data index
		BRA	OBFR070
;
;-------------- player cross check ------------------------------
OBFR000		EQU	$
		LDY	ECRSFG,X
		BPL	OBFR002		;プレイヤーと衝突？ ( no:OBFR002 )
;
		JSL	>PLFLST
;
OBFR002		EQU	$
		LDA	ENXMAX,X
		BNE	OBFR010		;player search move ? ( yes:OBFR010 )
;
;-------------- fire shot initial stop move ---------------------
		LDA	ENXSPD,X
		BNE	OBFR060		;go to player search move ? ( no:OBFR060 )
;
		STZ	ENXPOW,X	;X power clear !!
		LDA	ENTIM2,X
		BNE	OBFR060		;wait ? ( yes:OBFR060 )
		BRA	OBFR020
;
;-------------- player search move ------------------------------
OBFR010		EQU	$
		LDA	<ENCONT,X
		BIT	#01FH
		BNE	OBFR060		;player search timming ? ( no:OBFR060 )
		AND	#040H
		BNE	OBFR040		;Y search ? ( yes:OBFR020 )
;
;-------------- X search --------------------------------
OBFR020		EQU	$
		LDY	#00
		LDA	EPWIDX,X
		BPL	OBFR030
		LDY	#02
OBFR030		EQU	$
		LDA	!OBFRMXS,Y
		STA	ENXMAX,X	;X max speed set
		LDA	#02H
		STA	ENXPOW,X	;X power set
		BRA	OBFR060
;
;-------------- Y search --------------------------------
OBFR040		EQU	$
		LDY	#00
		LDA	EPWIDY,X
		BPL	OBFR050
		LDY	#02
OBFR050		EQU	$
		LDA	!OBFRMXS,Y
		STA	ENGMAX,X	;Y max speed set
		LDA	#02H
		STA	ENGPOW,X	;X power set
;
;-------------- pattern set -------------------------------------
OBFR060		EQU	$
		LDY	#00		;(Y) <-- pattern change data index
OBFR070		EQU	$
		LDA	ENTIM1,X
		BNE	OBFR090		;pattern change ? ( no:OBFR090 )
;
		LDA	<ENWRK0,X
		INC	A
		INC	A
		CMP	!OBFRPCP,Y
		BNE	OBFR080		;max pattern no. ? ( no:OBFR080 )
;
		CPY	#00
		BEQ	OBFR072		;fire clear ? ( no:OBFR072 )
;
;-------------- fire clear !! ---------------------------
		JMP	>ENCLEAR
;
OBFR072		EQU	$
		LDA	!OBFRPRS,Y
OBFR080		EQU	$
		STA	<ENWRK0,X
		TAY
		LDA	!OBFRPT,Y
		STA	ENCHPT,X	;pattern no. set
		LDA	ENCLOR,X
		AND	#0BFH
		ORA	!OBFRAT,Y
		STA	ENCLOR,X	;att set
		LDA	!OBFRTM,Y
		STA	ENTIM1,X	;timer set
;
OBFR090		EQU	$
		RTL
;
;************************************************************************
;*		BG3 polygon ( Y loop ) initial				*
;************************************************************************
;
;-------------- H-DMA parameter data ( C.G address ) --------------------
POL1HDP1	EQU	$
		BYTE	01000000B				;DMA control parameter
		BYTE	21H					;    B bus address
		BYTE	LOW  HDMAPR2				;    A	    "     (L)
		BYTE	HIGH HDMAPR2				;	    "     (H)
		BYTE	BANK HDMAPR2				;	    "     (B)
;
POL1HDPD1	EQU	$
		BYTE	(0D2H/2)+80H				;line no.
		WORD	HDMABUF2+(1+2)*8+(1+2)*3*8*2		;	C.G address
		BYTE	(0D2H/2)+80H				;line no.
		WORD	HDMABUF2+(1+2)*8+(1+2)*3*8*2		;	C.G address
		HEX	00					;end code
POL1HDPD1E	EQU	$
;
;-------------- H-DMA parameter data ( C.G data ) -----------------------
POL1HDP2	EQU	$
		BYTE	00000010B				;DMA control parameter
		BYTE	22H					;    B bus address
		BYTE	LOW  HDMABUF2+(1+2)*8			;    A	    "     (L)
		BYTE	HIGH HDMABUF2+(1+2)*8			;	    "     (H)
		BYTE	BANK HDMABUF2+(1+2)*8			;	    "     (B)
;
;-------------- H-DMA parameter data ( C.G data ) -----------------------
POL1HDP5	EQU	$
		BYTE	00000010B				;DMA control parameter
		BYTE	22H					;    B bus address
		BYTE	LOW  HDMABUF2+(1+2)*8+(1+2)*3*8		;    A	    "     (L)
		BYTE	HIGH HDMABUF2+(1+2)*8+(1+2)*3*8		;	    "     (H)
		BYTE	BANK HDMABUF2+(1+2)*8+(1+2)*3*8		;	    "     (B)
;
;-------------- H-DMA parameter data ( BG3 scroll counter_H ) -----------
POL1HDP3	EQU	$
		BYTE	00000010B				;DMA control parameter
		BYTE	11H					;    B bus address
		BYTE	LOW  HDMABUF2				;    A	    "     (L)
		BYTE	HIGH HDMABUF2				;	    "     (H)
		BYTE	BANK HDMABUF2				;	    "     (B)
;
;-------------- polgon face color data ----------------------------------
POLY1COLD	EQU	$
		BYTE	(2EBBH&(1FH<<10))>>10,(2EBBH&(1FH<<5))>>5,2EBBH&1FH  ;line.1 (big face)
		BYTE	(4B5FH&(1FH<<10))>>10,(4B5FH&(1FH<<5))>>5,4B5FH&1FH  ;	" .2
		BYTE	(63BFH&(1FH<<10))>>10,(63BFH&(1FH<<5))>>5,63BFH&1FH  ;	" .3
		BYTE	(0CA8H&(1FH<<10))>>10,(0CA8H&(1FH<<5))>>5,0CA8H&1FH  ;line.1 (small face)
		BYTE	(0D51H&(1FH<<10))>>10,(0D51H&(1FH<<5))>>5,0D51H&1FH  ;	" .2
		BYTE	(21F7H&(1FH<<10))>>10,(21F7H&(1FH<<5))>>5,21F7H&1FH  ;	" .3
POLY1COLE	EQU	$
;
POLY1IN		EQU	$
;
;-------------- H-DMA parameter set -----------------------------
;
		M8
;
		LDX	#04
POL1I010	EQU	$
		LDA	!POL1HDP1,X
		STA	4310H,X
		LDA	!POL1HDP2,X
		STA	4320H,X
		LDA	!POL1HDP3,X
		STA	4330H,X
		LDA	!POL1HDP5,X
		STA	4360H,X
		DEX
		BPL	POL1I010
		LDA	#BANK HDMABUF
		STA	4317H
		STA	4327H
		STA	4337H
		STA	4367H
;
		LDX	#POL1HDPD1E-POL1HDPD1-1
POL1I020	EQU	$
		LDA	!POL1HDPD1,X
		STA	>HDMAPR2,X
		DEX
		BPL	POL1I020
		LDX	#070H-1
		LDA	#09H		;(A) <-- C.G address
POL1I030	EQU	$
		STA	>HDMABUF2+(1+2)*8+(1+2)*3*8*2,X
		DEX
		BPL	POL1I030
;
		M16
;
;-------------- polygon face color set --------------------------
		LDX	#POLY1COLE-POLY1COLD-2
POL1I040	EQU	$
		LDA	!POLY1COLD,X
		STA	>POLYCOL,X
		DEX
		DEX
		BPL	POL1I040
		LDA	#0000H
		STA	>DATACOL+(2*8)+6
		STA	>MOTOCOL+(2*8)+6
		LDX	<ENINDX
;
;-------------- polygon move initial set ------------------------
		LDA	ENXPSL,X	;X pos hosei
		ORA	#08H
		STA	ENXPSL,X
		DEC	ENYPSL,X	;Y pos hosei
		LDA	#40H
		STA	<ENCONT,X	;BG3 polygon initial angle set
		RTL
;
;************************************************************************
;*		BG3 polygon ( Y loop ) move				*
;************************************************************************
POL1R1		EQU	0D4H
POL1R2		EQU	020H
;
POLY1MV		EQU	$
		JSR	BG3POLY1ST	;ＢＧ３ポリゴンセット
;
;-------------- player cross check ------------------------------
		LDY	POLYONFG
		BEQ	POL1M0FF	;player now on ? ( no:POL1M0FF )
;
		LDA	POLYPLXL
		STA	<EWORK		;(EWK0,1) <-- player cross X wide
;
		DEY
		CPY	<ENINDX
		BEQ	POL1M030	;player on me ? ( yes:POL1M030 )
		JMP	POL1M040
;
;-------------- player cross X wide calculate -----------
POL1M0FF	EQU	$
		LDA	PLXPSL
		SEC
		SBC	ENXPSL,X
		STA	<EWORK
		CLC
		ADC	#7FH
		CMP	#7FH*2+1
		BCC	POL1M000	;X pos cross check ok ? ( yes:POL1M000 )
		JMP	POL1M040
;
POL1M000	EQU	$
;
		I16
;
		LDA	<ENCONT,X
		ASL	A
		TAX
		LDA	>COS,X
		STA	<EWORK+2
		BPL	POL1M010
		EOR	#0FFFFH
		INC	A
POL1M010	EQU	$
		ASL	A
		TAX
		LDA	>DIVBUF,X
		LSR	A		;1/2
;
		MI8
;
		STA	211BH
		XBA
		STA	211BH
		LDA	<EWORK
		STA	211CH
;
		M16
;
		LDA	2135H
		ASL	A		;x2
		LDY	<EWORK+3
		BPL	POL1M020
		EOR	#0FFFFH
		INC	A
POL1M020	EQU	$
		STA	<EWORK		;(EWK0,1) <-- player cross X wide
;
		LDX	<ENINDX
;
;-------------- player cross ok check -------------------
POL1M030	EQU	$
		STZ	POLYONFG	;BG3 polygon on flag "OFF" !!
;
		LDA	PLYSPD
		BMI	POL1M040	;player jump up ? ( yes:POL1M040 )
;
		LDA	<EWORK
		CLC
		ADC	#70H
		CMP	#70H*2+1
		BCS	POL1M040	;BG3 polygon on ok ? ( no:POL1M040 )
;
		LDA	ENYPSL,X
		SEC
		SBC	PLYPSL
		SEC
		SBC	#020H
		CMP	#0FFF6H
		BCC	POL1M040	;Y pos cross ok ? ( no:POL1M040 )
;
;;;;		CLC
		ADC	PLYPSL
		STA	PLYPSL		;player Y pos hosei
		STZ	PLYSPD		;   "   X speed clear !!
;
		TXA
		INC	A
		STA	POLYONFG	;BG3 polygon on flag "ON" !!
		INC	ONLFFG		;lift on flag "ON" !!
		LDA	<EWORK
		STA	POLYPLXL	;player cross X wide set
		LDA	<ENCONT,X
		STA	POLYANG		;   "   on BG3 polygon angle set
		LDA	ENXPSL,X
		STA	POLYXPS		;	    "          center X pos set
;
		LDA	<ENCONT,X
		ASL	A
;
		I16
;
		TAX
		LDA	>SIN,X
		ASL	A		;x8
		ASL	A		;
		ASL	A		;
;
		MI8
;
		STA	211BH
		XBA
		STA	211BH
		LDA	POLYPLXL
		STA	211CH
;
		M16
;
		LDA	2135H
		EOR	#0FFFFH
		INC	A
		STA	ONLFXS		;lift on X speed set !!
;
		LDX	<ENINDX
;
POL1M040	EQU	$
		JSL	>ENMDCK		;mode check
;
		LDA	<ENCONT,X	;angle change
		CLC
		ADC	#-1
		AND	#00FFH
		STA	<ENCONT,X
		RTL
;
;------------------------------------------------------------------------
;-		ＢＧ３ポリゴンセット					-
;------------------------------------------------------------------------
BG3POLY1ST	EQU	$
		LDA	<ENCONT,X
		STA	R3		;(R3) <-- angle
		LDA	#POL1R1
		STA	R1		;(R1) <-- big face wide
		LDA	#POL1R2
		STA	R2		;(R2) <-- small	   "
		LDA	ENDSYL,X
		STA	R5		;(R5) <-- center Y pos
		LDA	#30H
		STA	R7		;(R7) <-- Y wide
		LDA	#078H
		SEC
		SBC	ENDSXL,X
		STA	R8		;(R8) <-- center X pos
;
		LDA	POLYINFG
		BEQ	POL1M050	;1st polygon set ? ( yes:POL1M050 )
;
;-------------- not 1st polygon set -----------------------------
		M_CHIP	BG3POLY1
		JMP	POL1M060
;
;-------------- 1st polygon set ---------------------------------
POL1M050	EQU	$
		INC	POLYINFG	;1st check flag "OFF" !!
;
		M_CHIP	BG3POLY1IN
;
;-------------- H-DMA buffer transfer set ---------------
		JSL	>M_DMA_BFST
		LWORD	HDMABUF2		;転送先アドレス
		LWORD	HDMABF1			;転送元アドレス
		WORD	(1+2)*8+(1+2)*3*8*2	;転送バイト数
;
		JSL	>M_DMA_BFST
		LWORD	HDMABUF			;転送先アドレス
		LWORD	HDMABF			;転送元アドレス
;;;;		    WORD    (0B2H*2)		    ;転送バイト数
		WORD	(0D2H*2)		;転送バイト数
;
;-------------- PPU Reg. set ----------------------------
		LDA	#00000100B	;ＢＧ３表示”ＯＮ”
		TSB	SUBSEL
		LDA	#01011110B
		TSB	HD420C		;H-DMA "ON" !!
;
POL1M060	EQU	$
		LDX	<ENINDX
		RTS
;
;************************************************************************
;*		intial	( スキーデバッグ用 )				*
;************************************************************************
KERO0IN		EQU	$
		RTL
;
;************************************************************************
;*		move	( スキーデバッグ用 )				*
;************************************************************************
KERO0MV		EQU	$
;;;;		    LDA	    PLMODE
;;;;		    BNE	    KERO0IN
;;;;		    LDA	    #P_SKI
;;;;		    STA	    PLTYPE
;;;;		    JMP	    >ENCLEAR
		RTL
;
;************************************************************************
;*		intial	( gate )					*
;************************************************************************
GATE0IN		EQU	$
		JSL	>EXIST_CHECK	;通ったかどうかチェック
;
		LDA	#020H		;半径初期セット
		STA	ENWRK6,X
		RTL
;
;************************************************************************
;*		move	( gate )					*
;************************************************************************
GATE0MV		EQU	$
;
;-------------- リングＯＡＭセット ------------------------------
		LDA	ENOAML,X
		STA	R3		;(R3) <-- OAM index
		TXA
		STA	R1		;(R1) <-- enmy index
		LDA	<ENWRK2,X
		AND	#00FFH
		STA	R2		;(R2) <-- start angle
		LDA	<ENWRK4,X
		STA	R4		;(R4) <-- chara no. pointer
		LDA	ENWRK6,X
		STA	R6		;(R6) <-- 半径
;
		I8
;
		M_CHIP	GATOAMST
		LDX	<ENINDX
;
;-------------- star rotation -----------------------------------
		INC	<ENWRK2,X
;
;-------------- chara no. "kira kira" set -----------------------
		LDA	FRCNT
		AND	#03H
		BNE	GT0M0FF		;pattern change ok ? ( no:GT0M0FF )
		LDA	<ENWRK4,X
		INC	A
		CMP	#06H
		BCC	GT0M0FE
		LDA	#0
GT0M0FE		EQU	$
		STA	<ENWRK4,X
;
GT0M0FF		EQU	$
		LDY	<ENWRK0,X
		BEQ	GT0M0FF0	;待ちモード？ ( no:GT0M0FF0 )
		JMP	GT0M100
;
;----------------------------------------------------------------
;-		プレイヤー通過待ち				-
;----------------------------------------------------------------
GT0M0FF0	EQU	$
		JSL	>ENMDCK		;mode check
;
;-------------- OBJ pri. muki check -----------------------------
		LDA	EPWIDX,X
		CLC
		ADC	#020H
		CMP	#020H*2+1
		BCS	GT0M000		;OBJ pri. muki check ok ? ( yes:GT0M000 )
		LDA	EPWIDY,X
		CLC
		ADC	#038H
		CMP	#(038H+050H)+1
		BCC	GT0M010		;OBJ pri. muki check ok ? ( no:GT0M010 )
;
GT0M000		EQU	$
		LDA	EPXMUK,X
		AND	#00FFH
		STA	ENMUKI,X
GT0M002		EQU	$
		RTL
;
;-------------- プレイヤー通過チェック --------------------------
GT0M010		EQU	$
		LDA	EPWIDY,X
		CLC
		ADC	#028H
		CMP	#(028H+01DH)+1
		BCS	GT0M002		;プレイヤー通過エリア内？ ( no:GT0M002 )
		LDA	EPXMUK,X
		AND	#00FFH
		CMP	ENMUKI,X
		BEQ	GT0M002		;プレイヤー通過？ ( no:GT0M002 )
;
;-------------- プレイヤー通過！！ ----------------------
		LDA	SV_STATUS
		AND	#020H
		BNE	GT0M018		;メッセージを出す？ ( no:GT0M018 )
		LDA	MAPOINT
		DEC	A		;[ CMP #1 ]
		BNE	GT0M018		;Ｗ１−２？ ( no:GT0M018 )
;
;-------------- 中間ポイント通過メッセージ表示 ----------
		LDA	SV_STATUS
		ORA	#020H
		STA	SV_STATUS
;
		LDA	#HF_MG_INT
		STA	>MSG_NO
		INC	MSGMOD
;
GT0M018		EQU	$
		INC	GATE_IN		;中間ポイント通過フラグ”ＯＮ”
;
		INC	<ENWRK0,X	;待ちモードヘ
		LDA	#01H
		STA	PLSTFG		;プレイヤーＳＴＯＰ！！
		STA	ENSTFG		;敵ＳＴＯＰ！！
		LDA	#08H		;待ちタイマーセット
		STA	ENTIM1,X
;
		LDA	TIMCNT_UP	;タイマー”＋１０”！！
		CLC
		ADC	#100
		STA	TIMCNT_UP
		LDA	#60*2+100	;強制ＯＢＪタイマー表示！！
		STA	OBJ_TIMER_DISP
		RTL
;
;----------------------------------------------------------------
;-		リング消去モード				-
;----------------------------------------------------------------
GATE0_LING_CLR	EQU	$-(020H/10H)*2
		WORD	(6+13)		;[20-2F]
		WORD	(6+13)+14	;[30-3F]
		WORD	(6+13)+14*2	;[40-4F]
		WORD	(6+13)+14*3	;[50-5F]
;
GT0M100		EQU	$
		LDA	MSGMOD
		BNE	GT0M150		;メッセージ表示中？ ( yes:GT0M150 )
		LDA	ENTIM1,X
		BEQ	GT0M200
		DEC	ENTIM1,X
GT0M150		EQU	$
		RTL
;
GT0M200		EQU	$
		LDA	TIMCNT_UP
		BNE	GT0M150		;待ち？ ( yes:GT0M150 )
;
		LDA	ENWRK6,X
		CMP	#020H
		BNE	GT0M250		;サウンドセット？ ( no:GT0M250 )
;
		PHA			;(A) save
;
		LDA	#027H		;[♪]
		JSL	>SOUND_3_ON
;
		PLA			;(A) load
GT0M250		EQU	$
		CLC
		ADC	#02H
		CMP	#020H+(10H*4)
		BCS	GT0M310		;リング消去？ ( yes:GT0M310 )
;
		STA	ENWRK6,X
		LSR	A		;1/10H
		LSR	A
		LSR	A
		LSR	A
		ASL	A
		TAY
		LDA	!GATE0_LING_CLR,Y
		STA	<ENWRK4,X
		RTL
;
;-------------- 中間ポイント処理終了 ----------------------------
GT0M310		EQU	$
		STZ	GATE_IN		;中間ポイント通過フラグ”ＯＦＦ”
		STZ	PLSTFG		;プレイヤーＳＴＯＰ解除
		STZ	ENSTFG		;敵ＳＴＯＰ解
;
;-------------- 中間ポイント通過時のデータ保存 ------------------
		JSL	>NON_EXIST_SET	;中間ポイント通過フラグ”ＯＮ”
;
		JSL	>MID_POINT_SAVE
;
		LDX	<ENINDX
		JSL	>ENCLEAR_NORETN
;
;-------------- 敵をスイカに変える --------------
TO_COIN_CHANGE	EQU	$
		LDA	#TIMKN		;(EWKE) <-- 変わる敵Ｎｏ．セット
TO_EN_CHANGE	EQU	$
		STA	<EWORKE
;
		LDY	#(ENNO-1)*4
GT0M020		EQU	$
		LDA	ENMODE,Y
		CMP	#EFAIL
		BCS	GT0M021		;スイカに変えてもいい？ ( yes:GT0M021 )
		CMP	#EEATM
		BNE	GT0M030		;食べてる？ ( no:GT0M030 )
;
		LDA	EATFLG
		BNE	GT0M030		;吐き出した？ ( no:GT0M030 )
;
GT0M021		EQU	$
		LDA	ENMOD1,Y
		AND	#0110000000000000B
		BEQ	GT0M022		;	   ”		( yes:GT0M022 )
;
		LDA	ENMYNO,Y
		CMP	#FKPBM
		BEQ	GT0M022		;風船バクダン？ ( yes:GT0M022 )
;
		CMP	#KPFIR
		BEQ	GT0M022		;クッパファイヤー？ ( yes:GT0M022 )
;
		CMP	#KPBOM
		BNE	GT0M030		;大クッパ用投げ爆弾？ ( no:GT0M030 )
;
		LDA	ENSHOT,Y
		BNE	GT0M030		;ショット中？ ( yes:GT0M030 )
;
GT0M022		EQU	$
		CPY	PONLFFG
		BNE	GT0M028
;
		STZ	PONLFFG
;
GT0M028		EQU	$
		LDA	#ECHNG		;スイカに変わるモードセット
		STA	ENMODE,Y
		LDA	<EWORKE		;変わる敵Ｎｏ．セット
		STA	EN_SP_WRK0,Y
GT0M030		EQU	$
		DEY
		DEY
		DEY
		DEY
		BPL	GT0M020
		RTL
		RTL
;
;************************************************************************
;*		中間ポイント通過時のデータ保存				*
;************************************************************************
MID_POINT_SAVE	EQU	$
		INC	MID_POINT	;中間ポイント通過時のデータ保存フラグ”ＯＮ”
;
		I16
;
		LDX	#MID_POINT_E-MID_POINT_S-2
GT0M302		EQU	$
		LDA	!MID_POINT_S,X
		STA	>MID_POINT_SV_S,X
		DEX
		DEX
		BPL	GT0M302
;
		I8
;
		LDA	EGGPNT
		STA	>MID_EGGPNT
		BEQ	GT0M306		;プレイヤーオプション連れてる？ ( no:GT0M306 )
;
		TAX
GT0M304		EQU	$
		LDY	EGGLNK-2,X	;オプション敵Ｎｏ．保存
		LDA	ENMYNO,Y
		STA	>MID_OPENNO-2,X
		DEX
		DEX
		BNE	GT0M304
;
GT0M306		EQU	$
		LDX	<ENINDX
		RTL
;
;************************************************************************
;*		initial ( へこみ床 )					*
;************************************************************************
;
;-------------- キャラクターデータポインター ----------------------------
DWNBG_CHR_POS	EQU	$
		WORD	0		;[00 00 00]
		WORD	CIPCHD2+2000H	;[00 00 01]
		WORD	0		;[00 00 10]
		WORD	0		;[00 00 11]
		WORD	0		;[00 01 00]
		WORD	0		;[00 01 01]
		WORD	0		;[00 01 10]
		WORD	CIPCHD2+2010H	;[00 01 11]
		WORD	0		;[00 10 00]
		WORD	0		;[00 10 01]
		WORD	0		;[00 10 10]
		WORD	0		;[00 10 11]
		WORD	0		;[00 11 00]
		WORD	0		;[00 11 01]
		WORD	0		;[00 11 10]
		WORD	0		;[00 11 11]
;
		WORD	0		;[01 00 00]
		WORD	0		;[01 00 01]
		WORD	0		;[01 00 10]
		WORD	0		;[01 00 11]
		WORD	0		;[01 01 00]
		WORD	0		;[01 01 01]
		WORD	0		;[01 01 10]
		WORD	0		;[01 01 11]
		WORD	0		;[01 10 00]
		WORD	0		;[01 10 01]
		WORD	0		;[01 10 10]
		WORD	0		;[01 10 11]
		WORD	0		;[01 11 00]
		WORD	0		;[01 11 01]
		WORD	0		;[01 11 10]
		WORD	CIPCHD2+2020H	;[01 11 11]
;
		WORD	CIPCHD2+2060H	;[10 00 00]
		WORD	0		;[10 00 01]
		WORD	0		;[10 00 10]
		WORD	0		;[10 00 11]
		WORD	0		;[10 01 00]
		WORD	0		;[10 01 01]
		WORD	0		;[10 01 10]
		WORD	0		;[10 01 11]
		WORD	0		;[10 10 00]
		WORD	0		;[10 10 01]
		WORD	0		;[10 10 10]
		WORD	0		;[10 10 11]
		WORD	0		;[10 11 00]
		WORD	0		;[10 11 01]
		WORD	0		;[10 11 10]
		WORD	0		;[10 11 11]
;
		WORD	0		;[11 00 00]
		WORD	0		;[11 00 01]
		WORD	0		;[11 00 10]
		WORD	0		;[11 00 11]
		WORD	0		;[11 01 00]
		WORD	0		;[11 01 01]
		WORD	0		;[11 01 10]
		WORD	0		;[11 01 11]
		WORD	CIPCHD2+2050H	;[11 10 00]
		WORD	0		;[11 10 01]
		WORD	0		;[11 10 10]
		WORD	0		;[11 10 11]
		WORD	0		;[11 11 00]
		WORD	0		;[11 11 01]
		WORD	CIPCHD2+2040H	;[11 11 10]
		WORD	CIPCHD2+2030H	;[11 11 11]
;
;-------------- へこみ復元データ ----------------------------------------
DWNBG_RET_ADD	EQU	$
		WORD	0FFF0H,00010H
;
DWNBGIN		EQU	$
		JSR	DWNBG_W
;
;-------------- 書き換え前のユニットＮｏ．保存 --------------------------
		LDA	WORK20
		STA	ENWRK8,X	;left	BG old unit no. set
		LDA	WORK22
		STA	ENWRKA,X	;middle		 "
		LDA	WORK24
		STA	ENWRKC,X	;right		 "
;
		JSR	DWNBG_CHR_CHK
;
;************************************************************************
;*		move	( へこみ床 )					*
;************************************************************************
DWNBGMV		EQU	$
		JSL	>ENMDCK		;mode check
;
		LDA	<ENWRK2,X
		STA	R6		;(R6) <-- zoom flag（前フレームの状態で）
;
		LDA	<ENWRK0,X
		BEQ	DWBGMV_050	;へこみ床復元処理？ ( no:DWBGMV_050 )
;
;------------------------------------------------------------------------
;-		へこみ床復元処理					-
;------------------------------------------------------------------------
		LDY	#00
		LDA	<ENWRK2,X
		BPL	DWBGMV_010
		LDY	#02
DWBGMV_010	EQU	$
		CLC
		ADC	!DWNBG_RET_ADD,Y
		STA	<ENWRK2,X
		BEQ	DWBGMV_020	;return end ? ( yes:DWBGMV_020 )
		EOR	!DWNBG_RET_ADD,Y
		BPL	DWBGMV_020	;return end ? ( yes:DWBGMV_020 )
		JMP	DWBGMV_400
;
;-------------- へこみ床終了セット ------------------------------
DWBGMV_020	EQU	$
		LDY	#0
		LDA	ENWRK8,X
		JSR	DWNBG_RET_W
		LDY	#2
		LDA	ENWRKA,X
		JSR	DWNBG_RET_W
		LDY	#4
		LDA	ENWRKC,X
		JSR	DWNBG_RET_W
;
		STZ	ONCHNG		;change BG on flag "OFF"
		JMP	>ENCLEAR
;
;------------------------------------------------------------------------
;-		へこみ処理						-
;------------------------------------------------------------------------
DWNBG_HEAD_HOSE EQU	$
; PLSITD -->		  [0]	 [1]	[2]    [3]    [4]    [5]
		WORD	00008H,00004H,00000H,00000H,00000H,00000H
;
DWNBG_XSDW	EQU	$
		WORD	0FFD0H,00030H
;
DWBGMV_050	EQU	$
		LDA	<ENWRK2,X
		BPL	DWBGMV_080	;へこみ床？ ( yes:DWBGMV_080 )
;
;-------------- へこみ天井処理 ------------------------------------------
;
;-------------- プレイヤー衝突チェック --------------------------
		LDA	PLSITD
		ASL	A
		TAY			;(Y) <-- hed pos hosei data pointer
		LDA	ENYPSL,X
		SEC
		SBC	PLYPSL
		CLC
		ADC	!DWNBG_HEAD_HOSE,Y
		BMI	DWBGMV_090	;player not cross ? ( yes:DWBGMV_090 )
;
		CMP	#08H
		BMI	DWBGMV_070	;down size max ? ( no:DWBGMV_070 )
;
;-------------- プレイヤー補正 --------------------------
		LDA	ENYPSL,X
		STA	PLYPSL
		LDA	#08H
DWBGMV_070	EQU	$
		XBA			; x20H
		LSR	A		;
		LSR	A		;
		LSR	A		;
		EOR	#0FFFFH
		STA	<ENWRK2,X	;down size set
;
		LDA	PLYSPD
		CLC
		ADC	#030H
		CMP	#010H
		BMI	DWBGMV_072
		LDA	#010H
DWBGMV_072	EQU	$
		STA	PLYSPD
		LDA	#02H
		STA	PHBOYO
		LDA	PBURAN
		CMP	#2
		BCS	DWBGMV_073	;”ブラ〜ン”？ ( yes:DWBGMV_073 )
		LDA	#3*2
		STA	PBURAN
;
		LDA	#09BH		;[♪]
		JSL	>SOUND_3_ON
;
DWBGMV_073	EQU	$
;
		LDY	#00
		LDA	PLMVSP
		BEQ	DWBGMV_076
		BPL	DWBGMV_074
		INY
		INY
DWBGMV_074	EQU	$
		CLC
		ADC	!DWNBG_XSDW,Y
		STA	PLMVSP
		EOR	!DWNBG_XSDW,Y
		BMI	DWBGMV_076
		STZ	PLMVSP
DWBGMV_076	EQU	$
		JMP	DWBGMV_250
;
;-------------- へこみ床処理 --------------------------------------------
DWBGMV_080	EQU	$
;
;-------------- プレイヤー衝突チェック --------------------------
		LDA	PLYPSL
		CLC
		ADC	PLFTLN
		CLC
		ADC	#020H
		SEC
		SBC	ENYPSL,X
		BPL	DWBGMV_150	;player not cross ? ( no:DWBGMV_150 )
;
DWBGMV_090	EQU	$
		INC	<ENWRK0,X
		JMP	DWBGMV_400
;
DWBGMV_150	EQU	$
		CMP	#0AH
		BMI	DWBGMV_200	;down size max ? ( no:DWBGMV_200 )
;
;-------------- プレイヤー補正 --------------------------
		LDA	ENYPSL,X
		SEC
		SBC	#020H-0AH
		SEC
		SBC	PLFTLN
		STA	PLYPSL
		LDA	#0AH
DWBGMV_200	EQU	$
		STA	<EWORK0		;(EWK0,1) <-- down size
;
		LDA	PLJUMP
		BEQ	DWBGMV_210	;player jump ? ( no:DWBGMV_210 )
		LDA	PLYSPD
;;;;		    BMI	    DWBGMV_240	    ;player jump up ? ( yes:DWBGMV_240 )
		BPL	DWBGMV_210	;player jump up ? ( no:DWBGMV_210 )
;
;-------------- プレイヤージャンプチェック ------
		LDA	#013H		;[♪]
		JSL	>SOUND_3_ON
;
		LDA	<EWORK0
;;;;		    XBA
;;;;		    LSR	    A
;;;;		    LSR	    A
;;;;		    EOR	    #0FFFFH
;;;;		    SEC			    ;[ INC A ]
		ASL	A
		ASL	A
		ASL	A
		ASL	A
;;;;		    CLC
		ADC	PLYSPD
		BRA	DWBGMV_230
;
DWBGMV_210	EQU	$
		INC	ONLFFG		;lift on flag "ON"
;
		LDY	<EWORK0
		CPY	#02H
		BCS	DWBGMV_211
;
		INC	<EWORK0
		INC	PLYPSL
		LDA	#00
		BRA	DWBGMV_230
;
DWBGMV_211	EQU	$
		LDA	#00H*2		;(A) <-- player foot cross BG type no. ( normal BG )
		CPY	#04H+1
		BCC	DWBGMV_212
;
;;;;		    LDA	    #0BH*2	    ;(A) <-- player foot cross BG type no. ( water walk )
		LDA	#00H*2		;(A) <-- player foot cross BG type no. ( water walk )
DWBGMV_212	EQU	$
		STA	PLBGNO		;foot cross BG set
;
		LDA	PLWALK
		BNE	DWBGMV_214	;サウンドセット？ ( no:DWBGMV_214 )
;
		LDA	#09BH		;[♪]
		JSL	>SOUND_3_ON
;
DWBGMV_214	EQU	$
		LDA	PLXSPD
		BPL	DWBGMV_220
		EOR	#0FFFFH
		INC	A
DWBGMV_220	EQU	$
		LSR	A
		EOR	#0FFFFH
		INC	A
		STA	<EWORK2
		LDA	#08H
		SEC
		SBC	<EWORK0
		ASL	A
		ASL	A
		ASL	A
		ASL	A
		CLC
		ADC	<EWORK2
		CMP	#0FF00H
		BPL	DWBGMV_230
		LDA	#0FF00H
DWBGMV_230	EQU	$
		STA	PLYSPD		;player Y speed set
;
DWBGMV_240	EQU	$
		LDA	<EWORK0
		XBA			; x20H
		LSR	A		;
		LSR	A		;
		LSR	A		;
		STA	<ENWRK2,X	;down size set
;
;-------------- へこみ床 横移動チェック ---------------------------------
DWBGMV_250	EQU	$
		LDA	ENXPSL,X
		AND	#0FFF0H
		STA	<EWORK
		LDA	PLXPSL
		SEC
		SBC	#08H
		STA	ENXPSL,X
		AND	#0FFF0H
		SEC
		SBC	<EWORK
		BEQ	DWBGMV_400	;BG write ? ( no:DWBGMV_400 )
;
;-------------- へこみ床ＢＧ復元書き換え ------------------------
		BMI	DWBGMV_300	;left move ? ( no:DWBGMV_300 )
;
		LDA	ENWRK8,X
		PHA			;(A) save
		LDA	ENWRKA,X
		STA	ENWRK8,X
		LDA	ENWRKC,X
		STA	ENWRKA,X
		PLA			;(A) load
		LDY	#0
		BRA	DWBGMV_350
;
DWBGMV_300
		LDA	ENWRKC,X
		PHA			;(A) save
		LDA	ENWRKA,X
		STA	ENWRKC,X
		LDA	ENWRK8,X
		STA	ENWRKA,X
		PLA			;(A) load
		LDY	#4
DWBGMV_350	EQU	$
		PHY			;(Y) save
;
		JSR	DWNBG_RET_W
;
;-------------- へこみ床新しいＢＧ書き換え ----------------------
		JSR	DWNBG_W		;new BG write
;
		PLY
		BNE	DWBGMV_360	;left move ? ( no:DWBGMV_360 )
;
		LDA	WORK24
		STA	ENWRKC,X
		BRA	DWBGMV_370
;
DWBGMV_360	EQU	$
		LDA	WORK20
		STA	ENWRK8,X
DWBGMV_370	EQU	$
		JSR	DWNBG_CHR_CHK
;
;-------------- キャラクターセット --------------------------------------
DWBGMV_400	EQU	$
		LDA	#020H
		STA	R2		;(R2) <-- plot start X pos
		LDA	#030H
		STA	R3		;(R3) <--      "     Y  "
		LDA	ENXPSL,X
		AND	#0FH
		STA	R11		;(R11) <-- down BG start X pos
		LDY	<ENWRK4,X
		CPY	#000001B*2
		BNE	DWBGMV_450	;left not cross check ? ( no:DWBGMV_450 )
		CMP	#0DH
		BCS	DWBGMV_550	;not cross ? ( no:DWBGMV_550 )
		BRA	DWBGMV_500
;
DWBGMV_450	EQU	$
		CPY	#100000B*2
		BNE	DWBGMV_550	;right not cross check ? ( no:DWBGMV_550 )
		CMP	#04H
		BCC	DWBGMV_550	;not cross ? ( no:DWBGMV_500 )
;
DWBGMV_500	EQU	$
		INC	<ENWRK0,X
DWBGMV_550	EQU	$
		LDA	!DWNBG_CHR_POS,Y
		LDY	<ENWRK2+1,X
		BPL	DWBGMV_600	;へこみ床？ ( no:DWBGMV_600 )
		CLC
		ADC	#0800H
DWBGMV_600	EQU	$
		STA	R12		;(R12) <-- chara address(L,H)
		LDA	#BANK CIPCHD2
		STA	R13		;(R13) <--	 "      (B)
		M_CHIP	FLOOR_DOWN
;
		INC	BGCGWF		;へこみ床キャラクター転送フラグ”ＯＮ”
;
		LDX	<ENINDX
		RTL
;
;------------------------------------------------------------------------
;-		へこみ床ＢＧ書き換え					-
;------------------------------------------------------------------------
DWNBG_W		EQU	$
		LDA	#DBG0
		STA	BGCGNO		;BG change type set
		LDA	ENXPSL,X
		STA	BGXPS1		;BG change X pos set
		LDA	ENYPSL,X
		STA	BGYPS1		;     "    Y    "
		LDA	#UT6200
		STA	BGUTNO		;change unit no. set
		JSL	>UNITCHG
		LDX	<ENINDX
		RTS
;
;------------------------------------------------------------------------
;-		へこみ床ＢＧ復元書き換え				-
;-			in  : (A) <-- unit no.				-
;-			      (Y) <-- BG pos ( 0:left 2:middle 4:right )-
;------------------------------------------------------------------------
DWNBG_RET_PSAD	EQU	$
		WORD	000H,010H,020H
;
DWNBG_RET_W	EQU	$
		CMP	#UT6108+1
		BEQ	DWNBG_RET_W_050 ;not BG change ? ( yes:DWNBG_RET_W_050 )
;
;-------------- へこみ床ＢＧ復元書き換え ----------------
		STA	BGUTNO
		LDA	#BGCG
		STA	BGCGNO		;BG change type set
		LDA	ENXP2L		;[!]
		CLC
		ADC	!DWNBG_RET_PSAD,Y
		STA	BGXPS1
		LDA	ENYPSL,X
		STA	BGYPS1
		JSL	>UNITCHG
		LDX	<ENINDX
;
DWNBG_RET_W_050 EQU	$
		RTS
;
;------------------------------------------------------------------------
;-		へこみ床キャラクターチェック				-
;------------------------------------------------------------------------
DWNBG_TYP_CHKDT EQU	$
;			左  中	右  左	中  右	無
		WORD	01B,11B,10B,01B,11B,10B,00B
;
DWNBG_CHR_CHK	EQU	$
		LDA	ENWRK8,X	;left	BG old unit no. set
		AND	#00FFH
		ASL	A
		TAY
		LDA	!DWNBG_TYP_CHKDT,Y
		ASL	A
		ASL	A
		STA	<ENWRK4,X
		LDA	ENWRKA,X	;middle BG old unit no. set
		AND	#00FFH
		ASL	A
		TAY
		LDA	!DWNBG_TYP_CHKDT,Y
		ORA	<ENWRK4,X
		ASL	A
		ASL	A
		STA	<ENWRK4,X
		LDA	ENWRKC,X	;right BG old unit no. set
		AND	#00FFH
		ASL	A
		TAY
		LDA	!DWNBG_TYP_CHKDT,Y
		ORA	<ENWRK4,X
		ASL	A
		STA	<ENWRK4,X
		RTS
;
;************************************************************************
;*		initial	 ( マリオ変身スター )				*
;************************************************************************
MSTAR_IN_XSP	EQU	$
		WORD	0FF80H,0080H
;
CSTARIN		EQU	$
		LDA	PLTYPE
		CMP	#P_MARIO
		BEQ	MSTARIN_0010	;マリオ変身中？ ( yes:MSTARIN_0010 )
;
CSTAR_GO_INIT	EQU	$
		LDA	#EINIT		;初期モードへ
		STA	ENMODE,X
		LDA	#0FFH		;表示無しセット
		STA	ENYUSN,X
		RTL
;
MSTARIN		EQU	$
		LDY	ENMUKI,X	;Ｘスピード初期セット
		LDA	!MSTAR_IN_XSP,Y
		STA	ENXSPD,X
;
MSTARIN_0010	EQU	$
		JSL	>TROBJ_SR_4x4_CL
;
;-------------- マリオ変身スターキャラクターセット ----------------------
		LDA	#0100H
		STA	R6		;(R6)  <-- 倍率
		LDY	ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_X,X
		STA	R3		;(R3)  <-- ビットマップ座標＿Ｘ
		LDA	>TROBJ_PLOT_Y,X
		STA	R2		;(R2)  <--	  ”	   ＿Ｘ
		LDA	#08H
		STA	R8		;(R8)  <-- 中心＿Ｘ
		STA	R9		;(R9)  <--   ”＿Ｙ
		LDA	#CIPCHD3+60F0H
		STA	R12		;(R12) <-- キャラクターアドレス（Ｌ，Ｈ）
		LDA	#BANK CIPCHD3
		STA	R13		;(R13) <--	   ”		(Ｂ）
		M_CHIP	C_16_ZOOM
;
		INC	OBM7WF		;mode 7 OBJ chara DMA "ON"
;
		LDX	<ENINDX
;
;-------------- マリオ変身スター出現効果セットチェック ------------------
		LDY	ENYUSN,X
		BPL	MSTARIN_0050	;効果セット？ ( no:MSTARIN_0050 )
;
		LDA	#05H		;表示”ＯＮ”
		STA	ENYUSN,X
;
FUSNB_SET_S	EQU	$
		LDA	#030H		;[♪]
		JSL	>SOUND_3_ON
;
		JSL	>FUSNB_SET	;効果セット
;
MSTARIN_0050	EQU	$
		RTL
;
;************************************************************************
;*		move	( マリオ変身スター )				*
;************************************************************************
MSTARMV		EQU	$
CSTARMV		EQU	$
;
;------------------------------------------------------------------------
;-		マリオ変身スターモードセレクト				-
;------------------------------------------------------------------------
		LDA	<ENWRK0,X
		ASL	A
		TXY
		TAX
		JMP	(!MSTARMV_TBL,X)
;
;------------------------------------------------------------------------
;-		マリオ変身スターモードテーブル				-
;------------------------------------------------------------------------
MSTARMV_TBL	EQU	$
		WORD	MSTAR_PLCR	;[0] プレイヤー衝突待ち
		WORD	MSTAR_CHNG	;[2] 赤ちゃんがマリオへ
;
;----------------------------------------------------------------
;-		プレイヤー衝突待ち				-
;----------------------------------------------------------------
MSTAR_PLCR	EQU	$
		TYX
;
		JSL	>TROBJ_OAM_2x2	;ＯＡＭセット
;
		JSL	>ENMDCK		;mode check
;
;-------------- 連続マリオ変身スターチェック --------------------
		LDA	ENGPOW,X
		BNE	MSTAR_PLCR_000	;連続マリオ変身スター？ ( no:MSTAR_PLCR_000 )
;
		LDA	PLTYPE
		CMP	#P_MARIO
		BEQ	MSTAR_PLCR_000	;マリオ？ ( yes:MSTAR_PLCR_000 )
;
;-------------- 連続マリオ変身スターキャンセル ----------
		JSL	>FUSNB_SET_S
		JMP	CSTAR_GO_INIT
;
;-------------- ”キラキラ”効果セット --------------------------
MSTAR_PLCR_000	EQU	$
		JSL	>KIRA_AUTO_ST
;
		LDY	ECRSFG,X
		BPL	MSTAR_PLCR_0050 ;プレイヤーと衝突？ ( no:MSTAR_PLCR_0050 )
;
		LDA	ENDSXL,X
		CLC
		ADC	#020H
		CMP	#0100H+020H
		BCS	MSTAR_PLCR_0050 ;Ｘ表示？ ( no:MSTAR_PLCR_0050 )
		LDA	ENDSYL,X
		CLC
		ADC	#020H
		CMP	#0E0H+020H
		BCS	MSTAR_PLCR_0050 ;Ｙ表示？ ( no:MSTAR_PLCR_0050 )
;
		LDA	PLTYPE
		BEQ	MSTAR_PLCR_0010 ;ヨッシー？ ( yes:MSTAR_PLCR_0010 )
;
		LDA	#027H		;[♪]
		JSL	>SOUND_3_ON
;
		JSL	>ENCLEAR
		JMP	MSTAR_CHNG_0200
;
MSTAR_PLCR_0010 EQU	$
		LDA	BABYNO
		BPL	MSTAR_PLCR_0050 ;赤ちゃん乗ってる？ ( no:MSTAR_PLCR_0050 )
;
		LDA	BERFLG
		BEQ	MARIO_CHANGE	;舌ショット中？ ( no:MARIO_CHANGE )
		LDA	EATFLG
		BEQ	MARIO_CHANGE	;食べてる？ ( no:MARIO_CHANGE )
		LDA	EATSPF
		CMP	#1
		BEQ	MSTAR_PLCR_0050 ;ファイヤーショット中？ ( yes:MSTAR_PLCR_0050 )
		CMP	#4
		BEQ	MSTAR_PLCR_0050 ;氷ショット中？ ( yes:MSTAR_PLCR_0050 )
;
;-------------- マリオに変身！！ --------------------------------
MARIO_CHANGE	EQU	$		;[ Call "ys_game" !! ]
;;;;		    INC	    <ENWRK0,X	    ;赤ちゃんがマリオへ
		INC	ENWRK0,X	;赤ちゃんがマリオへ
		LDA	#0FFH		;表示無しに
		STA	ENYUSN,X
		LDA	ENMOD2,X	;範囲クリアー無しに
		AND	#1111111111110011B
		STA	ENMOD2,X
		LDA	#020H		;ウェイトタイマーセット
		STA	ENTIM0,X
;;;;		    LDA	    #01H
		STA	PLSTFG		;プレイヤーＳＴＯＰ！！
		STA	ENSTFG		;敵ＳＴＯＰ！！
		RTL
;
MSTAR_PLCR_0050 EQU	$
		LDA	ENCBFG,X
		AND	#00001B
		BEQ	MSTAR_PLCR_0060 ;着地？ ( no:MSTAR_PLCR_0060 )
;
		LDA	#0FD00H		;ジャンプセット
		STA	ENYSPD,X
MSTAR_PLCR_0060 EQU	$
		RTL
;
;----------------------------------------------------------------
;-		赤ちゃんがマリオへ				-
;----------------------------------------------------------------
MARIO_ST_XS	EQU	$
		WORD	00100H,0FF00H
;
MSTAR_CHNG	EQU	$
		TYX
;
		LDA	ENTIM0,X
		BEQ	MSTAR_CHNG_0100 ;ウェイト？ ( no:MSTAR_CHNG_0100 )
;
		DEC	ENTIM0,X
		CMP	#010H
		BNE	MSTAR_CHNG_0050 ;変身けむりセット？ ( no:MSTAR_CHNG_0050 )
;
;-------------- 変身けむりセット --------------------------------
		LDA	#05H		;[♪]
		JSL	>SOUND_3_ON
;
		LDA	ECENTX		;Ｘ座標セット
		STA	<EWORK0
		LDA	ECENTY		;Ｙ座標セット
		STA	<EWORK2
		LDA	#FSMK1		;(A) <-- けむり効果Ｎｏ．（敵ＳＴＯＰ無視）
		JSL	>FSMK0_SET2_2
;
MSTAR_CHNG_0050 EQU	$
		RTL
;
;-------------- 赤ちゃんをマリオへ ------------------------------
MSTAR_CHNG_0100 EQU	$
		LDA	#2000H		;赤ちゃんヨッシーから降りたフラグセット
		STA	BABYNO
		LDA	#0FFFFH
		STA	NOSEIDX
;
;-------------- ヨッシーをマリオに変える ----------------
		JSL	>BERO_CANCEL	;舌ショットキャンセル
;
		LDA	#P_MARIO	;ヨッシーをマリオに変える
		STA	PLTYPE
		LDA	#00010000B	;マリオブロックスイッチ”ＯＮ”
		TSB	SWITCH_1
		LDA	#MR00		;マリオパターンＮｏ．セット
		STA	PLPATN
		LDA	#P008		;マリオジャンプセット
		STA	PLJUMP
		LDA	#0FC00H
		STA	PLYSPD
		LDA	PLCMKI		;マリオ向きセット
		EOR	#02H
		STA	PLCMKI
		STA	ENMUKI		;ヨッシー向きセット
		TAY
		LDA	!MARIO_ST_XS,Y	;Ｘスピードセット
		STA	PLMVSP
		STZ	PLSPJP		;ホバリングフラグクリアー
		STZ	PHBOYO		;”ボヨヨ〜ン”カウンタークリアー
;
		I16
;
		JSL	>PLTYPE_RAMCLR
;
		I8
;
;-------------- 赤ちゃんをヨッシータマゴに変える --------
		JSL	>ENCLEAR
;
		PHX			;(X) save
;
		LDA	#YSEGG		;(A) <-- 敵Ｎｏ．
		LDY	#0		;(Y) <-- 赤ちゃんインデックス
		TYX
		STX	<ENINDX
		JSL	>ESTATST
;
		LDA	#EMOVE		;モードセット
		STA	ENMODE
		LDA	ENYPSL		;Ｙ座標補正
		SEC
		SBC	#08H
		STA	ENYPSL
;
;-------------< タマゴオプションモードセット >-----------
		JSL	>EGGSET
;
		PLX			;(X) load
;
		LDA	#CHR64+1B0H*20H ;マリオ変身中のヨッシータマゴキャラクター転送
		STA	PCHTRF
;
;-------------- 変身終了 --------------------------------
		STZ	PLSTFG
		STZ	ENSTFG
;
		LDA	#02H		;[♪]
		STA	SOUND_0
		STZ	GM_SOUND_0
;
;-------------- 無敵フラグセット ------------------------
MSTAR_CHNG_0200 EQU	$
;;;;		    LDA	    #0400H
		LDA	#0200H
		STA	SUPER_FLAG
		RTL
;
;************************************************************************
;*		initial ( いつでもタマゴアイテムデモ用タマゴ )		*
;************************************************************************
ITEGGIN		EQU	$
		RTL
;
;************************************************************************
;*		move	( いつでもタマゴアイテムデモ用タマゴ )		*
;************************************************************************
ITEGGMV		EQU	$
		JSL	>EN_XYMOVE	;座標計算
;
		LDA	ENGPOW,X
		BNE	ITEGGMV_0010	;初期セットサウンドセット？ ( no:ITEGGMV_0010 )
;
		LDA	#03AH		;[♪]
		JSL	>SOUND_3_ON
;
		LDA	#040H
		STA	ENGPOW,X
ITEGGMV_0010	EQU	$
		LDA	ENYPSL,X
		SEC
		SBC	PLYPSL
		CMP	#010H
		BMI	ITEGGMV_0110	;プレイヤーと当たり？ ( no:ITEGGMV_0110 )
;
		LDA	#EGG03		;(A) <-- 敵Ｎｏ．
		JSL	>ENINSR		;敵エリア確保
		BCS	ITEGGMV_0050	;      ”    ？ ( yes:ITEGGMV_0050 )
;
		LDA	#EGG03		;(A) <-- 敵Ｎｏ．
		TXY
		JSL	>ESTATST
		LDA	PLYPSL		;タマゴＹ座標セット
		CLC
		ADC	#010H
		STA	ENYPSL,X
		JSL	>EGGSET		;タマゴオプションセット
		BRA	ITEGGMV_0102
;
ITEGGMV_0050	EQU	$
		LDA	ENXPSL,X	;タマゴＸ座標セット
		STA	ENXPSL,Y
		LDA	PLYPSL		;タマゴＹ座標セット
		CLC
		ADC	#010H
		STA	ENYPSL,Y
;
		PHX			;(X) save
		TYX
		STX	<ENINDX
		JSL	>EGGSET		;タマゴオプションセット
		PLX			;(X) load
		STX	<ENINDX
;
		LDA	EGGPNT
		CMP	#6*2
		BCC	ITEGGMV_0150	;タマゴいっぱい？ ( no:ITEGGMV_0150 )
;
;-------------- いつでもタマゴアイテムデモ終了 --------------------------
ITEGGMV_0100	EQU	$
		JSL	>ENCLEAR
ITEGGMV_0102	EQU	$
		STZ	ITEMNO
;
ITEGGMV_0110	EQU	$
		RTL
;
;-------------- デモ用タマゴ位置再セット --------------------------------
ITEGG_INIT	EQU	$
ITEGGMV_0150	EQU	$
		LDA	PLXPSL		;デモ用タマゴＸ座標セット
		STA	ENXPSL,X
		LDA	PLYPSL		;デモ用タマゴＹ座標セット
		SEC
		SBC	#020H
		STA	ENYPSL,X
		LDA	#0FD00H		;Ｙスピード初期セット
		STA	ENYSPD,X
		STZ	ENGPOW,X	;サウンドセット用
		JMP	>KUMOB_SET_2	;雲セット
;
;
;
;
;
;************************************************************************
;*									*
;*		背景ＯＢＪデータ					*
;*									*
;************************************************************************
;
;------------------------------------------------------------------------
;-		カメボス用遠景ＯＢＪデータ				-
;------------------------------------------------------------------------
BG_OBJ_DT_0	EQU	$
;			[ATT+size]   [X]     [Y]    [CH]
		BYTE	00001110B+1,000H>>3,018H>>3,000H	;[00]
		BYTE	00001110B+1,000H>>3,028H>>3,004H	;[01]
		BYTE	00001110B+1,000H>>3,038H>>3,00AH	;[02]
		BYTE	00001110B+1,008H>>3,058H>>3,00EH	;[03]
		BYTE	00001110B+1,010H>>3,018H>>3,002H	;[04]
		BYTE	00001110B+1,010H>>3,028H>>3,006H	;[05]
		BYTE	00001110B+1,010H>>3,038H>>3,00CH	;[06]
		BYTE	00001110B+1,020H>>3,028H>>3,008H	;[07]
		BYTE	00001110B+1,028H>>3,008H>>3,00EH	;[08]
		BYTE	00001110B+1,030H>>3,030H>>3,00EH	;[09]
		BYTE	00001110B+1,058H>>3,050H>>3,008H	;[0A]
		BYTE	00001110B+1,060H>>3,000H>>3,00EH	;[0B]
		BYTE	00001110B+1,080H>>3,048H>>3,000H	;[0C]
		BYTE	00001110B+1,080H>>3,058H>>3,004H	;[0D]
		BYTE	00001110B+1,080H>>3,068H>>3,00AH	;[0E]
		BYTE	00001110B+1,088H>>3,030H>>3,00EH	;[0F]
		BYTE	00001110B+1,090H>>3,048H>>3,002H	;[10]
		BYTE	00001110B+1,090H>>3,058H>>3,006H	;[11]
		BYTE	00001110B+1,090H>>3,068H>>3,00CH	;[12]
		BYTE	00001110B+1,0B8H>>3,010H>>3,008H	;[13]
		BYTE	00001110B+1,0C8H>>3,048H>>3,008H	;[14]
		BYTE	00001110B+1,0E8H>>3,028H>>3,00EH	;[15]
;
		HEX	FF	;end code [ * [AT+size] != 0FEH+1 !! ]
;
;************************************************************************
;*		initial ( 背景ＯＢＪ )					*
;************************************************************************
BG_00IN		EQU	$
		RTL
;
;************************************************************************
;*		move	( 背景ＯＢＪ )					*
;************************************************************************
BG_00_FADE_COL	EQU	$
		WORD	7FFFH,7FFFH,7FFFH,7FFFH
;
BG_00MV		EQU	$
		LDA	<ENWRK0,X
		BNE	BG_00MV_0050	;大クッパ用？ ( yes:BG_00MV_0050 )
;
		LDA	SCCH1
		LSR	A
		STA	R1		;(R1)  <-- 表示基点Ｘ
		LDA	#BG_OBJ_DT_0
		STA	R13		;(R13) <-- 背景ＯＢＪデータアドレス（Ｌ，Ｈ）
		STZ	R2		;(R2)  <-- 表示基点Ｙ
		LDA	#0100H
		STA	R3		;(R3)  <-- リミットＸ
		STA	R4		;(R4)  <-- リミットＹ
		LDA	OAMIDX
		STA	R10		;(R10) <-- ＯＡＭセットポインター
		LDA	#BANK BG_OBJ_DT_0
		STA	R0		;(R0)  <-- 背景ＯＢＪデータアドレス（Ｂ）
		LDA	ENCHRB,X
		AND	#00FFH
		ASL	A		;x8
		ASL	A		;
		ASL	A		;
		STA	R11		;(R11) <-- キャラクターＮｏ．加算データ
		M_CHIP	BG_OBJ_OAMST
;
		LDX	<ENINDX
;
BG_00MV_0050	EQU	$
		JSL	>ENMDCK
;
		LDA	GOAL_BOSS_CLEAR
		LSR	A
		BEQ	BG_00MV_0200	;ボスクリアーフェードアウト？ ( no:BG_00MV_0200 )
;
;-------------- カラーフェード ----------------------------------
		LDA	#BG_00_FADE_COL
		STA	R14		;(R14) <-- 先カラーデータアドレス（Ｌ，Ｈ）
		LDA	#BANK BG_00_FADE_COL
		STA	R0		;(R0) <-- 先カラーデータアドレス（Ｂ）
		LDA	<ENWRK2,X
		CLC
		ADC	#08H
		CMP	#0100H
		BCC	BG_00MV_0100	;カラーフェード終了？ ( no:BG_00MV_0100 )
;
		JSL	>ENCLEAR
		LDA	#0100H
BG_00MV_0100	EQU	$
		STA	<ENWRK2,X
		STA	R6		;(R6) <-- 倍率
		LDA	#080H+7CH
		STA	R8		;(R8) <-- カラーポインター（０〜ＦＦ）
		LDA	#4
		STA	R12		;(R12) <-- カラー数
		M_CHIP	COL_MORF_B
;
		LDX	<ENINDX
;
BG_00MV_0200	EQU	$
		RTL
;
;------------------------------------------------------------------------
;-		”キラキラ”効果セット					-
;------------------------------------------------------------------------
KIRA_AUTO_ST	EQU	$
		LDA	ENTIM0,X
		BEQ	KIRA_AUTO_ST_10 ;”キラキラ”セット？ ( yes:KIRA_AUTO_ST_10 )
		RTL
;
KIRA_AUTO_ST_10 EQU	$
		LDA	#05H
		STA	ENTIM0,X
		LDA	#08H+(08H*100H)
;;;;		    JSL	    >KIRAKIRA_SET
;
;------------------------------------------------------------------------
;-		”キラキラ”セット					-
;-			in :						-
;-				(A) <-- ヨコサイズ			-
;-				(B) <-- タテ   ”			-
;------------------------------------------------------------------------
;
KIRAKIRA_SET	EQU	$
		PHA			;(A) save
;
		AND	#00FFH
		STA	<EWORK		;(EWK0,1) <-- ヨコサイズ
		JSL	>RANDAM
		LDA	<RANDM0-1
		AND	#0FF00H
		ORA	<EWORK
		STA	4202H
;
		PLA			;ウェイト
		AND	#0FF00H		;
		STA	<EWORK2		;	 (EWK2,3) <-- タテサイズ
		LDA	<RANDM0+1	;
		LSR	A		;	 (C) <-- flag
;
		LDA	4217H
		AND	#00FFH
		BCC	KIRAKIRA_SET_10
		EOR	#0FFFFH
KIRAKIRA_SET_10 EQU	$
		ADC	ENXPSL,X
		STA	<EWORK0
;
		JSL	>RANDAM
		LDA	<RANDM0
		AND	#00FFH
		ORA	<EWORK2
		STA	4202H
;
		NOP			;ウェイト
		NOP			;
		LDA	<RANDM0+1	;
		LSR	A		;	 (C) <-- flag
;
		LDA	4217H
		AND	#00FFH
		BCC	KIRAKIRA_SET_20
		EOR	#0FFFFH
KIRAKIRA_SET_20 EQU	$
		ADC	ENYPSL,X
		STA	<EWORK2
;
		LDA	#DUST0		;(A) <-- 効果Ｎｏ．
		JSL	>EXINSR		;効果エリア確保
;
		LDA	<EWORK0
		STA	EXXPSL,Y	;Ｘ座標セット
		LDA	<EWORK2
		STA	EXYPSL,Y	;Ｙ座標セット
		LDA	#04H
		STA	EXWRK0,Y	;初期カウンターセット
		LDA	#06H
		STA	EXTIM0,Y	;初期タイマーセット
		RTL
;
;************************************************************************
;*		intial	( 穴掘りワンワン標識 )				*
;************************************************************************
AW_FGIN		EQU	$
		JSL	>TROBJ_SR_4x4_CL
;
		LDA	#0100H
		STA	R6		;(R6)  <-- 倍率
		LDY	ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_X,X
		STA	R3		;(R3)  <-- ビットマップ座標＿Ｘ
		LDA	>TROBJ_PLOT_Y,X
		STA	R2		;(R2)  <--	  ”	   ＿Ｘ
		LDA	#010H
		STA	R8		;(R8)  <-- 中心＿Ｘ
		STA	R9		;(R9)  <--   ”＿Ｙ
		LDA	#CIPCHD2+00C0H+1
		STA	R12		;(R12) <-- キャラクターアドレス（Ｌ，Ｈ）
		LDA	#BANK CIPCHD2
		STA	R13		;(R13) <--	   ”		(Ｂ）
		M_CHIP	C_32_ZOOM
;
		INC	OBM7WF		;転送キャラクター転送フラグ”ＯＮ”
;
		LDX	<ENINDX
		RTL
;
;************************************************************************
;*		move	( 穴掘りワンワン標識 )				*
;************************************************************************
AW_FGMV		EQU	$
		JMP	>TROBJ_OAM_4x4
;
;************************************************************************
;*		intial	( 乗ったら落ちる床 )				*
;************************************************************************
ON_DWIN		EQU	$
		LDA	ENXPSL,X
		STA	R1		;(R1) <-- 乗ったＸ座標
		LDA	ENYPSL,X
		STA	R2		;(R2) <-- 乗ったＹ座標
		M_CHIPR ON_DW_SZCK	;乗ったら落ちる床サイズチェック
;
		LDX	<ENINDX
		LDA	R9
		BNE	ON_DWIN_0050	;エラー？ ( no:ON_DWIN_0050 )
;
		STZ	ONFALL		;乗ったら落ちる床セットフラグ”ＯＦＦ”
		JMP	>ENCLEAR
;
ON_DWIN_0050	EQU	$
		LDA	R1
		STA	ENXPSL,X	;ブロックＸ座標セット
		LDA	R2
		INC	A		;[+1]
		STA	ENYPSL,X	;ブロックＹ座標セット
		LDA	R9
		STA	<ENWRK2,X	;ブロックＸサイズセット
		LSR	A
		STA	EWIDEX,X	;衝突チェックＸ幅
		LDA	R10
		STA	<ENWRK4,X	;ブロックＹサイズセット
		LSR	A
		INC	A
		STA	EWIDEY,X	;衝突チェックＹ幅
		LDA	#08H
		STA	ECNTXW,X	;衝突チェック中心Ｘ位置までの距離
		STA	ECNTYW,X	;	 ”	 Ｙ	 ”
		LDA	R3
		ASL	A
		ASL	A
		ASL	A
		XBA
		ORA	ENMOD2,X
		STA	ENMOD2,X	;ＯＢＪ使用数セット
		LDA	#050H+32	;ウェイトタイマーセット
		STA	ENTIM0,X
		RTL
;
;************************************************************************
;*		move	( 乗ったら落ちる床 )				*
;************************************************************************
ON_DWMV		EQU	$
;
;-------------- ＯＡＭセット --------------------------------------------
		JSR	ON_DWN_OAMST
;
		LDA	<ENWRK0,X
		BNE	ON_DWMV_0500	;ＢＧクリアー中？ ( no:ON_DWMV_0500 )
;
;-------------- ＢＧクリアー --------------------------------------------
		LDA	<ENWRK2,X
		SEC
		SBC	#010H
		LSR	A
		EOR	#0FFFFH
		SEC			;[ INC A ]
		ADC	ENXPSL,X
		CLC
		ADC	ENWRK6,X
		STA	BGXPS1		;ＢＧ書き換えＸ座標セット
		LDA	<ENWRK4,X
		SEC
		SBC	#010H
		LSR	A
		EOR	#0FFFFH
		SEC			;[ INC A ]
		ADC	ENYPSL,X
		CLC
		ADC	ENWRK8,X
		STA	BGYPS1		;ＢＧ書き換えＹ座標セット
		LDA	#BGCG
		STA	BGCGNO		;ＢＧ書き換えタイプＮｏ．
		LDA	#UT0000
		STA	BGUTNO		;ＢＧ書き換えユニットＮｏ．
		JSL	>UNITCHG
;
		LDX	<ENINDX
		LDA	ENWRK6,X
		CLC
		ADC	#010H
		CMP	ENWRK2,X
		BCC	ON_DWMV_0100
		LDA	ENWRK8,X
		CLC
		ADC	#010H
		CMP	ENWRK4,X
		BCC	ON_DWMV_0050	;ＢＧクリアー終了？ ( no:ON_DWMV_0050 )
;
;-------------- リフト処理初期セット ----------------------------
		INC	<ENWRK0,X	;リフト処理へ
		STZ	ONFALL		;乗ったら落ちる床セットフラグ”ＯＦＦ”
;
ON_DWMV_0050	EQU	$
		STA	ENWRK8,X
		LDA	#0
ON_DWMV_0100	EQU	$
		STA	ENWRK6,X
;
;-------------- リフト処理 ----------------------------------------------
ON_DWMV_0500	EQU	$
		JSL	>ENMDCK		;enemy mode check
;
;
;
;-------------- 範囲クリアーチェック ----------------------------
		LDA	<ENWRK0,X
		BEQ	ON_DWMV_0650	;ＢＧクリアー中？ ( yes:ON_DWMV_0650 )
;
		LDA	SP_SCRL_FG
		BEQ	ON_DWMV_0502	;スクロール基準特殊？ ( no:ON_DWMV_0502 )
;
		TXA
		LSR	A
		LSR	A
		TAY
		LDA	SP_SCRL_SVENFG,Y
		AND	#00FFH
		BNE	ON_DWMV_0550	;状態保存？ ( yes:ON_DWMV_0550 )
ON_DWMV_0502	EQU	$
;
;
;
		LDA	<ENWRK2,X
		LSR	A
;;;;		    CLC
		ADC	#08H+010H	;[ +010H:猶予 ]
;;;;		    CLC
		ADC	ENDSXL,X
		BMI	ON_DWMV_0510	;画面外へ消えてる？ ( yes:ON_DWMV_0510 )
		SEC
		SBC	<ENWRK2,X
		BCC	ON_DWMV_0550	;画面外へ消えてる？ ( no:ON_DWMV_0550 )
		CMP	#0100H+010H+010H
		BCS	ON_DWMV_0510	;画面外へ消えてる？ ( yes:ON_DWMV_0510 )
;
		LDA	<ENWRK4,X
		LSR	A
;;;;		    CLC
		ADC	#08H+010H	;[ +010H:猶予 ]
;;;;		    CLC
		ADC	ENDSYL,X
		BMI	ON_DWMV_0510	;画面外へ消えてる？ ( yes:ON_DWMV_0510 )
		SEC
		SBC	<ENWRK4,X
		BCC	ON_DWMV_0550	;画面外へ消えてる？ ( no:ON_DWMV_0550 )
		CMP	#0E0H+010H+010H
		BCC	ON_DWMV_0550	;画面外へ消えてる？ ( no:ON_DWMV_0550 )
;
ON_DWMV_0510	EQU	$
		JMP	>ENCLEAR
;
;-------------- ”ブルブル”チェック ----------------------------
ON_DWMV_0550	EQU	$
		LDA	ENTIM0,X
		DEC	A
		CMP	#050H
		BCS	ON_DWMV_0650	;”ブルブル”？ ( no:ON_DWMV_0650 )
;
		CMP	#040H
		BNE	ON_DWMV_0600	;落下スタート？ ( no:ON_DWMV_0600 )
;
		LDA	#04H		;重力セット
		STA	ENGPOW,X
;
ON_DWMV_0600	EQU	$
		LDA	<FRCNT2
		LSR	A
		BCC	ON_DWMV_0650
		LDA	ENXPSL,X
		EOR	#01H
		PHA
		SEC
		SBC	ENXPSL,X
		STA	ENMOVX,X
		PLA
		STA	ENXPSL,X
;
;-------------- プレイヤー衝突チェック --------------------------
ON_DWMV_0650	EQU	$
;;;;		    JSL	    >BOBBGCR	    ;赤ちゃんとの全当たりチェック＆補正
		JMP	>POBBGCR_X	;プレイヤーとの全当たりチェック＆補正
;
;------------------------------------------------------------------------
;-		乗ったら落ちる床ＯＡＭセット				-
;------------------------------------------------------------------------
ON_DW_UNIT	EQU	$
		WORD	UT7900,UT7901,UT7902,UT7909,UT790A,UT790B,UT7903,UT7904
		WORD	UT7905,0,     0,     0,	    0,	   0,	  0,	 0
;
		WORD						  UT7906,UT7907
		WORD	UT7908,0,     0,     0
;
ON_DWN_OAMST	EQU	$
		LDA	ENOAML,X
		BMI	ON_DWN_OAMST_10 ;ＯＡＭセットＯＫ？ ( no:ON_DWN_OAMST_10 )
;
		STA	R1		;(R1) <-- ＯＡＭインデックス
		LDA	ENDSXL,X
		STA	R2		;(R2) <-- ブロックＸ座標
		LDA	ENDSYL,X
		DEC	A
		STA	R3		;(R3) <-- ブロックＹ座標
		LDA	<ENWRK2,X
		STA	R4		;(R4) <-- ブロックＸサイズ
		LDA	<ENWRK4,X
		STA	R5		;(R5) <-- ブロックＹサイズ
		LDA	ENCHRB,X
		AND	#00FFH
		ASL	A		;x8
		ASL	A		;
		ASL	A		;
		XBA
		ORA	ENCLOR,X
		XBA
		STA	R6		;(R6)	   <-- ベースキャラＮｏ．＆ＡＴＴ
		STA	ENWRKC,X	;(ENWKC,D) <--		   ”
		M_CHIP	ON_DW_OAMST	;乗ったら落ちる床ＯＡＭセット
;
		LDX	<ENINDX
ON_DWN_OAMST_10 EQU	$
		RTS
;
;************************************************************************
;*		intial	( 落ちてくるブロック )				*
;************************************************************************
DWBL_HOSEI_X	EQU	$
;			[3x6]	  [3x3]	    [3x9]     [6x3]
		WORD	00000H,	  00000H,   00000H,   00008H
DWBL_HOSEI_Y	EQU	$
		WORD	0FFD8H,	  0FFF0H,   0FFC0H,   0FFF0H
DWBL_X_SIZE	EQU	$
		WORD	00030H,	  00030H,   00030H,   00060H
DWBL_Y_SIZE	EQU	$
		WORD	00060H,	  00030H,   00090H,   00030H
;
DWBL0IN		EQU	$
DWBL1IN		EQU	$
DWBL2IN		EQU	$
DWBL3IN		EQU	$
		LDA	ENMYNO,X
		SEC
		SBC	#DWBL0
		ASL	A
		TAY
		LDA	ENXPSL,X
		CLC
		ADC	!DWBL_HOSEI_X,Y
		STA	ENXPSL,X	;ブロックＸ座標セット
		LDA	ENYPSL,X
		CLC
		ADC	!DWBL_HOSEI_Y,Y
		STA	ENYPSL,X	;ブロックＹ座標セット
		LDA	!DWBL_X_SIZE,Y
		STA	<ENWRK2,X	;ブロックＸサイズセット
		LSR	A
		STA	EWIDEX,X	;衝突チェックＸ幅
		LDA	!DWBL_Y_SIZE,Y
		STA	<ENWRK4,X	;ブロックＹサイズセット
		LSR	A
		INC	A
		STA	EWIDEY,X	;衝突チェックＹ幅
		LDA	#08H
		STA	ECNTXW,X	;衝突チェック中心Ｘ位置までの距離
		STA	ECNTYW,X	;	 ”	 Ｙ	 ”
		RTL
;
;************************************************************************
;*		move	( 落ちてくるブロック )				*
;************************************************************************
DWBL0MV		EQU	$
DWBL1MV		EQU	$
DWBL2MV		EQU	$
DWBL3MV		EQU	$
;
;-------------- ＯＡＭセット --------------------------------------------
		JSR	ON_DWN_OAMST
;
		LDA	<ENWRK0,X
		BEQ	DWBL0MV_FFFE	;ＢＧセット中？ ( no:DWBL0MV_FFFE )
		JMP	DWBL0MV_0030
;
;-------------- リフト処理 ----------------------------------------------
DWBL0MV_FFFE	EQU	$
		JSL	>ENMDCK		;enemy mode check
;
;-------------- 着地チェック ------------------------------------
		LDA	ECENTX+1,X
		AND	#0FH
		STA	<EWORK0
		LDA	<ENWRK4,X
		LSR	A
		STA	<EWORK2
		LDA	ECENTY,X
		SEC
		SBC	<EWORK2
		CMP	#0800H
		BCS	DWBL0MV_FFFF	;画面オーバー？ ( yes:DWBL0MV_FFFF )
		AND	#0700H
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		ORA	<EWORK0
		TAY
		LDA	UNBUFAD-1,Y
		BPL	DWBL0MV_0000	;底無し？ ( no:DWBL0MV_0000 )
;
DWBL0MV_FFFF	EQU	$
		JMP	>ENCLEAR_NORETN
;
DWBL0MV_0000	EQU	$
		LDA	<ENWRK2,X
		LSR	A
		PHA
		EOR	#0FFFFH
		SEC			;[ INC A ]
		ADC	ECENTX,X
		CLC
		ADC	#08H
		STA	<EWORK0		;(EWK0,1) <-- 左端Ｘ座標
		LDA	<EWORK2
		CLC
		ADC	ECENTY,X
		STA	<EWORK2		;(EWK2,3) <-- 底のＹ座標
		PLA
		LSR	A
		LSR	A
		LSR	A
		STA	<EWORK4		;(EWK4,5) <-- ブロックＸサイズ／１０Ｈ
DWBL0MV_0010	EQU	$
		LDA	<EWORK0
		STA	R8		;(R8) <-- ＢＧチェックＸ座標
		LDA	<EWORK2
		STA	R0		;(R0) <-- ＢＧチェックＹ座標
		M_CHIPR M_BGUNIT_READ
;
		LDA	R7
		AND	#AL+MD
		BNE	DWBL0MV_0020	;着地？ ( yes:DWBL0MV_0020 )
;
		LDA	<EWORK0
		CLC
		ADC	#010H
		STA	<EWORK0
		DEC	<EWORK4
		BNE	DWBL0MV_0010
;
		LDX	<ENINDX
		JMP	DWBL0MV_0200
;
;-------------- 着地 ------------------------------------
DWBL0MV_0020	EQU	$
		LDA	#048H		;[♪]
		JSL	>SOUND_3_ON
;
		LDX	<ENINDX
		INC	<ENWRK0,X	;着地フラグ”ＯＮ”
		LDA	ENYPSL,X	;Ｙ座標補正
		AND	#0FFF8H
		STA	ENYPSL,X
		STZ	ENYSPD,X	;Ｙ移動キャンセル
		LDA	#020H		;地震セット
		STA	TILTCT
		JMP	DWBL0MV_0200
;
;-------------- ＢＧセット ----------------------------------------------
DWBL0MV_0030	EQU	$
		LDA	ENWRK2,X	;[ キャラクターＮｏ．チェック用ＯＡＭインデックス計算 ]
		LSR	A		;
		STA	4202H		;
		LDA	ENWRK8,X	;
		LSR	A		;
		LSR	A		;
		LSR	A		;
		LSR	A		;
		STA	4203H		;
;
		LDA	<ENWRK2,X
		LSR	A
		EOR	#0FFFFH
		SEC			;[ INC A ]
		ADC	ECENTX,X
		CLC
		ADC	ENWRK6,X
		STA	BGXPS1		;ＢＧ書き換えＸ座標セット
		LDA	<ENWRK4,X
		LSR	A
		EOR	#0FFFFH
		SEC			;[ INC A ]
		ADC	ECENTY,X
		CLC
		ADC	ENWRK8,X
		STA	BGYPS1		;ＢＧ書き換えＹ座標セット
		LDA	#BGCG
		STA	BGCGNO		;ＢＧ書き換えタイプＮｏ．
;
		LDA	ENWRK6,X	;[ ＯＡＭにセットされているキャラＮｏ．]
		LSR	A		;[ からユニットＮｏ．を求める	       ]
;;;;		CLC			;
		ADC	4216H		;
		CLC			;
		ADC	ENOAML,X	;
;
		I16
;
		TAY			;
		LDA	SOAM_DX+4,Y	;
;
		I8
;
		SEC			;
		SBC	ENWRKC,X	;[ (ENWKC,D) <-- ベースキャラＮｏ．＆ＡＴＴ ]
		BPL	DWBL0MV_0034	;Ｖフリップ？ ( no:DWBL0MV_0034 )
		AND	#7FFFH
		CMP	#020H
		BCC	DWBL0MV_0032
;;;;		    SEC			;
		SBC	#010H		;
DWBL0MV_0032	EQU	$
		CLC
		ADC	#20H-0CH	;[ 中キャラのＶフリップチェック ]
		BRA	DWBL0MV_0040
;
DWBL0MV_0034	EQU	$
		CMP	#020H		;
		BCC	DWBL0MV_0040	;
;;;;		    SEC			;
		SBC	#010H		;
DWBL0MV_0040	EQU	$		;
		TAY			;
		LDA	!ON_DW_UNIT,Y	;
		STA	BGUTNO		;ＢＧ書き換えユニットＮｏ．
		JSL	>UNITCHG
;
		LDX	<ENINDX
		LDA	ENWRK6,X
		CLC
		ADC	#010H
		CMP	ENWRK2,X
		BCC	DWBL0MV_0100
		LDA	ENWRK8,X
		CLC
		ADC	#010H
		CMP	ENWRK4,X
		BCC	DWBL0MV_0050	;ＢＧセット終了？ ( no:DWBL0MV_0050 )
;
;-------------- リフト処理初期セット ----------------------------
		JMP	>ENCLEAR_NORETN
;
DWBL0MV_0050	EQU	$
		STA	ENWRK8,X
		LDA	#0
DWBL0MV_0100	EQU	$
		STA	ENWRK6,X
;
;-------------- プレイヤー衝突チェック --------------------------
DWBL0MV_0200	EQU	$
;;;;		    JSL	    >BOBBGCR	    ;赤ちゃんとの全当たりチェック＆補正
		JSL	>POBBGCR_X	;プレイヤーとの全当たりチェック＆補正
;
;-------------- 敵との衝突チェック ------------------------------
		LDY	ECRSFG,X
		DEY
		BMI	DWBL0MV_0250	;敵と当たり？ ( no:DWBL0MV_0250 )
		BEQ	DWBL0MV_0250	;赤ちゃんと当たり？ ( yes:DWBL0MV_0250 )
;
		TYX			;(X) <-- (Y)
		JSL	>ENFALL_END
		LDX	<ENINDX
;
DWBL0MV_0250	EQU	$
		RTL
;
;************************************************************************
;*		intial	( ドアのカギ )					*
;************************************************************************
DRKEYIN		EQU	$
		LDA	ENWRKA,X
		ORA	ENWRKC,X
		BNE	DRKEYIN_020	;再初期セット？ ( yes:DRKEYIN_020 )
;
		JSL	>EXIST_CHECK2
		BEQ	DRKEYIN_010	;すでにカギで開けてる？ ( no:DRKEYIN_010 )
		JMP	>ENCLEAR_NORETN
;
DRKEYIN_010	EQU	$
		JSL	>ICE_IN_CK	;氷ブロックの中チェック
;
		LDA	ENXPSL,X	;情報データセーブ用座標セット
		STA	ENWRKA,X
		LDA	ENYPSL,X
		STA	ENWRKC,X
DRKEYIN_020	EQU	$
		RTL
;
;------------------------------------------------------------------------
;-		氷ブロックの中モードチェック				-
;------------------------------------------------------------------------
ICE_IN_CK	EQU	$
		LDA	ENXPSL,X
		AND	#0FFF0H
		ORA	#08H
		STA	R8		;(R8) <-- ＢＧチェックＸ座標
		LDA	ENYPSL,X
		AND	#0FFF0H
		ORA	#08H
		STA	R0		;(R0) <-- ＢＧチェックＹ座標
		M_CHIPR M_BGUNIT_READ
;
		LDX	<ENINDX
		LDA	R7
		AND	#1111100000000000B
		CMP	#IC
		BNE	ICE_IN_CK_0050	;氷ブロックの中？ ( no:DRKEYIN_0050 )
;
;-------------- 氷ブロックの中！！ --------------------------------------
		LDA	#EINIT
		STA	ENMODE,X
		LDA	CCWORK0
		STA	ENXPSL,X
		LDA	CCWORK1
		STA	ENYPSL,X
;;;;		    LDA	    #040H	    ;落下セット[ GMAX check ]
;;;;		    STA	    ENGPOW,X
		PLA			;[ pull pull return !! ]
		PLY			;
;
ICE_IN_CK_0050	EQU	$
		RTL
;
;************************************************************************
;*		move	( ドアのカギ )					*
;************************************************************************
DRKEYMV		EQU	$
;
;------------------------------------------------------------------------
;-		タマゴ特別チェック					-
;------------------------------------------------------------------------
		LDA	ENSHOT,X
		BEQ	DRKEYMV_0010	;ショット？ ( no:DRKEYMV_0010 )
;
		LDA	<ENWRK0,X
		CMP	#2
		BCC	DRKEYMV_0010	;ショットキャンセル？ ( no:DRKEYMV_0010 )
		STZ	ENSHOT,X
DRKEYMV_0010	EQU	$
		JSL	>EGG_SP_CHECK
;
		LDA	<ENWRK4,X
		BEQ	DRKEYMV_0050	;オプションモード？ ( no:DRKEYMV_0050 )
;
;-------------- オプションモード ----------------------------------------
		JMP	DRKEYMV_0500
;
DRKEYMV_0050	EQU	$
		LDA	ENCBFG,X
		AND	#000001B
		BEQ	DRKEYMV_0060	;足当たり？ ( no:DRKEYMV_0060 )
;
		JSL	>XSDOWN2	;Ｘスピード減速
;
;-------------- プレイヤーとの衝突チェック ------------------------------
DRKEYMV_0060	EQU	$
		LDY	ECRSFG,X
		BPL	DRKEYMV_0070	;プレイヤーと衝突してる？ ( no:DRKEYMV_070 )
;
		LDA	PLTYPE
		BNE	DRKEYMV_0070	;変身中？ ( yes:DRKEYMV_0070 )
;
;-------------< タマゴオプションモードセット >-------------------
		JSL	>QKM_NON_EXIST	;情報データセーブビット”ＯＮ”
;
		JSL	>EGGSET
		DEC	SOUND_3_P	;[-1 : オプション”ＯＮ”サウンドキャンセル]
		LDA	#01EH		;[♪]
		JMP	>SOUND_3_ON
;
DRKEYMV_0070	EQU	$
		LDA	ENYPSL,X
		CMP	#0800H
		BMI	DRKEYMV_0080	;エリアオーバー？ ( no:DRKEYMV_0080 )
		JMP	>ENCLEAR
;
DRKEYMV_0080	EQU	$
		RTL
;
;------------------------------------------------------------------------
;-		オプションモード					-
;------------------------------------------------------------------------
DRKEYMV_0500	EQU	$
		JSL	>EGG_OPTION	;[ (Y) <-- オプションポインター ]
		RTL
;
;************************************************************************
;*		intial	( ラストボスドア )				*
;************************************************************************
LBSDRIN		EQU	$
		JSL	>TROBJ_SR_8x4_CL
		JSL	>KEYDRSET	;キャラクターセット
		LDA	ENXPSL,X
		ORA	#08H
		STA	ENXPSL,X
		LDA	#12+16
		STA	EWIDEX,X
		LDA	#((12+16)*2)+1
		STA	EWIDEY,X
		RTL
;
;************************************************************************
;*		intial	( ボーナスドア )				*
;************************************************************************
POLDRIN		EQU	$
		JSL	>EXIST_CHECK2
		BEQ	KEYDRIN		;すでにカギで開けてる？ ( no:KEYDRIN )
;
		LDA	#CDOOR
		STA	ENMYNO,X
;;;;		    LDA	    #03H	    ;閉まるドアフラグセット
;;;;		    STA	    <ENWRK0,X
;;;;		    LDA	    ENXPSL,X
;;;;		    CLC
;;;;		    ADC	    #010H
;;;;		    STA	    <EWORK4	    ;(EWK4,5) <-- 情報ビットチェックＸ座標
		LDA	ENYPSL,X	;(A) <-- 情報ビットチェックＹ座標
;;;;		    STA	    <EWORK6
		CLC			;Ｙ座標補正（無理矢理！！）
		ADC	#010H
		STA	ENYPSL,X
		BRA	CDOORIN
;
;;;;		    JSL	    >EXIST_CHECK_S3
;;;;		    BNE	    ZDOORIN	    ;閉まるドア封印？ ( yes:ZDOORIN )
;;;;;
;;;;		    JSL	    >NON_EXIST_SET3 ;ドア封印フラグ”ＯＮ”
;;;;		    BRA	    CDOORIN_010
;
;************************************************************************
;*		intial	( カギドア )					*
;************************************************************************
KEYDRIN		EQU	$
		JSL	>EXIST_CHECK2
		BNE	KEYDRIN_010	;すでにカギで開けてる？ ( yes:KEYDRIN_010 )
;
		INC	ENWRK6,X	;カギ開いてない！！
		BRA	ZDOORIN_010
;
KEYDRIN_010	EQU	$
		LDA	#ZDOOR
		STA	ENMYNO,X
		BRA	ZDOORIN_010
;
;************************************************************************
;*		intial	( 閉まるドア )					*
;************************************************************************
CDOORIN		EQU	$
		LDA	#03H		;閉まるドアフラグセット
		STA	<ENWRK0,X
;
		LDA	MODENO
		CMP	#GMFD
		BNE	ZDOORIN		;ＮＥＸＴＧＯＴＯイニシャル？ ( no:ZDOORIN )
;
		LDA	PLXPSL
		CMP	ENXPSL,X
		BNE	ZDOORIN		;プレイヤー前にいる？ ( no:ZDOORIN )
		LDA	PLYPSL
;;;;		    CLC			;[ BEQ : (C)=1 ]
		ADC	#010H-1		;[	"      ]
		CMP	ENYPSL,X
		BNE	ZDOORIN		;封印？ ( yes:ZDOORIN )
;
;;;;CDOORIN_000	    EQU	    $
;;;;		    JSL	    >EXIST_CHECK2
;;;;		    BNE	    ZDOORIN	    ;封印？ ( yes:ZDOORIN )
;;;;;
;;;;CDOORIN_010	    EQU	    $
		LDA	#0111000000000101B
		STA	ENMOD2,X	;ＯＡＭ使用数変更
		LDA	#02H
		STA	<ENWRK0,X
		INC	ENCHPT,X	;ＯＰＥＮ状態ドアセット
		LDA	#020H
		STA	<ENWRK2,X
		LDA	#04H
		STA	<ENWRK4,X
		LDA	#040H		;ウェイトタイマーセット
		STA	ENTIM0,X
;
;************************************************************************
;*		intial	( ドア )					*
;************************************************************************
BOSDRIN		EQU	$
ZDOORIN		EQU	$
		LDA	ENTROB,X
		BPL	ZDOORIN_020	;氷ブロックの中モード？ ( yes:ZDOORIN_020 )
;
		LDA	ENYPSL,X	;Ｙ座標補正（無理矢理！！）
		SEC
		SBC	#010H
		STA	ENYPSL,X
;
ZDOORIN_010	EQU	$
		JSL	>TROBJ_SR_4x4_CL
;
ZDOORIN_2	EQU	$
		JSL	>KEYDRSET	;キャラクターセット
		BRA	ZDOORIN_030
;
;-------------- 氷ブロックの中モード ------------------------------------
ZDOORIN_020	EQU	$
		JSL	>KEYDRCST	;ＯＡＭセット
;
ZDOORIN_030	EQU	$
		JSL	>ICE_IN_CK	;氷ブロックの中チェック
;
		LDA	#12
		STA	EWIDEX,X
		LDA	#(12*2)+1
		STA	EWIDEY,X
		RTL
;
;------------------------------------------------------------------------
;-		転送キャラクターセット					-
;------------------------------------------------------------------------
KEYDRSET	EQU	$
		LDA	ENMYNO,X
		CMP	#POLDR
		BEQ	KEYDRSET_010	;ボーナスドア？ ( yes:KEYDRSET_010 )
		CMP	#KEYDR
		BEQ	KEYDRSET_010	;カギドア？ ( yes:KEYDRSET_010 )
;
		CMP	#ZDOOR
		BEQ	KEYDRSET_000	;閉まるドア？ ( no:KEYDRSET_000 )
;
		CMP	#LBSDR
		BEQ	LBSDR_CHR_SET	;ラストボスドア？ ( yes:LBSDR_CHR_SET )
;
		CMP	#BOSDR
		BNE	KEYDRSET_FFF	;ボスドア？ ( no:KEYDRSET_FFF )
;
KEYDRSET_FFE	EQU	$
		LDA	#CIPCHD3+60C0H
		STA	R9		;(R9) <-- キャラクターアドレス（Ｌ、Ｈ）
		LDA	#BANK CIPCHD3+60C0H
		BRA	KEYDRSET_020
;
;-------------- 閉まるドアキャラクターセット --------------------
KEYDRSET_FFF	EQU	$
		LDA	#CIPCHD3+0020H+1
		STA	R9		;(R9) <-- キャラクターアドレス（Ｌ、Ｈ）
		LDA	#BANK CIPCHD3+0020H+1
		BRA	KEYDRSET_020
;
;-------------- ドアキャラクターセット --------------------------
DOOR_CHR_SET	EQU	$
KEYDRSET_000	EQU	$
		LDA	#CIPCHD+00F0H+1
		STA	R9		;(R9) <-- キャラクターアドレス（Ｌ、Ｈ）
		LDA	#BANK CIPCHD+00F0H+1
		BRA	KEYDRSET_020
;
;-------------- カギドアキャラクターセット ----------------------
KEYDRSET_010	EQU	$
		LDA	#CIPCHD3+6000H
		STA	R9		;(R9) <-- キャラクターアドレス（Ｌ、Ｈ）
		LDA	#BANK CIPCHD3+6000H
;
KEYDRSET_020	EQU	$
		STA	R11		;(R11) <-- キャラクターアドレス（Ｂ）
		LDA	<ENWRK2,X
		STA	R10		;(R10) <-- angle
		LDY	ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_X,X
		STA	CCWORK0		;(CWK0) <-- plot start X pos
		LDA	>TROBJ_PLOT_Y,X
		STA	CCWORK1		;(CWK1) <--	 "     Y  "
		M_CHIP	DOOR_MV
;
		INC	OBM7WF		;mode 7 OBJ chara DMA "ON"
;
		LDX	<ENINDX
		RTL
;
;-------------- ボスドアキャラクターセット ----------------------
LBSDR_CHR_SET	EQU	$
		LDA	#CIPCHD3+60C0H
		STA	R9		;(R9) <-- キャラクターアドレス（Ｌ、Ｈ）
		LDA	#BANK CIPCHD3+60C0H
		STA	R11		;(R11) <-- キャラクターアドレス（Ｂ）
		LDA	<ENWRK2,X
		STA	R10		;(R10) <-- angle
		LDY	ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_X,X
		STA	CCWORK0		;(CWK0) <-- plot start X pos
		LDA	>TROBJ_PLOT_Y,X
		STA	CCWORK1		;(CWK1) <--	 "     Y  "
		M_CHIP	DOOR_MV
;
		M_CHIP	DOOR2_MV
;
		INC	OBM7WF		;mode 7 OBJ chara DMA "ON"
;
		LDX	<ENINDX
		RTL
;
;------------------------------------------------------------------------
;-		ＯＡＭセット						-
;------------------------------------------------------------------------
KEYDRCST	EQU	$
;
		I16
;
		LDY	ENOAML,X
		LDA	ENMYNO,X
		CMP	#LBSDR
		BEQ	LBSDR_OAM_SET	;ラストボスドア？ ( yes:LBSDR_OAM_SET )
;
TROBJ_OAM_4x4_F EQU	$
		LDA	ENTROB,X
		TAX
		LDA	SOAM_DX+4,Y
		AND	#0FE00H
		ORA	>TROBJ_CHAR_NO,X
		STA	SOAM_DX+4,Y
		LDA	SOAM_DX+(8*1)+4,Y
		AND	#0FE00H
		ORA	>TROBJ_CHAR_NO,X
		STA	SOAM_DX+(8*1)+4,Y
		LDA	SOAM_DX+(8*2)+4,Y
		AND	#0FE00H
		ORA	>TROBJ_CHAR_NO+4,X
		STA	SOAM_DX+(8*2)+4,Y
		LDA	SOAM_DX+(8*3)+4,Y
		AND	#0FE00H
		ORA	>TROBJ_CHAR_NO+4,X
		STA	SOAM_DX+(8*3)+4,Y
;
		I8
;
		LDX	<ENINDX
		RTL
;
LBSDR_OAM_SET	EQU	$
		LDA	ENTROB,X
		TAX
		LDA	SOAM_DX+4,Y
		AND	#0FE00H
		ORA	>TROBJ_CHAR_NO,X
		STA	SOAM_DX+4,Y
		LDA	SOAM_DX+(8*1)+4,Y
		AND	#0FE00H
		ORA	>TROBJ_CHAR_NO+2,X
		STA	SOAM_DX+(8*1)+4,Y
		LDA	SOAM_DX+(8*2)+4,Y
		AND	#0FE00H
		ORA	>TROBJ_CHAR_NO+4,X
		STA	SOAM_DX+(8*2)+4,Y
		LDA	SOAM_DX+(8*3)+4,Y
		AND	#0FE00H
		ORA	>TROBJ_CHAR_NO+6,X
		STA	SOAM_DX+(8*3)+4,Y
		LDA	SOAM_DX+(8*4)+4,Y
		AND	#0FE00H
		ORA	>TROBJ_CHAR_NO+8,X
		STA	SOAM_DX+(8*4)+4,Y
		LDA	SOAM_DX+(8*5)+4,Y
		AND	#0FE00H
		ORA	>TROBJ_CHAR_NO+10,X
		STA	SOAM_DX+(8*5)+4,Y
		LDA	SOAM_DX+(8*6)+4,Y
		AND	#0FE00H
		ORA	>TROBJ_CHAR_NO+12,X
		STA	SOAM_DX+(8*6)+4,Y
		LDA	SOAM_DX+(8*7)+4,Y
		AND	#0FE00H
		ORA	>TROBJ_CHAR_NO+14,X
		STA	SOAM_DX+(8*7)+4,Y
;
		LDA	SOAM_DX+(8*8)+4,Y
		AND	#0FE00H
		ORA	>TROBJ_CHAR_NO,X
		STA	SOAM_DX+(8*8)+4,Y
		LDA	SOAM_DX+(8*9)+4,Y
		AND	#0FE00H
		ORA	>TROBJ_CHAR_NO+2,X
		STA	SOAM_DX+(8*9)+4,Y
		LDA	SOAM_DX+(8*10)+4,Y
		AND	#0FE00H
		ORA	>TROBJ_CHAR_NO+4,X
		STA	SOAM_DX+(8*10)+4,Y
		LDA	SOAM_DX+(8*11)+4,Y
		AND	#0FE00H
		ORA	>TROBJ_CHAR_NO+6,X
		STA	SOAM_DX+(8*11)+4,Y
		LDA	SOAM_DX+(8*12)+4,Y
		AND	#0FE00H
		ORA	>TROBJ_CHAR_NO+8,X
		STA	SOAM_DX+(8*12)+4,Y
		LDA	SOAM_DX+(8*13)+4,Y
		AND	#0FE00H
		ORA	>TROBJ_CHAR_NO+10,X
		STA	SOAM_DX+(8*13)+4,Y
		LDA	SOAM_DX+(8*14)+4,Y
		AND	#0FE00H
		ORA	>TROBJ_CHAR_NO+12,X
		STA	SOAM_DX+(8*14)+4,Y
		LDA	SOAM_DX+(8*15)+4,Y
		AND	#0FE00H
		ORA	>TROBJ_CHAR_NO+14,X
		STA	SOAM_DX+(8*15)+4,Y
;
		I8
;
		LDX	<ENINDX
		RTL
;
;************************************************************************
;*		move	( カギドア )					*
;************************************************************************
;************************************************************************
;*		move	( 閉まるドア )					*
;************************************************************************
;************************************************************************
;*		move	( ドア )					*
;************************************************************************
KEYDRMV_AD	EQU	$
		WORD	00001H,0FFFFH,00008H,0FFF8H
KEYDRMV_CP	EQU	$
		WORD	00040H,00020H,00040H,00000H
;
POLDRMV		EQU	$
KEYDRMV		EQU	$
ZDOORMV		EQU	$
BOSDRMV		EQU	$
CDOORMV		EQU	$
LBSDRMV		EQU	$
;
;------------------------------------------------------------------------
;-		ＯＡＭセット						-
;------------------------------------------------------------------------
		JSL	>KEYDRCST
;
;------------------------------------------------------------------------
;-		モードチェック						-
;------------------------------------------------------------------------
		LDY	<ENWRK0,X
		BEQ	KEYDRMV_0000	;待機中？ ( yes:KEYDRMV_0000 )
		JMP	KEYDRMV_0050
;
KEYDRMV_0000	EQU	$
		JSL	>ENMDCK		;mode check
;
;-------------- カギ待ち ------------------------------------------------
		LDA	PLJUMP
		BNE	KEYDRMV_00002	;プレイヤージャンプ中？ ( yes:KEYDRMV_00002 )
		LDA	ENYPSL,X
		CMP	PLYPSL
		BEQ	KEYDRMV_00004	;Ｙ位置ＯＫ？ ( yes:KEYDRMV_00004 )
KEYDRMV_00002	EQU	$
		RTL
;
KEYDRMV_00004	EQU	$
		LDA	EPWIDX,X
		CLC
		ADC	EWIDEX,X
		CMP	EWIDEY,X
		BCS	KEYDRMV_00002	;Ｘ位置ＯＫ？ ( no:KEYDRMV_00002 )
		LDA	KEYC2
		AND	#00001000B
		BEQ	KEYDRMV_00002	;上キー入力？ ( no:KEYDRMV_00002 )
		LDA	BABYNO
		BPL	KEYDRMV_00002	;赤ちゃん乗ってる？ ( no:KEYDRMV_00002 )
		LDA	BERFLG
		BNE	KEYDRMV_00002	;舌出してる？ ( yes:KEYDRMV_00002 )
;
		LDA	ENWRK6,X
		BEQ	KEYDRMV_0002	;すでにカギで開けてる？ ( yes:KEYDRMV_0002 )
;
		LDY	EGGPNT
		BEQ	KEYDRMV_00002	;プレイヤーカギ持ってる？ ( no:KEYDRMV_00002 )
		LDA	EGGLNK-2,Y
		TAY
		LDA	ENMYNO,Y
		CMP	#DRKEY
		BEQ	KEYDRMV_0001	;プレイヤーカギ持ってる？ ( yes:KEYDRMV_0001 )
;
KEYDRMV_00006	EQU	$
		LDA	#038H		;[♪]
		JMP	>SOUND_3_ON
;
;-------------- カギで開けた ------------------------------------
KEYDRMV_0001	EQU	$
		TYX			;(X) <-- カギのインデックス
		JSL	>EGGKILL	;オプションキャンセル
		JSL	>ENCLEAR
;
		LDA	#064H		;[♪]
		JSL	>SOUND_3_ON
;
		LDX	<ENINDX
		JSL	>NON_EXIST_SET	;カギで開けたフラグ”ＯＮ”
;
		JSL	>FUSNB_SET_2
;
		LDA	#40H
		BRA	KEYDRMV_0003
;
;-------------- ドアオープンへ ----------------------------------
KEYDRMV_0002	EQU	$
		LDA	#02H
KEYDRMV_0003	EQU	$
		STA	ENTIM0,X
;
		INC	<ENWRK0,X
;
		LDA	ENMYNO,X
		CMP	#LBSDR
		BEQ	KEYDRMV_00030	;ラストボス？ ( yes:KEYDRMV_00030 )
;
		LDA	#0111000000000101B
		STA	ENMOD2,X	;ＯＡＭ使用数変更
KEYDRMV_00030	EQU	$
		LDA	#PSHT
		STA	PLMODE		;player mode set
		STZ	DOORMK		;ドア開閉方向セット
		STZ	PLDOOR		;ＯＢＪドアフラグ”ＯＮ”
		INC	SCRL_STOP	;スクロールＳＴＯＰ！！
		LDA	ENMYNO,X
		CMP	#POLDR
		BNE	KEYDRMV_0004	;ボーナスドア？ ( no:KEYDRMV_0004 )
		DEC	PLDOOR		;[ PLDOOR <-- 0FFFFH ]
KEYDRMV_0004	EQU	$
		LDA	#01
		STA	PLSTFG		;プレイヤーＳＴＯＰ！！
		STA	ENSTFG		;敵ＳＴＯＰ！！
		STZ	PLWALK		;pattern counter initial set
		LDA	#06H
		STA	PLWKTM		;   "    change timer initial set
		LDA	#08H
		STA	PCOLTR		;player color pointer initial set
;
KEYDRMV_0010	EQU	$
		RTL
;
;-------------- ドアオープン --------------------------------------------
KEYDRMV_0050	EQU	$
		LDA	MSGMOD
		BNE	KEYDRMV_0010	;メッセージ表示中？ ( yes:KEYDRMV_0010 )
;
		CPY	#03H
		BEQ	KEYDRMV_0010	;封印ドア？ ( yes:KEYDRMV_0010 )
		LDA	ENTIM0,X
		BEQ	KEYDRMV_0051	;ウェイト？ ( no:KEYDRMV_0051 )
;
		DEC	ENTIM0,X
		BNE	KEYDRMV_00500
;
		CPY	#02H
		BEQ	KEYDRMV_00500	;閉まるドア？ ( yes:KEYDRMV_00500 )
;
		LDA	#040H		;[♪]
		JSL	>SOUND_3_ON
KEYDRMV_00500	EQU	$
		RTL
;
;-------------- 転送キャラクターセット --------------------------
KEYDRMV_0051	EQU	$
		JSL	>KEYDRSET
;
;-------------- ドアオープンパターンセット ----------------------
		LDY	<ENWRK4,X
		CPY	#1*2
		BCC	KEYDRMV_0060	;door close check ? ( no:KEYDRMV_0060 )
;
		LDA	<ENWRK0,X
		LSR	A
		BNE	KEYDRMV_0060	;閉まるドア？ ( yes:KEYDRMV_0060 )
;
		STZ	PLSTFG		;player stop flag "OFF"
;
;-------------- プレイヤー補正 ----------------------------------
		LDA	EPWIDX,X
		BEQ	KEYDRMV_0054
		ASL	A		;(C) <-- (N)
		LDA	#0FFFFH
		BCS	KEYDRMV_0052
		LDA	#01H
KEYDRMV_0052	EQU	$
		CLC
		ADC	PLXPSL
		STA	PLXPSL
;
KEYDRMV_0054	EQU	$
		LDA	ENCHPT,X
		BEQ	KEYDRMV_0062	;ＯＡＭ優先順位変更（最優先）
;
KEYDRMV_0060	EQU	$
		LDA	#07H		;ＯＡＭ優先順位変更
KEYDRMV_0062	EQU	$
		PHY			;(Y) save
;
		LDY	DOORMK
		BEQ	KEYDRMV_0064
		EOR	#07H
KEYDRMV_0064	EQU	$
		STA	ENYUSN,X
;
		PLY			;(Y) load
;
		LDA	<ENWRK2,X
		CLC
		ADC	!KEYDRMV_AD,Y
		STA	<ENWRK2,X
		SEC
		SBC	!KEYDRMV_CP,Y
		EOR	!KEYDRMV_AD,Y
		BMI	KEYDRMV_00804
;
		TYA
		LSR	A
		LSR	A
		BCS	KEYDRMV_0070
;
;-------------- flip check ------------------------------
		LDA	<ENWRK2,X
		SEC
		SBC	#03FH
		EOR	#0FFFFH
		SEC			;[ INC A ]
		ADC	#040H
		STA	<ENWRK2,X
		LDA	ENCHPT,X
		EOR	#01H
		STA	ENCHPT,X
		BRA	KEYDRMV_0080
;
KEYDRMV_0070	EQU	$
		LDA	!KEYDRMV_CP,Y
		STA	<ENWRK2,X
KEYDRMV_0080	EQU	$
		INY
		INY
		CPY	#4*2
		BCC	KEYDRMV_0090
;
		LDA	#041H		;[♪]
		JSL	>SOUND_3_ON
;
		LDA	<ENWRK0,X
		LSR	A		;[ CMP #02H ]
		BNE	KEYDRMV_0082	;閉まるドア？ ( yes:KEYDRMV_0082 )
;
		LDA	PLTYPE
		BEQ	KEYDRMV_00802	;スキーヨッシー変身ドア出現？ ( no:KEYDRMV_00802 )
;
;-------------- スキーヨッシー変身ドア出現 --------------
		STZ	SCRL_STOP
		STZ	ENSTFG
		STZ	DOORMK
		BRA	KEYDRMV_0084
;
KEYDRMV_00802	EQU	$
		LDA	PLDOOR
		BEQ	GO_NEXTGOTO	;スキーヨッシー変身ドア？ ( no:GO_NEXTGOTO )
;
;-------------- スキーヨッシー変身ドア再ＯＰＥＮセット --
		STA	PLSTFG
		INC	DOORMK
		LDA	#01H
		STA	<ENWRK0,X
		STZ	<ENWRK4,X
KEYDRMV_00804	EQU	$
		RTL
;
;-------------- ＮＥＸＴ ＧＯＴＯ！！ -------------------
GO_NEXTGOTO	EQU	$
		LDA	PLXPSH
		AND	#0FH
		ASL	A
		ASL	A
		STA	WORK
		LDA	PLYPSL
		AND	#0F00H
		LSR	A
		LSR	A
		ORA	WORK
GO_NEXTGOTO_2	EQU	$
		STA	NEXTGOTO_POS
;
		LDA	#022H		;[♪] ワタボーキャンセル
		STA	SOUND_3
;
		LDA	#01H
		STA	NEXTGOTO
		LDA	#GMIN
		STA	MODENO
		JSL	>EGG_SAVE
		LDX	<ENINDX
		RTL
;
;-------------- 閉まるドア封印！！ ----------------------
KEYDRMV_0082	EQU	$
;;;;		    JSL	    >NON_EXIST_SET  ;ドア封印フラグ”ＯＮ”
;
KEYDRMV_0084	EQU	$
		INC	<ENWRK0,X
;
		LDA	#0010000000000101B
		STA	ENMOD2,X	;ＯＡＭ使用数変更
		RTL
;
KEYDRMV_0090	EQU	$
		TYA
		STA	<ENWRK4,X
;
KEYDRMV_0100	EQU	$
		RTL
;
;------------------------------------------------------------------------
;-		”キラリン”効果セット					-
;------------------------------------------------------------------------
FUSNB_SET_2	EQU	$
		LDA	#FUSNB		;(A) <-- 効果Ｎｏ．
		JSL	>EXINSR		;効果エリア確保
		LDA	ENXPSL,X
		STA	EXXPSL,Y
		LDA	ENYPSL,X
		STA	EXYPSL,Y
		LDA	#0000BH
		STA	EXWRK0,Y
;;;;		    LDA	    #01H
		STA	EXWRK2,Y
		LDA	#00004
		STA	EXTIM0,Y
		RTL
;
;************************************************************************
;*		initial	 ( 当たるとＮＥＸＴ−ＧＯＴＯ )			*
;************************************************************************
NEXTGIN		EQU	$
		RTL
;
;************************************************************************
;*		move	 ( 当たるとＮＥＸＴ−ＧＯＴＯ )			*
;************************************************************************
NEXTGMV		EQU	$
		JSL	>ENMDCK
;
		LDY	ECRSFG,X
		BPL	NEXTGMV_0050	;プレイヤー当たった？ ( no:NEXTGMV_0050 )
;
		LDA	PLTYPE
		BNE	GO_NEXTGOTO	;変身中？ ( yes:GO_NEXTGOTO )
		LDA	BABYNO
		BMI	GO_NEXTGOTO	;赤ちゃん乗ってる？ ( yes:GO_NEXTGOTO )
;
NEXTGMV_0050	EQU	$
		RTL
;
;************************************************************************
;*		initial	 ( 新ゴールＶｏｌ．４ )				*
;************************************************************************
GOAL1IN		EQU	$
		JSL	>TROBJ_SR_8x4_CL
;
		STZ	ENMUKI,X	;向きリセット
;
;----------------------------------------------------------------
;-		つぼみフラワーキャラクターセット		-
;----------------------------------------------------------------
		LDA	#CIPCHD+4010H
		STA	R12		;(R12) <-- キャラクターアドレス（Ｌ，Ｈ）
		LDA	#BANK CIPCHD
		STA	R13		;(R13) <-- キャラクターアドレス（Ｂ）
		LDY	ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_X,X
		STA	R3		;(R3) <-- ビットマップ座標＿Ｘ
		LDA	>TROBJ_PLOT_Y,X
		STA	R2		;(R2) <-- ビットマップ座標＿Ｙ
		LDA	#099H
		STA	R6		;(R6) <-- 倍率
		LDA	#08H
		STA	R8		;(R8) <-- 中心＿Ｘ
		STA	R9		;(R9) <-- 中心＿Ｙ
		M_CHIP	C_16_ZOOM
;
		LDX	<ENINDX
;
;----------------------------------------------------------------
;-		小さいフラワーキャラクターセット		-
;----------------------------------------------------------------
		LDA	#CIPCHD3+60E0H
		STA	R12		;(R12) <-- キャラクターアドレス（Ｌ，Ｈ）
		LDA	#BANK CIPCHD3
		STA	R13		;(R13) <-- キャラクターアドレス（Ｂ）
		LDY	ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_X,X
		CLC
		ADC	#010H
		STA	R3		;(R3) <-- ビットマップ座標＿Ｘ
		LDA	>TROBJ_PLOT_Y,X
		STA	R2		;(R2) <-- ビットマップ座標＿Ｙ
		LDA	#0100H
		STA	R6		;(R6) <-- 倍率
		LDA	#08H
		STA	R8		;(R8) <-- 中心＿Ｘ
		STA	R9		;(R9) <-- 中心＿Ｙ
		M_CHIP	C_16_ZOOM
;
		LDX	<ENINDX
;
;----------------------------------------------------------------
;-		はずれキャラクターセット			-
;----------------------------------------------------------------
		LDA	#CIPCHD+3040H
		STA	R12		;(R12) <-- キャラクターアドレス（Ｌ，Ｈ）
		LDA	#BANK CIPCHD
		STA	R13		;(R13) <-- キャラクターアドレス（Ｂ）
		LDY	ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_X,X
		STA	R3		;(R3) <-- ビットマップ座標＿Ｘ
		LDA	>TROBJ_PLOT_Y,X
		CLC
		ADC	#010H
		STA	R2		;(R2) <-- ビットマップ座標＿Ｙ
		LDA	#099H
		STA	R6		;(R6) <-- 倍率
		LDA	#08H
		STA	R8		;(R8) <-- 中心＿Ｘ
		STA	R9		;(R9) <-- 中心＿Ｙ
		M_CHIP	C_16_ZOOM
;
		INC	OBM7WF		;mode 7 OBJ chara DMA "ON"
;
		LDX	<ENINDX
		LDA	#060H*100H	;ルーレット回転スピードセット
		STA	ENWRK8,X
		RTL
;
;************************************************************************
;*		move	( 新ゴールＶｏｌ．４ )				*
;************************************************************************
DSPCK_BITDT	EQU	$
		WORD	0000000001B	;[0]
		WORD	0000000010B	;[1]
		WORD	0000000100B	;[2]
		WORD	0000001000B	;[3]
		WORD	0000010000B	;[4]
		WORD	0000100000B	;[5]
		WORD	0001000000B	;[6]
		WORD	0010000000B	;[7]
		WORD	0100000000B	;[8]
		WORD	1000000000B	;[9]
;
ATARI_BITDT	EQU	$		;[FRWR_P]
		WORD	0000000000B	;[0]
		WORD	1000000000B	;[1]
		WORD	1010000000B	;[2]
		WORD	1010100000B	;[3]
		WORD	1010101000B	;[4]
		WORD	1010101010B	;[5]
;
RING_SOUND	EQU	$
		BYTE	51H,52H,53H,54H,55H,56H,55H,54H,53H,52H
;
GOAL1MV		EQU	$
;
;------------------------------------------------------------------------
;-		ＯＡＭセット						-
;------------------------------------------------------------------------
		LDA	MSGMOD
		BNE	GOAL1MV_0021	;メッセージ表示中？ ( yes:GOAL1MV_0021 )
;
		LDA	GOAL_IN
		CMP	#1+2
		BNE	GOAL1MV_0000	;ＧＯＡＬキャラクター書き換え？ ( no:GOAL1MV_0000 )
;
;-------------- ＧＯＡＬキャラクターセット ----------------------
		INC	GOAL_IN
		INC	GOAL_IN
;
		I16
;
		LDA	#CHR32G		;(A) <-- データＮｏ．
		JSL	>UNCOMPRES_X
;
		I8
;
		LDA	#5800H+8000H	;特別転送セット
		STA	OBM7WF
;
		LDX	<ENINDX
		BRA	GOAL1MV_0021
;
GOAL1MV_0000	EQU	$
		LDY	<ENWRK4+1,X
		TYA
		EOR	#0FFFFH
		SEC			;[ INC A ]
		ADC	#10
GOAL1MV_0010	EQU	$
		STA	EN_SP_WRK0,X	;アタリＮｏ．セット
		STA	R7		;(R7) <-- アタリＮｏ．
		CMP	ENCONT,X
		BEQ	GOAL1MV_0020
		STA	ENCONT,X
		LDA	#02
		STA	ENTIM3,X
GOAL1MV_0020	EQU	$
		LDA	ENTIM3,X
		STA	EN_SP_WRK2,X
;
GOAL1MV_0021	EQU	$
		LDA	EN_SP_WRK0,X	;アタリＮｏ．セット
		STA	R7		;(R7) <-- アタリＮｏ．
		LDA	EN_SP_WRK2,X
		STA	CCWORK6		;(CWK6) <-- アタリ一個前表示タイマー
;
		LDA	ENOAML,X
		STA	R1		;(R1) <-- ゴールリングＯＡＭインデックス
		LDA	ENDSXL,X
		CLC
		ADC	#018H
		STA	R2		;(R2) <-- 中心Ｘ表示座標
		LDA	ENDSYL,X
		SEC
		SBC	#040H
		STA	R3		;(R3) <-- 中心Ｙ表示座標
		LDA	#030H*100H
		STA	R6		;(R6) <-- 半径×１００Ｈ
		LDA	ENWRKC,X
		STA	R8		;(R8) <-- ゴールリング表示フラグ
		LDA	FRWR_P
		ASL	A
		TAY
		LDA	!ATARI_BITDT,Y
		STA	R9		;(R9) <-- アタリ位置データ
		LDA	ENTROB,X
		TAX
		LDA	>TROBJ_CHAR_NO,X
		STA	R4		;(R4) <-- キャラＮｏ．
		M_CHIP	GOAL_RING
;
		LDX	<ENINDX
		LDA	MSGMOD
		BEQ	GOAL1MV_0022	;メッセージ表示中？ ( no:GOAL1MV_0022 )
		JMP	GOAL1MV_0050
;
;----------------------------------------------------------------
;-		４×４キャラクターセット			-
;----------------------------------------------------------------
GOAL1MV_0022	EQU	$
		LDA	CCWORK1
		STA	R6		;(R6) <-- 倍率
		LDA	CCWORK2
		STA	R12		;(R12) <-- キャラクターアドレス（Ｌ，Ｈ）
		LDA	#BANK CIPCHD
		STA	R13		;(R13) <-- キャラクターアドレス（Ｂ）
		LDY	ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_X,X
		CLC
		ADC	#020H
		STA	R3		;(R3) <-- ビットマップ座標＿Ｘ
;
		LDA	CCWORK5		;[ CMP #0FFFEH ]
		BMI	GOAL1MV_0030	;２×２？ ( yes:GOAL1MV_0030 )
;
		LDA	>TROBJ_PLOT_Y,X
		STA	R2		;(R2) <-- ビットマップ座標＿Ｙ
		LDA	#010H
		STA	R8		;(R8) <-- 中心＿Ｘ
		STA	R9		;(R9) <-- 中心＿Ｙ
		M_CHIP	C_32_ZOOM
;
		BRA	GOAL1MV_0040
;
;----------------------------------------------------------------
;-		２×２キャラクターセット			-
;----------------------------------------------------------------
GOAL1MV_0030	EQU	$
		LDA	>TROBJ_PLOT_Y,X
		CLC
		ADC	#010H
		STA	R2		;(R2) <-- ビットマップ座標＿Ｙ
		LDA	#08H
		STA	R8		;(R8) <-- 中心＿Ｘ
		STA	R9		;(R9) <-- 中心＿Ｙ
		M_CHIP	C_16_ZOOM
;
GOAL1MV_0040	EQU	$
		LDX	<ENINDX
;
;----------------------------------------------------------------
;-		２×２キャラクターセット			-
;----------------------------------------------------------------
		LDA	CCWORK4
		STA	R12		;(R12) <-- キャラクターアドレス（Ｌ，Ｈ）
		LDA	#BANK CIPCHD
		STA	R13		;(R13) <-- キャラクターアドレス（Ｂ）
		LDY	ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_X,X
		CLC
		ADC	#010H
		STA	R3		;(R3) <-- ビットマップ座標＿Ｘ
		LDA	>TROBJ_PLOT_Y,X
		CLC
		ADC	#010H
		STA	R2		;(R2) <-- ビットマップ座標＿Ｙ
		LDA	CCWORK3
		STA	R6		;(R6) <-- 倍率
		LDA	#08H
		STA	R8		;(R8) <-- 中心＿Ｘ
		STA	R9		;(R9) <-- 中心＿Ｙ
		M_CHIP	C_16_ZOOM
;
		INC	OBM7WF		;mode 7 OBJ chara DMA "ON"
;
		LDX	<ENINDX
;
;------------------------------------------------------------------------
;-		モードチェック						-
;------------------------------------------------------------------------
GOAL1MV_0050	EQU	$
		JSL	>ENMDCK		;mode check
;
;------------------------------------------------------------------------
;-		範囲外クリアーチェック					-
;------------------------------------------------------------------------
		LDA	GOAL_IN
		BNE	GOAL1MV_0054	;ゴールインした？ ( yes:GOAL1MV_0054 )
;
		LDA	ENDSXL,X
		CLC
		ADC	#060H
		CMP	#0100H+060H+060H
		BCS	GOAL1MV_0052	;Ｘ表示？ ( no:GOAL1MV_0052 )
		LDA	ENDSYL,X
		CLC
		ADC	#060H
		CMP	#0E0H+060H+090H
		BCC	GOAL1MV_0054	;Ｙ表示？ ( yes:GOAL1MV_0054 )
;
;-------------- 範囲外クリアー！！ --------------------------------------
GOAL1MV_0052	EQU	$
		JMP	>ENCLEAR
;
;------------------------------------------------------------------------
;-		ゴール処理						-
;------------------------------------------------------------------------
GOAL1MV_0054	EQU	$
		LDA	<ENWRK0,X
		ASL	A
		TXY
		TAX
		JSR	(!GOAL1_TBL,X)
;
;----------------------------------------------------------------
;-		ルーレット回転セット				-
;----------------------------------------------------------------
		LDY	ENWRK8+1,X
		TYA
		STA	<EWORK2
		LDA	<ENWRK4,X
		STA	<EWORK0
		CLC
		ADC	<EWORK2
		CMP	#10*100H
		BCC	GOAL1MV_0060
;;;;		    SEC
		SBC	#10*100H
GOAL1MV_0060	EQU	$
		STA	<ENWRK4,X
;
		ORA	#00FFH
		SEC
		SBC	<EWORK0
		AND	#0FF00H
		BEQ	GOAL1MV_0061	;サウンドセット？ ( no:GOAL1MV_0061 )
;
		LDA	GOAL_IN
		BEQ	GOAL1MV_0061	;ゴールイン？ ( no:GOAL1MV_0061 )
;;;;		    LDA	    FRWR_P
;;;;		    BEQ	    GOAL1MV_0061    ;当たり無し？ ( yes:GOAL1MV_0061 )
;
		LDY	<ENWRK4+1,X
		LDA	!RING_SOUND,Y	;[♪]
		JSL	>SOUND_3_ON
;
GOAL1MV_0061	EQU	$
		LDY	ENWRKA,X
		BNE	GOAL1MV_0070	;ルーレットＳＴＯＰ？ ( yes:GOAL1MV_0070 )
;
GOAL1MV_0062	EQU	$
		RTL
;
;----------------------------------------------------------------
;-		ルーレット消去効果セットチェック		-
;----------------------------------------------------------------
GOAL1MV_0070	EQU	$
		CPY	#10+1
		BCS	GOAL1MV_0062	;ルーレット消去終了？ ( yes:GOAL1MV_0062 )
;
		LDA	ENWRK8,X
		BEQ	GOAL1MV_0072	;ルーレット止まった？ ( yes:GOAL1MV_0072 )
;
		SEC
		SBC	#046H
		BCC	GOAL1MV_00700	;ルーレット止まった？ ( yes:GOAL1MV_00700 )
;
		CMP	#0300H
		BCS	GOAL1MV_0071	;ポチの為のいかさまチェック？ ( no:GOAL1MV_0071 )
;
		LDY	MAPOINT
		CPY	#(1-1)*12+(9-1)
		BNE	GOAL1MV_0071	;１Ｗスペシャル？ ( no:GOAL1MV_0071 )
;
		I16
;
		LDY	CCWORK0		;(Z) set
;
		I8
;
		BEQ	GOAL1MV_00700	;アタリ？ ( no:GOAL1MV_00700 )
;
		LDA	#0300H		;はずれるまで継続！！
		BRA	GOAL1MV_0071
;
GOAL1MV_00700	EQU	$
		LDA	#00
GOAL1MV_0071	EQU	$
		STA	ENWRK8,X
		CMP	#0
		BNE	GOAL1MV_0062	;ルーレット止まった？ ( no:GOAL1MV_0062 )
;
		LDY	ENWRK6,X
		LDA	#040H
		STA	ENGPOW-1,Y
		LDA	ENWRK2-1,Y
		STA	ENXSPD-1,Y
		LDA	ENWRK4-1,Y
		STA	ENYSPD-1,Y
;
		LDA	#060H
		STA	ENTIM1,X
;
		LDY	#02EH		;[♪] はずれ
		LDA	CCWORK0
		BEQ	GOAL1MV_00710	;アタリ？ ( no:GOAL1MV_00710 )
;
;-------------- ボーナスゲームへ --------------------------------
		DEC	BNS_GO_FG
;
;;;;		    LDA	    ENTIM0,X	    ;ウェイトタイマー加算
;;;;		    CLC
;;;;		    ADC	    #020H
;;;;		    STA	    ENTIM0,X
;
		LDA	#PBNS		;プレイヤーＧＯＡＬボーナス当たりラッキージャンプ
		STA	PLMODE
		LDA	#2
		STA	PYS_WORK0
		LDA	#030H
		STA	PYS_WORK1
;
		LDA	#BONSX		;(A) <-- 敵Ｎｏ．
		JSL	>ENINSR_I	;敵エリア確保
;
		LDY	#08H		;[♪] アタリ
GOAL1MV_00710	EQU	$
		TYA
		JSL	>SOUND_3_ON
		BRA	GOAL1MV_0062
;
GOAL1MV_0072	EQU	$
		LDA	ENTIM1,X
		BEQ	GOAL1MV_00720	;効果セットＯＫ？ ( yes:GOAL1MV_00720 )
		RTL
;
GOAL1MV_00720	EQU	$
		LDA	BNS_GO_FG
		BMI	GOAL1MV_0073	;アタリ？ ( yes:GOAL1MV_0073 )
;
		PHY			;(Y) save
		LDA	#09H		;[♪]
		JSL	>SOUND_3_ON
		PLY			;(Y) load
;
GOAL1MV_0073	EQU	$
		LDA	#04H		;効果セットタイミングタイマーセット
		STA	ENTIM1,X
;
GOAL1MV_0074	EQU	$
		TYA
		CLC
		ADC	<ENWRK4+1,X
		AND	#00FFH
		CMP	#10
		BCC	GOAL1MV_0080
;;;;		    SEC
		SBC	#10
GOAL1MV_0080	EQU	$
		ASL	A		;x8
		TAY
;
		LDA	ENWRKC,X	;ゴールリング表示フラグセット
		ORA	!DSPCK_BITDT,Y
		STA	ENWRKC,X
;
		TYA
		ASL	A		;x4
;
		I16
;
		TAY
		LDA	CCWORK7,Y
		CLC
		ADC	ESCCH1
		STA	WORK0		;効果セットＸ座標セット
		LDA	CCWORK7+2,Y
		CLC
		ADC	ESCCV1
		STA	WORK2		;効果セットＹ座標セット
;
		I8
;
		INC	ENWRKA,X
		LDY	ENWRKA,X
		CPY	#10+1
		BCC	GOAL1MV_0082	;止まった位置？ ( no:GOAL1MV_0082 )
;
		LDA	CCWORK0
		BEQ	GOAL1MV_00812	;１ｕｐ？ ( no:GOAL1MV_00812 )
;
;;;;;-------------- １ｕｐセット ------------------------------------
;;;;		    JSL	    >PL_1UP_SET
;
		LDA	#FUSNB
		JSL	>EXINSR
		LDA	WORK0
		STA	EXXPSL,Y
		LDA	WORK2
		STA	EXYPSL,Y
		LDA	#0000BH
		STA	EXWRK0,Y
		LDA	#00004
		STA	EXTIM0,Y
		RTL
;
;-------------- ボーナスゲーム無し ------------------------------
GOAL1MV_00812	EQU	$
		INC	BNS_GO_FG
;
FLKIR_SET	EQU	$
GOAL1MV_0082	EQU	$
		LDA	#FLKIR		;(A) <-- 効果Ｎｏ．
		JSL	>EXINSR		;効果エリア確保
;
		LDA	WORK0
		STA	EXXPSL,Y	;Ｘ座標セット
		LDA	WORK2
		STA	EXYPSL,Y	;Ｙ座標セット
		LDA	#0CH
		STA	EXCHPT,Y	;パターンＮｏ．初期セット
		LDA	#08H
		STA	EXTIM0,Y	;タイマーセット
		RTL
;
;------------------------------------------------------------------------
;-		ゴール処理テーブル					-
;------------------------------------------------------------------------
GOAL1_TBL	EQU	$
		WORD	GOAL1_PLCR	;プレイヤーゴールインチェック
;;;;		    WORD    GOAL1_SCRL	    ;オートスクロール
		WORD	GOAL1_SHOT	;赤ちゃん投げ処理
		WORD	GOAL1_YSCG	;ヨッシー入れ替え
		WORD	GOAL1_FOUT	;フレームアウト
;
;----------------------------------------------------------------
;-		プレイヤーゴールインチェック			-
;----------------------------------------------------------------
GOAL1_PLCR	EQU	$
		TYX
;
		LDA	ENXPSL,X	;スクロールＳＴＯＰセット
		SEC
		SBC	#060H+020H	;[ +20H:余裕 ]
		CMP	SCCH1
		BMI	GOAL1_PLCR_0000 ;スクロールＳＴＯＰ位置変更？ ( no:GOAL1_PLCR_0000 )
;
		LDA	#0F00H-020H
GOAL1_PLCR_0000 EQU	$
		CLC
		ADC	#020H
		STA	PLSCRL_MAXX
;
		LDA	PLXPSL
		SEC
		SBC	ENXPSL,X
		SEC
		SBC	#018H
		PHA			;(A) save
		EOR	<ENWRK2,X
		ASL	A		;(C) <-- (N)
		PLA			;(A) load [ (N) set ]
		STA	<ENWRK2,X
		BCC	GOAL1_PLCR_0010 ;ルーレットリング通過した？ ( no:GOAL1_PLCR_0010 )
		BPL	GOAL1_PLCR_0020 ;	     ”		    ( yes:GOAL1_PLCR_0020 )
GOAL1_PLCR_0010 EQU	$
		RTS
;
GOAL1_PLCR_0020 EQU	$
		LDA	BABYNO
		BPL	GOAL1_PLCR_0010 ;赤ちゃん乗ってる？ ( no:GOAL1_PLCR_0010 )
;
		LDA	PLYPSL
		SEC
		SBC	ENYPSL,X
		CLC
		ADC	#040H+030H
		CMP	#(030H*2)-010H
		BCS	GOAL1_PLCR_0010 ;ルーレットリング通過した？ ( no:GOAL1_PLCR_0010 )
;
;-------------- ゴールインセット --------------------------------
		LDA	#05H		;[♪]
		STA	SOUND_0
;
		LDA	#03BH		;[♪]
		JSL	>SOUND_3_ON	;(Y) load
;
		INC	ENWRKA,X	;ルーレットＳＴＯＰ！！
;
		INC	MODENO		;ゴール処理モードセット
		INC	GOAL_IN		;ゴールインフラグ”ＯＮ”
		INC	<ENWRK0,X	;プレイヤー踏んだ処理へ
;
		LDA	#PGOL
		STA	PLMODE		;player Goal mode set
		LDA	#06H		;投げフラグセット
		STA	PLNAGE
		STZ	PLNAGE_EGG
;
		STZ	PLCMKI		;プレイヤー向きセット
		STZ	PLNAGL
		STZ	PLNAGP
		STZ	PLDOSN		;”ドスーン！！”リセット
		STZ	PLDASH		;”ダッシュ”リセット
;
		STZ	ATSCRL_FLAG	;オートスクロール”ＯＦＦ”
		STZ	ATSCRL_V	;
		LDA	#01H		;Ｈオートスクロールセット
		STA	ATSCRL_H
		LDA	SCCH1
		STA	ATSCRL_SCCH1
		LDA	ENXPSL,X
		SEC
		SBC	#010H
		STA	PLSCRL_MAXX
;
;-------------- 敵をコインに変える ------------------------------
		JSL	>GOAL_EN_CHANGE
;
RTSSUB		EQU	$
		RTS
;
;------------------------------------------------------------------------
;-		ゴール敵クリアーセット					-
;------------------------------------------------------------------------
BOSS_EN_CHANGE	EQU	$
		LDA	#0F0H		;[♪]
		STA	SOUND_0
;
		INC	GOAL_BOSS_CLEAR ;ボスクリアーデモフラグ”ＯＮ”！！
		INC	TIMER_STOP	;タイマーストップ
;
GOAL_EN_CHANGE	EQU	$
		JSL	>BERO_CANCEL_2	;食べてるモードキャンセルチェック
;
		LDX	EGGPNT
GOAL1_PLCR_0140 EQU	$
		DEX
		DEX
		BMI	GOAL1_PLCR_0150 ;タマゴ持ってる？ ( no:GOAL1_PLCR_0150 )
;
		STX	<EWORKE		;(X) save
;
		LDY	EGGLNK,X
		LDA	ENMYNO,Y
		SEC
		SBC	#EGG00
		ASL	A
		TAX
		JSR	(!GOAL_EGG_SET,X)
;
		LDX	<EWORKE		;(X) load
		BRA	GOAL1_PLCR_0140
;
GOAL1_PLCR_0150 EQU	$
		LDX	<ENINDX
;
		LDA	#0FFFFH		:(A) <-- 効果コインへ
		JMP	>TO_EN_CHANGE
;
;----------------------------------------------------------------
;-		オプションゴールチェック			-
;----------------------------------------------------------------
GOAL_EGG_SET	EQU	$
		WORD	GOAL_EGG00	;[EGG00]
		WORD	RTSSUB		;[EGG01]
		WORD	RTSSUB		;[EGG02]
		WORD	RTSSUB		;[EGG03]
		WORD	GOAL_KPBOM	;[KPBOM]
		WORD	GOAL_DRKEY	;[DRKEY]
		WORD	GOAL_KAMO1	;[KAMO1]
		WORD	RTSSUB		;[YSEGG]
		WORD	GOAL_EGG08	;[EGG08]
		WORD	GOAL_EGG09	;[EGG09]
;
;----------------------------------------------------------------
;-		赤タマゴゴールセット				-
;----------------------------------------------------------------
GOAL_EGG00	EQU	$
		TYX
;
		LDA	ENXPSL,X
		STA	WORK0		;(WK0,1) <-- タマゴの殻セット用Ｘ座標セット
		LDA	ENYPSL,X
		STA	WORK2		;(WK2,3) <-- タマゴの殻セット用Ｙ座標セット
		LDA	ENCLOR,X
		STA	WORK4		;(WK4,5) <-- タマゴカラー
		PHX			;(X) save
		JSL	>EGG_WARE_SET	;タマゴ割れ殻セット
		PLX			;(X) load
;
		LDA	#00000110B	;(A) <-- コインカラー
GOAL_COIN_SET	EQU	$
		PHA			;(A) save
;
		JSL	>EGGKILL
;
		LDA	#COIN1
		TXY
		JSL	>ESTATST
;
		PLA			;(A) load
		EOR	ENCLOR,X
		STA	ENCLOR,X
		LDA	#0030H		;初期タイマーセット
		STA	ENTIM0,X
		STA	ENTIM1,X
		STA	ENTIM2,X
;;;;		    LDA	    #01H
		STA	ENWRK4,X	;特殊セットフラグ”ＯＮ”
		LDA	#0FE80H
		STA	ENYSPD,X	;Ｙスピードセット
		LDA	#08H
		STA	ENGPOW,X
		LDA	ENMOD1,X	;ＢＧチェック無しセット
		AND	#1111111111100000B
		STA	ENMOD1,X
		RTS
;
;----------------------------------------------------------------
;-		カギゴールセット				-
;----------------------------------------------------------------
GOAL_DRKEY	EQU	$
		TYX
;
GOAL_EXCOIN_SET EQU	$
		JSL	>FUSNB_SET_2
;
		LDA	#00000000B	;(A) <-- コインカラー
		BRA	GOAL_COIN_SET
;
;----------------------------------------------------------------
;-		カルガモゴールセット				-
;----------------------------------------------------------------
GOAL_KAMO1	EQU	$
		TYX
		JSL	>EGGKILL
;
		LDA	#0FB00H
		STA	ENYSPD,X
		RTS
;
;----------------------------------------------------------------
;-		ビッグタマゴゴールセット			-
;----------------------------------------------------------------
GOAL_KPBOM	EQU	$
GOAL_EGG08	EQU	$
GOAL_EGG09	EQU	$
		TYX
		LDA	ENYPSL,X	;Ｙ座標セット
		STA	<EWORK0
;
		LDA	#3
		STA	<EWORK2
GOAL_EGG08_0050 EQU	$
		LDA	#COIN1		;(A) <-- 敵Ｎｏ．
		JSL	>ENINSR		;敵エリア確保
		BCC	GOAL_EXCOIN_SET ;      ”    ？ ( no:GOAL_EXCOIN_SET )
;
		LDA	ENXPSL,X	;Ｘ座標セット
		STA	ENXPSL,Y
		LDA	<EWORK0		;Ｙ座標セット
		SEC
		SBC	#010H
		STA	ENYPSL,Y
		STA	<EWORK0
		LDA	#0030H		;初期タイマーセット
		STA	ENTIM0,Y
		STA	ENTIM1,Y
		STA	ENTIM2,Y
;;;;		    LDA	    #01H
		STA	ENWRK4,Y	;特殊セットフラグ”ＯＮ”
		LDA	#0FE80H
		STA	ENYSPD,Y	;Ｙスピードセット
		LDA	#08H
		STA	ENGPOW,Y
		LDA	ENMOD1,Y	;ＢＧチェック無しセット
		AND	#1111111111100000B
		STA	ENMOD1,Y
;
		DEC	<EWORK2
		BNE	GOAL_EGG08_0050
;
		JMP	GOAL_EXCOIN_SET
;
;;;;;----------------------------------------------------------------
;;;;;-		    赤ちゃん投げウェイト			    -
;;;;;----------------------------------------------------------------
;;;;GOAL1_SCRL	    EQU	    $
;;;;		    TYX
;;;;;
;;;;		    LDA	    ENTIM0,X
;;;;		    BNE	    GOAL1_SCRL_SET  ;赤ちゃん投げる？ ( no:GOAL1_SCRL_SET )
;;;;;
;;;;;-------------- 赤ちゃん投げへ --------------------------
;;;;		    INC	    <ENWRK0,X
;;;;;
;;;;;;;;		LDY	#NAGE_P		;投げフラグセット
;;;;		    LDY	    #06H	    ;投げフラグセット
;;;;		    STY	    PLNAGE
;;;;		    STZ	    PLNAGE_EGG
;;;;;
;;;;;-------------- オートスクロール --------------------------------
;;;;GOAL1_SCRL_SET  EQU	    $
;;;;		    LDA	    ATSCRL_SCCH1
;;;;		    CMP	    PLSCRL_MAXX
;;;;		    BCS	    GOAL1_SCRL_0050 ;スクロール終了？ ( yes:GOAL1_SCRL_0050 )
;;;;;
;;;;;;;;		CLC
;;;;		    ADC	    #02H
;;;;		    STA	    ATSCRL_SCCH1
;;;;GOAL1_SCRL_0050 EQU	    $
;;;;		    RTS
;
;----------------------------------------------------------------
;-		赤ちゃん投げ処理				-
;----------------------------------------------------------------
GOAL1_SHOT	EQU	$
		TYX
;
		LDA	PLNAGE
		BNE	GOAL1_SHOT_0050 ;待ってるヨッシーセット？ ( no:GOAL1_SHOT_0050 )
;
;-------------- 待ってるヨッシーセット --------------------------
		LDA	#PDEM
		STA	PLMODE		;player Goal mode set
		STZ	P_KEYC1L	;プレイヤーデモキーデータクリアー
		STZ	P_KEYC2L
;
		INC	<ENWRK0,X	;ヨッシー入れ替えへ
		LDA	#054H		;	”	 ウェイトタイマーセット
		STA	ENTIM0,X
;
		LDY	#04H		;(Y) <-- 敵インデックス
		LDA	#GOLYS		;(A) <-- 敵Ｎｏ．
		JSL	>ENINSR2_I	;敵エリア確保
;
		TYA			;待ってるヨッシーセットフラグ”ＯＮ”
		INC	A
		STA	ENWRK6,X
;
		LDA	PLXPSL		;今のヨッシーＸ座標セット
		STA	ENXPSL,Y
		LDA	PLYPSL		;今のヨッシーＹ座標セット
		CLC
		ADC	#08H
		STA	ENYPSL,Y
		LDA	#02H		;今のヨッシー向きセット
		STA	ENMUKI,Y
		LDA	PLXSPD		;今のヨッシーＸスピードセット
		STA	ENWRK2,Y
		LDA	PLYSPD		;今のヨッシーＹスピードセット
		STA	ENWRK4,Y
		LDA	P_COLOR		;今のヨッシーカラーセット
		ASL	A
		TAX
		JSR	GOLYS_COLTR	;待ってるヨッシーカラー転送
;
		LDA	ENXPSL,X	;待ってるヨッシーＸ座標セット
		CLC
;;;;		    ADC	    #012CH
		ADC	#0144H
		STA	PLXPSL
		LDA	ENYPSL,X	;待ってるヨッシーＹ座標セット
		SEC
		SBC	#010H
		STA	PLYPSL
		STZ	PLMVSP		;待ってるヨッシーＸスピードクリアー
		STZ	PLJUMP		;着地セット
		STZ	EATFLG		;食べてる物キャンセル
		STZ	EATSTP
;
;;;;		    LDA	    ENMYNO,X	    ;待ってるヨッシーカラーセット
;;;;		    SEC
;;;;		    SBC	    #GOAL1
		LDX	MAPOINT		;待ってるヨッシーカラーセット
		LDA	>YOSHI_COLOR+1,X
		AND	#00FFH
		STA	P_COLOR		;ヨッシーカラータイプセット
		LDX	<ENINDX
		BRA	GOAL1_SHOT_0100
;
GOAL1_SHOT_0050 EQU	$
		CMP	#02H
		BNE	GOAL1_SHOT_0100 ;赤ちゃん投げセット？ ( no:GOAL1_SHOT_0100 )
;
;-------------- 赤ちゃん投げセット ------------------------------
		LDA	#04AH		;[♪]
		JSL	>SOUND_3_ON
;
		LDA	#EMOVE
		STA	ENMODE
		LDY	#000
		STY	ENWATR
;
		LDA	BABYNO			;baby nose flag clear
		AND	#00FFFH			;8000H CLEAR
		STA	BABYNO
;
		STZ	<ENWRK2
;
		LDA	PLYPSL
		SEC
		SBC	ENYPSL,X
		ASL	A
		ADC	#0200H
		STA	ENXSPD
		LDA	#0FD40H		;投げＹスピードセット
		STA	ENYSPD
		LDA	#010H		;重力を軽く
		STA	ENGPOW
;
		LDA	#010H
		STA	ENTIM3
;
		STZ	<ENCONT
		STZ	ENWRKC
;
		LDA	#0FFFFH
		STA	NOSEIDX
;
GOAL1_SHOT_0100 EQU	$
;;;;		    JMP	    GOAL1_SCRL_SET  ;オートスクロール
;
;-------------- オートスクロール --------------------------------
GOAL1_SCRL_SET	EQU	$
		LDA	ATSCRL_SCCH1
		CMP	PLSCRL_MAXX
		BCS	GOAL1_SCRL_0050 ;スクロール終了？ ( yes:GOAL1_SCRL_0050 )
;
;;;;		    CLC
		ADC	#02H
		STA	ATSCRL_SCCH1
GOAL1_SCRL_0050 EQU	$
		RTS
;
;----------------------------------------------------------------
;-		ヨッシー入れ替え				-
;----------------------------------------------------------------
GOAL1_YSCG	EQU	$
		TYX
;
		LDA	ENTIM0,X
		BNE	GOAL1_YSCG_0010 ;ヨッシーＳＴＯＰ？ ( no:GOAL1_YSCG_0010 )
;
		INC	<ENWRK0,X	;フレームアウトへ
		LDA	#0180H		;赤ちゃん乗ってから歩き出すまでのウェイトタイマーセット
		STA	ENTIM0,X
;
		STZ	P_KEYC1L
		BRA	GOAL1_YSCG_0050
;
GOAL1_YSCG_0010 EQU	$
		CMP	#050H
		BNE	GOAL1_YSCG_0020 ;ＧＯＡＬキャラクターセット？ ( no:GOAL1_YSCG_0020 )
;
;-------------- ＧＯＡＬ看板敵セット ----------------------------
		LDA	#GOALX		;(A) <-- 敵Ｎｏ．
		JSL	>ENINSR_I	;敵エリア確保
		BRA	GOAL1_YSCG_0050
;
GOAL1_YSCG_0020 EQU	$
		CMP	#040H
		BCS	GOAL1_YSCG_0050 ;ヨッシー移動セットＯＫ？ ( no:GOAL1_YSCG_0050 )
;
		LDA	#00000010B*100H ;移動キーセット
		STA	P_KEYC1L
;
;-------------- 赤ちゃんの”キラキラ”セット＆オートスクロール --
GOAL1_YSCG_0050 EQU	$
		LDA	ENTIM2,X
		BNE	GOAL1_YSCG_0060 ;”キラキラ”セット？ ( no:GOAL1_YSCG_0060 )
;
		LDA	#08H
		STA	ENTIM2,X
		LDA	#08H+(08H*100H)
		LDX	#0		;(X) <-- 赤ちゃんインデックス
		JSL	>KIRAKIRA_SET
		LDX	<ENINDX
;
GOAL1_YSCG_0060 EQU	$
		JMP	GOAL1_SCRL_SET	;オートスクロール
;
;----------------------------------------------------------------
;-		フレームアウト					-
;----------------------------------------------------------------
GOAL1_FOUT	EQU	$
		TYX
;
		LDA	BABYNO
		BMI	GOAL1_FOUT_0050 ;赤ちゃん乗った？ ( yes:GOAL1_FOUT_0050 )
;
;-------------- 上向きスリップセット ----------------------------
		LDA	<FRCNT2
		AND	#03H
		BNE	GOAL1_FOUT_0010 ;スリップけむりセット？ ( no:GOAL1_FOUT_0010 )
;
		LDA	#DSMK0		;(A) <-- 効果Ｎｏ．
		JSL	>EXINSR		;効果エリア確保
;
		LDA	PLXPSL		;Ｘ座標セット
		CLC
		ADC	#06H
		STA	EXXPSL,Y
		LDA	PLYPSL		;Ｙ座標セット
		CLC
		ADC	#018H
		STA	EXYPSL,Y
		LDA	#0080H		;Ｘスピードセット
		STA	EXXSPD,Y
		LDA	#0FFF0H		;Ｙスピードセット
		STA	EXYSPD,Y
		LDA	#03H		;初期カウンターセット
		STA	EXWRK0,Y
		LDA	#04H		;初期タイマーセット
		STA	EXTIM0,Y
;
GOAL1_FOUT_0010 EQU	$
		LDA	#P106		;上向きパターンセット
		STA	PLPATN
		LDA	#0180H		;赤ちゃん乗ってから歩き出すまでのウェイトタイマーセット
		STA	ENTIM0,X
		BRA	GOAL1_YSCG_0050 ;オートスクロール
;
GOAL1_FOUT_0050 EQU	$
		LDA	ENTIM0,X
		LSR	A
		BNE	GOAL1_FOUT_0080 ;ウェイト？ ( yes:GOAL1_FOUT_0080 )
;
		BCC	GOAL1_FOUT_0060 ;ＢＧＭセット？ ( no:GOAL1_FOUT_0060 )
;
		LDA	#06H		;[♪]
		STA	>SOUND_0
;
GOAL1_FOUT_0060 EQU	$
		STZ	PLCMKI		;プレイヤー向きセット
		LDA	#00000001B*100H ;移動キーセット
		STA	P_KEYC1L
;
		STZ	ATSCRL_H	;プレイヤースクロールセット
		LDA	#030H
		STA	PLSCRL_CX
		LDA	ENXPSL,X	;プレイヤースクロールＭＡＸセット
		CLC
		ADC	#060H
		STA	PLSCRL_MAXX
;
		LDA	PLMVSP
		CMP	#0180H
		BMI	GOAL1_FOUT_0070 ;歩くスピードセット
		LDA	#0180H
		STA	PLMVSP
GOAL1_FOUT_0070 EQU	$
		LDA	PLDSXL
		CMP	#0F0H
		BMI	GOAL1_FOUT_0080 ;プレイヤーフレームアウト？ ( no:GOAL1_FOUT_0080 )
;
;-------------- ゴール処理終了！！ ------------------------------
		INC	GOAL_IN
		INC	GOAL_IN
;
		LDY	ENWRK6,X	;待ってるヨッシークリアー
		DEY
		TYX
		JSL	>ENCLEAR
;
		LDX	<ENINDX		;ゴールクリアー
		JSL	>ENCLEAR
;
GOAL1_FOUT_0080 EQU	$
		RTS
;
;----------------------------------------------------------------
;-		待ってるヨッシーカラー転送			-
;-			in :					-
;-				(X) <-- カラーＮｏ．		-
;----------------------------------------------------------------
GOLYS_COLTR	EQU	$
;
		I16
;
		PHB			;(DBR) save
		PEA	DATACOL/100H	;(DBR) <-- DATACOL(B)
		PLB
		PLB
;
		LDA	>PCOLTBL,X
		TAX
		LDY	#(15-1)*2
GOAL1_SCRL_0010 EQU	$
		LDA	>COL_ADDRESS,X
		STA	DATACOL+(80H+71H)*2,Y
		STA	MOTOCOL+(80H+71H)*2,Y
		DEX
		DEX
		DEY
		DEY
		BPL	GOAL1_SCRL_0010
;
		PLB
;
		I8
;
		LDX	<ENINDX
		RTS
;
;************************************************************************
;*		initial	 ( 新ゴールＶｏｌ．２の待ってるヨッシー )	*
;************************************************************************
GOLYSIN		EQU	$
		JSL	>TROBJ_SR_4x4
		BCS	GOLYS_CHR_SET	;転送エリア確保？ ( yes:GOLYS_CHR_SET )
;
TO_EINIT	EQU	$
		LDA	#EINIT
		STA	ENMODE,X
		RTL
;
;************************************************************************
;*		move	( 新ゴールＶｏｌ．２の待ってるヨッシー )	*
;************************************************************************
GOAL_YOSHI_PATN EQU	$
		WORD	CIPCHD3+6080H	;[ジャンプポーズ]
		WORD	CIPCHD3+60A0H	;[着地ポーズ]
;
GOLYSMV		EQU	$
;
;------------------------------------------------------------------------
;-		プレイヤーカラー転送					-
;------------------------------------------------------------------------
		LDA	P_COLOR		;ヨッシーカラータイプセット
		ASL	A
		STA	PCOLTR
		JSL	>PLCOLTR	;プレイヤーカラー転送
;
;------------------------------------------------------------------------
;-		ＯＡＭセット						-
;------------------------------------------------------------------------
		JSL	>TROBJ_OAM_4x4
;
;------------------------------------------------------------------------
;-		モードチェック						-
;------------------------------------------------------------------------
		JSL	>ENMDCK
;
;------------------------------------------------------------------------
;-		待ってるヨッシー処理					-
;------------------------------------------------------------------------
		JSL	>XSDOWN		;Ｘスピード減速
;
GOLYS_CHR_SET	EQU	$
		LDY	#00H		;(Y) <-- ジャンプ中
		LDA	ENCBFG,X
		AND	#00001B
		BEQ	GOLYSMV_0050	;着地？ ( no:GOLYSMV_0050 )
;
		STZ	ENXSPD,X	;Ｘスピードクリアー
;
		LDY	#02H		;(Y) <-- 着地中
		LDA	ENTIM0,X
		BNE	GOLYSMV_0050	;ジャンプする？ ( no:GOLYSMV_0050 )
;
		LDA	#0FD80H		;Ｙスピードセット
		STA	ENYSPD,X
		LDA	#018H		;ジャンプタイマーセット
		STA	ENTIM0,X
;
GOLYSMV_0050	EQU	$
		TYA
		STA	<ENWRK0,X	;ジャンプフラグセット
		LDA	!GOAL_YOSHI_PATN,Y
		STA	R12		;(R12) <-- キャラクターアドレス（Ｌ，Ｈ）
		LDA	#BANK CIPCHD3
		STA	R13		;(R13) <-- キャラクターアドレス（Ｂ）
		LDY	ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_X,X
		STA	R3		;(R3) <-- ビットマップ座標＿Ｘ
		LDA	>TROBJ_PLOT_Y,X
		STA	R2		;(R2) <-- ビットマップ座標＿Ｙ
		LDA	#0100H
		STA	R6		;(R6) <-- 倍率
		LDA	#010H
		STA	R8		;(R8) <-- 中心＿Ｘ
		STA	R9		;(R9) <-- 中心＿Ｙ
		M_CHIP	C_32_ZOOM
;
		INC	OBM7WF		;mode 7 OBJ chara DMA "ON"
;
		LDX	<ENINDX
GOLYSMV_0100	EQU	$
		RTL
;
;************************************************************************
;*		intial	( マリオブロック )				*
;************************************************************************
MRBLKIN		EQU	$
		LDA	ENYPSL,X
		STA	<ENWRK0,X	;基準Ｙ座標保存
		LDA	#0FD80H
		STA	ENYSPD,X	;Ｙスピードセット
		RTL
;
;************************************************************************
;*		move	( マリオブロック )				*
;************************************************************************
MRBLK_IN_ITEM	EQU	$
		WORD	MSTAR
;
MRBLKMV		EQU	$
		JSL	>ENMDCK		;enemy mode check
;
		JSL	>POBBGCR	;リフト補正チェック
;
		LDA	<ENWRK2,X
		BNE	MRBLKMV_0100	;アイテムセットした？ ( yes:MRBLKMV_0100 )
;
;-------------- アイテムセット ------------------------------------------
		LDA	ENYSPD,X
		BMI	MRBLKMV_0100	;上昇中？ ( yes:MRBLKMV_0100 )
;
		INC	<ENWRK2,X
;
		LDA	TIMER
		CMP	#300
		BCS	MRBLKMV_0050	;タイマーＭＡＸ？ ( yes:MRBLKMV_0050 )
;
		LDA	<RANDM0
		AND	#07H
		BNE	MRBLKMV_0050	;スター君セット？ ( no:MRBLKMV_0050 )
;
;-------------- スター君セット ----------------------------------
		LDA	#TIMKN		;(A) <-- 敵Ｎｏ．
		JSL	>ENINSR_I	;敵エリア確保
		BCC	MRBLKMV_0150	;     ”     ？ ( no:MRBLKMV_0150 )
;
		LDA	ENXPSL,X
		STA	ENXPSL,Y
		LDA	ENYPSL,X
		STA	ENYPSL,Y
		LDA	#0FD00H
		STA	ENYSPD,Y
MRBLKMV_0020	EQU	$
		RTL
;
;-------------- コインセット ------------------------------------
MRBLKMV_0050	EQU	$
		LDA	#00000100B	;(A) <-- コインカラー
		JSL	>EX_COIN_SET
;
		LDA	#09H		;[♪]
		JSL	>SOUND_3_ON
		RTL
;
;-------------- ＢＧに戻るチェック --------------------------------------
MRBLKMV_0100	EQU	$
		LDA	ENYPSL,X
		SEC
		SBC	<ENWRK0,X
		BMI	MRBLKMV_0150	;ＢＧに戻る？ ( no:MRBLKMV_0150 )
;
;-------------- ＢＧに戻す ----------------------------------------------
		INC	<ENWRK2,X
;
		LDA	ENXPSL,X
		STA	BGXPS1		;ＢＧ書き換えＸ座標セット
		LDA	<ENWRK0,X
		STA	BGYPS1		;ＢＧ書き換えＹ座標セット
		STA	ENYPSL,X	;[ マスク用 ]
		STZ	ENYSPD,X	;     "
		STZ	ENGPOW,X	;     "
		LDA	#BGCG
		STA	BGCGNO		;ＢＧ書き換えタイプＮｏ．
		LDA	#UT8A00
		STA	BGUTNO		;ＢＧ書き換えユニットＮｏ．
		JSL	>UNITCHG
;
		LDX	<ENINDX
		JMP	>ENCLEAR
;
MRBLKMV_0150	EQU	$
		RTL
;
;************************************************************************
;*		猿パターンＮｏ．					*
;************************************************************************
MKY_00		EQU	0
MKY_01		EQU	MKY_00+1
MKY_02		EQU	MKY_01+1
MKY_03		EQU	MKY_02+1
MKY_04		EQU	MKY_03+1
MKY_0A		EQU	MKY_04+1
MKY_0B		EQU	MKY_0A+1
MKY_0C		EQU	MKY_0B+1
MKY_0D		EQU	MKY_0C+1
MKY_0E		EQU	MKY_0D+1
MKY_0F		EQU	MKY_0E+1
MKY_10		EQU	MKY_0F+1
MKY_11		EQU	MKY_10+1
MKY_12		EQU	MKY_11+1
MKY_13		EQU	MKY_12+1
MKY_14		EQU	MKY_13+1
MKY_15		EQU	MKY_14+1
MKY_21		EQU	MKY_15+1
MKY_22		EQU	MKY_21+1
MKY_23		EQU	MKY_22+1
MKY_24		EQU	MKY_23+1
MKY_25		EQU	MKY_24+1
MKY_26		EQU	MKY_25+1
MKY_05		EQU	MKY_26+1
MKY_06		EQU	MKY_05+1
MKY_07		EQU	MKY_06+1
MKY_08		EQU	MKY_07+1
MKY_09		EQU	MKY_08+1
MKY_16		EQU	MKY_09+1
MKY_17		EQU	MKY_16+1
MKY_18		EQU	MKY_17+1
MKY_19		EQU	MKY_18+1
MKY_1A		EQU	MKY_19+1
MKY_1B		EQU	MKY_1A+1
MKY_1C		EQU	MKY_1B+1
MKY_1D		EQU	MKY_1C+1
MKY_1E		EQU	MKY_1D+1
MKY_1F		EQU	MKY_1E+1
MKY_20		EQU	MKY_1F+1
MKY_27		EQU	MKY_20+1
MKY_28		EQU	MKY_27+1
MKY_29		EQU	MKY_28+1
MKY_2A		EQU	MKY_29+1
MKY_2B		EQU	MKY_2A+1
MKY_2C		EQU	MKY_2B+1
MKY_2D		EQU	MKY_2C+1
;
;************************************************************************
;*		intial	( 逃げ猿［２］ )				*
;************************************************************************
MKY_CLMB_IN_XA	EQU	$
		WORD	0FFF7H,00008H
;
MONK0IN		EQU	$
		LDA	#MKY_ESC_2
		JSR	MONKY_MODECK
;
;-------------- カベ登りセットチェック ----------------------------------
		LDA	<RANDM0
		AND	#02H
		TAY
		JSR	MKY_IN_BGCK
		BCS	MONK0IN_0010	;カベ登りＯＫ？ ( yes:MONK0IN_0010 )
;
		TYA
		EOR	#02H
		TAY
		JSR	MKY_IN_BGCK
		BCC	MONK0IN_0050	;カベ登りＯＫ？ ( no:MONK0IN_0050 )
;
;-------------- カベ登りセット ----------------------------------
MONK0IN_0010	EQU	$
		TYA
		STA	ENMUKI,X	;向きセット
		LDA	ENXPSL,X
		CLC
		ADC	!MKY_CLMB_IN_XA,Y
		STA	ENXPSL,X
		JSR	MKY_TO_CLMB_IN
;
MONK0IN_0050	EQU	$
		RTL
;
;------------------------------------------------------------------------
;-		カベ登りＢＧチェック					-
;------------------------------------------------------------------------
MONK2_IN_CK	EQU	$
		WORD	0FFFFH,00010H
;
MKY_IN_BGCK	EQU	$
		LDA	ENYPSL,X
MKY_IN_BGCK_2	EQU	$
		STA	R0		;(R0) <-- ＢＧチェックＹ座標
		LDA	ENXPSL,X
		CLC
		ADC	!MONK2_IN_CK,Y
		STA	R8		;(R8) <-- ＢＧチェックＸ座標
;
		PHY			;(Y) save
;
		M_CHIPR M_BGUNIT_READ
;
		PLY			;(Y) load
;
		LDX	<ENINDX
		LDA	R7
		AND	#AL
		BNE	MKY_IN_BGCK_010 ;ＢＧ当たり？ ( yes:MKY_IN_BGCK_010 )
;
		LDA	R6+1
		AND	#00FFH
		SEC
		SBC	#HIGH UT9900
		LSR	A
		BEQ	MKY_IN_BGCK_010 ;つた当たり？ ( yes:MKY_IN_BGCK_010 )
;
		CLC
		RTS
;
MKY_IN_BGCK_010 EQU	$
		SEC
		RTS
;
;************************************************************************
;*		intial	( 種ふき猿 )					*
;************************************************************************
MONK1IN		EQU	$
		LDA	#MKY_SHOT
		JSR	MONKY_MODECK
;
;-------------- 木の実セット --------------------------------------------
MKY_SUIKA_INIT	EQU	$
		JSR	MKY_SUIKA_ST	;木の実セット
		BCS	MONK1IN_0010	;敵エリア確保？ ( yes:MONK1IN_0010 )
		JMP	>ENCLEAR
;
MONK1IN_0010	EQU	$
		RTL
;
;************************************************************************
;*		intial	( インベーター猿 )				*
;************************************************************************
MONK4IN		EQU	$
		LDA	#MKY_INBE
		JSR	MONKY_MODECK
;
		LDA	ENMOD1,X	;ＢＧチェック無しセット
		AND	#1111111111100000B
		STA	ENMOD1,X
		LDA	ENCLOR,X	;ＢＧ優先順位セット（最優先）
		ORA	#00110000B
		STA	ENCLOR,X
;
;-------------- どっちのサイドにしがみつく？ ----------------------------
		LDA	ENMUKI,X
		EOR	#02H
		JSL	>MKY_CLMB_INSTCK
		BRA	MKY_SUIKA_INIT
;
;************************************************************************
;*		intial	( 投げ猿 )					*
;************************************************************************
MONK2IN		EQU	$
		LDA	#MKY_NAGE
		JSR	MONKY_MODECK
;
		LDA	ENMOD1,X	;ＢＧチェック無しセット
		AND	#1111111111100000B
		STA	ENMOD1,X
;
;-------------- どっちのサイドにしがみつく？ ----------------------------
		LDA	<RANDM0
		AND	#02H
MKY_CLMB_INSTCK EQU	$
		TAY
		JSR	MKY_IN_BGCK
		BCS	MONK2IN_0010	;カベ登りＯＫ？ ( yes:MONK2IN_0010 )
;
		LDA	R6
		CMP	#UT3D46
		BEQ	MONK2IN_0010	;つた当たり？ ( yes:MONK2IN_0010 )
		CMP	#UT3D47
		BEQ	MONK2IN_0010	;つた当たり？ ( yes:MONK2IN_0010 )
		CMP	#UT3D56
		BEQ	MONK2IN_0010	;つた当たり？ ( yes:MONK2IN_0010 )
		CMP	#UT3D57
		BEQ	MONK2IN_0010	;つた当たり？ ( yes:MONK2IN_0010 )
;
		TYA
		EOR	#02H
		TAY
MONK2IN_0010	EQU	$
		TYA
		STA	ENMUKI,X	;向きセット
		LDA	ENXPSL,X
		CLC
		ADC	!MKY_CLMB_IN_XA,Y
		STA	ENXPSL,X
		RTL
;
;************************************************************************
;*		intial	( さらい猿 )					*
;************************************************************************
MONK3IN		EQU	$
		LDA	#MKY_OKAJ
		JSR	MONKY_MODECK
		RTL
;
;------------------------------------------------------------------------
;-		逃げ猿［１］への変更チェック				-
;-			in						-
;-				(A) <-- セットモード			-
;------------------------------------------------------------------------
MONKY_MODECK	EQU	$
		LDY	ENWRKA,X
		BEQ	MONKY_MODECK_10 ;気絶モードへ？ ( no:MONKY_MODECK_10 )
;
		PLA			;[ pull pull return !! ]
;
MONKY_DOWN_IN	EQU	$
		LDA	ENCLOR,X	;カラー変更！！
		ORA	#00001000B
		STA	ENCLOR,X
;
		M8
;
		LDA	#0FFH		;再セット無し！！
		STA	ENRETN,X
;
		M16
;
		LDA	#MKY_DOWN_P	;気絶モードカウンターセット
		STA	ENWRK8,X
		LDA	#MKY_ESC_1	;(A) <-- 逃げ猿［１］へ
		JSR	MKY_GO_ESC_1_2	;逃げ猿［１］へ
		RTL
;
MONKY_MODECK_10 EQU	$
		STA	ENWRKA,X
		RTS
;
;------------------------------------------------------------------------
;-		木の実セット						-
;-			out :						-
;-				(C) <-- 1:敵エリア確保			-
;------------------------------------------------------------------------
MKY_SUIKA_ST	EQU	$
		LDA	#SUIKA		;(A) <-- 敵Ｎｏ．
		JSL	>ENINSR		;敵エリア確保
MKY_SUIKA_ST_2	EQU	$
		BCC	MKY_SUIKA_ST_50 ;     ”     ？ ( no:MKY_SUIKA_ST_50 )
;
		LDA	ENXPSL,X	;Ｘ座標セット
		STA	ENXPSL,Y
		LDA	ENYPSL,X	;Ｙ座標セット
		STA	ENYPSL,Y
		LDA	ENYUSN,X	;ＢＧ優先順位セット
		AND	#80H
		ORA	#05H
		STA	ENYUSN,Y
		LDA	ENMOD2,Y	;範囲外クリアー無しセット
		AND	#1111111111110011B
		STA	ENMOD2,Y
		LDA	ENMUKI,X	;向きセット
		STA	ENMUKI,Y
		LDA	ENCLOR,X	;ＢＧ優先順位セット
		STA	ENCLOR,Y
;
		TYA			;木の実のインデックスセット
		INC	A
		STA	<ENWRK4,X
		LDA	ENMOD2,X	;範囲外クリアー無しセット
		AND	#1111111111110011B
		STA	ENMOD2,X
;
		LDA	ENMYNO,Y
		CMP	#SUIKA
		BEQ	MKY_SUIKA_ST_00 ;スイカ？ ( yes:MKY_SUIKA_ST_00 )
;
		TXA
		STA	ENWRK0,Y
		LDA	#0400H
		STA	ENGMAX,Y
		STA	ENWRK8,Y
		BRA	MKY_SUIKA_ST_40
;
MKY_SUIKA_ST_00 EQU	$
		TXA			;親のインデックスセット
		STA	ENWRK0,Y
;
;-------------- 敵スイカパターンＮｏ．セット ----------------------------
		LDA	#01H
		STA	ENCHPT,Y
;
		TYX
		LDY	#CHRE6C-CHR10	;(Y) <-- 敵キャラクターバンク
		JSL	>ENCHRB_SET
		LDX	<ENINDX
;
		M16
;
MKY_SUIKA_ST_40 EQU	$
		SEC
;
MKY_SUIKA_ST_50 EQU	$
		RTS
;
;************************************************************************
;*		move	( お猿いろいろ )				*
;************************************************************************
MONK0MV		EQU	$
MONK1MV		EQU	$
MONK2MV		EQU	$
MONK3MV		EQU	$
MONK4MV		EQU	$
;
		M8
;
		LDA	ENMOD1,X
		AND	#10H		;[ 18H:ノーマルモード ]
		STA	ENWRKX,X
;
		M16
;
		LDA	ENCOLD,X
		BNE	MONKMV_FFFF	;凍った？ ( yes:MONKMV_FFFF )
;
		LDA	ENMODE,X
		CMP	#EMOVE
		BEQ	MONKMV_0000	;健在？ ( yes:MONKMV_0000 )
;
		CMP	#EFAIL
		BEQ	MONKMV_FFFF	;落下死？ ( yes:MONKMV_FFFF )
;
		LDA	ENCLOR,X	;ＢＧ優先順位セット（普通）
		AND	#11001111B
		ORA	#00100000B
		STA	ENCLOR,X
MONKMV_FFFF	EQU	$
		JSR	MKY_HAVE_OFF	;持ってる物放棄！！
		LDA	ENMOD1,X	;ＢＧチェックセット
		AND	#1111111111100000B
		ORA	#18H
		STA	ENMOD1,X
;
MONKMV_0000	EQU	$
		LDA	#1100001000000000B ;(A) <-- 衝突チェックされる
		LDY	ENSHOT,X
		BEQ	MONKMV_0010	;ショット中？ ( no:MONKMV_0010 )
;
		LDY	ENWATR,X
		DEY
		BMI	MONKMV_0002	;水中？ ( no:MONKMV_0002 )
;
		STZ	ENSHOT,X
		JSL	>MONKY_DOWN_IN
MONKMV_0002	EQU	$
		LDA	#MKY_21
		STA	ENCHPT,X
;
		LDA	#1100011000000000B ;(A) <-- 衝突チェックする、される
MONKMV_0010	EQU	$
		LDY	ENTIM1,X
		BEQ	MONKMV_0020	;衝突チェックウェイト？ ( no:MONKMV_0020 )
;
		LDA	#1100000000000000B ;(A) <-- 衝突チェックしない、されない
MONKMV_0020	EQU	$
		STA	ENMOD0,X
;
;------------------------------------------------------------------------
;-		モードチェック						-
;------------------------------------------------------------------------
		JSL	>ENMDCK		;enemy mode check
;
;------------------------------------------------------------------------
;-		お猿タイプセレクト					-
;------------------------------------------------------------------------
		INC	<ENCONT,X
;
		JSR	MKY_CROSSCK	;ショット敵当たりチェック
;
		LDY	<ENWRK2,X
		BEQ	MONKMV_0030	;水中モード？ ( no:MONKMV_0030 )
;
;-------------- 水中モード ----------------------------------------------
		LDA	#0FFC0H		;(A) <-- 上昇スピード
		LDY	ENWATR,X
		DEY
		BPL	MONKMV_0022	;水中？ ( yes:MONKMV_0022 )
		LDA	ENCBFG,X
		AND	#0001B
		BNE	MONKMV_0026	;着地？ ( yes:MONKMV_0026 )
;
		LDA	#0100H		;(A) <-- 下降スピード
MONKMV_0022	EQU	$
		STA	ENGMAX,X	;浮力セット
		LDA	ENYSPD,X
		CMP	#0FFC0H
		BCC	MONKMV_0024
		LDA	#04H
		STA	ENGPOW,X
;
MONKMV_0024	EQU	$
		LDA	#MKY_00
		STA	ENCHPT,X	;泳ぎパターンセット
;
		TXY
		LDX	ENWRKA,Y
		JSR	(!MONKY_SW_TBL,X)
		BRA	MONKMV_0040
;
;-------------- 地上モードへ ------------------------------------
MONKMV_0026	EQU	$
		STZ	<ENWRK2,X
		STZ	ENXMAX,X
		STZ	ENXPOW,X
		LDA	#040H
		STA	ENGPOW,X
		LDA	#0400H
		STA	ENGMAX,X
;
;-------------- 地上モード ----------------------------------------------
MONKMV_0030	EQU	$
		TXY
		LDX	ENWRKA,Y
		JSR	(!MONKY_MV_TBL,X)
;
		LDY	ENWATR,X
		DEY
		BMI	MONKMV_0040	;水中？ ( no:MONKMV_0040 )
		LDA	ENCBFG,X
		AND	#0001B
		BNE	MONKMV_0040	;着地？ ( yes:MONKMV_0040 )
;
;-------------- 水中モードへ ------------------------------------
		INC	<ENWRK2,X
		LDA	#0100H
		CMP	ENYSPD,X
		BPL	MONKMV_0040
;
		STA	ENYSPD,X
;
MONKMV_0040	EQU	$
		JSR	MKY_HAVE_PS	;持ってる物の位置セット
;
		LDY	ENWRKX,X
		BEQ	MONKMV_0050	;カベ登りモード？ ( yes:MONKMV_0050 )
;
		LDA	ENCBFG,X	;前回フレーム着地フラグセット
		AND	#0001B
		STA	ENWRK6,X
;
		LDA	ENYSPD,X
		BMI	MONKMV_0150	;ＢＧ優先順位変更ＯＫ？ ( no:MONKMV_0150 )
;
		LDA	ENCLOR,X	;ＢＧ優先順位セット（普通）
		AND	#11001111B
		ORA	#00100000B
		BRA	MONKMV_0100
;
MONKMV_0050	EQU	$
		STZ	ENWRK6,X	;前回フレーム着地フラグリセット
;
		LDA	ENCLOR,X	;ＢＧ優先順位セット（最優先）
		ORA	#00110000B
MONKMV_0100	EQU	$
		STA	ENCLOR,X
;
MONKMV_0150	EQU	$
		RTL
;
;------------------------------------------------------------------------
;-		お猿タイプルーチンテーブル				-
;------------------------------------------------------------------------
;
;-------------- 地上モード ----------------------------------------------
MONKY_MV_TBL	EQU	$-2		;[ENWRKA]
MNKY_ESC_2	WORD	MONKY_ESC_2	;[2] 逃げ猿［２］
MNKY_SHOT	WORD	MONKY_SHOT	;[4] 種ふき猿
MNKY_NAGE	WORD	MONKY_NAGE	;[6] 投げ猿
MNKY_OKAJ	WORD	MONKY_OKAJ	;[8] さらい猿
MNKY_INBE	WORD	MONKY_INBE	;[A] インベーダー猿
MNKY_ESC_1	WORD	MONKY_ESC_1	;[C] 逃げ猿［１］
;
MKY_ESC_2	EQU	MNKY_ESC_2-MONKY_MV_TBL
MKY_SHOT	EQU	MNKY_SHOT-MONKY_MV_TBL
MKY_NAGE	EQU	MNKY_NAGE-MONKY_MV_TBL
MKY_OKAJ	EQU	MNKY_OKAJ-MONKY_MV_TBL
MKY_INBE	EQU	MNKY_INBE-MONKY_MV_TBL
MKY_ESC_1	EQU	MNKY_ESC_1-MONKY_MV_TBL
;
MONKY_SW_TBL	EQU	$-2		;[ENWRKA]
		WORD	MKYSW_ESC_2	;[2] 逃げ猿［２］
		WORD	MKYSW_SHOT	;[4] 種ふき猿
		WORD	MKYSW_NAGE	;[6] 投げ猿
		WORD	MKYSW_OKAJ	;[8] さらい猿
		WORD	MKYSW_INBE	;[A] インベーダー猿
		WORD	MKYSW_ESC_1	;[C] 逃げ猿［１］
;
;------------------------------------------------------------------------
;-		逃げ猿［１］						-
;------------------------------------------------------------------------
MONKY_DOWN_PT	EQU	$-1
		BYTE	MKY_02,MKY_01,MKY_02,MKY_01,MKY_00,MKY_26,MKY_25,MKY_24
		BYTE	MKY_25,MKY_24,MKY_23,MKY_24,MKY_23,MKY_22,MKY_21
MONKY_DOWN_TM	EQU	$-1
		HEX	08,    08,    08,    08,    20,	   06,	  10,	 04
		HEX	04,    40,    04,    04,    04,	   04,	  04
MKY_DOWN_P	EQU	MONKY_DOWN_TM-MONKY_DOWN_PT+1
;
MKY_CLMB_YAD	EQU	$-(MKY_05*2)	;[ENCHPT]
		WORD	-2		;[MKY_05]
		WORD	-2		;[MKY_06]
		WORD	-3		;[MKY_07]
;
MKY_CLMB_YDW	EQU	$-(MKY_05*2)	;[ENCHPT]
		WORD	3		;[MKY_05]
		WORD	2		;[MKY_06]
		WORD	2		;[MKY_07]
;
MONKY_ESC_1	EQU	$
		TYX
;
		LDY	ENWRK8,X
		BEQ	MONKY_ESC_1_050 ;気絶中？ ( no:MONKY_ESC_1_050 )
;
;-------------- 気絶中 --------------------------------------------------
		JSR	MKY_KICK_CK	;蹴り飛ばされチェック
;
		LDA	ENTIM3,X
		BNE	MONKY_ESC_1_010 ;パターン切り替え？ ( no:MONKY_ESC_1_010 )
		DEC	ENWRK8,X
		BEQ	MONKY_ESC_1_010 ;気絶終了？ ( yes:MONKY_ESC_1_010 )
		LDY	ENWRK8,X
		LDA	!MONKY_DOWN_PT,Y ;パターンＮｏ．セット
		AND	#00FFH
		STA	ENCHPT,X
		LDA	!MONKY_DOWN_TM,Y ;パターン切り替えタイマーセット
		AND	#00FFH
		STA	ENTIM3,X
;
MONKY_ESC_1_010 EQU	$
		LDA	ENCBFG,X
		AND	#00001B
		BEQ	MONKY_ESC_1_020 ;着地？ ( no:MONKY_ESC_1_020 )
;
		LDA	ENXSPD,X
		BEQ	MONKY_ESC_1_030 ;Ｘ移動？ ( no:MONKY_ESC_1_030 )
;
		JSL	>XSDOWN		;Ｘスピード減速
MONKY_ESC_1_020 EQU	$
		JSL	>MONKY_DOWN_IN	;逃げ猿［１］気絶へ
;
MONKY_ESC_1_030 EQU	$
		RTS
;
;-------------- 逃げろや逃げろ！！ --------------------------------------
MONKY_ESC_1_050 EQU	$
		JSR	ASE_SET		;汗セット
;
		LDY	<ENWRK0,X
		BNE	MONKY_ESC_1_100 ;カベ登りモード？ ( yes:MONKY_ESC_1_100 )
;
;-------------- 地上歩きモード ----------------------------------
;;;;		    JSR	    BABY_OKAJ_CK    ;赤ちゃん誘拐ＯＫチェック
;;;;		    BCS	    MONKY_ESC_1_052 ;赤ちゃん誘拐した？ ( no:MONKY_ESC_1_052 )
;;;;;
;;;;;-------------- さらい猿へ！！ --------------------------
;;;;		    LDA	    #MKY_OKAJ
;;;;		    STA	    ENWRKA,X
;;;;		    STZ	    <ENWRK0,X
;;;;		    RTS
;
MONKY_ESC_1_052 EQU	$
		JSR	MKY_TO_CLMB	;カベ登りモードへのチェック
		LDA	ENCBFG,X
		AND	#0001B
		BNE	MONKY_ESC_1_060 ;着地？ ( yes:MONKY_ESC_1_060 )
		JMP	MKY_JMPPT_SET
;
MONKY_ESC_1_060 EQU	$
		LDA	EPWIDX,X
		CLC
		ADC	#020H
		CMP	#040H+1
		BCC	MONKY_ESC_1_070 ;プレイヤー接近？ ( yes:MONKY_ESC_1_070 )
;
		LDA	EPXMUK,X	;逃げる向きセット
		EOR	#02H
		AND	#00FFH
		STA	ENMUKI,X
		JMP	MKY_JUMP_ST_2	;ジャンプセット
;
MONKY_ESC_JMPST EQU	$
MONKY_ESC_1_070 EQU	$
		LDA	EPXMUK,X	;逃げる向きセット
		AND	#00FFH
		STA	ENMUKI,X
		LDA	#0FB00H		;(A) <-- ジャンプＹスピード
		JMP	MKY_JUMP_ST_3
;
;-------------- カベ登りモード ----------------------------------
MONKY_ESC_1_100 EQU	$
		DEY
		BNE	MONKY_ESC_1_150 ;キョロキョロモード？ ( no:MONKY_ESC_1_150 )
;
;-------------- 登れ〜 ----------------------------------
		JSR	MKY_CLMB_MC	;カベ登りチェック
		BCC	MONKY_ESC_1_110 ;キョロキョロモードへ？ ( no:MONKY_ESC_1_110 )
;
		INC	<ENWRK0,X	;キョロキョロモードへ
		STZ	<ENCONT,X	;	  ”
		RTS
;
MKY_CLMB_YMV	EQU	$
MONKY_ESC_1_110 EQU	$
		LDA	ENTIM3,X
		BNE	MONKY_ESC_1_130 ;登りパターン切り替え？ ( no:MONKY_ESC_1_130 )
;
		LDA	#04H		;登りパターン切り替え
		STA	ENTIM3,X
		LDA	ENCHPT,X
		INC	A
		CMP	#MKY_07+1
		BCC	MONKY_ESC_1_120
		LDA	#MKY_05
MONKY_ESC_1_120 EQU	$
		STA	ENCHPT,X
		ASL	A		;登り移動値加算
		TAY
		LDA	ENYPSL,X
		CLC
		ADC	!MKY_CLMB_YAD,Y
		STA	ENYPSL,X

MONKY_ESC_1_130 EQU	$
		RTS
;
;-------------- キョロキョロ ----------------------------
MKY_KYORO_BGCK	EQU	$
		WORD	1000B,0100B

MKY_KYORO_CK	EQU	$
MONKY_ESC_1_150 EQU	$
		JSR	PL_SCALE_CK
		BCS	MONKY_ESC_1_170 ;プレイヤー近い？ ( no:MONKY_ESC_1_170 )
;
		LDA	<EWORK0
		CMP	#020H
		BCS	MONKY_ESC_1_170 ;プレイヤー下に来た？ ( no:MONKY_ESC_1_170 )
;
;-------------- ジャンプ！！ --------------------
		LDA	#010H		;次のカベ登りまでのウェイトタイマーセット
		STA	ENTIM0,X
;
		LDY	ENMUKI,X
		LDA	ENCBFG,X
		AND	!MKY_KYORO_BGCK,Y
		BNE	MONKY_ESC_1_160 ;サイドＢＧ当たり？ ( yes:MONKY_ESC_1_160 )
;
		LDA	<RANDM0
		LSR	A
		BCC	MKY_GO_JMP	;向き反転？ ( no:MKY_GO_JMP )
MONKY_ESC_1_160 EQU	$
		TYA			;向き反転
		EOR	#02H
		STA	ENMUKI,X
;-------------- 地上歩きモードへ ----------------
MKY_GO_JMP	EQU	$
		STZ	<ENWRK0,X	;地上歩きモードへ
		STZ	ENWRK8,X
;
;-------------- ジャンプ状態セット --------------
MKY_JMP_MD_ST	EQU	$
		LDA	ENMOD1,X	;ＢＧチェックタイプ変更
		AND	#1111111111100000B
		ORA	#18H
		STA	ENMOD1,X
		LDA	#040H		;重力セット
		STA	ENGPOW,X
		LDA	#0400H
		STA	ENGMAX,X
		RTS
;
MKY_KYORO_ST	EQU	$
MONKY_ESC_1_170 EQU	$
		JSR	MKY_CLMB_MC	;カベ登りチェック
;
		LDA	<ENCONT,X	;キョロキョロパターンセット
		AND	#010H
		BEQ	MONKY_ESC_1_180
		LDA	#01H
MONKY_ESC_1_180 EQU	$
		CLC
		ADC	#MKY_08
		STA	ENCHPT,X
		RTS
;
;------------------------------------------------------------------------
;-		逃げ猿［２］						-
;------------------------------------------------------------------------
MONKY_ESC_2	EQU	$
		TYX
;
		LDY	<ENWRK0,X
		BEQ	MONKY_ESC_2_FFE ;カベ登りモード？ ( no:MONKY_ESC_2_FFE )
		JMP	MONKY_ESC_2_050
;
;-------------- 地上歩きモード ------------------------------------------
MONKY_ESC_2_FFE EQU	$
;;;;		    JSR	    BABY_OKAJ_CK    ;赤ちゃん誘拐ＯＫチェック
;;;;		    BCS	    MONKY_ESC_2_FFF ;赤ちゃん誘拐した？ ( no:MONKY_ESC_2_FFF )
;;;;;
;;;;;-------------- さらい猿へ！！ --------------------------
;;;;		    LDA	    #MKY_OKAJ
;;;;		    STA	    ENWRKA,X
;;;;		    STZ	    <ENWRK0,X
;;;;		    RTS
;
MONKY_ESC_2_FFF EQU	$
		JSR	MKY_TO_CLMB	;カベ登りモードへのチェック
		LDA	ENCBFG,X
		AND	#0001B
		BNE	MONKY_ESC_2_010 ;着地？ ( yes:MONKY_ESC_2_010 )
		LDA	ENWRK8,X
		BNE	MONKY_ESC_2_000 ;その場でジャンプ？ ( yes:MONKY_ESC_2_000 )
		JMP	MKY_JMPPT_SET
;
MONKY_ESC_2_000 EQU	$
		JMP	MKY_JMPPT_SET_2 ;[ Ｘスピードセット無し！！ ]
;
MONKY_ESC_2_010 EQU	$
;
;-------------- 逃げろ！！ --------------------------------------
		LDY	ECRSFG,X
		DEY
		BMI	MONKY_ESC_2_018 ;敵と当たり？ ( no:MONKY_ESC_2_018 )
;
		LDA	ENMODE,Y
		CMP	#EMOVE
		BNE	MONKY_ESC_2_018 ;健在？ ( no:MONKY_ESC_2_018 )
		LDA	ENMYNO,Y
		CMP	#SUIKA
		BNE	MONKY_ESC_2_018 ;スイカ？ ( no:MONKY_ESC_2_018 )
		LDA	ENWRK0,Y
		ORA	ENWRK2,Y
		BNE	MONKY_ESC_2_018 ;敵のスイカ？ ( yes:MONKY_ESC_2_018 )
;
;-------------- 種ふき猿へ ------------------------------
		TXA			;敵スイカセット
		STA	ENWRK0,Y
		LDA	#0		;重力クリアー
		STA	ENGPOW,Y
		LDA	ENMOD1,Y	;ＢＧチェック無しセット
		AND	#1111111111100000B
		STA	ENMOD1,Y
		LDA	ENMOD2,Y	;範囲外クリアー無しセット
		AND	#1111111111110011B
		STA	ENMOD2,Y
		TYA			;木の実のインデックスセット
		INC	A
		STA	<ENWRK4,X
		LDA	ENMOD2,X	;範囲外クリアー無しセット
		AND	#1111111111110011B
		STA	ENMOD2,X
		LDA	#MKY_SHOT
		STA	ENWRKA,X
		STZ	ENWRK8,X
		STZ	ENTIM3,X
;
MONKY_ESC_2_018 EQU	$
		JSR	PL_SCALE_CK
		BCS	MONKY_ESC_2_020 ;プレイヤー近い？ ( no:MONKY_ESC_2_020 )
;
		JSR	ASE_SET		;汗セット
;
		LDA	<EWORK0
		CMP	#020H
		BCS	MONKY_ESC_2_019 ;プレイヤー接近？ ( no:MONKY_ESC_2_019 )
;
		STZ	ENWRK8,X	;その場でジャンプフラグリセット
		JMP	MONKY_ESC_JMPST
;
MONKY_ESC_2_019 EQU	$
		LDA	EPXMUK,X	;逃げる向きセット
		EOR	#02H
MONKY_ESC_2_SB0 EQU	$
		AND	#00FFH
		STA	ENMUKI,X
		STZ	ENWRK8,X	;その場でジャンプフラグリセット
		JMP	MKY_JUMP_ST_2	;ジャンプセット
;
;-------------- その場でジャンプ --------------------------------
MONKY_ESC_2_020 EQU	$
		LDA	EPXMUK,X	;プレイヤーの方を向く
		JSR	MONKY_ESC_2_SB0 ;ジャンプセット
		STZ	ENXSPD,X	;Ｘスピードクリアー
		LDA	#01H		;その場でジャンプフラグセット
		STA	ENWRK8,X
		RTS
;
;-------------- カベ登りモード ------------------------------------------
MONKY_ESC_2_050 EQU	$
		DEY
		BNE	MONKY_ESC_2_100 ;キョロキョロモード？ ( yes:MONKY_ESC_2_100 )
;
;-------------- 登れ〜 ----------------------------------
		JSR	MKY_CLMB_MC	;カベ登りチェック
		LDA	#3		;(A) <-- キョロキョロモードへ
		BCS	MONKY_ESC_2_060 ;キョロキョロモードへ？ ( yes:MONKY_ESC_2_060 )
;
		LDA	PLJUMP
		BEQ	MONKY_ESC_2_052 ;プレイヤージャンプ中？ ( yes:MONKY_ESC_2_052 )
		LDA	EPWIDY,X
		CMP	#0FFC0H
		BPL	MONKY_ESC_2_070 ;プレイヤーから離れた？ ( no:MONKY_ESC_2_070 )
;
;;;;		    JSR	    PL_SCALE_CK
;;;;		    BCC	    MONKY_ESC_2_070 ;プレイヤー近い？ ( yes:MONKY_ESC_2_070 )
;
MONKY_ESC_2_052 EQU	$
		LDA	#2		;(A) <-- 途中止まりキョロキョロモードへ
MONKY_ESC_2_060 EQU	$
		STA	<ENWRK0,X	;キョロキョロモードへ
		STZ	<ENCONT,X	;	  ”
		RTS
;
MONKY_ESC_2_070 EQU	$
		JSR	ASE_SET		;汗セット
		JMP	MKY_CLMB_YMV	;登りパターン切り替え＆移動
;
MONKY_ESC_2_100 EQU	$
		DEY
		BNE	MONKY_ESC_2_150 ;途中止まりキョロキョロ？ ( no:MONKY_ESC_2_150 )
;
;-------------- 途中止まりキョロキョロ ------------------
		JSR	PL_SCALE_CK
		BCS	MONKY_ESC_2_110 ;プレイヤー近い？ ( no:MONKY_ESC_2_110 )
;
		LDA	PLJUMP
		BNE	MONKY_ESC_2_102 ;プレイヤージャンプ中？ ( yes:MONKY_ESC_102 )
		LDA	EPWIDY,X
		CMP	#0FFC0H
		BMI	MONKY_ESC_2_110 ;プレイヤーから離れた？ ( yes:MONKY_ESC_2_110 )
;
MONKY_ESC_2_102 EQU	$
		DEC	<ENWRK0,X	;登れ〜モードへ
		JMP	MKY_CLMB_PTST
;
MONKY_ESC_2_110 EQU	$
		JMP	MKY_KYORO_ST
;
;-------------- キョロキョロ ----------------------------
MONKY_ESC_2_150 EQU	$
		JMP	MKY_KYORO_CK
;
;------------------------------------------------------------------------
;-		プレイヤーとの距離チェック				-
;-			out :						-
;-				(C) <-- 0:近い 1:遠い			-
;-				(EWK0,1) <-- ＡＢＳ（Ｘ距離）		-
;-				(EWK2,3) <-- ＡＢＳ（Ｙ距離）		-
;------------------------------------------------------------------------
PL_SCALE_CK	EQU	$
		LDA	EPWIDX,X
		BPL	PL_SCALE_CK_010
		EOR	#0FFFFH
		INC	A
PL_SCALE_CK_010 EQU	$
		STA	<EWORK0
		LDA	EPWIDY,X
		BPL	PL_SCALE_CK_020
		EOR	#0FFFFH
		INC	A
PL_SCALE_CK_020 EQU	$
		STA	<EWORK2
		CLC
		ADC	<EWORK0
		CMP	#080H
;
PL_SCALE_CK_050 EQU	$
		RTS
;
;----------------------------------------------------------------
;-		ＯＢＪ当たりチェック				-
;----------------------------------------------------------------
MKY_CROSSCK	EQU	$
		LDY	ECRSFG,X
		BPL	PL_SCALE_CK_050 ;プレイヤーと当たり？ ( no:PL_SCALE_CK_050 )
		LDA	ENTIM1,X
		BNE	PL_SCALE_CK_050 ;プレイヤーと当たり無しウェイト？ ( yes:PL_SCALE_CK_050 )
;
;-------------- プレイヤーと当たり ------------------------------
		JSL	>PLCRMKCK	;プレイヤーとの衝突状態チェック
		CPY	#3*2
		BNE	PL_SCALE_CK_050 ;踏まれた？ ( no:PL_SCALE_CK_050 )
;
;-------------- 踏まれた ----------------------------------------
		LDA	PLYSPD
		BMI	PL_SCALE_CK_050 ;プレイヤー上昇中？ ( yes:PL_SCALE_CK_050 )
;
		LDA	#020H		;プレイヤーと当たり無しウェイトタイマーセット
		STA	ENTIM1,X
;
		LDA	#0FC00H		;player Y speed set
		STA	PLYSPD
		LDA	#01H+8000H
		STA	PLSPJP		;ジタバタジャンプフラグ”ＯＮ”
;
		STZ	ENXSPD,X
		LDA	ENYSPD,X
		BPL	MKY_CROSSCK_010
		STZ	ENYSPD,X
;
MKY_DOWN_ST_2	EQU	$
MKY_CROSSCK_010 EQU	$
		JSL	>PDON0ST
MKY_DOWN_ST	EQU	$
		JSR	MKY_JMP_MD_ST	;ジャンプ状態セット
		JSR	MKY_HAVE_OFF	;持ってる物放棄！！
		JSL	>MONKY_DOWN_IN	;逃げ猿［１］気絶へ
		STZ	<ENWRK2,X	;地上モードへ
;
MKY_CROSSCK_050 EQU	$
		RTS
;
;************************************************************************
;*		お猿さんダウンセット					*
;************************************************************************
MONKY_FAIL_SET	EQU	$
		JSR	MKY_DOWN_ST
		RTL
;
;------------------------------------------------------------------------
;-		蹴り飛ばされチェック					-
;------------------------------------------------------------------------
MKY_KICK_CK	EQU	$
		LDY	ECRSFG,X
		BPL	MKY_KICK_CK_010 ;プレイヤーと当たり？ ( no:MKY_KICK_CK_010 )
		LDA	ENTIM1,X
		BNE	MKY_KICK_CK_010 ;プレイヤーと当たり無しウェイト？ ( yes:MKY_KICK_CK_010 )
;
		JSL	>PLCRMKCK	;プレイヤーとの衝突状態チェック
		CPY	#02H*2
		BCC	MKY_KICK_CK_050 ;サイド当たり？ ( no:MKY_KICK_CK_050 )
MKY_KICK_CK_010 EQU	$
		RTS
;
;----------------------------------------------------------------
;-		蹴り飛ばしセット				-
;----------------------------------------------------------------
MKY_KICK_CK_050 EQU	$
;;;;		    LDA	    #020H	    ;プレイヤーと当たり無しウェイトタイマーセット
;;;;		    STA	    ENTIM1,X
;
		LDA	#-010H
		CPY	#0
		BEQ	MKY_KICK_CK_060 ;右当たり？ ( yes:MKY_KICK_CK_060 )
;
		LDA	#010H
MKY_KICK_CK_060 EQU	$
		SEC
		SBC	EPWIDX,X
		PHA			;(A) save
		CLC
		ADC	PLXSPD
		STA	ENXSPD,X	;蹴り飛ばされＸスピードセット
		PLA			;(A) load
		BMI	MKY_KICK_CK_070
		EOR	#0FFFFH
		INC	A
MKY_KICK_CK_070 EQU	$
		CLC
		ADC	#0FC00H
		STA	ENYSPD,X	;蹴り飛ばされＹスピードセット
;
		LDA	PLXSPD		;プレイヤーＸスピード減速
		ASR16
		STA	PLXSPD
;
		JSR	MKY_DOWN_ST_2
		LDA	#EFAIL		;落下死セット
		STA	ENMODE,X
		LDA	ENCLOR,X	;ＢＧ優先順位変更（最優先）
		ORA	#30H
		STA	ENCLOR,X
;
		PLA			;[ pull pull return !! ]
		RTS
;
;--------------------------------------------------------
;-		頭当たり				-
;--------------------------------------------------------
MKY_CROS_HEAD	EQU	$
		TAX
MKY_CROS_HD_010 EQU	$
		RTS
;
;;;;		    LDA	    EPWIDX,X	    ;ヘッディングＸスピードセット
;;;;		    ASL	    A
;;;;		    ASL	    A
;;;;		    ASL	    A
;;;;		    ASL	    A
;;;;		    STA	    ENXSPD,X
;;;;		    LDA	    PLYSPD	    ;ヘッディングＹスピードセット
;;;;		    CMP	    #0FC00H
;;;;		    BCS	    MKY_CROS_HD_010
;;;;		    LDA	    #0FC00H
;;;;MKY_CROS_HD_010 EQU	    $
;;;;		    STA	    ENYSPD,X
;;;;		    BRA	    MKY_DOWN_ST_2
;
;----------------------------------------------------------------
;-		カベ登りモードチェック				-
;----------------------------------------------------------------
MKY_CLMB_MC	EQU	$
		JSR	MKY_CLMB_CK_1	;カベ登りＢＧチェック
		BCS	MKY_CLMB_MC_010 ;登れる？ ( yes:MKY_CLMB_MC_010 )
;
;-------------- ジャンプ！！ ------------------------------------
		LDA	#0FC00H		;ジャンプスピードセット
		STA	ENYSPD,X
;
		PLA			;[ pull pull return !! ]
;
		JMP	MKY_GO_JMP
;
MKY_CLMB_MC_2	EQU	$
MKY_CLMB_MC_010 EQU	$
;;;;		    SEC
		LDA	ENCBFG,X
		AND	#0010B
		BNE	MKY_CLMB_MC_020 ;頭ＢＧ当たり？ ( yes:MKY_CLMB_MC_020 )
;
		LDA	ENWRKC,X
;
		I16
;
		TAX
		LDA	>ENBGCK_UNIT_H+1,X
;
		I8
;
		TAY			;[ AND #00FFH ]
		LDX	<ENINDX
		CPY	#HIGH UT9B00
		BEQ	MKY_CLMB_MC_020 ;[ * (Z)=1 >> (C)=1 ] サルストッパー？ ( yes:MKY_CLMB_MC_020 )
;
		CLC
MKY_CLMB_MC_020 EQU	$
		RTS
;
;----------------------------------------------------------------
;-		カベ登りモードへのチェック			-
;----------------------------------------------------------------
MKY_TO_CLMB	EQU	$
		JSR	MKY_CLMB_CK	;カベ登りＢＧチェック
		BCC	MKY_TO_CLMB_010 ;登れる？ ( no:MKY_TO_CLMB_010 )
;
;-------------- カベ登りモードへ --------------------------------
		PLA			;[ pull pull return !! ]
;
MKY_TO_CLMB_IN	EQU	$
		INC	<ENWRK0,X	;カベ登りモードへ
		LDA	ENMOD1,X	;ＢＧチェックタイプ変更
		AND	#1111111111100000B
		ORA	#06H
		STA	ENMOD1,X
		STZ	ENXSPD,X	;Ｘスピードクリアー
		STZ	ENYSPD,X	;Ｙスピードクリアー
		STZ	ENGPOW,X	;重力カット
;
;-------------- カベ登りパターン初期セット --------------
MKY_CLMB_PTST	EQU	$
		LDA	#MKY_07		;カベ登りパターン初期セット
		STA	ENCHPT,X
		LDA	#06H		;	 ”	 切り替えタイマー初期セット
		STA	ENTIM3,X
MKY_TO_CLMB_010 EQU	$
		RTS
;
;----------------------------------------------------------------
;-		カベ登りＢＧチェック				-
;----------------------------------------------------------------
MKY_CLMB_BGCR	EQU	$
		WORD	01000B,00100B
MKY_CLMB_HSXP	EQU	$
		WORD	00007H,00008H
MKY_CLMB_HSXA	EQU	$
		WORD	00001H,0FFFFH
		WORD	00001H
;
MKY_CLMB_CK	EQU	$
		LDA	ENTIM0,X
		BNE	MKY_CLMB_CK_012 ;ウェイト？ ( yes:MKY_CLMB_CK_012 )
;
MKY_CLMB_CK_1	EQU	$
		LDY	ENMUKI,X
MKY_CLMB_CK_2	EQU	$
		LDA	ENCBFG,X
		AND	!MKY_CLMB_BGCR,Y
		BNE	MKY_CLMB_CK_020 ;サイドＢＧ当たり？ ( yes:MKY_CLMB_CK_020 )
;
		LDA	ENWRKC,X
		CPY	#0
		BEQ	MKY_CLMB_CK_010 ;左向き？ ( yes:MKY_CLMB_CK_010 )
		CLC
		ADC	#4*2
MKY_CLMB_CK_010 EQU	$
;
		I16
;
		TAX
		LDA	>ENBGCK_UNIT_L+1,X
		AND	#00FFH
;
		I8
;
		LDX	<ENINDX
		SEC
		SBC	#HIGH UT9900
		LSR	A
		BNE	MKY_CLMB_CK_012 ;つた？ ( no:MKY_CLMB_CK_012 )
;
		LDA	ENXPSL,X
		AND	#0FH
		SEC
		SBC	!MKY_CLMB_HSXP,Y
		BEQ	MKY_CLMB_CK_020 ;つたとの位置ＯＫ？ ( yes:MKY_CLMB_CK_020 )
		EOR	!MKY_CLMB_HSXA,Y
		BMI	MKY_CLMB_CK_014 ;つたとの位置ＯＫ？ ( yes:MKY_CLMB_CK_014 )

MKY_CLMB_CK_012 EQU	$
		CLC
		RTS
;
MKY_CLMB_CK_014 EQU	$
		LDA	ENXPSL,X	;Ｘ座標補正
		CLC
		ADC	!MKY_CLMB_HSXA,Y
		STA	ENXPSL,X
MKY_CLMB_CK_020 EQU	$
		SEC
		RTS
;
;----------------------------------------------------------------
;-		ジャンプセット					-
;----------------------------------------------------------------
MONKY_JMPBGC_X	EQU	$
; ENMUKI ->		 [0]  [2]
		WORD	-020H,020H
;
MONKY_XSP	EQU	$
		WORD	0FE00H,00200H
;
MKY_JUMP_ST	EQU	$
		LDA	ENCBFG,X
		AND	#0001B
		BEQ	MKY_JUMP_ST_050 ;着地？ ( no:MKY_JUMP_ST_050 )
;
;-------------- ジャンプセット ----------------------------------
MKY_JUMP_ST_2	EQU	$
		LDA	ENTIM3,X
		BEQ	MKY_JUMP_ST_000 ;ウェイト？ ( no:MKY_JUMP_ST_000 )
;
MKY_JUMP_WAIT	EQU	$
		STZ	ENXSPD,X
		LDA	#MKY_03		;ジャンプウェイトパターンセット
		STA	ENCHPT,X
		RTS
;
MKY_JUMP_ST_000 EQU	$
		LDY	ENMUKI,X
		LDA	ECENTX,X
		CLC
		ADC	!MONKY_JMPBGC_X,Y
		STA	R8		;(R8) <-- ＢＧチェックＸ座標
		LDA	ENYPSL,X
		SEC
		SBC	#030H
		STA	R0		;(R0) <-- ＢＧチェックＹ座標
		M_CHIPR M_BGUNIT_READ
;
		LDX	<ENINDX
		LDA	R7
		AND	#AL
		BNE	MKY_JUMP_ST_010 ;ＢＧ当たり？ ( yes:MKY_JUMP_ST_010 )
;
		LDA	#0FD00H		;(A) <-- ジャンプＹスピード（小）
		LDY	R6+1
		CPY	#HIGH UT9900
		BCC	MKY_JUMP_ST_020 ;つた？ ( no:MKY_JUMP_ST_020 )
		CPY	#(HIGH UT9A00)+1
		BCS	MKY_JUMP_ST_020 ;つた？ ( no:MKY_JUMP_ST_020 )
MKY_JUMP_ST_010 EQU	$
		LDA	#0FA00H		;(A) <-- ジャンプＹスピード（大）
MKY_JUMP_ST_3	EQU	$
MKY_JUMP_ST_020 EQU	$
		STA	ENYSPD,X
;
;-------------- ジャンプパターンセット --------------------------
MKY_JMPPT_SET	EQU	$
		LDY	ENMUKI,X	;Ｘスピードセット
		LDA	!MONKY_XSP,Y
		STA	ENXSPD,X
;
MKY_JMPPT_SET_2 EQU	$
MKY_JUMP_ST_050 EQU	$
		LDA	#05H		;着地ウェイトタイマーセット
		STA	ENTIM3,X
		LDA	#MKY_04		;ジャンプパターンセット
		STA	ENCHPT,X
		RTS
;
;------------------------------------------------------------------------
;-		種ふき猿						-
;------------------------------------------------------------------------
MKY_SHOT_PT	EQU	$-1
		BYTE	MKY_1E,MKY_1D,MKY_1E,MKY_1D,MKY_1E,MKY_1D,MKY_1E,MKY_1D
		BYTE	MKY_18,MKY_1C,MKY_18,MKY_1C
		BYTE	MKY_18,MKY_1C,MKY_18,MKY_1C,MKY_18,MKY_1B,MKY_1A
MKY_SHOT_TM	EQU	$-1
		HEX	03,    03,    03,    03,    03,	   03,	  03,	 03
		HEX	10,    04,    04,    04
		HEX	04,    04,    04,    04,    04,	   08,	  10
MKY_SHOT_P	EQU	MKY_SHOT_TM-MKY_SHOT_PT+1
;
MKY_WALK_XSP	EQU	$
; ENMUKI -->		 [0]	[2]
		WORD	0FE80H,00180H
;
MKY_SUIKT_XA	EQU	$
		WORD	0FFF8H,00008H
MKY_SUIKT_XS	EQU	$
		WORD	0FE00H,00200H
;
MKY_ORO_PTTM	EQU	$
		WORD	010H,020H,08H,018H
;
MONKY_SHOT	EQU	$
		TYX
;
		JSR	MKY_HAVE_CK	;持ってる物の存在チェック
;;;;		    JSR	    MKY_HAVE_PS	    ;持ってる物の位置セット
;
		LDY	<ENWRK0,X
		CPY	#03H
		BCC	MONKY_SHOT_000	;カベ登りモード？ ( no:MONKY_SHOT_000 )
;
		JMP	MKY_OKAJ_CLMB
;
MONKY_SHOT_000	EQU	$
		JSR	GO_ORO_CK	;”オロオロ”モードへのチェック
;
		LDY	<ENWRK0,X
		BEQ	MONKY_SHOT_010	;木の実かじりモード？ ( yes:MONKY_SHOT_010 )
		JMP	MONKY_SHOT_100
;
;-------------- 木の実かじりモード --------------------------------------
MONKY_SHOT_010	EQU	$
		LDY	ENWRK8,X
		BNE	MONKY_SHOT_012	;木の実かじり中？ ( yes:MONKY_SHOT_012 )
		JMP	MONKY_SHOT_050
;
MONKY_SHOT_012	EQU	$
		LDA	ENTIM3,X
		BNE	MONKY_SHOT_014	;パターン切り替え？ ( no:MONKY_SHOT_14 )
		DEY
		TYA
		STA	ENWRK8,X
		BNE	MONKY_SHOT_020	;木の実かじり終了？ ( no:MONKY_SHOT_020 )
;
		LDA	#80H		;ウェイトセット
		STA	ENTIM3,X
		LDA	#MKY_18
		STA	ENCHPT,X
MONKY_SHOT_014	EQU	$
		RTS
;
MONKY_SHOT_020	EQU	$
		LDA	!MKY_SHOT_TM,Y	;パターン切り替えタイマーセット
		AND	#00FFH
		STA	ENTIM3,X
		LDA	!MKY_SHOT_PT,Y	;パターンＮｏ．セット
		AND	#00FFH
		STA	ENCHPT,X
		CMP	#MKY_1C
		BNE	MONKY_SHOT_022	;”ガツガツ”サウンドセット？ ( no:MONKY_SHOT_022 )
;
		PHA			;(A) save
		LDA	#014H		;[♪]
		JSL	>SOUND_3_ON
		PLA			;(A) load
;
MONKY_SHOT_022	EQU	$
		CMP	#MKY_1D
		BNE	MONKY_SHOT_030	;スイカの種ショット？ ( no:MONKY_SHOT_030 )
;
;-------------- スイカの種ショットセット ------------------------
		LDA	EPXMUK,X	;プレイヤー向きサーチ
		EOR	#02H
		AND	#00FFH
		STA	ENMUKI,X
;
		LDA	#SUIKT		;(A) <-- 敵Ｎｏ．
		JSL	>ENINSR		;敵エリア確保
		BCC	MONKY_SHOT_030	;      ”    ？ ( no:MONKY_SHOT_030 )
;
		LDA	ENMUKI,X	;Ｘ座標セット
		EOR	#02H
		STA	ENMUKI,Y	;向きセット
		TAX
		LDA	ENXP2L
		CLC
		ADC	!MKY_SUIKT_XA,X
		STA	ENXPSL,Y
		LDA	ENYP2L		;Ｙ座標セット
		SEC
		SBC	#03H
		STA	ENYPSL,Y
		LDA	!MKY_SUIKT_XS,X ;Ｘスピードセット
		STA	ENXSPD,Y
		LDA	#01H		;ショットフラグセット
		STA	ENSHOT,Y
		STA	ENWRK8,Y	;敵から打ったフラグ”ＯＮ”
		LDA	ENMOD0,Y	;敵と当たらない様に
		AND	#1111100111111111B
		STA	ENMOD0,Y
		LDA	#0FFH+(0FFH*100H) ;水中スピードリセット
		STA	ENWATR,Y	  ;[ & ENWTSP ]
;
		LDA	#045H		;[♪]
		JSL	>SOUND_3_ON
;
		LDX	<ENINDX
MONKY_SHOT_030	EQU	$
		RTS
;
MONKY_SHOT_050	EQU	$
		JSR	PL_SCALE_CK
		BCS	MONKY_SHOT_060	;プレイヤー近い？ ( no:MONKY_SHOT_060 )
;
;-------------- 逃げモードへ！！ --------------------------------
		INC	<ENWRK0,X
		LDA	#020H		;逃げモードウェイトタイマーセット
		STA	ENTIM2,X
		RTS
;
MONKY_SHOT_060	EQU	$
		STZ	ENXSPD,X	;Ｘスピードクリアー
		LDA	ENTIM3,X
		BNE	MONKY_SHOT_070	;木の実かじる？ ( no:MONKY_SHOT_070 )
		LDA	ENDSXL,X
		CMP	#0F0H
		BCS	MONKY_SHOT_070	;Ｘ方向表示？ ( no:MONKY_SHOT_070 )
		LDA	<EWORK2
		CMP	#020H
		BCS	MONKY_SHOT_070	;プレイヤーＹ位置ＯＫ？ ( no:MONKY_SHOT_070 )
;
;-------------- 木の実かじりへ！！ ------------------------------
		LDA	#MKY_SHOT_P
		STA	ENWRK8,X
;
MONKY_SHOT_070	EQU	$
		JMP	MKY_ORO_PTST	;”オロオロ”パターンセット
;
;-------------- 逃げろ！！ ----------------------------------------------
MONKY_SHOT_100	EQU	$
		DEY
		BNE	MONKY_SHOT_150	;”オロオロ”？ ( yes:MONKY_SHOT_150 )
;
		JSR	PL_SCALE_CK
		BCC	MONKY_SHOT_102	;プレイヤー近い？ ( yes:MONKY_SHOT_102 )
;
		LDA	ENTIM2,X
		BEQ	MKY_ORO_CANCEL	;ウェイト？ ( no:MKY_ORO_CANCEL )
;
MONKY_SHOT_102	EQU	$
		LDA	<EWORK0
		CMP	#020H
		BCS	MKY_ESC_WKST	;プレイヤー接近？ ( no:MKY_ESC_WKST )
;
		JMP	MKY_HAVE_JMPST
;
;-------------- 持って逃げる歩きパターンセット ------------------
MKY_ESC_WKST	EQU	$
		LDA	EPXMUK,X	;逃げる向きセット
		EOR	#02H
		AND	#00FFH
		STA	ENMUKI,X
		TAY			;Ｘスピードセット
		LDA	!MKY_WALK_XSP,Y
		STA	ENXSPD,X
		LDA	ENCBFG,X
		AND	!MKY_CLMB_BGCR,Y
		BEQ	MONKY_SHOT_110	;サイドＢＧ当たり？ ( no:MONKY_SHOT_110 )
;
		STZ	ENXSPD,X
MONKY_SHOT_110	EQU	$
		LDA	ENCBFG,X
		AND	#0001B
		BEQ	MONKY_SHOT_120	;ジャンプ中？ ( yes:MONKY_SHOT_120 )
;
		LDA	<ENCONT,X	;歩きパターンセット
		AND	#02H
		LSR	A
;;;;		    CLC
		ADC	#MKY_16
		STA	ENCHPT,X
		RTS
;
MONKY_SHOT_120	EQU	$
		JMP	MKY_OKAJ_PTST	;ジャンプパターンセット
;
;-------------- ”オロオロ” --------------------------------------------
MKY_ORO_CK	EQU	$
MONKY_SHOT_150	EQU	$
		JSR	PL_SCALE_CK
;;;;		    CMP	    #060H
		BCS	MONKY_SHOT_160	;プレイヤー近い？ ( no:MONKY_SHOT_160 )
;
		LDA	EPXMUK,X
		AND	#00FFH
		CMP	ENMUKI,X
		BEQ	MONKY_SHOT_170	;プレイヤー迫ってる？ ( yes:MONKY_SHOT_170 )
;
;-------------- プレイヤーいなくなった --------------------------
MKY_ORO_CANCEL	EQU	$
MONKY_SHOT_160	EQU	$
		STZ	<ENWRK0,X	;初期モード
		STZ	ENXSPD,X
		LDA	#MKY_18
		STA	ENCHPT,X
		LDA	#020H		;逃げモードウェイトタイマーセット
		STA	ENTIM2,X
MONKY_SHOT_162	EQU	$
		RTS
;
;-------------- プレイヤー迫ってる！！ --------------------------
MONKY_SHOT_170	EQU	$
		STZ	ENXSPD,X
;;;;		    LDA	    ENTIM2,X
;;;;		    BNE	    MONKY_SHOT_1712 ;ウェイト？ ( yes:MONKY_SHOT_1712 )
;
		LDA	PLXSPD
		BPL	MONKY_SHOT_171
		EOR	#0FFFFH
		INC	A
MONKY_SHOT_171	EQU	$
		LSR	A
		LSR	A
		LSR	A
		CLC
		ADC	#018H
		CMP	<EWORK0
		BCS	MONKY_SHOT_173	;逃げだす？ ( yes:MONKY_SHOT_173 )
MONKY_SHOT_1712 EQU	$
		JMP	MONKY_SHOT_180
;
;-------------- ”たすけて！！” ------------------------
MONKY_SHOT_173	EQU	$
		LDY	<ENWRK4,X
		BEQ	MONKY_SHOT_162	;持ってる？ ( no:MONKY_SHOT_162 )
;
;;;;		    DEY
;;;;		    BNE	    MONKY_SHOT_175  ;赤ちゃん？ ( no:MONKY_SHOT_175 )
;;;;;
		LDA	EPXMUK,X
		EOR	#02H
		TAY
		JSR	MKY_CLMB_CK_2
		BCC	MONKY_SHOT_175	;登れる？ ( no:MONKY_SHOT_175 )
;
;-------------- カベ登りモードへ --------------------------------
		INC	<ENWRK0,X	;カベ登りモードへ
TO_CLMB_INIT	EQU	$
		LDA	ENMOD1,X	;ＢＧチェックタイプ変更
		AND	#1111111111100000B
		ORA	#06H
		STA	ENMOD1,X
		STZ	ENXSPD,X	;Ｘスピードクリアー
		STZ	ENYSPD,X	;Ｙスピードクリアー
		STZ	ENGPOW,X	;重力カット
		RTS
;
MKY_HAVE_JMPST	EQU	$
MONKY_SHOT_175	EQU	$
		STZ	ENWRK0,X
		LDA	#0FB00H		;(A) <-- ジャンプＹスピード
		JSR	MKY_OKAJ_JMPST2 ;ジャンプセット
		LDY	ENMUKI,X	;Ｘスピードセット
		LDA	!MONKY_XSP,Y
		STA	ENXSPD,X
		RTS
;
;-------------- ”オロオロ”パターンセット --------------
MONKY_SHOT_180	EQU	$
		LDA	#07H		;(A) <-- 汗セットタイミング（普通）
		LDY	<EWORK0
		CPY	#040H
		BCC	MONKY_SHOT_190	;プレイヤー近い？ ( yes:MONKY_SHOT_190 )
		LDA	#0FH		;(A) <-- 汗セットタイミング（普通）
MONKY_SHOT_190	EQU	$
		JSR	ASE_SET_2	;汗セット
;
MKY_ORO_PTST	EQU	$
		LDA	ENTIM3,X
		BNE	MONKY_SHOT_210	;パターン切り替え？ ( no:MONKY_SHOT_210 )
		LDA	<RANDM0
		AND	#03H*2
		TAY
		LDA	!MKY_ORO_PTTM,Y
		LDY	<EWORK0
		CPY	#040H
		BCS	MONKY_SHOT_200	;プレイヤー近い？ ( no:MONKY_SHOT_200 )
		LSR	A
MONKY_SHOT_200	EQU	$
		STA	ENTIM3,X
		LDA	ENCHPT,X	;[ 18H <-> 19H ]
		INC	A
		CMP	#MKY_19+1
		BCC	MONKY_SHOT_202
		LDA	#MKY_18
MONKY_SHOT_202	EQU	$
		STA	ENCHPT,X
MONKY_SHOT_210	EQU	$
		RTS
;
;------------------------------------------------------------------------
;-		持ってる物放り投げ					-
;------------------------------------------------------------------------
MKY_HAVE_OFF	EQU	$
		LDY	<ENWRK4,X
		BEQ	MONKY_SHOT_210	;持ってる？ ( no:MONKY_SHOT_210 )
;
		DEY			;[-1]
		BNE	MKY_HAVE_OFF_10 ;持ってる物は赤ちゃん？ ( no:MKY_HAVE_OFF_10 )
;
;-------------- 赤ちゃんの開放 ------------------
		JSL	>BABYM_DOROB_C2

		LDA	ENXPSL,X
		STA	ENXPSL
		LDA	ENYPSL,X
		STA	ENYPSL
		STZ	ENXSPD
		LDA	#0FE80H
		STA	ENYSPD
		BRA	MKY_HAVE_OFF_40
;
;-------------- 木の実の開放 --------------------
MKY_HAVE_OFF_10 EQU	$
		LDA	ENXPSL,X	;Ｘ座標補正
		STA	ENXPSL,Y
		LDA	ENYPSL,X	;Ｙ座標補正
		CLC
		ADC	#10
		STA	ENYPSL,Y
;
		PHX			;(X) save
;
		TYX
		STZ	<ENWRK0,X
		JSL	>KINOMI_CANCEL
		TXY
;
		PLX			;(X) load
;
MKY_HAVE_OFF_20 EQU	$
		LDA	ENXPSL,X	;持ってる物放り投げＸスピードセット
		CMP	ENXPSL,Y
		LDA	#0100H
		BCC	MKY_HAVE_OFF_30
		LDA	#0FF00H
MKY_HAVE_OFF_30 EQU	$
		STA	ENXSPD,Y
		LDA	#0FC00H		;持ってる物放り投げＹスピードセット
		STA	ENYSPD,Y

MKY_HAVE_OFF_40 EQU	$
		STZ	<ENWRK4,X
;
MKY_GO_ESC_1	EQU	$
		STZ	ENWRK8,X
		LDA	#MKY_ESC_2	;(A) <-- 逃げ猿［２］へ
MKY_GO_ESC_1_2	EQU	$
;;;;		    LDA	    #MKY_ESC_1
		STA	ENWRKA,X	;逃げ猿［１］へ
		STZ	<ENWRK0,X
		STZ	ENTIM3,X	;タイマーリセット
		LDA	ENMOD1,X	;ＢＧチェックタイプ変更
		AND	#1111111111100000B
		ORA	#18H
		STA	ENMOD1,X
		LDA	ENMOD2,X	;範囲クリアー”ＯＮ”
		ORA	#0000000000000100B
		STA	ENMOD2,X
		LDA	#04H		;ＯＢＪ優先順位セット
		STA	ENYUSN,X
		LDA	#040H
		STA	ENGPOW,X
		RTS
;
;------------------------------------------------------------------------
;-		汗セット						-
;------------------------------------------------------------------------
ASE_SET_XP	EQU	$
		WORD	00004H,0FFFCH
ASE_SET_XS	EQU	$
		WORD	00080H,0FF80H
;
ASE_SET		EQU	$
		LDA	#0FH
ASE_SET_2	EQU	$
		AND	<ENCONT,X
		BNE	ASE_SET_010	;汗セット？ ( no:ASE_SET_010 )
;
		LDY	ENMUKI,X
		LDA	!ASE_SET_XS,Y
		PHA			;(A) save
		LDA	!ASE_SET_XP,Y
		PHA			;(A) save
		LDA	#ASE01		;(A) <-- 効果Ｎｏ．
		JSL	>EXINSR		;効果エリアセット
		PLA			;(A) load
		CLC
		ADC	ENXPSL,X
		STA	EXXPSL,Y	;Ｘ座標セット
		PLA			;(A) load
		CLC
		ADC	ENXSPD,X
		STA	EXXSPD,Y	;Ｘスピードセット
		LDA	ENYPSL,X
		SEC
		SBC	#09H
		STA	EXYPSL,Y	;Ｙ座標セット
;;;;		    LDA	    ENYSPD,X
;;;;		    STA	    EXYSPD,Y	    ;Ｙスピードセット
		LDA	ENMUKI,X	;向きセット
		STA	EXMUKI,Y
		LDA	#010H		;タイマーセット
		STA	EXTIM0,Y
ASE_SET_010	EQU	$
		RTS
;
;------------------------------------------------------------------------
;-		”オロオロ”モードへのチェック				-
;------------------------------------------------------------------------
MKY_ORO_SDBGCK	EQU	$
; ENMUKI -->		 [0]   [2]
		WORD	1000B,0100B
;
GO_ORO_CK	EQU	$
;
;-------------- カベ登りモードへのチェック ----------------------
		JSR	MKY_CLMB_CK
		BCC	GO_ORO_CK_FFF	;登れる？ ( no:GO_ORO_CK_FFF )
;
		LDA	#03H		;カベ登りモードへ
		STA	<ENWRK0,X
		LDA	#020H		;カベ登りウェイトタイマーセット
		STA	ENTIM2,X
		LDA	#MKY_06		;カベ登りパターン初期セット
		STA	ENCHPT,X
		LDY	ENMUKI,X
		LDA	ENXPSL,X	;Ｘ座標食い込ませ
		CLC
		ADC	!MKY_CLMB_HSXA+2,Y
		STA	ENXPSL,X
;
		PLA			;[ pull pull return !! ]
		JMP	TO_CLMB_INIT
;
;-------------- ”オロオロ”モードへのチェック --------------------------
GO_ORO_CK_FFF	EQU	$
		LDA	ENCBFG,X
		BIT	#0001B
		BEQ	GO_ORO_CK_000	;着地？ ( no:GO_ORO_CK_000 )
;
		LDY	ENMUKI,X
		AND	!MKY_ORO_SDBGCK,Y
		BNE	GO_ORO_CK_012	;サイドＢＧ当たり？ ( yes:GO_ORO_CK_012 )
		RTS
;
GO_ORO_CK_000	EQU	$
		LDA	ENWRK6,X
		BNE	GO_ORO_CK_010	;前のフレーム着地？ ( yes:GO_ORO_CK_010 )
;
		PLA			;[ pull pull return !! ]
		RTS
;
;-------------- 足補正 --------------------------------------------------
GO_ORO_CK_010	EQU	$
		LDA	>EBGOXP,X	;着地Ｘ座標セット
		STA	ENXPSL,X
		LDA	>EBGOYP,X	;着地Ｙ座標セット
		STA	ENYPSL,X
		STZ	ENTIM2,X
		STZ	ENXSPD,X
;
GO_ORO_CK_012	EQU	$
		JSR	PL_SCALE_CK
;;;;		    CMP	    #060H
		BCS	GO_ORO_CK_020	;プレイヤー近い？ ( no:GO_ORO_CK_020 )
;
		LDA	EPXMUK,X
		AND	#00FFH
		CMP	ENMUKI,X
		BEQ	GO_ORO_CK_020	;”オロオロ”？ ( no:GO_ORO_CK_020 )
;
;-------------- ”オロオロ”モードへ ----------------------------
		STA	ENMUKI,X	;プレイヤーの方へ向く
		LDA	#02H
		STA	<ENWRK0,X
;;;;		    LDA	    #020H	    ;ウェイトタイマーセット
;;;;		    STA	    ENTIM2,X
		LDA	#MKY_18		;パターンＮｏ．セット
		STA	ENCHPT,X
		STZ	ENTIM3,X	;パターン切り替えタイマーセット
		RTS
;
;-------------- 行ったり来たりセット ----------------------------
GO_ORO_CK_020	EQU	$
		LDA	ENMUKI,X	;向き反転
		EOR	#02H
		STA	ENMUKI,X
		RTS
;
;----------------------------------------------------------------
;-		赤ちゃんエリアチェック				-
;----------------------------------------------------------------
BABY_AREA_CK	EQU	$
;
;-------------- Ｘ座標ＭＡＸチェック ----------------------------
		LDY	#1000B		;(Y) <-- サイドＢＧ当たりフラグ（左）
		LDA	ENXPSL,X
		SEC
		SBC	#0010H
		BMI	BABY_AREA_CK_10 ;Ｘ座標ＭＡＸオーバー？ ( yes:BABY_AREA_CK_10 )
		SEC
		SBC	#0FE0H-0010H
		BMI	BABY_AREA_CK_20 ;	    ”		( no:BABY_AREA_CK_10 )
		LDY	#0100B		;(Y) <-- サイドＢＧ当たりフラグ（右）
BABY_AREA_CK_10 EQU	$
		EOR	#0FFFFH
		SEC			;[ INC A ]
		ADC	ENXPSL,X
		STA	ENXPSL,X	;Ｘ座標補正
;;;;		    TYA
;;;;		    ORA	    ENCBFG,X
;;;;		    STA	    ENCBFG,X	    ;サイドＢＧ当たりフラグ”ＯＮ”
;
;-------------- 移動範囲チェック ----------------------------------------
BABY_AREA_CK_20 EQU	$
		LDA	ENDSXL,X
		CLC
		ADC	#020H
		CMP	#0110H+020H
		BCS	MONKY_STOP	;移動範囲オーバー？ ( yes:MONKY_STOP )
		RTS
;
;------------------------------------------------------------------------
;-		持ってる物の存在チェック				-
;------------------------------------------------------------------------
MKY_HAVE_CK	EQU	$
		LDY	<ENWRK4,X
		BNE	MKY_HAVE_CK_FFC ;持ってる？ ( yes:MKY_HAVE_CK_FFC )
		JMP	MKY_HAVE_CK_010
;
MKY_HAVE_CK_FFC EQU	$
		LDA	ENMODE-1,Y
		CMP	#EMOVE
		BNE	MKY_HAVE_CK_002 ;健在？ ( no:MKY_HAVE_CK_002 )
;
		DEY			;[-1]
		BNE	MKY_HAVE_CK_FFE ;赤ちゃん？ ( no:MKY_HAVE_CK_FFE )
;
;-------------- 赤ちゃん持ってる時の範囲チェック ------------------------
		LDA	ENDSXL,X
		CLC
		ADC	#040H
		CMP	#0130H+040H
		BCS	MONKY_STOP	;Ｘ方向表示エリアオーバー？ ( yes:MONKY_STOP )
		LDA	ENDSYL,X
		CLC
		ADC	#040H
		CMP	#0E0H+040H
		BCC	MKY_HAVE_CK_FFE ;Ｙ方向表示エリアオーバー？ ( no:MKY_HAVE_CK_FFE )
		LDA	ENXPSH,X
		AND	#0FH
		STA	<EWORK0
		LDA	ENYPSL,X
		CLC
		ADC	#030H
		CMP	#0800H
		BCS	MKY_HAVE_CK_FFD ;ホール？ ( yes:MKY_HAVE_CK_FFD )
		AND	#0700H
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		ORA	<EWORK0
		TAY
		LDA	UNBUFAD-1,Y
		BPL	MONKY_STOP	;ホール？ ( no:MONKY_STOP )
;
MKY_HAVE_CK_FFD EQU	$
		JMP	MKY_HAVE_OFF
;
MONKY_STOP	EQU	$
		LDA	ENXPSL,X	;移動ＳＴＯＰ！！
		SEC
		SBC	ENMOVX,X
		STA	ENXPSL,X
		LDA	ENYPSL,X
		SEC
		SBC	ENMOVY,X
		STA	ENYPSL,X
;
		JSR	MKY_HAVE_PS	;持ってる物の位置セット
;
		PLA			;[ pull pull return !! ]
		PLA
		RTL
;
MKY_HAVE_CK_FFE EQU	$
		PHY			;(Y) save
		JSL	>DISPCK0
		PLY			;(Y) load
		BCS	MKY_HAVE_CK_FFF ;範囲外クリアー？ ( yes:MKY_HAVE_CK_FFF )
;
		LDA	ENGPOW,Y
		CMP	#040H
		BPL	MKY_HAVE_CK_002 ;スイカ放す？ ( yes:MKY_HAVE_CK_002 )
;
		LDA	ENMUKI,X
		STA	ENMUKI,Y
		RTS
;
MKY_HAVE_CK_FFF EQU	$
;
;-------------- 持ってる物クリアー --------------------------------------
		TYX
		JSL	>ENCLEAR
		LDX	<ENINDX
;
		PLA			;[ pull pull return !! ]
		PLA			;[ pull pull return !! ]
		RTL
;
;-------------- 持ってる物と手を切る（専門用語） ------------------------------------
MKY_HAVE_CK_002 EQU	$
		STZ	<ENWRK4,X
		LDA	ENMOD2,X	;範囲外クリアー”ＯＮ”
		ORA	#0000000000000100B
		STA	ENMOD2,X
;
MKY_HAVE_CK_010 EQU	$
;
		PLA			;[ pull pull return !! ]
		JMP	MKY_GO_ESC_1	;逃げ猿［２］へ
;
;------------------------------------------------------------------------
;-		持ってる物の位置セット					-
;------------------------------------------------------------------------
MKY_HAVE_XA	EQU	$-(MKY_05*2)	;[ENCHPT]
		WORD	00000H		;[MKY_05]
		WORD	00000H		;[MKY_06]
		WORD	00000H		;[MKY_07]
		WORD	00000H		;[MKY_08]
		WORD	00000H		;[MKY_09]
		WORD	0FFF6H		;[MKY_16]
		WORD	0FFF6H		;[MKY_17]
		WORD	0FFF4H		;[MKY_18]
		WORD	0FFF4H		;[MKY_19]
		WORD	0FFF4H		;[MKY_1A]
		WORD	0FFF3H		;[MKY_1B]
		WORD	0FFF4H		;[MKY_1C]
		WORD	0FFF8H		;[MKY_1D]
		WORD	0FFF8H		;[MKY_1E]
		WORD	00000H		;[MKY_1F]
		WORD	00000H		;[MKY_20]
		WORD	0FFF6H		;[MKY_27]
		WORD	0FFF5H		;[MKY_28]
		WORD	0FFF6H		;[MKY_29]
		WORD	0FFFAH		;[MKY_2A]
		WORD	0FFFAH		;[MKY_2B]
		WORD	0FFF6H		;[MKY_2C]
		WORD	0FFF6H		;[MKY_2D]
;
MKY_HAVE_YA	EQU	$-(MKY_05*2)
		WORD	0FFEEH		;[MKY_05]
		WORD	0FFEFH		;[MKY_06]
		WORD	0FFF0H		;[MKY_07]
		WORD	0FFF0H		;[MKY_08]
		WORD	0FFF0H		;[MKY_09]
		WORD	0FFFBH		;[MKY_16]
		WORD	0FFFAH		;[MKY_17]
		WORD	0FFFCH		;[MKY_18]
		WORD	0FFFCH		;[MKY_19]
		WORD	0FFFCH		;[MKY_1A]
		WORD	0FFFDH		;[MKY_1B]
		WORD	0FFFCH		;[MKY_1C]
		WORD	00000H		;[MKY_1D]
		WORD	00000H		;[MKY_1E]
		WORD	0FFF0H		;[MKY_1F]
		WORD	0FFE5H		;[MKY_20]
		WORD	0FFFCH		;[MKY_27]
		WORD	0FFFDH		;[MKY_28]
		WORD	0FFFCH		;[MKY_29]
		WORD	00000H		;[MKY_2A]
		WORD	00000H		;[MKY_2B]
		WORD	0FFFCH		;[MKY_2C]
		WORD	0FFFCH		;[MKY_2D]
;
MKY_HAVE_PS	EQU	$
		LDY	<ENWRK4,X
		BEQ	MKY_HAVE_PS_050 ;持ってる？ ( no:MKY_HAVE_PS_050 )
		LDA	ENWRKA,X
		CMP	#MKY_NAGE
		BEQ	MKY_HAVE_PS_050 ;投げ猿？ ( yes:MKY_HAVE_PS_050 )
;
		LDA	ENCHPT,X
		CMP	#MKY_05
		BCS	MKY_HAVE_PS_020 ;持ってるパターン？ ( yes:MKY_HAVE_PS_010 )
		LDA	#MKY_18
		STA	ENCHPT,X
MKY_HAVE_PS_020 EQU	$
		ASL	A
		TAY
		LDA	ENMUKI,X
		LSR	A
		LSR	A
		LDA	!MKY_HAVE_XA,Y
		BCC	MKY_HAVE_PS_030
		EOR	#0FFFFH
		INC	A
MKY_HAVE_PS_030 EQU	$
		PHA			;(A) save
		LDA	!MKY_HAVE_YA,Y
		LDY	<ENWRK4,X
		CLC
		ADC	ENYPSL,X
		STA	ENYPSL-1,Y	;Ｙ座標セット
		PLA			;(A) load
		CLC
		ADC	ENXPSL,X
		STA	ENXPSL-1,Y	;Ｘ座標セット
;
		M8
;
		LDA	#0FFH
		STA	ENWATR-1,Y
;
		M16
;
MKY_HAVE_PS_050 EQU	$
		RTS
;
;------------------------------------------------------------------------
;-		投げ猿							-
;------------------------------------------------------------------------
MKY_NAGE_PT	EQU	$-1
		BYTE	MKY_0A,MKY_0B,MKY_0A,MKY_0B,MKY_0A,MKY_0B,MKY_0A,MKY_0B
		BYTE	MKY_0A
MKY_NAGE_PT_ST	BYTE	MKY_0B,MKY_0B,MKY_0C,MKY_0C,MKY_0D,MKY_0E,MKY_0F,MKY_0E
		BYTE	MKY_0D
MKY_NAGE_PT_WT	BYTE	MKY_0E,MKY_10
MKY_NAGE_PT_GO	BYTE	MKY_0F,MKY_10,MKY_11,MKY_12,MKY_13
MKY_NAGE_PT_NG	BYTE	MKY_14,MKY_15,MKY_08,MKY_09,MKY_08,MKY_09,MKY_08,MKY_09
		BYTE	MKY_08,MKY_09
MKY_NAGE_PT_EN	EQU	$
MKY_NAGE_TM	EQU	$-1
		HEX	08,    08,    08,    08,    08,	   08,	  08,	 08
		HEX	10
		HEX	02,    02,    02,    02,    02,	   02,	  04,	 02
		HEX	04
		HEX	20,    20
		HEX	08,    01,    01,    01,    01
		HEX	04,    20,    10,    10,    10,	   10,	  10,	 10,	10
		HEX	10
MKY_NAG_ST	EQU	MKY_NAGE_PT_ST-MKY_NAGE_PT
MKY_NAG_WT	EQU	MKY_NAGE_PT_WT-MKY_NAGE_PT
MKY_NAG_GO	EQU	MKY_NAGE_PT_GO-MKY_NAGE_PT
MKY_NAG_NG	EQU	MKY_NAGE_PT_NG-MKY_NAGE_PT
MKY_NAG_EN	EQU	MKY_NAGE_PT_EN-MKY_NAGE_PT
;
MKY_NAGE_XA	EQU	$-(MKY_NAG_ST*2)
		WORD	00000H	;[10] [MKY_NAG_ST]
		WORD	00000H	;[11]
		WORD	00000H	;[12]
		WORD	00000H	;[13]
		WORD	00000H	;[14]
		WORD	00000H	;[15]
		WORD	00000H	;[16]
		WORD	00000H	;[15]
		WORD	00000H	;[14]
		WORD	00000H	;[15] [MKY_NAG_WT]
		WORD	00005H	;[17] [MKY_NAG_GO]
		WORD	00000H	;[16]
		WORD	00005H	;[17]
		WORD	0000CH	;[18]
		WORD	0000FH	;[19]
		WORD	0000FH	;[1A]
MKY_NAGE_YA	EQU	$-(MKY_NAG_ST*2)
		WORD	0FFFBH	;[10] [MKY_NAG_ST]
		WORD	0FFF5H	;[11]
		WORD	0FFF0H	;[12]
		WORD	0FFECH	;[13]
		WORD	0FFE9H	;[14]
		WORD	0FFE7H	;[15]
		WORD	0FFE6H	;[16]
		WORD	0FFE7H	;[15]
		WORD	0FFE9H	;[14]
		WORD	0FFE7H	;[15] [MKY_NAG_WT]
		WORD	0FFEAH	;[17] [MKY_NAG_GO]
		WORD	0FFE6H	;[16]
		WORD	0FFEAH	;[17]
		WORD	0FFEFH	;[18]
		WORD	0FFFFH	;[19]
		WORD	0000BH	;[1A]
;
MONKY_NAGE	EQU	$
		TYX
;
		LDY	ENWRK8,X
		CPY	#MKY_NAG_ST
		BCC	MONKY_NAGE_000	;持ってるパターン？ ( no:MONKY_NAGE_000 )
		CPY	#MKY_NAG_NG
		BCS	MONKY_NAGE_000	;		   ”
;
		JSR	MKY_HAVE_CK	;持ってる物の存在チェック
MONKY_NAGE_000	EQU	$
		LDA	ENTIM3,X
		BEQ	MONKY_NAGE_002	;パターン切り替え？ ( yes:MONKY_NAGE_002 )
		JMP	MONKY_NAGE_100
;
MONKY_NAGE_002	EQU	$
		LDY	ENWRK8,X
		INY
		CPY	#MKY_NAG_ST
		BCS	MONKY_NAGE_003	;木の実持ってるパターン？ ( yes:MONKY_NAGE_003 )
		JMP	MONKY_NAGE_050
;
MONKY_NAGE_003	EQU	$
		BNE	MONKY_NAGE_010	;木の実取り出す？ ( no:MONKY_NAGE_010 )
;
;-------------- 木の実取り出す ------------------------------------------
		PHY			;(Y) save
;
		LDA	ENYPSL,X
		AND	#010H
		BNE	MONKY_NAGE_004
		LDA	#BOMBX		;(A) <-- 敵Ｎｏ．
		BRA	MONKY_NAGE_006
;
MONKY_NAGE_004	EQU	$
		LDA	#STAMA		;(A) <-- 敵Ｎｏ．
MONKY_NAGE_006	EQU	$
		JSL	>ENINSR_I
		JSR	MKY_SUIKA_ST_2
;
		PLY			;(Y) load
		BCS	MONKY_NAGE_010	;敵エリア確保？ ( yes:MONKY_NAGE_010 )
		JMP	MONKY_NAGE_100
;
MONKY_NAGE_010	EQU	$
		CPY	#MKY_NAG_GO
		BCC	MONKY_NAGE_050	;投げモーションにはいってる？ ( no:MONKY_NAGE_050 )
;
		BNE	MONKY_NAGE_030	;プレイヤーサーチ？ ( no:MONKY_NAGE_020 )
;
		LDA	ENDSXL,X
		CMP	#0F0H
		BCS	MONKY_NAGE_020	;Ｘ方向表示？ ( no:MONKY_NAGE_020 )
		LDA	ENDSYL,X
		SEC
		SBC	#08H
		CMP	#0B0H
		BCC	MONKY_NAGE_030	;Ｙ方向表示？ ( yes:MONKY_SHOT_030 )
;;;;;-------------- プレイヤーサーチ ----------------------------------------
;;;;		    LDA	    EPWIDY,X
;;;;		    CMP	    #0FF80H
;;;;		    BCC	    MONKY_NAGE_020  ;プレイヤー下にいる？ ( no:MONKY_NAGE_020 )
;;;;		    LDA	    EPWIDX,X
;;;;		    CLC
;;;;		    ADC	    #030H
;;;;		    CMP	    #040H*2+1
;;;;		    BCC	    MONKY_NAGE_030  ;投げモーショメへ？ ( yes:MONKY_NAGE_030 )
MONKY_NAGE_020	EQU	$
		LDY	#MKY_NAG_WT-1	;ウェイト！！

MONKY_NAGE_030	EQU	$
		CPY	#MKY_NAG_NG
		BNE	MONKY_NAGE_050	;投げる？ ( no:MONKY_NAGE_050 )
;
;-------------- 投げる --------------------------------------------------
		PHY			;(Y) save
;
		LDA	#075H		;[♪]
		JSL	>SOUND_3_ON
;
;;;;		    LDA	    EPXMUK,X
;;;;		    AND	    #00FFH
;;;;		    SEC
;;;;		    SBC	    ENMUKI,X
;;;;		    BEQ	    MONKY_NAGE_040  ;プレイヤー反対側？ ( yes:MONKY_NAGE_040 )
;;;;
;;;;		    LDA	    EPWIDX,X	    ;投げＸスピードセット
;;;;		    ASL	    A
;;;;		    ASL	    A
;;;;		    ASL	    A
;;;;		    ASL	    A
;;;;		    EOR	    #0FFFFH
;;;;		    INC	    A
;;;;MONKY_NAGE_040  EQU	    $
		LDY	<ENWRK4,X
		DEY
		TYX
;;;;		    STA	    ENXSPD,X
		STZ	<ENWRK0,X
		LDA	ENYPSL,X	;投げＹ座標補正
		CLC
		ADC	#2
		STA	ENYPSL,X
		LDA	#0400H		;投げＹスピードセット
		STA	ENYSPD,X
;;;;		    LDA	    #01H
		STA	<ENWRK2,X	;敵投げフラグセット
		JSL	>KINOMI_CANCEL_2
;
		LDX	<ENINDX
		STZ	<ENWRK4,X
;
		PLY			;(Y) load
;
;-------------- パターン切り替え ----------------------------------------
MONKY_NAGE_050	EQU	$
		CPY	#MKY_NAG_ST+3
		BNE	MONKY_NAGE_052	;持ってる物ＯＢＪ優先順位変更？ ( no:MONKY_NAGE_052 )
;
		PHY			;(Y) save
		LDY	<ENWRK4,X
		LDA	#02H
		STA	ENYUSN-1,Y
		PLY			;(Y) load
;
MONKY_NAGE_052	EQU	$
		LDA	!MKY_NAGE_PT,Y	;パターンＮｏ．セット
		AND	#00FFH
		STA	ENCHPT,X
		LDA	!MKY_NAGE_TM,Y	;パターン切り替えタイマーセット
		AND	#00FFH
		STA	ENTIM3,X
		CPY	#MKY_NAG_EN
		BCC	MONKY_NAGE_060	;振り出しに戻る？ ( no:MONKY_NAGE_060 )
;
		LDY	#0
MONKY_NAGE_060	EQU	$
		TYA
		STA	ENWRK8,X
;
;-------------- 持ってる物の位置セット ----------------------------------
MONKY_NAGE_100	EQU	$
		LDY	ENWRK8,X
		CPY	#MKY_NAG_ST
		BCC	MONKY_NAGE_140	;持ってるパターン？ ( no:MONKY_NAGE_140 )
		CPY	#MKY_NAG_NG
		BCS	MONKY_NAGE_140	;		   ”
;
		TYA
		ASL	A
		TAY
		LDA	ENMUKI,X
		LSR	A
		LSR	A
		LDA	!MKY_NAGE_XA,Y
		BCC	MONKY_NAGE_130
		EOR	#0FFFFH
		INC	A
MONKY_NAGE_130	EQU	$
		PHA			;(A) save
		LDA	!MKY_NAGE_YA,Y
		LDY	<ENWRK4,X
		CLC
		ADC	ENYPSL,X
		STA	ENYPSL-1,Y	;Ｙ座標セット
		PLA			;(A) load
		CLC
		ADC	ENXPSL,X
		STA	ENXPSL-1,Y	;Ｘ座標セット
;
MONKY_NAGE_140	EQU	$
		RTS
;
;------------------------------------------------------------------------
;-		さらい猿						-
;------------------------------------------------------------------------
MONKY_OKJ_XS	EQU	$
		WORD	0FE80H,00180H
;
MONKY_OKAJ	EQU	$
		TYX
;
		LDY	<ENWRK4,X
		BEQ	MONKY_OKAJ_000	;赤ちゃんかついでる？ ( no:MONKY_OKAJ_000 )
		JMP	MONKY_OKAJ_100
;
;-------------- 赤ちゃんを誘拐しに --------------------------------------
MONKY_OKAJ_000	EQU	$
		LDA	#04H		;ＯＢＪ優先順位セット
		STA	ENYUSN,X
;
		JSR	BABY_OKAJ_CK	;赤ちゃん誘拐ＯＫチェック
;
;-------------- ジャンプセット ----------------------------------
MONKY_OKAJ_020	EQU	$
		LDA	ENCBFG,X
		ORA	ENWRK6,X
		AND	#0001B
		BEQ	MONKY_OKAJ_040	;着地？ ( no:MONKY_OKAJ_040 )
;
		LDA	ENTIM3,X
		BEQ	MONKY_OKAJ_030	;ウェイト？ ( no:MONKY_OKAJ_030 )
		JMP	MKY_JUMP_WAIT
;
MONKY_OKAJ_030	EQU	$
		LDA	RANDM0
		AND	#01H
		BEQ	MONKY_OKAJ_032
		TYA			;赤ちゃんの方向向きセット
		STA	ENMUKI,X
MONKY_OKAJ_032	EQU	$
		LDA	#0FD00H		;ジャンプＹスピードセット
		STA	ENYSPD,X
		LDA	<RANDM0
		AND	#08H
		BNE	MONKY_OKAJ_040
		LDA	EPWIDX,X
		CLC
		ADC	#060H
		CMP	#060H*2+1
		BCS	MONKY_OKAJ_040
;
		LDA	#0FC00H		;ジャンプＹスピードセット（大）
		STA	ENYSPD,X
MONKY_OKAJ_040	EQU	$
		JSR	MKY_JMPPT_SET_2
		LDY	ENMUKI,X
		LDA	ENCBFG,X
		AND	!MKY_CLMB_BGCR,Y
		BEQ	MONKY_OKAJ_050	;サイドＢＧ当たり？ ( no:MONKY_OKAJ_050 )
;
		STZ	ENXSPD,X
		RTS
;
MKY_OKAJ_XSPST	EQU	$
MONKY_OKAJ_050	EQU	$
		LDA	!MONKY_OKJ_XS,Y ;Ｘスピードセット
		STA	ENXSPD,X
		RTS
;
;-------------- 赤ちゃんかついで逃げろ！！ ------------------------------
MONKY_OKAJ_100	EQU	$
		LDA	#03H		;ＯＢＪ優先順位セット
		STA	ENYUSN,X
;
		JSR	MKY_HAVE_CK	;持ってる物の存在チェック
;;;;		    JSR	    MKY_HAVE_PS	    ;持ってる物の位置セット
;
		JSR	BABY_AREA_CK	;赤ちゃんエリアチェック
;
		LDY	<ENWRK0,X
		CPY	#03H
		BCC	MONKY_OKAJ_146	;カベ登りモード？ ( no:MONKY_OKAJ_146 )
		JMP	MONKY_OKAJ_300
;
MONKY_OKAJ_146	EQU	$
		JSR	GO_ORO_CK	;”オロオロ”モードへのチェック
;
		LDY	<ENWRK0,X
		BNE	MONKY_OKAJ_200	;歩きモード？ ( no:MONKY_OKAJ_200 )
;
;-------------- 歩きモード --------------------------------------
		JSR	PL_SCALE_CK
		BCC	MONKY_OKAJ_150	;プレイヤー近い？ ( yes:MONKY_OKAJ_150 )
;
		LDA	ENTIM2,X
		BNE	MONKY_OKAJ_150	;ウェイト？ ( yes:MONKY_OKAJ_150 )
;
;-------------- ”ヤーイ”ここまでおいでモードへ！！ ----
		INC	<ENWRK0,X
		STZ	ENTIM3,X
		RTS
;
MONKY_OKAJ_150	EQU	$
		JMP	MKY_ESC_WKST	;持って逃げる歩きパターンセット
;
MONKY_OKAJ_200	EQU	$
		DEY
		BNE	MONKY_OKAJ_250	;”オロオロ”？ ( yes:MONKY_OKAJ_250 )
;
;-------------- ”ヤーイ”ここまでおいで！！ --------------------
		STZ	ENXSPD,X	;Ｘスピードクリアー
;
		LDA	ENCBFG,X
		AND	#0001B
		BEQ	MONKY_OKAJ_230	;着地？ ( no:MONKY_OKAJ_230 )
;
		JSR	PL_SCALE_CK
		BCS	MONKY_OKAJ_210	;プレイヤー近い？ ( no:MONKY_OKAJ_210 )
;
;-------------- 歩きモードへ ----------------------------
		DEC	<ENWRK0,X
		LDA	#020H		;逃げモードウェイトタイマーセット
		STA	ENTIM2,X
		RTS
;
MONKY_OKAJ_210	EQU	$
		LDA	ENTIM3,X
		BEQ	MONKY_OKAJ_220	;ウェイト？ ( no:MONKY_OKAJ_220 )
;
		LDA	#MKY_1F		;ジャンプウェイトパターンセット
		STA	ENCHPT,X
		RTS
;
MKY_OKAJ_JMPST	EQU	$
MONKY_OKAJ_220	EQU	$
		LDA	#0FC00H		;ジャンプＹスピードセット
MKY_OKAJ_JMPST2 EQU	$
		STA	ENYSPD,X
		LDA	EPXMUK,X	;プレイヤーの方を向く
		AND	#00FFH
		STA	ENMUKI,X
		STZ	ENCBFG,X	;ジャンプフラグセット
		STZ	ENWRK6,X	;
MKY_OKAJ_PTST	EQU	$
MONKY_OKAJ_230	EQU	$
		LDA	#010H		;着地ウェイトタイマーセット
		STA	ENTIM3,X
		LDA	#MKY_20		;ジャンプパターンセット
		STA	ENCHPT,X
		RTS
;
;-------------- ”オロオロ” ------------------------------------
MONKY_OKAJ_250	EQU	$
		JMP	MKY_ORO_CK
;
;-------------- カベ登りモード ------------------------------------------
MONKY_OKAJ_300	EQU	$
		LDA	#04H		;ＯＢＪ優先順位セット
		STA	ENYUSN,X
;
MKY_OKAJ_CLMB	EQU	$
		CPY	#03H
		BNE	MONKY_OKAJ_350	;キョロキョロモード？ ( yes:MONKY_OKAJ_350 )
;
		JSR	MKY_CLMB_CK_1	;カベ登りＢＧチェック
		BCS	MONKY_OKAJ_310	;登れる？ ( yes:MONKY_OKAJ_310 )
;
;-------------- ジャンプ！！ ------------------------------------
		JSR	MKY_JMP_MD_ST	;ジャンプ状態セット
MKY_OKAJ_TO_JMP EQU	$
		LDA	#02H
		STA	<ENWRK0,X
		LDA	#0FC00H		;(A) <-- ジャンプＹスピード
		JSR	MKY_OKAJ_JMPST2 ;ジャンプセット
		LDA	ENMUKI,X
		EOR	#02H
		STA	ENMUKI,X
		TAY			;(Y) <-- 向き
		JMP	MKY_OKAJ_XSPST	;Ｘスピードセット
;
MONKY_OKAJ_310	EQU	$
		JSR	MKY_CLMB_MC_2
		BCS	MONKY_OKAJ_320	;カベ登りＳＴＯＰ？ ( yes:MONKY_OKAJ_320 )
;
		LDA	ENTIM2,X
		BNE	MONKY_OKAJ_330	;ウェイト？ ( no:MONKY_OKAJ_330 )
		LDA	PLJUMP
		BNE	MONKY_OKAJ_320	;プレイヤージャンプ中？ ( yes:MONKY_OKAJ_320 )
		LDA	EPWIDY,X
		CMP	#0FFC0H
		BPL	MONKY_OKAJ_330	;プレイヤーから離れた？ ( no:MONKY_OKAJ_330 )
;
;-------------- キョロキョロモードへ ----------------------------
MONKY_OKAJ_320	EQU	$
		INC	<ENWRK0,X
		STZ	<ENCONT,X
		RTS
;
MONKY_OKAJ_330	EQU	$
		JMP	MKY_CLMB_YMV
;
;-------------- キョロキョロ --------------------------------------------
MONKY_OKAJ_350	EQU	$
		LDA	PLJUMP
		BNE	MONKY_OKAJ_360	;ジャンプ中？ ( yes:MONKY_OKAJ_360 )
		LDA	EPWIDY,X
		CMP	#0FFC0H
		BMI	MONKY_OKAJ_360	;プレイヤーから離れた？ ( yes:MONKY_OKAJ_360 )
;
;-------------- カベ登りモードへ --------------------------------
		DEC	<ENWRK0,X
;
MONKY_OKAJ_360	EQU	$
		JSR	MKY_KYORO_CK
		LDA	<ENWRK0,X
		BNE	MONKY_OKAJ_370	;ジャンプ？ ( no:MONKY_OKAJ_370 )
;
;-------------- ジャンプ！！ ----------------------------
		JSR	MKY_OKAJ_PTST
		LDY	ENMUKI,X	;(Y) <-- 向き
		JMP	MKY_OKAJ_XSPST
;
MONKY_OKAJ_370	EQU	$
		RTS
;
;----------------------------------------------------------------
;-		赤ちゃん誘拐ＯＫチェック			-
;-			out :					-
;-				(C) <-- 0:赤ちゃん誘拐した	-
;----------------------------------------------------------------
BABY_OKAJ_CK	EQU	$
		LDA	DEATHCT0	;赤ちゃん死神に取られてる ?
		BNE	BABY_OKAJ_0000	; yes: BABY_OKAJ_0000

		LDA	BABYNO
		AND	#6000H
		BEQ	BABY_OKAJ_000	;赤ちゃん誘拐できる？ ( yes:BABY_OKAJ_000 )
;
BABY_OKAJ_0000	EQU	$
		LDY	ENMUKI,X
		SEC
		RTS
;
BABY_OKAJ_000	EQU	$
		LDY	#02H		;(Y) <-- 赤ちゃんの方向
		LDA	ECENTX
		SEC
		SBC	ECENTX,X
		BPL	BABY_OKAJ_010
		LDY	#00H		;(Y) <-- 赤ちゃんの方向
		EOR	#0FFFFH
		INC	A
BABY_OKAJ_010	EQU	$
		CMP	#08H
		BCS	BABY_OKAJ_020	;赤ちゃん誘拐できる？ ( no:BABY_OKAJ_020 )
		LDA	ECENTY
		SEC
		SBC	ECENTY,X
		CLC
		ADC	#08H
		CMP	#08H*2+1
		BCS	BABY_OKAJ_020	;赤ちゃん誘拐できる？ ( no:BABY_OKAJ_020
;
;-------------- 赤ちゃんいただき！！ ----------------------------
MKY_BABY_GET_IN EQU	$
		LDA	#00H+1		;赤ちゃんかつぐ
		STA	<ENWRK4,X
		LDA	ENMOD2,X	;範囲クリアー無しセット
		AND	#1111111111110011B
		STA	ENMOD2,X
;
		LDA	ENWRKC,X
		PHA
		JSL	>BABYM_SHABN_C2
		PLA
		STA	ENWRKC,X
;
		CLC
BABY_OKAJ_020	EQU	$
		RTS
;
;------------------------------------------------------------------------
;-		さらい猿の赤ちゃんいただき初期セット			-
;------------------------------------------------------------------------
MKY_BABY_GET	EQU	$
		JSR	MKY_BABY_GET_IN
		RTL
;
;------------------------------------------------------------------------
;-		インベーダー猿						-
;------------------------------------------------------------------------
MKY_INBE_PT	EQU	$-1
		BYTE	MKY_2B,MKY_2A,MKY_2B,MKY_2A,MKY_2B,MKY_2A,MKY_2B,MKY_2A
		BYTE	MKY_2C,MKY_29,MKY_2C,MKY_29
		BYTE	MKY_2C,MKY_29,MKY_2C,MKY_29,MKY_2C,MKY_28,MKY_27
MKY_INBE_TM	EQU	$-1
		HEX	03,    03,    03,    03,    03,	   03,	  03,	 03
		HEX	10,    04,    04,    04
		HEX	04,    04,    04,    04,    04,	   08,	  10
MKY_INBE_P	EQU	MKY_INBE_TM-MKY_INBE_PT+1
;
MKY_SUIKT_XA_I	EQU	$
		WORD	0FFF4H,0000CH
;
MKY_INBE_FPXA	EQU	$
;			 1  2  4  6  9	B  D  E	 F
		WORD	-1,-1,-2,-2,-3, 2, 2, 1, 1
MKY_INBE_FPXA_E EQU	$
MKY_INBE_FP	EQU	(MKY_INBE_FPXA_E-MKY_INBE_FPXA)/2
;
MKY_INB_CLMCK_Y EQU	$
		WORD	0FFF0H,00010H
;
MONKY_INBE	EQU	$
		TYX
;
		JSR	MKY_HAVE_CK	;持ってる物の存在チェック
;;;;		    JSR	    MKY_HAVE_PS	    ;持ってる物の位置セット
;
		LDY	<ENWRK0,X
		BEQ	MONKY_INBE_010	;木の実かじりモード？ ( yes:MONKY_INBE_010 )
		JMP	MONKY_INBE_100
;
;-------------- 木の実かじりモード --------------------------------------
MONKY_INBE_010	EQU	$
		LDY	ENWRK8,X
		BNE	MONKY_INBE_012	;木の実かじり中？ ( yes:MONKY_INBE_012 )
		JMP	MONKY_INBE_050
;
MONKY_INBE_012	EQU	$
		LDA	ENTIM3,X
		BEQ	MONKY_INBE_014	;パターン切り替え？ ( yes:MONKY_INBE_014 )
		RTS
;
MONKY_INBE_014	EQU	$
		DEY
		TYA
		STA	ENWRK8,X
		BNE	MONKY_INBE_020	;木の実かじり終了？ ( no:MONKY_INBE_020 )
;
		LDA	#040H		;ウェイトセット
		STA	ENTIM3,X
		RTS
;
MONKY_INBE_020	EQU	$
		LDA	!MKY_INBE_TM,Y	;パターン切り替えタイマーセット
		AND	#00FFH
		STA	ENTIM3,X
		LDA	!MKY_INBE_PT,Y	;パターンＮｏ．セット
		AND	#00FFH
		STA	ENCHPT,X
		CMP	#MKY_07
		BNE	MONKY_INBE_022	;”ガツガツ”サウンドセット？ ( no:MONKY_INBE_022 )
;
		PHA			;(A) save
		LDA	#014H		;[♪]
		JSL	>SOUND_3_ON
		PLA			;(A) load
;
MONKY_INBE_022	EQU	$
		CMP	#MKY_2A
		BNE	MONKY_INBE_030	;スイカの種ショット？ ( no:MONKY_INBE_030 )
;
;-------------- スイカの種ショットセット ------------------------
		LDA	#SUIKT		;(A) <-- 敵Ｎｏ．
		JSL	>ENINSR		;敵エリア確保
		BCC	MONKY_INBE_030	;      ”    ？ ( no:MONKY_INBE_030 )
;
		LDA	ENMUKI,X	;Ｘ座標セット
		EOR	#02H
		STA	ENMUKI,Y	;向きセット
		TAX
		LDA	ENXP2L
		CLC
		ADC	!MKY_SUIKT_XA_I,X
		STA	ENXPSL,Y
		LDA	ENYP2L		;Ｙ座標セット
		SEC
		SBC	#01H
		STA	ENYPSL,Y
		LDA	!MKY_SUIKT_XS,X ;Ｘスピードセット
		STA	ENXSPD,Y
		LDA	#01H		;ショットフラグセット
		STA	ENSHOT,Y
		STA	ENWRK8,Y	;敵から打ったフラグ”ＯＮ”
		LDA	ENMOD0,Y	;敵と当たらない様に
		AND	#1111100111111111B
		STA	ENMOD0,Y
		LDA	#0FFH+(0FFH*100H) ;水中スピードリセット
		STA	ENWATR,Y	  ;[ & ENWTSP ]
;
		LDA	#045H		;[♪]
		JSL	>SOUND_3_ON
;
		LDX	<ENINDX
MONKY_INBE_030	EQU	$
		RTS
;
;-------------- 木の実かじりモードへのチェック --------------------------
MONKY_INBE_050	EQU	$
		LDA	ENTIM3,X
		BEQ	MONKY_INBE_058	;ウェイト？ ( no:MONKY_INBE_058 )
;
		LDY	#MKY_2C		;ウェイトパターンセット
		CMP	#020H
		BCS	MONKY_INBE_052	;プレイヤーチェック？ ( no:MONKY_INBE_052 )
;
		LDA	EPXMUK,X
		AND	#00FFH
		CMP	ENMUKI,X
		BEQ	MONKY_INBE_052	;プレイヤー前にいる？ ( yes:MONKY_INBE_052 )
		LDY	#MKY_2D
MONKY_INBE_052	EQU	$
		TYA
		STA	ENCHPT,X
		RTS
;
MONKY_INBE_058	EQU	$
		LDA	EPXMUK,X
		AND	#00FFH
		CMP	ENMUKI,X
		BNE	MONKY_INBE_060	;プレイヤー後ろにいる？ ( yes:MONKY_INBE_060 )
;
		LDY	ENMUKI,X
		LDA	ENCBFG,X
		AND	!MKY_CLMB_BGCR,Y
		BNE	MONKY_INBE_070	;つたに登ってる？ ( no:MONKY_INBE_070 )

;-------------- 向き反転！！ ------------------------------------
		INC	<ENWRK0,X
		LDA	#MKY_INBE_FP
		STA	ENWRK8,X
		BRA	MONKY_INBE_062
;
MONKY_INBE_060	EQU	$
		JSR	PL_SCALE_CK
		BCS	MONKY_INBE_070	;プレイヤー近い？ ( no:MONKY_INBE_070 )
;
		LDA	EPWIDY,X
		CLC
		ADC	#08H
		CMP	#08H*2+1
		BCC	MONKY_INBE_070	;移動？ ( no:MONKY_INBE_070 )
;
;-------------- 移動！！ ----------------------------------------
		LDY	EPYMUK,X
		LDA	ENYPSL,X
		CLC
		ADC	!MKY_INB_CLMCK_Y,Y ;(A) <-- ＢＧチェックＹ座標
		LDY	ENMUKI,X	;(Y) <-- 向き
		JSR	MKY_IN_BGCK_2	;カベ登りＢＧチェック
		BCC	MONKY_INBE_070	;登れる？ ( no:MONKY_INBE_070 )
;
		LDA	EPYMUK,X
		CLC
		ADC	#02H
		STA	<ENWRK0,X
MONKY_INBE_062	EQU	$
		LDA	#MKY_07		;向き反転パターンセット
		STA	ENCHPT,X
		RTS
;
;-------------- 木の実かじりへ！！ ------------------------------
MONKY_INBE_070	EQU	$
		LDA	#MKY_INBE_P
		STA	ENWRK8,X
		RTS
;
MONKY_INBE_100	EQU	$
		DEY
		BNE	MONKY_INBE_150	;振り向き？ ( no:MONKY_INBE_150 )
;
;-------------- 向き反転 ------------------------------------------------
		DEC	ENWRK8,X
		BNE	MONKY_INBE_110	;向き反転終了？ ( no:MONKY_INBE_110 )
;
;-------------- 木の実かじりモードへ ----------------------------
MKY_INB_GO_SHOT EQU	$
		STZ	<ENWRK0,X
		BRA	MONKY_INBE_070
;
MONKY_INBE_110	EQU	$
		LDA	ENWRK8,X
		ASL	A
		TAY
		CPY	#(MKY_INBE_FP/2)*2
		BNE	MONKY_INBE_112	;向き反転？ ( no:MONKY_INBE_112 )
;
;-------------- 向き反転 ----------------------------------------
		LDA	ENMUKI,X
		EOR	#02H
		STA	ENMUKI,X
;
MONKY_INBE_112	EQU	$
		LDA	!MKY_INBE_FPXA,Y
		LDY	ENMUKI,X
		BNE	MONKY_INBE_120
		EOR	#0FFFFH
		INC	A
MONKY_INBE_120	EQU	$
		CLC
		ADC	ENXPSL,X
		STA	ENXPSL,X
		RTS
;
;-------------- 移動 ----------------------------------------------------
MONKY_INBE_150	EQU	$
		DEY
		BNE	MONKY_INBE_160	;上に登る？ ( no:MONKY_INBE_160 )
;
;-------------- 上に登る ----------------------------------------
		JSR	MKY_CLMB_YMV
		BRA	MONKY_INBE_180
;
;-------------- 下る --------------------------------------------
MONKY_INBE_160	EQU	$
		LDA	ENTIM3,X
		BNE	MONKY_INBE_180	;登りパターン切り替え？ ( no:MONKY_INBE_180 )
;
		LDA	#04H		;登りパターン切り替え
		STA	ENTIM3,X
		LDA	ENCHPT,X
		DEC	A
		CMP	#MKY_05
		BCS	MONKY_INBE_170
		LDA	#MKY_07
MONKY_INBE_170	EQU	$
		STA	ENCHPT,X
		ASL	A		;登り移動値加算
		TAY
		LDA	ENYPSL,X
		CLC
		ADC	!MKY_CLMB_YDW,Y
		STA	ENYPSL,X
;
MONKY_INBE_180	EQU	$
		LDY	ENMUKI,X	;(Y) <-- 向き
		JSR	MKY_IN_BGCK	;カベ登りＢＧチェック
		BCS	MONKY_INBE_200	;登れる？ ( yes:MONKY_INBE_200 )
;
;-------------- 木の実かじりモードへ ----------------------------
		LDA	ENYP2L		;Ｙ座標補正
		STA	ENYPSL,X
MONKY_INBE_190	EQU	$
		JMP	MKY_INB_GO_SHOT ;木の実かじりモードへ
;
MONKY_INBE_200	EQU	$
		JSR	PL_SCALE_CK
		BCS	MONKY_INBE_190	;プレイヤー近い？ ( no:MONKY_INBE_190 )
;
		LDA	EPYMUK,X
		AND	#00FFH
		CLC
		ADC	#02H
		CMP	<ENWRK0,X
		BNE	MONKY_INBE_190	;移動ＳＴＯＰ？ ( yes:MONKY_INBE_190 )
;
MONKY_INBE_250	EQU	$
		RTS
;
;
;------------------------------------------------------------------------
;-		逃げ猿［２］（水中モード）				-
;------------------------------------------------------------------------
MKY_SW_XSP	EQU	$
; ENMUKI -->		 [0]	[2]
		WORD	0FF80H,00080H
;
MKYSW_ESC_2	EQU	$
		TYX
;
MKYSW_ESC_SB	EQU	$
		JSR	PL_SCALE_CK
		BCS	MKYSW_ESC_2_010 ;プレイヤー近い？ ( no:MKYSW_ESC_2_010 )
;
;-------------- 逃げろや逃げろ！！ --------------------------------------
MKY_SW_ESC	EQU	$
;;;;		    JSR	    BABY_OKAJ_CK    ;赤ちゃん誘拐ＯＫチェック
;;;;		    BCS	    MKY_SW_ESC2	    ;赤ちゃん誘拐した？ ( no:MKY_SW_ESC2 )
;;;;;
;;;;;-------------- さらい猿へ！！ --------------------------
;;;;		    LDA	    #MKY_OKAJ
;;;;		    STA	    ENWRKA,X
;;;;		    RTS
;
MKY_SW_ESC2	EQU	$
		JSR	ASE_SET		;汗セット
;
		M8
;
		LDA	#0FFH
		STA	ENWATR,X
;
		M16
;
		LDY	ENMUKI,X
		LDA	ENCBFG,X
		AND	!MKY_CLMB_BGCR,Y
		BEQ	MKYSW_ESC_2_002 ;サイドＢＧ当たり？ ( no:MKYSW_ESC_2_002 )
;
MKY_SW_CANCEL	EQU	$
		STZ	<ENWRK2,X	;地上モードへ
		STZ	ENXMAX,X
		STZ	ENXPOW,X
		LDA	#040H
		STA	ENGPOW,X
		LDA	#0400H
		STA	ENGMAX,X
;
		LDY	<ENWRK4,X
		BNE	MKYSW_ESC_2_000 ;持ってる？ ( yes:MKYSW_ESC_2_000 )
;
		LDA	#0FC00H		;(A) <-- ジャンプＹスピード
		JMP	MKY_JUMP_ST_3
;
MKYSW_ESC_2_000 EQU	$
		JMP	MKY_OKAJ_TO_JMP
;
MKYSW_ESC_2_002 EQU	$
		LDA	EPXMUK,X	;逃げる向きセット
		AND	#00FFH
		EOR	#02H
		STA	ENMUKI,X
		TAY
MKY_SW_XSPST	EQU	$
		LDA	!MKY_SW_XSP,Y	;泳ぎスピードセット
		STA	ENXMAX,X
MKY_SW_XPWST	EQU	$
		LDA	ENXSPD,X
		CLC
		ADC	#080H
		CMP	#080H*2+1
		LDA	#04H
		BCC	MKYSW_ESC_2_004 ;Ｘスピード大減速？ ( no:MKYSW_ESC_2_004 )
		LDA	#020H
MKYSW_ESC_2_004 EQU	$
		STA	ENXPOW,X
		RTS
;
;-------------- 停止 ----------------------------------------------------
MKYSW_ESC_2_010 EQU	$
MKY_SW_STOP	EQU	$
;
		M8
;
		LDA	#0FFH
		STA	ENWATR,X
;
		M16
;
		LDA	EPXMUK,X	;プレイヤーの方に向く
		AND	#00FFH
		STA	ENMUKI,X
		STZ	ENXMAX,X	;停止セット
		BRA	MKY_SW_XPWST
;
;------------------------------------------------------------------------
;-		種ふき猿（水中モード）					-
;------------------------------------------------------------------------
MKYSW_SHOT	EQU	$
		TYX
;
		JSR	MKY_HAVE_CK	;持ってる物の存在チェック
;;;;		    JSR	    MKY_HAVE_PS	    ;持ってる物の位置セット
		JMP	MKYSW_ESC_SB
;
;------------------------------------------------------------------------
;-		投げ猿（水中モード）＜ダミー＞				-
;------------------------------------------------------------------------
;------------------------------------------------------------------------
;-		インベーダー猿（水中モード）＜ダミー＞			-
;------------------------------------------------------------------------
MKYSW_NAGE	EQU	$
MKYSW_INBE	EQU	$
		TYX
		RTS
;
;------------------------------------------------------------------------
;-		さらい猿（水中モード）					-
;------------------------------------------------------------------------
MKYSW_OKAJ	EQU	$
		TYX
;
		LDY	<ENWRK4,X
		BNE	MKYSW_OKAJ_050	;赤ちゃんかついでる？ ( yes:MKYSW_OKAJ_050 )
;
;-------------- 赤ちゃんを誘拐しに --------------------------------------
		LDA	#04H		;ＯＢＪ優先順位セット
		STA	ENYUSN,X
;
		M8
;
		LDA	#0FFH
		STA	ENWATR,X
;
		M16
;
		JSR	BABY_OKAJ_CK	;赤ちゃん誘拐ＯＫチェック
		TYA			;赤ちゃんの方へ向く
		STA	ENMUKI,X
;
		LDA	ENCBFG,X
		AND	!MKY_CLMB_BGCR,Y
		BEQ	MKYSW_OKAJ_010	;サイドＢＧ当たり？ ( no:MKYSW_OKAJ_010 )
;
		JMP	MKY_SW_CANCEL	;地上モードへ
;
MKYSW_OKAJ_010	EQU	$
		JMP	MKY_SW_XSPST
;
;-------------- 赤ちゃんかついで逃げろ！！ ------------------------------
MKYSW_OKAJ_050	EQU	$
		LDA	#03H		;ＯＢＪ優先順位セット
		STA	ENYUSN,X
;
		JSR	MKY_HAVE_CK	;持ってる物の存在チェック
;;;;		    JSR	    MKY_HAVE_PS	    ;持ってる物の位置セット
;
		JSR	BABY_AREA_CK	;赤ちゃんエリアチェック
;
		JSR	PL_SCALE_CK
		BCS	MKYSW_OKAJ_060	;プレイヤー近い？ ( no:MKYSW_OKAJ_060 )
;
;-------------- 逃げろや逃げろ！！ ------------------------------
		JMP	MKY_SW_ESC2
;
;-------------- 停止 --------------------------------------------
MKYSW_OKAJ_060	EQU	$
		JMP	MKY_SW_STOP
;
;------------------------------------------------------------------------
;-		逃げ猿［１］（水中モード）				-
;------------------------------------------------------------------------
MKYSW_ESC_1	EQU	$
		TYX
;
		LDY	ENWRK8,X
		BEQ	MKYSW_ESC_1_050 ;溺れ中？ ( no:MKYSW_ESC_1_050 )
;
;-------------- たすけて〜溺れる！！ ------------------------------------
		CPY	#4
		BCS	MKYSW_ESC_1_000
;
		LDA	#080H		;沈んでゆく〜！！
		STA	ENGMAX,X
MKYSW_ESC_1_000 EQU	$
		LDA	ENTIM3,X
		BNE	MKYSW_ESC_1_010
		DEC	ENWRK8,X
		LDA	#010H
		STA	ENTIM3,X
;
MKYSW_ESC_1_010 EQU	$
		JSR	ASE_SET		;汗セット
;
		LDA	<ENCONT,X
		AND	#08H
		BEQ	MKYSW_ESC_1_040
		LDA	#MKY_1A
		STA	ENCHPT,X
MKYSW_ESC_1_040 EQU	$
		STZ	ENXMAX,X
		JMP	MKY_SW_XPWST
;
;-------------- 逃げろや逃げろ！！ --------------------------------------
MKYSW_ESC_1_050 EQU	$
		JMP	MKY_SW_ESC
;
;************************************************************************
;*		initial ( ビッグウンババ )				*
;************************************************************************
UNBABIN		EQU	$
		LDA	ENXPSL,X
		AND	#010H
		STA	<ENWRK4,X
		RTL
;
;************************************************************************
;*		move	( ビッグウンババ )				*
;************************************************************************
UNBABA_COL_1	EQU	$
		WORD	7D8FH,7D8FH,7D8FH,7D8FH,7D8FH,7D8FH,7D8FH,7D8FH ;[青]
		WORD	001FH,001EH,001DH,001CH,001BH,001CH,001DH,001EH ;[赤]
		WORD	7FFFH						;[ヤラレ]
UNBABA_COL_2	EQU	$
		WORD	6CAAH,6CAAH,6CAAH,6CAAH,6CAAH,6CAAH,6CAAH,6CAAH ;[青]
		WORD	0015H,0016H,0017H,0018H,0019H,0018H,0017H,0016H ;[赤]
		WORD	7FFFH						;[ヤラレ]
UNBABA_COL_3	EQU	$
		WORD	7F2FH,7F2FH,7F2FH,7F2FH,7F2FH,7F2FH,7F2FH,7F2FH ;[青]
		WORD	01DFH,01DFH,01DFH,01DFH,01DFH,01DFH,01DFH,01DFH ;[赤]
		WORD	7FFFH						;[ヤラレ]
;
UNBABA_EYE_PT	EQU	$
		WORD	0,1,2,2,1
UNBABA_EYE_PT_1 WORD	0,0,1,2,2,1
UNBABA_EYE_PT_2 EQU	$
UNBABA_EYE_TM	EQU	$
		WORD	UNBABA_EYE_PT_1-UNBABA_EYE_PT	;一回まばたき
		WORD	UNBABA_EYE_PT_2-UNBABA_EYE_PT	;二回まばたき
;
UNBABA_BGC_XA	EQU	$
		WORD	0FFC0H,00040H
UNBABA_BGC_XH	EQU	$
		WORD	00001H,0FFFFH
;
UNBABMV		EQU	$
;
;------------------------------------------------------------------------
;-		ＢＧ３セット＆ＯＡＭセット				-
;------------------------------------------------------------------------
		JSR	UNBABA_BG3SET	;ビッグウンババＢＧ３セット
;
;------------------------------------------------------------------------
;-		モードチェック						-
;------------------------------------------------------------------------
		JSL	>ENMDCK
;
;------------------------------------------------------------------------
;-		ビッグウンババ処理					-
;------------------------------------------------------------------------
;
;-------------- ＢＧチェック --------------------------------------------
		LDY	#02H
		LDA	ENDSXL,X
		CLC
		ADC	#050H
		BMI	UNBABMV_0000
		SEC
		SBC	#0150H+050H
		BMI	UNBABMV_0002
		LDY	#00H
UNBABMV_0000	EQU	$
		EOR	#0FFFFH
		INC	A
		STA	<EWORK2		;(EWK2) <-- 補正値
		STZ	ENXSPD,X
		STZ	ENXPOW,X
		BRA	UNBABMV_0010
;
UNBABMV_0002	EQU	$
		STZ	<EWORK2		;(EWK2) <-- 補正値
		LDY	#00H
		LDA	ENXSPD,X
		BMI	UNBABMV_0010
		LDY	#02H
UNBABMV_0010	EQU	$
		STY	<EWORK0		;(EWK0) <-- 移動向き
;
		LDA	ECENTX,X
		CLC
		ADC	!UNBABA_BGC_XA,Y
		STA	R8		;(R8) <-- ＢＧチェックＸ座標
		LDA	ECENTY,X
		STA	R0		;(R0) <-- ＢＧチェックＹ座標
		M_CHIPR M_BGUNIT_READ
;
		LDX	<ENINDX
		LDA	R5
		BEQ	UNBABMV_0020	;ＢＧ当たり？ ( no:UNBABMV_0020 )
;
		STZ	ENXSPD,X
		LDY	<EWORK0		;Ｘ座標補正
		LDA	!UNBABA_BGC_XH,Y
		STA	<EWORK2
UNBABMV_0020	EQU	$
		LDA	ENXPSL,X
		CLC
		ADC	<EWORK2
		STA	ENXPSL,X
;
;-------------- モードセレクト ------------------------------------------
		TXY
		LDA	<ENWRK0,X
		ASL	A
		TAX
		JSR	(!UNBABA_TBL,X)
;
		STZ	ENWRK8,X	;敵当たりフラグリセット
;
;-------------- 目のパターンセット --------------------------------------
		LDA	ENTIM3,X
		BEQ	UNBABMV_0050	;まばたき中？ ( no:UNBABMV_0050 )
;
;-------------- まばたきパターンセット --------------------------
		AND	#0FFFEH
		TAY
		LDA	!UNBABA_EYE_PT,Y
		STA	ENCHPT,X
		BRA	UNBABMV_0400
;
UNBABMV_0050	EQU	$
		LDA	<RANDM0
		AND	#3FH
		BNE	UNBABMV_0400	;まばたきセット？ ( no:UNBABMV_0400 )
;
;-------------- まばたきセット ----------------------------------
		LDA	<FRCNT2
		AND	#02H
		TAY
		LDA	!UNBABA_EYE_TM,Y
		STA	ENTIM3,X
;
;-------------- プレイヤーとＢＧ３との衝突チェック ----------------------
UNBABMV_0400	EQU	$
		TXA
		STA	CCWORK9		;(CWK9) <-- 敵インデックス
		LDA	PLDSXL
		STA	CCWORKA		;(CWKA) <-- player display X pos
		LDA	PLDSYL
		STA	CCWORKB		;(CWKB) <--	   "       Y  "
		LDA	PLSITD
		STA	CCWORKC		;(CWKC) <--    "   sit down flag
		M_CHIP	BG3_CROSS_CK
;
		LDX	<ENINDX
		LDA	CCWORKD
		BEQ	UNBABMV_0410	;衝突してる？ ( no:UNBABMV_0410 )
;
;-------------- プレイヤーダメージセット ------------------------
		INC	ENWRK8,X	;プレイヤー当たりフラグセット
;
		JSL	>PLFLST
;
;-------------- 敵とＢＧ３との衝突チェック ------------------------------
UNBABMV_0410	EQU	$
		LDY	ECRSFG,X
		DEY
		BMI	UNBABMV_0500	;敵当たり？ ( no:UNBABMV_0500 )
;
		LDA	ENSHOT,Y
		BEQ	UNBABMV_0500	;ショット？ ( no:UNBABMV_0500 )
;
;-------------- 敵跳ね返しセット --------------------------------
;;;;		    LDA	    ENGPOW,Y
;;;;		    CMP	    #040H
;;;;		    BCS	    UNBABMV_0420    ;ＭＡＸショット？ ( no:UNBABMV_0420 )
;
		LDA	#0FFFFH
		STA	ENWRK8,X	;敵当たりフラグセット
;;;;UNBABMV_0420    EQU	    $
		TYX
		JSL	>ENDEATH_SET_4
;
;-------------- カラーセット --------------------------------------------
UNBABMV_0500	EQU	$
		LDY	#020H		;(Y) <-- ヤラレカラーポインター
		LDA	ENTIM2,X
		AND	#04H
		BNE	UNBABMV_0550
;
		LDA	<FRCNT2
		LSR	A
		AND	#07H*2
		ORA	<ENWRK4,X
		TAY
UNBABMV_0550	EQU	$
		LDA	!UNBABA_COL_1,Y
		STA	>DATACOL+(01H*2)
		STA	>MOTOCOL+(01H*2)
		LDA	!UNBABA_COL_2,Y
		STA	>DATACOL+(02H*2)
		STA	>MOTOCOL+(02H*2)
		LDA	!UNBABA_COL_3,Y
		STA	>DATACOL+(03H*2)
		STA	>MOTOCOL+(03H*2)
		RTL
;
;------------------------------------------------------------------------
;-		ビッグウンババルーチンテーブル				-
;------------------------------------------------------------------------
UNBABA_TBL	EQU	$		;[ENWRK0]
		WORD	UNBABA_PLSR	;[0] プレイヤーサーチ
		WORD	UNBABA_GAOO	;[1] ”ガオ〜”
;
;----------------------------------------------------------------
;-		プレイヤーサーチ				-
;----------------------------------------------------------------
UNBABA_PSR_XMX	EQU	$
		WORD	0FE00H,00200H
;
UNBABA_PLSR	EQU	$
		TYX
;
;-------------- ＭＡＸＸスピードセット --------------------------
		LDA	ENTIM1,X
		BNE	UNBABA_PLSR_010 ;サーチＸスピードセットＯＫ？ ( no:UNBABA_PLSR_010 )
;
		LDY	EPXMUK,X
		LDA	!UNBABA_PSR_XMX,Y
		STA	ENXMAX,X
		LDA	#020H
		STA	ENXPOW,X
		LDA	#040H
		STA	ENTIM1,X
;
;-------------- プレイヤー位置チェック --------------------------
UNBABA_PLSR_010 EQU	$
		LDA	<ENWRK2,X
		BNE	UNBABA_PLSR_030 ;顔出てる？ ( yes:UNBABA_PLSR_030 )
;
		LDA	ENCONT,X
		CLC
		ADC	#04H
		CMP	#0100H+1
		BCC	UNBABA_PLSR_022 ;顔出た？ ( no:UNBABA_PLSR_022 )
;
		INC	<ENWRK2,X
		LDA	#00
UNBABA_PLSR_022 EQU	$
		STA	ENCONT,X
		RTS
;
;-------------- 向きセット --------------------------------------
UNBABA_PLSR_030 EQU	$
		LDY	<EWORK0
		TYA
		CMP	ENMUKI,X
		BEQ	UNBABA_PLSR_034 ;向き変更？ ( no:UNBABA_PLSR_034 )
;
		LDA	<ENCONT,X
		CLC
		ADC	#08H
		CMP	#0100H+1
		BCC	UNBABA_PLSR_036 ;向き変更終了？ ( no:UNBABA_PLSR_036 )
;
		TYA			;向き変更
		STA	ENMUKI,X
		BRA	UNBABA_PLSR_035
;
UNBABA_PLSR_034 EQU	$
		LDA	<ENCONT,X
		BEQ	UNBABA_PLSR_038
;
		SEC
		SBC	#04H
		BPL	UNBABA_PLSR_036
UNBABA_PLSR_035 EQU	$
		LDA	#00
UNBABA_PLSR_036 EQU	$
		STA	<ENCONT,X
		RTS
;
;-------------- ＧＯＴＯ”ガオ〜”チェック ----------------------
UNBABA_PLSR_038 EQU	$
		LDA	ENTIM0,X
		BNE	UNBABA_PLSR_040 ;ウェイト？ ( yes:UNBABA_PLSR_040 )
;
		LDY	EPXMUK,X
		TYA
		CMP	ENMUKI,X
		BNE	UNBABA_PLSR_040 ;プレイヤー目の前にいる？ ( no:UNBABA_PLSR_040 )
		LDA	EPWIDX,X
		CLC
		ADC	#090H
		CMP	#090H*2+1
		BCS	UNBABA_PLSR_040 ;”ガオ〜”へ？ ( no:UNBABA_PLSR_040 )
;
;-------------- ”ガオ〜”へ ----------------------------
		LDA	#048H		;[♪]
		JSL	>SOUND_3_ON
;
		INC	<ENWRK0,X
		STZ	ENWRK6,X	;敵当てられフラグリセット
		LDA	#3
		STA	<ENWRK2,X
		STZ	ENXSPD,X
		STZ	ENXPOW,X
		LDA	#080H
		STA	ENTIM1,X
;
UNBABA_PLSR_040 EQU	$
		RTS
;
;----------------------------------------------------------------
;-		”ガオ〜”					-
;----------------------------------------------------------------
UNBABA_GAO_XMX	EQU	$
		WORD	0FF00H,00100H
;
UNBABA_GAOO	EQU	$
		TYX
;
		LDY	<ENWRK2,X
		CPY	#4
		BCC	UNBABA_GAOO_FFC ;敵当てられフラグセットＯＫ？ ( no:UNBABA_GAOO_FFC )
;
		LDA	ENWRK6,X
		BNE	UNBABA_GAOO_FFC ;すでに敵当てられた？ ( yes:UNBABA_GAOO_FFC )
		LDA	ENWRK8,X
		BEQ	UNBABA_GAOO_FFC ;敵当てられた？ ( no:UNBABA_GAOO_FFC )
;
		STA	ENWRK6,X
		BPL	UNBABA_GAOO_FFB ;プレイヤー当たった？ ( yes:UNBABA_GAOO_FFB )
;
		PHY			;(Y) save
		LDA	#07AH		;[♪]
		JSL	>SOUND_3_ON
		PLY			;(Y) load
;
		LDA	#040H		;ヤラレタイマーセット
		STA	ENTIM2,X
UNBABA_GAOO_FFB EQU	$
		STZ	ENXSPD,X
		STZ	ENXPOW,X
;
;-------------- ＢＧ３パターンセット ----------------------------
UNBABA_GAOO_FFC EQU	$
		CPY	#7
		BCS	UNBABA_GAOO_FFD
;
		LDA	ENWRK6,X
		BPL	UNBABA_GAOO_FFD
		LDA	#020H
UNBABA_GAOO_FFD EQU	$
		CLC
		ADC	#08H
		CLC
		ADC	<ENCONT,X
		CMP	#0100H+1
		BCC	UNBABA_GAOO_030 ;次のパターンへ？ ( no:UNBABA_GAOO_030 )
;
		INY
		CPY	#8+1
		BCS	UNBABA_GAOO_010 ;プレイヤーサーチへ？ ( yes:UNBABA_GAOO_010 )
;
		CPY	#5
		BCC	UNBABA_GAOO_020 ;出現した？ ( no:UNBABA_GAOO_020 )
;
		LDA	ENWRK6,X
		BNE	UNBABA_GAOO_000 ;敵当てられた？ ( yes:UNBABA_GAOO_000 )
;
;-------------- 敵当てられて無い --------------------------------
;
;-------------- ＭＡＸＸスピードセット ------------------
		LDA	ENTIM1,X
		BNE	UNBABA_PLSR_FFF ;サーチＸスピードセットＯＫ？ ( no:UNBABA_PLSR_FFF )
;
		LDA	EPXMUK,X
		AND	#00FFH
		CMP	ENMUKI,X
		BNE	UNBABA_GAOO_000 ;プレイヤー反対方向？ ( yes:UNBABA_GAOO_000 )
;
		PHY			;(Y) save
		TAY
		LDA	!UNBABA_GAO_XMX,Y
		STA	ENXMAX,X
		LDA	#010H
		STA	ENXPOW,X
		LDA	#040H
		STA	ENTIM1,X
		PLY			;(Y) load
;
UNBABA_PLSR_FFF EQU	$
		CPY	#7
		BNE	UNBABA_GAOO_020
		LDY	#5
		BRA	UNBABA_GAOO_020
;
;-------------- 敵当てられた ------------------------------------
UNBABA_GAOO_000 EQU	$
		CPY	#5
		BNE	UNBABA_GAOO_020
		LDY	#7
		BRA	UNBABA_GAOO_020
;
;-------------- プレイヤーサーチへ ------------------------------
UNBABA_GAOO_010 EQU	$
		STZ	<ENWRK0,X
		LDA	#020H
		LDY	ENWRK6,X
		BEQ	UNBABA_GAOO_012
		LDA	#0A0H
		LDY	MPTYPE
		CPY	#3*2
		BCS	UNBABA_GAOO_012 ;３Ｗ以上？ ( yes:UNBABA_GAOO_012 )
		LDA	#0100H
UNBABA_GAOO_012 EQU	$
		STA	ENTIM0,X
;
		LDY	#1
UNBABA_GAOO_020 EQU	$
		TYA
		STA	<ENWRK2,X
		LDA	#0
UNBABA_GAOO_030 EQU	$
		STA	<ENCONT,X
;
UNBABA_GAOO_050 EQU	$
		RTS
;
;------------------------------------------------------------------------
;-		ビッグウンババＢＧ３セット＆ＯＡＭセット		-
;------------------------------------------------------------------------
;
;-------------- ウンババの左の歯の位置ポイントデータポインター ----------
UNBABA_HAL_P	EQU	$
		WORD	12H*4,2CH*4
;-------------- ウンババの右の歯の位置ポイントデータポインター ----------
UNBABA_HAR_P	EQU	$
		WORD	10H*4,2EH*4
;
UNBABA_BG3SET	EQU	$
;
;-------------- ＢＧ３セット --------------------------------------------
		LDA	<ENWRK2,X
		ASL	A
		ASL	A
		ORA	ENMUKI,X
		TAY
		LDA	!UNBABA_BG3_ADR,Y
		STA	R1		;(R1) <-- モーフィング元データアドレス
		LDA	!UNBABA_BG3_ADR+4,Y
		STA	R2		;(R2) <-- モーフィング先データアドレス
		LDA	#BANK UNBABA_BG3_DT
		STA	R0		;(R0)  <-- モーフィングデータアドレス（Ｂ）
		LDA	#UNBABA_BG3_DT_N
		STA	R3		;(R3)  <-- ポイント数
		STZ	R4		;(R4)  <-- 中心ポイントＮｏ．
		LDA	#BG3_POLYGON_DT
		STA	R5		;(R5)  <-- モーフィングデータ格納アドレス
		LDA	<ENCONT,X
		STA	R6		;(R6)  <-- モーフィング率
		LDA	ENDSXL,X
		CLC
		ADC	#08H
		STA	CREG0		;表示Ｘ座標セット
		LDA	ENDSYL,X
		SEC
		SBC	#08H
		STA	CREG1		;表示Ｙ座標セット
		M_CHIP	BG3_MORPHING_N
;
		JSL	>M_DMA_BFST
		LWORD	HDMABUF		;転送先アドレス
		LWORD	HDMABF		;転送元アドレス
;;;;		    WORD    (0B2H*2*2)	    ;転送バイト数
		WORD	(0D2H*2*2)	;転送バイト数
;
		LDX	<ENINDX
;
;-------------- ＰＰＵレジスタセット ------------------------------------
		LDA	#00000100B	;ＢＧ３表示セット
		TSB	MANSEL
		LDA	#08H		;ＢＧ３優先順位変更
		TRB	BGMODE
		LDA	#00011000B
		TSB	HD420C		;H-DMA "ON" !!
;
;-------------- ＯＡＭセット --------------------------------------------
		LDY	ENMUKI,X
		LDX	#01FH*4
		LDA	>BG3_POLYGON_DT,X
		STA	<EWORK0		;(EWK0,1) <-- ウンババの目ＯＡＭＸ座標補正値
		LDA	>BG3_POLYGON_DT+2,X
		STA	<EWORK2		;(EWK2,3) <-- ウンババの目ＯＡＭＹ座標補正値
;
		LDX	!UNBABA_HAL_P,Y
		LDA	>BG3_POLYGON_DT,X
		STA	<EWORK4		;(EWK4,5) <-- ウンババの左の歯ＯＡＭＸ座標補正値
		LDA	>BG3_POLYGON_DT+2,X
		STA	<EWORK6		;(EWK6,7) <-- ウンババの左の歯ＯＡＭＹ座標補正値
;
		LDX	!UNBABA_HAR_P,Y
		LDA	>BG3_POLYGON_DT,X
		STA	<EWORK8		;(EWK8,9) <-- ウンババの右の歯ＯＡＭＸ座標補正値
		LDA	>BG3_POLYGON_DT+2,X
		STA	<EWORKA		;(EWKA,B) <-- ウンババの右の歯ＯＡＭＹ座標補正値
;
		LDX	<ENINDX
;
		I16
;
		LDY	ENOAML,X	;(Y) <-- ＯＡＭポインター
		LDX	#10		;(X) <-- ＯＡＭ数
UNBABA_B3ST_010 EQU	$
		LDA	SOAM_DX,Y	;ウンババの目ＯＡＭＸ座標補正
		CLC
		ADC	<EWORK0
		STA	SOAM_DX,Y
		LDA	SOAM_DX+2,Y	;ウンババの目ＯＡＭＹ座標補正
		CLC
		ADC	<EWORK2
		STA	SOAM_DX+2,Y
		TYA
		CLC
		ADC	#08
		TAY
		DEX
		BNE	UNBABA_B3ST_010
;
		LDA	SOAM_DX,Y	;ウンババの左の歯ＯＡＭＸ座標補正
		CLC
		ADC	<EWORK4
		STA	SOAM_DX,Y
		LDA	SOAM_DX+2,Y	;ウンババの左の歯ＯＡＭＹ座標補正
		CLC
		ADC	<EWORK6
		STA	SOAM_DX+2,Y
;
		LDA	SOAM_DX+8,Y	;ウンババの右の歯ＯＡＭＸ座標補正
		CLC
		ADC	<EWORK8
		STA	SOAM_DX+8,Y
		LDA	SOAM_DX+8+2,Y	;ウンババの右の歯ＯＡＭＹ座標補正
		CLC
		ADC	<EWORKA
		STA	SOAM_DX+8+2,Y
;
		I8
;
		LDX	<ENINDX
		RTS
;
;------------------------------------------------------------------------
;-		ビッグウンババＢＧ３データ				-
;------------------------------------------------------------------------
UNBABA_BG3_ADR	EQU	$
; ENMUKI -->		     [0]	     [2]	;[ENWRK2]
		WORD	UNBABA_BG3_D_00,UNBABA_BG3_D_00 ;[0] 水平
		WORD	UNBABA_BG3_D_10,UNBABA_BG3_D_11 ;[1] ちょっと
		WORD	UNBABA_BG3_D_11,UNBABA_BG3_D_10 ;[2] ちょっと反転用
		WORD	UNBABA_BG3_D_10,UNBABA_BG3_D_11 ;[3] ちょっと
		WORD	UNBABA_BG3_D_20,UNBABA_BG3_D_21 ;[4] 口開く前
		WORD	UNBABA_BG3_D_40,UNBABA_BG3_D_41 ;[5] 口開き．２
		WORD	UNBABA_BG3_D_30,UNBABA_BG3_D_31 ;[6] 口開き．１
		WORD	UNBABA_BG3_D_40,UNBABA_BG3_D_41 ;[7] 口開き．２
		WORD	UNBABA_BG3_D_20,UNBABA_BG3_D_21 ;[8] ひっこうみ口開く前
		WORD	UNBABA_BG3_D_10,UNBABA_BG3_D_11 ;[9] ひっこみちょっと
;
UNBABA_BG3_DT	EQU	$
UNBABA_BG3_D_00 EQU	$	;水平
		BYTE	000H,000H, 0C0H,000H, 0C6H,000H, 0C9H,000H
		BYTE	0CBH,000H, 0CDH,000H, 0CEH,000H, 0E8H,000H
		BYTE	002H,000H, 00BH,000H, 013H,000H, 016H,000H
		BYTE	018H,000H, 015H,000H, 012H,000H, 00CH,000H
		BYTE	001H,000H, 0EFH,000H, 0DCH,000H, 0D7H,000H
		BYTE	0D3H,000H, 0CFH,000H, 0CFH,000H, 0D0H,000H
		BYTE	0D0H,000H, 0D1H,000H, 0D3H,000H, 0D8H,000H
		BYTE	0DFH,000H, 0E7H,000H, 0F1H,000H
		BYTE	0F1H,000H, 0FCH,000H
		BYTE	008H,000H, 013H,000H, 01DH,000H, 024H,000H
		BYTE	028H,000H, 029H,000H, 02AH,000H, 02BH,000H
		BYTE	02DH,000H, 02EH,000H, 02EH,000H, 02EH,000H
		BYTE	02EH,000H, 02EH,000H, 02EH,000H, 02EH,000H
		BYTE	02EH,000H, 02EH,000H, 02EH,000H, 02EH,000H
		BYTE	02EH,000H, 02EH,000H, 02EH,000H, 02EH,000H
		BYTE	030H,000H, 034H,000H, 037H,000H, 03BH,000H
		BYTE	03FH,000H
UNBABA_BG3_DT_E EQU	$
UNBABA_BG3_DT_N EQU	(UNBABA_BG3_DT_E-UNBABA_BG3_DT)/2
;
UNBABA_BG3_D_10 EQU	$	;ちょっと
;file <KAGE-UNBABA.CH7>
;screen no.<0>
;point kazu <03dH>
;xmag=[001.00]
;ymag=[000.25]
		BYTE	000H,000H, 0C0H,000H, 0C6H,0FFH, 0C9H,0FEH
		BYTE	0CBH,0FDH, 0CDH,0FBH, 0CEH,0FAH, 0E8H,0FAH
		BYTE	002H,0FAH, 00BH,0FAH, 013H,0FAH, 016H,0FAH
		BYTE	018H,0FAH, 015H,0FAH, 012H,0FAH, 00CH,0FAH
		BYTE	001H,0FAH, 0EFH,0FAH, 0DCH,0FAH, 0D7H,0FAH
		BYTE	0D3H,0FAH, 0CFH,0FAH, 0CFH,0F9H, 0D0H,0F8H
		BYTE	0D0H,0F8H, 0D1H,0F7H, 0D3H,0F6H, 0D8H,0F4H
		BYTE	0DFH,0F2H, 0E7H,0F1H, 0F1H,0F1H
		BYTE	0F1H,0F1H, 0FCH,0F1H
		BYTE	008H,0F1H, 013H,0F2H, 01DH,0F4H, 024H,0F6H
		BYTE	028H,0F7H, 029H,0F8H, 02AH,0F8H, 02BH,0F9H
		BYTE	02DH,0FAH, 02EH,0FAH, 02EH,0FAH, 02EH,0FAH
		BYTE	02EH,0FAH, 02EH,0FAH, 02EH,0FAH, 02EH,0FAH
		BYTE	02EH,0FAH, 02EH,0FAH, 02EH,0FAH, 02EH,0FAH
		BYTE	02EH,0FAH, 02EH,0FAH, 02EH,0FAH, 02EH,0FAH
		BYTE	030H,0FBH, 034H,0FDH, 037H,0FEH, 03BH,000H
		BYTE	03FH,000H
;
;
UNBABA_BG3_D_20 EQU	$	;口開く前
;file <KAGE-UNBABA.CH7>
;screen no.<0>
;point kazu <03dH>
		BYTE	000H,000H, 0C0H,000H, 0C6H,0FCH, 0C9H,0F8H
		BYTE	0CBH,0F3H, 0CDH,0ECH, 0CEH,0E7H, 0E8H,0E7H
		BYTE	002H,0E7H, 00BH,0E7H, 013H,0E7H, 016H,0E7H
		BYTE	018H,0E7H, 015H,0E7H, 012H,0E7H, 00CH,0E7H
		BYTE	001H,0E7H, 0EFH,0E7H, 0DCH,0E7H, 0D7H,0E7H
		BYTE	0D3H,0E7H, 0CFH,0E6H, 0CFH,0E2H, 0D0H,0E0H
		BYTE	0D0H,0DEH, 0D1H,0DBH, 0D3H,0D6H, 0D8H,0CEH
		BYTE	0DFH,0C7H, 0E7H,0C3H, 0F1H,0C1H
		BYTE	0F1H,0C1H, 0FCH,0C1H
		BYTE	008H,0C3H, 013H,0C7H, 01DH,0CEH, 024H,0D6H
		BYTE	028H,0DBH, 029H,0DEH, 02AH,0E0H, 02BH,0E2H
		BYTE	02DH,0E6H, 02EH,0E7H, 02EH,0E7H, 02EH,0E7H
		BYTE	02EH,0E7H, 02EH,0E7H, 02EH,0E7H, 02EH,0E7H
		BYTE	02EH,0E7H, 02EH,0E7H, 02EH,0E7H, 02EH,0E7H
		BYTE	02EH,0E7H, 02EH,0E7H, 02EH,0E7H, 02EH,0E7H
		BYTE	030H,0ECH, 034H,0F3H, 037H,0F8H, 03BH,0FDH
		BYTE	03FH,000H
;
UNBABA_BG3_D_30 EQU	$	;口開き．１
;file <KAGE-UNBABA.CH7>
;screen no.<1>
;point kazu <03dH>
		BYTE	000H,000H, 0C0H,000H, 0C5H,0FAH, 0C8H,0F5H
		BYTE	0CBH,0E9H, 0CDH,0DCH, 0D0H,0C8H, 0E8H,0C6H
		BYTE	002H,0C2H, 00BH,0BFH, 013H,0BCH, 016H,0B9H
		BYTE	018H,0B5H, 015H,0B0H, 012H,0ADH, 00CH,0A9H
		BYTE	001H,0A5H, 0EFH,0A1H, 0DCH,09EH, 0D7H,09DH
		BYTE	0D3H,09DH, 0D0H,09BH, 0D0H,097H, 0D2H,095H
		BYTE	0D6H,093H, 0DAH,092H, 0DDH,08DH, 0E1H,089H
		BYTE	0E5H,086H, 0EAH,084H, 0F1H,082H
		BYTE	0F1H,082H, 0FCH,082H
		BYTE	001H,083H, 008H,085H, 00FH,089H, 015H,08EH
		BYTE	019H,092H, 01AH,093H, 01BH,095H, 01CH,097H
		BYTE	01EH,09BH, 01FH,09DH, 01FH,09DH, 020H,09EH
		BYTE	021H,0A1H, 023H,0A5H, 024H,0A9H, 025H,0ACH
		BYTE	027H,0B0H, 028H,0B5H, 029H,0B9H, 02AH,0BCH
		BYTE	02AH,0C0H, 02BH,0C2H, 02CH,0C6H, 02CH,0C8H
		BYTE	031H,0DCH, 034H,0E9H, 038H,0F5H, 03BH,0FAH
		BYTE	03FH,000H
;
UNBABA_BG3_D_40 EQU	$	;口開き．２
;file <KAGE-UNBABA.CH7>
;screen no.<2>
;point kazu <03dH>
		BYTE	000H,000H, 0C0H,000H, 0C3H,0FCH, 0C5H,0F9H
		BYTE	0C8H,0F1H, 0CAH,0E8H, 0CAH,0DCH, 0E8H,0DAH
		BYTE	001H,0D7H, 00FH,0D0H, 014H,0CBH, 017H,0C1H
		BYTE	018H,0BAH, 017H,0B4H, 015H,0AFH, 011H,0A9H
		BYTE	00BH,0A4H, 0FAH,09BH, 0E6H,097H, 0DEH,096H
		BYTE	0D8H,095H, 0D4H,092H, 0D3H,08DH, 0D5H,08BH
		BYTE	0D7H,08AH, 0E1H,08AH, 0E4H,088H, 0E7H,086H
		BYTE	0ECH,084H, 0F0H,083H, 0F5H,082H
		BYTE	000H,082H, 006H,082H
		BYTE	00CH,084H, 010H,086H, 016H,089H, 01BH,08DH
		BYTE	020H,092H, 021H,093H, 023H,095H, 024H,097H
		BYTE	026H,09BH, 027H,09DH, 027H,09EH, 027H,09FH
		BYTE	028H,0A1H, 029H,0A5H, 02AH,0A9H, 02BH,0ACH
		BYTE	02CH,0B0H, 02DH,0B3H, 02DH,0BAH, 02EH,0C1H
		BYTE	02FH,0CBH, 02FH,0D0H, 030H,0D7H, 031H,0DAH
		BYTE	034H,0E8H, 037H,0F1H, 03BH,0F9H, 03DH,0FCH
		BYTE	03FH,000H
;
UNBABA_BG3_D_11 EQU	$	;ちょっと
;file <KAGE-UNBABA.CH7>
;screen no.<0>
;point kazu <03dH>
;xmag=[001.00]
;ymag=[000.25]
;turn sw on
		BYTE	000H,000H
		BYTE	0C1H,000H, 0C5H,000H, 0C9H,0FEH, 0CCH,0FDH
		BYTE	0D0H,0FBH, 0D2H,0FAH, 0D2H,0FAH, 0D2H,0FAH
		BYTE	0D2H,0FAH, 0D2H,0FAH, 0D2H,0FAH, 0D2H,0FAH
		BYTE	0D2H,0FAH, 0D2H,0FAH, 0D2H,0FAH, 0D2H,0FAH
		BYTE	0D2H,0FAH, 0D2H,0FAH, 0D2H,0FAH, 0D2H,0FAH
		BYTE	0D3H,0FAH, 0D5H,0F9H, 0D6H,0F8H, 0D7H,0F8H
		BYTE	0D8H,0F7H, 0DCH,0F6H, 0E3H,0F4H, 0EDH,0F2H
		BYTE	0F8H,0F1H, 004H,0F1H
		BYTE	00FH,0F1H, 00FH,0F1H, 019H,0F1H
		BYTE	021H,0F2H, 028H,0F4H, 02DH,0F6H, 02FH,0F7H
		BYTE	030H,0F8H, 030H,0F8H, 031H,0F9H, 031H,0FAH
		BYTE	02DH,0FAH, 029H,0FAH, 024H,0FAH, 011H,0FAH
		BYTE	0FFH,0FAH, 0F4H,0FAH, 0EEH,0FAH, 0EBH,0FAH
		BYTE	0E8H,0FAH, 0EAH,0FAH, 0EDH,0FAH, 0F5H,0FAH
		BYTE	0FEH,0FAH, 018H,0FAH, 032H,0FAH, 033H,0FBH
		BYTE	035H,0FDH, 037H,0FEH, 03AH,0FFH, 040H,000H
;
UNBABA_BG3_D_21 EQU	$	;口開く前
;file <KAGE-UNBABA.CH7>
;screen no.<0>
;point kazu <03dH>
;xmag=[001.00]
;ymag=[001.00]
;turn sw on
		BYTE	000H,000H
		BYTE	0C1H,000H, 0C5H,0FDH, 0C9H,0F8H, 0CCH,0F3H
		BYTE	0D0H,0ECH, 0D2H,0E7H, 0D2H,0E7H, 0D2H,0E7H
		BYTE	0D2H,0E7H, 0D2H,0E7H, 0D2H,0E7H, 0D2H,0E7H
		BYTE	0D2H,0E7H, 0D2H,0E7H, 0D2H,0E7H, 0D2H,0E7H
		BYTE	0D2H,0E7H, 0D2H,0E7H, 0D2H,0E7H, 0D2H,0E7H
		BYTE	0D3H,0E6H, 0D5H,0E2H, 0D6H,0E0H, 0D7H,0DEH
		BYTE	0D8H,0DBH, 0DCH,0D6H, 0E3H,0CEH, 0EDH,0C7H
		BYTE	0F8H,0C3H, 004H,0C1H
		BYTE	00FH,0C1H, 00FH,0C1H, 019H,0C3H
		BYTE	021H,0C7H, 028H,0CEH, 02DH,0D6H, 02FH,0DBH
		BYTE	030H,0DEH, 030H,0E0H, 031H,0E2H, 031H,0E6H
		BYTE	02DH,0E7H, 029H,0E7H, 024H,0E7H, 011H,0E7H
		BYTE	0FFH,0E7H, 0F4H,0E7H, 0EEH,0E7H, 0EBH,0E7H
		BYTE	0E8H,0E7H, 0EAH,0E7H, 0EDH,0E7H, 0F5H,0E7H
		BYTE	0FEH,0E7H, 018H,0E7H, 032H,0E7H, 033H,0ECH
		BYTE	035H,0F3H, 037H,0F8H, 03AH,0FCH, 040H,000H
;
UNBABA_BG3_D_31 EQU	$	;口開き．１
;file <KAGE-UNBABA.CH7>
;screen no.<1>
;point kazu <03dH>
;xmag=[001.00]
;ymag=[001.00]
;turn sw on
		BYTE	000H,000H
		BYTE	0C1H,000H, 0C5H,0FAH, 0C8H,0F5H, 0CCH,0E9H
		BYTE	0CFH,0DCH, 0D4H,0C8H, 0D4H,0C6H, 0D5H,0C2H
		BYTE	0D6H,0C0H, 0D6H,0BCH, 0D7H,0B9H, 0D8H,0B5H
		BYTE	0D9H,0B0H, 0DBH,0ACH, 0DCH,0A9H, 0DDH,0A5H
		BYTE	0DFH,0A1H, 0E0H,09EH, 0E1H,09DH, 0E1H,09DH
		BYTE	0E2H,09BH, 0E4H,097H, 0E5H,095H, 0E6H,093H
		BYTE	0E7H,092H, 0EBH,08EH, 0F1H,089H, 0F8H,085H
		BYTE	0FFH,083H, 004H,082H
		BYTE	00FH,082H, 00FH,082H, 016H,084H
		BYTE	01BH,086H, 01FH,089H, 023H,08DH, 026H,092H
		BYTE	02AH,093H, 02EH,095H, 030H,097H, 030H,09BH
		BYTE	02DH,09DH, 029H,09DH, 024H,09EH, 011H,0A1H
		BYTE	0FFH,0A5H, 0F4H,0A9H, 0EEH,0ADH, 0EBH,0B0H
		BYTE	0E8H,0B5H, 0EAH,0B9H, 0EDH,0BCH, 0F5H,0BFH
		BYTE	0FEH,0C2H, 018H,0C6H, 030H,0C8H, 033H,0DCH
		BYTE	035H,0E9H, 038H,0F5H, 03BH,0FAH, 040H,000H
;
UNBABA_BG3_D_41 EQU	$	;口開き．２
;file <KAGE-UNBABA.CH7>
;screen no.<2>
;point kazu <03dH>
;xmag=[001.00]
;ymag=[001.00]
;turn sw on
		BYTE	000H,000H
		BYTE	0C1H,000H, 0C3H,0FCH, 0C5H,0F9H, 0C9H,0F1H
		BYTE	0CCH,0E8H, 0CFH,0DAH, 0D0H,0D7H, 0D1H,0D0H
		BYTE	0D1H,0CBH, 0D2H,0C1H, 0D3H,0BAH, 0D3H,0B3H
		BYTE	0D4H,0B0H, 0D5H,0ACH, 0D6H,0A9H, 0D7H,0A5H
		BYTE	0D8H,0A1H, 0D9H,09FH, 0D9H,09EH, 0D9H,09DH
		BYTE	0DAH,09BH, 0DCH,097H, 0DDH,095H, 0DFH,093H
		BYTE	0E0H,092H, 0E5H,08DH, 0EAH,089H, 0F0H,086H
		BYTE	0F4H,084H, 0FAH,082H
		BYTE	000H,082H, 00BH,082H, 010H,083H
		BYTE	014H,084H, 019H,086H, 01CH,088H, 01FH,08AH
		BYTE	029H,08AH, 02BH,08BH, 02DH,08DH, 02CH,092H
		BYTE	028H,095H, 022H,096H, 01AH,097H, 006H,09BH
		BYTE	0F5H,0A4H, 0EFH,0A9H, 0EBH,0AFH, 0E9H,0B4H
		BYTE	0E8H,0BAH, 0E9H,0C1H, 0ECH,0CBH, 0F1H,0D0H
		BYTE	0FFH,0D7H, 018H,0DAH, 036H,0DCH, 036H,0E8H
		BYTE	038H,0F1H, 03BH,0F9H, 03DH,0FCH, 040H,000H
;
;
;************************************************************************
;*		initial ( ゲロゲ〜ロの胃袋 )				*
;************************************************************************
;
;-------------- ゲロゲーロの胃袋ＢＧ３ラスターＨ−ＤＭＡパラメータ ------
INGER_BG3_HD	EQU	$
		BYTE	01000011B	 ;DMA control parameter
		BYTE	0FH		 ;    B bus address
		BYTE	LOW  HDMAPR4	 ;    A	     "     (L)
		BYTE	HIGH HDMAPR4	 ;	     "     (H)
		BYTE	BANK HDMAPR4	 ;	     "     (B)
;
INGER_BG3_HD_P	EQU	$
		BYTE	59H+80H		 ;line no.
		WORD	HDMABUF3	 ;
		BYTE	59H+80H		 ;line no.
		WORD	HDMABUF3+(59H*4) ;
		HEX	00		 ;end code
INGER_BG3_HD_E	EQU	$
;
;
;-------------- ゲロゲーロの胃袋形状データ ------------------------------
INGER_POINT_IN	EQU	$
		WORD	INGER_POINT_0
		WORD	INGER_POINT_1
INGER_POINT_IN2 EQU	$
		WORD	INGER_POINT_2
		WORD	INGER_POINT_3
;
INGER_POINT_0	EQU	$
;			 X  Y
		HEX	50,00	;[00]
		HEX	48,1E	;[01]
		HEX	39,39	;[02]
		HEX	1E,48	;[03]
		HEX	00,50	;[04]
		HEX	E3,48	;[05]
		HEX	C8,39	;[06]
		HEX	B9,1E	;[07]
		HEX	B1,00	;[08]
		HEX	B9,E3	;[09]
		HEX	C8,C8	;[0A]
		HEX	E3,B9	;[0B]
		HEX	00,B1	;[0C]
		HEX	1E,B9	;[0D]
		HEX	39,C8	;[0E]
		HEX	48,E3	;[0F]
;
INGER_POINT_1	EQU	$
		HEX	4E,00	;[00]
		HEX	4A,1F	;[01]
		HEX	37,37	;[02]
		HEX	1F,4A	;[03]
		HEX	00,4E	;[04]
		HEX	E2,4A	;[05]
		HEX	CA,37	;[06]
		HEX	B7,1F	;[07]
		HEX	B3,00	;[08]
		HEX	B7,E2	;[09]
		HEX	CA,CA	;[0A]
		HEX	E2,B7	;[0B]
		HEX	00,B3	;[0C]
		HEX	1F,B7	;[0D]
		HEX	37,CA	;[0E]
		HEX	4A,E2	;[0F]
;
INGER_POINT_2	EQU	$
		HEX	40,00	;[00]
		HEX	34,15	;[01]
		HEX	2D,2D	;[02]
		HEX	15,34	;[03]
		HEX	00,40	;[04]
		HEX	EC,34	;[05]
		HEX	D4,2D	;[06]
		HEX	CD,15	;[07]
		HEX	C1,00	;[08]
		HEX	CD,EC	;[09]
		HEX	D4,D4	;[0A]
		HEX	EC,CD	;[0B]
		HEX	00,C1	;[0C]
		HEX	15,CD	;[0D]
		HEX	2D,D4	;[0E]
		HEX	34,EC	;[0F]
;
INGER_POINT_3	EQU	$
		HEX	38,00	;[00]
		HEX	3B,18	;[01]
		HEX	28,28	;[02]
		HEX	18,3B	;[03]
		HEX	00,38	;[04]
		HEX	E9,3B	;[05]
		HEX	D9,28	;[06]
		HEX	C6,18	;[07]
		HEX	C9,00	;[08]
		HEX	C6,E9	;[09]
		HEX	D9,D9	;[0A]
		HEX	E9,C6	;[0B]
		HEX	00,C9	;[0C]
		HEX	18,C6	;[0D]
		HEX	28,D9	;[0E]
		HEX	3B,E9	;[0F]
;
INGERIN		EQU	$
		LDA	ENXPSL,X
		AND	#010H
		BNE	INGERIN_FFFB	;ゲロゲ〜ロスタートデモ？ ( yes:INGERIN_FFFB )
		JMP	INGERIN_FFFF
;
INGERIN_FFFB	EQU	$
		AND	ENYPSL,X
		BEQ	INGERIN_FFFD	;ゲロゲ〜ロスタートデモ初期セット？ ( yes:INGERIN_FFFD )
;
;------------------------------------------------------------------------
;-		ゲロゲ〜ロコースクリアーデモ初期セット			-
;------------------------------------------------------------------------
		INC	GOAL_BOSS_CLEAR ;ボスクリアーデモフラグ”ＯＮ”！！
;
		LDA	#GEROZ		;(A) <-- 敵Ｎｏ．
		JSL	>ENINSR		;敵エリア確保
		BCS	INGERIN_FFFB2	;     ”     ？ ( no:INGERIN_FFFB2 )
		JMP	>ENCLEAR
;
INGERIN_FFFB2	EQU	$
		LDA	#EFAIL		;ヤラレモードセット
		STA	ENMODE,Y
		LDA	ENXPSL,X
		SEC
		SBC	#058H
		STA	ENXPSL,Y	;ゲロゲ〜ロＸ座標セット
		SEC
		SBC	#010H
		STA	PLXPSL		;プレイヤーＸ座標セット
		LDA	ENYPSL,X
		SEC
		SBC	#028H
		STA	ENYPSL,Y	;ゲロゲ〜ロＹ座標セット
		SEC
		SBC	#08H
		STA	PLYPSL		;プレイヤーＹ座標セット
		LDA	ENMOD1,Y	;ＢＧチェック無しセット
		AND	#1111111111100000B
		ORA	#0010000000000000B ;敵フラグキャンセル
		STA	ENMOD1,Y
		LDA	#00H		;重力キャンセル
		STA	ENGPOW,Y
;;;;		    LDA	    #01C0H	    ;デモタイマーセット
		LDA	#080H		;デモタイマーセット
		STA	ENTIM0,Y
;
		LDA	#060H		;プレイヤー倍率初期セット
		STA	GEROZ_PLZOM
;
		JSR	EGG_CLEAR	;オプションタマゴクリアー
;
;-------------- プレイヤーカラー入れ替え --------------------------------
		LDX	#(15-1)*2
INGERIN_FFFC	EQU	$
		LDA	>DATACOL+(80H+051H)*2,X
		STA	>DATACOL+(80H+061H)*2,X
		STA	>MOTOCOL+(80H+061H)*2,X
		DEX
		DEX
		BPL	INGERIN_FFFC
		LDX	<ENINDX
		BRA	INGERIN_FFFE
;
;------------------------------------------------------------------------
;-		ゲロゲ〜ロスタートデモ初期セット			-
;------------------------------------------------------------------------
INGERIN_FFFD	EQU	$
		LDA	#GEROZ		;(A) <-- 敵Ｎｏ．
		JSL	>ENINSR		;敵エリア確保
		BCC	INGERIN_FFFE	;     ”     ？ ( no:INGERIN_FFFE )
;
		LDA	ENXPSL,X	;ゲロゲ〜ロ座標セット
		STA	ENXPSL,Y
		LDA	ENYPSL,X
		STA	ENYPSL,Y
		LDA	#GEROZ_RMODE60
		STA	ENWRK2,Y
		LDA	ENMOD1,Y
		ORA	#0010000000000000B ;敵フラグキャンセル
		STA	ENMOD1,Y
;
;-------------- ＯＢＪカラーセット --------------------------------------
		LDY	#Gero
		JSL	>KAMC2COLRESET_L
;
INGERIN_FFFE	EQU	$
		JMP	>ENCLEAR
;
;------------------------------------------------------------------------
;-		ゲロゲ〜ロ胃袋初期セット				-
;------------------------------------------------------------------------
INGERIN_FFFF	EQU	$
		JSL	>TROBJ_SR_4x4
		BCS	INGERIN_0000	;転送エリア確保？ ( yes:INGERIN_0000 )
		JMP	ENCLEAR
;
INGERIN_0000	EQU	$
		JSR	EGG_CLEAR	;オプションタマゴクリアー
;
;------------------------------------------------------------------------
;-		ゲロゲ〜ロの胃袋ＢＧ２ポイントセット			-
;------------------------------------------------------------------------
		LDA	#(INGER_POINT_1-INGER_POINT_0)/2
		STA	>BSPL_B_POINT
		DEC	A
		ASL	A		;x2
		TAX
INGERIN_0010	EQU	$
		LDA	!INGER_POINT_0,X
		STA	>BSPL_B_POINT+1,X
		DEX
		DEX
		BPL	INGERIN_0010
;
;------------------------------------------------------------------------
;-		ゲロゲ〜ロの胃袋ＢＧ２カラーセット			-
;------------------------------------------------------------------------
		LDX	#((15+16)-1)*2
INGERIN_0020	EQU	$
		LDA	>COL_ADDRESS+BG2_INGER,X
		STA	>MOTOCOL+(61H*2),X
		STA	>DATACOL+(61H*2),X
		DEX
		DEX
		BPL	INGERIN_0020
;
;------------------------------------------------------------------------
;-		ＢＧ１敵へ変更						-
;------------------------------------------------------------------------
		LDY	#0DH		;Ｈ−ＤＭＡパラメータ変更
		STY	4331H
		LDY	#0EH
		STY	4341H
;
;------------------------------------------------------------------------
;-		ゲロゲーロの胃袋ＢＧ３ラスターＨ−ＤＭＡパラメータセット-
;------------------------------------------------------------------------
;
		M8
;
		LDX	#04
INGERIN_0030	EQU	$
		LDA	!INGER_BG3_HD,X
		STA	4370H,X
		DEX
		BPL	INGERIN_0030
		LDA	#BANK HDMABUF3
		STA	4377H
;
		LDX	#INGER_BG3_HD_E-INGER_BG3_HD_P-1
INGERIN_0040	EQU	$
		LDA	!INGER_BG3_HD_P,X
		STA	>HDMAPR4,X
		DEX
		BPL	INGERIN_0040
;
		M16
;
		LDX	<ENINDX
		LDA	ENYPSL,X
		CLC
		ADC	#08H
		STA	ENYPSL,X
		LDA	#0180H		;飲み込まれ敵セットタイマー初期セット
		STA	ENTIM3,X
		LDA	#0100H		;胃液セットタイマー初期セット
		STA	ENTIM2,X
;;;;		    LDA	    #01H	;[ !=0 ]
		STA	ENWRK6,X	;キャラクターセットフラグリセット
;
		INC	ATSCRL_H	;スクロールＳＴＯＰセット
		STZ	ATSCRL_SCCH1
		INC	ATSCRL_V
		LDA	#070CH
		STA	ATSCRL_SCCV1
;
		JMP	>DOROBOUCANCEL	;ドロボー＆ムーチョ出現キャンセル
;
;------------------------------------------------------------------------
;-		オプションタマゴクリアー				-
;------------------------------------------------------------------------
EGG_CLEAR	EQU	$
		LDY	EGGPNT
		BEQ	EGG_CLEAR_0100	;オプション連れてる？ ( no:EGG_CLEAR_0100 )
;
EGG_CLEAR_0050	EQU	$
		PHY			;(Y) save
		LDX	EGGLNK-2,Y
		JSL	>ENCLEAR_NORETN
		PLY			;(Y) load
		DEY
		DEY
		BNE	EGG_CLEAR_0050
		STZ	EGGPNT
;
		LDX	<ENINDX
;
EGG_CLEAR_0100	EQU	$
		RTS
;
;************************************************************************
;*		move	( ゲロゲ〜ロの胃袋 )				*
;*			(ENWRK0) : モードＮｏ．				*
;*			(ENWRK2) : 回転角×１００Ｈ			*
;*			(ENWRK4) : 回転スピード				*
;*			(ENWRK6) : キャラクターセットチェックフラグ	*
;*			(ENWRK8) : ダメージ量				*
;************************************************************************
INGER_PL_XHS	EQU	$
		WORD	0FFFFH,00001H
;
INGER_NDCHN_RSA EQU	$
		WORD	0FFC0H,00040H
INGER_NDCHN_RSC EQU	$
		WORD	0FE00H,00200H
;
INGERMV		EQU	$
;
;------------------------------------------------------------------------
;-		ＢＧ３セット＆ＯＡＭセット				-
;------------------------------------------------------------------------
		JSR	INGER_BG3SET   ;ゲロゲ〜ロの胃袋ＢＧ３セット
;
;------------------------------------------------------------------------
;-		モードチェック						-
;------------------------------------------------------------------------
		JSL	>ENMDCK
;
;----------------------------------------------------------------
;-		地震セット					-
;----------------------------------------------------------------
		LDA	TILTAL
		STA	SCCV3
		STA	ESCCV3
;
;------------------------------------------------------------------------
;-		ゲロゲ〜ロの胃袋処理					-
;------------------------------------------------------------------------
		TXY
		LDA	<ENWRK0,X
		ASL	A
		TAX
		JSR	(!INGER_TBL,X)
;
;------------------------------------------------------------------------
;-		のどちんこ回転セット					-
;------------------------------------------------------------------------
		LDA	#-04H*100H
		LDY	<ENWRK4+1,X
		BPL	INGERMV_0010
		LDA	#04H*100H
INGERMV_0010	EQU	$
		LDY	#00H
		CLC
		ADC	<ENWRK2,X
		BPL	INGERMV_0020
		LDY	#02H
INGERMV_0020	EQU	$
		LDA	<ENWRK4,X	;のどちんこ回転スピード加速
		PHA			;(A) save
		SEC
		SBC	!INGER_NDCHN_RSC,Y
		EOR	!INGER_NDCHN_RSA,Y
		ASL	A		;(C) <-- (N)
		PLA			;(A) load
		BCC	INGERMV_0030	;のどちんこ回転スピードオーバー？ ( no:INGERMV_0030 )
;
		CLC			;のどちんこ回転スピード加速
		ADC	!INGER_NDCHN_RSA,Y
		STA	<ENWRK4,X
INGERMV_0030	EQU	$
		CLC			;のどちんこ回転角セット
		ADC	<ENWRK2,X
		STA	<ENWRK2,X
		CLC
		ADC	#030H*100H
		CMP	#(030H*2)*100H+1
		BCC	INGERMV_0040	;ＭＡＸ角度オーバー？ ( no:INGERMV_0040 )
;
		LDA	<ENWRK2,X
		EOR	<ENWRK4,X
		BMI	INGERMV_0040
		LDA	<ENWRK4,X
		EOR	#0FFFFH
		INC	A
		STA	<ENWRK4,X
;
;------------------------------------------------------------------------
;-		ＢＧ３との衝突チェック					-
;------------------------------------------------------------------------
INGERMV_0040	EQU	$
		TXA
		STA	CCWORK9		;(CWK9) <-- 敵インデックス
		LDA	PLDSXL
		STA	CCWORKA		;(CWKA) <-- プレイヤー表示Ｘ座標
		LDA	PLDSYL
		STA	CCWORKB		;(CWKB) <-- プレイヤー表示Ｙ座標
		LDA	PLSITD
		STA	CCWORKC		;(CWKC) <-- プレイヤーお座りフラグ
		M_CHIP	XBG3_CROSS_CK
		LDX	<ENINDX
;
		LDA	CCWORKD
		AND	#11110B
		BEQ	INGERMV_0100	;プレイヤーサイド当たり？ ( no:INGERMV_0100 )
;
;-------------- プレイヤーサイド当たり ----------------------------------
		ASL	A
		AND	CCWORKD
		AND	#10100B
		BEQ	INGERMV_0042	;両サイド当たり？ ( no:INGERMV_0042 )
;
		CMP	#10100B
		BEQ	INGERMV_0060	;完全両サイド当たり？ ( yes:INGERMV_0060 )
;
INGERMV_0042	EQU	$
		EOR	#10100B
;
		LDY	#00H
		AND	CCWORKD
		BEQ	INGERMV_0050	;左当たり？ ( yes:INGERMV_0050 )
		LDY	#02H
INGERMV_0050	EQU	$
		LDA	PLXPSL
		CLC
		ADC	!INGER_PL_XHS,Y
		STA	PLXPSL		;プレイヤーＸ座標補正
		LDA	PLMVSP
		EOR	!INGER_PL_XHS,Y
		BPL	INGERMV_0100	;ＸスピードクリアーＯＫ？ ( no:INGERMV_0100 )
;
INGERMV_0060	EQU	$
		STZ	PLMVSP		;プレイヤーＸスピードセット
;
INGERMV_0100	EQU	$
		LDA	CCWORKD
		AND	#00001B
		BEQ	INGERMV_0150	;プレイヤー足当たり？ ( no:INGERMV_0150 )
		LDA	PLYPSL
		CMP	ENYP2L
		BMI	INGERMV_0150	;足当たりＯＫ位置？ ( no:INGERMV_0150 )
		LDA	PLJUMP
		BEQ	INGERMV_0110	;プレイヤージャンプ中？ ( no:INGERMV_0110 )
		LDA	PLYSPD
		BMI	INGERMV_0150	;プレイヤージャンプＵＰ？ ( yes:INGERMV_0150 )
;
;-------------- プレイヤー足当たり --------------------------------------
INGERMV_0110	EQU	$
;
;-------------- ゲロゲ〜ロの胃袋ポイント移動チェック --------------------
		LDA	PLXPSL
		CLC
		ADC	#08H
		SEC
		SBC	ENXP2L
		STA	R1		;(R1) <-- チェックＸ座標
		LDA	PLYPSL
		CLC
		ADC	#020H
		SEC
		SBC	ENYP2L
		CMP	#080H
		BCC	INGERMV_0120	;最大値オーバー？ ( no:INGERMV_0120 )
		LDA	#07FH
INGERMV_0120	EQU	$
		STA	R2		;(R2) <-- チェックＹ座標
		LDA	#060H
		STA	CCWORK2		;(CWK2) <-- チェックＭＡＸ半径
		M_CHIP	INGER_P_MOV
;
		LDX	<ENINDX
;
		LDA	PLMODE
		CMP	#PDKN
		BEQ	INGERMV_0150	;プレイヤー脱出？ ( yes:INGERMV_0150 )
;
		INC	ONLFFG		;リフト”ＯＮ”
		LDA	PLYPSL		;プレイヤーＹ座標補正
		CLC
		ADC	CCWORKE
		STA	PLYPSL
;
INGERMV_0150	EQU	$
		LDY	ECRSFG,X
		DEY
		BPL	INGERMV_0151	;敵当たり？ ( yes:INGERMV_0151 )
		JMP	INGERMV_0200
;
;-------------- 敵当たり！！ --------------------------------------------
INGERMV_0151	EQU	$
		LDA	ENXP2L		;Ｘスピード減速
		SEC
		SBC	ECENTX,Y
		STA	<EWORKC
		ASL	A
		CLC
		ADC	<EWORKC
		STA	<EWORKC
		CLC
		ADC	ENXSPD,Y
		STA	ENXSPD,Y
		EOR	<EWORKC
		STA	<EWORK0
;
		LDA	ENYP2L	       ;Ｙスピード減速
		SEC
		SBC	ECENTY,Y
		STA	<EWORKE
		ASL	A
		CLC
		ADC	<EWORKE
		STA	<EWORKE
		CLC
		ADC	ENYSPD,Y
		STA	ENYSPD,Y
		EOR	<EWORKE
		ORA	<EWORK0
		BPL	INGERMV_0152	;減速終了？ ( yes:INGERMV_0152 )
;
		LDA	ENGPOW,Y
		CMP	#040H
		BCC	INGERMV_0160	;パワーショット？ ( yes:INGERMV_0160 )
;
		PHB			;(DBR) save
		TYX			;(X) <-- (Y)
		JSL	>ENRETURN
		TXY			;(Y) <-- (X)
		PLB			;(DBR) load
		LDA	<EWORKC
		ASL	A
		STA	ENXSPD,X
		LDA	<EWORKE
		ASL	A
		STA	ENYSPD,X
		BRA	INGERMV_0160
;
INGERMV_0152	EQU	$
		LDA	#040H		;パワーショット解除
		STA	ENGPOW,Y
;
INGERMV_0160	EQU	$
		LDA	ECENTX,Y
		SEC
		SBC	ENXP2L
		STA	R1		;(R1) <-- チェックＸ座標
		LDA	ECENTY,Y
		SEC
		SBC	ENYP2L
		STA	R2		;(R2) <-- チェックＹ座標
		LDA	#078H
		STA	CCWORK2		;(CWK2) <-- チェックＭＡＸ半径
		M_CHIP	INGER_P_MOV
		LDX	<ENINDX
;
INGERMV_0200	EQU	$
		RTL
;
;------------------------------------------------------------------------
;-		ゲロゲ〜ロの胃袋処理テーブル				-
;------------------------------------------------------------------------
INGER_TBL	EQU	$
		WORD	INGER_MOVE	;通常処理
		WORD	INGER_FAIL	;ヤラレ処理
		WORD	INGER_WAIT	;ヤラレウェイト処理
;
;------------------------------------------------------------------------
;-		通常処理						-
;------------------------------------------------------------------------
INGER_MOVE	EQU	$
		TYX
;
;----------------------------------------------------------------
;-		胃液セットチェック				-
;----------------------------------------------------------------
		LDA	ENTIM2,X
		BNE	INGER_MOVE_0100 ;飲み込まれ敵セット？ ( no:INGER_MOVE_0100 )
;
		LDA	<RANDM0
		AND	#0FH*4
		CLC
		ADC	#(57-(16/2))*4
		CMP	#54*4
		BCC	INGER_MOVE_0050 ;セットＯＫ位置？ ( yes:INGER_MOVE_0050 )
		CMP	#61*4
		BCC	INGER_MOVE_0100 ;セットＯＫ位置？ ( no:INGER_MOVE_0100 )
INGER_MOVE_0050 EQU	$
		PHA			;(A) save
;
		LDA	ENWRK8+1,X
		AND	#00FFH
		STA	<EWORK0
		LSR	A
		LSR	A
		ADC	<EWORK0
		LSR	A
		LSR	A
		EOR	#0FFFFH
		ADC	#070H
		STA	ENTIM2,X
;
		LDA	#IEKI0		;(A) <-- 敵Ｎｏ．
		JSL	>ENINSR		;敵エリア確保
		PLA			;(A) load
		BCC	INGER_MOVE_0100 ;      ”    ？ ( no:INGER_MOVE_0100 )
;
;-------------- 胃液セット --------------------------------------
		STA	ENWRK2,Y	;胃壁のポイントＮｏ．セット
		TXA
		STA	ENWRK0,Y	;ゲロゲーロの胃袋インデックスセット
		PHY			;(Y) save
		JSR	IEKI0_POSSET
		PLY			;(Y) load
		LDA	<EWORK0
		STA	ENXPSL,Y	;Ｘ座標セット
		LDA	<EWORK2
		STA	ENYPSL,Y	;Ｙ座標セット
;
;----------------------------------------------------------------
;-		飲み込まれ敵セットチェック			-
;----------------------------------------------------------------
INGER_MOVE_0100 EQU	$
		LDA	ENTIM3,X
		BNE	INGER_MOVE_0150 ;飲み込まれ敵セット？ ( no:INGER_MOVE_0150 )
;
		LDA	#0100H
		STA	ENTIM3,X
;
		LDA	#EGG08
		STA	R4
		LDA	#EGG09+1
		STA	R5
		M_CHIP	TARGET_COUNTER
		LDX	<ENINDX
;
		LDA	R6
		CMP	#2
		BCS	INGER_MOVE_0150 ;タマゴいっぱい？ ( yes:INGER_MOVE_0150 )
;
		LDA	#BHEIR
		STA	R4
		LDA	#BHEIG+1
		STA	R5
		M_CHIP	TARGET_COUNTER
		LDX	<ENINDX
;
		LDA	R6
		BNE	INGER_MOVE_0150 ;ビッグヘイホーいっぱい？ ( yes:INGER_MOVE_0150 )
;
		LDA	<RANDM0
		AND	#01H
		CLC
		ADC	#BHEIR		;(A) <-- 敵Ｎｏ．
		JSL	>ENINSR_I	;敵エリア確保
		BCC	INGER_MOVE_0150 ;      ”    ？ ( no:INGER_MOVE_0150 )
;
;-------------- 飲み込まれ敵セット ------------------------------
		LDA	ENXPSL,X
		SEC
		SBC	#08H
		STA	ENXPSL,Y	;Ｘ座標セット
		LDA	ENYPSL,X
		SEC
		SBC	#074H
		STA	ENYPSL,Y	;Ｙ座標セット
;
;----------------------------------------------------------------
;-		のどちんこ衝突チェック				-
;----------------------------------------------------------------
INGER_MOVE_0150 EQU	$
		LDA	ENTIM0,X
		BEQ	INGER_MOVE_0300 ;ダメージ中？ ( no:INGER_MOVE_0300 )
;
		LDA	ENTIM1,X
		AND	#0FH
		CMP	#01H
		BNE	INGER_MOVE_0160 ;ダメージサウンドセット？ ( no:INGER_MOVE_0160 )
;
		LDA	#03FH		;[♪]
		JSL	>SOUND_3_ON
;
INGER_MOVE_0160 EQU	$
		LDA	ENTIM1,X
		AND	#04H
		BEQ	INGER_MOVE_0250
		LDX	#(15+16-1)*2
		LDA	#07FFFH		;ダメージカラーセット
INGER_MOVE_0170 EQU	$
		STA	>DATACOL+(061H*2),X
		DEX
		DEX
		BPL	INGER_MOVE_0170
		LDX	<ENINDX
		LDY	#00000101B	;加算セット
		STY	SUBADF
INGER_MOVE_0200 EQU	$
		JMP	INGER_MOVE_0500
;
INGER_MOVE_0250 EQU	$
		LDY	#01000101B	;１／２加算セット
		STY	SUBADF
		LDA	ENWRK8,X	;(A) <-- ダメージ量
		JMP	INGER_MOVE_0450
;
INGER_MOVE_0300 EQU	$
		LDY	ECRSFG,X
		DEY
		BMI	INGER_MOVE_0200 ;のどちんこ当たり？ ( no:INGER_MOVE_0200 )
;
		LDA	ENSHOT,Y
		BEQ	INGER_MOVE_0200 ;ショット？ ( no:INGER_MOVE_0200 )
;
		LDA	ECROSX,X
		NEG16
		AND	#00FFH
		XBA
		DIV2_16
		STA	<EWORK0
		EOR	ENXSPD,Y
		ASL	A		;(C) <-- (N)
		LDA	ENXSPD,Y
		BCC	INGER_MOVE_0350
		LDA	#00
INGER_MOVE_0350 EQU	$
		CLC
		ADC	<EWORK0
		STA	<EWORK0
		LDA	ENYSPD,Y
		EOR	ECROSX,X
		ASL	A		;(C) <-- (N)
		LDA	ENYSPD,Y
		BCS	INGER_MOVE_0360
		NEG16
INGER_MOVE_0360 EQU	$
		CLC
		ADC	<EWORK0
		STA	<ENWRK4,X	;のどちんこ回転スピードセット
		BPL	INGER_MOVE_0400
		EOR	#0FFFFH
		INC	A
INGER_MOVE_0400 EQU	$
		PHA			;(A) save
;
		ASL	A
		ASL	A
		ASL	A
		AND	#0FF00H
		XBA
		CMP	#020H
		BCS	INGER_MOVE_0410
		LDA	#020H
INGER_MOVE_0410 EQU	$
		STA	ENTIM0,X	;ダメージタイマーセット
		LDA	#020H
		STA	ENTIM1,X
		STA	TILTCT2		;地震セット
;
		TYX			;(X) <-- 相手の敵インデックス
		JSL	>ENDEATH_SET_4
;
		PLA			;(A) load
		ASL	A
		CLC
		ADC	ENWRK8,X
		STA	ENWRK8,X	;ダメージ量セット
		BCC	INGER_MOVE_0450 ;ヤラレタ？ ( no:INGER_MOVE_0450 )
;
;-------------- ヤラレタ！！ ------------------------------------
		INC	<ENWRK0,X
		LDA	#0140H
		STA	ENTIM0,X
		STZ	ENWRK8,X
		LDA	#0800H		;地震タイマーセット
		STA	TILTCT2
		JSL	>TO_PLDEMO_2	;プレイヤーＳＴＯＰ！！
		JSL	>BOSS_EN_CHANGE ;敵をコインに変える
		BRA	INGER_MOVE_0500
;
;-------------- カラーチェンジ ----------------------------------
INGER_MOVE_0450 EQU	$
		AND	#0FF00H
		XBA
		STA	R6		;(R6) <-- カラーフェード率（※壊れない）
		LDA	#COL_ADDRESS+INGER_BG3_FADE
		STA	R14		;(R14) <-- 先カラーデータアドレス（Ｌ，Ｈ）
		LDA	#BANK COL_ADDRESS+INGER_BG3_FADE
		STA	R0		;(R0) <-- 先カラーデータアドレス（Ｂ）
		LDA	#01H
		STA	R8		;(R8) <-- カラーポインター（０〜ＦＦ）
		LDA	#7
		STA	R12		;(R12) <-- カラー数
		M_CHIP	COL_MORF_B
;
		LDA	#COL_ADDRESS+INGER_BG2_FADE
		STA	R14		;(R14) <-- 先カラーデータアドレス（Ｌ，Ｈ）
		LDA	#BANK COL_ADDRESS+INGER_BG2_FADE
		STA	R0		;(R0) <-- 先カラーデータアドレス（Ｂ）
		LDA	#061H
		STA	R8		;(R8) <-- カラーポインター（０〜ＦＦ）
		LDA	#15+16
		STA	R12		;(R12) <-- カラー数
		M_CHIP	COL_MORF_B
		LDX	<ENINDX
;
;----------------------------------------------------------------
;-		ゲロゲ〜ロの胃袋ポイント復元セット		-
;----------------------------------------------------------------
INGER_MOVE_0500 EQU	$
		LDA	#BANK INGER_POINT_0
		STA	R0		;(R0) <-- ゲロゲ〜ロの胃袋元ポイントデータアドレス（Ｂ）
		LDA	<FRCNT2
		AND	#08H
		TAY
		BEQ	INGER_MOVE_0550
		LDY	#02H
		LDA	ENTIM0,X
		BEQ	INGER_MOVE_0550 ;ダメージ中？ ( no:INGER_MOVE_0550 )
		LDA	<FRCNT2
		AND	#010H
		LSR	A
		LSR	A
		LSR	A
;;;;		    CLC
		ADC	#04H
		TAY
INGER_MOVE_0550 EQU	$
		LDA	!INGER_POINT_IN,Y
		STA	R14		;(R14) <-- ゲロゲ〜ロの胃袋元ポイントデータアドレス（Ｌ，Ｈ）
		M_CHIP	INGER_P_RET
		LDX	<ENINDX
		RTS
;
;------------------------------------------------------------------------
;-		ヤラレ処理						-
;------------------------------------------------------------------------
INGER_FAL_TILT	EQU	$
		WORD	00002H,00000H,0FFFEH,00000H,00002H,00000H,0FFFEH,00000H
;
INGER_FAL_PLHS	EQU	$
		WORD	0FFFFH,00001H
;
INGER_BG2_FLCOL EQU	$
		WORD	INGER_BG2_FADE+(15+16-1)*2
		WORD	INGER_BG2_FL_1+(15+16-1)*2
		WORD	INGER_BG2_FL_2+(15+16-1)*2
		WORD	INGER_BG2_FL_3+(15+16-1)*2
INGER_BG3_FLCOL EQU	$
		WORD	INGER_BG3_FADE+(7-1)*2
		WORD	INGER_BG3_FL_1+(7-1)*2
		WORD	INGER_BG3_FL_2+(7-1)*2
		WORD	INGER_BG3_FL_3+(7-1)*2
;
INGER_FAIL	EQU	$
		TYX
;
;----------------------------------------------------------------
;-		プレイヤー補正					-
;----------------------------------------------------------------
		LDY	#00H
		LDA	ENXPSL,X
		SEC
		SBC	#08H
		CMP	PLXPSL
		BEQ	INGER_FAIL_0100
		BMI	INGER_FAIL_0050
		LDY	#02H
INGER_FAIL_0050 EQU	$
		LDA	PLXPSL
		CLC
		ADC	!INGER_FAL_PLHS,Y
		STA	PLXPSL
;
;----------------------------------------------------------------
;-		カラーアニメーション				-
;----------------------------------------------------------------
INGER_FAIL_0100 EQU	$
		PHB			;(DBR) save
;
		LDA	<FRCNT2
		AND	#03H<<2
		LSR	A
		TAY
;
		I16
;
		LDX	!INGER_BG3_FLCOL,Y
		PHX			;(X) save
		LDX	!INGER_BG2_FLCOL,Y
;
		PEA	DATACOL/100H	;(DBR) <-- BANK DATACOL
		PLB
		PLB
;
		LDY	#(15+16-1)*2
INGER_FAIL_0150 EQU	$
		LDA	>COL_ADDRESS,X
		STA	DATACOL+(61H*2),Y
		DEX
		DEX
		DEY
		DEY
		BPL	INGER_FAIL_0150
;
		PLX			;(X) load
		LDY	#(7-1)*2
INGER_FAIL_0160 EQU	$
		LDA	>COL_ADDRESS,X
		STA	DATACOL+(01H*2),Y
		DEX
		DEX
		DEY
		DEY
		BPL	INGER_FAIL_0160
;
		PLB
;
		I8
;
;----------------------------------------------------------------
;-		ゲロゲ〜ロの胃袋ポイント復元セット		-
;----------------------------------------------------------------
INGER_FAIL_0200 EQU	$
		LDA	#BANK INGER_POINT_0
		STA	R0		;(R0) <-- ゲロゲ〜ロの胃袋元ポイントデータアドレス（Ｂ）
		LDA	<FRCNT2
		AND	#08H
		TAY
		BEQ	INGER_FAIL_0250
		LDY	#02H
INGER_FAIL_0250 EQU	$
		LDA	!INGER_POINT_IN2,Y
		STA	R14		;(R14) <-- ゲロゲ〜ロの胃袋元ポイントデータアドレス（Ｌ，Ｈ）
		M_CHIP	INGER_P_RET
		LDX	<ENINDX
;
;----------------------------------------------------------------
;-		プレイヤー脱出チェック				-
;----------------------------------------------------------------
		LDA	ENTIM0,X
		BNE	INGER_FAIL_0300 ;プレイヤー脱出サウンドセット？ ( no:INGER_FAIL_0300 )
;
;-------------- プレイヤー脱出サウンドセット --------------------
		LDA	#03BH		;[♪]
		JSL	>SOUND_3_ON
;
		INC	<ENWRK0,X
		RTS
;
;-------------- プレイヤー脱出セット ----------------------------
INGER_FAIL_0300 EQU	$
		CMP	#028H
		BNE	INGER_FAIL_0350 ;プレイヤー脱出？ ( no:INGER_FAIL_0350 )
;
TO_PLDOKN	EQU	$
		LDA	#(2+4)+8000H	;ドカン向きセット
TO_PLDOKN_2	EQU	$
		STA	DOKNMK
		LDA	#PDKN		;プレイヤードカンモードセット
		STA	PLMODE
		STZ	DOKNCT		;ドカン移動カウンターリセット
		STZ	DOKNPT		;    ”	   パターンカウンターリセット
		STZ	PLWORKTM	;	 ”	   切り替えタイマーリセット
		LDA	#01H
		STA	DOKNGP		;    ”	   重力カウンターリセット
		STZ	PLXSPD		;    ”	   Ｘスピードリセット
		STZ	PLYSPD		;    ”	   Ｙスピードリセット
		STZ	PLNAGE		;投げキャンセル
		RTS
;
INGER_FAIL_0350 EQU	$
		BCS	INGER_FAIL_0400 ;プレイヤー脱出中？ ( no:INGER_FAIL_0400 )
;
		LSR	DOKNCT
		RTS
;
INGER_FAIL_0400 EQU	$
		AND	#03FH
		BNE	INGER_FAIL_0500 ;ヤラレサウンドセット？ ( no:INGER_FAIL_0500 )
;
;-------------- ヤラレサウンドセット ----------------------------
		LDA	<RANDM0
		AND	#01H
		CLC
		ADC	#47H		;[♪]
		JSL	>SOUND_3_ON
;
INGER_FAIL_0500 EQU	$
		RTS
;
;------------------------------------------------------------------------
;-		ヤラレウェイト処理					-
;------------------------------------------------------------------------
INGER_WAIT	EQU	$
		TYX
		RTS
;
;------------------------------------------------------------------------
;-		ゲロゲ〜ロの胃袋ＢＧ３セット				-
;------------------------------------------------------------------------
INGER_WAV_W	EQU	$
		WORD	0004H,006H
;
INGER_BG3SET	EQU	$
;
;-------------- ＢスプラインＢＧ３セット --------------------------------
		LDA	ENDSXL,X
		STA	CREG0		;(REG0) <-- 表示Ｘ座標
		LDA	ENDSYL,X
		STA	CREG1		;(REG1) <-- 表示Ｙ座標
		M_CHIP	BG3_BSPLINE_SET
		LDX	<ENINDX
;
;-------------- 胃壁ラスターＢＧ３セット --------------------------------
		LDA	#HDMABF2
		STA	R5		;(R5)	<-- Ｈ−ＤＭＡバッファポインター
		LDA	<FRCNT2
		LDY	ENTIM0,X
		BEQ	INGER_BG3SET_00
		ASL	A
		ASL	A
		ASL	A
		LDY	#02H
INGER_BG3SET_00 EQU	$
		STA	R1		;(CWK0) <-- ヨコ周期のスタート
		STA	R7		;(CWK4) <-- タテ周期のスタート
		LDA	!INGER_WAV_W,Y
		STA	R8		;(CWK5) <-- タテ振幅幅
		ASL	A
		ASL	A
		STA	R2		;(CWK1) <-- ヨコ振幅幅
		LDA	#04H
		STA	R3		;(CWK2) <-- ヨコ周期のステップ
		STA	R9		;(CWK6) <-- タテ周期のステップ
		LDA	SCCH3
		STA	R10		;(CWK3) <-- ＢＧ３Ｈスクロール
		LDA	<FRCNT2
		EOR	#0FFFFH
		LSR	A
		LSR	A
		LSR	A
		CLC
		ADC	SCCV1
		STA	R11		;(CWK7) <-- ＢＧ３Ｖスクロール
		M_CHIP	PIKUPIKU
;
		JSL	>M_DMA_BFST
		LWORD	HDMABUF		    ;転送先アドレス
		LWORD	HDMABF		    ;転送元アドレス
;;;;		    WORD    (0B2H*2*2)+(0B2H*4) ;転送バイト数
		WORD	(0D2H*2*2)+(0D2H*4) ;転送バイト数
;
;-------------- 敵ＢＧ３チェック ----------------------------------------
		M_CHIP	XBG3ECROS
;
;-------------- ＰＰＵレジスタセット ------------------------------------
		LDA	#10011000B
		TSB	HD420C		;H-DMA "ON" !!
;
		LDX	<ENINDX
;
;-------------- ＯＡＭセット --------------------------------------------
		JSL	>TROBJ_OAM_4x4
;
		I16
;
		LDY	ENOAML,X	;(Y) <-- ＯＡＭポインター
		LDA	>BG3_POLYGON_DT+(57*4)
		SEC
		SBC	#05H
		STA	<EWORK0
		CLC
		ADC	SOAM_DX+(4*8),Y	  ;のどちんこ根元ＯＡＭＸ座標補正
		STA	SOAM_DX+(4*8),Y
		LDA	>BG3_POLYGON_DT+(57*4)+2
		STA	<EWORK2
		CLC
		ADC	SOAM_DX+(4*8)+2,Y ;のどちんこ根元ＯＡＭＹ座標補正
		STA	SOAM_DX+(4*8)+2,Y
		LDA	SOAM_DX+(5*8),Y	  ;のどちんこ根元ＯＡＭＸ座標補正
		CLC
		ADC	<EWORK0
		STA	SOAM_DX+(5*8),Y
		LDA	SOAM_DX+(5*8)+2,Y ;のどちんこ根元ＯＡＭＹ座標補正
		CLC
		ADC	<EWORK2
		STA	SOAM_DX+(5*8)+2,Y
;
		LDX	<ENINDX
		LDA	<ENWRK2+1,X
		AND	#00FFH
		ASL	A
		TAX
		LDA	>SIN,X
		ASL	A
		ASL	A
		ASL	A
		ASL	A
		AND	#0FF00H
		BPL	INGER_BG3SET_10
		ORA	#00FFH
INGER_BG3SET_10 EQU	$
		XBA
		EOR	#0FFFFH
		SEC			;[ INC A ]
		ADC	<EWORK0
		STA	<EWORK0
		LDA	>COS,X
		ASL	A
		ASL	A
		ASL	A
		ASL	A
		AND	#0FF00H
		BPL	INGER_BG3SET_20
		ORA	#00FFH
INGER_BG3SET_20 EQU	$
		XBA
		CLC
		ADC	<EWORK2
		STA	<EWORK2
;
		LDX	#4		;(X) <-- ＯＡＭ数
INGER_BG3SET_30 EQU	$
		LDA	SOAM_DX,Y	;ＯＡＭＸ座標補正
		CLC
		ADC	<EWORK0
		STA	SOAM_DX,Y
		LDA	SOAM_DX+2,Y	;ＯＡＭＹ座標補正
		CLC
		ADC	<EWORK2
		STA	SOAM_DX+2,Y
		TYA
		CLC
		ADC	#08
		TAY
		DEX
		BNE	INGER_BG3SET_30
;
		I8
;
		LDX	<ENINDX
;
;-------------- のどちんこ衝突チェック中心位置データセット --------------
		LDA	<EWORK0
		CLC
		ADC	#08H
		STA	ECNTXW,X
		LDA	<EWORK2
		CLC
		ADC	#04H
		STA	ECNTYW,X
;
;-------------- キャラクターセット --------------------------------------
		LDA	<ENWRK2,X
		CMP	ENWRK6,X
		BEQ	INGER_BG3SET_50 ;キャラクターセット？ ( no:INGER_BG3SET_50 )
;
		STA	ENWRK6,X
		LDY	#00H
		AND	#0FF00H
		BMI	INGER_BG3SET_40
		EOR	#0FF00H
		LDY	#02H
INGER_BG3SET_40 EQU	$
		XBA
		STA	R5		;(R5) <-- 回転角度
		TYA
		STA	ENMUKI,X	;向きセット
		LDA	#0100H
		STA	R6		;(R6)  <-- 倍率
		LDY	ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_X,X
		STA	R3		;(R3)  <-- ビットマップ座標＿Ｘ
		LDA	>TROBJ_PLOT_Y,X
		STA	R2		;(R2)  <--	  ”	   ＿Ｘ
		LDA	#CIPCHD4+0040H+1
		STA	R12		;(R12) <-- キャラクターアドレス（Ｌ，Ｈ）
		LDA	#BANK CIPCHD4
		STA	R13		;(R13) <--	   ”		(Ｂ）
		M_CHIP	C_32_ROTZOM
;
		INC	OBM7WF		;mode 7 OBJ chara DMA "ON"
;
		LDX	<ENINDX
;
INGER_BG3SET_50 EQU	$
		RTS
;
;************************************************************************
;*		initial ( ビッグヘイホー )				*
;************************************************************************
BHEIR_IN_XSP	EQU	$
		WORD	0FFA0H,0060H
;
BHEIRIN		EQU	$
BHEIGIN		EQU	$
		LDA	ENWRKC,X
		BNE	BHEIRIN_0050	;初期セット？ ( no:BHEIRIN_0050 )
;
		LDA	ENMOD0,X	;ＯＢＪ衝突”ＯＦＦ”
		AND	#1111100111111111B
		STA	ENMOD0,X
		LDA	ENMOD1,X	;ＢＧチェック”ＯＦＦ”
		AND	#1111111111100000B
		STA	ENMOD1,X
		LDA	#0100H		;ＭＡＸＹスピード減少
		STA	ENGMAX,X
;
BHEIRIN_0050	EQU	$
		LDA	<RANDM0		 ;向きセット
		AND	#02H
		STA	ENMUKI,X
		TAY
		LDA	!BHEIR_IN_XSP,Y ;ＭＡＸＸスピードセット
		STA	ENXMAX,X
		RTL
;
;************************************************************************
;*		move	( ビッグヘイホー )				*
;************************************************************************
BHEIR_PT	EQU	$
		HEX	0,1,2,3,4,3,2
;
BHEIRMV		EQU	$
BHEIGMV		EQU	$
		LDA	ENMODE,X
		CMP	#EEATM
		BNE	BHEIRMV_FFFF	;食べられた？ ( no:BHEIRMV_FFFF )
;
;;;;		    LDA	    #01H
		STA	ENWRKC,X	;落下モードへ
		LDA	#0400H
		STA	ENGMAX,X
		LDA	ENMOD0,X	;ＯＢＪ衝突”ＯＮ”
		ORA	#0000011000000000B
		STA	ENMOD0,X
		LDA	ENMOD1,X	;ＢＧチェック”ＯＮ”
		ORA	#017H
		STA	ENMOD1,X
;
;------------------------------------------------------------------------
;-		モードチェック						-
;------------------------------------------------------------------------
BHEIRMV_FFFF	EQU	$
		JSL	>ENMDCK
;
;------------------------------------------------------------------------
;-		ビッグヘイホー処理					-
;------------------------------------------------------------------------
		LDA	ENWRKC,X
		BNE	BHEIRMV_0000	;出現モード？ ( no:BHEIRMV_0000 )
;
;-------------- 出現モード ----------------------------------------------
		INC	<ENWRK2,X
		LDA	<ENWRK2,X
		CMP	#028H
		BCC	BHEIRMV_0100	;出現モード終了？ ( no:BHEIRMV_0100 )
;
;-------------- 落下モードへ ------------------------------------
		INC	ENWRKC,X
		LDA	#0300H
		STA	ENGMAX,X
		LDA	ENMOD1,X	;ＢＧチェック”ＯＮ”
		ORA	#00010111B
		STA	ENMOD1,X
;
;-------------- 出現モード ----------------------------------------------
BHEIRMV_0000	EQU	$
		LDA	ENCBFG,X
		AND	#00001B
		BEQ	BHEIRMV_0050	;着地？ ( no:BHEIRMV_0050 )
;
		LDA	#0400H
		STA	ENGMAX,X
		LDA	ENMOD0,X	;ＯＢＪ衝突”ＯＮ”
		ORA	#0000011000000000B
		STA	ENMOD0,X
;
		LDA	ENXSPD,X
		ASL	A
		ADC	ENXSPD,X
		BPL	BHEIRMV_0010
		EOR	#0FFFFH
		INC	A
BHEIRMV_0010	EQU	$
		LSR	A
		LSR	A
		ADC	<ENCONT,X	;歩きパターンセット
		CMP	#7*100H
		BCC	BHEIRMV_0020
;;;;		    SEC
		SBC	#7*100H
BHEIRMV_0020	EQU	$
		STA	<ENCONT,X
		XBA
		TAY
		LDA	!BHEIR_PT,Y
		AND	#00FFH
		STA	ENCHPT,X
;
		LDA	#020H
BHEIRMV_0050	EQU	$
		STA	ENXPOW,X	;Ｘスピード加速値セット
;
;------------------------------------------------------------------------
;-		プレイヤーとの衝突チェック				-
;------------------------------------------------------------------------
		LDA	ENGMAX,X
		CMP	#0400H
		BNE	BHEIRMV_0100	;衝突チェックＯＫ？ ( no:BHEIRMV_0100 )
;
		JSL	>EPCRCK
;
BHEIRMV_0100	EQU	$
		RTL
;
;************************************************************************
;*		initial ( ビッグプチプチ )				*
;************************************************************************
BPUCHIN		EQU	$
		RTL
;
;************************************************************************
;*		move	( ビッグプチプチ )				*
;************************************************************************
BPUCHMV		EQU	$
		RTL
;
;
;
;
;************************************************************************
;*		initial ( ゲロゲーロの胃袋の胃液 )			*
;************************************************************************
IEKI0IN		EQU	$
		RTL
;
;************************************************************************
;*		move	( ゲロゲーロの胃袋の胃液 )			*
;************************************************************************
IEKI0MV		EQU	$
;
;------------------------------------------------------------------------
;-		モードチェック						-
;------------------------------------------------------------------------
		JSL	>ENMDCK
;
;------------------------------------------------------------------------
;-		ゲロゲーロの胃袋の胃液処理				-
;------------------------------------------------------------------------
		LDA	ENGMAX,X
		BEQ	IEKI0MV_0050	;落下モード？ ( no:IEKI0MV_0050 )
		JMP	IEKI0MV_0200
;
;----------------------------------------------------------------
;-		胃液たれモード					-
;----------------------------------------------------------------
IEKI0MV_0050	EQU	$
		TXY
		JSR	IEKI0_POSSET	;ゲロゲーロの胃袋の胃液座標セット
;
		LDA	<EWORK0
		SEC
		SBC	ENXPSL,X
		CLC
		ADC	#08H
		CMP	#08H*2+1
		BCS	IEKI0MV_0100	;強制落下？ ( yes:IEKI0MV_0100 )
;
		LDA	<EWORK2
		SEC
		SBC	ENYPSL,X
		CLC
		ADC	#08H
		CMP	#08H*2+1
		BCS	IEKI0MV_0100	;強制落下？ ( yes:IEKI0MV_00100 )
;
		LDA	<EWORK2
		STA	ENYPSL,X	;Ｙ座標セット
		LDA	<EWORK0
		STA	ENXPSL,X	;Ｘ座標セット
		LDA	#06H
		STA	ENYUSN,X	;表示”ＯＮ”
;
		INC	<ENWRK4,X
		LDA	<ENWRK4,X
		CMP	#08H*2
		BCC	IEKI0MV_0150	;胃液たれモード終了？ ( no:IEKI0MV_0150 )
;
;--------------------------------------------------------
;-		落下初期セット				-
;--------------------------------------------------------
IEKI0MV_0100	EQU	$
		LDA	#0100H		;落下モードへ
		STA	ENYSPD,X
		STA	ENGMAX,X
		LDA	ENMOD1,X	;ＢＧチェック”ＯＮ”
		ORA	#01H
		STA	ENMOD1,X
		INC	ENCHPT,X	;落下パターンＮｏ．セット
;
IEKI0MV_0150	EQU	$
		RTL
;
;----------------------------------------------------------------
;-		落下モード					-
;----------------------------------------------------------------
IEKI0MV_0200	EQU	$
		LDY	ECRSFG,X
		BEQ	IEKI0MV_0500	;プレイヤーか敵と当たり？ ( no:IEKI0MV_0500 )
;
;-------------- プレイヤーと当たり ------------------------------
		JSL	>PLFLST
		BRA	IEKI0_CLEAR
;
IEKI0MV_0500	EQU	$
		LDA	ENCBFG,X
		LSR	A		;[ AND #0001B ]
		BCC	IEKI0MV_0550	;着地？ ( no:IEKI0MV_0550 )
;
;-------------- 消滅 --------------------------------------------
IEKI0_CLEAR	EQU	$
		LDA	#45H		;[♪]
		JSL	>SOUND_3_ON
;
		LDA	#IKSMK		;(A) <-- 効果Ｎｏ．
		JSL	>EXINSR		;効果エリア確保
		LDA	ENXPSL,X	;Ｘ座標セット
		STA	EXXPSL,Y
		LDA	ENYPSL,X	;Ｙ座標セット
		STA	EXYPSL,Y
		LDA	#07H		;初期パターンＮｏ．セット
		STA	EXCHPT,Y
		LDA	#02H		;初期タイマーセット
		STA	EXTIM0,Y
;
		JMP	>ENCLEAR
;
IEKI0MV_0550	EQU	$
		RTL
;
;------------------------------------------------------------------------
;-		ゲロゲーロの胃袋の胃液座標セット			-
;------------------------------------------------------------------------
IEKI0_POSSET	EQU	$
;
		I16
;
		LDX	<ENWRK2,Y
		LDA	>BG3_POLYGON_DT,X
		SEC
		SBC	#08H
		LDX	<ENWRK0,Y
		CLC
		ADC	ENXPSL,X
		STA	<EWORK0
		LDA	ENWRK4,Y
		LSR	A
		LDX	<ENWRK2,Y
		CLC
		ADC	>BG3_POLYGON_DT+2,X
		SEC
		SBC	#0CH
		LDX	<ENWRK0,Y
		CLC
		ADC	ENYPSL,X
		STA	<EWORK2
;
		I8
;
		LDX	<ENINDX
		RTS
;
;************************************************************************
;*		initial ( ボスケメクジ )				*
;************************************************************************
BKMKJ_POINT_0	EQU	$
		HEX	98,38
		HEX	98,38	;[0] line
		HEX	A3,28	;[1]   "
		HEX	A7,18	;[2]   "
		HEX	AA,08	;[3]   "
		HEX	AC,F8	;[4]   "
		HEX	AD,E8	;[5]   "
		HEX	B0,D8	;[6]   "
		HEX	B2,C8	;[7]   "
		HEX	B8,B8	;[8]   "
		HEX	C8,A0
		HEX	E6,95
		HEX	1C,A4
		HEX	40,0C
		HEX	70,38
		HEX	70,38
BKMKJ_POINT_E	EQU	$
;
BKMKJ_POINT_1	EQU	$
		HEX	00,38
		HEX	F8,38
;
		HEX	98,38
		HEX	98,38
		HEX	A3,28
		HEX	A9,18
		HEX	B0,D8
		HEX	B2,C8
		HEX	B8,B8
		HEX	C8,A0
		HEX	E6,95
		HEX	1C,A4
		HEX	40,0C
		HEX	70,38
		HEX	70,38
;
		HEX	08,38
;
BKMKJIN		EQU	$
		JSL	>TROBJ_SR_8x8_CL
;
;-------------- ＯＢＪカラーセット --------------------------------------
		LDY	#Kmkj
		JSL	>KAMC2COLRESET_L
;
;------------------------------------------------------------------------
;-		ボスケメクジＢＧ２ポイントセット			-
;------------------------------------------------------------------------
		LDA	#(BKMKJ_POINT_E-BKMKJ_POINT_0)/2
		STA	>BSPL_B_POINT
		DEC	A
		ASL	A		;x2
		TAX
BKMKJIN_0050	EQU	$
		LDA	!BKMKJ_POINT_0,X
		STA	>BSPL_B_POINT+1,X
		DEX
		DEX
		BPL	BKMKJIN_0050
;
;------------------------------------------------------------------------
;-		ボスケメクジＢＧ２カラーセット				-
;------------------------------------------------------------------------
		LDX	#(15+16-1)*2
BKMKJIN_0100	EQU	$
		LDA	>COL_ADDRESS+BG2_BKMKJ,X
		STA	>MOTOCOL+(61H*2),X
		STA	>DATACOL+(61H*2),X
		DEX
		DEX
		BPL	BKMKJIN_0100
;
		LDX	<ENINDX
;
;------------------------------------------------------------------------
;-		ＲＡＭ初期セット					-
;------------------------------------------------------------------------
		STZ	ECNTXW,X	;衝突チェック中心までのＸ距離初期セット
		STZ	ECNTYW,X	;	   ”	       Ｙ      ”
		LDA	#0BH		;パターンＮｏ．初期セット
		STA	ENCHPT,X
		RTL
;
;************************************************************************
;*		move	( ボスケメクジ )				*
;*			(ENWRK0) : モードＮｏ．				*
;*			(ENWRK2) : 本体倍率				*
;*			(ENWRK4) : 歩き倍率				*
;*			(ENWRK6) : キャラクターセットチェックフラグ	*
;*			(ENWRK8) : ダメージ量				*
;*			(ENWRKA) : 移動倍率向き				*
;*			(ENWRKC) : 基準Ｙ座標セット			*
;************************************************************************
BKMKJ_HEKOMI	EQU	$
; ENWRK8 -->		 [0]   [1]   [2]   [3]
;;;;		    WORD    -0A0H,-0A8H,-0B0H,-0B8H
		WORD	-0A0H,-0A4H,-0A8H,-0ACH
;
BKMKJ_YSP_DEC	EQU	$
		WORD	0FF00H,00100H
;
BKMKJMV		EQU	$
;
;------------------------------------------------------------------------
;-		ＢＧ３セット＆ＯＡＭセット				-
;------------------------------------------------------------------------
		JSR	BKMKJ_BG3SET	;ボスケメクジＢＧ３セット
;
;------------------------------------------------------------------------
;-		モードチェック						-
;------------------------------------------------------------------------
		JSL	>ENMDCK
;
;------------------------------------------------------------------------
;-		ボスケメクジ処理					-
;------------------------------------------------------------------------
		TXY
		LDA	<ENWRK0,X
		ASL	A
		TAX
		JSR	(!BKMKJ_TBL,X)
;
;------------------------------------------------------------------------
;-		ＢＧ３との衝突チェック					-
;------------------------------------------------------------------------
		TXA
		STA	CCWORK9		;(CWK9) <-- 敵インデックス
		LDA	PLDSXL
		STA	CCWORKA		;(CWKA) <-- プレイヤー表示Ｘ座標
		LDA	PLDSYL
		STA	CCWORKB		;(CWKB) <-- プレイヤー表示Ｙ座標
		LDA	PLSITD
		STA	CCWORKC		;(CWKC) <-- プレイヤーお座りフラグ
		M_CHIP	BG3_CROSS_CK
		LDX	<ENINDX
;
		LDA	CCWORKD
		BEQ	BKMKJMV_0100	;プレイヤー当たり？ ( no:BKMKJMV_0100 )
;
		DEC	PLXPSL		;プレイヤーＸ座標補正
		LDA	EGOPSP		;オプション付いてくる様に
		CLC
		ADC	#0100H
		STA	EGOPSP
		LDA	PLMVSP
		BMI	BKMKJMV_0100	;プレイヤーＸスピードクリアー？ ( no:BKMKJMV_0100 )
;
		STZ	PLMVSP
;
BKMKJMV_0100	EQU	$
		LDA	CCWORKA
		BEQ	BKMKJMV_0200	;赤ちゃん当たり？ ( no:BKMKJMV_0200 )
;
		LDA	ENXSPD
		CLC
		ADC	#0FF80H
		CMP	#0FF00H
		BPL	BKMKJMV_0150	;max speed over ? ( no:BKMKJMV_0150 )
;
		LDA	#0FF00H
BKMKJMV_0150	EQU	$
		STA	ENXSPD
;
BKMKJMV_0200	EQU	$
		LDA	<ENWRK0,X
		CMP	#BKMKJ_FAIL_N
		BCS	BKMKJMV_0210	;ヤラレタ？ ( yes:BKMKJMV_0210 )
		LDY	ECRSFG,X
		DEY
		BMI	BKMKJMV_0210	;敵当たり？ ( no:BKMKJMV_0210 )
		LDA	ENMODE,Y
		CMP	#EMOVE
		BNE	BKMKJMV_0210	;健在？ ( no:BKMKJMV_0210 )
		LDA	ENSHOT,Y
		BNE	BKMKJMV_0250	;ショット？ ( yes:BKMKJMV_0250 )
BKMKJMV_0210	EQU	$
		JMP	BKMKJMV_0600
;
;-------------- 敵当たり！！ --------------------------------------------
BKMKJMV_0250	EQU	$
		LDA	ENWRK8,X
		ASL	A
		TAX
		LDA	!BKMKJ_HEKOMI,X
		LDX	<ENINDX
		CLC
		ADC	ENXPSL,X	;Ｘスピード減速
		SEC
		SBC	ECENTX,Y
		ASL	A
		CLC
		ADC	ENXSPD,Y
		STA	ENXSPD,Y
		BPL	BKMKJMV_0260	;減速終了？ ( no:BKMKJMV_0260 )
;
		LDA	#040H		;パワーショット解除！！
		STA	ENGPOW,Y
BKMKJMV_0260	EQU	$
		LDX	#00H		;Ｙスピード減速
		LDA	ENYSPD,Y
		BEQ	BKMKJMV_0280
		BPL	BKMKJMV_0270
		LDX	#02H
BKMKJMV_0270	EQU	$
		CLC
		ADC	!BKMKJ_YSP_DEC,X
		STA	ENYSPD,Y
		EOR	!BKMKJ_YSP_DEC,X
		BMI	BKMKJMV_0280
		LDA	#00
		STA	ENYSPD,Y
;
BKMKJMV_0280	EQU	$
		LDX	<ENINDX
		LDA	ECENTX,Y
		SEC
		SBC	ENXPSL,X
		CLC
		ADC	#04H
		STA	<EWORK0		;(EWK0,1) <-- 当たりＸ幅
		LDA	>BSPL_B_POINT+4
		AND	#00FFH
		CLC
		ADC	ENYPSL,X
		SEC
		SBC	ECENTY,Y
		BPL	BKMKJMV_0300
		LDA	#00
BKMKJMV_0300	EQU	$
		TAY			;(Y) <-- 当たりＹ幅
		AND	#00F0H
		LSR	A
		LSR	A
		LSR	A
		TAX
		BEQ	BKMKJMV_0400	;一番下？ ( yes:BKMKJMV_0400 )
;
		PHX			;(X) save
;
		TYA
		AND	#0FH
		ASL	A
		EOR	#0FFFFH
		SEC			;[ INC A ]
		ADC	<EWORK0
		STA	<EWORK2
BKMKJMV_0310	EQU	$
		LDA	>BSPL_B_POINT+3-1,X
		AND	#0FF00H
		BPL	BKMKJMV_0350
		ORA	#00FFH
BKMKJMV_0350	EQU	$
		XBA
		CMP	<EWORK2
		BPL	BKMKJMV_0360	;へこませる？ ( no:BKMKJMV_0360 )
;
		M8
;
		LDA	<EWORK2
		STA	>BSPL_B_POINT+3,X
;
		M16
;
BKMKJMV_0360	EQU	$
		LDA	<EWORK2
		SEC
		SBC	#020H
		STA	<EWORK2
		DEX
		DEX
		BNE	BKMKJMV_0310
;
		PLX			;(X) load
;
BKMKJMV_0400	EQU	$
		INX			;上のポイントへ
		INX			;
		TYA
		EOR	#0FH
		INC	A
		AND	#0FH
		ASL	A
		EOR	#0FFFFH
		SEC			;[ INC A ]
		ADC	<EWORK0
		STA	<EWORK2
BKMKJMV_0410	EQU	$
		LDA	>BSPL_B_POINT+3-1,X
		AND	#0FF00H
		BPL	BKMKJMV_0450
		ORA	#00FFH
BKMKJMV_0450	EQU	$
		XBA
		CMP	<EWORK2
		BPL	BKMKJMV_0500	;へこませる？ ( no:BKMKJMV_0500 )
;
		M8
;
		LDA	<EWORK2
		STA	>BSPL_B_POINT+3,X
;
		M16
;
BKMKJMV_0500	EQU	$
		LDA	<EWORK2
		SEC
		SBC	#020H
		STA	<EWORK2
		INX
		INX
		CPX	#(8+1)*2
		BCC	BKMKJMV_0410
;
		LDX	<ENINDX
;
BKMKJMV_0600	EQU	$
		RTL
;
;------------------------------------------------------------------------
;-		ボスケメクジ処理テーブル				-
;------------------------------------------------------------------------
BKMKJ_TBL	EQU	$
		WORD	BKMKJ_INIT	;初期デモ
		WORD	BKMKJ_DEMO	;スタートデモ
		WORD	BKMKJ_MOVE	;通常処理
BKMKJ_FAIL_NO	WORD	BKMKJ_FAIL	;ヤラレ処理
		WORD	BKMKJ_DORO	;ドロ〜モード
;;;;BKMKJ_NO_DISP   WORD    BKMKJ_WAIT	    ;ヤラレウェイト処理
;
BKMKJ_FAIL_N	EQU	(BKMKJ_FAIL_NO-BKMKJ_TBL)/2
;;;;BKMKJ_NODISP    EQU	    (BKMKJ_NO_DISP-BKMKJ_TBL)/2
;
;------------------------------------------------------------------------
;-		初期デモ						-
;------------------------------------------------------------------------
BKMKJ_INIT_WKPT EQU	$
		HEX	0B,0C,0D,0C
BKMKJ_INIT_JEPT EQU	$
		HEX	0D,0C,0B,0C,0D
BKMKJ_INIT_JETM EQU	$
		HEX	20,04,04,01,01
;
BKMKJ_INIT	EQU	$
		TYX
;
		LDA	ENMOD1,X
		AND	#0000000000011111B
		BNE	BKMKJ_INIT_0100 ;落下した？ ( yes:BKMKJ_INIT_0100 )
;
		LDA	PLMODE
		CMP	#PDEM
		BEQ	BKMKJ_INIT_0010 ;カメックデモスタート？ ( yes:BKMKJ_INIT_0010 )
		LDA	EPWIDX,X
		CMP	#070H
		BPL	BKMKJ_INIT_0000 ;カメックセット？ ( no:BKMKJ_INIT_0000 )
;
;-------------- カメックセット ------------------------------------------
		LDA	#0F1H		;[♪]
		STA	SOUND_0
;
		LDA	#080H		;ボスＢＧＭセットウェイトタイマーセット
		STA	ENTIM0,X
;
		LDA	#KAMC2		;(A) <-- 効果Ｎｏ．
		JSL	>ENINSR_I	;敵エリア確保
		BCC	BKMKJ_INIT_0000 ;     ”     ？ ( no:BKMKJ_INIT_0000 )
;
		LDA	ENXPSL,X	;Ｘ座標セット
		STA	ENXPSL,Y
		LDA	ENYPSL,X	;Ｙ座標セット
		STA	ENYPSL,Y
;
BKMKJ_INIT_0000 EQU	$
		LDA	<FRCNT2
		AND	#03H*8
		LSR	A
		LSR	A
		LSR	A
		TAY
		LDA	!BKMKJ_INIT_WKPT,Y
		AND	#00FFH
		STA	ENCHPT,X
		PLA			;[ pull pull return !! ]
		RTL
;
BKMKJ_INIT_0010 EQU	$
		LDA	ENTIM0,X
		BEQ	BKMKJ_INIT_0020 ;ウェイト？ ( no:BKMKJ_INIT_0020 )
		LSR	A
		BNE	BKMKJ_INIT_0000 ;サウンドセット？ ( yes:BKMKJ_INIT_0000 )
;
		LDA	#09H		;[♪]
		STA	SOUND_0
;
BKMKJ_INIT_0020 EQU	$
		LDA	<FRCNT2
		AND	#03H
		BNE	BKMKJ_INIT_0050 ;パターン切り替え？ ( no:BKMKJ_INIT_0050 )
;
		INC	ENCHPT,X
		LDA	ENCHPT,X
		CMP	#010H
		BCC	BKMKJ_INIT_0050 ;落下スピードセット？ ( no:BKMKJ_INIT_0050 )
;
		LDA	ENMOD1,X	;ＢＧチェック”ＯＮ”
		ORA	#01H
		STA	ENMOD1,X
		LDA	#040H		;重力セット
		STA	ENGPOW,X
BKMKJ_INIT_0050 EQU	$
		PLA			;[ pull pull return !! ]
		RTL
;
BKMKJ_INIT_0100 EQU	$
		LDA	ENCBFG,X
		LSR	A		;[ AND #00001B ]
		BCC	BKMKJ_INIT_0050 ;着地？ ( no:BKMKJ_INIT_0050 )
;
		LDA	ENGPOW,X
		BEQ	BKMKJ_INIT_0250 ;着地初期セット？ ( no:BKMKJ_INIT_0250 )
;
		LDA	#060H
		JSL	>SOUND_3_ON	;[♪]
;
		STZ	ENGPOW,X	;重力リセット
		LDA	ENCLOR,X	;Ｖスリップセット
		ORA	#80H
		STA	ENCLOR,X
		LDA	#BKMKJ_INIT_JETM-BKMKJ_INIT_JEPT ;着地パターンカウンターセット
		STA	<ENWRK2,X
		STZ	ENTIM0,X
;
BKMKJ_INIT_0250 EQU	$
		LDA	ENTIM0,X
		BNE	BKMKJ_INIT_0300 ;パターン切り替え？ ( no:BKMKJ_INIT_0300 )
;
		LDA	<ENWRK2,X
		BNE	BKMKJ_INIT_0260 ;着地パターン終了？ ( no:BKMKJ_INIT_0260 )
;
		LDA	BOSS_START
		BNE	BKMKJ_INIT_0252 ;カメックスタート？ ( no:BKMKJ_INIT_0252 )
;
		INC	BOSS_START
BKMKJ_INIT_0252 EQU	$
		BPL	BKMKJ_INIT_0300 ;デモスタート？ ( no:BKMKJ_INIT_0300 )
;
;-------------- スタートデモへ ------------------------------------------
		STZ	BOSS_START	;カメック消去！！
;
		LDA	#087H		;[♪]
		JSL	>SOUND_3_ON
;
		INC	<ENWRK0,X
		STZ	ENCHPT,X
		LDA	ENYPSL,X	;基準Ｙ座標セット
		CLC
		ADC	#0FH
		STA	ENWRKC,X
		LDA	#0FE80H		;ＭＡＸＸスピードセット
		STA	ENXMAX,X
		LDA	ENCLOR,X	;カラー＆フリップリセット
		AND	#0FF3FH
		STA	ENCLOR,X
		LDA	ENMOD1,X	;ＢＧチェック”ＯＦＦ”
		AND	#1111111111100000B
		STA	ENMOD1,X
		LDA	ENMOD2,X	;ＯＢＪ使用数＋２８
		CLC
		ADC	#(31-3)<<11
		STA	ENMOD2,X
		STZ	ENYSPD,X	;Ｙスピードクリアー
;
		M8
;
		STZ	ENCHRB,X	;キャラクターバンクリセット
;
		M16
;
		LDA	#0018H		;本体倍率初期セット
		STA	<ENWRK2,X
		JSR	BKMKJ_P_ZOOM_ST
		LDA	ENXPSL,X	;Ｘ座標補正
		CLC
		ADC	#0AH
		STA	ENXPSL,X
		PLA			;[ pull pull return !! ]
		RTL
;
BKMKJ_INIT_0260 EQU	$
		DEC	<ENWRK2,X
		LDY	<ENWRK2,X
		LDA	!BKMKJ_INIT_JEPT,Y
		AND	#00FFH
		STA	ENCHPT,X	;パターンＮｏ．セット
		LDA	!BKMKJ_INIT_JETM,Y
		AND	#00FFH
		STA	ENTIM0,X	;パターン切り替えタイマーセット
BKMKJ_INIT_0300 EQU	$
		PLA			;[ pull pull return !! ]
		RTL
;
;------------------------------------------------------------------------
;-		スタートデモ						-
;------------------------------------------------------------------------
BKMKJ_WALK_TM	EQU	$
; ENWRK8 -->		[0] [1] [2] [3]
		HEX	080,064,048,02C
;
BKMKJ_DEMO	EQU	$
		TYX
;
		LDA	<ENWRK2,X
		CMP	#0100H
		BCS	BKMKJ_DEMO_0200 ;ＭＡＸ倍率？ ( yes:BKMKJ_DEMO_0200 )
;
;;;;		    CLC
		ADC	#01H
		CMP	#0100H
		BCC	BKMKJ_DEMO_0050 ;ＭＡＸ倍率オーバー？ ( no:BKMKJ_DEMO_0050 )
;
		LDA	#0100H
BKMKJ_DEMO_0050 EQU	$
BKMKJ_P_ZOOM_ST EQU	$
		STA	<ENWRK2,X
		STA	R6		;(R6)  <-- 倍率
		LDA	#BANK BKMKJ_POINT_0
		STA	R0		;(R0)  <-- 元ポイントデータアドレス（Ｂ）
		LDA	#BKMKJ_POINT_0
		STA	R14		;(R14) <-- 元ポイントデータアドレス（Ｌ，Ｈ）
		M_CHIP	BKMKJ_P_ZOOM
		LDX	<ENINDX
;
		LDA	>BSPL_B_POINT+2 ;Ｙ座標補正
		AND	#00FFH
		EOR	#0FFFFH
		SEC			;[ INC A ]
		ADC	ENWRKC,X
		STA	ENYPSL,X
		RTS
;
;-------------- 通常処理へ ----------------------------------------------
BKMKJ_DEMO_0200 EQU	$
		INC	<ENWRK0,X
		STZ	PLMODE
;;;;		    LDA	    #0C0H	    ;ケメクジの玉発射ウェイトタイマーセット
;;;;		    STA	    ENTIM3,X
;
;-------------- 歩き初期セット ------------------------------------------
BKMKJ_WALK_INIT EQU	$
		STZ	<ENWRK4,X	;歩き倍率初期セット
		STZ	ENXPOW,X	;移動スピードリセット
		STZ	ENXSPD,X
		LDY	ENWRK8,X
		LDA	!BKMKJ_WALK_TM,Y ;歩きウェイトタイマーセット
		AND	#00FFH
		STA	ENTIM0,X
		LDX	#(16-1)*2	;ポイント移動合計バッファクリアー
		LDA	#00
BKMKJ_DEMO_0250 EQU	$
		STA	>BSPL_MV_BUFF,X
		DEX
		DEX
		BPL	BKMKJ_DEMO_0250
		LDX	<ENINDX
		RTS
;
;------------------------------------------------------------------------
;-		通常処理						-
;------------------------------------------------------------------------
BKMKJ_WALK_XP	EQU	$
		WORD	00020H,00000H
BKMKJ_WALK_AD	EQU	$
		WORD	00004H,0FFFEH
BKMKJ_WALK_CP	EQU	$
		WORD	00040H,00000H
;
BKMKJ_HART_SP	EQU	$
; ENWRK8 -->		      [0]	[1]	  [2]	    [3]
		WORD	     006H,     00AH,	 00EH,	   012H
BKMKJ_HART_WT	EQU	$
		WORD	     200H,     1C0H,	 180H,	   140H
BKMKJ_HART_MX	EQU	$
		WORD	     0C0H,     0D0H,	 0E0H,	   0F0H ;+--+
BKMKJ_HART_HF	EQU	$					;   |
		WORD	     060H,     068H,	 070H,	   078H ;   |
BKMKJ_HART_AD	EQU	$					;   |
		WORD	100H-0C0H,100H-0D0H,100H-0E0H,100H-0F0H ;<--+ [100H-MX]
;
BKMKJ_MOVE	EQU	$
		TYX
;
;----------------------------------------------------------------
;-		歩きチェック					-
;----------------------------------------------------------------
		LDA	ENTIM0,X
		BEQ	BKMKJ_MOVE_0000 ;歩く？ ( yes:BKMKJ_MOVE_0000 )
		LSR	A
		BNE	BKMKJ_MOVE_0200 ;歩きサウンドセット？ ( no:BKMKJ_MOVE_0200 )
;
;-------------- 歩きサウンドセット ------------------------------
		LDA	#03EH		;[♪]
		JSL	>SOUND_3_ON
		BRA	BKMKJ_MOVE_0200
;
BKMKJ_MOVE_0000 EQU	$
		LDY	ENWRKA,X	;(Y) <-- 移動倍率向き
		LDA	ENXPSL,X
		CMP	#00C5H
		BMI	BKMKJ_MOVE_0002 ;端まで行った？ ( no:BKMKJ_MOVE_0002 )
;
		LDA	!BKMKJ_WALK_XP,Y ;移動スピード加速値セット
		STA	ENXPOW,X
		BNE	BKMKJ_MOVE_0010
;
BKMKJ_MOVE_0002 EQU	$
		STZ	ENXPOW,X
		STZ	ENXSPD,X
BKMKJ_MOVE_0010 EQU	$
		LDA	<ENWRK4,X
		CLC
		ADC	!BKMKJ_WALK_AD,Y
		STA	<ENWRK4,X
		STA	R6		;(R6) <-- 移動倍率
		CMP	!BKMKJ_WALK_CP,Y
		BNE	BKMKJ_MOVE_0050 ;歩き終了？ ( no:BKMKJ_MOVE_0050 )
;
		TYA
		EOR	#02H
		STA	ENWRKA,X
		BEQ	BKMKJ_MOVE_0100 ;歩き終了？ ( yes:BKMKJ_MOVE_0100 )
;
BKMKJ_MOVE_0050 EQU	$
		M_CHIP	BKMKJ_P_MOVE
		LDX	<ENINDX
		BRA	BKMKJ_MOVE_0200
;
;-------------- 歩き終了 ----------------------------------------
BKMKJ_MOVE_0100 EQU	$
		M_CHIP	BKMKJ_P_MOVE
		LDX	<ENINDX
		JSR	BKMKJ_WALK_INIT ;歩き初期セット
;
;----------------------------------------------------------------
;-		形状復元チェック				-
;----------------------------------------------------------------
BKMKJ_MOVE_0200 EQU	$
		LDA	ENTIM1,X
		BNE	BKMKJ_MOVE_0202 ;ダメージ中？ ( yes:BKMKJ_MOVE_0202 )
		LDA	<FRCNT2
		AND	#07H
		BNE	BKMKJ_MOVE_0210 ;形状復元ＯＫ？ ( no:BKMKJ_MOVE_0210 )
;
BKMKJ_MOVE_0202 EQU	$
		M_CHIP	BKMKJ_P_RET
		LDX	<ENINDX
;
;----------------------------------------------------------------
;-		心臓の”ドキドキ”キャラクターセット		-
;----------------------------------------------------------------
BKMKJ_MOVE_0210 EQU	$
		LDA	ENWRK8,X
		ASL	A
		TAY
		LDA	<ENCONT,X
		SEC
		SBC	!BKMKJ_HART_SP,Y
		BPL	BKMKJ_MOVE_0220
;
		PHY			;(Y) save
		LDA	#014H		;[♪]
		JSL	>SOUND_3_ON
		PLY			;(Y) load
;
		LDA	!BKMKJ_HART_WT,Y
BKMKJ_MOVE_0220 EQU	$
		STA	<ENCONT,X
		CMP	!BKMKJ_HART_MX,Y
		BCC	BKMKJ_MOVE_0230
;
		LDA	!BKMKJ_HART_MX,Y
BKMKJ_MOVE_0230 EQU	$
		CMP	!BKMKJ_HART_HF,Y
		BCS	BKMKJ_MOVE_0240
		LDA	!BKMKJ_HART_MX,Y
;;;;		    SEC
		SBC	<ENCONT,X
BKMKJ_MOVE_0240 EQU	$
		CLC
		ADC	!BKMKJ_HART_AD,Y ;(A) <-- 心臓の倍率
		JSR	BKMKJ_HART_CHR
;
;----------------------------------------------------------------
;-		心臓の衝突チェック				-
;----------------------------------------------------------------
BKMKJ_MOVE_0250 EQU	$
		LDA	ENTIM1,X
		BEQ	BKMKJ_MOVE_0290 ;ダメージ？ ( no:BKMKJ_MOVE_0290 )
;
;-------------- ダメージ ----------------------------------------
		CMP	#040H
		BCC	BKMKJ_MOVE_0500 ;ダメージカラーセット？ ( no:BKMKJ_MOVE_0500 )
;
		JMP	BKMKJ_COL_CHG
;
BKMKJ_MOVE_0290 EQU	$
		LDY	ECRSFG,X
		DEY
		BMI	BKMKJ_MOVE_0500 ;敵当たり？ ( no:BKMKJ_MOVE_0500 )
;
		LDA	ENDSXL,X
		CLC
		ADC	#080H
		CMP	#0180H+080H+1
		BCS	BKMKJ_MOVE_0500 ;衝突チェックＯＫ？ ( no:BKMKJ_MOVE_0500 )
 ;
		LDA	ENSHOT,Y
		BEQ	BKMKJ_MOVE_0500 ;ショット？ ( no:BKMKJ_MOVE_0500 )
;
;-------------- 敵当たり！！ ------------------------------------
		TYX			;(X) <-- 相手の敵インデックス
		JSL	>ENDEATH_SET_4
;
		LDA	#078H		;[♪]
		JSL	>SOUND_3_ON
;
		INC	ENWRK8,X
		LDA	ENWRK8,X
		CMP	#4
		BCC	BKMKJ_MOVE_0300 ;ヤラレタ？ ( no:BKMKJ_MOVE_0300 )
;
;-------------- ヤラレタ！！ ------------------------------------
		INC	<ENWRK0,X	;ヤラレ処理へ
		STZ	ENXPOW,X	;Ｘスピード加速値クリアー
		STZ	ENXSPD,X	;Ｘスピードクリアー
		LDA	#0100H		;心臓初期倍率セット
		STA	<ENWRK4,X
		LDA	#080H		;心臓破裂までのタイマーセット
		STA	ENTIM0,X
		JSL	>BOSS_EN_CHANGE
;
		LDA	>BSPL_B_POINT	;ポイントデータ復帰
		DEC	A
		ASL	A		;x2
		TAX
BKMKJ_MOVE_0292 EQU	$
		LDA	!BKMKJ_POINT_0,X
		STA	>BSPL_B_POINT_B,X
		DEX
		DEX
		BPL	BKMKJ_MOVE_0292
		LDX	<ENINDX
;
BKMKJ_MOVE_0300 EQU	$
		LDA	#040H+020H	;ダメージタイマーセット
		STA	ENTIM1,X
;
BKMKJ_MOVE_0500 EQU	$
		RTS
;
;----------------------------------------------------------------
;-		カラーチェンジセット				-
;-			in :					-
;-				(A) <-- カウンター		-
;----------------------------------------------------------------
BKMKJ_COL_CHG	EQU	$
		AND	#04H
		BEQ	BKMKJ_COLCHG_20 ;ダメージカラーセット？ ( no:BKMKJ_COLCHG_20 )
;
;-------------- ダメージカラーセット ----------------------------
		LDX	#(15+16-1)*2
		LDA	#07FFFH
BKMKJ_COLCHG_10 EQU	$
		STA	>DATACOL+(061H*2),X
		DEX
		DEX
		BPL	BKMKJ_COLCHG_10
		LDX	<ENINDX
		RTS
;
;-------------- ノーマルカラーセット ----------------------------
BKMKJ_COLCHG_20 EQU	$
		LDX	#(15+16-1)*2
BKMKJ_COLCHG_30 EQU	$
		LDA	>MOTOCOL+(061H*2),X
		STA	>DATACOL+(061H*2),X
		DEX
		DEX
		BPL	BKMKJ_COLCHG_30
		LDX	<ENINDX
		RTS
;
;------------------------------------------------------------------------
;-		ヤラレ処理						-
;------------------------------------------------------------------------
BKMKJ_FAIL	EQU	$
		TYX
;
;----------------------------------------------------------------
;-		プレイヤーＳＴＯＰチェック			-
;----------------------------------------------------------------
;
;-------------- プレイヤーＳＴＯＰ！！ --------------------------
		LDA	#01H
		STA	PLSTFG
;
		LDA	ENTIM0,X
		BEQ	BKMKJ_FAIL_0050 ;心臓縮小？ ( yes:BKMKJ_FAIL_0050 )
;
		LSR	A
		BNE	BKMKJ_FAIL_0020 ;心臓縮小サウンドセット？ ( no:BKMKJ_FAIL_0020 )
;
;-------------- 心臓縮小サウンドセット --------------------------
		LDA	#015H		;[♪]
		JSL	>SOUND_3_ON
;
BKMKJ_FAIL_0020 EQU	$
		LDA	ENTIM0,X
		JSR	BKMKJ_COL_CHG
;
;----------------------------------------------------------------
;-		形状復元					-
;----------------------------------------------------------------
		M_CHIP	BKMKJ_P_RET
		LDX	<ENINDX
		LDA	<ENWRK4,X
		JMP	BKMKJ_HART_CHR
;
;----------------------------------------------------------------
;-		心臓縮小					-
;----------------------------------------------------------------
BKMKJ_FAIL_0050 EQU	$
		LDA	<ENWRK4,X
		SEC
		SBC	#04H
		CMP	#010H
		BCS	BKMKJ_FAIL_0100 ;心臓消滅？ ( no:BKMKJ_FAIL_0100 )
;
;-------------- 心臓消滅 ----------------------------------------
		LDA	#03BH		;[♪]
		JSL	>SOUND_3_ON
;
		INC	<ENWRK0,X	;ドロ〜モードへ
		LDA	#0FFFFH		;心臓表示”ＯＦＦ”
		STA	ENWRK8,X
		LDA	ENMOD2,X	;ＯＡＭ使用数−４
		SEC
		SBC	#0010000000000000B
		STA	ENMOD2,X
		LDA	#040H		;ドロ〜までのタイマー
		STA	ENTIM0,X
;
		LDA	#SMOK0		;(A) <-- 効果Ｎｏ．
		JSL	>EXINSR		;効果エリア確保
		LDA	ENXPSL,X	;Ｘ座標セット
		CLC
		ADC	CCWORK0
		SEC
		SBC	#08H
		STA	EXXPSL,Y
		LDA	ENYPSL,X	;Ｙ座標セット
		SEC
		SBC	#08H
		STA	EXYPSL,Y
		LDA	#04H		;初期カウンターセット
		STA	EXWRK0,Y
		LDA	#06H		;初期タイマーセット
		STA	EXTIM0,Y
;
		LDA	#010H
BKMKJ_FAIL_0100 EQU	$
		STA	<ENWRK4,X
;
;------------------------------------------------------------------------
;-		心臓キャラクターセット					-
;-			in :						-
;-				(A) <-- 倍率				-
;------------------------------------------------------------------------
BKMKJ_HART_CHR	EQU	$
		STA	R6		;(R6)  <-- 倍率
		LDY	ENTROB,X
		TYX
		LDA	#040H
		STA	R3		;(R3)  <-- ビットマップ座標＿Ｘ
		STZ	R2		;(R2)  <--	  ”	   ＿Ｘ
		LDA	#010H
		STA	R8		;(R8)  <-- 中心＿Ｘ
		STA	R9		;(R9)  <--   ”＿Ｙ
		LDA	#CIPCHD4+00C0H+1
		STA	R12		;(R12) <-- キャラクターアドレス（Ｌ，Ｈ）
		LDA	#BANK CIPCHD4
		STA	R13		;(R13) <--	   ”		(Ｂ）
		M_CHIP	C_32_ZOOM
;
		INC	OBM7WF		;転送キャラクター転送フラグ”ＯＮ”
;
		LDX	<ENINDX
		RTS
;
;------------------------------------------------------------------------
;-		ドロ〜モード						-
;------------------------------------------------------------------------
BKMKJ_DORO	EQU	$
		TYX
;
		LDA	ENTIM0,X
		BEQ	BKMKJ_DORO_0100 ;ウェイト？ ( no:BKMKJ_DORO_0100 )
;
		LDA	ENTIM0,X
		LSR	A
		BNE	BKMKJ_DORO_0050 ;ヤラレポイントデータ初期セット？ ( no:BKMKJ_DORO_0050 )
;
		LDA	#082H		;[♪]
		JSL	>SOUND_3_ON
;
		LDA	#0100H*10H
		STA	<ENWRK4,X
		STZ	ENXMAX,X
		LDA	#0100H
		STA	<ENWRK2,X
		STA	R6		;(R6)  <-- 倍率
		LDA	#BANK BKMKJ_POINT_1
		STA	R0		;(R0)  <-- ヤラレポイントデータアドレス（Ｂ）
		LDA	#BKMKJ_POINT_1
		STA	R14		;(R14) <-- ヤラレポイントデータアドレス（Ｌ，Ｈ）
		M_CHIP	BKMKJ_P_ZOOM
		LDX	<ENINDX
BKMKJ_DORO_0050 EQU	$
		RTS
;
BKMKJ_DORO_0100 EQU	$
		LDA	<ENWRK4,X
		BEQ	BKMKJ_DORO_0200 ;Ｙ移動？ ( yes:BKMKJ_DORO_0200 )
;
		CMP	#010H*10H	;(C) set
		LDA	#0FFF8H
		BCC	BKMKJ_DORO_0150 ;Ｘ倍率変更？ ( no:BKMKJ_DORO_0150 )
		LDA	ENXMAX,X
		CMP	#0FFD0H
		BMI	BKMKJ_DORO_0150 ;最大スピード？ ( yes:BKMKJ_DORO_0150 )
		DEC	ENXMAX,X
BKMKJ_DORO_0150 EQU	$
		CLC
		ADC	<ENWRK4,X
		BPL	BKMKJ_DORO_0152
		LDA	#0
BKMKJ_DORO_0152 EQU	$
		STA	<ENWRK4,X
		STA	R7		;(R7) <-- 倍率
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		STA	<ENWRK2,X
		CMP	#020H
		BCS	BKMKJ_DORO_0160 ;ＯＡＭセットキャンセル？ ( no:BKMKJ_DORO_0160 )
;
		LDA	#0FFH
		STA	ENYUSN,X
BKMKJ_DORO_0160 EQU	$
		LDA	#BANK BKMKJ_POINT_1
		STA	R0		;(R0) <-- ヤラレポイントデータアドレス（Ｂ）
		LDA	#BKMKJ_POINT_1
		STA	R14		;(R14) <-- ヤラレポイントデータアドレス（Ｌ，Ｈ）
		M_CHIP	BKMKJ_P_DOWN
		LDX	<ENINDX
		RTS
;
BKMKJ_DORO_0200 EQU	$
		LDA	ENDSYL,X
		CMP	#0E0H
		BPL	BKMKJ_DORO_0250 ;落下終了？ ( yes:BKMKJ_DORO_0250 )
;
		LDA	#0200H		;下降スピードセット
		STA	ENYSPD,X
		RTS
;
;-------------- コースクリアー！！ --------------------------------------
BKMKJ_DORO_0250 EQU	$
		LDA	ENXPSL,X
		STA	<EWORK0		;(EWK0,1) <-- Ｘ座標
		LDA	ENYPSL,X
		STA	<EWORK2		;(EWK2,3) <-- Ｙ座標
		JSL	>BSCLW_SET_M
;
		JSL	>ENCLEAR_NORETN
;
		STZ	SUBSEL		;ＢＧ２表示無しセット
		LDA	#00011000B
		TRB	HD420C		;H-DMA "OFF" !!
		PLA			;[ pull pull return !! ]
		RTL
;
;------------------------------------------------------------------------
;-		ボスケメクジＢＧ３セット				-
;------------------------------------------------------------------------
;
;-------------- ボスケメクジＯＢＪキャラクターセットデータ --------------
BKMKJ_CHR_CX	EQU	$
		WORD	08H		;[小はんてん]
		WORD	08H		;[目]
		WORD	08H		;[大はんてん]
		WORD	08H		;[口]
BKMKJ_CHR_32	WORD	10H		;[ほっぺた]
		WORD	06H		;[髪の毛]
		WORD	10H		;[心臓]
BKMKJ_CHR_CY	EQU	$
		WORD	08H		;[小はんてん]
		WORD	0FH		;[目]
		WORD	0FH		;[大はんてん]
		WORD	08H		;[口]
		WORD	1FH		;[ほっぺた]
		WORD	1CH		;[髪の毛]
		WORD	10H		;[心臓]
BKMKJ_CHR_AD	EQU	$
		WORD	CIPCHD4+0080H+1 ;[小はんてん]
		WORD	CIPCHD4+1080H+1 ;[目]
		WORD	CIPCHD4+0090H+1 ;[大はんてん]
		WORD	CIPCHD4+1090H+1 ;[口]
		WORD	CIPCHD4+00A0H+1 ;[ほっぺた]
		WORD	CIPCHD4+00E0H+1 ;[髪の毛]
		WORD	CIPCHD4+00C0H+1 ;[心臓]
BKMKJ_CHR_BX	EQU	$
		WORD	00H		;[小はんてん]
		WORD	00H		;[目]
		WORD	10H		;[大はんてん]
		WORD	10H		;[口]
		WORD	20H		;[ほっぺた]
		WORD	60H		;[髪の毛]
		WORD	40H		;[心臓]
BKMKJ_CHR_BY	EQU	$
		WORD	00H		;[小はんてん]
		WORD	10H		;[目]
		WORD	00H		;[大はんてん]
		WORD	10H		;[口]
		WORD	00H		;[ほっぺた]
		WORD	00H		;[髪の毛]
		WORD	00H		;[心臓]
BKMKJ_CHR_SZ	EQU	$
		WORD	C_16_ZOOM	;[小はんてん]
		WORD	C_16_ZOOM	;[目]
		WORD	C_16_ZOOM	;[大はんてん]
		WORD	C_16_ZOOM	;[口]
		WORD	C_32_ZOOM	;[ほっぺた]
		WORD	C_32_ZOOM	;[髪の毛]
		WORD	C_32_ZOOM	;[心臓]
;
BKMKJ_BG3SET	EQU	$
		LDA	<ENWRK0,X
		BNE	BKMKJ_BG3SET_FD ;ＢＧ３表示？ ( yes:BKMKJ_BG3SET_FD )
		JMP	BKMKJ_BG3SET_FF
;
;-------------- ＢスプラインＢＧ３セット --------------------------------
BKMKJ_BG3SET_FD EQU	$
		LDA	ENDSXL,X
		STA	CREG0		;(REG0) <-- 表示Ｘ座標
		LDA	ENDSYL,X
		STA	CREG1		;(REG1) <-- 表示Ｙ座標
		M_CHIP	BG3_BSPLINE_SET
;
		JSL	>M_DMA_BFST
		LWORD	HDMABUF		;転送先アドレス
		LWORD	HDMABF		;転送元アドレス
;;;;		    WORD    (0B2H*2*2)	    ;転送バイト数
		WORD	(0D2H*2*2)	;転送バイト数
;
;-------------- ＰＰＵレジスタセット ------------------------------------
		LDA	#00010101B+(00000010B*100H)
		STA	MANSEL
		LDY	#01110101B
		STY	SUBADF
		LDA	#00011000B
		TSB	HD420C		;H-DMA "ON" !!
;
		LDX	<ENINDX
;
;-------------- ＯＡＭセット --------------------------------------------
		LDA	ENOAML,X
		BPL	BKMKJ_BG3SET_FE ;ＯＡＭセットＯＫ？ ( yes:BKMKJ_BG3SET_FE )
		RTS
;
BKMKJ_BG3SET_FE EQU	$
		STA	R5		;(R5) <-- ＯＡＭインデックス
		LDA	ENDSXL,X
		STA	R1		;(R1) <-- 表示Ｘ座標
		LDA	ENDSYL,X
		STA	R2		;(R2) <-- 表示Ｙ座標
		LDA	>BSPL_B_POINT+1+(11*2)+1
		STA	R3		;(R3) <-- ＭＩＮＹ幅
		LDA	>BSPL_B_POINT+1+(00*2)+1
		STA	R4		;(R4) <-- ＭＡＸＹ幅
		LDA	>BSPL_B_POINT+1+(00*2)+1
		SEC
		SBC	>BSPL_B_POINT+1+(01*2)+1
		AND	#00FFH
		STA	R6		;(R6) <-- ドロ〜用Ｙ幅
		LDA	ENWRK8,X
		STA	CCWORK0		;(CWK0) <-- 心臓表示フラグ
		LDA	<ENWRK2,X
		STA	CCWORK1		;(CWK1) <-- 倍率
		M_CHIP	BKMKJ_OAMST
		LDX	<ENINDX
;
		LDA	CCWORK0		;衝突チェック中心までの距離
		CLC
		ADC	#010H
		STA	ECNTXW,X
;
;-------------- キャラクターセット --------------------------------------
BKMKJ_BG3SET_FF EQU	$
		LDA	<ENWRK2,X
		CMP	ENWRK6,X
		BEQ	BKMKJ_BG3SET_50 ;キャラクターセット？ ( no:BKMKJ_BG3SET_50 )
;
		STA	ENWRK6,X
		CMP	#020H
		BCS	BKMKJ_BG3SET_00 ;ＭＩＮ倍率オーバー？ ( no:BKMKJ_BG3SET_00 )
		LDA	#020H
BKMKJ_BG3SET_00 EQU	$
		STA	<EWORK0		;(EWK0,1) <-- 倍率
;
		LDY	#(BKMKJ_CHR_CY-BKMKJ_CHR_CX)-2
		LDA	ENWRK8,X
		BPL	BKMKJ_BG3SET_10 ;心臓表示？ ( yes:BKMKJ_BG3SET_10 )
		DEY
		DEY
BKMKJ_BG3SET_10 EQU	$
		LDA	FRCNT
		LSR	A
		BCC	BKMKJ_BG3SET_20
		DEY
		DEY
BKMKJ_BG3SET_20 EQU	$
		LDA	!BKMKJ_CHR_CX,Y
		STA	R8		;(R8)  <-- 中心＿Ｘ
		LDA	!BKMKJ_CHR_CY,Y
		STA	R9		;(R9)  <-- 中心＿Ｙ
		LDA	<EWORK0
		STA	R6		;(R6)  <-- 倍率
		LDA	!BKMKJ_CHR_AD,Y
		STA	R12		;(R12) <-- キャラクターアドレス（Ｌ，Ｈ）
		LDA	#BANK CIPCHD4
		STA	R13		;(R13) <-- キャラクターアドレス(Ｂ）
		LDA	!BKMKJ_CHR_BY,Y
		STA	R2		;(R2)  <-- ビットマップ座標＿Ｙ
		LDA	!BKMKJ_CHR_BX,Y
		STA	R3		;(R3)  <-- ビットマップ座標＿Ｘ
		LDX	#BANK C_32_ZOOM
		LDA	!BKMKJ_CHR_SZ,Y
		PHY			;(Y) save
		JSL	>CHIPON
		PLY			;(Y) load
		DEY
		DEY
		DEY
		DEY
		BPL	BKMKJ_BG3SET_20
;
		INC	OBM7WF		;mode 7 OBJ chara DMA "ON"
;
		LDX	<ENINDX
;
BKMKJ_BG3SET_50 EQU	$
		RTS
;
;************************************************************************
;*		initial	 ( 下キーでＮＥＸＴ−ＧＯＴＯ )			*
;************************************************************************
DNXG2IN		EQU	$
DNXGOIN		EQU	$
		LDA	ENXPSL,X	;Ｘ座標補正
		ORA	#08H
		STA	ENXPSL,X
		LDA	#01H		;衝突サイズ変更
		STA	EWIDEX,X
		STA	EWIDEY,X
		STZ	ECNTYW,X
		RTL
;
;************************************************************************
;*		move	 ( 下キーでＮＥＸＴ−ＧＯＴＯ )			*
;************************************************************************
DNXGOMV		EQU	$
		LDY	#02H		;(Y) <-- 矢印向き
		JSL	>QAROW_SET_CK	;？矢印セットチェック
		BCS	DNXGOMV_0050	;スイッチ”ＯＮ”？ ( yes:DNXGOMV_0050 )
		RTL
;
DNXG2MV		EQU	$
DNXGOMV_0050	EQU	$
		JSL	>ENMDCK
;
		JSR	NXGO_PLCK
		BCC	DNXGOMV_0100	;プレイヤー状態ＯＫ？ ( no:DNXGOMV_0100 )
;
		LDA	KEYC1
		AND	#00000100B
		BEQ	DNXGOMV_0100	;下キー入力ｏｒ<DNXG2>？ ( no:DNXGOMV_0100 )
;
;-------------- ＮＥＸＴ ＧＯＴＯ！！ -----------------------------------
		LDA	#(2+4)		;(A) <-- ドカン向き
		STA	ENSTFG		;敵ＳＴＯＰ
		JSR	TO_PLDOKN_2	;ドカンデモへ
		LDA	PLXPSL		;補正用中心Ｘ座標セット
		STA	DOKNCX
;
DNXGOMV_0100	EQU	$
		RTL
;
;------------------------------------------------------------------------
;-		ＮＥＸＴ−ＧＯＴＯプレイヤー状態チェック		-
;-			out :						-
;-				(C) <-- 1:ok				-
;------------------------------------------------------------------------
NXGO_PLCK	EQU	$
		LDY	ECRSFG,X
		BPL	NXGO_PLCK_0050	;プレイヤー当たった？ ( no:NXGO_PLCK_0050 )
;
		LDA	BABYNO
		BPL	NXGO_PLCK_0050	;赤ちゃん乗ってる？ ( no:NXGO_PLCK_0050 )
		LDA	PLJUMP
		ORA	BERFLG
		BNE	NXGO_PLCK_0050	;プレイヤージャンプ中？ ( yes:NXGO_PLCK_0050 )
		SEC
		RTS
;
NXGO_PLCK_0050	EQU	$
		CLC
		RTS
;
;************************************************************************
;*		initial	 ( 横キーでＮＥＸＴ−ＧＯＴＯ逆タイプ )		*
;************************************************************************
SNXGO_BGC_XA	EQU	$
		WORD	00008H,0FFF8H
;
SNXG2IN		EQU	$
		INC	<ENWRK0,X
		INC	<ENWRK0,X
;
;************************************************************************
;*		initial	 ( 横キーでＮＥＸＴ−ＧＯＴＯ )			*
;************************************************************************
SNXGOIN		EQU	$
		LDY	<ENWRK0,X
		LDA	ENXPSL,X
		CLC
		ADC	!SNXGO_BGC_XA,Y
		STA	R8		;(R8) <-- ＢＧチェックＸ座標
		LDA	ENYPSL,X
		SEC
		SBC	#08H
		STA	ENYPSL,X	;Ｙ座標補正
		STA	R0		;(R0) <-- ＢＧチェックＹ座標
		M_CHIPR M_BGUNIT_READ
;
		LDX	<ENINDX
		LDA	<ENWRK0,X
		LDY	R5
		BEQ	SNXGOIN_0050	;ＢＧ当たり？ ( no:SNXGOIN_0050 )
		EOR	#02H
SNXGOIN_0050	EQU	$
		STA	ENMUKI,X	;向きセット
		RTL
;
;************************************************************************
;*		move	 ( 横キーでＮＥＸＴ−ＧＯＴＯ )			*
;************************************************************************
;************************************************************************
;*		move	 ( 横キーでＮＥＸＴ−ＧＯＴＯ逆タイプ )		*
;************************************************************************
SNXGO_KEY	EQU	$
; ENMUKI -->		  [0]	    [2]
		WORD	00000001B,00000010B
;
SNXGOMV		EQU	$
SNXG2MV		EQU	$
;;;;		    LDA	    ENMUKI,X
;;;;		    LSR	    A
;;;;		    TAY			    ;(Y) <-- 矢印向き
;;;;		    JSL	    >QAROW_SET_CK   ;？矢印セットチェック
;;;;		    BCS	    SNXGOMV_0050    ;スイッチ”ＯＮ”？ ( yes:SNXGOMV_0050 )
;;;;		    RTL
;;;;;
;;;;SNXGOMV_0050    EQU	    $
		JSL	>ENMDCK
;
		JSR	NXGO_PLCK
		BCC	SNXGOMV_0100	;プレイヤー状態ＯＫ？ ( no:SNXGOMV_0100 )
;
		LDA	EPXMUK,X
		AND	#00FFH
		CMP	ENMUKI,X
		BNE	SNXGOMV_0100	;プレイヤーとの向きＯＫ？ ( no:SNXGOMV_0100 )
		TAY
		LDA	KEYC1
		AND	!SNXGO_KEY,Y
		BEQ	SNXGOMV_0100	;横キー入力？ ( no:SNXGOMV_0100 )
;
;-------------- ＮＥＸＴ ＧＯＴＯ！！ -----------------------------------
		TYA
		CLC
		ADC	#02H+8000H	;(A) <-- ドカン向き
		STA	ENSTFG		;敵ＳＴＯＰ
		JSR	TO_PLDOKN_2	;ドカンデモへ
;
SNXGOMV_0100	EQU	$
		RTL
;
;------------------------------------------------------------------------
;-		？矢印セットチェック					-
;-			in :						-
;-				(X) <-- 敵インデックス			-
;-				(Y) <-- 矢印向き（０：右）		-
;-						（１：左）		-
;-						（２：下）		-
;-						（３：上）		-
;-			out :						-
;-				(C) <-- スイッチ”ＯＮ”情報		-
;-					0:”ＯＦＦ”			-
;-					1:”ＯＮ”			-
;------------------------------------------------------------------------
QAROW_SET_CK	EQU	$
		LDA	SWITCH_1
		AND	#00001000B
		BEQ	QAROW_SET_CK_50 ;スイッチ”ＯＮ”？ ( no:QAROW_SET_CK_50 )
;
		LDA	FRCNT
		AND	#018H
		BEQ	QAROW_SET_CK_10 ;矢印セットタイミング？ ( no:QAROW_SET_CK_10 )
;
QAROW_SET_CK_2	EQU	$
		TYA			;矢印向き待避
		PHA			;
;
		LDA	#QAROW		;(A) <-- 効果Ｎｏ．
		JSL	>EXINSR		;効果エリア確保
;
		PLA
		STA	EXCHPT,Y	;矢印向きセット
		LDA	ENXPSL,X	;矢印Ｘ座標セット
		STA	EXXPSL,Y
		LDA	ENYPSL,X	;矢印Ｙ座標セット
		STA	EXYPSL,Y
		LDA	#01H		;初期タイマーセット
		STA	EXTIM0,Y
;
QAROW_SET_CK_10 EQU	$
		SEC
		RTL
;
QAROW_SET_CK_50 EQU	$
		CLC
		RTL
;
;************************************************************************
;*		initial	 ( ボスクリアーデモ )				*
;************************************************************************
BSCLRIN		EQU	$
		LDA	BABYNO
		BPL	BSCLRIN_0010	;赤ちゃん乗ってる？ ( no:BSCLRIN_0010 )
		JSL	>TROBJ_SR_4x4
		BCS	BSCLRIN_0050	;転送エリア確保？ ( yes:BSCLRIN_0050 )
;
BSCLRIN_0010	EQU	$
		JMP	TO_EINIT
;
BSCLRIN_0050	EQU	$
		JSL	>BERO_CANCEL
		LDA	#PSTP		;プレイヤーＳＴＯＰ！！
		STA	PLMODE
		STZ	PLSTFG
		STZ	PLCMKI		;プレイヤー向きセット
;
		LDA	PLXPSL		;Ｘ座標セット
		STA	ENXPSL,X
		LDA	PLYPSL		;Ｙ座標セット
		SEC
		SBC	#028H
		STA	ENYPSL,X
		LDA	#02H		;表示”ＯＮ”
		STA	ENYUSN,X
		LDA	#020H		;カギ倍率初期セット
		STA	<ENWRK2,X
		JSR	BSCLR_KEY_CHR
;
		JSL	>FUSNB_SET_2
;
		LDA	SCCH1		;スクロールカウンター初期セット
		STA	ATSCRL_SCCH1
		LDA	SCCV1
		STA	ATSCRL_SCCV1
		LDA	#01H
		STA	ATSCRL_H	;オートスクロールフラグ”ＯＮ”
		STA	ATSCRL_V
		RTL
;
;************************************************************************
;*		move	 ( ボスクリアーデモ )				*
;************************************************************************
BSCLRMV		EQU	$
		JSL	>TROBJ_OAM_4x4
;
		TXY
		LDA	<ENWRK0,X
		ASL	A
		TAX
		JSR	(!BSCLR_TBL,X)
;
		RTL
;
;------------------------------------------------------------------------
;-		ボスクリアーデモ用カギ処理テーブル			-
;------------------------------------------------------------------------
BSCLR_TBL	EQU	$
		WORD	BSCLR_DISP	;カギ出現
		WORD	BSCLR_FALL	;カギ落下
		WORD	BSCLR_CACH	;プレイヤーキャッチ
		WORD	BSCLR_KYWO	;カギ穴ウィンドウオープン
		WORD	BSCLR_KYWC	;カギ穴ウィンドウクローズ
;
;------------------------------------------------------------------------
;-		プレイヤー＆赤ちゃんパターンセット			-
;------------------------------------------------------------------------
BSCLR_PATN_TM	EQU	$
		WORD	004H,004H,004H,024H
BSCLR_PATN_TM_1 WORD	014H
BSCLR_PATN_TM_2 WORD	014H,004H,005H
BSCLR_PATN_TM_3 WORD	0C0H,020H
BSCLR_PATN_TM_4 WORD	040H
BSCLR_PATN_TM_5 WORD	004H,034H,004H,004H,04H
BSCLR_PATN_TM_6 WORD	001H
BSCLR_P_1	EQU	(BSCLR_PATN_TM_1-BSCLR_PATN_TM)/2
BSCLR_P_2	EQU	(BSCLR_PATN_TM_2-BSCLR_PATN_TM)/2
BSCLR_P_3	EQU	(BSCLR_PATN_TM_3-BSCLR_PATN_TM)/2
BSCLR_P_4	EQU	(BSCLR_PATN_TM_4-BSCLR_PATN_TM)/2
BSCLR_P_5	EQU	(BSCLR_PATN_TM_5-BSCLR_PATN_TM)/2
BSCLR_P_6	EQU	(BSCLR_PATN_TM_6-BSCLR_PATN_TM)/2
BSCLR_PLAY_PATN EQU	$
		WORD	BS01,BS02,BS03,BS04
		WORD	BS05
		WORD	BS06,BS07,BS09
		WORD	BS09,BS09
		WORD	BS09
		WORD	BS0D,BS0E,BS0F,BS10,P000
		WORD	P000
BSCLR_BABY_PATN EQU	$
		WORD	02BH,02CH,02DH,02EH
		WORD	02FH
		WORD	030H,031H,031H
		WORD	031H,031H
		WORD	031H
		WORD	032H,032H,033H,034H,00DH
		WORD	00DH
;
BSCLR_PATN_SET	EQU	$
		JSL	>BABYM_CHR_TR2
;
		LDA	ENTIM1,X
		BNE	BSCLR_PTST_0050 ;プレイヤー＆赤ちゃんパターン切り替え？ ( no:BSCLR_PTST_0050 )
;
;-------------- プレイヤー＆赤ちゃんパターン切り替え --------------------
		LDA	<ENWRK4,X
		INC	<ENWRK4,X
		ASL	A
		TAY
		CPY	#(BSCLR_P_5+1)*2
		BNE	BSCLR_PTST_0010 ;サウンドセット？ ( no:BSCLR_PTST_0010 )
;
		PHY			;(Y) save
		LDA	#043H		;[♪]
		JSL	>SOUND_3_ON
		PLY			;(Y) load
;
BSCLR_PTST_0010 EQU	$
		LDA	!BSCLR_PATN_TM,Y ;パターン切り替えタイマーセット
		STA	ENTIM1,X
		LDA	!BSCLR_PLAY_PATN,Y
		STA	PLPATN		;プレイヤーパターンセット
		LDA	!BSCLR_BABY_PATN,Y
		STA	ENCHPT		;赤ちゃんパターンセット
BSCLR_PTST_0050 EQU	$
		RTS
;
;------------------------------------------------------------------------
;-		”キラキラ”セット					-
;------------------------------------------------------------------------
BSCLR_KIRA_SET	EQU	$
		LDA	<FRCNT2
		AND	#07H
		BNE	BSCLR_KIRA_010	;”キラキラ”セット？ ( yes:BSCLR_KIRA_010 )
;
		LDA	#010H+(010H*100H)
		JSL	>KIRAKIRA_SET
;
BSCLR_KIRA_010	EQU	$
		RTL
;
;------------------------------------------------------------------------
;-		カギ出現						-
;------------------------------------------------------------------------
BSCLR_DISP	EQU	$
		TYX
;
		LDY	DSPMOD
		CPY	#09H
		BNE	BSCLR_DISP_0010 ;Ｑちゃんボス？ ( no:BSCLR_DISP_0010 )
;
		LDA	ATSCRL_SCCV1
		CMP	#080H
		BMI	BSCLR_DISP_0010 ;スクロール？ ( no:BSCLR_DISP_0010 )
;
		DEC	ATSCRL_SCCV1
		DEC	ESCCV3
;
BSCLR_DISP_0010 EQU	$
		LDY	<ENWRK4,X
		CPY	#BSCLR_P_1
		BCS	BSCLR_DISP_0050 ;パターン切り替えＯＫ？ ( no:BSCLR_DISP_0050 )
;
;-------------- プレイヤー＆赤ちゃんパターンセット ----------------------
		JSR	BSCLR_PATN_SET
;
BSCLR_DISP_0050 EQU	$
		LDA	<ENWRK2,X
		CLC
		ADC	#02H
		CMP	#0100H
		BCC	BSCLR_DISP_0100 ;最大倍率オーバー？ ( no:BSCLR_DISP_0100 )
;
;-------------- カギ落下へ！！ ------------------------------------------
		INC	<ENWRK0,X
;
		LDA	#01H		;落下スタート！！
		STA	ENGPOW,X
		LDA	#0100H
BSCLR_DISP_0100 EQU	$
		STA	<ENWRK2,X
		BRA	BSCLR_KEY_CHR
;
;------------------------------------------------------------------------
;-		カギ落下						-
;------------------------------------------------------------------------
BSCLR_FALL	EQU	$
		TYX
;
;-------------- ”キラキラ”セット --------------------------------------
		JSL	>BSCLR_KIRA_SET
;
		LDY	<ENWRK4,X
		CPY	#BSCLR_P_2
		BCS	BSCLR_FALL_0010 ;パターン切り替えＯＫ？ ( no:BSCLR_FALL_0010 )
;
;-------------- プレイヤー＆赤ちゃんパターンセット ----------------------
		JSR	BSCLR_PATN_SET
;
BSCLR_FALL_0010 EQU	$
		LDA	EPWIDY,X
		SEC
		SBC	#0FFE4H
		BMI	BSCLR_KEY_CHR	;プレイヤーキャッチ？ ( yes:BSCLR_KEY_CHR )
;
;-------------- プレイヤーキャッチ！！ ----------------------------------
		INC	<ENWRK0,X
;
		EOR	#0FFFFH
		SEC			;[ INC A ]
		ADC	ENYPSL,X
		STA	ENYPSL,X
		STZ	ENYSPD,X
		STZ	ENGPOW,X
;
		LDA	#0100H		;消しゴムウィンドウＸ位置初期セット
		STA	ENWRK6,X
		LDA	#00E0H		;消しゴムウィンドウＹ位置初期セット
		STA	ENWRK8,X
;
;-------------- キャラクターセット --------------------------------------
BSCLR_KEY_CHR	EQU	$
		LDA	<FRCNT2
		ASL	A
		AND	#00FFH
;;;;		    STA	    <ENCONT,X	    ;回転角度セット
;;;;BSCLR_KEY_CHR_2 EQU	    $
;;;;		    LDA	    <ENCONT,X
		STA	R5		;(R5) <-- 回転角度
		LDA	<ENWRK2,X
		STA	R6		;(R6)  <-- 倍率
		LDY	ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_X,X
		STA	R3		;(R3)  <-- ビットマップ座標＿Ｘ
		LDA	>TROBJ_PLOT_Y,X
		STA	R2		;(R2)  <--	  ”	   ＿Ｘ
		LDA	#CIPCHD2+40E0H
		STA	R12		;(R12) <-- キャラクターアドレス（Ｌ，Ｈ）
		LDA	#BANK CIPCHD2
		STA	R13		;(R13) <--	   ”		(Ｂ）
		M_CHIP	C_32_ROTZOM
;
		INC	OBM7WF		;mode 7 OBJ chara DMA "ON"
;
		LDX	<ENINDX
		RTS
;
;------------------------------------------------------------------------
;		プレイヤーキャッチ					-
;------------------------------------------------------------------------
MASKWINDOW_ADX	EQU	$
		WORD	00010H
MASKWINDOW_ADY	WORD	0FFF0H,00010H
MASKWINDOW_CPX	EQU	$
		WORD	00120H
MASKWINDOW_CPY	EQU	$
		WORD	0FFE0H,000F0H
;
BSCLR_CACH	EQU	$
		TYX
;
;-------------- ”キラキラ”セット --------------------------------------
		JSL	>BSCLR_KIRA_SET
;
;-------------- プレイヤー＆赤ちゃんパターンセット ----------------------
		JSR	BSCLR_PATN_SET
;
		LDY	<ENWRK4,X
		CPY	#BSCLR_P_3
		BNE	BSCLR_CACH_0010 ;カギ補正？ ( no:BSCLR_CACH_0010 )
;
;-------------- カギ補正 ----------------------------------------
		DEC	ENXPSL,X
		DEC	ENYPSL,X
;;;;		    LDA	    <ENCONT,X
;;;;		    JSR	    BSCLR_KEY_CHR_2
;
BSCLR_CACH_0010 EQU	$
		LDY	<ENWRK4,X
		CPY	#BSCLR_P_4
		BCC	BSCLR_CACH_0050 ;カギ穴ウィンドウオープンへ？ ( no:BSCLR_CACH_0050 )
;
;-------------- カギ穴ウィンドウオープンへ！！ --------------------------
		INC	<ENWRK0,X
;
		LDA	#06H		;[♪]
		STA	SOUND_0
;
		LDA	#0FFH		;カギ表示無しセット
		STA	ENYUSN,X
		STZ	<ENWRK2,X	;カギ穴ウィンドウ初期倍率セット
;
		LDY	#02
		STY	NMITYP
		STZ	CHRTRP
		STZ	COLTRP
		LDY	#0FH
		STY	SCRLNO
		STZ	DSPMOD
		LDA	#00010100B+(00010000B*100H)
		STA	MANSEL		;[ & SUBSEL ]
		LDY	#069H
		STY	BGMODE
		LDY	#02H
		STY	BG34CH
		LDY	#034H
		STY	BG3SCF
		STZ	NUKCOL
;
		LDA	#064H		;[♪]
		JSL	>SOUND_3_ON
;
		JSL	>FUSNB_SET_2
;
;-------------- カギ穴の光スクリーン転送 --------------------------------
;
		I16
;
		LDA	#KEYHOLL	;(A) <-- データＮｏ．
		JSL	>UNCOMPRES_X
;
		I8
;
		LDA	#3400H+8000H	;特別転送セット
		STA	OBM7WF
;
;-------------- カギ穴の光カラー初期セット ------------------------------
		LDX	#(13H-1)*2
BSCLR_CACH_0020 EQU	$
		LDA	>COL_ADDRESS+KEY_HOLL_COL_0,X
		STA	>DATACOL+2,X
		STA	>MOTOCOL+2,X
		DEX
		DEX
		BPL	BSCLR_CACH_0020
;
		LDX	<ENINDX
;
;-------------- 消しゴムウィンドウセット --------------------------------
BSCLR_CACH_0050 EQU	$
		LDA	ENWRKC,X
		BEQ	BSCLR_CACH_0051 ;消しゴムウィンドウ終了？ ( no:BSCLR_CACH_0051 )
		JMP	BSCLR_CACH_0098
;
BSCLR_CACH_0051 EQU	$
		LDA	ENWRKA,X
		STA	R0		;(R0) <-- ウィンドウ向き
		TAY
		LDA	ENWRK6,X
		STA	R1		;(R1) <-- 消しゴムウィンドウＸ位置
		LDA	ENWRK8,X
		STA	R2		;(R2) <-- 消しゴムウィンドウＹ位置
;
		LDA	ENWRK6,X
		SEC
		SBC	!MASKWINDOW_CPX,Y
		EOR	!MASKWINDOW_ADX,Y
		STA	<EWORK0
		BMI	BSCLR_CACH_0052
;
		LDA	ENWRK8,X
		SEC
		SBC	#02CH
		STA	ENWRK8,X
		TYA
		EOR	#02H
		TAY
BSCLR_CACH_0052 EQU	$
		LDA	ENWRK8,X
		SEC
		SBC	!MASKWINDOW_CPY,Y
		EOR	!MASKWINDOW_ADY,Y
		STA	<EWORK2
		BMI	BSCLR_CACH_0060
;
		LDA	ENWRK6,X
		SEC
		SBC	#02CH
		STA	ENWRK6,X
		TYA
		EOR	#02H
		TAY
BSCLR_CACH_0060 EQU	$
		TYA
		STA	ENWRKA,X
		LDA	ENWRK6,X
		CLC
		ADC	!MASKWINDOW_ADX,Y
		STA	ENWRK6,X
		LDA	ENWRK8,X
		CLC
		ADC	!MASKWINDOW_ADY,Y
		STA	ENWRK8,X
;
		LDA	<EWORK0
		EOR	<EWORK2
		BMI	BSCLR_CACH_0070
		LDA	<EWORK0
		BMI	BSCLR_CACH_0070
;
		INC	ENWRKC,X
BSCLR_CACH_0070 EQU	$
		M_CHIP	MASKWINDOW
;
		JSL	>M_DMA_BFST
		LWORD	WINDBUF		;転送先アドレス
		LWORD	WINDBF		;転送元アドレス
		WORD	(0D2H*4)	;転送バイト数
;
;-------------- window PPU set ----------------------------------
		LDA	#10101010B+(10101010B*100H)
		STA	WIND23		;[ & WIND24 ]
		LDA	MANSEL		;[ & SUBSEL ]
		STA	WMANSL		;[ & WSUBSL ]
		STZ	WLOGIC		;ウィンドウロジックセット
;
		LDY	#10100000B
		STY	WIND25
		LDY	#00100010B
		STY	WIND30
		LDA	#00100000B
		TSB	HD420C		;H-DMA "ON" !!
;
		LDA	>DATACOL
		BEQ	BSCLR_CACH_0090 ;ヌキカラー特殊？ ( no:BSCLR_CACH_0090 )
;
		STA	NUKCOL		;ヌキカラー入れ替え
		LDA	#00
		STA	>DATACOL
		LDX	#020H		;画面加算キャンセル
		STX	SUBADF
;
BSCLR_CACH_0090 EQU	$
		LDX	<ENINDX
		LDA	ENWRKC,X
		BEQ	BSCLR_CACH_0200 ;プレイヤー表示位置補正ＯＫ？ ( no:BSCLR_CACH_0200 )
;
;-------------- カギ穴の光キャラクター転送 ------------------------------
;
		I16
;
		LDA	#CHRECB		;(A) <-- データＮｏ．
		JSL	>UNCOMPRES_X
;
		I8
;
		LDA	#2800H+8000H	;特別転送セット
		STA	OBM7WF
;
;-------------- プレイヤー表示位置補正 ----------------------------------
BSCLR_CACH_0098 EQU	$
		LDA	PLXPSL
		SEC
		SBC	#078H
		STA	<EWORK0
		STA	R1		;(R1) <-- 目標Ｘ座標
		LDA	PLYPSL
		SEC
		SBC	#080H
		STA	<EWORK2
		STA	R2		;(R2) <--  ” Ｙ ”
		LDA	ATSCRL_SCCH1
		STA	R3		;(R3) <-- 現在Ｘ ”
		LDA	ATSCRL_SCCV1
		STA	R4		;(R4) <--  ” Ｙ ”
		LDA	#0200H
		STA	R6		;(R6) <-- サーチスピード
		M_CHIP	SEARCH_SPEED
;
		LDA	R1
		STA	ATSCRL_XSPD	;Ｘスピードセット
		LDA	R2
		STA	ATSCRL_YSPD	;Ｙ	 ”
;
		I16
;
		JSL	>ATSCRL_XYCL_L	;Ｘ，Ｙ座標計算
;
		I8
;
		LDA	<EWORK0
		SEC
		SBC	ATSCRL_SCCH1
		BEQ	BSCLR_CACH_0100 ;プレイヤーのＸ位置に帰った？ ( yes:BSCLR_CACH_0100 )
		EOR	ATSCRL_XSPD
		BPL	BSCLR_CACH_0100 ;	       ”	      ( no:BSCLR_CACH_0100 )
;
		LDA	<EWORK0		;Ｘ座標補正
		STA	ATSCRL_SCCH1
BSCLR_CACH_0100 EQU	$
		LDA	<EWORK2
		SEC
		SBC	ATSCRL_SCCV1
		BEQ	BSCLR_CACH_0150 ;プレイヤーのＹ位置に帰った？ ( yes:BSCLR_CACH_0150 )
		EOR	ATSCRL_YSPD
		BPL	BSCLR_CACH_0150 ;	       ”	      ( no:BSCLR_CACH_0150 )
;
		LDA	<EWORK2		;Ｙ座標補正
		STA	ATSCRL_SCCV1
BSCLR_CACH_0150 EQU	$
		LDX	<ENINDX
;
BSCLR_CACH_0200 EQU	$
		RTS
;
;------------------------------------------------------------------------
;-		カギ穴ウィンドウオープン				-
;------------------------------------------------------------------------
WINDOW_HALL_DT	EQU	$
		HEX	60
		HEX	06,0A,0D,0F,11,12,13,15
		HEX	16,17,18,19,19,1A,1B,1C
		HEX	1C,1D,1D,1E,1E,1E,1F,1F
		HEX	1F,1F,20,20,20,20,20,20
		HEX	20,20,20,20,20,20,1F,1F
		HEX	1F,1F,1E,1E,1E,1D,1D,1C
		HEX	1C,1B,1A,19,19,18,17,16
		HEX	15,13,12,11,11,11,11,12
		HEX	12,12,13,13,13,14,14,14
		HEX	15,15,15,16,16,16,17,17
		HEX	17,18,18,18,19,19,19,1A
		HEX	1A,1A,1B,1B,1B,1C,1C,1C
;
BSCLR_KYWO	EQU	$
		TYX
;
;-------------- プレイヤー＆赤ちゃんパターンセット ----------------------
		JSR	BSCLR_PATN_SET
;
		LDY	<ENWRK4,X
		CPY	#BSCLR_P_5
		BCS	BSCLR_KYWO_0010 ;カギ穴ウィンドウオープンＯＫ？ ( yes:BSCLR_KYWO_0010 )
		RTS
;
BSCLR_KYWO_0010 EQU	$
		LDA	<ENWRK2,X
		BNE	BSCLR_KYWO_0012 ;サウンドセット？ ( no:BSCLR_KYWO_0012 )
;
		LDA	#027H		;[♪]
		JSL	>SOUND_3_ON
;
		LDA	<ENWRK2,X
BSCLR_KYWO_0012 EQU	$
		CMP	#0100H
		BCC	BSCLR_KYWO_0020 ;ウィンドウオープン終了？ ( no:BSCLR_KYWO_0020 )
;
		LDY	<ENWRK4,X
		CPY	#BSCLR_P_6
		BCC	BSCLR_KEY_WIND	;カギ穴ウィンドウクローズへ？ ( yes:BSCLR_KEY_WIND )
;
;-------------- カギ穴ウィンドウクローズ？ ------------------------------
		INC	<ENWRK0,X
;
		LDA	#PBSC		;プレイヤーモードセット
		STA	PLMODE
		STZ	PLJUMP
		STZ	PLSWIM
		RTS
;
BSCLR_KYWO_0020 EQU	$
;;;;		    CLC
		ADC	#010H
		STA	<ENWRK2,X
;
BSCLR_KEY_WIND	EQU	$
;
;-------------- カギ穴の光スクロールカウンターセット --------------------
		LDA	#030H
		STA	R0
		LDA	<ENWRK2,X
		STA	R6
		M_CHIP	MULTIPLY
		LDA	#0FFD8H
		CLC
		ADC	R0
		STA	ESCCV3
		STA	SCCV3
		STZ	ESCCH3
		STZ	SCCH3
;
;-------------- カギ穴の光カラーセット ----------------------------------
		LDA	#(13H*2)*10H
		STA	R0
		LDA	R6
		AND	#0FFF0H
		STA	R6
		M_CHIP	MULTIPLY
;
		PHB			;(DBR) save
		LDY	#BANK DATACOL	;(DBR) <-- DATACOL(B)
		PHY
		PLB
;
		I16
;
		LDA	>R0
		TAX			;(X) <-- カギ穴の光カラーポインター
		LDY	#00
BSCLR_KYWO_0022 EQU	$
		LDA	>COL_ADDRESS+KEY_HOLL_COL_0,X
		STA	DATACOL+2,Y
		STA	MOTOCOL+2,Y
		INX
		INX
		INY
		INY
		CPY	#13H*2
		BCC	BSCLR_KYWO_0022
;
		I8
;
		PLB
;
;-------------- カギ穴ウィンドウセット ----------------------------------
		LDA	#BANK WINDOW_HALL_DT
		STA	R0		;(R0)  <-- window data address(B)
		LDA	#WINDOW_HALL_DT
		STA	R14		;(R14) <--	    "         (L,H)
		STZ	R7		;(R7)  <--	"      center X pos
		LDA	#05FH
		STA	R8		;(R8)  <--	   "          Y  "
		LDA	#080H
		STA	R1		;(R1)  <--    "   display center X pos
		LDA	#096H
		STA	R2		;(R2)  <--	     "           Y  "
;;;;		    LDA	    <ENWRK2,X
;;;;		    STA	    R6		    ;(R6)  <-- zoom flag
		M_CHIP	WINDOW_HALL
;
		JSL	>M_DMA_BFST
		LWORD	WINDBUF		;転送先アドレス
		LWORD	WINDBF		;転送元アドレス
		WORD	(0D2H*4)	;転送バイト数
;
;-------------- window PPU set ----------------------------------
		LDA	#11111111B+(11111111B*100H)
		STA	WIND23		;[ & WIND24 ]
		LDA	MANSEL		;[ & SUBSEL ]
		STA	WMANSL		;[ & WSUBSL ]
		LDA	#0155H		;ウィンドウロジックセット
		STA	WLOGIC
		LDA	#00H		;ウィンドウカラーセット
		STA	>DATACOL
		LDA	#7FFFH
		STA	NUKCOL
;
		LDY	#10100000B
		LDA	PLDSXL
		CMP	#078H+1
		BMI	BSCLR_KYWO_0030 ;ＯＢＪウィンドウ”ＯＮ”？ ( no:BSCLR_KYWO_0030 )
		LDY	#10101000B
BSCLR_KYWO_0030 EQU	$
		STY	WIND25
		LDY	#00100010B
		STY	WIND30
		LDY	#034H		;画面加算キャンセル
		STY	SUBADF
		LDA	#00100000B
		STA	HD420C		;H-DMA "ON" !!
;
		LDX	<ENINDX
		RTS
;
;------------------------------------------------------------------------
;-		カギ穴ウィンドウクローズ				-
;------------------------------------------------------------------------
BSCLW_PL_IN_COL EQU	$
		WORD	07FFFH,07FFFH,07FFFH,07FFFH,07FFFH,07FFFH,07FFFH,07FFFH
		WORD	07FFFH,07FFFH,07FFFH,07FFFH,07FFFH,07FFFH,07FFFH
;
BSCLR_KYWC	EQU	$
		LDA	PLDSXL
		SEC
		SBC	#078H
		BPL	BSCLR_KYWC_0000
		LDA	#0
BSCLR_KYWC_0000 EQU	$
		ASL	A
		ASL	A
		STA	R6		;(R6)  <-- 倍率
		LDA	#080H+51H
		STA	R8		;(R8)  <-- カラーポインター（０〜ＦＦ）
		LDA	#15
		STA	R12		;(R12) <-- カラー数
		LDA	#BSCLW_PL_IN_COL
		STA	R14		;(R14) <-- 先カラーデータアドレス（Ｌ，Ｈ）
		LDA	#BANK BSCLW_PL_IN_COL
		STA	R0		;(R0)  <-- 先カラーデータアドレス（Ｂ）
		M_CHIP	COL_MORF_B
;
		LDX	<ENINDX
;
		LDA	PLDSYL
		CMP	#088H
		BMI	BSCLR_KYWC_0050 ;カギ穴ウィンドウクローズＯＫ？ ( no:BSCLR_KYWC_0050 )
;
		LDA	<ENWRK2,X
		CMP	#0100H
		BNE	BSCLR_KYWC_0002 ;サウンドセット？ ( no:BSCLR_KYWC_0002 )
;
		LDA	#050H		;[♪]
		JSL	>SOUND_3_ON
;
		LDA	<ENWRK2,X
BSCLR_KYWC_0002 EQU	$
		SEC
		SBC	#010H
		STA	<ENWRK2,X
		BNE	BSCLR_KYWC_0050 ;デモ終了？ ( no:BSCLR_KYWC_0050 )
;
;-------------- デモ終了！！ --------------------------------------------
		M_CHIP	WINBFCLR
		LDX	<ENINDX
;
		LDA	#BS_SCRE	;ゴール処理モードセット
		STA	MODENO
		LDA	#00000100B	;ＯＢＪ消去
		STA	MANSEL
		STA	WMANSL
		STZ	NUKCOL
		JSL	>ENCLEAR
;
BSCLR_KYWC_0050 EQU	$
		JMP	BSCLR_KEY_WIND
;
;************************************************************************
;*		initial	 ( ボスクリアーウィンドウ効果 )			*
;************************************************************************
BSCLWIN		EQU	$
		LDA	#02H		;ウィンドウ回数
		STA	<ENCONT,X
BSCLW_INIT	EQU	$
		LDA	#074H		;[♪]
		JSL	>SOUND_3_ON
;
		LDA	#0800H		;ウィンドウ半径拡大スピード初期セット
		STA	ENWRK8,X
		RTL
;
;************************************************************************
;*		move	 ( ボスクリアーウィンドウ効果 )			*
;*			ENCONT <-- ウィンドウ回数			*
;*			ENWRK0 <-- ウィンドウ半径			*
;*			ENWRK2 <-- モーフィングカラー倍率		*
;*			ENWRK4 <-- 元カラー１				*
;*			ENWRK6 <-- 元カラー２				*
;************************************************************************
KOOPA_WIND_COL	EQU	$
; ENCONT -->		 [0]   [2]   [4]   [6]	 [8]
		WORD	0000H,7F00H,23ECH,22DFH
BSCLW_COL_SP	EQU	$
		WORD	02H,  04H,  04H,  04H,	04H
;
BSCLWMV		EQU	$
		LDA	ENCHPT
		CMP	#032H
		BNE	BSCLWMV_FFFE	;赤ちゃん”ピース”？ ( no:BSCLWMV_FFFE )
;
		JSL	>BABYM_CHR_TR2
BSCLWMV_FFFE	EQU	$
		LDA	ENCONT,X
		BPL	BSCLWMV_FFFF	;ウィンドウセット？ ( yes:BSCLWMV_FFFF )
		JMP	BSCLWMV_0012
;
;------------------------------------------------------------------------
;-		ウィンドウセット					-
;------------------------------------------------------------------------
BSCLWMV_FFFF	EQU	$
		LDA	#BANK WINAREA
		STA	R0		;(R0)  <-- ウィンドウ形状データアドレス（Ｂ）
		LDA	#WINAREA
		STA	R4		;(R4)  <--		”	       （Ｌ，Ｈ）
		LDA	ENDSXL,X
		BPL	BSCLWMV_0000
		LDA	#00
BSCLWMV_0000	EQU	$
		CMP	#0100H
		BCC	BSCLWMV_0002
		LDA	#0FFH
BSCLWMV_0002	EQU	$
		STA	R1		;(R1)  <-- ウィンドウ中心Ｘ位置
		CLC
		ADC	SCCH1
		STA	ENXPSL,X
		LDA	ENDSYL,X
		BPL	BSCLWMV_0004
		LDA	#00
BSCLWMV_0004	EQU	$
		CMP	#0D2H
		BCC	BSCLWMV_0006
		LDA	#0D1H
BSCLWMV_0006	EQU	$
		STA	R2		;(R2)  <-- ウィンドウ中心Ｙ位置
		CLC
		ADC	SCCV1
		STA	ENYPSL,X
		LDA	<ENWRK0+1,X
		AND	#00FFH
		STA	R12		;(R12) <-- ウィンドウ半径
		M_CHIP	CIRCLWD
;
		JSL	>M_DMA_BFST
		LWORD	WINDBUF		;転送先アドレス
		LWORD	WINDBF		;転送元アドレス
		WORD	(0D2H*4)	;転送バイト数
;
;------------------------------------------------------------------------
;-		モーフィングカラーセット				-
;------------------------------------------------------------------------
		LDX	<ENINDX
		LDA	<ENWRK2,X
		STA	R6		;(R6) <-- モーフィングカラー倍率
		LDA	<ENWRK4,X
		STA	R1		;(R1) <-- 元カラー
		LDA	ENWRKA,X
		STA	R2		;(R2) <-- 先カラー
		M_CHIP	COL_MORF
		LDX	<ENINDX
;
		LDA	>DATACOL
		BNE	BSCLWMV_0010	;ヌキカラー特殊？ ( yes:BSCLWMV_0010 )
;
		LDY	SUBSEL
		BEQ	BSCLWMV_0010	;		 ”
;
		M8
;
		LDA	MANSEL
		ORA	SUBSEL
		STA	MANSEL
		STZ	SUBSEL
;
		M16
;
		LDA	NUKCOL		;ヌキカラー入れ替え
		STA	>DATACOL
BSCLWMV_0010	EQU	$
		LDA	R3
		STA	NUKCOL		;モーフィングカラーセット
;
		LDA	MANSEL
		STA	WMANSL		;[ & WSUBSL ]
		STZ	WIND23		;[ & WIND24 ]
		LDY	#020H
		STY	WIND25
		LDY	#00010000B
		STY	WIND30
		LDY	#00110111B
		STY	SUBADF
		LDA	#00100000B
		TSB	HD420C		;H-DMA "ON" !!
;
;------------------------------------------------------------------------
;-		モードチェック						-
;------------------------------------------------------------------------
BSCLWMV_0012	EQU	$
		JSL	>ENMDCK
;
		LDA	ENTIM0,X
		CMP	#0140H
		BNE	BSCLWMV_0014	;ボスクリアーサウンドセット？ ( no:BSCLWMV_0014 )
;
;-------------- ボスクリアーサウンドセット ------------------------------
		LDA	#05H		;[♪]
		STA	>SOUND_0
;
		LDA	ENWRKA,X
		BEQ	BSCLWMV_0015	;中ボス？ ( yes:BSCLWMV_0015 )
;
;------------------------------------------------------------------------
;-		ボスクリアーセット					-
;------------------------------------------------------------------------
		JSL	>BOSS_CLEAR_2
		BRA	BSCLWMV_0015
;
;------------------------------------------------------------------------
;-		中ボス”ピース”パターンセット				-
;------------------------------------------------------------------------
BSCLWMV_0014	EQU	$
		CMP	#0C0H
		BNE	BSCLWMV_0015	;”ピース”パターンセット？ ( no:BSCLWMV_0015 )
;
;-------------- ”ピース”パターンセット --------------------------------
		LDA	ENWRKA,X
		BNE	BSCLWMV_0015	;中ボス？ ( no:BSCLWMV_0015 )
;
		LDA	#043H		;[♪]
		JSL	>SOUND_3_ON
;
		JSL	>BERO_CANCEL
		LDA	#BS0E		;プレイヤー”ピース”パターンＮｏ．セット
		STA	PLPATN
		LDA	#032H		;赤ちゃん”ピース”パターンＮｏ．セット
		STA	ENCHPT
;
BSCLWMV_0015	EQU	$
		LDA	ENCONT,X
		BPL	BSCLWMV_0018	;ウィンドウセット？ ( yes:BSCLWMV_0018 )
;
;------------------------------------------------------------------------
;-		ボスクリアーサウンドセット				-
;------------------------------------------------------------------------
		LDA	ENTIM0,X
		BMI	BSCLWMV_0017	;クリアー？ ( yes:BSCLWMV_0017 )
		BEQ	BSCLWMV_0016	;ウェイト？ ( no:BSCLWMV_0016 )
		RTL
;
BSCLWMV_0016	EQU	$
		LDA	ENWRKA,X
		BNE	BSCLWMV_0017	;中ボス？ ( no:BSCLWMV_0017 )
;
;------------------------------------------------------------------------
;-		中ボスクリアーセット					-
;------------------------------------------------------------------------
BOSS_CLEAR_M	EQU	$
		LDA	#06H		;[♪]
		STA	>SOUND_0
;
		LDA	#BS_SCRE	;ゴール処理モードセット
		STA	MODENO
;
		STZ	WMANSL
		LDY	#00000000B
		STY	WIND25
		LDY	#00100010B
		STY	WIND30
		LDY	#00100000B
		STY	SUBADF
		LDA	#00100000B
		TRB	HD420C		;H-DMA "OFF" !!
BSCLWMV_0017	EQU	$
		JMP	>ENCLEAR
;
;------------------------------------------------------------------------
;-		ウィンドウ処理						-
;------------------------------------------------------------------------
BSCLWMV_0018	EQU	$
		LDA	ENWRK8,X
		SEC
		SBC	#040H
		CMP	#0100H
		BCS	BSCLWMV_0020	;ウィンドウ半径拡大スピードＭＩＮオーバー？ ( no:BSCLWMV_0020 )
		LDA	#0100H
BSCLWMV_0020	EQU	$
		STA	ENWRK8,X
;
		CLC
		ADC	<ENWRK0,X	;ウィンドウ半径加算
		STA	<ENWRK0,X
		LDA	<ENWRK2,X	;モーフィングカラー倍率加算
		CMP	#0100H
		BCC	BSCLWMV_0100	;カラーモーフィング終了？ ( no:BSCLWMV_0100 )
;
		LDA	<ENCONT,X
		BNE	BSCLWMV_0050	;ウィンドウ終了？ ( no:BSCLWMV_0050 )
;
;-------------- ボスクリアーサウンドセットへ ----------------------------
		DEC	<ENCONT,X
		RTL
;
BSCLWMV_0050	EQU	$
		DEC	<ENCONT,X	;元カラー２へ
		DEC	<ENCONT,X
		BNE	BSCLWMV_0060	;最後のウィンドウ？ ( no:BSCLWMV_0060 )
;
		LDY	KOOPA_FG
		BEQ	BSCLWMV_0060	;大クッパ？ ( no:BSCLWMV_0060 )
;
		LDA	#07FFFH		;先カラー白へ
		STA	ENWRKA,X
BSCLWMV_0060	EQU	$
		STZ	<ENWRK0,X
		STZ	<ENWRK2,X
		LDA	ENWRK6,X
		LDY	KOOPA_FG
		BEQ	BSCLWMV_0070	;大クッパ？ ( no:BSCLWMV_0070 )
;
		LDY	<ENCONT,X
		LDA	!KOOPA_WIND_COL,Y
BSCLWMV_0070	EQU	$
		STA	<ENWRK4,X
		JMP	BSCLW_INIT	;ウィンドウ半径拡大スピード初期セット
;
BSCLWMV_0100	EQU	$
		LDY	<ENCONT,X
		CLC
		ADC	!BSCLW_COL_SP,Y
		CMP	#0100H
		BCC	BSCLWMV_0150
		LDA	#0100H
BSCLWMV_0150	EQU	$
		STA	<ENWRK2,X
;
;-------------- ”キラキラ”効果セットチェック --------------------------
		CPY	#0
		BEQ	BSCLWMV_0160	;”キラキラ”効果セット？ ( yes:BSCLWMV_0160 )
		CMP	#0C0H
		BCS	BSCLWMV_0200	;”キラキラ”効果セット？ ( no:BSCLWMV_0200 )
;
BSCLWMV_0160	EQU	$
		LDA	<FRCNT2
		AND	#01H
		BNE	BSCLWMV_0200	;”キラキラ”効果セット？ ( no:BSCLWMV_0200 )
;
		LDA	<RANDM0
		STA	R1		;(R1) <-- ランダムデータ
		LDA	<ENWRK0+1,X
		AND	#00FFH
		LSR	A
		NOP
		NOP
		STA	R2		;(R2) <-- ＭＡＸ半径
		LDA	#0500H
		STA	R5		;(R5) <-- セットスピード
		M_CHIP	CIRCL_EXST_ST
		LDX	<ENINDX
;
		LDA	#DUST0		;(A) <-- 効果Ｎｏ．
		JSL	>EXINSR		;効果エリア確保
;
		LDA	ENXPSL,X
		SEC
		SBC	#8
		CLC
		ADC	R1
		STA	EXXPSL,Y	;Ｘ座標セット
		LDA	ENYPSL,X
		SEC
		SBC	#8
		CLC
		ADC	R2
		STA	EXYPSL,Y	;Ｙ座標セット
		LDA	R3
		STA	EXXSPD,Y	;Ｘスピードセット
		LDA	R4
		STA	EXYSPD,Y	;Ｙスピードセット
		LDA	#04H
		STA	EXWRK0,Y	;初期カウンターセット
		LDA	#06H
		STA	EXTIM0,Y	;初期タイマーセット
BSCLWMV_0200	EQU	$
		RTL
;
;------------------------------------------------------------------------
;-		ボスクリアーセット					-
;------------------------------------------------------------------------
BOSS_CLEAR	EQU	$
		JSL	>ENCLEAR_NORETN
BOSS_CLEAR_2	EQU	$
		LDA	#BSCLR		;(A) <-- 敵Ｎｏ．
		JMP	>ENINSR_I	;敵エリア確保
;
;------------------------------------------------------------------------
;-		ボスクリアーウィンドウ効果セット			-
;-			in :						-
;-				(EWK0,1) <-- Ｘ座標			-
;-				(EWK2,3) <-- Ｙ座標			-
;------------------------------------------------------------------------
BSCLW_SET_M	EQU	$
		LDA	#0200H		;(A) <-- ウェイトタイマー
		LDX	#0		;(X) <-- 中ボス
		BRA	BSCLW_SET_0050
;
BSCLW_SET_B	EQU	$
		LDA	#0200H		;(A) <-- ウェイトタイマー
BSCLW_SET_B_T	EQU	$
		LDX	#1		;(X) <-- ボス
BSCLW_SET_0050	EQU	$
		PHA			;(A) save
;
		LDA	#BSCLW		;(A) <-- 敵Ｎｏ．
		JSL	>ENINSR_I	;敵エリア確保
;
		PLA			;(A) load
		BCC	BSCLW_SET_0100	;     ”     ？ ( no:BSCLW_SET_0100 )
;
		STA	ENTIM0,Y	;ウェイトタイマーセット
		LDA	<EWORK0		;Ｘ座標セット
		CLC
		ADC	#8
		STA	ENXPSL,Y
		LDA	<EWORK2		;Ｙ座標セット
		CLC
		ADC	#8
		STA	ENYPSL,Y
		TXA
		STA	ENWRKA,Y	;ボスｏｒ中ボスフラグセット
		ORA	MPTYPE
		ASL	A
		TAX
		LDA	>CURTAIN_COL0,X ;元カラー１セット
		STA	ENWRK4,Y
		LDA	>CURTAIN_COL1,X ;元カラー２セット
		STA	ENWRK6,Y
BSCLW_SET_0100	EQU	$
		LDX	<ENINDX
;
BSCLW_SET_PLSET EQU	$
		LDA	#01H
		STA	PLSTFG
		JMP	>TO_PLDEMO
;
;************************************************************************
;*		intial	( wave lift )					*
;************************************************************************
WAVLFIN		EQU	$
		JSL	>TROBJ_SR_4x4_CL
;
		STZ	ENMUKI,X	;muki reset !!
;
		M8
;
		LDA	#0100H-1	;水中スピード倍率セット
		STA	ENWTSP,X
;
		M16
;
		RTL
;
;************************************************************************
;*		move	( wave lift )					*
;************************************************************************
WAVADD		EQU	$
		WORD	00002H,0FFFEH
WAVANG		EQU	$
; player on pos		[0]  [1]  [2]  [3]  [4]	 [5]  [6]  [7]	[8]  [9]  [A]  [B]  [C]	 [D]  [E]  [F]
		WORD	1E0H,1E0H,1E0H,1E0H,1E0H,1E0H,1E0H,1E0H,1E0H,1E0H,1E4H,1E8H,1ECH,1F0H,1F4H,1F8H,1FCH,1FEH,000H,000H
		WORD	000H,000H,002H,004H,008H,00CH,010H,014H,018H,01CH,020H,020H,020H,020H,020H,020H,020H,020H,020H,020H
WAVXSA		EQU	$
		WORD	00004H,00000H	;[ small ]
		WORD	00006H,0FFFFH	;[ big ]
;
WAVUPT		EQU	$
		WORD	080H,030H,018H,010H,00CH,008H,008H,008H,008H
;
WAVLFMV		EQU	$
		JSL	>TROBJ_OAM_4x4
;
		JSL	>ENMDCK		;mode check
;
;-------------- move --------------------------------------------
;
;-------------- wave angle check ------------------------
;
		I16
;
		LDA	ENWRKC,X
		TAX
		LDA	>ENBGCK_TYPE_L,X
		AND	#WT
		STA	<EWORK4
		LDA	>ENBGCK_TYPE_R,X
		AND	#WT
		STA	<EWORK8
;
		I8
;
		LDX	<ENINDX
		LDA	ENCBFG,X
		AND	#000001B
		BEQ	WVLF012		;foot BG cross ? ( no:WVLF012 )
		JMP	WVLF018
;
WVLF012		EQU	$
		LDA	ENWATR,X
		AND	#00FFH
		STA	<EWORK6
		BNE	WVLF014		;center water in ? ( yes:WVLF014 )
		JMP	WVLF140
;
WVLF014		EQU	$
		LDA	ENTIM2,X
		BNE	WVLF018		;yogan up set ok ? ( no:WVLF018 )
		LDY	#07H*2
		LDA	ENYSPD,X
		CMP	#0E0H
		BPL	WVLF016		;yogan up set ok ? ( yes:WVLF016 )
;
		LDA	ENXSPD,X
		BPL	WVLF015
		EOR	#0FFFFH
		INC	A
WVLF015		EQU	$
		CMP	#040H
		BCC	WVLF018		;yogan up set ok ? ( no:WVLF018 )
;
		ASL	A
		ASL	A
		ASL	A
		XBA
		AND	#07H*2
		TAY
WVLF016		EQU	$
		LDA	!WAVUPT,Y	;next set wait timer set
		STA	ENTIM2,X
;
WVLF018		EQU	$
		LDA	ENYSPD,X
		SEC
		SBC	#020H
		CMP	#0FF80H
		BPL	WVLF020
		LDA	#0FF80H
WVLF020		EQU	$
		STA	ENYSPD,X
;
		I16
;
		LDA	ENWRKC,X
		TAX
		LDA	>ENBGCK_Y_C,X
		SEC
		SBC	>ENBGCK_Y_R,X
		STA	<EWORK2
		LDA	>ENBGCK_Y_C,X
		SEC
		SBC	>ENBGCK_Y_L,X
		PHP
		BPL	WVLF030
		EOR	#0FFFFH
		INC	A
WVLF030		EQU	$
		ASL	A
		ASL	A
		ASL	A
		ASL	A
		ASL	A
		TAX
		LDA	>ATAN,X
		PLP
		BPL	WVLF040
		EOR	#0FFFFH
		INC	A
WVLF040		EQU	$
		STA	<EWORK0		;(EWK0,1) <-- left angle
		LDA	<EWORK2
		PHP
		BPL	WVLF050
		EOR	#0FFFFH
		INC	A
WVLF050		EQU	$
		ASL	A
		ASL	A
		ASL	A
		ASL	A
		ASL	A
		TAX
		LDA	>ATAN,X
		PLP
		BMI	WVLF060
		EOR	#0FFFFH
		INC	A
WVLF060		EQU	$
		CLC
		ADC	<EWORK0
		LSR	A
		AND	#01FEH
		STA	<EWORK0		;(EWK0,1) <-- to angle
;
		LDX	<ENINDX
		LDY	<ENWRK4,X
		BEQ	WVLF070		;player on ? ( no:WVLF070 )
;
		TYA
		CLC
		ADC	#08H
		CMP	#010H
		BCS	WVLF062
		LDY	#00
WVLF062		EQU	$
		TYA
WVLF070		EQU	$
;
		I8
;
		STA	<EWORK2
		SEC
		SBC	ENWRK6,X
		LDY	#00
		AND	#0100H
		BEQ	WVLF110
		LDY	#02
WVLF110		EQU	$
		LDA	ENWRK6,X
		CLC
		ADC	!WAVADD,Y
		AND	#01FEH
		STA	ENWRK6,X
		SEC
		SBC	<EWORK2
		EOR	!WAVADD,Y
		BMI	WVLF120		;to angle over ? ( no:WVLF120 )
;
		LDA	<EWORK2
		STA	ENWRK6,X
;
;-------------- lift move speed set ---------------------
WVLF120		EQU	$
		LDA	<ENWRK4,X
		BEQ	WVLF125		;player on ? ( no:WVLF125 )
;
		CLC
		ADC	#018H*2
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		AND	#03H*2
		TAY
		LDA	EWORK4,Y
		BEQ	WVLF124		;move pos water in ? ( no:WVLF124 )
;
		LDY	#00		;speed add data index( small )
		LDA	<EWORK2
		BRA	WVLF1240
;
WVLF124		EQU	$
		LDA	<EWORK0
		ASL	A
		ASL	A
WVLF1240	EQU	$
		SEC			;[ 右へ右へ ]
		SBC	#010H		;[
		AND	#01FEH
WVLF125		EQU	$
		LDY	#04		;speed add data index( big )
WVLF126		EQU	$
;
		I16
;
		TAX
		LDA	>SIN,X
		ASL	A
;
		I8
;
		LDX	<ENINDX
		CMP	ENXSPD,X
		BPL	WVLF130
		INY
		INY
WVLF130		EQU	$
		LDA	ENXSPD,X
		CLC
		ADC	!WAVXSA,Y
		STA	ENXSPD,X
;
;-------------- player cross check ----------------------
WVLF140		EQU	$
		LDY	<ENWRK4,X
		BEQ	WVLF150		;player on ? ( no:WVLF150 )
;
		LDA	ENMOVX,X
		CLC
		ADC	PLXPSL
		STA	PLXPSL
		LDA	EPWIDX,X
		SEC
		SBC	ENMOVX,X
		STA	EPWIDX,X
		STZ	<ENWRK4,X	;lift on check flag reset
;
WVLF150		EQU	$
		LDA	PLYSPD
		BMI	WVLF190		;player jump up ? ( yes:WVLF190 )
;
		LDA	EPWIDX,X
		CLC
		ADC	#014H
		CMP	#028H
		BCS	WVLF190		;player X pos cross ? ( no:WVLF190 )
;
		TXY			;(Y) <-- (X)
;
		I16
;
		LDX	ENWRK6,Y	;(X) <-- angle
		LDA	>TAN,X
;
		M8
;
		STA	211BH
		XBA
		STA	211BH
		TYX
		LDA	EPWIDX,X
		STA	211CH
;
		M16
		I8
;
		LDA	2135H
		CLC
		ADC	ENYPSL,X
		SEC
		SBC	PLYPSL
		SEC
		SBC	#020H
		CMP	#0FFF8H
		BCC	WVLF190		;foot cross ? ( no:WVLF190 )
;
;;;;	CLC
		INC	A		;[ +1 ]
		ADC	PLYPSL		;player foot hosei !!
		STA	PLYPSL
		LDA	#0100H		;down Y speed set
		STA	PLYSPD
		INC	ONLFFG		;lift "ON" !!
		STZ	PLBGNO		;foot BG set
;
		LDA	#010H		;プレイヤー溶岩で死なない様に
		STA	PL_NO_DOWN
;
		LDA	EPWIDX,X
		BNE	WVLF160
		INC	A
WVLF160		EQU	$
		ASL	A
		AND	#01FEH
		STA	<ENWRK4,X	;lift on check flag "ON" !!
;
WVLF190		EQU	$
;
;-------------- OBJ mode7 calculate timming check ---------------
		TROBJ_CHK_4
		BEQ	WVLF410		;OBJ mode7 calculate ok ? ( yes:WVLF410 )
		JMP	WVLF500
;
WVLF410		EQU	$
;
;-------------- OBJ mode 7 set ----------------------------------
		LDA	ENWRK6,X
		LSR	A
		STA	R5		;(R5)  <-- angle
		LDY	ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_X,X
		STA	R3		;(R3)  <-- plot start X pos
		LDA	>TROBJ_PLOT_Y,X
		STA	R2		;(R2)  <--	"     Y  "
		LDA	#0100H
		STA	R6		;(R6)  <-- zoom flag
		LDA	#CIPCHD+4060H
		STA	R12		;(R12) <-- chara address(L,H)
		LDA	#BANK CIPCHD+4060H
		STA	R13		;(R13) <--	  "     (B)
;
		I8
;
		M_CHIP	C_32_ROTZOM
;
		INC	OBM7WF		;mode 7 OBJ chara DMA "ON"
;
		LDX	<ENINDX
WVLF500		EQU	$
		RTL
;
;
;
;
;
		END
