;************************************************************************
;*									*
;*	title name	: "yossy"					*
;*	proccess	: enemy sub.1					*
;*	file name	: ys_enmy9					*
;*									*
;************************************************************************
;
;
		SALL
;
		include		ys_header.inc
		include		ys_unit.h
		include		ys_pld.h
		include		ys_color.h
		include		ys_ename.h
		include		../union/ys_bgcheck.h
		include		ys_presno.h
;
		XALL
;
;
;------------------------------------------------------------------------
;-		global symbol						-
;------------------------------------------------------------------------
		GLB	TURARIN, GRCKSIN, GROCKIN
		GLB	NISEFIN, KOUNBIN, TARKNIN, STRKNIN, FTRKNIN
		GLB	BATSBIN, FIRBRIN, FIRB2IN
		GLB	NZANAIN, NZAN2IN, NEZMIIN, NEZM2IN, TIMKNIN
		GLB	BFISHIN, YGFSHIN, MAGICIN, TULIPIN, WPKPKIN
		GLB	JFISHIN, HBNBNIN, TELELIN, KAMC2IN, TBHIHIN, COIN2IN
		GLB	COINRIN, BG3LFIN, PONPUIN, RAKUGIN, YOSSYIN, MSHIHIN
		GLB	PANDAIN, BATSAIN, BATSCIN, SKLNZIN, BLTLSIN, KAMECIN
		GLB	COMCHIN, GSTH0IN
;
		GLB	TURARMV, GRCKSMV, GROCKMV
		GLB	NISEFMV, KOUNBMV, TARKNMV, STRKNMV, FTRKNMV
		GLB	BATSBMV, FIRBRMV, FIRB2MV
		GLB	NZANAMV, NZAN2MV, NEZMIMV, NEZM2MV, TIMKNMV
		GLB	BFISHMV, YGFSHMV, MAGICMV, TULIPMV, WPKPKMV
		GLB	JFISHMV, HBNBNMV, TELELMV, KAMC2MV, TBHIHMV, COIN2MV
		GLB	COINRMV, BG3LFMV, PONPUMV, RAKUGMV, YOSSYMV, MSHIHMV
		GLB	PANDAMV, BATSAMV, BATSCMV, SKLNZMV, BLTLSMV, KAMECMV
		GLB	COMCHMV, GSTH0MV
;
		GLB	PANDAFL, BATSAFL, BATSCFL, SKLNZFL, BLTLSFL, KAMECFL
		GLB	COMCHFL, GSTH0FL
;
		GLB	GSTH0_CHRST, GSTH0_CRCRINST, KAMC2COLRESET_L
		GLB	MSHIHCHRST, KAMC2FUWA_L
		GLB	DOROBOUCANCEL, DEATHENEMY
		GLB	COIN_CATCH
;
		GLB	CURTAIN_COL0, CURTAIN_COL1
;
		GLB	RED_COINMUCHO, COINMUCHO
;
		GLB	COINR_GET
;
		GLB	Donb, Slim, Puti, Tubo, Tlsa, Gero, Nknk
		GLB	Pakn, Kmkj, Qcan, Kati
;
;------------------------------------------------------------------------
;-		extern symbol						-
;------------------------------------------------------------------------
;
;-------------< ys_main >------------------------------------------------
		EXT	RANDAM
		EXT	D_00,GMIN
		EXT	SOUND_3_ON
;
;-------------< ys_init >------------------------------------------------
		EXT	UNCOMPRES,VRAMDX_ST,UNCOMPRES_X
;
;-------------< ys_rpro >------------------------------------------------
		EXT	JSRSUB
		EXT	CHIPON, CHIPON_RAM_READ, M_DMA_BFST
;
;-------------< ys_start >-----------------------------------------------
		EXT	STT_PL_STP
;
;-------------< ys_play >------------------------------------------------
		EXT	TIMEUP_SET,TIMEUP_SET_S
		EXT	EBSTAT
		EXT	PSTP,PMOV,PCLR,PGUS,PSDM
		EXT	PFLP,PSHT
		EXT	EGG_WARE_SET
;
;-------------< ys_bgsc >------------------------------------------------
		EXT	BLK0, BGCG
		EXT	UNITCHG
;
;-------------< ys_enmy >------------------------------------------------
		EXT	ENEMY,ENINSB
		EXT	ENCLEAR,DISPCK0,DISPCK2
		EXT	ENINSR,ENINSR2,EEXCHK,EEYCHK,EEXYCK,ESTATST,ENINSR_I
		EXT	ENINSR2_I
		EXT	SCOREST
		EXT	ENMDCK,XSDOWN,EPCRCK,MUKEOR,XSPEOR,MKEOR2,PLFLST
		EXT	POBBGCR,BOBBGCR
;
		EXT	ENRETURN
		EXT	ENCLEAR_NORETN,ENCLEAR_NORETN2
;
		EXT	EXIST_CHECK2,NON_EXIST_SET,NON_EXIST_SET2
;
		EXT	PLAYER_REBOUND
;
		EXT	EINIT,EFAIL,EMOVE,EEATM,ENOSE,EBABL,EFALL
		EXT	EFIRE,ECHNG
;
		EXT	COS,SIN
;
		EXT	EATMXS,NOSWT
;
		EXT	EN_XYMOVE,ENDEATH_SET,ENDEATH_SET_2,ENDEATH_SET_3,ENDEATH_SET_4
		EXT	EGGKILL_ALL
		EXT	PL_1UP_SET_P,PL_1UP_SET
		EXT	EGGKILL
;
		EXT	EGG00_MVINT,FSMK0_SET2
;
		EXT	TROBJ_SR_2x2,TROBJ_SR_4x4,TROBJ_SR_8x8,TROBJ_SR_8x4
		EXT	TROBJ_SR_2x2_CL,TROBJ_SR_4x4_CL,TROBJ_SR_8x8_CL
		EXT	TROBJ_SR_8x4_CL,TROBJ_SR_6x4_CL
		EXT	TROBJ_OAM_8x4
		EXT	TROBJ_OAM_2x2,TROBJ_OAM_4x4,TROBJ_OAM_8x8,TROBJ_OAM_8H8
		EXT	TROBJ_OAM_2x2_I,TROBJ_OAM_4x4_I,TROBJ_OAM_8x8_I
		EXT	TROBJ_CLEAR
		EXT	TROBJ_PLOT_X,TROBJ_PLOT_Y
		EXT	TROBJ_CHAR_NO
;
		EXT	SHOT_EN_KILL, FSMK0_SET, FSMK2_SET, FUNDA_ENFALL_L
		EXT	ENFALL_END, FSMK2_ST2
		EXT	SCORE_SET, COIN1_END_SET, EX_COIN_SET
		EXT	EX_COIN_SET_3, BLUE_COIN_INC
;
		EXT	QKM_COIN_XSP
;
		EXT	POBBGCR_2
;
		EXT	EGGTM
;
;-------------< ys_enmy2 >-----------------------------------------------
		EXT	COLD_KIRAKIRA, KINOMI_CANCEL
		EXT	FUSNB_SET, MISA0_KILL
		EXT	TO_PLDOWN
;
;-------------< ys_enmy3 >-----------------------------------------------
		EXT	ICE_IN_CK, KIRAKIRA_SET, TO_PLDEMO_2, GOAL0_CHR_SET
;
;-------------< ys_enmy4 >-----------------------------------------------
		EXT	JBLKLIN
;
;-------------< ys_enmy6 >-----------------------------------------------
		EXT	LOCKON_TARGET, LOCKON_TARGET2
		EXT	DOKAN_CHECK, DOKAN_CHECK2
;
;-------------< ys_enmy7 >-----------------------------------------------
		EXT	EPFOOTCROSS, EPFOOTCROSS_01, PLCRSCK, NKNKPLCRSCK
;
		EXT	sec01,sec02,sec03,sec04,sec05,sec06,sec07,sec08,sec09,sec10
;
		EXT	ShotXspdCHK,ShotXspdCHK2
;
;-------------< ys_enmy8 >-----------------------------------------------
		EXT	PKPK2_FALL, TRBOXIN, COIN1IN
;
;-------------< ys_msgdt >------------------------------------------------
		EXT	bs1_MSG,BS1_MSG,bs2_MSG,BS2_MSG,bs3_MSG,BS3_MSG
		EXT	bs4_MSG,BS4_MSG,bs5_MSG,BS5_MSG,bs6_MSG,BS6_MSG_5
;
;-------------< ys_hajime-chan >------------------------------------------------
		EXT	BABYM_RMODE00
		EXT	BABYM_RMODE10
		EXT	BABYM_RMODE38
		EXT	BABYM_RMODE50
		EXT	BABYM_RMODE51
		EXT	BABYM_RMODE52
		EXT	BABYM_RMODE60
		EXT	BABYM_RMODE61
		EXT	BABYM_RMODE70
		EXT	BABYM_RMODE71
;
		EXT	B_SP_RMODE20
;
		EXT	BABYM_SHABN_BRK
		EXT	BABYM_SHABN_C2
;
;-------------< ys_exst >------------------------------------------------
		EXT	EXINSR
;
		EXT	FSMK2P
;
;-------------< ys_unit >------------------------------------------------
		EXT	UNDTADD,UNDATA,RUTDATA
;
;------------------------------------------------------------------------
;-		define symbol						-
;------------------------------------------------------------------------
msec0125	EQU	(64/8)
msec0250	EQU	(64/4)
msec0500	EQU	(64/2)
;
;
;************************************************************************
;*									*
;*		program start						*
;*									*
;************************************************************************
;
		EXTEND
;
		MEM16
		IDX8
;
		DPAGE	EN0RAM
;
Group_C		GROUP	Enemy9_pro
Enemy9_pro	SECT	REL
;
;
;------------------------------------------------------------------------
;-	initial (つらら)						-
;------------------------------------------------------------------------
turara00	EQU	00
turara01	EQU	01
turara02	EQU	02
;
turara_search	EQU	060H
;
TURARA_CNTYW	EQU	$
		WORD	00000H, -0007H, -000DH
;
TURARA_WIDEY	EQU	$
		WORD	0000EH, 00015H, 0001BH
;
TURARIN		EQU	$
		STZ	!ENYSPD,X
		LDA	#-1
		STA	!ENYUSN,X
		RTL
;
;
;------------------------------------------------------------------------
;-	move (つらら)							-
;------------------------------------------------------------------------
TURARMV		EQU	$
		JSL	>ENMDCK			; mode check
;
		LDA	!ENCHPT,X
		ASL	A
		TAY
		LDA	TURARA_CNTYW,Y
		STA	!ECNTYW,X
		LDA	TURARA_WIDEY,Y
		STA	!EWIDEY,X
;
		LDA	<ENCONT,X
		TAX
		JMP	(TURARMVMODSEL,X)
;
TURARMVMODSEL	EQU	$
		WORD	TURARASACH
		WORD	TURARABGCG
		WORD	TURARAGURA
		WORD	TURARAFALL
;
;
TURARASACH	EQU	$
		LDX	<ENINDX
		JSR	TURARABGCHK
;
		LDA	!ECENTX,X
		SEC
		SBC	!PCENTX
		CLC
		ADC	#turara_search
		CMP	#turara_search*2
		BCS	TURARASACH00F0		; プレイヤー侵入 ? [no->TURARASACH00F0]
;
		LDA	!ECENTY,X
		SEC
		SBC	!PCENTY
		SEC
		SBC	#00020H
		BPL	TURARASACH00F0		; プレイヤー侵入 ? [no->TURARASACH00F0]
;
		LDA	#(TURARAGURA-TURARAGURADAT-2)
		STA	<ENWRK0,X
		INC	<ENCONT,X
		INC	<ENCONT,X
TURARASACH00F0	EQU	$
		RTL
;
;
TURARABGCG	EQU	$
		LDX	<ENINDX
		JSR	TURARABGCHG
;
		LDA	#00059H
		JSL	>SOUND_3_ON		; サウンド セット！！
;
		LDA	!ENCHPT,X
		STA	<ENWRK2,X
		INC	<ENCONT,X
		INC	<ENCONT,X
		RTL
;
;
TURARAGURADAT	EQU	$
		WORD	0, -1, 1, 1, -1, -1, 1, 1, -1
		WORD	-1, 1, 1, -1, -1, 1, 1, -1
		WORD	-1, 1, 1, -1, -1, 1, 1, -1
;
TURARAGURA	EQU	$
		LDX	<ENINDX
		JSR	TURARACRCK		; オブジェどうしの衝突チェック !!
;
		LDA	!ENTIM0,X
		BNE	TURARAGURA00F0		; position change ? [no->TURARAGURA00F0]
;
		LDY	<ENWRK0,X
		BEQ	TURARAGURA0100		; 落下 ? [yes->TURARAGURA0100]
;
		LDA	!ENXPSL,X
		CLC
		ADC	TURARAGURADAT,Y
		STA	!ENXPSL,X
		LDA	#0001
		STA	!ENTIM0,X
		DEC	<ENWRK0,X
		DEC	<ENWRK0,X
TURARAGURA00F0	EQU	$
		RTL
;
TURARAGURA0100	EQU	$
		LDA	#00040H
		STA	!ENGPOW,X
		INC	<ENCONT,X
		INC	<ENCONT,X
		RTL
;
;
TURARAFALL	EQU	$
		LDX	<ENINDX
		JSR	TURARABGCK		; ＢＧチェック !!
;
		JSR	TURARACRCK		; オブジェどうしの衝突チェック !!
;
		RTL
;
;
TURARABGCHK	EQU	$
		LDA	!ENXPSL,X
		CLC
		ADC	#00008H
		STA	R8			; チェック座標 X !!
		LDA	!ENYPSL,X
		CLC
		ADC	#00008H
		STA	R0			; チェック座標 Y !!
		M_CHIPR M_BGUNIT_READ
;
		LDX	<ENINDX
		LDA	R6			; BG unit no.
		CMP	#UT8E00
		BEQ	TURARABGCHK00F0		; Unit UT8E00 ? [yes->TURARABGCHK00F0]
;
		CMP	#UT8E01
		BEQ	TURARABGCHK00F0		; Unit UT8E01 ? [yes->TURARABGCHK00F0]
;
		CMP	#UT8E02
		BEQ	TURARABGCHK00F0		; Unit UT8E02 ? [yes->TURARABGCHK00F0]
;
		PLA
		JMP	>ENCLEAR_NORETN
;
TURARABGCHK00F0 EQU	$
		RTS
;
;
TURARACHGNO0	EQU	$
		WORD	UT0000, UT0000, UT0000, UT8DA8
;
TURARACHGNO1	EQU	$
		WORD	UT0000, UT0000, UT8DA8, UT79A3
;
TURARACHGNO2	EQU	$
		WORD	UT0000, UT8DA8, UT79A4, UT79A3
;
TURARACHGNO3	EQU	$
;
TURARABGCHG	EQU	$
		LDA	!ENXPSL,X
		CLC
		ADC	#00008H
		STA	R8			; チェック座標 X !!
		STA	<EWORK
		LDA	!ENYPSL,X
		CLC
		ADC	#00008H
		STA	R0			; チェック座標 Y !!
		STA	<EWORK2
		M_CHIPR M_BGUNIT_READ
;
		LDX	<ENINDX
		LDA	R6			; BG unit no.
		CMP	#UT8E00
		BNE	TURARABGCHG0040		; Unit UT8E00 ? [no->TURARABGCHG0040]
;
		LDA	#turara02
		STA	!ENCHPT,X
		LDA	!ENYPSL,X
		CLC
		ADC	#00020H
		STA	!ENYPSL,X
		LDA	#TURARACHGNO0
		STA	<EWORK4
		LDY	#(TURARACHGNO1-TURARACHGNO0-2)
		JMP	TURARAUNITCHG
;
TURARABGCHG0040 EQU	$
		CMP	#UT8E01
		BNE	TURARABGCHG0080		; Unit UT8E01 ? [no->TURARABGCHG0080]
;
		LDA	#turara01
		STA	!ENCHPT,X
		LDA	!ENYPSL,X
		CLC
		ADC	#00010H
		STA	!ENYPSL,X
		LDA	#TURARACHGNO1
		STA	<EWORK4
;
		LDA	<EWORK
		STA	R8			; チェック座標 X !!
		LDA	<EWORK2
		SEC
		SBC	#00010H
		STA	R0			; チェック座標 Y !!
		STA	<EWORK2
		M_CHIPR M_BGUNIT_READ
;
		LDX	<ENINDX
		LDY	#(TURARACHGNO2-TURARACHGNO1-2)
		LDA	R6			; BG unit no.
		CMP	#UT8E00
		BNE	TURARABGCHG0060		; 天井 ? [yes->TURARABGCHG0060]
;
		JMP	TURARAUNITCHG		; 天井 ? [no->TURARAUNITCHG]
;
TURARABGCHG0060 EQU	$
		LDA	<EWORK2
		CLC
		ADC	#00010H
		STA	<EWORK2
		DEY
		DEY
		BRA	TURARAUNITCHG
;
TURARABGCHG0080 EQU	$
		CMP	#UT8E02
		BNE	TURARABGCHG00C0		; Unit UT8E02 ? [no->TURARABGCHG00C0]
;
		LDA	#turara00
		STA	!ENCHPT,X
		LDA	#TURARACHGNO2
		STA	<EWORK4
;
		LDA	<EWORK
		STA	R8			; チェック座標 X !!
		LDA	<EWORK2
		SEC
		SBC	#00010H
		STA	R0			; チェック座標 Y !!
		M_CHIPR M_BGUNIT_READ
;
		LDX	<ENINDX
		LDY	#(TURARACHGNO3-TURARACHGNO2-6)
		LDA	R6			; BG unit no.
		CMP	#UT79A2
		BEQ	TURARAUNITCHG		; 天井 ? [yes->TURARAUNITCHG]
;
		INY
		INY
		PHY
		LDA	<EWORK
		STA	R8			; チェック座標 X !!
		LDA	<EWORK2
		SEC
		SBC	#00010H
		STA	<EWORK2
		SEC
		SBC	#00010H
		STA	R0			; チェック座標 Y !!
		M_CHIPR M_BGUNIT_READ
;
		LDX	<ENINDX
		PLY
		LDA	R6			; BG unit no.
		CMP	#UT79A2
		BEQ	TURARAUNITCHG		; 天井 ? [yes->TURARAUNITCHG]
;
		LDA	<EWORK2
		SEC
		SBC	#00010H
		STA	<EWORK2
		INY
		INY
		BRA	TURARAUNITCHG
;
TURARABGCHG00C0 EQU	$
		PLA
		JMP	>ENCLEAR_NORETN
;
TURARAUNITCHG	EQU	$
		PHY
		LDA	!ENCHPT,X
		ASL	A
		TAY
		LDA	TURARA_CNTYW,Y
		STA	!ECNTYW,X
		LDA	TURARA_WIDEY,Y
		STA	!EWIDEY,X
		LDA	#00005H
		STA	!ENYUSN,X
		PLY
TURARAUTCHG0040 EQU	$
		LDA	<EWORK
		STA	!BGXPS1			;BG write X pos set
		LDA	<EWORK2
		STA	!BGYPS1			;    "    Y   "
		LDA	#BGCG
		STA	BGCGNO			; " change type no. set
		LDA	(<EWORK4),Y
		STA	BGUTNO			;     "    unit no.
		PHY
		JSL	>UNITCHG
;
		PLY
		LDA	<EWORK2
		CLC
		ADC	#00010H
		STA	<EWORK2
		DEY
		DEY
		BPL	TURARAUTCHG0040		; ユニットチェンジ終了 ? [no->TURARAUTCHG0040]
;
		LDX	<ENINDX
		RTS
;
;
TURARACRCK	EQU	$
		LDY	!ECRSFG,X
		BPL	TURARACRCK0040		; プレイヤーと衝突 ? [no->TURARACRCK0040]
;
		JSL	>PLFLST
;
TURARACRCK0020	EQU	$
		RTS
;
TURARACRCK0040	EQU	$
		TXA
		STA	R1
		PHX
		M_CHIP	MY_ENCROS2
		PLX
;
		LDY	R14
		BMI	TURARACRCK0020		; 衝突無し ? [yes->TURARACRCK0020]
		BEQ	TURARACRCK0020		; 赤ちゃんと衝突 ? [yes->TURARACRCK0020]
;
		LDA	!ENMODE,Y
		CMP	#EFAIL
		BCC	TURARACRCK0020		; mode move ? [no->TURARACRCK0020]
;
		LDA	!ENMOD1,Y
		BIT	#0110000000000000B
		BNE	TURARACRCK0020		; 敵 ? [no->TURARACRCK0020]
;
		TYX
		JSL	>DEATHENEMY
;
		JSL	>ENDEATH_SET
;
		LDX	<ENINDX
		RTS
;
;
TURARABGCK	EQU	$
		LDA	!ENCBFG,X
		BIT	#0000000000000001B
		BNE	TURARABGCK0040		; 床当たり ? [yes->TURARABGCK0040]
;
		RTS
;
TURARABGCK0040	EQU	$
;
		I16				; index 16bit mode !!
;
		LDA	!ENWRKC,X
		TAX
		LDA	>ENBGCK_TYPE_F,X
		AND	#1111100000000000B
		CMP	#ET
		BNE	TURARABGCK0080		; 食べれるＢＧ ? [no->TURARABGCK0080]
;
		LDA	>ENBGCK_X_F,X
		STA	!BGXPS1
		STA	<EWORK
		LDA	>ENBGCK_Y_F,X
		STA	!BGYPS1
		STA	<EWORK2
		LDA	#BLK0
		STA	!BGCGNO
;
		I8				; index 8bit mode !!
;
		JSL	>UNITCHG
;
		LDA	#BRBG0
		JSL	>EXINSR
;
		LDA	<EWORK
		AND	#0FFF0H
		STA	!EXXPSL,Y
		LDA	<EWORK2
		AND	#0FFF0H
		STA	!EXYPSL,Y
		LDA	#0000AH
		STA	!EXCHPT,Y
		LDA	#0002
		STA	!EXTIM0,Y
;
		LDA	#00066H
		JSL	>SOUND_3_ON		; サウンド セット !!
;
		LDX	<ENINDX
		DEC	<ENWRK2,X
		BMI	TURARABGCK0080		; つらら壊れ ? [yes->TURARABGCK0080]
;
		RTS
;
TURARABGCK0080	EQU	$
;
		I8				; index 8bit mode !!
;
		LDX	<ENINDX
;
		LDA	#00066H
		JSL	>SOUND_3_ON		; サウンド セット !!
;
		LDA	!ENYPSL,X
		SEC
		SBC	#00008H
		STA	<EWORK
		LDA	!ENCHPT,X
		STA	<EWORK2
TURARABGCK00A0	EQU	$
		LDA	#ICECL
		JSL	>EXINSR
;
		LDA	!ENXPSL,X
		STA	!EXXPSL,Y
		LDA	<EWORK
		STA	!EXYPSL,Y
		SEC
		SBC	#00008H
		STA	<EWORK
		LDA	#0000BH
		STA	!EXCHPT,Y
		LDA	#0004
		STA	!EXTIM0,Y
		DEC	<EWORK2
		BPL	TURARABGCK00A0		; 効果セット終了 ? [no->TURARABGCK00A0]
		PLA
		JMP	>ENCLEAR_NORETN
;
;
;------------------------------------------------------------------------
;		LDA	ENXPSL,X
;		STA	BGXPS1		;BG write X pos set
;		LDA	ENYPSL,X
;		STA	BGYPS1		;    "    Y   "
;		LDA	#BGCG
;		STA	BGCGNO		; " change type no. set
;		LDA	#UT1516
;		STA	BGUTNO		;     "    unit no.
;		JSL	>UNITCHG
;
;		LDX	<ENINDX
;--------------------------------------------------------------
;------------------------------------------------------------------------
;-	initial (栗坊)							-
;------------------------------------------------------------------------
kuribou00	EQU	000H
kuribou01	EQU	001H
kuribou02	EQU	002H
kuribou03	EQU	003H
kuribou04	EQU	004H
kuribou05	EQU	005H
kuribou06	EQU	006H
kuribou07	EQU	007H
kuribou08	EQU	008H
kuribou09	EQU	009H
kuribou0A	EQU	00AH
kuribou0B	EQU	00BH
kuribou0C	EQU	00CH
kuribou0D	EQU	00DH
kuribou0E	EQU	00EH
kuribou0F	EQU	00FH
kuribou10	EQU	010H
;
kuribou_walk	EQU	(kuri_walk-KURIBMVMODSEL)
kuribou_turn	EQU	(kuri_turn-KURIBMVMODSEL)
kuribou_jump	EQU	(kuri_jump-KURIBMVMODSEL)
kuribou_wlk2	EQU	(kuri_wlk2-KURIBMVMODSEL)
kuribou_fumr	EQU	(kuri_fumr-KURIBMVMODSEL)
kuribou_pon	EQU	(kuri_pon-KURIBMVMODSEL)
;
koribou_walktm	EQU	04
koribou_wlk2tm	EQU	02
;
kboujumpchance	EQU	(KURIBOUJUMPTM-KURIBOUJUMPPT-6)
;
PANDAIN		EQU	$
		JSL	>KURIBOUWALKIN
		RTL
;
;
;------------------------------------------------------------------------
;-	move (栗坊)							-
;------------------------------------------------------------------------
PANDAMV		EQU	$
		JSL	>ENMDCK			; mode check
;
		JSL	>NKNKPLCRSCK		; どすんで踏まれたかチェック！！
;
		JSL	>EPCRCK
;
		LDY	<ENCONT,X
		TYX
		JMP	(KURIBMVMODSEL,X)
;
KURIBMVMODSEL	EQU	$
kuri_walk	WORD	KURIBOUWALK
kuri_turn	WORD	KURIBOUTURN
kuri_jump	WORD	KURIBOUJUMP
kuri_wlk2	WORD	KURIBOUWLK2
kuri_fumr	WORD	KURIBOUFUMR
kuri_pon	WORD	KURIBPON
;
;
KURIBOUJUMPPT	EQU	$
		BYTE	kuribou00, kuribou0F, kuribou10, kuribou00
		BYTE	kuribou08, kuribou00, kuribou08, kuribou00
;
KURIBOUJUMPTM	EQU	$
		HEX	20, 00, 00, 04, 04, 04, 04, 20
;
KURIBOUJUMPIN	EQU	$
		LDA	#kuribou_jump
		STA	<ENCONT,X
		LDA	#(KURIBOUJUMPTM-KURIBOUJUMPPT-1)
		STA	<ENWRK0,X
;
		M8				; memory 8bit mode !!
;
		TAY
		LDA	KURIBOUJUMPPT,Y
		STA	!ENCHPT,X
		LDA	KURIBOUJUMPTM,Y
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
;
KURIBOUTURNPT	EQU	$
		BYTE	kuribou00, kuribou00
		BYTE	kuribou08, kuribou00, kuribou08, kuribou00
;
KURIBOUTURNTM	EQU	$
		HEX	04, 04, 04, 04, 04, 20
;
KURIBOUTURNIN	EQU	$
		LDA	#kuribou_turn
		STA	<ENCONT,X
		LDA	#(KURIBOUTURNTM-KURIBOUTURNPT-1)
		STA	<ENWRK0,X
;
		M8				; memory 8bit mode !!
;
		TAY
		LDA	KURIBOUTURNPT,Y
		STA	!ENCHPT,X
		LDA	KURIBOUTURNTM,Y
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
;
KURIBOUWALKSPD	EQU	$
		WORD	-00100H, 00100H
;
KURIBOUWALKIN	EQU	$
		STZ	<ENCONT,X
		LDA	#koribou_walktm
		STA	!ENTIM0,X
		STZ	!ENCHPT,X
		LDY	!ENMUKI,X
		RTL
;
;
KURIBOUWALK	EQU	$
		LDX	<ENINDX
		STZ	!ENXSPD,X
		LDA	!ENCBFG,X
		BIT	#0000000000000001B
		BEQ	KURIBOUJUMPIN		; ジャンプ ? [yes->KURIBOUJUMPIN]
;
		BIT	#0000000000001100B
		BNE	KURIBOUTURNIN		; 反転 ? [yes->KURIBOUTURNIN]
;
		LDA	!ENTIM0,X
		BNE	KURIBOUWALK0080		; pattern change ? [no->KURIBOUWALK0080]
;
		LDA	!ENCHPT,X
		INC	A
		AND	#00007H
		STA	!ENCHPT,X
		LDA	#koribou_walktm
		STA	!ENTIM0,X
		RTL
;
KURIBOUWALK0080 EQU	$
		CMP	#0001
		BNE	KURIBOUWALK00F0		; [->KURIBOUWALK00F0]
;
		LDY	!ENMUKI,X
		LDA	KURIBOUWALKSPD,Y
		STA	!ENXSPD,X
KURIBOUWALK00F0 EQU	$
		RTL
;
;
KURIBOUTURN	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	KURIBOUTURN00F0		; pattern change ? [no->KURIBOUTURN00F0]
;
		DEC	<ENWRK0,X
		BMI	KURIBOUWALKIN		; 歩き開始 ? [yes->KURIBOUWALKIN]
;
		M8				; memory 8bit mode !!
;
		BNE	KURIBOUTURN0080		; 向き変え ? [no->KURIBOUTURN0080]
;
		LDA	!ENMUKI,X
		EOR	#00002H
		STA	!ENMUKI,X
KURIBOUTURN0080 EQU	$
		LDY	<ENWRK0,X
		LDA	KURIBOUTURNPT,Y
		STA	!ENCHPT,X
		LDA	#koribou_walktm
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
KURIBOUTURN00F0 EQU	$
		RTL
;
;
KURIBOUJUMPXSPD EQU	$
		WORD	-00040H, 00040H
;
KURIBOUJUMP	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	KURIBOUJUMP00F0		; pattern change ? [no->KURIBOUJUMP00F0]
;
		LDA	!ENCBFG,X
		BIT	#0000000000000001B
		BEQ	KURIBOUJUMP0100		; 空中 ? [yes->KURIBOUJUMP0100]
;
		STZ	!ENXSPD,X
		DEC	<ENWRK0,X
		BPL	KURIBOUJUMP0080		; [->KURIBOUJUMP0080]
;
		JMP	KURIBOUWALKIN
;
KURIBOUJUMP0080 EQU	$
;
		M8				; memory 8bit mode !!
;
		LDY	<ENWRK0,X
		LDA	KURIBOUJUMPPT,Y
		STA	!ENCHPT,X
		LDA	KURIBOUJUMPTM,Y
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
		CPY	#kboujumpchance
		BNE	KURIBOUJUMP00F0		; ジャンプ ? [no->KURIBOUJUMP00F0]
;
		LDA	!ENCBFG,X
		AND	#0FFFEH
		STA	!ENCBFG,X
		LDA	#0FD00H
		STA	!ENYSPD,X
		LDY	!ENMUKI,X
		LDA	KURIBOUJUMPXSPD,Y
		STA	!ENXSPD,X
KURIBOUJUMP00F0 EQU	$
		RTL
;
KURIBOUJUMP0100 EQU	$
		LDA	#kuribou0F
		LDY	!ENYSPD+1,X
		BMI	KURIBOUJUMP0140		; 上昇中 ? [yes->KURIBOUJUMP0140]
;
		LDA	#kuribou10
KURIBOUJUMP0140 EQU	$
		STA	!ENCHPT,X
		RTL
;
;
KURIBPONPT	EQU	$
		BYTE	kuribou00, kuribou09, kuribou0A, kuribou0B, kuribou0C
;
KURIBPONTM	EQU	$
		HEX	20, 04, 08, 04, 20
;
KURIBPON	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	KURIBPON00F0		; [->KURIBPON00F0]
;
		M8				; memory 8bit mode !!
;
		DEC	<ENWRK0,X
		BMI	KURIBPON0100		; [->KURIBPON0100]
;
		LDY	<ENWRK0,X
		LDA	KURIBPONPT,Y
		STA	!ENCHPT,X
		LDA	KURIBPONTM,Y
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
KURIBPON00F0	EQU	$
		RTL
;
		MEM8
;
KURIBPON0100	EQU	$
;
		M16				; memory 16bit mode !!
;
		LDA	!ENMYNO,X
		TXY
		JSL	>ESTATST
;
		LDA	#EINIT
		STA	!ENMODE,X
		RTL
;
KURIBOUWLK2PT	EQU	$
		BYTE	kuribou0E, kuribou0D
;
KURIBOUWLK2SPD	EQU	$
		WORD	-00080H, 00080H
;
KURIBOUWLK2	EQU	$
		LDX	<ENINDX
		JSL	>EPFOOTCROSS
		BEQ	KURIBOUWLK20030		; 踏まれた ? [no->KURIBOUWLK20030]
		BCS	KURIBOUWLK20040		; 踏まれた ? [yes->KURIBOUWLK20040]
;
KURIBOUWLK20030 EQU	$
		STZ	<ENWRK4,X
		LDA	!ENTIM1,X
		BEQ	KURIBOUWLK20200		; [->KURIBOUWLK20200]
;
		BRA	KURIBOUWLK20080
;
KURIBOUWLK20040 EQU	$
		LDA	#sec04
		STA	!ENTIM1,X
		LDA	<ENWRK4,X
		BEQ	KURIBOUWLK20100		; [->KURIBOUWLK20100]
;
KURIBOUWLK20080 EQU	$
		LDA	!ENTIM0,X
		BNE	KURIBOUWLK200F0		; pattern change ? [no->KURIBOUWLK200F0]
;
		M8				; memory 8bit mode !!
;
		LDA	<ENWRK0,X
		DEC	A
		AND	#001H
		STA	<ENWRK0,X
		TAY
		LDA	KURIBOUWLK2PT,Y
		STA	!ENCHPT,X
		LDA	#koribou_wlk2tm
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
		LDA	#0001BH
		JSL	>SOUND_3_ON		; サウンド セット !!
;
KURIBOUWLK200F0 EQU	$
		RTL
;
KURIBOUWLK20100 EQU	$
		INC	<ENWRK4,X
		STZ	!ENXSPD,X
		LDA	#kuribou_fumr
		STA	<ENCONT,X
		LDA	#(KURIBOUFUMRTM-KURIBOUFUMRPT-1)
		STA	<ENWRK0,X
;
		M8				; memory 8bit mode !!
;
		TAY
		LDA	KURIBOUFUMRPT,Y
		STA	!ENCHPT,X
		LDA	KURIBOUFUMRTM,Y
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
KURIBOUWLK20200 EQU	$
		STZ	!ENXSPD,X
;
		M8				; memory 8bit mode !!
;
		LDA	#(KURIBPONTM-KURIBPONPT-1)
		STA	<ENWRK0,X
		TAY
		LDA	KURIBPONPT,Y
		STA	!ENCHPT,X
		LDA	KURIBPONTM,Y
		STA	!ENTIM0,X
		LDA	#kuribou_pon
		STA	<ENCONT,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
;
KURIBOUFUMRPT	EQU	$
		BYTE	kuribou0C, kuribou0B, kuribou0A, kuribou0B
;
KURIBOUFUMRTM	EQU	$
		HEX	20, 01, 02, 01
;
KURIBOUFUMR	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	KURIBOUFUMR00F0		; pattern change ? [no->KURIBOUFUMR00F0]
;
		DEC	<ENWRK0,X
		BMI	KURIBOUFUMR0100		; [->KURIBOUFUMR0100]
;
		M8				; memory 8bit mode !!
;
		LDY	<ENWRK0,X
		LDA	KURIBOUFUMRPT,Y
		STA	!ENCHPT,X
		LDA	KURIBOUFUMRTM,Y
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
KURIBOUFUMR00F0 EQU	$
		RTL
;
KURIBOUFUMR0100 EQU	$
		BRA	KURIBOUWLK2IN
;
;
;------------------------------------------------------------------------
;-	fail (栗坊)							-
;------------------------------------------------------------------------
PANDAFL		EQU	$
		LDA	<ENWRK2,X
		TAX
		JMP	(KURIBFLMODSEL,X)
;
KURIBFLINIT	EQU	$
		LDX	<ENINDX
		STZ	!ENXSPD,X
		LDA	#(KURIBFLMOVETM-KURIBFLMOVEPT-1)
		STA	<ENWRK0,X
;
		M8				; memory 8bit mode !!
;
		TAY
		LDA	KURIBFLMOVEPT,Y
		STA	!ENCHPT,X
		LDA	KURIBFLMOVETM,Y
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
		INC	<ENWRK2,X
		INC	<ENWRK2,X
		RTL
;
;
KURIBFLMOVE	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	KURIBFLMOVE00F0		; pattern change ? [no->KURIBFLMOVE00F0]
;
		DEC	<ENWRK0,X
		BMI	KURIBFLMOVE0100		; 復帰 ? [yes->KURIBFLMOVE0100]
;
		M8				; memory 8bit mode !!
;
		LDY	<ENWRK0,X
		LDA	KURIBFLMOVEPT,Y
		STA	!ENCHPT,X
		LDA	KURIBFLMOVETM,Y
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
KURIBFLMOVE00F0 EQU	$
		RTL
;
KURIBFLMOVE0100 EQU	$
		LDA	#EMOVE
		STA	!ENMODE,X
		STZ	<ENWRK2,X
		LDA	!ENMOD0,X
		AND	#0000011111111111B	; プレイヤー当たり無し／乗れる＆
		ORA	#1111011001000000B	; 食べれないセット !!
		STA	!ENMOD0,X
		LDA	!ENMOD1,X
		AND	#1111000000111111B	; 壁当たり＆床無しでの
		ORA	#0000000101000000B	; 反転モードセット !!
		STA	!ENMOD1,X
		LDA	#0000CH
		STA	!ECNTYW,X
		LDA	#00005H
		STA	!EWIDEY,X
		LDA	!EPXMUK,X
		AND	#000FFH
		STA	!ENMUKI,X
KURIBOUWLK2IN	EQU	$
		LDA	#sec04
		STA	!ENTIM1,X
		LDA	#kuribou_wlk2
		STA	<ENCONT,X
		LDA	#(KURIBOUWLK2SPD-KURIBOUWLK2PT-1)
		STA	<ENWRK0,X
;
		M8				; memory 8bit mode !!
;
		TAY
		LDA	KURIBOUWLK2PT,Y
		STA	!ENCHPT,X
		LDA	#koribou_wlk2tm
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
		LDY	!ENMUKI,X
		LDA	KURIBOUWLK2SPD,Y
		STA	!ENXSPD,X
		RTL
;
;
KURIBFLMODSEL	EQU	$
		WORD	KURIBFLINIT
		WORD	KURIBFLMOVE
;
;
KURIBFLMOVEPT	EQU	$
		BYTE	kuribou0C, kuribou0B, kuribou0A, kuribou09
		BYTE	kuribou00
;
KURIBFLMOVETM	EQU	$
		HEX	20, 01, 02, 01, 01
;
;
;------------------------------------------------------------------------
;-	initial (ぐらぐら岩)						-
;-		ENCONT : 角度 (XX.XX)					-
;-		  WRK0 : 支点Ｘ						-
;-		  WRK2 : 支点Ｙ						-
;-		  WRK4 : 角度スピード					-
;-		  WRK6 : 最初のＸ					-
;-		  WRK8 : 最初のＹ					-
;-		  XPSL : 絵の中心Ｘ					-
;-		  YPSL : 絵の中心Ｙ					-
;-		 CNTXW : 水平ラインの中心Ｘ				-
;-		 CNTYW : 水平ラインの中心Ｙ				-
;-		 WIDEX : Ｘチェック幅(半径)				-
;-		 WIDEY : Ｙチェック幅(中心からの距離)			-
;------------------------------------------------------------------------
GRCKSIN		EQU	$
		STZ	!ENMUKI,X
		LDA	!ENXPSL,X
		STA	<ENWRK0,X		; 支点Ｘセーブ !!
		STA	!ECNTXW,X		; 水平ラインの中心Ｘ
		STA	!ENWRK6,X		; 最初のＸ
		LDA	!ENYPSL,X
		STA	!ECNTYW,X		; 水平ラインの中心Ｙ
		STA	!ENWRK8,X		; 最初のＹ
		CLC
		ADC	#00010H
		STA	<ENWRK2,X		; 支点Ｙセーブ !!
		LDA	#00018H
		STA	!EWIDEX,X		; Ｘチェック幅(半径)
		STZ	!EWIDEY,X		; Ｙチェック幅(中心からの距離)
		STZ	!ENWRKA,X		; ＢＧクリアフラグ！！
;
		JSL	>TROBJ_SR_4x4_CL
		BCC	GROCKIN0070		; [->GROCKIN0070]
;
GRCKSIN0080	EQU	$
		JSR	GRCKS_CHRST		; キャラクタの描画 !!
;
		RTL
;
;
GROCKIN		EQU	$
		STZ	!ENMUKI,X
		LDA	!ENXPSL,X
		STA	<ENWRK0,X		; 支点Ｘセーブ !!
		STA	!ECNTXW,X		; 水平ラインの中心Ｘ
		STA	!ENWRK6,X		; 最初のＸ
		LDA	!ENYPSL,X
		STA	!ENWRK8,X		; 最初のＹ
		CLC
		ADC	#00020H
		STA	<ENWRK2,X		; 支点Ｙセーブ !!
		LDA	!ENYPSL,X
		SEC
		SBC	#00010H
		STA	!ECNTYW,X		; 水平ラインの中心Ｙ
		LDA	#00028H
		STA	!EWIDEX,X		; Ｘチェック幅(半径)
		LDA	#-0010H
		STA	!EWIDEY,X		; Ｙチェック幅(中心からの距離)
		STZ	!ENWRKA,X		; ＢＧクリアフラグ！！
;
		JSL	>TROBJ_SR_8x8
		BCS	GROCKIN0080		; [->GROCKIN0080]
;
GROCKIN0070	EQU	$
		STZ	!ONFALL
		JMP	>ENCLEAR
;
GROCKIN0080	EQU	$
		JSR	GROCK_CHRST		; キャラクタの描画 !!
;
		RTL
;
;
;------------------------------------------------------------------------
;-	move (ぐらぐら岩)						-
;------------------------------------------------------------------------
GROCKMVBGPOS	EQU	$
		WORD	010H
GRCKSMVBGPOS	EQU	$
		WORD	000H, -10H
		WORD	-20H
;
GRCKSMV		EQU	$
		JSL	>TROBJ_OAM_4x4
;
		JSL	>ENMDCK			; mode check
;
		JSR	GRCKS_CHRST		; キャラクタの描画 !!
;
		LDA	<ENCONT,X
		STA	!CCWORK1F
;
		LDA	!ENWRKA,X
		BNE	GRCKSMV0010		; [->GRCKSMV0010]
;
		LDA	!ONFALL
		BEQ	GRCKSMV000E		; ＢＧチェンジ ? [no->GRCKSMV000E]
;
		DEC	!ONFALL
		DEC	A
		AND	#00001H
		ASL	A
		TAY
		LDA	!ENXPSL,X
		CLC
		ADC	GRCKSMVBGPOS,Y
		STA	!BGXPS1			;BG write X pos set
		LDA	!ONFALL
		AND	#00002H
		TAY
		LDA	!ENYPSL,X
		CLC
		ADC	GRCKSMVBGPOS,Y
		STA	!BGYPS1			;    "    Y   "
		LDA	#BGCG
		STA	!BGCGNO			; " change type no. set
		LDA	#UT0000
		STA	!BGUTNO			;     "    unit no.
		JSL	>UNITCHG
;
		BRA	GRCKSMV0020
;
GRCKSMV000E	EQU	$
		INC	!ENWRKA,X
GRCKSMV0010	EQU	$
		LDA	<ENCONT,X
		CLC
		ADC	<ENWRK4,X
		STA	<EWORK
		CLC
		ADC	#03000H
		CMP	#06000H
		BCS	GRCKSMV0020		; [->GRCKSMV0020]
;
		LDA	<EWORK
		STA	<ENCONT,X
		M_CHIP	GROCK_MOVE
		LDX	<ENINDX
		BRA	GRCKSMV0040
;
GRCKSMV0020	EQU	$
		LDA	#-0080H
		LDY	<ENCONT+1,X
		BMI	GRCKSMV0030		; [->GRCKSMV0030]
;
		LDA	#00080H
GRCKSMV0030	EQU	$
		STA	!ENXSPD,X
		LDA	#00040H
		STA	!ENGPOW,X
GRCKSMV0040	EQU	$
		M_CHIP	GRCKB_CRCK
		LDX	<ENINDX
;
		LDA	R0
		BEQ	GRCKSMV0080		; [->GRCKSMV0080]
;
		LDA	!ENXPSL
		CLC
		ADC	!ENMOVX,X
		STA	!ENXPSL
		LDA	!ENYPSL
		CLC
		ADC	!ENMOVY,X
		STA	!ENYPSL
GRCKSMV0080	EQU	$
		M_CHIP	GROCK_CRCK
		LDX	<ENINDX
;
		LDA	R0
		BEQ	GRCKSMV00F0		; [->GRCKSMV00F0]
;
		LDA	!PLXPSL
		CLC
		ADC	!ENMOVX,X
		STA	!PLXPSL
		LDA	!PLYPSL
		CLC
		ADC	!ENMOVY,X
		STA	!PLYPSL
GRCKSMV00F0	EQU	$
		RTL
;
;
GRCKS_CHRST	EQU	$
;
		I16				; index 16bit mode !!
;
		LDA	<ENCONT,X
		EOR	#0FFFFH
		INC	A
		XBA
		AND	#000FFH
		STA	R5			; (R5) <- 回転角度
		LDY	!ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_X,X
		STA	R3			; (R3) <- ビットマップＸ座標
		LDA	>TROBJ_PLOT_Y,X
		STA	R2			; (R2) <- ビットマップＹ座標
		LDA	#00100H
		STA	R6			; (R6) <- 倍率
		LDA	#CIPCHD3+2020H+1
		STA	R12			; (R12) <- キャラクタアドレス
		LDA	#BANK CIPCHD3+2020H+1
		STA	R13			; (R13) <- キャラクタバンク
;
		I8				; index 8bit mode !!
;
		M_CHIP	C_32_ROTZOM
;
		INC	OBM7WF			; mode 7 OBJ chara DMA "ON"
;
		LDX	<ENINDX
		RTS
;
;
GROCKMV		EQU	$
		JSL	>TROBJ_OAM_8x8
;
		JSL	>ENMDCK			; mode check
;
		JSR	GROCK_CHRST		; キャラクタの描画 !!
;
		LDA	<ENCONT,X
		STA	!CCWORK1F
;
		LDA	!ENWRKA,X
		BNE	GROCKMV0010		; [->GROCKMV0010]
;
		LDA	!ONFALL
		BEQ	GROCKMV000E		; ＢＧチェンジ ? [no->GROCKMV000E]
;
		DEC	!ONFALL
		DEC	A
		AND	#00003H
		ASL	A
		TAY
		LDA	!ENXPSL,X
		CLC
		ADC	GROCKMVBGPOS,Y
		STA	!BGXPS1			;BG write X pos set
		LDA	!ONFALL
		AND	#0000CH
		LSR	A
		TAY
		LDA	!ENYPSL,X
		CLC
		ADC	GROCKMVBGPOS,Y
		STA	!BGYPS1			;    "    Y   "
		LDA	#BGCG
		STA	!BGCGNO			; " change type no. set
		LDA	#UT0000
		STA	!BGUTNO			;     "    unit no.
		JSL	>UNITCHG
;
		BRA	GROCKMV0020
;
GROCKMV000E	EQU	$
		INC	!ENWRKA,X
GROCKMV0010	EQU	$
		LDA	<ENCONT,X
		CLC
		ADC	<ENWRK4,X
		STA	<EWORK
		CLC
		ADC	#03000H
		CMP	#06000H
		BCS	GROCKMV0020		; [->GROCKMV0020]
;
		LDA	<EWORK
		STA	<ENCONT,X
		M_CHIP	GROCK_MOVE
		LDX	<ENINDX
		BRA	GROCKMV0040
;
GROCKMV0020	EQU	$
		LDA	#-0080H
		LDY	<ENCONT+1,X
		BMI	GROCKMV0030		; [->GROCKMV0030]
;
		LDA	#00080H
GROCKMV0030	EQU	$
		STA	!ENXSPD,X
		LDA	#00040H
		STA	!ENGPOW,X
GROCKMV0040	EQU	$
		M_CHIP	GRCKB_CRCK
		LDX	<ENINDX
;
		LDA	R0
		BEQ	GROCKMV0080		; [->GROCKMV0080]
;
		LDA	!ENXPSL
		CLC
		ADC	!ENMOVX,X
		STA	!ENXPSL
		LDA	!ENYPSL
		CLC
		ADC	!ENMOVY,X
		STA	!ENYPSL
GROCKMV0080	EQU	$
		M_CHIP	GROCK_CRCK
		LDX	<ENINDX
;
		LDA	R0
		BEQ	GROCKMV00F0		; [->GROCKMV00F0]
;
		LDA	!PLXPSL
		CLC
		ADC	!ENMOVX,X
		STA	!PLXPSL
		LDA	!PLYPSL
		CLC
		ADC	!ENMOVY,X
		STA	!PLYPSL
GROCKMV00F0	EQU	$
		RTL
;
;
GROCK_CHRST	EQU	$
;
		I16				; index 16bit mode !!
;
		LDA	<ENCONT,X
		EOR	#0FFFFH
		INC	A
		XBA
		AND	#000FFH
		STA	R5			; (R5) <- 回転角度
		LDY	!ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_X,X
		STA	R3			; (R3) <- ビットマップＸ座標
		LDA	>TROBJ_PLOT_Y,X
		STA	R2			; (R2) <- ビットマップＹ座標
		LDA	#00100H
		STA	R6			; (R6) <- 倍率
		LDA	#CIPCHD3+4000H+1
		STA	R12			; (R12) <- キャラクタアドレス
		LDA	#BANK CIPCHD3+4000H+1
		STA	R13			; (R13) <- キャラクタバンク
;
		I8				; index 8bit mode !!
;
		M_CHIP	C_64_ROTZOM
;
		INC	OBM7WF			; mode 7 OBJ chara DMA "ON"
;
		LDX	<ENINDX
		RTS
;
;
;------------------------------------------------------------------------
;-	initial (偽フラワー)						-
;------------------------------------------------------------------------
NiseFArea	EQU	00060H
NiseFNoml	EQU	(nisenoml-NISEFMVMODSEL)
NiseFFall	EQU	(nisefall-NISEFMVMODSEL)
NiseFRun0	EQU	(niserun0-NISEFMVMODSEL)
NiseFBoyo	EQU	(niseboyo-NISEFMVMODSEL)
NiseFWara	EQU	(nisewara-NISEFMVMODSEL)
;
NISEFIN		EQU	$
		LDA	#0001
		STA	<ENWRK2,X
		LDA	#00100H
		STA	<ENWRK4,X
;
		JSL	>TROBJ_SR_4x4_CL
;
		JMP	NISEFLWCHRST
;
;
;------------------------------------------------------------------------
;-	move (偽フラワー)						-
;------------------------------------------------------------------------
NISEFCHRADRS	EQU	$
		WORD	CIPCHD3+2040H+1, CIPCHD3+2040H+1, CIPCHD3+2060H+1
		WORD	CIPCHD3+2040H+1, CIPCHD3+2060H+1
;
NISEFCHRBANK	EQU	$
		WORD	BANK CIPCHD3+2040H+1, BANK CIPCHD3+2040H+1, BANK CIPCHD3+2060H+1
		WORD	BANK CIPCHD3+2040H+1, BANK CIPCHD3+2060H+1
;
NISEFMV		EQU	$
		JSL	>TROBJ_OAM_4x4
;
		JSL	>ENMDCK			; mode check
;
		JSR	NISEFCRCK
;
		LDY	<ENWRK0,X
		TYX
		JSR	(NISEFMVMODSEL,X)
;
NISEFLWCHRST	EQU	$
		LDA	!ENMUKI,X
		STA	!ENWRK6,X
;[1995.04.11.TU]		TROBJ_CHK_4
;[1995.04.11.TU]		BNE	NISEFLWCHRST0F0		; [->NISEFLWCHRST0F0]
;
		I16				; index 16bit mode !!
;
		LDA	<ENCONT,X
		AND	#000FFH
		STA	R5			; (R5) <- 回転角度
		LDY	<ENWRK0,X
		LDA	NISEFCHRADRS,Y
		STA	R12			; (R12) <- キャラクタアドレス
		LDA	NISEFCHRBANK,Y
		AND	#000FFH
		STA	R13			; (R13) <- キャラクタバンク
		LDA	<ENWRK4,X
		STA	R6			; (R6) <- 倍率
		LDA	!ENTROB,X
		TAX
		LDA	>TROBJ_PLOT_X,X
		STA	R3			; (R3) <- ビットマップＸ座標
		LDA	>TROBJ_PLOT_Y,X
		STA	R2			; (R2) <- ビットマップＹ座標
;
		I8				; index 8bit mode !!
;
		M_CHIP	C_32_ROTZOM
;
		INC	OBM7WF			; mode 7 OBJ chara DMA "ON"
;
		LDX	<ENINDX
NISEFLWCHRST0F0 EQU	$
		RTL
;
NISEFMVMODSEL	EQU	$
nisenoml	WORD	NISEFMVNOMAL
nisefall	WORD	NISEFFALL
niserun0	WORD	NISEFRUN0
niseboyo	WORD	NISEFMVBOYON
nisewara	WORD	NISEFMVWARAI
;
;
NISEFMVNOMAL	EQU	$
		LDX	<ENINDX
		JSR	NISEFPLSH
;
		JSR	NISEFCRC2
;
NISEFMVNOMAL020 EQU	$
		LDA	<ENCONT,X
		CLC
		ADC	<ENWRK2,X
		STA	<ENCONT,X
		CLC
		ADC	#0000CH
		CMP	#0000CH*2
		BCC	NISEFMVNOMAL080		; 角度マックス ? [no->NISEFMVNOMAL080]
;
		LDA	<ENWRK2,X
		EOR	#0FFFFH
		INC	A
		STA	<ENWRK2,X
NISEFMVNOMAL080 EQU	$
		RTS
;
;
NISEFXSPD	EQU	$
		WORD	-0200H, 00200H
;
NISEFFALL	EQU	$
		LDX	<ENINDX
		LDA	!ENCBFG,X
		BIT	#00001H
		BEQ	NISEFFALL00F0		; 着地？ [no->NISEFFALL00F0]
;
		LDA	!EPXMUK,X
		AND	#000FFH
		STA	!ENMUKI,X
		TAY
		LDA	NISEFXSPD,Y
		STA	!ENXSPD,X
		LDY	<ENWRK0,X
		INY
		INY
		STY	<ENWRK0,X
NISEFFALL00F0	EQU	$
		RTS
;
;
NISEFRUN0	EQU	$
		LDX	<ENINDX
		LDA	!ENMUKI,X
		CMP	!ENWRK6,X
		BNE	NISEFDIE0		; 消滅？ [yes->NISEFDIE0]
;
		LDA	<FRCNT2
		AND	#0000FH
		BNE	NISEFRUN00030		; [->NISEFRUN00030]
;
		LDA	#00059H
		JSL	>SOUND_3_ON		; サウンド セット！！
;
NISEFRUN00030	EQU	$
		LDA	!ENXSPD,X
		BPL	NISEFRUN00040		; [->NISEFRUN00040]
;
		EOR	#0FFFFH
		INC	A
NISEFRUN00040	EQU	$
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		AND	#000FFH
		CLC
		ADC	<ENCONT,X
		AND	#000FFH
		STA	<ENCONT,X
		RTS
;
NISEFDIE0	EQU	$
;
		LDA	#00036H
		JSL	>SOUND_3_ON		; サウンド セット！！
;
		LDA	#FUSNB
		JSL	>EXINSR
;
		LDA	!ENXPSL,X
		STA	!EXXPSL,Y
		LDA	!ENYPSL,X
		STA	!EXYPSL,Y
		LDA	#0000BH
		STA	!EXWRK0,Y
		LDA	#0004
		STA	!EXTIM0,Y
;
		PLA
		JMP	>ENCLEAR
;
;
NISEFMVWARAI	EQU	$
		LDX	<ENINDX
		JSR	NISEFPLSH
;
		JSR	NISEFCRC2
;
		LDA	!ENTIM1,X
		BNE	NISEFMVWARAI020		; [->NISEFMVWARAI020]
;
		LDA	#0003DH
		JSL	>SOUND_3_ON		; サウンド セット !!
;
		LDA	#00020H
		STA	!ENTIM1,X
NISEFMVWARAI020 EQU	$
		LDA	!ENTIM0,X
		BEQ	NISEFMVWARAI100		; [->NISEFMVWARAI100]
;
		LDA	!EPXMUK,X
		AND	#000FFH
		STA	!ENMUKI,X
		LDA	<ENWRK4,X
		SEC
		SBC	#0008
		CMP	#000C0H
		BCS	NISEFMVWARAI040		; [->NISEFMVWARAI040]
;
		LDA	#00100H
NISEFMVWARAI040 EQU	$
		STA	<ENWRK4,X
		JMP	NISEFMVNOMAL020
;
NISEFMVWARAI100 EQU	$
		STZ	<ENCONT,X
;[1995.05.09.TU]		LDY	#00
;[1995.05.09.TU]		STY	<ENWRK0,X
		LDA	#0001
		STA	<ENWRK2,X
		LDA	#00100H
		STA	<ENWRK4,X
		JMP	NISEFPLSH0080		; [->NISEFPLSH0080]
;[1995.05.09.TU]		RTS
;
;
NISEFMVBOYON	EQU	$
		LDX	<ENINDX
		JSR	NISEFPLSH
;
		LDA	<ENWRK4,X
		CLC
		ADC	#0004
		CMP	#00100H
		BCS	NISEFMVBOYON080		 ; [->NISEFMVBOYON080]
;
		STA	<ENWRK4,X
		RTS
;
NISEFMVBOYON080 EQU	$
		LDA	#sec01
		STA	!ENTIM0,X
		LDA	#00100H
		STA	<ENWRK4,X
		LDY	#NiseFWara
		STY	<ENWRK0,X
		RTS
;
;
NISEFCRCK	EQU	$
		LDY	!ECRSFG,X
		BPL	NISEFCRCK0100		; プレイヤーと衝突？ [no->NISEFCRCK0100]
;
		LDA	!EPWIDY,X
		SEC
		SBC	!PWIDEY
		SEC
		SBC	!EWIDEY,X
		CMP	#0FFF8H
		BCC	NISEFCRCK0080		; 踏まれた？ [no->NISEFCRCK0080]
;
		JSL	>PLAYER_REBOUND
;
		BRA	NISEFCRCK00F0		; [->NISEFCRCK00F0]
;
NISEFCRCK0080	EQU	$
		JSL	>PLFLST
;
NISEFCRCK00F0	EQU	$
		RTS
;
NISEFCRCK0100	EQU	$
		LDY	<ENWRK0,X
		CPY	#NiseFFall
		BCC	NISEFCRCK00F0		; 敵との衝突チェック有？ [no->NISEFCRCK00F0]
;
		CPY	#NiseFRun0+1
		BCS	NISEFCRCK00F0		; 敵との衝突チェック有？ [no->NISEFCRCK00F0]
;
		TXA
		STA	R1
		PHX
		M_CHIP	MY_ENCROS2
		PLX
;
		LDY	R14
		BMI	NISEFCRCK00F0		; 敵との衝突有？ [no->NISEFCRCK00F0]
		BEQ	NISEFCRCK00F0		; 赤ちゃんとの衝突 [yes->NISEFCRCK00F0]
;
		LDA	!ENMODE,Y
		CMP	#EFAIL
		BCC	NISEFCRCK00F0		; Ｍｏｄｅ Ｍｏｖｅ？ [no->NISEFCRCK00F0]
;
		LDA	!ENMOD1,Y
		AND	#0110000000000000B
		BNE	NISEFCRCK00F0		; 敵？ [no->NISEFCRCK00F0]
;
		LDA	!ENMOD0,Y
		AND	#0000000000100000B
		BNE	NISEFCRCK00F0		; 投げた敵に当たる？ [no->NISEFCRCK00F0]
;
		LDA	!ENMYNO,Y
		CMP	#NAMAZ
		BEQ	NISEFCRCK00F0		; なまず？ [yes->NISEFCRCK00F0]
;
		TYX
		JSL	>DEATHENEMY
;
		JSL	>ENDEATH_SET
;
		LDX	<ENINDX
		RTS
;
;
NISEFPLSH	EQU	$
		LDA	!ENYPSL,X
		SEC
		SBC	!PLYPSL
		SEC
		SBC	#00020H
		BPL	NISEFPLSH00F0		; プレイヤーの方が上？ [yes->NISEFPLSH00F0]
;
		LDA	!ENXPSL,X
		SEC
		SBC	!PLXPSL
		CLC
		ADC	#NiseFArea
		CMP	#NiseFArea*2
		BCS	NISEFPLSH00F0		; 範囲内？ [no->NISEFPLSH00F0]
;
NISEFPLSH0080	EQU	$
		LDA	#00040H
		STA	!ENGPOW,X		; 重力セット！！
		LDA	#00400H
		STA	!ENGMAX,X
		LDA	!ENMOD1,X
		ORA	#0000000001000011B	; ＢＧチェックセット！！
		STA	!ENMOD1,X
		LDY	#NiseFFall
		STY	<ENWRK0,X
		LDA	#00100H
		STA	<ENWRK4,X
NISEFPLSH00F0	EQU	$
		RTS
;
;
NISEFCRC2	EQU	$
		LDY	!ECRSFG,X
		DEY
		BMI	NISEFCRC200F0		; 敵と衝突無し ? [yes->NISEFCRC200F0]
		BEQ	NISEFCRC200F0		; 赤ちゃんと衝突 ? [yes->NISEFCRC200F0]
;
		LDA	!ENMODE,Y
		CMP	#EMOVE
		BNE	NISEFCRC200F0		; mode move ? [no->NISEFCRC200F0]
;
		LDA	!ENSHOT,Y
		BEQ	NISEFCRC200F0		; ショット ? [no->NISEFCRC200F0]
;
		TYX
		JSL	>ENDEATH_SET_4
;
		LDX	<ENINDX
NISEFCRC200E0	EQU	$
		LDA	#00013H
		JSL	>SOUND_3_ON		; サウンド セット !!
;
		LDA	!EPXMUK,X
		AND	#000FFH
		STA	!ENMUKI,X
		STZ	<ENCONT,X
		LDY	#NiseFBoyo
		STY	<ENWRK0,X
		LDA	#000C0H
		STA	<ENWRK4,X
		PLA
NISEFCRC200F0	EQU	$
		RTS
;
;
;------------------------------------------------------------------------
;-	initial (幽霊ヘイホー)						-
;------------------------------------------------------------------------
GSTH0IN		EQU	$
		JSL	>DOKAN_CHECK
		BEQ	GSTH0IN0100		; 土管？ [yes->GSTH0IN0100]
;
		LDA	!ENYPSL,X
		STA	!ENWRK8,X
		LDA	#00004H
		STA	!ECNTYW,X
		RTL
;
GSTH0IN0100	EQU	$
;
		M8				; memory 8bit mode !!
;
		LDA	#01
		STA	!ENWRK6,X
		LDA	#0FFH
		STA	!ENYUSN,X
;
		M16				; memory 16bit mode !!
;
		LDA	#0000000001100000B
		STA	!ENMOD0,X
		LDA	#0010000000000000B
		STA	!ENMOD1,X
		LDA	!ENMOD2,X
		AND	#1111111000001111B
		STA	!ENMOD2,X
		STZ	!ENGPOW,X
		STZ	!ENGMAX,X
		STZ	!ENYSPD,X
		LDA	!ENXPSL,X
		CLC
		ADC	#00008H
		STA	!ENXPSL,X
		RTL
;
;
;------------------------------------------------------------------------
;-	move (幽霊ヘイホー)						-
;------------------------------------------------------------------------
GSTH0_XSPD	EQU	$
		WORD	-00080H, 00080H
;
GSTH0MV		EQU	$
		LDY	!ENWRK6,X
		BEQ	GSTH0MV0000		; わきだしフラグ？ [no->GSTH0MV0000]
;
		JMP	GSTH0SET
;
GSTH0MV0000	EQU	$
		LDA	!ENMODE,X
		CMP	#EMOVE
		BNE	GSTH0MV0090		; Ｍｏｄｅ Ｍｏｖｅ？ [no->GSTH0MV0090]
;
		LDA	!ENSHOT,X
		BEQ	GSTH0MV0090		; コロコロモード？ [no->GSTH0MV0090]
;
		LDA	!ENXSPD,X
		CLC
		ADC	#ShotXspdCHK
		CMP	#ShotXspdCHK2
		BCC	GSTH0MV0090		; ノーマルショット？ [yes->GSTH0MV0090]
;
		JMP	GSTH0_KRKR		; コロコロモード？ [yes->GSTH0_KRKR]
;
GSTH0MV0090	EQU	$
		JSL	>ENMDCK			; mode check
;
		LDY	<ENCONT,X
		CPY	#04
		BEQ	GSTH0MV00C0		; [->GSTH0MV00C0]
;
		JSL	>EPCRCK
;
		JSL	>GSTH0_CRCK
;
GSTH0MV00C0	EQU	$
		LDY	<ENCONT,X
		TYX
		JMP	(GSTH0MVMODSEL,X)
;
GSTH0MVMODSEL	EQU	$
		WORD	GSTH0_WALK
		WORD	GSTH0_TURN
		WORD	GSTH0_SET2
		WORD	GSTH0_SET3
		WORD	GSTH0_SET0
		WORD	GSTH0_SET1
;
;
GSTH0_WALK	EQU	$
		LDX	<ENINDX
		JSR	GSTH0_PATTERN
;
		LDA	!ENTIM0,X
		BNE	GSTH0_WALK00F0		; [->GSTH0_WALK00F0]
;
		STZ	!ENXSPD,X
		LDA	<RANDM0
		AND	#0001FH
		CLC
		ADC	#00020H
		STA	!ENTIM0,X
		INC	<ENCONT,X
		INC	<ENCONT,X
GSTH0_WALK00F0	EQU	$
		RTL
;
;
GSTH0_TURN	EQU	$
		LDX	<ENINDX
		JSR	GSTH0_PATTERN
;
		LDA	!ENTIM0,X
		BNE	GSTH0_TURN0060		; [->GSTH0_TURN0060]
;
		LDA	<RANDM0
		AND	#0003FH
		CLC
		ADC	#00040H
		STA	!ENTIM0,X
		STZ	!ENCONT,X
		LDY	!ENMUKI,X
		LDA	GSTH0_XSPD,Y
		STA	!ENXSPD,X
		JSR	GSTH0_SPDCHK
;
GSTH0_TURN0040	EQU	$
		RTL
;
GSTH0_TURN0060	EQU	$
		LDA	!ENTIM2,X
		BNE	GSTH0_TURN0040		; 反転 ? [no->GSTH0_TURN0040]
;
		LDA	!ENMUKI,X
		EOR	#00002H
		STA	!ENMUKI,X
		LDA	<RANDM0
		AND	#0000FH
		CLC
		ADC	#00010H
		STA	!ENTIM2,X
		RTL
;
;
GSTH0_SET0XSP	EQU	$
		WORD	0FF00H, 00100H
;
GSTH0_SET2	EQU	$
		LDX	<ENINDX
		LDA	!ENXPSL,X
		STA	R8
		LDA	!ENYPSL,X
		CLC
		ADC	#00003H
		JSL	>DOKAN_CHECK2
		BEQ	GSTH0_SET200F0		; 土管？ [yes->GSTH0_SET200F0]
;
		STZ	!ENYSPD,X
		LDA	#00020H
		STA	!ENTIM0,X
		LDY	<ENCONT,X
		INY
		INY
		STY	<ENCONT,X
GSTH0_SET200F0	EQU	$
		RTL
;
;
GSTH0_SET3	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	GSTH0_SET300F0		; [->GSTH0_SET300F0]
;
		LDA	#00077H
		JSL	>SOUND_3_ON		; サウンド セット！！
;
		LDA	#00040H
		STA	!ENGPOW,X
		LDA	#0FC00H
		STA	!ENYSPD,X
		LDY	<ENCONT,X
		INY
		INY
		STY	<ENCONT,X
GSTH0_SET300F0	EQU	$
		RTL
;
;
GSTH0_SET0	EQU	$
		LDX	<ENINDX
		LDA	!ENXPSL,X
		STA	R8
		LDA	!ENYPSL,X
		CLC
		ADC	#0000FH
		JSL	>DOKAN_CHECK2
		BEQ	GSTH0_SET000F0		; 土管？ [yes->GSTH0_SET000F0]
;
		LDY	!ENMUKI,X
		LDA	GSTH0_SET0XSP,Y
		STA	!ENXSPD,X
		LDA	!ENMOD1,X
		ORA	#0000000000000001B
		STA	!ENMOD1,X		; ＢＧチェックＯＮ！！
		LDY	<ENCONT,X
		INY
		INY
		STY	<ENCONT,X
GSTH0_SET000F0	EQU	$
		RTL
;
;
GSTH0_SET1	EQU	$
		LDX	<ENINDX
		LDA	!ENCBFG,X
		AND	#00001H
		BEQ	GSTH0_SET100F0		; 着地？ [no->GSTH0_SET100F0]
;
		STZ	!ENXSPD,X
		LDA	#00004H
		STA	!ECNTYW,X
		LDY	#00
		STY	<ENCONT,X
GSTH0_SET100F0	EQU	$
		RTL
;
;
GSTH0_SPDCHK	EQU	$
		LDA	!EPXMUK,X
		AND	#000FFH
		CMP	!ENMUKI,X
		BNE	GSTH0_SPDCHK0F0		; [->GSTH0_SPDCHK0F0]
;
		LDA	!ECENTX,X
		SEC
		SBC	!PCENTX
		CLC
		ADC	#00040H
		CMP	#00040H*2
		BCS	GSTH0_SPDCHK0F0		; [->GSTH0_SPDCHK0F0]
;
		LDA	!ECENTY,X
		SEC
		SBC	!PCENTY
		CLC
		ADC	#00040H
		CMP	#00040H*2
		BCS	GSTH0_SPDCHK0F0		; [->GSTH0_SPDCHK0F0]
;
		LDA	!ENXSPD,X
		ASL	A
		STA	!ENXSPD,X
GSTH0_SPDCHK0F0 EQU	$
		RTS
;
;
GSTH0_PATTERN	EQU	$
		LDA	!ENTIM1,X
		BNE	GSTH0_PTN00F0		; pattern change ? [no->GSTH0_PTN00F0]
;
		LDA	#0004
		STA	!ENTIM1,X
		LDA	!ENCHPT,X
		INC	A
		AND	#00007H
		STA	!ENCHPT,X
GSTH0_PTN00F0	EQU	$
		RTS
;
;
GSTH0_KRKR	EQU	$
		LDA	!ENSTFG
		ORA	!BIRIBIRI
		ORA	!ITEMNO
		BEQ	GSTH0_KRKR01		; 敵ストップ？ [no->GSTH0_KRKR01]
;
		RTL
;
GSTH0_KRKR01	EQU	$
		LDA	!ENSHOT,X
		DEC	A
		BEQ	GSTH0_KRKR02		; [->GSTH0_KRKR02]
;
		STA	!ENSHOT,X
GSTH0_KRKR02	EQU	$
		LDY	<ENWRK4,X
		TYX
		JMP	(GSTH0_KRKRMDSL,X)
;
GSTH0_KRKRMDSL	EQU	$
		WORD	GSTH0_CRCRINST
		WORD	GSTH0_KRKR0000
;
;
GSTH0_CRCRSPD	EQU	$
		WORD	00200H, -0200H, -0000H, 00000H
;
GSTH0_CRCRYSPD	EQU	$
		WORD	00000H, 00000H, -0600H, -0600H
;
GSTH0_CRCRYPSL	EQU	$
		WORD	00000H, 00000H, -0010H, -0010H
;
GSTH0_REVOL	EQU	$
		WORD	01000H, 0F000H
;
GSTH0_CRCRINST	EQU	$
		LDX	<ENINDX
		LDY	#00
		LDA	!ENXSPD,X
		BMI	GSTH0_CRINST040		; [->GSTH0_CRINST040]
;
		INY
		INY
GSTH0_CRINST040 EQU	$
		TYA
		EOR	!ENMUKI,X
		TAY
		LDA	GSTH0_REVOL,Y
		STA	<ENWRK0,X
		STZ	!ENCHPT,X
;;;;;;;;		LDA	!ENMOD0,X
;;;;;;;;		AND	#1111110111111111B	; 衝突チェックされないセット !!
;;;;;;;;		STA	!ENMOD0,X
		LDA	!ENMOD1,X
		AND	#1111110011111111B
		ORA	#0000000000000001B
		STA	!ENMOD1,X		; 足当たり無しで落ちるセット !!
		LDA	#00008H
		STA	!ECNTYW,X
		LDY	<ENWRK4,X
		INY
		INY
		STY	<ENWRK4,X		; コロコロモードセット !!
;
		LDA	!ENTROB,X
		BMI	GSTH0_CRINST0F0		; 回転オブジェ使ってる ? [no->GSTH0_CRINST0F0]
;
		LDA	!ENMOD2,X
		AND	#0000011111111100B
		ORA	#0000100000000000B	; １キャラセット !!
		STA	!ENMOD2,X
		RTL
;
GSTH0_CRINST0F0 EQU	$
		LDA	!ENCLOR,X
		ORA	#0000000010000000B
		STA	!ENCLOR,X
		RTL
;
;
GSTH0_KRKR0000	EQU	$
		LDX	<ENINDX
		LDA	!ENTROB,X
		BMI	GSTH0_KRKR0010		; 回転オブジェ使ってる ? [no->GSTH0_KRKR0010]
;
		JSL	>TROBJ_OAM_2x2
		JSL	>GSTH0_CHRST
		BRA	GSTH0_KRKR0020		; [->GSTH0_KRKR0020]
;
GSTH0_KRKR0010	EQU	$
		LDA	!ENMOD2,X
		AND	#0000011111111100B
		ORA	#0001000000000001B
		STA	!ENMOD2,X
GSTH0_KRKR0020	EQU	$
		LDA	!ENCBFG,X
		BIT	#0000000000000001B
		BEQ	GSTH0_KRKR0040		; [->GSTH0_KRKR0040]
;
		LDA	!ENXSPD,X
		AND	#08000H
		ASL	A
		ROL	A
		ASL	A
		TAY
		LDA	GSTH0_CRCRSPD,Y
		STA	!ENXSPD,X
		LDA	!ENCBFG,X
GSTH0_KRKR0040	EQU	$
		BIT	#0000000000001100B
		BEQ	GSTH0_KRKR0060		; 壁当たり？ [no->GSTH0_KRKR0060]
;
		JSL	>GSTH0_CRCK20100
;
GSTH0_KRKR0060	EQU	$
		JSL	>GSTH0_CRCK2
;
GSTH0_KRKR0080	EQU	$
;
		M8				; memory 8bit mode !!
;
		LDA	<ENWRK0,X
		CLC
		ADC	<ENWRK1,X
		STA	<ENWRK0,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
;
GSTH0_CHRST	EQU	$
		LDA	!MSGMOD
		BNE	GSTH0_CHRST00F0		; メッセージ表示中？ [yes->GSTH0_CHRST00F0]
;
		LDA	!ENTROB,X
		BMI	GSTH0_CHRST00F0		; 回転オブジェ使ってる ? [no->GSTH0_CHRST00F0]
;
		I16				; index 16bit mode !!
;
		LDA	<ENWRK0,X
		AND	#000FFH
		STA	R5			; (R5) <- 回転角度
		LDA	#CIPCHD+5010H+0
		STA	R12			; (R12) <- キャラクタアドレス
		LDA	#BANK CIPCHD+5010H+0
		STA	R13			; (R13) <- キャラクタバンク
		LDA	#00100H
		STA	R6			; (R6) <- 倍率
		LDA	!ENTROB,X
		TAX
		LDA	>TROBJ_PLOT_X,X
		STA	R3			; (R3) <- ビットマップＸ座標
		LDA	>TROBJ_PLOT_Y,X
		STA	R2			; (R2) <- ビットマップＹ座標
;
		I8				; index 8bit mode !!
;
		M_CHIP	C_16_ROTZOM
;
		INC	OBM7WF			; mode 7 OBJ chara DMA "ON"
;
		LDX	<ENINDX
GSTH0_CHRST00F0 EQU	$
		RTL
;
;
GSTH0_CRCK	EQU	$
		LDY	!ECRSFG,X
		DEY
		BMI	GSTH0_CRCK00F0		; 敵と衝突無し ? [no->GSTH0_CRCK00F0]
		BEQ	GSTH0_CRCK00F0		; 赤ちゃんと衝突 ? [yes->GSTH0_CRCK00F0]
;
		LDA	!ENMODE,Y
		CMP	#EMOVE
		BNE	GSTH0_CRCK00F0		; mode move ? [no->GSTH0_CRCK00F0]
;
		LDA	!ENSHOT,Y
		BEQ	GSTH0_CRCK00F0		; ショット ? [no->GSTH0_CRCK00F0]
;
		PHY				; (Y) Save !!
		JSL	>TROBJ_SR_2x2
		BCC	GSTH0_CRCK0080		; 回転エリア確保できた？ [no->GSTH0_CRCK0080]
;
		JSL	>GSTH0_CHRST
;
GSTH0_CRCK0080	EQU	$
		PLY				; (Y) Load !!
		LDA	!ECENTX,X
		SEC
		SBC	!ECENTX,Y
		AND	#08000H
		ASL	A
		ROL	A
		ASL	A
		STA	<EWORK
		JSR	ENMYNOCHK
		BCS	GSTH0_CRCK00A0		; ヘイホー属？ [yes->GSTH0_CRCK00A0]
;
		TYX
		JSL	>SHOT_EN_KILL
;
		BRA	GSTH0_CRCK00B0		; [->GSTH0_CRCK00B0]
;
GSTH0_CRCK00A0	EQU	$
		TYX
		JSL	>ENDEATH_SET_4
;
GSTH0_CRCK00B0	EQU	$
		LDX	<ENINDX
		LDY	#00
		STY	<ENWRK4,X
		LDA	#01
		STA	!ENSHOT,X
		LDY	<EWORK
		LDA	GSTH0_CRCRSPD,Y
		STA	!ENXSPD,X
		JSL	>GSTH0_CRCRINST
;
		LDX	<ENINDX
		LDA	#00067H
		JSL	>SOUND_3_ON		; サウンド セット！！
;
		PLY
		PLA
GSTH0_CRCK00F0	EQU	$
		RTL
;
;
GSTH0_CHKENMY	EQU	$
		WORD	GSTH0, HEIH0, CHKH0, DEBU0, MSHIH
GSTH0_CHKENMYE	EQU	$
;
ENMYNOCHK	EQU	$
		LDX	#(GSTH0_CHKENMYE-GSTH0_CHKENMY-2)
		LDA	!ENMYNO,Y
ENMYNOCHK0020	EQU	$
		CMP	GSTH0_CHKENMY,X
		BEQ	ENMYNOCHK00F0		; [->ENMYNOCHK00F0]
;
		DEX
		DEX
		BPL	ENMYNOCHK0020		; [->ENMYNOCHK0020]
;
		LDX	<ENINDX
		CLC
		RTS
;
ENMYNOCHK00F0	EQU	$
		LDX	<ENINDX
		SEC
		RTS
;
;
GSTH0_ENDHSOUND EQU	$
		HEX	0C, 0C, 0D, 0E, 0F, 10, 11, 12, 12
;
GSTH0_CRCK2	EQU	$
		LDY	!ECRSFG,X
		BMI	GSTH0_CRCK20100		; プレイヤーと当たった ? [yes->GSTH0_CRCK20100]
;
		PHX
		TXA
		STA	R1
		M_CHIP	MY_ENCROS2
;
		PLX
		LDY	R14
		BMI	GSTH0_CRCK00F0		; 敵と衝突無し ? [no->GSTH0_CRCK00F0]
		BEQ	GSTH0_CRCK00F0		; 赤ちゃんと衝突 ? [yes->GSTH0_CRCK00F0]
;
		LDA	!ENMODE,Y
		CMP	#EFAIL
		BCC	GSTH0_CRCK00F0		; mode move ? [no->GSTH0_CRCK00F0]
;
		LDA	!ENMOD1,Y
		BIT	#0110000000000000B
		BNE	GSTH0_CRCK00F0		; 敵 ? [no->GSTH0_CRCK00F0]
;
		JSR	ENMYNOCHK
		BCS	GSTH0_CRCK20070		; [->GSTH0_CRCK20070]
;
		LDA	!ENMOD0,Y
		BIT	#0000000000100000B
		BNE	GSTH0_CRCK00F0		; 投げた敵に当たる？ [no->GSTH0_CRCK00F0]
;
GSTH0_CRCK20070 EQU	$
		LDA	<ENWRK2,X
		CMP	#0008
		BCS	GSTH0_CRCK20080		; １ｕｐ ? [yes->GSTH0_CRCK20080]
;
		INC	<ENWRK2,X
		BRA	GSTH0_CRCK20090
;
GSTH0_CRCK20080 EQU	$
		PHX
		PHY
		TYX
		JSL	>PL_1UP_SET_P
;
		PLY
		PLX
GSTH0_CRCK20090 EQU	$
		TYX
;;;;;		JSL	>DEATHENEMY
;
		JSL	>ENDEATH_SET_4
;
		LDX	!ENINDX
		LDY	<ENWRK2,X
		LDA	GSTH0_ENDHSOUND,Y
		AND	#000FFH
		JSL	>SOUND_3_ON		; サウンド セット !!
;
		RTL
;
GSTH0_CRCK20100 EQU	$
		LDA	!ECENTX,X
		STA	<EWORK0
		LDA	!ECENTY,X
		STA	<EWORK2
		LDA	#FSMK1
		JSL	>FSMK0_SET2
;
		LDA	#0000BH
		JSL	>SOUND_3_ON		; サウンド セット !!
;
		PLY
		PLA				; pull pull return !!
		JMP	>ENCLEAR_NORETN
;
;
GSTH0SET	EQU	$
		JSL	>ENMDCK			; mode check
;
		LDA	!ENTIM0,X
		BNE	GSTH0SET00F0		; セットしていい？ [no->GSTH0SET00F0]
;
		M_CHIP	HEIHO_COUNTER
		LDX	<ENINDX
;
		LDA	R6
		CMP	#07
		BCS	GSTH0SET00F0		; セットしていい？ [no->GSTH0SET00F0]
;
		LDA	!EPWIDX,X
		CLC
		ADC	#0001CH
		CMP	#0001CH*2
		BCS	GSTH0SET0040		; セットしていい？ [yes->GSTH0SET0040]
;
		LDA	!EPWIDY,X
		CLC
		ADC	#00021H
		CMP	#00021H*2
		BCC	GSTH0SET00E0		; セットしていい？ [no->GSTH0SET00E0]
;
GSTH0SET0040	EQU	$
		LDA	#GSTH0
		JSL	>ENINSR
		BCC	GSTH0SET00F0		; 敵確保成功？ [no->GSTH0SET00F0]
;
		LDA	!ENXPSL,X
		STA	!ENXPSL,Y
		LDA	!ENYPSL,X
		STA	!ENYPSL,Y
		STA	!ENWRK8,Y
		LDA	#0FF00H
		STA	!ENYSPD,Y
		LDA	#0000
		STA	!ENGPOW,Y
		LDA	!ENMOD1,Y
		AND	#1111111111100000B
		STA	!ENMOD1,Y		; ＢＧチェックＯＦＦ！！
		LDA	!EPXMUK,X
		AND	#000FFH
		STA	!ENMUKI,Y
;
		M8				; memory 8bit mode !!
;
		LDA	#00
		STA	!ENWATR,Y
		LDA	#04
		STA	!ENCONT,Y
;
		M16				; memory 16bit mode !!
;
		LDA	#00076H
		JSL	>SOUND_3_ON		; サウンド セット！！
;
GSTH0SET00E0	EQU	$
		LDA	#64*2
		STA	!ENTIM0,X
GSTH0SET00F0	EQU	$
		RTL
;
;
;------------------------------------------------------------------------
;-	fail （幽霊ヘイホー）						-
;------------------------------------------------------------------------
GSTH0FL		EQU	$
		LDA	ENMOD0,X	;敵との衝突チェック無しセット
		AND	#1111100111111111B
		STA	ENMOD0,X
		LDA	ENMOD1,X	;ＢＧチェック無しセット
		AND	#1111111111100000B
		STA	ENMOD1,X
;
		LDA	#040H		;重力セット
		STA	ENGPOW,X
		LDA	#0400H
		STA	ENGMAX,X
		STZ	ENYUSN,X
;
		LDA	ENMOD2,X	;範囲クリアーサイズセット
		AND	#1111111111110011B
		ORA	#0000000000000100B
		STA	ENMOD2,X
;
		LDA	ENCLOR,X
		ORA	#10000000B	;Ｖフリップセット
		LDY	<ENCONT,X
		CPY	#06
		BEQ	GSTH0FL0100		; [->GSTH0FL0100]
		CPY	#08
		BEQ	GSTH0FL0100		; [->GSTH0FL0100]
;
		ORA	#00110000B	;ＢＧ優先順位セット
		STA	ENCLOR,X
GSTH0FL00F0	EQU	$
		RTL
;
GSTH0FL0100	EQU	$
		STA	ENCLOR,X
		LDA	!ENYPSL,X
		CMP	!ENWRK8,X
		BMI	GSTH0FL00F0		; [->GSTH0FL00F0]
;
		JMP	>ENCLEAR
;
;
;------------------------------------------------------------------------
;-	initial (子ウンババ)						-
;------------------------------------------------------------------------
kounbaba00	EQU	000H
kounbaba01	EQU	001H
kounbaba02	EQU	002H
kounbaba03	EQU	003H
kounbaba04	EQU	004H
kounbaba05	EQU	005H
kounbaba06	EQU	006H
kounbaba07	EQU	007H
kounbaba08	EQU	008H
;
kounbdown	EQU	(koun_dwn-KOUNBMVMODSEL)
kounbdwn2	EQU	(koun_dw2-KOUNBMVMODSEL)
;
kounb_ecntxw	EQU	00008H
kounb_ewidex	EQU	0000AH
;
KOUNB_ECNTYW	EQU	$
		WORD	00007H, 00007H, 00006H, 00005H
		WORD	00004H, 00003H, 00002H, 00001H
		WORD	00000H
;
KOUNB_EWIDEY	EQU	$
		WORD	00008H, 00008H, 00008H, 00009H
		WORD	0000AH, 0000BH, 0000CH, 0000DH
		WORD	0000EH
;
KOUNBIN		EQU	$
		LDA	!ENYPSL,X
		SEC
		SBC	#00008H
		STA	!ENYPSL,X
		STA	!ENWRK8,X		; Set Y Position Save !!
		LDA	#kounb_ecntxw
		STA	!ECNTXW,X
		LDA	#kounb_ewidex
		STA	!EWIDEX,X
		LDA	KOUNB_ECNTYW
		STA	!ECNTYW,X
		LDA	KOUNB_EWIDEY
		STA	!EWIDEY,X
		RTL
;
;
;------------------------------------------------------------------------
;-	move (子ウンババ)						-
;------------------------------------------------------------------------
KOUNBMV		EQU	$
		JSL	>ENMDCK			; mode check
;
		LDA	<ENCONT,X
		TAX
		JMP	(KOUNBMVMODSEL,X)
;
KOUNBMVMODSEL	EQU	$
		WORD	KOUNBWAIT
		WORD	KOUNBFAIT
koun_dwn	WORD	KOUNBDOWN
koun_dw2	WORD	KOUNBDWN2
;
;
KOUNBWAIT	EQU	$
		LDX	<ENINDX
		JSL	>EPCRCK
;
		JSL	>KOUNB_PLSH
;
		JSL	>KOUNB_CRCK
;
		LDA	<ENWRK0,X
		TAX
		JSR	(KOUNBWAITMODSEL,X)
;
		RTL
;
KOUNBWAITMODSEL EQU	$
		WORD	KOUNBWAIT0
		WORD	KOUNBPACHI
;
KOUNBWAIT0	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	KOUNBWAIT000F0		; next mode ? [no->KOUNBWAIT000F0]
;
		LDA	#04*4
		STA	!ENTIM0,X
		LDA	#0004
		STA	!ENTIM1,X
		INC	<ENWRK0,X
		INC	<ENWRK0,X
KOUNBWAIT000F0	EQU	$
		RTS
;
;
KOUNBPACHI	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BEQ	KOUNBPACHI0100		; next mode ? [yes->KOUNBPACHI0100]
;
		LDA	!ENTIM1,X
		BNE	KOUNBPACHI0080		; pattern change ? [no->KOUNBPACHI0080]
;
		LDA	#0004
		STA	!ENTIM1,X
		LDA	!ENCHPT,X
		EOR	#00001H
		STA	!ENCHPT,X
		ASL	A
		TAY
		LDA	KOUNB_ECNTYW,Y
		STA	!ECNTYW,X
		LDA	KOUNB_EWIDEY,Y
		STA	!EWIDEY,X
KOUNBPACHI0080	EQU	$
		RTS
;
KOUNBPACHI0100	EQU	$
		STZ	!ENCHPT,X
		LDA	KOUNB_ECNTYW
		STA	!ECNTYW,X
		LDA	KOUNB_EWIDEY
		STA	!EWIDEY,X
		LDA	<RANDM0
		AND	#0003FH
		CLC
		ADC	#00040H
		STA	!ENTIM0,X
		STZ	<ENWRK0,X
		RTS
;
;
KOUNB_PLSH	EQU	$
		LDA	!ECENTX,X
		SEC
		SBC	!PCENTX
		CLC
		ADC	#00060H
		CMP	#00060H*2
		BCS	KOUNB_PLSH00F0		; プレイヤー侵入 ? [no->KOUNB_PLSH00F0]
;
		LDA	!ECENTY,X
		SEC
		SBC	!PCENTY
		CLC
		ADC	#00020H
		CMP	#00080H
		BCS	KOUNB_PLSH00F0		; プレイヤー侵入 ? [no->KOUNB_PLSH00F0]
;
		LDA	!EPXMUK,X
		AND	#000FFH
		STA	!ENMUKI,X
		LDA	#00100H
		STA	!ENGMAX,X
		LDA	#00010H
		STA	!ENGPOW,X
		LDA	#-0100H
		STA	!ENYSPD,X
		STZ	!ENCHPT,X
		LDA	KOUNB_ECNTYW
		STA	!ECNTYW,X
		LDA	KOUNB_EWIDEY
		STA	!EWIDEY,X
		STZ	<ENWRK0,X
		INC	<ENCONT,X
		INC	<ENCONT,X
		PLY
		PLA				; pull pull return !!
KOUNB_PLSH00F0	EQU	$
		RTL
;
;
KOUNBFAIT	EQU	$
		LDX	<ENINDX
		JSL	>EPCRCK
;
		JSL	>KOUNB_CRC2
;
		LDA	<ENWRK0,X
		TAX
		JMP	(KOUNBFAITMODSEL,X)
;
KOUNBFAITMODSEL EQU	$
		WORD	KOUNBFAIT0
		WORD	KOUNBFAIT1
;
;
KOUNB_XSPD	EQU	$
		WORD	-0100H, 00100H
;
KOUNBFAIT0	EQU	$
		LDX	<ENINDX
		LDA	!ENWRK8,X
		CLC
		ADC	#00010H
		CMP	!ENYPSL,X
		BPL	KOUNBFAIT000F0		; [->KOUNBFAIT000F0]
;
KOUNBFAIT00020	EQU	$
		STA	!ENYPSL,X
		LDA	#-0160H
		STA	!ENYSPD,X
		LDA	#00008H
		STA	!ENGPOW,X
		LDA	#00400H
		STA	!ENGMAX,X
		LDY	!ENMUKI,X
		LDA	KOUNB_XSPD,Y
		STA	!ENXSPD,X
;
;
		LDA	#00048H
		JSL	>SOUND_3_ON		; サウンド セット !!
;
		LDA	#(KOUNBFAIT1TM-KOUNBFAIT1PT-1)
		STA	<ENWRK2,X
;
		M8				; memory 8bit mode !!
;
		TAY
		LDA	KOUNBFAIT1TM,Y
		STA	!ENTIM0,X
		LDA	KOUNBFAIT1PT,Y
		STA	!ENCHPT,X
		ASL	A
		TAY
;
		M16				; memory 16bit mode !!
;
		LDA	KOUNB_ECNTYW,Y
		STA	!ECNTYW,X
		LDA	KOUNB_EWIDEY,Y
		STA	!EWIDEY,X
		INC	<ENWRK0,X
		INC	<ENWRK0,X
KOUNBFAIT000F0	EQU	$
		RTL
;
;
KOUNBFAIT1PT	EQU	$
		BYTE	kounbaba02, kounbaba03, kounbaba04, kounbaba05
		BYTE	kounbaba06, kounbaba07, kounbaba08, kounbaba07
		BYTE	kounbaba06, kounbaba05, kounbaba04, kounbaba03
		BYTE	kounbaba02, kounbaba00
;
KOUNBFAIT1TM	EQU	$
		HEX	02, 02, 02, 02, 02, 02, 18, 02
		HEX	02, 02, 02, 02, 02, 10
;
KOUNBFAIT1	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	KOUNBFAIT100F0		; pattern change ? [no->KOUNBFAIT100F0]
;
		DEC	<ENWRK2,X
		BMI	KOUNBFAIT10100		; next mode ? [yes->KOUNBFAIT10100]
;
		M8				; memory 8bit mode !!
;
		LDY	<ENWRK2,X
		LDA	KOUNBFAIT1TM,Y
		STA	!ENTIM0,X
		LDA	KOUNBFAIT1PT,Y
		STA	!ENCHPT,X
		ASL	A
		TAY
;
		M16				; memory 16bit mode !!
;
		LDA	KOUNB_ECNTYW,Y
		STA	!ECNTYW,X
		LDA	KOUNB_EWIDEY,Y
		STA	!EWIDEY,X
KOUNBFAIT100F0	EQU	$
		RTL
;
KOUNBFAIT10100	EQU	$
		RTL
;
;
KOUNBDOWN	EQU	$
		LDX	<ENINDX
		LDA	<ENWRK0,X
		BEQ	KOUNBDOWN0080		; [->KOUNBDOWN0080]
;
		LDA	!ENTIM0,X
		BNE	KOUNBDOWN0070		; [->KOUNBDOWN0070]
;
		DEC	!ENYPSL,X
		LDA	!ENYPSL,X
		CMP	!ENWRK8,X
		BNE	KOUNBDOWN0070		; [->KOUNBDOWN0070]
;
		STZ	<ENCONT,X
		STZ	<ENWRK0,X
KOUNBDOWN0070	EQU	$
		RTL
;
KOUNBDOWN0080	EQU	$
		LDA	!ENWRK8,X
		CLC
		ADC	#00020H
		CMP	!ENYPSL,X
		BPL	KOUNBDOWN00F0		; [->KOUNBDOWN00F0]
;
		STA	!ENYPSL,X
		STZ	!ENGPOW,X
		STZ	!ENYSPD,X
		STZ	!ENCHPT,X
		LDA	KOUNB_ECNTYW
		STA	!ECNTYW,X
		LDA	KOUNB_EWIDEY
		STA	!EWIDEY,X
		LDA	#sec02
		STA	!ENTIM0,X
		INC	<ENWRK0,X
KOUNBDOWN00F0	EQU	$
		RTL
;
;
KOUNBDWN2	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	KOUNBDWN200F0		; pattern change ? [no->KOUNBDWN200F0]
;
		LDA	!ENCHPT,X
		CMP	#0001
		BEQ	KOUNBDWN20080		; [->KOUNBDWN20080]
		BCS	KOUNBDWN20060		; [->KOUNBDWN20060]
;
		LDA	#0001
		BRA	KOUNBDWN20070
;
KOUNBDWN20060	EQU	$
		DEC	A
KOUNBDWN20070	EQU	$
		STA	!ENCHPT,X
		LDA	#0002
		STA	!ENTIM0,X
KOUNBDWN20080	EQU	$
KOUNBDWN200F0	EQU	$
		RTL
;
;
KOUNB_CRCK	EQU	$
		LDY	!ECRSFG,X
		DEY
		BMI	KOUNB_CRCK00F0		; 衝突無し ? [yes->KOUNB_CRCK00F0]
		BEQ	KOUNB_CRCK00F0		; 赤ちゃんとの衝突 ? [yes->KOUNB_CRCK00F0]
;
		LDA	!ENMODE,Y
		CMP	#EMOVE
		BNE	KOUNB_CRCK00F0		; mode move ? [no->KOUNB_CRCK00F0]
;
		LDA	!ENSHOT,Y
		BEQ	KOUNB_CRCK00F0		; ショット ? [no->KOUNB_CRCK00F0]
;
		TYX
		JSL	>ENDEATH_SET_4
;
		LDX	<ENINDX
		LDA	#kounbaba01
		STA	!ENCHPT,X
		ASL	A
		TAY
		LDA	KOUNB_ECNTYW,Y
		STA	!ECNTYW,X
		LDA	KOUNB_EWIDEY,Y
		STA	!EWIDEY,X
		LDA	#00100H
		STA	!ENGMAX,X
		LDA	#00010H
		STA	!ENGPOW,X
		LDA	#-0100H
		STA	!ENYSPD,X
		STZ	<ENWRK0,X
		LDA	#kounbdown
		STA	<ENCONT,X
		PLY
		PLA				; pull pull return !!
KOUNB_CRCK00F0	EQU	$
		RTL
;
;
KOUNB_CRC2	EQU	$
		LDY	!ECRSFG,X
		DEY
		BMI	KOUNB_CRC200F0		; 衝突無し ? [yes->KOUNB_CRC200F0]
		BEQ	KOUNB_CRC200F0		; 赤ちゃんとの衝突 ? [yes->KOUNB_CRC200F0]
;
		LDA	!ENMODE,Y
		CMP	#EMOVE
		BNE	KOUNB_CRC200F0		; mode move ? [no->KOUNB_CRC200F0]
;
		LDA	!ENSHOT,Y
		BEQ	KOUNB_CRC200F0		; ショット ? [no->KOUNB_CRC200F0]
;
		TYX
		JSL	>ENDEATH_SET_4
;
		LDX	<ENINDX
		STZ	!ENXSPD,X
		STZ	!ENYSPD,X
		LDA	#00001H
		STA	!ENGPOW,X
		LDA	#00100H
		STA	!ENGMAX,X
		LDA	#kounbdwn2
		STA	<ENCONT,X
		PLY
		PLA				; pull pull return !!
KOUNB_CRC200F0	EQU	$
		RTL
;
;
;------------------------------------------------------------------------
;-	initial (ターくん)						-
;------------------------------------------------------------------------
tarkun00	EQU	000H
tarkun01	EQU	001H
tarkun02	EQU	002H
tarkun03	EQU	003H
tarkun04	EQU	004H
tarkun05	EQU	005H
tarkun06	EQU	006H
tarkun07	EQU	007H
tarkun08	EQU	008H
tarkun09	EQU	009H
;
tarkunwalktime	EQU	02
;
TarkunNormal	EQU	(tarkunnml-TARKNMODSEL)
TarkunDorobou	EQU	(tarkundrb-TARKNMODSEL)
TarkunKatugi	EQU	(tarkunktg-TARKNMODSEL)
TarkunNige	EQU	(tarkunnig-TARKNMODSEL)
;
TARKNIN		EQU	$
		JSL	>ICE_IN_CK
;
		JSR	TARKNKYOROIN
;
		RTL
;
;
;------------------------------------------------------------------------
;-	move (ターくん)							-
;------------------------------------------------------------------------
TARKNMV		EQU	$
		JSL	>ENMDCK			; mode check
;
		JSR	TARKNPLAYCRCK
;;;;;;;;		JSL	>EPCRCK
;
		LDA	<ENCONT,X
		TAX
		JMP	(TARKNMODSEL,X)
;
TARKNMODSEL	EQU	$
tarkunnml	WORD	TARKNNORMAL
tarkundrb	WORD	TARKNDOROBO
tarkunktg	WORD	TARKNKATUGI
tarkunnig	WORD	TARKNNIGERU
;
;
;------------ 通常モード -----------------
TARKNNORMAL	EQU	$
		LDX	<ENINDX
		LDA	!ENWRK8,X
		BEQ	TARKNNORMAL0080		; スリップ ? [no->TARKNNORMAL0080]
;
		LDA	!ENXSPD,X
		BEQ	TARKNNORMAL0060		; [->TARKNNORMAL0060]
;
		LDA	!ENMUKI,X
		DEC	A
		EOR	!ENXSPD,X
		BMI	TARKNNORMAL0070		; [->TARKNNORMAL0070]
;
TARKNNORMAL0060 EQU	$
		STZ	!ENWRK8,X
		STZ	!ENXPOW,X
		STZ	!ENXSPD,X
		JSR	TARKNKYOROIN
;
TARKNNORMAL0070 EQU	$
		RTL
;
TARKNNORMAL0080 EQU	$
		JSR	TARKNBABYSCH0
;
		LDA	!ENCBFG,X
		BIT	#0000000000001100B
		BNE	TARKNNORMAL0100		; 横当たり ? [yes->TARKNNORMAL0100]
;
		BIT	#0000000000000001B
		BEQ	TARKNNORMAL0100		; 床無し ? [yes->TARKNNORMAL0100]
;
		LDA	<ENWRK0,X
		TAX
		JSR	(TAPKNNMLMOD,X)
;
		RTL
;
TARKNNORMAL0100 EQU	$
		JSR	TARKNKYOROIN
;
		RTL
;
TAPKNNMLMOD	EQU	$
		WORD	TARKNKYORO
		WORD	TARKUNWALK
;
;
TARKNBABYSCH0	EQU	$
		LDY	DEATHCT0		;赤ちゃん死神に取られてる ?
		BNE	TARKNBBSH0020		; yes: TARKNBBSH0020

		LDA	!BABYNO
		BEQ	TARKNBBSH0040		; 赤ちゃん泥棒モード ? [yes->TARKNBBSH0040]
;
TARKNBBSH0020	EQU	$

		RTS
;
TARKNBBSH0040	EQU	$
		LDA	#TarkunDorobou
		STA	<ENCONT,X
		JSR	TARKNKYOR2
;;;		JSR	TARKNKYOROIN
;
		PLA
		RTL
;
;
;------------ 泥棒モード -----------------
TARKNDOROBO	EQU	$
		LDX	<ENINDX
		JSR	TARKNBABYSCH1
;
		JSR	BABYCRCK		; 赤ちゃんとの衝突チェック !!
		BCS	TARKNDOROBO0080		; 赤ちゃんと衝突した ? [no->TARKNDOROBO0080]
;
		JSL	>BABYM_SHABN_C2

		LDA	#TarkunKatugi
		STA	<ENCONT,X
		STZ	!ENXSPD,X
		LDA	#tarkun06
		STA	!ENCHPT,X
		LDA	<EWORK
		AND	#08000H
		ASL	A
		ROL	A
		ASL	A
		STA	!ENMUKI,X
		STZ	<ENWRK0,X
;
		LDA	<EWORK
		ABS16
		ASL	A
		ASL	A
		ASL	A
		ASL	A
		LDY	<EWORK+1
		BPL	TARKNDOROBO0040		; [->TARKNDOROBO0040]
;
		EOR	#0FFFFH
		INC	A
TARKNDOROBO0040 EQU	$
		STA	!ENXSPD
;[1995.06.13.TU]		LDA	#0FE00H
;[1995.06.13.TU]		STA	!ENYSPD
;
		LDA	!ENCBFG
		AND	#0FFFEH
		STA	!ENCBFG
		RTL
;
TARKNDOROBO0080 EQU	$
		LDA	<ENWRK0,X
		TAX
		JSR	TARKUNRUN0
;
		RTL
;
TAPKNDRBMOD	EQU	$
		WORD	TARKNKYOR2
		WORD	TARKUNRUN0
;
;
TARKNBABYSCH1	EQU	$
		LDA	DEATHCT0		;赤ちゃん死神に取られた ?
		ORA	!BABYNO
		BNE	TARKNBBSH10040		; 通常モード ? [yes->TARKNBBSH10040]
;
		RTS
;
TARKNBBSH10040	EQU	$
		LDA	#TarkunNormal
		STA	<ENCONT,X
		LDA	<ENWRK2,X
		BNE	TARKNBBSH10080		; ジャンプ中 ? [yes->TARKNBBSH10080]
;
		JSR	TARKNKYOROIN
;
		BRA	TARKNBBSH10090
;
TARKNBBSH10080	EQU	$
		LDA	#0002
		STA	<ENWRK0,X
		JSR	TARKUNWALKIN
;
TARKNBBSH10090	EQU	$
		PLA
		RTL
;
;
;------------ 担ぎモード -----------------
TARKNKATUGI	EQU	$
		LDX	<ENINDX
		JSR	TARKNBABYSCH2
;
		LDA	<ENWRK0,X
		TAX
		JSR	(TAPKNKTGMOD,X)
;
		RTL
;
TAPKNKTGMOD	EQU	$
		WORD	TARKUNNOSE
		WORD	TARKNNSKRO
;
TARKNBABYSCH2	EQU	$
		LDA	!BABYNO
		CMP	#04000H
		BNE	TARKNBBSH10040		; 通常モード ? [yes->TARKNBBSH10040]
;
		RTS
;
;
;------------ 逃げモード -----------------
TARKNNIGERU	EQU	$
		LDX	<ENINDX
		JSR	TARKNBABYSCH2
;
		JSR	TARKUNBABYHOSE
;
		JSR	TARKUNRUN1
;
		RTL
;
;
TARKUNNOSE	EQU	$
		LDX	<ENINDX
		LDA	!ENYSPD
		BMI	TARKUNNOSE0080		; [->TARKUNNOSE0080]
;
		STZ	!ENXSPD
		STZ	!ENYSPD
		JSR	TARKUNBABYHOSE
;
		INC	<ENWRK0,X
		INC	<ENWRK0,X
		STZ	!ENXSPD,X
		LDA	<RANDM0
		AND	#0001FH
		CLC
		ADC	#00010H
		STA	!ENTIM0,X
		LDA	#tarkun06
		STA	!ENCHPT,X
		LDA	<RANDM0
		AND	#00007H
		CLC
		ADC	#00008H
		STA	!ENTIM2,X
TARKUNNOSE0080	EQU	$
		RTS
;
;
TARKNNSKRO	EQU	$
		LDX	<ENINDX
		JSR	TARKUNBABYHOSE
;
		LDA	!ENTIM0,X
		BNE	TARKNNSKRO0040		; 逃げモード ? [no->TARKNNSKRO0040]
;
		LDA	#TarkunNige
		STA	<ENCONT,X
		LDA	!EPXMUK,X
		AND	#000FFH
		EOR	#00002H
		STA	!ENMUKI,X
		JMP	TARKUNJUMPIN
;
TARKNNSKRO0040	EQU	$
		LDA	!ENTIM2,X
		BNE	TARKNNSKRO00F0		; 反転 ? [no->TARKNNSKRO00F0]
;
		LDA	!ENMUKI,X
		EOR	#00002H
		STA	!ENMUKI,X
		LDA	<RANDM0
		AND	#00007H
		CLC
		ADC	#00008H
		STA	!ENTIM2,X
TARKNNSKRO00F0	EQU	$
		RTS
;
;
TARKUNWALKXSPD	EQU	$
		WORD	-00080H,  00080H
;
TARKUNWALK	EQU	$
		LDX	<ENINDX
		LDA	#TARKUNWALKXSPD
		STA	<ENWRK4,X
		LDA	<ENWRK2,X
		BNE	TARKUNJUMP		; ジャンプ ? [yes->TARKUNJUMP]
;
		LDA	!ENTIM0,X
		BNE	TARKUNWALK0040		; キョロキョロ ? [no->TARKUNWALK0040]
;
TARKNKYOROIN	EQU	$
		STZ	<ENWRK0,X
TARKNKYOROIN2	EQU	$
		STZ	!ENXSPD,X
		LDA	<RANDM0
		AND	#0003FH
		CLC
		ADC	#00040H
		STA	!ENTIM0,X
		LDA	#tarkun06
		STA	!ENCHPT,X
		LDA	<RANDM0
		AND	#0001FH
		CLC
		ADC	#00008H
		STA	!ENTIM2,X
		RTS
;
TARKUNWALK0040	EQU	$
		LDA	!ENTIM2,X
		BNE	TARKUNWALK00F0		; pattern change ? [no->TARKUNWALK00F0]
;
		DEC	!ENCHPT,X
		BPL	TARKUNWALK00F0		; pattern max ? [no->TARKUNWALK00F0]
;
TARKUNWALK0080	EQU	$
		LDA	#tarkun05
		STA	!ENCHPT,X
		LDA	#tarkunwalktime
		STA	!ENTIM2,X
TARKUNWALK00F0	EQU	$
		RTS
;
;
TARKUNRUN0XSPD	EQU	$
		WORD	-00100H,  00100H
;
TARKUNRUN0XSPD2 EQU	$
		WORD	-00200H,  00200H
;
TARKUNRUN0	EQU	$
		LDX	<ENINDX
		LDA	#TARKUNRUN0XSPD2
		STA	<ENWRK4,X
		LDA	<ENWRK2,X
		BNE	TARKUNJUMP		; ジャンプ ? [yes->TARKUNJUMP]
;
		JSR	TARKNBGCHK
;
		LDA	!ECENTX,X
		SEC
		SBC	!ECENTX
		STA	<EWORK
		LDA	!ENMUKI,X
		DEC	A
		EOR	<EWORK
		BMI	TARKUNWALK0040		; 向き変え ? [no->TARKUNWALK0040]
;
		LDA	!ENMUKI,X
		EOR	#00002H
		STA	!ENMUKI,X
		TAY
		LDA	TARKUNRUN0XSPD,Y
		STA	!ENXSPD,X
		BRA	TARKUNWALK0040
;
TARKUNJUMP	EQU	$
		LDA	!ENCBFG,X
		BIT	#0000000000000001B
		BNE	TARKUNJUMP0100		; 着地 ? [yes->TARKUNJUMP0100]
;
		BIT	#0000000000001100B
		BEQ	TARKUNJUMP0020		; 横当たり ? [no->TARKUNJUMP0020]
;
		LDY	!ENMUKI,X
		LDA	TARKUNRUN0XSPD,Y
		STA	!ENXSPD,X
TARKUNJUMP0020	EQU	$
		LDA	#tarkun07
		LDY	!ENYSPD+1,X
		BMI	TARKUNJUMP0040		; 上昇中 ? [yes->TARKUNJUMP0040]
;
		LDA	#tarkun08
TARKUNJUMP0040	EQU	$
		STA	!ENCHPT,X
		RTS
;
TARKUNJUMP0100	EQU	$
		LDA	<ENWRK2,X
		CMP	#0001
		BNE	TARKUNJUMP0140		; イニシャル ? [no->TARKUNJUMP0140]
;
		LDA	#tarkun09
		STA	!ENCHPT,X
		LDA	#0004
		STA	!ENTIM2,X
		INC	<ENWRK2,X
TARKUNJUMP0140	EQU	$
		LDA	!ENTIM2,X
		BNE	TARKUNJUMP01F0		; ジャンプ終了 ? [no->TARKUNJUMP01F0]
;
		LDY	!ENMUKI,X
		LDA	<ENWRK4,X
		STA	<EWORK
		LDA	(<EWORK),Y
		STA	!ENXSPD,X
		STZ	<ENWRK2,X
		JMP	TARKUNWALK0080
;
TARKUNJUMP01F0	EQU	$
		RTS
;
;
TARKUNRUN1	EQU	$
		LDX	<ENINDX
		LDA	#TARKUNRUN0XSPD2
		STA	<ENWRK4,X
		LDA	<ENWRK2,X
		BNE	TARKUNJUMP		; ジャンプ ? [yes->TARKUNJUMP]
;
		LDA	!ENCBFG,X
		BIT	#0000000000001100B
		BNE	TARKUNRUN10040		; 横当たり ? [yes->TARKUNRUN10040]
;
		BIT	#0000000000000001B
		BEQ	TARKUNRUN10060		; 床無し ? [yes->TARKUNRUN10060]
;
		JMP	TARKUNWALK0040
;
TARKUNRUN10040	EQU	$
		LDY	!ENMUKI,X
		LDA	TARKUNRUN0XSPD2,Y
		STA	!ENXSPD,X
TARKUNRUN10060	EQU	$
		JMP	TARKUNJUMPIN
;
;
TARKNKYORO	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	TARKNKYORO0040		; 歩き ? [no->TARKNKYORO0040]
;
		INC	<ENWRK0,X
		INC	<ENWRK0,X
		LDY	!ENMUKI,X
		LDA	TARKUNWALKXSPD,Y
		STA	!ENXSPD,X
TARKUNWALKIN	EQU	$
		LDA	<RANDM0
		AND	#0003FH
		CLC
		ADC	#00040H
		STA	!ENTIM0,X
		LDA	#tarkun05
		STA	!ENCHPT,X
		LDA	#tarkunwalktime
		STA	!ENTIM2,X
		RTS
;
TARKNKYORO0040	EQU	$
		LDA	!ENTIM2,X
		BNE	TARKNKYORO00F0		; 反転 ? [no->TARKNKYORO00F0]
;
		LDA	!ENMUKI,X
		EOR	#00002H
		STA	!ENMUKI,X
		LDA	<RANDM0
		AND	#0001FH
		CLC
		ADC	#00008H
		STA	!ENTIM2,X
TARKNKYORO00F0	EQU	$
		RTS
;
;
TARKNKYOR2	EQU	$
;;;		LDX	<ENINDX
;;;		LDA	!ENTIM0,X
;;;		BNE	TARKNKYOR20040		; 走り ? [no->TARKNKYOR20040]
;;;;
;;;		INC	<ENWRK0,X
;;;		INC	<ENWRK0,X
		LDA	!ECENTX,X
		SEC
		SBC	!ECENTX
		AND	#08000H
		ASL	A
		ROL	A
		ASL	A
		STA	!ENMUKI,X
;
TARKUNJUMPIN	EQU	$
		LDA	#0001
		STA	<ENWRK2,X
		LDA	#0FC00H
		STA	!ENYSPD,X
		LDA	!ENCBFG,X
		AND	#0FFFEH
		STA	!ENCBFG,X
		RTS
;
TARKNKYOR20040	EQU	$
		LDA	!ENTIM2,X
		BNE	TARKNKYOR200F0		; 反転 ? [no->TARKNKYOR200F0]
;
		LDA	!ENMUKI,X
		EOR	#00002H
		STA	!ENMUKI,X
		LDA	<RANDM0
		AND	#0001FH
		CLC
		ADC	#00008H
		STA	!ENTIM2,X
TARKNKYOR200F0	EQU	$
		RTS
;
;
TARKNPLBOUNDX	EQU	$
		WORD	-00300H, 00300H
;
TARKNPLKBECHK	EQU	$
		WORD	0000000110000000B
		WORD	0000000001100000B
;
TARKNPLAYCRCK	EQU	$
		LDY	!ECRSFG,X
		BMI	TARKNPLCRCK0100		 ; プレイヤーと衝突 ? [yes->TARKNPLCRCK0100]

		CPX	PONLFFG
		BNE	TARKNKYOR200F0

		STZ	PONLFFG

		RTS
;
TARKNPLCRCK0100 EQU	$
		LDA	!SUPER_FLAG
		BEQ	TARKNPLCRCK0120		; スーパー？ [no->TARKNPLCRCK0120]
;
		PLA				; ぷるぷるりたーん！！
		JMP	>ENDEATH_SET_4
;
TARKNPLCRCK0120 EQU	$
		LDA	!EPWIDY,X
		SEC
		SBC	!PWIDEY
		SEC
		SBC	!EWIDEY,X
		CMP	#0FFF8H
		BCC	TARKNPLCRCK0130		; 踏まれた ? [no->TARKNPLCRCK0130]
;
		LDA	!PLYSPD
		BMI	TARKNKYORO00F0		; プレイヤー上昇中 ? [yes->TARKNKYORO00F0]
;
		LDA	#00013H
		JSL	>SOUND_3_ON		; サウンド セット！！
;
		JSL	>PLAYER_REBOUND
;
;[1995.06.23.FR]		PLA
;[1995.06.23.FR]		STA	<EWORK
;[1995.06.23.FR]		JSL	>EPCRCK
;[1995.06.23.FR];
;[1995.06.23.FR]		LDA	<EWORK
;[1995.06.23.FR]		PHA
		RTS
;
TARKNPLCRCK0130 EQU	$
		LDA	!PLYSPD
		BPL	TARKNPLCRCK0180		; プレイヤー上昇中 ? [no->TARKNPLCRCK0180]
;
		STZ	!PLYSPD
		STZ	!PLJUMP
		STZ	!PLSPJP
		RTS
;
TARKNPLCRCK0180 EQU	$
		LDA	#00013H
		JSL	>SOUND_3_ON		; サウンド セット！！
;
		LDY	!EPXMUK,X
		LDA	!PLBGCR
		AND	TARKNPLKBECHK,Y
		BNE	TARKNPLCRCK01A0		; プレイヤー跳ね飛ばし ? [no->TARKNPLCRCK01A0]
;
		LDA	TARKNPLBOUNDX,Y
		STA	!PLXSPD
		STA	!PLMVSP
TARKNPLCRCK01A0 EQU	$
		LDA	<ENCONT,X
		CMP	#TarkunNormal
		BNE	TARKNPLCRCK01F0		; 通常モード ? [no->TARKNPLCRCK01F0]
;
		LDA	!EPXMUK,X
		AND	#000FFH
		STA	!ENMUKI,X
		TAY
		LDA	TARKNSLIPSPD,Y
		STA	!ENXSPD,X
		LDA	#00010H
		STA	!ENXPOW,X
		LDA	#0001
		STA	!ENWRK8,X
TARKNPLCRCK01F0 EQU	$
		RTS
;
TARKNSLIPSPD	EQU	$
		WORD	00100H, -00100H
;
;
TARKNBGCHK	EQU	$
		LDY	!ENMUKI,X
		LDA	!ENCBFG,X
		BIT	#0000000000001100B
		BEQ	TARKNBGCHK0040		; 横当たり ? [no->TARKNBGCHK0040]
;
		LDA	TARKUNRUN0XSPD,Y
		BRA	TARKNBGCHK0060
;
TARKNBGCHK0040	EQU	$
		BIT	#0000000000000001B
		BNE	TARKNBGCHK00F0		; 床有 ? [yes->TARKNBGCHK00F0]
;
		LDA	TARKUNRUN0XSPD2,Y
TARKNBGCHK0060	EQU	$
		STA	!ENXSPD,X
		PLA
		JMP	TARKUNJUMPIN
;
TARKNBGCHK00F0	EQU	$
		RTS
;
;
TARKUNBABYHOSE	EQU	$
		LDA	!ENXPSL,X
		STA	!ENXPSL
		LDA	!ENYPSL,X
		SEC
		SBC	#00010H
		STA	!ENYPSL
		RTS
;
;
;------------------------------------------------------------------------
;-	赤ちゃんとの衝突チェック					-
;-		return : 衝突した時 キャリークリア			-
;-			   " してない時 キャリーセット                  -
;-			 衝突した時 EWORK  <- Ｘ幅			-
;-				    EWORK2 <- Ｙ幅			-
;------------------------------------------------------------------------
BABYCRCK	EQU	$
		LDA	!EWIDEX,X
		CLC
		ADC	!EWIDEX
		STA	<EWORK4
		LDA	!ECENTX,X
		SEC
		SBC	!ECENTX
		STA	<EWORK
		ABS16
		CMP	<EWORK4
		BCS	BABYCRCK0080		; 衝突した ? [no->BABYCRCK0080]
;
		LDA	!EWIDEY,X
		CLC
		ADC	!EWIDEY
		STA	<EWORK4
		LDA	!ECENTY,X
		SEC
		SBC	!ECENTY
		STA	<EWORK2
		ABS16
		CMP	<EWORK4
BABYCRCK0080	EQU	$
		RTS
;
;
;------------------------------------------------------------------------
;-	initial (ターくん２号(スライディングターくん))			-
;------------------------------------------------------------------------
tarkun2_00	EQU	000H
tarkun2_01	EQU	001H
tarkun2_02	EQU	002H
tarkun2_03	EQU	003H
tarkun2_04	EQU	004H
tarkun2_05	EQU	005H
tarkun2_06	EQU	006H
tarkun2_07	EQU	007H
tarkun2_08	EQU	008H
tarkun2_09	EQU	009H
tarkun2_0A	EQU	00AH
tarkun2_0B	EQU	00BH
tarkun2_0C	EQU	00CH
tarkun2_0D	EQU	00DH
;
starkunslipptn	EQU	(STRKNSLIPTM-STRKNSLIPPT-1)
;
starkunfptn0	EQU	(starkunslipptn-3)
starkunfptn1	EQU	(starkunslipptn-0)
;
starkunhane	EQU	(stknhane-STRKNMVMODSEL)
starkunfktu	EQU	(stknfktu-STRKNMVMODSEL)
starkunslip	EQU	(stknslip-STRKNMVMODSEL)
starkunsjmp	EQU	(stknsjmp-STRKNMVMODSEL)
;
STRKN_XSPD	EQU	$
		WORD	-01A8H, 001A8H
;
STRKNIN		EQU	$
		LDA	!ENMUKI,X
		STA	<ENWRK2,X
		TAY
		LDA	STRKN_XSPD,Y
		STA	!ENXSPD,X
		LDA	#msec0125
		STA	!ENTIM1,X
		RTL
;
;
;------------------------------------------------------------------------
;-	move (ターくん２号(スライディングターくん))			-
;------------------------------------------------------------------------
STRKNMV		EQU	$
		JSL	>ENMDCK			; mode check
;
		JSL	>STRKN_CRCK
;
		LDA	<ENCONT,X
		TAX
		JMP	(STRKNMVMODSEL,X)
;
STRKNMVMODSEL	EQU	$
		WORD	STRKNDASH
stknsjmp	WORD	STRKNSJMP
stknslip	WORD	STRKNSLIP
stknfktu	WORD	STRKNFKTU
		WORD	STRKNFKT2
stknhane	WORD	STRKNHANE
;
;
STRKNDASH	EQU	$
		LDX	<ENINDX
		JSR	STRKNMUKISET
;
		LDA	<ENWRK0,X
		BNE	STRKNJUMP		; 空中 ? [yes->STRKNJUMP]
;
		LDA	!ENTIM0,X
		BNE	STRKNDASH00F0		; pattern change ? [no->STRKNDASH00F0]
;
		LDA	!ENTIM1,X
		BEQ	STRKNDASH0100		; [->STRKNDASH0100]
;
		LDA	#0002
		STA	!ENTIM0,X
		LDA	!ENCHPT,X
		DEC	A
		CMP	#tarkun2_05+1
		BCC	STRKNDASH0040		; [->STRKNDASH0040]
;
		LDA	#tarkun2_05
STRKNDASH0040	EQU	$
		STA	!ENCHPT,X
STRKNDASH00F0	EQU	$
		RTL
;
STRKNDASH0100	EQU	$
		LDA	#tarkun2_06
		STA	!ENCHPT,X
		LDA	#0002
		STA	!ENTIM0,X
		INC	<ENCONT,X
		INC	<ENCONT,X
		RTL
;
;
STRKNJUMP	EQU	$
		LDA	!ENCBFG,X
		BIT	#0000000000000001B
		BNE	STRKNJUMP0100		; 着地 ? [yes->STRKNJUMP0100]
;
		LDA	#tarkun2_07
		LDY	!ENYSPD+1,X
		BMI	STRKNJUMP0040		; 上昇中 ? [yes->STRKNJUMP0040]
;
		LDA	#tarkun2_08
STRKNJUMP0040	EQU	$
		STA	!ENCHPT,X
		RTL
;
STRKNJUMP0100	EQU	$
		LDA	#tarkun2_09
		STA	!ENCHPT,X
		LDA	#0002
		STA	!ENTIM0,X
		STZ	<ENWRK0,X		; 空中フラグクリア !!
		RTL
;
;
STRKNSJMP	EQU	$
		LDX	<ENINDX
		JSR	STRKNMUKISET
;
		LDA	<ENWRK0,X
		BNE	STRKNJUMP		; 空中 ? [yes->STRKNJUMP]
;
		LDA	!ENTIM0,X
		BNE	STRKNSJMP0070		; [->STRKNSJMP0070]
;
		LDA	!ENCHPT,X
		CMP	#tarkun2_06
		BNE	STRKNSJMP0080		; ジャンプ ? [no->STRKNSJMP0080]
;
		LDA	#0FE00H
		STA	!ENYSPD,X
		INC	<ENWRK0,X
STRKNSJMP0070	EQU	$
		RTL
;
STRKNSJMP0080	EQU	$
		LDA	#starkunslipptn
		STA	<ENWRK4,X
		TAY
		LDA	STRKNSLIPPT,Y
		AND	#000FFH
		STA	!ENCHPT,X
		LDA	!ENXSPD,X
		ABS16
		LSR	A
		LSR	A
		AND	#00007H
		TAY
		LDA	STRKNSLIPTM,Y
		AND	#000FFH
		STA	!ENTIM0,X
		LDA	#0004
		STA	!ENXPOW,X
		LDA	!ENMOD1,X
		AND	#1111111100111111B
		ORA	#0000000010000000B
		STA	!ENMOD1,X		; ＢＧチェック横当たりでクリアセット!!
		LDA	#starkunslip
		STA	<ENCONT,X
		RTL
;
;
STRKNFKT2	EQU	$
		LDX	<ENINDX
		LDA	<ENWRK0,X
		BEQ	STRKNFKT20040		; 空中 ? [no->STRKNFKT20040]
;
		JMP	STRKNJUMP		; 空中 ? [yes->STRKNJUMP]
;
STRKNFKT20040	EQU	$
		LDA	!ENTIM0,X
		BNE	STRKNFKT200F0		; 反転 ? [no->STRKNFKT200F0]
;
		DEC	<ENWRK4,X
		BMI	STRKNFKT20100		; [->STRKNFKT20100]
;
		LDA	#0004
		STA	!ENTIM0,X
		LDA	!ENMUKI,X
		EOR	#0002
		STA	!ENMUKI,X
		STA	<ENWRK2,X
STRKNFKT200F0	EQU	$
		RTL
;
STRKNFKT20100	EQU	$
		LDA	!EPXMUK,X
		AND	#000FFH
		STA	!ENMUKI,X
		STA	<ENWRK2,X
		TAY
		LDA	STRKN_XSPD,Y
		STA	!ENXSPD,X
		LDA	#msec0125
		STA	!ENTIM1,X
		STZ	<ENWRK4,X,X
		STZ	<ENCONT,X
		RTL
;
;
STRKNSLIPPT	EQU	$
		BYTE	tarkun2_0D, tarkun2_0A, tarkun2_0B, tarkun2_0C
		BYTE	tarkun2_0C, tarkun2_0B, tarkun2_0A
;
STRKNSLIPTM	EQU	$
		HEX	0B, 0A, 09, 08, 07, 06, 05, 04
;
STRKNSLIP	EQU	$
		LDX	<ENINDX
		LDA	!ENXSPD,X
		BEQ	STRKNSLIP0100		; [->STRKNSLIP0100]
;
		LDA	<ENWRK2,X
		DEC	A
		EOR	!ENXSPD,X
		BMI	STRKNSLIP0100		; [->STRKNSLIP0100]
;
		LDA	!ENTIM0,X
		BNE	STRKNSLIP00F0		; pattern change ? [no->STRKNSLIP00F0]
;
		DEC	<ENWRK4,X
		BPL	STRKNSLIP0080		; [->STRKNSLIP0080]
;
		LDA	#starkunslipptn
		STA	<ENWRK4,X
STRKNSLIP0080	EQU	$
		LDY	<ENWRK4,X
		LDA	STRKNSLIPPT,Y
		AND	#000FFH
		STA	!ENCHPT,X
		CPY	#starkunfptn1
		BEQ	STRKNSLIP0090		; [->STRKNSLIP0090]
;
		CPY	#starkunfptn0
		BNE	STRKNSLIP00A0		; [->STRKNSLIP00A0]
;
STRKNSLIP0090	EQU	$
		LDA	!ENMUKI,X
		EOR	#0002
		STA	!ENMUKI,X
STRKNSLIP00A0	EQU	$
		LDA	!ENXSPD,X
		ABS16
		LSR	A
		LSR	A
		AND	#00007H
		TAY
		LDA	STRKNSLIPTM,Y
		AND	#000FFH
		STA	!ENTIM0,X
STRKNSLIP00F0	EQU	$
		RTL
;
STRKNSLIP0100	EQU	$
		LDA	!ENMOD1,X
		AND	#1111111100111111B
		ORA	#0000000001000000B
		STA	!ENMOD1,X		; ＢＧチェック横当たりで反転セット!!
		STZ	!ENXSPD,X
		STZ	!ENXPOW,X
		LDA	#sec01
		STA	!ENTIM0,X
		LDA	<ENWRK2,X
		STA	!ENMUKI,X
		LDA	#starkunfktu
		STA	<ENCONT,X
		RTL
;
;
STRKNFKTU	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	STRKNFKTU00F0		; [->STRKNFKTU00F0]
;
		LDA	!ENCHPT,X
		CMP	#tarkun2_06
		BEQ	STRKNFKTU0100		; [->STRKNFKTU0100]
;
		LDA	#tarkun2_06
		STA	!ENCHPT,X
		LDA	#0008H
		STA	!ENTIM0,X
STRKNFKTU00F0	EQU	$
		RTL
;
STRKNFKTU0100	EQU	$
		LDA	#0FE00H
		STA	!ENYSPD,X
		LDA	#0003
		STA	<ENWRK4,X
		INC	<ENWRK0,X
		INC	<ENCONT,X
		INC	<ENCONT,X
		RTL
;
;
STRKNHANE	EQU	$
		LDX	<ENINDX
		LDY	#00
		LDA	!ENCBFG,X
		BIT	#0000000000000001B
		BEQ	STRKNHANE0040		; [->STRKNHANE0040]
;
		LDY	#010H
STRKNHANE0040	EQU	$
		TYA
		STA	!ENXPOW,X
		LDA	!ENXSPD,X
		BEQ	STRKNHANE0080		; [->STRKNHANE0080]
;
		LDA	!ENMUKI,X
		DEC	A
		EOR	!ENXSPD,X
		BMI	STRKNHANE00F0		; [->STRKNHANE00F0]
;
STRKNHANE0080	EQU	$
		JMP	STRKNSLIP0100
;
STRKNHANE00F0	EQU	$
		RTL
;
;
STRKNMUKISET	EQU	$
		LDA	!ENCBFG,X
		BIT	#0000000000001100B
		BEQ	STRKNMUKISET0F0		; 横当たり ? [no->STRKNMUKISET0F0]
;
		LDA	!ENMUKI,X
		STA	<ENWRK2,X
STRKNMUKISET0F0 EQU	$
		RTS
;
;
STRKN_PLBOUNDX	EQU	$
		WORD	-00300H, 00300H
;
STRKN_PLKBECHK	EQU	$
		WORD	0000000110000000B
		WORD	0000000001100000B
;
STRKN_SLIPSPD	EQU	$
		WORD	00100H, -00100H
;
;
STRKN_CRCK	EQU	$
		LDY	!ECRSFG,X
		BMI	STRKN_CRCK00E0		; プレイヤーとの接触 ? [yes->STRKN_CRCK00E0]

		CPX	PONLFFG
		BNE	STRKN_CRCK00F0

		STZ	PONLFFG
		BRA	STRKN_CRCK00F0
;
STRKN_CRCK00E0	EQU	$
		LDA	!SUPER_FLAG
		BEQ	STRKN_CRCK00E8		; スーパー？ [no->STRKN_CRCK00E8]
;
		PLY
		PLA				; ぷるぷるりたーん！！
		JMP	>ENDEATH_SET_4
;
STRKN_CRCK00E8	EQU	$
		LDA	!EPWIDY,X
		SEC
		SBC	!PWIDEY
		SEC
		SBC	!EWIDEY,X
		CMP	#0FFF8H
		BCC	STRKN_CRCK0100		; 踏まれた ? [no->STRKN_CRCK0100]
;
		LDA	!PLYSPD
		BMI	STRKN_CRCK00F0		; プレイヤー上昇中 ? [yes->STRKN_CRCK00F0]
;
		LDA	#00013H
		JSL	>SOUND_3_ON		; サウンド セット！！
;
		JSL	>PLAYER_REBOUND
;
;[1995.06.23.FR]		PLY
;[1995.06.23.FR]		STY	<EWORK2
;[1995.06.23.FR]		PLA				; pull pull return !!
;[1995.06.23.FR]		STA	<EWORK
;[1995.06.23.FR]		JSL	>EPCRCK
;[1995.06.23.FR];
;[1995.06.23.FR]		LDA	<EWORK
;[1995.06.23.FR]		PHA
;[1995.06.23.FR]		LDY	<EWORK2
;[1995.06.23.FR]		PHY
STRKN_CRCK00F0	EQU	$
		RTL
;
STRKN_CRCK0100	EQU	$
		LDA	!PLYSPD
		BPL	STRKN_CRCK0180		; プレイヤー上昇中 ? [no->STRKN_CRCK0180]
;
		STZ	!PLYSPD
		STZ	!PLJUMP
		STZ	!PLSPJP
		RTL
;
STRKN_CRCK0180	EQU	$
		LDA	#00013H
		JSL	>SOUND_3_ON		; サウンド セット！！
;
		LDY	!EPXMUK,X
		LDA	!PLBGCR
		AND	STRKN_PLKBECHK,Y
		BNE	STRKN_CRCK01A0		; プレイヤー跳ね飛ばし ? [no->STRKN_CRCK01A0]
;
		LDA	STRKN_PLBOUNDX,Y
		STA	!PLXSPD
		STA	!PLMVSP
STRKN_CRCK01A0	EQU	$
		LDA	!EPXMUK,X
		AND	#000FFH
		STA	!ENMUKI,X
		STA	<ENWRK2,X
		TAY
		LDA	STRKN_SLIPSPD,Y
		STA	!ENXSPD,X
		LDA	#tarkun2_0A
		STA	!ENCHPT,X
		LDA	#starkunhane
		STA	<ENCONT,X
STRKN_CRCK01F0	EQU	$
		RTL
;
;
;------------------------------------------------------------------------
;-	initial (ターくん３号(フライングターくん))			-
;------------------------------------------------------------------------
tarkun3_00	EQU	000H
tarkun3_01	EQU	001H
tarkun3_02	EQU	002H
tarkun3_03	EQU	003H
tarkun3_04	EQU	004H
;
FTRKNINXPOS	EQU	$
		WORD	-0018H, 00018H
;
FTRKNINGMAX	EQU	$
FTRKNINXMAX	EQU	$
		WORD	00800H, -0800H
;
FTRKN_XSPD	EQU	$
		WORD	-0080H, 00080H
;
FTRKNIN		EQU	$
		LDA	!ENYPSL,X
		STA	!ENWRK6,X		; センターＹのセーブ !!
		SEC
		SBC	#0008
		STA	!ENYPSL,X
		LDA	FTRKNINGMAX
		STA	!ENGMAX,X
		LDA	#00008H
		STA	!ENGPOW,X
;
		LDA	!ENXPSL,X
		BIT	#00010H
		BNE	FTRKNIN0100		; 行ったり来たり ? [no->FTRKNIN0100]
;
		STA	!ENWRK8,X		; センターＸのセーブ !!
		STZ	<ENCONT,X
		LDY	!ENMUKI,X
		CLC
		ADC	FTRKNINXPOS,Y
		STA	!ENXPSL,X
		LDA	FTRKNINXMAX,Y
		STA	!ENXMAX,X
		LDA	#00002H
		STA	!ENXPOW,X
		LDA	!ENMUKI,X
		EOR	#0002
		STA	!ENMUKI,X
		RTL
;
FTRKNIN0100	EQU	$
		LDA	#0002
		STA	<ENCONT,X
		LDY	!ENMUKI,X
		LDA	FTRKN_XSPD,Y
		STA	!ENXSPD,X
		LDA	!ENMOD1,X
		ORA	#0000000000000001B
		STA	!ENMOD1,X
		RTL
;
;
;------------------------------------------------------------------------
;-	move (ターくん３号(フライングターくん))				-
;------------------------------------------------------------------------
FTRKNMV		EQU	$
		LDA	!ENMODE,X
		CMP	#EEATM
		BNE	FTRKNMV0020		; 食べられた ? [no->FTRKNMV0020]
;
		LDA	#TARKN
		TXY
		JMP	>ESTATST
;
FTRKNMV0020	EQU	$
		JSL	>ENMDCK			; mode check
;
		JSL	>FTRKN_CRCK
;
;;;;;;;;		LDA	<FRCNT2
;;;;;;;;		AND	#0007H
;;;;;;;;		BNE	FTRKNMV0030		; [->FTRKNMV0030]
;;;;;;;;;
;;;;;;;;		LDA	#00016H
;;;;;;;;		JSL	>SOUND_3_ON		; サウンド セット！！
;;;;;;;;;
;;;;;;;;FTRKNMV0030	EQU	$
		LDY	#00
		LDA	!ENYPSL,X
		CMP	!ENWRK6,X
		BMI	FTRKNMOVE00040		; ＋ＭＡＸ ? [yes->FTRKNMOVE00040]
;
		INY
		INY
FTRKNMOVE00040	EQU	$
		LDA	FTRKNINGMAX,Y
		STA	!ENGMAX,X
;
		LDA	<ENCONT,X
		TAX
		JMP	(FTRKNMVMODSEL,X)
;
FTRKNMVMODSEL	EQU	$
		WORD	FTRKNMOVE0
		WORD	FTRKNMOVE1
;
;
FTRKNMOVE0	EQU	$
		LDX	<ENINDX
		LDY	#00
		LDA	!ENXPSL,X
		CMP	!ENWRK8,X
		BMI	FTRKNMOVE00080		; ＋ＭＡＸ ? [yes->FTRKNMOVE00080]
;
		INY
		INY
FTRKNMOVE00080	EQU	$
		LDA	FTRKNINXMAX,Y
		STA	!ENXMAX,X
;
		LDA	!ENXSPD,X
		CLC
		ADC	#00008H
		CMP	#00010H
		BCS	FTRKNMOVE000B0		; [->FTRKNMOVE000B0]
;
		LDA	#tarkun3_00
		STA	!ENCHPT,X
		LDA	!ENMUKI,X
		DEC	A
		EOR	!ENXSPD,X
		BPL	FTRKNMOVE000A0		; 反転 ? [no->FTRKNMOVE000A0]
;
		LDA	!ENMUKI,X
		EOR	#00002H
		STA	!ENMUKI,X
FTRKNMOVE000A0	EQU	$
		BRA	FTRKNMOVE000F0
;
FTRKNMOVE000B0	EQU	$
		LDY	#00
		LDA	!ENMUKI,X
		DEC	A
		EOR	!ENXMAX,X
		BPL	FTRKNMOVE000E0		; 加速 ? [yes->FTRKNMOVE000E0]
;
		INY
		INY
FTRKNMOVE000E0	EQU	$
		LDA	FTRKNPTNMOD,Y
		STA	<EWORK
		JSR	FTRKNPTN0
;
FTRKNMOVE000F0	EQU	$
		RTL
;
;
FTRKNMOVE1	EQU	$
		LDX	<ENINDX
		LDA	!ENXSPD,X
		BEQ	FTRKNMOVE10100		; [->FTRKNMOVE10100]
;
		LDA	FTRKNPTNMOD
		STA	<EWORK
		JSR	FTRKNPTN0
;
		RTL
;
FTRKNMOVE10100	EQU	$
		LDA	!ENTIM0,X
		BNE	FTRKNMOVE101F0		; [->FTRKNMOVE101F0]
;
		M8				; memory 8bit mode !!
;
		LDA	#tarkun3_00
		STA	!ENCHPT,X
		LDA	#02
		STA	!ENTIM0,X
		INC	<ENWRK3,X
;
		M16				; memory 16bit mode !!
;
		LDY	<ENWRK3,X
		CPY	#02
		BNE	FTRKNMOVE10180		; 反転 ? [no->FTRKNMOVE10180]
;
		LDA	!ENMUKI,X
		EOR	#0002
		STA	!ENMUKI,X
FTRKNMOVE10180	EQU	$
		CPY	#03
		BCC	FTRKNMOVE101F0		; [->FTRKNMOVE101F0]
;
		M8				; memory 8bit mode !!
;
		STZ	<ENWRK3,X
;
		M16				; memory 16bit mode !!
;
		LDY	!ENMUKI,X
		LDA	FTRKN_XSPD,Y
		STA	!ENXSPD,X
FTRKNMOVE101F0	EQU	$
		RTL
;
;
FTRKNPTNMOD	EQU	$
		WORD	FTRKNPTN0PT
		WORD	FTRKNPTN1PT
;
FTRKNPTN0PT	EQU	$
		BYTE	tarkun3_01, tarkun3_02
;
FTRKNPTN1PT	EQU	$
		BYTE	tarkun3_03, tarkun3_04
;
FTRKNPTN0	EQU	$
		LDA	!ENTIM0,X
		BNE	FTRKNPTN000F0		; pattern change ? [no->FTRKNPTN000F0]
;
		M8				; memory 8bit mode !!
;
		LDA	<ENWRK2,X
		EOR	#01H
		STA	<ENWRK2,X
		TAY
		LDA	(<EWORK),Y
		STA	!ENCHPT,X
		LDA	#03
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
FTRKNPTN000F0	EQU	$
		RTS
;
;
FTRKN_CRCK	EQU	$
		LDY	!ECRSFG,X
		BMI	FTRKN_CRCK00E0		; プレイヤーとの接触 ? [yes->FTRKN_CRCK00E0]

		CPX	PONLFFG
		BNE	FTRKN_CRCK00F0

		STZ	PONLFFG
		BRA	FTRKN_CRCK00F0
;
FTRKN_CRCK00E0	EQU	$
		LDA	!SUPER_FLAG
		BEQ	FTRKN_CRCK00E8		; スーパー？ [no->FTRKN_CRCK00E8]
;
		PLY
		PLA
		JMP	>ENDEATH_SET_4
;
FTRKN_CRCK00E8	EQU	$
		LDA	!EPWIDY,X
		SEC
		SBC	!PWIDEY
		SEC
		SBC	!EWIDEY,X
		CMP	#0FFF8H
		BCC	FTRKN_CRCK0100		; 踏まれた ? [no->FTRKN_CRCK0100]
;
		LDA	!PLYSPD
		BMI	FTRKN_CRCK00F0		; プレイヤー上昇中 ? [yes->FTRKN_CRCK00F0]
;
		LDA	#00013H
		JSL	>SOUND_3_ON		; サウンド セット！！
;
		JSL	>PLAYER_REBOUND
;
;[1995.06.23.FR]		PLY
;[1995.06.23.FR]		STY	<EWORK2
;[1995.06.23.FR]		PLA				; pull pull return !!
;[1995.06.23.FR]		STA	<EWORK
;[1995.06.23.FR]		JSL	>EPCRCK
;[1995.06.23.FR];
;[1995.06.23.FR]		LDA	<EWORK
;[1995.06.23.FR]		PHA
;[1995.06.23.FR]		LDY	<EWORK2
;[1995.06.23.FR]		PHY
FTRKN_CRCK00F0	EQU	$
		RTL
;
FTRKN_CRCK0100	EQU	$
		LDA	!PLYSPD
		BPL	FTRKN_CRCK0180		; プレイヤー上昇中 ? [no->FTRKN_CRCK0180]
;
		STZ	!PLYSPD
		STZ	!PLJUMP
		STZ	!PLSPJP
		RTL
;
FTRKN_CRCK0180	EQU	$
		LDA	#00013H
		JSL	>SOUND_3_ON		; サウンド セット！！
;
		LDY	!EPXMUK,X
		LDA	!PLBGCR
		AND	STRKN_PLKBECHK,Y
		BNE	FTRKN_CRCK01A0		; プレイヤー跳ね飛ばし ? [no->FTRKN_CRCK01A0]
;
		LDA	STRKN_PLBOUNDX,Y
		STA	!PLXSPD
		STA	!PLMVSP
FTRKN_CRCK01A0	EQU	$
FTRKN_CRCK01F0	EQU	$
		RTL
;
;
;------------------------------------------------------------------------
;-	initial (骨あほーどり)						-
;------------------------------------------------------------------------
BoneAlbatrossTM EQU	04
;
BATSA_XSPD	EQU	$
		WORD	-0100H, 00100H
;
BATSAIN		EQU	$
		LDY	!ENMUKI,X
		LDA	BATSA_XSPD,Y
		STA	!ENXSPD,X
		LDA	#BoneAlbatrossTM
		STA	!ENTIM0,X
		LDA	#0008
		STA	!ENCHPT,X
		ASL	A
		TAY
		LDA	BATSA_CENTY,Y
		STA	!ECENTY,X
		RTL
;
;
;------------------------------------------------------------------------
;-	move (骨あほーどり)						-
;------------------------------------------------------------------------
BATSAMV		EQU	$
		LDA	!ENMODE,X
		CMP	#EEATM
		BNE	BATSAMV0040		; 食べられた ? [no->BATSAMV0040]
;
		LDA	#BONE0
		STA	<EWORK6
		LDA	#0000
		JSL	>BONE_CRUSH2
;
		LDA	#BATSB
		TXY
		JMP	>ESTATST
;
BATSAMV0040	EQU	$
;[1995.06.25.SU]		CMP	#EFIRE
;[1995.06.25.SU]		BNE	BATSAMV0050		; 燃えてる ? [no->BATSAMV0050]
;[1995.06.25.SU];
;[1995.06.25.SU]BATSAMV0048	EQU	$
;[1995.06.25.SU]		LDA	#EFAIL
;[1995.06.25.SU]		STA	!ENMODE,X
;[1995.06.25.SU]		PLA
;[1995.06.25.SU]		PLY				; fire mode cancel !!
BATSAMV0050	EQU	$
		JSL	>ENMDCK			; mode check
;
		JSL	>NKNKPLCRSCK		; どすんで踏まれたかチェック！！
;
		JSL	>EPCRCK
;
		JSR	BATSA_CRCK
;
		JSR	BATSA_HANE
;
		JSR	BONE_ALBATROSS
;
		RTL
;
;
BATSA_CENTY	EQU	$
		WORD	0008, 0007, 0007, 0006
		WORD	0006, 0007, 0007, 0008
		WORD	0008
;
BONE_ALBATROSS	EQU	$
		LDA	!ENTIM0,X
		BNE	BATSAPTCG00F0		; pattern change ? [no->BATSAPTCG00F0]
;
		M8				; memory 8bit mode !!
;
		DEC	!ENCHPT,X
		BPL	BATSAPTCG0040		; [->BATSAPTCG0040]
;
		LDA	#0008
		STA	!ENCHPT,X
BATSAPTCG0040	EQU	$
		LDA	#BoneAlbatrossTM
		STA	!ENTIM0,X
		LDA	!ENCHPT,X
		ASL	A
		TAY
;
		M16				; memory 16bit mode !!
;
		LDA	BATSA_CENTY,Y
		STA	!ECENTY,X
BATSAPTCG00F0	EQU	$
		RTS
;
;
BATSA_HANE	EQU	$
		LDA	!ENTIM1,X
		BNE	BATSA_HANE00F0		; [->BATSA_HANE00F0]
;
		LDA	#BHANE
		JSL	>EXINSR
;
		LDA	!ENXPSL,X
		STA	!EXXPSL,Y
		LDA	!ENYPSL,X
		STA	!EXYPSL,Y
		LDA	#0FFFFH
		STA	!EXTIM0,Y
		LDA	#00040H*3
		STA	!EXTIM1,Y
;
		LDA	<RANDM0
		AND	#0003FH
		CLC
		ADC	#00040H
		STA	!ENTIM1,X
BATSA_HANE00F0	EQU	$
		RTS
;
;
BATSA_CRCK	EQU	$
		LDY	!ECRSFG,X
		DEY
		BMI	BATSA_CRCK00F0		; 敵と当たった ？ [no->BATSA_CRCK00F0]
		BEQ	BATSA_CRCK00F0		; 赤ちゃんと当たった ？ [yes->BATSA_CRCK00F0]
;
		LDA	!ENMODE,Y
		CMP	#EMOVE
		BNE	BATSA_CRCK00F0		; mode move ? [no->BATSA_CRCK00F0]
;
		LDA	!ENSHOT,Y
		BEQ	BATSA_CRCK00F0		; ショット？ [no->BATSA_CRCK00F0]
;
		TYX
		JSL	>ENDEATH_SET_4
;
		LDX	<ENINDX
		LDA	#EFAIL
		STA	!ENMODE,X
		PLA				; pull pull return !!
		RTL
;
BATSA_CRCK00F0	EQU	$
		RTS
;
;
;------------------------------------------------------------------------
;-	fail (骨あほーどり)						-
;------------------------------------------------------------------------
BATSAFL		EQU	$
		JSL	>BONE_CRUSH
;
		LDA	#BATSB
		TXY
		JSL	>ESTATST
;
		LDA	#EMOVE
		STA	!ENMODE,X
		RTL
;
;
BONE_XSPD	EQU	$
		WORD	-0180H, -0100H, -0080H, 00000H
		WORD	00080H, 00100H, 00180H, 00200H
;
BONE_YSPD	EQU	$
		WORD	-0400H, -0380H, -0300H, -0280H
		WORD	-0200H, -0180H, -0100H, -0080H
;
BONE_CRUSH	EQU	$
		LDA	#BONE0
BONE_CRUSH3	EQU	$
		STA	<EWORK6
;
		LDA	#00007H
		JSL	>SOUND_3_ON		; サウンド セット !!
;
		LDA	#0004
BONE_CRUSH2	EQU	$
		STA	<EWORK
BONE_CRUSH0040	EQU	$
		LDA	<RANDM0
		AND	#00007H
		ASL	A
		TAY
		LDA	BONE_XSPD,Y
		STA	<EWORK2
		LDA	<RANDM0
		AND	#00038H
		LSR	A
		LSR	A
		TAY
		LDA	BONE_YSPD,Y
		STA	<EWORK4

		LDA	<EWORK6
		JSL	>EXINSR
;
		LDA	#64
		STA	!EXTIM0,Y
		LDA	#02
		STA	!EXTIM1,Y
		LDA	#03
		STA	!EXCHPT,Y
		STA	!EXWRK0,Y
		LDA	!ECENTX,X
		SEC
		SBC	#0004
		STA	!EXXPSL,Y
		LDA	!ECENTY,X
		SEC
		SBC	#0004
		STA	!EXYPSL,Y
		LDA	#00020H
		STA	!EXGPOW,Y
		LDA	#00200H
		STA	!EXGMAX,Y
		LDA	<EWORK2
		STA	!EXXSPD,Y
		LDA	<EWORK4
		STA	!EXYSPD,Y
;
		JSL	>RANDAM
;
		DEC	<EWORK
		BPL	BONE_CRUSH0040		; [->BONE_CRUSH0040]
;
		RTL
;
;
;------------------------------------------------------------------------
;-	initial (骨あほーどり)						-
;------------------------------------------------------------------------
BATSBIN		EQU	$
		LDA	#0002
		STA	<ENCONT,X
		RTL
;
;
;------------------------------------------------------------------------
;-	move (骨あほーどり)						-
;------------------------------------------------------------------------
BATSB_XSPD	EQU	$
		WORD	-0200H, 00200H
;
BATSBMV		EQU	$
		JSL	>ENMDCK			; mode check
;
		JSL	>EPCRCK
;
		LDY	<ENCONT,X
		TYX
		JMP	(BATSBMVMOD,X)
;
BATSBMVMOD	EQU	$
		WORD	BATSBWAIT
		WORD	BATSBWAT2
		WORD	BATSBRUNNING
;
;
BATSBWAIT	EQU	$
		LDX	<ENINDX
		LDA	!ENCBFG,X
		BIT	#0000000000000001B
		BEQ	BATSBWAIT00F0		; 着地？ [no->BATSBWAIT00F0]
;
		LDA	#00040H
		STA	!ENTIM0,X
		INC	<ENCONT,X
		INC	<ENCONT,X
BATSBWAIT00F0	EQU	$
		RTL
;
;
BATSBWAT2	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	BATSBWAT200F0		; [->BATSBWAT200F0]
;
		LDY	!ENMUKI,X
		LDA	BATSB_XSPD,Y
		STA	!ENXSPD,X
		INC	<ENCONT,X
		INC	<ENCONT,X
BATSBWAT200F0	EQU	$
		RTL
;
;
BATSBRUNNING	EQU	$
		LDX	<ENINDX
;[1995.06.06.TU]		LDA	!ENCBFG,X
;[1995.06.06.TU]		BIT	#0000000000000001B
;[1995.06.06.TU]		BEQ	BATSBRUN0080		; 空中 ? [yes->BATSBRUN0080]
;[1995.06.06.TU];
;[1995.06.06.TU]		LDY	!ENMUKI,X
;[1995.06.06.TU]		LDA	BATSB_XSPD,Y
;[1995.06.06.TU]		STA	!ENXSPD,X
;[1995.06.06.TU]BATSBRUN0080	EQU	$
		LDA	!ENTIM0,X
		BNE	BATSBRUN00F0		; pattern change ? [no->BATSBRUN00F0]
;
		M8				; memory 8bit mode !!
;
		DEC	!ENCHPT,X
		BPL	BATSBRUN00A0		; max pattern ? [no->BATSBRUN00A0]
;
		LDA	#02
		STA	!ENCHPT,X
BATSBRUN00A0	EQU	$
		LDA	#02
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
BATSBRUN00F0	EQU	$
		RTL
;
;
;------------------------------------------------------------------------
;-	initial (爆撃骨あほーどり)					-
;------------------------------------------------------------------------
BATSC_BOMBXP	EQU	$
		WORD	00001H, -00001H
;
BATSC_BOMBYP	EQU	$
		WORD	00010H
		WORD	0000FH
		WORD	0000EH
		WORD	0000DH
		WORD	0000DH
		WORD	0000EH
		WORD	0000FH
		WORD	00010H
		WORD	00011H
;
BATSCIN		EQU	$
		LDY	!ENMUKI,X
		LDA	BATSA_XSPD,Y
		STA	!ENXSPD,X
		LDA	#BoneAlbatrossTM
		STA	!ENTIM0,X
		LDA	#0008
		STA	!ENCHPT,X
		ASL	A
		TAY
		LDA	BATSA_CENTY,Y
		STA	!ECENTY,X
		LDA	!ENYPSL,X
		CLC
		ADC	BATSC_BOMBYP,Y
		STA	<EWORK2
		LDY	!ENMUKI,X
		LDA	!ENXPSL,X
		CLC
		ADC	BATSC_BOMBXP,Y
		STA	<EWORK
;
		LDA	#BOMBX
		JSL	>ENINSR
		BCC	BATSCIN0100		; 敵確保成功 ? [no->BATSCIN0100]
;
		TXA
		STA	!ENWRK0,Y
;
		LDA	<EWORK
		STA	!ENXPSL,Y
		LDA	<EWORK2
		STA	!ENYPSL,Y
		LDA	#0001
		STA	!ENWRK4,Y
;
		LDA	!ENMOD1,Y
		AND	#1111111111100000B
		STA	!ENMOD1,Y		; ＢＧチェックＯＦＦ !!
		LDA	!ENMOD2,Y
		AND	#1111111111110011B
		STA	!ENMOD2,Y		; 範囲外クリアＯＦＦ！！
;
		LDA	<RANDM0
		AND	#0001FH
		CLC
		ADC	#00030H
		STA	ENCONT,Y
;
		M8				; memory 8bit mode !!
;
		LDA	#07FH
		STA	!ENWTSP,Y
		LDA	#000H
		STA	!ENWATR,Y
;
		M16				; memory 16bit mode !!
;
		TYA
		STA	!ENWRK6,X		; 爆弾インデックスセーブ !!
		RTL
;
BATSCIN0100	EQU	$
		LDA	#BATSA
		TXY
		JMP	>ESTATST
;
;
;------------------------------------------------------------------------
;-	move (爆撃骨あほーどり)						-
;------------------------------------------------------------------------
BATSCMV		EQU	$
		JSR	BATSCBOMBCHK		; 爆弾存在チェック！！
;
		LDA	!ENMODE,X
		CMP	#EEATM
		BNE	BATSCMV0040		; 食べられた ? [no->BATSCMV0040]
;
		LDY	!ENWRK6,X		; 爆弾インデックスロード !!
		LDA	!ENMOD1,Y
		ORA	#0000000000011011B
		STA	!ENMOD1,Y
		LDA	!ENMOD2,Y
		ORA	#0000000000000100B
		STA	!ENMOD2,Y		; 範囲外クリアＯＮ！！
		LDA	#00
		STA	!ENWRK0,Y
		LDA	#EINIT
		STA	!ENMODE,Y
;
		LDA	#BONE0
		STA	<EWORK6
		LDA	#0000
		JSL	>BONE_CRUSH2
;
		LDA	#BATSB
		TXY
		JMP	>ESTATST
;
BATSCMV0040	EQU	$
		CMP	#EMOVE
		BNE	BATSCMV0044		; Ｍｏｄｅ Ｍｏｖｅ？ [no->BATSCMV0044]
;
		LDA	!ENCOLD,X
		BEQ	BATSCMV0050		; 凍ってる？ [no->BATSCMV0050]
;
BATSCMV0044	EQU	$
		LDY	!ENWRK6,X		; 爆弾インデックスロード !!
		LDA	!ENMOD1,Y
		ORA	#0000000000011011B
		STA	!ENMOD1,Y
		LDA	!ENMOD2,Y
		ORA	#0000000000000100B
		STA	!ENMOD2,Y		; 範囲外クリアＯＮ！！
		LDA	#00
		STA	!ENWRK0,Y
		LDA	#EINIT
		STA	!ENMODE,Y
;
		LDA	#BATSA
		TXY
		JSL	>ESTATST
;
		LDA	#00040H
		STA	!ENGPOW,X
		LDA	#00400H
		STA	!ENGMAX,X
		RTL
;
;[1995.06.25.SU]		CMP	#EFIRE
;[1995.06.25.SU]		BNE	BATSCMV0050		; 燃えてる ? [no->BATSCMV0050]
;[1995.06.25.SU];
;[1995.06.25.SU]BATSCMV0048	EQU	$
;[1995.06.25.SU]		LDA	#EFAIL
;[1995.06.25.SU]		STA	!ENMODE,X
;[1995.06.25.SU]		PLA
;[1995.06.25.SU]		PLY				; fire mode cancel !!
BATSCMV0050	EQU	$
		JSL	>ENMDCK			; mode check
;
		JSR	BATSCAREACHK
;
		LDY	!ECRSFG,X
		BPL	BATSCMV0080		; プレイヤーと当たった？ [no->BATSCMV0080]
;
		LDA	!PLDOSN
		BEQ	BATSCMV0080		; プレイヤーどすん？ [no->BATSCMV0080]
;
		LDA	!EPWIDY,X
		SEC
		SBC	!PWIDEY
		SEC
		SBC	!EWIDEY,X
		CMP	#0FFF8H
		BCC	BATSCMV0080		; 踏まれた？ [no->BATSCMV0080]
;
		LDY	!ENWRK6,X		; 爆弾インデックスロード !!
		LDA	!ENMOD1,Y
		ORA	#0000000000011011B
		STA	!ENMOD1,Y
		LDA	!ENMOD2,Y
		ORA	#0000000000000100B
		STA	!ENMOD2,Y		; 範囲外クリアＯＮ！！
		LDA	#00
		STA	!ENWRK0,Y
		LDA	#EINIT
		STA	!ENMODE,Y
;
		JSL	>BONE_CRUSH
;
		JSL	>DEATHENEMY
;
		JMP	>ENDEATH_SET_3		; 死亡セット！！
;
BATSCMV0080	EQU	$
		JSL	>EPCRCK
;
		JSR	BATSC_PLSH
;
		JSR	BATSA_CRCK
;
		JSR	BATSA_HANE
;
		JSR	BONE_ALBATROSS
;
		JSR	BATSC_BOMBPS
;
		RTL
;
;
BATSC_BOMBPS	EQU	$
		LDY	!ENMUKI,X
		LDA	!ENXPSL,X
		CLC
		ADC	BATSC_BOMBXP,Y
		STA	<EWORK
		LDA	!ENCHPT,X
		ASL	A
		TAY
		LDA	!ENYPSL,X
		CLC
		ADC	BATSC_BOMBYP,Y
		STA	<EWORK2
		LDY	!ENWRK6,X		; 爆弾インデックスロード !!
		LDA	<EWORK
		STA	!ENXPSL,Y
		LDA	<EWORK2
		STA	!ENYPSL,Y
		RTS
;
;
BATSC_PLSH	EQU	$
		LDA	!ECENTY,X
		SEC
		SBC	!PCENTY
		BMI	BATSC_PLSH0040		; サーチ範囲内 ? [yes->BATSC_PLSH0040]
;
		CMP	#00010H
		BPL	BATSC_PLSH00F0		; サーチ範囲内 ? [no->BATSC_PLSH00F0]
;
BATSC_PLSH0040	EQU	$
		LDA	!ECENTX,X
		SEC
		SBC	!PCENTX
		CLC
		ADC	#00010H
		CMP	#00010H*2
		BCS	BATSC_PLSH00F0		; サーチ範囲内 ? [no->BATSC_PLSH00F0]
;
		LDY	!ENWRK6,X		; 爆弾インデックスロード !!
		LDA	!ENXSPD,X
;;;;;;;;		CMP	#08000H
;;;;;;;;		ROR	A
		STA	!ENXSPD,Y
		LDA	!ENMOD1,Y
		ORA	#0000000000011011B
		STA	!ENMOD1,Y
		LDA	!ENMOD2,Y
		ORA	#0000000000000100B
		STA	!ENMOD2,Y		; 範囲外クリアＯＮ！！
		LDA	#00
		STA	!ENWRK0,Y
		LDA	#EINIT
		STA	!ENMODE,Y
;
		LDA	!ENCHPT,X
		STA	<EWORK
		LDA	!ENTIM0,X
		STA	<EWORK2
		LDA	!ENTIM1,X
		STA	<EWORK4
		LDA	!ENXSPD,X
		STA	<EWORK6
		LDA	#BATSA
		TXY
		JSL	>ESTATST
;
		LDA	<EWORK6
		STA	!ENXSPD,X
		LDA	<EWORK4
		STA	!ENTIM1,X
		LDA	<EWORK2
		STA	!ENTIM0,X
		LDA	<EWORK
		STA	!ENCHPT,X
;
		PLA				; pull pull return !!
;
		RTL
;
BATSC_PLSH00F0	EQU	$
		RTS
;
;
BATSCAREACHK	EQU	$
		JSL	>DISPCK0
		BCC	BATSCAREACHK0F0		; [->BATSCAREACHK0F0]
;
		LDY	!ENWRK6,X		; 爆弾インデックスロード !!
		CPY	#060H
		BCS	BATSCAREACHK0E0		; [->BATSCAREACHK0E0]
;
		LDA	!ENMODE,Y
		CMP	#EMOVE
		BNE	BATSCAREACHK0E0		; [->BATSCAREACHK0E0]
;
		LDA	!ENMYNO,Y
		CMP	#BOMBX
		BNE	BATSCAREACHK0E0		; 爆弾？ [no->BATSCAREACHK0E0]
;
		TYX
		JSL	>ENCLEAR
;
		LDX	<ENINDX
BATSCAREACHK0E0 EQU	$
		PLA				; ぷるぷるりたーん！！
		RTL
;
BATSCAREACHK0F0 EQU	$
		RTS
;
;
BATSCBOMBCHK	EQU	$
		LDY	!ENWRK6,X		; 爆弾インデックスロード !!
		CPY	#060H
		BCS	BATSCBOMBCHK0E0		; [->BATSCBOMBCHK0E0]
;
		LDA	!ENMODE,Y
		CMP	#EMOVE
		BNE	BATSCBOMBCHK0E0		; [->BATSCBOMBCHK0E0]
;
		LDA	!ENMYNO,Y
		CMP	#BOMBX
		BEQ	BATSCAREACHK0F0		; 爆弾？ [yes->BATSCAREACHK0F0]
;
BATSCBOMBCHK0E0 EQU	$
		LDA	!ENCHPT,X
		PHA
		LDA	!ENTIM0,X
		PHA
		LDA	!ENTIM1,X
		PHA
		LDA	!ENXSPD,X
		PHA
		LDA	#BATSA
		TXY
		JSL	>ESTATST
;
		PLA
		STA	!ENXSPD,X
		PLA
		STA	!ENTIM1,X
		PLA
		STA	!ENTIM0,X
		PLA
		STA	!ENCHPT,X
;
		PLA				; ぷるぷるりたーん！！
		RTL
;
;
;------------------------------------------------------------------------
;-	fail (爆撃骨あほーどり)						-
;------------------------------------------------------------------------
BATSCFL		EQU	$
		LDY	!ENWRK6,X		; 爆弾インデックスロード !!
		LDA	!ENMOD1,Y
		ORA	#0000000000011011B
		STA	!ENMOD1,Y
		LDA	#EINIT
		STA	!ENMODE,Y
;
		JSL	>BONE_CRUSH
;
		LDA	#BATSB
		TXY
		JSL	>ESTATST
;
		LDA	#EMOVE
		STA	!ENMODE,X
		RTL
;
;
;------------------------------------------------------------------------
;-	initial (炎の棒)						-
;-		ENCONT : 角度 (XX.XX)					-
;-		  WRK0 : 中心からの距離					-
;-		  WRK2 : キャラクタパターン				-
;-		  WRK4 : 回転スピード					-
;------------------------------------------------------------------------
fire_barptn	EQU	(FIRE_BARCHARE-FIRE_BARCHAR-2)/2
fire_bartm	EQU	06
;
FIRE_BARCHAR	EQU	$
		WORD	04002H|(1<<9), 00002H|(1<<9)
		WORD	04000H|(1<<9), 00000H|(1<<9)
FIRE_BARCHARE	EQU	$
;
FIRE_BARRSPD	EQU	$
		WORD	-0100H, 00100H
;
FIRBRIN		EQU	$
FIRB2IN		EQU	$
		STZ	!ENMUKI,X
		LDA	!ENXPSL,X
		AND	#00010H
		LSR	A
		LSR	A
		LSR	A
		TAY
		LDA	FIRE_BARRSPD,Y
		STA	<ENWRK4,X
		LDA	!ENXPSL,X
		CLC
		ADC	#0FFF8H
		STA	!ENXPSL,X
		LDA	#-0048H
		STA	<ENWRK0,X
		LDA	#fire_barptn
		STA	<ENWRK2,X
		LDA	#fire_bartm
		STA	!ENTIM0,X
		RTL
;
;
;------------------------------------------------------------------------
;-	move (炎の棒)							-
;------------------------------------------------------------------------
FIRBRMV		EQU	$
FIRB2MV		EQU	$
		LDA	#BANK FIRE_BARCHAR
		STA	R5
		LDA	#FIRE_BARCHAR
		STA	R6
		M_CHIP	FIREBAROAM
;
		LDX	<ENINDX
		JSL	>ENMDCK			; mode check
;
		LDY	!ECRSFG,X
		BPL	FIRBRMV0040		; プレイヤーと当たった ? [no->FIRBRMV0040]
;
		JSL	>PLFLST
;
FIRBRMV0040	EQU	$
		LDA	<ENCONT,X
		CLC
		ADC	<ENWRK4,X
		STA	<ENCONT,X
		LDA	!ENTIM0,X
		BNE	FIRBRMV00F0		; pattern change ? [no->FIRBRMV00F0]
;
		M8				; memory 8bit mode !!
;
		DEC	<ENWRK2,X
		BPL	FIRBRMV0080		; max pattern ? [no->FIRBRMV0080]
;
		LDA	#fire_barptn
		STA	<ENWRK2,X
FIRBRMV0080	EQU	$
		LDA	#fire_bartm
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
FIRBRMV00F0	EQU	$
		RTL
;
;
;------------------------------------------------------------------------
;-	initial (鼠の穴)						-
;------------------------------------------------------------------------
NZANAIN		EQU	$
		STZ	!ENMUKI,X
		RTL
;
;
;------------------------------------------------------------------------
;-	move (鼠の穴)							-
;------------------------------------------------------------------------
NZANAMV		EQU	$
		JSL	>ENMDCK			; mode check
;
		RTL
;
;
;------------------------------------------------------------------------
;-	initial (鼠の穴：飾り)						-
;------------------------------------------------------------------------
NZAN2IN		EQU	$
		STZ	!ENMUKI,X
		LDA	!ENXPSL,X
		AND	#00010H
		LSR	A
		LSR	A
		LSR	A
		STA	<ENCONT,X
		TAX
		JMP	(NZAN2INMODSEL,X)
;
NZAN2INMODSEL	EQU	$
		WORD	MOUSEHOLEINIT
		WORD	MOUSEKYORINIT
;
;
MOUSEKYORINIT	EQU	$
		LDX	<ENINDX
		LDA	#0008
		STA	!ENCHPT,X
		LDA	!ENYPSL,X
		STA	<ENWRK4,X
		SEC
		SBC	#00018H
		STA	!ENWRK6,X
		JMP	MOUSEKYOR0IN
;
;
;------------------------------------------------------------------------
;-	move (鼠の穴：飾り)						-
;------------------------------------------------------------------------
nezumi_yspeed	EQU	00400H
;
NZAN2MV		EQU	$
		JSL	>ENMDCK			; mode check
;
		LDA	<ENCONT,X
		TAX
		JMP	(NZAN2MVMODSEL,X)
;
NZAN2MVMODSEL	EQU	$
		WORD	MOUSEHOLE
		WORD	MOUSEKYOR
;
;
MOUSEHOLEPTNAD	EQU	$
		WORD	MOUSEHOLE0PT
		WORD	MOUSEHOLE1PT
;
MOUSEHOLETIMAD	EQU	$
		WORD	MOUSEHOLE0TM
		WORD	MOUSEHOLE1TM
;
MOUSEHOLE0PT	EQU	$
		HEX	02, 01, 02, 01, 02, 01, 02, 00
;
MOUSEHOLE0TM	EQU	$
		HEX	02, 40, 04, 10, 04, 20, 04, 40
;
MOUSEHOLE1PT	EQU	$
		HEX	02, 05, 06, 05, 02, 03, 04, 03, 01
;
MOUSEHOLE1TM	EQU	$
		HEX	02, 02, 10, 02, 02, 02, 10, 02, 40
;
MOUSEHOLEMAXPTN EQU	$
		WORD	(MOUSEHOLE0TM-MOUSEHOLE0PT-1)
		WORD	(MOUSEHOLE1TM-MOUSEHOLE1PT-1)
;
MOUSEHOLE	EQU	$
		LDX	<ENINDX
		LDA	<ENWRK0,X
		TAY
		LDA	MOUSEHOLEPTNAD,Y
		STA	<EWORK
		LDA	MOUSEHOLETIMAD,Y
		STA	<EWORK2
MOUSEHOLE0	EQU	$
		LDA	!ENTIM0,X
		BNE	MOUSEHOLE000F0		; pattern change ? [no->MOUSEHOLE000F0]
;
		DEC	<ENWRK2,X
		BMI	MOUSEHOLE00100		; Next Mode ? [yes->MOUSEHOLE00100]
;
		M8				; memory 8bit mode !!
;
		LDY	<ENWRK2,X
		LDA	(<EWORK),Y
		STA	!ENCHPT,X
		LDA	(<EWORK2),Y
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
MOUSEHOLE000F0	EQU	$
		RTL
;
MOUSEHOLEINIT	EQU	$
		LDX	<ENINDX
MOUSEHOLE00100	EQU	$
		LDA	<RANDM0
		AND	#0001
		ASL	A
		STA	<ENWRK0,X
		TAY
		LDA	MOUSEHOLEPTNAD,Y
		STA	<EWORK
		LDA	MOUSEHOLETIMAD,Y
		STA	<EWORK2
		LDA	MOUSEHOLEMAXPTN,Y
		STA	<ENWRK2,X
		TAY
;
		M8				; memory 8bit mode !!
;
		LDA	(<EWORK),Y
		STA	!ENCHPT,X
		LDA	(<EWORK2),Y
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
;
mousekyoro0	EQU	(mkyoro0-MOUSEKYORMDSL)
mousekyoro1	EQU	(mkyoro1-MOUSEKYORMDSL)
mousekyoro2	EQU	(mkyoro2-MOUSEKYORMDSL)
mousekyoro3	EQU	(mkyoro3-MOUSEKYORMDSL)
mousekyoro4	EQU	(mkyoro4-MOUSEKYORMDSL)
;
MOUSEKYOR	EQU	$
		LDX	<ENINDX
		LDA	<ENWRK0,X
		TAX
		JMP	(MOUSEKYORMDSL,X)
;
MOUSEKYORMDSL	EQU	$
mkyoro0		WORD	MOUSEKYOR0
mkyoro1		WORD	MOUSEKYOR1
mkyoro2		WORD	MOUSEKYOR2
mkyoro3		WORD	MOUSEKYOR3
mkyoro4		WORD	MOUSEKYOR4
;
;
MOUSEKYOR0	EQU	$
		LDX	<ENINDX
		LDA	!ENWRK6,X
		CMP	!ENYPSL,X
		BMI	MOUSEKYOR000F0		; Next Mode ? [no->MOUSEKYOR000F0]
;
		STA	!ENYPSL,X
		STZ	!ENYSPD,X
		LDA	<RANDM0
		AND	#00003H
		BEQ	MOUSEKYOR1IN		; きょろきょろ ？ [yes->MOUSEKYOR1IN]
;
		LDA	#00020H
		STA	!ENTIM0,X
		LDA	#mousekyoro2
		STA	<ENWRK0,X
MOUSEKYOR000F0	EQU	$
		RTL
;
;
MOUSEKYOR1IN	EQU	$
		LDA	#(MOUSEKYOR1TM-MOUSEKYOR1PT-1)
		STA	<ENWRK2,X
		INC	<ENWRK0,X
		INC	<ENWRK0,X
		RTL
;
;
MOUSEKYOR1PT	EQU	$
		HEX	08, 07, 08, 07, 08, 07, 08
;
MOUSEKYOR1TM	EQU	$
		HEX	02, 10, 30, 10, 02, 20, 02
;
MOUSEKYOR1FP	EQU	$
		HEX	00, 01, 00, 01, 00, 01, 00
;
MOUSEKYOR1	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	MOUSEKYOR100F0		; pattern cahnge ? [no->MOUSEKYOR100F0]
;
		DEC	<ENWRK2,X
		BMI	MOUSEKYOR10100		; Next Mode ? [yes->MOUSEKYOR10100]
;
		M8				; memory 8bit mode !!
;
		LDY	<ENWRK2,X
		LDA	MOUSEKYOR1PT,Y
		STA	!ENCHPT,X
		LDA	MOUSEKYOR1TM,Y
		STA	!ENTIM0,X
		LDA	MOUSEKYOR1FP,Y
		BEQ	MOUSEKYOR10080		; 反転 ? [no->MOUSEKYOR10080]
;
		LDA	<RANDM0
		AND	#001H
		ASL	A
		EOR	!ENMUKI,X
		STA	!ENMUKI,X
MOUSEKYOR10080	EQU	$
;
		M16				; memory 16bit mode !!
;
MOUSEKYOR100F0	EQU	$
		RTL
;
MOUSEKYOR10100	EQU	$
		STZ	!ENMUKI,X
		LDA	#nezumi_yspeed
		STA	!ENYSPD,X
		LDA	#mousekyoro3
		STA	<ENWRK0,X
		RTL
;
;
MOUSEKYOR2	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	MOUSEKYOR200F0		; Next Mode ? [no->MOUSEKYOR200F0]
;
		LDA	#nezumi_yspeed
		STA	!ENYSPD,X
		INC	<ENWRK0,X
		INC	<ENWRK0,X
MOUSEKYOR200F0	EQU	$
		RTL
;
;
MOUSEKYOR3	EQU	$
		LDX	<ENINDX
		LDA	!ENYPSL,X
		CMP	<ENWRK4,X
		BMI	MOUSEKYOR300F0		; Next Mode ? [no->MOUSEKYOR300F0]
;
		LDA	<ENWRK4,X
		STA	!ENYPSL,X
		LDA	<RANDM0
		AND	#0003FH
		CLC
		ADC	#00040H
		STA	!ENTIM0,X
		STZ	!ENYSPD,X
		INC	<ENWRK0,X
		INC	<ENWRK0,X
MOUSEKYOR300F0	EQU	$
		RTL
;
;
MOUSEKYOR4	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	MOUSEKYOR400F0		; Next Mode ? [no->MOUSEKYOR400F0]
;
MOUSEKYOR0IN	EQU	$
		LDA	#-nezumi_yspeed
		STA	!ENYSPD,X
		STZ	<ENWRK0,X
MOUSEKYOR400F0	EQU	$
		RTL
;
;
;------------------------------------------------------------------------
;-	initial (鼠)							-
;------------------------------------------------------------------------
NezumiXSpeed	EQU	00180H
NezumiRunTime	EQU	(03000H/NezumiXSpeed)
NezumiWalkPtn	EQU	(NEZMIWALKPTE-NEZMIWALKPT-1)
NezumiKyorPtn	EQU	(NEZMIKYORFP-NEZMIKYORPT-1)
;
NezumiKyoro	EQU	(nezumikyr-NEZMIMVMODSEL)
NezumiNige	EQU	(nezuminig-NEZMIMVMODSEL)
NezumiJump0	EQU	(nezumijp0-NEZMIMVMODSEL)
NezumiJump	EQU	(nezumijmp-NEZMIMVMODSEL)
NezumiEdro	EQU	(nezumiedr-NEZMIMVMODSEL)
NezumiEdro2	EQU	(nezumied2-NEZMIMVMODSEL)
NezumiEdro3	EQU	(nezumied3-NEZMIMVMODSEL)
;
NEZMIXSPD	EQU	$
		WORD	-NezumiXSpeed, NezumiXSpeed
;
NEZMIIN		EQU	$
		LDY	!ENWRKA,X
		BEQ	NEZMIIN00040		; [->NEZMIIN00040]
;
NEZMIIN00010	EQU	$
;
		M8				; memory 8bit mode !!
;
		LDA	#01
		STA	!ENWRKA,X
;
		LDA	#NezumiWalkPtn
		STA	<ENWRK0,X
		TAY
		LDA	NEZMIWALKPT,Y
		STA	!ENCHPT,X
		LDA	#02
		STA	!ENTIM1,X
;
		M16				; memory 16bit mode !!
;
		LDA	#NezumiRunTime
		STA	!ENTIM0,X
		LDY	!ENMUKI,X
		LDA	NEZMIXSPD,Y
		STA	!ENXSPD,X
		LDA	#-1
		STA	<ENWRK2,X		; 卵のインデックスクリア！
		RTL
;
NEZMIIN00040	EQU	$
;
		M8				; memory 8bit mode !!
;
		LDA	!ENXPSL,X
		AND	#010H
		LSR	A
		LSR	A
		LSR	A
		INC	A
		STA	!ENWRKA,X
;
		PHA
;
		LDA	#NezumiWalkPtn
		STA	<ENWRK0,X
		TAY
		LDA	NEZMIWALKPT,Y
		STA	!ENCHPT,X
		LDA	#02
		STA	!ENTIM1,X
;
		M16				; memory 16bit mode !!
;
		LDA	#NezumiRunTime
		STA	!ENTIM0,X
		LDY	!ENMUKI,X
		LDA	NEZMIXSPD,Y
		STA	!ENXSPD,X
;
		PLY
;
		DEY
		BNE	NEZMIIN00100		; 卵持ち？ [yes->NEZMIIN00100]
;
		LDA	#-1
		STA	<ENWRK2,X		; 卵のインデックスクリア！
		RTL
;
NEZMIIN00100	EQU	$
		LDA	#EGG03
		JSL	>ENINSR
		BCC	NEZMIIN00010		; 卵の確保失敗？ [yes->NEZMIIN00010]
;
		LDA	!ENMOD1,Y
		AND	#1111111111100000B
		STA	!ENMOD1,Y
		LDA	!ENMOD2,Y
		AND	#1111111111110011B
		STA	!ENMOD2,Y		; 範囲外クリアＯＦＦ！
;
		LDA	#0001
		STA	!ENWRK6,Y
		LDA	#0000
		STA	!ENYSPD,Y
		STA	!ENXSPD,Y
		LDA	!ENXPSL,X
		STA	!ENXPSL,Y
		LDA	!ENYPSL,X
		SEC
		SBC	#00010H
		STA	!ENYPSL,Y
		TYA
		STA	<ENWRK2,X		; 卵のインデックスセーブ！
		RTL
;
;
;------------------------------------------------------------------------
;-	move (鼠)							-
;------------------------------------------------------------------------
;-----	use wirk  :  0,1,2,3,4,5,6,7,A
NEZMIMV		EQU	$
		LDA	!ENMODE,X
		CMP	#EMOVE
		BEQ	NEZMIMV0008		; ｍｏｄｅ ｍｏｖｅ？ [yes->NEZMIMV0008]
;
		LDY	<ENWRK2,X		; 卵のインデックスロード！
		BMI	NEZMIMV0008		; 卵有？ [no->NEZMIMV0008]
;
		LDA	!ENMYNO,Y
		CMP	#EGG00
		BCC	NEZMIMV0008		; 卵？ [no->NEZMIMV0008]
;
		CMP	#EGG03+1
		BCS	NEZMIMV0008		; 卵？ [no->NEZMIMV0008]
;
		LDA	!ENWRK4,Y
		BNE	NEZMIMV0008		; プレイヤーオプション？ [yes->NEZMIMV0008]
;
		LDA	!ENMOD1,Y
		ORA	#0000000000000001B
		STA	!ENMOD1,Y		; ＢＧチェックＯＮ！！
		LDA	!ENMOD2,Y
		ORA	#0000000000000100B
		STA	!ENMOD2,Y		; 範囲外クリアＯＮ！！
NEZMIMV0008	EQU	$
		JSL	>ENMDCK			; mode check
;
		JSL	>DISPCK0
		BCC	NEZMIMV0020		; 範囲外？ [no->NEZMIMV0020]
;
;[1995.06.26.MO]		LDA	!ENDSXL,X
;[1995.06.26.MO]		CLC
;[1995.06.26.MO]		ADC	#00040H
;[1995.06.26.MO]		CMP	#00170H
;[1995.06.26.MO]		BCS	NEZMIMV0010		; 範囲外？ [yes->NEZMIMV0010]
;[1995.06.26.MO];
;[1995.06.26.MO]		LDA	!ENDSYL,X
;[1995.06.26.MO]		CLC
;[1995.06.26.MO]		ADC	#00040H
;[1995.06.26.MO]		CMP	#00170H
;[1995.06.26.MO]		BCC	NEZMIMV0020		; 範囲外？ [no->NEZMIMV0020]
;[1995.06.26.MO];
NEZMIMV0010	EQU	$
		LDY	<ENWRK2,X		; 卵のインデックスロード！
		BMI	NEZMIMV0018		; 卵有？ [no->NEZMIMV0018]
;
		LDA	!ENMODE,Y
		CMP	#EMOVE
		BNE	NEZMIMV0018		; 卵？ [no->NEZMIMV0018]
;
		LDA	!ENMYNO,Y
		CMP	#EGG00
		BCC	NEZMIMV0018		; 卵？ [no->NEZMIMV0018]
;
		CMP	#EGG03+1
		BCS	NEZMIMV0018		; 卵？ [no->NEZMIMV0018]
;
		TYX
		JSL	>ENCLEAR
;
		LDX	<ENINDX
NEZMIMV0018	EQU	$
		RTL
;[1995.06.26.MO]		JMP	>ENCLEAR
;
NEZMIMV0020	EQU	$
		LDY	!ENWRKA,X
		DEY
		BNE	NEZMIMV1000		; イニシャル卵持ち？ [yes->NEZMIMV1000]
;
		LDA	<ENCONT,X
		CMP	#NezumiJump0
		BCC	NEZMIMV0030		; プレイヤーサーチＯＫ？ [yes->NEZMIMV0030]
;
		CMP	#NezumiJump+1
		BCC	NEZMIMV0040		; プレイヤーサーチＯＫ？ [no->NEZMIMV0040]
;
NEZMIMV0030	EQU	$
		LDA	<ENCONT,X
		CMP	#NezumiEdro
		BCC	NEZMIMV0034		; [->NEZMIMV0034]
;
		CMP	#NezumiEdro3+1
		BCC	NEZMIMV0040		; [->NEZMIMV0040]
;
NEZMIMV0034	EQU	$
		JSR	NEZMIEGGSH
;
NEZMIMV0038	EQU	$
		LDA	<ENCONT,X
		CMP	#NezumiNige
		BEQ	NEZMIMV0040		; [->NEZMIMV0040]
;
		JSR	NEZMIPLSH
;
NEZMIMV0040	EQU	$
		LDA	<ENCONT,X
		CMP	#NezumiJump
		BEQ	NEZMIMV0050		; ジャンプモード？ [yes->NEZMIMV0050]
;
		CMP	#NezumiJump0
		BEQ	NEZMIMV0050		; ジャンプモード？ [yes->NEZMIMV0050]
;
		LDA	!ENCBFG,X
		BIT	#0000000000000001B
		BNE	NEZMIMV0050		; 空中？ [no->NEZMIMV0050]
;
		LDA	<ENCONT,X
		STA	<ENWRK4,X
		LDA	#NezumiJump
		STA	<ENCONT,X
NEZMIMV0050	EQU	$
		LDA	<ENCONT,X
		TAX
		JSR	(NEZMIMVMODSEL,X)
;
		JSL	>EPCRCK
;
		RTL
;
NEZMIMV1000	EQU	$
		LDY	<ENWRK2,X		; 卵のインデックスロード！
		LDA	!ENMODE,Y
		CMP	#EMOVE
		BNE	NEZMIMV1040		; 卵有？ [no->NEZMIMV1040]
;
		LDA	!ENMYNO,Y
		CMP	#EGG00
		BCC	NEZMIMV1040		; 卵有？ [no->NEZMIMV1040]
;
		CMP	#EGG03+1
		BCS	NEZMIMV1040		; 卵有？ [no->NEZMIMV1040]
;
		LDA	!ENSHOT,Y
		BNE	NEZMIMV1040		; 卵有？ [no->NEZMIMV1040]
;
		LDA	!ENWRK4,Y
		BEQ	NEZMIMV1060		; 卵有？ [yes->NEZMIMV1060]
;
NEZMIMV1040	EQU	$
		LDA	#-1
		STA	<ENWRK2,X		; 卵のインデックスクリア！
		STZ	!ENWRK6,X
;
		M8				; memory 8bit mode !!
;
		LDA	#01
		STA	!ENWRKA,X
;
		M16				; memory 16bit mode !!
;
		PHY
		LDA	#00075H
		JSL	>SOUND_3_ON		; サウンド セット！！
		PLY
;
		LDA	#0FC00H
		STA	!ENYSPD,X
		LDA	!ENCBFG,X
		AND	#0FFFEH
		STA	!ENCBFG,X
		LDA	!ENMOD1,X
		JSR	NEZMINIGE0060
;
		BRA	NEZMIMV10E0
;
NEZMIMV1060	EQU	$
		LDA	#0002
		STA	!ENWRK6,X
		LDA	!ENXPSL,X
		STA	!ENXPSL,Y
		LDA	!ENYPSL,X
		SEC
		SBC	#00010H
		STA	!ENYPSL,Y
;
		LDA	!ECENTY,X
		SEC
		SBC	!PCENTY
		CLC
		ADC	#00060H
		CMP	#00060H*2
		BCS	NEZMIMV10D0		; プレイヤーＩＮ？ [no->NEZMIMV10D0]
;
		LDA	!ECENTX,X
		SEC
		SBC	!PCENTX
		CLC
		ADC	#00050H
		CMP	#00050H*2
		BCS	NEZMIMV10D0		; プレイヤーＩＮ？ [no->NEZMIMV10D0]
;
		M8				; memory 8bit mode !!
;
		LDA	#01
		STA	!ENWRKA,X
;
		M16				; memory 16bit mode !!
;
		LDA	!ENMOD1,X
		AND	#1111100000111111B
		ORA	#0000010010000000B
		STA	!ENMOD1,X
		JSR	NEZMIEDR20180
;
NEZMIMV10D0	EQU	$
		LDA	<ENCONT,X
		TAX
		JSR	(NEZMIMVMODSEL,X)
;
NEZMIMV10E0	EQU	$
		JSL	>EPCRCK
;
		RTL
;
;
NEZMIMVMODSEL	EQU	$
		WORD	NEZMIWALK
nezumikyr	WORD	NEZMIKYOR
nezuminig	WORD	NEZMINIGE
nezumijp0	WORD	NEZMIJMP0
nezumijmp	WORD	NEZMIJUMP
nezumiedr	WORD	NEZMIEDRO
nezumied2	WORD	NEZMIEDR2
nezumied3	WORD	NEZMIEDR3
;
;
NEZMIWALKPT	EQU	$
		HEX	04, 03, 02
NEZMIWALKPTE	EQU	$
;
NEZMIWALK	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BEQ	NEZMIWALK0100		; きょろきょろ ? [yes->NEZMIWALK0100]
;
		JMP	NEZMIRNPTN
;
NEZMIWALK0100	EQU	$
		STZ	!ENXSPD,X
;
		M8				; memory 8bit mode !!
;
		LDA	#NezumiKyorPtn
		STA	<ENWRK0,X
		TAY
		LDA	NEZMIKYORPT,Y
		STA	!ENCHPT,X
		LDA	<RANDM0
		AND	#003H
		INC	A
		STA	<ENWRK1,X
		LDA	<RANDM0
		LSR	A
		LSR	A
		AND	#007H
		CLC
		ADC	#002H
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
		LDA	#00075H
		JSL	>SOUND_3_ON		; サウンド セット！！
;
		LDA	#NezumiKyoro
		STA	<ENCONT,X
		RTS
;
;
NEZMIKYORPT	EQU	$
		HEX	00, 01, 00
;
NEZMIKYORFP	EQU	$
		HEX	02, 00, 00
;
NEZMIKYOR	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	NEZMIKYOR00F0		; pattern change ? [no->NEZMIKYOR00F0]
;
		M8				; memory 8bit mode !!
;
		DEC	<ENWRK0,X
		BPL	NEZMIKYOR0040		; Max Pattern ? [no->NEZMIKYOR0040]
;
		DEC	<ENWRK1,X
		BMI	NEZMIKYOR0100		; Next Mode ? [yes->NEZMIKYOR0100]
;
		LDA	#NezumiKyorPtn
		STA	<ENWRK0,X
NEZMIKYOR0040	EQU	$
		LDY	<ENWRK0,X
		LDA	NEZMIKYORPT,Y
		STA	!ENCHPT,X
		LDA	!ENMUKI,X
		EOR	NEZMIKYORFP,Y
		STA	!ENMUKI,X
		LDA	<RANDM0
		AND	#01FH
		CLC
		ADC	#002H
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
NEZMIKYOR00F0	EQU	$
		RTS
;
		MEM8
;
NEZMIKYOR0100	EQU	$
		LDA	#NezumiWalkPtn
		STA	<ENWRK0,X
		TAY
		LDA	NEZMIWALKPT,Y
		STA	!ENCHPT,X
		LDA	#02
		STA	!ENTIM1,X
;
		M16				; memory 16bit mode !!
;
		LDA	#NezumiRunTime
		STA	!ENTIM0,X
		LDY	!ENMUKI,X
		LDA	NEZMIXSPD,Y
		STA	!ENXSPD,X
		STZ	<ENCONT,X
		RTS
;
;
NEZMINIGE	EQU	$
		LDX	<ENINDX
		LDA	!ENCBFG,X
		BIT	#0000000000001100B
		BEQ	NEZMINIGE0040		; 横当たり？ [no->NEZMINIGE0040]
;
NEZMINIGE0020	EQU	$
;;;;;;;;		LDA	!ENXPSL,X
;;;;;;;;		SEC
;;;;;;;;		SBC	!ENMOVX,X
;;;;;;;;		STA	!ENXPSL,X
		STZ	!ENCHPT,X
		LDA	#0008
		STA	!ENTIM0,X
		LDA	#0001
		STA	!ENWRK6,X
		LDA	<ENCONT,X
		STA	<ENWRK4,X
		LDA	#NezumiJump0
		STA	<ENCONT,X
		RTS
;
NEZMINIGE0040	EQU	$
		LDA	!ECENTY,X
		SEC
		SBC	!PCENTY
		CLC
		ADC	#00060H
		CMP	#00060H*2
		BCS	NEZMINIGE0060		; プレイヤーから離れた？ [yes->NEZMINIGE0060]
;
		LDA	!ECENTX,X
		SEC
		SBC	!PCENTX
		CLC
		ADC	#00070H
		CMP	#00070H*2
		BCC	NEZMINIGE0080		; プレイヤーから離れた？ [no->NEZMINIGE0080]
;
NEZMINIGE0060	EQU	$
		LDA	!ENMOD1,X
		AND	#1111100000111111B
		ORA	#0000000101000000B
		STA	!ENMOD1,X
		JMP	NEZMIWALK0100
;
NEZMINIGE0080	EQU	$
		LDA	!EPXMUK,X
		AND	#000FFH
		EOR	#00002H
		STA	!ENMUKI,X
		TAY
		LDA	NEZMIXSPD,Y
		STA	!ENXSPD,X
;
		JMP	NEZMIRNPTN
;
;
NEZMIJMP0	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	NEZMIJMP000F0		; [->NEZMIJMP000F0]
;
		LDA	#00075H
		JSL	>SOUND_3_ON		; サウンド セット！！
;
		LDA	#0FC00H
		STA	!ENYSPD,X
		LDY	!ENMUKI,X
		LDA	NEZMIXSPD,Y
		STA	!ENXSPD,X
		INC	<ENCONT,X
		INC	<ENCONT,X
NEZMIJMP000F0	EQU	$
		LDA	!ENWRK6,X
		DEC	A
		BEQ	NEZMIJMP00100		; 卵有？ [no->NEZMIJMP00100]
;
		LDY	<ENWRK2,X		; 卵のインデックスロード！
		LDA	!ENXPSL,X
		STA	!ENXPSL,Y
		LDA	!ENYPSL,X
		SEC
		SBC	#00010H
		STA	!ENYPSL,Y
NEZMIJMP00100	EQU	$
		RTS
;
;
NEZMIJUMPXSPD	EQU	$
		WORD	-0100H, 00100H
;
NEZMIJUMP	EQU	$
		LDX	<ENINDX
		LDA	!ENCBFG,X
		BIT	#0000000000000001B
		BNE	NEZMIJUMP0100		; 着地？ [yes->NEZMIJUMP0100]
;
		LDY	#019H
		LDA	!ENYSPD,X
		CLC
		ADC	#00080H
		CMP	#00100H
		BCC	NEZMIJUMP0080		; [->NEZMIJUMP0080]
;
		LDY	#018H
		LDA	!ENYSPD,X
		BMI	NEZMIJUMP0080		; [->NEZMIJUMP0080]
;
		LDY	#01AH
		CMP	#00100H
		BCC	NEZMIJUMP0080		; [->NEZMIJUMP0080]
;
		LDY	#01BH
		CMP	#00180H
		BCC	NEZMIJUMP0080		; [->NEZMIJUMP0080]
;
		LDY	#01CH
		CMP	#00200H
		BCC	NEZMIJUMP0080		; [->NEZMIJUMP0080]
;
		LDY	#01DH
NEZMIJUMP0080	EQU	$
		TYA
		STA	!ENCHPT,X
		LDA	!ENWRK6,X
		BEQ	NEZMIJUMP00A0		; Ｘスピードセット？ [->NEZMIJUMP00A0]
;
		DEC	A
		BEQ	NEZMIJUMP0090		; 卵有？ [no->NEZMIJUMP0090]
;
		LDY	<ENWRK2,X		; 卵のインデックスロード！
		LDA	!ENXPSL,X
		STA	!ENXPSL,Y
		LDA	!ENYPSL,X
		SEC
		SBC	#00010H
		STA	!ENYPSL,Y
NEZMIJUMP0090	EQU	$
		LDA	!ENXSPD,X
		BNE	NEZMIJUMP00A0		; [->NEZMIJUMP00A0]
;
		LDY	!ENMUKI,X
		LDA	NEZMIJUMPXSPD,Y
		STA	!ENXSPD,X
NEZMIJUMP00A0	EQU	$
		RTS
;
NEZMIJUMP0100	EQU	$
		STZ	!ENWRK6,X
		LDA	<ENWRK4,X
		STA	<ENCONT,X
		RTS
;
;
NEZMIEDRO	EQU	$
		LDX	<ENINDX
		LDY	!ECRSFG,X
		DEY
		BMI	NEZMIEDRO0040		; 敵に触れた？ [no->NEZMIEDRO0040]
		BEQ	NEZMIEDRO0040		; 赤ちゃんに触れた？ [yes->NEZMIEDRO0040]
;
		LDA	!ENMODE,Y
		CMP	#EMOVE
		BNE	NEZMIEDRO0040		; mode move ? [no->NEZMIEDRO0040]
;
		LDA	!ENSHOT,Y
		BNE	NEZMIEDRO0040		; ショット？ [yes->NEZMIEDRO0040]
;
		LDA	!ENMYNO,Y
		CMP	#EGG00
		BCC	NEZMIEDRO0040		; 卵？ [no->NEZMIEDRO0040]
;
		CMP	#EGG03+1
		BCS	NEZMIEDRO0040		; 卵？ [no->NEZMIEDRO0040]
;
		LDA	!ENWRK6,Y
		BNE	NEZMIEDRO0040		; ？ [no->NEZMIEDRO0040]
;
		LDA	!ENWRK4-1,Y
		BMI	NEZMIEDRO0040		; 投げモード？ [yes->NEZMIEDRO0040]
;
		LDA	!ECENTX,X
		SEC
		SBC	!ECENTX,Y
		STA	<EWORK2
		BRA	NEZMIEDRO0140		; ？ [yes->NEZMIEDRO0140]
;
NEZMIEDRO0040	EQU	$
		LDA	#EGG00
		STA	R14
		LDA	#EGG03+1
		STA	R11
		TXA
		STA	R10
		M_CHIP	EX_EGGSEARCH
;
		LDX	<ENINDX
		LDY	R1
		BPL	NEZMIEDRO0100		; 卵有？ [yes->NEZMIEDRO0100]
;
		PHY
		LDA	#00075H
		JSL	>SOUND_3_ON		; サウンド セット！！
		PLY
;
		LDA	#0FC00H
		STA	!ENYSPD,X
		LDA	!ENCBFG,X
		AND	#0FFFEH
		STA	!ENCBFG,X
		JMP	NEZMINIGE0060
;
NEZMIEDRO0100	EQU	$
		LDA	!ENCBFG,X
		BIT	#0000000000001100B
		BEQ	NEZMIEDRO0120		; 横当たり？ [no->NEZMIEDRO0120]

		JMP	NEZMINIGE0020
;
NEZMIEDRO0120	EQU	$
		LDA	!EWIDEX,X
		CLC
		ADC	!EWIDEX,Y
		STA	<EWORK
		LDA	!ECENTX,X
		SEC
		SBC	!ECENTX,Y
		STA	<EWORK2
		ABS16
		CMP	<EWORK
		BCS	NEZMIEDRO0180		; 触れた？ [no->NEZMIEDRO0180]
;
		LDA	!EWIDEY,X
		CLC
		ADC	!EWIDEY,Y
		STA	<EWORK
		LDA	!ECENTY,X
		SEC
		SBC	!ECENTY,Y
		ABS16
		CMP	<EWORK
		BCS	NEZMIEDRO0160		; 触れた？ [no->NEZMIEDRO0160]
;
NEZMIEDRO0140	EQU	$
		TYX
		JSL	>EGGKILL
;
		TXY
		LDX	<ENINDX
;
		LDA	#NezumiEdro2
		STA	<ENCONT,X
		STZ	!ENXSPD,X
		STZ	!ENCHPT,X
		TYA
		STA	<ENWRK2,X		; 卵のインデックスセーブ！
		LDA	!ENCBFG,Y
		AND	#0FFFEH
		STA	!ENCBFG,Y
		LDA	<EWORK2
		ASL	A
		ASL	A
		ASL	A
		ASL	A
		STA	!ENXSPD,Y
		LDA	#0FE00H
		STA	!ENYSPD,Y
;
		PLA				; pull pull return !!
		RTL
;
NEZMIEDRO0160	EQU	$
		STZ	!ENXSPD,X
		LDA	#0FC00H
		STA	!ENYSPD,X
;
		LDA	#00075H
		JSL	>SOUND_3_ON		; サウンド セット！！
;
		PLA
		RTL
;
NEZMIEDRO0180	EQU	$
		LDA	!ECENTX,X
		SEC
		SBC	!ECENTX,Y
		AND	#08000H
		ASL	A
		ROL	A
		ASL	A
		STA	!ENMUKI,X
		TAY
		LDA	NEZMIXSPD,Y
		STA	!ENXSPD,X
;
NEZMIRNPTN	EQU	$
		LDA	!ENTIM1,X
		BNE	NEZMIRNPTN00F0		; pattern change ? [no->NEZMIRNPTN00F0]
;
		M8				; memory 8bit mode !!
;
		DEC	<ENWRK0,X
		BPL	NEZMIRNPTN00C0		; Max Pattern ? [no->NEZMIRNPTN00C0]
;
		LDA	#NezumiWalkPtn
		STA	<ENWRK0,X
NEZMIRNPTN00C0	EQU	$
		LDY	<ENWRK0,X
		LDA	NEZMIWALKPT,Y
		STA	!ENCHPT,X
		LDA	#02
		STA	!ENTIM1,X
;
		M16				; memory 16bit mode !!
;
NEZMIRNPTN00F0	EQU	$
		RTS
;
;
NEZMIEDR2	EQU	$
		LDX	<ENINDX
		LDY	<ENWRK2,X		; 卵のインデックスロード！
		LDA	!ENMODE,Y
		CMP	#EMOVE
		BNE	NEZMIEDR20030		; 卵有？ [no->NEZMIEDR20030]
;
		LDA	!ENMYNO,Y
		CMP	#EGG00
		BCC	NEZMIEDR20030		; 卵有？ [no->NEZMIEDR20030]
;
		CMP	#EGG03+1
		BCS	NEZMIEDR20030		; 卵有？ [no->NEZMIEDR20030]
;
		LDA	!ENSHOT,Y
		BNE	NEZMIEDR20030		; 卵有？ [no->NEZMIEDR20030]
;
		LDA	!ENWRK4,Y
		BNE	NEZMIEDR20030		; 卵有？ [no->NEZMIEDR20030]
;
		LDA	!ENWRK6,Y
		BEQ	NEZMIEDR20040		; 卵有？ [yes->NEZMIEDR20040]
;
NEZMIEDR20030	EQU	$
		LDA	#-1
		STA	<ENWRK2,X		; 卵のインデックスクリア！
;
		PHY
		LDA	#00075H
		JSL	>SOUND_3_ON		; サウンド セット！！
		PLY
;
		LDA	#0FC00H
		STA	!ENYSPD,X
		LDA	!ENCBFG,X
		AND	#0FFFEH
		STA	!ENCBFG,X
		JMP	NEZMINIGE0060
;
NEZMIEDR20040	EQU	$
		LDA	!ENYSPD,Y
		BMI	NEZMIEDR200F0		; 卵 上昇中？ [yes->NEZMIEDR200F0]
;
		LDA	!EWIDEX,X
		CLC
		ADC	!EWIDEX,Y
		STA	<EWORK
		LDA	!ECENTX,X
		SEC
		SBC	!ECENTX,Y
		STA	<EWORK2
		ABS16
		CMP	<EWORK
		BCS	NEZMIEDR200F0		; 触れた？ [no->NEZMIEDR200F0]
;
		LDA	!EWIDEY,X
		CLC
		ADC	!EWIDEY,Y
		STA	<EWORK
		LDA	!ECENTY,X
		SEC
		SBC	!ECENTY,Y
		ABS16
		CMP	<EWORK
		BCC	NEZMIEDR20100		; 触れた？ [yes->NEZMIEDR20100]
;
NEZMIEDR200F0	EQU	$
		RTS
;
NEZMIEDR20100	EQU	$
;
		LDA	!ENMOD1,Y
		AND	#1111111111100000B
		STA	!ENMOD1,Y
		LDA	!ENMOD2,Y
		AND	#1111111111110011B
		STA	!ENMOD2,Y		; 範囲外クリアＯＦＦ！
;
		LDA	#0001
		STA	!ENWRK6,Y
		LDA	#0000
		STA	!ENYSPD,Y
		STA	!ENXSPD,Y
		LDA	!ENXPSL,X
		STA	!ENXPSL,Y
		LDA	!ENYPSL,X
		SEC
		SBC	#00010H
		STA	!ENYPSL,Y
NEZMIEDR20180	EQU	$
		LDA	#NezumiEdro3
		STA	<ENCONT,X
		LDA	!EPXMUK,X
		AND	#000FFH
		EOR	#0002
		STA	!ENMUKI,X
		TAY
		LDA	NEZMIXSPD,Y
		STA	!ENXSPD,X
		PLA				; pull pull return !!
		RTL
;
;
NEZMIEDR3	EQU	$
		LDX	<ENINDX
;
		LDY	<ENWRK2,X		; 卵のインデックスロード！
		LDA	!ENMODE,Y
		CMP	#EMOVE
		BNE	NEZMIEDR30060		; 卵有？ [no->NEZMIEDR30060]
;
		LDA	!ENMYNO,Y
		CMP	#EGG00
		BCC	NEZMIEDR30060		; 卵有？ [no->NEZMIEDR30060]
;
		CMP	#EGG03+1
		BCS	NEZMIEDR30060		; 卵有？ [no->NEZMIEDR30060]
;
		LDA	!ENSHOT,Y
		BNE	NEZMIEDR30060		; 卵有？ [no->NEZMIEDR30060]
;
		LDA	!ENWRK4,Y
		BEQ	NEZMIEDR30080		; 卵有？ [yes->NEZMIEDR30080]
;
NEZMIEDR30060	EQU	$
		LDA	#-1
		STA	<ENWRK2,X		; 卵のインデックスクリア！
		STZ	!ENWRK6,X
;
		PHY
		LDA	#00075H
		JSL	>SOUND_3_ON		; サウンド セット！！
		PLY
;
		LDA	#0FC00H
		STA	!ENYSPD,X
		LDA	!ENCBFG,X
		AND	#0FFFEH
		STA	!ENCBFG,X
		JMP	NEZMINIGE0060
;
NEZMIEDR30080	EQU	$
		LDA	#0002
		STA	!ENWRK6,X
		LDA	!ENXPSL,X
		STA	!ENXPSL,Y
		LDA	!ENYPSL,X
		SEC
		SBC	#00010H
		STA	!ENYPSL,Y
;
		LDA	!ENCBFG,X
		BIT	#0000000000001100B
		BEQ	NEZMIEDR300F0		; 横当たり？ [no->NEZMIEDR300F0]
;
		STZ	!ENCHPT,X
		LDA	#0004
		STA	!ENTIM0,X
		LDA	<ENCONT,X
		STA	<ENWRK4,X
		LDA	#NezumiJump0
		STA	<ENCONT,X
		PLA				; pull pull return !!
		RTL
;
NEZMIEDR300F0	EQU	$
		LDA	!EPXMUK,X
		AND	#000FFH
		EOR	#0002
;;;;;;;;		CMP	!ENMUKI,X
;;;;;;;;		BEQ	NEZMIEDR30100		; 向きチェンジ？ [no->NEZMIEDR30100]
;;;;;;;;;
		STA	!ENMUKI,X
		TAY
		LDA	NEZMIXSPD,Y
		STA	!ENXSPD,X
NEZMIEDR30100	EQU	$
		JMP	NEZMIRNPTN
;
;
NEZMIPLSH	EQU	$
		LDA	!ECENTY,X
		SEC
		SBC	!PCENTY
		CLC
		ADC	#00060H
		CMP	#00060H*2
		BCS	NEZMIPLSH00F0		; プレイヤーＩＮ？ [no->NEZMIPLSH00F0]
;
		LDA	!ECENTX,X
		SEC
		SBC	!PCENTX
		CLC
		ADC	#00050H
		CMP	#00050H*2
		BCC	NEZMIPLSH0100		; プレイヤーＩＮ？ [yes->NEZMIPLSH0100]
;
NEZMIPLSH00F0	EQU	$
		RTS
;
NEZMIPLSH0100	EQU	$
;
		M8				; memory 8bit mode !!
;
		LDA	#NezumiWalkPtn
		STA	<ENWRK0,X
		TAY
		LDA	NEZMIWALKPT,Y
		STA	!ENCHPT,X
		LDA	#02
		STA	!ENTIM1,X
;
		M16				; memory 16bit mode !!
;
		LDA	!ENMOD1,X
		AND	#1111100000111111B
		ORA	#0000010010000000B
		STA	!ENMOD1,X
		LDA	!EPXMUK,X
		AND	#000FFH
		EOR	#00002H
		STA	!ENMUKI,X
		TAY
		LDA	NEZMIXSPD,Y
		STA	!ENXSPD,X
		LDA	#NezumiNige
		STA	<ENCONT,X
;
		PLA				; pull pull return !!
		RTL
;
;
NEZMIEGGSH	EQU	$
		LDA	#EGG00
		STA	R14
		LDA	#EGG03+1
		STA	R11
		TXA
		STA	R10
		M_CHIP	EX_EGGSEARCH
;
		LDX	<ENINDX
		LDY	R1
		BPL	NEZMIEGGSH0100		; 卵有？ [yes->NEZMIEGGSH0100]
;
;;;;;;;;		LDA	R6
;;;;;;;;		CMP	#00020H
;;;;;;;;		BCC	NEZMIEGGSH0100		; [->NEZMIEGGSH0100]
;;;;;;;;;
NEZMIEGGSH00F0	EQU	$
		RTS
;
NEZMIEGGSH0100	EQU	$
		LDA	!ENMOD1,X
		AND	#1111100000111111B
		ORA	#0000010010000000B
		STA	!ENMOD1,X
		STZ	!ENXSPD,X
;
		PHY
		LDA	#00075H
		JSL	>SOUND_3_ON		; サウンド セット！！
		PLY
;
		LDA	#0FC00H
		STA	!ENYSPD,X
		LDA	!ECENTX,X
		SEC
		SBC	!ECENTX,Y
		AND	#08000H
		ASL	A
		ROL	A
		ASL	A
		STA	!ENMUKI,X
		LDA	#NezumiEdro
		STA	<ENCONT,X
		PLA
		RTL
;
;
;------------------------------------------------------------------------
;-	initial (鼠)							-
;------------------------------------------------------------------------
nezumi2_0	EQU	0
nezumi2_1	EQU	2
nezumi2_2	EQU	4
;
Nezumi23DExitPt EQU	(NEZM2_3D0EXTM-NEZM2_3D0EXPT-1)
Nezumi23DKyorPt EQU	(NEZM2_3D0KRTM-NEZM2_3D0KRPT-1)
;
Nezumi2Dwn0Ptn	EQU	(NEZM2_2D0D0TM-NEZM2_2D0D0PT-1)
Nezumi2WaitPtn	EQU	(NEZM2_2D0WTTM-NEZM2_2D0WTPT-1)
Nezumi2WaitPt2	EQU	(NEZM2_2D0WTT2-NEZM2_2D0WTP2-1)
;
nezumi2_yspeed	EQU	00400H
nezumi2_yspeed2 EQU	00300H
;
Nezumi2Dwn0	EQU	(nz2dwn0-NEZM2_2D0MDSL)
Nezumi2Dwn1	EQU	(nz2dwn1-NEZM2_2D0MDSL)
Nezumi2Land	EQU	(nz2land-NEZM2_2D0MDSL)
Nezumi2Kyor	EQU	(nz2kyor-NEZM2_2D0MDSL)
Nezumi2Walk	EQU	(nz2walk-NEZM2_2D0MDSL)
Nezumi2Srch	EQU	(nz2srch-NEZM2_2D0MDSL)
Nezumi2Up00	EQU	(nz2up00-NEZM2_2D0MDSL)
Nezumi2Up01	EQU	(nz2up01-NEZM2_2D0MDSL)
Nezumi2Entr	EQU	(nz2entr-NEZM2_2D0MDSL)
Nezumi2Wait	EQU	(nz2wait-NEZM2_2D0MDSL)
;
NEZM2IN		EQU	$
		STZ	!ENMUKI,X
		LDY	!BG1TYP
		CPY	#03
		BEQ	NEZM2IN0100		; 溶岩コース ? [yes->NEZM2IN0100]
;
		LDA	!ENMOD1,X
		ORA	#0000000101000001B
		STA	!ENMOD1,X
		LDA	#nezumi2_2
		STA	<ENCONT,X
;
		M8				; memory 8bit mode !!
;
		LDA	#(NEZM2_2D0ENPTE-NEZM2_2D0ENPT-1)
		STA	<ENWRK1,X
		TAY
		LDA	NEZM2_2D0D0PT,Y
		STA	!ENCHPT,X
		LDA	NEZM2_2D0D0TM,Y
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
NEZM2IN0100	EQU	$
		LDA	!ENMOD1,X
		ORA	#0000000000000110B
		STA	!ENMOD1,X
		LDA	!ENXPSL,X
		AND	#00010H
		LSR	A
		LSR	A
		LSR	A
		STA	<ENCONT,X
		BNE	NEZM2IN0200		; [->NEZM2IN0200]
;
		M8				; memory 8bit mode !!
;
		LDA	#01
		STA	!ENYUSN,X
		LDA	#Nezumi23DExitPt
		STA	<ENWRK1,X
		TAY
		LDA	NEZM2_3D0EXPT,Y
		STA	!ENCHPT,X
		LDA	NEZM2_3D0EXTM,Y
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
NEZM2IN0200	EQU	$
;
		M8				; memory 8bit mode !!
;
		LDA	!ENCLOR,X
		AND	#11001111B
		STA	!ENCLOR,X
		LDA	#-1
		STA	!ENYUSN,X
		LDA	#00CH
		STA	!ENCHPT,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
;
;------------------------------------------------------------------------
;-	move (鼠)							-
;------------------------------------------------------------------------
NEZM2MV		EQU	$
		LDA	!ENMODE,X
		CMP	#EEATM
		BNE	NEZM2MV0080		; 食べられた？ [no->NEZM2MV0080]
;
NEZM2MV0040	EQU	$
		LDA	#NEZMI
		TXY
		JSL	>ESTATST
;
		M8				; memory 8bit mode !!
;
		LDA	#01
		STA	!ENWRKA,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
NEZM2MV0080	EQU	$
		CMP	#EMOVE
		BNE	NEZM2MV00A0		; Ｍｏｄｏ Ｍｏｖｅ？ [no->NEZM2MV00A0]
;
		LDA	!ENCOLD,X
		BEQ	NEZM2MV00A0		; 凍った？ [yes->NEZM2MV00A0]
;
		LDA	!ENMOD1,X
		AND	#1111111111100000B
		STA	!ENMOD1,X		; ＢＧチェックＯＦＦ！！
NEZM2MV00A0	EQU	$
		JSL	>ENMDCK			; mode check
;
		JSR	NEZM2_PCRCK		; プレイヤーとの衝突チェック !!
;
		LDA	<ENCONT,X
		TAX
		JMP	(NEZM2MVMODSEL,X)
;
NEZM2MVMODSEL	EQU	$
		WORD	NEZM2_3D0
		WORD	NEZM2_3D1
		WORD	NEZM2_2D0
;
;
NEZM2_3D0	EQU	$
		LDX	<ENINDX
		LDY	<ENWRK0,X
		TYX
		JMP	(NEZM2_3D0MDSL,X)
;
		RTL
;
NEZM2_3D0MDSL	EQU	$
		WORD	NEZM2_3D0EX
		WORD	NEZM2_3D0UP
		WORD	NEZM2_3D0U2
		WORD	NEZM2_3D0KR
		WORD	NEZM2_3D0UH
		WORD	NEZM2_3D0U3
		WORD	NEZM2_3D0DN
		WORD	NEZM2_2D0WT
;
;
NEZM2_3D0EXPT	EQU	$
		HEX	06, 05, 16
;
NEZM2_3D0EXTM	EQU	$
		HEX	03, 14, 40
;
NEZM2_3D0EX	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	NEZM2_3D0EX00F0		; pattern change ? [no->NEZM2_3D0EX00F0]
;
		M8				; memory 8bit mode !!
;
		DEC	<ENWRK1,X
		BMI	NEZM2_3D0EX0100		; Next Mode ? [yes->NEZM2_3D0EX0100]
;
		LDY	<ENWRK1,X
		LDA	NEZM2_3D0EXPT,Y
		STA	!ENCHPT,X
		LDA	NEZM2_3D0EXTM,Y
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
NEZM2_3D0EX00F0 EQU	$
		RTL
;
		MEM8
;
NEZM2_3D0EX0100 EQU	$
		INC	<ENWRK0,X
		INC	<ENWRK0,X
		LDA	#07
		STA	!ENCHPT,X
;
		M16				; memory 16bit mode !!
;
		LDA	!ENYPSL,X
		SEC
		SBC	#0010
		STA	!ENYPSL,X
		LDA	#-nezumi2_yspeed2
		STA	!ENYSPD,X
		RTL
;
;
NEZM2_3D0UP	EQU	$
		LDX	<ENINDX
;
		I16				; index 16bit mode !!
;
		LDA	!ENWRKC,X
		TAX
		LDA	>ENBGCK_UNIT_F,X
;
		I8				; index 8bit mode !!
;
		LDX	<ENINDX
		CMP	#UT0100
		BCC	NEZM2_3D0UP0080		; [->NEZM2_3D0UP0080]
;
		CMP	#UT0102+1
		BCC	NEZM2_3D0UP0040		; [->NEZM2_3D0UP0040]
;
		CMP	#UT010A
		BNE	NEZM2_3D0UP0080		; [->NEZM2_3D0UP0080]
;
NEZM2_3D0UP0040 EQU	$
		LDA	!ENYSPD,X
		ASR16
		STA	!ENYSPD,X
;
		M8				; memory 8bit mode !!
;
		LDA	#08
		STA	!ENCHPT,X
		LDA	#03
		STA	!ENTIM0,X
		INC	<ENWRK0,X
		INC	<ENWRK0,X
;
		M16				; memory 16bit mode !!
;
NEZM2_3D0UP0080 EQU	$
		RTL
;
;
NEZM2_3D0U2	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	NEZM2_3D0U20020		; [->NEZM2_3D0U20020]
;
		LDA	#0009
		STA	!ENCHPT,X
NEZM2_3D0U20020 EQU	$
;
		I16				; index 16bit mode !!
;
		LDA	!ENWRKC,X
		TAX
		LDA	>ENBGCK_UNIT_F,X
;
		I8				; index 8bit mode !!
;
		LDX	<ENINDX
		CMP	#UT0030
		BCC	NEZM2_3D0U20080		; [->NEZM2_3D0U20080]
;
		CMP	#UT0032+1
		BCC	NEZM2_3D0U20060		; [->NEZM2_3D0U20060]
;
		CMP	#UT0035
		BNE	NEZM2_3D0U20080		; [->NEZM2_3D0U20080]
;
NEZM2_3D0U20060 EQU	$
		LDA	!ENMOD0,X
		AND	#1111111110011111B
		STA	!ENMOD0,X		; 食べられる＆投げた敵に当たるセット !!
		LDA	!ENMOD2,X
		ORA	#0000000101010000B
		STA	!ENMOD2,X		; 照準合うセット !!
		LDA	<RANDM0
		AND	#0001H
		BNE	NEZM2_3D0U20100		; きょろきょろ？ [no->NEZM2_3D0U20100]
;
NEZM2_3D0U20070 EQU	$
		STZ	!ENYSPD,X
;
		M8				; memory 8bit mode !!
;
		LDA	#05
		STA	!ENYUSN,X
		LDA	#Nezumi23DKyorPt
		STA	<ENWRK1,X
		TAY
		LDA	NEZM2_3D0KRPT,Y
		STA	!ENCHPT,X
		LDA	NEZM2_3D0KRTM,Y
		STA	!ENTIM0,X
		INC	<ENWRK0,X
		INC	<ENWRK0,X
;
		M16				; memory 16bit mode !!
;
		LDA	#00075H
		JSL	>SOUND_3_ON		; サウンド セット！！
;
NEZM2_3D0U20080 EQU	$
		RTL
;
NEZM2_3D0U20100 EQU	$
;
		M8				; memory 8bit mode !!
;
		LDA	#07
		STA	!ENYUSN,X
		LDA	<ENWRK0,X
		CLC
		ADC	#04
		STA	<ENWRK0,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
;
NEZM2_3D0K2PT	EQU	$
		HEX	00, 00, 00, 01
;
NEZM2_3D0KRPT	EQU	$
		HEX	00, 00, 00, 0B
;
NEZM2_3D0KRTM	EQU	$
		HEX	24, 10, 24, 03
;
NEZM2_3D0KRFP	EQU	$
		HEX	02, 02, 00, 00
;
NEZM2_3D0KR	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	NEZM2_3D0KR00F0		; pattern change ? [no->NEZM2_3D0KR00F0]
;
		M8				; memory 8bit mode !!
;
		DEC	<ENWRK1,X
		BMI	NEZM2_3D0KR0100		; Next Mode ? [yes->NEZM2_3D0KR0100]
;
		LDY	<ENWRK1,X
		LDA	NEZM2_3D0KRPT,Y
		STA	!ENCHPT,X
		LDA	NEZM2_3D0KRTM,Y
		STA	!ENTIM0,X
		LDA	!ENMUKI,X
		EOR	NEZM2_3D0KRFP,Y
		STA	!ENMUKI,X
;
		M16				; memory 16bit mode !!
;
NEZM2_3D0KR00F0 EQU	$
		RTL
;
		MEM8
;
NEZM2_3D0KR0100 EQU	$
		INC	<ENWRK0,X
		INC	<ENWRK0,X
		LDA	!ENMOD0,X
		ORA	#01100000B
		STA	!ENMOD0,X		; 食べられない＆投げた敵に当たらないセット !!
		LDA	#07
		STA	!ENYUSN,X
		LDA	#09
		STA	!ENCHPT,X
;
		M16				; memory 16bit mode !!
;
		LDA	!ENMOD2,X
		AND	#1111111010101111B
		STA	!ENMOD2,X		; 照準合わないセット !!
		LDA	#-(nezumi2_yspeed2/2)
		STA	!ENYSPD,X
		RTL
;
;
NEZM2_3D0UH	EQU	$
		LDX	<ENINDX
;
		M8				; memory 8bit mode !!
;
		LDA	!ENMOD0,X
		ORA	#01100000B
		STA	!ENMOD0,X		; 食べられない＆投げた敵に当たらないセット !!
		INC	<ENWRK0,X
		INC	<ENWRK0,X
;
		M16				; memory 16bit mode !!
;
		LDA	!ENMOD2,X
		AND	#1111111010101111B
		STA	!ENMOD2,X		; 照準合わないセット !!
		RTL
;
;
NEZM2_3D0U3	EQU	$
		LDX	<ENINDX
;
		I16				; index 16bit mode !!
;
		LDA	!ENWRKC,X
		TAX
		LDA	>ENBGCK_UNIT_C,X
;
		I8				; index 8bit mode !!
;
		LDX	<ENINDX
		CMP	#UT0030
		BCC	NEZM2_3D0U30080		; [->NEZM2_3D0U30080]
;
		CMP	#UT0032+1
		BCC	NEZM2_3D0U300F0		; [->NEZM2_3D0U300F0]

		CMP	#UT0035
		BEQ	NEZM2_3D0U300F0		; [->NEZM2_3D0U300F0]
;
NEZM2_3D0U30080 EQU	$
		STZ	!ENYSPD,X
;
		M8				; memory 8bit mode !!
;
		LDA	#00AH
		STA	!ENCHPT,X
		LDA	!ENCLOR,X
		AND	#11001111B
		STA	!ENCLOR,X
		INC	<ENWRK0,X
		INC	<ENWRK0,X
;
		M16				; memory 16bit mode !!
;
		LDA	#nezumi2_yspeed2
		STA	!ENYSPD,X
NEZM2_3D0U300F0 EQU	$
		RTL
;
;
NEZM2_3D0DN	EQU	$
		LDX	<ENINDX
		JSR	HOLE_SEARCH
		BMI	NEZM2_3D0U300F0		; 触れた？ [no->NEZM2_3D0U300F0]
		BEQ	NEZM2_3D0U300F0		; 触れた？ [no->NEZM2_3D0U300F0]
;
		LDA	!EWIDEX,X
		CLC
		ADC	!EWIDEX,Y
		STA	<EWORK
		LDA	!ECENTX,X
		SEC
		SBC	!ECENTX,Y
		ABS16
		CMP	<EWORK
		BCS	NEZM2_3D0DN00F0		; 当たってない ？ [yes->NEZM2_3D0DN00F0]
;
		LDA	!EWIDEY,X
		CLC
		ADC	!EWIDEY,Y
		STA	<EWORK
		LDA	!ECENTY,X
		SEC
		SBC	!ECENTY,Y
		ABS16
		CMP	<EWORK
		BCS	NEZM2_3D0DN00F0		; 当たってない ？ [yes->NEZM2_3D0DN00F0]
;
		STZ	!ENYSPD,X
		LDA	!ENYPSL,Y
		STA	!ENYPSL,X
;
NEZM2_3D0DN0080 EQU	$
		LDA	<RANDM0
		AND	#00001H
		ASL	A
		TAY
		LDA	NEZM2_2D0WTPTAD,Y
		STA	!ENWRK6,X
		STA	<EWORK
		LDA	NEZM2_2D0WTTMAD,Y
		STA	!ENWRK8,X
		STA	<EWORK2
;
		JSL	>RANDAM
;
		M8				; memory 8bit mode !!
;
		LDA	#-1
		STA	!ENYUSN,X
		LDA	!ENCLOR,X
		ORA	#00100000B
		STA	!ENCLOR,X
		LDA	NEZM2_2D0WTPTSU,Y
		STA	<ENWRK1,X
		TAY
		LDA	(<EWORK),Y
		STA	!ENCHPT,X
		LDA	<RANDM0
		AND	#01FH
		CLC
		ADC	#020H
		STA	!ENTIM0,X
		INC	<ENWRK0,X
		INC	<ENWRK0,X
;
		M16				; memory 16bit mode !!
;
NEZM2_3D0DN00F0 EQU	$
		RTL
;
;
;------------------------------------------------------
NEZM2_3D1	EQU	$
		LDX	<ENINDX
		LDY	<ENWRK0,X
		TYX
		JMP	(NEZM2_3D1MDSL,X)
;
NEZM2_3D1MDSL	EQU	$
		WORD	NEZM2_3D1UP
		WORD	NEZM2_3D1K2
		WORD	NEZM2_3D1DN
		WORD	NEZM2_3D1KR
		WORD	NEZM2_3D0UH
		WORD	NEZM2_3D1D2
		WORD	NEZM2_3D1D3
		WORD	NEZM2_3D1HO
		WORD	NEZM2_3D1WT
;
;
NEZM2_3D1UP	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BEQ	NEZM2_3D1UP0040		; [->NEZM2_3D1UP0040]
;
		RTL
;
NEZM2_3D1UP0040 EQU	$
		LDA	#-nezumi2_yspeed2
		STA	!ENYSPD,X
;
		JSR	HOLE_SEARCH
		BMI	NEZM2_3D1UP00F0		; 触れた？ [no->NEZM2_3D1UP00F0]
		BEQ	NEZM2_3D1UP00F0		; 触れた？ [no->NEZM2_3D1UP00F0]
;
		LDA	!EWIDEX,X
		CLC
		ADC	!EWIDEX,Y
		STA	<EWORK
		LDA	!ECENTX,X
		SEC
		SBC	!ECENTX,Y
		ABS16
		CMP	<EWORK
		BCS	NEZM2_3D1UP0080		; 触れてない ？ [yes->NEZM2_3D1UP0080]
;
		LDA	!EWIDEY,X
		CLC
		ADC	!EWIDEY,Y
		STA	<EWORK
		LDA	!ECENTY,X
		SEC
		SBC	!ECENTY,Y
		ABS16
		CMP	<EWORK
		BCC	NEZM2_3D1UP00F0		; 触れた ？ [yes->NEZM2_3D1UP00F0]
;
NEZM2_3D1UP0080 EQU	$
;
		M8				; memory 8bit mode !!
;
		LDA	#07
		STA	!ENYUSN,X
;
		M16				; memory 16bit mode !!
;
NEZM2_3D1UP00F0 EQU	$
;
		I16				; index 16bit mode !!
;
		LDA	!ENWRKC,X
		TAX
		LDA	>ENBGCK_UNIT_C,X
;
		I8				; index 8bit mode !!
;
		LDX	<ENINDX
		CMP	#UT0000
		BNE	NEZM2_3D1UP01F0		; ヌキユニット？ [no->NEZM2_3D1UP01F0]
;
		M8				; memory 8bit mode !!
;
		INC	<ENWRK0,X
		INC	<ENWRK0,X
		LDA	#Nezumi23DKyorPt
		STA	<ENWRK1,X
		TAY
		LDA	NEZM2_3D0K2PT,Y
		STA	!ENCHPT,X
		LDA	NEZM2_3D0KRTM,Y
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
		STZ	!ENYSPD,X
NEZM2_3D1UP01F0 EQU	$
		RTL
;
;
NEZM2_3D1K2	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	NEZM2_3D1K200F0		; pattern change ? [no->NEZM2_3D1K200F0]
;
		M8				; memory 8bit mode !!
;
		DEC	<ENWRK1,X
		BMI	NEZM2_3D1K20100		; Next Mode ? [yes->NEZM2_3D1K20100]
;
		LDY	<ENWRK1,X
		LDA	NEZM2_3D0K2PT,Y
		STA	!ENCHPT,X
		LDA	NEZM2_3D0KRTM,Y
		STA	!ENTIM0,X
		LDA	!ENMUKI,X
		EOR	NEZM2_3D0KRFP,Y
		STA	!ENMUKI,X
;
		M16				; memory 16bit mode !!
;
NEZM2_3D1K200F0 EQU	$
		RTL
;
		MEM8
;
NEZM2_3D1K20100 EQU	$
		INC	<ENWRK0,X
		INC	<ENWRK0,X
		LDA	#00DH
		STA	!ENCHPT,X
		LDA	!ENCLOR,X
		ORA	#00100000B
		STA	!ENCLOR,X
;
		M16				; memory 16bit mode !!
;
		LDA	#(nezumi2_yspeed2/2)
		STA	!ENYSPD,X
;
		LDA	#00075H
		JSL	>SOUND_3_ON		; サウンド セット！！
;
		RTL
;
;
NEZM2_3D1DN	EQU	$
		LDX	<ENINDX
;
		I16				; index 16bit mode !!
;
		LDA	!ENWRKC,X
		TAX
		LDA	>ENBGCK_UNIT_F,X
;
		I8				; index 8bit mode !!
;
		LDX	<ENINDX
		CMP	#UT0100
		BCC	NEZM2_3D1DN00F0		; 床ユニット？ [no->NEZM2_3D1DN00F0]
;
		CMP	#UT0102+1
		BCC	NEZM2_3D1DN0040		; 床ユニット？ [yes->NEZM2_3D1DN0040]
;
		CMP	#UT010A
		BNE	NEZM2_3D1DN00F0		; 床ユニット？ [no->NEZM2_3D1DN00F0]
;
NEZM2_3D1DN0040 EQU	$
		LDA	!ENMOD0,X
		AND	#1111111110011111B
		STA	!ENMOD0,X		; 食べられる＆投げた敵に当たるセット !!
		LDA	!ENMOD2,X
		ORA	#0000000101010000B
		STA	!ENMOD2,X		; 照準合うセット !!
		LDA	<RANDM0
		AND	#0001H
		BNE	NEZM2_3D1DN0100		; きょろきょろ？ [no->NEZM2_3D1DN0100]
;
		JMP	NEZM2_3D0U20070
;
NEZM2_3D1DN00F0 EQU	$
		RTL
;
NEZM2_3D1DN0100 EQU	$
;
		M8				; memory 8bit mode !!
;
		LDA	#01
		STA	!ENYUSN,X
		LDA	<ENWRK0,X
		CLC
		ADC	#04
		STA	<ENWRK0,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
;
NEZM2_3D1KR	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	NEZM2_3D1KR00F0		; pattern change ? [no->NEZM2_3D1KR00F0]
;
		M8				; memory 8bit mode !!
;
		DEC	<ENWRK1,X
		BMI	NEZM2_3D1KR0100		; Next Mode ? [yes->NEZM2_3D1KR0100]
;
		LDY	<ENWRK1,X
		LDA	NEZM2_3D0KRPT,Y
		STA	!ENCHPT,X
		LDA	NEZM2_3D0KRTM,Y
		STA	!ENTIM0,X
		LDA	!ENMUKI,X
		EOR	NEZM2_3D0KRFP,Y
		STA	!ENMUKI,X
;
		M16				; memory 16bit mode !!
;
NEZM2_3D1KR00F0 EQU	$
		RTL
;
		MEM8
;
NEZM2_3D1KR0100 EQU	$
		INC	<ENWRK0,X
		INC	<ENWRK0,X
		LDA	!ENMOD0,X
		ORA	#01100000B
		STA	!ENMOD0,X		; 食べられない＆投げた敵に当たらないセット !!
		LDA	#01
		STA	!ENYUSN,X
		LDA	#00DH
		STA	!ENCHPT,X
;
		M16				; memory 16bit mode !!
;
		LDA	!ENMOD2,X
		AND	#1111111010101111B
		STA	!ENMOD2,X		; 照準合わないセット !!
		LDA	#(nezumi2_yspeed2/2)
		STA	!ENYSPD,X
		RTL
;
;
NEZM2_3D1D2	EQU	$
		LDX	<ENINDX
;
		I16				; index 16bit mode !!
;
		LDA	!ENWRKC,X
		TAX
		LDA	>ENBGCK_UNIT_F,X
;
		I8				; index 8bit mode !!
;
		LDX	<ENINDX
		CMP	#UT0100
		BCC	NEZM2_3D1D20040		; 床ユニット？ [no->NEZM2_3D1D20040]
;
		CMP	#UT0102+1
		BCC	NEZM2_3D1D200F0		; 床ユニット？ [yes->NEZM2_3D1D200F0]
;
		CMP	#UT010A
		BEQ	NEZM2_3D1D200F0		; 床ユニット？ [yes->NEZM2_3D1D200F0]
;
NEZM2_3D1D20040 EQU	$
		LDA	#nezumi2_yspeed2
		STA	!ENYSPD,X
;
		M8				; memory 8bit mode !!
;
		LDA	#00EH
		STA	!ENCHPT,X
		INC	<ENWRK0,X
		INC	<ENWRK0,X
;
		M16				; memory 16bit mode !!
;
NEZM2_3D1D200F0 EQU	$
		RTL
;
;
NEZM2_3D1D3	EQU	$
		LDX	<ENINDX
		JSR	HOLE_SEARCH
		BMI	NEZM2_3D1D300F0		; 触れた？ [no->NEZM2_3D1D300F0]
		BEQ	NEZM2_3D1D300F0		; 触れた？ [no->NEZM2_3D1D300F0]
;
		LDA	!EWIDEX,X
		CLC
		ADC	!EWIDEX,Y
		STA	<EWORK
		LDA	!ECENTX,X
		SEC
		SBC	!ECENTX,Y
		ABS16
		CMP	<EWORK
		BCS	NEZM2_3D1D300F0		; 当たってない ？ [yes->NEZM2_3D1D300F0]
;
		LDA	!EWIDEY,X
		CLC
		ADC	!EWIDEY,Y
		STA	<EWORK
		LDA	!ECENTY,X
		SEC
		SBC	!ECENTY,Y
		ABS16
		CMP	<EWORK
		BCS	NEZM2_3D1D300F0		; 当たってない ？ [yes->NEZM2_3D1D300F0]
;
		STZ	!ENYSPD,X
		LDA	!ENXPSL,Y
		STA	!ENXPSL,X
		LDA	!ENYPSL,Y
		STA	!ENYPSL,X
;
		M8				; memory 8bit mode !!
;
		LDA	#01
		STA	<ENWRK1,X
		LDA	#00FH
		STA	!ENCHPT,X
		LDA	#03
		STA	!ENTIM0,X
		INC	<ENWRK0,X
		INC	<ENWRK0,X
;
		M16				; memory 16bit mode !!
;
NEZM2_3D1D300F0 EQU	$
		RTL
;
;
NEZM2_3D1HO	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	NEZM2_3D1HO00F0		; pattern change ? [no->NEZM2_3D1HO00F0]
;
		M8				; memory 8bit mode !!
;
		DEC	<ENWRK1,X
		BMI	NEZM2_3D1HO0100		; Next Mode ? [yes->NEZM2_3D1HO0100]
;
		LDA	#010H
		STA	!ENCHPT,X
		LDA	#03
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
NEZM2_3D1HO00F0 EQU	$
		RTL
;
		MEM8
;
NEZM2_3D1HO0100 EQU	$
;
		M16				; memory 16bit mode !!
;
		LDA	<RANDM0
		AND	#00001H
		ASL	A
		TAY
		LDA	NEZM2_2D0WTPTAD,Y
		STA	!ENWRK6,X
		STA	<EWORK
		LDA	NEZM2_2D0WTTMAD,Y
		STA	!ENWRK8,X
		STA	<EWORK2
;
		JSL	>RANDAM
;
		M8				; memory 8bit mode !!
;
		LDA	NEZM2_2D0WTPTSU,Y
		STA	<ENWRK1,X
		TAY
		LDA	(<EWORK),Y
		STA	!ENCHPT,X
		LDA	<RANDM0
		AND	#01FH
		CLC
		ADC	#020H
		STA	!ENTIM0,X
		INC	<ENWRK0,X
		INC	<ENWRK0,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
;
NEZM2_3D1WT	EQU	$
		LDX	<ENINDX
		LDA	!ENWRK6,X
		STA	<EWORK
		LDA	!ENWRK8,X
		STA	<EWORK2
		LDA	!ENTIM0,X
		BNE	NEZM2_3D1WT00F0		; [->NEZM2_3D1WT00F0]
;
		M8				; memory 8bit mode !!
;
		DEC	<ENWRK1,X
		BPL	NEZM2_3D1WT0100		; [->NEZM2_3D1WT0100]
;
		LDA	!ENCLOR,X
		AND	#11001111B
		STA	!ENCLOR,X
		LDA	#-1
		STA	!ENYUSN,X
		LDA	#00CH
		STA	!ENCHPT,X
		LDA	<RANDM0
		AND	#01FH
		CLC
		ADC	#020H
		STA	!ENTIM0,X
		STZ	<ENWRK0,X
;
		M16				; memory 16bit mode !!
;
		LDA	!ENYPSL,X
		SEC
		SBC	#00010H
		STA	!ENYPSL,X
NEZM2_3D1WT00F0 EQU	$
		RTL
;
		MEM8
;
NEZM2_3D1WT0100 EQU	$
		LDY	<ENWRK1,X
		LDA	(<EWORK),Y
		STA	!ENCHPT,X
		LDA	(<EWORK2),Y
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
;
;------------------------------------------------------
NEZM2_2D0	EQU	$
		LDX	<ENINDX
		JSR	NEZM2_EGGSH
;
		LDY	<ENWRK0,X
		TYX
		JMP	(NEZM2_2D0MDSL,X)
;
NEZM2_2D0MDSL	EQU	$
nz2dwn0		WORD	NEZM2_2D0D0
nz2dwn1		WORD	NEZM2_2D0D1
nz2land		WORD	NEZM2_2D0LD
nz2kyor		WORD	NEZM2_2D0KR
nz2walk		WORD	NEZM2_2D0WK
nz2srch		WORD	NEZM2_2D0SH
nz2up00		WORD	NEZM2_2D0U0
nz2up01		WORD	NEZM2_2D0U1
nz2entr		WORD	NEZM2_2D0EN
nz2wait		WORD	NEZM2_2D0WT
;
;
NEZM2_2D0D0PT	EQU	$
		HEX	15, 14, 16
;
NEZM2_2D0D0TM	EQU	$
		HEX	04, 04, 40
;
NEZM2_2D0D0	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	NEZM2_2D0D000F0		; pattern change ? [no->NEZM2_2D0D000F0]
;
		M8				; memory 8bit mode !!
;
		DEC	<ENWRK1,X
		BMI	NEZM2_2D0D00100		; Next Mode ? [yes->NEZM2_2D0D00100]
;
		LDY	<ENWRK1,X
		LDA	NEZM2_2D0D0PT,Y
		STA	!ENCHPT,X
		LDA	NEZM2_2D0D0TM,Y
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
NEZM2_2D0D000F0 EQU	$
		RTL
;
		MEM8
;
NEZM2_2D0D00100 EQU	$
		INC	<ENWRK0,X
		INC	<ENWRK0,X
		LDA	#00DH
		STA	!ENCHPT,X
		LDA	#04
		STA	!ENTIM0,X
		LDA	#05
		STA	!ENYUSN,X
		LDA	!ENMOD0,X
		AND	#10011111B
		STA	!ENMOD0,X		; 食べられる＆投げた敵に当たるセット !!
;
		M16				; memory 16bit mode !!
;
		LDA	!ENMOD2,X
		ORA	#0000000101010000B
		STA	!ENMOD2,X		; 照準合うセット !!
		LDA	!ENYPSL,X
		CLC
		ADC	#0002
		STA	!ENYPSL,X
		LDA	#nezumi2_yspeed
		STA	!ENYSPD,X
		RTL
;
;
NEZM2_2D0D1	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	NEZM2_2D0D100F0		; pattern change ? [no->NEZM2_2D0D100F0]
;
		M8				; memory 8bit mode !!
;
		LDA	!ENCBFG,X
		AND	#00000001B
		BNE	NEZM2_2D0D10100		; Next Mode ? [yes->NEZM2_2D0D10100]
;
		LDA	#00EH
		STA	!ENCHPT,X
;
		M16				; memory 16bit mode !!
;
NEZM2_2D0D100F0 EQU	$
		RTL
;
		MEM8
;
NEZM2_2D0D10100 EQU	$
		INC	<ENWRK0,X
		INC	<ENWRK0,X
		LDA	#(NEZM2_2D0LDTM-NEZM2_2D0LDPT-1)
		STA	<ENWRK1,X
		TAY
		LDA	NEZM2_2D0LDPT,Y
		STA	!ENCHPT,X
		LDA	NEZM2_2D0LDTM,Y
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
		LDA	#00040H
		STA	!ENGPOW,X
		RTL
;
;
NEZM2_2D0LDPT	EQU	$
		HEX	00, 17
;
NEZM2_2D0LDTM	EQU	$
		HEX	20, 04
;
NEZM2_2D0LD	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	NEZM2_2D0LD00F0		; pattern change ? [no->NEZM2_2D0LD00F0]
;
		M8				; memory 8bit mode !!
;
		DEC	<ENWRK1,X
		BMI	NEZM2_2D0LD0100		; Next Mode ? [yes->NEZM2_2D0LD0100]
;
		LDY	<ENWRK1,X
		LDA	NEZM2_2D0LDPT,Y
		STA	!ENCHPT,X
		LDA	NEZM2_2D0LDTM,Y
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
NEZM2_2D0LD00F0 EQU	$
		RTL
;
		MEM8
;
NEZM2_2D0LD0100 EQU	$
		INC	<ENWRK0,X
		INC	<ENWRK0,X
;
		STZ	<ENWRK3,X
		LDA	<RANDM0
		AND	#003H
		INC	A
NEZM2_2D0KRIN	EQU	$
		STA	<ENWRK2,X
		LDA	#NezumiKyorPtn
		STA	<ENWRK1,X
		TAY
		LDA	NEZMIKYORPT,Y
		STA	!ENCHPT,X
		LDA	<RANDM0
		LSR	A
		LSR	A
		AND	#007H
		CLC
		ADC	#002H
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
		STZ	!ENXSPD,X
		RTL
;
;
NEZM2_2D0KR	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	NEZM2_2D0KR00F0		; pattern change ? [no->NEZM2_2D0KR00F0]
;
		M8				; memory 8bit mode !!
;
		DEC	<ENWRK1,X
		BPL	NEZM2_2D0KR0040		; Max Pattern ? [no->NEZM2_2D0KR0040]
;
		DEC	<ENWRK2,X
		BMI	NEZM2_2D0KR0100		; Next Mode ? [yes->NEZM2_2D0KR0100]
;
		LDA	#NezumiKyorPtn
		STA	<ENWRK1,X
NEZM2_2D0KR0040 EQU	$
		LDY	<ENWRK1,X
		LDA	NEZMIKYORPT,Y
		STA	!ENCHPT,X
		LDA	!ENMUKI,X
		EOR	NEZMIKYORFP,Y
		STA	!ENMUKI,X
		LDA	<RANDM0
		AND	#007H
		CLC
		ADC	#002H
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
NEZM2_2D0KR00F0 EQU	$
		RTL
;
		MEM8
;
NEZM2_2D0KR0100 EQU	$
		LDA	<ENWRK3,X
		BNE	NEZM2_2D0KR0200		; 穴をサーチ ? [yes->NEZM2_2D0KR0200]
;
		INC	<ENWRK0,X
		INC	<ENWRK0,X
		LDA	#NezumiRunTime
		STA	!ENTIM0,X
NEZM2_2D0KR0140 EQU	$
		LDA	#NezumiWalkPtn
		STA	<ENWRK1,X
		TAY
		LDA	NEZMIWALKPT,Y
		STA	!ENCHPT,X
		LDA	#02
		STA	!ENTIM1,X
;
		M16				; memory 16bit mode !!
;
		LDY	!ENMUKI,X
		LDA	NEZMIXSPD,Y
		STA	!ENXSPD,X
		RTL
;
		MEM8
;
NEZM2_2D0KR0200 EQU	$
;
		M16				; memory 16bit mode !!
;
		JSR	HOLE_SEARCH
		BMI	NEZM2_2D0KR0240		; [->NEZM2_2D0KR0240]
		BEQ	NEZM2_2D0KR0240		; [->NEZM2_2D0KR0240]
;
		LDA	!ENXPSL,X
		SEC
		SBC	!ENXPSL,Y
		AND	#08000H
		ASL	A
		ROL	A
		ASL	A
		STA	!ENMUKI,X
NEZM2_2D0KR0240 EQU	$
;
		M8				; memory 8bit mode !!
;
		LDA	#Nezumi2Srch
		STA	<ENWRK0,X
		BRA	NEZM2_2D0KR0140
;
		MEM16
;
;
NEZM2_2D0WK	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BEQ	NEZM2_2D0WK0100		; Next Mode ? [yes->NEZM2_2D0WK0100]
;
		LDA	!ENTIM1,X
		BNE	NEZM2_2D0WK00F0		; pattern change ? [no->NEZM2_2D0WK00F0]
;
		M8				; memory 8bit mode !!
;
		DEC	<ENWRK1,X
		BPL	NEZM2_2D0WK0040		; Max Pattern ? [no->NEZM2_2D0WK0040]
;
		LDA	#NezumiWalkPtn
		STA	<ENWRK1,X
NEZM2_2D0WK0040 EQU	$
		LDY	<ENWRK1,X
		LDA	NEZMIWALKPT,Y
		STA	!ENCHPT,X
		LDA	#02
		STA	!ENTIM1,X
;
		M16				; memory 16bit mode !!
;
NEZM2_2D0WK00F0 EQU	$
		RTL
;
NEZM2_2D0WK0100 EQU	$
;
		M8				; memory 8bit mode !!
;
		LDA	<RANDM0
		AND	#004H
		STA	<ENWRK3,X
		LDA	#Nezumi2Kyor
		STA	<ENWRK0,X
		LDA	#003
		JMP	NEZM2_2D0KRIN
;
		MEM16
;
;
NEZM2_2D0SH	EQU	$
		LDX	<ENINDX
		JSR	HOLE_SEARCH
		BMI	NEZM2_2D0SH0020		; 穴がない ? [yes->NEZM2_2D0SH0020]
;
		LDA	!ENXPSL,X
		SEC
		SBC	!ENXPSL,Y
		CLC
		ADC	#0002
		CMP	#0004
		BCC	NEZM2_2D0SH0100		; 穴の下 ? [yes->NEZM2_2D0SH0100]
;
NEZM2_2D0SH0020 EQU	$
		LDA	!ENTIM1,X
		BNE	NEZM2_2D0SH00F0		; pattern change ? [no->NEZM2_2D0SH00F0]
;
		M8				; memory 8bit mode !!
;
		DEC	<ENWRK1,X
		BPL	NEZM2_2D0SH0040		; Max Pattern ? [no->NEZM2_2D0SH0040]
;
		LDA	#NezumiWalkPtn
		STA	<ENWRK1,X
NEZM2_2D0SH0040 EQU	$
		LDY	<ENWRK1,X
		LDA	NEZMIWALKPT,Y
		STA	!ENCHPT,X
		LDA	#02
		STA	!ENTIM1,X
;
		M16				; memory 16bit mode !!
;
NEZM2_2D0SH00F0 EQU	$
		RTL
;
NEZM2_2D0SH0100 EQU	$
		LDA	!ENXPSL,Y
		STA	!ENXPSL,X
		STZ	!ENXSPD,X
		STZ	!ENGPOW,X
		STZ	!ENMUKI,X
;
		M8				; memory 8bit mode !!
;
		LDA	#017H
		STA	!ENCHPT,X
		LDA	#04
		STA	!ENTIM0,X
		LDA	#01
		STA	<ENWRK1,X
		INC	<ENWRK0,X
		INC	<ENWRK0,X
;
		M16				; meomry 16bit mode !!
;
		RTL
;
;
NEZM2_2D0U0	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	NEZM2_2D0U000F0		; pattern change ? [yes->NEZM2_2D0U000F0]
;
		JSR	HOLE_CRCK
;
		M8				; memory 8bit mode !!
;
		DEC	<ENWRK1,X
		BMI	NEZM2_2D0U00100		; Next Mode ? [yes->NEZM2_2D0U00100]
;
		LDA	#011H
		STA	!ENCHPT,X
		LDA	#04
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
NEZM2_2D0U000F0 EQU	$
		RTL
;
		MEM8
;
NEZM2_2D0U00100 EQU	$
		INC	<ENWRK0,X
		INC	<ENWRK0,X
		LDA	#007H
		STA	!ENCHPT,X
;
		M16				; memory 16bit mode !!
;
		LDA	#-nezumi2_yspeed
		STA	!ENYSPD,X
		LDA	!ENCBFG,X
		AND	#0FFFEH
		STA	!ENCBFG,X
		RTL
;
;
NEZM2_2D0U1	EQU	$
		LDX	<ENINDX
		JSR	HOLE_CRCK
;
		RTL
;
;
NEZM2_2D0ENPT	EQU	$
		HEX	13, 12, 09
NEZM2_2D0ENPTE	EQU	$
;
NEZM2_2D0ENPS	EQU	$
		HEX	00, 00, 08
;
NEZM2_2D0EN	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	NEZM2_2D0EN00F0		; pattern change ? [no->NEZM2_2D0EN00F0]
;
		M8				; memory 8bit mode !!
;
		DEC	<ENWRK1,X
		BMI	NEZM2_2D0EN0100		; Next Mode ? [yes->NEZM2_2D0EN0100]
;
		LDY	<ENWRK1,X
		LDA	NEZM2_2D0ENPT,Y
		STA	!ENCHPT,X
		LDA	#04
		STA	!ENTIM0,X
		LDA	NEZM2_2D0ENPS,Y
		STA	<EWORK
		STZ	<EWORK1
;
		M16				; memory 16bit mode !!
;
		LDY	<ENWRK4,X		; 穴のインデックスの読み込み !!
		LDA	!ENYPSL,Y
		CLC
		ADC	<EWORK
		STA	!ENYPSL,X
NEZM2_2D0EN00F0 EQU	$
		RTL
;
		MEM8
;
NEZM2_2D0EN0100 EQU	$
		INC	<ENWRK0,X
		INC	<ENWRK0,X
		LDA	<RANDM0
		AND	#00001H
		ASL	A
		TAY
;
		M16				; memory 16bit mode !!
;
		LDA	NEZM2_2D0WTPTAD,Y
		STA	!ENWRK6,X
		STA	<EWORK
		LDA	NEZM2_2D0WTTMAD,Y
		STA	!ENWRK8,X
		STA	<EWORK2
;
		JSL	>RANDAM
;
		M8				; memory 8bit mode !!
;
		LDA	NEZM2_2D0WTPTSU,Y
		STA	<ENWRK1,X
		TAY
		LDA	(<EWORK),Y
		STA	!ENCHPT,X
		LDA	<RANDM0
		AND	#00FH
		CLC
		ADC	#010H
		STA	!ENTIM0,X
		LDA	#-1
		STA	!ENYUSN,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
;
NEZM2_2D0WTPTSU EQU	$
		WORD	Nezumi2WaitPtn
		WORD	Nezumi2WaitPt2
;
NEZM2_2D0WTPTAD EQU	$
		WORD	NEZM2_2D0WTPT
		WORD	NEZM2_2D0WTP2
;
NEZM2_2D0WTTMAD EQU	$
		WORD	NEZM2_2D0WTTM
		WORD	NEZM2_2D0WTT2
;
NEZM2_2D0WTPT	EQU	$
		HEX	1E, 16, 1E, 16, 1E, 16, 1E, 16
;
NEZM2_2D0WTTM	EQU	$
		HEX	02, 40, 04, 10, 04, 20, 04, 00
;
NEZM2_2D0WTP2	EQU	$
		HEX	1E, 21, 22, 21, 1E, 1F, 20, 1F, 16, 16
;
NEZM2_2D0WTT2	EQU	$
		HEX	02, 02, 10, 02, 02, 02, 10, 02, 20, 00
;
NEZM2_2D0WT	EQU	$
		LDX	<ENINDX
		LDA	!ENWRK6,X
		STA	<EWORK
		LDA	!ENWRK8,X
		STA	<EWORK2
		LDA	!ENTIM0,X
		BNE	NEZM2_2D0WT00F0		; [->NEZM2_2D0WT00F0]
;
		M8				; memory 8bit mode !!
;
		LDA	#06
		STA	!ENYUSN,X
;
		DEC	<ENWRK1,X
		BPL	NEZM2_2D0WT0100		; [->NEZM2_2D0WT0100]
;
		LDA	#Nezumi2Dwn0Ptn
		STA	<ENWRK1,X
		TAY
		LDA	NEZM2_2D0D0PT,Y
		STA	!ENCHPT,X
		LDA	<RANDM0
		AND	#01FH
		CLC
		ADC	#020H
		STA	!ENTIM0,X
		STZ	<ENWRK0,X
;
		M16				; memory 16bit mode !!
;
		LDA	#00075H
		JSL	>SOUND_3_ON		; サウンド セット！！
;
NEZM2_2D0WT00F0 EQU	$
		RTL
;
		MEM8
;
NEZM2_2D0WT0100 EQU	$
		LDY	<ENWRK1,X
		LDA	(<EWORK),Y
		STA	!ENCHPT,X
		LDA	(<EWORK2),Y
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
;
HOLE_SEARCH	EQU	$
		LDA	#NZANA
		STA	R14
		TXA
		STA	R1
		M_CHIP	TARGET_SEARCH
;
		LDX	<ENINDX
		LDY	R1
		RTS
;
;
HOLE_CRCK	EQU	$
		JSR	HOLE_SEARCH
		BMI	HOLE_CRCK00F0		; 触れた？ [no->HOLE_CRCK00F0]
		BEQ	HOLE_CRCK00F0		; 触れた？ [no->HOLE_CRCK00F0]
;
		LDA	!EWIDEX,X
		CLC
		ADC	!EWIDEX,Y
		STA	<EWORK
		LDA	!ECENTX,X
		SEC
		SBC	!ECENTX,Y
		ABS16
		CMP	<EWORK
		BCS	HOLE_CRCK00F0		; 当たってない ？ [yes->HOLE_CRCK00F0]
;
		LDA	!EWIDEY,X
		CLC
		ADC	!EWIDEY,Y
		STA	<EWORK
		LDA	!ECENTY,X
		SEC
		SBC	!ECENTY,Y
		ABS16
		CMP	<EWORK
		BCS	HOLE_CRCK00F0		; 当たってない ？ [yes->HOLE_CRCK00F0]
;
		STZ	!ENYSPD,X
;
		M8				; memory 8bit mode !!
;
		LDA	#Nezumi2Entr
		STA	<ENWRK0,X
		LDA	#(NEZM2_2D0ENPTE-NEZM2_2D0ENPT-1)
		STA	<ENWRK1,X
		LDA	#04
		STA	!ENTIM0,X
		TYA
		STA	<ENWRK4,X
		LDA	#06
		STA	!ENYUSN,X
		LDA	!ENMOD0,X
		ORA	#01100000B
		STA	!ENMOD0,X		; 食べられない＆投げた敵に当たらないセット !!
;
		M16				; memory 16bit mode !!
;
		LDA	!ENMOD2,X
		AND	#1111111010101111B
		STA	!ENMOD2,X		; 照準合わないセット !!
HOLE_CRCK00F0	EQU	$
		RTS
;
;
NEZM2_PCRCK	EQU	$
		LDA	!ENMOD0,X
		AND	#0000000001000000B
		BNE	NEZM2_PCRCK00F0		; プレイヤーとの衝突？ [no->NEZM2_PCRCK00F0]
;
		LDY	!ECRSFG,X
		BPL	NEZM2_PCRCK00F0		; プレイヤーとの衝突？ [no->NEZM2_PCRCK00F0]
;
		LDA	!PLFLSH
		BNE	NEZM2_PCRCK00F0		; プレイヤーとの衝突？ [no->NEZM2_PCRCK00F0]
;
		JSL	>EPFOOTCROSS_01
		BCC	NEZM2_PCRCK0080		; 踏まれた？ [no->NEZM2_PCRCK0080]
;
		PLA				; pull pull return !!
		JSL	>EPCRCK
;
		RTL
;
NEZM2_PCRCK0080 EQU	$
		BEQ	NEZM2_PCRCK00F0		; プレイヤーとの衝突？ [no->NEZM2_PCRCK00F0]
		JSL	>PLFLST
;
NEZM2_PCRCK00F0 EQU	$
		RTS
;
;
NEZM2_EGGSH	EQU	$
		LDA	!ENGPOW,X
		CMP	#00040H
		BMI	NEZM2_EGGSH00F0		; [->NEZM2_EGGSH00F0]
;
		LDA	#EGG00
		STA	R14
		LDA	#EGG03+1
		STA	R11
		TXA
		STA	R10
		M_CHIP	EX_EGGSEARCH
;
		LDX	<ENINDX
		LDY	R1
		BPL	NEZM2_EGGSH0100		; 卵有？ [yes->NEZM2_EGGSH0100]
;
NEZM2_EGGSH00F0 EQU	$
		RTS
;
NEZM2_EGGSH0100 EQU	$
		LDA	#NEZMI
		TXY
		JSL	>ESTATST
;
		LDA	#EINIT
		STA	!ENMODE,X
;
		M8				; memory 8bit mode !!
;
		LDA	#01
		STA	!ENWRKA,X
;
		M16				; memory 16bit mode !!
;
		PLA				; pull pull return !!
		RTL
;
;
;------------------------------------------------------------------------
;-	initial (骸骨鼠)						-
;-		ENWRK2 : Fail Mode					-
;-		ENWRK4 : Shot Mode					-
;------------------------------------------------------------------------
SKLNZIN		EQU	$
		RTL
;
;
;------------------------------------------------------------------------
;-	move (骸骨鼠)							-
;------------------------------------------------------------------------
SKLNZXSPD	EQU	$
		WORD	-0180H, 00180H
;
SKLNZMUKI	EQU	$
		WORD	00000H, 00000H, 00002H, 00000H
;
SKLNZMV0300	EQU	$
		LDA	!ENSTFG
		ORA	!BIRIBIRI
		ORA	ITEMNO
		BNE	SKLNZMV0330		; ポーズ？ [yes->SKLNZMV0330]
;
		LDA	!ENCBFG,X
		BIT	#0000000000001100B
		BNE	SKLNZMV0380		; 横当たり？ [yes->SKLNZMV0380]
;
		BIT	#0000000000000010B
		BNE	SKLNZMV03A0		; 頭当たり？ [yes->SKLNZMV03A0]
;
		BIT	#0000000000000001B
		BEQ	SKLNZMV0330		; 着地？ [no->SKLNZMV0330]
;
		LDA	#0001FH
		JSL	>SOUND_3_ON		; サウンド セット !!
;
		JSL	>XSDOWN
;
		LDA	<ENWRK4,X
		CMP	#0003
		BCC	SKLNZMV0310		; Shot Mode End？ [no->SKLNZMV0310]
;
		LDA	!ENXSPD,X
		BNE	SKLNZMV0320		; [->SKLNZMV0320]
;
		JMP	>ENRETURN
;
SKLNZMV0310	EQU	$
		INC	<ENWRK4,X
SKLNZMV0320	EQU	$
		LDA	#0FE00H
		STA	!ENYSPD,X
SKLNZMV0330	EQU	$
		RTL
;
SKLNZMV0380	EQU	$
		LSR	A
		AND	#00006H
		TAY
		LDA	SKLNZMUKI,Y
		STA	!ENMUKI,X
SKLNZMV03A0	EQU	$
;[1995.05.25.TH]		LDA	#EFAIL
;[1995.05.25.TH]		STA	!ENMODE,X
		STZ	!ENXSPD,X
;
		M8				; memory 8bit mode !!
;
		LDA	#SklFailMD
		STA	!ENWRK6,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
SKLNZMV		EQU	$
		LDY	!ENWRK6,X
		TYX
		JMP	(SKLNZMVMOD,X)
;
SKLNZMVMOD	EQU	$
		WORD	SKLNZMOVE
SklFail		WORD	SKLNZFAIL
;
SklFailMD	EQU	(SklFail-SKLNZMVMOD)
;
;
SKLNZMOVE	EQU	$
		LDX	<ENINDX
		LDA	!ENSHOT,X
		BNE	SKLNZMV0300		; ショットされた ? [yes->SKLNZMV0300]
;
		JSL	>ENMDCK			; mode check
;
		JSL	>PLCRSCK
		BCC	SKLNZMV0040		; 踏まれた？ [no->SKLNZMV0040]
;
		JSL	>PLAYER_REBOUND
;
		M8				; memory 8bit mode !!
;
		LDA	#SklFailMD
		STA	!ENWRK6,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
SKLNZMV0040	EQU	$
		JSL	>EPCRCK
;
		JSR	SKLNZCRCK
;
		LDA	<ENWRK0,X
		BNE	SKLNZMV0200		; [->SKLNZMV0200]
;
		LDA	!ENCBFG,X
		BIT	#0000000000000001B
		BNE	SKLNZMV0100		; [->SKLNZMV0100]
;
		LDY	#02
		LDA	!ENYSPD,X
		CLC
		ADC	#00040H
		CMP	#00080H
		BCC	SKLNZMV0080		; [->SKLNZMV0080]
;
		LDY	#01
		LDA	!ENYSPD,X
		BMI	SKLNZMV0080		; [->SKLNZMV0080]
;
		LDY	#03
SKLNZMV0080	EQU	$
		TYA
		STA	!ENCHPT,X
		RTL
;
SKLNZMV0100	EQU	$
		STZ	!ENXSPD,X
		LDA	#0004
		STA	!ENCHPT,X
		LDA	#02
		STA	!ENTIM0,X
		INC	<ENWRK0,X
		RTL
;
SKLNZMV0200	EQU	$
		LDA	!ENTIM0,X
		BNE	SKLNZMV0220		; [->SKLNZMV0220]
;
		LDA	!ENCHPT,X
		BNE	SKLNZMV0240		; [->SKLNZMV0240]
;
		LDA	#00075H
		JSL	>SOUND_3_ON		; サウンド セット！！
;
		STZ	<ENWRK0,X
		LDA	#0FD00H
		STA	!ENYSPD,X
		LDY	!ENMUKI,X
		LDA	SKLNZXSPD,Y
		STA	!ENXSPD,X
SKLNZMV0220	EQU	$
		RTL
;
SKLNZMV0240	EQU	$
		STZ	!ENCHPT,X
		LDA	#0004
		STA	!ENTIM0,X
		RTL
;
;
SKLNZCRXSPD	EQU	$
		WORD	-0100H, 00100H
;
SKLNZCRCK	EQU	$
		LDY	!ECRSFG,X
		DEY
		BMI	SKLNZCRCK00F0		; 当たった？ [no->SKLNZCRCK00F0]
		BEQ	SKLNZCRCK00F0		; 赤ちゃんと当たった？ [yes->SKLNZCRCK00F0]
;
		LDA	!ENMODE,Y
		CMP	#EMOVE
		BNE	SKLNZCRCK00F0		; Mode Move ? [no->SKLNZCRCK00F0]
;
		LDA	!ENSHOT,Y
		BEQ	SKLNZCRCK00F0		; ショット？ [no->SKLNZCRCK00F0]
;
		LDX	#00
		LDA	!ENXSPD,Y
		BMI	SKLNZCRCK0040		; [->SKLNZCRCK0040]
;
		INX
		INX
SKLNZCRCK0040	EQU	$
		LDA	SKLNZCRXSPD,X
		LDX	<ENINDX
		STA	!ENXSPD,X
;[1995.05.25.TH]		LDA	#EFAIL
;[1995.05.25.TH]		STA	!ENMODE,X
;
		M8				; memory 8bit mode !!
;
		LDA	#SklFailMD
		STA	!ENWRK6,X
;
		M16				; memory 16bit mode !!
;
		TYX
		JSL	>SHOT_EN_KILL
;
		LDX	<ENINDX
		PLA
		RTL
;
SKLNZCRCK00F0	EQU	$
		RTS
;
;
;------------------------------------------------------------------------
;-	fail (骸骨鼠)							-
;------------------------------------------------------------------------
SKLNZFLPT	EQU	$
		HEX	00, 05, 06, 07, 06, 07, 06, 07
		HEX	06, 07, 06
;
SKLNZFLTM	EQU	$
		HEX	02, 02, 32, 02, 02, 02, 02, 02
		HEX	02, 02, 32
;
SKLNZFAIL	EQU	$
		LDX	<ENINDX
		LDA	!ENMODE,X
		CMP	#EEATM
		BNE	SKLNZFAIL0040		; 食べられた？ [no->SKLNZFAIL0040]
;
		LDA	#NEZMI
		TXY
		JSL	>ESTATST
;
		M8				; memory 8bit mode !!
;
		LDA	#01
		STA	!ENWRKA,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
SKLNZFAIL0040	EQU	$
		STZ	!ENSHOT,X
		JSL	>ENMDCK			; mode check
;
SKLNZFAIL0080	EQU	$
SKLNZFL		EQU	$
		JSL	>PLCRSCK
		BCC	SKLNZFL0010		; 踏まれた？ [no->SKLNZFL0010]
;
		JSL	>PLAYER_REBOUND
;
		LDA	#0001CH
		JSL	>SOUND_3_ON		; サウンド セット !!
;
		JSL	>DEATHENEMY
;
		M8				; memory 8bit mode !!
;
		LDA	#0FFH
		STA	!ENRETN,X
;
		M16				; memory 16bit mode !!
;
		JMP	>ENCLEAR
;
;[1995.05.08.MO]		TXY
;[1995.05.08.MO]		LDA	#EGG03
;[1995.05.08.MO]		JSL	>ESTATST
;[1995.05.08.MO];
;[1995.05.08.MO]		LDA	#EINIT
;[1995.05.08.MO]		STA	!ENMODE,X
;[1995.05.08.MO]		RTL
;
SKLNZFL0010	EQU	$
		LDA	!ENCBFG,X
		BIT	#0000000000000001B
		BEQ	SKLNZFL0020		; [->SKLNZFL0020]
;
		STZ	!ENXSPD,X
SKLNZFL0020	EQU	$
		LDA	!ENTIM1,X
		BNE	SKLNZFL00F0		; [->SKLNZFL00F0]
;
		LDA	<ENWRK2,X
		CMP	#0001
		BNE	SKLNZFL0040		; [->SKLNZFL0040]
;
		LDA	#BONE1
		JSL	>BONE_CRUSH3
;
SKLNZFL0040	EQU	$
;
		M8				; memory 8bit mode !!
;
		LDA	<ENWRK2,X
		CMP	#(SKLNZFLTM-SKLNZFLPT)
		BCS	SKLNZFL0100		; [->SKLNZFL0100]
;
		TAY
		LDA	SKLNZFLTM,Y
		STA	!ENTIM1,X
		LDA	SKLNZFLPT,Y
		STA	!ENCHPT,X
		INC	<ENWRK2,X
SKLNZFL00E0	EQU	$
;
		M16				; memory 16bit mode !!
;
SKLNZFL00F0	EQU	$
		RTL
;
		MEM8
;
SKLNZFL0100	EQU	$
;
		M16				; memory 16bit mode !!
;
		LDA	#NEZMI
		TXY
		JSL	>ESTATST
;
		LDA	#EINIT
		STA	!ENMODE,X
;
		M8				; memory 8bit mode !!
;
		LDA	#01
		STA	!ENWRKA,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
;
;------------------------------------------------------------------------
;-	initial (タイムくん)						-
;------------------------------------------------------------------------
TIMEKUNXSPD	EQU	$
		WORD	-0080H, 00080H
;
FLUSHDATA	EQU	$
		HEX	1, 1, 1, 1, 2, 2, 2, 2, 4, 4, 4, 4, 4, 0, 0, 0
		HEX	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
		HEX	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
		HEX	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
;
TIMKNIN		EQU	$
		LDA	#sec10
		STA	!ENTIM0,X
TIMKNIN00F0	EQU	$
		RTL
;
;
;------------------------------------------------------------------------
;-	move (タイムくん)						-
;------------------------------------------------------------------------
TIMKNMV		EQU	$
		LDA	!ENSTFG
		ORA	!BIRIBIRI
		ORA	!ITEMNO
		BNE	TIMKNIN00F0		; 敵停止中？ [yes->TIMKNIN00F0]
;
;[1995.06.21.WE]	JSL	>ENMDCK			; mode check
;[1995.06.21.WE];
TIMKNCRCK	EQU	$		; 衝突チェック！！
		LDA	!ENTIM2,X
		BNE	TIMKNCRCK00F0		; [->TIMKNCRCK00F0]
;
		LDY	!ECRSFG,X
		BPL	TIMKNCRCK00F0		; プレイヤーと当たった ? [no->TIMKNCRCK00F0]
;
TIMKNCRCK0080	EQU	$
;
;[1995.06.27.TU]		LDA	#00036H
;[1995.06.27.TU]		JSL	>SOUND_3_ON		; サウンド セット !!
;[1995.06.27.TU];
		LDA	#KACHB
		JSR	>EXINSR
;
		LDA	!ENXPSL,X
		CLC
		ADC	#0008
		STA	!EXXPSL,Y
		LDA	!ENYPSL,X
		CLC
		ADC	#0008
		STA	!EXYPSL,Y
		LDA	#0004
		STA	!EXCHPT,Y
		LDA	#0002
		STA	!EXTIM0,Y
;
		LDA	!ENXPSL,X
		STA	!WORK0
		LDA	!ENYPSL,X
		STA	!WORK2
		LDA	#3
		STA	!WORK4
		JSL	>SCORE_SET
;
		LDA	!TIMCNT_UP
		CLC
		ADC	#0010
		STA	!TIMCNT_UP
		LDA	#60*2+0010	;強制ＯＢＪタイマー表示！！
		STA	OBJ_TIMER_DISP
;
		JMP	>ENCLEAR_NORETN
;
TIMKNCRCK00F0	EQU	$
TIMKNFLUSH	EQU	$		; フラッシング＆消滅チェック！！
		LDA	!ENTIM0,X
		BNE	TIMKNFLUSH0010		; [->TIMKNFLUSH0010]
;
		JMP	>ENCLEAR
;
TIMKNFLUSH0010	EQU	$
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		TAY
;
		M8				; memory 8bit mode !!
;
		LDX	#005H
		LDA	<FRCNT2
		AND	FLUSHDATA,Y
		BEQ	TIMKNFLUSH0020		; [->TIMKNFLUSH0020]
;
		LDX	#0FFH
TIMKNFLUSH0020	EQU	$
		TXA
		LDX	<ENINDX
		STA	!ENYUSN,X
;
		M16				; memory 16bit mode !!
;
;[1995.06.16.FR]TIMKNFLUSH0020	EQU	$
;[1995.06.16.FR]		CMP	#sec03
;[1995.06.16.FR]		BCS	TIMKNFLUSH00F0		; フラッシング ? [no->TIMKNFLUSH00F0]
;[1995.06.16.FR];
;[1995.06.16.FR]		LDA	!ENYUSN,X
;[1995.06.16.FR]		BPL	TIMKNFLUSH0040		; 消えてる ? [no->TIMKNFLUSH0040]
;[1995.06.16.FR];
;[1995.06.16.FR]		LDA	#0005
;[1995.06.16.FR]		STA	!ENYUSN,X
;[1995.06.16.FR]		BRA	TIMKNFLUSH00F0
;[1995.06.16.FR];
;[1995.06.16.FR]TIMKNFLUSH0040	EQU	$
;[1995.06.16.FR]		LDA	<ENWRK2,X
;[1995.06.16.FR]		CLC
;[1995.06.16.FR]		ADC	<ENWRK4,X
;[1995.06.16.FR]		STA	<ENWRK2,X
;[1995.06.16.FR]		BIT	#0FF00H
;[1995.06.16.FR]		BEQ	TIMKNFLUSH0060		; [->TIMKNFLUSH0060]
;[1995.06.16.FR];
;[1995.06.16.FR]		AND	#000FFH
;[1995.06.16.FR]		STA	<ENWRK2,X
;[1995.06.16.FR]		LDA	#-1
;[1995.06.16.FR]		STA	!ENYUSN,X
;[1995.06.16.FR];
;[1995.06.16.FR]TIMKNFLUSH0060	EQU	$
;[1995.06.16.FR]		LDA	<ENWRK4,X
;[1995.06.16.FR]		CLC
;[1995.06.16.FR]		ADC	#00004H
;[1995.06.16.FR]		CMP	#00100H
;[1995.06.16.FR]		BMI	TIMKNFLUSH00C0		; [->TIMKNFLUSH00C0]
;[1995.06.16.FR];
;[1995.06.16.FR]		LDA	#00100H
;[1995.06.16.FR]TIMKNFLUSH00C0	EQU	$
;[1995.06.16.FR]		STA	<ENWRK4,X
;[1995.06.16.FR]TIMKNFLUSH00F0	EQU	$
;
		LDA	<ENWRK0,X
		BNE	TIMKNMV0200		; [->TIMKNMV0200]
;
		LDA	!ENCBFG,X
		AND	#0000000000000001B
		BNE	TIMKNMV0100		; 着地 ? [yes->TIMKNMV0100]
;
		LDY	#02
		LDA	!ENYSPD,X
		CLC
		ADC	#00080H
		CMP	#00100H
		BCC	TIMKNMV0080		; [->TIMKNMV0080]
;
		LDY	#01
		LDA	!ENYSPD,X
		BMI	TIMKNMV0080		; [->TIMKNMV0080]
;
		LDY	#03
		CMP	#00100H
		BCC	TIMKNMV0080		; [->TIMKNMV0080]
;
		LDY	#04
		CMP	#00180H
		BCC	TIMKNMV0080		; [->TIMKNMV0080]
;
		LDY	#05
TIMKNMV0080	EQU	$
		TYA
		STA	!ENCHPT,X
		RTL
;
TIMKNMV0100	EQU	$
		STZ	!ENCHPT,X
		STZ	!ENXSPD,X
		LDA	#0002
		STA	!ENTIM1,X
		INC	<ENWRK0,X
		RTL
;
TIMKNMV0200	EQU	$
		LDA	!ENTIM1,X
		BNE	TIMKNMV02F0		; ジャンプ ? [no->TIMKNMV02F0]
;
		LDY	!ENWRK6,X
		BNE	TIMKNMV0220		; [->TIMKNMV0220]
;
		LDY	!EPXMUK,X
		TYA
		EOR	#00002H
		STA	!ENMUKI,X
		INC	!ENWRK6,X
TIMKNMV0220	EQU	$
		LDY	!ENMUKI,X
		LDA	TIMEKUNXSPD,Y
		STA	!ENXSPD,X
		LDA	#0FE00H
		STA	!ENYSPD,X
		STZ	<ENWRK0,X
TIMKNMV02F0	EQU	$
		RTL
;
;
;------------------------------------------------------------------------
;-	initial (骨魚)							-
;------------------------------------------------------------------------
bonefisharea	EQU	00040H
;
BFISHXSPD	EQU	$
		WORD	-0100H, 00100H
;
BFISHCENTX	EQU	$
		WORD	0FFE8H, 00018H
;
BFISHIN		EQU	$
		JSL	>TROBJ_SR_4x4_CL
;
		JSR	BFISHCHRST
;
		LDA	!ENXPSL,X
		AND	#00010H
		LSR	A
		LSR	A
		LSR	A
		EOR	#00002H
		STA	!ENMUKI,X
		TAY
		LDA	!ENXPSL,X
		CLC
		ADC	BFISHCENTX,Y
		STA	!ENWRK6,X		; 中心Ｘポジションセット！！
		LDA	#03000H
		STA	<ENCONT,X
;
		LDY	!BG1TYP
		CPY	#03
		BNE	BFISHIN0100		; 溶岩コース ? [no->BFISHIN0100]
;
BFISHIN00C0	EQU	$
		LDA	!ENYPSL,X
		SEC
		SBC	#0004
		STA	!ENYPSL,X
		STA	!ENWRK8,X
		RTL
;
BFISHIN0100	EQU	$
		LDA	!ENXPSL,X
		STA	R8
		LDA	!ENYPSL,X
		CLC
		ADC	#00008H
		STA	R0
		M_CHIPR M_BGUNIT_READ
		LDX	<ENINDX
;
		LDA	R6
		AND	#0FF00H
		CMP	#UT7E00
		BEQ	BFISHIN00C0		; 溶岩？ [yes->BFISHIN00C0]
;
		LDA	!ENYPSL,X
		STA	!ENWRK8,X
		RTL
;
BFISHIN01C0	EQU	$
		LDA	!ENYPSL,X
		SEC
		SBC	#0008
		STA	!ENYPSL,X
		STA	!ENWRK8,X
		RTL
;
;
;------------------------------------------------------------------------
;-	move (骨魚)							-
;------------------------------------------------------------------------
BFISHMV		EQU	$
		JSL	>TROBJ_OAM_4x4
;
		JSL	>ENMDCK			; mode check
;
		M8				; memory 8bit mode !!
;
		LDA	#0FFH
		STA	!ENWTSP,X
;
		M16				; memory 16bit mode !!
;
		JSR	BFISHCHRST
;
		JSR	BFISHCRCK
;
;[1995.05.08.MO]		JSL	>EPCRCK
;[1995.05.08.MO];
		LDY	<ENWRK0,X
		TYX
		JMP	(BFISHMVMODSEL,X)
;
BFISHMVMODSEL	EQU	$
		WORD	BFISHWAIT
		WORD	BFISHJUMP
		WORD	BFISHWIT2
		WORD	BFISHSUFC
;
;
BFISHWAIT	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	BFISHWAIT00F0		; [->BFISHWAIT00F0]
;
;[1995.06.03.SA]		LDA	!ECENTX,X
;[1995.06.03.SA]		SEC
;[1995.06.03.SA]		SBC	!PCENTX
;[1995.06.03.SA]		CLC
;[1995.06.03.SA]		ADC	#bonefisharea
;[1995.06.03.SA]		CMP	#bonefisharea*2
;[1995.06.03.SA]		BCS	BFISHWAIT00F0		; 範囲外？ [yes->BFISHWAIT00F0]
;[1995.06.03.SA];
		LDA	#0FA00H
		STA	!ENYSPD,X
		LDY	!ENMUKI,X
		LDA	BFISHXSPD,Y
		STA	!ENXSPD,X
;
		M8				; memory 8bit mode !!
;
		LDA	#040H
		STA	!ENGPOW,X
		INC	<ENWRK0,X
		INC	<ENWRK0,X
;
		M16				; memory 16bit mode !!
;
BFISHWAIT00F0	EQU	$
		RTL
;
;
BFISHJUMP	EQU	$
		LDX	<ENINDX
		JSR	BFISHBGCK
;
		JSR	BFISHXPSCHK		; Ｘポジションチェック！！
;
		LDA	!ENWRK8,X
		CLC
		ADC	#00010H
		CMP	!ENYPSL,X
		BCS	BFISHJUMP0040		; [->BFISHJUMP0040]
;
		STA	!ENYPSL,X
;
		LDY	!ENMUKI,X
		LDA	!ENWRK6,X
		CLC
		ADC	BFISHCENTX,Y
		STA	!ENXPSL,X
		LDA	!ENMUKI,X
		EOR	#00002H
		STA	!ENMUKI,X
		LDA	#03000H
		STA	<ENCONT,X
		STZ	!ENYSPD,X
		STZ	!ENXSPD,X
		STZ	!ENGPOW,X
;[1995.06.03.SA]		LDA	!ENWRK6,X
;[1995.06.03.SA]		STA	!ENXPSL,X
;
		M8				; memory 8bit mode !!
;
		LDA	#020H
		STA	!ENTIM0,X
		INC	<ENWRK0,X
		INC	<ENWRK0,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
BFISHJUMP0040	EQU	$
		LDA	<ENCONT,X
		SEC
		SBC	#00200H
		CMP	#-3000H
		BPL	BFISHJUMP0080		; [->BFISHJUMP0080]
;
		LDA	#-3000H
BFISHJUMP0080	EQU	$
		STA	<ENCONT,X
		RTL
;
;
BFISHWIT2	EQU	$
		LDX	<ENINDX
;[1995.06.03.SA]		LDA	!EPXMUK,X
;[1995.06.03.SA]		AND	#000FFH
;[1995.06.03.SA]		STA	!ENMUKI,X
		LDA	!ENTIM0,X
		BNE	BFISHWIT200F0		; [->BFISHWIT200F0]
;
		LDA	#0FF00H
		STA	!ENYSPD,X
;
		M8				; memory 8bit mode !!
;
		INC	<ENWRK0,X
		INC	<ENWRK0,X
;
		M16				; memory 16bit mode !!
;
BFISHWIT200F0	EQU	$
		RTL
;
;
BFISHSUFC	EQU	$
		LDX	<ENINDX
		LDA	!ENWRK8,X
		CMP	!ENYPSL,X
		BCC	BFISHSUFC00F0		; [->BFISHSUFC00F0]
;
		STA	!ENYPSL,X
		STZ	!ENYSPD,X
;
		M8				; memory 8bit mode !!
;
		LDA	#020H
		STA	!ENTIM0,X
		STZ	<ENWRK0,X
;
		M16				; memory 16bit mode !!
;
BFISHSUFC00F0	EQU	$
		RTL
;
;
BFISHXPSCHK	EQU	$
		LDY	!ENMUKI,X
		BNE	BFISHXPSCHK0080		; 右向き？ [yes->BFISHXPSCHK0080]
;
		LDA	!ENWRK6,X
		CLC
		ADC	BFISHCENTX,Y
		CMP	!ENXPSL,X
		BPL	BFISHXPSCHK0090		; ポジションオーバー？ [yes->BFISHXPSCHK0090]
;
BFISHXPSCHK0070 EQU	$
		CLC
		RTS
;
BFISHXPSCHK0080 EQU	$
		LDA	!ENWRK6,X
		CLC
		ADC	BFISHCENTX,Y
		CMP	!ENXPSL,X
		BPL	BFISHXPSCHK0070		; ポジションオーバー？ [no->BFISHXPSCHK0070]
;
BFISHXPSCHK0090 EQU	$
		STA	!ENXPSL,X
		STZ	!ENXSPD,X
		SEC
		RTS
;
;
BFISHCHRST	EQU	$
;
		I16				; index 16bit mode !!
;
		LDA	<ENCONT,X
		EOR	#0FFFFH
		INC	A
		XBA
		AND	#000FFH
		STA	R5			; (R5) <- 回転角度
		LDY	!ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_X,X
		STA	R3			; (R3) <- ビットマップＸ座標
		LDA	>TROBJ_PLOT_Y,X
		STA	R2			; (R2) <- ビットマップＹ座標
		LDA	#00100H
		STA	R6			; (R6) <- 倍率
		LDA	#CIPCHD3+40E0H+1
		STA	R12			; (R12) <- キャラクタアドレス
		LDA	#BANK CIPCHD3+40E0H+1
		STA	R13			; (R13) <- キャラクタバンク
;
		I8				; index 8bit mode !!
;
		M_CHIP	C_32_ROTZOM
;
		INC	OBM7WF			; mode 7 OBJ chara DMA "ON"
;
		LDX	<ENINDX
BFISHCHRST00F0	EQU	$
		RTS
;
;
BFISHBGCK	EQU	$
;
		I16				; index 16bit mode !!
;
		LDA	!ENWRKC,X
		LDY	!ENYSPD,X
		BPL	BFISHBGCK0100		; [->BFISHBGCK0100]
;
		TXY
		TAX
		LDA	>ENBGCK_TYPE_H,X
		AND	#1111100000000000B
		CMP	#ET
		BEQ	BFISHBGCK00C0		; 食べれるＢＧ？ [yes->BFISHBGCK00C0]
;
BFISHBGCK0080	EQU	$
		LDA	!ENWRK4,Y
		BMI	BFISHBGCK0088		; [->BFISHBGCK0088]
;
		LDA	>ENBGCK_TYPE_H,X
;
		BIT	#WT
		BEQ	BFISHBGCK01B0		; 水？ [no->BFISHBGCK01B0]
;
BFISHBGCK0088	EQU	$
;
		I8
;
		LDX	<ENINDX
		RTS
;
		IDX16
;
BFISHBGCK00C0	EQU	$
		LDA	>ENBGCK_X_H,X
		STA	<EWORK
		STA	!BGXPS1
		LDA	>ENBGCK_Y_H,X
		STA	<EWORK2
		STA	!BGYPS1
		BRA	BFISHBGCK0180
;
BFISHBGCK0100	EQU	$
		TXY
		TAX
		LDA	>ENBGCK_TYPE_F,X
		AND	#1111100000000000B
		CMP	#ET
		BNE	BFISHBGCK01A0		; 食べれるＢＧ？ [no->BFISHBGCK01A0]
;
		LDA	>ENBGCK_X_F,X
		STA	<EWORK
		STA	!BGXPS1
		LDA	>ENBGCK_Y_F,X
		STA	<EWORK2
		STA	!BGYPS1
BFISHBGCK0180	EQU	$
;
		I8				; index 8bit mode !!
;
		LDA	#BLK0
		STA	!BGCGNO
		JSL	>UNITCHG
;
		LDX	<ENINDX
		LDA	#BRBG0
		JSL	>EXINSR
;
		LDA	<EWORK
		AND	#0FFF0H
		STA	!EXXPSL,Y
		LDA	<EWORK2
		AND	#0FFF0H
		STA	!EXYPSL,Y
		LDA	#0000AH
		STA	!EXCHPT,Y
		LDA	#0002
		STA	!EXTIM0,Y
;
		LDA	#0000AH
		JSL	>SOUND_3_ON		; サウンド セット !!
;
		RTS
;
		IDX16
;
BFISHBGCK01A0	EQU	$
		LDA	!ENWRK4,Y
		BPL	BFISHBGCK01C0
;
BFISHBGCK01B0	EQU	$
		LDA	>ENBGCK_TYPE_F,X
;
		I8				; index 8bit mode !!
;
		LDX	<ENINDX
;
		BIT	#WT
		BEQ	BFISHBGCK01F0		; 水？ [no->BFISHBGCK01F0]
;
		AND	#MG
		BNE	BFISHBGCK0200		; 溶岩？ [yes->BFISHBGCK0200]
;
		BRA	BFISHBGCK0300
;
BFISHBGCK01C0	EQU	$
;
		I8				; index 8bit mode !!
;
		LDX	<ENINDX
BFISHBGCK01F0	EQU	$
		RTS
;
BFISHBGCK0200	EQU	$
		LDA	!ENYSPD,X
		STA	<ENWRK4,X
;
		LDA	#0005FH
		JSL	>SOUND_3_ON		; サウンド セット !!
;
		LDA	#YGUP0
		JSL	>EXINSR
;
		LDA	!ENXPSL,X
		STA	!EXXPSL,Y
		LDA	!ENYPSL,X
		CLC
		ADC	#0008
		STA	!EXYPSL,Y
		LDA	#0FF40H
		STA	!EXYSPD,Y
		LDA	#08H
		STA	!EXGPOW,Y
		LDA	#0200H
		STA	!EXGMAX,Y
		LDA	#4*12
		STA	!EXTIM0,Y
		RTS
;
BFISHBGCK0300	EQU	$
		LDA	!ENYSPD,X
		STA	<ENWRK4,X
;
		LDA	#0005FH
		JSL	>SOUND_3_ON		; サウンド セット !!
;
		LDA	#WTUP0
		JSL	>EXINSR
;
		LDA	!ENXPSL,X
		STA	!EXXPSL,Y
		LDA	!ENYPSL,X
		STA	!EXYPSL,Y
		LDA	#WUP0P
		STA	!EXWRK0,Y
		LDA	#0003
		STA	!EXTIM0,Y
		RTS
;
;
BFISHCRCK	EQU	$
		LDY	!ECRSFG,X
		BPL	BFISHCRCK0100		; プレイヤーと当たった？ [no->BFISHCRCK0100]
;
		JSL	>PLFLST			; プレイヤーダメージ！！
;
BFISHCRCK0100	EQU	$
		RTS
;
;
;------------------------------------------------------------------------
;-	initial (溶岩鉄砲魚)						-
;------------------------------------------------------------------------
ygfsh_sufg	EQU	(ygsufg-YGFSHMVMODSEL)
ygfsh_jet0	EQU	(ygjet0-YGFSHMVMODSEL)
ygfsh_jet1	EQU	(ygjet1-YGFSHMVMODSEL)
ygfsh_stop	EQU	(ygstop-YGFSHMVMODSEL)
ygfsh_pchi	EQU	(ygpchi-YGFSHMVMODSEL)
ygfsh_down	EQU	(ygdown-YGFSHMVMODSEL)
ygfsh_fall	EQU	(ygfall-YGFSHMVMODSEL)
ygfsh_revv	EQU	(ygrevv-YGFSHMVMODSEL)
;
ygfshkyoroptn	EQU	(YGFSHKYORTM-YGFSHKYORPT-1)
ygfshjet00ptn	EQU	(YGFSHJET0TM-YGFSHJET0PT-1)
ygfshpachiptn	EQU	(YGFSHPACITM-YGFSHPACIPT-1)
;
ygjetsarea	EQU	00080H
ygjetcarea	EQU	000A0H
;
YGFSHIN		EQU	$
		LDA	!ENYPSL,X
		SEC
		SBC	#0004
		LDY	!BG1TYP
		CPY	#03
		BNE	YGFSHIN0080		; 溶岩コース ? [no->YGFSHIN0080]
;
		SEC
		SBC	#0004
YGFSHIN0080	EQU	$
		STA	!ENYPSL,X
		STA	!ENWRK8,X
YGFSHIN00A0	EQU	$
;
		M8				; memory 8bit mode !!
;
		LDA	#ygfshkyoroptn
		STA	<ENWRK0,X
		TAY
		LDA	YGFSHKYORPT,Y
		STA	!ENCHPT,X
		LDA	YGFSHKYORTM,Y
		STA	!ENTIM0,X
		STZ	<ENWRK2,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
;
;------------------------------------------------------------------------
;-	move (溶岩鉄砲魚)						-
;------------------------------------------------------------------------
YGFSHC		EQU	$
		BYTE	008H,0FCH	;[00]
		HEX	0D,02,00
		BYTE	001H,0FCH
		HEX	0D,02,00
		BYTE	008H,000H
		HEX	06,02,02
		BYTE	0F8H,000H
		HEX	00,02,02
;
		BYTE	008H,0FCH	;[01]
		HEX	0C,02,00
		BYTE	001H,0FCH
		HEX	0C,02,00
		BYTE	008H,000H
		HEX	06,02,02
		BYTE	0F8H,000H
		HEX	00,02,02
;
		BYTE	008H,0FCH	;[02]
		HEX	0C,42,00
		BYTE	001H,0FCH
		HEX	0C,42,00
		BYTE	008H,000H
		HEX	06,02,02
		BYTE	0F8H,000H
		HEX	00,02,02
;
		BYTE	008H,0FCH	;[03]
		HEX	0D,42,00
		BYTE	001H,0FCH
		HEX	0D,42,00
		BYTE	008H,000H
		HEX	06,02,02
		BYTE	0F8H,000H
		HEX	00,02,02
;
		BYTE	008H,0FCH	;[04]
		HEX	1C,42,00
		BYTE	001H,0FCH
		HEX	1C,42,00
		BYTE	008H,000H
		HEX	06,02,02
		BYTE	0F8H,000H
		HEX	00,02,02
;
		BYTE	0F9H,000H	;[05]
		HEX	02,02,02
		BYTE	009H,000H
		HEX	06,02,02
		BYTE	009H,0FCH
		HEX	0D,02,00
		BYTE	002H,0FCH
		HEX	0D,02,00
;
		BYTE	00AH,000H	;[06]
		HEX	0A,02,02
		BYTE	0FAH,001H
		HEX	02,02,02
		BYTE	00AH,0FCH
		HEX	0C,02,00
		BYTE	003H,0FCH
		HEX	0C,02,00
;
		BYTE	0F7H,000H	;[07]
		HEX	04,02,02
		BYTE	000H,0FCH
		HEX	1C,42,00
		BYTE	007H,0FCH
		HEX	1C,02,00
		BYTE	007H,000H
		HEX	06,02,02
;
;
YGFSHPOS	EQU	$
		WORD	0FFF0H+2, 0FFFBH+3		;[01]
		WORD	0FFEAH+2, 0FFF5H+3		;[02]
		WORD	0FFE4H+2, 0FFEFH+3		;[03]
		WORD	0FFDEH+2, 0FFE9H+3		;[04]
		WORD	0FFD8H+2, 0FFE3H+3		;[05]
		WORD	0FFD2H+2, 0FFDDH+3		;[06]
		WORD	0FFCCH+2, 0FFD7H+3		;[07]
		WORD	0FFC6H+2, 0FFD1H+3		;[08]
		WORD	0FFC0H+2, 0FFCBH+3		;[09]
		WORD	0FFBAH+2, 0FFC5H+3		;[0A]
		WORD	0FFB4H+2, 0FFBFH+3		;[0B]
		WORD	0FFAEH+2, 0FFB9H+3		;[0C]
		WORD	0FFA8H+2, 0FFB3H+3		;[0D]
		WORD	0FFA2H+2, 0FFADH+3		;[0E]
		WORD	0FF9CH+2, 0FFA7H+3		;[0F]
		WORD	0FF96H+2, 0FFA1H+3		;[10]
		WORD	0FF90H+2, 0FF9BH+3		;[11]
		WORD	0FF8AH+2, 0FF95H+3		;[12]
;
YGFSHMV		EQU	$
		LDY	!ENYUSN,X
		BMI	YGFSHMV0040		; 表示？ [no->YGFSHMV0040]
;
		LDA	#BANK YGFSHC
		STA	R0			; データバンク
		LDA	#YGFSHC
		STA	R5			; データアドレス
		LDA	!ENCHPT,X
		STA	R1			; キャラクタパターン
		LDA	<ENCONT,X
		STA	R2			; 水の長さ
		LDA	#YGFSHPOS
		STA	R3			; 水のデータアドレス
		LDA	#BANK YGFSHPOS
		STA	R4			; 水のデータバンク
		LDA	#0004
		STA	!CCWORK5		; And Data
		LDA	#0004
		STA	!CCWORK6		;  *  Data
		LDA	#0000001000001111B
		STA	!CCWORK7
		M_CHIP	EX_OAM_GANFISH
;
		LDX	<ENINDX
YGFSHMV0040	EQU	$
		JSL	>ENMDCK			; mode check
;
		JSR	YGFSHPLCRCK
;
		LDY	<ENWRK2,X
		TYX
		JMP	(YGFSHMVMODSEL,X)
;
YGFSHMVMODSEL	EQU	$
		WORD	YGFSHKYOR
ygsufg		WORD	YGFSHSUFC
ygjet0		WORD	YGFSHJET0
ygjet1		WORD	YGFSHJET1
ygstop		WORD	YGFSHSTOP
ygpchi		WORD	YGFSHPACI
ygdown		WORD	YGFSHDOWN
ygfall		WORD	YGFSHFALL
ygrevv		WORD	YGFSHREVV
;
;
YGFSHKYORPT	EQU	$
		HEX	01, 02, 03, 02, 01, 00
;
YGFSHKYORTM	EQU	$
		HEX	10, 10, 10, 10, 10, 10
;
YGFSHKYOR	EQU	$
		LDX	<ENINDX
;
		LDA	!EPXMUK,X
		AND	#000FFH
		STA	!ENMUKI,X
;
		LDA	!ECENTX,X
		SEC
		SBC	!PCENTX
		CLC
		ADC	#ygjetsarea
		CMP	#ygjetsarea*2
		BCS	YGFSHKYOR0080		; プレイヤーＩＮ？ [no->YGFSHKYOR0080]
;
		STZ	!ENCHPT,X
		LDA	#0FE00H
		STA	!ENGMAX,X
		LDA	#00010H
		STA	!ENGPOW,X
;
		M8				; memory 8bit mode !!
;
		LDA	#ygfshkyoroptn
		STA	<ENWRK0,X
		TAY
		LDA	YGFSHKYORPT,Y
		STA	!ENCHPT,X
		LDA	YGFSHKYORTM,Y
		STA	!ENTIM0,X
		INC	<ENWRK2,X
		INC	<ENWRK2,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
YGFSHKYOR0080	EQU	$
		LDA	#ygfshkyoroptn
		STA	<EWORK
		LDA	#YGFSHKYORPT
		STA	<EWORK2
		LDA	#YGFSHKYORTM
		STA	<EWORK4
		JSR	PATTERNCHANGE
;
		RTL
;
;
YGFSHSUFC	EQU	$
		LDX	<ENINDX
		LDA	!ENWRK8,X
		SEC
		SBC	#0004
		CMP	!ENYPSL,X
		BMI	YGFSHSUFC00F0		; [->YGFSHSUFC00F0]
;
		STA	!ENYPSL,X
		STZ	!ENGMAX,X
		STZ	!ENGPOW,X
		STZ	!ENYSPD,X
;
		M8				; memory 8bit mode !!
;
		LDA	#ygfshjet00ptn
		STA	<ENWRK0,X
		TAY
		LDA	YGFSHJET0PT,Y
		STA	!ENCHPT,X
		LDA	YGFSHJET0TM,Y
		STA	!ENTIM0,X
		INC	<ENWRK2,X
		INC	<ENWRK2,X
;
		M16				; memory 16bit mode !!
;
YGFSHSUFC00F0	EQU	$
		RTL
;
;
YGFSHJET0PT	EQU	$
		HEX	07, 06, 05, 00
;
YGFSHJET0TM	EQU	$
		HEX	02, 30, 08, 50
;
YGFSHJET0	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	YGFSHJET000F0		; pattern change ? [no->YGFSHJET000F0]
;
		M8				; memory 8bit mode !!
;
		DEC	<ENWRK0,X
		BMI	YGFSHJET00100		; Next Mode ? [yes->YGFSHJET00100]
;
		LDY	<ENWRK0,X
		LDA	YGFSHJET0PT,Y
		STA	!ENCHPT,X
		LDA	YGFSHJET0TM,Y
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
YGFSHJET000F0	EQU	$
		RTL
;
		MEM8
;
YGFSHJET00100	EQU	$
		LDA	#209
		STA	!ENTIM1,X
		INC	<ENWRK2,X
		INC	<ENWRK2,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
;
YGFSHJET1TM	EQU	$
		BYTE	08, 08, 08, 08, 08, 08, 08, 08
		BYTE	08, 08, 08, 08, 08, 08, 08, 08
		BYTE	08, 08, 16
;
YGFSHJET1	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM1,X
		BEQ	YGFSHJET10100		; Next Mode ? [yes->YGFSHJET10100]
;
		JSR	YGFSHYGCRCK
;
		LDA	!ENTIM0,X
		BNE	YGFSHJET100F0		; [->YGFSHJET100F0]
;
		M8				; memory 8bit mode !!
;
		LDY	<ENCONT,X
		CPY	#18
		BCS	YGFSHJET10110		; Next Mode ? [yes->YGFSHJET10110]
;
		INC	<ENCONT,X
		INY
		LDA	YGFSHJET1TM,Y
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
YGFSHJET100F0	EQU	$
		JSR	YGFSHBASYA
;
		RTL
;
YGFSHJET10100	EQU	$
;
		M8				; memory 8bit mode !!
;
YGFSHJET10110	EQU	$
		INC	<ENWRK2,X
		INC	<ENWRK2,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
;
YGFSHSTOP	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	YGFSHSTOP00F0		; [->YGFSHSTOP00F0]
;
		LDY	<ENCONT,X
		BEQ	YGFSHSTOP0100		; Next Mode ? [yes->YGFSHSTOP0100]
;
		DEC	<ENCONT,X
		LDA	#01
		STA	!ENTIM0,X
YGFSHSTOP00F0	EQU	$
		JSR	YGFSHBASYA
;
		RTL
;
YGFSHSTOP0100	EQU	$
;
		M8				; memory 8bit mode !!
;
		LDA	#sec02
		STA	!ENTIM1,X
		LDA	#ygfshpachiptn
		STA	<ENWRK0,X
		TAY
		LDA	YGFSHPACIPT,Y
		STA	!ENCHPT,X
		LDA	YGFSHPACITM,Y
		STA	!ENTIM0,X
		INC	<ENWRK2,X
		INC	<ENWRK2,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
;
YGFSHPACIPT	EQU	$
		HEX	00, 01, 00, 04
;
YGFSHPACITM	EQU	$
		HEX	04, 20, 04, 20
;
YGFSHPACI	EQU	$
		LDX	<ENINDX
;
		LDA	!EPXMUK,X
		AND	#000FFH
		STA	!ENMUKI,X
;
		LDA	!ECENTX,X
		SEC
		SBC	!PCENTX
		CLC
		ADC	#ygjetcarea
		CMP	#ygjetcarea*2
		BCC	YGFSHPACI0080		; [->YGFSHPACI0080]
;
		LDA	#00200H
		STA	!ENGMAX,X
		LDA	#00010H
		STA	!ENGPOW,X
;
		M8				; memory 8bit mode !!
;
		STZ	!ENCHPT,X
		INC	<ENWRK2,X
		INC	<ENWRK2,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
YGFSHPACI0080	EQU	$
		LDA	!ENTIM1,X
		BEQ	YGFSHPACI0100		; Next Mode ? [yes->YGFSHPACI0100]
;
		LDA	#ygfshpachiptn
		STA	<EWORK
		LDA	#YGFSHPACIPT
		STA	<EWORK2
		LDA	#YGFSHPACITM
		STA	<EWORK4
		JSR	PATTERNCHANGE
;
YGFSHPACI00F0	EQU	$
		RTL
;
YGFSHPACI0100	EQU	$
;
		M8				; memory 8bit mode !!
;
		LDA	#ygfshjet00ptn
		STA	<ENWRK0,X
		TAY
		LDA	YGFSHJET0PT,Y
		STA	!ENCHPT,X
		LDA	YGFSHJET0TM,Y
		STA	!ENTIM0,X
		LDA	#ygfsh_jet0
		STA	<ENWRK2,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
;
YGFSHDOWN	EQU	$
		LDX	<ENINDX
		LDA	!ENWRK8,X
		CMP	!ENYPSL,X
		BPL	YGFSHDOWN00F0		; Next Mode ? [no->YGFSHDOWN00F0]
;
		STA	!ENYPSL,X
		STZ	!ENYSPD,X
		STZ	!ENGPOW,X
		STZ	!ENGMAX,X
		JMP	YGFSHIN00A0
;
YGFSHDOWN00F0	EQU	$
		RTL
;
;
YGFSHFALL	EQU	$
		LDX	<ENINDX
		LDY	<ENCONT,X
		BNE	YGFSHFALL0100		; [->YGFSHFALL0100]
;
		LDA	!ENWRK8,X
		CLC
		ADC	#00010H
		CMP	!ENYPSL,X
		BMI	YGFSHFALL0090		; [->YGFSHFALL0090]
;
		LDA	<ENWRK0,X
		BNE	YGFSHFALL0080		; [->YGFSHFALL0080]
;
		LDA	#00200H
		STA	!ENGMAX,X
		LDA	#00010H
		STA	!ENGPOW,X
		STZ	!ENCHPT,X
		INC	<ENWRK0,X
YGFSHFALL0080	EQU	$
		RTL
;
YGFSHFALL0090	EQU	$
		STA	!ENYPSL,X
		STZ	!ENGMAX,X
		STZ	!ENGPOW,X
		STZ	!ENYSPD,X
		STZ	<ENWRK0,X
		LDA	#sec05
		STA	!ENTIM0,X
;
		M8				; memory 8bit mode !!
;
		INC	<ENWRK2,X
		INC	<ENWRK2,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
YGFSHFALL0100	EQU	$
		LDA	!ENTIM0,X
		BNE	YGFSHFALL01E0		; [->YGFSHFALL01E0]
;
		DEC	<ENCONT,X
		LDA	#00
		STA	!ENTIM0,X
YGFSHFALL01E0	EQU	$
		JSR	YGFSHBASYA
;
		RTL
;
;
YGFSHREVV	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	YGFSHREVV00F0		; [->YGFSHREVV00F0]
;
		LDA	!ENWRK8,X
		CMP	!ENYPSL,X
		BMI	YGFSHREVV0080		; [->YGFSHREVV0080]
;
		STA	!ENYPSL,X
		STZ	!ENGMAX,X
		STZ	!ENGPOW,X
		STZ	!ENYSPD,X
		JMP	YGFSHIN00A0
;
YGFSHREVV0080	EQU	$
		LDA	<ENWRK0,X
		BNE	YGFSHREVV00F0		; [->YGFSHREVV00F0]
;
		LDA	#-0200H
		STA	!ENGMAX,X
		LDA	#00010H
		STA	!ENGPOW,X
		INC	<ENWRK0,X
YGFSHREVV00F0	EQU	$
		RTL
;
;
YGFSHBASYAANDDT EQU	$
		WORD	0001H, 0001H, 0001H, 0001H
		WORD	0001H, 0001H, 0001H, 0001H
		WORD	0001H, 0001H, 0001H, 0001H
		WORD	0001H, 0001H, 0001H, 0001H
		WORD	0001H, 0001H, 0003H
;
YGFSHBASYAXSPD	EQU	$
		WORD	-0300H, 00300H
;
YGFSHBASYA	EQU	$
		LDA	<FRCNT2
		AND	#00007H
		BNE	YGFSHBASYA0040		; [->YGFSHBASYA0040]
;
		LDA	#00061H
		JSL	>SOUND_3_ON		; サウンド セット！！
;
YGFSHBASYA0040	EQU	$
		LDA	<ENCONT,X
		ASL	A
		TAY
		LDA	<FRCNT2
		AND	YGFSHBASYAANDDT,Y
		BNE	YGFSHBASYA00F0		; [->YGFSHBASYA00F0]
;
		LDY	!ENMUKI,X
		LDA	YGFSHBASYAXSPD,Y
		STA	<EWORK
		LDA	<ENCONT,X
		DEC	A
		ASL	A
		ASL	A
		TAY
		LDA	YGFSHPOS,Y
		PHY
		LDY	!ENMUKI,X
		BEQ	YGFSHBASYA0080		; [->YGFSHBASYA0080]
;
		EOR	#0FFFFH
		INC	A
YGFSHBASYA0080	EQU	$
		PLY
		CLC
		ADC	!ENXPSL,X
		STA	<EWORK2
		LDA	!ENYPSL,X
		CLC
		ADC	YGFSHPOS+2,Y
		STA	<EWORK4
		LDA	#YOGN0
		JSL	>EXINSR
;
		LDA	!EXCLOR,Y
		ORA	#00001H<<1
		STA	!EXCLOR,Y
		LDA	!ENMUKI,X
		STA	!EXMUKI,Y
		LDA	<EWORK2
		STA	!EXXPSL,Y
		LDA	<EWORK4
		STA	!EXYPSL,Y
		LDA	<EWORK
		STA	!EXXSPD,Y
		LDA	#-0300H
		STA	!EXYSPD,Y
		LDA	#00010H
		STA	!EXTIM0,Y
		LDA	#0002
		STA	!EXCHPT,Y
;
YGFSHBASYA00F0	EQU	$
		RTS
;
;
YGFSHYGCRCK	EQU	$
		LDA	#BANK YGFSHPOS
		STA	R0
		LDA	#YGFSHPOS
		STA	R1
		LDA	<ENCONT,X
		STA	R12
		M_CHIP	TEPPOUGYOCRCK
;
		LDX	<ENINDX
		LDA	R11
		BPL	YGFSHYGCRCK0030		; 当たった？ [yes->YGFSHYGCRCK0030]
;
		RTS
;
YGFSHYGCRCK0030 EQU	$
		STA	<ENCONT,X
		DEC	A
		ASL	A
		ASL	A
		TAY
		LDA	YGFSHPOS,Y
		PHY
		LDY	!ENMUKI,X
		BEQ	YGFSHYGCRCK0040		; [->YGFSHYGCRCK0040]
;
		EOR	#0FFFFH
		INC	A
YGFSHYGCRCK0040 EQU	$
		PLY
		CLC
		ADC	!ENXPSL,X
		STA	<EWORK
		LDA	!ENYPSL,X
		CLC
		ADC	YGFSHPOS+2,Y
		STA	<EWORK2
		LDA	!ENTIM2,X
		BNE	YGFSHYGCRCK0080		; [->YGFSHYGCRCK0080]
;
		LDA	#0004
		STA	!ENTIM2,X
		LDA	#SIBUY
		JSL	>EXINSR
;
		LDA	<EWORK
		STA	!EXXPSL,Y
		LDA	<EWORK2
		STA	!EXYPSL,Y
		LDA	#0002
		STA	EXTIM0,Y
		LDA	#0000
		STA	EXCHPT,Y
YGFSHYGCRCK0080 EQU	$
;-------------------------------------------------------------------------
;
		I16
;
		JSL	>TO_PLDOWN	;プレイヤーダウンモードへ
;
		I8
;
;-------------------------------------------------------------------------
		PLA				; pull pull return !!
		RTL
;
;
YGFSHPLCRCK	EQU	$
		LDY	!ECRSFG,X
		BPL	YGFSHPLCRCK0080		; プレイヤーと当たった？ [no->YGFSHPLCRCK0080]
;
		JSL	>PLFLST
;
		RTS
;
YGFSHPLCRCK0080 EQU	$
		DEY
		BMI	YGFSHPLCRCK00F0		; 当たった？ [no->YGFSHPLCRCK00F0]
		BEQ	YGFSHPLCRCK00F0		; 赤ちゃん？ [yes->YGFSHPLCRCK00F0]
;
		LDA	!ENMODE,Y
		CMP	#EMOVE
		BNE	YGFSHPLCRCK00F0		; Mode Move ? [no->YGFSHPLCRCK00F0]
;
		LDA	!ENSHOT,Y
		BEQ	YGFSHPLCRCK00F0		; ショット？ [no->YGFSHPLCRCK00F0]
;
		TYX
		JSL	>ENDEATH_SET_4
;
		LDX	<ENINDX
;
		M8				; memory 8bit mode !!
;
		LDA	#ygfsh_fall
		STA	<ENWRK2,X
;
		M16				; memory 16bit mode !!
;
		STZ	!ENTIM0,X
		STZ	<ENWRK0,X
YGFSHPLCRCK00F0 EQU	$
		RTS
;
;
;------ EWORK  <- Max Pattern Number
;------ EWORK2 <- CHPT Address
;------ EWORK4 <- Time Address
PATTERNCHANGE	EQU	$
		LDA	!ENTIM0,X
		BNE	PC00F0			; pattern change ? [no->PC00F0]
;
		M8				; memory 8bit mode !!
;
		DEC	<ENWRK0,X
		BPL	PC0040			; Max Pattern ? [no->PC0040]
;
		LDA	<EWORK
		STA	<ENWRK0,X
PC0040		EQU	$
		LDY	!ENWRK0,X
		LDA	(<EWORK2),Y
		STA	!ENCHPT,X
		LDA	(<EWORK4),Y
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
PC00F0		EQU	$
		RTS
;
;
;------------------------------------------------------------------------
;-	initial (バルーンテレサ)					-
;-		ENCONT : 倍率						-
;-		ENWRK0 : フェイスナンバーインデックス			-
;-		ENWRK2 : 紐インデックス					-
;------------------------------------------------------------------------
BalloonTelesaXS EQU	00100H
BalloonTelesaX2 EQU	00800H
BalloonTelesaYS EQU	00100H
BalloonTelesaY2 EQU	00800H
;
BALLOONSTRING	EQU	$
		BYTE	006H,01EH	;[00]
		HEX	1C,00
		BYTE	004H,016H
		HEX	0D,00
;
		BYTE	005H,01EH	;[01]
		HEX	1C,00
		BYTE	004H,016H
		HEX	0C,00
;
		BYTE	004H,01EH	;[02]
		HEX	1C,00
		BYTE	004H,016H
		HEX	0C,00
;
		BYTE	005H,01EH	;[03]
		HEX	1C,40
		BYTE	005H,016H
		HEX	0C,40
;
		BYTE	004H,01EH	;[04]
		HEX	1C,40
		BYTE	005H,016H
		HEX	0C,40
;
		BYTE	003H,01EH	;[05]
		HEX	1C,40
		BYTE	005H,016H
		HEX	0D,40
;
BLTLSFACE	EQU	$
		HEX	06, 06, 06, 06, 08, 08, 08, 08
		HEX	0A, 0A, 0A, 0A
;
BLTLSGMAX	EQU	$
		WORD	BalloonTelesaYS, -BalloonTelesaYS
;
BLTLSXMAX	EQU	$
		WORD	BalloonTelesaXS, -BalloonTelesaXS
;
BLTLSWIDEX	EQU	$
BLTLSWIDEY	EQU	$
		WORD	00006H, 00008H, 0000AH, 000CH
;
;
BLTLSIN		EQU	$
		LDA	#01
		STA	!BTLS_ST_FG
;
		LDA	BLTLSXMAX
		STA	!ENXMAX,X
		LDA	#0008
		STA	!ENXPOW,X
		LDA	BLTLSGMAX
		STA	!ENGMAX,X
		LDA	#0008
		STA	!ENGPOW,X
		LDA	#00090H
		STA	<ENCONT,X		; 初期倍率セット！
		LDA	!ENXPSL,X
		AND	#00010H
		LSR	A
		LSR	A
		LSR	A
		STA	!ENWRKA,X		; アイテムナンバーセット！
;
		M8				; memory 8bit mode !!
;
		STZ	<ENWRK2,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
;
;------------------------------------------------------------------------
;-	move (バルーンテレサ)						-
;------------------------------------------------------------------------
BLTLSSTRINGPT	EQU	$
		HEX	02, 01, 01, 00, 03, 04, 04, 05
;
BLTLSMV		EQU	$
		LDY	!ENYUSN,X
		BMI	BLTLSMV0018		; 表示？ [no->BLTLSMV0018]
;
		LDA	!ENCHPT,X
		BEQ	BLTLSMV0010		; [->BLTLSMV0010]
;
		I16				; index 16bit mode !!
;
		LDA	!ENOAML,X
		CLC
		ADC	#3*8
		TAY
		JSL	>TROBJ_OAM_4x4_I
;
		IDX8
;
BLTLSMV0010	EQU	$
		LDA	#BANK BALLOONSTRING
		STA	R0
		LDA	<ENWRK2,X
		AND	#000FFH
		ASL	A
		ASL	A
		ASL	A
		CLC
		ADC	#BALLOONSTRING
		STA	R1
		LDA	<ENCONT,X
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		AND	#0001FH
		TAY
		LDA	BLTLSFACE-9,Y
		AND	#000FFH
		STA	R2
		M_CHIP	BALLOONTELESA
;
		LDX	<ENINDX
;
BLTLSMV0018	EQU	$
		LDA	!ENMODE,X
		CMP	#EEATM
		BNE	BLTLSMV0020		; 食べられた？ [no->BLTLSMV0020]
;
		JSR	BLTLSEAT
;
		PLA
		PLY				; eat mode cancel !!
BLTLSMV0020	EQU	$
		JSL	>ENMDCK			; mode check
;
		JSR	BLTLSCHRST
;
		JSR	BLTLSDSPCHK
;
BLTLSMV0028	EQU	$
		LDA	!EPXMUK,X
		AND	#000FFH
		STA	!ENMUKI,X
;
		LDY	<ENWRK3,X
		TYX
		JSR	(BLTLSMVMODSL2,X)
;
		LDA	!BTLS_ST_FG
		BNE	BLTLSMV0030		; [->BLTLSMV0030]
;
		LDA	!ENMOD2,X
		ORA	#0000000000000100B
		STA	!ENMOD2,X		; 範囲外クリアＯＮ！！
		LDA	#0FF00H
		STA	!ENYSPD,X
		STZ	!ENXSPD,X
BLTLSMV0030	EQU	$
		LDY	#00
		LDA	!ENMUKI,X
		DEC	A
		EOR	!ENXSPD,X
		BPL	BLTLSMV0040		; [->BLTLSMV0040]
;
		LDY	#04
BLTLSMV0040	EQU	$
		STY	!EWORK
;
		M8				; memory 8bit mode !!
;
		LDA	!ENXSPD+1,X
		ABS8
		CMP	#03
		BCC	BLTLSMV0050		; [->BLTLSMV0050]
;
		LDA	#03
BLTLSMV0050	EQU	$
		CLC
		ADC	<EWORK
		TAY
		LDA	BLTLSSTRINGPT,Y
		STA	<ENWRK2,X
;
		M16				; memory 16bit mode !!
;
BLTLSMV0080	EQU	$
		LDY	<ENWRK0,X
		TYX
		JMP	(BLTLSMVMODSEL,X)
;
BLTLSMVMODSEL	EQU	$
		WORD	BLTLSNOMAL
		WORD	BLTLSPUNPUN0
		WORD	BLTLSPUNPUN1
		WORD	BLTLSPUNPUN2
;
BLTLSMVMODSL2	EQU	$
		WORD	BLTLSFURA
		WORD	BLTLSATCK
		WORD	BLTLSBACK
;
;
BLTLSNOMAL	EQU	$
		LDX	<ENINDX
		JSR	BLTLSCRCK
;
		JSR	BLTLSATTACK
;
		RTL
;
;
BLTLSPUNPUN0	EQU	$
		LDX	<ENINDX
		LDA	<ENWRK4,X
		BNE	BLTLSPUNPUN0100		; [->BLTLSPUNPUN0100]
;
		LDA	<ENCONT,X
		CMP	#000E0H
		BCS	BLTLSPUNPUN0080		; [->BLTLSPUNPUN0080]
;
		LDA	<ENCONT,X
		CLC
		ADC	#0002
		STA	<ENCONT,X
		RTL
;
BLTLSPUNPUN0080 EQU	$
		INC	<ENWRK4,X
		RTL
;
BLTLSPUNPUN0100 EQU	$
		LDA	<ENCONT,X
		CMP	#000CCH
		BCC	BLTLSPUNPUN0180		; [->BLTLSPUNPUN0180]
;
		LDA	<ENCONT,X
		SEC
		SBC	#0002
		STA	<ENCONT,X
		RTL
;
BLTLSPUNPUN0180 EQU	$
		JSR	BLTLSCRCK
;
		JSR	BLTLSATTACK
;
		RTL
;
;
BLTLSPUNPUN1	EQU	$
		LDX	<ENINDX
		LDA	<ENWRK4,X
		BNE	BLTLSPUNPUN1100		; [->BLTLSPUNPUN1100]
;
		LDA	<ENCONT,X
		CMP	#00120H
		BCS	BLTLSPUNPUN1080		; [->BLTLSPUNPUN1080]
;
		LDA	<ENCONT,X
		CLC
		ADC	#0002
		STA	<ENCONT,X
		RTL
;
BLTLSPUNPUN1080 EQU	$
		INC	<ENWRK4,X
		RTL
;
BLTLSPUNPUN1100 EQU	$
		LDA	<ENCONT,X
		CMP	#00100H
		BCC	BLTLSPUNPUN1180		; [->BLTLSPUNPUN1180]
;
		LDA	<ENCONT,X
		SEC
		SBC	#0002
		STA	<ENCONT,X
		RTL
;
BLTLSPUNPUN1180 EQU	$
		JSR	BLTLSCRCK
;
		JSR	BLTLSATTACK
;
		RTL
;
;
BLTLSPUNPUN2	EQU	$
		LDX	<ENINDX
		LDA	<ENCONT,X
		CMP	#00130H
		BCS	BLTLSPUNPUN2100		; [->BLTLSPUNPUN2100]
;
		LDA	<ENCONT,X
		CLC
		ADC	#0002
		STA	<ENCONT,X
		RTL
;
BLTLSPUNPUN2100 EQU	$
		LDA	#EFAIL
		STA	!ENMODE,X
		RTL
;
;
BLTLSCHRST	EQU	$
		LDA	!ENCHPT,X
		BEQ	BLTLSCHRST00F0		; [->BLTLSCHRST00F0]
;
		LDA	!ENTROB,X
		BMI	BLTLSCHRST00F0		; 回転オブジェ使ってる ? [no->BLTLSCHRST00F0]
;
		I16				; index 16bit mode !!
;
		LDA	#0000
		STA	R5			; (R5) <- 回転角度
		LDA	<ENCONT,X
		STA	R6			; (R6) <- 倍率
		LDA	#CIPCHD3+40C0H+1
		STA	R12			; (R12) <- キャラクタアドレス
		LDA	#BANK CIPCHD3+40C0H+1
		STA	R13			; (R13) <- キャラクタバンク
		LDY	!ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_X,X
		STA	R3			; (R3) <- ビットマップＸ座標
		LDA	>TROBJ_PLOT_Y,X
		STA	R2			; (R2) <- ビットマップＹ座標
;
		I8				; index 8bit mode !!
;
		M_CHIP	C_32_ROTZOM
;
		INC	OBM7WF			; mode 7 OBJ chara DMA "ON"
;
		LDX	<ENINDX
BLTLSCHRST00F0	EQU	$
		RTS
;
;
BLTLSCRCK	EQU	$
		STZ	!ENWRK6,X
		LDY	!ECRSFG,X
		BPL	BLTLSCRCK0040		; プレイヤーとの衝突？ [no->BLTLSCRCK0040]
;
		JSL	>PLFLST
;
BLTLSCRCK003F	EQU	$
		RTS
;
BLTLSCRCK0040	EQU	$
		DEY
		BMI	BLTLSCRCK003F		; 敵との衝突無し？ [no->BLTLSCRCK003F]
		BEQ	BLTLSCRCK003F		; 赤ちゃん？ [yes->BLTLSCRCK003F]
;
		LDA	!ENMODE,Y
		CMP	#EMOVE
		BNE	BLTLSCRCK003F		; mode move ? [no->BLTLSCRCK003F]
;
		LDA	!ENSHOT,Y
		BEQ	BLTLSCRCK003F		; ショット？ [no->BLTLSCRCK003F]
;
		LDA	!ENXSPD,Y
		AND	#08000H
		ASL	A
		ROL	A
		ASL	A
		STA	<EWORK
		LDA	!ENYSPD,Y
		AND	#08000H
		ASL	A
		ROL	A
		ASL	A
		STA	<EWORK2
		TYX
		JSL	>SHOT_EN_KILL
;
		LDY	<EWORK
		LDA	BLTLSEATSPD,Y
		STA	!ENXSPD,X
		LDY	<EWORK2
		LDA	BLTLSEATSPD,Y
		STA	!ENYSPD,X
BLTLSCRCK0060	EQU	$
		LDX	<ENINDX
		LDA	!ENWRK6,X
		BNE	BLTLSCRCK003F		; [->BLTLSCRCK003F]
;
		INC	!ENWRK6,X
		LDY	<ENWRK0,X
		BNE	BLTLSCRCK0080		; 一回目？ [no->BLTLSCRCK0080]
;
		LDA	#0001
		STA	!ENCHPT,X
;
		JSL	>TROBJ_SR_4x4
		BCC	BLTLSCRCK0100		; 回転エリア確保できた？ [no->BLTLSCRCK0100]
;
		JSR	BLTLSCHRST
;
BLTLSCRCK0080	EQU	$
		LDA	#00016H
		JSL	>SOUND_3_ON		; サウンド セット !!
;
		STZ	<ENWRK4,X
;
		M8				; memory 8bit mode !!
;
		INC	<ENWRK0,X
		INC	<ENWRK0,X
;
		M16				; memory 16bit mode !!
;
		LDY	<ENWRK0,X
		LDA	BLTLSWIDEX,Y
		STA	!EWIDEX,X
		LDA	BLTLSWIDEY,Y
		STA	!EWIDEY,X
		PLA				; pull pull return !!
		RTL
;
BLTLSCRCK0100	EQU	$
		LDA	#EFAIL
		STA	!ENMODE,X
		PLA				; pull pull return !!
		RTL
;
;
BLTLSATTACK	EQU	$
		LDY	<ENWRK3,X
		BNE	BLTLSATTACK00F0		; [->BLTLSATTACK00F0]
;
		LDA	<RANDM0
		AND	#0007FH
		CMP	#0003FH
		BNE	BLTLSATTACK00F0		; [->BLTLSATTACK00F0]
;
		JSL	>RANDAM
;
		LDA	<RANDM0
		AND	#0000FH
		CLC
		ADC	#00020H
		STA	!ENTIM1,X
;
		JSR	BLTELSELSPD
;
		M8				; memory 8bit mode !!
;
		INC	<ENWRK3,X
		INC	<ENWRK3,X
;
		M16				; memory 16bit mode !!
;
BLTLSATTACK00F0 EQU	$
		RTS
;
;
BLTLSFURA	EQU	$
		LDX	<ENINDX
		LDY	#00
		LDA	!ENDSYL,X
		CMP	#00020H
		BMI	BLTLSFURA0040		; [->BLTLSFURA0040]
;
		INY
		INY
BLTLSFURA0040	EQU	$
		LDA	BLTLSGMAX,Y
		STA	!ENGMAX,X
;
		LDA	!ENXSPD,X
		BPL	BLTLSFURA0080		; [->BLTLSFURA0080]
;
		LDA	!ENDSXL,X
		CMP	#00060H
		BPL	BLTLSFURA0050		; [->BLTLSFURA0050]
;
		LDA	BLTLSXMAX
		STA	!ENXMAX,X
BLTLSFURA0050	EQU	$
		RTS
;
BLTLSFURA0080	EQU	$
		LDA	!ENDSXL,X
		CMP	#00090H
		BMI	BLTLSFURA0090		; [->BLTLSFURA0090]
;
		LDA	BLTLSXMAX+2
		STA	!ENXMAX,X
BLTLSFURA0090	EQU	$
		RTS
;
;
BLTLSATCK	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM1,X
		BNE	BLTELSELSPD		; [->BLTELSELSPD]
;
BLTLSATCK0050	EQU	$
		LDA	BLTLSXMAX+2
		LDY	!ENXSPD+1,X
		BMI	BLTLSATCK0080		; [->BLTLSATCK0080]
;
		LDA	BLTLSXMAX
BLTLSATCK0080	EQU	$
		STA	!ENXMAX,X
;
		M8				; memory 8bit mode !!
;
		INC	<ENWRK3,X
		INC	<ENWRK3,X
;
		M16				; memory 16bit mode !!
;
BLTLSATCK00F0	EQU	$
		RTS
;
BLTELSELSPD	EQU	$
		LDA	!PCENTX
		STA	R1			; target X
		LDA	!PCENTY
		STA	R2			; target Y
		LDA	!ECENTX,X
		STA	R3			; my X
		LDA	!ECENTY,X
		STA	R4			; my Y
		LDA	#00300H
		STA	R6			; speed
		M_CHIP	SEARCH_SPEED
;
		LDX	<ENINDX
		LDA	R1
		STA	!ENXMAX,X		; x speed set !!
;;;;;;;;		ABS16
;;;;;;;;		LSR	A
;;;;;;;;		LSR	A
;;;;;;;;		LSR	A
;;;;;;;;		LSR	A
;;;;;;;;		LSR	A
;;;;;;;;		LSR	A
;;;;;;;;		STA	!ENXPOW,X
		LDA	R2
		STA	!ENGMAX,X		; y speed set !!
;;;;;;;;		ABS16
;;;;;;;;		LSR	A
;;;;;;;;		LSR	A
;;;;;;;;		LSR	A
;;;;;;;;		LSR	A
;;;;;;;;		LSR	A
;;;;;;;;		LSR	A
;;;;;;;;		STA	!ENGPOW,X
		RTS
;
;
BLTLSBACK	EQU	$
		LDX	<ENINDX
		LDY	#00
		LDA	!ENDSYL,X
		CMP	#00020H
		BMI	BLTLSBACK0040		; [->BLTLSBACK0040]
;
		INY
		INY
BLTLSBACK0040	EQU	$
		LDA	BLTLSGMAX,Y
		STA	!ENGMAX,X
;
		LDA	!ENXSPD,X
		BPL	BLTLSBACK0050		; [->BLTLSBACK0050]
;
		LDA	!ENDSXL,X
		CMP	#00060H
		BPL	BLTLSBACK0060		; [->BLTLSBACK0060]
;
		LDA	BLTLSXMAX
		STA	!ENXMAX,X
		BRA	BLTLSBACK0060
;
BLTLSBACK0050	EQU	$
		LDA	!ENDSXL,X
		CMP	#00090H
		BMI	BLTLSBACK0060		; [->BLTLSBACK0060]
;
		LDA	BLTLSXMAX+2
		STA	!ENXMAX,X

BLTLSBACK0060	EQU	$
		LDA	!ENDSYL,X
		SEC
		SBC	#00020H
		CLC
		ADC	#00008H
		CMP	#00010H
		BCS	BLTLSBACK00F0		; [->BLTLSBACK00F0]
;
		LDA	!ENDSXL,X
		CMP	#000F0H
		BCS	BLTLSBACK00F0		; [->BLTLSBACK00F0]
;
		LDA	<RANDM0
		AND	#0003FH
		CLC
		ADC	#00040H
		STA	!ENTIM1,X
		LDA	#0008
		STA	!ENGPOW,X
		LDA	#0008
		STA	!ENXPOW,X
;
		M8				; memory 8bit mode !!
;
		STZ	<ENWRK3,X
;
		M16				; memory 16bit mode !!
;
BLTLSBACK00F0	EQU	$
		RTS
;
;
BLTLSXSPD2	EQU	$
		WORD	BalloonTelesaXS, BalloonTelesaX2
;
BLTLSYSPD2	EQU	$
		WORD	BalloonTelesaYS, BalloonTelesaY2
;
BLTLSDSPCHK	EQU	$
		LDA	!BTLS_ST_FG
		BEQ	BLTLSDSPCHK00F0		; [->BLTLSDSPCHK00F0]
;
		LDA	!ENDSXL,X
		CLC
		ADC	#00020H
		CMP	#00130H
		BCC	BLTLSDSPCHK0080		; [->BLTLSDSPCHK0080]
;
		LDY	#00
		CLC
		ADC	#00030H
		CMP	#00190H
		BCC	BLTLSDSPCHK0040		; [->BLTLSDSPCHK0040]
;
		INY
		INY
BLTLSDSPCHK0040 EQU	$
		LDA	BLTLSXSPD2,Y
		LDY	!ENDSXL+1,X
		BMI	BLTLSDSPCHK0050		; [->BLTLSDSPCHK0050]
;
		EOR	#0FFFFH
		INC	A
BLTLSDSPCHK0050 EQU	$
		STA	!ENXSPD,X
;
BLTLSDSPCHK0080 EQU	$
		LDA	!ENDSYL,X
		CLC
		ADC	#00020H
		CMP	#00110H
		BCC	BLTLSDSPCHK00F0		; [->BLTLSDSPCHK00F0]
;
		LDY	#00
		CLC
		ADC	#00030H
		CMP	#00170H
		BCC	BLTLSDSPCHK00C0		; [->BLTLSDSPCHK00C0]
;
		INY
		INY
BLTLSDSPCHK00C0 EQU	$
		LDA	BLTLSYSPD2,Y
		LDY	!ENDSYL+1,X
		BMI	BLTLSDSPCHK00D0		; [->BLTLSDSPCHK00D0]
;
		EOR	#0FFFFH
		INC	A
BLTLSDSPCHK00D0 EQU	$
		STA	!ENYSPD,X
BLTLSDSPCHK00F0 EQU	$
		RTS
;
;
BLTLSEATSPD	EQU	$
		WORD	00100H, -0100H
;
BLTLSEAT	EQU	$
		LDA	!BERFLG
		CMP	#0003
		BCC	BLTLSEAT0040		; [->BLTLSEAT0040]
;
		LDA	#0FF00H
		STA	!ENYSPD,X
		BRA	BLTLSEAT0060
;
BLTLSEAT0040	EQU	$
		LDY	!EPXMUK,X
		LDA	BLTLSEATSPD,Y
		STA	!ENXSPD,X
BLTLSEAT0060	EQU	$
		LDA	#EMOVE
		STA	!ENMODE,X
		STZ	!EATFLG
		STZ	!EATSTP
;;;;;;;;		JSL	>BLTLSCROSS
;
		RTS
;
;
BLTLSCROSS	EQU	$
		JSR	BLTLSCRCK0060
;
		RTL
;
;
;------------------------------------------------------------------------
;-	fail (バルーンテレサ)						-
;------------------------------------------------------------------------
BLTLSFL		EQU	$
		LDY	!ENYUSN,X
		BMI	BLTLSFL0020		; 表示？ [no->BLTLSFL0020]
;
		LDA	!ENCHPT,X
		BEQ	BLTLSFL0010		; [->BLTLSFL0010]
;
		I16				; index 16bit mode !!
;
		LDA	!ENOAML,X
		CLC
		ADC	#3*8
		TAY
		JSL	>TROBJ_OAM_4x4_I
;
		IDX8
;
BLTLSFL0010	EQU	$
		LDA	#BANK BALLOONSTRING
		STA	R0
		LDA	<ENWRK2,X
		AND	#000FFH
		ASL	A
		ASL	A
		ASL	A
		CLC
		ADC	#BALLOONSTRING
		STA	R1
		LDA	<ENCONT,X
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		AND	#0001FH
		TAY
		LDA	BLTLSFACE-9,Y
		AND	#000FFH
		STA	R2
		M_CHIP	BALLOONTELESA
;
		LDX	<ENINDX
;
BLTLSFL0020	EQU	$
;;;;;;;;		STZ	!BTLS_ST_FG
;
		LDA	#0003BH
		JSL	>SOUND_3_ON		; サウンド セット !!
;
		JSL	>FUSNB_SET
;
		JSL	>ENCLEAR_NORETN
;
		LDY	!ENWRKA,X
		TYX
		JSR	(BLTLSITEMSET,X)
;
BLTLSFL00F0	EQU	$
		RTL
;
BLTLSITEMSET	EQU	$
		WORD	BLTLSCOIN
		WORD	BLTLSSWIT
;
;
BLTLSSWIT	EQU	$
		LDX	<ENINDX
		LDA	#SW000
		JSL	>ENINSR_I
		BCC	BLTLSCOIN00F0		; [->BLTLSCOIN00F0]
;
		LDA	!ENXPSL,X
		STA	!ENXPSL,Y
		LDA	!ENYPSL,X
		STA	!ENYPSL,Y
		LDA	!ENMOD2,Y
		AND	#1111111111110011B
		STA	!ENMOD2,Y		;範囲外クリアＯＦＦ！！
BLTLSSWIT00F0	EQU	$
		RTS
;
;
BLTLSCOIN	EQU	$
		LDX	<ENINDX
		LDA	#COIN1
		JSL	>ENINSR_I
		BCC	BLTLSCOIN00F0		; [->BLTLSCOIN00F0]
;
		LDA	!ENXPSL,X
		STA	!ENXPSL,Y
		LDA	!ENYPSL,X
		STA	!ENYPSL,Y
		LDA	#0FE00H
		STA	!ENYSPD,Y
BLTLSCOIN00F0	EQU	$
		RTS
;
;
;------------------------------------------------------------------------
;-	initial (カメック)						-
;------------------------------------------------------------------------
Kamec_cdot	EQU	001
Kamec_cloop	EQU	(64/Kamec_cdot-1)
;
Kamec_OnArea	EQU	00040H
Kamec_OffArea	EQU	00020H
;
KamecMagicSuu	EQU	0002
;
KAMECXPOSD	EQU	$
		HEX	10, 20, 30, 40, 50, 60, 70, 80
		HEX	90, A0, B0, C0, D0, E0, F0, 10
;
KAMECYPOSD	EQU	$
		HEX	00, 10, 20, 30, 40, 50, 60, 70
		HEX	80, 90, A0, B0, C0, D0, 00, 10
;
KAMECIN		EQU	$
;[1995.04.06.TH]		JSL	>EXIST_CHECK2
;[1995.04.06.TH]		BEQ	KAMECIN0040		; 鍵出た？ [no->KAMECIN0040]
;[1995.04.06.TH];
;[1995.04.06.TH]		JMP	>ENCLEAR
;[1995.04.06.TH];
;[1995.04.06.TH]KAMECIN0040	EQU	$
		JSL	>TROBJ_SR_4x4_CL
;
		LDA	!ENXPSL,X
		STA	!ENWRK8,X
		LDA	!ENYPSL,X
		STA	!ENWRKA,X
;
		LDA	#00
		STA	!ENCHPT,X
		LDA	#00100H
		STA	<ENWRK2,X
;
		M8				; memory 8bit mode !!
;
		LDA	!ENMOD2+1,X
		AND	#00100111B
		STA	!ENMOD2+1,X
		LDA	#-1
		STA	!ENYUSN,X
;
		LDA	#KamecMagicSuu
		STA	!ENWRKX,X
;
		M16				; memory 16bit mode !!
;
KAMECIN00F0	EQU	$
		RTL
;
;
;------------------------------------------------------------------------
;-	move (カメック)							-
;------------------------------------------------------------------------
KAMECMV		EQU	$
		LDA	!ENCHPT,X
		BNE	KAMECMV0020		; 回転オブジェ使用？ [no->KAMECMV0020]
;
		JSL	>TROBJ_OAM_4x4
;
KAMECMV0020	EQU	$
		JSL	>ENMDCK			; mode check
;
		LDY	<ENWRK0,X
		TYX
		JMP	(KAMECMVMODSEL,X)
;
KAMECMVMODSEL	EQU	$
		WORD	KAMECPOINTSH
KamecAp0	WORD	KAMECAPEAR
KamecAp1	WORD	KAMECAPEAR2
		WORD	KAMECMAGIC
KamecCl0	WORD	KAMECCLEAR
KamecCl1	WORD	KAMECCLEAR2
;
KamecApear0	EQU	(KamecAp0-KAMECMVMODSEL)
KamecApear1	EQU	(KamecAp1-KAMECMVMODSEL)
KamecClear0	EQU	(KamecCl0-KAMECMVMODSEL)
KamecClear1	EQU	(KamecCl1-KAMECMVMODSEL)
;
;
KAMECPOINTSH	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	KAMECIN00F0		; [->KAMECIN00F0]
;
		LDA	<RANDM0
		AND	#000FH
		TAY
		LDA	KAMECXPOSD,Y
		AND	#000FFH
		STA	<EWORK
		LDA	!SCCH1
		AND	#0FFF0H
		CLC
		ADC	<EWORK
		STA	R1
;
		JSL	>RANDAM
;
		LDA	#0030H
		STA	R2
;
		LDA	#Kamec_OnArea
		STA	!CCWORK10
;
		M_CHIPR KAMEC_SEARCH
;
		LDX	<ENINDX
		LDA	R10
		BNE	KAMECPOINTSH0F0		; [->KAMECPOINTSH0F0]
;
		LDY	#00
		LDA	R1
		STA	!ENXPSL,X
		CLC
		ADC	!ECNTXW,X
		SEC
		SBC	!PCENTX
		BPL	KAMECPOINTSH080		; [->KAMECPOINTSH080]
;
		INY
		INY
KAMECPOINTSH080 EQU	$
		TYA
		STA	!ENMUKI,X
		LDA	R2
		SEC
		SBC	#00013H
		STA	!ENYPSL,X
		STZ	!ENCHPT,X
;
		LDA	#00031H
		JSL	>SOUND_3_ON		; サウンド セット！！
;
		LDA	<RANDM0
		BPL	KAMECPOINTSH100		; [->KAMECPOINTSH100]
;
		LDA	#00030H
		STA	<ENCONT,X
;
		M8				; memory 8bit mode !!
;
		LDA	#0FFH
		STA	!ENWATR,X
		LDA	#05
		STA	!ENYUSN,X
		LDA	#KamecApear0
		STA	<ENWRK0,X
;
		M16				; memory 16bit mode !!
;
KAMECPOINTSH0F0 EQU	$
		RTL
;
KAMECPOINTSH100 EQU	$
		LDA	#Kamec_cdot
		STA	<ENWRK2,X
		LDA	<RANDM0
		AND	#0003FH
		STA	!ENCONT,X
		LDA	#Kamec_cloop
		STA	<ENWRK4,X
;
		M8				; memory 8bit mode !!
;
		LDA	#05
		STA	!ENYUSN,X
		LDA	#KamecApear1
		STA	<ENWRK0,X
;
		M16				; memory 16bit mode !!
;
		JSR	KAMECWRITEC
;
		RTL
;
;
KAMECMAGICPT	EQU	$
		HEX	01, 06, 05, 04, 03, 02, 01
;
KAMECMAGICTM	EQU	$
		HEX	10, 08, 10, 02, 02, 02, 30
;
KAMECMAGICXP	EQU	$
		WORD	-0010H, 00010H
;
KAMECMAGIC	EQU	$
		LDX	<ENINDX
		JSR	KAMECPS_SCH
;
		JSR	KAMECCRCK
;
		LDA	!ENTIM0,X
		BNE	KAMECMAGIC00F0		; [->KAMECMAGIC00F0]
;
		M8				; memory 8bit mode !!
;
		DEC	<ENWRK1,X
		BMI	KAMECMAGIC0100		; Next Mode ? [yes->KAMECMAGIC0100]
;
		LDY	<ENWRK1,X
		LDA	KAMECMAGICTM,Y
		STA	!ENTIM0,X
		LDA	KAMECMAGICPT,Y
		STA	!ENCHPT,X
;
		M16				; memory 16bit mode !!
;
		CPY	#01
		BNE	KAMECMAGIC00F0		; 魔法セット？ [no->KAMECMAGIC00F0]
;
		LDY	!ENMUKI,X
		LDA	!ENXPSL,X
		CLC
		ADC	KAMECMAGICXP,Y
		STA	<EWORK
		LDA	#MAGIC
		JSL	>ENINSR
		BCC	KAMECMAGIC00F0		; 失敗？ [yes->KAMECMAGIC00F0]
;
		LDA	<EWORK
		STA	!ENXPSL,Y
		LDA	!ENYPSL,X
		CLC
		ADC	#0002
		STA	!ENYPSL,Y
		LDA	!ENXPSL,Y
		CLC
		ADC	!ECNTXW,Y
		STA	!ECENTX,Y
		LDA	!ENYPSL,Y
		CLC
		ADC	!ECNTYW,Y
		STA	!ECENTY,Y
;;;;;;;;		LDA	#00020H
;;;;;;;;		STA	!ENTIM3,Y
KAMECMAGIC00F0	EQU	$
		RTL
;
		MEM8
;
KAMECMAGIC0100	EQU	$
		DEC	!ENWRKX,X
		BEQ	KAMECMAGIC0180		; [->KAMECMAGIC0180]
;
		LDA	#(KAMECMAGICTM-KAMECMAGICPT-1)
		STA	<ENWRK1,X
		TAY
		LDA	#08
		STA	!ENTIM0,X
		LDA	KAMECMAGICPT,Y
		STA	!ENCHPT,X
;
		LDA	!EPXMUK,X
		STA	!ENMUKI,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
		MEM8
;
KAMECMAGIC0180	EQU	$
		LDA	#KamecMagicSuu
		STA	!ENWRKX,X
;
		LDA	#00031H
		JSL	>SOUND_3_ON		; サウンド セット！！
;
		LDA	!ENMOD2+1,X
		AND	#00100111B
		STA	!ENMOD2+1,X
		STZ	!ENCHPT,X
;
		LDA	<RANDM0
		AND	#001H
		PHP
		JSL	>RANDAM
;
		PLP
		BNE	KAMECMAGIC0200		; [->KAMECMAGIC0200]
;
		LDA	#KamecClear0
		STA	<ENWRK0,X
;
		M16				; memory 16bit mode !!
;
		LDA	#00100H
		STA	<ENCONT,X
		RTL
;
		MEM8
;
KAMECMAGIC0200	EQU	$
		LDA	#KamecClear1
		STA	<ENWRK0,X
;
		M16				; memory 16bit mode !!
;
		LDA	#Kamec_cdot
		STA	<ENWRK2,X
		LDA	<RANDM0
		AND	#0003FH
		STA	!ENCONT,X
		LDA	#Kamec_cloop
		STA	<ENWRK4,X
		RTL
;
;
KAMECAPEAR	EQU	$
		LDX	<ENINDX
		JSR	KAMECWRITE
;
		LDA	<ENCONT,X
		CMP	#00100H
		BCS	KAMECAPEAR0100		; [->KAMECAPEAR0100]
;
		CLC
		ADC	#00010H
		STA	<ENCONT,X
		RTL
;
KAMECAPEAR0100	EQU	$
		LDA	#00100H
		STA	<ENCONT,X
;
		M8				; memory 8bit mode !!
;
		LDA	!ENMOD2+1,X
		ORA	#00010000B
		STA	!ENMOD2+1,X
;
		LDA	#(KAMECMAGICTM-KAMECMAGICPT-1)
		STA	<ENWRK1,X
		TAY
		LDA	KAMECMAGICTM,Y
		STA	!ENTIM0,X
		LDA	KAMECMAGICPT,Y
		STA	!ENCHPT,X
		LDA	<ENWRK0,X
		CLC
		ADC	#0004
		STA	<ENWRK0,X
;
		LDA	!EPXMUK,X
		STA	!ENMUKI,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
;
KAMECAPEAR2	EQU	$
		LDX	<ENINDX
		JSR	KAMECWRITE3
;
		DEC	<ENWRK4,X
		BMI	KAMECAPEAR20100		; [->KAMECAPEAR20100]
;
		LDA	<ENCONT,X
		CLC
		ADC	<ENWRK2,X
		AND	#0003FH
		STA	<ENCONT,X
		RTL
;
KAMECAPEAR20100 EQU	$
;
		M8				; memory 8bit mode !!
;
		LDA	!ENMOD2+1,X
		ORA	#00010000B
		STA	!ENMOD2+1,X
;
		LDA	#(KAMECMAGICTM-KAMECMAGICPT-1)
		STA	<ENWRK1,X
		TAY
		LDA	KAMECMAGICTM,Y
		STA	!ENTIM0,X
		LDA	KAMECMAGICPT,Y
		STA	!ENCHPT,X
		INC	<ENWRK0,X
		INC	<ENWRK0,X
;
		LDA	!EPXMUK,X
		STA	!ENMUKI,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
;
KAMECCLEAR	EQU	$
		LDX	<ENINDX
		JSR	KAMECWRITE
;
		LDA	<ENCONT,X
		CMP	#00030H
		BCC	KAMECCLEAR0100		; [->KAMECCLEAR0100]
;
		SEC
		SBC	#00010H
		STA	<ENCONT,X
		RTL
;
KAMECCLEAR0100	EQU	$
;
		M8				; memory 8bit mode !!
;
		LDA	#-1
		STA	!ENYUSN,X
		LDA	#020H
		STA	!ENTIM0,X
		STZ	<ENWRK0,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
;
KAMECCLEAR2	EQU	$
		LDX	<ENINDX
		JSR	KAMECWRITE2
;
		DEC	<ENWRK4,X
		BMI	KAMECCLEAR0100		; [->KAMECCLEAR0100]
;
		LDA	<ENCONT,X
		CLC
		ADC	<ENWRK2,X
		AND	#0003FH
		STA	<ENCONT,X
		RTL
;
;
KAMECWRITE	EQU	$
		LDA	!ENCHPT,X
		BNE	KAMECWRITE00F0		; 回転オブジェ使用？ [no->KAMECWRITE00F0]
;
		LDA	!ENTROB,X
		BMI	KAMECWRITE00F0		; 回転オブジェ使用？ [no->KAMECWRITE00F0]
;
		I16				; index 16bit mode !!
;
		LDA	#00010H
		STA	R8			; (R8) <- 中心Ｘ
		LDA	#0001FH
		STA	R9			; (R9) <- 中心Ｙ
		LDA	<ENCONT,X
		STA	R6			; (R6) <- 倍率
		LDA	#CIPCHD3+60C0H+1
		STA	R12			; (R12) <- キャラクタアドレス
		LDA	#BANK CIPCHD3+60C0H+1
		STA	R13			; (R13) <- キャラクタバンク
		LDY	!ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_X,X
		STA	R3			; (R3) <- ビットマップＸ座標
		LDA	>TROBJ_PLOT_Y,X
		STA	R2			; (R2) <- ビットマップＹ座標
;
		I8				; index 8bit mode !!
;
		M_CHIP	C_32_ZOOM
;
		INC	OBM7WF			; mode 7 OBJ chara DMA "ON"
;
		LDX	<ENINDX
KAMECWRITE00F0	EQU	$
		RTS
;
;
KAMECWRITE2	EQU	$
		LDA	!ENCHPT,X
		BNE	KAMECWRITE200F0		; 回転オブジェ使用？ [no->KAMECWRITE200F0]
;
		LDA	!ENTROB,X
		BMI	KAMECWRITE200F0		; 回転オブジェ使用？ [no->KAMECWRITE200F0]
;
		I16				; index 16bit mode !!
;
		LDA	<ENCONT,X
		STA	R5			; (R5) <- (00 - 3F)
		LDA	<ENWRK2,X
		STA	R12			; (R12) <- 消す量(1 - 8)
		LDY	!ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_X,X
		STA	R3			; (R3) <- ビットマップＸ座標
		LDA	>TROBJ_PLOT_Y,X
		STA	R4			; (R4) <- ビットマップＹ座標
;
		I8				; index 8bit mode !!
;
		M_CHIP	RANDOM_ERASE
;
		INC	OBM7WF			; mode 7 OBJ chara DMA "ON"
;
		LDX	<ENINDX
KAMECWRITE200F0 EQU	$
		RTS
;
;
KAMECWRITE3	EQU	$
		LDA	!ENCHPT,X
		BNE	KAMECWRITE300F0		; 回転オブジェ使用？ [no->KAMECWRITE300F0]
;
		LDA	!ENTROB,X
		BMI	KAMECWRITE300F0		; 回転オブジェ使用？ [no->KAMECWRITE300F0]
;
		I16				; index 16bit mode !!
;
		LDA	<ENCONT,X
		STA	R5			; (R5) <- (00 - 3F)
		LDA	<ENWRK2,X
		STA	R12			; (R12) <- 消す量(1 - 8)
		LDY	!ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_X,X
		STA	R3			; (R3) <- ビットマップＸ座標
		LDA	>TROBJ_PLOT_Y,X
		STA	R4			; (R4) <- ビットマップＹ座標
		LDA	#CIPCHD3+60C0H
		STA	R6			; (R6) <- キャラクタアドレス
		LDA	#BANK CIPCHD3+60C0H
		STA	R7			; (R7) <- キャラクタバンク
		LDA	#0004
		STA	R8			; (R8) <- フラグ
;
		I8				; index 8bit mode !!
;
		M_CHIP	RANDOM_TRNS
;
		INC	OBM7WF			; mode 7 OBJ chara DMA "ON"
;
		LDX	<ENINDX
KAMECWRITE300F0 EQU	$
		RTS
;
;
KAMECWRITEC	EQU	$
		LDA	!ENCHPT,X
		BNE	KAMECWRITEC00F0		; 回転オブジェ使用？ [no->KAMECWRITEC00F0]
;
		LDA	!ENTROB,X
		BMI	KAMECWRITEC00F0		; 回転オブジェ使用？ [no->KAMECWRITEC00F0]
;
		I16				; index 16bit mode !!
;
		LDY	!ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_X,X
		STA	R1
		LDA	>TROBJ_PLOT_Y,X
		STA	R2
;
		I8				; index 8bit mode !!
;
		M_CHIP	OMIT_FULL
;
		INC	OBM7WF			; mode 7 OBJ chara DMA "ON"
;
		LDX	<ENINDX
KAMECWRITEC00F0 EQU	$
		RTS
;
;
KAMECCRCK	EQU	$
		LDY	!ECRSFG,X
		BPL	KAMECCRCK00F0		; プレイヤーとの衝突？ [no->KAMECCRCK00F0]
;[1995.04.06.TH]		BPL	KAMECCRCK0100		; プレイヤーとの衝突？ [no->KAMECCRCK0100]
;[1995.04.06.TH];
;[1995.04.06.TH]		JSL	>EPFOOTCROSS_01
;[1995.04.06.TH]		BCC	KAMECCRCK0080		; 踏まれた？ [no->KAMECCRCK0080]
;[1995.04.06.TH];
;[1995.04.06.TH]		JSL	>PLAYER_REBOUND
;[1995.04.06.TH];
;[1995.04.06.TH]		LDA	#0001CH
;[1995.04.06.TH]		JSL	>SOUND_3_ON		; サウンド セット !!
;[1995.04.06.TH];
;[1995.04.06.TH]		BRA	KAMECCRCK01F0		; 踏まれた？ [yes->KAMECCRCK01F0]
;[1995.04.06.TH];
;[1995.04.06.TH]KAMECCRCK0080	EQU	$
;[1995.04.06.TH]		BEQ	KAMECCRCK00F0		; 衝突？ [no->KAMECCRCK00F0]
;[1995.04.06.TH];
;[1995.04.06.TH]		JSL	>PLFLST
;[1995.04.06.TH];
KAMECCRCK00F0	EQU	$
		RTS
;
;[1995.04.06.TH]KAMECCRCK0100	EQU	$
;[1995.04.06.TH]		DEY
;[1995.04.06.TH]		BMI	KAMECCRCK00F0		; 衝突？ [no->KAMECCRCK00F0]
;[1995.04.06.TH]		BEQ	KAMECCRCK00F0		; 赤ちゃん？ [yes->KAMECCRCK00F0]
;[1995.04.06.TH];
;[1995.04.06.TH]		LDA	!ENMODE,Y
;[1995.04.06.TH]		CMP	#EMOVE
;[1995.04.06.TH]		BNE	KAMECCRCK00F0		; mode move ? [no->KAMECCRCK00F0]
;[1995.04.06.TH];
;[1995.04.06.TH]		LDA	!ENSHOT,Y
;[1995.04.06.TH]		BEQ	KAMECCRCK00F0		; ショット？ [no->KAMECCRCK00F0]
;[1995.04.06.TH];
;[1995.04.06.TH]		TYX
;[1995.04.06.TH]		JSL	>SHOT_EN_KILL
;[1995.04.06.TH];
;[1995.04.06.TH]		LDX	<ENINDX
;[1995.04.06.TH]KAMECCRCK01F0	EQU	$
;[1995.04.06.TH]		LDA	#EFAIL
;[1995.04.06.TH]		STA	!ENMODE,X
;[1995.04.06.TH]		PLA				; pull pull return !!
;[1995.04.06.TH]		RTL
;
;
KAMECPS_SCH	EQU	$
		LDA	!ENXPSL,X
		SEC
		SBC	!PLXPSL
		CLC
		ADC	#Kamec_OffArea
		CMP	#Kamec_OffArea*2
		BCS	KAMECPS_SCH0080		; [->KAMECPS_SCH0080]
;
		LDA	!ENYPSL,X
		SEC
		SBC	!PLYPSL
		CLC
		ADC	#Kamec_OffArea
		CMP	#Kamec_OffArea*2
		BCC	KAMECPS_SCH0100		; [->KAMECPS_SCH0100]
;
KAMECPS_SCH0080 EQU	$
		TXA
		STA	R1
		M_CHIP	SHOTENSR
;
		LDX	<ENINDX
		LDY	R1
		BMI	KAMECPS_SCH00F0		; [->KAMECPS_SCH00F0]
;
		LDA	!ENXPSL,X
		SEC
		SBC	!ENXPSL,Y
		CLC
		ADC	#Kamec_OffArea
		CMP	#Kamec_OffArea*2
		BCS	KAMECPS_SCH00F0		; [->KAMECPS_SCH00F0]
;
		LDA	!ENYPSL,X
		SEC
		SBC	!ENYPSL,Y
		CLC
		ADC	#Kamec_OffArea
		CMP	#Kamec_OffArea*2
		BCC	KAMECPS_SCH0100		; [->KAMECPS_SCH0100]
;
KAMECPS_SCH00F0 EQU	$
		RTS
;
KAMECPS_SCH0100 EQU	$
		LDA	#00031H
		JSL	>SOUND_3_ON		; サウンド セット！！
;
		M8				; memory 8bit mode !!
;
		LDA	!ENMOD2+1,X
		AND	#00100111B
		STA	!ENMOD2+1,X
		STZ	!ENCHPT,X
;
		LDA	<RANDM0
		AND	#001H
		PHP
		JSL	>RANDAM
;
		PLP
		BNE	KAMECPS_SCH0200		; [->KAMECMAGIC0200]
;
		LDA	#KamecClear0
		STA	<ENWRK0,X
;
		M16				; memory 16bit mode !!
;
		LDA	#00100H
		STA	<ENCONT,X
		BRA	KAMECPS_SCH02F0
;
		MEM8
;
KAMECPS_SCH0200 EQU	$
		LDA	#KamecClear1
		STA	<ENWRK0,X
;
		M16				; memory 16bit mode !!
;
		LDA	#Kamec_cdot
		STA	<ENWRK2,X
		LDA	<RANDM0
		AND	#0003FH
		STA	!ENCONT,X
		LDA	#Kamec_cloop
		STA	<ENWRK4,X
KAMECPS_SCH02F0 EQU	$
		PLA				; pull pull return !!
		RTL
;
;
;------------------------------------------------------------------------
;-	fail (カメック)							-
;------------------------------------------------------------------------
;[1995.04.06.TH]KamecFailPtn	EQU	(KAMECFLNIGETM-KAMECFLNIGEPT-1)
KAMECFL		EQU	$
		RTL
;
;
;[1995.04.06.TH]		LDY	!ENWRK6,X
;[1995.04.06.TH]		TYX
;[1995.04.06.TH]		JMP	(KAMECFLMODSEL,X)
;[1995.04.06.TH];
;[1995.04.06.TH]KAMECFLMODSEL	EQU	$
;[1995.04.06.TH]		WORD	KAMECFLINIT
;[1995.04.06.TH]		WORD	KAMECFLUGYA
;[1995.04.06.TH]		WORD	KAMECFLWAIT
;[1995.04.06.TH]		WORD	KAMECFLNIGE
;[1995.04.06.TH];
;[1995.04.06.TH];
;[1995.04.06.TH]KAMECFLINIT	EQU	$
;[1995.04.06.TH]		LDX	<ENINDX
;[1995.04.06.TH]		LDA	#00010H
;[1995.04.06.TH]		STA	!ENGPOW,X
;[1995.04.06.TH]		LDA	#-0200H
;[1995.04.06.TH]		STA	!ENYSPD,X
;[1995.04.06.TH];
;[1995.04.06.TH]		M8				; memory 8bit mode !!
;[1995.04.06.TH];
;[1995.04.06.TH]		LDA	!ENMOD1,X
;[1995.04.06.TH]		AND	#11100000B
;[1995.04.06.TH]		STA	!ENMOD1,X		; ＢＧチェックＯＦＦ！
;[1995.04.06.TH]		LDA	#0007
;[1995.04.06.TH]		STA	!ENCHPT,X
;[1995.04.06.TH]		INC	!ENWRK6,X
;[1995.04.06.TH]		INC	!ENWRK6,X
;[1995.04.06.TH];
;[1995.04.06.TH]		M16				;  memory 16bit mode !!
;[1995.04.06.TH];
;[1995.04.06.TH]KAMECFLINIT00F0 EQU	$
;[1995.04.06.TH]		RTL
;[1995.04.06.TH];
;[1995.04.06.TH];
;[1995.04.06.TH]KAMECFLXMAX	EQU	$
;[1995.04.06.TH]		WORD	-0180H, 00180H
;[1995.04.06.TH];
;[1995.04.06.TH]KAMECFLUGYA	EQU	$
;[1995.04.06.TH]		LDX	<ENINDX
;[1995.04.06.TH]		LDA	!ENYSPD,X
;[1995.04.06.TH]		BMI	KAMECFLINIT00F0		; [->KAMECFLINIT00F0]
;[1995.04.06.TH];
;[1995.04.06.TH]		STZ	!ENGPOW,X
;[1995.04.06.TH]		STZ	!ENYSPD,X
;[1995.04.06.TH];
;[1995.04.06.TH]		LDA	#0003AH
;[1995.04.06.TH]		JSL	>SOUND_3_ON		; サウンド セット !!
;[1995.04.06.TH];
;[1995.04.06.TH]		LDA	#FSMK0
;[1995.04.06.TH]		JSL	>EXINSR			; 煙効果 !!
;[1995.04.06.TH];
;[1995.04.06.TH]		LDA	!ECENTX,X
;[1995.04.06.TH]		STA	!EXXPSL,Y
;[1995.04.06.TH]		LDA	!ECENTY,X
;[1995.04.06.TH]		STA	!EXYPSL,Y
;[1995.04.06.TH]		LDA	#06
;[1995.04.06.TH]		STA	!EXCHPT,Y
;[1995.04.06.TH]		STA	!EXWRK0,Y
;[1995.04.06.TH]		LDA	#04
;[1995.04.06.TH]		STA	!EXTIM0,Y
;[1995.04.06.TH];
;[1995.04.06.TH]		LDA	#DRKEY
;[1995.04.06.TH]		JSL	>ENINSR
;[1995.04.06.TH]		BCC	KAMECFLUGYA00C0		; 鍵セット成功？ [no->KAMECFLUGYA00C0]
;[1995.04.06.TH];
;[1995.04.06.TH]		LDA	!ENXPSL,X
;[1995.04.06.TH]		STA	!ENXPSL,Y
;[1995.04.06.TH]		LDA	!ENYPSL,X
;[1995.04.06.TH]		STA	!ENYPSL,Y
;[1995.04.06.TH]		LDA	!ENWRK8,X
;[1995.04.06.TH]		STA	!ENWRKA,Y
;[1995.04.06.TH]		LDA	!ENWRKA,X
;[1995.04.06.TH]		STA	!ENWRKC,Y
;[1995.04.06.TH];
;[1995.04.06.TH]		M8				; memory 8bit mode !!
;[1995.04.06.TH];
;[1995.04.06.TH]		LDA	#0FFH
;[1995.04.06.TH]		STA	!ENRETN,X
;[1995.04.06.TH]KAMECFLUGYA00C0 EQU	$
;[1995.04.06.TH];
;[1995.04.06.TH]		M8				; memory 8bit mode !!
;[1995.04.06.TH];
;[1995.04.06.TH]		INC	!ENWRK6,X
;[1995.04.06.TH]		INC	!ENWRK6,X
;[1995.04.06.TH]		LDA	!ENMOD2,X
;[1995.04.06.TH]		ORA	#00000100B
;[1995.04.06.TH]		STA	!ENMOD2,X		; 範囲外クリアＯＮ！
;[1995.04.06.TH]		LDA	#KamecFailPtn
;[1995.04.06.TH]		STA	!ENWRK7,X
;[1995.04.06.TH]		TAY
;[1995.04.06.TH]		LDA	KAMECFLNIGEPT,Y
;[1995.04.06.TH]		STA	!ENCHPT,X
;[1995.04.06.TH]		LDA	#003
;[1995.04.06.TH]		STA	!ENTIM0,X
;[1995.04.06.TH]		LDA	!EPXMUK,X
;[1995.04.06.TH]		STA	!ENMUKI,X
;[1995.04.06.TH];
;[1995.04.06.TH]		LDA	#040H
;[1995.04.06.TH]		STA	!ENTIM1,X
;[1995.04.06.TH];
;[1995.04.06.TH]		M16				;  memory 16bit mode !!
;[1995.04.06.TH];
;[1995.04.06.TH]KAMECFLUGYA00F0 EQU	$
;[1995.04.06.TH]		RTL
;[1995.04.06.TH];
;[1995.04.06.TH];
;[1995.04.06.TH]KAMECFLNIGEPT	EQU	$
;[1995.04.06.TH]		HEX	08, 09, 0A, 0B, 0A, 09
;[1995.04.06.TH];
;[1995.04.06.TH]KAMECFLNIGETM	EQU	$
;[1995.04.06.TH];
;[1995.04.06.TH]KAMECASEPOS	EQU	$
;[1995.04.06.TH]		WORD	00008H, -0008H
;[1995.04.06.TH];
;[1995.04.06.TH]KAMECASESPD	EQU	$
;[1995.04.06.TH]		WORD	00040H, -0040H
;[1995.04.06.TH];
;[1995.04.06.TH]KAMECFLWAIT	EQU	$
;[1995.04.06.TH]		LDX	<ENINDX
;[1995.04.06.TH]		LDA	!ENTIM1,X
;[1995.04.06.TH]		BNE	KAMECFLNIGE		; [->KAMECFLNIGE]
;[1995.04.06.TH];
;[1995.04.06.TH]		LDA	#0001BH
;[1995.04.06.TH]		JSL	>SOUND_3_ON		; サウンド セット !!
;[1995.04.06.TH];
;[1995.04.06.TH]		LDA	!EPXMUK,X
;[1995.04.06.TH]		AND	#000FFH
;[1995.04.06.TH]		EOR	#00002H
;[1995.04.06.TH]		STA	!ENMUKI,X
;[1995.04.06.TH]		TAY
;[1995.04.06.TH]		LDA	KAMECFLXMAX,Y
;[1995.04.06.TH]		STA	!ENXMAX,X
;[1995.04.06.TH]		LDA	#-0080H
;[1995.04.06.TH]		STA	!ENGMAX,X
;[1995.04.06.TH]		LDA	#00008H
;[1995.04.06.TH]		STA	!ENXPOW,X
;[1995.04.06.TH]		STA	!ENGPOW,X
;[1995.04.06.TH]		LDA	#00100H
;[1995.04.06.TH]		STA	!ENYSPD,X
;[1995.04.06.TH]		STZ	!ENTIM2,X
;[1995.04.06.TH];
;[1995.04.06.TH]		M8				; memory 8bit mode !!
;[1995.04.06.TH];
;[1995.04.06.TH]		INC	!ENWRK6,X
;[1995.04.06.TH]		INC	!ENWRK6,X
;[1995.04.06.TH];
;[1995.04.06.TH]		M16				; memory 16bit mode !!
;[1995.04.06.TH];
;[1995.04.06.TH]KAMECFLNIGE	EQU	$
;[1995.04.06.TH]		LDX	<ENINDX
;[1995.04.06.TH]		LDA	!ENTIM2,X
;[1995.04.06.TH]		BNE	KAMECFLNIGE0020		; 汗？ [no->KAMECFLNIGE0020]
;[1995.04.06.TH];
;[1995.04.06.TH]		LDY	!ENMUKI,X
;[1995.04.06.TH]		LDA	!ENXPSL,X
;[1995.04.06.TH]		CLC
;[1995.04.06.TH]		ADC	KAMECASEPOS,Y
;[1995.04.06.TH]		STA	<EWORK
;[1995.04.06.TH]		LDA	KAMECASESPD,Y
;[1995.04.06.TH]		STA	<EWORK2
;[1995.04.06.TH]		LDA	#ASE01
;[1995.04.06.TH]		JSL	>EXINSR
;[1995.04.06.TH];
;[1995.04.06.TH]		LDA	<EWORK
;[1995.04.06.TH]		STA	!EXXPSL,Y
;[1995.04.06.TH]		LDA	!ENYPSL,X
;[1995.04.06.TH]		SEC
;[1995.04.06.TH]		SBC	#0008
;[1995.04.06.TH]		STA	!EXYPSL,Y
;[1995.04.06.TH]		LDA	<EWORK2
;[1995.04.06.TH]		STA	!EXXSPD,Y
;[1995.04.06.TH]		LDA	#-0080H
;[1995.04.06.TH]		STA	!EXYSPD,Y
;[1995.04.06.TH]		LDA	!ENMUKI,X
;[1995.04.06.TH]		STA	!EXMUKI,Y
;[1995.04.06.TH]		LDA	#0008
;[1995.04.06.TH]		STA	!EXTIM0,Y
;[1995.04.06.TH];
;[1995.04.06.TH]		LDA	#0008
;[1995.04.06.TH]		STA	!ENTIM2,X
;[1995.04.06.TH]KAMECFLNIGE0020 EQU	$
;[1995.04.06.TH]		LDA	!ENTIM0,X
;[1995.04.06.TH]		BNE	KAMECFLNIGE00F0		; pattern change ? [no->KAMECFLNIGE00F0]
;[1995.04.06.TH];
;[1995.04.06.TH]		M8				; memory 8bit mode !!
;[1995.04.06.TH];
;[1995.04.06.TH]		DEC	!ENWRK7,X
;[1995.04.06.TH]		BPL	KAMECFLNIGE0040		; Max Pattern ? [no->KAMECFLNIGE0040]
;[1995.04.06.TH];
;[1995.04.06.TH]		LDA	#KamecFailPtn
;[1995.04.06.TH]		STA	!ENWRK7,X
;[1995.04.06.TH]KAMECFLNIGE0040 EQU	$
;[1995.04.06.TH]		LDY	!ENWRK7,X
;[1995.04.06.TH]		LDA	KAMECFLNIGEPT,Y
;[1995.04.06.TH]		STA	!ENCHPT,X
;[1995.04.06.TH]		LDA	#003
;[1995.04.06.TH]		STA	!ENTIM0,X
;[1995.04.06.TH];
;[1995.04.06.TH]		M16				; memory 16bit mode !!
;[1995.04.06.TH];
;[1995.04.06.TH]KAMECFLNIGE00F0 EQU	$
;[1995.04.06.TH]		RTL
;
;
;------------------------------------------------------------------------
;-	initial (カメック魔法)						-
;------------------------------------------------------------------------
MAGICIN		EQU	$
		RTL
;
;
;------------------------------------------------------------------------
;-	move (カメック魔法)						-
;------------------------------------------------------------------------
MAGICMV		EQU	$
		JSL	>ENMDCK			; mode check
;
		JSR	MAGICBGCK
;
		JSR	MAGICPLCRCK
;
		LDA	!ENTIM0,X
		BNE	MAGICMV0070		; pattern change ? [no->MAGICMV0070]
;
		LDA	!ENCHPT,X
		INC	A
		CMP	#12
		BCC	MAGICMV0040		; Max Pattern ? [no->MAGICMV0040]
;
		LDA	#00
MAGICMV0040	EQU	$
		STA	!ENCHPT,X
		LDA	#02
		STA	!ENTIM0,X
MAGICMV0070	EQU	$
		LDA	!ENTIM1,X
		BNE	MAGICMV00A0		; きらきらセット？ [no->MAGICMV00A0]
;
		LDA	#00808H
		JSL	>KIRAKIRA_SET
;
		LDA	#05
		STA	!ENTIM1,X
MAGICMV00A0	EQU	$

		LDY	<ENCONT,X
		TYX
		JMP	(MAGICMVMODSEL,X)
;
MAGICMVMODSEL	EQU	$
		WORD	MAGICWAIT
		WORD	MAGICATCK
;
;
MAGICWAIT	EQU	$
		LDX	<ENINDX
;
		LDA	#00004H
		JSL	>SOUND_3_ON		; サウンド セット !!
;
		LDA	!ENTIM3,X
		BNE	MAGICWAIT00F0		; 攻撃？ [no->MAGICWAIT00F0]
;
		LDA	!PCENTX
		STA	R1			; target X
		LDA	!PCENTY
		STA	R2			; target Y
		LDA	!ECENTX,X
		STA	R3			; my X
		LDA	!ECENTY,X
		STA	R4			; my Y
		LDA	#00200H
		STA	R6			; speed
		M_CHIP	SEARCH_SPEED
;
		LDX	<ENINDX
		LDA	R1
		STA	!ENXMAX,X		; x speed set !!
		ABS16
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		STA	!ENXPOW,X
		LDA	R2
		STA	!ENGMAX,X		; y speed set !!
		ABS16
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		STA	!ENGPOW,X
		INC	<ENCONT,X
		INC	<ENCONT,X
MAGICWAIT00F0	EQU	$
		RTL
;
;
MAGICATCK	EQU	$
		LDX	<ENINDX
		RTL
;
;
MAGICENMYNO	EQU	$
		WORD	KOMO1, PONTA, HEIH0, TIMKN
;
MAGICBGCK	EQU	$
;
		I16				; index 16bit mode !!
;
		LDA	!ENWRKC,X
		TAX
;[1995.05.29.MO]		LDA	>ENBGCK_TYPE_C,X
;[1995.05.29.MO]		AND	#1111100000000000B
;[1995.05.29.MO]		CMP	#QB
;[1995.05.29.MO]		BEQ	MAGICBGCK0080		; 卵ブロック？ [yes->MAGICBGCK0080]
;[1995.05.29.MO];
		LDA	>ENBGCK_UNIT_C,X
		CMP	#UT9DC7
		BEQ	MAGICBGCK0080		; チェンジブロック？ [yes->MAGICBGCK0080]
;
MAGICBGCK0040	EQU	$
;
		I8				; index 8bit mode !!
;
		LDX	<ENINDX
		RTS
;
		IDX16
;
MAGICBGCK0080	EQU	$
		LDA	>ENBGCK_X_C,X
		AND	#0FFF0H
		STA	<EWORK
		STA	!BGXPS1			;BG write X pos set
		LDA	>ENBGCK_Y_C,X
		AND	#0FFF0H
		STA	<EWORK2
		STA	!BGYPS1			;    "    Y   "
;
		I8				; index 8bit mode !!
;
		LDA	#BGCG
		STA	!BGCGNO			; " change type no. set
		LDA	#UT0000
		STA	!BGUTNO			;     "    unit no.
		JSL	>UNITCHG
;
		LDA	#00015H
		JSL	>SOUND_3_ON		; サウンド セット！！
;
		LDX	<ENINDX
		LDA	#FSMK0
		JSL	>EXINSR
;
		LDA	<EWORK
		STA	!EXXPSL,Y
		LDA	<EWORK2
		STA	!EXYPSL,Y
		LDA	#06
		STA	!EXCHPT,Y
		STA	!EXWRK0,Y
		LDA	#04
		STA	!EXTIM0,Y
;
		LDA	<RANDM0
		AND	#00006H
		TAY
		LDA	MAGICENMYNO,Y
		TXY
		JSL	>ESTATST
;
		LDA	!EPXMUK,X
		AND	#000FFH
		STA	!ENMUKI,Y
		LDA	<EWORK
		STA	!ENXPSL,Y
		LDA	<EWORK2
		STA	!ENYPSL,Y
		LDA	#EINIT
		STA	!ENMODE,Y
;
		PLA				; pull pull return !!
		RTL
;
;
MAGICPLCRCK	EQU	$
		LDY	!ECRSFG,X
		BMI	MAGICPLCRCK0040		; プレイヤーとの衝突？ [yes->MAGICPLCRCK0040]
;
		RTS
;
MAGICPLCRCK0040 EQU	$
		JSL	>PLFLST
;
		PLA
		JMP	>ENCLEAR
;
;
;------------------------------------------------------------------------
;-	initial (チューリップ)						-
;------------------------------------------------------------------------
TulipRevAdd	EQU	00055H
TulipZomAdd	EQU	00001H
TulipRevAdd2	EQU	00100H
TulipZomAdd2	EQU	00003H
Tulip_cntxw	EQU	08H
Tulip_cntyw	EQU	08H
Tulip_cntyw2	EQU	10H
Tulip_widex	EQU	08H
Tulip_widey	EQU	0AH
Tulip_widey2	EQU	06H
;
TulipEat	EQU	(TulipIn-TULIPMVMODSEL)
;
TULIPIN		EQU	$
		JSL	>EXIST_CHECK2
		BEQ	TULIPIN0040		; コイン取った？ [no->TULIPIN0040]
;
		JMP	>ENCLEAR
;
TULIPIN0040	EQU	$
		STZ	!ENMUKI,X
		JSL	>TROBJ_SR_6x4_CL
;
;;;;;;;;		LDA	#00000H
;;;;;;;;		STA	<ENCONT,X		; 花びらの角度
		LDA	#00100H
		STA	<ENWRK0,X		; 顔のＹ倍率
;;;;;;;;		STA	<ENWRK4,X		; 顔のＸ倍率
		STA	!ENWRK6,X		; 花びらのＸ倍率
		STA	!ENWRK8,X		; 花びらのＹ倍率
;
		JSR	TULIPCHRSET
;
		LDA	#Tulip_cntxw
		STA	!ECNTXW,X
		JSL	>TULIPHITDTST
;
		RTL
;
;
;------------------------------------------------------------------------
;-	move (チューリップ)						-
;------------------------------------------------------------------------
TULIPTIMKNYSP	EQU	$
		WORD	0FD00H, 0FD80H, 0FC00H, 0FC80H
		WORD	0FD40H, 0FDC0H, 0FC40H, 0FCC0H
;
TULIPMV		EQU	$
		JSR	TULIPOAMSET
;
		JSL	>ENMDCK			; mode check
;
		LDY	<ENWRK2,X
		TYX
		JMP	(TULIPMVMODSEL,X)
;
TULIPMVMODSEL	EQU	$
		WORD	TULIPOPEN
		WORD	TULIPCLOSE
TulipIn		WORD	TULIPCLOSE2
		WORD	TULIPTAME
		WORD	TULIPHAKI
		WORD	TULIPMODORI
		WORD	TULIPCLEAR
;
;
TULIPOPEN	EQU	$
		LDX	<ENINDX
		JSR	TULIPCHRSET
;
		JSR	TULIPCRCK
;
		LDA	<ENCONT,X
		CMP	#01FE0H
		BCC	TULIPOPEN0080		; Ｍａｘ？ [no->TULIPOPEN0080]
;
		LDA	#01FE0H
		STA	<ENCONT,X
		LDA	#000A0H
		STA	<ENWRK0,X
;
		M8				; memory 8bit mode !!
;
		INC	<ENWRK2,X
		INC	<ENWRK2,X
;
		M16				; memory 16bit mode !!
;
		BRA	TULIPHITDTST
;
TULIPOPEN0080	EQU	$
		CLC
		ADC	#TulipRevAdd
		STA	<ENCONT,X
		LDA	<ENWRK0,X
		SEC
		SBC	#TulipZomAdd
		STA	<ENWRK0,X
;
TULIPHITDTST	EQU	$
		LDA	<ENCONT,X
		XBA
		AND	#000FFH
		LSR	A
		LSR	A
		LSR	A
		STA	<EWORK
		CLC
		ADC	#Tulip_cntyw
		STA	!ECNTYW,X
		LDA	#Tulip_widex
		CLC
		ADC	<EWORK
		STA	!EWIDEX,X
		LDA	#Tulip_widey
		SEC
		SBC	<EWORK
		STA	!EWIDEY,X
		RTL
;
;
TULIPCLOSE	EQU	$
		LDX	<ENINDX
		JSR	TULIPCHRSET
;
		JSR	TULIPCRCK
;
		LDA	<ENCONT,X
		BNE	TULIPCLOSE0080		; Ｍｉｎ？ [no->TULIPCLOSE0080]
;
		STZ	<ENCONT,X
		LDA	#00100H
		STA	<ENWRK0,X
;
		M8				; memory 8bit mode !!
;
		STZ	<ENWRK2,X
;
		M16				; memory 16bit mode !!
;
		BRA	TULIPHITDTST
;
TULIPCLOSE0080	EQU	$
		SEC
		SBC	#TulipRevAdd
		STA	<ENCONT,X
		LDA	<ENWRK0,X
		CLC
		ADC	#TulipZomAdd
		STA	<ENWRK0,X
		BRA	TULIPHITDTST
;
;
TULIPCLOSE2	EQU	$
		LDX	<ENINDX
		JSR	TULIPCHRSET
;
		JSR	TULIPCRCK2
;
		LDA	<ENCONT,X
		BNE	TULIPCLOSE20080		; Ｍｉｎ？ [no->TULIPCLOSE20080]
;
		STZ	<ENCONT,X
		LDA	#00100H
		STA	<ENWRK0,X
;
		LDA	#Tulip_cntyw2
		STA	!ECNTYW,X
		LDA	#Tulip_widex
		STA	!EWIDEX,X
		LDA	#Tulip_widey2
		STA	!EWIDEY,X
;
		LDA	!TIMER
		BEQ	TULIPCLOSE20060		; [->TULIPCLOSE20060]
;
		STA	!4204H
		LDY	#10
		STY	!4206H
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		LDA	!4214H
TULIPCLOSE20060 EQU	$
;
		M8				; memory 8bit mode !!
;
		STA	<EWORK
		LDA	#30
		SEC
		SBC	<EWORK
		STA	!ENWRKD,X
		LDA	#08			;[1995.05.27.SA]#06
		STA	!ENWRKC,X
		INC	<ENWRK2,X
		INC	<ENWRK2,X
;
		M16				; memory 16bit mode !!
;
		JSL	>NON_EXIST_SET		; コイン取ったフラグＯＮ！
;
		RTL
;
TULIPCLOSE20080 EQU	$
		SEC
		SBC	#TulipRevAdd2
		BPL	TULIPCLOSE200A0		; [->TULIPCLOSE200A0]
;
		LDA	#0000
TULIPCLOSE200A0 EQU	$
		STA	<ENCONT,X
		LDA	<ENWRK0,X
		CLC
		ADC	#TulipZomAdd2
		CMP	#00100H
		BCC	TULIPCLOSE200C0		; [->TULIPCLOSE200C0]
;
		LDA	#00100H
TULIPCLOSE200C0 EQU	$
		STA	<ENWRK0,X
		JMP	TULIPHITDTST
;
;
TULIPTAME0080	EQU	$
		CLC
		ADC	#0002
		STA	!ENWRK6,X
		LDA	!ENWRK8,X
		SEC
		SBC	#0008
		STA	!ENWRK8,X
		STA	<ENWRK0,X
		RTL
;
TULIPTAME	EQU	$
		LDX	<ENINDX
		JSR	TULIPCHRSET2
;
		JSR	TULIPCRCK2
;
;;;;;;;;		LDA	!ENTIM0,X
;;;;;;;;		BNE	TULIPTAME0070		; Wait ? [yes->TULIPTAME0070]
;
		LDA	!ENWRK6,X
		CMP	#00120H
		BCC	TULIPTAME0080		; [->TULIPTAME0080]
;
		LDA	#00120H
		STA	!ENWRK6,X
		LDA	#00080H
		STA	!ENWRK8,X
		STA	<ENWRK0,X
;
		LDY	!ENWRKD,X
		BEQ	TULIPTAME0030		; タイム君セット？ [no->TULIPTAME0030]
		BPL	TULIPTAME0038		; タイム君セット？ [yes->TULIPTAME0038]
;
TULIPTAME0030	EQU	$
		LDA	#00100H
		STA	<EWORK
		LDA	#00140H
		STA	<EWORK2
		LDA	#00010H
		STA	<EWORK4
		LDA	#COIN1
		BRA	TULIPTAME0040		; [->TULIPTAME0040]
;
TULIPTAME0038	EQU	$
		LDA	#00180H
		STA	<EWORK
		STZ	<EWORK2
		STZ	<EWORK4
		LDA	#TIMKN
TULIPTAME0040	EQU	$
		JSL	>ENINSR
		BCC	TULIPTAME0060		; 敵確保失敗？ [yes->TULIPTAME0060]
;
		LDA	!ENXPSL,X
		STA	!ENXPSL,Y
		LDA	!ENYPSL,X
		SEC
		SBC	#00010H
		STA	!ENYPSL,Y
		LDA	<RANDM0
		AND	#0000EH
		TAX
		LDA	>QKM_COIN_XSP,X
		STA	!ENXSPD,Y
		LDA	<RANDM0
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		AND	#0000EH
		TAX
		LDA	TULIPTIMKNYSP,X
		STA	!ENYSPD,Y
		LDX	<ENINDX
		LDA	<EWORK
		STA	!ENTIM0,Y
		LDA	<EWORK2
		STA	!ENTIM1,Y
		LDA	<EWORK4
		STA	!ENTIM2,Y
;
TULIPTAME0060	EQU	$
		LDA	#0006eH
		JSL	>SOUND_3_ON		; サウンド セット !!
;
		M8				; memory 8bit mode !!
;
		DEC	!ENWRKC,X
		DEC	!ENWRKD,X
		INC	<ENWRK2,X
		INC	<ENWRK2,X
;
		M16				; memory 16bit mode !!
;
TULIPTAME0070	EQU	$
		RTL
;
;
TULIPHAKI	EQU	$
		LDX	<ENINDX
		JSR	TULIPCHRSET2
;
		JSR	TULIPCRCK2
;
		LDA	!ENWRK6,X
		CMP	#000F0H+1
		BCS	TULIPHAKI0080		; [->TULIPHAKI0080]
;
		LDA	#000F0H
		STA	!ENWRK6,X
		LDA	#00100H
		STA	!ENWRK8,X
		STA	<ENWRK0,X
;
		M8				; memory 8bit mode !!
;
		INC	<ENWRK2,X
		INC	<ENWRK2,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
TULIPHAKI0080	EQU	$
		SEC
		SBC	#0000CH
		STA	!ENWRK6,X
		LDA	!ENWRK8,X
		CLC
		ADC	#00020H
		STA	!ENWRK8,X
		STA	<ENWRK0,X
		RTL
;
;
TULIPMODORI	EQU	$
		LDX	<ENINDX
		JSR	TULIPCHRSET2
;
		JSR	TULIPCRCK2
;
		LDA	!ENWRK6,X
		CMP	#00100H
		BCC	TULIPMODORI0080		; [->TULIPMODORI0080]
;
		LDA	#00100H
		STA	!ENWRK6,X
;
		LDY	!ENWRKC,X
		BNE	TULIPMODORI0040		; [->TULIPMODORI0040]
;
		LDA	#sec02
		STA	!ENTIM0,X
		STZ	!ENWRKA,X
		STZ	!ENWRKC,X
;
		M8				; memory 8bit mode !!
;
		INC	<ENWRK2,X
		INC	<ENWRK2,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
TULIPMODORI0040 EQU	$
;;;;;;;;		LDA	#00010H
;;;;;;;;		STA	!ENTIM0,X
;
		M8				; memory 8bit mode !!
;
		LDA	<ENWRK2,X
		SEC
		SBC	#04
		STA	<ENWRK2,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
TULIPMODORI0080 EQU	$
		CLC
		ADC	#0001
		STA	!ENWRK6,X
		RTL
;
;
TULIPCLEAR	EQU	$
		LDX	<ENINDX
		JSR	TULIPCHRSET2
;
		LDA	!ENTIM0,X
		BEQ	TULIPCLEAR0100		; 終了？ [yes->TULIPCLEAR0100]
;
		LDY	!ENYUSN,X
		CPY	#0FFH
		BNE	TULIPCLEAR0040		; 見えてる？ [yes->TULIPCLEAR0040]
;
		LDA	#01
		STA	!ENYUSN,X
		BRA	TULIPCLEAR00F0
;
TULIPCLEAR0040	EQU	$
		LDA	!ENWRKC,X
		CLC
		ADC	!ENWRKA,X
		STA	!ENWRKC,X
		BIT	#0FF00H
		BEQ	TULIPCLEAR0060		; 消える？ [no->TULIPCLEAR0060]
;
		AND	#000FFH
		STA	!ENWRKC,X
		LDA	#000FFH
		STA	!ENYUSN,X
TULIPCLEAR0060	EQU	$
		LDA	!ENWRKA,X
		CLC
		ADC	#0004
		CMP	#00100H
		BMI	TULIPCLEAR0080		; Ｍａｘ？ [no->TULIPCLEAR0080]
;
		LDA	#00100H
TULIPCLEAR0080	EQU	$
		STA	!ENWRKA,X
TULIPCLEAR00F0	EQU	$
		RTL
;
TULIPCLEAR0100	EQU	$
		LDA	#FUSNB
		JSL	>EXINSR
;
		LDA	!ENXPSL,X
		STA	!EXXPSL,Y
		LDA	!ENYPSL,X
		STA	!EXYPSL,Y
		LDA	#0000BH
		STA	!EXWRK0,Y
		LDA	#00004
		STA	!EXTIM0,Y
;
		LDA	#0003BH
		JSL	>SOUND_3_ON		; サウンド セット !!
;
		JMP	>ENCLEAR_NORETN
;
;
TULIPOAMSET	EQU	$
		LDY	!ENYUSN,X
		CPY	#0FFH
		BNE	TULIPOAMSET0040		; ＯＡＭセット？ [yes->TULIPOAMSET0040]
;
TULIPOAMSET0030 EQU	$
;
		I8				; index 8bit mode !!
;
TULIPOAMSET0038 EQU	$
		RTS
;
TULIPOAMSET0040 EQU	$
;
		I16				; index 16bit mode !!
;
		LDY	!ENOAML,X
		BMI	TULIPOAMSET0030		; ＯＡＭセット？ [no->TULIPOAMSET0030]
;
		LDA	!ENTROB,X
		BMI	TULIPOAMSET0030		; ＯＡＭセット？ [no->TULIPOAMSET0030]
;
		TAX
		LDA	>TROBJ_CHAR_NO,X
		STA	!CCWORK0
		LDA	>TROBJ_CHAR_NO+2,X
		STA	!CCWORK1
		LDA	>TROBJ_CHAR_NO+4,X
		STA	!CCWORK2
		LDA	>TROBJ_CHAR_NO+6,X
		STA	!CCWORK3
		LDA	>TROBJ_CHAR_NO+8,X
		STA	!CCWORK4
		LDA	>TROBJ_CHAR_NO+0CH,X
		STA	!CCWORK5
;
		I8				; index 8bit mode !!
;
		M_CHIP	TULIP_OAM_SET
;
		LDX	<ENINDX
		RTS
;
;
TULIPCHRSET	EQU	$
;
		I16				; index 16bit mode !!
;
		LDA	#0008
		STA	R8			; (R8) <- 中心Ｘ
		LDA	#0001FH
		STA	R9			; (R9) <- 中心Ｙ
;;;;;;;;		LDA	<ENWRK4,X
		LDA	#00100H
		STA	R6			; (R6) <- Ｘ倍率
		LDA	<ENWRK0,X
		STA	R11			; (R11) <- Ｙ倍率
		LDA	#CIPCHD3+0030H+1
		STA	R12			; (R12) <- キャラクタアドレス
		LDA	#BANK CIPCHD3+0030H+1
		STA	R13			; (R13) <- キャラクタバンク
;
		LDY	!ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_X,X
		CLC
		ADC	#00020H
		STA	R3			; (R3) <- ビットマップＸ座標
		LDA	>TROBJ_PLOT_Y,X
		STA	R2			; (R2) <- ビットマップＹ座標
;
		I8				; index 8bit mode !!
;
		M_CHIP	C_1632_ZOOM_XY
;
		LDX	<ENINDX
;
		I16				; index 16bit mode !!
;
		LDA	<ENCONT,X
		XBA
		AND	#000FFH
		STA	R5			; (R5) <- 回転角度
		LDA	#00100H
		STA	R6			; (R6) <- 倍率
		LDA	#CIPCHD3+0060H+1
		STA	R12			; (R12) <- キャラクタアドレス
		LDA	#BANK CIPCHD3+0060H+1
		STA	R13			; (R13) <- キャラクタバンク
		LDY	!ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_X,X
		STA	R3			; (R3) <- ビットマップＸ座標
		LDA	>TROBJ_PLOT_Y,X
		STA	R2			; (R2) <- ビットマップＹ座標
;
		I8				; index 8bit mode !!
;
		M_CHIP	C_32_ROTZOM
;
		LDX	<ENINDX
;
		INC	OBM7WF			; mode 7 OBJ chara DMA "ON"
;
		RTS
;
;
TULIPCHRSET2	EQU	$
;
		I16				; index 16bit mode !!
;
		LDA	#0008
		STA	R8			; (R8) <- 中心Ｘ
		LDA	#0001FH
		STA	R9			; (R9) <- 中心Ｙ
;;;;;;;;		LDA	<ENWRK4,X
		LDA	#00100H
		STA	R6			; (R6) <- Ｘ倍率
		LDA	<ENWRK0,X
		STA	R11			; (R11) <- Ｙ倍率
		LDA	#CIPCHD3+0030H+1
		STA	R12			; (R12) <- キャラクタアドレス
		LDA	#BANK CIPCHD3+0030H+1
		STA	R13			; (R13) <- キャラクタバンク
;
		LDY	!ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_X,X
		CLC
		ADC	#00020H
		STA	R3			; (R3) <- ビットマップＸ座標
		LDA	>TROBJ_PLOT_Y,X
		STA	R2			; (R2) <- ビットマップＹ座標
;
		I8				; index 8bit mode !!
;
		M_CHIP	C_1632_ZOOM_XY
;
		LDX	<ENINDX
;
		I16				; index 16bit mode !!
;
		LDA	#00018H
		STA	R8			; (R8) <- 中心Ｘ
		LDA	#0001FH
		STA	R9			; (R9) <- 中心Ｙ
		LDA	!ENWRK6,X
		STA	R6			; (R6) <- Ｘ倍率
		LDA	!ENWRK8,X
		STA	R11			; (R11) <- Ｙ倍率
		LDA	#CIPCHD3+0060H+1
		STA	R12			; (R12) <- キャラクタアドレス
		LDA	#BANK CIPCHD3+0060H+1
		STA	R13			; (R13) <- キャラクタバンク
;
		LDY	!ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_X,X
		STA	R3			; (R3) <- ビットマップＸ座標
		LDA	>TROBJ_PLOT_Y,X
		STA	R2			; (R2) <- ビットマップＹ座標
;
		I8				; index 8bit mode !!
;
		M_CHIP	C_32_ZOOM_XY
;
		LDX	<ENINDX
;
		INC	OBM7WF			; mode 7 OBJ chara DMA "ON"
;
TULIPCHRSET20F0 EQU	$
		RTS
;
;
TULIPREBXSPD	EQU	$
		WORD	-0100H, 00100H
;
TULIPREBYSPD	EQU	$
		WORD	-0100H, 00100H
;
TULIPCRCK	EQU	$
		LDY	!ECRSFG,X
		BMI	TULIPCHRSET20F0		; プレイヤー？ [yes->TULIPCHRSET20F0]
;
;[1995.06.20.TU]		DEY
;[1995.06.20.TU]		BMI	TULIPCHRSET20F0		; 当たった？ [no->TULIPCHRSET20F0]
;[1995.06.20.TU]		BEQ	TULIPCHRSET20F0		; 赤ちゃん？ [yes->TULIPCHRSET20F0]
;[1995.06.20.TU];
		PHX
		TXA
		STA	R1
		M_CHIP	MY_ENCROS2
		PLX
;
		LDY	R14
		BMI	TULIPCHRSET20F0		; 当たった？ [no->TULIPCHRSET20F0]
		BEQ	TULIPCHRSET20F0		; 赤ちゃん？ [yes->TULIPCHRSET20F0]
;
		LDA	!ENMODE,Y
		CMP	#EMOVE
		BNE	TULIPCHRSET20F0		; mode move ? [no->TULIPCHRSET20F0]
;
		LDA	!ENSHOT,Y
		BEQ	TULIPCHRSET20F0		; ショット？ [no->TULIPCHRSET20F0]
;
		LDA	!ENYSPD,Y
		BMI	TULIPCRCK0080		; [->TULIPCRCK0080]
;
		LDA	!ECENTX,X
		SEC
		SBC	!ECENTX,Y
		CLC
		ADC	#000EH
		CMP	#000EH*2
		BCS	TULIPCRCK0080		; [->TULIPCRCK0080]
;
		LDA	!EWIDEY,X
		INC	A
		LSR	A
		STA	<EWORK
		CLC
		ADC	!EWIDEY,Y
		STA	<EWORK2
		LDA	!ECENTY,X
		SEC
		SBC	<EWORK
		SEC
		SBC	!ECENTY,Y
		ABS16
		CMP	<EWORK2
		BEQ	TULIPCRCK0040		; [->TULIPCRCK0040]
		BPL	TULIPCRCK0080		; [->TULIPCRCK0080]
;
TULIPCRCK0040	EQU	$
		LDA	!ENMYNO,Y
;[1995.05.02.TU]		CMP	#EGG00
;[1995.05.02.TU]		BCC	TULIPCRCK0080		; [->TULIPCRCK0080]
;[1995.05.02.TU];
;[1995.05.02.TU]		CMP	#KAMO1+1
;[1995.05.02.TU]		BCS	TULIPCRCK0080		; [->TULIPCRCK0080]
;[1995.05.02.TU];
		STA	!ENWRKA,X		; Eat Enemy Save !!
;
		TYX
		JSL	>ENCLEAR_NORETN
;
		LDX	<ENINDX
;
		LDA	#00014H
		JSL	>SOUND_3_ON		; サウンド セット !!
;
		M8				; memory 8bit mode !!
;
		LDA	!ENMOD2,X
		AND	#11110011B
		STA	!ENMOD2,X		; 範囲外クリアＯＦＦ！！
		LDA	#TulipEat
		STA	<ENWRK2,X
		LDA	#0FFH
		STA	!ENRETN,X
;
		M16				; memory 16bit mode !!
;
		PLA				; pull pull return !!
		RTL
;
TULIPCRCK0080	EQU	$
		LDA	#TULIPREBXSPD
		STA	<EWORK
		LDA	#TULIPREBYSPD
		STA	<EWORK2
		LDA	!ENXPSL,X
		SEC
		SBC	!ENXPSL,Y
		BPL	TULIPCRCK00A0		; [->TULIPCRCK00A0]
;
		INC	<EWORK
		INC	<EWORK
TULIPCRCK00A0	EQU	$
		LDA	!ENYPSL,X
		SEC
		SBC	!ENYPSL,Y
		BPL	TULIPCRCK00B0		; [->TULIPCRCK00B0]
;
		INC	<EWORK2
		INC	<EWORK2
TULIPCRCK00B0	EQU	$
		LDA	(<EWORK)
		STA	!ENXSPD,Y
		LDA	(<EWORK2)
		STA	!ENYSPD,Y
		LDA	!ENMYNO,Y
		CMP	#EGG00
		BCC	TULIPCRCK00C0		; 卵？ [no->TULIPCRCK00C0]
;
		CMP	#EGG09+1
		BCS	TULIPCRCK00C0		; 卵？ [no->TULIPCRCK00C0]
;
		LDA	#00040H
		STA	!ENGPOW,Y
TULIPCRCK00C0	EQU	$
		LDA	#00049H
		JSL	>SOUND_3_ON		; サウンド セット !!
;
TULIPCRCK00F0	EQU	$
		RTS
;
;
TULIPCRCK2	EQU	$
		LDY	!ECRSFG,X
		BMI	TULIPCRCK00F0		; プレイヤー？ [yes->TULIPCRCK00F0]
;
;[1995.06.20.TU]		DEY
;[1995.06.20.TU]		BMI	TULIPCRCK00F0		; 当たった？ [no->TULIPCRCK00F0]
;[1995.06.20.TU]		BEQ	TULIPCRCK00F0		; 赤ちゃん？ [yes->TULIPCRCK00F0]
;[1995.06.20.TU];
		PHX
		TXA
		STA	R1
		M_CHIP	MY_ENCROS2
		PLX
;
		LDY	R14
		BMI	TULIPCRCK00F0		; 当たった？ [no->TULIPCRCK00F0]
		BEQ	TULIPCRCK00F0		; 赤ちゃん？ [yes->TULIPCRCK00F0]
;
		LDA	!ENMODE,Y
		CMP	#EMOVE
		BNE	TULIPCRCK00F0		; mode move ? [no->TULIPCRCK00F0]
;
		LDA	!ENSHOT,Y
		BEQ	TULIPCRCK00F0		; ショット？ [no->TULIPCRCK00F0]
;
		BRA	TULIPCRCK0080
;
;------------------------------------------------------------------------
;-	initial (水中プクプク)						-
;------------------------------------------------------------------------
WpkpkDownMode	EQU	(WpkpkDown-WPKPKMODSEL)
;
WPKPKXMAX	EQU	$
		WORD	-0100H, 00100H
;
WPKPKCOL	EQU	$
		WORD	0007<<1, 0006<<1
;
WPKPKMOD1	EQU	$
		WORD	0000000001100001B, 0000010010100001B
;
WPKPKIN		EQU	$
		LDY	!ENMUKI,X
		LDA	WPKPKXMAX,Y
		STA	!ENXMAX,X
		LDA	#0004
		STA	!ENXPOW,X
;
		LDA	!ENXPSL,X
		AND	#00010H
		LSR	A
		LSR	A
		LSR	A
		STA	<ENCONT,X
		TAY
		LDA	!ENCLOR,X
		ORA	WPKPKCOL,Y
		STA	!ENCLOR,X
		LDA	WPKPKMOD1,Y
		STA	!ENMOD1,X
;
		M8				; memory 8bit mode !!
;
		LDA	#0FFH
		STA	<ENWRK4,X		; Water Flag Set !!
		STA	!ENWATR+1,X
;
;
		M16				; memory 16bit mode !!
;
		RTL
;
;
;------------------------------------------------------------------------
;-	move (水中プクプク)						-
;------------------------------------------------------------------------
WPKPKMV		EQU	$
		JSL	>ENMDCK			; mode check
;
;[1995.06.09.FR]		JSL	>NKNKPLCRSCK		; どすんで踏まれたかチェック！！
;[1995.06.09.FR];
		JSL	>WPKPKWATRCK
;
		JSL	>WPKPKBGCK
;
		JSR	WPKPKPLCRCK
;
		LDY	<ENCONT,X
		TYX
		JMP	(WPKPKMVMODSEL,X)
;
WPKPKMVMODSEL	EQU	$
		WORD	WPKPKNM
		WORD	WPKPKSH
;
;
WPKPKNM		EQU	$
		LDX	<ENINDX
		LDY	<ENWRK0,X
		TYX
		JMP	(WPKPKMODSEL,X)
;
WPKPKMODSEL	EQU	$
		WORD	WPKPKSPDUP
WpkpkDown	WORD	WPKPKSPDDN
;
;
WPKPKSH		EQU	$
		LDX	<ENINDX
		LDY	<ENWRK0,X
		TYX
		JMP	(WPKPKMODSEL2,X)
;
WPKPKMODSEL2	EQU	$
		WORD	WPKPKSPDUP
		WORD	WPKPKSPDDN2
;
;
WPKPKSPDUP	EQU	$
		LDX	<ENINDX
		LDA	!ENXPOW,X
		BEQ	WPKPKSPDUP0030		; [->WPKPKSPDUP0030]
;
		ASL	A
		STA	<EWORK
		LDA	!ENXSPD,X
		SEC
		SBC	!ENXMAX,X
		CLC
		ADC	!ENXPOW,X
		CMP	<EWORK
		BEQ	WPKPKSPDUP0030		; 減速？ [yes->WPKPKSPDUP0030]
		BCS	WPKPKSPDUP0080		; 減速？ [no->WPKPKSPDUP0080]
;
WPKPKSPDUP0030	EQU	$
		LDA	!ENGPOW,X
		BEQ	WPKPKSPDUP0040		; [->WPKPKSPDUP0040]
;
		ASL	A
		STA	<EWORK
		LDA	!ENYSPD,X
		SEC
		SBC	!ENGMAX,X
		CLC
		ADC	!ENGPOW,X
		CMP	<EWORK
		BEQ	WPKPKSPDUP0040		; 減速？ [no->WPKPKSPDUP0040]
		BCS	WPKPKSPDUP0080		; 減速？ [no->WPKPKSPDUP0080]
;
WPKPKSPDUP0040	EQU	$
		STZ	!ENXMAX,X
		STZ	!ENGMAX,X
;
		M8				; memory 8bit mode !!
;
		LDA	#01
		STA	!ENCHPT,X
		INC	<ENWRK0,X
		INC	<ENWRK0,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
WPKPKSPDUP0080	EQU	$
		LDA	!ENTIM0,X
		BNE	WPKPKSPDUP00F0		; pattern change ? [no->WPKPKSPDUP00F0]
;
		M8				; memory 8bit mode !!
;
		LDA	#04
		STA	!ENTIM0,X
		LDA	!ENCHPT,X
		EOR	#01
		STA	!ENCHPT,X
;
		M16				; memory 16bit mode !!
;
WPKPKSPDUP00F0	EQU	$
		RTL
;
;
WPKPKSPDDN2	EQU	$
		LDX	<ENINDX
		LDA	!EPXMUK,X
		AND	#000FFH
		STA	!ENMUKI,X
;
		LDA	!ENXPOW,X
		BEQ	WPKPKSPDDN20010		; 加速？ [yes->WPKPKSPDDN20010]
;
		ASL	A
		STA	<EWORK
		LDA	!ENXSPD,X
		SEC
		SBC	!ENXMAX,X
		CLC
		ADC	!ENXPOW,X
		CMP	<EWORK
		BEQ	WPKPKSPDDN20010		; 加速？ [yes->WPKPKSPDDN20010]
		BCS	WPKPKSPDDN20020		; 加速？ [no->WPKPKSPDDN20020]
;
WPKPKSPDDN20010 EQU	$
		LDA	!ENGPOW,X
		BEQ	WPKPKSPDDN20040		; 加速？ [yes->WPKPKSPDDN20040]
;
		ASL	A
		STA	<EWORK
		LDA	!ENYSPD,X
		SEC
		SBC	!ENGMAX,X
		CLC
		ADC	!ENGPOW,X
		CMP	<EWORK
		BEQ	WPKPKSPDDN20040		; 加速？ [yes->WPKPKSPDDN20040]
		BCC	WPKPKSPDDN20040		; 加速？ [yes->WPKPKSPDDN20040]
;
WPKPKSPDDN20020 EQU	$
		JMP	WPKPKSPDDN0080
;
WPKPKSPDDN20040 EQU	$
		LDA	!PCENTX
		STA	R1			; target X
		LDA	!PCENTY
		STA	R2			; target Y
		LDA	!ECENTX,X
		STA	R3			; my X
		LDA	!ECENTY,X
		STA	R4			; my Y
		LDA	#00200H
		STA	R6			; speed
		M_CHIP	SEARCH_SPEED
;
		LDX	<ENINDX
		LDA	R1
		STA	!ENXMAX,X		; x speed set !!
		ABS16
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		STA	!ENXPOW,X
		LDA	R2
		STA	!ENGMAX,X		; y speed set !!
		ABS16
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		STA	!ENGPOW,X
;
		M8				; memory 8bit mode !!
;
		STZ	!ENCHPT,X
		DEC	<ENWRK0,X
		DEC	<ENWRK0,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
WPKPKSPDDN	EQU	$
		LDX	<ENINDX
		LDA	!ENXSPD,X
		BEQ	WPKPKSPDDN0040		; [->WPKPKSPDDN0040]
;
		LDA	!ENMUKI,X
		DEC	A
		EOR	!ENXSPD,X
		BPL	WPKPKSPDDN0080		; 加速？ [no->WPKPKSPDDN0080]
;
WPKPKSPDDN0040	EQU	$
		LDY	!ENMUKI,X
		LDA	WPKPKXMAX,Y
		STA	!ENXMAX,X
;
		M8				; memory 8bit mode !!
;
		STZ	!ENCHPT,X
		DEC	<ENWRK0,X
		DEC	<ENWRK0,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
WPKPKSPDDN0080	EQU	$
		LDY	<ENWRK1,X
		BNE	WPKPKSPDDN0100		; 瞬き中？ [yes->WPKPKSPDDN0100]
;
		LDA	!ENTIM0,X
		BNE	WPKPKSPDDN00F0		; [->WPKPKSPDDN00F0]
;
		M8				; memory 8bit mode !!
;
		LDA	<RANDM0
		AND	#01FH
		BNE	WPKPKSPDDN00A0		; 瞬き？ [no->WPKPKSPDDN00A0]
;
		LDA	#08
		STA	!ENTIM0,X
		LDA	#02
		STA	!ENCHPT,X
		INC	<ENWRK1,X
WPKPKSPDDN00A0	EQU	$
;
		M16				; memory 16bit mode !!
;
WPKPKSPDDN00F0	EQU	$
		RTL
;
WPKPKSPDDN0100	EQU	$
		LDA	!ENTIM0,X
		BNE	WPKPKSPDDN0180		; [->WPKPKSPDDN0180]
;
		M8				; memory 8bit mode !!
;
		LDA	#01
		STA	!ENCHPT,X
		LDA	#08
		STA	!ENTIM0,X
		STZ	<ENWRK1,X
;
		M16				; memory 16bit mode !!
;
WPKPKSPDDN0180	EQU	$
		RTL
;
;
WPKPKPLCRCK	EQU	$
		LDY	!ECRSFG,X
		BPL	WPKPKPLCRCK00F0		; プレイヤーと当たった？ [no->WPKPKPLCRCK00F0]
;
		JSL	>PLFLST
;
WPKPKPLCRCK00F0 EQU	$
		RTS
;
;
WPKPKWATRCK	EQU	$
		LDY	!ENWATR,X
		BNE	WPKPKWATRCK0080		; [->WPKPKWATRCK0080]
;
		M8				; memory 8bit mode !!
;
		STZ	<ENWRK4,X
;
		M16				; memory 16bit mode !!
;
		LDA	#00040H
		STA	!ENGPOW,X
		LDA	#00400H
		STA	!ENGMAX,X
		PLY
		PLA				; pull pull return !!
		RTL
;
WPKPKWATRCK0080 EQU	$
		LDY	<ENWRK4,X
		BNE	WPKPKWATRCK00F0		; [->WPKPKWATRCK00F0]
;
WPKPKWATRCK0090 EQU	$
		STZ	!ENXMAX,X
		STZ	!ENGMAX,X
		LDA	#0004
		STA	!ENGPOW,X
;
		M8				; memory 8bit mode !!
;
		LDA	#01
		STA	!ENCHPT,X
		LDA	#WpkpkDownMode
		STA	<ENWRK0,X
;
		DEC	<ENWRK4,X
;
		M16				; memory 16bit mode !!
;
		PLY
		PLA				; pull pull return !!
WPKPKWATRCK00F0 EQU	$
		RTL
;
;
WPKPKBGCK	EQU	$
		LDA	<ENCONT,X
		BEQ	WPKPKBGCK00F0		; [->WPKPKBGCK00F0]
;
		LDA	!ENCBFG,X
		BIT	#0000000000001111B
		BNE	WPKPKWATRCK0090		; [->WPKPKWATRCK0090]
;
WPKPKBGCK00F0	EQU	$
		RTL
;
;
;------------------------------------------------------------------------
;-	initial (海月)							-
;------------------------------------------------------------------------
JfishUpMax	EQU	-0100H
JfishDownMax	EQU	00080H
JfishGpow	EQU	00010H
;
JfishMaxPtn	EQU	00003H
;
JFISHHABA	EQU	$
		BYTE	03-1, 03-1, 06-1, 06-1
;
JFISHIN		EQU	$
		LDA	#JfishUpMax
		STA	!ENGMAX,X
		LDA	#JfishGpow
		STA	!ENGPOW,X
		LDA	!ENYPSL,X
		STA	<ENWRK0,X
		LDA	#JfishMaxPtn
		STA	!ENCHPT,X
;
		LDA	!ENXPSL,X
		AND	#00010H
		LSR	A
		LSR	A
		LSR	A
		TAY
		LDA	JFISHHABA,Y
		STA	<ENWRK2,X
		RTL
;
;
;------------------------------------------------------------------------
;-	move (海月)							-
;------------------------------------------------------------------------
JFISHTIME	EQU	$
		WORD	08, 04, 04, 08
;
JFISHMV		EQU	$
		JSL	>ENMDCK			; mode check
;
		JSR	WPKPKPLCRCK
;
		LDY	<ENCONT,X
		TYX
		JSR	(JFISHMVMODSEL,X)
;
JFISHPTCHG	EQU	$
		RTL
;
;
JFISHMVMODSEL	EQU	$
		WORD	JFISHUP00
		WORD	JFISHDOWN
;
JFISHUP00	EQU	$
		LDX	<ENINDX
		LDA	!ENGMAX,X
		BEQ	JFISHUP000010		; [->JFISHUP000010]
;
		LDA	!ENTIM0,X
		BNE	JFISHUP0000F0		; [->JFISHUP0000F0]
;
		DEC	!ENCHPT,X
		BMI	JFISHUP000008		; [->JFISHUP000008]
;
		M8				; memory 8bit mode !!
;
		LDY	!ENCHPT,X
		LDA	JFISHTIME,Y
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
		RTS
;
JFISHUP000008	EQU	$
		LDA	#JfishMaxPtn
		STA	!ENCHPT,X
		STZ	!ENGMAX,X
JFISHUP000010	EQU	$
		LDA	!ENGPOW,X
		ASL	A
		STA	<EWORK
		LDA	!ENYSPD,X
		SEC
		SBC	!ENGMAX,X
		CLC
		ADC	!ENGPOW,X
		CMP	<EWORK
		BCS	JFISHUP0000F0		; [->JFISHUP0000F0]
;
		LDY	<ENWRK3,X
		BNE	JFISHUP000030		; [->JFISHUP000030]
;
		LDA	#JfishDownMax
		STA	!ENGMAX,X
;
		M8				; memory 8bit mode !!
;
		LDA	<ENWRK2,X
		STA	<ENWRK3,X
		INC	<ENCONT,X
		INC	<ENCONT,X
;
		M16				; memory 16bit mode !!
;
		RTS
;
JFISHUP000030	EQU	$
		LDA	#JfishUpMax
		STA	!ENGMAX,X
;
		M8				; memory 8bit mode !!
;
		DEC	<ENWRK3,X
;
		M16				; memory 16bit mode !!
;
JFISHUP0000F0	EQU	$
		RTS
;
;
JFISHDOWN	EQU	$
		LDX	<ENINDX
		LDA	<ENWRK0,X
		CMP	!ENYPSL,X
		BPL	JFISHDOWN00F0		; 上昇？ [no->JFISHDOWN00F0]
;
		STA	!ENYPSL,X
		LDA	#JfishUpMax
		STA	!ENGMAX,X
		STZ	!ENYSPD,X
		STZ	<ENCONT,X
JFISHDOWN00F0	EQU	$
		RTS
;
;
;------------------------------------------------------------------------
;-	initial (針ボンボン)						-
;------------------------------------------------------------------------
Hbnbn_bye0	EQU	000A0H
Hbnbn_bye1	EQU	000CCH
Hbnbn_bye2	EQU	00100H
Hbnbn_bye3	EQU	00133H
;
HbnbnSpeed	EQU	00080H
;
HbnbnNormal	EQU	(HbnbnNml-HBNBNMVMODSEL)
HbnbnPlysch	EQU	(HbnbnPsh-HBNBNMVMODSEL)
HbnbnModori	EQU	(HbnbnMdr-HBNBNMVMODSEL)
;
HBNBNMUK	EQU	$
		WORD	00000H, 00080H<<1
;
HBNBNIN		EQU	$
		LDA	#Hbnbn_bye0
		STA	<ENCONT,X		; 倍率セット！！
		LDA	!ENXPSL,X
		STA	!ENWRK6,X		; Ｘポジションセーブ！
		LDA	!ENYPSL,X
		STA	!ENWRK8,X		; Ｙポジションセーブ！
		LDY	!ENMUKI,X
		LDA	HBNBNMUK,Y
		STA	!ENWRKA,X		;
		JSL	>TROBJ_SR_4x4_CL
;
		M8				; memory 8bit mode !!
;
		LDA	#0FFH
		STA	!ENWATR+1,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
;
;------------------------------------------------------------------------
;-	move (針ボンボン)						-
;------------------------------------------------------------------------
HBNBNCHR	EQU	$
		LWORD	CIPCHD2+40A0H+0, CIPCHD2+40C0H+0
;
HBNBNFACEPOS	EQU	$
		BYTE	0FDH-08H,006H-08H
		BYTE	0FEH-08H,0FEH-08H
;
HBNBNMV		EQU	$
		LDY	!ENYUSN,X
		BMI	HBNBNMV0020		; 表示？ [no->HBNBNMV0020]
;
		LDA	!ENCHPT,X
		CMP	#0002
		BCC	HBNBNMV0020		; 回転オブジェ使用？ [no->HBNBNMV0020]
;
		I16				; index 16bit mode !!
;
		LDA	!ENOAML,X
		CLC
		ADC	#2*8
		TAY
		JSL	>TROBJ_OAM_4x4_I
;
		I8				; index 8bit mode !!
;
		LDA	#BANK HBNBNFACEPOS
		STA	R0
		LDA	#HBNBNFACEPOS
		STA	R10
		LDA	#02
		STA	R12
		M_CHIP	HBNBN_OAM
;
		LDX	<ENINDX
HBNBNMV0020	EQU	$
		JSL	>ENMDCK			; mode check
;
		JSR	HBNBNCHRST
;
		LDA	!ENTIM0,X
		BNE	HBNBNMV0080		; pattern change ? [no->HBNBNMV0080]
;
		LDA	#0004
		STA	!ENTIM0,X
		LDA	!ENCHPT,X
		EOR	#0001
		STA	!ENCHPT,X
HBNBNMV0080	EQU	$
		JSR	HBNBNCRSCK
;
		LDA	!ENMOD0,X
		BIT	#0000000000100000B
		BEQ	HBNBNMV00A0		; 膨れる処理？ [no->HBNBNMV00A0]
;
		LDY	<ENWRK0,X
		TYX
		JMP	(HBNBN_PUNPUN,X)
;
HBNBNMV00A0	EQU	$
		LDY	<ENWRK0,X
		BEQ	HBNBNMV00C0		; [->HBNBNMV00C0]
;
		LDA	!ENTIM1,X
		BNE	HBNBNMV00C0		; [->HBNBNMV00C0]
;
		M8				; memory 8bit mode !!
;
		LDA	!ENMOD0,X
		ORA	#00100000B
		STA	!ENMOD0,X		; 投げた敵に当たらないセット！
		STZ	<ENWRK0,X
		LDA	#HbnbnModori
		STA	<ENWRK1,X
;
		M16				; memory 16bit mode !!
;
HBNBNMV00C0	EQU	$
		LDY	<ENWRK1,X
		TYX
		JMP	(HBNBNMVMODSEL,X)
;
;
HBNBN_PUNPUN	EQU	$
		WORD	HBNBN_PNPN0
		WORD	HBNBN_PNPN1
		WORD	HBNBN_PNPN11
		WORD	HBNBN_PNPN2
		WORD	HBNBN_PNPN21
		WORD	HBNBN_PNPN3
;
HBNBNMVMODSEL	EQU	$
HbnbnNml	WORD	HBNBN_NOMAL
HbnbnPsh	WORD	HBNBN_PLSCH
HbnbnMdr	WORD	HBNBN_MODOR
;
HBNBN_NOMAL	EQU	$
		LDX	<ENINDX
		LDA	!ENWRKA,X
		INC	A
		AND	#001FFH
		STA	!ENWRKA,X
		AND	#001FEH
;
		I16				; index 16bit mode !!
;
		TXY
		TAX
		LDA	>SIN,X
		CMP	#08000H
		ROR	A
		CMP	#08000H
		ROR	A
		CMP	#08000H
		ROR	A
		CLC
		ADC	!ENWRK6,Y
		STA	!ENXPSL,Y
		LDA	>COS,X
		AND	#08000H
		ASL	A
		ROL	A
		ASL	A
		STA	!ENMUKI,Y
		TYX
;
		I8				; index 8bit mode !!
;
		RTL
;
;
HBNBN_PLSCH	EQU	$
		LDX	<ENINDX
		JSL	>HBNBNWATRCK
;
		LDA	!PCENTX
		STA	R1			; target X
		LDA	!PCENTY
		STA	R2			; target Y
		LDA	!ECENTX,X
		STA	R3			; my X
		LDA	!ECENTY,X
		STA	R4			; my Y
		LDA	#HbnbnSpeed
		STA	R6			; speed
		M_CHIP	SEARCH_SPEED
;
		LDX	<ENINDX
		LDA	R1
		STA	!ENXMAX,X		; x speed set !!
		ABS16
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		STA	!ENXPOW,X
		LDA	R2
		STA	!ENGMAX,X		; y speed set !!
		ABS16
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		STA	!ENGPOW,X
;
		LDA	!EPXMUK,X
		AND	#000FFH
		STA	!ENMUKI,X
		RTL
;
;
HBNBN_MODOR	EQU	$
		LDX	<ENINDX
		JSL	>HBNBNWATRCK
;
		LDY	#00
		LDA	!ENXPSL,X
		CMP	!ENWRK6,X
		BPL	HBNBN_MODOR0040		; 左向き？ [yes->HBNBN_MODOR0040]
;
		INY
		INY
HBNBN_MODOR0040 EQU	$
		TYA
		STA	!ENMUKI,X
;
		STZ	<EWORK
		LDA	!ENXPSL,X
		SEC
		SBC	!ENWRK6,X
		CLC
		ADC	#0001
		CMP	#0001*2
		BCS	HBNBN_MODOR0060		; [->HBNBN_MODOR0060]
;
		LDA	!ENWRK6,X
		STA	!ENXPSL,X
		STZ	!ENXSPD,X
		STZ	!ENXPOW,X
		INC	<EWORK
HBNBN_MODOR0060 EQU	$
		LDA	!ENYPSL,X
		SEC
		SBC	!ENWRK8,X
		CLC
		ADC	#0001
		CMP	#0001*2
		BCS	HBNBN_MODOR0080		; [->HBNBN_MODOR0080]
;
		LDA	!ENWRK8,X
		STA	!ENYPSL,X
		STZ	!ENYSPD,X
		STZ	!ENGPOW,X
		LDA	<EWORK
		BEQ	HBNBN_MODOR0080		; [->HBNBN_MODOR0080]
;
		LDY	!ENMUKI,X
		LDA	HBNBNMUK,Y
		STA	!ENWRKA,X		;
;
		M8				; memory 8bit mode !!
;
		LDA	!ENMOD1,X
		AND	#11100000B
		STA	!ENMOD1,X		; ＢＧチェックの解除！！
		STZ	<ENWRK1,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
HBNBN_MODOR0080 EQU	$
		LDX	<ENINDX
		LDA	!ENWRK6,X
		STA	R1			; target X
		LDA	!ENWRK8,X
		STA	R2			; target Y
		LDA	!ENXPSL,X
		STA	R3			; my X
		LDA	!ENYPSL,X
		STA	R4			; my Y
		LDA	#HbnbnSpeed
		STA	R6			; speed
		M_CHIP	SEARCH_SPEED
;
		LDX	<ENINDX
		LDA	R1
		STA	!ENXMAX,X		; x speed set !!
		ABS16
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		STA	!ENXPOW,X
		LDA	R2
		STA	!ENGMAX,X		; y speed set !!
		ABS16
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		STA	!ENGPOW,X
;
		RTL
;
;
HBNBN_PNPN0	EQU	$
		LDX	<ENINDX
		LDA	#Hbnbn_bye0
		CMP	<ENCONT,X
		BCC	HBNBN_PNPN00080		; [->HBNBN_PNPN00080]
;
		STA	<ENCONT,X
		LDA	!ENMOD0,X
		AND	#1111111111011111B
		STA	!ENMOD0,X
		LDA	!ENCHPT,X
		AND	#01H
		STA	!ENCHPT,X
		RTL
;
HBNBN_PNPN00080 EQU	$
		LDA	<ENCONT,X
		SEC
		SBC	#0002
		STA	<ENCONT,X
		RTL
;
;
HBNBN_PNPN1	EQU	$
		LDX	<ENINDX
		LDA	<ENCONT,X
		CMP	#Hbnbn_bye1+20H
		BCC	HBNBN_PNPN10080		; [->HBNBN_PNPN10080]
;
HBNBN_PNPN10020 EQU	$
;
		M8				; memory 8bit mode !!
;
		INC	<ENWRK0,X
		INC	<ENWRK0,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
HBNBN_PNPN10080 EQU	$
		CLC
		ADC	#0002
		STA	<ENCONT,X
		RTL
;
;
HBNBN_PNPN11	EQU	$
		LDX	<ENINDX
		LDA	#Hbnbn_bye1
HBNBN_PNPN11010 EQU	$
		CMP	<ENCONT,X
		BCC	HBNBN_PNPN11080		; [->HBNBN_PNPN11080]
;
HBNBN_PNPN11020 EQU	$
		STA	<ENCONT,X
		LDA	!ENMOD0,X
		AND	#1111111111011111B
		STA	!ENMOD0,X
		LDA	#sec05
		STA	!ENTIM1,X
		RTL
;
HBNBN_PNPN11080 EQU	$
		LDA	<ENCONT,X
		SEC
		SBC	#0001
		STA	<ENCONT,X
		RTL
;
;
HBNBN_PNPN2	EQU	$
		LDX	<ENINDX
		LDA	<ENCONT,X
		CMP	#Hbnbn_bye2+20H
		BCC	HBNBN_PNPN10080		; [->HBNBN_PNPN10080]
;
		BRA	HBNBN_PNPN10020
;
;
HBNBN_PNPN21	EQU	$
		LDX	<ENINDX
		LDA	#Hbnbn_bye2
		BRA	HBNBN_PNPN11010
;
;
HBNBN_PNPN3	EQU	$
		LDX	<ENINDX
		LDA	<ENCONT,X
		CMP	#Hbnbn_bye3
		BCS	HBNBN_PNPN30080		; [->HBNBN_PNPN30080]
;
		CLC
		ADC	#0001
		STA	<ENCONT,X
		RTL
;
HBNBN_PNPN30080 EQU	$
		JSL	>FUSNB_SET
;
		LDA	#0003BH
		JSL	>SOUND_3_ON		; サウンド セット !!
;
		JMP	>ENCLEAR
;
;[1995.06.09.FR]		JMP	>ENCLEAR_NORETN
;
;
HBNBNCHRST	EQU	$
		LDA	!ENCHPT,X
		CMP	#0002
		BCC	HBNBNCHRST00F0		; [->HBNBNCHRST00F0]
;
		LDA	!ENTROB,X
		BMI	HBNBNCHRST00F0		; 回転オブジェ使ってる ? [no->HBNBNCHRST00F0]
;
		I16				; index 16bit mode !!
;
		LDA	#0000
		STA	R5			; (R5) <- 回転角度
		LDA	<ENCONT,X
		STA	R6			; (R6) <- 倍率
		LDA	!ENCHPT,X
		AND	#00001H
		STA	<EWORK
		ASL	A
		CLC
		ADC	<EWORK
		TAY
		LDA	HBNBNCHR,Y
		STA	R12			; (R12) <- キャラクタアドレス
		LDA	HBNBNCHR+2,Y
		AND	#000FFH
		STA	R13			; (R13) <- キャラクタバンク
		LDY	!ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_X,X
		STA	R3			; (R3) <- ビットマップＸ座標
		LDA	>TROBJ_PLOT_Y,X
		STA	R2			; (R2) <- ビットマップＹ座標
;
		I8				; index 8bit mode !!
;
		M_CHIP	C_32_ROTZOM
;
		INC	OBM7WF			; mode 7 OBJ chara DMA "ON"
;
		LDX	<ENINDX
HBNBNCHRST00F0	EQU	$
		RTS
;
;
HBNBNCRSCK	EQU	$
		LDA	!ENMOD0,X
		BIT	#0000000000100000B
		BNE	HBNBNCHRST00F0		; 投げた敵に当たる？ [no->HBNBNCHRST00F0]
;
		LDY	!ECRSFG,X
		BMI	HBNBNCRSCK0100		; プレイヤーと当たった？ [yes->HBNBNCRSCK0100]
;
		DEY
		BMI	HBNBNCHRST00F0		; 敵と当たった？ [no->HBNBNCHRST00F0]
		BEQ	HBNBNCHRST00F0		; 赤ちゃん？ [yes->HBNBNCHRST00F0]
;
		LDA	!ENMODE,Y
		CMP	#EMOVE
		BNE	HBNBNCHRST00F0		; mode move ? [no->HBNBNCHRST00F0]
;
		LDA	!ENSHOT,Y
		BEQ	HBNBNCRSCK0080		; ショット？ [no->HBNBNCRSCK0080]
;
		TYX
		JSL	>SHOT_EN_KILL
;
		LDX	<ENINDX
		BRA	HBNBNCRSCK00F0
;
HBNBNCRSCK0080	EQU	$
		LDA	!ENMYNO,Y
		CMP	#MISA0
		BNE	HBNBNCHRST00F0		; 魚雷？ [no->HBNBNCHRST00F0]
;
		TYX
		JSL	>MISA0_KILL
;
		LDX	<ENINDX
HBNBNCRSCK00F0	EQU	$
;
		LDA	#00020H
		JSL	>SOUND_3_ON		; サウンド セット !!
;
		STZ	!ENXSPD,X
		STZ	!ENYSPD,X
		STZ	!ENXPOW,X
		STZ	!ENGPOW,X
;
		M8				; memory 8bit mode !!
;
		LDA	!ENCHPT,X
		ORA	#02H
		STA	!ENCHPT,X
		LDA	#EMOVE
		STA	!ENMODE,X
		LDA	!ENMOD0,X
		ORA	#00100000B
		STA	!ENMOD0,X		; 投げた敵に当たらないセット！
		LDA	!ENMOD1,X
		ORA	#00000001B
		STA	!ENMOD1,X		; ＢＧチェック！！
		INC	<ENWRK0,X
		INC	<ENWRK0,X
		LDA	#HbnbnPlysch
		STA	<ENWRK1,X
;
		M16				; memory 16bit mode !!
;
		PLA
		RTL
;
HBNBNCRSCK0100	EQU	$
		JSL	>PLFLST
;
		RTS
;
;
HBNBNWATRCK	EQU	$
		LDY	!ENWATR,X
		BNE	HBNBNWATRCK00F0		; [->HBNBNWATRCK]
;
		LDA	#00040H
		STA	!ENGPOW,X
		LDA	#00400H
		STA	!ENGMAX,X
		PLY
		PLA				; pull pull return !!
HBNBNWATRCK00F0 EQU	$
		RTL
;
;
;------------------------------------------------------------------------
;-	initial (オプションテレサ)					-
;------------------------------------------------------------------------
TelesaSpeed	EQU	00080H
;
TelesaCentX	EQU	00008H
TelesaCentY	EQU	00008H
TelesaWideX	EQU	00006H
TelesaWideY	EQU	00006H
;
TelesaMvTimer	EQU	00010H
;
TELASABITMASK	EQU	$
		WORD	0000000000000001B
		WORD	0000000000000010B
		WORD	0000000000000100B
		WORD	0000000000001000B
		WORD	0000000000010000B
		WORD	0000000000100000B
		WORD	0000000001000000B
;
TELASABITMASKC	EQU	$
		WORD	1111111111111110B
		WORD	1111111111111101B
		WORD	1111111111111011B
		WORD	1111111111110111B
		WORD	1111111111101111B
		WORD	1111111111011111B
		WORD	1111111110111111B
;
TELESABUFADRS	EQU	$
		WORD	00000H, 00400H, 00800H, 00C00H
		WORD	01000H, 01400H, 01800H
;
TELESAENMOD0	EQU	$
		WORD	1111111111111111B, 1111111111100000B
;
TELESAENMOD1	EQU	$
		WORD	0010000000000101B, 0000100000000100B
;
TELELIN		EQU	$
;
		M8				; memory 8bit mode !!
;
		LDA	!ENXPSL,X
		AND	#010H
		LSR	A
		LSR	A
		LSR	A
		STA	<ENWRK2,X
;
		M16				; memroy 16bit mode !!
;
		BNE	TELELIN2		; 単体？ [yes->TELELIN2]
;
		TXY
		LDX	#(07-1)*2
		LDA	!TELESA_PNT
TELELIN0020	EQU	$
		BIT	TELASABITMASK,X
		BEQ	TELELIN0040		; バッファが見つかった？ [yes->TELELIN0040]
;
		DEX
		DEX
		BPL	TELELIN0020		; バッファチェック終了？ [no->TELELIN0020]
;
		TYX
		JMP	>ENCLEAR
;
TELELIN0040	EQU	$
;
		M8				; memory 8bit mode !!
;
		TXA
		TYX
		STA	<ENWRK0,X
;
		M16				; memory 16bit mode !!
;
		JSR	TELELPOSST
;
		RTL
;
TELELIN2	EQU	$
		LDA	!ENYPSL,X
		AND	#00010H
		LSR	A
		LSR	A
		LSR	A
		TAY
		LDA	!ENMOD0,X
		AND	TELESAENMOD0,Y
		STA	!ENMOD0,X
		LDA	!ENMOD2,X
		AND	#0000011111110000B
		ORA	TELESAENMOD1,Y
		STA	!ENMOD2,X
		RTL
;
;
;------------------------------------------------------------------------
;-	move (オプションテレサ)						-
;------------------------------------------------------------------------
TELELMV		EQU	$
		LDY	<ENWRK2,X
		TYX
		JMP	(TELELMVMODSEL,X)
;
TELELMVMODSEL	EQU	$
		WORD	TELELMV00
		WORD	TELELMV01
;
;
TELELMV00	EQU	$
		LDX	<ENINDX
		JSR	TELELCHRST
;
		JSL	>ENMDCK			; mode check
;
		JSL	>TELESAAREACLR
;
		JSR	TELELPOSST
;
		JSL	>TELESACRCK
;
		LDY	<ENWRK3,X
		TYX
		JMP	(TELELMV00MDSEL,X)
;
TELELMV00MDSEL	EQU	$
		WORD	TELESAMOVE
		WORD	TELESASTOP
		WORD	TELESAWAIT
;
;
TELESASTOP	EQU	$
		LDX	<ENINDX
		LDA	!EPXMUK,X
		AND	#000FFH
		CMP	!ENMUKI,X
		BNE	TELESAWAITIN		; プレイヤーが後ろにいる？ [yes->TELESAWAITIN]
;
		CMP	!PLCMKI
		BNE	TELESAWAITIN		; プレイヤーの後ろにいる？ [yes->TELESAWAITIN]
;
		LDA	!ENTIM0,X
		BNE	TELELMV000040		; [->TELELMV000040]
;
		LDA	#00010H
		STA	!ENTIM0,X
		LDA	#0001
		STA	!ENCHPT,X
		LDA	<RANDM0
		AND	#0003FH
		BNE	TELELMV000040		; [->TELELMV000040]
;
		STZ	!ENCHPT,X
TELELMV000040	EQU	$
;
		M8				; memory 8bit mode !!
;
		LDA	#01
		LDY	!ENTIM1,X
		BNE	TELELMV0000E0		; [->TELELMV0000E0]
;
		STA	!ENWRK4,X
		LDY	!ENTIM2,X
		BNE	TELELMV0000E0		; [->TELELMV0000E0]
;
		STA	!ENWRK5,X
		LDY	!ENTIM3,X
		BNE	TELELMV0000E0		; [->TELELMV0000E0]
;
		STA	!ENWRK6,X
TELELMV0000E0	EQU	$
;
		M16				; memory 16bit mode !!
;
		RTL
;
TELESAWAITIN	EQU	$
;
		M8				; memory 8bit mode !!
;
		LDA	#01
		STA	!ENCHPT,X
		LDA	#TelesaMvTimer
		STA	!ENWRKX,X
;
		INC	<ENWRK3,X
		INC	<ENWRK3,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
;
TELESAWAIT	EQU	$
		LDX	<ENINDX
;
		LDY	!ENWRKX,X
		BEQ	TELESAMOVEIN		; [->TELESAMOVEIN]
;
		M8				; memory 8bit mode !!
;
		DEC	!ENWRKX,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
TELESAMOVEIN	EQU	$
;
		M8				; memory 8bit mode !!
;
		LDA	#01
		STA	!ENCHPT,X
;;;;;;;;		STA	!ENWRK4,X
;;;;;;;;		STA	!ENWRK5,X
;;;;;;;;		STA	!ENWRK6,X
		LDA	#04
		STA	!ENTIM0,X
		LDA	#08
		STA	!ENTIM1,X
		LDA	#12
		STA	!ENTIM2,X
		LDA	#16
		STA	!ENTIM3,X
		STZ	<ENWRK3,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
;
TELESAMOVE	EQU	$
		LDX	<ENINDX
		JSR	TELESAENCRS		; 衝突チェック！！
;
		LDA	!ENTIM0,X
		BNE	TELESAMOVE003F		; [->TELESAMOVE003F]
;
		STZ	!ENCHPT,X
;
		M8				; memory 8bit mode !!
;
		LDA	!ENTIM1,X
		BNE	TELESAMOVE0010		; [->TELESAMOVE0010]
;
		STZ	<ENWRK4,X
		LDA	!ENTIM2,X
		BNE	TELESAMOVE0010		; [->TELESAMOVE0010]
;
		STZ	<ENWRK5,X
		LDA	!ENTIM3,X
		BNE	TELESAMOVE0010		; [->TELESAMOVE0010]
;
		STZ	!ENWRK6,X
TELESAMOVE0010	EQU	$
;
		M16				; memory 16bit mode !!
;
		LDA	!EPXMUK,X
		AND	#000FFH
		CMP	!ENMUKI,X
		BNE	TELESAMOVE0040		; プレイヤーが後ろにいる？ [yes->TELESAMOVE0040]
;
		CMP	!PLCMKI
		BNE	TELESAMOVE0040		; プレイヤーの後ろにいる？ [yes->TELESAMOVE0040]
;
		STZ	!ENXSPD,X
		STZ	!ENYSPD,X
;
		M8				; memory 8bit mode !!
;
		LDA	#008H
		STA	!ENTIM0,X
		LDA	#010H
		STA	!ENTIM1,X
		LDA	#018H
		STA	!ENTIM2,X
		LDA	#020H
		STA	!ENTIM3,X
		STZ	!ENCHPT,X
;
		INC	<ENWRK3,X
		INC	<ENWRK3,X
;
		M16				; memory 16bit mode !!
;
TELESAMOVE003F	EQU	$
		RTL
;
TELESAMOVE0040	EQU	$
		STA	!ENMUKI,X
;
		LDA	!PCENTX
		STA	R1			; target X
		LDA	!PCENTY
		STA	R2			; target Y
		LDA	!ECENTX,X
		STA	R3			; my X
		LDA	!ECENTY,X
		STA	R4			; my Y
		LDA	#TelesaSpeed
		STA	R6			; speed
		M_CHIP	SEARCH_SPEED
;
		LDX	<ENINDX
		LDA	R1
		STA	!ENXSPD,X		; x speed set !!
		LDA	R2
		STA	!ENYSPD,X		; y speed set !!
;
		LDA	<ENCONT,X
		CMP	#00100H
		BCS	TELESAMOVE0080		; Max ? [yes->TELESAMOVE0080]
;
		INC	<ENCONT,X
TELESAMOVE0080	EQU	$
;
		M8				; memory 8bit mode !!
;
		INC	<ENWRK1,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
;
TELELPOSST	EQU	$
		TXY
		LDX	<ENWRK0,Y
		LDA	!ENWRK1,Y
		AND	#000FFH
		ASL	A
		ASL	A
		CLC
		ADC	TELESABUFADRS,X
;
		I16				; index 16bit mode !!
;
		TAX
		LDA	!ENXPSL,Y
		STA	>TELESA_OPT,X
		LDA	!ENYPSL,Y
		STA	>TELESA_OPT+2,X
;
		I8				; index 8bit mode !!
;
		TYX
TELELPOSST00FF	EQU	$
		RTS
;
;
TELESA_OPT_ST	EQU	$
		WORD	00090H, 00060H, 00030H
;
TELESA_OPT_CH	EQU	$
		HEX	26, 2E
;
TELELCHRST	EQU	$
		LDY	!ENYUSN,X
		BMI	TELELPOSST00FF		; 表示？ [no->TELELPOSST00FF]
;
		LDY	<ENWRK0,X
		LDA	#TELESA_OPT
		CLC
		ADC	TELESABUFADRS,Y
		STA	<EWORK
		LDY	#BANK TELESA_OPT
		STY	<EWORK2
;
		M8				; memory 8bit mode !!
;
		LDY	<ENWRK4,X
		LDA	TELESA_OPT_CH,Y
		STA	<EWORKE
		STZ	<EWORKF
		LDY	<ENWRK5,X
		LDA	TELESA_OPT_CH,Y
		STA	<EWORKC
		STZ	<EWORKD
		LDY	!ENWRK6,X
		LDA	TELESA_OPT_CH,Y
		STA	<EWORKA
		STZ	<EWORKB
;
		M16				; memory 16bit mode !!
;
		LDA	!ENCHRB,X
		AND	#000FFH
		ASL	A
		ASL	A
		ASL	A
		STA	<EWORK8
		LDY	#(03-1)*2
TELELCHRST0020	EQU	$
		LDA	<EWORK8
		CLC
		ADC	!EWORKA,Y
		STA	!EWORKA,Y
		DEY
		DEY
		BPL	TELELCHRST0020		; [->TELELCHRST0020]
;
		I16				; index 16bit mode !!
;
		LDA	!ENOAML,X
		STA	<EWORK6
		LDA	#(03-1)*2
		STA	<EWORK4
TELELCHRST0040	EQU	$
		LDY	<EWORK4
		LDA	<ENCONT,X
		CMP	TELESA_OPT_ST,Y
		BCS	TELELCHRST0060		; 移動開始？ [yes->TELELCHRST0060]
;
		LDY	#0000
		BRA	TELELCHRST0070
;
TELELCHRST0060	EQU	$
		LDA	<ENWRK1,X
		AND	#000FFH
		SEC
		SBC	TELESA_OPT_ST,Y
		AND	#000FFH
		ASL	A
		ASL	A
		TAY
TELELCHRST0070	EQU	$
		PHX				; (X) Push
		LDX	<EWORK6
		LDA	[<EWORK],Y
		SEC
		SBC	!SCCH1
		STA	!SOAM_DX+(8*5),X
		INY
		INY
		LDA	[<EWORK],Y
		SEC
		SBC	!SCCV1
		STA	!SOAM_DX+(8*5)+2,X
		LDY	<EWORK4
		LDA	!SOAM_DX+(8*5)+4,X
		AND	#0FE00H
		ORA	!EWORKA,Y
		STA	!SOAM_DX+(8*5)+4,X
		PLX				; (X) Pull
TELELCHRST0080	EQU	$
		LDA	<EWORK6
		CLC
		ADC	#0008
		STA	<EWORK6
		DEC	<EWORK4
		DEC	<EWORK4
		BPL	TELELCHRST0040		; [->TELELCHRST0040]
;
		I8				; index 8bit mode !!
;
		RTS
;
;
TELESACRCK	EQU	$
		LDY	!ECRSFG,X
		BPL	TELESACRCK0100		; プレイヤーと当たった？ [no->TELESACRCK0100]
;
		JMP	>PLFLST
;
TELESACRCK0100	EQU	$
		LDY	<ENWRK0,X
		LDA	#TELESA_OPT
		CLC
		ADC	TELESABUFADRS,Y
		STA	<EWORK
		LDY	#BANK TELESA_OPT
		STY	<EWORK2
;
		LDA	!PWIDEX
		CLC
		ADC	#TelesaWideX
		STA	<EWORK6
		ASL	A
		STA	<EWORK8
		LDA	!PWIDEY
		CLC
		ADC	#TelesaWideY
		STA	<EWORKA
		ASL	A
		STA	<EWORKC
;
		I16				; index 16bit mode !!
;
		LDA	#(03-1)*2
		STA	<EWORK4
TELESACRCK0140	EQU	$
		LDY	<EWORK4
		LDA	<ENCONT,X
		CMP	TELESA_OPT_ST,Y
		BCS	TELESACRCK0160		; 移動開始？ [yes->TELESACRCK0160]
;
		LDY	#0000
		BRA	TELESACRCK0170
;
TELESACRCK0160	EQU	$
		LDA	<ENWRK1,X
		AND	#000FFH
		SEC
		SBC	TELESA_OPT_ST,Y
		AND	#000FFH
		ASL	A
		ASL	A
		TAY
TELESACRCK0170	EQU	$
		LDA	[<EWORK],Y
		CLC
		ADC	#TelesaCentX
		SEC
		SBC	!PCENTX
		CLC
		ADC	<EWORK6
		CMP	<EWORK8
		BCS	TELESACRCK0180		; プレイヤーダメージ？ [no->TELESACRCK0180]
;
		INY
		INY
		LDA	[<EWORK],Y
		CLC
		ADC	#TelesaCentX
		SEC
		SBC	!PCENTY
		CLC
		ADC	<EWORKA
		CMP	<EWORKC
		BCS	TELESACRCK0180		; プレイヤーダメージ？ [no->TELESACRCK0180]
;
		I8				; index 8bit mode !!
;
		JMP	>PLFLST
;
		IDX16
;
TELESACRCK0180	EQU	$
		DEC	<EWORK4
		DEC	<EWORK4
		BPL	TELESACRCK0140		; [->TELESACRCK0140]
;
		I8				; index 8bit mode !!
;
		RTL
;
;
TELESAENCRS	EQU	$
		LDY	!ECRSFG,X
		DEY
		BMI	TELESAENCRS00F0		; 敵と当たった？ [no->TELESAENCRS00F0]
		BEQ	TELESAENCRS00F0		; 赤ちゃん？ [yes->TELESAENCRS00F0]
;
		LDA	!ENMODE,Y
		CMP	#EMOVE
		BNE	TELESAENCRS00F0		; Ｍｏｄｅ Ｍｏｖｅ？ [no->TELESAENCRS00F0]
;
		LDA	!ENSHOT,Y
		BNE	TELESAENCRS0100		; ショット？ [yes->TELESAENCRS0100]
;
TELESAENCRS00F0 EQU	$
		RTS
;
TELESAENCRS0100 EQU	$
		LDA	#0003BH
		JSL	>SOUND_3_ON
;
		LDY	<ENWRK0,X
		LDA	#TELESA_OPT
		CLC
		ADC	TELESABUFADRS,Y
		STA	<EWORK4
		LDY	#BANK TELESA_OPT
		STY	<EWORK6
;
		JSL	>DEATHENEMY
;
		I16				; index 16bit mode !!
;
		LDA	#(03-1)*2
		STA	<EWORK8
TELESAENCRS0140 EQU	$
		LDY	<EWORK8
		LDA	<ENCONT,X
		CMP	TELESA_OPT_ST,Y
		BCS	TELESAENCRS0160		; [->TELESAENCRS0160]
;
		LDY	#0000
		BRA	TELESAENCRS0170		; [->TELESAENCRS0170]
;
TELESAENCRS0160 EQU	$
		LDA	<ENWRK1,X
		AND	#000FFH
		SEC
		SBC	TELESA_OPT_ST,Y
		AND	#000FFH
		ASL	A
		ASL	A
		TAY
TELESAENCRS0170 EQU	$
		LDA	[<EWORK4],Y
		STA	<EWORK
		INY
		INY
		LDA	[<EWORK4],Y
		STA	<EWORK2
;
		I8				; index 8bit mode !!
;
		LDY	<EWORK8
		STA	!WORK8,Y
		LDA	<EWORK
		STA	!WORK0,Y
;
		LDA	#FSMK2
		JSL	>EXINSR
;
		LDA	<EWORK
		STA	!EXXPSL,Y
		LDA	<EWORK2
		STA	!EXYPSL,Y
		LDA	#03H
		STA	!EXTIM0,Y
		LDA	#FSMK2P
		STA	!EXCHPT,Y
;
		I16				; index 16bit mode !!
;
		DEC	<EWORK8
		DEC	<EWORK8
		BPL	TELESAENCRS0140		; [->TELESAENCRS0140]
;
		I8				; index 8bit mode !!
;
		LDY	<ENWRK0,X
		LDA	!TELESA_PNT
		AND	TELASABITMASKC,Y
		STA	!TELESA_PNT
		JSL	>ENCLEAR_NORETN
;
		LDA	#TIMKN
		JSL	>ENINSR
		BCC	TELESAENCRS01F0		; [->TELESAENCRS01F0]
;
		LDA	!ENXPSL,X
		STA	!ENXPSL,Y
		LDA	!ENYPSL,X
		STA	!ENYPSL,Y
		LDA	#0FE00H
		STA	!ENYSPD,Y
		LDA	#00180H
		STA	!ENTIM0,Y
;
		LDA	#(03-1)*2
		STA	<EWORK
TELESAENCRS01A0 EQU	$
		LDY	<EWORK
		LDA	!WORK0,Y
		STA	<EWORK2
		LDA	!WORK8,Y
		STA	<EWORK4
		LDA	#TIMKN
		JSL	>ENINSR
		BCC	TELESAENCRS01F0		; [->TELESAENCRS01F0]
;
		LDA	<EWORK2
		STA	!ENXPSL,Y
		LDA	<EWORK4
		STA	!ENYPSL,Y
		LDA	#0FE00H
		STA	!ENYSPD,Y
		LDA	#00180H
		STA	!ENTIM0,Y
;
		DEC	<EWORK
		DEC	<EWORK
		BPL	TELESAENCRS01A0		; [->TELESAENCRS01A0]
;
TELESAENCRS01F0 EQU	$
		PLA				; ぷるぷるりたーん！！
		RTL
;
;
TELESAAREACLR	EQU	$
		LDA	!ENDSXL,X
		CLC
		ADC	#00080H
		CMP	#001F0H
		BCS	TELAREACLR0040		; 画面外？ [yes->TELAREACLR0040]
;
		LDA	!ENDSYL,X
		CLC
		ADC	#00080H
		CMP	#001F0H
		BCC	TELAREACLR00F0		; 画面外？ [no->TELAREACLR00F0]
;
TELAREACLR0040	EQU	$
		LDY	<ENWRK0,X
		LDA	!TELESA_PNT
		AND	TELASABITMASKC,Y
		STA	!TELESA_PNT
		PLY
		PLA
		JMP	>ENCLEAR
;
TELAREACLR00F0	EQU	$
		RTL
;
;
TELELMV01	EQU	$
		LDX	<ENINDX
		JSL	>ENMDCK			; mode check
;
		JSL	>TELESACRCK2
;
		LDY	<ENWRK3,X
		TYX
		JMP	(TELELMV01MDSEL,X)
;
TELELMV01MDSEL	EQU	$
		WORD	TELESAMOV2
		WORD	TELESASTP2
		WORD	TELESAWIT2
;
;
TELESASTP2	EQU	$
		LDX	<ENINDX
		LDA	!EPXMUK,X
		AND	#000FFH
		CMP	!ENMUKI,X
		BNE	TELELMV010100		; プレイヤーが後ろにいる？ [yes->TELELMV010100]
;
		CMP	!PLCMKI
		BNE	TELELMV010100		; プレイヤーの後ろにいる？ [yes->TELELMV010100]
;
		LDA	!ENTIM0,X
		BNE	TELELMV0100F0		; [->TELELMV0100F0]
;
		LDA	#00010H
		STA	!ENTIM0,X
		LDA	#0002
		STA	!ENCHPT,X
		LDA	<RANDM0
		AND	#0003FH
		BNE	TELELMV0100F0		; [->TELELMV0100F0]
;
		STZ	!ENCHPT,X
TELELMV0100F0	EQU	$
		RTL
;
TELELMV010100	EQU	$
;
		M8				; memory 8bit mode !!
;
		LDA	#02
		STA	!ENCHPT,X
;
		LDA	#TelesaMvTimer
		STA	!ENWRKX,X
;
		INC	<ENWRK3,X
		INC	<ENWRK3,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
;
TELESAWIT2	EQU	$
		LDX	<ENINDX
		LDY	!ENWRKX,X
		BEQ	TELESAWIT20100		; [->TELESAWIT20100]
;
		M8				; memory 8bit mode !!
;
		DEC	!ENWRKX,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
TELESAWIT20100	EQU	$
;
		M8				; memory 8bit mode !!
;
		LDA	#02
		STA	!ENCHPT,X
		LDA	#04
		STA	!ENTIM0,X
		STZ	<ENWRK3,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
;
TELESAMOV2	EQU	$
		LDX	<ENINDX
		JSR	TELESAENCR2		; 衝突チェック！！
;
		LDA	!ENTIM0,X
		BNE	TELESAMOV2003F		; [->TELESAMOV2003F]
;
		STZ	!ENCHPT,X
		LDA	!EPXMUK,X
		AND	#000FFH
		CMP	!ENMUKI,X
		BNE	TELESAMOV20040		; プレイヤーが後ろにいる？ [yes->TELESAMOV20040]
;
		CMP	!PLCMKI
		BNE	TELESAMOV20040		; プレイヤーの後ろにいる？ [yes->TELESAMOV20040]
;
		STZ	!ENXSPD,X
		STZ	!ENYSPD,X
;
		M8				; memory 8bit mode !!
;
		LDA	#010H
		STA	!ENTIM0,X
		LDA	#00
		STA	!ENCHPT,X
;
		INC	<ENWRK3,X
		INC	<ENWRK3,X
;
		M16				; memory 16bit mode !!
;
TELESAMOV2003F	EQU	$
		RTL
;
TELESAMOV20040	EQU	$
		STA	!ENMUKI,X
;
		LDA	!PCENTX
		STA	R1			; target X
		LDA	!PCENTY
		STA	R2			; target Y
		LDA	!ECENTX,X
		STA	R3			; my X
		LDA	!ECENTY,X
		STA	R4			; my Y
		LDA	#TelesaSpeed
		STA	R6			; speed
		M_CHIP	SEARCH_SPEED
;
		LDX	<ENINDX
		LDA	R1
		STA	!ENXSPD,X		; x speed set !!
		LDA	R2
		STA	!ENYSPD,X		; y speed set !!
		RTL
;
;
TELESACRCK2	EQU	$
		LDY	!ECRSFG,X
		BPL	TELESACRCK20100		; プレイヤーと当たった？ [no->TELESACRCK20100]
;
		JMP	>PLFLST
;
TELESACRCK20100 EQU	$
		RTL
;
;
TELESAENCR2	EQU	$
		LDY	!ECRSFG,X
		DEY
		BMI	TELESAENCR200F0		; 敵と当たった？ [no->TELESAENCR200F0]
		BEQ	TELESAENCR200F0		; 赤ちゃん？ [yes->TELESAENCR200F0]
;
		LDA	!ENMODE,Y
		CMP	#EMOVE
		BNE	TELESAENCR200F0		; Ｍｏｄｅ Ｍｏｖｅ？ [no->TELESAENCR200F0]
;
		LDA	!ENSHOT,Y
		BNE	TELESAENCR20100		; ショット？ [yes->TELESAENCR20100]
;
TELESAENCR200F0 EQU	$
		RTS
;
TELESAENCR20100 EQU	$
		LDA	#0003BH
		JSL	>SOUND_3_ON
;
		JSL	>DEATHENEMY
;
		JSL	>ENCLEAR_NORETN
;
		LDA	#TIMKN
		JSL	>ENINSR
		BCC	TELESAENCR201F0		; [->TELESAENCR201F0]
;
		LDA	!ENXPSL,X
		STA	!ENXPSL,Y
		LDA	!ENYPSL,X
		STA	!ENYPSL,Y
		LDA	#0FE00H
		STA	!ENYSPD,Y
		LDA	#00180H
		STA	!ENTIM0,Y
TELESAENCR201F0 EQU	$
		PLA				; ぷるぷるりたーん！！
		RTL
;
;
;------------------------------------------------------------------------
;-	initial (カメック２)						-
;------------------------------------------------------------------------
KamecGpower	EQU	02
;;;;;;;;KamecGmaximum	EQU	-0200H
KamecGmaximum	EQU	-0800H
KamecXspeed	EQU	-0800H
KamecXspeed2	EQU	-0200H
KamecXspeed3	EQU	-0200H
;
KAMC2_MSG	EQU	$
;			小ボス	 大ボス
		WORD	bs1_MSG, BS1_MSG	; １ｗｏｒｌｄ
		WORD	bs2_MSG, BS2_MSG	; ２ｗｏｒｌｄ
		WORD	bs3_MSG, BS3_MSG	; ３ｗｏｒｌｄ
		WORD	bs4_MSG, BS4_MSG	; ４ｗｏｒｌｄ
		WORD	bs5_MSG, BS5_MSG	; ５ｗｏｒｌｄ
		WORD	bs6_MSG, BS6_MSG_5	; ６ｗｏｒｌｄ
;
CURTAIN_SELECT0 EQU	$
;			（中ボス） （大ボス）
		BYTE	00000010B, 00000010B	; １ｗｏｒｌｄ
		BYTE	00000010B, 00000010B	; ２ｗｏｒｌｄ
		BYTE	00000100B, 00000100B	; ３ｗｏｒｌｄ
		BYTE	00000010B, 00000100B	; ４ｗｏｒｌｄ
		BYTE	00000010B, 00000100B	; ５ｗｏｒｌｄ
		BYTE	00000100B, 00000100B	; ６ｗｏｒｌｄ
;
CURTAIN_SELECT1 EQU	$
		BYTE	00110101B, 00110101B	; １ｗｏｒｌｄ
		BYTE	00110101B, 00110101B	; ２ｗｏｒｌｄ
		BYTE	00110011B, 00110011B	; ３ｗｏｒｌｄ
		BYTE	00110101B, 10110011B	; ４ｗｏｒｌｄ
		BYTE	00110101B, 00110011B	; ５ｗｏｒｌｄ
		BYTE	00110011B, 00110011B	; ６ｗｏｒｌｄ
;
CG_ADDRESS	EQU	$
		BYTE	04, 04			; １ｗｏｒｌｄ
		BYTE	04, 04			; ２ｗｏｒｌｄ
		BYTE	01, 01			; ３ｗｏｒｌｄ
		BYTE	04, 01			; ４ｗｏｒｌｄ
		BYTE	04, 01			; ５ｗｏｒｌｄ
		BYTE	01, 01			; ６ｗｏｒｌｄ
;
CURTAIN_DATAAD	EQU	$
		WORD	B2MAGIC,  B2MAGIC	; １ｗｏｒｌｄ
		WORD	B2MAGIC,  B2MAGIC	; ２ｗｏｒｌｄ
		WORD	B3MAGIC2, B3MAGIC2	; ３ｗｏｒｌｄ
		WORD	B2MAGIC,  B3MAGIC2	; ４ｗｏｒｌｄ
		WORD	B2MAGIC,  B3MAGIC2	; ５ｗｏｒｌｄ
		WORD	B3MAGIC2, B3MAGIC2	; ６ｗｏｒｌｄ
;
CURTAIN_VRAMAD	EQU	$
		WORD	03E00H, 03E00H		; １ｗｏｒｌｄ
		WORD	03E00H, 03E00H		; ２ｗｏｒｌｄ
		WORD	03600H, 03600H		; ３ｗｏｒｌｄ
		WORD	03E00H, 03600H		; ４ｗｏｒｌｄ
		WORD	03E00H, 03600H		; ５ｗｏｒｌｄ
		WORD	03600H, 03600H		; ６ｗｏｒｌｄ
;
CURTAIN_COL0	EQU	$
		WORD	0611FH, 022DFH		; １ｗｏｒｌｄ
		WORD	07F00H, 023ECH		; ２ｗｏｒｌｄ
		WORD	0611FH, 022DFH		; ３ｗｏｒｌｄ
		WORD	07F00H, 05C13H		; ４ｗｏｒｌｄ
		WORD	0611FH, 022DFH		; ５ｗｏｒｌｄ
		WORD	07F00H, 023ECH		; ６ｗｏｒｌｄ
;
CURTAIN_COL1	EQU	$
		WORD	022DFH, 07F00H		; １ｗｏｒｌｄ
		WORD	023ECH, 07F00H		; ２ｗｏｒｌｄ
		WORD	07F00H, 023ECH		; ３ｗｏｒｌｄ
		WORD	0611FH, 05D20H		; ４ｗｏｒｌｄ
		WORD	023ECH, 0611FH		; ５ｗｏｒｌｄ
		WORD	022DFH, 0611FH		; ６ｗｏｒｌｄ
;
BOSS_SOUND	EQU	$
		HEX	0A, 0C			; １ｗｏｒｌｄ
		HEX	0A, 0C			; ２ｗｏｒｌｄ
		HEX	0A, 0A			; ３ｗｏｒｌｄ
		HEX	0A, 0C			; ４ｗｏｒｌｄ
		HEX	0A, 0A			; ５ｗｏｒｌｄ
		HEX	0A, 0C			; ６ｗｏｒｌｄ
;
KAMC2IN		EQU	$
		LDA	!PLMODE
		BEQ	KAMC2IN0040		; [->KAMC2IN0040]
;
		LDA	#EINIT
		STA	!ENMODE,X
		BRA	DOROBOUCANCEL
;
KAMC2IN0040	EQU	$
		JSL	>TO_PLDEMO_2		; プレイヤーストップ！！
		STZ	!PLMVSP
;
		LDA	!ENXPSL,X
		AND	#00010H
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		ORA	!MPTYPE
		STA	<ENWRK2,X		; ボスの種類！！
;
;;;;;;;;		STZ	!ENWRK4,X		; ゆらゆらフラグ
;
		LDA	!BG2TYP
		CMP	#00016H
		BNE	KAMC2IN0080		; [->KAMC2IN0080]
;
		M8				; memory 8bit mode !!
;
		LDA	#00FH
		STA	!4331H
		LDA	#010H
		STA	!4341H
;
		M16				; memory 16bit mode !!
;
		LDA	#00100H
		STA	!ESCCH2
		BRA	DOROBOUCANCEL
;
KAMC2IN0080	EQU	$
		LDA	#00100H
		STA	!ESCCH3
;		LDA	#00110H
;		STA	!ESCCV3
DOROBOUCANCEL	EQU	$
		LDA	#0FFFFH
		STA	!DEATHLOC2
		RTL
;
;
;------------------------------------------------------------------------
;-	move (カメック２)						-
;------------------------------------------------------------------------
;-------------- ＢＧ３カラーＨ−ＤＭＡパラメータ ------------------------
KMC_HD_COLADR	EQU	$
		BYTE	01000000B	;DMA control parameter
		BYTE	21H		;    B bus address
		BYTE	LOW  HDMAPR3	;    A	    "     (L)
		BYTE	HIGH HDMAPR3	;	    "     (H)
		BYTE	BANK HDMAPR3	;	    "     (B)
;
KMC_HD_COLADR_P EQU	$
		BYTE	59H+80H		;ライン数
		WORD	HDMADB0		;Ｃ．Ｇアドレス
		BYTE	59H+80H		;ライン数
		WORD	HDMADB0		;Ｃ．Ｇアドレス
		HEX	00		;ＥＮＤコード
;
KMC_HD_COLDAT	EQU	$
		BYTE	01000010B	;DMA control parameter
		BYTE	22H		;    B bus address
		BYTE	LOW  HDMAPR4	;    A	    "     (L)
		BYTE	HIGH HDMAPR4	;	    "     (H)
		BYTE	BANK HDMAPR4	;	    "     (B)
;
KMC_HD_COLDAT_P EQU	$
		BYTE	59H+80H		 ;ライン数
		WORD	HDMABUF3	 ;Ｃ．Ｇデータバッファアドレス
		BYTE	59H+80H		 ;ライン数
		WORD	HDMABUF3+(59H*2) ;Ｃ．Ｇデータバッファアドレス
		HEX	00
KMC_HD_COLDAT_E EQU	$
;
;
KAMC2MV		EQU	$
		JSL	>ENMDCK			; mode check
;
		JSR	KAMC2COLCHG
;
		LDY	<ENCONT,X
		TYX
		JMP	(KAMC2MVMODSEL,X)
;
KAMC2MVMODSEL	EQU	$
		WORD	KAMC2INIT
		WORD	KAMC2INT2
		WORD	KAMC2ENTER
		WORD	KAMC2SAY0
		WORD	KAMC2SAY1
		WORD	KAMC2TURN
		WORD	KAMC2OUT0
Kamec2TIN	WORD	KAMC2TOBUIN
		WORD	KAMC2TOBUMV
		WORD	KAMC2WAIT
		WORD	KAMC2TOBUI2
		WORD	KAMC2TOBUM2
		WORD	KAMC2WAT2
		WORD	KAMC2ENMYST
		WORD	KAMC2CLEAR
;
Kamec2Retry	EQU	(Kamec2TIN-KAMC2MVMODSEL)
;
;
KAMC2INIT	EQU	$
		LDX	<ENINDX
		LDA	!BOSS_START
		BEQ	KAMC2INIT00F0		; ボスデモ中？ [yes->KAMC2INIT00F0]
;
		LDA	!PLSWIM
		BNE	KAMC2INIT0040		; プレイヤー泳いでる？ [yes->KAMC2INIT0040]
;
		LDA	!PLJUMP
		BNE	KAMC2INIT00F0		; プレイヤー着地した？ [no->KAMC2INIT00F0]
;
KAMC2INIT0040	EQU	$
		LDA	!BOSS_RETRY
		BNE	KAMC2INIT0100		; 二回目？ [yes->KAMC2INIT0100]
;
		INC	!BOSS_RETRY
;
		M8				; memory 8bit mode !!
;
		LDA	#00			;[1995.05.18.TH]#040H
		STA	!ENTIM1,X
		INC	<ENCONT,X
		INC	<ENCONT,X
;
		M16				; memory 16bit mode !!
;
KAMC2INIT00F0	EQU	$
		RTL
;
KAMC2INIT0100	EQU	$
		LDA	#0001
		STA	!PLSTFG			; プレイヤーストップ！！
;
		LDA	!NUKCOL
		STA	>DATACOL
		STA	>MOTOCOL
		STZ	!NUKCOL
;
		LDY	#Kamec2Retry
		STY	<ENCONT,X
		RTL
;
;
KAMC2INT2	EQU	$
		LDX	<ENINDX
;
		LDA	!ENTIM1,X
		BNE	KAMC2INT200F0		; プレイヤー着地した？ [no->KAMC2INT200F0]
;
		LDA	#0001
		STA	!PLSTFG			; プレイヤーストップ！！
;
		LDA	!SCCH1
		CLC
		ADC	#00130H
		STA	!ENXPSL,X
		LDA	!SCCV1
		CLC
		ADC	#00040H
		STA	!ENYPSL,X
		LDA	!ENYPSL,X
		STA	!ENWRK6,X
		LDA	#KamecXspeed2
		STA	!ENXSPD,X
;
		STZ	!ENCHPT,X
		LDA	#0004
		STA	!ENTIM1,X
;
;[1995.05.08.MO]		LDA	#000F1H
;[1995.05.08.MO]		STA	!SOUND_0		; サウンド セット！！（ＢＧＭ）
;
		M8				; memory 8bit mode !!
;
		LDA	#05
		STA	!ENYUSN,X
		INC	<ENCONT,X
		INC	<ENCONT,X
;
		M16				; memory 16bit mode !!
;
KAMC2INT200F0	EQU	$
		RTL
;
;
KAMC2ENTER	EQU	$
		LDX	<ENINDX
		JSR	KAMC2FUWA
;
		LDA	#0001
		STA	!PLSTFG			; プレイヤーストップ！！
;
		LDA	!ENDSXL,X
		CMP	#000F4H
		BMI	KAMC2ENTER0080		; [->KAMC2ENTER0080]
;
		LDA	!ENTIM1,X
		BNE	KAMC2ENTER0070		; [->KAMC2ENTER0070]
;
		LDA	!ENCHPT,X
		EOR	#00001H
		STA	!ENCHPT,X
		LDA	#0004
		STA	!ENTIM1,X
KAMC2ENTER0070	EQU	$
		RTL
;
KAMC2ENTER0080	EQU	$
		LDA	#00005H
		STA	!ENCHPT,X
		LDA	#00020H
		STA	!ENXPOW,X
		LDA	!ENXSPD,X
		BMI	KAMC2ENTER00F0		; [->KAMC2ENTER00F0]
;
		STZ	!ENXSPD,X
		STZ	!ENXPOW,X
;
		M8				; memory 8bit mode !!
;
		LDA	#(KAMC2SAY0TM-KAMC2SAY0PT-1)
		STA	<ENWRK0,X
		LDA	#02
		STA	!ENCHPT,X
		LDA	#020H
		STA	!ENTIM1,X
;
		INC	<ENCONT,X
		INC	<ENCONT,X
;
		M16				; memory 16bit mode !!
;
KAMC2ENTER00F0	EQU	$
		RTL
;
;
KAMC2SAY0PT	EQU	$
		HEX	04, 04, 03, 02, 03, 04, 03, 02
		HEX	03, 04, 03, 02, 03, 04, 03, 02
		HEX	03, 04, 03, 02
;
KAMC2SAY0TM	EQU	$
		HEX	02, 06, 02, 06, 02, 06, 02, 06
		HEX	02, 06, 02, 06, 02, 06, 02, 06
		HEX	02, 06, 02, 06
;
KAMC2SAY0	EQU	$
		LDX	<ENINDX
		JSR	KAMC2FUWA
;
		LDA	!ENTIM1,X
		BNE	KAMC2SAY00070		; [->KAMC2SAY00070]
;
		M8				; memory 8bit mode !!
;
		LDY	<ENWRK0,X
		DEY
		BMI	KAMC2SAY00080		; [->KAMC2SAY00080]
;
		STY	<ENWRK0,X
		LDA	KAMC2SAY0PT,Y
		STA	!ENCHPT,X
		LDA	KAMC2SAY0TM,Y
		STA	!ENTIM1,X
;
		M16				; memory 16bit mode !!
;
		TYA
		AND	#00007H
		CMP	#00007H
		BNE	KAMC2SAY00070		; [->KAMC2SAY00070]
;
		LDA	#0005BH
		JSL	>SOUND_3_ON		; サウンド セット！！
;
KAMC2SAY00070	EQU	$
		RTL
;
		MEM8
;
KAMC2SAY00080	EQU	$
		LDA	#04
		STA	!ENCHPT,X
		INC	<ENCONT,X
		INC	<ENCONT,X
;
		M16				; memory 16bit mode !!
;
		LDA	<ENWRK2,X
		AND	#000FFH
		ASL	A
		TAY
		LDA	KAMC2_MSG,Y
		STA	>MSG_NO			; メッセージナンバーセット！！
		INC	!MSGMOD			; メッセージＯＮ！！
		RTL
;
;
KAMC2SAY1	EQU	$
		LDX	<ENINDX
		JSR	KAMC2FUWA
;
		LDA	#0001
		STA	!PLSTFG			; プレイヤーストップ！！
;
		LDA	!MSGMOD
		BNE	KAMC2SAY100F0		; [->KAMC2SAY100F0]
;
		LDA	!NUKCOL
		STA	>DATACOL
		STA	>MOTOCOL
		STZ	!NUKCOL
;
		LDA	#KamecXspeed3
		STA	!ENXSPD,X
;
		M8				; memory 8bit mode !!
;
		LDA	#(KAMC2TURNFP-KAMC2TURNPT-1)
		STA	<ENWRK0,X
		TAY
		LDA	KAMC2TURNPT,Y
		STA	!ENCHPT,X
		LDA	#04
		STA	!ENTIM1,X
		INC	<ENCONT,X
		INC	<ENCONT,X
;
		M16				; memory 16bit mode !!
;
KAMC2SAY100F0	EQU	$
		RTL
;
;
KAMC2TURNPT	EQU	$
		HEX	02, 05, 06, 06, 05, 02
;
KAMC2TURNFP	EQU	$
		HEX	00, 00, 02, 00, 00, 00
;
KAMC2TURN	EQU	$
		LDX	<ENINDX
		JSR	KAMC2FUWA
;
		LDA	!ENTIM1,X
		BNE	KAMC2TURN00F0		; [->KAMC2TURN00F0]
;
		M8				; memory 8bit mode !!
;
		DEC	<ENWRK0,X
		BMI	KAMC2TURN0100		; [->KAMC2TURN0100]
;
		LDY	<ENWRK0,X
		LDA	KAMC2TURNPT,Y
		STA	!ENCHPT,X
		LDA	!ENMUKI,X
		EOR	KAMC2TURNFP,Y
		STA	!ENMUKI,X
		LDA	#04
		STA	!ENTIM1,X
;
		M16				; memory 16bit mode !!
;
		LDA	KAMC2TURNFP,Y
		AND	#000FFH
		BEQ	KAMC2TURN00F0		; [->KAMC2TURN00F0]
;
		LDA	!ENXSPD,X
		EOR	#0FFFFH
		INC	A
		STA	!ENXSPD,X
KAMC2TURN00F0	EQU	$
		RTL
;
		MEM8
;
KAMC2TURN0100	EQU	$
		STZ	!ENCHPT,X
		LDA	#04
		STA	!ENTIM1,X
		INC	<ENCONT,X
		INC	<ENCONT,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
;
KAMC2OUT0	EQU	$
		LDX	<ENINDX
		JSR	KAMC2FUWA
;
		LDA	!ENTIM1,X
		BNE	KAMC2OUT00080		; [->KAMC2OUT00080]
;
		LDA	!ENCHPT,X
		EOR	#0001
		STA	!ENCHPT,X
		LDA	#0004
		STA	!ENTIM1,X
KAMC2OUT00080	EQU	$
		LDA	!ENDSXL,X
		CMP	#00150H
		BCC	KAMC2OUT000F0		; [->KAMC2OUT000F0]
;
		M8				; memory 8bit mode !!
;
		INC	<ENCONT,X
		INC	<ENCONT,X
;
		M16				; memory 16bit mode !!
;
;[1995.05.15.MO]		LDA	#000F1H
;[1995.05.15.MO]		STA	!SOUND_0		; サウンド セット！！（ＢＧＭ）
;
KAMC2OUT000F0	EQU	$
		RTL
;
;
KAMC2TOBUIN	EQU	$
		LDX	<ENINDX
;
		M8				; memory 8bit mode !!
;
		LDA	#05
		STA	!ENYUSN,X
;
		M16				; memory 16bit mode !!
;
		STZ	!ENMUKI,X
		LDA	!SCCH1
		CLC
		ADC	#00130H
		STA	!ENXPSL,X
		LDA	#KamecXspeed
		STA	!ENXMAX,X
KAMC2TOBUIN0020 EQU	$
		STZ	!ENXSPD,X
		LDA	#00020H
		STA	!ENXPOW,X
		LDA	!SCCV1
		CLC
		ADC	#00040H
		STA	!ENYPSL,X
		STZ	!ENGPOW,X
		LDA	#KamecGmaximum
		STA	!ENGMAX,X
		STZ	!ENCHPT,X
		LDA	#0002
		STA	!ENTIM1,X
;
		LDA	#00020H
		STA	>KIRAKIRA_V_VSP
		LDA	#000B8H+300H
		STA	>KIRAKIRA_V_VS
		LDA	#00000H
		STA	>KIRAKIRA_V_VSL
		LDA	#0FF98H
		STA	>KIRAKIRA_V_VSS
		LDA	#00000H
		STA	>KIRAKIRA_V_VSA
		LDA	#00000H
		STA	>KIRAKIRA_V_ST
		LDA	#00001H
		STA	>KIRAKIRA_V_STS
		LDA	#00000H
		STA	>KIRAKIRA_V_STA
		LDA	#01000H
		STA	>KIRAKIRA_V_STSS
		LDA	#00000H
		STA	>KIRAKIRA_V_STSA
;
		LDA	#00020H
		STA	>KIRAKIRA_C_SP
		LDA	#00080H
		STA	>KIRAKIRA_C_SPS
		LDA	#00002H
		STA	>KIRAKIRA_C_SPA
		LDA	#04000H
		STA	>KIRAKIRA_C_TW
		LDA	#00030H
		STA	>KIRAKIRA_C_TWS
		LDA	#00000H
		STA	>KIRAKIRA_C_TWA
		LDA	#00000H
		STA	>KIRAKIRA_C_TWBS
		LDA	#00000H
		STA	>KIRAKIRA_C_TWBA
		LDA	#00000H
		STA	>KIRAKIRA_C_TC
		LDA	#00000H
		STA	>KIRAKIRA_C_TCS
		LDA	#00000H
		STA	>KIRAKIRA_C_TCA
;
		LDA	#00000H
		STA	R1
;;;;;;;;		LDA	#07F00H			; 目標カラー！！
		LDA	<ENWRK2,X
		AND	#000FFH
		ASL	A
		TAY
		LDA	CURTAIN_COL0,Y		; 目標カラー！！
		STA	R2
		LDA	#KIRAKIRA_CTBL
		STA	R3
		LDA	#00020H
		STA	R5
		M_CHIP	KIRAKIRA_TSET
;
		LDX	<ENINDX
		LDA	!BG2TYP
		CMP	#00016H
		BEQ	KAMC2TOBUIN0060		; [->KAMC2TOBUIN0060]
;
		LDA	#00100H
		STA	!ESCCH3
		STA	!SCCH3
		LDA	#00000H
		STA	!ESCCV3
		STA	!SCCV3
		BRA	KAMC2TOBUIN0070
;
KAMC2TOBUIN0060 EQU	$
		LDA	#00100H
		STA	!ESCCH2
		STA	!SCCH2
		LDA	#00200H
		STA	!ESCCV2
		STA	!SCCV2
KAMC2TOBUIN0070 EQU	$
;
		M8
;
		LDA	!MANSEL
		ORA	!SUBSEL
		STA	!MANSEL
		STA	!WMANSL
		STZ	!SUBSEL
		STZ	!WSUBSL
		LDY	<ENWRK2,X
		LDA	CURTAIN_SELECT0,Y
		TRB	!MANSEL
		TRB	!WMANSL
		TSB	!SUBSEL
		TSB	!WSUBSL
		LDA	CURTAIN_SELECT1,Y
		STA	!SUBADF
;
;-------------- Ｈ−ＤＭＡパラメータセット ------------------------------
;
		LDX	#04
KAMC2TOBUIN0080 EQU	$
		LDA	!KMC_HD_COLADR,X
		STA	4310H,X
		LDA	!KMC_HD_COLDAT,X
		STA	4320H,X
		DEX
		BPL	KAMC2TOBUIN0080		; [->KAMC2TOBUIN0080]
		LDA	#BANK HDMABUF
		STA	4317H
		STA	4327H
;
		LDX	#KMC_HD_COLDAT_E-KMC_HD_COLDAT_P-1
KAMC2TOBUIN00A0 EQU	$
		LDA	!KMC_HD_COLADR_P,X
		STA	>HDMAPR3,X
		LDA	!KMC_HD_COLDAT_P,X
		STA	>HDMAPR4,X
		DEX
		BPL	KAMC2TOBUIN00A0		; [->KAMC2TOBUIN00A0]
;
		LDX	#059H-1
		LDA	CG_ADDRESS,Y		;(A) <-- Ｃ．Ｇアドレス
KAMC2TOBUIN00C0 EQU	$
		STA	>HDMADB0,X	;Ｃ．Ｇアドレスバッファセット
		DEX
		BPL	KAMC2TOBUIN00C0
;
		LDX	<ENINDX
;
		LDA	#05
		STA	!ENYUSN,X
		INC	<ENCONT,X
		INC	<ENCONT,X
;
		M16				; memory 16bit mode !!
;
		LDA	#00018H
		JSL	>SOUND_3_ON		; サウンド セット！！
;
		RTL
;
;
KAMC2TOBUI2	EQU	$
		LDX	<ENINDX
;
		LDA	#000F1H
		STA	!SOUND_0		; サウンド セット！！（ＢＧＭ）
;
		LDA	#0002
		STA	!ENMUKI,X
		LDA	!SCCH1
		SEC
		SBC	#00040H
		STA	!ENXPSL,X
		LDA	#-KamecXspeed
		STA	!ENXMAX,X
;
B3MAGIC2_SCR	EQU	$
		LDA	<ENWRK2,X
		AND	#000FFH
		ASL	A
		TAY
		PHD
		LDA	#WORK
		TCD
;
		DPAGE	WORK
;
		I16			; index 16bit mode
;
		LDA	CURTAIN_DATAAD,Y
		LDX	#WOB7CHR+1000H
		PHY
		JSL	>UNCOMPRES
;
		PLY
		LDX	CURTAIN_VRAMAD,Y
		TXY			; Y <- vram address
		LDX	#BANK WOB7CHR+1000H
		STX	<WORK1
		LDX	#WOB7CHR+1000H
		JSL	>VRAMDX_ST
;
		I8			; index 8bit mode
;
		PLD
;
		DPAGE	EWORK
;
		LDX	<ENINDX
		STZ	!ENXSPD,X
		LDA	#00020H
		STA	!ENXPOW,X
		LDA	!SCCV1
		CLC
		ADC	#00040H
		STA	!ENYPSL,X
		STZ	!ENGPOW,X
		LDA	#KamecGmaximum
		STA	!ENGMAX,X
		STZ	!ENCHPT,X
		LDA	#0002
		STA	!ENTIM1,X
;
		LDA	#00020H
		STA	>KIRAKIRA_V_VSP
		LDA	#000B8H+300H
		STA	>KIRAKIRA_V_VS
		LDA	#00000H
		STA	>KIRAKIRA_V_VSL
		LDA	#0FF98H
		STA	>KIRAKIRA_V_VSS
		LDA	#00000H
		STA	>KIRAKIRA_V_VSA
		LDA	#00000H
		STA	>KIRAKIRA_V_ST
		LDA	#00001H
		STA	>KIRAKIRA_V_STS
		LDA	#00000H
		STA	>KIRAKIRA_V_STA
		LDA	#01000H
		STA	>KIRAKIRA_V_STSS
		LDA	#00000H
		STA	>KIRAKIRA_V_STSA
;
		LDA	#00020H
		STA	>KIRAKIRA_C_SP
;;;		LDA	#00020H
		LDA	#00080H
		STA	>KIRAKIRA_C_SPS
;;;		LDA	#00001H
		LDA	#00002H
		STA	>KIRAKIRA_C_SPA
		LDA	#04000H
		STA	>KIRAKIRA_C_TW
		LDA	#00030H
		STA	>KIRAKIRA_C_TWS
		LDA	#00000H
		STA	>KIRAKIRA_C_TWA
		LDA	#00000H
		STA	>KIRAKIRA_C_TWBS
		LDA	#00000H
		STA	>KIRAKIRA_C_TWBA
		LDA	#00000H
		STA	>KIRAKIRA_C_TC
		LDA	#00000H
		STA	>KIRAKIRA_C_TCS
		LDA	#00000H
		STA	>KIRAKIRA_C_TCA
;
		LDA	#00000H
		STA	R1
;;;;;;;;		LDA	#07E1FH			; 目標カラー！！
		LDA	<ENWRK2,X
		AND	#000FFH
		ASL	A
		TAY
		LDA	CURTAIN_COL1,Y		; 目標カラー！！
		STA	R2
		LDA	#KIRAKIRA_CTBL
		STA	R3
		LDA	#00020H
		STA	R5
		M_CHIP	KIRAKIRA_TSET
;
		LDX	<ENINDX
		LDA	!BG2TYP
		CMP	#00016H
		BEQ	KAMC2TOBUI20060		; [->KAMC2TOBUI20060]
;
		LDA	#00100H
		STA	!ESCCH3
		STA	!SCCH3
		LDA	#00000H
		STA	!ESCCV3
		STA	!SCCV3
		BRA	KAMC2TOBUI20070
;
KAMC2TOBUI20060 EQU	$
		LDA	#00100H
		STA	!ESCCH2
		STA	!SCCH2
		LDA	#00200H
		STA	!ESCCV2
		STA	!SCCV2
KAMC2TOBUI20070 EQU	$
;
		M8
;
		LDY	<ENWRK2,X
		LDA	CURTAIN_SELECT0,Y
		TRB	!MANSEL
		TRB	!WMANSL
		TSB	!SUBSEL
		TSB	!WSUBSL
		LDA	CURTAIN_SELECT1,Y
		STA	!SUBADF
;
;-------------- Ｈ−ＤＭＡパラメータセット ------------------------------
;
		LDX	#04
KAMC2TOBUI20080 EQU	$
		LDA	!KMC_HD_COLADR,X
		STA	4310H,X
		LDA	!KMC_HD_COLDAT,X
		STA	4320H,X
		DEX
		BPL	KAMC2TOBUI20080		; [->KAMC2TOBUI20080]
		LDA	#BANK HDMABUF
		STA	4317H
		STA	4327H
;
		LDX	#KMC_HD_COLDAT_E-KMC_HD_COLDAT_P-1
KAMC2TOBUI200A0 EQU	$
		LDA	!KMC_HD_COLADR_P,X
		STA	>HDMAPR3,X
		LDA	!KMC_HD_COLDAT_P,X
		STA	>HDMAPR4,X
		DEX
		BPL	KAMC2TOBUI200A0		; [->KAMC2TOBUI200A0]
;
		LDX	#059H-1
		LDA	CG_ADDRESS,Y		;(A) <-- Ｃ．Ｇアドレス
KAMC2TOBUI200C0 EQU	$
		STA	>HDMADB0,X		;Ｃ．Ｇアドレスバッファセット
		DEX
		BPL	KAMC2TOBUI200C0
;
		LDX	<ENINDX
;
		LDA	#05
		STA	!ENYUSN,X
		INC	<ENCONT,X
		INC	<ENCONT,X
;
		M16				; memory 16bit mode !!
;
		LDA	#00018H
		JSL	>SOUND_3_ON		; サウンド セット！！
;
		RTL
;
;
KAMC2TOBUMV	EQU	$
		LDX	<ENINDX
;
		LDA	!ENDSYL,X
		SEC
		SBC	#009H
		CMP	#100H
		BCS	KAMC2TOBUMV_01
		AND	#000FFH
;;;		STA	>KIRAKIRA_V_VSP
		CLC
		ADC	#010H
		XBA
		STA	>KIRAKIRA_C_SP
KAMC2TOBUMV_01
;
		LDX	<ENINDX
		LDA	!ENXSPD,X
		EOR	#0FFFFH
		INC	A
		AND	#0FC00H
		XBA
		ASL	A
		ASL	A
		STA	!ENGPOW,X
		LDA	!ENTIM1,X
		BNE	KAMC2TOBUMV0020		; [->KAMC2TOBUMV0020]
;
		LDA	!ENCHPT,X
		EOR	#0001
		STA	!ENCHPT,X
		LDA	#0002
		STA	!ENTIM1,X
KAMC2TOBUMV0020 EQU	$
		LDA	!ENDSXL,X
		CMP	#00100H
		BCS	KAMC2TOBUMV0040		; [->KAMC2TOBUMV0040]
;
		STA	R1
		SEC
		SBC	!ENMOVX,X
		STA	R7
		LDA	!ENDSYL,X
		CMP	#00100H
		BCS	KAMC2TOBUMV0040		; [->KAMC2TOBUMV0040]
;
		STA	R2
		SEC
		SBC	!ENMOVY,X
		CMP	#00100H
		BCS	KAMC2TOBUMV0040		; [->KAMC2TOBUMV0040]
;
		STA	R8
		M_CHIP	KIRAKIRA_WINSET
;
		NOP
		NOP
;
;-------------- ウィンドウバッファ転送セット ----------------------------
		JSL	>M_DMA_BFST
		LWORD	WINDBUF		;転送先アドレス
		LWORD	WINDBF		;転送元アドレス
		WORD	(0D2H*4)	;転送バイト数
;
		LDX	<ENINDX
;
KAMC2TOBUMV0040 EQU	$
		LDA	!ENDSXL,X
		CMP	#00100H
		BPL	KAMC2TOBUMV0060		; [->KAMC2TOBUMV0060]
;
		M_CHIP	KIRAKIRA_SCRSET
;
		NOP
		NOP
;
;
;-------------- ＢＧ３スクロールカウンターＶバッファ転送セット ----------
		JSL	>M_DMA_BFST
		LWORD	HDMABUF		;転送先アドレス
		LWORD	HDMABF		;転送元アドレス
;[1995.03.02.TH]		WORD	(0B2H*2)	;転送バイト数
		WORD	(0D2H*2)	;転送バイト数
;
;-------------- ＢＧ３カラーバッファ転送セット --------------------------
		JSL	>M_DMA_BFST
		LWORD	HDMABUF3	;転送先アドレス
		LWORD	HDMABF2		;転送元アドレス
;[1995.03.02.TH]		WORD	(0B2H*2)	;転送バイト数
		WORD	(0D2H*2)	;転送バイト数
;
		M8				; memory 8bit mode !!
;
		LDA	!BG2TYP
		CMP	#016H
		BEQ	KAMC2TOBUMV0050		; [->KAMC2TOBUMV0050]
;
		LDA	#02
		STA	!WIND24
		BRA	KAMC2TOBUMV0058
;
KAMC2TOBUMV0050 EQU	$
		LDA	#020H
		STA	!WIND23
KAMC2TOBUMV0058 EQU	$
		LDA	#00110110B
		TSB	!HD420C
;
		M16				; memory 16bit mode !!
;
		LDX	<ENINDX
KAMC2TOBUMV0060 EQU	$
		JSR	KAMC2DSOUT
;
		LDA	!ENTIM0,X
		BNE	KAMC2TOBUMV0080		; [->KAMC2TOBUMV0080]
;
		LDA	#00004H
		STA	!ENTIM0,X
		LDA	#KIRA2
		JSL	>EXINSR
;
		LDA	#0007
		STA	!EXCHPT,Y
		LDA	!ENXPSL,X
		STA	!EXXPSL,Y
		LDA	<RANDM0
		AND	#0001FH
		CLC
		ADC	!ENYPSL,X
		STA	!EXYPSL,Y
		LDA	#04
		STA	!EXTIM0,Y
;
		LDA	#00018H
		JSL	>SOUND_3_ON		; サウンド セット！！
;
KAMC2TOBUMV0080 EQU	$
		RTL
;
;
KAMC2TOBUM2	EQU	$
		LDX	<ENINDX
;
		LDA	!ENDSYL,X
		SEC
		SBC	#009H
		CMP	#100H
		BCS	KAMC2TOBUM2_01
		AND	#000FFH
;;;		STA	>KIRAKIRA_V_VSP
		CLC
		ADC	#010H
		XBA
		STA	>KIRAKIRA_C_SP
KAMC2TOBUM2_01
;
		LDX	<ENINDX
		LDA	!ENXSPD,X
		AND	#0FC00H
		XBA
		ASL	A
		ASL	A
		STA	!ENGPOW,X
		LDA	!ENTIM1,X
		BNE	KAMC2TOBUM20020		; [->KAMC2TOBUM20020]
;
		LDA	!ENCHPT,X
		EOR	#0001
		STA	!ENCHPT,X
		LDA	#0002
		STA	!ENTIM1,X
KAMC2TOBUM20020 EQU	$
		LDA	!ENDSXL,X
		CMP	#00100H
		BCS	KAMC2TOBUM20040		; [->KAMC2TOBUM20040]
;
		STA	R1
		SEC
		SBC	!ENMOVX,X
		STA	R7
		LDA	!ENDSYL,X
		CMP	#00100H
		BCS	KAMC2TOBUM20040		; [->KAMC2TOBUM20040]
;
		STA	R2
		SEC
		SBC	!ENMOVY,X
		CMP	#00100H
		BCS	KAMC2TOBUM20040		; [->KAMC2TOBUM20040]
;
		STA	R8
		M_CHIP	KIRAKIRA_WINST2
;
		NOP
		NOP
;
;-------------- ウィンドウバッファ転送セット ----------------------------
		JSL	>M_DMA_BFST
		LWORD	WINDBUF		;転送先アドレス
		LWORD	WINDBF		;転送元アドレス
		WORD	(0D2H*4)	;転送バイト数
;
		LDX	<ENINDX
;
KAMC2TOBUM20040 EQU	$
		LDA	!ENDSXL,X
		BMI	KAMC2TOBUM20060		; [->KAMC2TOBUM20060]
;
		M_CHIP	KIRAKIRA_SCRSET
;
		NOP
		NOP
;
;
;-------------- ＢＧ３スクロールカウンターＶバッファ転送セット ----------
		JSL	>M_DMA_BFST
		LWORD	HDMABUF		;転送先アドレス
		LWORD	HDMABF		;転送元アドレス
;[1995.03.02.TH]		WORD	(0B2H*2)	;転送バイト数
		WORD	(0D2H*2)	;転送バイト数
;
;-------------- ＢＧ３カラーバッファ転送セット --------------------------
		JSL	>M_DMA_BFST
		LWORD	HDMABUF3	;転送先アドレス
		LWORD	HDMABF2		;転送元アドレス
;[1995.03.02.TH]		WORD	(0B2H*2)	;転送バイト数
		WORD	(0D2H*2)	;転送バイト数
;
		M8				; memory 8bit mode !!
;
		LDA	!BG2TYP
		CMP	#016H
		BEQ	KAMC2TOBUM20050		; [->KAMC2TOBUM20050]
;
		LDA	#02
		STA	!WIND24
		BRA	KAMC2TOBUM20058
;
KAMC2TOBUM20050 EQU	$
		LDA	#020H
		STA	!WIND23
KAMC2TOBUM20058 EQU	$
		LDA	#00110110B
		TSB	!HD420C
;
		M16				; memory 16bit mode !!
;
		LDX	<ENINDX
KAMC2TOBUM20060 EQU	$
		JSR	KAMC2DSOUT
;
		LDA	!ENTIM0,X
		BNE	KAMC2TOBUM20080		; [->KAMC2TOBUM20080]
;
		LDA	#00004H
		STA	!ENTIM0,X
		LDA	#KIRA2
		JSL	>EXINSR
;
		LDA	#0007
		STA	!EXCHPT,Y
		LDA	!ENXPSL,X
		STA	!EXXPSL,Y
		LDA	<RANDM0
		AND	#0001FH
		CLC
		ADC	!ENYPSL,X
		STA	!EXYPSL,Y
		LDA	#04
		STA	!EXTIM0,Y
;
		LDA	#00018H
		JSL	>SOUND_3_ON		; サウンド セット！！
;
KAMC2TOBUM20080 EQU	$
		RTL
;
;
KAMC2DSOUT	EQU	$
		LDA	!ENDSXL,X
		CLC
		ADC	#00060H
		CMP	#001B0H
		BCS	KAMC2DSOUT0080		; 範囲外？ [yes->KAMC2DSOUT0080]
;
		LDA	!ENDSYL,X
		CLC
		ADC	#00060H
		CMP	#001B0H
		BCS	KAMC2DSOUT0080		; 範囲外？ [yes->KAMC2DSOUT0080]
;
KAMC2DSOUT007F	EQU	$
		RTS
;
KAMC2DSOUT0080	EQU	$
		STZ	!ENXSPD,X
		STZ	!ENXPOW,X
		STZ	!ENYSPD,X
		STZ	!ENGPOW,X
		LDA	#00020H			; kirakira start timer
		STA	!ENTIM0,X		;
;
		M8				; memory 8bit mode !!
;
		LDA	#0FFH
		STA	!ENYUSN,X
		INC	<ENCONT,X
		INC	<ENCONT,X
;
		M16				; memory 16bit mode !!
;
		PLA				; pull pull return !!
		RTL
;
;
KAMC2WAIT	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	KAMC2WAIT0040		; [->KAMC2WAIT0040]
;
		LDA	#0002
		STA	!BOSS_START
;
		M8				; memory 8bit mode !!
;
		LDA	#01
		STA	!ENWRK9,X		; きらきらスタート！！
;
		M16				; memory 16bit mode !!
;
KAMC2WAIT0040	EQU	$
		LDA	>KIRAKIRA_C_SP
		CMP	#09800H
		BCC	KAMC2WAIT00F0		; カーテン目標値達成？[no->KAMC2WAIT00F0]
;
;;;;;;;;		LDA	!ENTIM0,X
;;;;;;;;		BNE	KAMC2WAIT00F0		; [->KAMC2WAIT00F0]
;
		M8				; memory 8bit mode !!
;
		INC	<ENCONT,X
		INC	<ENCONT,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
KAMC2WAIT00F0	EQU	$
		LDX	<ENINDX
;
		LDA	!ENDSYL,X
		SEC
		SBC	#009H
		CMP	#0100H
		BCS	KAMC2WAIT00F1
		AND	#000FFH
;;;		STA	>KIRAKIRA_V_VSP
		CLC
		ADC	#010H
		XBA
		STA	>KIRAKIRA_C_SP
KAMC2WAIT00F1	EQU	$
		LDA	!ENDSXL,X
		STA	R1
		SEC
		SBC	!ENMOVX,X
		STA	R7
		LDA	!ENDSYL,X
		STA	R2
		SEC
		SBC	!ENMOVY,X
		STA	R8
		M_CHIP	KIRAKIRA_WINSET
;
		NOP
		NOP
;
;-------------- ウィンドウバッファ転送セット ----------------------------
;
		JSL	>M_DMA_BFST
		LWORD	WINDBUF		;転送先アドレス
		LWORD	WINDBF		;転送元アドレス
		WORD	(0D2H*4)	;転送バイト数
;
		LDX	<ENINDX
;
		M_CHIP	KIRAKIRA_SCRSET
;
		NOP
		NOP
;
;-------------- ＢＧ３スクロールカウンターＶバッファ転送セット ----------
		JSL	>M_DMA_BFST
		LWORD	HDMABUF		;転送先アドレス
		LWORD	HDMABF		;転送元アドレス
;[1995.03.02.TH]		WORD	(0B2H*2)	;転送バイト数
		WORD	(0D2H*2)	;転送バイト数
;
;-------------- ＢＧ３カラーバッファ転送セット --------------------------
		JSL	>M_DMA_BFST
		LWORD	HDMABUF3	;転送先アドレス
		LWORD	HDMABF2		;転送元アドレス
;[1995.03.02.TH]		WORD	(0B2H*2)	;転送バイト数
		WORD	(0D2H*2)	;転送バイト数
;
		M8				; memory 8bit mode !!
;
		LDA	!BG2TYP
		CMP	#016H
		BEQ	KAMC2WAIT0180		; [->KAMC2WAIT0180]
;
		LDA	#02
		STA	!WIND24
		BRA	KAMC2WAIT0188
;
KAMC2WAIT0180	EQU	$
		LDA	#020H
		STA	!WIND23
KAMC2WAIT0188	EQU	$
		LDA	#00110110B
		TSB	!HD420C
;
		M16				; memory 16bit mode !!
;
		LDX	<ENINDX
		RTL
;
;
KAMC2WAT2	EQU	$
		LDX	<ENINDX
		LDA	>KIRAKIRA_C_SP
;;;		CMP	#0B000H
		CMP	#09800H
		BCC	KAMC2WAT200F0		; カーテン目標値達成？[no->KAMC2WAT200F0]
;
;;;;;;;;		LDA	!ENTIM0,X
;;;;;;;;		BNE	KAMC2WAT200F0		; [->KAMC2WAT200F0]
;
		M8				; memory 8bit mode !!
;
		INC	<ENCONT,X
		INC	<ENCONT,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
KAMC2WAT200F0	EQU	$
		LDX	<ENINDX
;
		LDA	!ENDSYL,X
		SEC
		SBC	#009H
		CMP	#0100H
		BCS	KAMC2WAT200F1
		AND	#000FFH
;;;		STA	>KIRAKIRA_V_VSP
		CLC
		ADC	#010H
		XBA
		STA	>KIRAKIRA_C_SP
KAMC2WAT200F1	EQU	$
		LDA	!ENDSXL,X
		STA	R1
		SEC
		SBC	!ENMOVX,X
		STA	R7
		LDA	!ENDSYL,X
		STA	R2
		SEC
		SBC	!ENMOVY,X
		STA	R8
		M_CHIP	KIRAKIRA_WINST2
;
		NOP
		NOP
;
;-------------- ウィンドウバッファ転送セット ----------------------------
;
		JSL	>M_DMA_BFST
		LWORD	WINDBUF		;転送先アドレス
		LWORD	WINDBF		;転送元アドレス
		WORD	(0D2H*4)	;転送バイト数
;
		LDX	<ENINDX
;
		M_CHIP	KIRAKIRA_SCRSET
;
		NOP
		NOP
;
;-------------- ＢＧ３スクロールカウンターＶバッファ転送セット ----------
		JSL	>M_DMA_BFST
		LWORD	HDMABUF		;転送先アドレス
		LWORD	HDMABF		;転送元アドレス
;[1995.03.02.TH]		WORD	(0B2H*2)	;転送バイト数
		WORD	(0D2H*2)	;転送バイト数
;
;-------------- ＢＧ３カラーバッファ転送セット --------------------------
		JSL	>M_DMA_BFST
		LWORD	HDMABUF3	;転送先アドレス
		LWORD	HDMABF2		;転送元アドレス
;[1995.03.02.TH]		WORD	(0B2H*2)	;転送バイト数
		WORD	(0D2H*2)	;転送バイト数
;
		M8				; memory 8bit mode !!
;
		LDA	!BG2TYP
		CMP	#016H
		BEQ	KAMC2WAT20180		; [->KAMC2WAT20180]
;
		LDA	#02
		STA	!WIND24
		BRA	KAMC2WAT20188
;
KAMC2WAT20180	EQU	$
		LDA	#020H
		STA	!WIND23
KAMC2WAT20188	EQU	$
		LDA	#00110110B
		TSB	!HD420C
;
		M16				; memory 16bit mode !!
;
		LDX	<ENINDX
		RTL
;
;
KAMC2ENMYST	EQU	$
		LDX	<ENINDX
		LDA	#-1
		STA	!BOSS_START
		STZ	!PLSTFG			; プレイヤーストップ解除！！
;
		M8				; memory 8bit mode !!
;
		LDA	#00110110B
		TRB	!HD420C
		LDA	#020H
		STA	!SUBADF
		STZ	WMANSL
		STZ	WSUBSL
		INC	<ENCONT,X
		INC	<ENCONT,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
;
KAMC2CLEAR	EQU	$
		LDX	<ENINDX
		LDA	!BOSS_START
		BEQ	KAMC2CLEAR00F0		; [->KAMC2CLEAR00F0]
;
		RTL
;
KAMC2CLEAR00F0	EQU	$
		JSR	KAMC2COLRESET
;
		LDY	<ENWRK2,X
		CPY	#0BH
		BEQ	KAMC2CLEAR00F8		; ６ｗ−８？ [yes->KAMC2CLEAR00F8]
;
		LDA	BOSS_SOUND,Y
		AND	#000FFH
		STA	!SOUND_0		; サウンド セット！！（ＢＧＭ）
;
KAMC2CLEAR00F8	EQU	$
		JMP	>ENCLEAR_NORETN
;
;
KAMC2FUWA_L	EQU	$
		JSR	KAMC2FUWA
;
		RTL
;
;
KAMC2FUWA	EQU	$
;
		I16				; index 16bit mode !!
;
		TXY
		LDX	<ENWRK4,Y
		LDA	>SIN,X
		ASR16
		ASR16
		ASR16
		ASR16
		ASR16
		ASR16
		CLC
		ADC	!ENWRK6,Y
		STA	!ENYPSL,Y
		LDA	!ENWRK4,Y
		CLC
		ADC	#0008
		AND	#001FEH
		STA	!ENWRK4,Y
		TYX
;
		I8				; index 8bit mode !!
;
		RTS
;
;
KAMC2COLCHG	EQU	$
		LDY	!ENWRK9,X
		BEQ	KAMC2COLCHG00F0		; [->KAMC2COLCHG00F0]
;
		LDA	<FRCNT2
		AND	#00003H
		BNE	KAMC2COLCHG00F0		; [->KAMC2COLCHG00F0]
;
		M8				; memory 8bit mode !!
;
		LDA	!ENWRK8,X
		PHA
		CLC
		ADC	#(15-1)*2
		AND	#0001EH
		TAY
		PLA
		INC	A
		INC	A
		AND	#0001EH
		STA	!ENWRK8,X
;
		M16				; memory 16bit mode !!
;
		PHB
		LDX	#BANK DATACOL
		PHX
		PLB				; DBR Set !!
		TYX
		LDY	#(15-1)*2
KAMC2COLCHG0040 EQU	$
		LDA	>BOSS_KRKR_COL+COL_ADDRESS,X
		STA	!DATACOL+((061H+80H)*2),Y
		STA	!MOTOCOL+((061H+80H)*2),Y
		TXA
		DEC	A
		DEC	A
		AND	#0001EH
		TAX
		DEY
		DEY
		BPL	KAMC2COLCHG0040		; [->KAMC2COLCHG0040]
;
		PLB				; DBR Reset !!
		LDX	<ENINDX
KAMC2COLCHG00F0 EQU	$
		RTS
;
;
KAMC2COLRESETDT EQU	$
		LWORD	COL_ADDRESS+OBJ_SUB_D_COL	;DATACOL+((001H+80H)*2)
		LWORD	DATACOL+((011H+80H)*2)
		LWORD	DATACOL+((011H+80H)*2)
		LWORD	DATACOL+((011H+80H)*2)
		LWORD	DATACOL+((051H+80H)*2)
		LWORD	DATACOL+((011H+80H)*2)
		LWORD	COL_ADDRESS+OBJ_SUB_E_COL	;DATACOL+((041H+80H)*2)
		LWORD	DATACOL+((011H+80H)*2)
		LWORD	DATACOL+((041H+80H)*2)
		LWORD	COL_ADDRESS+OBJ_SUB_C_COL	;DATACOL+((021H+80H)*2)
		LWORD	COL_ADDRESS+OBJ_SUB_F_COL	;DATACOL+((021H+80H)*2)
		LWORD	DATACOL+((061H+80H)*2)
;
Donburi		LWORD	DATACOL+((001H+80H)*2)
Sulime		LWORD	DATACOL+((011H+80H)*2)
Puchi		LWORD	DATACOL+((041H+80H)*2)
Tubob		LWORD	DATACOL+((011H+80H)*2)
Telesa		LWORD	DATACOL+((011H+80H)*2)
Nokonok		LWORD	DATACOL+((011H+80H)*2)
Gerogero	LWORD	DATACOL+((051H+80H)*2)
Pakkun		LWORD	DATACOL+((011H+80H)*2)
Kemekuj		LWORD	DATACOL+((041H+80H)*2)
Qchan		LWORD	DATACOL+((021H+80H)*2)
Kachi		LWORD	DATACOL+((021H+80H)*2)
		LWORD	DATACOL+((001H+80H)*2)
;
Donb		EQU	(Donburi-KAMC2COLRESETDT)
Slim		EQU	(Sulime-KAMC2COLRESETDT)
Puti		EQU	(Puchi-KAMC2COLRESETDT)
Tubo		EQU	(Tubob-KAMC2COLRESETDT)
Tlsa		EQU	(Telesa-KAMC2COLRESETDT)
Nknk		EQU	(Nokonok-KAMC2COLRESETDT)
Gero		EQU	(Gerogero-KAMC2COLRESETDT)
Pakn		EQU	(Pakkun-KAMC2COLRESETDT)
Kmkj		EQU	(Kemekuj-KAMC2COLRESETDT)
Qcan		EQU	(Qchan-KAMC2COLRESETDT)
Kati		EQU	(Kachi-KAMC2COLRESETDT)
;
KAMC2COLRESET	EQU	$
		LDA	<ENWRK2,X
		ASL	A
		CLC
		ADC	<ENWRK2,X
		TAY
KAMC2COLRESET_2 EQU	$
		PHX				; (X) Push !!
		LDA	KAMC2COLRESETDT,Y
		STA	<EWORK
		LDX	KAMC2COLRESETDT+2,Y
		STX	<EWORK2
		LDX	#(15-1)*2
KAMC2COLRESET20 EQU	$
		TXY
		LDA	[<EWORK],Y
		STA	>DATACOL+((061H+80H)*2),X
		STA	>MOTOCOL+((061H+80H)*2),X
		DEX
		DEX
		BPL	KAMC2COLRESET20		; [->KAMC2COLRESET20]
;
		PLX				; (X) Pull !!
		RTS
;
;
;------------------------------------------------------------------------
;-	Color Set : (Y) <- Boss Number					-
;------------------------------------------------------------------------
KAMC2COLRESET_L EQU	$
		PHB
		PHK
		PLB				; DBR Set !!
;
		JSR	KAMC2COLRESET_2
;
		PLB				; DBR Reset !!
		RTL
;
;
;------------------------------------------------------------------------
;-	initial (壷ヘイホー)						-
;-		ENWRK0 <- 敵インデックス(8Bit)				-
;-		ENWRK1 <- #00(8Bit)					-
;------------------------------------------------------------------------
TbhihRunSpd	EQU	-0100H
TbhihPushSpd	EQU	-000CH
Tbhihptn	EQU	(TBHIHPTNE-TBHIHPTN-1)
Tbhihpushptn0	EQU	(TBHIHPUSH1PTN-TBHIHPUSH0PTN-1)
Tbhihpushptn1	EQU	(TBHIHPUSHPTNE-TBHIHPUSH1PTN-1)
;
TbhihPushIn	EQU	(Tbhpushin-TBHIHMVMDSL0)
;
TBHIHXSPD	EQU	$
		WORD	-0060H, 00060H
;
TBHIHPTN	EQU	$
		HEX	02, 00, 03, 00, 02, 01, 04
;
TBHIHPTNE	EQU	$
;
TBHIHIN		EQU	$
		LDA	!ENXPSL,X
		STA	!ENWRK6,X		; イニシャルＸポジションのセーブ！
		LDA	TBHIHXSPD
		STA	!ENXSPD,X
;
		M8				; memory 8bit mode !!
;
		LDA	#Tbhihptn
		STA	<ENWRK2,X
		TAY
		LDA	TBHIHPTN,Y
		STA	!ENCHPT,X
		STA	<EWORK
		LDA	#03
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
		TXY
		LDA	#TBHIH
		JSL	>ENINSR2
		BCC	TBHIHIN00F0		; 敵の確保成功？ [no->TBHIHIN00F0]
;
		LDA	!ENXPSL,X
		CLC
		ADC	#00040H
		STA	!ENXPSL,Y
		STA	!ENWRK6,Y		; イニシャルＸポジションのセーブ！
		LDA	!ENYPSL,X
		STA	!ENYPSL,Y
		LDA	TBHIHXSPD
		STA	!ENXSPD,Y
;
		M8				; memory 8bit mode !!
;
		TXA
		STA	!ENWRK0,Y
		LDA	#01*2
		STA	!ENWRK1,Y
		LDA	#04
		STA	!ENYUSN,Y
		LDA	#Tbhihptn
		STA	!ENWRK2,Y
		LDA	<EWORK
		STA	!ENCHPT,Y
		LDA	#03
		STA	!ENTIM0,Y
;
		LDA	<ENWRK0,X
		STA	!ENWRKA,X		; 壷お化けのインデックス！！
		STA	!ENWRKA,Y		; 壷お化けのインデックス！！
;
		M16				; memory 16bit mode !!
;
TBHIHIN00F0	EQU	$
		RTL
;
;
;------------------------------------------------------------------------
;-	move (壷ヘイホー)						-
;------------------------------------------------------------------------
TBHIHMV		EQU	$
		JSL	>ENMDCK			; mode check
;
		JSR	TBHIHDSOUT
;
		LDY	<ENCONT,X
		TYX
		JMP	(TBHIHMVMDSL0,X)
;
TBHIHMVMDSL0	EQU	$
		WORD	TBHIHNORMAL
Tbhpushin	WORD	TBHIHPUSHIN
;
;
TBHIHNORMAL	EQU	$
		LDX	<ENINDX
		LDY	<ENWRK1,X
		TYX
		JSR	(TBCHKMDSEL,X)
;
		LDY	<ENWRK3,X
		TYX
		JMP	(TBHIHNMLMDSL,X)
;
TBCHKMDSEL	EQU	$
		WORD	TUBOCHK0
		WORD	TUBOCHK1
;
TBHIHNMLMDSL	EQU	$
		WORD	TBHIHWALK
		WORD	TBHIHSTOP
;
;
TBHIHPUSHIN	EQU	$
		LDX	<ENINDX
		LDY	<ENWRK3,X
		TYX
		JMP	(TBHIHPINMDSL,X)
;
TBHIHPINMDSL	EQU	$
		WORD	TBHIHRUN0
		WORD	TBHIHPUSH
;
;
TBHIHWALK	EQU	$
		LDX	<ENINDX
		LDY	#00
		LDA	!ENWRK6,X
		CMP	!ENXPSL,X
		BMI	TBHIHWALK0020		; 反転？ [yes->TBHIHWALK0020]
;
		INY
		INY
		SEC
		SBC	#00010H
		CMP	!ENXPSL,X
		BMI	TBHIHWALK0030		; 反転？ [no->TBHIHWALK0030]
;
TBHIHWALK0020	EQU	$
		TYA
		STA	!ENMUKI,X
		LDA	TBHIHXSPD,Y
		STA	!ENXSPD,X
		BRA	TBHIHWALK0038
;
TBHIHWALK0030	EQU	$
		LDA	<RANDM0
		AND	#0001FH
		BEQ	TBHIHWALK0100		; [->TBHIHWALK0100]
;
TBHIHWALK0038	EQU	$
		LDA	!ENTIM0,X
		BNE	TBHIHWALK00F0		; pattern change ? [no->TBHIHWALK00F0]
;
		M8				; memory 8bit mode !!
;
		DEC	<ENWRK2,X
		BPL	TBHIHWALK0040		; [->TBHIHWALK0040]
;
		LDA	#Tbhihptn
		STA	<ENWRK2,X
TBHIHWALK0040	EQU	$
		LDY	<ENWRK2,X
		LDA	TBHIHPTN,Y
		STA	!ENCHPT,X
		LDA	#03
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
TBHIHWALK00F0	EQU	$
		RTL
;
TBHIHWALK0100	EQU	$
		JSL	>RANDAM
;
		STZ	!ENXSPD,X
		STZ	!ENCHPT,X
;
		M8				; memory 8bit mode !!
;
		LDA	<RANDM0
		AND	#00FH
		CLC
		ADC	#010H
		STA	!ENTIM0,X
		INC	<ENWRK3,X
		INC	<ENWRK3,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
;
TBHIHSTOP	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	TBHIHSTOP00F0		; [->TBHIHSTOP00F0]
;
		M8				; memory 8bit mode !!
;
		DEC	<ENWRK2,X
		BMI	TBHIHSTOP0100		; [->TBHIHSTOP0100]
;
		LDA	!ENMUKI,X
		EOR	#02
		STA	!ENMUKI,X
		LDA	<RANDM0
		AND	#00FH
		CLC
		ADC	#010H
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
TBHIHSTOP00F0	EQU	$
		RTL
;
		MEM8
;
TBHIHSTOP0100	EQU	$
		LDA	#Tbhihptn
		STA	<ENWRK2,X
		TAY
		LDA	TBHIHPTN,Y
		STA	!ENCHPT,X
		LDA	#03
		STA	!ENTIM0,X
		STZ	<ENWRK3,X
;
		M16				; memory 16bit mode !!
;
		LDY	!ENMUKI,X
		LDA	TBHIHXSPD,Y
		STA	!ENXSPD,X
		RTL
;
;
TBHIHRUN0	EQU	$
		LDX	<ENINDX
		LDY	<ENWRK1,X
		TYX
		JSR	(TBHIHCRCKMDSL,X)
;
TBHIHRUN00080	EQU	$
		LDA	!ENTIM0,X
		BNE	TBHIHRUN000F0		; pattern change ? [no->TBHIHRUN000F0]
;
		M8				; memory 8bit mode !!
;
		DEC	<ENWRK2,X
		BPL	TBHIHRUN000C0		; [->TBHIHRUN000C0]
;
		LDA	#Tbhihptn
		STA	<ENWRK2,X
TBHIHRUN000C0	EQU	$
		LDY	<ENWRK2,X
		LDA	TBHIHPTN,Y
		STA	!ENCHPT,X
		LDA	#01
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
TBHIHRUN000F0	EQU	$
		RTL
;
;
TBHIHPUSHPTNAD	EQU	$
		WORD	TBHIHPUSH0PTN
		WORD	TBHIHPUSH1PTN
;
TBHIHPUSH0PTN	EQU	$
		HEX	05, 09, 08, 07, 06, 05
TBHIHPUSH1PTN	EQU	$
		HEX	0B, 0C, 0B, 0C, 0B, 0C
TBHIHPUSHPTNE	EQU	$
;
TBHIHPUSHSPD	EQU	$
		WORD	00000H, 00008H, 0FFF0H
;
TBHIHPUSHTIM	EQU	$
		WORD	08, 16, 02
;
TBHIHPUSH	EQU	$
		LDX	<ENINDX
TBHIHSPDSET	EQU	$
		LDA	#(3*2)-2
		STA	<EWORK
		LDY	!ENWRKA,X
		LDA	!ENXPSL,Y
		CMP	#00100H
		BCS	TBHIHSPDSET0080		; [->TBHIHSPDSET0080]
;
		DEC	<EWORK
		DEC	<EWORK
		CMP	#00060H
		BCC	TBHIHSPDSET0080		; [->TBHIHSPDSET0080]
;
		DEC	<EWORK
		DEC	<EWORK
TBHIHSPDSET0080 EQU	$
		LDY	<EWORK
		LDA	TBHIHPUSHSPD,Y
		STA	<EWORK2
		LDA	TBHIHPUSHTIM,Y
		STA	<EWORK4
;
		LDY	<ENWRK0,X
		LDA	!EWIDEX,Y
		ASL	A
		CLC
		ADC	!ENXPSL,Y
		STA	!ENXPSL,X
;
		LDY	<ENWRK1,X
		BNE	TBHIHPUSH0040		; [->TBHIHPUSH0040]
;
		LDY	<ENWRK0,X
		PHX
		LDX	#00
		LDA	!ENWRKC,Y
		BMI	TBHIHPUSH0020		; [->TBHIHPUSH0020]
;
		INX
		INX
TBHIHPUSH0020	EQU	$
		LDA	TBHIHPUSHPTNAD,X
		STA	<EWORK
		TXA
		PLX
		STA	!ENWRKC,X
;
		LDA	!ENWRK6,X
		SEC
		SBC	#000A0H
		CMP	!ENXPSL,X
		BPL	TBHIHPUSH0050		; [->TBHIHPUSH0050]
;
		LDY	<ENWRK0,X
		LDA	!ENXSPD,Y
		CLC
		ADC	#TbhihPushSpd
		CLC
		ADC	<EWORK2
		CLC
		ADC	<ENWRK4,X
		STA	!ENXSPD,Y
		STZ	<ENWRK4,X
		BRA	TBHIHPUSH0050
;
TBHIHPUSH0040	EQU	$
		LDY	<ENWRK0,X
		LDA	#TbhihPushSpd
		CLC
		ADC	<EWORK2
		STA	!ENWRK4,Y
		PHX
		LDX	!ENWRKC,Y
		LDA	TBHIHPUSHPTNAD,X
		STA	<EWORK
		PLX
TBHIHPUSH0050	EQU	$
		LDA	!ENTIM0,X
		BNE	TBHIHPUSH00F0		; pattern change ? [no->TBHIHPUSH00F0]
;
		M8				; memory 8bit mode !!
;
		DEC	<ENWRK2,X
		BPL	TBHIHPUSH00A0		; [->TBHIHPUSH00A0]
;
		LDA	#Tbhihpushptn0
		STA	<ENWRK2,X
TBHIHPUSH00A0	EQU	$
		LDY	<ENWRK2,X
		LDA	(<EWORK),Y
		STA	!ENCHPT,X
		LDA	<EWORK4
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
TBHIHPUSH00F0	EQU	$
		RTL
;
;
TUBOCHK0	EQU	$
		LDX	<ENINDX
		LDY	<ENWRK0,X
		LDA	!ENWRK6,X
		SEC
		SBC	#00030H
		CMP	!ENXPSL,Y
		BPL	TUBOCHK000F0		; [->TUBOCHK000F0]
;
		STZ	!ENMUKI,X
		LDA	#TbhihRunSpd
		STA	!ENXSPD,X
;
		M8				; memory 8bit mode !!
;
		LDA	#TbhihPushIn
		STA	<ENCONT,X
		LDA	#Tbhihptn
		STA	<ENWRK2,X
		TAY
		LDA	TBHIHPTN,Y
		STA	!ENCHPT,X
		LDA	#01
		STA	!ENTIM0,X
		STZ	<ENWRK3,X
;
		M16				; memory 16bit mode !!
;
		PLA				; pull pull return !!
		RTL
;
TUBOCHK000F0	EQU	$
		RTS
;
;
TUBOCHK1	EQU	$
		LDX	<ENINDX
		LDY	<ENWRK0,X
		LDA	!ENWRK6,X
		SEC
		SBC	#0003EH
		CMP	!ENXPSL,Y
		BPL	TUBOCHK100F0		; [->TUBOCHK100F0]
;
		STZ	!ENMUKI,X
		LDA	#TbhihRunSpd
		STA	!ENXSPD,X
;
		M8				; memory 8bit mode !!
;
		LDA	#TbhihPushIn
		STA	<ENCONT,X
		LDA	#Tbhihptn
		STA	<ENWRK2,X
		TAY
		LDA	TBHIHPTN,Y
		STA	!ENCHPT,X
		LDA	#01
		STA	!ENTIM0,X
		STZ	<ENWRK3,X
;
		M16				; memory 16bit mode !!
;
		PLA				; pull pull return !!
		RTL
;
TUBOCHK100F0	EQU	$
		RTS
;
;
TBHIHCRCKMDSL	EQU	$
		WORD	TBHIHCRCK
		WORD	TBHIHCRC2
;
;
TBHIHCRCK	EQU	$
		LDX	<ENINDX
		LDY	<ENWRK0,X
		LDA	!EWIDEY,X
		CLC
		ADC	!EWIDEY,Y
		STA	<EWORK
		LDA	!ECENTY,X
		SEC
		SBC	!ECENTY,Y
		ABS16
		CMP	<EWORK
		BCS	TBHIHCRCK00F0		; [->TBHIHCRCK00F0]
;
		LDA	!EWIDEX,X
		CLC
		ADC	!EWIDEX,Y
		STA	<EWORK
		LDA	!ENXPSL,X
		SEC
		SBC	!ENXPSL,Y
		BMI	TBHIHCRCK00F0		; [->TBHIHCRCK00F0]
;
		SEC
		SBC	<EWORK
		STA	<EWORK2
		BEQ	TBHIHCRCK0040		; [->TBHIHCRCK0040]
		BPL	TBHIHCRCK00F0		; [->TBHIHCRCK00F0]
;
TBHIHCRCK0040	EQU	$
		STZ	!ENXSPD,X
		LDA	!ENXPSL,X
		CLC
		ADC	<EWORK2
		STA	!ENXPSL,X
		STZ	!ENCHPT,X
;
		M8				; memory 8bit mode !!
;
		LDA	#Tbhihpushptn0
		STA	<ENWRK2,X
		TAY
		LDA	TBHIHPUSH0PTN,Y
		STA	!ENCHPT,X
		LDA	#08
		STA	!ENTIM0,X
		INC	<ENWRK3,X
		INC	<ENWRK3,X
;
		M16				; memory 16bit mode !!
;
		PLA				; pull pull return !!
		RTL
;
TBHIHCRCK00F0	EQU	$
		RTS
;
;
TBHIHCRC2	EQU	$
		LDX	<ENINDX
		LDY	<ENWRK0,X
		LDA	!EWIDEY,X
		CLC
		ADC	!EWIDEY,Y
		STA	<EWORK
		LDA	!ECENTY,X
		SEC
		SBC	!ECENTY,Y
		ABS16
		CMP	<EWORK
		BCS	TBHIHCRC200F0		; [->TBHIHCRC200F0]
;
		LDA	!EWIDEX,X
		CLC
		ADC	!EWIDEX,Y
		STA	<EWORK
		LDA	!ENXPSL,X
		SEC
		SBC	!ENXPSL,Y
		BMI	TBHIHCRC200F0		; [->TBHIHCRC200F0]
;
		SEC
		SBC	<EWORK
		STA	<EWORK2
		BEQ	TBHIHCRC20040		; [->TBHIHCRC20040]
		BPL	TBHIHCRC200F0		; [->TBHIHCRC200F0]
;
TBHIHCRC20040	EQU	$
		STZ	!ENXSPD,X
		LDA	!ENXPSL,X
		CLC
		ADC	<EWORK2
		STA	!ENXPSL,X
		LDA	!ENCHPT,Y
		STA	!ENCHPT,X
;
		M8				; memory 8bit mode !!
;
		LDA	!ENWRK2,Y
		STA	<ENWRK2,X
		LDA	!ENTIM0,Y
		STA	!ENTIM0,X
		INC	<ENWRK3,X
		INC	<ENWRK3,X
;
		M16				; memory 16bit mode !!
;
		PLA				; pull pull return !!
		RTL
;
TBHIHCRC200F0	EQU	$
		RTS
;
;
TBHIHDSOUT	EQU	$
		LDA	!ENDSYL,X
		CLC
		ADC	#00050H
		CMP	#00190H
		BCC	TBHIHDSOUT00F0		; [->TBHIHDSOUT00F0]
;
		PLA
		JMP	>ENCLEAR
;
TBHIHDSOUT00F0	EQU	$
		RTS
;
;
;------------------------------------------------------------------------
;-	initial （コイン）						-
;------------------------------------------------------------------------
COIN2IN		EQU	$
		JSL	>EXIST_CHECK2
		BEQ	COIN2IN0040		; コイン取った？ [no->COIN2IN0040]
;
		JMP	>ENCLEAR
;
COIN2IN0040	EQU	$
		LDA	!OBJCOL
		CMP	#0002
		BNE	COIN2IN0080		; カラーチェンジ？ [no->COIN2IN0080]
;
		LDA	!ENCLOR,X
		ORA	#00007H<<1
		STA	!ENCLOR,X
COIN2IN0080	EQU	$
		STZ	!ENMUKI,X
;
;-------------- パターンチェンジ！！ ----------------------------
		LDA	<FRCNT2
		LSR	A
		LSR	A
		LSR	A
		AND	#00003H
		STA	!ENCHPT,X
;
		RTL
;
;
;------------------------------------------------------------------------
;-	move （コイン）							-
;------------------------------------------------------------------------
COIN2MV		EQU	$
;-------------- パターンチェンジ！！ ----------------------------
		LDA	<FRCNT2
		LSR	A
		LSR	A
		LSR	A
		AND	#00003H
		STA	!ENCHPT,X
;-------------- 衝突チェック！！ --------------------------------
		LDY	!ECRSFG,X
		BEQ	COIN2MV007E		; 何も触れてない？ [yes->COIN2MV007E]
		BMI	COIN2MV0080		; プレイヤーが触れた？ [yes->COIN2MV0080]
;
		DEY
		BEQ	COIN2MV007E		; 赤ちゃんが触れた？ [yes->COIN2MV007E]
;
		LDA	!ENMODE,Y
		CMP	#EMOVE
		BNE	COIN2MV007E		; Ｍｏｄｅ Ｍｏｖｅ ？ [no->COIN2MV007E]
;
		LDA	!ENSHOT,Y
		BEQ	COIN2MV007E		; ショット？ [no->COIN2MV007E]
;
		LDA	!ENMYNO,Y
		CMP	#SUIKT
		BEQ	COIN2MV0080		; 西瓜の種？ [yes->COIN2MV0080]
;
		CMP	#EGG00
		BCC	COIN2MV007E		; 卵類？ [no->COIN2MV007E]
;
		CMP	#EGG09+1
		BCC	COIN2MV0080		; 卵類？ [yes->COIN2MV0080]
;
COIN2MV007E	EQU	$
		RTL
;
;--------------	取られた時の処理 --------------------------------
COIN2MV0080	EQU	$
		LDA	ENXPSL,X
		STA	WORK0
		LDA	ENYPSL,X
		STA	WORK2
		JSL	>EX_COIN_SET_3
		LDA	#09H		;[♪]
		JSL	>SOUND_3_ON
;
		JSL	>NON_EXIST_SET		; コイン取ったフラグＯＮ！
;
		LDA	#FLKIR
		JSL	>EXINSR
;
		LDA	!ENXPSL,X
		STA	!EXXPSL,Y
		LDA	!ENYPSL,X
		STA	!EXYPSL,Y
		LDA	#0000CH
		STA	!EXCHPT,Y
		LDA	#0008
		STA	!EXTIM0,Y
;
		JMP	>ENCLEAR_NORETN
;
;
;------------------------------------------------------------------------
;-	initial （赤コイン）						-
;------------------------------------------------------------------------
COINRCOL	EQU	$
		WORD	00002H<<1, 00001H<<1
		WORD	00007H<<1, 00006H<<1
;
COINRIN		EQU	$
		JSL	>EXIST_CHECK2
		BEQ	COINRIN0040		; コイン取った？ [no->COINRIN0040]
;
		JMP	>ENCLEAR
;
COINRIN0040	EQU	$
		STZ	!ENMUKI,X
;
;-------------- 虫眼鏡チェック！！ ------------------------------
		LDY	#00
		LDA	!OBJCOL
		CMP	#0002
		BNE	COINRIN0080		; 水？ [no->COINRIN0080]
;
		LDY	#04
COINRIN0080	EQU	$
		STY	<ENWRK0,X
		LDA	!GRASS_ON
		BEQ	COINRIN0090		; 虫眼鏡ＯＮ？ [no->COINRIN0090]
;
		INY
		INY
COINRIN0090	EQU	$
		LDA	!ENCLOR,X
		AND	#0FFF1H
		ORA	COINRCOL,Y
		STA	!ENCLOR,X
;
;-------------- パターンチェンジ！！ ----------------------------
		LDA	<FRCNT2
		LSR	A
		LSR	A
		LSR	A
		AND	#00003H
		STA	!ENCHPT,X
;
		RTL
;
;
;------------------------------------------------------------------------
;-	move （赤コイン）						-
;------------------------------------------------------------------------
COINRMV		EQU	$
COGRASSCHK	EQU	$
;-------------- 虫眼鏡チェック！！ ------------------------------
		LDY	<ENWRK0,X
		LDA	!GRASS_ON
		BEQ	COGRASSCHK0060		; 虫眼鏡ＯＮ？ [no->COGRASSCHK0060]
;
		INY
		INY
COGRASSCHK0060	EQU	$
		LDA	!ENCLOR,X
		AND	#0FFF1H
		ORA	COINRCOL,Y
		STA	!ENCLOR,X
;
;-------------- パターンチェンジ！！ ----------------------------
		LDA	<FRCNT2
		LSR	A
		LSR	A
		LSR	A
		AND	#00003H
		STA	!ENCHPT,X
;-------------- 衝突チェック！！ --------------------------------
		LDY	!ECRSFG,X
		BEQ	COINRMV007E		; 何も触れてない？ [yes->COINRMV007E]
		BMI	COINRMV0080		; プレイヤーが触れた？ [yes->COINRMV0080]
;
		DEY
		BEQ	COINRMV007E		; 赤ちゃんが触れた？ [yes->COINRMV007E]
;
		LDA	!ENMODE,Y
		CMP	#EMOVE
		BNE	COINRMV007E		; Ｍｏｄｅ Ｍｏｖｅ ？ [no->COINRMV007E]
;
		LDA	!ENSHOT,Y
		BEQ	COINRMV007E		; ショット？ [no->COINRMV007E]
;
		LDA	!ENMYNO,Y
		CMP	#SUIKT
		BEQ	COINRMV0080		; 西瓜の種？ [yes->COINRMV0080]
;
		CMP	#EGG00
		BCC	COINRMV007E		; 卵類？ [no->COINRMV007E]
;
		CMP	#EGG09+1
		BCC	COINRMV0080		; 卵類？ [yes->COINRMV0080]
;
COINRMV007E	EQU	$
		RTL
;
;--------------	取られた時の処理 --------------------------------
COINRMV0080	EQU	$
		JSL	>COINR_GET2

		JMP	>ENCLEAR_NORETN
;
COINR_GET	EQU	$
		PHB
		PHK
		PLB
		JSL	>COINR_GET2
		JSL	>ENCLEAR_NORETN
		PLB
		RTL
;
COINR_GET2	EQU	$
		JSL	>NON_EXIST_SET		; コイン取ったフラグＯＮ！
;
		LDA	#FLKIR
		JSL	>EXINSR
;
		LDA	!ENXPSL,X
		STA	!EXXPSL,Y
		LDA	!ENYPSL,X
		STA	!EXYPSL,Y
		LDA	#0000CH
		STA	!EXCHPT,Y
		LDA	#0008
		STA	!EXTIM0,Y
;
		LDY	<ENWRK0,X
		INY
		INY
		LDA	COINRCOL,Y
		JSL	>BLUE_COIN_INC

		RTL
;
;
;------------------------------------------------------------------------
;-	initial （ＢＧ３リフト）					-
;------------------------------------------------------------------------
BG3LFMV01MDSL	EQU	$
		WORD	BG3LFMV0_1
		WORD	BG3LFMV0_1
		WORD	BG3LFMV0_1
		WORD	BG3LFMV0_1
		WORD	BG3LFMV0_1
		WORD	BG3LFMV0_1
;
BG3LFMV02MDSL	EQU	$
		WORD	BG3LFMV0_2
		WORD	BG3LFMV0_2
		WORD	BG3LFMV0_2
		WORD	BG3LFMV0_2
		WORD	BG3LFMV0_2
		WORD	BG3LFMV0_2
;
BG3LFFUWAWID	EQU	$
		WORD	0004
		WORD	0004
		WORD	0004
		WORD	0004
		WORD	0004
		WORD	0004
;
ZOOMYUKAMAXTP	EQU	$
		WORD	Zoom_Yuka_Max
		WORD	Zoom_Yuka_Max
		WORD	Zoom_Yuka_Max
		WORD	Zoom_Yuka_Max
		WORD	Zoom_Yuka_Max
		WORD	Zoom_Yuka_Max
;
ZOOMYUKAMINTP	EQU	$
		WORD	Zoom_Yuka_Min
		WORD	Zoom_Yuka_Min
		WORD	Zoom_Yuka_Min
		WORD	Zoom_Yuka_Min
		WORD	Zoom_Yuka_Min
		WORD	Zoom_Yuka_Min
;
;
BG3LFIN		EQU	$
		STZ	<ENCONT,X
		LDA	!ENYPSL,X
		STA	<ENWRK4,X
;------------------------------------------------------------------------
;-		ＢＧ３敵へ変更						-
;------------------------------------------------------------------------
		LDA	#00030H
		STA	!PLPRIO
		LDA	!ENCLOR,X
		AND	#0FFCFH
		ORA	#00030H
		STA	!ENCLOR,X
		LDA	!MANSEL
		STA	!ENWRKC,X		; MANSEL,SUBSEL Save !!
		LDA	!BG2TYP
		CMP	#00016H
		BNE	BG3LFIN00C0		; ＢＧ２敵？ [no->BG3LFIN00C0]
;
		LDY	#00FH
		STY	4331H
		LDY	#010H
		STY	4341H
;------------------------------------------------------------------------
;-		ＢＧ２カラーセット					-
;------------------------------------------------------------------------
		LDX	#15*2
BG3LFIN00A0	EQU	$
		LDA	>COL_ADDRESS+ABIS_COL,X
		STA	>MOTOCOL+(61H*2),X
		STA	>DATACOL+(61H*2),X
		DEX
		DEX
		BPL	BG3LFIN00A0		; [->BG3LFIN00A0]
;
		LDX	#15*2
BG3LFIN00B0	EQU	$
		LDA	>COL_ADDRESS+ABIS_COL,X
		STA	>MOTOCOL+(71H*2),X
		STA	>DATACOL+(71H*2),X
		DEX
		DEX
		BPL	BG3LFIN00B0		; [->BG3LFIN00B0]
;
		BRA	BG3LFIN00D0
;
BG3LFIN00C0	EQU	$
;------------------------------------------------------------------------
;-		ＢＧ３カラーセット					-
;------------------------------------------------------------------------
		LDX	#4*2
BG3LFIN00C8	EQU	$
		LDA	>COL_ADDRESS+BG3_TEKI_2,X
		STA	>MOTOCOL+(00H*2),X
		STA	>DATACOL+(00H*2),X
		DEX
		DEX
		BNE	BG3LFIN00C8		; [->BG3LFIN00C8]
;
BG3LFIN00D0	EQU	$
		LDX	<ENINDX
		LDA	!MANSEL
		ORA	!SUBSEL
		AND	#0000FH
		XBA
		ORA	#00010000B
		STA	!MANSEL
		LDA	#00002H
		STA	!ENGPOW,X
		LDA	#00040H
		STA	!ENGMAX,X
		LDA	!ENXPSL,X
		SEC
		SBC	!SCCH1
		STA	!ENDSXL,X
		LDA	!ENYPSL,X
		SEC
		SBC	!SCCV1
		STA	!ENDSYL,X
		JSR	BG3LIFTSET
;
		JSR	BG3LFAREACHK
;
		RTL
;
;
;------------------------------------------------------------------------
;-	move （ＢＧ３リフト）						-
;------------------------------------------------------------------------
BG3LFCHKPT	EQU	$
		WORD	0000000000010100B, 0000000000001010B
;
BG3LFXHOSE	EQU	$
		WORD	00001H, -0001H
;
BG3LFMV		EQU	$
		JSR	BG3LIFTSET
;
		JSR	BG3LFAREACHK
;
		LDA	<ENINDX
		AND	#000FFH
		STA	!CCWORK9		; 敵インデックス！！
		LDA	!PLXPSL
		SEC
		SBC	!SCCH1
		STA	!CCWORKA		; プレイヤー表示Ｘポジション！！
		LDA	!PLYPSL
		SEC
		SBC	!SCCV1
		STA	!CCWORKB		; プレイヤー表示Ｘポジション！！
		LDA	!PLSITD
		STA	!CCWORKC		; プレイヤーお座りフラグ！！
		M_CHIP	BG3_CROSS_CK
;
		LDX	<ENINDX
		JSL	>ENMDCK			; mode check
;
		LDA	!CCWORKD
		BNE	BG3LFMV0040		; プレイヤー衝突？ [yes->BG3LFMV0040]
;
		JMP	BG3LFMV0100		; プレイヤー衝突？ [no->BG3LFMV0100]
;
BG3LFMV0040	EQU	$
		BIT	#0000000000000001B
		BEQ	BG3LFMV0080		; 足当たり？ [no->BG3LFMV0080]
;
		LDA	!PLYSPD
		BMI	BG3LFMV0080		; 上昇中？ [yes->BG3LFMV0080]
;
		STZ	!PLDOSN
		LDA	#01
		STA	!ONLFFG
		LDA	<ENWRK0,X
		BNE	BG3LFMV0070		; [->BG3LFMV0070]
;
		LDY	#04
		STY	<ENWRK0,X
		LDA	#00100H
		STA	!ENYSPD,X
		LDA	#00040H
		STA	!ENTIM0,X
BG3LFMV0070	EQU	$
		LDA	#00200H
		STA	!PLYSPD
		LDA	!CCWORKE
		CLC
		ADC	#0002
		CLC
		ADC	!PLYPSL
		STA	!PLYPSL
		LDA	!PLXPSL
		CLC
		ADC	!ENMOVX,X
		STA	!PLXPSL
BG3LFMV0080	EQU	$
		LDA	!CCWORKD
		AND	#0000000000011110B
		BEQ	BG3LFMV0100		; 横当たり？ [no->BG3LFMV0100]
;
		PHA
		PHA
		LDY	#00
		LDA	!PLXSPD
		BMI	BG3LFMV0090		; [->BG3LFMV0090]
;
		INY
		INY
BG3LFMV0090	EQU	$
		PLA
		AND	BG3LFCHKPT,Y
		BEQ	BG3LFMV0098		; [->BG3LFMV0098]
;
		STZ	!PLXSPD
		STZ	!PLMVSP
BG3LFMV0098	EQU	$
		PLA
		LDY	#00
		AND	#0000000000010100B
		BNE	BG3LFMV00A0		; [->BG3LFMV00A0]
;
		INY
		INY
BG3LFMV00A0	EQU	$
		LDA	!PLXPSL
		CLC
		ADC	BG3LFXHOSE,Y
		STA	!PLXPSL
BG3LFMV0100	EQU	$
		LDA	BABYNO			;赤ちゃん誰かに乗ってる ?
		ORA	DEATHCT0		;赤ちゃん死神に連れ去られてる ?
		BNE	BG3LFMV01F0		; yes: BG3LFMV01F0

		LDA	!CCWORKA
		BEQ	BG3LFMV01F0		; 赤ちゃん当たり？ [no->BG3LFMV01F0]
;
		BIT	#0000000000000001B
		BEQ	BG3LFMV0180		; 足当たり？ [no->BG3LFMV0180]
;
		LDA	!ENYSPD
		BMI	BG3LFMV0180		; 上昇中？ [yes->BG3LFMV0180]
;
;		LDA	#01
;		STA	!B_ONLFFG
;		LDA	#00200H
;		STA	!ENYSPD
;		LDA	!CCWORKB
;		CLC
;		ADC	!ENYPSL
;		STA	!ENYPSL
;		STA	>EBGOYP
;		LDA	!ENXPSL
;		CLC
;		ADC	!ENMOVX,X
;		STA	!ENXPSL
;		STA	>EBGOXP

		LDA	#00001
		TSB	!ENCBFG

BG3LFMV0180	EQU	$
		LDA	!CCWORKA
		AND	#0000000000011110B
		BEQ	BG3LFMV01F0		; 横当たり？ [no->BG3LFMV01F0]
;
;		PHA
		PHA
		LDY	#00
		LDA	!ENXSPD
		BMI	BG3LFMV0190		; [->BG3LFMV0190]
;
		INY
		INY
BG3LFMV0190	EQU	$
		PLA
		AND	BG3LFCHKPT,Y
		BEQ	BG3LFMV0198		; [->BG3LFMV0198]
;
		LDA	!ENXSPD
		EOR	#0FFFFH
		INC	A
		STA	!ENXSPD
;		STZ	!ENXSPD
BG3LFMV0198	EQU	$
;		PLA
;		LDY	#00
;		AND	#0000000000010100B
;		BNE	BG3LFMV01A0		; [->BG3LFMV01A0]
;;
;		INY
;		INY
;BG3LFMV01A0	EQU	$
;		LDA	!ENXPSL
;		CLC
;		ADC	BG3LFXHOSE,Y
;		STA	!ENXPSL

BG3LFMV01F0	EQU	$
		LDY	<ENWRK0,X
		TYX
		JMP	(BG3LFMODSEL,X)
;
BG3LFMODSEL	EQU	$
		WORD	BG3LFMVWAIT
		WORD	BG3LFMV0200
		WORD	BG3LFMV0300
		WORD	BG3LFMV_RTL
;
BG3LFMVWAIT	EQU	$
		LDX	<ENINDX
		LDA	!ENGMAX,X
		SEC
		SBC	!ENYSPD,X
		BPL	BG3LFMVWAIT0040		; [->BG3LFMVWAIT0040]
;
		EOR	#0FFFFH
		INC	A
BG3LFMVWAIT0040 EQU	$
		CMP	!ENGPOW,X
		BCS	BG3LFMVWAIT0080		; [->BG3LFMVWAIT0080]
;
		LDA	!ENGMAX,X
		EOR	#0FFFFH
		INC	A
		STA	!ENGMAX,X
BG3LFMVWAIT0080 EQU	$
		RTL
;
;
BG3LFMV_RTL	EQU	$
		LDX	<ENINDX
		RTL
;
;
BG3LFMV0200	EQU	$
		LDX	!MPTYPE
		JMP	(BG3LFMV01MDSL,X)
;
;
BG3LFMV0300	EQU	$
		LDX	!MPTYPE
		JMP	(BG3LFMV02MDSL,X)
;
;
BG3LFMV0_1	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM1,X
		BNE	BG3LFMV0_10010		; [->BG3LFMV0_10010]
;
		LDA	#0016
		STA	!ENTIM1,X
;
		LDA	#00016H
		JSL	>SOUND_3_ON		; サウンド セット！！
;
		LDA	#DSMK0		;(A) <-- 効果Ｎｏ．
		JSL	>EXINSR		;効果エリア確保
;
		LDA	ENXPSL,X
		CLC
		ADC	#0FFF8H
		STA	EXXPSL,Y	;Ｘ座標セット
		LDA	ENYPSL,X
		STA	EXYPSL,Y	;Ｙ座標セット
		LDA	#05H
		STA	EXWRK0,Y	;初期カウンターセット
		LDA	#05H
		STA	EXCHPT,Y	;初期パターンＮｏ．セット
		LDA	#04H
		STA	EXTIM0,Y	;初期タイマーセット
		LDA	#06H
		STA	EXYUSN,Y	;優先順位セット
;
BG3LFMV0_10010	EQU	$
		LDA	!ENTIM0,X
		BNE	BG3LFMV0_10040		; [->BG3LFMV0_10040]
;
		LDA	<ENCONT,X
		SEC
		SBC	#01
		BPL	BG3LFMV0_10020		; [->BG3LFMV0_10020]
;
		LDA	#00040H
		STA	!ENGPOW,X
		LDA	#00400H
		STA	!ENGMAX,X
		INC	<ENWRK0,X
		INC	<ENWRK0,X
		INC	<ENWRK0,X
		INC	<ENWRK0,X
		STZ	<ENCONT,X
		RTL
;
BG3LFMV0_10020	EQU	$
		STA	<ENCONT,X
		LDA	#08
		STA	!ENTIM0,X
BG3LFMV0_10040	EQU	$
		LDY	!MPTYPE
		LDA	BG3LFFUWAWID,Y
		STA	!ENGPOW,X
BG3LFFUWA	EQU	$
		LDY	#00
		LDA	!ENYPSL,X
		CMP	!ENWRK4,X
		BPL	BG3LFFUWA0040		; [->BG3LFFUWA0040]
;
		INY
		INY
BG3LFFUWA0040	EQU	$
		LDA	BG3LFFUWAMAX,Y
		STA	!ENGMAX,X
		RTL
;
BG3LFFUWAMAX	EQU	$
		WORD	-0100H, 00100H
;
;
BG3LFMV0_2	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	BG3LFMV0_20080		; [->BG3LFMV0_20080]
;
;;;;;;;;		LDA	#00100H
		LDA	#00180H
		STA	!ENXSPD,X
		LDY	#02
		STY	<ENWRK0,X
BG3LFMV0_20080	EQU	$
		LDA	#08
		STA	!ENGPOW,X
		BRA	BG3LFFUWA
;
;
BG3LFAREACHK	EQU	$
		LDA	!ENDSXL,X
		CLC
		ADC	#000F0H
		CMP	#00240H
		BCC	BG3LFAREACHK0F0		; [->BG3LFAREACHK0F0]
;
;;;;;;;;		LDA	#00000100B
;;;;;;;;		TRB	!MANSEL
;;;;;;;;		TRB	!SUBSEL
		LDA	!ENWRKC,X
		STA	!MANSEL			; MANSEL,SUBSEL Reset !!
		STZ	!BG3USEFG
		PLA
		JMP	>ENCLEAR
;
BG3LFAREACHK0F0 EQU	$
		CMP	#00200H
		BCC	BG3LFAREACHK0F8		; [->BG3LFAREACHK0F8]
;
		LDA	!BG2TYP
		CMP	#00016H
		BNE	BG3LFAREACHK0F2		; ＢＧ２敵？ [no->BG3LFAREACHK0F2]
;
		LDA	#00000010B
		BRA	BG3LFAREACHK0F4
;
BG3LFAREACHK0F2 EQU	$
		LDA	#00000100B
BG3LFAREACHK0F4 EQU	$
		TRB	!MANSEL
		TRB	!SUBSEL
		RTS
;
BG3LFAREACHK0F8 EQU	$
		LDA	!BG2TYP
		CMP	#00016H
		BNE	BG3LFAREACHK0FA		; ＢＧ２敵？ [no->BG3LFAREACHK0FA]
;
		LDA	#00000010B
		BRA	BG3LFAREACHK0FC
;
BG3LFAREACHK0FA EQU	$
		LDA	#00000100B
BG3LFAREACHK0FC EQU	$
		TSB	!MANSEL
		TSB	!SUBSEL
		RTS
;
;
BG3LIFTSET	EQU	$
		LDA	#MORP_S_POINT
		STA	R1			; 元ポイントアドレス！！
		LDA	#MORP_D_POINT
		STA	R2			; 先ポイントアドレス！！
		LDA	#02cH
		STA	R3			; ポイント個数！！
		LDA	#000H
		STA	R4			; 中心ポイント番号！！
		LDA	#BG3_POLYGON_DT
		STA	R5			; 出力データアドレス！！
		LDA	<ENCONT,X
		STA	R6			; 倍率！！
		LDY	!MPTYPE
		LDA	ZOOMYUKAMINTP,Y
		STA	R14			; 元ポイントデータアドレス！！
		LDA	#BANK Zoom_Yuka_Min
		STA	R0			; 元ポイントデータバンク！！
		LDA	ZOOMYUKAMAXTP,Y
		STA	R7			; 先ポイントデータアドレス！！
		LDA	#BANK Zoom_Yuka_Max
		STA	R8			; 先ポイントデータバンク！！
		LDA	!ENDSXL,X
		CLC
		ADC	#00010H
		STA	!CREG0			; Ｘポジション！！
		LDA	!ENDSYL,X
		CLC
		ADC	#00006H
		STA	!CREG1			; Ｙポジション！！
		M_CHIP	BG3_MORPHING_O
;
		JSL	>M_DMA_BFST
		LWORD	HDMABUF		;転送先アドレス
		LWORD	HDMABF		;転送元アドレス
;[1995.03.02.TH]		WORD	(0B2H*2*2)	;転送バイト数
		WORD	(0D2H*2*2)	;転送バイト数
;-------------- ＰＰＵレジスタセット ------------------------------------
		LDA	!BG2TYP
		CMP	#00016H
		BNE	BG3LIFTSET00C0		; ＢＧ２敵？ [no->BG3LIFTSET00C0]
;
		LDA	#00000010B	;ＢＧ２表示セット
		BRA	BG3LIFTSET00C8
;
BG3LIFTSET00C0	EQU	$
		LDA	#00000100B	;ＢＧ３表示セット
BG3LIFTSET00C8	EQU	$
		TSB	MANSEL
		LDA	#00011000B
		TSB	HD420C		;H-DMA "ON" !!
		LDX	<ENINDX
		RTS
;
;
;file <Fusen_Lift_Max.CH7>
;screen no.<0>
;point kazu <02cH>
;xmag=[001.00]
;ymag=[001.00]
;turn sw off
Zoom_Yuka_Max	EQU	$
		WORD	00000H,00000H, 00003H,0FFF5H, 00008H,0FFEBH, 0000EH,0FFE1H
		WORD	00015H,0FFDAH, 0001CH,0FFD3H, 00023H,0FFCEH, 0002CH,0FFC9H
		WORD	00034H,0FFC5H, 0003BH,0FFC3H, 00046H,0FFC1H, 00050H,0FFC1H
		WORD	0005DH,0FFC2H, 00064H,0FFC4H, 0006BH,0FFC7H, 00074H,0FFCCH
		WORD	0007CH,0FFD3H, 00081H,0FFD8H, 00086H,0FFDFH, 0008BH,0FFE9H
		WORD	0008EH,0FFF3H, 0008FH,00000H, 0008FH,00008H, 0008DH,00012H
		WORD	0008BH,00018H, 00087H,00020H, 00081H,00029H, 0007CH,0002EH
		WORD	00075H,00034H, 0006DH,00039H, 00067H,0003CH, 0005DH,0003FH
		WORD	00050H,00040H, 00046H,00040H, 0003BH,0003EH, 00032H,0003BH
		WORD	0002AH,00037H, 00023H,00033H, 0001CH,0002EH, 00016H,00028H
		WORD	00011H,00023H, 0000CH,0001DH, 00008H,00016H, 00003H,0000CH
;
;file <Fusen_Lift_Min.CH7>
;screen no.<0>
;point kazu <02cH>
;xmag=[001.00]
;ymag=[001.00]
;turn sw off
Zoom_Yuka_Min	EQU	$
		WORD	00000H,00000H, 00000H,0FFFFH, 00000H,0FFFEH, 00001H,0FFFDH
		WORD	00001H,0FFFCH, 00002H,0FFFBH, 00003H,0FFFAH, 00004H,0FFFAH
		WORD	00005H,0FFF9H, 00006H,0FFF9H, 00007H,0FFF9H, 00008H,0FFF9H
		WORD	00009H,0FFF9H, 0000AH,0FFF9H, 0000BH,0FFFAH, 0000CH,0FFFAH
		WORD	0000DH,0FFFBH, 0000EH,0FFFCH, 0000EH,0FFFDH, 0000FH,0FFFEH
		WORD	0000FH,0FFFFH, 0000FH,00000H, 0000FH,00001H, 0000FH,00002H
		WORD	0000FH,00003H, 0000EH,00004H, 0000EH,00005H, 0000DH,00006H
		WORD	0000CH,00007H, 0000BH,00007H, 0000AH,00008H, 00009H,00008H
		WORD	00008H,00008H, 00007H,00008H, 00006H,00008H, 00005H,00008H
		WORD	00004H,00007H, 00003H,00007H, 00002H,00006H, 00001H,00005H
		WORD	00001H,00004H, 00000H,00003H, 00000H,00002H, 00000H,00001H
;
;[1995.05.23.TU];file <Zoom_Yuka_Max3.CH7>
;[1995.05.23.TU];screen no.<0>
;[1995.05.23.TU];point kazu <040H>
;[1995.05.23.TU];xmag=[001.00]
;[1995.05.23.TU];ymag=[001.00]
;[1995.05.23.TU];turn sw off
;[1995.05.23.TU]Zoom_Yuka_Max	EQU	$
;[1995.05.23.TU]		WORD	00000H,00000H, 00001H,0FFFFH, 00001H,0FFFDH, 00002H,0FFFCH
;[1995.05.23.TU]		WORD	00008H,0FFF7H, 0000DH,0FFF4H, 00014H,0FFF1H, 00020H,0FFEDH
;[1995.05.23.TU]		WORD	00028H,0FFEBH, 00029H,0FFEAH, 0002EH,0FFE9H, 00034H,0FFE8H
;[1995.05.23.TU]		WORD	00039H,0FFE7H, 00040H,0FFE6H, 00047H,0FFE5H, 00054H,0FFE4H
;[1995.05.23.TU]		WORD	0008BH,0FFE4H, 00098H,0FFE5H, 0009FH,0FFE6H, 000A6H,0FFE7H
;[1995.05.23.TU]		WORD	000ABH,0FFE8H, 000B1H,0FFE9H, 000B6H,0FFEAH, 000B7H,0FFEBH
;[1995.05.23.TU]		WORD	000BFH,0FFEDH, 000CBH,0FFF1H, 000D2H,0FFF4H, 000D7H,0FFF7H
;[1995.05.23.TU]		WORD	000DDH,0FFFCH, 000DEH,0FFFDH, 000DEH,0FFFFH, 000DFH,00000H
;[1995.05.23.TU]		WORD	000DFH,00005H, 000DEH,00006H, 000DEH,00008H, 000DDH,00009H
;[1995.05.23.TU]		WORD	000D7H,0000EH, 000D2H,00011H, 000CBH,00014H, 000BFH,00018H
;[1995.05.23.TU]		WORD	000B7H,0001AH, 000B6H,0001BH, 000B1H,0001CH, 000ABH,0001DH
;[1995.05.23.TU]		WORD	000A6H,0001EH, 0009FH,0001FH, 00098H,00020H, 0008BH,00021H
;[1995.05.23.TU]		WORD	00054H,00021H, 00047H,00020H, 00040H,0001FH, 00039H,0001EH
;[1995.05.23.TU]		WORD	00034H,0001DH, 0002EH,0001CH, 00029H,0001BH, 00028H,0001AH
;[1995.05.23.TU]		WORD	00020H,00018H, 00014H,00014H, 0000DH,00011H, 00008H,0000EH
;[1995.05.23.TU]		WORD	00002H,00009H, 00001H,00008H, 00001H,00006H, 00000H,00005H
;[1995.05.23.TU];
;[1995.05.23.TU];file <Zoom_Yuka_Min3.CH7>
;[1995.05.23.TU];screen no.<0>
;[1995.05.23.TU];point kazu <040H>
;[1995.05.23.TU];xmag=[001.00]
;[1995.05.23.TU];ymag=[001.00]
;[1995.05.23.TU];turn sw off
;[1995.05.23.TU]Zoom_Yuka_Min	EQU	$
;[1995.05.23.TU]		WORD	00000H,00000H, 00000H,00000H, 00000H,00000H, 00000H,00000H
;[1995.05.23.TU]		WORD	00001H,0FFFFH, 00001H,0FFFFH, 00001H,0FFFFH, 00001H,0FFFFH
;[1995.05.23.TU]		WORD	00005H,0FFFEH, 00005H,0FFFEH, 00005H,0FFFEH, 00005H,0FFFEH
;[1995.05.23.TU]		WORD	00005H,0FFFEH, 00005H,0FFFEH, 00006H,0FFFEH, 00007H,0FFFEH
;[1995.05.23.TU]		WORD	00008H,0FFFEH, 00009H,0FFFEH, 0000AH,0FFFEH, 0000AH,0FFFEH
;[1995.05.23.TU]		WORD	0000AH,0FFFEH, 0000AH,0FFFEH, 0000AH,0FFFEH, 0000AH,0FFFEH
;[1995.05.23.TU]		WORD	0000EH,0FFFFH, 0000EH,0FFFFH, 0000EH,0FFFFH, 0000EH,0FFFFH
;[1995.05.23.TU]		WORD	0000FH,00000H, 0000FH,00000H, 0000FH,00000H, 0000FH,00000H
;[1995.05.23.TU]		WORD	0000FH,00001H, 0000FH,00001H, 0000FH,00001H, 0000FH,00001H
;[1995.05.23.TU]		WORD	0000EH,00002H, 0000EH,00002H, 0000EH,00002H, 0000EH,00002H
;[1995.05.23.TU]		WORD	0000AH,00003H, 0000AH,00003H, 0000AH,00003H, 0000AH,00003H
;[1995.05.23.TU]		WORD	0000BH,00003H, 0000AH,00003H, 00009H,00003H, 00008H,00003H
;[1995.05.23.TU]		WORD	00007H,00003H, 00006H,00003H, 00005H,00003H, 00005H,00003H
;[1995.05.23.TU]		WORD	00005H,00003H, 00005H,00003H, 00005H,00003H, 00005H,00003H
;[1995.05.23.TU]		WORD	00001H,00002H, 00001H,00002H, 00001H,00002H, 00001H,00002H
;[1995.05.23.TU]		WORD	00000H,00001H, 00000H,00001H, 00000H,00001H, 00000H,00001H
;[1995.05.23.TU];
;[1995.05.23.TU];file <Zoom_Yuka_Max4.CH7>
;[1995.05.23.TU];screen no.<0>
;[1995.05.23.TU];point kazu <040H>
;[1995.05.23.TU];xmag=[001.00]
;[1995.05.23.TU];ymag=[001.00]
;[1995.05.23.TU];turn sw off
;[1995.05.23.TU]Zoom_Yuka_Max2	EQU	$
;[1995.05.23.TU]		WORD	00000H,00000H, 00091H,00000H, 00091H,0000FH, 00092H,00010H
;[1995.05.23.TU]		WORD	00093H,00013H, 00094H,00015H, 00095H,00018H, 00096H,0001CH
;[1995.05.23.TU]		WORD	00097H,00020H, 00098H,00027H, 00098H,00038H, 00097H,0003FH
;[1995.05.23.TU]		WORD	00096H,00043H, 00095H,00047H, 00094H,0004AH, 00093H,0004CH
;[1995.05.23.TU]		WORD	00092H,0004FH, 00091H,00051H, 00090H,00053H, 0008FH,00055H
;[1995.05.23.TU]		WORD	0008EH,00057H, 0008DH,00059H, 0008BH,0005CH, 00088H,00060H
;[1995.05.23.TU]		WORD	00084H,00065H, 0007DH,0006BH, 00078H,0006FH, 00072H,00074H
;[1995.05.23.TU]		WORD	00069H,00078H, 00061H,0007BH, 00058H,0007EH, 00052H,0007EH
;[1995.05.23.TU]		WORD	00051H,0007FH, 00040H,0007FH, 0003FH,0007EH, 00039H,0007EH
;[1995.05.23.TU]		WORD	00030H,0007BH, 00028H,00078H, 0001FH,00074H, 00019H,0006FH
;[1995.05.23.TU]		WORD	00014H,0006BH, 0000DH,00065H, 00009H,00060H, 00006H,0005CH
;[1995.05.23.TU]		WORD	00004H,00059H, 00003H,00057H, 00002H,00055H, 00001H,00053H
;[1995.05.23.TU]		WORD	00000H,00051H, 0FFFFH,0004FH, 0FFFEH,0004CH, 0FFFDH,0004AH
;[1995.05.23.TU]		WORD	0FFFCH,00047H, 0FFFBH,00043H, 0FFFAH,0003FH, 0FFF9H,00038H
;[1995.05.23.TU]		WORD	0FFF9H,00027H, 0FFFAH,00020H, 0FFFBH,0001CH, 0FFFCH,00018H
;[1995.05.23.TU]		WORD	0FFFDH,00015H, 0FFFEH,00013H, 0FFFFH,00010H, 00000H,0000FH
;[1995.05.23.TU];
;[1995.05.23.TU];file <Zoom_Yuka_Min4.CH7>
;[1995.05.23.TU];screen no.<0>
;[1995.05.23.TU];point kazu <040H>
;[1995.05.23.TU];xmag=[001.00]
;[1995.05.23.TU];ymag=[001.00]
;[1995.05.23.TU];turn sw off
;[1995.05.23.TU]Zoom_Yuka_Min2	EQU	$
;[1995.05.23.TU]		WORD	00000H,00000H, 00009H,00000H, 00009H,00000H, 00009H,00000H
;[1995.05.23.TU]		WORD	00009H,00001H, 00009H,00001H, 00009H,00002H, 00009H,00002H
;[1995.05.23.TU]		WORD	0000AH,00003H, 0000AH,00003H, 0000BH,00004H, 0000BH,00004H
;[1995.05.23.TU]		WORD	0000BH,00005H, 0000BH,00005H, 0000CH,00006H, 0000CH,00006H
;[1995.05.23.TU]		WORD	0000CH,00007H, 0000CH,00007H, 0000CH,00008H, 0000CH,00008H
;[1995.05.23.TU]		WORD	0000CH,00009H, 0000CH,00009H, 0000BH,0000AH, 0000BH,0000AH
;[1995.05.23.TU]		WORD	0000BH,0000BH, 0000BH,0000BH, 0000AH,0000CH, 0000AH,0000CH
;[1995.05.23.TU]		WORD	00009H,0000DH, 00008H,0000DH, 00007H,0000EH, 00006H,0000EH
;[1995.05.23.TU]		WORD	00005H,0000EH, 00004H,0000EH, 00003H,0000EH, 00002H,0000EH
;[1995.05.23.TU]		WORD	00001H,0000DH, 00000H,0000DH, 0FFFFH,0000CH, 0FFFFH,0000CH
;[1995.05.23.TU]		WORD	0FFFEH,0000BH, 0FFFEH,0000BH, 0FFFEH,0000AH, 0FFFEH,0000AH
;[1995.05.23.TU]		WORD	0FFFDH,00009H, 0FFFDH,00009H, 0FFFDH,00008H, 0FFFDH,00008H
;[1995.05.23.TU]		WORD	0FFFDH,00007H, 0FFFDH,00007H, 0FFFDH,00006H, 0FFFDH,00006H
;[1995.05.23.TU]		WORD	0FFFEH,00005H, 0FFFEH,00005H, 0FFFEH,00004H, 0FFFEH,00004H
;[1995.05.23.TU]		WORD	0FFFFH,00003H, 0FFFFH,00003H, 00000H,00002H, 00000H,00002H
;[1995.05.23.TU]		WORD	00000H,00001H, 00000H,00001H, 00000H,00000H, 00000H,00000H
;[1995.05.23.TU];
;;;;;file <Zoom_Yuka_Max2.CH7>
;;;;;screen no.<0>
;;;;;point kazu <02bH>
;;;;;xmag=[001.00]
;;;;;ymag=[001.00]
;;;;;turn sw off
;;;;Zoom_Yuka_Max	EQU	$
;;;;		WORD	00000H,00000H, 00010H,00000H, 00020H,00000H, 00030H,00000H
;;;;		WORD	0004FH,00000H, 0005FH,00000H, 0006FH,00000H, 0007FH,00000H
;;;;		WORD	00083H,0FFFBH, 00084H,0FFF7H, 00086H,0FFF1H, 00088H,0FFECH
;;;;		WORD	0008AH,0FFE7H, 0008DH,0FFE1H, 0008FH,0FFDCH, 00090H,0FFD4H
;;;;		WORD	000A0H,0FFDCH, 000ADH,0FFE0H, 000B8H,0FFE7H, 000C0H,0FFECH
;;;;		WORD	000C8H,0FFF1H, 000D0H,0FFF5H, 000DFH,0FFFBH, 000EBH,0FFFFH
;;;;		WORD	000F7H,00000H, 000EFH,00006H, 000DFH,0000DH, 000CFH,0000DH
;;;;		WORD	000BFH,0000DH, 000AFH,0000FH, 0009FH,0000FH, 0008FH,0000FH
;;;;		WORD	0007FH,0000FH, 00076H,00011H, 0006FH,00017H, 0005FH,0001FH
;;;;		WORD	00040H,00023H, 0003FH,0001FH, 0003EH,00017H, 0003BH,00011H
;;;;		WORD	00030H,0000DH, 00020H,00008H, 00010H,00006H
;;;;;
;;;;;file <Zoom_Yuka_Min2.CH7>
;;;;;screen no.<0>
;;;;;point kazu <02bH>
;;;;;xmag=[001.00]
;;;;;ymag=[001.00]
;;;;;turn sw off
;;;;Zoom_Yuka_Min	EQU	$
;;;;		WORD	00000H,00000H, 00001H,00000H, 00002H,00000H, 00003H,00000H
;;;;		WORD	00004H,00000H, 00005H,00000H, 00006H,00000H, 00007H,00000H
;;;;		WORD	00008H,0FFFFH, 00008H,0FFFEH, 00008H,0FFFDH, 00008H,0FFFCH
;;;;		WORD	00008H,0FFFBH, 00009H,0FFFAH, 00009H,0FFF9H, 00009H,0FFF8H
;;;;		WORD	0000AH,0FFF9H, 0000BH,0FFFAH, 0000BH,0FFFBH, 0000CH,0FFFCH
;;;;		WORD	0000CH,0FFFDH, 0000DH,0FFFEH, 0000DH,0FFFFH, 0000EH,00000H
;;;;		WORD	0000FH,00000H, 0000EH,00001H, 0000DH,00002H, 0000CH,00002H
;;;;		WORD	0000BH,00002H, 0000AH,00003H, 00009H,00003H, 00008H,00003H
;;;;		WORD	00007H,00003H, 00006H,00003H, 00006H,00004H, 00005H,00005H
;;;;		WORD	00004H,00006H, 00004H,00005H, 00004H,00004H, 00004H,00003H
;;;;		WORD	00003H,00002H, 00002H,00001H, 00001H,00001H
;;;;;
;;;;;file <Zoom_Yuka_Max.CH7>
;;;;;screen no.<0>
;;;;;point kazu <040H>
;;;;;xmag=[001.00]
;;;;;ymag=[001.00]
;;;;;turn sw off
;;;;Zoom_Yuka_Max	EQU	$
;;;;		WORD	00000H,00000H, 0000CH,00000H, 00014H,00000H, 0001CH,00000H
;;;;		WORD	00024H,00000H, 0002CH,00000H, 00034H,00000H, 0003CH,00000H
;;;;		WORD	00044H,00000H, 0004CH,00000H, 00054H,00000H, 0005CH,00000H
;;;;		WORD	00064H,00000H, 0006CH,00000H, 00074H,00000H, 0007CH,00000H
;;;;		WORD	00084H,00000H, 0008CH,00000H, 00094H,00000H, 0009CH,00000H
;;;;		WORD	000A4H,00000H, 000ACH,00000H, 000B4H,00000H, 000BFH,00000H
;;;;		WORD	000BFH,0000BH, 000BFH,00013H, 000BFH,0001BH, 000BFH,00023H
;;;;		WORD	000BFH,0002BH, 000BFH,00033H, 000BFH,0003BH, 000BFH,00040H
;;;;		WORD	000BBH,00049H, 000B7H,00051H, 000AFH,0005DH, 000A7H,00067H
;;;;		WORD	0009FH,0006DH, 00097H,00073H, 0008FH,00077H, 00087H,0007BH
;;;;		WORD	0007FH,0007DH, 00077H,0007FH, 0006CH,0007FH, 00064H,0007FH
;;;;		WORD	0005CH,0007FH, 00054H,0007FH, 00048H,0007FH, 00040H,0007DH
;;;;		WORD	00038H,0007BH, 00030H,00077H, 00028H,00073H, 00020H,0006DH
;;;;		WORD	00018H,00067H, 00010H,0005DH, 00008H,00051H, 00004H,00049H
;;;;		WORD	00000H,00040H, 00000H,0003BH, 00000H,00033H, 00000H,0002BH
;;;;		WORD	00000H,00023H, 00000H,0001BH, 00000H,00013H, 00000H,0000BH
;;;;;
;;;;;file <Zoom_Yuka_Min.CH7>
;;;;;screen no.<0>
;;;;;point kazu <040H>
;;;;;xmag=[001.00]
;;;;;ymag=[001.00]
;;;;;turn sw off
;;;;Zoom_Yuka_Min	EQU	$
;;;;		WORD	00000H,00000H, 00001H,00000H, 00002H,00000H, 00003H,00000H
;;;;		WORD	00004H,00000H, 00005H,00000H, 00006H,00000H, 00007H,00000H
;;;;		WORD	00008H,00000H, 00009H,00000H, 0000AH,00000H, 0000BH,00000H
;;;;		WORD	0000CH,00000H, 0000DH,00000H, 0000EH,00000H, 0000FH,00000H
;;;;		WORD	00010H,00000H, 00011H,00000H, 00012H,00000H, 00013H,00000H
;;;;		WORD	00014H,00000H, 00015H,00000H, 00016H,00000H, 00017H,00000H
;;;;		WORD	00017H,00001H, 00017H,00002H, 00017H,00003H, 00017H,00004H
;;;;		WORD	00017H,00005H, 00017H,00006H, 00017H,00007H, 00017H,00008H
;;;;		WORD	00016H,00009H, 00016H,0000AH, 00015H,0000BH, 00014H,0000CH
;;;;		WORD	00013H,0000DH, 00012H,0000DH, 00011H,0000EH, 00010H,0000EH
;;;;		WORD	0000FH,0000EH, 0000EH,0000FH, 0000DH,0000FH, 0000CH,0000FH
;;;;		WORD	0000BH,0000FH, 0000AH,0000FH, 00009H,0000FH, 00008H,0000EH
;;;;		WORD	00007H,0000EH, 00006H,0000EH, 00005H,0000DH, 00004H,0000DH
;;;;		WORD	00003H,0000CH, 00002H,0000BH, 00001H,0000AH, 00001H,00009H
;;;;		WORD	00000H,00008H, 00000H,00007H, 00000H,00006H, 00000H,00005H
;;;;		WORD	00000H,00004H, 00000H,00003H, 00000H,00002H, 00000H,00001H
;;;;;
;------------------------------------------------------------------------
;-	initial （ポンプ）						-
;------------------------------------------------------------------------
PonpuZoomSpd0	EQU	0FFFCH
PonpuZoomSpd1	EQU	0FFE0H
PonpuZoomMax	EQU	00100H
PonpuZoomMin	EQU	00020H
;
PONPUIN		EQU	$
		JSL	>TROBJ_SR_4x4_CL
;
		LDA	!BG3USEFG
		BNE	PONPUIN0010		; 既にセットされてる？ [yes->PONPUIN0010]
;
		LDA	#BG3LF
		JSL	>ENINSR_I
		BCS	PONPUIN0020		; 敵確保成功？ [yes->PONPUIN0020]
;
PONPUIN0010	EQU	$
		JMP	>ENCLEAR
;
PONPUIN0020	EQU	$
;
		M8				; memory 8bit mode !!
;
		LDA	#0FFH
		STA	!ENRETN,X
;
		M16				; memory 16bit mode !!
;
		INC	!BG3USEFG		; ＢＧ３リフトセットフラグＯＮ！！
;
		LDA	!ENXPSL,X
		CLC
		ADC	#00010H
		STA	!ENXPSL,Y
		LDA	!ENYPSL,X
		CLC
		ADC	#00004H
		STA	!ENYPSL,Y
		STY	<ENWRK4,X
		LDA	#00100H
		STA	<ENCONT,X
		JMP	>GOAL0_CHR_SET
;
;
;------------------------------------------------------------------------
;-	move （ポンプ）							-
;------------------------------------------------------------------------
PONPUMV		EQU	$
;--------- ＯＡＭセット -----------
		LDA	ENOAML,X
		INC	A			;[+2]
		INC	A			;
		STA	R5			;(R5) <-- ＯＡＭインデックス
		LDA	<ENCONT,X
		STA	R6			;(R6) <-- ジャバラの倍率
		M_CHIP	M_GOAL1
		LDX	<ENINDX
;
		I16				; index 16bit mode !!
;
		LDY	CCWORK1			;(Y) <-- ジャバラのＯＡＭポインター
		JSL	>TROBJ_OAM_4x4_I
;
		I8				; index 8bit mode !!
;
		LDY	!ENYUSN,X
		BMI	PONPUMV0010		; 表示？ [no->PONPUMV0010]
;
		LDA	!MSGMOD
		BNE	PONPUMV0010		; メッセージ表示？ [yes->PONPUMV0010]
;
		JSL	>GOAL0_CHR_SET
;
PONPUMV0010	EQU	$
		JSL	>ENMDCK			; mode check
;
		JSR	PONPUDSPCHK		; 範囲外チェック！！
;
;------------------------------------------------------------------------
;-		プレイヤー衝突チェック					-
;------------------------------------------------------------------------
		STZ	<EWORKE			;(EWKE,F) <-- foot cross flag
		LDA	EPWIDY,X
		CLC
		ADC	CCWORK0
		CMP	#022H
		BPL	PONPUMV0020		;player cross ? ( no:PONPUMV0020 )
;
		STA	EPWIDY,X
		JSL	>POBBGCR_2		;[ (EWKE,F) <-- foot cross flag ]
		LDA	<EWORKE
		BEQ	PONPUMV0020		;player foot cross ? ( no:PONPUMV0020 )
;
		LDA	#00400H
		STA	PLYSPD			;player Y speed set
PONPUMV0020	EQU	$
		LDY	<ENWRK0,X
		TYX
		JMP	(PONPUMVMODSEL,X)
;
PONPUMVMODSEL	EQU	$
		WORD	PONPUUP
		WORD	PONPUDN
		WORD	PONPUED
;
;
PONPUZOOMSPD	EQU	$
		WORD	PonpuZoomSpd0, PonpuZoomSpd1
;
PONPUUP		EQU	$
		LDX	<ENINDX
		LDA	<EWORKE
		BEQ	PONPUUP0020		; 足当たり？ [no->PONPUUP0020]
;
		LDY	#00
		LDA	!PLDOSN
		BEQ	PONPUUP0008		; プレイヤーどすん？ [no->PONPUUP0008]
;
		STZ	!PLDOSN
		INY
		INY
PONPUUP0008	EQU	$
		STY	<ENWRK1,X
		LDA	PONPUZOOMSPD,Y
		STA	<ENWRK2,X
		STZ	!ENWRK6,X
;
		LDA	#00096H
		JSL	>SOUND_3_ON		; サウンド セット！！
;
		M8				; memory 8bit mode !!
;
		INC	<ENWRK0,X
		INC	<ENWRK0,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
PONPUUP0020	EQU	$
		LDA	<ENCONT,X
		CLC
		ADC	#00010H
		CMP	#PonpuZoomMax
		BCC	PONPUUP0030		; Ｍａｘ？ [no->PONPUUP0030]
;
		LDA	#PonpuZoomMax
PONPUUP0030	EQU	$
		STA	<ENCONT,X
		RTL
;
;
PONPUDN		EQU	$
		LDX	<ENINDX
		LDA	<EWORKE
		BNE	PONPUDN0020		; 足当たり？ [yes->PONPUDN0020]
;
		M8				; memory 8bit mode !!
;
		DEC	<ENWRK0,X
		DEC	<ENWRK0,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
PONPUDN0020	EQU	$
		LDA	<ENCONT,X
		CLC
		ADC	<ENWRK2,X
		CMP	#PonpuZoomMin
		BCS	PONPUDN0030		; Ｍｉｎ？ [no->PONPUDN0030]
;
		LDA	#PonpuZoomMin
PONPUDN0030	EQU	$
		STA	<ENCONT,X
		LDA	<ENWRK2,X
		CLC
		ADC	#00002H
		CMP	#PonpuZoomSpd0
		BMI	PONPUUP0040		; [->PONPUUP0040]
;
		LDA	#PonpuZoomSpd0
PONPUUP0040	EQU	$
		STA	<ENWRK2,X
		LDA	<ENCONT,X
		CMP	#PonpuZoomMin
		BEQ	PONPUUP00F0		; [->PONPUUP00F0]
;
		LDA	<ENWRK2,X
		EOR	#0FFFFH
		INC	A
		ASL	A
		ASL	A
		ASL	A
		ASL	A
		ASL	A
		ASL	A
		NOP
		NOP
		LDY	<ENWRK1,X
		BEQ	PONPUUP0048		; [->PONPUUP0048]
;
		ASL	A
PONPUUP0048	EQU	$
		CLC
		ADC	!ENWRK6,X
		STA	<EWORK
		AND	#000FFH
		STA	!ENWRK6,X
		LDY	<ENWRK4,X
		LDA	!ENMODE,Y
		CMP	#EMOVE
		BNE	PONPUUP00F0		; Ｍｏｄｅ Ｍｏｖｅ？ [no->PONPUUP00F0]
;
		LDA	!ENMYNO,Y
		CMP	#BG3LF
		BNE	PONPUUP00F0		; ＢＧ３リフト？ [no->PONPUUP00F0]
;
		LDA	!ENWRK0,Y
		AND	#000FFH
		BNE	PONPUUP00F0		; 切り放された？ [yes->PONPUUP00F0]
;
		LDA	<EWORK
		AND	#0FF00H
		XBA
		CLC
		ADC	!ENCONT,Y
		CMP	#00100H
		BCC	PONPUUP0060		; [->PONPUUP0060]
;
		M8				; memory 8bit mode !!
;
		INC	<ENWRK0,X
		INC	<ENWRK0,X
;
		M16				; memory 16bit mode !!
;
		LDA	#00100H
PONPUUP0060	EQU	$
		STA	!ENCONT,Y
PONPUUP00F0	EQU	$
		RTL
;
;
PONPUED		EQU	$
		LDX	<ENINDX
		LDA	<ENCONT,X
		CLC
		ADC	<ENWRK2,X
		CMP	#PonpuZoomMin
		BCS	PONPUED0030		; Ｍｉｎ？ [no->PONPUED0030]
;
		LDA	#PonpuZoomMin
PONPUED0030	EQU	$
		STA	<ENCONT,X
		RTL
;
;
PONPUDSPCHK	EQU	$
		LDA	!ENDSXL,X
		CLC
		ADC	#00050H
		CMP	#00190H
		BCS	PONPUDSPCHK0080		; 範囲外？ [yes->PONPUDSPCHK0080]
;
		LDA	!ENDSYL,X
		CLC
		ADC	#00050H
		CMP	#00190H
		BCS	PONPUDSPCHK0080		; 範囲外？ [yes->PONPUDSPCHK0080]
;
PONPUDSPCHK0070 EQU	$
		RTS
;
PONPUDSPCHK0080 EQU	$
		LDY	<ENWRK4,X
		LDA	!ENMODE,Y
		CMP	#EMOVE
		BNE	PONPUDSPCHK00A0		; Ｍｏｄｅ Ｍｏｖｅ？ [no->PONPUDSPCHK00A0]
;
		LDA	!ENMYNO,Y
		CMP	#BG3LF
		BNE	PONPUDSPCHK00A0		; ＢＧ３リフト？ [no->PONPUDSPCHK00A0]
;
		LDA	!ENWRK0,Y
		BEQ	PONPUDSPCHK0070		; 切り放された？ [no->PONPUDSPCHK0070]
;
PONPUDSPCHK00A0 EQU	$
		PLA
		JMP	>ENCLEAR
;
;
;------------------------------------------------------------------------
;-	initial （落書きヘイホー）					-
;------------------------------------------------------------------------
RAKUGWALKPT	EQU	$
		HEX	00, 01, 02, 03, 04, 05, 00, 01
		HEX	02, 03, 04, 05, 00, 01, 02, 03
;
RAKUGIN		EQU	$
;
		M8				; memory 8bit mode !!
;
		LDA	<RANDM0
		AND	#00FH
		TAY
		LDA	RAKUGWALKPT,Y
		STA	!ENCHPT,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
;
;------------------------------------------------------------------------
;-	move （落書きヘイホー）						-
;------------------------------------------------------------------------
RAKUGUTCKLST0	EQU	$
		HEX	FF
		WORD	UT1F00
		HEX	FF
		WORD	UT1F10
		HEX	00
		WORD	UT2000
		HEX	00
		WORD	UT2100
		HEX	00
		WORD	UT2200
		HEX	00H
		WORD	UT2300
		HEX	00
		WORD	UT2400
		HEX	00
		WORD	UT2500
		HEX	00
		WORD	UT2600
		HEX	00
		WORD	UT2700
		HEX	00
		WORD	UT2800
		HEX	FF
		WORD	UT6801
		HEX	FF
		WORD	UT6802
		HEX	FF
		WORD	UT6901
		HEX	FF
		WORD	UT6902
		HEX	FF
		WORD	UT7101
		HEX	FF
		WORD	UT7102
		HEX	FF
		WORD	UT00D5
		HEX	00
		WORD	UT9E00
RAKUGUTCKLSTE	EQU	$
;
RAKUGMV		EQU	$
		JSL	>ENMDCK			; mode check
;
		LDA	!PLTYPE
		CMP	#P_TRAIN
		BNE	RAKUGMV00F0		; 汽車？ [no->RAKUGMV00F0]
;
		LDA	!PLFLSH
		BNE	RAKUGMV00F0		; プレイヤー無敵中？ [yes->RAKUGMV00F0]
;
		LDA	!PTR_MODE
		BNE	RAKUGMOVE		; [->RAKUGMOVE]
;
RAKUGMV00F0	EQU	$
		STZ	!ENTIM1,X
		STZ	!ENXSPD,X
		STZ	!ENYSPD,X
		LDA	#00040H
		STA	!ENTIM2,X
RAKUGMV00F8	EQU	$
		RTL
;
;
RAKUGMOVE	EQU	$
		LDA	!ENTIM2,X
		BNE	RAKUGMV00F8		; Ｗａｉｔ？ [yes->RAKUGMV00F8]
;
		JSR	RAKUGBGCK
;
		JSR	RAKUGSPDSET
;
		JSR	RAKUGCRCK
;
		LDY	#00
		LDA	!ENXSPD,X
		ABS16
		STA	<EWORK
		LDA	!ENYSPD,X
		ABS16
		CMP	<EWORK
		BPL	RAKUGMOVE00B0		; 横向き？ [yes->RAKUGMOVE00B0]
;
		PHY
		LDY	#00
		LDA	!ENXSPD,X
		BMI	RAKUGMOVE00A0		; 左向き？ [yes->RAKUGMOVE00A0]
;
		INY
		INY
RAKUGMOVE00A0	EQU	$
		TYA
		STA	!ENMUKI,X
		PLY
		BRA	RAKUGMOVE00C0
;
RAKUGMOVE00B0	EQU	$
		INY
		INY
		LDA	!ENYSPD,X
		BMI	RAKUGMOVE00C0		; 上向き？ [yes->RAKUGMOVE00C0]
;
		INY
		INY
RAKUGMOVE00C0	EQU	$
		TYA
		STA	<EWORK
		LDA	!ENCHPT,X
		AND	#00001H
		ORA	<EWORK
		STA	!ENCHPT,X
		LDA	!ENTIM0,X
		BNE	RAKUGMOVE00F0		; [->RAKUGMOVE00F0]
;
		LDA	!ENCHPT,X
		EOR	#00001H
		STA	!ENCHPT,X
		LDA	#0008
		STA	!ENTIM0,X
RAKUGMOVE00F0	EQU	$
		RTL
;
;
RAKUGSPDSET	EQU	$
		LDA	!ENTIM1,X
		BNE	RAKUGSPDSET00F0		; [->RAKUGSPDSET00F0]
;
		LDA	!PCENTX
		STA	R1			; target X
		LDA	!PCENTY
		STA	R2			; target Y
		LDA	!ECENTX,X
		STA	R3			; my X
		LDA	!ECENTY,X
		STA	R4			; my Y
		LDA	#00080H
		STA	R6			; speed
		M_CHIP	SEARCH_SPEED
;
		LDX	<ENINDX
		LDA	R1
		STA	!ENXSPD,X		; x speed set !!
		LDA	R2
		STA	!ENYSPD,X		; y speed set !!
;
		LDA	#0008
		STA	!ENTIM1,X
RAKUGSPDSET00F0 EQU	$
		RTS
;
;
RAKUGCRCK	EQU	$
		LDY	!ECRSFG,X
		BPL	RAKUGCRCK0020		; プレイヤーとの衝突？ [yes->RAKUGCRCK0020]
;
		JSL	>PLFLST
;
RAKUGCRCK0020	EQU	$
		PHX
		TXA
		STA	R1
		M_CHIP	MY_ENCROS2
;
		PLX
		LDY	R14
		BMI	RAKUGSPDSET00F0		; 衝突無し？ [yes->RAKUGSPDSET00F0]
		BEQ	RAKUGSPDSET00F0		; 赤ちゃんとの衝突？ [yes->RAKUGSPDSET00F0]
;
		LDA	!ENMYNO,Y
		CMP	#RAKUG
		BNE	RAKUGSPDSET00F0		; 他の敵？ [yes->RAKUGSPDSET00F0]
;
		LDA	!ECENTX,X
		SEC
		SBC	!ECENTX,Y
		EOR	!ENXSPD,X
		BPL	RAKUGCRCK0040		; Ｘスピード反転？ [no->RAKUGCRCK0040]
;
		LDA	!ENXSPD,X
		EOR	#0FFFFH
		INC	A
		STA	!ENXSPD,X
RAKUGCRCK0040	EQU	$
		LDA	!ECENTY,X
		SEC
		SBC	!ECENTY,Y
		EOR	!ENYSPD,X
		BPL	RAKUGCRCK0080		; Ｙスピード反転？ [no->RAKUGCRCK0080]
;
		LDA	!ENYSPD,X
		EOR	#0FFFFH
		INC	A
		STA	!ENYSPD,X
RAKUGCRCK0080	EQU	$
		RTS
;
;
RAKUGHOSEI	EQU	$
		WORD	00001H, -0001H
;
RAKUGBGCK	EQU	$
		LDA	#BANK RAKUGUTCKLST0
		STA	R0
		LDA	#RAKUGUTCKLST0
		STA	R1
		LDA	#((RAKUGUTCKLSTE-RAKUGUTCKLST0)/3)
		STA	R2
		LDA	!ENWRKC,X
		STA	R3
		M_CHIP	RAKUGBGCHK
;
		LDX	<ENINDX
		LDA	R0
		AND	#0000FH
		CMP	#0000FH
		BEQ	RAKUGBGCK00F0		; 全ユニットＯＫ？ [yes->RAKUGBGCK00F0]
;
		LDY	#00
		AND	#00008H
		BNE	RAKUGBGCK0040		; 左ユニットＯＫ？ [yes->RAKUGBGCK0040]
;
		LDA	!ENXSPD,X
		BMI	RAKUGBGCK0048		; [->RAKUGBGCK0048]
;
RAKUGBGCK0040	EQU	$
		INY
		INY
		LDA	R0
		AND	#00004H
		BNE	RAKUGBGCK0050		; 右ユニットＯＫ？ [yes->RAKUGBGCK0050]
;
		LDA	!ENXSPD,X
		BMI	RAKUGBGCK0050		; [->RAKUGBGCK0050]
;
RAKUGBGCK0048	EQU	$
		EOR	#0FFFFH
		INC	A
		STA	!ENXSPD,X
		LDA	!ENXPSL,X
		CLC
		ADC	RAKUGHOSEI,Y
		STA	!ENXPSL,X
		BRA	RAKUGBGCK0080
;
RAKUGBGCK0050	EQU	$
		LDY	#00
		LDA	R0
		AND	#00002H
		BNE	RAKUGBGCK0060		; 頭ユニットＯＫ？ [yes->RAKUGBGCK0060]
;
		LDA	!ENYSPD,X
		BMI	RAKUGBGCK0068		; [->RAKUGBGCK0068]
;
RAKUGBGCK0060	EQU	$
		INY
		INY
		LDA	R0
		AND	#00001H
		BNE	RAKUGBGCK00F0		; 足ユニットＯＫ？ [yes->RAKUGBGCK00F0]
;
		LDA	!ENYSPD,X
		BMI	RAKUGBGCK00F0		; [->RAKUGBGCK00F0]
;
RAKUGBGCK0068	EQU	$
		EOR	#0FFFFH
		INC	A
		STA	!ENYSPD,X
		LDA	!ENYPSL,X
		CLC
		ADC	RAKUGHOSEI,Y
		STA	!ENYPSL,X
RAKUGBGCK0080	EQU	$
		PLA
		RTL
;
RAKUGBGCK00F0	EQU	$
		RTS
;
;
;------------------------------------------------------------------------
;-	initial （コインムーチョ）					-
;------------------------------------------------------------------------
COMCH00XSPD	EQU	$
		WORD	-0040H, 00040H
;
COMCHIN		EQU	$
		LDY	!ENWRKA,X
		BNE	COMCHIN0040		; イニシャル？ [no->COMCHIN0040]
;
		LDA	!ENYPSL,X
		ASL	A
		ASL	A
		ASL	A
		ASL	A
		AND	#0FF00H
		ORA	#08000H
		STA	<EWORK
		LDA	!ENXPSL,X
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		AND	#000FFH
		ORA	<EWORK
		STA	!ENWRKC,X
;
		M8				; memory 8bit mode !!
;
		LDA	!ENXPSL,X
		AND	#010H
		LSR	A
		LSR	A
		LSR	A
		INC	A
		STA	!ENWRKA,X
		TAY
;
		M16				; memory 16bit mode !!
;
COMCHIN0040	EQU	$
		DEY
		TYX
		JMP	(COMCHINMDSL,X)
;
COMCHINMDSL	EQU	$
		WORD	COMCH00IN
		WORD	COMCH01IN
;
;
COMCH00IN	EQU	$
		LDX	<ENINDX
		JSL	>EXIST_CHECK2
		BEQ	COMCH00IN0040		; コイン取った？ [no->COMCH00IN0040]
;
		JMP	>ENCLEAR
;
COMCH00IN0040	EQU	$
		LDA	!ENXPSL,X
		STA	!ENWRK6,X
		LDA	!ENYPSL,X
		STA	!ENWRK8,X
		LDY	!ENMUKI,X
		LDA	COMCH00XSPD,Y
		STA	!ENXSPD,X
		LDA	#00080H
		STA	!ENGMAX,X
		LDA	#00004H
		STA	!ENGPOW,X
		LDA	#0011000100000110B
		STA	!ENMOD2,X
		LDA	!ENCLOR,X
		ORA	#00001H<<1
		STA	!ENCLOR,X
		RTL
;
;
COMCH01IN	EQU	$
		LDX	<ENINDX
		LDA	#00020H
		STA	!ENGPOW,X
		LDA	#00200H
		STA	!ENGMAX,X
		LDA	!ENMOD1,X
		ORA	#0000000000000001B	; ＢＧチェックＯＮ！！
		STA	!ENMOD1,X
		LDA	#0010100100000110B
		STA	!ENMOD2,X
;;;;;;;;		LDA	!ENCLOR,X
;;;;;;;;		ORA	#00001H<<1
;;;;;;;;		STA	!ENCLOR,X
		RTL
;
;
;------------------------------------------------------------------------
;-	move （コインムーチョ）						-
;------------------------------------------------------------------------
COMCH_OBJAD	EQU	$
		WORD	RED_COINMUCHO
		WORD	COINMUCHO
;
COMCH00ESCXSP	EQU	$
		WORD	00200H, -0200H
;
COMCHMV		EQU	$
		LDY	!ENYUSN,X
		BMI	COMCHMV0040		; ＯＡＭセット可？ [no->COMCHMV0040]
;
		LDY	!ENWRKA,X
		DEY
		LDA	#BANK RED_COINMUCHO
		STA	R0
		LDA	COMCH_OBJAD,Y
		STA	R1
		M_CHIP	MC1UPOAMST
;;;;;;;;		M_CHIP	COMCHOOAM
;
		LDX	<ENINDX
COMCHMV0040	EQU	$
		LDA	!ENMODE,X
		CMP	#EEATM
		BNE	COMCHMV0050		; 食べられた？ [no->COMCHMV0050]
;
		LDY	!ENWRKA,X
		DEY
		TYX
		JMP	(COMCH_EATMD,X)
;
COMCHMV0050	EQU	$
		LDY	!ENWRKA,X
		DEY
		BNE	COMCHMV0060		; 赤コインムーチョ？ [no->COMCHMV0060]
;
		JSR	HATENACHK
;
COMCHMV0060	EQU	$
		JSL	>ENMDCK			; mode check
;
		JSR	COMCHPTNCHG
;
		LDY	!ENWRKA,X
		DEY
		TYX
		JMP	(COMCHMVMDSL,X)
;
COMCHMVMDSL	EQU	$
		WORD	COMCH00
		WORD	COMCH01
;
;
HATENACHK	EQU	$
		LDA	!ENMODE,X
		CMP	#EMOVE
		BEQ	HATENACHK00F0		; コイン落下？ [no->HATENACHK00F0]
;
		LDA	#COIN1
		JSL	>ENINSR
		BCC	HATENACHK0100		; 敵確保成功？ [no->HATENACHK0100]
;
		LDA	!ENXPSL,X
		STA	!ENXPSL,Y
		LDA	!ENYPSL,X
		CLC
		ADC	#00010H
		STA	!ENYPSL,Y
		LDA	!ENCLOR,X
		AND	#0FFF1H
		ORA	#00001H<<1
		STA	!ENCLOR,Y
		LDA	#EINIT
		STA	!ENMODE,Y
		LDA	!ENWRKC,X
		STA	!ENWRKC,Y
;
HATENACHK00F0	EQU	$
		RTS
;
HATENACHK0100	EQU	$
		LDA	#COIN1
		TXY
		JSL	>ESTATST
;
		LDA	!ENYPSL,X
		CLC
		ADC	#00010H
		STA	!ENYPSL,X
		LDA	!ENCLOR,X
		AND	#0FFF1H
		ORA	#00001H<<1
		STA	!ENCLOR,X
		LDA	#EINIT
		STA	!ENMODE,X
		PLA
		PLY
		PLA
		RTL
;
;
COMCH00		EQU	$
		LDX	<ENINDX
		JSR	COMCH00CRCK
;
		LDA	!ENWRK6,X
		SEC
		SBC	#00020H
		CMP	!ENXPSL,X
		BMI	COMCH000030		; [->COMCH000030]
;
		LDA	#00002H
		BRA	COMCH000040		; [->COMCH000040]
;
COMCH000030	EQU	$
		CLC
		ADC	#00040H
		CMP	!ENXPSL,X
		BPL	COMCH000060		; [->COMCH000060]
;
		LDA	#00000H
COMCH000040	EQU	$
;[1995.05.10.WE]		LDA	!ENMUKI,X
;[1995.05.10.WE]		EOR	#00002H
		STA	!ENMUKI,X
		TAY
		LDA	COMCH00XSPD,Y
		STA	!ENXSPD,X
COMCH000060	EQU	$
		JMP	COMCH01ESCP0010
;
;
COMCH00CRCK0100 EQU	$
		LDA	!EPWIDY,X
		SEC
		SBC	!PWIDEY
		SEC
		SBC	!EWIDEY,X
		CMP	#0FFF8H
		BCC	COMCH00CRCK0140		; [->COMCH00CRCK0140]
;
		LDA	#0003AH
		JSL	>SOUND_3_ON		; サウンド セット！！
;
		JSL	>PLAYER_REBOUND
;
		JMP	COMCH00CRCK0080		; [->COMCH00CRCK0080]
;
COMCH00CRCK0140 EQU	$
		JSL	>PLFLST
;
COMCH00CRCK00F0 EQU	$
		RTS
;
COMCH00CRCK	EQU	$
		LDY	!ECRSFG,X
		BMI	COMCH00CRCK0100		; プレイヤーと当たった？ [yes->COMCH00CRCK0100]
;
		DEY
		BMI	COMCH00CRCK00F0		; 当たり？ [no->COMCH00CRCK00F0]
		BEQ	COMCH00CRCK00F0		; 赤ちゃんと当たった？ [yes->COMCH00CRCK00F0]
;
		LDA	!ENMODE,Y
		CMP	#EMOVE
		BNE	COMCH00CRCK00F0		; Ｍｏｄｅ Ｍｏｖｅ？ [no->COMCH00CRCK00F0]
;
		LDA	!ENSHOT,Y
		BEQ	COMCH00CRCK00F0		; ショット？ [no->COMCH00CRCK00F0]
;
		STZ	<EWORK
		LDA	!ENXPSL,X
		CMP	!ENXPSL,Y
		BMI	COMCH00CRCK0050		; 左当たり？ [yes->COMCH00CRCK0050]
;
		INC	<EWORK
		INC	<EWORK
COMCH00CRCK0050 EQU	$
		TYX
		JSL	>ENDEATH_SET_4
;
		LDX	<ENINDX
;;;;;;;;		LDA	#00067H
;;;;;;;;		JSL	>SOUND_3_ON		; サウンド セット！！
;
		LDA	#00009H
		JSL	>SOUND_3_ON		; サウンド セット！！
;
		M8				; memory 8bit mode !!
;
		LDA	#0FFH
		STA	!ENRETN,X
;
		M16				; memory 16bit mode !!
;
;;;;;;;;		LDY	<ENWRK0,X
;;;;;;;;		CPY	#04
;;;;;;;;		BCS	COMCH00CRCK0040		; Ｍａｘ？ [yes->COMCH00CRCK0040]
;;;;;;;;;
;;;;;;;;		INY
;;;;;;;;		STY	<ENWRK0,X
;;;;;;;;COMCH00CRCK0040 EQU	$
		LDA	#COIN1
		JSL	>ENINSR
		BCC	COMCH00CRCK0080		; 敵確保成功？ [no->COMCH00CRCK0080]
;
		LDA	!ENXPSL,X
		STA	!ENXPSL,Y
		LDA	!ENYPSL,X
		CLC
		ADC	#00010H
		STA	!ENYPSL,Y
		LDA	!ENCLOR,X
		AND	#0FFF1H
		ORA	#00001H<<1
		STA	!ENCLOR,Y
		LDA	#EINIT
		STA	!ENMODE,Y
		LDA	!ENWRKC,X
		STA	!ENWRKC,Y
;
		LDA	#EFAIL
		STA	!ENMODE,X
		LDA	!ENMOD2,X
		SEC
		SBC	#0000100000000000B
		STA	!ENMOD2,X
		LDA	#00020H
		STA	!ENGPOW,X
		LDA	#-0200H
		STA	!ENGMAX,X
		LDY	<EWORK
		LDA	COMCH00ESCXSP,Y
		STA	!ENXMAX,X
		LDA	#02
		STA	!ENTIM1,X
		PLA
		RTL
;
;;;;;;;;		LDA	#DRBF2
;;;;;;;;		JSL	>ENINSR_I
;;;;;;;;		BCC	COMCH00CRCK0080		; 敵確保成功？ [no->COMCH00CRCK0080]
;;;;;;;;;
;;;;;;;;		LDA	!ENXPSL,X
;;;;;;;;		STA	!ENXPSL,Y
;;;;;;;;		LDA	!ENYPSL,X
;;;;;;;;		STA	!ENYPSL,Y
COMCH00CRCK0080 EQU	$
		LDA	#COIN1
		TXY
		JSL	>ESTATST
;
		LDA	!ENYPSL,X
		CLC
		ADC	#00010H
		STA	!ENYPSL,X
		LDA	!ENCLOR,X
		AND	#0FFF1H
		ORA	#00001H<<1
		STA	!ENCLOR,X
		LDA	#EINIT
		STA	!ENMODE,X
		PLA
		JMP	DEATHENEMY
;
;
COMCH01		EQU	$
		LDX	<ENINDX
		JSR	COMCH01CRCK
;
		M8				; memory 8bit mode !!
;
		LDA	<ENCONT+1,X
		INC	A
		INC	A
		AND	#00EH
		STA	<ENCONT+1,X
		TAY
		LDA	!ENCLOR,X
		AND	#0F1H
		ORA	<ENCONT+1,X
		STA	!ENCLOR,X
;
		M16				; memory 16bit mode !!
;
		LDY	<ENCONT,X
		TYX
		JMP	(COMCH01MODSEL,X)
;
COMCH01MODSEL	EQU	$
		WORD	COMCH01WAIT
		WORD	COMCH01RISE
		WORD	COMCH01ESCP
;
;
COMCH01WAIT	EQU	$
		LDX	<ENINDX
		LDA	!ENXPSL,X
		SEC
		SBC	!PLXPSL
		CLC
		ADC	#00050H
		CMP	#00050H*2
		BCS	COMCH01WAIT00F0		; 範囲内？ [no->COMCH01WAIT00F0]
;
		LDA	!ENYPSL,X
		SEC
		SBC	!PLYPSL
		CLC
		ADC	#00040H
		CMP	#00040H*2
		BCS	COMCH01WAIT00F0		; 範囲内？ [no->COMCH01WAIT00F0]
;
COMCH01WAIT0080 EQU	$
		STZ	!ENGPOW,X
		STZ	!ENGMAX,X
		LDA	!ENMOD1,X
		AND	#1111111111100000B
		STA	!ENMOD1,X
		LDA	#-0100H
		STA	!ENYSPD,X
		LDA	!ENYPSL,X
		SEC
		SBC	#00060H
		STA	!ENWRK8,X
		LDY	!EPXMUK,X
		TYA
		EOR	#00002H
		STA	!ENMUKI,X
		LDY	<ENCONT,X
		INY
		INY
		STY	<ENCONT,X
COMCH01WAIT00F0 EQU	$
		RTL
;
;
COMCH01ESCSPD	EQU	$
		WORD	-0040H, 00040H
;
COMCH01RISE	EQU	$
		LDX	<ENINDX
		LDY	!EPXMUK,X
		TYA
		EOR	#00002H
		STA	!ENMUKI,X
		TAY
		LDA	COMCH01ESCSPD,Y
		STA	!ENXSPD,X
;
		LDA	!ENYPSL,X
		CMP	!ENWRK8,X
		BPL	COMCH01RISE00F0		; [->COMCH01RISE00F0]
;
		LDA	#00080H
		STA	!ENGMAX,X
		LDA	#00004H
		STA	!ENGPOW,X
		LDY	<ENCONT,X
		INY
		INY
		STY	<ENCONT,X
COMCH01RISE00F0 EQU	$
		RTL
;
;
COMCH01ESCP	EQU	$
		LDX	<ENINDX
		LDY	!EPXMUK,X
		TYA
		EOR	#00002H
		STA	!ENMUKI,X
		TAY
		LDA	COMCH01ESCSPD,Y
		STA	!ENXSPD,X
COMCH01ESCP0010 EQU	$
		LDA	!ENYSPD,X
		EOR	!ENGMAX,X
		BMI	COMCH01ESCP00F0		; [->COMCH01ESCP00F0]
;
		LDA	!ENYSPD,X
		SEC
		SBC	!ENGMAX,X
		BPL	COMCH01ESCP0040		; [->COMCH01ESCP0040]
;
		EOR	#0FFFFH
		INC	A
COMCH01ESCP0040 EQU	$
		CMP	!ENGPOW,X
		BCS	COMCH01ESCP00F0		; [->COMCH01ESCP00F0]
;
		LDA	!ENGMAX,X
		EOR	#0FFFFH
		INC	A
		STA	!ENGMAX,X
COMCH01ESCP00F0 EQU	$
		RTL
;
;
COMCHPTNCHG	EQU	$
		LDA	!ENTIM0,X
		BNE	COMCHPTNCHG00F0		; [->COMCHPTNCHG00F0]
;
		LDA	#0001
		STA	!ENTIM0,X
		LDA	!ENCHPT,X
		INC	A
		AND	#00003H
		STA	!ENCHPT,X
COMCHPTNCHG00F0 EQU	$
		RTS
;
;
COMCH01CRCK	EQU	$
		LDY	!ECRSFG,X
		BMI	COMCH01CRCK0100		; プレイヤーと当たった？ [yes->COMCH01CRCK0100]
;
		DEY
		BMI	COMCH01CRCK00F0		; 当たり？ [no->COMCH01CRCK00F0]
		BEQ	COMCH01CRCK00F0		; 赤ちゃんと当たった？ [yes->COMCH01CRCK00F0]
;
		LDA	!ENMODE,Y
		CMP	#EMOVE
		BNE	COMCH01CRCK00F0		; Ｍｏｄｅ Ｍｏｖｅ？ [no->COMCH01CRCK00F0]
;
		LDA	!ENSHOT,Y
		BEQ	COMCH01CRCK00F0		; ショット？ [no->COMCH01CRCK00F0]
;
		TYX
		JSL	>ENDEATH_SET_4
		LDX	<ENINDX
;
		LDA	#0008FH
		JSL	>SOUND_3_ON		; サウンド セット！！
;
		M8				; memory 8bit mode !!
;
		LDA	#0FFH
		STA	!ENRETN,X
;
		M16				; memory 16bit mode !!
;
		LDY	<ENCONT,X
		BNE	COMCH01CRCK0030		; 止まってる？ [no->COMCH01CRCK0030]
;
		JSL	>COMCH01WAIT0080
;
COMCH01CRCK0030 EQU	$
		LDY	<ENWRK0,X
		CPY	#05
		BCS	COMCH01CRCK0040		; Ｍａｘ？ [yes->COMCH01CRCK0040]
;
		INY
		STY	<ENWRK0,X
COMCH01CRCK0040 EQU	$
		JSR	COMCH01DMG
;
COMCH01CRCK00F0 EQU	$
		RTS
;
COMCH01CRCK0100 EQU	$
		JSL	>PLFLST
;
		RTS
;
;
COMCH01COUNT	EQU	$
		BYTE	00, 01*2, 01*2, 01*2
;
COMCH01COINXS	EQU	$
		WORD	00000H, 00060H, 00000H, -0060H
		WORD	00080H, -0080H
;
COMCH01COINYS	EQU	$
		WORD	00000H, 0FD60H, 0FD00H, 0FD60H
		WORD	0FE00H, 0FE00H
;
COMCH01COINSD	EQU	$
		WORD	00000H, 00009H, 00009H, 00018H
;
COMCH01DMG	EQU	$
		LDY	<ENWRK0,X
		BEQ	COMCH01DMG00F0		; [->COMCH01DMG00F0]
;
		CPY	#04
		BCS	COMCH01DMG0100		; １ｕｐ？ [yes->COMCH01DMG0100]
;
		LDA	COMCH01COINSD,Y
		PHY
		JSL	>SOUND_3_ON		; サウンド セット！！
;
		PLY
		LDA	COMCH01COUNT,Y
		TAY
COMCH01DMG0040	EQU	$
		PHY
		LDA	COMCH01COINXS,Y
		STA	<EWORK
		LDA	COMCH01COINYS,Y
		STA	<EWORK2
		LDY	!ENMUKI,X
		BEQ	COMCH01DMG0060		; [->COMCH01DMG0060]
;
		LDA	<EWORK
		EOR	#0FFFFH
		INC	A
		STA	<EWORK
COMCH01DMG0060	EQU	$
		LDA	#COIN1
		JSL	>ENINSR_I
		BCC	COMCH01DMG0080		; 確保成功？ [no->COMCH01DMG0080]
;
		LDA	!ENXPSL,X
		STA	!ENXPSL,Y
		LDA	!ENYPSL,X
		STA	!ENYPSL,Y
		LDA	<EWORK
		STA	!ENXSPD,Y
		LDA	<EWORK2
		STA	!ENYSPD,Y
COMCH01DMG0080	EQU	$
		PLY
		DEY
		DEY
		BNE	COMCH01DMG0040		; [->COMCH01DMG0040]
;
COMCH01DMG00F0	EQU	$
		RTS
;
COMCH01DMG0100	EQU	$
		PHY
		JSL	>PL_1UP_SET_P
		PLY
;
		CPY	#05
		BCC	COMCH01DMG00F0		; [->COMCH01DMG00F0]
;
		PLA
		PLA				; ぷるぷるぷるぷるりたーん！！
		JMP	>ENDEATH_SET_4
;
;
COMCH_EATMD	EQU	$
		WORD	COMCH_REAT
		WORD	COMCH_FEAT
;
;
COMCH_REAT	EQU	$
		LDX	<ENINDX
		LDA	#COIN1
		JSL	>ENINSR
		BCC	COMCH_REAT0100		; 敵確保成功？ [no->COMCH_REAT0100]
;
		LDA	!ENXPSL,X
		STA	!ENXPSL,Y
		LDA	!ENYPSL,X
		CLC
		ADC	#00010H
		STA	!ENYPSL,Y
		LDA	!ENCLOR,X
		AND	#0FFF1H
		ORA	#00001H<<1
		STA	!ENCLOR,Y
		LDA	#EINIT
		STA	!ENMODE,Y
		LDA	!ENWRKC,X
		STA	!ENWRKC,Y
;
		LDA	#HEIH0
		TXY
		JSL	>ESTATST
;
		LDA	#(0001<<1)+1
		STA	!ENWRKC,X
		DEC	A
		ORA	!ENCLOR,X
		STA	!ENCLOR,X
;
		BRA	COMCH_REAT01F0		; [->COMCH_REAT01F0]
;
COMCH_REAT0100	EQU	$
;[1995.05.30.TU]		LDA	#02
;[1995.05.30.TU]		STA	!BERFLG
		STZ	!EATFLG
		STZ	!EATSTP
;
		LDA	#COIN1
		TXY
		JSL	>ESTATST
;
		LDA	!ENYPSL,X
		CLC
		ADC	#00010H
		STA	!ENYPSL,X
		LDA	!ENCLOR,X
		AND	#0FFF1H
		ORA	#00001H<<1
		STA	!ENCLOR,X
		LDA	#EINIT
		STA	!ENMODE,X
;
COMCH_REAT01F0	EQU	$
		PLY
		PLA				; Ｐｕｌｌ Ｐｕｌｌ Ｒｅｔｕｒｎ！！
		RTL
;
;
COMCH_FEAT	EQU	$
		LDX	<ENINDX
		LDA	#HEIH0
		TXY
		JSL	>ESTATST
;
		LDA	#(0000<<1)+1
		STA	!ENWRKC,X
		DEC	A
		ORA	!ENCLOR,X
		STA	!ENCLOR,X
;
		BRA	COMCH_REAT01F0		; [->COMCH_REAT01F0]
;
;
;------------------------------------------------------------------------
;-	fail (コインムーチョ)						-
;------------------------------------------------------------------------
COMCHFL		EQU	$
		LDY	!ENYUSN,X
		BMI	COMCHFL0040		; ＯＡＭセット可？ [no->COMCHFL0040]
;
		LDY	!ENWRKA,X
		DEY
		LDA	#BANK RED_COINMUCHO
		STA	R0
		LDA	#COINMUCHO
		STA	R1
		M_CHIP	COMCHOOAM
;
		LDX	<ENINDX
COMCHFL0040	EQU	$
		JSR	COMCHPTNCHG
;
		LDA	!ENTIM1,X
		CMP	#01
		BNE	COMCHFL0060		; [->COMCHFL0060]
;
		LDA	#0006EH
		JSL	>SOUND_3_ON		; サウンド セット！！
;
COMCHFL0060	EQU	$
		RTL
;
;
RED_COINMUCHO	EQU	$
		BYTE	002,000H,000H	;[00]
		HEX	88,00
		BYTE	000,008H,0FAH
		HEX	2C,40
		BYTE	000,000H,0FAH
		HEX	2C,00
		BYTE	000,001H,00EH
		HEX	2F,40
		BYTE	000,006H,00EH
		HEX	2F,40
		BYTE	002,000H,010H
		HEX	A0,02
;
		BYTE	002,000H,000H	;[01]
		HEX	88,00
		BYTE	000,008H,0FAH
		HEX	2D,40
		BYTE	000,000H,0FAH
		HEX	2D,00
		BYTE	000,001H,00EH
		HEX	2F,40
		BYTE	000,006H,00EH
		HEX	2F,40
		BYTE	002,000H,010H
		HEX	A0,02
;
		BYTE	002,000H,000H	;[02]
		HEX	88,00
		BYTE	000,008H,0FAH
		HEX	3C,40
		BYTE	000,000H,0FAH
		HEX	3C,00
		BYTE	000,001H,00EH
		HEX	2F,40
		BYTE	000,006H,00EH
		HEX	2F,40
		BYTE	002,000H,010H
		HEX	A0,02
;
		BYTE	002,000H,000H	;[03]
		HEX	88,00
		BYTE	000,008H,0FAH
		HEX	3D,40
		BYTE	000,000H,0FAH
		HEX	3D,00
		BYTE	000,001H,00EH
		HEX	2F,40
		BYTE	000,006H,00EH
		HEX	2F,40
		BYTE	002,000H,010H
		HEX	A0,02
;
;
COINMUCHO	EQU	$
		BYTE	002,000H,000H	;[0]
		HEX	88,00
		BYTE	000,000H,0FAH
		HEX	2C,00
		BYTE	000,008H,0FAH
		HEX	2C,40
		BYTE	000,001H,00EH
		HEX	2F,40
		BYTE	000,006H,00EH
		HEX	2F,40
;
		BYTE	002,000H,000H	;[1]
		HEX	88,00
		BYTE	000,000H,0FAH
		HEX	2D,00
		BYTE	000,008H,0FAH
		HEX	2D,40
		BYTE	000,001H,00EH
		HEX	2F,40
		BYTE	000,006H,00EH
		HEX	2F,40
;
		BYTE	002,000H,000H	;[2]
		HEX	88,00
		BYTE	000,000H,0FAH
		HEX	3C,00
		BYTE	000,008H,0FAH
		HEX	3C,40
		BYTE	000,001H,00EH
		HEX	2F,40
		BYTE	000,006H,00EH
		HEX	2F,40
;
		BYTE	002,000H,000H	;[3]
		HEX	88,00
		BYTE	000,000H,0FAH
		HEX	3D,00
		BYTE	000,008H,0FAH
		HEX	3D,40
		BYTE	000,001H,00EH
		HEX	2F,40
		BYTE	000,006H,00EH
		HEX	2F,40
;
;
;------------------------------------------------------------------------
;-	コイン取ったフラグセット					-
;------------------------------------------------------------------------
COIN_CATCH	EQU	$
;[1995.03.30.TH]		LDA	!ENCLOR,X
;[1995.03.30.TH]		AND	#00007H<<1
;[1995.03.30.TH]		CMP	#00001H<<1
;[1995.03.30.TH]		BNE	COIN_CATCH00F0		; [->COIN_CATCH00F0]
;
		LDA	!ENWRKC,X
		BPL	COIN_CATCH00F0		; [->COIN_CATCH00F0]
;
		PHA
		AND	#000FFH
		ASL	A
		ASL	A
		ASL	A
		ASL	A
		STA	<EWORK4
		PLA
		AND	#07F00H
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		JSL	>NON_EXIST_SET2		; コイン取ったフラグＯＮ！！
;
COIN_CATCH00F0	EQU	$
		RTL
;
;
;------------------------------------------------------------------------
;-	initial (Ｗ１デモヨッシー)					-
;------------------------------------------------------------------------
YOSSYPTN00	EQU	$
		HEX	09, 04, 0A, 20, 09, 04, 08, 10
;
YOSSYPTN01	EQU	$
		HEX	0B, 04, 0C, 04, 0D, 24, 0C, 04, 0B, 04, 08, 10
;
YOSSYPTN02	EQU	$
		HEX	0E, 04, 0F, 24, 0E, 04, 08, 10
;
YOSSYPTN03	EQU	$
		HEX	01, 24, 00, 10
;
YOSSYPTN04	EQU	$
		HEX	04, 04, 05, 20, 04, 04, 00, 10
;
YOSSYPTN05	EQU	$
		HEX	06, 04, 07, 20, 06, 04, 00, 10
;
YOSSYPTN06	EQU	$
		HEX	04, 04, 10, 20, 04, 04, 00, 10
;
YOSSYPTN07	EQU	$
		HEX	01, 04, 02, 20, 01, 04, 00, 10
;
YOSSYPTN08	EQU	$
		HEX	02, 04, 03, 20, 02, 04, 01, 10
;
YOSSYPTN09	EQU	$
		HEX	00, 04, 04, 20, 00, 04, 01, 10
;
YOSSYPTN0A	EQU	$
		HEX	06, 04, 07, 20, 06, 04, 01, 10
;
YOSSYPTN_END	EQU	$
;
YossyPT00	EQU	(YOSSYPTN01-YOSSYPTN00)-2
YossyPT01	EQU	(YOSSYPTN02-YOSSYPTN01)-2
YossyPT02	EQU	(YOSSYPTN03-YOSSYPTN02)-2
YossyPT03	EQU	(YOSSYPTN04-YOSSYPTN03)-2
YossyPT04	EQU	(YOSSYPTN05-YOSSYPTN04)-2
YossyPT05	EQU	(YOSSYPTN06-YOSSYPTN05)-2
YossyPT06	EQU	(YOSSYPTN07-YOSSYPTN06)-2
YossyPT07	EQU	(YOSSYPTN08-YOSSYPTN07)-2
YossyPT08	EQU	(YOSSYPTN09-YOSSYPTN08)-2
YossyPT09	EQU	(YOSSYPTN0A-YOSSYPTN09)-2
YossyPT0A	EQU	(YOSSYPTN_END-YOSSYPTN0A)-2
;
YOSSY01		EQU	$
		WORD	YOSSYPTN03
		BYTE	YossyPT03
		WORD	YOSSYPTN04
		BYTE	YossyPT04
		WORD	YOSSYPTN05
		BYTE	YossyPT05
		WORD	YOSSYPTN03
		BYTE	YossyPT03
		WORD	YOSSYPTN04
		BYTE	YossyPT04
		WORD	YOSSYPTN03
		BYTE	YossyPT03
		WORD	YOSSYPTN04
		BYTE	YossyPT04
		WORD	YOSSYPTN03
		BYTE	YossyPT03
;
YOSSY04		EQU	$
YOSSY03		EQU	$
YOSSY02		EQU	$
		WORD	YOSSYPTN00
		BYTE	YossyPT00
		WORD	YOSSYPTN01
		BYTE	YossyPT01
		WORD	YOSSYPTN02
		BYTE	YossyPT02
		WORD	YOSSYPTN00
		BYTE	YossyPT00
		WORD	YOSSYPTN01
		BYTE	YossyPT01
		WORD	YOSSYPTN00
		BYTE	YossyPT00
		WORD	YOSSYPTN01
		BYTE	YossyPT01
		WORD	YOSSYPTN00
		BYTE	YossyPT00
;
YOSSY08		EQU	$
YOSSY05		EQU	$
		WORD	YOSSYPTN06
		BYTE	YossyPT06
		WORD	YOSSYPTN07
		BYTE	YossyPT07
		WORD	YOSSYPTN05
		BYTE	YossyPT05
		WORD	YOSSYPTN06
		BYTE	YossyPT06
		WORD	YOSSYPTN07
		BYTE	YossyPT07
		WORD	YOSSYPTN06
		BYTE	YossyPT06
		WORD	YOSSYPTN07
		BYTE	YossyPT07
		WORD	YOSSYPTN06
		BYTE	YossyPT06
;
YOSSY07		EQU	$
YOSSY06		EQU	$
		WORD	YOSSYPTN08
		BYTE	YossyPT08
		WORD	YOSSYPTN09
		BYTE	YossyPT09
		WORD	YOSSYPTN0A
		BYTE	YossyPT0A
		WORD	YOSSYPTN08
		BYTE	YossyPT08
		WORD	YOSSYPTN09
		BYTE	YossyPT09
		WORD	YOSSYPTN08
		BYTE	YossyPT08
		WORD	YOSSYPTN09
		BYTE	YossyPT09
		WORD	YOSSYPTN08
		BYTE	YossyPT08
;
YOSSYTYPE	EQU	$
		WORD	YOSSY01
		WORD	YOSSY02
		WORD	YOSSY03
		WORD	YOSSY04
		WORD	YOSSY05
		WORD	YOSSY06
		WORD	YOSSY07
		WORD	YOSSY08
;
YOSSYCOL	EQU	$
		WORD	0005<<1, 0007<<1, 0006<<1, 0004<<1
		WORD	0001<<1, 0000<<1, 0002<<1, 0003<<1
;
YOSSYIN		EQU	$
		LDY	<ENCONT,X
		LDA	!ENCLOR,X
		ORA	YOSSYCOL,Y
		STA	!ENCLOR,X
		LDA	!ENYPSL,X
		STA	<ENWRK2,X
		JMP	YOSSYMVNML0100
;
;
;------------------------------------------------------------------------
;-	move (Ｗ１デモヨッシー)						-
;------------------------------------------------------------------------
YOSYYINTER	EQU	$
		WORD	00020H, 00040H, 00060H, 00080H
;
YOSSYJPTM	EQU	$
		WORD	00004H, 00008H, 0000CH, 00010H
;
YOSSYMV		EQU	$
		JSR	YOSSYFOOTCHK
;
		LDY	<ENCONT,X
		TYX
		JMP	(YOSSYMVMDSL,X)
;
YOSSYMVMDSL	EQU	$
		WORD	YOSSYOYABUN
		WORD	YOSSYKOBUN
		WORD	YOSSYKOBUN
		WORD	YOSSYKOBUN
		WORD	YOSSYKOBUN
		WORD	YOSSYKOBUN
		WORD	YOSSYKOBUN
		WORD	YOSSYKOBUN
;
;
YOSSYOYABUN	EQU	$
		LDX	<ENINDX
		LDA	!DEMO_NO
		CMP	#STT_PL_STP
		BCS	YOSSYOYABUN0100		; [->YOSSYOYABUN0100]
;
		JMP	YOSSYMVNML
;
YOSSYOYABUN0100 EQU	$
		LDA	#PSDM
		STA	!PLMODE
		LDA	#0003
		STA	!PLYUSN
		LDA	!ENXPSL,X
		STA	!PLXPSL
		LDA	!ENYPSL,X
		STA	!PLYPSL
		JMP	>ENCLEAR
;
;
YOSSYKOBUN	EQU	$
		LDX	<ENINDX
		LDA	!PLXPSL
		CMP	#001C8H
		BCC	YOSSYMVNML		; [->YOSSYMVNML]
;
YOSSYMVJMP	EQU	$
		LDA	#0002
		STA	!ENMUKI,X
		LDA	!ENCBFG,X
		BIT	#00001H
		BEQ	YOSSYMVJMP0080		; ジャンプ中？ [yes->YOSSYMVJMP0080]
;
		LDA	#00012H
		STA	!ENCHPT,X
		LDA	!ENTIM1,X
		BNE	YOSSYMVJMP00F0		; ジャンプ開始？ [no->YOSSYMVJMP00F0]
;
		LDA	#00011H
		STA	!ENCHPT,X
		LDA	#0FC00H
		STA	!ENYSPD,X
YOSSYMVJMP0080	EQU	$
		LDA	<RANDM0
		AND	#00003H
		ASL	A
		TAY
		LDA	YOSSYJPTM,Y
		STA	!ENTIM1,X
YOSSYMVJMP00F0	EQU	$
		RTL
;
YOSSYMVNML	EQU	$
		LDX	<ENINDX
		LDA	<RANDM0
		AND	#00003H
		ASL	A
		TAY
		LDA	YOSSYJPTM,Y
		STA	!ENTIM1,X
;
		LDA	!ENTIM0,X
		BNE	YOSSYMVNML00F0		; [->YOSSYMVNML00F0]
;
		LDY	<ENWRK0,X
		DEY
		DEY
		BMI	YOSSYMVNML0100		; Next Pattern ? [yex->YOSSYMVNML0100]
;
		STY	<ENWRK0,X
		LDA	!ENWRK6,X
		STA	<EWORK
		INC	A
		STA	<EWORK2
;
		M8				; memory 8bit mode !!
;
		LDA	(<EWORK),Y
		STA	!ENCHPT,X
		LDA	(<EWORK2),Y
		STA	!ENTIM0,X
;
		M16				; memory 16bit mode !!
;
YOSSYMVNML00F0	EQU	$
		RTL
;
YOSSYMVNML0100	EQU	$
		LDY	<ENCONT,X
		LDA	YOSSYTYPE,Y
		STA	<EWORK
		LDA	<RANDM0
		AND	#00007H
		STA	<EWORK2
		ASL	A
		CLC
		ADC	<EWORK2
		TAY
		LDA	(<EWORK),Y
		STA	!ENWRK6,X
		STA	<EWORK2
		INC	A
		STA	<EWORK4
		INY
		INY
;
		M8				; memory 8bit mode !!
;
		LDA	(<EWORK),Y
		STA	<ENWRK0,X
		TAY
		LDA	(<EWORK2),Y
		STA	!ENCHPT,X
;
		M16				; memory 16bit mode !!
;
		LDA	<RANDM0
		AND	#03
		ASL	A
		TAY
		LDA	YOSYYINTER,Y
		LDY	!PLYUSN
		BEQ	YOSSYMVNML0180		; [->YOSSYMVNML0180]
;
		CLC
		ADC	#000140H
YOSSYMVNML0180	EQU	$
;;;;;;;;		LDA	(<EWORK4),Y
		STA	!ENTIM0,X
		RTL
;
;
YOSSYFOOTCHK	EQU	$
		LDA	<ENWRK2,X
		CMP	!ENYPSL,X
		BPL	YOSSYFOOT00F0		; [->YOSSYFOOT00F0]
;
		STA	!ENYPSL,X
		LDA	#00100H
		STA	!ENYSPD,X
		LDA	#01
		STA	!ENCBFG,X
YOSSYFOOT00F0	EQU	$
		RTS
;
;
;------------------------------------------------------------------------
;-	initial （ＭＳヘイホー）					-
;------------------------------------------------------------------------
;cont	 : 回転角度
;wrk0, 1 : Ｙ倍率
;wrk2	 : 使ってる！！
;wrk3	 : 使ってる！！
;wrk4, 5 : 使ってる！！
;wrk6, 7 : 使ってる！！
;wrk8, 9 : 使ってる！！
;wrkA	 : 使ってる！！
;wrkB	 : 使ってる！！
;wrkC	 : Ｘ倍率
;wrkD	 : 未使用
;
;
MSHeihoJump0	EQU	-0400H
MSHeihoZoom0	EQU	00020H
;
MSHIHMVMDSL	EQU	$
MSHeihoJs0	WORD	MSHIHJSTAT
MSHeihoJ20	WORD	MSHIHJSTA2
MSHeihoJp0	WORD	MSHIHJUMP0
MSHeihoJs1	WORD	MSHIHJSTAT
MSHeihoIv0	WORD	MSHIHINTVL
MSHeihoSp0	WORD	MSHIHSPCAL
;
MSHeihoJs0MD	EQU	(MSHeihoJs0-MSHIHMVMDSL)
MSHeihoJ20MD	EQU	(MSHeihoJ20-MSHIHMVMDSL)
MSHeihoJp0MD	EQU	(MSHeihoJp0-MSHIHMVMDSL)
MSHeihoJs1MD	EQU	(MSHeihoJs1-MSHIHMVMDSL)
MSHeihoIv0MD	EQU	(MSHeihoIv0-MSHIHMVMDSL)
MSHeihoSp0MD	EQU	(MSHeihoSp0-MSHIHMVMDSL)
;
MSHIHCOL	EQU	$
		WORD	00000H<<1, 00001H<<1, 00002H<<1, 00004H<<1
;
MSHIHIN		EQU	$
		LDY	!ENWRKA,X
		BNE	MSHIHIN0020		; [->MSHIHIN0020]
;
		M8				; memory 8bit mode !!
;
		LDA	!ENXPSL,X
		AND	#010H
		LSR	A
		STA	<EWORK
		LDA	!ENYPSL,X
		AND	#010H
		ORA	<EWORK
		LSR	A
		LSR	A
		INC	A
		STA	!ENWRKA,X
		TAY
;
		M16				; memory 16bit mode !!
;
		LDA	!ENXPSL,X
		CLC
		ADC	#00008H
		STA	R8
		LDA	!ENYPSL,X
		CLC
		ADC	#00008H
		STA	R0
		PHY
		M_CHIPR M_BGUNIT_READ		; ユニットチェック！！
		LDX	<ENINDX
		PLY
;
		LDA	R5
		BNE	MSHIHIN0100		; 特殊セット？ [yes->MSHIHIN0100]
;
MSHIHIN0020	EQU	$
		DEY
		LDA	!ENCLOR,X
		ORA	MSHIHCOL,Y
		STA	!ENCLOR,X
;
		JSL	>TROBJ_SR_2x2_CL
;
		M8				; memory 8bit mode !!
;
		LDA	#0FFH
		STA	!ENWTSP,X
		STA	!ENWRKC,X		; Ｘ倍率
;
		M16				; memory 16bit mode !!
;
;;;;;;;;		LDA	#00000H
;;;;;;;;		STA	<ENCONT,X		; 回転角度
		LDA	#00100H
		STA	<ENWRK0,X		; Ｙ倍率
		LDA	#-MSHeihoZoom0
		STA	!ENWRK6,X
;
		JSL	>MSHIHCHRST
;
		RTL
;
MSHIHIN0100	EQU	$
		DEY
		LDA	!ENCLOR,X
		ORA	MSHIHCOL,Y
		STA	!ENCLOR,X
;
		JSL	>TROBJ_SR_2x2_CL
;
		LDA	!ENYPSL,X
		SEC
		SBC	#00010H
		STA	!ENYPSL,X
;
		LDA	#00020H
		STA	<ENWRK0,X		; Ｙ倍率
		DEC	A
;
		M8				; memory 8bit mode !!
;
		STA	!ENWRKC,X		; Ｘ倍率
		LDA	#0FFH
		STA	!ENWTSP,X
;
		M16				; memory 16bit mode !!
;
		LDA	#-MSHeihoZoom0
		STA	!ENWRK6,X
		LDY	#MSHeihoSp0MD
		STY	<ENWRK2,X
;
		JSL	>MSHIHCHRST
;
		RTL
;
;
;------------------------------------------------------------------------
;-	move （ＭＳヘイホー）						-
;------------------------------------------------------------------------
MSHIHMV		EQU	$
		JSL	>TROBJ_OAM_2x2
;
		LDA	!ENMODE,X
		CMP	#EEATM
		BNE	MSHIHMV0040		; 食べられ？ [no->MSHIHMV0040]
;
		LDA	#00100H
		STA	<ENWRK0,X
MSHIHMV0040	EQU	$
		JSR	MSHSHOTCK2		; ショットチェック！！
;
		JSL	>MSHIHCHRST
;
		JSR	MSHSHOTCHK		; ショットチェック！！
;
		JSL	>ENMDCK			; mode check
;
		JSR	MSHIHCRCK
;
		LDY	<ENWRK2,X
		TYX
		JMP	(MSHIHMVMDSL,X)
;
;
MSHIHJSTAT	EQU	$
		LDX	<ENINDX
		LDA	!ENWRK6,X
		PHA
		CLC
		ADC	<ENWRK0,X
		STA	<ENWRK0,X
		PLA
		BPL	MSHIHJSTAT0080		; [->MSHIHJSTAT0080]
;
		LDA	<ENWRK0,X
		CMP	#000A0H
		BCS	MSHIHJSTAT00F0		; [->MSHIHJSTAT00F0]
;
		LDA	#MSHeihoZoom0
		STA	!ENWRK6,X
		BRA	MSHIHJSTAT00F0		; [->MSHIHJSTAT00F0]
;
MSHIHJSTAT0080	EQU	$
		LDA	<ENWRK0,X
		CMP	#00100H
		BCC	MSHIHJSTAT00F0		; [->MSHIHJSTAT00F0]
;
		LDA	#00100H
		STA	<ENWRK0,X
		LDA	#-MSHeihoZoom0
		STA	!ENWRK6,X
		LDA	#00020H
		STA	!ENTIM0,X
		LDY	<ENWRK2,X
		INY
		INY
		STY	<ENWRK2,X
MSHIHJSTAT00F0	EQU	$
		RTL
;
;
MSHIHXSPD	EQU	$
		WORD	-0100H, 00100H
;
MSHIHANGLDT	EQU	$
		WORD	02000H
MSHIHANGLD2	EQU	$
		WORD	0E000H, 02000H
;
MSHIHJSTA2	EQU	$
		LDX	<ENINDX
		LDA	<ENCONT,X
;[1995.04.20.TH]		BEQ	MSHIHJSTA20080		; [->MSHIHJSTA20080]
;[1995.04.20.TH];
;[1995.04.20.TH]		LDA	#MSHeihoJump0/2
;[1995.04.20.TH]		BRA	MSHIHJSTA20090		; [->MSHIHJSTA20090]
;[1995.04.20.TH];
MSHIHJSTA20080	EQU	$
		LDY	!ENMUKI,X
		LDA	MSHIHXSPD,Y
		STA	!ENXSPD,X
		LDA	#MSHeihoJump0
MSHIHJSTA20090	EQU	$
		STA	!ENYSPD,X
		STZ	!ENTIM0,X
		LDY	<ENWRK2,X
		INY
		INY
		STY	<ENWRK2,X
		RTL
;
;
MSHIHJUMP0	EQU	$
		LDX	<ENINDX
		LDA	!ENCBFG,X
		AND	#00001H
		BNE	MSHIHJUMP00100		; [->MSHIHJUMP00100]
;
		LDA	<ENCONT,X
		CLC
		ADC	#00800H
		STA	<ENCONT,X
		RTL
;
MSHIHJUMP00100	EQU	$
		STZ	!ENXSPD,X
		LDY	!ENSLOP,X
		BNE	MSHIHJUMP00200		; 坂？ [yes->MSHIHJUMP00200]
;
;[1995.04.20.TH]		LDA	<ENCONT,X
;[1995.04.20.TH]		CMP	#04000H
;[1995.04.20.TH]		BCC	MSHIHJUMP00180		; [->MSHIHJUMP00180]
;[1995.04.20.TH];
;[1995.04.20.TH]		CMP	#0C000H
;[1995.04.20.TH]		BCS	MSHIHJUMP00180		; [->MSHIHJUMP00180]
;[1995.04.20.TH];
;[1995.04.20.TH]		LDA	#08000H
;[1995.04.20.TH]		STA	<ENCONT,X
;[1995.04.20.TH]		BRA	MSHIHJUMP00190		; [->MSHIHJUMP00190]
;[1995.04.20.TH];
MSHIHJUMP00180	EQU	$
		STZ	<ENCONT,X
MSHIHJUMP00190	EQU	$
		LDY	<ENWRK2,X
		INY
		INY
		STY	<ENWRK2,X
		RTL
;
MSHIHJUMP00200	EQU	$
		BMI	MSHIHJUMP00300		; 右下がり？ [yes->MSHIHJUMP00300]
;
		LDY	!ENMUKI,X
		LDA	MSHIHANGLDT,Y
		STA	<ENCONT,X
		BRA	MSHIHJUMP00190		; [->MSHIHJUMP00190]
;
MSHIHJUMP00300	EQU	$
		LDY	!ENMUKI,X
		LDA	MSHIHANGLD2,Y
		STA	<ENCONT,X
		BRA	MSHIHJUMP00190		; [->MSHIHJUMP00190]
;
;
MSHIHINTVL	EQU	$
		LDX	<ENINDX
		LDA	!ENTIM0,X
		BNE	MSHIHINTVL00F0		; [->MSHIHINTVL00F0]
;
		LDY	#00
		STY	<ENWRK2,X
MSHIHINTVL00F0	EQU	$
		RTL
;
;
MSHIHSPCAL	EQU	$
		LDX	<ENINDX
		LDA	!ENDSXL,X
		CMP	#000F0H
		BCS	MSHIHSPCAL00F0		; 画面内？ [no->MSHIHSPCAL00F0]
;
		LDA	!ENDSYL,X
		CMP	#000C0H
		BCS	MSHIHSPCAL00F0		; 画面内？ [no->MSHIHSPCAL00F0]
;
		LDA	<ENWRK0,X
		CLC
		ADC	#00002H
		CMP	#00100H
		BCS	MSHIHSPCAL0100		; [->MSHIHSPCAL0100]
;
		STA	<ENWRK0,X
		DEC	A
;
		M8				; memory 8bit mode !!
;
		STA	!ENWRKC,X
;
		M16				; memory 16bit mode !!
;
MSHIHSPCAL00F0	EQU	$
		RTL
;
MSHIHSPCAL0100	EQU	$
		LDA	#00100H
		STA	<ENWRK0,X
;
		M8				; memory 8bit mode !!
;
		LDA	#0FFH
		STA	!ENWRKC,X
		STZ	<ENWRK2,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
;
MSHSHOTCK2	EQU	$
		LDA	!ENMODE,X
		CMP	#EMOVE
		BNE	MSHSHOTCK20030		; Ｍｏｄｅ Ｍｏｖｅ？ [no->MSHSHOTCK20030]
;
		LDA	!ENSHOT,X
		BEQ	MSHSHOTCK20030		; ショット？ [no->MSHSHOTCK20030]
;
		LDA	!ENXSPD,X
		CLC
		ADC	#ShotXspdCHK
		CMP	#ShotXspdCHK2
		BCC	MSHSHOTCK20030		; ノーマルショット？ [no->MSHSHOTCK20030]
;
		LDA	#00100H
		STA	<ENWRK0,X
		LDA	!ENCHPT,X
		AND	#000FFH
		STA	!ENCHPT,X
MSHSHOTCK20030	EQU	$
		RTS
;
;
MSHSHOTCHK	EQU	$
		LDA	!ENMODE,X
		CMP	#EMOVE
		BNE	MSHSHOTCHK0030		; Ｍｏｄｅ Ｍｏｖｅ？ [no->MSHSHOTCHK0030]
;
		LDA	!ENSHOT,X
		BEQ	MSHSHOTCHK0030		; ショット？ [no->MSHSHOTCHK0030]
;
		LDA	!ENXSPD,X
		CLC
		ADC	#ShotXspdCHK
		CMP	#ShotXspdCHK2
		BCS	MSHSHOTCHK0040		; ノーマルショット？ [no->MSHSHOTCHK0040]
;
MSHSHOTCHK0030	EQU	$
		RTS
;
MSHSHOTCHK0040	EQU	$
		PLA				; Ｐｕｌｌ Ｐｕｌｌ Ｒｅｔｕｒｎ！！
		LDA	!ENSTFG
		ORA	!BIRIBIRI
		ORA	!ITEMNO
		BEQ	MSHSHOTCHK0080		; 敵ストップ？ [no->MSHSHOTCHK0080]
;
		RTL
;
MSHSHOTCHK0080	EQU	$
		LDA	!ENSHOT,X
		DEC	A
		BEQ	MSHSHOTCHK0090		; [->MSHSHOTCHK0090]
;
		STA	!ENSHOT,X
MSHSHOTCHK0090	EQU	$
		LDY	!ENWRKB,X
		TYX
		JMP	(MSHSHOTMD,X)
;
MSHSHOTMD	EQU	$
		WORD	MSHIHKRKRST
		WORD	MSHIHKRKRM
;
;
MSHIHKRKRST	EQU	$
		LDX	<ENINDX
		LDY	#00
		LDA	!ENXSPD,X
		BMI	MSHIHKRKRST0040		; 左向き？ [no->MSHIHKRKRST0040]
;
		INY
		INY
MSHIHKRKRST0040 EQU	$
		TYA
		EOR	!ENMUKI,X
		TAY
		LDA	GSTH0_REVOL,Y
		STA	<ENWRK4,X
		LDA	!ENMUKI,X
		STA	!ENWRK8,X
		LDA	#00100H
		STA	<ENWRK0,X
;
		M8				; memory 8bit mode !!
;
		INC	!ENWRKB,X
		INC	!ENWRKB,X
;
		M16				; memory 16bit mode !!
;
		RTL
;
;
MSHIHKRKRM	EQU	$
		LDX	<ENINDX
		JSR	MSHIHBGCK
;
		JSR	MSHIHCRC2
;
		LDA	!ENCBFG,X
		BIT	#00001H
		BEQ	MSHIHKRKRM0080		; 地面に接してる？ [no->MSHIHKRKRM0080]
;
		LDY	#00
		LDA	!ENXSPD,X
		BPL	MSHIHKRKRM0040		; 右に進んでる？ [yes->MSHIHKRKRM0040]
;
		INY
		INY
MSHIHKRKRM0040	EQU	$
		LDA	GSTH0_CRCRSPD,Y
		STA	!ENXSPD,X
MSHIHKRKRM0080	EQU	$
		LDA	<ENCONT,X
		CLC
		ADC	<ENWRK4,X
		STA	<ENCONT,X
		LDA	!ENMUKI,X
		STA	!ENWRK8,X
		RTL
;
;
MSHIHCRCK	EQU	$
		LDX	<ENINDX
		LDY	!ECRSFG,X
		BPL	MSHIHCRCK0040		; プレイヤーと当たった？ [no->MSHIHCRCK0040]
;
		LDA	!PLFLSH
		BNE	MSHIHCRCK00F0		; [->MSHIHCRCK00F0]
;
		PLA				; Ｐｕｌｌ Ｐｕｌｌ Ｒｅｔｕｒｎ！！
		JSL	>EPCRCK
;
		RTL
;
MSHIHCRCK0040	EQU	$
		DEY
		BMI	MSHIHCRCK00F0		; 敵と衝突した？ [no->MSHIHCRCK00F0]
		BEQ	MSHIHCRCK00F0		; 赤ちゃんと衝突した？ [yes->MSHIHCRCK00F0]
;
		LDA	!ENMODE,Y
		CMP	#EMOVE
		BNE	MSHIHCRCK00F0		; Ｍｏｄｅ Ｍｏｖｅ？ [no->MSHIHCRCK00F0]
;
		LDA	!ENSHOT,Y
		BEQ	MSHIHCRCK00F0		; ショット？ [no->MSHIHCRCK00F0]
;
		JSR	ENMYNOCHK
		BCC	MSHIHCRCK0080		; ヘイホー族？ [no->MSHIHCRCK0080]
;
		JMP	MSHIHCRC20060		; [->MSHIHCRC20060]
;
MSHIHCRCK0080	EQU	$
		LDA	!ECENTX,X
		SEC
		SBC	!ECENTX,Y
		AND	#08000H
		ASL	A
		ROL	A
		ASL	A
		STA	<EWORK
		TYX
		JSL	>ENDEATH_SET_4
;
		LDX	<ENINDX
		PLA				; Ｐｕｌｌ Ｐｕｌｌ Ｒｅｔｕｒｎ！！
;
		LDA	#00067H
		JSL	>SOUND_3_ON		; サウンド セット！！
;
		M8				; memory 8bit mode !!
;
		STZ	!ENWRKB,X
		LDA	#01
		STA	!ENSHOT,X
;
		M16				; memory 16bit mode !!
;
		LDY	<EWORK
		LDA	GSTH0_CRCRSPD,Y
		STA	!ENXSPD,X
		JMP	>MSHIHKRKRST
;
MSHIHCRCK00F0	EQU	$
		RTS
;
;
MSHIHBGBIT	EQU	$
		WORD	0000000000001000B, 0000000000000100B
;
MSHIHBGCK	EQU	$
		LDA	!ENMUKI,X
		CMP	!ENWRK8,X
		BNE	MSHIHCRC20020		; 横当たり？ [yes->MSHIHCRC20020]
;
		RTS
;
;
MSHIHCRC2	EQU	$
		LDX	<ENINDX
		LDY	!ECRSFG,X
		BPL	MSHIHCRC20040		; プレイヤーと当たった？ [no->MSHIHCRC20040]
;
MSHIHCRC20020	EQU	$
		PHY
		JMP	GSTH0_CRCK20100		; [->GSTH0_CRCK20100]
;
MSHIHCRC20040	EQU	$
		TXA
		STA	R1
		PHX
		M_CHIP	MY_ENCROS2
		PLX
;
		LDY	R14
		BMI	MSHIHCRC200F0		; 敵と衝突した？ [no->MSHIHCRC200F0]
		BEQ	MSHIHCRC200F0		; 赤ちゃんと衝突した？ [yes->MSHIHCRC200F0]
;
		LDA	!ENMODE,Y
		CMP	#EFAIL
		BCC	MSHIHCRC200F0		; Ｍｏｄｅ Ｍｏｖｅ？ [no->MSHIHCRC200F0]
;
		LDA	!ENMOD1,Y
		AND	#0110000000000000B
		BNE	MSHIHCRC200F0		; 敵？ [no->MSHIHCRC200F0]
;
		JSR	ENMYNOCHK
		BCS	MSHIHCRC20060		; ヘイホー族？ [yes->MSHIHCRC20060]
;
		LDA	!ENMOD0,Y
		AND	#0000000000100000B
		BNE	MSHIHCRC200F0		; 投げた敵に当たる？ [no->MSHIHCRC200F0]
;
MSHIHCRC20060	EQU	$
		LDA	!ENXPSL,Y
		STA	<EWORK0
		LDA	!ENYPSL,Y
		STA	<EWORK2
		TYX
;;;;;;;;		JSL	>DEATHENEMY
		JSL	>ENDEATH_SET_4
		LDX	<ENINDX
;
		PLA				; ぷるぷるりたーん！！
		JMP	>ENDEATH_SET
;
;[1995.06.05.MO]		LDX	<ENINDX
;[1995.06.05.MO]		LDY	<ENWRK3,X
;[1995.06.05.MO]		CPY	#0008
;[1995.06.05.MO]		BCS	MSHIHCRC20080		; １ｕｐ？ [yes->MSHIHCRC20080]
;[1995.06.05.MO];
;[1995.06.05.MO]		INY
;[1995.06.05.MO]		STY	<ENWRK3,X
;[1995.06.05.MO]		LDA	GSTH0_ENDHSOUND,Y
;[1995.06.05.MO]		AND	#000FFH
;[1995.06.05.MO]		JSL	>SOUND_3_ON		; サウンド セット！！
;[1995.06.05.MO]		BRA	MSHIHCRC200F0		; [->MSHIHCRC200F0]
;[1995.06.05.MO];
;[1995.06.05.MO]MSHIHCRC20080	EQU	$
;[1995.06.05.MO]		LDA	<EWORK0
;[1995.06.05.MO]		STA	!WORK0
;[1995.06.05.MO]		LDA	<EWORK2
;[1995.06.05.MO]		STA	!WORK2
;[1995.06.05.MO]		JSL	>PL_1UP_SET
;[1995.06.05.MO];
MSHIHCRC200F0	EQU	$
		RTS
;
;
MSHIHBGYP0	EQU	$
		WORD	00007H, 00006H
		WORD	00005H, 00004H
		WORD	00003H, 00002H
		WORD	00001H, 00000H
		WORD	00000H, 00000H
		WORD	00000H, 00000H
;
MSHIHCHRAD	EQU	$
		WORD	CIPCHD+7020H+0
		WORD	CIPCHD+6020H+0
;
MSHIHCHRST	EQU	$
		LDY	!ENCHPT+1,X
		BNE	MSHIHCHRST00F0		; ？ [no->MSHIHCHRST00F0]
;
		LDY	!ENYUSN,X
		BMI	MSHIHCHRST00F0		; 表示中？ [no->MSHIHCHRST00F0]
;
		LDA	<ENWRK0,X
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		AND	#000FEH
		TAY
		LDA	MSHIHBGYP0,Y
		STA	<EWORK
;
		I16				; index 16bit mode !!
;
		LDY	!ENOAML,X
		LDA	!SOAM_DX+2,Y
		CLC
		ADC	<EWORK
		STA	!SOAM_DX+2,Y
;
		I8				; index 8bit mode !!
;
		LDA	!MSGMOD
		BNE	MSHIHCHRST00F0		; メッセージ表示？ [yes->MSHIHCHRST00F0]
;
		LDA	!ENTROB,X
		BMI	MSHIHCHRST00F0		; 回転オブジェ使用？ [no->MSHIHCHRST00F0]
;
		LDY	#00
		LDA	!ENSHOT,X
		BEQ	MSHIHCHRST0040		; ショット？ [no->MSHIHCHRST0040]
;
		INY
		INY
MSHIHCHRST0040	EQU	$
		LDA	MSHIHCHRAD,Y
		STA	<EWORK
		LDY	<ENCONT+1,X
		TYA
		STA	R5			; (R5) <- 回転角度
		LDY	!ENWRKC,X
		TYA
		INC	A
		STA	R6			; (R6) <- Ｘ倍率
		LDA	<ENWRK0,X
		STA	R11			; (R11) <- Ｙ倍率
;
		I16				; index 16bit mode !!
;
		LDY	!ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_Y,X
		STA	R2			; (R2) <- ビットマップＹ座標
		LDA	>TROBJ_PLOT_X,X
		STA	R3			; (R3) <- ビットマップＸ座標
		LDA	<EWORK
		STA	R12			; (R12) <- キャラクタアドレス
		LDA	#BANK CIPCHD+7020H+0
		STA	R13			; (R13) <- キャラクタバンク
;
		I8				; index 8bit mode !!
;
		M_CHIP	C_16_RTZ_16_XY
;
		INC	OBM7WF			; mode 7 OBJ chara DMA "ON"
;
		LDX	<ENINDX
MSHIHCHRST00F0	EQU	$
		RTL
;
;
;------------------------------------------------------------------------
;-	敵死亡効果セット						-
;------------------------------------------------------------------------
DEATHENEMY	EQU	$
		PHY
		TXY
		JSL	>FSMK2_ST2
;
;[1995.05.23.TU]		LDA	#DOON0
;[1995.05.23.TU]		JSL	>EXINSR
;[1995.05.23.TU];
;[1995.05.23.TU]		LDA	!ENXPSL,X
;[1995.05.23.TU]		STA	!EXXPSL,Y
;[1995.05.23.TU]		LDA	!ENYPSL,X
;[1995.05.23.TU]		STA	!EXYPSL,Y
;[1995.05.23.TU]		LDA	#0005
;[1995.05.23.TU]		STA	!EXTIM0,Y
;[1995.05.23.TU];
		PLY
		RTL
;
;
;------------------------------------------------------------------------
;------------------------------------------------------------------------
;------------------------------------------------------------------------
;------------------------------------------------------------------------
;------------------------------------------------------------------------
;------------------------------------------------------------------------
;------------------------------------------------------------------------
;------------------------------------------------------------------------
;
		END
;
;
