;************************************************************************
;*									*
;*	title name	: "yossy"					*
;*	proccess	: enemy sub.1					*
;*	file name	: ys_enmy2					*
;*									*
;************************************************************************
;
;
		SALL
;
		include		ys_header.inc
		include		ys_unit.h
		include		ys_pld.h
		include		ys_color.h
		include		../union/ys_bgcheck.h
		include		ys_ename.h
		include		ys_presno.h
;
		XALL
;
;
;------------------------------------------------------------------------
;-		global symbol						-
;------------------------------------------------------------------------
		GLB	COLD0IN,COLDXIN,SUIKAIN,FIRE0IN
		GLB	MISA0IN,DTELEIN,FIREXIN,SOPB0IN,SKILFIN
		GLB	WTRLFIN,YKDLFIN,HEIH0IN,NAMAZIN,DEATHIN
		GLB	SANPOIN,GHOSTIN,GITANIN
		GLB	FACE8IN,GITNSIN,GITNLIN,NLFLRIN,NLFUDIN
		GLB	HACHIIN,ARIH0IN
		GLB	CHKH0IN,KUSAHIN,NRLF0IN
		GLB	NRLF1IN,HRLF0IN,HRLF1IN,NRLF2IN,NRLF3IN,HRLF2IN
		GLB	HRLF3IN,SRLF0IN,SRLF1IN,GRPLFIN,FLWH0IN
		GLB	SESAWIN,MILL0IN,MILL1IN,MILL2IN,MILS0IN
		GLB	PUPBBIN,COIN1IN,SWAVMIN,SWAV0IN,SWAV1IN
		GLB	TIKU0IN,TIKU1IN,CNTLFIN,GABONIN,GABNBIN
		GLB	PONTAIN,FYUKAIN,FLOATIN,GABN2IN,GBNB2IN
;;;;		    GLB	    MOJI0IN
;
		GLB	COLD0MV,COLDXMV,SUIKAMV,FIRE0MV
		GLB	MISA0MV,DTELEMV,FIREXMV,SOPB0MV,SKILFMV
		GLB	WTRLFMV,YKDLFMV,HEIH0MV,NAMAZMV,DEATHMV
		GLB	SANPOMV,GHOSTMV,GITANMV
		GLB	FACE8MV,GITNSMV,GITNLMV,NLFLRMV,NLFUDMV
		GLB	HACHIMV,ARIH0MV
		GLB	CHKH0MV,KUSAHMV,NRLF0MV
		GLB	NRLF1MV,HRLF0MV,HRLF1MV,NRLF2MV,NRLF3MV,HRLF2MV
		GLB	HRLF3MV,SRLF0MV,SRLF1MV,GRPLFMV,FLWH0MV
		GLB	SESAWMV,MILL0MV,MILL1MV,MILL2MV,MILS0MV
		GLB	PUPBBMV,COIN1MV,SWAVMMV,SWAV0MV,SWAV1MV
		GLB	TIKU0MV,TIKU1MV,CNTLFMV,GABONMV,GABNBMV
		GLB	PONTAMV,FYUKAMV,FLOATMV,GABN2MV,GBNB2MV
;;;;		    GLB	    MOJI0MV
;
		GLB	HEIH0FL
;
;
;
;
		GLB	LOPLFIN,LOPLFMV
;
;
		GLB	FUSNB_SET,TAMA_NORI_XREV
		GLB	KINOMI_CANCEL,KINOMI_CANCEL_2,KINOMI_CANCEL_3
		GLB	COLD_KIRAKIRA
		GLB	MISA0_KILL
		GLB	TO_PLDOWN
		GLB	SMUCH_MILL2_CHK
		GLB	PONTA_CHECK
		GLB	PUCHACONT_CK2
;
		GLB	NRLF0_BGCHK
;
		GLB	GHOSTNS,KUSAHNS
;
		GLB	NMZ_HOSEI,DOROB_SET
		GLB	HEIH0_TO_GURU,HEIH0_DEATH_CHK
		GLB	HEIH0_KIND_CHK
		GLB	COIN1_GET
;
		GLB	ANGCKD
;
;------------------------------------------------------------------------
;-		extern symbol						-
;------------------------------------------------------------------------
;
;-------------< sy_main >------------------------------------------------
		EXT	D_00
		EXT	SOUND_3_ON
;
;-------------< sy_rpro >------------------------------------------------
		EXT	JSRSUB
		EXT	CHIPON,CHIPON_RAM_READ,CHIPON_C
		EXT	NEWVMADL
		EXT	SFC_BGCLR_4_L
		EXT	B3CL
;
;-------------< sy_play >------------------------------------------------
		EXT	PLCOLTR
		EXT	EBSTAT
		EXT	PFAL,PSTP,PMOV
		EXT	PFLP,PDEM,PDKN
		EXT	TIMEUP_SET,TIMEUP_SET_S,TIMEUP_SET_SS
		EXT	PUSHTM,PUSHPT
		EXT	BERO_CANCEL
;
;-------------< sy_bgsc >------------------------------------------------
		EXT	UNITCHG
		EXT	BGCG
;
;-------------< sy_enmy >------------------------------------------------
		EXT	ENEMY,ENINSB
		EXT	ENCLEAR,ENCLEAR_NORETN,DISPCK0,DISPCK1,DISPCK2
		EXT	DISPCK4
		EXT	ENINSR,ENINSR2,EEXCHK,EEYCHK,EEXYCK,ESTATST
		EXT	ENINSR_I,ENINSR2_I
		EXT	ESINSR
		EXT	SCOREST,COLD_KIRA_ST,SHOT_EN_KILL
		EXT	ENMDCK,XSDOWN,EPCRCK,MUKEOR,XSPEOR,MKEOR2,PLFLST
		EXT	PLFLST_2
		EXT	FSMK0_SET4,FSMK0_SET2,FSMK2_SET
		EXT	BOBBGCR,POBBGCR_H
;
		EXT	EINIT,EFAIL,EMOVE,EEATM,ENOSE,EBABL,ERINT,EFALL
		EXT	EFIRE
;
		EXT	EATMXS,NOSWT
;
		EXT	ENFAIL0,EGGKILL_ALL,ENDEATH_SET,ENDEATH_SET_3
		EXT	ENDEATH_SET_4
		EXT	SHOT_EN_KILL_S,SHOT_EN_KILL_2
;
		EXT	EN_XYMOVE,EN_TIMER
;
		EXT	NON_EXIST_SET2,EXIST_CHECK_S2
;
		EXT	ENFAIL_FALL
;
		EXT	PL_1UP_SET,PL_3UP_SET
		EXT	COIN1_END_SET
;
		EXT	TROBJ_CANCEL
		EXT	TROBJ_SR_2x2,TROBJ_SR_4x4,TROBJ_SR_8x8
		EXT	TROBJ_SR_2x2_CL,TROBJ_SR_4x4_CL,TROBJ_SR_8x8_CL
		EXT	TROBJ_OAM_2x2,TROBJ_OAM_4x4,TROBJ_OAM_8x8
		EXT	TROBJ_OAM_2x2_I,TROBJ_OAM_4x4_I,TROBJ_OAM_8x8_I
		EXT	TROBJ_CLEAR
		EXT	TROBJ_PLOT_X,TROBJ_PLOT_Y
;
;-------------< sy_enmy3 >------------------------------------------------
		EXT	BG3POLY_INIT,BG3POLYST0,BG3POLYST
		EXT	ICE_IN_CK
		EXT	BSCLW_SET_M
		EXT	BOSS_CLEAR,BOSS_CLEAR_M
		EXT	BOSS_EN_CHANGE
;
;-------------< sy_enmy4 >------------------------------------------------
;
;-------------< sy_enmy6 >------------------------------------------------
		EXT	DOKAN_CHECK,DOKAN_CHECK2
;
;-------------< sy_enmy8 >------------------------------------------------
		EXT	TRBOX_COIN_SET,TRBOX_TIME_SET
		EXT	MATO0_DEATH_CHK
		EXT	SHOT_EN_KILL_SP,SHOT_EN_KILL_S2
;
;-------------< sy_enmy9 >------------------------------------------------
		EXT	COIN_CATCH
;
;-------------< sy_dorobo >------------------------------------------------
		EXT	DOROB_RMODE0
		EXT	DOROB_RMODE1
		EXT	DOROB_RMODE2
		EXT	DOROB_RMODE3
		EXT	DOROB_RMODE5
		EXT	DOROB_RMODE6
		EXT	DOROB_RMODE7
		EXT	DOROB_RMODE8
		EXT	DOROB_RMODE9
;
		EXT	DOROB_R5_CHCT
;
		EXT	DOROB_R5_CHPT
;
;-------------< ys_babym >------------------------------------------------
		EXT	BABYM_RMODE00
		EXT	BABYM_RMODE10
		EXT	BABYM_RMODE20
		EXT	BABYM_RMODE38
		EXT	BABYM_RMODE40
		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
		EXT	BABYM_SHABN_C3
		EXT	BABYM_SHABN_C6
		EXT	BABYM_AWABR_SET
		EXT	BABYM_DOROB_CUT
;
;-------------< sy_exst >------------------------------------------------
		EXT	EXINSR
		EXT	SKSNOW
;
;-------------< sy_unit >------------------------------------------------
		EXT	UNCOMPRES,VRAMDX_ST
		EXT	UNDTADD,UNDATA,RUTDATA
;
		EXT	M_DMA_BFST
;
;-------------< sy_data >------------------------------------------------
		EXT	SIN,COS
;
;------------------------------------------------------------------------
;-		define symbol						-
;------------------------------------------------------------------------
;
BABY_INDEX	EQU	00H
;
;
;************************************************************************
;*									*
;*		program start						*
;*									*
;************************************************************************
;
		EXTEND
;
		MEM16
		IDX8
;
		DPAGE	EN0RAM
;
Group_4		GROUP	Enemy2_pro
Enemy2_pro	SECT	REL
;
;
;;;;;************************************************************************
;;;;;*		    intial  ( moji polygon デバッグ用 )			    *
;;;;;************************************************************************
;;;;MJDEBUG_COL	    EQU	    $
;;;;		    WORD    0,0,0,0,0,0,0,001FH,109BH,2117H,3193H
;;;;		    WORD    420FH,528BH,6307H,7383H
;;;;;
;;;;MOJI0IN	    EQU	    $
;;;;		    JSL	    >TROBJ_SR_4x4_CL
;;;;;
;;;;		    LDX	    #0EH*2
;;;;MOJI0I_010	    EQU	    $
;;;;		    LDA	    !MJDEBUG_COL,X
;;;;		    STA	    >DATACOL+(81H*2),X
;;;;		    DEX
;;;;		    DEX
;;;;		    BPL	    MOJI0I_010
;;;;		    LDX	    <ENINDX
;;;;		    RTL
;;;;;
;;;;;************************************************************************
;;;;;*		    move    ( moji polygon デバッグ用 )			    *
;;;;;************************************************************************
;;;;MJDEBUG_AD	    EQU	    $
;;;;		    WORD    00000H,0FFFEH,00002H,00001H
;;;;;
;;;;MOJI0MV	    EQU	    $
;;;;		    JSL	    >TROBJ_OAM_4x4
;;;;;
;;;;		    JSL	    >ENMDCK	    ;mode check
;;;;;
;;;;;-------------- OBJ mode 7 set ----------------------------------
;;;;		    LDA	    #05H	    ;["?"]
;;;;		    STA	    R1		    ;(R1) <-- moji no.
;;;;		    LDA	    KEYB1
;;;;		    AND	    #00001100B
;;;;		    LSR	    A
;;;;		    TAY
;;;;		    LDA	    <ENWRK0,X
;;;;		    CLC
;;;;		    ADC	    !MJDEBUG_AD,Y
;;;;		    AND	    #0FFH
;;;;		    STA	    <ENWRK0,X
;;;;		    STA	    R2		    ;(R2) <-- X angle
;;;;		    LDA	    KEYB1
;;;;		    AND	    #00000011B
;;;;		    ASL	    A
;;;;		    TAY
;;;;		    LDA	    <ENWRK2,X
;;;;		    CLC
;;;;		    ADC	    !MJDEBUG_AD,Y
;;;;		    AND	    #0FFH
;;;;		    STA	    <ENWRK2,X
;;;;		    STA	    R3		    ;(R3) <-- Y	  "
;;;;		    LDY	    ENTROB,X
;;;;		    TYX
;;;;		    LDA	    >TROBJ_PLOT_X,X
;;;;		    STA	    R4		    ;(R4) <-- plot start X pos
;;;;		    LDA	    >TROBJ_PLOT_Y,X
;;;;		    STA	    R5		    ;(R5) <--	   "     Y  "
;;;;		    LDA	    #034H
;;;;		    STA	    R6		    ;(R6) <-- zoom flag
;;;;;
;;;;		    I8
;;;;;
;;;;		    M_CHIP  MOJIPOLY4
;;;;;
;;;;		    INC	    OBM7WF	    ;mode 7 OBJ chara DMA "ON"
;;;;;
;;;;		    LDX	    <ENINDX
;;;;		    RTL
;;;;;
;
;
;
;
;****************************************************************
;*		dummy subroutine				*
;****************************************************************
DUMMY_SUB	EQU	$
		TYX
		RTS
;
;****************************************************************
;*		intial	( kinoko.1 )				*
;*			in : (ENWRKA) <--  =0:normal		*
;*				      <-- !=0:spacial set	*
;****************************************************************
COLD0IN		EQU	$
SUIKAIN		EQU	$
FIRE0IN		EQU	$
		JSL	>ICE_IN_CK	;氷ブロックの中チェック
;
		STZ	ENWRKC,X
;
		LDA	ENXPSL,X
		CLC
		ADC	#08H
		STA	R8		;(R8) <-- ＢＧチェックＸ座標
		LDA	ENYPSL,X
		CLC
		ADC	#010H
		STA	R0		;(R0) <-- ＢＧチェックＹ座標
		M_CHIPR M_BGUNIT_READ
;
		LDX	<ENINDX
		LDA	R7
		AND	#AL+MD
		BNE	KINOMI_CANCEL	;ＢＧの上に乗ってる？ ( yes:KINOMI_CANCEL )
		RTL
;
;************************************************************************
;*		move	( kinoko.1 )					*
;************************************************************************
COLD0MV		EQU	$
SUIKAMV		EQU	$
FIRE0MV		EQU	$
		JSL	>ENMDCK		;mode check
;
		LDA	ENMYNO,X
		CMP	#COLD0
		BNE	KIN010		;氷スイカ？ ( no:KIN010 )
;
;-------------- ”凍ったキラキラ”セット --------------------------------
		JSL	>COLD_KIRAKIRA
;
KIN010		EQU	$
		LDA	ENGPOW,X
		BNE	KIN030		;木の実モード？ ( no:KIN030 )
;
;-------------- 木の実モード --------------------------------------------
		LDY	ECRSFG,X
		DEY			;[-1]
		BMI	KIN020		;敵に当たった？ ( no:KIN020 )
;
		LDA	ENMODE,Y
		CMP	#EMOVE
		BNE	KIN020		;敵健在？ ( no:KIN020 )
		LDA	ENSHOT,Y
		BEQ	KIN020		;投げた敵？ ( no:KIN020 )
;
		TYX
		JSL	>ENDEATH_SET_4	;ショット敵死亡セット
;
		LDX	<ENINDX
KINOMI_CANCEL_3 EQU	$
		LDA	#0FD00H		;Ｙスピードセット
		STA	ENYSPD,X
KINOMI_CANCEL	EQU	$
		LDA	ENMOD0,X
		AND	#1111100111111111B ;敵ＶＳ敵衝突チェックしない！！
		ORA	#0000001000100000B ;敵ＶＳ敵衝突チェックされる！！
		STA	ENMOD0,X
KINOMI_CANCEL_2 EQU	$
		LDA	ENMOD1,X	;ＢＧチェックスタート
		ORA	#0000000000000001B
		STA	ENMOD1,X
		LDA	ENMOD2,X	;範囲外クリアー”ＯＮ”
		ORA	#0000000000000100B
		STA	ENMOD2,X
		LDA	#05H
		STA	ENYUSN,X
		LDA	ENCLOR,X	;ＢＧ優先順位変更（普通）
		AND	#11001111B
		ORA	#00100000B
		STA	ENCLOR,X
		LDA	#040H		;重力セット
		STA	ENGPOW,X
KIN020		EQU	$
		RTL
;
;-------------- 落下モード ----------------------------------------------
KIN030		EQU	$
		LDA	ENCBFG,X
		AND	#0000001B
		BEQ	KIN034		;foot cross ? ( no:KIN034 )
;
		JSL	>XSDOWN		;X speed down !!
;
		LDA	ENYSPD,X
		BMI	KIN032
		CMP	#0200H
		BCC	KIN032		;bound ok ? ( no:KIN032 )
;
		LSR	A		;1/2 Y speed set
		EOR	#0FFFFH
		STA	ENYSPD,X
		BRA	KIN034
;
KIN032		EQU	$
		STZ	ENYSPD,X	;Y speed clear !!
;
KIN034		EQU	$
		LDY	<ENWRK0,X
		BEQ	KIN050

		LDA	ENMODE,Y	;どろぼう死んだ ?
		CMP	#EMOVE		;
		BNE	KIN040		; yes: KIN040

		LDA	ENXPSL,Y	;x range ok ?
		SEC			;  ( vs dorobo- )
		SBC	ENXPSL,X	;
		CLC			;
		ADC	#00010H		;
		CMP	#00020H		;
		BCS	KIN040		;  no: KIN040

		LDA	ENYPSL,Y	;y range ok ?
		SEC			;  ( vs dorobo- )
		SBC	ENYPSL,X	;
		CLC			;
		ADC	#0001CH		;
		CMP	#00038H		;
		BCC	KIN050		; yes: KIN050

KIN040		EQU	$
		LDA	#00000
		STA	ENWRK4,Y		;item routine index clear
		STA	ENWRKC,Y		;アイテムＧＥＴフラグクリア
;
		STZ	<ENWRK0,X	;dorobo- routine index clear
		STZ	ENWRKC,X
		JMP	KINOMI_CANCEL
;
KIN050		EQU	$
		LDA	<ENWRK2,X
		BEQ	KIN100		;敵から投げられた？ ( no:KIN100 )
;
;-------------- 敵から投げられた！！ ------------------------------------
;
;-------------- プレイヤーとの当たりチェック --------------------
		LDY	ECRSFG,X
		BPL	KIN060		;プレイヤーと当たり？ ( no:KIN060 )
;
		JSL	>PLFLST
		LDA	EPWIDX,X
		ASL	A
		ASL	A
		ASL	A
		ASL	A
		STA	ENXSPD,X
		BRA	KIN070
;
;-------------- ＢＧチェック ------------------------------------
KIN060		EQU	$
		LDA	ENCBFG,X
		AND	#0001B
		BEQ	KIN100		;ＢＧ当たり？ ( no:KIN100 )
;
		LDA	#0001FH		;[♪]
		JSL	>SOUND_3_ON
;;;;;;;;		LDA	#01H		;[♪]
;;;;;;;;		STA	SOUND0
;
;-------------- やられセット ------------------------------------
KIN070		EQU	$
		LDA	#EFAIL
		STA	ENMODE,X
		LDA	#0FE00H
		STA	ENYSPD,X
;
KIN100		EQU	$
		RTL
;
;------------------------------------------------------------------------
;-		”凍ったキラキラ”セット				-
;------------------------------------------------------------------------
COLD_KIRAKIRA	EQU	$
		LDA	ENTIM0,X
		BNE	KIN050		;”凍ったキラキラ”セット？ ( no:KIN050 )
;
		LDA	#0CH
		STA	ENTIM0,X
		JMP	>COLD_KIRA_ST
;
;;;;;************************************************************************
;;;;;*		    intial  ( bomb kumo )				    *
;;;;;************************************************************************
;;;;KUMO0IN	    EQU	    $
;;;;		    RTL
;;;;;
;;;;;************************************************************************
;;;;;*		    move    ( bomb kumo )				    *
;;;;;************************************************************************
;;;;KUMDWN	    EQU	    $
;;;;		    WORD    0FFE0H,00020H
;;;;KUMFUW	    EQU	    $
;;;;		    WORD    00001H,00000H,00001H,00000H,00000H,0FFFFH,00000H,0FFFFH,00000H,00000H
;;;;;
;;;;KUMO0MV	    EQU	    $
;;;;		    JSL	    >ENMDCK	    ;mode check
;;;;;
;;;;		    INC	    <ENCONT,X
;;;;;
;;;;		    LDA	    ENXSPD,X
;;;;		    ORA	    ENYSPD,X
;;;;		    BEQ	    KUM040	    ;kumo move ? ( no:KUM040 )
;;;;;
;;;;;-------------- kumo move smoke set -------------
;;;;		    LDA	    ENCONT,X
;;;;		    AND	    #03H
;;;;		    BNE	    KUM000	    ;smoke set ? ( no:KUM000 )
;;;;		    JSR	    SMK0ST	    ;smoke.1 set
;;;;;
;;;;;-------------- X speed down ----------------------------
;;;;KUM000	    EQU	    $
;;;;		    LDY	    #00
;;;;		    LDA	    ENXSPD,X
;;;;		    BEQ	    KUM020
;;;;		    BPL	    KUM010
;;;;		    LDY	    #02
;;;;KUM010	    EQU	    $
;;;;		    CLC
;;;;		    ADC	    !KUMDWN,Y
;;;;		    STA	    ENXSPD,X
;;;;		    EOR	    !KUMDWN,Y
;;;;		    BMI	    KUM020
;;;;		    STZ	    ENXSPD,X
;;;;;-------------- Y speed down ----------------------------
;;;;KUM020	    EQU	    $
;;;;		    LDY	    #00
;;;;		    LDA	    ENYSPD,X
;;;;		    BEQ	    KUM042
;;;;		    BPL	    KUM030
;;;;		    LDY	    #02
;;;;KUM030	    EQU	    $
;;;;		    CLC
;;;;		    ADC	    !KUMDWN,Y
;;;;		    STA	    ENYSPD,X
;;;;		    EOR	    !KUMDWN,Y
;;;;		    BMI	    KUM042
;;;;		    STZ	    ENYSPD,X
;;;;		    BRA	    KUM042
;;;;;
;;;;;-------------- "fuwa fuwa" move ------------------------
;;;;KUM040	    EQU	    $
;;;;		    LDA	    <ENCONT,X
;;;;		    BIT	    #03H
;;;;		    BNE	    KUM042
;;;;		    LSR	    A
;;;;		    AND	    #07H*2
;;;;		    TAY
;;;;		    LDA	    ENYPSL,X
;;;;		    CLC
;;;;		    ADC	    !KUMFUW,Y
;;;;		    STA	    ENYPSL,X
;;;;;
;;;;KUM042	    EQU	    $
;;;;		    LDA	    ENTIM2,X
;;;;		    BNE	    KUM048	    ;kumo clear ? ( no:KUM048 )
;;;;;
;;;;;-------------- kumo clear !! -------------------
;;;;		    JSR	    SMK0ST	    ;smoke.1 set
;;;;		    JMP	    >ENCLEAR	    ;enemy clear !!
;;;;;
;;;;KUM048	    EQU	    $
;;;;		    LDY	    ECRSFG,X
;;;;		    BPL	    KUM050	    ;player cross ? ( no:KUM050 )
;;;;;
;;;;;-------------- VS player cross -------------------------
;;;;		    LDA	    PLYSPD
;;;;		    BMI	    KUM050	    ;player jump up ? ( yes:KUM050 )
;;;;		    LDA	    EPWIDY,X
;;;;		    SEC
;;;;		    SBC	    PWIDEY
;;;;		    SEC
;;;;		    SBC	    EWIDEY,X
;;;;		    CMP	    #0FFFAH
;;;;		    BCC	    KUM050	    ;foot cross ok ? ( no:KUM050 )
;;;;;
;;;;;-------------- player lift "ON" set ------------
;;;;;;;;	    CLC
;;;;		    ADC	    PLYPSL	    ;player foot pos hosei
;;;;		    STA	    PLYPSL
;;;;		    LDA	    #0100H	    ;	"   Y speed set
;;;;		    STA	    PLYSPD
;;;;		    INC	    ONLFFG	    ;lift "ON" flag set
;;;;;
;;;;;-------------- kumo pattern set ------------------------
;;;;KUM050	    EQU	    $
;;;;		    LDA	    ENTIM3,X
;;;;		    BNE	    KUM060	    ;pattern change ? ( no:KUM060 )
;;;;		    LDA	    ENCLOR,X	    ;H flip set
;;;;		    EOR	    #01000000B
;;;;		    STA	    ENCLOR,X
;;;;		    LDA	    #20H	    ;timer set
;;;;		    STA	    ENTIM3,X
;;;;KUM060	    EQU	    $
;;;;		    RTL
;;;;;
;;;;;----------------------------------------------------------------
;;;;;-		    smoke.1 set					    -
;;;;;----------------------------------------------------------------
;;;;SMK0ST	    EQU	    $
;;;;		    LDA	    #SMOK0	    ;(A) <-- exstra no.
;;;;		    JSL	    >EXINSR
;;;;		    LDA	    ENXPSL,X	    ;X pos set
;;;;		    STA	    EXXPSL,Y
;;;;		    LDA	    ENYPSL,X	    ;Y pos set
;;;;		    STA	    EXYPSL,Y
;;;;		    LDA	    #02		    ;counter set
;;;;		    STA	    EXWRK0,Y
;;;;		    LDA	    #06		    ;timer set
;;;;		    STA	    EXTIM0,Y
;;;;		    LDA	    #00		    ;1 chara OAM set type set
;;;;		    STA	    EXCHPT+1,Y
;;;;		    RTS
;
;************************************************************************
;*		intial ( submarin missile )				*
;************************************************************************
MISA0IN		EQU	$
		JSL	>TROBJ_SR_2x2
		BCS	MISA0IN_0050	;転送エリア確保？ ( yes:MISA0IN_0050 )
;
		JMP	MISA0_CLEAR
;
MISA0IN_0050	EQU	$
;
		M8
;
		LDA	#080H-1		;水中スピード倍率セット
		STA	ENWTSP,X
;
		M16
;
		RTL
;
;************************************************************************
;*		move ( submarin missile )				*
;************************************************************************
ANGCKD		EQU	$	;[ ???H/2+[XXH] : XXH = NEG flag ]
		WORD	000H/2+0000H,080H/2+8000H,000H/2+8000H,180H/2+0000H
		WORD	100H/2+8000H,080H/2+0000H,100H/2+0000H,180H/2+8000H
ANGSPA		EQU	$
		WORD	00200H,0FE00H
ANGSPC		EQU	$
		WORD	00800H,0F800H
;
MISA0MV		EQU	$
		JSL	>TROBJ_OAM_2x2
;
		JSL	>ENMDCK		;mode check
;
		INC	<ENCONT,X
;
;-------------- missile clear check ---------------------
		JSL	>DISPCK0	;display pos check
		BCS	MSM022		;     "      ok ? ( no:MSM022 )
;
;-------------- VS enemy cross check ----------------------------
		LDY	ECRSFG,X
		DEY
		BMI	MSM010		;VS enemy cross ? ( no:MSM010 )
;
		LDA	ENMOD1,Y
		AND	#0110000000000000B
		BNE	MSM010		;enemy ? ( no:MSM010 )
;
;-------------- enemy kill !! ---------------------------
MSM000		EQU	$
;
		M8
;
		LDA	ENRETN,Y
		STA	ENRETN,X
;
		M16
;
		TYX
		JSL	>FSMK0_SET4
		LDX	<ENINDX
		BRA	MSM020
;
;-------------- BG cross check ----------------------------------
MSM010		EQU	$
		LDA	ENCBFG,X
		BEQ	MSM030		;BG cross ? ( no:MSM030 )
;
MSM020		EQU	$
;
;-------------- submarin missile smoke set --------------
MISA0_KILL	EQU	$
		LDA	#MSMK0		;(A) <-- exstra no.
		JSL	>EXINSR
		LDA	ENXPSL,X	;X pos set
		STA	EXXPSL,Y
		LDA	ENYPSL,X	;Y pos set
		STA	EXYPSL,Y
		LDA	#03		;counter set
		STA	EXWRK0,Y
		LDA	#02		;timer set
		STA	EXTIM0,Y
;
;-------------- end set -------------------------
MISA0_CLEAR	EQU	$
		JSL	>ENCLEAR	;enemy clear !!
MSM022		EQU	$
		STZ	MISILE		;missile flag "OFF" !!
		RTL
;
;-------------- enemy search move -------------------------------
MSM030		EQU	$
		LDA	<ENWRK0,X
		LDY	ENMUKI,X
		BNE	MSM031
		EOR	#00FFH
		INC	A
MSM031		EQU	$
		AND	#01FEH
		STA	<EWORK0		;(EWK0) <-- angle
;
		LDY	ENWATR,X
		BNE	MSM032		;water in ? ( yes:MSM032 )
;
;-------------- water out down move set -----------------
		LDA	#080H		;(A) <-- to move angle
		JMP	MSM082
;
MSM032		EQU	$
		LDA	<ENCONT,X
		AND	#07H
		BEQ	MSM033		;enemy search ? ( yes:MSM033 )
		JMP	MSM102
;
;-------------- enemy search muki calculate -------------
MSM033		EQU	$
		TXA
		STA	CCWORK0		;my enemy index set
		M_CHIP	ENSRCH
;
		LDY	CCWORK0
		BPL	MSM034		;enemy not search ? ( no:MSM034 )
;
		LDX	<ENINDX
		LDY	#00
		LDA	<ENWRK2,X
		BMI	MSM0330
		LDY	#02
MSM0330		EQU	$
		JMP	MSM092
;
MSM034		EQU	$
		LDY	#00H		;(Y) <-- angle pos check data
		LDA	CCWORK1
		BPL	MSM040		;search enemy right ? ( yes:MSM040 )
		LDY	#04H
		EOR	#0FFFFH
		INC	A
MSM040		EQU	$
		CMP	#0100H
		BCS	MSM100		;max area over ? ( yes:MSM100 )
;
		STA	<EWORK2
		TAX
		LDA	CCWORK2
		BPL	MSM050		;search enemy under ? ( yes:MSM050 )
		INY
		INY
		EOR	#0FFFFH
		INC	A
MSM050		EQU	$
		CMP	#0100H
		BCS	MSM100		;max area over ? ( yes:MSM100 )
;
		CMP	<EWORK2
		BCC	MSM060		;Y < X ? ( yes:MSM060 )
		INY
		TAX
		LDA	<EWORK2
MSM060		EQU	$
		CPX	#10H
		BCS	MSM062		;search enemy kill ? ( no:MSM062 )
;
;-------------- search enemy kill !! --------------------
		LDY	CCWORK0
		LDA	ENMOD0,Y
		AND	#0000001000000000B
		BEQ	MSM062		;敵死亡セットＯＫ？ ( no:MSM062 )
		LDX	<ENINDX
		JMP	MSM000
;
MSM062		EQU	$
		XBA
		STA	4204H		;div
		STX	4206H
;
		TYA			;---+
		ASL	A		;   |
		TAY			;   |
		NOP			;   |
		NOP			;   +--- 16 cycle wait
		NOP			;   |
		NOP			;   |
;					;   |
		I16			;---+
;
		LDA	4214H		;(X) <-- div ans
		ASL	A
		TAX
		CPX	#(0100H+1)*2
		BCC	MSM070
		LDX	#(0100H*2)
MSM070		EQU	$
		LDA	!ANGCKD,Y
		ASL	A		;(C) <-- NEG flag
		STA	<EWORK2
		LDA	>ATAN,X
		BCC	MSM080
		EOR	#0FFFFH
		INC	A
MSM080		EQU	$
		CLC
		ADC	<EWORK2		;(A) <-- search enemy muki angle
;
		I8
;
MSM082		EQU	$
		SBC	<EWORK0
		LDY	#00
		AND	#0100H
		BEQ	MSM090
		LDY	#02H
MSM090		EQU	$
		LDX	<ENINDX
MSM092		EQU	$
		STY	<ENWRK4,X	;(EWK4) <-- search muki
;
;-------------- move speed set ----------------------------------
MSM100		EQU	$
		LDX	<ENINDX
MSM102		EQU	$
		LDY	<ENWRK4,X
		LDA	<ENWRK2,X
		CMP	!ANGSPC,Y
		BEQ	MSM110		;max speed over ? ( yes:MSM110 )
		CLC
		ADC	!ANGSPA,Y
		STA	<ENWRK2,X	;(EWK2,3) <-- angle change speed
MSM110		EQU	$
		AND	#0FF00H
		BPL	MSM120
		ORA	#00FFH
MSM120		EQU	$
		XBA
		CLC
		ADC	<EWORK0
		AND	#01FEH
		STA	<EWORK0
		SEC
		SBC	#080H+1
		LDY	#02H		;(Y) <-- muki
		CMP	#0100H-1
		LDA	<EWORK0
		BCS	MSM130
		EOR	#0FFH
		INC	A
		AND	#01FEH
		LDY	#00		;(Y) <-- muki
MSM130		EQU	$
		STA	<ENWRK0,X	;(EWK0,1) <-- chara angle
;
		PHA			;chara angle save
;
		I16
;
		TYA
		STA	ENMUKI,X	;muki set
;
;-------------- X,Y speed set ---------------------------
		TXY
		LDX	<EWORK0		;(X) <-- move angle
		LDA	>COS,X
		ASL	A
		ASL	A
		STA	ENXSPD,Y	;X speed set
		LDA	>SIN,X
		EOR	#0FFFFH
		INC	A
		ASL	A
		ASL	A
		STA	ENYSPD,Y	;Y speed set
;
;-------------- OBJ mode 7 set ----------------------------------
		PLA
		LSR	A
		STA	R5		;(R5)  <-- angle
		LDX	ENTROB,Y
		LDA	>TROBJ_PLOT_X,X
		STA	R3		;(R3)  <-- plot start X pos
		LDA	>TROBJ_PLOT_Y,X
		STA	R2		;(R2)  <--	"     Y  "
		LDA	#0100H
		STA	R6		;(R6)  <-- zoom flag
		LDY	#CIPCHD+30A0H
		LDA	<FRCNT2
		AND	#02H
		BEQ	MSM140
		LDY	#CIPCHD+30B0H
MSM140		EQU	$
		TYA
		STA	R12		;(R12) <-- chara address(L,H)
		LDA	#BANK CIPCHD+30A0H
		STA	R13		;(R13) <--	  "     (B)
;
		I8
;
		M_CHIP	C_16_ROTZOM	;mode 7 OBJ char. set
;
		INC	OBM7WF		;mode 7 OBJ chara DMA "ON"
;
		LDX	<ENINDX
		RTL
;
;************************************************************************
;*		initial ( player shot fire )				*
;************************************************************************
FIREXIN		EQU	$
		RTL
;
;************************************************************************
;*		move ( player shot fire )				*
;************************************************************************
FIREX_ICEB_XHS	EQU	$
		WORD	 08H,-08H, 08H,-08H
FIREX_ICEB_YHS	EQU	$
		WORD	 08H, 08H,-08H,-08H
;
FIREXMV		EQU	$
		JSL	>ENMDCK		;mode check
;
;-------------- ＢＧチェック --------------------------------------------
;
		I16
;
		LDA	ENWRKC,X
		TAX
		LDA	>ENBGCK_UNIT_C+1,X
		AND	#00FFH
		CMP	#HIGH UT8900
		BNE	FIREXMV_008	;氷ブロック当たり？ ( no:FIREXMV_008 )
;
;-------------- 氷ブロック溶かす！！ ----------------------------
		LDA	>ENBGCK_UNIT_C,X
		AND	#00FFH
		ASL	A
		TAY
		LDA	>ENBGCK_X_C,X
		AND	#0FFF0H
		CLC
		ADC	!FIREX_ICEB_XHS,Y
		STA	CCWORK0		;(CWK0) <-- 氷ブロック溶ける効果セットＸ座標
		LDA	>ENBGCK_Y_C,X
		AND	#0FFF0H
		CLC
		ADC	!FIREX_ICEB_YHS,Y
		STA	CCWORK1		;(CWK1) <-- 氷ブロック溶ける効果セットＹ座標
;
		JSL	>SFC_BGCLR_4_L
;
		I8
;
		LDA	#ICEBR		;(A) <-- 効果Ｎｏ．
		JSL	>EXINSR		;効果エリア確保
		LDA	CCWORK0
		STA	EXXPSL,Y	;氷ブロック溶ける効果セットＸ座標セット
		LDA	CCWORK1
		STA	EXYPSL,Y	;氷ブロック溶ける効果セットＹ座標セット
		LDA	#08H
		STA	EXCHPT,Y	;パターンＮｏ．初期セット
		LDA	#04H
		STA	EXTIM0,Y	;初期タイマーセット
;
FIREXMV_008	EQU	$
;
		I8
;
		LDX	<ENINDX
;
;-------------- パターンセット ------------------------------------------
		LDA	ENTIM0,X
		AND	#03H
		BNE	FIREXMV_010	;pattern change ? ( no:FIREXMV_010 )
;
		INC	ENCHPT,X	;pattern no. set
		LDA	ENCHPT,X
		CMP	#04H
		BCC	FIREXMV_010	;end ? ( no:FIREXMV_010 )
;
		JMP	>ENCLEAR	;enemy clear !!
;
FIREXMV_010	EQU	$
		LDA	ENWRK8,X
		BNE	FIREXMV_050	;敵からショット？ ( yes:FIREXMV_050 )
;
;-------------- 敵との衝突チェック --------------------------------------
		TXA
		STA	R1		;(R1) <-- 自分のインデックス
		M_CHIP	MY_ENCROS2
;
FIREXMV_012	EQU	$
		LDX	<ENINDX
;
		LDY	R14
		BMI	FIREXMV_020	;敵と衝突？ ( no:FIREXMV_020 )
;
		LDA	ENMODE,Y
		CMP	#EMOVE
		BNE	FIREXMV_014	;敵健在？ ( no:FIREXMV_014 )
		LDA	ENMOD2,Y
		AND	#0000000000010000B
		BNE	FIREXMV_016	;燃える？ ( yes:FIREXMV_016 )
FIREXMV_014	EQU	$
		LDX	#BANK MY_ENCROS2
		LDA	R15
		JSL	>CHIPON_C
		BRA	FIREXMV_012
;
;-------------- 敵を燃やす --------------------------------------
FIREXMV_016	EQU	$
		LDA	#EFIRE
		STA	ENMODE,Y
		LDA	MINI_GAME_FG
		BNE	FIREXMV_018	;ミニゲーム？ ( yes:FIREXMV_018 )
;
		LDA	ENMOD1,Y	;ＢＧチェック無しセット
		AND	#1111111111100000B
		STA	ENMOD1,Y
FIREXMV_018	EQU	$
		LDA	#0
		STA	ENTIM0,Y
		STA	ENXSPD,Y
		STA	ENXPOW,Y
		LDA	#0FC00H
		STA	ENYSPD,Y
;
FIREXMV_020	EQU	$
		RTL
;
;-------------- プレイヤーとの衝突チェック ------------------------------
FIREXMV_050	EQU	$
		LDY	ECRSFG,X
		BPL	FIREXMV_060	;プレイヤーと衝突？ ( no:FIREXMV_060 )
		LDA	PLFLSH
		BNE	FIREXMV_060	;プレイヤー安全時間？ ( yes:FIREXMV_060 )
;
		JSL	>PLFLST		;プレイヤーダメージ
		LDA	#02H		;[ ※ミニゲーム用 ]
		STA	MISS_P		;
;
FIREXMV_060	EQU	$
		RTL
;
;************************************************************************
;*		initial ( 凍らせショット )				*
;************************************************************************
COLDXIN		EQU	$
		RTL
;
;************************************************************************
;*		move ( 凍らせショット )					*
;************************************************************************
COLDXMV		EQU	$
		JSL	>ENMDCK		;mode check
;
;-------------- パターンセット ------------------------------------------
		LDA	ENTIM0,X
		BNE	COLDXMV_010	;pattern change ? ( no:COLDXMV_010 )
;
		LDA	#06H		;timer set
		STA	ENTIM0,X
		DEC	ENCHPT,X	;pattern no. set
		BPL	COLDXMV_010	;end ? ( no:COLDXMV_010 )
;
		JMP	>ENCLEAR	;enemy clear !!
;
;-------------- 敵との衝突チェック --------------------------------------
COLDXMV_010	EQU	$
		TXA
		STA	R1		;(R1) <-- 自分のインデックス
		M_CHIP	MY_ENCROS2
;
COLDXMV_012	EQU	$
		LDX	<ENINDX
;
		LDY	R14
		BMI	COLDXMV_020	;敵と衝突？ ( no:COLDXMV_020 )
;
		LDA	ENMODE,Y
		CMP	#EMOVE
		BNE	COLDXMV_014	;敵健在？ ( no:COLDXMV_014 )
		LDA	ENCOLD,Y
		BNE	COLDXMV_014	;すでに凍ってる？ ( yes:COLDXMV_014 )
		LDA	ENMOD2,Y
		AND	#0000000001000000B
		BNE	COLDXMV_016	;凍る？ ( yes:COLDXMV_016 )
COLDXMV_014	EQU	$
		LDX	#BANK MY_ENCROS2
		LDA	R15
		JSL	>CHIPON_C
		BRA	COLDXMV_012
;
;-------------- 敵を凍らす --------------------------------------
COLDXMV_016	EQU	$
		TYX
		LDA	#0A0H		;[♪]
		JSL	>SOUND_3_ON
;
		LDA	#0200H		;凍るタイマーセット
		STA	ENCOLD,X
		STZ	ENTIM1,X	;凍った”キラキラ”セットタイマーリセット
		STZ	ENXSPD,X	;Ｘスピードリセット
		STZ	ENXPOW,X
		LDA	#0FD00H		;Ｙスピードセット
		STA	ENYSPD,X
		LDA	#040H		;重力セット
		STA	ENGPOW,X
		LDA	#0400H
		STA	ENGMAX,X
;
;-------------- 凍らせ効果セット ------------------------
FUSNB_SET	EQU	$
		LDA	#FUSNB		;(A) <-- 効果Ｎｏ．
		JSL	>EXINSR		;効果エリア確保
		LDA	ENXPSL,X
		STA	EXXPSL,Y	;Ｘ座標セット
		LDA	ENYPSL,X
		STA	EXYPSL,Y	;Ｙ座標セット
		LDA	#0BH
		STA	EXWRK0,Y	;カウンターセット
		LDA	#04H
		STA	EXTIM0,Y	;タイマーセット
;
		LDX	<ENINDX
COLDXMV_020	EQU	$
		RTL
;
;************************************************************************
;*		initial ( シャボン玉 )					*
;************************************************************************
SOPB0IN		EQU	$
		RTL
;
;************************************************************************
;*		move ( シャボン玉 )					*
;************************************************************************
SOPB0CH		EQU	$
		WORD	03,03,02,02,02,02,02,02
		WORD	02,02,02,02,02,02,02,02
		WORD	02,02,02,02,01,00
;
SOPBXDW		EQU	$
		WORD	0FFF0H,00010H
		WORD	0FFE8H,00018H
		WORD	0FFE0H,00020H
		WORD	0FFD8H,00028H
SOPBPT		EQU	$
		WORD	01,02,00,02
;
SOPB0_CROS_PXS	EQU	$
		WORD	0FE00H,00200H
SOPB0_CROS_EXS	EQU	$
		WORD	0FE00H,00200H
;
SOPB0MV		EQU	$
		JSL	>ENMDCK		;mode check
;
		LDA	ENTIM0,X
		BNE	SOPB0MV_0050	;end ? ( no:SOPB0MV_0050 )
;
;------------------------------------------------------------------------
;-		プレイヤーショットシャボン玉				-
;------------------------------------------------------------------------
		LDA	ENTIM1,X
		BEQ	SOPB0MV_0550	;small bable ? ( no:SOPB0MV_0550 )
;
		LSR	A
		BEQ	SOPB0MV_0500	;big bable change ? ( yes:SOPB0MV_0500 )
;
		JSL	>SOPB0_CROSS_CK2
		BRA	SOPB0MV_0600
;
SOPB0MV_0500	EQU	$
		INC	A		;[ LDA	#01H ]
		STA	ENCHPT,X
 ;
;-------------- ＯＢＪ衝突チェック --------------------------------------
SOPB0MV_0550	EQU	$
		JSL	>SOPB0_CROSS_CK
;
;-------------- Ｘスピード減速 ------------------------------------------
SOPB0MV_0600	EQU	$
		LDA	RANDM0
		AND	#03H
		ASL	A
		LDY	ENXSPD+1,X
		BPL	SOPB0MV_0650
		INC	A
SOPB0MV_0650	EQU	$
		ASL	A
		TAY
		LDA	ENXSPD,X
		CLC
		ADC	!SOPBXDW,Y
		STA	ENXSPD,X
		EOR	!SOPBXDW,Y
		BMI	SOPB0MV_0700	;X speed 0 reset ? ( no:SOPB0MV_0700 )
;
		LDA	RANDM0
		AND	#06H
		CLC
		ADC	#04H
		STA	ENCONT,X	;bable type change counter set
		LDA	#(14-2)*4
		STA	ENTIM0,X	;"fuwa fuwa" set
;
;-------------- Ｙスピード減速 ------------------------------------------
SOPB0MV_0700	EQU	$
		LDA	ENYSPD,X
		CMP	#0FF80H
		BPL	SOPB0MV_0750
;
		LDA	RANDM0
		AND	#03H
		ASL	A
		ASL	A
		TAY
		LDA	ENYSPD,X
		CLC
		ADC	!SOPBXDW+2,Y
		STA	ENYSPD,X
;
SOPB0MV_0750	EQU	$
		RTL
;
;------------------------------------------------------------------------
;-		フワフワシャボン玉					-
;------------------------------------------------------------------------
SOPB0MV_0050	EQU	$
		STZ	ENXSPD,X	;X speed clear !!
;
		CMP	#1
		BNE	SOPB0MV_0100	;end ? ( no:SOPB0MV_0100 )
		JMP	>ENCLEAR	;enemy clear !!
;
SOPB0MV_0100	EQU	$
		BIT	#03H
		BNE	SOPB0_CROSS_CK	;pattern change ? ( no:SOPB0_CROSS_CK )
;
		LSR	A
		LSR	A
		ASL	A
		TAY
		LDA	!SOPB0CH,Y
		STA	ENCHPT,X	;pattern no. set
		DEC	A		;[ CMP #01 ]
		BEQ	SOPB0MV_0200	;Y pos hosei ? ( yes:SOPB0MV_0200 )
;
		DEC	A		;[ CMP #02]
		BNE	SOPB0MV_0250	;bable type change check pattern ? ( no:SOPB0MV_0250 )
;
;-------------- bable type change check ---------------------------------
		LDA	ENCONT,X
		BMI	SOPB0MV_0250	;bable type change ? ( no:SOPB0MV_0250 )
;
		DEC	ENCONT,X
		INC	<ENWRK0,X
		LDA	<ENWRK0,X
		AND	#03H
		ASL	A
		TAY
		LDA	!SOPBPT,Y
		STA	ENCHPT,X	;pattern no. set
		BRA	SOPB0MV_0250
;
;-------------- soap on bable Y pos hosei -------------------------------
SOPB0MV_0200	EQU	$
		DEC	ENYPSL,X	;Y pos dec !!
		DEC	ENYPSL,X
;
;-------------- "fuwa fuwa" move ----------------------------------------
SOPB0MV_0250	EQU	$
		LDA	RANDM0
		AND	#01H
		BNE	SOPB0MV_0260
		DEC	A		;[ LDA #0FFFFH ]
SOPB0MV_0260	EQU	$
		CLC
		ADC	ENXPSL,X
		STA	ENXPSL,X	;X pos change
;
;-------------- ＯＢＪ衝突チェック --------------------------------------
SOPB0_CROSS_CK	EQU	$
		LDY	ECRSFG,X
		BPL	SOPB0_CROSS_CK2 ;player cross ? ( no:SOPB0_CROSS_CK2 )
;
;-------------- プレイヤーと当たり ------------------------------
		LDY	EPXMUK,X
		LDA	!SOPB0_CROS_PXS,Y
		STA	PLMVSP
		LDA	#0FA00H
		STA	PLYSPD
		LDA	#P008
		STA	PLJUMP
		BRA	SOPB0_CLEAR
;
SOPB0_CROSS_CK2 EQU	$
		TXA
		STA	R1		;(R1) <-- 自分のインデックス
		M_CHIP	MY_ENCROS2
		LDX	<ENINDX
;
		LDY	R14
		BMI	SOPB0MV_0350	;敵と当たり？ ( no:SOPB0MV_0350 )
;
;-------------- 敵と当たり --------------------------------------
		LDA	ENMODE,Y
		CMP	#EMOVE
		BNE	SOPB0MV_0350	;VS enemy move ? ( yes:SOPB0MV_0350 )
		LDA	ENMOD2,Y
		AND	#0000000000100000B
		BEQ	SOPB0MV_0350	;bable change ok ? ( no:SOPB0MV_0350 )
;
		LDA	EPWIDX,Y
		ASL	A		;(C) <-- (N)
		LDA	#0FE00H
		BCS	SOPB0MV_0310
		LDA	#0200H
SOPB0MV_0310	EQU	$
		STA	ENXSPD,Y
		LDA	#0FC00H
		STA	ENYSPD,Y
		LDA	#020H
		STA	ENSHOT,Y
		LDA	#0
		STA	ENWRK0,Y
;
;-------------- シャボン玉割れる効果セット ------------------------------
SOPB0_CLEAR	EQU	$
		LDA	#03BH		;[♪]
		JSL	>SOUND_3_ON
;
		LDA	#AWASP		;(A) <-- exstra no.
		JSL	>EXINSR
		LDA	ENXPSL,X	;X pos set
		STA	EXXPSL,Y
		LDA	ENYPSL,X	;Y pos set
		STA	EXYPSL,Y
		LDA	#0AH		;initial counter set
		STA	EXWRK0,Y
		LDA	#02H		;   "    timer set
		STA	EXTIM0,Y
;
		JMP	>ENCLEAR	;enemy clear !!
;
SOPB0MV_0350	EQU	$
		RTL
;
;************************************************************************
;*		intial	( ski lift & yuki daruma on lift )		*
;************************************************************************
YKDLFIN		EQU	$
;
;-------------- lift on yuki daruma set -------------------------
		LDA	#YUKID		;(A) <-- enemy no.
		JSL	>ENINSR_I
		BCC	SKILFIN		;enemy area nothing ? ( yes:SKILFIN )
;
		INY
		TYA
		STA	ENWRK8,X	;yuki daruma on flag "ON" !!
;
		M8
;
		TXA
		STA	ENWRK3-1,Y	;yuki daruma lift on flag "ON" !!
;
		M16
;
		LDA	ENMOD2-1,Y	;画面外クリアー無しセット
		AND	#1111111111110011B
		STA	ENMOD2-1,Y
;
YKDHOSE		EQU	$
		LDA	ENXPSL,X	;X pos set
		STA	ENXPSL-1,Y
		LDA	ENYPSL,X	;Y pos set
		CLC
		ADC	#0DH
		STA	ENYPSL-1,Y
		LDA	ENXSPD,X
		STA	ENXSPD-1,Y
;
SKILFIN		EQU	$
		RTL
;
;************************************************************************
;*		move	( ski lift )					*
;************************************************************************
YUSENDT		EQU	$
		WORD	07H,05H
ONYSNDT		EQU	$
		WORD	06H,04H
;
LFENMAX		EQU	$
; lift move end muki --> [0]	[2]
		WORD	00080H,0FF80H
LFENADD		EQU	$
		WORD	0FFFCH,00004H
;
LFMSTRT		EQU	$-(UT00A6-UT00A2)*2
; lift move lope type -> [0/8]	[1/9]  [2/A]  [3/B]  [4/C]  [5/D]  [6/E]  [7/F]
		WORD	0FFF0H,00000H,0000FH,0FFFFH,0FFF8H,00000H,00008H,0000FH ;[00]
		WORD	00008H,0FFFFH,0001FH,0FFFFH,0000FH,0FFF0H,0FFE0H,00000H ;[08]
		WORD	00000H,00000H						;[10]
LFMSTEP		EQU	$-(UT00A6-UT00A2)*2
		WORD	00002H,00002H,0FFFEH,0FFFEH,00001H,00001H,00001H,0FFFFH ;[00]
		WORD	0FFFFH,0FFFFH,0FFFCH,0FFFCH,0FFFCH,00004H,00004H,00004H ;[08]
		WORD	00000H,00000H						;[10]
LFMXSPD		EQU	$-(UT00A6-UT00A2)*2
		WORD	000B5H,000B5H,000B5H,000B5H,000E4H,000E4H,000E4H,000E4H ;[00]
		WORD	000E4H,000E4H,00072H,00072H,00072H,00072H,00072H,00072H ;[08]
		WORD	00100H,00100H						;[10]
;
SKILFMV		EQU	$
YKDLFMV		EQU	$
		JSL	>DISPCK1	;画面外クリアーチェック
		BCC	SKLF002		;画面外クリアー？ ( no:SKLF002 )
;
		LDY	ENWRK8,X
		BEQ	SKLF000		;雪だるま乗ってる？ ( no:SKLF000 )
;
;-------------- 雪だるまクリアー ----------------------------------------
		DEY
		TYX
		JSL	>ENCLEAR
		LDX	<ENINDX
SKLF000		EQU	$
		RTL
;
SKLF002		EQU	$
		JSL	>ENMDCK		;mode check
;
;-------------- lift move BG check ------------------------------
;
		I16
;
		LDA	ENWRKC,X
		TAX
		LDA	>ENBGCK_UNIT_C,X
;
		I8
;
		LDX	<ENINDX
		SEC
		SBC	#UT00A2
		CMP	#02
		BCS	SKLF050		;lift move end wood ? ( no:SKLF050 )
;
;-------------- lift move end move ----------------------
		ASL	A
		TAY			;(Y) <-- lift move end muki ( 0:right 2:left )
		LDA	ENXSPD,X
		SEC
		SBC	!LFENMAX,Y
		EOR	!LFENMAX,Y
		BMI	SKLF010		;max X speed over ? ( no:SKLF010 )
		LDA	!LFENMAX,Y
		STA	ENXSPD,X
;
SKLF010		EQU	$
		LDA	!LFENADD,Y
		LDY	#00		;(Y) <-- muki
		CLC
		ADC	ENXSPD,X
		STA	ENXSPD,X
		BMI	SKLF020
		LDY	#02
SKLF020		EQU	$
		CLC
		ADC	#010H
		CMP	#020H
		STZ	ENCHPT,X
		BCS	SKLF030		;muki change pattern ? ( no:SKLF030 )
		INC	ENCHPT,X
SKLF030		EQU	$
		TYA
		STA	ENMUKI,X	;muki set
;
		LDA	ENYPSL,X	;Y pos hosei
		AND	#0FFF0H
		ORA	#00008H
		STA	ENYPSL,X
		BRA	SKLF100
;
;-------------- lift lope move --------------------------
SKLF050		EQU	$
		CMP	#UT00A6-UT00A2
		BCC	SKLF100		;lift move lope ? ( no:SKLF100 )
		CMP	#UT00B7-UT00A2+1
		BCS	SKLF100		;		"
;
		ASL	A
		TAY
;
		I16
;
		LDA	ENWRKC,X
		TAX
		LDA	>ENBGCK_X_C,X
		AND	#0FH
		STA	<EWORK0		;(EWK0,1) <-- X pos
;
		I8
;
		LDX	!LFMSTEP,Y
		STX	211BH
		LDX	!LFMSTEP+1,Y
		STX	211BH
		TAX
		STX	211CH
		LDX	<ENINDX
;
		LDA	ENYPSL,X
		CLC
		ADC	#08H
		AND	#0FH
		STA	<EWORK2		;(EWK2,3) <-- Y pos cross dot
		LDA	2134H
		CMP	#08000H		;(C) <-- (N)
		ROR	A
		CLC
		ADC	!LFMSTRT,Y
		CLC			;[ -1 ]
		SBC	<EWORK2
		BPL	SKLF100		;lope pos ok ? ( no:SKLF100 )
;
;-------------- lope move set -------------------
		LSR	<EWORK0
		LSR	<EWORK0
		LSR	<EWORK0		;(C) <-- X pos 0 or 1 ( "Goto Goto" )
		ADC	ENYPSL,X
		STA	ENYPSL,X	;Y pos hosei
		LDA	#0200H
		STA	ENYSPD,X	;down Y speed set
;
		LDA	!LFMXSPD,Y
		LDY	ENMUKI,X
		BNE	SKLF060
		EOR	#0FFFFH
		INC	A
SKLF060		EQU	$
		STA	ENXSPD,X	;lift move X speed set
;
;-------------- pri. set ----------------------------------------
SKLF100		EQU	$
		LDY	ENMUKI,X
		LDA	!YUSENDT,Y
		STA	ENYUSN,X	;OAM pri. set
;
;-------------- yuki daruma on check ----------------------------
		LDA	ENWRK8,X
		BEQ	SKLF108		;yuki daruma on ? ( no:SKLF108 )
;
;-------------- yuki daruma hosei !! --------------------
		LDA	!ONYSNDT,Y
		LDY	ENWRK8,X	;(Y) <-- yuki daruma index
		STA	ENYUSN-1,Y	;enemy OAM pri. set
		LDA	ENMUKI,X
		STA	ENMUKI-1,Y	;muki set
		LDA	ENYSPD,X
		BEQ	SKLF102
		ASL	A
		ROL	A
		AND	#01H
		INC	A
SKLF102		EQU	$
		STA	ENWRK4-1,Y	;up & down move flag set
		JMP	YKDHOSE		;pos hosei !!
;
;-------------- player cross check ------------------------------
SKLF108		EQU	$
		LDA	<ENWRK4,X
		BEQ	SKLF150		;player on ? ( no:SKLF150 )
;
		LDA	PLJUMP
		BEQ	SKLF110		;プレイヤージャンプ？ ( no:SKLF110 )
;
;-------------- 慣性セット ------------------------------
		LDA	PLMVSP
		BNE	SKLF109		;プレイヤーＸ移動？ ( yes:SKLF109 )
;
		LDA	ENXSPD,X
		EOR	<ENWRK4,X
		BMI	SKLF109		;慣性セットキャンセル？ ( yes:SKLF109 )
;
		LDA	ENMOVX,X	;player X pos hosei
		CLC
		ADC	PLXPSL
		STA	PLXPSL
		BRA	SKLF152
;
SKLF109		EQU	$
		STZ	<ENWRK4,X	;lift on check flag reset
;
		LDA	PLMVSP		;慣性スピードセット
		CLC
		ADC	ENXSPD,X
		STA	PLMVSP
		BRA	SKLF160
;
SKLF110		EQU	$
		STZ	<ENWRK4,X	;lift on check flag reset
;
		LDA	!ONYSNDT,Y	;   "   OAM pri. set
		STA	PLYUSN
;
		LDA	EPWIDX,X	;player X cross size change
		SEC
		SBC	ENMOVX,X
		STA	EPWIDX,X
;
;-------------- normal player lift on set ---------------
		LDA	ENMOVX,X	;player X pos hosei
		CLC
		ADC	PLXPSL
		STA	PLXPSL
		BRA	SKLF152
;
SKLF150		EQU	$
		LDA	PLJUMP
		BEQ	SKLF160		;player jump ? ( no:SKLF160 )
;
SKLF152		EQU	$
		LDA	PLYSPD
		BMI	SKLF160		;player jump up ? ( yes:SKLF160 )
;
		LDY	PLEATFG		;プレイヤー食われてる ?
		BNE	SKLF160		; yes: SKLF160
;
		LDA	EPWIDX,X
		CLC
		ADC	#014H
		CMP	#028H
		BCS	SKLF160		;player X pos cross ? ( no:SKLF160 )
;
		LDA	ENYPSL,X
		SEC
		SBC	PLYPSL
		CMP	#0FFF5H
		BCC	SKLF160		;foot cross ? ( no:SKLF160 )
;
;;;;		CLC
		STA	<EWORK0

		LDY	PONLFFG
		BEQ	SKLF158

		CPX	PONLFFG
		BNE	SKLF160

SKLF158		EQU	$
		STX	PONLFFG

		LDA	<EWORK0
		INC	A		;[ +1 ]
		ADC	PLYPSL		;player foot hosei !!
		STA	PLYPSL
		LDA	#0400H		;down Y speed set
		STA	PLYSPD
		INC	ONLFFG		;lift "ON" !!
		STZ	PLBGNO		;foot BG set
		LDA	ENXSPD,X
		STA	<ENWRK4,X	;lift on check flag "ON" !!
		RTL
;
SKLF160		EQU	$
		CPX	PONLFFG
		BNE	SKLF170

		STZ	PONLFFG

SKLF170		EQU	$
		RTL
;
;************************************************************************
;*		initial ( water lift )					*
;************************************************************************
;WTRLF_I_YREV	EQU	$
;		WORD	00000H,0FFF6H
;
		MEM16
		IDX8
WTRLFIN		EQU	$		;-- wtrlfin --
;
		M8
		LDA	#0100H-1	;水中スピード倍率セット
		STA	ENWTSP,X
		M16
;
		LDA	#00008H
		LDY	BG1TYP			;ふかんコース ?
		CPY	#003			;
		BEQ	WTRLFIN0100		; yes: WTRLFIN0100
		CPY	#00DH			;
		BNE	WTRLFIN0300		;  no: WTRLFIN0300

WTRLFIN0100	EQU	$
		LDA	#0FFF6H

WTRLFIN0300	EQU	$
		STA	ENBGYP,X
		STA	<ENCONT,X

;		LDA	ENXPSL,X
;		AND	#00010H
;		LSR	A
;		LSR	A
;		LSR	A
;		TAY
;		LDA	!WTRLF_I_YREV,Y
;		STA	<ENCONT,X
;		STA	ENBGYP,X

		RTL
;
;************************************************************************
;*		move	( water lift )					*
;************************************************************************
WTRLFMV		EQU	$		;-- wtrlfmv --
		JSL	>ENMDCK		;mode check

		LDY	ENWATR,X	;BG UNIT = WATER UNIT
		BEQ	WTRLFMV1000	;  no	WTRLFMV1000

		LDA	ENYSPD,X
		BPL	WTRLFMV1150

		STZ	<ENWRK0,X

		SEC
		SBC	#00008H		;at
		CMP	#0FF80H
		BCS	WTRLFMV1200

		LDA	#0FF80H
		BRA	WTRLFMV1200

WTRLFMV1000	EQU	$
		LDA	ENYSPD,X
		BMI	WTRLFMV1160

		STZ	<ENWRK0,X

		CLC
		ADC	#00008H		;at
		CMP	#00080H
		BCC	WTRLFMV1200

		LDA	#00080H
		BRA	WTRLFMV1200

WTRLFMV1150	EQU	$
		LSR	A
		LSR	A
		LSR	A

		EOR	#0FFFFH
		INC	A

		CLC
		ADC	#0FFFCH

		BRA	WTRLFMV1170

WTRLFMV1160	EQU	$
		EOR	#0FFFFH
		INC	A

		LSR	A
		LSR	A
		LSR	A

		CLC
		ADC	#00004H

WTRLFMV1170	EQU	$
		CLC
		ADC	<ENWRK0,X
		STA	<ENWRK0,X

		CLC
		ADC	ENYSPD,X

WTRLFMV1200	EQU	$
		STA	ENYSPD,X

		STZ	<ENWRK4,X	;lift on check flag clear

		LDA	PLYSPD		;player jump up ?
		BMI	WTRLFMV3000	; yes WTRLFMV3000

		LDA	PWIDEX
		CLC
		ADC	#00005
		ASL	A
		STA	<EWORK0
		LSR	A
		CLC
		ADC	EPWIDX,X	;player x pos cross ?
		CMP	<EWORK0		;
		BCS	WTRLFMV3000	; no  WTRLFMV3000

		LDA	EPWIDY,X
		SEC
		SBC	PWIDEY
		SEC
		SBC	#00010H
		CMP	#0FFF6H
		BCC	WTRLFMV3000

		INC	A
		SEC			;[+1]
		ADC	PLYPSL		;player foot hosei
		STA	PLYPSL

		LDA	ENBGYP,X	;沈んでる ?
		SEC			;
		SBC	<ENCONT,X	;
		BNE	WTRLFMV2700	; yes:	WTRLFMV2700

		LDA	#0FFF8H
		CLC
		ADC	<ENCONT,X
		STA	ENBGYP,X

		LDA	PLYSPD
		LSR	A
		CLC
		ADC	ENYSPD,X
		STA	ENYSPD,X

WTRLFMV2700	EQU	$
		LDA	#00100H		;down Y speed set
		STA	PLYSPD
		INC	ONLFFG		;lift "ON"
		STZ	PLBGNO		;foot BG set

		LDA	EPWIDX,X
		BNE	WTRLFMV2800
		INC	A

WTRLFMV2800	EQU	$
		ASL	A
		AND	#001FEH
		STA	<ENWRK4,X

		BRA	WTRLFMV4000

WTRLFMV3000	EQU	$
		LDA	ENBGYP,X
		SEC
		SBC	<ENCONT,X
		BEQ	WTRLFMV4000

		LDA	<ENCONT,X
		STA	ENBGYP,X

		LDA	ENYSPD,X
		SEC
		SBC	#00100H
		STA	ENYSPD,X

WTRLFMV4000	EQU	$

		RTL
;
;************************************************************************
;*		initial ( 草かげヘイホー )				*
;************************************************************************
KUSAHIN		EQU	$			;-- kusahin --
		LDY	#KUSAH_DUMMY
		STY	<ENWRK2,X
		RTL
;
;************************************************************************
;*		initial ( のーまるヘイホー )				*
;************************************************************************
;*		initial ( 地下ヘイホー )				*
;************************************************************************
HEIH0_I_CLOR	EQU	$
		WORD	0000+1,0002+1,0004+1,0008+1
;
HEIH0IN		EQU	$			;-- heih0in --
CHKH0IN		EQU	$			;-- chkh0in --
		STZ	ENWRKA,X

		LDA	ENWRKC,X		;はじめて ?
		BNE	HEIH0IN0100		;  no: HEIH0IN0100

		JSL	>DOKAN_CHECK		;セット位置は土管 ?
		BNE	HEIH0IN0100		;  no: HEIH0IN0100

		LDA	#0000000001100000B	;
		STA	ENMOD0,X		;
		LDA	#0100000000000000B
		STA	ENMOD1,X
		LDA	#0000000000000101B
		STA	ENMOD2,X
		LDA	#000FFH
		STA	ENYUSN,X
		STZ	ENGPOW,X
		LDA	ENXPSL,X
		CLC
		ADC	#00008
		STA	ENXPSL,X
		LDY	#HEIH0_RMODE88
		STY	<ENWRK2,X

		RTL

HEIH0IN0100	EQU	$
		JSL	>HEIH0_SET_CLOR

HEIH0IN0180	EQU	$
		JSL	>ICE_IN_CK

HEIH0IN0200	EQU	$
		LDA	#00018H
		STA	ENTIM0,X
		LDA	#00004H			;振り返り回数セット
		STA	<ENCONT,X		;
;		LDA	#00008H		;yuki course
;		STA	ENBGYP,X	;

		LDA	ENMYNO,X
		CMP	#HEIH0
		BEQ	HEIH0IN0800

		LDY	#002
		STY	<ENWRK4,X

HEIH0IN0800	EQU	$
		RTL
;
HEIH0_SET_CLOR	EQU	$
		LDA	ENWRKC,X		;はじめて ?
		BIT	#00001			;
		BNE	HEIH0IN0900		;  no: HEIH0IN0900

		LDA	ENXPSL,X
		AND	#00010H
		LSR	A
		LSR	A
		LSR	A
		STA	<EWORK0
		LDA	ENYPSL,X
		AND	#00010H
		LSR	A
		LSR	A
		ORA	<EWORK0
		TAY
		LDA	!HEIH0_I_CLOR,Y
		STA	ENWRKC,X

HEIH0IN0900	EQU	$
		AND	#000FEH
		ORA	#00020H
		STA	ENCLOR,X
;
		RTL
;
;************************************************************************
;*		move	( のーまるヘイホー )				*
;************************************************************************
;*		move	( 地下ヘイホー )				*
;************************************************************************
;*		move	( 草かげヘイホー )				*
;************************************************************************
;		ENWRK0	水車リフトの ROUTINE INDEX(SUB4)／頭だしチェックＹ　ＰＯＳ．(SUB50)
;B		ENWRK2	ROUTINE MODE INDEX
;B		ENWRK3	キャラパターンインデックス
;B		ENWRK4	回転キャラパターンインデックス／乗ってるリフトナンバー(SUB4)
;B		ENWRK5	地下ヘイホー炎キャラパターンインデックス
;		ENWRK6	プレイヤーに食われないよタイマー／前のフレームの乗ってるリフトの中心Ｘ　ＰＯＳ．(SUB4)
;		ENWRK8	SEARCH POINT ／回転角(SUB2)／前のフレームの乗ってるリフトの中心Ｙ　ＰＯＳ．(SUB4)
;		ENWRKA	回転角加算値／水車リフトのセットしたときのフレームカウンター(SUB4)
;		ENWRKC	ENCLOR
;
;		ENCONT	振り返り回数/ズーム方向フラグ／ジャンプ開始フラグ(SUB4)
;
;		ENTIM0	振り返り待ちタイマー
;		ENTIM2	プレイヤーチェックロックタイマー
;		ENTIM3	炎キャラパターンチェンジタイマー
;
HEIH0_SUB	EQU	$
		WORD	HEIH0_SUB0	;STOP ON GRAUND
		WORD	HEIH0_SUB1	;WALK OR TACKLE
HEIH0_2		EQU	$
		WORD	HEIH0_SUB2	;ごんごろんご
		WORD	HEIH0_SUB3	;あほーどりにつかまってる
		WORD	HEIH0_SUB4	;水車リフトに乗ってる
KUSAH_DUM	EQU	$
		WORD	DUMMY_SUB	;プレイヤー待ち
HEIH0_50	EQU	$
		WORD	HEIH0_SUB50	;土管から出てくる（顔だけ出す）
HEIH0_51	EQU	$
		WORD	HEIH0_SUB51	;土管から出てくる
HEIH0_88	EQU	$
		WORD	HEIH0_SUB88	;湧きだし
;
HEIH0_RMODE2	EQU	(HEIH0_2-HEIH0_SUB)/2
KUSAH_DUMMY	EQU	(KUSAH_DUM-HEIH0_SUB)/2
HEIH0_RMODE50	EQU	(HEIH0_50-HEIH0_SUB)/2
HEIH0_RMODE51	EQU	(HEIH0_51-HEIH0_SUB)/2
HEIH0_RMODE88	EQU	(HEIH0_88-HEIH0_SUB)/2
;
HEIH0MV		EQU	$			;-- heih0mv --
CHKH0MV		EQU	$			;-- chkh0mv --
KUSAHMV		EQU	$			;-- kusahmv --
		LDY	<ENWRK2,X		;湧きだし ?
		CPY	#HEIH0_RMODE88		;
		BEQ	HEIH0MV0200		; yes: HEIH0MV0200

		JSR	HEIH0_OAM_SET

		LDY	<ENWRK2,X		;ごろごろ ?
		CPY	#HEIH0_RMODE2		;
		BNE	HEIH0MV0200		;  no: HEIH0MV0200

		LDA	ENMODE,X
		SEC
		SBC	#EMOVE
		ORA	ENCOLD,X
		BNE	HEIH0MV0200

		LDA	ENSTFG
		ORA	BIRIBIRI
		ORA	ITEMNO
		BNE	HEIH0MV0900

		LDA	ENCBFG,X		;壁にあたった ?
		AND	#0000CH			;
		BEQ	HEIH0MV0300		;  no: HEIH0MV0300

		JMP	>ENDEATH_SET_3

HEIH0MV0200	EQU	$
		JSL	>ENMDCK			;mode check

HEIH0MV0300	EQU	$
		LDY	<ENWRK2,X
		TYA
		ASL	A
		TXY
		TAX
		JSR	(HEIH0_SUB,X)

		LDY	<ENWRK2,X		;湧きだし ?
		CPY	#HEIH0_RMODE88		;
		BEQ	HEIH0MV0900		; yes: HEIH0MV0900

		LDA	ENTIM2,X		;プレイヤーチェックロック ?
		BNE	HEIH0MV0800		; yes: HEIH0MV0800

		JSR	HEIH0_PLCHK
		JSR	HEIH0_ENCHK

HEIH0MV0800	EQU	$
		JSR	HEIH0_EAT_MOD

HEIH0MV0900	EQU	$

		RTL
;
HEIH0_EAT_MOD	EQU	$
		LDA	ENMOD0,X
		AND	#1111111110111111B
		LDY	<ENWRK2,X		;水車リフトに乗ってる ?
		CPY	#004			;
		BEQ	HEIH0_EAT_MOD01		; yes: HEIH0_EAT_MOD01
		LDY	ENWRK6,X		;食える ?
		BEQ	HEIH0_EAT_MOD01		; yes: HEIH0_EAT_MOD01

		DEC	ENWRK6,X
		ORA	#0000000001000000B

HEIH0_EAT_MOD01 EQU	$
		STA	ENMOD0,X

HEIH0_EAT_MOD02 EQU	$
HEIH0_O_SET0000 EQU	$

		RTS
;
CHKH0_FIRE_CHAR EQU	$
		WORD	0001BH,0001CH
;
HEIH0_OAM_SET	EQU	$
		LDA	ENTROB,X		;回転オブジェを使ってる ?
		BMI	HEIH0_O_SET0500		;  no: HEIH0_O_SET0500

		LDA	ENMODE,X
		CMP	#EEATM
		BNE	HEIH0_O_SET0200

		LDY	ENYUSN,X
		BMI	HEIH0_O_SET0300

HEIH0_O_SET0200 EQU	$
		LDY	ENCHPT+1,X		;ショットで回転してる ?
		BNE	HEIH0_O_SET0300		; yes: HEIH0_O_SET0300
		LDA	ENOAML,X
		BMI	HEIH0_O_SET0300

		JSL	>TROBJ_OAM_2x2

		I16
		LDY	ENOAML,X
		LDA	#08000H
		STA	SOAM_DX+0+8*1,Y
		STA	SOAM_DX+0+8*2,Y
		LDA	ENMOD2,X		;のーまるへいほー ?
		AND	#0010000000000000B	;
		BEQ	HEIH0_O_SET0300		; yes: HEIH0_O_SET0300

		LDA	#08000H
		STA	SOAM_DX+0+8*3,Y
		STA	SOAM_DX+0+8*4,Y

HEIH0_O_SET0300 EQU	$
		I8

		RTS

HEIH0_O_SET0500 EQU	$
		LDA	ENMODE,X
		CMP	#EMOVE
		BNE	HEIH0_O_SET0800
;		LDY	ENSHOT,X
;		BNE	HEIH0_O_SET0800

		LDA	ENCOLD,X
		BNE	HEIH0_O_SET0300

		LDY	<ENWRK2,X		;水車リフトに乗ってる ?
		CPY	#004			;
		BEQ	HEIH0_O_SET0530		; yes: HEIH0_O_SET0530

HEIH0_SP_OAM	EQU	$
		LDY	<ENWRK4,X		;のーまるへいほー ?
		BNE	HEIH0_O_SET0600		;  no: HEIH0_O_SET0600

HEIH0_O_SET0530 EQU	$

		I16				;足のカラーを一定にする
		LDY	ENOAML,X
		LDA	SOAM_DX+4+8*0,Y
		AND	#0F1FFH
		STA	SOAM_DX+4+8*0,Y
		LDA	SOAM_DX+4+8*1,Y
		AND	#0F1FFH
		STA	SOAM_DX+4+8*1,Y
		I8

HEIH0_O_SET0580 EQU	$

		RTS

HEIH0_O_SET0600 EQU	$
;		I16				;足のカラーを一定にする
;		LDY	ENOAML,X
;		LDA	SOAM_DX+4+8*1,Y
;		AND	#0F1FFH
;		STA	SOAM_DX+4+8*1,Y
;		LDA	SOAM_DX+4+8*2,Y
;		AND	#0F1FFH
;		STA	SOAM_DX+4+8*2,Y
;		I8

		LDY	<ENWRK5,X
		LDA	ENTIM3,X
		BNE	HEIH0_O_SET0700

		LDA	<RANDM0
		AND	#00003H
		INC	A
		INC	A
		STA	ENTIM3,X

		INY
		INY
		TYA
		AND	#00002
		TAY
		STY	<ENWRK5,X

HEIH0_O_SET0700 EQU	$
		LDA	!CHKH0_FIRE_CHAR,Y
		STA	<EWORK2

		I16
		LDY	ENOAML,X
		LDA	SOAM_DX+4+8*0,Y
		ORA	<EWORK2
		AND	#0F1FFH
		ORA	#00200H
		STA	SOAM_DX+4+8*0,Y
		I8

HEIH0_O_SET0800 EQU	$

		RTS
;
HEIH0_TO_GURU	EQU	$
		LDA	#00020H			;プレイヤーに食われないよタイマーセット
		STA	ENWRK6,X		;

		LDA	ENTROB,X
		BMI	HEIH0_TO_G0200

		JSL	>TROBJ_CLEAR

HEIH0_TO_G0200	EQU	$
		JSR	HEIH0_GURUGURU

		PHB
		PHK
		PLB
		JSR	HEIH0_ROT_SET
		PLB

		RTL
;
HEIH0_PLCHK	EQU	$
GABON_PLCHK	EQU	$
		LDY	ECRSFG,X		;プレイヤーとあたった ?
		BMI	HEIH0_PLCHK0200		; yes: HEIH0_PLCHK0200

		CPX	PONLFFG
		BNE	HEIH0_PLCHK0100

		STZ	PONLFFG

HEIH0_PLCHK0100 EQU	$

		RTS

HEIH0_PLCHK0200 EQU	$
		LDY	<ENWRK2,X
		LDA	ENMYNO,X		;がぼん ?
		CMP	#GABON			;
		BNE	HEIH0_PLCHK0300		;  no: HEIH0_PLCHK0300

;;;;;;		LDY	<ENWRK2,X		;ごろごろ中 ?
		CPY	#003			;
		BNE	HEIH0_PLCHK0500		;  no: HEIH0_PLCHK0500
		BRA	HEIH0_PLCHK0380		; yes: HEIH0_PLCHK0380

HEIH0_PLCHK0300 EQU	$
;;;;;;		LDY	<ENWRK2,X		;ごろごろ中 ?
		CPY	#HEIH0_RMODE2		;
		BNE	HEIH0_PLCHK0400		;  no: HEIH0_PLCHK0400

HEIH0_PLCHK0380 EQU	$
		PLA				;直接ＲＴＬ
		JMP	>ENDEATH_SET_3

HEIH0_PLCHK0400 EQU	$
		CPY	#KUSAH_DUMMY		;プレイヤー待ってる ?
		BNE	HEIH0_PLCHK0500		;  no: HEIH0_PLCHK0500

		JSR	KUSAH_CHANGE		;いったっきり！

HEIH0_PLCHK0500 EQU	$
		LDA	EPWIDY,X		;プレイヤーに上から踏まれた ?
		SEC				;
		SBC	PWIDEY			;
		SEC				;
		SBC	EWIDEY,X		;
		CMP	#0FFF8H			;
		BCS	HEIH0_PLCHK0700		; yes: HEIH0_PLCHK0700

		PLA				;直接ＲＴＬ
		JSL	>PLFLST_2		;いったっきり！

HEIH0_PLCHK0700 EQU	$
		PLA
		STA	<EWORK0
		JSL	>EPCRCK
		LDA	<EWORK0
		PHA
		RTS
;
HEIH0_KIND_CHK	EQU	$
		JSR	GABON_ENCHK

		RTL
;
HEIH0_ENCHK	EQU	$
GABON_ENCHK	EQU	$
		TXA
		STA	R1
		M_CHIP	MY_ENCROS2

HEIH0_ENCHK0040 EQU	$
		LDX	<ENINDX
		LDY	R14
		BMI	HEIH0_ENCHK0010
;		CPY	#BABY_INDEX
		BNE	HEIH0_ENCHK0080

HEIH0_ENCHK0010 EQU	$

		RTS

HEIH0_ENCHK0020 EQU	$
		LDX	#BANK MY_ENCROS2
		LDA	R15
		JSL	>CHIPON
		BRA	HEIH0_ENCHK0040

HEIH0_ENCHK0080 EQU	$
		LDA	ENMYNO,X		;がぼん ?
		CMP	#GABON			;
		BNE	HEIH0_ENCHK0085		;  no: HEIH0_ENCHK0085

		LDA	<ENWRK2,X		;ごろごろ中 ?
		AND	#000FFH			;
		CMP	#003			;
		BNE	HEIH0_ENCHK0088		;  no: HEIH0_ENCHK0088
		JMP	HEIH0_ENCHK1000		; yes: HEIH0_ENCHK1000

HEIH0_ENCHK0085 EQU	$
		LDA	<ENWRK2,X		;ごろごろ中 ?
		AND	#000FFH			;
		CMP	#HEIH0_RMODE2		;
		BNE	HEIH0_ENCHK0088		;  no: HEIH0_ENCHK0088
		JMP	HEIH0_ENCHK1000		; yes: HEIH0_ENCHK1000

HEIH0_ENCHK0088 EQU	$
		LDA	ENMOD0,Y		;あたってもいいやつ ?
		AND	#0000001000000000B	;
		BEQ	HEIH0_ENCHK0020		;  no: HEIH0_ENCHK0020

HEIH0_K_C_SB	EQU	$
		LDA	ENMODE,Y		;当たってきたやつショットされてた ?
		CMP	#EMOVE			;
		BNE	HEIH0_ENCHK0020		;
		LDA	ENSHOT,Y		;
		BEQ	HEIH0_ENCHK0020		;  no: HEIH0_ENCHK0010

		LDA	ENMYNO,Y
		CMP	#MATO0
		BEQ	HEIH0_ENCHK0020
		CMP	#HEIH0
		BEQ	HEIH0_ENCHK0089
		CMP	#KUSAH
		BEQ	HEIH0_ENCHK0089
		CMP	#CHKH0
		BEQ	HEIH0_ENCHK0089
		CMP	#GABON
		BNE	HEIH0_ENCHK0090

HEIH0_ENCHK0089 EQU	$
		TYX
		JSL	>ENDEATH_SET_3
		PLA		;直接ＲＴＬ
		JMP	>ENDEATH_SET_3

HEIH0_ENCHK0090 EQU	$
		LDA	ENXSPD,Y
		PHP
		LDA	#00200H
		PLP
		BPL	HEIH0_ENCHK0100

		LDA	#0FE00H

HEIH0_ENCHK0100 EQU	$
		STA	ENXSPD,X

		TYX				;当たってきたやつ殺す
		JSL	>SHOT_EN_KILL		;

		LDA	#0FF00H
		STA	ENYSPD,X
		LDA	#00067H			;［Ｓ］
		JSL	>SOUND_3_ON

HEIH0_GURUGURU	EQU	$
		LDA	#00001
		STA	ENSHOT,X

		LDA	#0FFF0H
		STA	ENWRKA,X
		LDA	ENXSPD,X
		BEQ	HEIH0_ENCHK0200

		LDA	ENMUKI,X
		DEC	A
		EOR	ENXSPD,X
		BPL	HEIH0_ENCHK0200

		LDA	#00010H
		STA	ENWRKA,X

HEIH0_ENCHK0200 EQU	$
		STZ	ENXMAX,X
		STZ	ENXPOW,X

		LDY	#HEIH0_RMODE2		;ごろごろに
		LDA	ENMYNO,X
		CMP	#GABON
		BNE	HEIH0_ENCHK0300

		LDY	#003

HEIH0_ENCHK0300 EQU	$
		STY	<ENWRK2,X		;

		LDA	#00040H
		STA	ENGPOW,X
		LSR	A		;[ LDA	#020H ]
		ORA	ENCLOR,X		;すべてのＢＧの前に
		STA	ENCLOR,X		;
		LDA	#00005
		STA	ENCHPT,X
		LDA	ENMYNO,X		;水車リフトに乗ってたヘイホー用処理
		CMP	#HEIH0			;
		BNE	HEIH0_ENCHK0500		;
						;
		STZ	<ENWRK4,X		;
						;
HEIH0_ENCHK0500 EQU	$			;
		LDA	#0000100001000001B	;ＢＧチェック有り
		STA	ENMOD1,X		;

		STZ	ENWRK8,X		;回転角クリア
		JSL	>TROBJ_SR_2x2		;
		BCS	HEIH0_ENCHK0800		;

		LDA	ENCLOR,X
		ORA	#00080H
		STA	ENCLOR,X
		STZ	ENCHPT,X

HEIH0_ENCHK0800 EQU	$

		RTS

HEIH0_ENCHK1000 EQU	$
		LDA	ENMODE,Y		;はねてもいい ?
		CMP	#EMOVE			;
		BNE	HEIH0_ENCHK1040		;  no: HEIH0_ENCHK1040

		LDA	ENMOD1,Y		;敵 ?
		AND	#0110000000000000B	;
		BEQ	HEIH0_ENCHK1080		; yes: HEIH0_ENCHK1080

HEIH0_ENCHK1040 EQU	$
		JMP	HEIH0_ENCHK0020

HEIH0_ENCHK1080 EQU	$
		LDA	ENMOD0,Y		;投げた敵に当たる ?
		AND	#0000000000100000B	;
		BNE	HEIH0_ENCHK1040		;  no: HEIH0_ENCHK1040

		LDA	ENMYNO,Y
		CMP	#MATO0
		BEQ	HEIH0_ENCHK1040
		JMP	HEIH0_ENCHK0089
;
KUSAH_CHANGE	EQU	$
		LDA	BABYNO			;プレイヤー赤ちゃん乗せてる ?
		BPL	KUSAH_CHG0800		;  no: KUSAH_CHG0800

		LDA	NOSEIDX			;先客がいる ?
		BEQ	KUSAH_CHG0100		;  no: KUSAH_CHG0100
		BPL	KUSAH_CHG0800		; yes: KUSAH_CHG0800

KUSAH_CHG0100	EQU	$
		JSL	>BABYM_SHABN_C3

KUSAH_CHG0300	EQU	$
		LDA	#DOROB
		JSL	>ENINSR
		BCC	KUSAH_CHG0600

		LDA	ENXPSL,X		;中身Ｘ　ＰＯＳ．セット
		STA	ENXPSL,Y		;
		STA	<EWORK4			;

		LDA	ENYPSL,X		;中身Ｙ　ＰＯＳ．セット
		STA	ENYPSL,Y		;
		STA	<EWORK6			;

		JSL	>DOROB_SET

KUSAH_CHG0600	EQU	$
		LDA	#ENOSE
		STA	ENMODE,X
		TXA
		STA	NOSEIDX

		LDA	#08000H			;敵のせ情報フラグセット
		STA	ENMYNSFG

		LDA	#0FFFFH		;ほかのもんはプレイヤーに乗れなくする
		STA	ONENFG		;

		LDA	#00020H			;赤ちゃんアイテムフラグクリアタイマーセット
		STA	BABYITCLR		;

KUSAH_CHG0800	EQU	$
		PLA
		PLA
		RTL
;
DOROB_SET	EQU	$
		LDA	EPXMUK,X		;向きセット
		AND	#000FFH			;
		STA	ENMUKI+BABY_INDEX
		EOR	#00002			;
		STA	ENMUKI,Y		;

		LDA	#00000			;キャラパターンナンバーセット
		STA	ENCHPT,Y
		STA	ENWRK0,Y		;アイテムのオフセットＰＯＳ．セット

		M8
		LDA	#DOROB_RMODE6		;routine mode index set
		STA	ENWRK2,Y
		M16

		STY	<ENWRK0+BABY_INDEX
		LDA	<EWORK4			;Ｘ　ＰＯＳ．セット
		STA	ENXPSL+BABY_INDEX	;
		LDA	<EWORK6			;Ｙ　ＰＯＳ．セット
		SEC				;
		SBC	#0000EH			;
		STA	ENYPSL+BABY_INDEX	;

		TYX
		JSL	>BABYM_SHABN_C2
		LDX	<ENINDX

		RTL
;
HEIH0_XMAX	EQU	$
		WORD	0FEF4H,0010CH
		WORD	0FFA7H,00059H
;
HEIH0_SUB0	EQU	$
ARIH0_SUB0	EQU	$
		TYX

		LDA	ENCBFG,X
		LSR	A
		BCC	HEIH0_SUB0080

		STZ	ENXSPD,X

HEIH0_SUB0080	EQU	$
		LDA	ENTIM0,X		;振り返る ?
		BNE	HEIH0_SUB0100		;  no: HEIH0_SUB0100

		DEC	<ENCONT,X		;振り返りおわり ?
		BEQ	HEIH0_SUB0200		; yes: HEIH0_SUB0200

		LDA	#00018H			;振り返り待ちタイマーセット
		STA	ENTIM0,X		;

		LDA	ENMUKI,X		;キャラ向き反転
		EOR	#00002H			;
		STA	ENMUKI,X		;

HEIH0_SUB0100	EQU	$

		RTS

HEIH0_SUB0200	EQU	$
		LDA	<RANDM0			;
		AND	#00003H			;
		BNE	HEIH0_SUB0300		;

		LDY	EPXMUK,X		;キャラ向きセット
		TYA
		STA	ENMUKI,X		;

HEIH0_SUB0300	EQU	$
;		LDA	EPXMUK,X		;プレイヤーサーチできる ?
;		AND	#000FFH			;
;		CMP	ENMUKI,X		;
;		BNE	HEIH0_SUB0400		; fail search: HEIH0_SUB0400
;
;		TAY
;		LDA	EPWIDX,X		;プレイヤーサーチできる ?
;		CLC				;
;		ADC	#00050H			;
;		CMP	#000A0H			;
;		BCS	HEIH0_SUB0400		; fail search: HEIH0_SUB0400
;
;		LDA	EPWIDY,X		;プレイヤーサーチできる ?
;		CLC				;
;		ADC	#00030H			;
;		CMP	#00060H			;
;		BCS	HEIH0_SUB0400		; fail search: HEIH0_SUM0400
;
;		LDA	PLXPSL			;目標地セット
;		STA	ENWRK8,X		;
;
;		LDA	!HEIH0_XMAX,Y		;X MAX SPEED セット
;		STA	ENXMAX,X		;
;
;		LDA	#0000BH			;X POWER セット
;		BRA	HEIH0_SUB0600
;
;HEIH0_SUB0400	EQU	$
		LDY	ENMUKI,X
		LDA	!HEIH0_XMAX+4,Y		;X MAX SPEED セット
		STA	ENXMAX,X		;

		LDA	<RANDM0			;目標地セット
		AND	#0001FH			;
		CLC				;
		ADC	#00020H			;
		CPY	#000			;
		BNE	HEIH0_SUB0500		;
						;
		EOR	#0FFFFH			;
		INC	A			;
						;
HEIH0_SUB0500	EQU	$			;
		CLC				;
		ADC	ENXPSL,X		;
		STA	ENWRK8,X		;

		LDA	#00005H			;X POWER セット

HEIH0_SUB0600	EQU	$
		STA	ENXPOW,X		;

		INC	<ENWRK2,X		;routine mode index inc.

		RTS
;
ARIH0_TIMER	EQU	$
		WORD	00004H,00008H
HEIH0_S1_TIM1	EQU	$
;ENWRK3 =		[0] [1] [2] [3] [4] [5] [6]
		HEX	002,002,003,003,003,003,002
		HEX	001,001,002,002,002,002,001
HEIH0_S1_ENCH	EQU	$
		HEX	000,003,000,002,004,001,002
;
HEIH0_SUB1	EQU	$
ARIH0_SUB1	EQU	$
		TYX

		LDA	ENCBFG,X		;side BG = 壁 ?
		BIT	#0000CH			;
		BNE	HEIH0_SUB1700		; yes: HEIH0_SUB1700

		AND	#00001			;foot BG = 床 or 坂 ?
		STA	<EWORK0			;
		LDY	ENSLOP,X		;
		TYA				;
		ORA	<EWORK0			;
		BEQ	HEIH0_SUB1700		;  no: HEIH0_SUB1700

		LDA	ENXPSL,X		;目標の場所に着いた ?
		SEC				;
		SBC	ENWRK8,X		;
		CLC				;
		ADC	#00008H			;
		CMP	#00010H			;
		BCC	HEIH0_SUB1700		; yes: HEIH0_SUB1700

		LDA	ENTIM1,X
		BNE	HEIH0_SUB1600

		LDA	ENMYNO,X
		CMP	#ARIH0
		BNE	HEIH0_SUB1300

		LDY	#000
		LDA	ENXPOW,X		;ヘイホー歩いてる ?
		CMP	#00005			;
		BNE	HEIH0_SUB1200		;  no: HEIH0_SUB1200

		INY
		INY

HEIH0_SUB1200	EQU	$
		LDA	!ARIH0_TIMER,Y
		STA	ENTIM1,X

		LDA	ENCHPT,X
		EOR	#00001H
		STA	ENCHPT,X

		RTS

HEIH0_SUB1300	EQU	$
		INC	<ENWRK3,X
		LDY	<ENWRK3,X
		CPY	#007
		BMI	HEIH0_SUB1400

		LDY	#000
		STY	<ENWRK3,X

HEIH0_SUB1400	EQU	$
		LDA	!HEIH0_S1_ENCH,Y
		AND	#000FFH
		STA	ENCHPT,X
		LDA	ENXPOW,X		;歩いてる ?
		CMP	#00005			;
		BEQ	HEIH0_SUB1500		; yes: HEIH0_SUB1500

		TYA
		CLC
		ADC	#007
		TAY

HEIH0_SUB1500	EQU	$
		LDA	!HEIH0_S1_TIM1,Y
		AND	#000FFH
		STA	ENTIM1,X

HEIH0_SUB1600	EQU	$

		RTS
;
HEIH0_SUB1700	EQU	$
		LDA	#00018H			;振り返り待ちタイマーセット
		STA	ENTIM0,X

		LDA	<RANDM0			;振り返り回数セット
		AND	#00001H			;
		CLC				;
		ADC	#00003H			;
		STA	<ENCONT,X		;

		LDY	#000			;キャラパターンフラグクリア
		STY	<ENWRK3,X		;
		STZ	ENCHPT,X
		STZ	ENXSPD,X		;X SPEED クリア
		STZ	ENXPOW,X		;X POWER クリア
		STZ	<ENWRK2,X		;WRK2(routine mode index) <- 0 WRK3(キャラパターンフラグ) <- 0

		RTS
;
HEIH0_CHAR	EQU	$
		WORD	CIPCHD+6020H+000
		WORD	CIPCHD+2040H+000
;
HEIH0_SUB2	EQU	$
GABON_SUB3	EQU	$
		TYX

		LDA	ENTROB,X
		BMI	HEIH0_SUB2800

HEIH0_ROT_SET	EQU	$
		LDA	ENWRK8,X		;(R5) <- 回転角セット
		SEC
		SBC	ENWRKA,X
		AND	#000FFH
		STA	ENWRK8,X
		STA	R5

		LDA	ENMYNO,X
		CMP	#GABON
		BNE	HEIH0_SUB2500

		LDA	#CIPCHD+20B0H+000	;(R12) <-- 転送元アドレスセット
		LDY	#BANK CIPCHD+20B0H+000	;(R13) <-- 転送元バンクセット
		BRA	HEIH0_SUB2600

HEIH0_SUB2500	EQU	$
		LDY	<ENWRK4,X
		LDA	HEIH0_CHAR,Y		;(R12) <-- 転送元アドレスセット
		LDY	#BANK CIPCHD+6020H+000	;(R13) <-- 転送元バンクセット

HEIH0_SUB2600	EQU	$
		STA	R12			;
		TYA				;
		STA	R13			;

		LDA	#00100H			;(R6) <- 倍率セット
		STA	R6			;

		LDY	ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_X,X		;(R3) <- ビットマップ座標＿Ｘセット
		STA	R3			;
		LDA	>TROBJ_PLOT_Y,X		;(R2) <- ビットマップ座標＿Ｙセット
		STA	R2			;
;
;-------------- OBJ mode 7 set ----------------------------------
		M_CHIP	C_16_ROTZOM

		LDX	<ENINDX

		INC	OBM7WF		;mode 7 OBJ chara DMA "ON"

HEIH0_SUB2800	EQU	$

		RTS
;
HEIH0_SUB3	EQU	$
		TYX

		LDA	ENCBFG,X
		AND	#0001FH
		BEQ	HEIH0_SUB3800

		LDA	#00040H
		STA	ENGPOW,X
		JSR	HEIH0_SUB1700

HEIH0_SUB3800	EQU	$

		RTS
;
HEIH0_SUB4	EQU	$
		TYX

		PLA
		STA	<EWORK0
		JSL	>SMUCH_MILL2_CHK
		LDA	<EWORK0
		PHA

		LDA	ENTIM0,X		;ストップ ?
		ORA	ENGPOW,X		;リフトの上でじっとしてる ?
		BNE	HEIH0_SUB4800		; yes: HEIH0_SUB4800

		LDY	<ENCONT,X		;ジャンプする ?
		BNE	HEIH0_SUB4300		; yes: HEIH0_SUB4300

		LDA	<RANDM0
		AND	#00018H
		CLC
		ADC	#00020H			;ストップタイマーセット
		STA	ENTIM0,X		;
		INC	<ENCONT,X
		RTS

HEIH0_SUB4300	EQU	$
		LDA	#0FE00H
		STA	ENYSPD,X
		LDA	#00040H
		STA	ENGPOW,X
		STZ	<ENCONT,X

HEIH0_SUB4800	EQU	$

		RTS
;
HEIH0_SUB50	EQU	$
		TYX

		LDA	ENTIM1,X		;ストップ ?
		BNE	HEIH0_SUB50800		; yes: HEIH0_SUB50800

		LDA	ENYSPD,X		;止まってる ?
		BEQ	HEIH0_SUB50500		; yes: HEIH0_SUB50500

		LDA	<ENWRK0,X		;所定の位置まで来た ?
		CMP	ENYPSL,X		;
		BMI	HEIH0_SUB50800		;  no: HEIH0_SUB50800

		STA	ENYPSL,X

		STZ	ENYSPD,X
		LDA	#00020H
		STA	ENTIM1,X
		RTS

HEIH0_SUB50500	EQU	$
		LDA	#0FC00H
		STA	ENYSPD,X
		LDA	#00040H
		STA	ENGPOW,X
		LDA	#00077H			;［Ｓ］
		JSL	>SOUND_3_ON

		INC	<ENWRK2,X

HEIH0_SUB50800	EQU	$

		RTS
;
HEIH0_S51_XSPD	EQU	$
		WORD	0FF00H,00100H
;
HEIH0_SUB51	EQU	$
		TYX

		LDY	ENYSPD+1,X		;上昇中 ?
		BMI	HEIH0_SUB51500		; yes: HEIH0_SUB51500

		LDA	ENCBFG,X		;空中 ?
		LSR	A			;
		BCC	HEIH0_SUB51800		; yes: HEIH0_SUB51800

		STZ	ENXSPD,X
		STZ	<ENWRK2,X

		RTS

HEIH0_SUB51500	EQU	$
		LDA	ENXSPD,X
		BNE	HEIH0_SUB51800

		LDA	ENXPSL,X
		CLC
		ADC	#00008
		STA	R8
		LDA	ENYPSL,X
		CLC
		ADC	#0000FH
		JSL	>DOKAN_CHECK2		;土管 ?
		BEQ	HEIH0_SUB51800		; yes: HEIH0_SUB51800

		STZ	<ENWRK0,X
		LDA	#0000111010000001B	;ＢＧチェック有り
		STA	ENMOD1,X		;
		LDY	ENMUKI,X
		LDA	!HEIH0_S51_XSPD,Y
		STA	ENXSPD,X

HEIH0_SUB51800	EQU	$
HEIH0_SUB88000	EQU	$

		RTS
;
HEIH0_SUB88	EQU	$
		TYX

		LDA	ENTIM0,X		;湧きだす ?
		ORA	PLSTFG			;
		ORA	PLMODE			;
		BNE	HEIH0_SUB88000		;  no: HEIH0_SUB88000

		LDA	EPWIDX,X		;プレイヤーが近くにいすぎる ?
		CLC				;
		ADC	#0001CH			;
		CMP	#00038H			;
		BCS	HEIH0_SUB88300		;  no: HEIH0_SUB88300
		LDA	EPWIDY,X		;
		CLC				;
		ADC	#00021H			;
		CMP	#00042H			;
		BCC	HEIH0_SUB88700		; yes: HEIH0_SUB88700

HEIH0_SUB88300	EQU	$
		M_CHIP	HEIHO_COUNTER		;タマゴ＋ヘイホー類が６個以上ある ?
		LDX	<ENINDX			;
		LDA	R6			;
		CMP	#00006+1		;
		BPL	HEIH0_SUB88700		; yes: HEIH0_SUB88700

		LDX	<ENINDX
		LDA	ENMYNO,X
		JSL	>ENINSR
		BCC	HEIH0_SUB88800

		LDA	ENXPSL,X
		STA	ENXPSL,Y
		CLC
		ADC	#00008
		STA	ECENTX,Y
		LDA	ENYPSL,X
		STA	ENYPSL,Y
		SEC
		SBC	#00006H
		STA	ENWRK0,Y
		CLC
		ADC	#00008+06
		STA	ECENTY,Y
		M8
		LDA	EPXMUK,X
		STA	ENMUKI,Y
		M16
		LDA	#0FF00H
		STA	ENYSPD,Y
		LDA	#00000
		STA	ENGPOW,Y
		LDA	#0000111010000000B	;ＢＧチェックなし
		STA	ENMOD1,Y		;
		TYX
		LDY	#HEIH0_RMODE50
		STY	<ENWRK2,X
		JSL	>HEIH0_SET_CLOR
		JSL	>HEIH0IN0200
		LDA	#00076H			;［Ｓ］
		JSL	>SOUND_3_ON

HEIH0_SUB88700	EQU	$
		LDX	<ENINDX
		LDA	#00040H*3		;湧きだしストップタイマーセット
		STA	ENTIM0,X		;

HEIH0_SUB88800	EQU	$

		RTS
;
HEIH0_DEATH_CHK EQU	$
		LDA	ENMYNO,X		;へいほー類 ?
		CMP	#HEIH0			;
		BEQ	HEIH0_D_C0100		;
		CMP	#CHKH0			;
		BEQ	HEIH0_D_C0100		; yes: HEIH0_D_C0100
		CMP	#KUSAH			;
		BEQ	HEIH0_D_C0100
		CMP	#GABN2
		BEQ	HEIH0_D_C0100
		CMP	#GABON

HEIH0_D_C0100	EQU	$

		RTL
;
;************************************************************************
;*		fail ( ヘイホー )					*
;************************************************************************
HEIH0FL		EQU	$
		JSR	HEIH0_SP_OAM

		LDA	#00001
		STA	ENCHPT,X
		JMP	>ENFAIL_FALL

;		LDY	<ENWRK2,X		;土管湧き出しでまだ土管の中にいたときにやられた ?
;		CPY	#HEIH0_RMODE50		;
;		BEQ	HEIH0FL0100		; yes: HEIH0FL0100
;		CPY	#HEIH0_RMODE51		;
;		BNE	HEIH0FL0200		;  no: HEIH0FL0200
;
;		LDA	<ENWRK0,X		;土管からすでに出ている ?
;		BEQ	HEIH0FL0200		; yes: HEIH0FL0200
;
;HEIH0FL0100	EQU	$
;		LDA	<ENWRK0,X		;土管の中に隠れた ?
;		CLC				;
;		ADC	#00006+1		;
;		CMP	ENYPSL,X		;
;		BPL	HEIH0FL0200		;  no: HEIH0FL0200
;
;		JMP	>ENCLEAR
;
;HEIH0FL0200	EQU	$
;		LDA	#00001
;		STA	ENCHPT,X
;		JMP	>ENFAIL_FALL
;
;************************************************************************
;*		nose ( 草かげヘイホー )					*
;************************************************************************
KUSAHNS		EQU	$			;-- kusahns --
		JSR	K_PLDMG_CHK
		JSR	K_BABY_CHK

		RTL
;
K_PLDMG_CHK	EQU	$
		LDA	PLFLSH
;;;;;;;;		CMP	#000A7H
		CMP	#000A7H-20H
		BNE	K_PLDMG_CHK0800

		LDA	#0FFFFH
		STA	NOSEIDX

		BRA	K_MOVE_RETURN
;
KUSAH_NS_XSPD	EQU	$
		WORD	00100H,0FF00H
;
K_BABY_CHK	EQU	$
		LDA	BABYNO			;赤ちゃん乗ってきた ?
		BPL	K_BABY_CHK0800		;  no: K_BABY_CHK0800

K_MOVE_RETURN	EQU	$
		LDA	#EMOVE
		STA	ENMODE,X
		LDA	#00040H			;プレイヤーチェックロックタイマーセット
		STA	ENTIM2,X		;
		LDA	#00018H
		STA	ENTIM0,X
		LDA	#00004H			;振り返り回数セット
		STA	<ENCONT,X		;
		STZ	<ENWRK2,X		;WRK2(routine mode index) <- 0 WRK3(キャラパターンフラグ) <- 0
		LDA	#HEIH0
		STA	ENMYNO,X
		LDA	#00001			;ENCLORセット
		STA	ENWRKC,X		;
		STA	ENSHOT,X
		ASL	A		;[ LDA	#00002 ]
		EOR	PLCMKI
		TAY
		LDA	!KUSAH_NS_XSPD,Y
		STA	ENXSPD,X
		LDA	#0FE00H
		STA	ENYSPD,X
		STZ	ENMYNSFG		;敵のせ情報フラグクリア

K_BABY_CHK0800	EQU	$
K_PLDMG_CHK0800 EQU	$

		RTS
;
;************************************************************************
;*		initial ( アリホー )					*
;************************************************************************
ARIH0IN		EQU	$			;-- arih0in --
		LDA	#00018H
		STA	ENTIM0,X
		LDA	#00004H			;振り返り回数セット
		STA	<ENCONT,X		;

		LDA	ENWRKA,X		;食われた後 ?
		BPL	ARIH0IN0300		;  no: ARIH0IN0300

		JSL	>TROBJ_SR_4x4
		BCC	ARIH0IN0500

		LDA	ENWRKA,X
		EOR	#0FFFFH
		INC	A
		STA	ENWRK6,X
		LDA	#0010000001111001B	;ＯＡＭセット２ー＞４
		STA	ENMOD2,X
		LDA	#00002
		STA	ENCHPT,X
		LDY	#006
		STY	<ENWRK2,X
		JSR	ARIH0_ZOMSET
		LDA	CCWORK10
		BRA	ARIH0IN0500

ARIH0IN0300	EQU	$
		LDA	#001FFH			;初期倍率セット
		STA	ENWRK6,X

		LDA	#0001EH			;プレイヤーＹ　ＰＯＳ．補正値セット

ARIH0IN0500	EQU	$
		STA	ENWRKA,X

		JMP	>HEIH0_SET_CLOR
;
;************************************************************************
;*		move	( アリホー )					*
;************************************************************************
;		ENWRK0	CHAR. PAT. CHANGE COUNTER
;		ENWRK2	ROUTINE MODE INDEX
;		ENWRK4	プレイヤーＸ　ＳＰＥＥＤ
;		ENWRK6	倍率
;		ENWRK8	のびのびフラグ（０．．．のび　１．．．ちぢみ）
;		ENWRKA	プレイヤーＹ　ＰＯＳ．補正値
;		ENWRKC	ENCLOR
;
;		ENCONT	振り返り回数
;
;		ENTIM2	サーチロックタイマー
;
ARIH0_SUB	EQU	$
		WORD	ARIH0_SUB0	;とまってる
		WORD	ARIH0_SUB1	;うごいてる
		WORD	ARIH0_SUB2	;FUMARETA
		WORD	ARIH0_SUB3	;FUMARETA
		WORD	ARIH0_SUB4	;FUMARETA
		WORD	ARIH0_SUB5	;FUMARETA
		WORD	ARIH0_SUB6	;ゆっくりもともどり
;
ARIH0MV		EQU	$			;-- arih0mv --
		LDA	ENTROB,X		;回転エリアＵＳＥ ?
		BMI	ARIH0MV0100		;  no: ARIH0MV0100

		JSL	>TROBJ_OAM_4x4

ARIH0MV0100	EQU	$
		LDA	ENMODE,X
		CMP	#EEATM
		BNE	ARIH0MV0300
		LDY	ENYUSN,X
		BPL	ARIH0MV0300

		LDA	ENTROB,X
		BMI	ARIH0MV0300

		LDA	ENWRK6,X
		EOR	#0FFFFH
		INC	A
		STA	ENWRKA,X

ARIH0MV0300	EQU	$
		JSL	>ENMDCK		;mode check
;
		TXY
		LDA	<ENWRK2,X
		ASL	A
		TAX
		JSR	(ARIH0_SUB,X)

		STZ	<EWORK2
		JSR	ARIH0_PLCHK		;プレイヤーに踏まれた ?
		BCC	ARIH0MV0800		;  no: ARIH0MV0800

		JSL	>TROBJ_SR_4x4
		BCC	ARIH0MV0800

		LDA	#0010000001111001B	;ＯＡＭセット２ー＞４
		STA	ENMOD2,X

		LDA	#00002
		STA	ENCHPT,X
		STA	<ENWRK2,X

		RTL

ARIH0MV0800	EQU	$
		JMP	>SHOT_EN_KILL_S2
;
SUIKT_XSPD	EQU	$
		WORD	0FC00H,00400H
SUIKT_XREV	EQU	$
		WORD	0FFF8H,00008H
;
ARIH0_SUB2	EQU	$
		TYX
		PLA

		LDA	ENWRK6,X		;倍率計算
		SEC				;
		SBC	#00020H			;
		CMP	#00020H			;
		BPL	ARIH0_SUB2100		;
						;
		LDA	#00020H			;
						;
ARIH0_SUB2100	EQU	$			;
		STA	ENWRK6,X		;

		LDA	KEYC1			;ジャンプボタンを押された ?
		AND	P_KEY_JUMP		;
		BEQ	ARIH0_SUB2500		;  no: ARIH0_SUB2500

		LDA	PLXSPD
		STA	<ENWRK4,X

		LDY	#005
		STY	<ENWRK2,X

		JSR	ARIH0_PLYREV

		RTL

ARIH0_SUB2500	EQU	$
		JSR	ARIH0_PLCHK2		;プレイヤー乗ってる ?
		BCS	ARIH0_SUB2800		; yes: ARIH0_SUB2800

		INC	<ENWRK2,X

ARIH0_SUB2800	EQU	$
		LDA	ENWRK6,X
		CMP	#00020H
		BEQ	ARIH0_SUB2900

		LDA	ENTIM1,X
		BNE	ARIH0_SUB2900

		LDA	ENWRK6,X
		STA	R6
		LDA	#00005H
		STA	R0
		M_CHIP	MULTIPLY
		LDX	<ENINDX
		LDY	ENMUKI,X
		LDA	!SUIKT_XSPD,Y
		STA	<EWORK0
		LDA	!SUIKT_XREV,Y
		STA	<EWORK2

		LDA	#SUIKT
		JSL	>ENINSR
		BCC	ARIH0_SUB2900

		LDA	ENXPSL,X
		CLC
		ADC	<EWORK2
		STA	ENXPSL,Y
		LDA	ENYPSL,X
		CLC
		ADC	#00010H
		SEC
		SBC	R0
		STA	ENYPSL,Y
		LDA	<EWORK0
		STA	ENXSPD,Y
		LDA	#00001
		STA	ENSHOT,Y
		STA	ENWRK8,Y		;敵から打ったフラグセット
;		 LDA	 ENMOD0,Y		 ;敵との衝突なし
;		 AND	 #1111100111111111B	 ;
;		 STA	 ENMOD0,Y		 ;
		LDA	#0FFH+(0FFH*100H) ;水中スピードリセット
		STA	ENWATR,Y	  ;[ & ENWTSP ]

		LDA	#00004
		STA	ENTIM1,X

		LDA	#00045H			;［Ｓ］
		JSL	>SOUND_3_ON

ARIH0_SUB2900	EQU	$

		RTL
;
ARIH0_SUB6	EQU	$
		TYX
		PLA
		LDA	#00020H
		BRA	ARIH0_SUB3080
;
ARIH0_SUB3	EQU	$
		TYX
		PLA
		LDA	#00080H

ARIH0_SUB3080	EQU	$
		CLC
		ADC	ENWRK6,X		;倍率計算
		CMP	#001FFH			;
		BMI	ARIH0_SUB3100		;
						;
		LDA	#0FE9AH			;
		STA	ENYSPD,X		;
						;
		LDY	#004			;
		STY	<ENWRK2,X		;
						;
		LDA	#001FFH			;
		STA	ENWRK6,X		;
						;
		RTL				;
						;
ARIH0_SUB3100	EQU	$			;
		STA	ENWRK6,X		;

		JSR	ARIH0_PLCHK2		;プレイヤー乗ってる ?
		BCC	ARIH0_SUB3800		;  no: ARIH0_SUB3800

		LDY	#002
		STY	<ENWRK2,X

ARIH0_SUB3800	EQU	$

		RTL
;
ARIH0_SUB4	EQU	$
		TYX
		PLA

		LDA	ENWRK6,X		;倍率計算
		SEC				;
		SBC	#00010H			;
		CMP	#001FFH			;
		BPL	ARIH0_SUB4500		;
						;
		STZ	ENCHPT,X		;
						;
		LDA	#001FFH			;
		STA	ENWRK6,X		;
		LDA	#0001EH			;
		STA	ENWRKA,X		;
						;
		JSL	>TROBJ_CLEAR		;

		LDA	#0001000001111001B	;ＯＡＭセット４ー＞２
		STA	ENMOD2,X
						;
		LDA	#00018H			;振り返り待ちタイマーセット
		STA	ENTIM0,X

		LDA	<RANDM0			;振り返り回数セット
		AND	#00001H			;
		CLC				;
		ADC	#00003H			;
		STA	<ENCONT,X		;

		STZ	ENXSPD,X		;X SPEED クリア
		STZ	ENXPOW,X		;X POWER クリア
		STZ	<ENWRK2,X		;
						;
		RTL				;
						;
ARIH0_SUB4500	EQU	$			;
		STA	ENWRK6,X		;

		JSR	ARIH0_PLCHK2		;プレイヤー乗ってる ?
		BCC	ARIH0_SUB4800		;  no: ARIH0_SUB4800

		LDY	#002
		STY	<ENWRK2,X

ARIH0_SUB4800	EQU	$

		RTL
;
ARIH0_SUB5	EQU	$
		TYX
		PLA

		LDA	ENWRK6,X		;倍率計算
		CLC				;
		ADC	#00060H			;
		CMP	#001FFH			;
		BMI	ARIH0_SUB5100		;
						;
		LDA	#001FFH			;
		STA	ENWRK6,X		;
		LDA	<ENWRK4,X
		STA	PLXSPD
		LDA	#0F800H
		STA	PLYSPD
		LDA	#P006
		STA	PLJUMP
		LDA	#001+8000H
		STA	PLSPJP
		INC	SCRONF
		LDA	#0FD34H			;
		STA	ENYSPD,X		;
						;
		DEC	<ENWRK2,X		;
						;
		RTL
						;
ARIH0_SUB5100	EQU	$			;
		STA	ENWRK6,X		;

		JSR	ARIH0_PLYREV

		RTL
;
ARIH0_RXSPD	EQU	$
		WORD	00166H,0FE9AH
;
ARIH0_PLCHK2	EQU	$
		JSR	ARIH0_ZOMSET

		LDA	ENTIM2,X
		BNE	ARIH0_PLCHK2000

		LDA	CCWORK10
		PHA
		SEC
		SBC	ENWRKA,X
		SEC
		SBC	ENMOVY,X
		STA	<EWORK2
		PLA
		STA	ENWRKA,X

		LDA	EPWIDX,X		;あたった ?
		CLC				;
		ADC	#0000EH			;
		CMP	#0001CH			;
		BCC	ARIH0_PLCHK2080		; yes: ARIH0_PLCHK2080

ARIH0_PLCHK2000 EQU	$
		JMP	ARIH0_PLCHK0800		;  no: ARIH0_PLCHK0800

ARIH0_PLCHK2080 EQU	$
		SEC
		SBC	#00004H
		CMP	#00014H
		BCC	ARIH0_PLCHK2300
		BPL	ARIH0_PLCHK2100

		LDA	#00080H
		BRA	ARIH0_PLCHK2200

ARIH0_PLCHK2100 EQU	$
		LDA	#0FF80H

ARIH0_PLCHK2200 EQU	$
		STA	PLXSPD
		STA	PLMVSP
		EOR	#0FFFFH
		INC	A
		STA	ENXSPD,X

		BRA	ARIH0_PLCHK2300
;
ARIH0_PLCHK	EQU	$
		LDA	ENTIM2,X		;サーチロック ?
		BNE	ARIH0_PLCHK2000		; yes: ARIH0_PLCHK2000

		LDA	EPWIDX,X		;あたった ?
		CLC				;
		ADC	#0000EH			;
		CMP	#0001CH			;
		BCC	ARIH0_PLCHK2300

		JMP	ARIH0_PLCHK0800		;  no: ARIH0_PLCHK0800

ARIH0_PLCHK2300 EQU	$
		LDA	ENWRKA,X
		SEC
		SBC	#00008
		STA	<EWORK0

		LDA	ENYPSL,X		;上からあたった ?
		SEC				;
		SBC	#00008H			;18-20
		SEC				;
		SBC	PLYPSL			;
		CLC				;
		ADC	<EWORK2			;
		DEC	A			;
		CMP	ENWRKA,X		;
		BPL	ARIH0_PLCHK0800		;  no: ARIH0_PLCHK0800
						;
		CMP	<EWORK0			;
		BMI	ARIH0_PLCHK0200		;
						;
		LDY	PLYSPD+1		;
		BMI	ARIH0_PLCHK0800		;

		LDY	PLEATFG			;プレイヤー食われてる ?
		BNE	ARIH0_PLCHK0800		; yes: ARIH0_PLCHK0800

		CPX	PONLFFG
		BEQ	ARIH0_PLCHK0180

		LDY	PONLFFG
		BNE	ARIH0_PLCHK0800

		STX	PONLFFG

ARIH0_PLCHK0180 EQU	$
		STZ	ENXSPD,X		;Ｘ　ＳＰＥＥＤクリア
		STZ	ENXPOW,X		;Ｘ　ＰＯＷＥＲクリア

		LDA	ENYPSL,X		;プレイヤーＹ　ＰＯＳ．補正
		SEC				;
		SBC	#00008H			;18-20
		SEC				;
		SBC	ENWRKA,X		;
		STA	PLYPSL			;

		LDY	#000
		STY	PLYSDR
		STZ	PLYSPD			;プレイヤーＹ　ＳＰＥＥＤクリア
		STZ	PLDOSN
		INC	ONLFFG			;

		SEC

		RTS

ARIH0_PLCHK0200 EQU	$
		DEC	A
		CMP	#0FFECH			;横からあたった ?
		BCC	ARIH0_PLCHK0800		;  no: ARIH0_PLCHK0800

ARIH0_PLCHK0300 EQU	$
		LDY	#000
		LDA	ENXSPD,X
		BMI	ARIH0_PLCHK0400

		INY
		INY

ARIH0_PLCHK0400 EQU	$
		LDA	!ARIH0_RXSPD,Y
		STA	ENXSPD,X
		EOR	#0FFFFH
		INC	A
		CMP	#08000H
		ROR	A
		STA	PLXSPD
		STA	PLMVSP
		STZ	ENXMAX,X
		LDA	#00008
		STA	ENXPOW,X

		JSL	>PLFLST

		LDA	#00020H
		STA	ENTIM2,X

ARIH0_PLCHK0800 EQU	$
		CPX	PONLFFG
		BNE	ARIH0_PLCHK0900

		STZ	PONLFFG

ARIH0_PLCHK0900 EQU	$
		CLC

		RTS
;
ARIH0_PLYREV	EQU	$
		JSR	ARIH0_ZOMSET

		STZ	ENXSPD,X		;Ｘ　ＳＰＥＥＤクリア
		STZ	ENXPOW,X		;Ｘ　ＰＯＷＥＲクリア

		LDA	ENYPSL,X		;プレイヤーＹ　ＰＯＳ．補正
		SEC				;
		SBC	#00008H			;18-20
		SEC				;
		SBC	CCWORK10		;
		STA	PLYPSL			;

		LDY	#000
		STY	PLYSDR

		STZ	PLXSPD
		STZ	PLMVSP
		STZ	PLYSPD			;プレイヤーＹ　ＳＰＥＥＤクリア

		INC	ONLFFG			;

		RTS
;
ARIH0_ZOMSET	EQU	$
		LDA	ENWRK6,X		;(R0) <- Ｙ倍率セット
		STA	R11
		SEC				;(R4) <- Ｘ倍率セット
		SBC	#00100H
		BMI	ARIH0_ZOMSET010

		LSR	A
		LSR	A
		LSR	A

ARIH0_ZOMSET010 EQU	$
		EOR	#0FFFFH
		INC	A
		CLC
		ADC	#00100H
		STA	R4			;

		LDA	#00F00H			;(R6) <- たーくんの身長 * 100h
		STA	R6			;

		LDA	#00008H			;(R8) <- 中心Ｘ　ＰＯＳ．
		STA	R8			;
		ASL	A			;(R9) <- 中心Ｙ　ＰＯＳ．
		STA	R9			;

		LDA	#BANK CIPCHD+7020H+000	;chara data bank set
		STA	R13

		LDA	#CIPCHD+7020H+000	;chara data address set
		STA	R12

		LDY	ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_X,X		;回転エリアＸ　ＰＯＳ．セット
		STA	R3			;
		LDA	>TROBJ_PLOT_Y,X		;回転エリアＹ　ＰＯＳ．セット
		STA	R2			;

		M_CHIP	M_ARIH0_SET

		LDX	<ENINDX

		INC	OBM7WF			;mode 7 OBJ chara DMA "ON"

		RTS
;
;************************************************************************
;*		initial ( 花束へいほー )				*
;************************************************************************
FLWH0IN		EQU	$			;-- flwh0in --
		JSL	>HEIH0_SET_CLOR
		LDA	#00020H
		STA	ENCLOR,X
		RTL
;
;************************************************************************
;*		move	( 花束へいほー )				*
;************************************************************************
;		ENWRK0	キャラパターンインデックス
;		ENWRK2	ROUTINE MODE INDEX
;		ENWRK4
;		ENWRK6
;		ENWRK8
;		ENWRKA
;		ENWRKC	ENCLOR
;
FLWH0_SUB	EQU	$
		WORD	FLWH0_SUB0		;くっしん
		WORD	FLWH0_SUB1		;あるき
;
FLWH0MV		EQU	$			;-- flwh0mv --
		JSR	FLWH0_OAM_SET

		LDA	ENMODE,X
		CMP	#EEATM
		BNE	FLWH0MV0300

		JSR	HANABIRA_SET

		LDA	ENWRKC,X
		PHA
		LDA	ENRETN,X
		PHA
		STZ	ENMODE,X
		TXY
		LDA	#HEIH0
		JSL	>ENINSR2

		PLA
		M8
		STA	ENRETN,X
		M16
		PLA
		STA	ENWRKC,X
		AND	#000FEH
		ORA	#00020H
		STA	ENCLOR,X

		LDA	#00020H			;オブジェチェックロックタイマーセット
		STA	ENTIM2,X		;
		LDA	#EEATM
		STA	ENMODE,X

FLWH0MV0300	EQU	$
		JSL	>ENMDCK

		TXY
		LDA	<ENWRK2,X
		ASL	A
		TAX
		JSR	(FLWH0_SUB,X)

		JSR	FLWH0_PLCHK
;
;		なんにもいれたらあかんで〜
;
		RTL
;
FLWH0_CHG_NO	EQU	$
;ENCHPT =		[0] [1] [2] [3] [4] [5] [6] [7] [8]
		HEX	010,010,010,010,008,020,020,0FF,0FF
;
FLWH0_OAM_SET	EQU	$
		LDY	ENCHPT,X
		LDA	!FLWH0_CHG_NO,Y
		TAY
		BMI	FLWH0_O_SET0800

		I16
		TYA
		CLC
		ADC	ENOAML,X
		TAY
		LDA	SOAM_DX+4+1,Y
		AND	#0FFF1H
		ORA	ENWRKC,X
		STA	SOAM_DX+4+1,Y
		I8

FLWH0_O_SET0800 EQU	$

		RTS
;
FLWH0_S0_XMAX	EQU	$
		WORD	0FFA7H,00059H
		WORD	0FEF4H,0010CH
FLWH0_S0_XPOW	EQU	$
		WORD	00005H,0000BH
FLWH0_S0_CHPT	EQU	$
		HEX	05,06,07,08,07,06,05
;
FLWH0_SUB0	EQU	$
		TYX

		LDA	ENTIM1,X
		BNE	FLWH0_SUB0200

		LDA	#00004H
		STA	ENTIM1,X

		INC	<ENWRK0,X
		LDY	<ENWRK0,X
		LDA	!FLWH0_S0_CHPT,Y
		AND	#000FFH
		STA	ENCHPT,X

		CPY	#003			;しゃがんでるポーズ ?
		BNE	FLWH0_SUB0300		;  no: FLWH0_SUB0300

		LDA	#00040H
		STA	ENTIM1,X
		LDY	EPXMUK,X
		LDA	<RANDM0
		BIT	#00001
		BNE	FLWH0_SUB0100

		AND	#00002
		TAY

FLWH0_SUB0100	EQU	$
		TYA
		STA	ENMUKI,X

FLWH0_SUB0200	EQU	$

		RTS

FLWH0_SUB0300	EQU	$
		CPY	#007			;最後のポーズ ?
		BNE	FLWH0_SUB0800		;  no: FLWH0_SUB0800

		LDY	ENMUKI,X		;向いてる方向にプレイヤーがいる ?
;		TYA				;
;		DEC	A			;
;		EOR	EPWIDX,X		;
;		BPL	FLWH0_SUB0400		;  no: FLWH0_SUB0400
;
;		LDA	EPWIDX,X		;プレイヤー近くにいる ?
;		CLC				;
;		ADC	#00040H			;
;		CMP	#00080H			;
;		BCS	FLWH0_SUB0400		;  no: FLWH0_SUB0400
;
;		LDA	EPWIDY,X
;		CLC
;		ADC	#00030H
;		CMP	#00060H
;		BCS	FLWH0_SUB0400
;
;		TYA
;		CLC
;		ADC	#00004
;		TAY
;
;FLWH0_SUB0400	EQU	$
		LDA	!FLWH0_S0_XMAX,Y
		STA	ENXMAX,X
		TYA
		LSR	A
		AND	#0FFFEH
		TAY
		LDA	!FLWH0_S0_XPOW,Y
		STA	ENXPOW,X

		LDA	<RANDM0
		AND	#0003FH
		CLC
		ADC	#00040H
		STA	ENTIM0,X

		LDA	#00003
		STA	ENCHPT,X
		INC	A		;[ LDA	#00004 ]
		STA	ENTIM1,X

		STZ	<ENWRK0,X
		INC	<ENWRK2,X

FLWH0_SUB0800	EQU	$

		RTS
;
FLWH0_S1_CHPT	EQU	$
		HEX	03,04,03,02,00,01,02
;
FLWH0_SUB1	EQU	$
		TYX

		LDA	ENTIM1,X		;キャラパターンチェンジ ?
		BNE	FLWH0_SUB1800		;  no: FLWH0_SUB1800

		LDA	#00004H
		LDY	ENXPOW,X
		CPY	#005
		BEQ	FLWH0_SUB1300

		LSR	A

FLWH0_SUB1300	EQU	$
		STA	ENTIM1,X

		INC	<ENWRK0,X
		LDY	<ENWRK0,X
		CPY	#007
		BMI	FLWH0_SUB1500

		STZ	<ENWRK0,X
		LDY	#000

FLWH0_SUB1500	EQU	$
		LDA	ENCHPT,X		;まっすぐポーズ ?
		CMP	#00003			;
		BNE	FLWH0_SUB1600		;  no: FLWH0_SUB1600

		LDA	ENTIM0,X		;移動終わり ?
		BNE	FLWH0_SUB1600		;  no: FLWH0_SUB1600

		LDA	#00005
		STA	ENCHPT,X
		LDA	#00004
		STA	ENTIM1,X
		STZ	<ENWRK0,X
		STZ	ENXPOW,X
		STZ	ENXSPD,X
		STZ	<ENWRK2,X

		RTS

FLWH0_SUB1600	EQU	$
		LDA	!FLWH0_S1_CHPT,Y
		AND	#000FFH
		STA	ENCHPT,X

FLWH0_SUB1800	EQU	$
FLWH0_PLCHK0000 EQU	$

		RTS
;
FLWH0_PLCHK	EQU	$
		LDY	ECRSFG,X		;プレイヤーとあたった ?
		BPL	FLWH0_PLCHK0800		;  no: FLWH0_PLCHK0800

		LDA	EPWIDY,X		;プレイヤーに踏まれた ?
		SEC				;
		SBC	PWIDEY			;
		SEC				;
		SBC	EWIDEY,X		;
		CMP	#0FFF8H			;
		BCC	FLWH0_PLCHK0700		;  no: FLWH0_PLCHK0700

		LDY	PLYSPD+1		;プレイヤー上昇中 ?
		BMI	FLWH0_PLCHK0000		; yes: FLWH0_PLCHK0000
		LDY	PLJUMP			;プレイヤージャンプ中 ?
		BEQ	FLWH0_PLCHK0000		;  no: FLWH0_PLCHK0000

		LDA	#0FC00H
		STA	PLYSPD
		LDA	#P006
		STA	PLJUMP
		LDA	#001+8000H
		STA	PLSPJP

		JSR	HANABIRA_SET

		LDA	ENWRKC,X
		PHA
		LDA	ENRETN,X
		PHA
		STZ	ENMODE,X
		TXY
		LDA	#HEIH0
		JSL	>ENINSR2_I

		PLA
		M8
		STA	ENRETN,X
		M16
		PLA
		STA	ENWRKC,X
		AND	#0FFFEH
		ORA	#00020H
		STA	ENCLOR,X

		RTS

FLWH0_PLCHK0700 EQU	$
		JSL	>PLFLST

		RTS

FLWH0_PLCHK0800 EQU	$
		DEY
		BMI	FLWH0_ENCHK0800

		LDA	ENMODE,Y
		CMP	#EMOVE
		BNE	FLWH0_ENCHK0800
		LDA	ENSHOT,Y
		BEQ	FLWH0_ENCHK0800

		LDA	ENXSPD,Y
		PHP

		LDA	#0FE00H
		PLP
		BMI	FLWH0_ENCHK0100

		LDA	#00200H

FLWH0_ENCHK0100 EQU	$
		STA	<EWORKE
		TYX
		JSL	>SHOT_EN_KILL		;未処理 ?
		BCC	FLWH0_ENCHK0200		;  no: FLWH0_ENCHK0200

		LDA	#0100111000000000B	;衝突チェックされる
		STA	ENMOD0,X		;
		RTS

FLWH0_ENCHK0200 EQU	$
		JSR	HANABIRA_SET

		LDA	ENWRKC,X
		PHA
		LDA	ENRETN,X
		PHA
		STZ	ENMODE,X
		TXY
		LDA	#HEIH0
		JSL	>ENINSR2

		PLA
		M8
		STA	ENRETN,X
		M16
		PLA
		STA	ENWRKC,X
		AND	#0FFFEH
		ORA	#00020H
		STA	ENCLOR,X

		LDA	<EWORKE
		STA	ENXSPD,X
		INC	ENSHOT,X
		LDA	#00020H			;オブジェチェックロックタイマーセット
		STA	ENTIM2,X		;

FLWH0_ENCHK0800 EQU	$

		RTS
;
HANABIRA_SET	EQU	$
		LDA	#HIRA0
		JSL	>EXINSR

		LDA	ECENTX,X
		STA	EXXPSL,Y
		LDA	ECENTY,X
		STA	EXYPSL,Y
		LDA	#00001
		STA	EXTIM0,Y
		LDA	#00017H
		STA	EXCHPT,Y
		LDA	#00022H
		STA	EXCLOR,Y

		RTS
;
;************************************************************************
;*		initial ( のもず )					*
;************************************************************************
;NAMAZ_XWIDE	EQU	$
;		WORD	00080H,00200H
;
NAMAZIN		EQU	$			;-- namazin --
		LDA	ENYPSL,X		;水面Ｙ　ＰＯＳ．セット
		STA	ENWRK6,X		;
		SEC
		SBC	#00020H
		STA	ENYPSL,X

		LDA	#00010H			;出現範囲直径セット
		STA	ENWRKA,X		;

		LDA	ENXPSL,X		;出現範囲の中心Ｘ　ＰＯＳ．セット
		STA	ENWRKC,X		;

		RTL
;
;************************************************************************
;*		move	( のもず )					*
;************************************************************************
;		ENWRK0	プレイヤーを食ったぞフラグ
;		ENWRK2	ROUTINE MODE INDEX
;		ENWRK4	プレイヤーＸ補正値
;		ENWRK6	水面Ｙ　ＰＯＳ．
;		ENWRK8	プレイヤーＹ補正値
;		ENWRKA	出現範囲半径
;		ENWRKC	出現範囲の中心Ｘ　ＰＯＳ．
;
;		ENCONT	いらいらカウンター
;
;		ENTIM0	ストップタイマー
;		ENTIM1	ゲームオーバー待ちタイマー
;
NAMAZ_SUB	EQU	$
		WORD	NAMAZ_SUB0	;イニシャル
		WORD	NAMAZ_SUB1	;水面チェック
		WORD	NAMAZ_SUB2	;跳びだし待ち
		WORD	NAMAZ_SUB3	;襲ってる
		WORD	NAMAZ_SUB4	;プレイヤー補正
		WORD	NAMAZ_SUB5	;水面チェック
		WORD	NAMAZ_SUB6	;ゲームオーバー待ち
		WORD	NAMAZ_SUB7	;タマゴあてられて沈んでる
		WORD	NAMAZ_SUB8	;イニシャルに戻る
		WORD	NAMAZ_SUB9	;目だけ出す
;
NAMAZMV		EQU	$			;-- namazmv --
		JSL	>ENMDCK			;mode check

		TXY
		LDA	<ENWRK2,X
		ASL	A
		TAX
		JSR	(NAMAZ_SUB,X)

		JSR	NAMAZ_OBJCHK

		RTL
;
NAMAZ_OBJCHK	EQU	$
		LDY	ENYUSN,X		;姿が見えてる ?
		BMI	NAMAZ_OCHK0400		;  no: NAMAZ_OCHK0400

		LDY	<ENWRK2,X		;プレイヤーを食ってる ?
		CPY	#004			;
		BMI	NAMAZ_OCHK0080		;  no: NAMAZ_OCHK0080
		CPY	#006+1			;
		BMI	NAMAZ_OCHK0400		; yes: NAMAZ_OCHK0400

NAMAZ_OCHK0080	EQU	$
		LDY	ECRSFG,X		;何かにあたった ?
		BEQ	NAMAZ_OCHK0400		;  no: NAMAZ_OCHK0400
		BPL	NAMAZ_OCHK0500		; yes: NAMAZ_OCHK0500

		LDA	EPWIDY,X		;プレイヤーに踏まれた ?
		SEC				;
		SBC	PWIDEY			;
		SEC				;
		SBC	EWIDEY,X		;
		CMP	#0FFF8H			;
		BCC	NAMAZ_OCHK0100		;  no: NAMAZ_OCHK0100

		LDY	PLYSPD+1		;プレイヤー上昇中 ?
		BMI	NAMAZ_OCHK0400		; yes: NAMAZ_OCHK0400
		LDY	PLJUMP			;プレイヤージャンプ中 ?
		BEQ	NAMAZ_OCHK0400		;  no: NAMAZ_OCHK0400

		LDA	#0FA00H
		STA	PLYSPD
		LDA	#P006
		STA	PLJUMP
		LDA	#001+8000H
		STA	PLSPJP
		STZ	PLDOSN
		BRA	NAMAZ_OCHK0700

NAMAZ_OCHK0100	EQU	$
		JSL	>PLFLST

NAMAZ_OCHK0400	EQU	$

		RTS

NAMAZ_OCHK0500	EQU	$
		LDA	ENMODE-1,Y
		CMP	#EMOVE
		BNE	NAMAZ_OCHK0800
		LDA	ENSHOT-1,Y
		BEQ	NAMAZ_OCHK0800

		DEY
		TYX
		JSL	>ENDEATH_SET_4

		LDY	ENCHPT,X		;ダメージポーズ ?
		CPY	#002			;
		BEQ	NAMAZ_OCHK0800		; yes: NAMAZ_OCHK0800

NAMAZ_OCHK0700	EQU	$
		STZ	ENXSPD,X
		STZ	ENYSPD,X
		STZ	ENGPOW,X
		LDA	#00040H			;ストップタイマーセット
		STA	ENTIM0,X
		LDA	#00002
		STA	ENCHPT,X
		LDY	#007
		STY	<ENWRK2,X

NAMAZ_OCHK0800	EQU	$

		RTS
;
NAMAZ_SUB0	EQU	$
		TYX

		LDA	ENTIM0,X		;ストップ ?
		BNE	NAMAZ_SUB0800		; yes: NAMAZ_SUB0800

		LDA	EPWIDX,X		;プレイヤー近づいてきた ?
		CLC				;
		ADC	#00080H			;
		CMP	#00100H			;
		BCS	NAMAZ_SUB0800		;  no: NAMAZ_SUB0800

		LDA	#00400H
		STA	ENYSPD,X

		INC	<ENWRK2,X

NAMAZ_SUB0700	EQU	$

		RTS

NAMAZ_SUB0800	EQU	$
		JSL	>DISPCK0		;画面外 ?
		BCC	NAMAZ_SUB0700		;  no: NAMAZ_SUB0700

		PLA
		RTL
;
NAMAZ_SUB1	EQU	$
		TYX

		JSR	NAMAZ_WTR_CLEAR		;水面下 ?
		BPL	NAMAZ_SUB1800		;  no: NAMAZ_SUB1800

		LDA	#00040H			;ストップタイマーセット
		STA	ENTIM0,X		;

		STZ	<ENCONT,X		;いらいらカウンタークリア
		INC	<ENWRK2,X

NAMAZ_SUB1800	EQU	$
NAMAZ_SUB2000	EQU	$

		RTS
;
NAMAZU_POSDT	EQU	$
		WORD	00020H,0FFE0H
NAMAZU_XSPD	EQU	$
		WORD	0FF00H,00100H
;
NAMAZ_SUB2	EQU	$
		TYX

		LDA	ENTIM0,X		;ストップ ?
		BNE	NAMAZ_SUB2000		; yes: NAMAZ_SUB2000

		LDY	#000			;ナマズ出現Ｘ　ＰＯＳ．セット
		LDA	PLXSPD			;
		BMI	NAMAZ_SUB2400		;
		BNE	NAMAZ_SUB2300		;
						;
		LDA	PLCMKI			;
		EOR	#00002			;
		TAY				;
		BRA	NAMAZ_SUB2400		;
						;
NAMAZ_SUB2300	EQU	$			;
		INY				;
		INY				;
						;
NAMAZ_SUB2400	EQU	$			;
		LDA	PLXPSL			;
		CLC				;
		ADC	!NAMAZU_POSDT,Y		;
		STA	ENXPSL,X		;

		LDA	ENWRKA,X		;行動範囲内 ?
		LSR	A			;
		CLC				;
		ADC	ENXPSL,X		;
		SEC				;
		SBC	ENWRKC,X		;
		STA	<EWORK2			;
		CMP	ENWRKA,X		;
		BCC	NAMAZ_SUB2700		; yes: NAMAZ_SUB2700
		BMI	NAMAZ_SUB2500		;

		LDA	ENWRKC,X
		CLC
		ADC	ENWRKA,X
		BRA	NAMAZ_SUB2600

NAMAZ_SUB2500	EQU	$
		LDA	ENWRKC,X
		SEC
		SBC	ENWRKA,X

NAMAZ_SUB2600	EQU	$
		STA	ENXPSL,X

		LDY	EPXMUK,X
		LDA	<EWORK0			;行動範囲のずっと向こう ?
		CLC				;
		ADC	#00080H*2		;
		STA	<EWORK0			;
		LDA	<EWORK2			;
		CLC				;
		ADC	#00080H			;
		CMP	<EWORK0			;
		BCC	NAMAZ_SUB2700		;  no: NAMAZ_SUB2700

		STZ	ENCHPT,X
		LDA	#00008
		STA	<ENWRK2,X		;routine mode index inc.
		BRA	NAMAZ_SUB2780

NAMAZ_SUB2700	EQU	$
		LDA	EPWIDY,X		;プレイヤー、頭のすぐ上 ?
		CMP	#00040H			;
		BMI	NAMAZ_SUB2750		; yes: NAMAZ_SUB2750

		INC	<ENCONT,X
		LDA	ENCONT,X		;いらいら爆発 ?
		CMP	#00080H			;
		BMI	NAMAZ_SUB2800		;  no: NAMAZ_SUB2800

		STZ	ENCHPT,X
		LDA	#00060H			;ストップタイマーセット
		STA	ENTIM0,X		;
		LDY	#00009
		STY	<ENWRK2,X
		LDY	EPXMUK,X
		LDA	#0FF00H
		BRA	NAMAZ_SUB2790

NAMAZ_SUB2750	EQU	$
		LDA	!NAMAZU_XSPD,Y		;ナマズ出現Ｘ　ＳＰＥＥＤセット
		STA	ENXSPD,X		;

NAMAZ_SUB2760	EQU	$
		LDA	#00020H			;ナマズ出現Ｇ　ＰＯＷＥＲセット
		STA	ENGPOW,X		;
		LDA	#00340H			;ナマズ出現Ｇ　ＭＡＸセット
		STA	ENGMAX,X		;
		LDA	#00001			;キャラパターンナンバーセット
		STA	ENCHPT,X		;
		STZ	<ENWRK0,X		;プレイヤーＧＥＴフラグクリア

		PHY
		LDA	#00083H			;［Ｓ］
		JSL	>SOUND_3_ON		;
		PLY

		INC	<ENWRK2,X		;routine mode index inc.

NAMAZ_SUB2780	EQU	$
		LDA	#0FCC0H			;ナマズ出現Ｙ　ＳＰＥＥＤセット

NAMAZ_SUB2790	EQU	$
		STA	ENYSPD,X		;
		TYA				;ナマズキャラ向きセット
		STA	ENMUKI,X		;
		LDA	#00002			;ナマズ出現ＥＮＹＵＳＮセット
		STA	ENYUSN,X		;

NAMAZ_SUB2800	EQU	$

		RTS
;
NAMAZ_SUI	EQU	$			;プレイヤーすいこみ操作用データ
		WORD	00020H,0FFE0H
NAMAZ_SUIMAX	EQU	$			;プレイヤーすいこみマックスデータ
		WORD	00180H,0FE80H
;
NAMAZ_SUB3	EQU	$
		TYX

		LDY	ENYSPD+1,X		;プレイヤーを食うのに失敗 ?
		BMI	NAMAZ_SUB3200		;  no: NAMAZ_SUB3200

		LDA	#00002
		STA	ENCHPT,X		;char. no. change
		JMP	NAMAZ_SUB3800

NAMAZ_SUB3200	EQU	$
		JSR	BRETH_SET

		LDA	ENMUKI,X		;プレイヤーを食べた ?
		DEC	A			;
		EOR	EPWIDX,X		;
		BPL	NAMAZ_SUB3600		;
						;
		LDA	EPWIDX,X		;
		CLC				;
		ADC	#00010H			;
		CMP	#00020H			;
		BCS	NAMAZ_SUB3600		;
						;
		LDA	EPWIDY,X		;
		CLC				;
		ADC	#00030H			;
		CMP	#00040H			;
		BCS	NAMAZ_SUB3600		;  no: NAMAZ_SUB3600

		JSL	>BERO_CANCEL

		LDA	#PSTP			;player stop mode set
		STA	PLMODE
		LDA	#DM00			;damage pattern no. set
		STA	PLPATN
		STA	ITEM_STOP

		LDA	EPWIDX,X
		STA	<ENWRK4,X

		LDA	ENYPSL,X
		SEC
		SBC	PLYPSL
		STA	ENWRK8,X

		INC	<ENWRK0,X		;プレイヤーゲットフラグセット

		INC	<ENWRK2,X		;routine mode index inc.

		RTS
;
NAMAZ_SUB3600	EQU	$
		LDA	ENMUKI,X		;プレイヤーをすいこむ ?
		TAY				;
		DEC	A			;
		EOR	EPWIDX,X		;
		BPL	NAMAZ_SUB3800		;
						;
		LDA	EPWIDX,X		;
		CLC				;
		ADC	#00012H			;
		CMP	#00024H			;
		BCS	NAMAZ_SUB3800		;
						;
		LDA	EPWIDY,X		;
		CLC				;
		ADC	#00018H			;
		CMP	#00030H			;
		BCS	NAMAZ_SUB3800		; no:  NAMAZ_SUB3800

		LDA	!NAMAZ_SUI,Y		;プレイヤー X SPEED 操作
		CLC				;
		ADC	PLXSPD			;
		STA	PLXSPD			;
		STA	PLMVSP			;
		CLC				;
		ADC	#00280H			;
		CMP	#00500H			;
		BCC	NAMAZ_SUB3800		;
						;
		LDA	!NAMAZ_SUIMAX,Y		;
		STA	PLXSPD			;
		STA	PLMVSP			;

NAMAZ_SUB3800	EQU	$
		JSR	NAMAZ_WTR_CLEAR		;水面下 ?
		BPL	NAMAZ_SUB3900		;  no: NAMAZ_SUB3900

		LDA	#000A0H			;ストップタイマーセット
		STA	ENTIM0,X		;

		STZ	<ENCONT,X		;いらいらカウンタークリア
		LDY	#002
		STY	<ENWRK2,X

NAMAZ_SUB3900	EQU	$

		RTS
;
NAMAZ_WTR_CLEAR EQU	$
		LDA	ENWRK6,X		;水面下 ?
		CMP	ENYPSL,X		;
		BPL	NAMAZ_W_CLR0800		;  no: NAMAZ_W_CLR0800

		STA	ENYPSL,X

		LDA	#SHIBU			;(A) <-- exstra no.
		JSL	>EXINSR

		LDA	#00001H
		STA	EXWRK0,Y		;counter set
		LDA	#0FE00H
		STA	EXYSPD,Y		;Y speed set
		LDA	#00012H			;timer set
		STA	EXTIM0,Y		;
		LDA	ENXPSL,X
		STA	EXXPSL,Y		;X pos set
		LDA	ENYPSL,X
		SEC
		SBC	#00010H
		STA	EXYPSL,Y		;Y pos set

		STZ	ENXSPD,X		;x_speed clear
		STZ	ENYSPD,X		;y_speed clear
		STZ	ENGPOW,X		;g_power clear
		STZ	ENGMAX,X		;g_max	 clear

		LDA	#0005FH			;［Ｓ］
		JSL	>SOUND_3_ON		;
		LDA	#0FFFFH			;ナマズ消す
		STA	ENYUSN,X		;
;必ずマイナスで帰ること！！

NAMAZ_W_CLR0800 EQU	$

		RTS
;
;		ENXPSL	EWORK0
;		ENYPSL	EWORK2
;		ENWRK4	EWORK4
;		ENWRK8	EWORK6
;		PLXPSL	EWORK8
;		PLYPSL	EWORKA
;
NAMAZ_SUB4	EQU	$
		TYX

		LDA	ENXPSL,X
		STA	<EWORK0
		LDA	ENYPSL,X
		STA	<EWORK2
		LDA	<ENWRK4,X
		STA	<EWORK4
		LDA	ENWRK8,X
		STA	<EWORK6

		JSL	>NMZ_HOSEI
		STA	<EWORKC

		LDA	<EWORK4
		STA	<ENWRK4,X
		LDA	<EWORK6
		STA	ENWRK8,X
		LDA	<EWORK8
		STA	PLXPSL
		LDA	<EWORKA
		STA	PLYPSL
		LDA	<EWORKC
		BNE	NAMAZ_SUB4800

		STZ	ENCHPT,X		;NAMAZU chr pattern set ( 口閉じ )

		LDA	ENYPSL,X		;player y pos. revise
		CLC				;
		ADC	#00020H			;
		STA	PLYPSL			;

		INC	<ENWRK2,X		;routine mode index inc.

		RTS

NAMAZ_SUB4800	EQU	$
		JSR	NAMAZ_WTR_CLEAR		;水面下 ?
		BPL	NAMAZ_SUB4900		;  no: NAMAZ_SUB4900

		LDA	ENXPSL,X		;プレイヤーＸ　ＰＯＳ．補正
		STA	PLXPSL			;

		LDA	ENYPSL,X		;プレイヤーＹ　ＰＯＳ．補正
		CLC				;
		ADC	#00020H			;
		STA	PLYPSL			;

		LDA	#00020H			;ゲームオーバー待ちタイマーセット
		STA	ENTIM1,X		;
		LDY	#006
		STY	<ENWRK2,X

NAMAZ_SUB4900	EQU	$

		RTS
;
NAMAZ_SUB5	EQU	$
		TYX

		LDA	ENXPSL,X		;プレイヤーＸ　ＰＯＳ．補正
		STA	PLXPSL			;

		LDA	ENYPSL,X		;プレイヤーＹ　ＰＯＳ．補正
		CLC				;
		ADC	#00020H			;
		STA	PLYPSL			;

		JSR	NAMAZ_WTR_CLEAR		;水面下 ?
		BPL	NAMAZ_SUB5800		;  no: NAMAZ_SUB5800
;
		LDA	#00020H			;ゲームオーバー待ちタイマーセット
		STA	ENTIM1,X		;
		INC	<ENWRK2,X

NAMAZ_SUB5800	EQU	$
NAMAZ_SUB6000	EQU	$

		RTS
;
NAMAZ_SUB6	EQU	$
		TYX

		LDA	ENTIM1,X		;ゲームオーバー ?
		BNE	NAMAZ_SUB6000		;  no: NAMAZ_SUB6000

		I16
		JSL	>TO_PLDOWN
		I8
;
		PLA			;直接ＲＴＬ
		RTL
;
NAMAZ_SUB7	EQU	$
		TYX

		LDA	ENTIM0,X		;ストップ ?
		BNE	NAMAZ_SUB7800		; yes: NAMAZ_SUB7800

		LDA	#00020H
		STA	ENGPOW,X
		LDA	#00340H			;ナマズ出現Ｇ　ＭＡＸセット
		STA	ENGMAX,X		;

		JSR	NAMAZ_WTR_CLEAR
		BPL	NAMAZ_SUB7800

		LDA	#000A0H			;ナマズストップタイマーセット
		STA	ENTIM0,X		;
		STZ	<ENCONT,X		;いらいらカウンタークリア
		LDY	#002
		STY	<ENWRK2,X

NAMAZ_SUB7800	EQU	$

		RTS
;
NAMAZ_SUB8	EQU	$
		TYX

		LDA	ENWRK6,X		;浮上した ?
		SEC				;
		SBC	#00020H			;
		CMP	ENYPSL,X		;
		BMI	NAMAZ_SUB8800		;  no: NAMAZ_SUB8800

		STA	ENYPSL,X
		STZ	ENYSPD,X

		LDA	#00040H			;ストップタイマーセット
		STA	ENTIM0,X		;
		STZ	<ENWRK2,X

NAMAZ_SUB8800	EQU	$

		RTS
;
NAMAZ_SUB9	EQU	$
		TYX

		LDA	ENWRK6,X		;目だけでた ?
		SEC				;
		SBC	#00008H			;
		CMP	ENYPSL,X		;
		BMI	NAMAZ_SUB9800		;  no: NAMAZ_SUB9800

		STA	ENYPSL,X
		STZ	ENYSPD,X

		LDA	ENTIM0,X		;ストップ ?
		BNE	NAMAZ_SUB9800		; yes: NAMAZ_SUB9800

		LDA	#00400H
		STA	ENYSPD,X

		LDY	#001
		STY	<ENWRK2,X

NAMAZ_SUB9800	EQU	$

		RTS
;
SUIKOMI_PATXL	EQU	$
		WORD	00028H,00030H,00038H,0003FH
SUIKOMI_PATXR	EQU	$
		WORD	0FFD8H,0FFD0H,0FFC8H,0FFC1H
;
SUIKOMI_PATY	EQU	$
		WORD	0002CH,00028H,00034H,00000H,00008H,00010H,00018H,00020H
;
BRETH_SET	EQU	$
		LDA	<RANDM0
		AND	#00003H
		STA	<EWORK0

		LDA	ENMUKI,X
		ASL	A
		CLC
		ADC	<EWORK0
		ASL	A
		TAY
		LDA	!SUIKOMI_PATXL,Y
		STA	<EWORK0

		LDA	<RANDM0+1
		AND	#0000EH
		TAY
		LDA	!SUIKOMI_PATY,Y
		STA	<EWORK2

		LDA	#BRETH		;(A) <-- exstra no.
		JSL	>EXINSR

		LDA	#00010H		;timer set
		STA	EXTIM0,Y	;

		LDA	ENXPSL,X
		SEC
		SBC	<EWORK0
		STA	EXXPSL,Y	;x pos set

		LDA	ENYPSL,X
		SEC
		SBC	<EWORK2
		STA	EXYPSL,Y	;y pos set

		TXA
		STA	EXWRK0,Y

		LDA	<EWORK0
		STA	EXWRK4,Y

		LDA	<EWORK2
		STA	EXWRK2,Y

		RTS
;
;
;		LDA	EXWRK0,X
;		STA	<EWORK0
;		LDA	EXWRK2,X
;		STA	<EWORK2
;		LDA	EXWRK4,X
;		AND	#000FFH
;		STA	<EWORK4
;		LDA	EXWRK5,X
;		AND	#000FFH
;		STA	<EWORK6
;		LDA	EXXPSL,X
;		STA	<EWORK8
;		LDA	EXYPSL,X
;		STA	<EWORKA
;
;		ENXPSL	EWORK0
;		ENYPSL	EWORK2
;		ENWRK4	EWORK4
;		ENWRK8	EWORK6
;		PLXPSL	EWORK8
;		PLYPSL	EWORKA
;
;
;NAMAZU_HOS	EQU	$
;			  0    1    2	 3    4	   5	6    7
;		BYTE	000H,000H,001H,002H,003H,004H,005H,005H
;			  8    9    A	 B    C	   D	E    F
;		BYTE	006H,007H,008H,009H,00AH,00BH,00BH,00CH
;			  10  11   12	13   14	  15   16   17
;		BYTE	00DH,00EH,00FH,010H,011H,012H,012H,013H
;			  18  19   1A	1B   1C	  1D   1E   1F
;		BYTE	014H,015H,016H,017H,018H,019H,01AH,01BH
;			  20  21   22	23   24	  25   26   27
;		BYTE	01BH,01CH,01DH,01EH,01FH,020H,021H,022H
;			  28  29   2A	2B   2C	  2D   2E   2F
;		BYTE	023H,024H,025H,026H,027H,028H,029H,02AH
;
NAMAZU_HOS	EQU	$
;			  0    1    2	 3    4	   5	6    7
		BYTE	000H,000H,001H,002H,003H,004H,005H,005H
;			  8    9    A	 B    C	   D	E    F
		BYTE	006H,007H,008H,009H,00AH,00BH,00BH,00CH
;			  10  11   12	13   14	  15   16   17
		BYTE	00DH,00EH,00FH,010H,011H,012H,012H,013H
;			  18  19   1A	1B   1C	  1D   1E   1F
		BYTE	014H,015H,016H,017H,018H,019H,01AH,01BH
;			  20  21   22	23   24	  25   26   27
		BYTE	01BH,01CH,01DH,01EH,01FH,020H,021H,022H
;			  28  29   2A	2B   2C	  2D   2E   2F
		BYTE	023H,024H,025H,026H,027H,028H,029H,02AH
;			  30  31   32	33   34	  35   36   37
		BYTE	02BH,02CH,02DH,02DH,02EH,02FH,030H,031H
;			  38  39   3A	3B   3C	  3D   3E   3F
		BYTE	032H,033H,034H,035H,036H,037H,038H,039H
;			  40  41   42	43   44	  45   46   47
		BYTE	03AH,03BH,03CH,03DH,03EH,03FH,040H,041H
;			  48  49   4A	4B   4C	  4D   4E   4F
		BYTE	042H,043H,044H,045H,046H,047H,048H,049H
;
NMZ_HOSEI	EQU	$
		PHB
		PHK
		PLB
		LDA	<EWORK0		;PLAYER X_POS HOSEI
		SEC			;
		SBC	<EWORK4		;
		STA	<EWORK8		;

		LDA	<EWORK2		;PLAYER Y_POS HOSEI
		SEC			;
		SBC	<EWORK6		;
		STA	<EWORKA		;

		LDA	<EWORK4		;x_pos hosei end ?
		BEQ	NMZ_SUB2400	; yes: NMZ_SUB2400
		BMI	NMZ_SUB2250	;

		TAY			;x_pos hoseichi hosei
		LDA	!NAMAZU_HOS,Y	;
		AND	#000FFH		;
		BRA	NMZ_SUB2300	;
					;
NMZ_SUB2250	EQU	$		;
		EOR	#0FFFFH		;
		INC	A		;
		TAY			;
		LDA	!NAMAZU_HOS,Y	;
		AND	#000FFH		;
		EOR	#0FFFFH		;
		INC	A		;

NMZ_SUB2300	EQU	$
		STA	<EWORK4		;
		LDA	<EWORK6

NMZ_SUB2330	EQU	$
		BMI	NMZ_SUB2350

		TAY			;y_pos hoseichi hosei
		LDA	!NAMAZU_HOS,Y	;
		AND	#000FFH		;
		BRA	NMZ_SUB2500	;
					;
NMZ_SUB2350	EQU	$		;
		EOR	#0FFFFH		;
		INC	A		;
		TAY			;
		LDA	!NAMAZU_HOS,Y	;
		AND	#000FFH		;
		EOR	#0FFFFH		;
		INC	A		;
		BRA	NMZ_SUB2500	;

NMZ_SUB2400	EQU	$
		LDA	<EWORK6		;y_pos hosei end ?
		BNE	NMZ_SUB2330	; no:  NMZ_SUB2330

		ORA	<EWORK4
		BNE	NMZ_SUB2600
					;
		PLB
		RTL

NMZ_SUB2500	EQU	$
		STA	<EWORK6		;

NMZ_SUB2600	EQU	$
		LDA	#00001H

		PLB
		RTL
;
;************************************************************************
;*		initial ( sanpo )					*
;************************************************************************
HACHI_XSPD	EQU	$
		WORD	0FFC0H,00040H
SANPO_XSPD	EQU	$
		WORD	0FF80H,00080H
;
SANPOIN		EQU	$		;-- sanpoin --
		LDA	ENWRKA,X
		CMP	ENWRKC,X
		BNE	SANPOIN0100

		CMP	#0FFFFH
		BNE	SANPOIN0100

SANPOIN0080	EQU	$
		LDY	ENMUKI,X
		LDA	!SANPO_XSPD,Y
		STA	ENXSPD,X

		LDA	#00040H
		STA	ENGPOW,X

		INC	<ENWRK2,X

		BRA	SANPOIN0800

SANPOIN0100	EQU	$
		LDA	ENXPSL,X	;すっぴんさんぽ ?
		AND	#00010H		;
		BNE	SANPOIN0080	; yes: SANPOIN0080

		LDA	#HACHI
		JSL	>ENINSR
		BCC	SANPOIN0080

		LDA	ENXPSL,X
		STA	ENXPSL,Y
		LDA	ENYPSL,X
		STA	ENYPSL,Y
		SEC
		SBC	#0000AH
		STA	ENYPSL,X

		LDA	#00000
		STA	ENWRKA,Y
		STA	ENWRKC,Y
		TXA
		STA	ENWRK8,Y

SANPOIN0800	EQU	$
		STZ	ENWRKA,X
		STZ	ENWRKC,X

		RTL
;
;************************************************************************
;*		move	( sanpo )					*
;************************************************************************
;		ENWRK0
;		ENWRK2	ROUTINE MODE INDEX
;		ENWRK4
;		ENWRK6	キャラパターンカウンター
;		ENWRK8
;		ENWRKA	イニシャルチェッカー
;		ENWRKC	イニシャルチェッカー
;
SANPO_ENMOD1_DT EQU	$
		WORD	0000100101000111B
		WORD	0000000000000111B
;
SANPO_SUB	EQU	$
		WORD	DUMMY_SUB		;はちつき
		WORD	SANPO_SUB1		;すっぴん
;
SANPOMV		EQU	$		;-- sanpomv --
		LDY	#000
		LDA	ENSHOT,X
		ORA	ENCOLD,X
		BEQ	SANPOMV0100

		LDA	#0FFFFH
		STA	ENWRKA,X
		STA	ENWRKC,X

		INY
		INY

SANPOMV0100	EQU	$
		LDA	!SANPO_ENMOD1_DT,Y
		STA	ENMOD1,X

		JSL	>ENMDCK

		TXY
		LDA	<ENWRK2,X
		ASL	A
		TAX
		JSR	(SANPO_SUB,X)

		LDY	ECRSFG,X
		DEY
		BPL	SANPOMV0800

		JSL	>EPCRCK
		RTL

SANPOMV0800	EQU	$
		JMP	>SHOT_EN_KILL_S2
;
SANPO_SUB1	EQU	$
		TYX

		LDY	ECRSFG,X		;敵にあたった ?
		DEY				;
		BMI	SANPO_SUB1100		;  no: SANPO_SUB1100

		LDA	ENMYNO,Y		;はちにあたった ?
		CMP	#HACHI			;
		BNE	SANPO_SUB1100		;  no: SANPO_SUB1100

		LDA	ENWRK8,Y		;ほかの誰かが乗ってる ?
		BNE	SANPO_SUB1100		; yes: SANPO_SUB1100

		LDA	ENSHOT,Y		;ショットされてる ?
		BNE	SANPO_SUB1100		; yes: SANPO_SUB1100

		LDA	ENXPSL,X
		SEC
		SBC	ENXPSL,Y
		STA	ENWRKA,Y
		LDA	ENYPSL,X
		SEC
		SBC	ENYPSL,Y
		CLC
		ADC	#0000AH
		STA	ENWRKC,Y

		LDA	#00000
		STA	ENSHOT,Y

		TXA
		STA	ENWRK8,Y

		STZ	ENXSPD,X
		STZ	ENYSPD,X
		STZ	ENGPOW,X
		STZ	<ENWRK2,X

		RTS

SANPO_SUB1100	EQU	$
		TXA
		STA	R1

		M_CHIP	HACHI_SEARCH

		LDX	<ENINDX
		LDY	R1			;はち近くにある ?
		BMI	SANPO_SUB1400		;  no: SANPO_SUB1400

		STZ	ENMUKI,X
		LDA	ENXPSL,Y
		CMP	ENXPSL,X
		BMI	SANPO_SUB1300

		LDA	#00002
		STA	ENMUKI,X

SANPO_SUB1300	EQU	$
		LDA	#0000000010000111B	;行ったり来たりしなくする
		STA	ENMOD1,X		;

SANPO_SUB1400	EQU	$
		LDY	ENMUKI,X
		LDA	!SANPO_XSPD,Y
		STA	ENXSPD,X

SANPO_SUB1500	EQU	$
		LDA	ENXSPD,X
		BPL	SANPO_SUB1600

		EOR	#0FFFFH
		INC	A

SANPO_SUB1600	EQU	$
		CLC
		ADC	ENWRK6,X
		CMP	#00200H
		BMI	SANPO_SUB1800

		PHA
		LDA	ENCHPT,X	;char. pattern no. change
		EOR	#00001H		;
		STA	ENCHPT,X	;
		PLA
		SEC
		SBC	#00200H

SANPO_SUB1800	EQU	$
		STA	ENWRK6,X

		RTS
;
;************************************************************************
;*		initial ( hachi )					*
;************************************************************************
HACHIIN		EQU	$			;-- hachiin --
		RTL
;
;************************************************************************
;*		move	( hachi )					*
;************************************************************************
;		ENWRK0
;		ENWRK2	ランダムチェッカー
;		ENWRK4
;		ENWRK6
;		ENWRK8	さんぽ ROUTINE INDEX
;		ENWRKA	さんぽＸ幅
;		ENWRKC	さんぽＹ幅
;
HACHI_YSPD	EQU	$
		WORD	0FA00H,0FB80H
;
HACHIMV		EQU	$			;-- hachimv --
		STZ	ENMUKI,X

		LDA	ENMODE,X		;プレイヤーに食われてる ?
		CMP	#EEATM			;
		BNE	HACHIMV0100		;  no: HACHIMV0100

		LDY	ENWRK8,X		;さんぽとくっついてる ?
		BEQ	HACHIMV0100		;  no: HACHIMV0100

		STZ	ENWRK8,X

		JSR	SANPO_PURGE

		RTL

HACHIMV0100	EQU	$
		JSL	>ENMDCK

		JSL	>DISPCK2		;画面外 ?
		BCC	HACHIMV0200		;  no: HACHIMV0200

		LDY	ENWRK8,X		;さんぽとくっついてる ?
		BEQ	HACHIMV0180		;  no: HACHIMV0180

		JSR	SANPO_PURGE

HACHIMV0180	EQU	$
		JMP	>ENCLEAR_NORETN

HACHIMV0200	EQU	$
		LDY	ENWRK8,X		;さんぽとくっついてる ?
		BNE	HACHIMV0400		; yes: HACHIMV0400

		LDA	ENCBFG,X		;地面に着いてる ?
		AND	#00001			;
		BEQ	HACHIMV0300		;  no: HACHIMV0300

		STZ	ENCHPT,X
		STZ	ENXSPD,X

HACHIMV0300	EQU	$

		RTL

HACHIMV0400	EQU	$
		LDA	ENMODE,Y
		CMP	#EMOVE
		BNE	HACHIMV0480

		LDA	ENMYNO,Y
		CMP	#SANPO
		BEQ	HACHIMV0500

HACHIMV0480	EQU	$
		STZ	ENWRK8,X

		RTL

HACHIMV0500	EQU	$
		LDA	ENCOLD,Y		;さんぽ凍ってる ?
		BEQ	HACHIMV0540		;  no: HACHIMV0540

		STZ	ENWRK8,X
		LDA	#00001
		STA	ENWRK2,Y

		RTL

HACHIMV0540	EQU	$
		LDA	ENWRKA,X
		ORA	ENWRKC,X
		STA	<EWORK2

		LDA	#0000CH
		STA	<EWORK0

		LDA	#00001
		STA	ENCHPT,X

		LDA	ENYSPD,X		;上昇中 ?
		BMI	HACHIMV0700		; yes: HACHIMV0700

		LDA	#0000AH
		STA	<EWORK0

		STZ	ENCHPT,X

		LDA	ENCBFG,X		;地面に着いてる ?
		AND	#00001			;
		BEQ	HACHIMV0700		;  no: HACHIMV0700

		LDA	ENTIM3,X		;着地したところ ?
		BEQ	HACHIMV0550		; yes: HACHIMV0550
		DEC	A			;ジャンプする ?
		BEQ	HACHIMV0580		; yes: HACHIMV0580
		BRA	HACHIMV0700		;

HACHIMV0550	EQU	$
		STZ	ENXSPD,X
		LDA	#00010H
		STA	ENTIM3,X
		BRA	HACHIMV0700

HACHIMV0580	EQU	$
		PHY
		LDY	<EWORK2
		BNE	HACHIMV0680

		LDY	EPXMUK,X
		LDA	!HACHI_XSPD,Y
		STA	ENXSPD,X

		LDY	#000
		LDA	<RANDM0
		AND	#00003
		BEQ	HACHIMV0600

		INC	<ENWRK2,X
		LDA	<ENWRK2,X
		CMP	#00003
		BEQ	HACHIMV0600

		INY
		INY

HACHIMV0600	EQU	$
		STZ	<ENWRK2,X

		LDA	!HACHI_YSPD,Y
		STA	ENYSPD,X

HACHIMV0680	EQU	$
		PLY

HACHIMV0700	EQU	$
		LDA	ENXPSL,X		;さんぽの位置セット
		CLC				;
		ADC	ENWRKA,X		;
		STA	ENXPSL,Y		;
		LDA	ENYPSL,X		;
		SEC				;
		SBC	<EWORK0			;
		CLC				;
		ADC	ENWRKC,X		;
		STA	ENYPSL,Y		;

		LDA	ENCHPT,X		;さんぽのキャラパターンセット
		STA	ENCHPT,Y		;

		PHY				;さんぽの向きセット
		LDY	#000			;
		LDA	ENXSPD,X		;
		BMI	HACHIMV0800		;
						;
		INY				;
		INY				;
						;
HACHIMV0800	EQU	$			;
		TYA				;
		PLY				;
		STA	ENMUKI,Y		;

		LDA	ENWRKA,X		;さんぽのオフセット位置調整
		BEQ	HACHIMV1100		;
		BPL	HACHIMV1000		;
						;
		INC	ENWRKA,X		;
		BRA	HACHIMV1100		;
						;
HACHIMV1000	EQU	$			;
		DEC	ENWRKA,X		;
						;
HACHIMV1100	EQU	$			;
		LDA	ENWRKC,X		;
		BEQ	HACHIMV1300		;
		BPL	HACHIMV1200		;
						;
		INC	ENWRKC,X		;
		BRA	HACHIMV1300		;
						;
HACHIMV1200	EQU	$			;
		DEC	ENWRKC,X		;

HACHIMV1300	EQU	$

		RTL
;
SANPO_PURGE	EQU	$
		LDA	#00001
		STA	ENWRK2,Y

		LDA	#00040H
		STA	ENGPOW,Y

		LDA	ENMUKI,Y
		PHY
		TAY
		LDA	!SANPO_XSPD,Y
		PLY
		STA	ENXSPD,Y

		RTS
;
;************************************************************************
;*		initial ( ghost )					*
;************************************************************************
GHOSTIN		EQU	$		;-- ghostin --
		LDA	#00008H
		STA	ENWRKA,X

		LDA	#00100H
		STA	ENWRK8,X

		RTL
;
;************************************************************************
;*		move	( ghost )					*
;************************************************************************
;		ENWRK0
;		ENWRK2	ROUTINE MODE INDEX
;		ENWRK4
;		ENWRK6
;		ENWRK8	Y SPEED
;		ENWRKA	G POWER
;
GHOST_SUB	EQU	$
		WORD	GHOST_SUB0	;SEARCH
		WORD	GHOST_SUB1	;CHASE
;
		WORD	GHOST_SUB2	;DAMAGE & FALLING
		WORD	GHOST_SUB3	;PLAYER FLASH ( REMOVE ) player kara hanareru
		WORD	GHOST_SUB4	;JOUSHOU
		WORD	GHOST_SUB5	;NUNO OBAKE INIT
		WORD	GHOST_SUB6	;NUNO OBAKE MOVE
;
GHOSTMV		EQU	$		;-- ghostmv --
		JSL	>ENMDCK		;mode check

		TXY
		LDA	<ENWRK2,X
		ASL	A
		TAX
		JSR	(GHOST_SUB,X)

;--------------------< muki set >--------------------------
		LDA	<ENWRK2,X	;憑依霊死んでる ?
		CMP	#00002H		;
		BEQ	GHOSTMV0010	; yes: GHOSTMV0010

		LDA	EPXMUK,X	;キャラ向きセット
		AND	#000FFH		;
		STA	ENMUKI,X

;--------------------< BG check >--------------------------
GHOSTMV0010	EQU	$
		LDA	ENCBFG,X	;
		BIT	#00002H		;head BG = 天井 ?
		BEQ	GHOSTMV0300	;  no: GHOSTMV0300

		LDA	ENYPSL,X	;Y POS. 固定
		SEC			;
		SBC	ENMOVY,X	;
		STA	ENYPSL,X	;

		STZ	ENYSPD,X	;Y SPEED クリア

;----------------< char. pat. change >----------------------
GHOSTMV0300	EQU	$
		LDA	<ENCONT,X	;char. pat. change ?
		CMP	#00006H		;
		BNE	GHOSTMV0800	;  no: GHOSTMV0800

		STZ	<ENCONT,X	;char. pat. change timer clear

		INC	ENCHPT,X	;char. pat. no. inc.
		LDA	ENCHPT,X	;char. pat. no. is max ?
		CMP	#00003H		;
		BNE	GHOSTMV0800	;  no: GHOSTMV0800

		STZ	ENCHPT,X	;char. pat. no. clear

GHOSTMV0800	EQU	$
		INC	<ENCONT,X	;char. pat. change timer inc.

		JMP	>SHOT_EN_KILL_S2
;
GHOST_SUB0	EQU	$
		TYX

		STZ	ENXMAX,X	;X MAX SPEED クリア
		STZ	ENXPOW,X	;X POWER クリア

		LDA	EPWIDX,X	;player search ok. ?
		CLC			;
		ADC	#00040H		;
		CMP	#00080H		;
		BCS	GHOST_SUB0800	;  no: GHOST_SUB0800

		LDA	#00004H		;ghost move
		STA	ENXPOW,X	; x power & x max speed set
					;
		LDA	<RANDM0
		AND	#0003FH
		CLC
		ADC	#00060H

		LDY	EPWIDX+1,X	;
		BMI	GHOST_SUB0200	;
					;
		EOR	#0FFFFH		;
		INC	A		;
					;
GHOST_SUB0200	EQU	$		;
		STA	ENXMAX,X	;

		INC	<ENWRK2,X	;routine mode index set

GHOST_SUB0800	EQU	$

		RTS
;
GHOST_SUB1	EQU	$
		TYX

		JSR	GHOST_CHASE

		LDA	<RANDM0		;プレイヤーに近づく (for y)
		AND	#0003FH		;
					;
		LDY	EPWIDY+1,X	;
		BMI	GHOST_SUB1100	;
					;
		EOR	#0FFFFH		;
		INC	A		;
					;
GHOST_SUB1100	EQU	$		;
		CLC			;
		ADC	ENWRK8,X	;
		STA	ENYSPD,X	;

		LDA	<RANDM0+1	;プレイヤーに近づく (for x)
		AND	#0001FH		;
		CLC			;
		ADC	#00060H		;
					;
		LDY	EPWIDX,X	;
		BMI	GHOST_SUB1200	;
					;
		EOR	#0FFFFH		;
		INC	A		;
					;
GHOST_SUB1200	EQU	$		;
		STA	ENXMAX,X	;

		LDA	EPWIDX,X	;プレイヤーと離れすぎた ?
		CLC			;
		ADC	#00060H		;
		CMP	#000C0H		;
		BCC	GHOST_SUB1700	;  no: GHOOST_SUB1700

		STZ	ENXMAX,X	;X MAX SPEED クリア

		LDA	#00040H		;G MAX SPEED セット
		STA	ENGMAX,X	;

		STZ	<ENWRK2,X	;routine mode index dec.

GHOST_SUB1700	EQU	$
		LDY	ECRSFG,X		;プレイヤーにくっついた ?
		BPL	GHOST_SUB1800		;  no: GHOST_SUB1800

		LDA	NOSEIDX			;先客がいる ?
		AND	#000FFH			;
		ORA	ONENFG			;プレイヤーに乗ってもいい ?
		ORA	PLFLSH			;プレイヤーはダメージを受けている ?
		BNE	GHOST_SUB1800		; yes: GHOST_SUB1800

;++++++++++++++++++++< hyoui shitanda jou- >++++++++++++++++++++++++
		LDA	BABYNO			;赤ちゃん乗ってた ?
		BPL	GHOST_SUB1780		;  no: GHOST_SUB1780

		AND	#00FFFH			;8000H CLEAR
		STA	BABYNO			;

		STZ	<ENWRK0+BABY_INDEX
;		LDA	#BABYM_RMODE01
;		STA	<ENWRK2+BABY_INDEX
		LDA	#00006
		STA	<ENCONT+BABY_INDEX
		LDA	#EMOVE
		STA	ENMODE+BABY_INDEX

		LDA	#00040H			;プレイヤーチェックロックタイマーセット
		STA	ENTIM3+BABY_INDEX	;

GHOST_SUB1780	EQU	$
		LDA	#ENOSE
		STA	ENMODE,X
		TXA
		STA	NOSEIDX

		LDA	#0010100010000001B	;敵でなくす
		STA	ENMOD1,X
		LDA	#0000100100000100B	;凍らない、燃えない
		STA	ENMOD2,X

		LDA	#00020H			;赤ちゃんアイテムフラグクリアタイマーセット
		STA	BABYITCLR		;

		STZ	ENXPOW,X	;X POWER クリア
		STZ	ENXMAX,X	;X MAX SPEED クリア

		LDA	#00260H		;憑依タイマーセット
		STA	ENTIM2,X	;

		LDA	#0003EH		;プレイヤーカラーチェンジタイマーセット *  回数 + 6
		STA	ENTIM0,X	;
		LDA	#00008H		;プレイヤーカラーチェンジタイマーセット
		STA	ENTIM1,X	;

		LDA	#NOSWT
		STA	ENTIM3,X

		LDA	#0FFFFH		;ほかのもんはプレイヤーに乗れなくする
		STA	ONENFG		;

		LDA	#08000H		;敵のせ情報フラグセット
		STA	ENMYNSFG	;

		STZ	<ENWRK2,X	;NOSE routine mode index clear

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
GHOST_SUB1800	EQU	$

		RTS
;
GHOST_SUB2	EQU	$
		TYX

		JSR	GHOST_CHASE

		LDA	ENWRK8,X	;y_speed kakou ?
		BPL	GHOST_SUB2100	; yes: GHOST_SUB2100

		EOR	#0FFFFH		; hanten
		INC	A		;
					;
GHOST_SUB2100	EQU	$		;
		LSR	A		;
		STA	ENYSPD,X	;

		LDA	ENXSPD,X	;furiko chousei
		CLC			;
		ADC	#00040H		;
		CMP	#00080H		;
		BCC	GHOST_SUB2200	;
					;
		LDA	ENXMAX,X	;
		EOR	#0FFFFH		;
		INC	A		;
		STA	ENXMAX,X	;

GHOST_SUB2200	EQU	$
		LDA	ENTIM0,X	;プレイヤーカラーチェンジ終わり ?
		BNE	GHOST_SUB3000	;  no: GHOST_SUB3000

		RTS
;
GHOST_SUB3	EQU	$
GHOSTNS_SUB0	EQU	$
		TYX

		LDA	ENTIM0,X	;プレイヤーカラーチェンジ終わり ?
		BEQ	GHOST_SUB3200	; yes: GHOST_SUB3200

GHOST_SUB3000	EQU	$
		LDA	ENTIM1,X	;プレイヤーカラーチェンジ ?
		BNE	GHOST_SUB3100	;  no: GHOST_SUB3100

		LDA	#00008H		;プレイヤーカラーチェンジタイマーセット
		STA	ENTIM1,X	;

		LDA	PCOLTR		;player colour flash
		EOR	#00002H		;
		STA	PCOLTR		;
		JSL	>PLCOLTR	;player color transfer

GHOST_SUB3100	EQU	$

		RTS

GHOST_SUB3200	EQU	$
		LDY	ENMODE,X
		CPY	#EMOVE
		BEQ	GHOST_SUB3300

		LDA	#0FFFFH		;player key control reverse
		STA	PLKEYFG		;

GHOST_SUB3300	EQU	$
		INC	<ENWRK2,X	;routine mode index inc.

		RTS
;
GHOST_SUB4	EQU	$
		TYX

		LDA	ENTIM2,X	;shoki jou_shou end ?
		BNE	GHOST_SUB4800	;  no: GHOST_SUB4800

		LDA	<RANDM0		;X MAX SPEED セット
		AND	#0003FH		;
		CLC			;
		ADC	#00060H		;
					;
		LDY	EPWIDX,X	;
		BMI	GHOST_SUB4100	;
					;
		EOR	#0FFFFH		;
		INC	A		;
					;
GHOST_SUB4100	EQU	$		;
		STA	ENXMAX,X	;

		STZ	<ENWRK2,X	;routine mode index set

		RTS

GHOST_SUB4800	EQU	$
		JSR	GHOST_CHASE

		LDA	ENWRK8,X	;y_speed joushou ?
		BMI	GHOST_SUB4880	; yes: GHOST_SUB5880

		EOR	#0FFFFH		; hanten
		INC	A		;

GHOST_SUB4880	EQU	$
		ASL	A		;
		STA	ENYSPD,X	;

		RTS
;
GHOST_SUB5	EQU	$
		TYX

		LDA	#00004H		;ghost move
		STA	ENXPOW,X	; x power set

		LDA	#00080H
		STA	ENXMAX,X

		TXA
		AND	#0000FH
		LSR	A
		LSR	A
		LSR	A
		BEQ	GHOST_SUB5100

		LDA	#0FF80H
		STA	ENXMAX,X

GHOST_SUB5100	EQU	$
		LDA	#00040H		;enemy g max set
		STA	ENGMAX,X	;

		LDA	#00008H		;sin y kasokudo set
		STA	ENWRKA,X	;

		LDA	<RANDM0
		AND	#0003FH
		CLC
		ADC	#00060H
		STA	ENWRK8,X

;		LDA	#00100H		;sin y speed set
;		STA	ENWRK8,X	;

		LDA	#00004H		;x power set
		STA	ENGPOW,X	;

		LDA	#00080H		;joushou timer set
		STA	ENTIM0,X	;

		INC	<ENWRK2,X	;routine mode index inc.

		RTS
;
GHOST_SUB6	EQU	$
		TYX

		JSR	GHOST_CHASE

		LDA	ENWRK8,X	;y_speed kakou ?
		BPL	GHOST_SUB6100	; yes: GHOST_SUB6100

		EOR	#0FFFFH		; hanten
		INC	A		;

GHOST_SUB6100	EQU	$
		STA	<EWORK2
		EOR	#0FFFFH
		INC	A
		STA	ENYSPD,X	;

		TXA
		AND	#0000FH
		LSR	A
		LSR	A
		LSR	A
		BCS	GHOST_SUB6200

		LDA	<EWORK2
		LSR	A		;
		LSR	A
		EOR	#0FFFFH
		INC	A
		STA	ENYSPD,X	;

GHOST_SUB6200	EQU	$
		LDA	ENTIM0,X	;routine end ?
		BNE	GHOST_SUB6500	;  no: GHOST_SUB6500

		LDA	<RANDM0		;X MAX SPEED セット
		AND	#0003FH		;
		CLC			;
		ADC	#00060H		;
					;
		LDA	EPWIDX,X	;
		BMI	GHOST_SUB6400	;
					;
		EOR	#0FFFFH		;
		INC	A		;
					;
GHOST_SUB6400	EQU	$		;
		STA	ENXMAX,X	;

		LDY	#001H		;routine mode index set
		STY	<ENWRK2,X	;

GHOST_SUB6500	EQU	$

		RTS
;
GHOST_CHASE	EQU	$
		LDA	ENWRK8,X
		PHA
		CLC
		ADC	#00100H
		CMP	#00200H
		BCC	GHOST_CHASE0500

		LDA	ENWRKA,X
		EOR	#0FFFFH
		INC	A
		STA	ENWRKA,X

GHOST_CHASE0500 EQU	$
		PLA
		CLC
		ADC	ENWRKA,X
		STA	ENWRK8,X

		RTS
;
;************************************************************************
;*		nose	( ghost )					*
;************************************************************************
;		ENWRK0
;		ENWRK2	ROUTINE MODE INDEX
;		ENWRK4
;		ENWRK6
;		ENWRK8	Y SPEED
;		ENWRKA	G POWER
;
GHOSTNS_SUB	EQU	$
		WORD	GHOSTNS_SUB0	;PLAYER COLOUR CHANGE (FLASHING) (GHOST_SUB3 と同じ)
		WORD	GHOSTNS_SUB1	;ON PLAYER
		WORD	GHOSTNS_SUB2	;GET DAMAGE
;
GHOSTNS		EQU	$		;-- ghostns --
		TXY
		LDA	<ENWRK2,X
		ASL	A
		TAX
		JSR	(GHOSTNS_SUB,X)

		RTL
;
GHOSTNS_XMAX	EQU	$
		WORD	00040H,0FFC0H
;
GHOSTNS_SUB1	EQU	$
		TYX

		LDY	BABYNO+1		;赤ちゃん乗ってきた ?
		BMI	GHOSTNS_SUB1100		; yes: GHOSTNS_SUB1100

		LDA	ENTIM2,X	;憑依タイム終わり ?
		BNE	GHOSTNS_SUB1400 ;  no: GHOSTNS_SUB1400

GHOSTNS_SUB1100 EQU	$
		LDY	EPXMUK,X	;X MAX SPEED セット
		LDA	!GHOSTNS_XMAX,Y ;
		STA	ENXMAX,X	;

		LDA	#00079H		;joushou counter set
		BRA	GHOSTNS_SUB1800
					;
GHOSTNS_SUB1400 EQU	$
		LDA	PLBGCR			;player head BG = 天井 ?
		BIT	#0000000000011000B	;
		BEQ	GHOSTNS_SUB1700		;  no: GHOSTNS_SUB1700

		CPX	ENEATFG		;パックンに食われてる ?
		BNE	GHOSTNS_SUB1700 ;  no: GHOSTNS_SUB1700

		LDA	#00030H		;憑依霊フラッシュタイマー * フラッシュ回数
		STA	ENTIM0,X	;

		LDA	#00004H		;憑依霊フラッシュタイマーセット
		STA	ENTIM1,X

		INC	<ENWRK2,X	;routine mode index inc.

GHOSTNS_SUB1500 EQU	$

		RTS

GHOSTNS_SUB1700 EQU	$
		LDA	PLFLSH		;player get damage ?
		BEQ	GHOSTNS_SUB1500 ;  no: GHOSTNS_SUB1500

		CPX	ENEATFG		;パックンに食われてる ?
		BEQ	GHOSTNS_SUB1500 ; yes: GHOSTNS_SUB1500

		LDA	ENMOD0,X	;憑依霊を食えなくする
		EOR	#00E40H		;
		STA	ENMOD0,X	;

		STZ	ENMOD1,X	;BG チェックをキャンセルする

		LDA	#0FFFFH		;joushou counter set

GHOSTNS_SUB1800 EQU	$		;
		STA	ENTIM2,X	;

		LDA	#00004H		;X POWER セット
		STA	ENXPOW,X	;

		LDA	#0003EH		;プレイヤーカラーチェンジタイマーセット *  回数 + 6
		STA	ENTIM0,X	;
		STA	ONENFG		;ghost not on timer set
		STA	PLKEYFG		;player key lock timer set

		LDA	#00008H		;プレイヤーカラーチェンジタイマーセット
		STA	ENTIM1,X	;

		LDA	#00003H
		STA	<ENWRK2,X	;routine mode index set

		BRA	GHOSTNS_SUB2700
;
GHOSTNS_SUB2	EQU	$
		TYX

		LDA	ENTIM1,X	;憑依霊カラーチェンジ ?
		BNE	GHOSTNS_SUB2800 ;  no: GHOSTNS_SUB2800

		LDA	#00004H
		STA	ENTIM1,X

		LDA	ENCLOR,X	;ghost flash
		EOR	#0000EH		;
		STA	ENCLOR,X	;

		LDA	ENTIM0,X	;憑依霊フラッシング終わり ?
		BNE	GHOSTNS_SUB2800 ;  no: GHOSTNS_SUB2800

		LDA	ENMOD0,X	;憑依霊を食えなくする
		EOR	#00E40H		;
		STA	ENMOD0,X	;

		STZ	ENMOD1,X	;BG チェックをキャンセルする

		LDA	ENCLOR,X	;V flip
		ORA	#00080H		;
		STA	ENCLOR,X	;

		LDA	#00080H		;X MAX SPEED セット
		STA	ENXMAX,X	;

		LDA	#00008H		;G POWER セット
		STA	ENWRKA,X	;

		LDA	#00002H		;X POWER セット
		STA	ENXPOW,X	;
;		STA	<ENWRK2,X	;routine mode index set

		LDA	#00038H		;プレイヤーカラーチェンジタイマーセット *  回数
		STA	ENTIM0,X	;
		INC	A
		STA	ONENFG		;ghost not on timer set
		STA	PLKEYFG		;player key lock timer set

		LDA	#00004H		;プレイヤーカラーチェンジタイマーセット
		STA	ENTIM1,X

GHOSTNS_SUB2700 EQU	$
		STZ	<ENCONT,X	;enemy counter clear

		LDA	#EMOVE		;enemy mode change
		STA	ENMODE,X	;

		LDA	#0FFFFH
		STA	NOSEIDX

		LDA	#0000100010000001B	;敵になる
		STA	ENMOD1,X
		LDA	#0000100101010100B	;凍る、燃える
		STA	ENMOD2,X

GHOSTNS_SUB2800 EQU	$

		RTS
;
;************************************************************************
;*		initial ( gitan )					*
;************************************************************************
GITANIN		EQU	$			;-- gitanin --
		JSL	>BG3POLY_INIT

		LDA	ENXPSL,X
		SEC
		SBC	#00008
		STA	ENXPSL,X

		LDA	#00140H			;回転速度セット
		STA	ENWRK6,X

		RTL
;
;************************************************************************
;*		move	( gitan )					*
;************************************************************************
;		ENWRK0
;		ENWRK2
;		ENWRK4	回転角
;		ENWRK6	SOKUDO
;		ENWRK8	傾きロックフラグ
;
;		ENCONT	回転フリーフラグ
;
GITAN_ANG	EQU	000C0H		;initial angle
GITAN_ZOOM	EQU	00104H		;z zoom
GITAN_XWIDE	EQU	00030H		;x range wide
GITAN_XWIDE2	EQU	00060H		;    "        * 2
GITAN_SPDADD	EQU	00003H		;speed up
GITAN_SPDSUB	EQU	0FF00H		;speed down
GITAN_SPDLMT	EQU	00200H		;speed limit
GITAN_PLYLMT	EQU	00020H		;player limit
;;;GITAN_PLYYSPD	EQU	00400H		;player y speed
GITAN_MUL	EQU	000C8H		;(y range / player limit) * 100H
;c8
;
GITAN_FR_ADD	EQU	$
		WORD	0FFFCH,00004H
GITAN_FR_MAX	EQU	$
GITAN_FR_CHK	EQU	$
		WORD	0FEC0H,00140H
;
GITANMV		EQU	$			;-- gitanmv --
		LDA	ENSTFG
		ORA	BIRIBIRI
		ORA	ITEMNO
		BEQ	GITANMV0100
		JMP	GITANMV3000

GITANMV0100	EQU	$
		JSR	BG3RANGE		;プレイヤー画面外 ?
		BCC	GITANMV1000		;  no: GITANMV1000

		STZ	BG3USEFG

		RTL

GITANMV1000	EQU	$
		LDA	<ENWRK4,X		;プレイヤーのチェックしていい ?
		CMP	#02000H			;
		BPL	GITANMV2000		;  no: GITANMV2000

		LDY	#020H			;プレイヤー乗ってる ?
		LDA	#GITAN_XWIDE		;
		JSR	BG3_PLAY_CHK		;
		BCS	GITANMV2000		;  no: GITANMV2000

		LDA	#00008
		STA	ENWRK8,X
		CLC
		ADC	ENWRK6,X
		STA	ENWRK6,X
		BRA	GITANMV2700

GITANMV2000	EQU	$
		LDY	ENWRK8,X		;プレイヤー出ていった後 ?
		BEQ	GITANMV2300		;  no: GITANMV2300

		LDA	<ENWRK4,X		;
		BMI	GITANMV2100		;

		LDA	ENWRK6,X
		CMP	#00140H
		BMI	GITANMV2100

		SEC
		SBC	#00010H
		STA	ENWRK6,X
		BPL	GITANMV2700

GITANMV2100	EQU	$
		STZ	ENWRK8,X
		LDA	#00040H			;［Ｓ］
		JSL	>SOUND_3_ON
		LDY	#000
		LDA	<ENWRK4,X
		BPL	GITANMV2200

		INY
		INY

GITANMV2200	EQU	$
		STY	<ENCONT,X
		BRA	GITANMV2700

GITANMV2300	EQU	$
		LDY	<ENCONT,X
		LDA	ENWRK6,X
		CLC
		ADC	!GITAN_FR_ADD,Y
		STA	ENWRK6,X
		SEC
		SBC	!GITAN_FR_MAX,Y
		EOR	!GITAN_FR_CHK,Y
		BMI	GITANMV2700

		LDA	!GITAN_FR_MAX,Y
		STA	ENWRK6,X
		EOR	<ENWRK4,X
		BMI	GITANMV2700

		LDA	#00040H			;［Ｓ］
		JSL	>SOUND_3_ON
		LDA	<ENCONT,X
		EOR	#00002
		STA	<ENCONT,X

GITANMV2700	EQU	$
		LDA	<ENWRK4,X		;回転角計算
		CLC				;
		ADC	ENWRK6,X		;
		STA	<ENWRK4,X		;

GITANMV3000	EQU	$
		LDA	#GITAN_ZOOM		;z zoom set
		STA	POLYZPS			;

		LDY	<ENWRK5,X		;angle calc. & set
		TYA
		STA	<EWORK0			;
		LDA	#GITAN_ANG		;
		SEC				;
		SBC	<EWORK0			;
		STA	POLYANG			;

		LDA	ENDSYL,X
		PHA
		SEC
		SBC	#00008H
		STA	ENDSYL,X

		LDY	#002H
		JSL	>BG3POLYST

		PLA
		STA	ENDSYL,X

		LDA	#00710H
		STA	MANSEL

		RTL
;
;＊＊＊＊＊＊＊＊＜　プレイヤーチェック　＞＊＊＊＊＊＊＊＊
BG3_PLAY_CHK	EQU	$
		STA	<EWORK4
		ASL	A
		STA	<EWORK6
		TYA
		STA	R6

		LDY	ENWRK5,X
		TYA
		ASL	A
		STA	R1

		M_CHIP	M_ENMY_1P_ROT

		LDX	<ENINDX
		LDA	R1
		EOR	#0FFFFH
;		INC	A
		SEC
		ADC	ECENTY,X
		SEC
		SBC	#00008
		STA	<EWORK2
		SEC
		SBC	PCENTY
		SEC
		SBC	PLFTLN
		SEC
		SBC	PWIDEY
		DEC	A
		CMP	#0FFF4H
		BCC	BG3_PL_CHK_RTS

		STA	<EWORK0

		LDA	PLYSPD
		BMI	BG3_PL_CHK_RTS

		LDA	EPWIDX,X		;player X range in ?
		CLC				;
		ADC	<EWORK4			;
		CMP	<EWORK6			;
		BCS	BG3_PL_CHK_RTS		;  no: BG3_PL_CHK_RTS

		LDA	<EWORK0
		CLC
		ADC	PLYPSL
		CLC
		ADC	#00003H
		STA	PLYPSL		;

		INC	ONLFFG		;player lift on
		STZ	PLYSPD		;player y speed zero clear

		CLC
		RTS

BG3_PL_CHK_RTS	EQU	$
		SEC
		RTS
;
BG3RANGE2	EQU	$
		LDA	ENDSXL,X
		CLC
		ADC	#00068H
		CMP	#00100H+(00068H*2)
		BCS	BG3RANRE_S0100	;X pos display ? ( no:BG3RANRE_S0100 )
		LDA	ENDSYL,X
		CLC
		ADC	#000A0H
		CMP	#000E0H+(000A0H*2)
		BCC	BG3RANRE_S0200	;Y pos display ? ( yes:BG3RANRE_S0200 )
		BRA	BG3RANRE_S0100
;
BG3RANGE	EQU	$
		LDA	ENDSXL,X
		CLC
		ADC	#00068H
		CMP	#00100H+(00068H*2)
		BCS	BG3RANRE_S0100	;X pos display ? ( no:BG3RANRE_S0100 )
		LDA	ENDSYL,X
		CLC
		ADC	#00080H
		CMP	#000E0H+(00080H*2)
		BCC	BG3RANRE_S0200	;Y pos display ? ( yes:BG3RANRE_S0200 )
;
BG3RANRE_S0100	EQU	$
		PHP
		JSL	>ENCLEAR
		PLP

BG3RANRE_S0200	EQU	$

		RTS
;
;************************************************************************
;*		initial ( ＢＧ３八面体 )				*
;************************************************************************
FACE8IN		EQU	$			;-- face8in --
		LDA	SCHMK1
		STA	<EWORK0
		JSL	>BG3POLY_INIT
		LDA	<EWORK0
		STA	SCHMK1
		LDA	ENXPSL,X
		SEC
		SBC	#00008H
		STA	ENXPSL,X
		LDA	MANSEL
		STA	ENWRKA,X

		RTL
;
;************************************************************************
;*		move	( ＢＧ３八面体 )				*
;************************************************************************
;		ENWRK0	プレイヤーの位置角度
;		ENWRK2
;		ENWRK4	回転角
;		ENWRK6	回転速度
;		ENWRK8	プレイヤーＯＮフラグ
;		ENWRKA	MANSEL セーブ
;		ENWRKC
;
FACE8_ANG	EQU	00010H		;initial angle
FACE8_ZOOM	EQU	00104H		;z zoom
FACE8_XWIDE	EQU	00030H		;x range wide
FACE8_XWIDE2	EQU	00060H		;    "        * 2
FACE8_YWIDE	EQU	00038H		;y range wide
FACE8_YWIDE1	EQU	00037H		;y range wide + 1
FACE8_SPDADD	EQU	00008H		;speed up
FACE8_SPDSUB	EQU	00002H		;speed down
FACE8_SPDLMT	EQU	00400H		;speed limit
FACE8_PLYLMT	EQU	00020H		;player limit
FACE8_PLYYSPD	EQU	00400H		;player y speed
FACE8_DIV	EQU	00092H		;10000H / (y range / player limit)
FACE8_MUL	EQU	001C0H		;(y range / player limit) * 100H
;
FACE8_YURE	EQU	$
		WORD	0FFA0H,00060H
;
FACE8MV		EQU	$			;-- face8mv --
		LDA	#FACE8_ZOOM	;z zoom set
		STA	POLYZPS		;
		LDA	<ENWRK5,X	;angle calc. & set
		AND	#000FFH		;
		STA	<EWORK0		;
		LDA	#FACE8_ANG	;
		SEC			;
		SBC	<EWORK0		;
		STA	POLYANG		;

		LDY	#004H
		JSL	>BG3POLYST

		LDA	#00710H
		STA	MANSEL
		LDA	PLMODE			;プレイヤー土管にはいろうとしてる ?
		CMP	#PDKN			;
		BNE	FACE8MV0001		;  no: FACE8MV0001

		LDA	#00215H
		STA	MANSEL

FACE8MV0001	EQU	$
		JSL	>ENMDCK		;mode check

		JSR	BG3RANGE2
		BCC	FACE8MV0010

FACE8MV0008	EQU	$
		M_CHIP	HDMABF_CLR
		I16
		JSL	>M_DMA_BFST
		LWORD	HDMABUF		;to address set
		LWORD	HDMABF		;from address set
		WORD	0D2H*2		;number of byte set
		I8
		LDX	<ENINDX
		STZ	BG3USEFG
		LDA	ENWRKA,X
		STA	MANSEL

		RTL

FACE8MV0010	EQU	$
		LDA	<ENWRK1,X		;player sokudo sum. = limit over ?
		AND	#000FFH			;
		CMP	#FACE8_PLYLMT		;
;		BCS	FACE8MV0100		;  no: FACE8MV0100
		BCC	FACE8MV0020
		JMP	FACE8MV0100

FACE8MV0020	EQU	$
		LDY	PLJUMP			;プレイヤージャンプしてる ?
		BEQ	FACE8MV0040		;  no: FACE8MV0040

		LDY	PLYSPD+1		;プレイヤー下降中 ?
		BPL	FACE8MV0040		; yes: FACE8MV0040
		JMP	FACE8MV0100

FACE8MV0040	EQU	$
		LDA	ENYPSL,X		;プレイヤーＹ範囲ＯＫ ?
		SEC				;
		SBC	PLYPSL			;
		SEC				;
		SBC	PLFTLN			;
		BMI	FACE8MV0043		;  no: FACE8MV0043
		CMP	#FACE8_YWIDE		;
		BCC	FACE8MV0045		; yes: FACE8MV0045

FACE8MV0043	EQU	$
		JMP	FACE8MV0100

FACE8MV0045	EQU	$
		LDA	EPWIDX,X		;プレイヤーＸ範囲ＯＫ ?
		CLC				;
		ADC	#FACE8_XWIDE		;
		CMP	#FACE8_XWIDE2		;
		BCS	FACE8MV0043		;  no: FACE8MV0043

		LDA	ENWRK8,X		;プレイヤー乗ってる ?
		BNE	FACE8MV0060		;  no: FACE8MV0060

		LDA	#FACE8_YWIDE		;プレイヤーの位置角度計算
		SEC				;
		SBC	ENYPSL,X		;
		CLC				;
		ADC	PLYPSL			;
		STA	<EWORK2			;
						;
		M8				;
		LDA	#LOW FACE8_DIV		;
		STA	211BH			;
		LDA	#HIGH FACE8_DIV		;
		STA	211BH			;
		LDA	<EWORK2			;
		STA	211CH			;
		M16				;
						;
		LDA	2135H			;
		XBA				;
		STA	<ENWRK0,X		;

FACE8MV0060	EQU	$
		M8				;プレイヤーＹ　ＰＯＳ．補正
		LDA	#LOW FACE8_MUL		;
		STA	211BH			;
		LDA	#HIGH FACE8_MUL		;
		STA	211BH			;
						;
		LDA	<ENWRK1,X		;
		STA	211CH			;
						;
		M16				;
		LDA	2135H			;
		CLC				;
		ADC	ENYPSL,X		;
		SEC				;
		SBC	#FACE8_YWIDE1		;
		SEC				;
		SBC	PLFTLN			;
		STA	PLYPSL			;

		INC	ONLFFG			;player lift on

		LDY	ENWRK8,X
		BNE	FACE8MV0070

		LDA	ENWRK6,X
		BPL	FACE8MV0070

		STZ	ENWRK6,X

FACE8MV0070	EQU	$
		LDA	#00001H			;プレイヤーＯＮフラグセット
		STA	ENWRK8,X		;

		STZ	PLYSPD			;player y speed zero clear

		LDA	ENWRK6,X		;回転速度計算
		CLC				;
		ADC	#FACE8_SPDADD		;
		CMP	#FACE8_SPDLMT		;
		BCS	FACE8MV0080		;
						;
		STA	ENWRK6,X		;

FACE8MV0080	EQU	$
		LDA	<ENWRK0,X		;プレイヤーの位置角度計算
		CLC				;
		ADC	ENWRK6,X		;
		STA	<ENWRK0,X		;
		BRA	FACE8MV0300

FACE8MV0100	EQU	$
		LDA	ENWRK8,X		;プレイヤー前まで乗ってた ?
		BEQ	FACE8MV0150		;  no: FACE8MV0150

		STZ	ENWRK8,X		;プレイヤーＯＮフラグクリア
		LDA	<ENWRK1,X		;プレイヤー滑り落ちてた ?
		AND	#000FFH			;
		CMP	#FACE8_PLYLMT		;
		BCC	FACE8MV0150		;  no: FACE8MV0150

		LDA	#FACE8_PLYYSPD
		STA	PLYSPD

		STZ	ENWRKC,X

FACE8MV0150	EQU	$
		STZ	<ENWRK0,X		;プレイヤーの位置角度クリア

		LDA	ENWRKC,X
		TAY
		DEC	A
		STA	<EWORK0
		LDA	#FACE8_SPDSUB
		CPY	#000
		BNE	FACE8MV0160

		EOR	#0FFFFH
		INC	A

FACE8MV0160	EQU	$
		CLC
		ADC	ENWRK6,X		;回転速度計算
		STA	ENWRK6,X
		SEC
		SBC	!FACE8_YURE,Y
		EOR	<EWORK0
		BMI	FACE8MV0300

		TYA
		EOR	#00002
		STA	ENWRKC,X
		LDA	!FACE8_YURE,Y
		STA	ENWRK6,X

FACE8MV0300	EQU	$
		LDA	<ENWRK4,X		;回転角計算
		CLC				;
		ADC	ENWRK6,X		;
		STA	<ENWRK4,X		;

		RTL
;
;************************************************************************
;*		initial ( gitan small )					*
;************************************************************************
GITNSIN		EQU	$			;-- gitnsin --
GITNLIN		EQU	$			;-- gitnlin --
		INC	GITNSUM
		RTL
;
;************************************************************************
;*		move	( gitan small )					*
;************************************************************************
;		ENWRK0
;		ENWRK2
;		ENWRK4	SOKUDO SUM.
;		ENWRK6	SOKUDO
;		ENWRK8
;
POLYDATIN	EQU	$
		WORD	POLYDAT		;[0] tiny kabe
;
POLYDAT		EQU	$
		HEX	4		;[ point no ]
		BYTE	 08H,-18H,30H	;[0] [ (Z),(Y),(Xwide) ]
		BYTE	-08H,-18H,30H	;[1] [ (Z),(Y),(Xwide) ]
		BYTE	-08H, 18H,30H	;[2] [ (Z),(Y),(Xwide) ]
		BYTE	 08H, 18H,30H	;[3] [ (Z),(Y),(Xwide) ]
		HEX	4
		HEX	60,0,1		;[ (color),(P1),(P2) ]
		HEX	A2,1,2		;[ (color),(P1),(P2) ]
		HEX	E0,2,3		;[ (color),(P1),(P2) ]
		HEX	22,3,0		;[ (color),(P1),(P2) ]
;
GITNS_ANG	EQU	000C0H		;initial angle
GITNS_ZOOM	EQU	00104H		;z zoom
GITNS_XWIDE	EQU	00018H		;x range wide
GITNS_XWIDE2	EQU	00030H		;    "        * 2
GITNS_SPDADD	EQU	00003H		;speed up
GITNS_SPDSUB	EQU	00100H		;speed down
GITNS_SPDLMT	EQU	00200H		;speed limit
GITNS_PLYLMT	EQU	00020H		;player limit
;c8
GITNL_XWIDE	EQU	00018H		;x range wide
GITNL_SPDADD	EQU	00010H		;speed up
GITNL_SPDLMT	EQU	00400H		;speed limit
;
;
GITNS_SUB	EQU	$
		WORD	GITNS_SUB0
		WORD	GITNL_SUB0
;
GITNSMV		EQU	$			;-- gitnsmv --
GITNLMV		EQU	$			;-- gitnlmv --
		LDA	FRCNT		;first set ?
		CMP	GITNLOC		;
		BEQ	GITNSMV0100	;  no: GITNSMV0100

		STA	GITNLOC		;lock set

		LDA	GITNSUM
		STA	GITNCMP

		M_CHIP	HDMABF_CLR
		LDX	<ENINDX

GITNSMV0100	EQU	$
		LDA	ENSTFG
		ORA	BIRIBIRI
		ORA	ITEMNO
		BEQ	GITNSMV0180
		JMP	GITNSMV0800

GITNSMV0180	EQU	$
		LDX	<ENINDX
		JSR	BG3RANGE	;range over ?
		BCC	GITNSMV0500	;  no: GITNSMV0500

		DEC	GITNSUM		;sum. dec.
		DEC	GITNCMP		;  "
;					;last one ?
		BNE	GITNSMV0300	;  no: GITNSMV0300

GITNSMV0200	EQU	$
		I16

		JSL	>M_DMA_BFST
		LWORD	HDMABUF		;to address set
		LWORD	HDMABF		;from address set
		WORD	0D2H*2*2	;umber of byte set

		MI8
		LDA	#010H
		STA	MANSEL
		LDA	#007H
		STA	SUBSEL
		LDA	#002H
		STA	WIND30
		LDA	#020H
		STA	SUBADF

		LDA	#00011000B	;
		STA	HD420C		;
		M16

;		LDA	#002H		;kabe course deta iranai !!!
;		STA	NMITYP		;
;		STZ	IRQTYP		;

;
;-------------- color set -----------------------
		LDA	#014E9H			;ue
		STA	>DATACOL+(01H*2)
		STA	>MOTOCOL+(01H*2)
		LDA	#014E9H
		STA	>DATACOL+(08H*2)
		STA	>MOTOCOL+(08H*2)
		LDA	#03216H			;mae
		STA	>DATACOL+(02H*2)
		STA	>MOTOCOL+(02H*2)
		LDA	#03216H
		STA	>DATACOL+(09H*2)
		STA	>MOTOCOL+(09H*2)
		LDA	#0000H			;waku
		STA	>DATACOL+(03H*2)
		STA	>MOTOCOL+(03H*2)
;		LDA	#0000H
		STA	>DATACOL+(0AH*2)
		STA	>MOTOCOL+(0AH*2)

GITNSMV0300	EQU	$

		RTL

GITNSMV0500	EQU	$
		TXY
		LDA	ENMYNO,X
		SEC
		SBC	#GITNS
		ASL	A
		TAX
		JSR	(GITNS_SUB,X)

GITNSMV0800	EQU	$
		LDA	#GITNS_ZOOM	;z zoom set
		STA	POLYZPS		;

		LDA	<ENWRK5,X	;angle calc. & set
		AND	#000FFH		;
		STA	<EWORK0		;
		LDA	#GITNS_ANG	;
		SEC			;
		SBC	<EWORK0		;
		STA	POLYANG		;

		LDA	ENDSYL,X
		PHA
		SEC
		SBC	#00010H
		STA	ENDSYL,X

		LDY	#000H
		LDA	!POLYDATIN,Y
		STA	R13		;(R13) <--	    "          (L,H)
		LDA	#078H
		SEC
		SBC	ENDSXL,X
		STA	SCCH3		;BG3 scroll counter_H set
		STA	R1		;(R1) <-- BG3 scroll counter_H
;
		LDA	ENDSYL,X
		CLC
		ADC	#0FH
		STA	R2		;(R2)  <-- display center Y pos
		CLC
		ADC	SCCV1
		STA	POLYYPS
		LDA	POLYZPS		;polygon center Z pos set
		STA	R3		;(R3)  <--	  "       Z pos
		LDA	POLYANG
		AND	#00FFH
		STA	R4		;(R4)  <-- rotation angle
		LDA	#BANK POLYDAT
		STA	R12		;(R12) <-- polygon data address(B)
		M_CHIP	BG3POLY2
;
		DEC	GITNCMP		;last set ?
		BNE	GITNSMV0900	;  no: GITNSMV0900

		JSL	>GITNSMV0200

GITNSMV0900	EQU	$
		LDX	<ENINDX

		PLA
		STA	ENDSYL,X

		RTL
;
GITNS_SUB0	EQU	$
		TYX

		LDA	ENWRK8,X	;katamuki lock ?
		BEQ	GITNS_SUB0300	;  no: GITNS_SUB0300

GITNS_SUB0100	EQU	$
		LDA	<ENWRK4,X	;sokudo sum. calc.
		CLC			;
		ADC	ENWRK6,X	;
		BPL	GITNS_SUB0200	;

		STZ	ENWRK8,X	;katamuki lock free

		LDA	#00000H		;sokudo sum. reset
					;
GITNS_SUB0200	EQU	$		;
		STA	<ENWRK4,X	;
		RTS

GITNS_SUB0300	EQU	$
		LDA	<ENWRK5,X
		AND	#000FFH
		CMP	#GITNS_PLYLMT
		BCC	GITNS_SUB0400

		INC	ENWRK8,X	;katamuki lock flag set
		BRA	GITNS_SUB0100

GITNS_SUB0400	EQU	$
		LDY	#020H
		LDA	#GITNS_XWIDE
		JSR	BG3_PLAY_CHK
		BCS	GITNS_SUB0600

		LDA	<ENWRK4,X	;sokudo sum. calc.
		CLC			;
		ADC	ENWRK6,X	;
		CMP	#04000H		;
		BCC	GITNS_SUB0500	;
					;
		LDA	#04000H		;
					;
GITNS_SUB0500	EQU	$		;
		STA	<ENWRK4,X	;

		LDA	ENWRK6,X	;sokudo calc.
		CLC			;
		ADC	#GITNS_SPDADD	;
		CMP	#GITNS_SPDLMT	;
		BCS	GITNS_SUB0800	;
					;
		STA	ENWRK6,X	;
		RTS

GITNS_SUB0600	EQU	$
		STZ	ENWRK6,X	;sokudo zero clear

		LDA	<ENWRK4,X	;sokudo sum. calc. & zero revise
		SEC			;
		SBC	#GITNS_SPDSUB	;
		BPL	GITNS_SUB0700	;
					;
		LDA	#00000H		;
					;
GITNS_SUB0700	EQU	$		;
		STA	<ENWRK4,X	;

GITNS_SUB0800	EQU	$

		RTS
;
GITNL_SUB0	EQU	$
		TYX

		LDA	ENTIM0,X	;stop gitan ?
		BNE	GITNL_SUB0300	; yes: GITNL_SUB0300

		INC	ENWRK8,X	;kasokudo inc.

		LDA	ENWRK6,X
		CLC
		ADC	#GITNL_SPDADD
		CLC
		ADC	ENWRK8,X
		CMP	#GITNL_SPDLMT
		BCS	GITNL_SUB0100

		STA	ENWRK6,X

GITNL_SUB0100	EQU	$
		LDA	<ENWRK4,X	;sokudo sum. calc.
		CLC			;
		ADC	ENWRK6,X	;
		BPL	GITNL_SUB0200	;

		STZ	ENWRK8,X	;kasokudo clear

		STZ	ENWRK6,X	;sokudo clear

		LDA	ENXPSL,X
		AND	#00010H
		BNE	GITNL_SUB0180

		LDA	#00060H		;stop timer set
		BRA	GITNL_SUB0190

GITNL_SUB0180	EQU	$
		LDA	#00080H		;stop timer set

GITNL_SUB0190	EQU	$
		STA	ENTIM0,X

		LDA	#00000H		;sokudo sum. reset
					;
GITNL_SUB0200	EQU	$		;
		STA	<ENWRK4,X	;

GITNL_SUB0300	EQU	$
		LDA	<ENWRK4,X	;player check ?
		CMP	#01500H		;
		BCS	GITNL_SUB0800	;  no: GITNL_SUB0800

		LDY	#020H
		LDA	#GITNL_XWIDE
		JSR	BG3_PLAY_CHK

GITNL_SUB0800	EQU	$

		RTS
;
;************************************************************************
;*		initial ( normal lift lr )				*
;************************************************************************
NLFLRIN		EQU	$			;-- nlflrin --
		LDA	ENYPSL,X		;セット位置Ｙ　ＰＯＳ．が奇数 ?
		AND	#00010H			;
		BEQ	NLFLRIN0100		;  no: NLFLRIN0100

		LDA	#0FF90H
		BRA	NLFLRIN0200

NLFLRIN0100	EQU	$
		LDA	#00070H

NLFLRIN0200	EQU	$
		STA	ENXMAX,X
		LDA	#00005H
		STA	ENXPOW,X

		LDA	ENXPSL,X
		CLC
		ADC	#00028H
		STA	ENWRKA,X		;ENWRKC <-- 左端のＸ　ＰＯＳ．
		SEC				;ENWRKA <-- 右端のＸ　ＰＯＳ．
		SBC	#00050H			;
		STA	ENWRKC,X		;

NLFLRIN0300	EQU	$
		LDA	BG1TYP
		CMP	#00003
		BEQ	NLFLRIN0400
		CMP	#0000DH
		BNE	NLFLRIN0500

NLFLRIN0400	EQU	$
		INC	ECNTYW,X
		INC	ECNTYW,X

NLFLRIN0500	EQU	$
		LDA	#00014H
		STA	EWIDEX,X
		LDA	#00008H
		STA	EWIDEY,X

		RTL
;
;************************************************************************
;*		move	( normal lift lr )				*
;************************************************************************
NLFLRMV		EQU	$			;-- nlflrmv --
		JSL	>ENMDCK

		LDA	ENXPSL,X
		CMP	ENWRKC,X
		BMI	NLFLRMV0100

		CMP	ENWRKA,X
		BMI	NLFLRMV0200

NLFLRMV0100	EQU	$
		LDA	<ENWRK0,X
		STA	ENXPSL,X
		CLC
		ADC	#00008
		STA	ECENTX,X
		STZ	ENXSPD,X
		LDA	ENXMAX,X
		EOR	#0FFFFH
		INC	A
		STA	ENXMAX,X

NLFLRMV0200	EQU	$
		JMP	NLFUDMV0300
;
;************************************************************************
;*		initial ( normal lift ud )				*
;************************************************************************
NLFUDIN		EQU	$			;-- nlfudin --
		LDA	ENXPSL,X		;セット位置Ｘ　ＰＯＳ．が奇数 ?
		AND	#00010H			;
		BEQ	NLFUDIN0100		;  no: NLFUDIN0100

		LDA	#0FF90H
		BRA	NLFUDIN0200

NLFUDIN0100	EQU	$
		LDA	#00070H

NLFUDIN0200	EQU	$
		STA	ENGMAX,X
		LDA	#00005H
		STA	ENGPOW,X

		LDA	ENYPSL,X
		CLC
		ADC	#00020H
		STA	ENWRKA,X		;ENWRKC <-- 上端のＹ　ＰＯＳ．
		SEC				;ENWRKA <-- 下端のＹ　ＰＯＳ．
		SBC	#00040H			;
		STA	ENWRKC,X		;

		JMP	NLFLRIN0300
;
;************************************************************************
;*		move	( normal lift ud )				*
;************************************************************************
;		ENWRK0	前のフレームのＸ　ＰＯＳ．
;		ENWRK2	ROUTINE MODE INDEX (BLKLF)
;		ENWRK4	前のフレームのＹ　ＰＯＳ．
;		ENWRK6	Ｘ倍率(BLKLF)
;		ENWRK8	Ｙ倍率(BLKLF)
;		ENWRKA	下端のＹ　ＰＯＳ．
;		ENWRKC	上端のＹ　ＰＯＳ．
;
;		ENCONT	使用ＯＢＪナンバー(BLKLF)
;
NLFUDMV		EQU	$			;-- nlfudmv --
		JSL	>ENMDCK

		LDA	ENYPSL,X
		CMP	ENWRKC,X
		BMI	NLFUDMV0100

		CMP	ENWRKA,X
		BMI	NLFUDMV0300

NLFUDMV0100	EQU	$
		LDA	<ENWRK4,X
		STA	ENYPSL,X
		CLC
		ADC	#00008
		STA	ECENTY,X
		STZ	ENYSPD,X
		LDA	ENGMAX,X
		EOR	#0FFFFH
		INC	A
		STA	ENGMAX,X

NLFUDMV0300	EQU	$
		LDA	ENXPSL,X
		SEC
		SBC	<ENWRK0,X
		STA	ENMOVX,X
		LDA	ENYPSL,X
		SEC
		SBC	<ENWRK4,X
		STA	ENMOVY,X

NLFUDMV0310	EQU	$
		LDY	GOAL_BOSS_CLEAR		;ボスクリア中 ?
		BNE	NLFUDMV0410		; yes: NLFUDMV0410

		LDY	PLYSPD+1		;プレイヤー上昇中 ?
		BMI	NLFUDMV0410		; yes: NLFUDMV0410

		LDY	PLEATFG			;プレイヤー食われてる ?
		BNE	NLFUDMV0410		; yes: NLFUDMV0410

		CPX	PONLFFG			;初めて衝突した ?
		BNE	NLFUDMV0400		; yes: NLFUDMV0400

		LDA	PLBGCR			;プレイヤー壁にあたってる ?
		AND	#0000000111100000B	;
		BEQ	NLFUDMV0330		;  no: NLFUDMV0330

		AND	#0000000110000000B	;リフトの進行方向の壁にあたってる ?
		DEC	A			;
		EOR	ENXSPD,X		;
		BMI	NLFUDMV0340		; yes: NLFUDMV0340

NLFUDMV0330	EQU	$
		LDA	PLXPSL
		CLC
		ADC	ENMOVX,X
		STA	PLXPSL
		LDA	PCENTX
		CLC
		ADC	ENMOVX,X
		STA	PCENTX

NLFUDMV0340	EQU	$
		LDA	PLBGCR			;天井か床についてる ?
		AND	#0000000000011111B	;
		BEQ	NLFUDMV0380		;  no: NLFUDMV0380

		AND	#0000000000011000B	;リフトの進行方向であたってる ?
		DEC	A			;
		EOR	ENYSPD,X		;
		BMI	NLFUDMV0400		; yes: NLFUDMV0400

NLFUDMV0380	EQU	$
		LDA	PLYPSL
		CLC
		ADC	ENMOVY,X
		STA	PLYPSL
		LDA	PCENTY
		CLC
		ADC	ENMOVY,X
		STA	PCENTY
;		LDA	ECENTY,X
;		SEC
;		SBC	PCENTY
;		SEC
;		SBC	EWIDEY,X
;		SEC
;		SBC	PWIDEY
;		STA	<EWORK0
;		SEC
;		ADC	PLYPSL
;		STA	PLYPSL
;		LDA	<EWORK0
;		SEC
;		ADC	PCENTY
;		STA	PCENTY
		BRA	NLFUDMV0440

NLFUDMV0400	EQU	$
		LDY	PLJUMP			;プレイヤージャンプ中 ?
		BNE	NLFUDMV0440

NLFUDMV0410	EQU	$
		JMP	NLFUDMV0500		;  no: NLFUDMV0500

NLFUDMV0440	EQU	$
		LDA	EWIDEX,X		;プレイヤーと衝突した ?
		CLC				;
		ADC	PWIDEX			;
		ASL	A			;
		STA	<EWORK0			;
		LSR	A			;
		CLC				;
		ADC	ECENTX,X		;
		SEC				;
		SBC	PCENTX			;
		CMP	<EWORK0			;
		BCS	NLFUDMV0500		;
						;
		LDA	EWIDEY,X		;
		CLC				;
		ADC	PWIDEY			;
		ASL	A			;
		STA	<EWORK0			;
		LSR	A			;
		CLC				;
		ADC	ECENTY,X		;
		SEC				;
		SBC	PCENTY			;
		CMP	<EWORK0			;
		BCS	NLFUDMV0500		;  no: NLFUDMV0500

		SEC				;プレイヤー上から乗ってきた ?
		SBC	<EWORK0			;
		STA	<EWORK2			;
		CMP	#0FFF6H			;
		BCC	NLFUDMV0500		;  no: NLFUDMV0500

		CPX	PONLFFG			;プレイヤー乗ってる ?
		BEQ	NLFUDMV0480		; yes: NLFUDMV0480

		LDY	PONLFFG			;プレイヤー誰にも乗ってない ?
		BNE	NLFUDMV0600		;  no: NLFUDMV0600

		STX	PONLFFG			;プレイヤーＯＮフラグセット

NLFUDMV0480	EQU	$
		LDA	PLYPSL			;プレイヤーＹ　ＰＯＳ．補正
		CLC
		ADC	<EWORK2
		CLC
		ADC	#00002
		STA	PLYPSL			;

		STZ	PLSPJP
		STZ	PLYSPD
		INC	ONLFFG
		BRA	NLFUDMV0600

NLFUDMV0500	EQU	$
		CPX	PONLFFG			;プレイヤー乗ってた ?
		BNE	NLFUDMV0600		;  no: NLFUDMV0600

		STZ	PONLFFG			;プレイヤーＯＮフラグクリア

NLFUDMV0600	EQU	$
		LDA	ENXPSL,X
		STA	<ENWRK0,X
		LDA	ENYPSL,X
		STA	<ENWRK4,X

		RTL
;
;****************************************************************
;*		initial ( のーまるロープリフト )		*
;****************************************************************
NRLF0_I_SPD	EQU	$
		WORD	0AA00H,00000H		;00100H
		WORD	05400H,00001H		;00200H
		WORD	00000H,00004H		;00400H
;
NRLF0IN		EQU	$			;-- nrlf0in --
NRLF1IN		EQU	$			;-- nrlf1in --
HRLF0IN		EQU	$			;-- hrlf0in --
HRLF1IN		EQU	$			;-- hrlf1in --
		LDA	ENMYNO,X		;スピードセット
		SEC				;
		SBC	#NRLF0			;
		AND	#00002			;
		ASL	A			;
		TAY				;
		LDA	!NRLF0_I_SPD,Y		;
		STA	ENWRK6,X		;
		LDA	!NRLF0_I_SPD+2,Y	;
		STA	ENWRK8,X		;

NRLF2IN		EQU	$			;-- nrlf2in --
NRLF3IN		EQU	$			;-- nrlf3in --
HRLF2IN		EQU	$			;-- hrlf2in --
HRLF3IN		EQU	$			;-- hrlf3in --
SRLF0IN		EQU	$			;-- srlf0in --
SRLF1IN		EQU	$			;-- srlf1in --
		LDA	#00080H
		STA	ENWRKA,X

		LDA	#NRLF0
		AND	#00001
		STA	<EWORK0

		LDA	ENMYNO,X		;左に動いてる ?
		SEC				;
		SBC	#NRLF0			;
		AND	#00001			;
		CMP	<EWORK0			;
		BNE	NRLF0IN0800		; yes: NRLF0IN0800

		LDA	#08000H			;進行方向回転角セット
		STA	<ENCONT,X		;

NRLF0IN0800	EQU	$
		LDA	#00014H
		STA	EWIDEX,X
		LDA	#00008
		STA	EWIDEY,X

		RTL
;
;****************************************************************
;*		move	( のーまるロープリフト )		*
;****************************************************************
;		ENWRK0	前のフレームのＸ　ＰＯＳ．
;		ENWRK2
;		ENWRK4	前のフレームのＹ　ＰＯＳ．
;		ENWRK6	移動スカラー量ＬＯＷ
;		ENWRK8	移動スカラー量ＨＩＧＨ
;B		ENWRKA	円チェックデータ
;B		ENWRKB	ユニットチェックデータ
;		ENWRKC	ＢＧチェックインデックス
;
;		ENCONT	進行方向回転角
;
;		ENXMAX	角振動数
;
NRLF0MV		EQU	$			;-- nrlf0mv --
NRLF1MV		EQU	$			;-- nrlf1mv --
HRLF0MV		EQU	$			;-- hrlf0mv --
HRLF1MV		EQU	$			;-- hrlf1mv --
NRLF2MV		EQU	$			;-- nrlf2mv --
NRLF3MV		EQU	$			;-- nrlf3mv --
HRLF2MV		EQU	$			;-- hrlf2mv --
HRLF3MV		EQU	$			;-- hrlf3mv --
SRLF0MV		EQU	$			;-- srlf0mv --
SRLF1MV		EQU	$			;-- srlf1mv --
		JSL	>ENMDCK

;		ldy	#004h
;		sty	2100h
;
		LDA	ENXPSL,X
		STA	<EWORK0
		LDA	ENYPSL,X
		STA	<EWORK2

		JSL	>NRLF0_BGCHK

		LDY	ENWRKA,X		;空中 ?
		BMI	NRLF0MV0200		; yes: NRLF0MV0200

		LDA	ENXPSL,X
		SEC
		SBC	<EWORK0
		CLC
		ADC	ENMOVX,X
		STA	ENMOVX,X
		LDA	ENYPSL,X
		SEC
		SBC	<EWORK2
		CLC
		ADC	ENMOVY,X
		STA	ENMOVY,X
		LDA	ENXPSL,X
		CLC
		ADC	ECNTXW,X
		STA	ECENTX,X
		LDA	ENYPSL,X
		CLC
		ADC	ECNTYW,X
		STA	ECENTY,X
		BRA	NRLF0MV0300

NRLF0MV0200	EQU	$
		LDA	ENYSPD,X
		BPL	NRLF0MV0300

		CMP	#08000H
		ROR	A
		STA	R2
		LDA	ENXSPD,X
		CMP	#08000H
		ROR	A
		STA	R1
		M_CHIP	M_RAD_GET
		LDX	<ENINDX
		LDA	R0
		STA	ENXMAX,X
		LSR	A
		XBA
		STA	<ENCONT,X

NRLF0MV0300	EQU	$
		LDY	PONLFFG
		STY	<EWORKE

		JSL	>NLFUDMV0310		;プレイヤー＆チェック

		LDA	ENWRK8,X		;動いてる ?
		ORA	ENWRK6,X		;
		BNE	NRLF0MV0500		; yes: NRLF0MV0500

		CPX	PONLFFG			;プレイヤー乗ってる ?
		BNE	NRLF0MV0400		;  no: NRLF0MV0400

		LDA	ENMYNO,X		;スピードセット
		SEC				;
		SBC	#NRLF2			;
		AND	#00006			;
		ASL	A			;
		TAY				;
		LDA	!NRLF0_I_SPD,Y		;
		STA	ENWRK6,X		;
		LDA	NRLF0_I_SPD+2,Y		;
		STA	ENWRK8,X		;

NRLF0MV0400	EQU	$
;		ldy	#00fh
;		sty	2100h

		RTL

NRLF0MV0500	EQU	$
		CPX	<EWORKE			;前までプレイヤーが乗ってた ?
		BNE	NRLF0MV0400		;  no: NRLF0MV0400

		CPX	PONLFFG			;プレイヤー乗ってる ?
		BEQ	NRLF0MV0400		; yes: NRLF0MV0400

		LDA	PLFLSH			;プレイヤーダメージを受けてる ?
		BNE	NRLF0MV0400		; yes: NRLF0MV0400

		LDY	PLEATFG			;プレイヤー食われてる ?
		BNE	NRLF0MV0400		; yes: NRLF0MV0400

		LDY	ENWRKA,X		;リフトは線の上 ?
		BMI	NRLF0MV0900		;  no: NRLF0MV0900

		LDA	<ENCONT,X		;プレイヤーに慣性をつける
		AND	#0FF00H			;
		XBA				;
		ASL	A			;
		EOR	#00100H			;
		STA	R1			;
		LDA	ENWRK7,X		;
		STA	R6			;
		M_CHIP	M_ENMY_1P_ROT		;
		LDX	<ENINDX			;
		LDA	R0			;
		CLC				;
		ADC	PLXSPD			;
		STA	PLXSPD			;
		STA	PLMVSP			;
		LDA	R1			;
		CLC				;
		ADC	PLYSPD			;
		STA	PLYSPD			;
		BRA	NRLF0MV0B00

NRLF0MV0900	EQU	$
		LDA	ENXSPD,X		;リフトは慣性で動いてる ?
		ORA	ENYSPD,X		;
		BEQ	NRLF0MV0C00		;  no: NRLF0MV0C00

		LDA	ENXSPD,X
		CLC
		ADC	PLXSPD
		STA	PLXSPD
		STA	PLMVSP
		LDA	ENYSPD,X
		BMI	NRLF0MV0A00

		CMP	#08000H
		ROR	A

NRLF0MV0A00	EQU	$
		CLC
		ADC	PLYSPD
		STA	PLYSPD

NRLF0MV0B00	EQU	$
		LDA	PLXSPD
		CMP	#00800H
		BMI	NRLF0MV0B10

		LDA	#00800H

NRLF0MV0B10	EQU	$
		CMP	#0F800H
		BPL	NRLF0MV0B20

		LDA	#0F800H

NRLF0MV0B20	EQU	$
		STA	PLXSPD
		STA	PLMVSP

		LDA	PLYSPD
		CMP	#00800H
		BMI	NRLF0MV0B30

		LDA	#00800H

NRLF0MV0B30	EQU	$
		CMP	#0F800H
		BPL	NRLF0MV0B40

		LDA	#0F800H

NRLF0MV0B40	EQU	$
		STA	PLYSPD

NRLF0MV0C00	EQU	$

		RTL
;
NRLF0_BGCHK	EQU	$
		LDA	<ENCONT,X
		STA	CREG3

		TXA
		STA	R10

		LDA	#0FFFFH
		STA	CREG0

		LDA	ENXMAX,X		;WRKF <- 角振動数
		STA	CCWORKF

		M_CHIP	M_ROPE_CHK

		LDX	<ENINDX
		LDA	CCWORKF
		STA	ENXMAX,X

;		LDY	CREG0
;		CPY	#002
;		BNE	NRLF0_BGCHK0100
;
;		NOP
;
;NRLF0_BGCHK0100 EQU	$
;		LDY	CREG1
;		CPY	#002
;		BNE	NRLF0_BGCHK0200
;
;		NOP
;
;NRLF0_BGCHK0200 EQU	$

		RTL
;
;****************************************************************
;*		initial ( ぐるぐるロープリフト )		*
;****************************************************************
GRPLFIN		EQU	$			;-- grplfin --
		JSL	>TROBJ_SR_4x4_CL

		LDA	#00080H
		STA	ENWRKA,X

		STZ	ENMUKI,X

		RTL
;
;****************************************************************
;*		move	( ぐるぐるロープリフト )		*
;****************************************************************
;		ENWRK0	プレイヤーＯＮフラグ
;		ENWRK2	プレイヤー補正中のＸ　ＰＯＳ．の小数値
;		ENWRK4	絵の回転角
;		ENWRK6	移動スカラー量ＬＯＷ
;		ENWRK8	移動スカラー量ＨＩＧＨ
;B		ENWRKA	円チェックデータ
;B		ENWRKB	ユニットチェックデータ
;		ENWRKC	ＢＧチェックインデックス
;
;		EWORKE	移動スカラー量加速値
;
;		ENCONT	回転角
;
;		ENXMAX	角振動数
;
GRPLFMV		EQU	$			;-- grplfmv --
		JSL	>TROBJ_OAM_4x4

		JSL	>ENMDCK

		STZ	<EWORKE			;移動スカラー量加速値クリア

		LDA	ENXPSL,X
		STA	<EWORK0
		LDA	ENYPSL,X
		STA	<EWORK2

		JSR	GRPLF_BGCHK

		LDY	ENWRKA,X		;空中 ?
		BMI	GRPLFMV0200		; yes: GRPLFMV0200

		LDA	ENXPSL,X
		SEC
		SBC	<EWORK0
		CLC
		ADC	ENMOVX,X
		STA	ENMOVX,X
		LDA	ENYPSL,X
		SEC
		SBC	<EWORK2
		CLC
		ADC	ENMOVY,X
		STA	ENMOVY,X
		BRA	GRPLFMV0300

GRPLFMV0200	EQU	$
		LDA	ENYSPD,X
		BPL	GRPLFMV0300

		CMP	#08000H
		ROR	A
		STA	R2
		LDA	ENXSPD,X
		CMP	#08000H
		ROR	A
		STA	R1
		M_CHIP	M_RAD_GET
		LDX	<ENINDX
		LDA	R0
		STA	ENXMAX,X
		LSR	A
		XBA
		STA	<ENCONT,X

GRPLFMV0300	EQU	$
		JSR	GRPLF_PLCHK

		JSR	GRPLF_SK_CHK

		JSR	GRPLF_MUKI_CHK

		JSR	GRPLF_ROT_SET

		RTL
;
GRPLF_BGCHK	EQU	$
		TXA
		STA	R10

		LDA	ENXMAX,X		;WRKF <- 角振動数
		STA	CCWORKF

		M_CHIP	M_ROPE_CHK

		LDX	<ENINDX
		LDA	CCWORKF
		STA	ENXMAX,X

		RTS
;
GRPLF_PLCHK	EQU	$
		LDY	ECRSFG,X		;プレイヤーにあたった ?
		BMI	GRPLF_PLCHK0300		; yes: GRPLF_PLCHK0300

GRPLF_PLCHK0100 EQU	$
		CPX	PONLFFG			;プレイヤー乗ってた ?
		BNE	GRPLF_PLCHK0200		;  no: GRPLF_PLCHK0200

		STZ	PONLFFG

		LDY	PLEATFG			;プレイヤー食われてる ?
		BNE	GRPLF_PLCHK0200		; yes: GRPLF_PLCHK0200

		LDA	<ENCONT,X		;プレイヤーに慣性をつける
		AND	#0FF00H			;
		XBA				;
		ASL	A			;
		EOR	#00100H			;
		STA	R1			;
		LDA	ENWRK7,X		;
		STA	R6			;
		M_CHIP	M_ENMY_1P_ROT		;
		LDX	<ENINDX			;
		LDA	R0			;
		CLC				;
		ADC	PLXSPD			;
		STA	PLXSPD			;
		STA	PLMVSP			;
		LDA	R1			;
		CLC				;
		ADC	PLYSPD			;
		STA	PLYSPD			;

GRPLF_PLCHK0200 EQU	$

		RTS

GRPLF_PLCHK0300 EQU	$
		LDY	PLYSPD+1		;プレイヤージャンプ中 ?
		BMI	GRPLF_PLCHK0100		; yes: GRPLF_PLCHK0100

		LDY	PLEATFG			;プレイヤー食われてる ?
		BNE	GRPLF_PLCHK0100		; yes: GRPLF_PLCHK0100

		LDA	EPWIDY,X		;プレイヤーに乗られた ?
		SEC				;
		SBC	PWIDEY			;
		SEC				;
		SBC	EWIDEY,X		;
		CMP	#0FFF8H			;
		BCC	GRPLF_PLCHK0100		;  no: GRPLF_PLCHK0100

		CPX	PONLFFG			;すでに乗ってる ?
		BEQ	GRPLF_PLCHK1000		; yes: GRPLF_PLCHK1000

		LDY	PONLFFG			;ほかの誰かに乗ってる ?
		BNE	GRPLF_PLCHK0200		; yes: GRPLF_PLCHK0200

		STX	PONLFFG
		LDA	PLXPSL-1
		AND	#0FF00H
		STA	<ENWRK2,X		;プレイヤー補正中のＸ　ＰＯＳ．の小数値クリア

GRPLF_PLCHK1000 EQU	$
		LDA	ENYPSL,X		;プレイヤーＹ　ＰＯＳ．補正
		SEC				;
		SBC	#00022H			;
		STA	PLYPSL			;

		STZ	PLYSPD
		INC	ONLFFG

		LDA	#00120H
		JSL	>TAMA_NORI_XREV

;		LDA	ENMOVX,X		;プレイヤーＸ　ＰＯＳ．補正
;		ASL	A			;
;		CLC				;
;		ADC	PLXPSL			;
;		STA	PLXPSL			;

		LDA	<ENCONT,X
		CLC
		ADC	#04000H
		PHP
		LDA	EPWIDX,X
		XBA
		AND	#0FF00H
		CMP	#08000H
		ROR	A
		CMP	#08000H
		ROR	A
		PLP
		BPL	GRPLF_PLCHK1700

		EOR	#0FFFFH
		INC	A

GRPLF_PLCHK1700 EQU	$
		CLC
		ADC	<EWORKE
		STA	<EWORKE

		RTS
;
TAMA_NORI_XREV	EQU	$
		STA	R6
		LDA	ENMOVX-1,X
		AND	#0FF00H
		STA	R0
		M_CHIP	MULTIPLY
		LDX	<ENINDX
		LDA	PLXPSL-1
		AND	#0FF00H
		STA	<EWORK0
		LDY	<ENWRK2,X
		TYA
		ORA	<EWORK0
		STA	<ENWRK2,X

		LDA	PLXPSL+1
		AND	#000FFH
		STA	<EWORK0

		LDA	R0
		BPL	TAMA_N_XREV0100

		CLC
		ADC	<ENWRK2,X
		STA	<ENWRK2,X
		LDA	<EWORK0
		SBC	#00
		BRA	TAMA_N_XREV0200

TAMA_N_XREV0100 EQU	$
		CLC
		ADC	<ENWRK2,X
		STA	<ENWRK2,X
		LDA	<EWORK0
		ADC	#00

TAMA_N_XREV0200 EQU	$
		XBA
		STA	<EWORK0
		LDA	<ENWRK2+1,X
		AND	#000FFH
		ORA	<EWORK0
		STA	PLXPSL

		RTL
;
GRPLF_SK_CHK	EQU	$
		LDA	<ENCONT,X
		AND	#0FF00H
		XBA
		ASL	A
		STA	R1
		LDA	#0FC00H
		STA	R6
		M_CHIP	M_ENMY_1P_ROT
		LDX	<ENINDX
		LDA	R1
		BPL	GRPLF_S_C0400

		ASL	A

GRPLF_S_C0400	EQU	$
		CLC
		ADC	<EWORKE
		STA	<EWORKE

		RTS
;
GRPLF_MUKI_CHK	EQU	$
		LDA	<EWORKE			;加速してる ?
		SEC				;(80h = resist power)
		SBC	#00080H			;
		BPL	GRPLF_M_C0200		; yes: GRPLF_M_C0200

		CLC
		ADC	ENWRK6,X
		STA	ENWRK6,X
		LDA	ENWRK8,X
		SBC	#000
		STA	ENWRK8,X		;スピードの向き変わった ?
		BPL	GRPLF_M_C0800		;  no: GRPLF_M_C0800

		STZ	ENWRK8,X
		STZ	ENWRK6,X

		LDA	<ENCONT,X		;進行方向反転
		CLC				;
		ADC	#08000H			;
		STA	<ENCONT,X		;
		LDA	ENXMAX,X		;
		CLC				;
		ADC	#00100H			;
		AND	#001FEH			;
		STA	ENXMAX,X		;
		BRA	GRPLF_M_C0800

GRPLF_M_C0200	EQU	$
		CLC
		ADC	ENWRK6,X
		STA	ENWRK6,X
		LDA	ENWRK8,X
		ADC	#000
		STA	ENWRK8,X
		LDA	ENWRK7,X
		CMP	#00200H
		BMI	GRPLF_M_C0800

		LDA	#00002H
		STA	ENWRK8,X
		LDA	#00000H
		STZ	ENWRK6,X

GRPLF_M_C0800	EQU	$
		LDA	<ENCONT,X		;絵の回転角計算
		CLC				;
		ADC	#04000H			;
		PHP				;
		LDA	ENWRK7,X		;
		ASL	A			;
		ASL	A			;
		PLP				;
		BPL	GRPLF_M_C1000		;
						;
		EOR	#0FFFFH			;
		INC	A			;
						;
GRPLF_M_C1000	EQU	$			;
		CLC				;
		ADC	<ENWRK4,X		;
		STA	<ENWRK4,X		;

		RTS
;
GRPLF_ROT_SET	EQU	$
		LDA	#CIPCHD3+0000H+001	;(R12) <-- 転送元アドレスセット
		STA	R12			;
		LDA	#BANK CIPCHD3+0000H+001 ;(R13) <-- 転送元バンクセット
		STA	R13			;

		LDA	<ENWRK5,X		;(R5) <- 回転角セット
		AND	#000FFH			;
		STA	R5			;

		LDA	#00100H			;(R6) <- 倍率セット
		STA	R6			;

		LDY	ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_X,X		;(R3) <- ビットマップ座標＿Ｘセット
		STA	R3			;
		LDA	>TROBJ_PLOT_Y,X		;(R2) <- ビットマップ座標＿Ｙセット
		STA	R2			;
;
;-------------- OBJ mode 7 set ----------------------------------
		M_CHIP	C_32_ROTZOM

		LDX	<ENINDX

		INC	OBM7WF		;mode 7 OBJ chara DMA "ON"

		RTS
;
;------------------------------------------------------------------------
;-		プレイヤーダウンセット					-
;------------------------------------------------------------------------
TO_PLDOWN	EQU	$
		LDA	#PFAL		;(A) <-- プレイヤーダウンモードへ
		JSL	>TIMEUP_SET_S
		STZ	PLSWIM
		LDA	#PFLP
		STA	PLWALK
		LDA	#022H
		STA	PLWKTM
		STZ	PCHNG_TM
		STZ	PLSTFG
		RTL
;
;************************************************************************
;*		initial ( 不安定床 )					*
;************************************************************************
FYUKAIN		EQU	$			;-- fyukain --
		JSL	>TROBJ_SR_4x4_CL

		JSL	>FYUKA_ROT_SET_I

		STZ	ENMUKI,X

		LDA	#02000H
		STA	ENWRKA,X

		RTL
;
;************************************************************************
;*		move	( 不安定床 )					*
;************************************************************************
;		ENWRK0	プレイヤーＯＮフラグ
;		ENWRK2	ROUTINE MODE INDEX
;		ENWRK4
;		ENWRK6
;		ENWRK8	回転角
;		ENWRKA	回転角速度
;		ENWRKC	回転角速度
;
FYUKA_ANGADD	EQU	$
		WORD	00020H,0FFE0H
FYUKA_XSPD	EQU	$
		WORD	0FF00H,00100H
;
FYUKAMV		EQU	$			;-- fyukamv --
;＊＊＊＊＊＊＊＊＜　回転角計算　＞＊＊＊＊＊＊＊＊＊＊
		LDY	#000
		JSR	FYUKA_ANG_CALC

		LDY	#000			;ずれ始めてる ?
		LDA	ENWRK9,X		;
		AND	#000FFH			;
		CLC				;
		ADC	#00020H			;
		AND	#000FFH			;
		CMP	#00040H			;
		BCC	FYUKAMV0320		;  no: FYUKAMV0320
		CMP	#00080H			;
		BMI	FYUKAMV0310		;ずれ開始
						;
		INY				;
		INY				;
						;
FYUKAMV0310	EQU	$			;
		LDA	!FYUKA_XSPD,Y		;
		STA	ENXMAX,X		;
		LDA	#00020H			;
		STA	ENXPOW,X		;
		ASL	A	;[ LDA	#00040H ]
		STA	ENGPOW,X		;
						;
		LDA	#00400H			;
		STA	ENGMAX,X		;

FYUKAMV0320	EQU	$
;＊＊＊＊＊＊＊＊＜　ＯＡＭセット　＞＊＊＊＊＊＊＊＊＊＊
		LDA	ENWRK9,X
		AND	#000FFH
		ASL	A
		STA	R1

		LDA	#01A00H			;(R6) <- ゆかＸ間隔
		STA	R6			;

		M_CHIP	M_FYUKA_POSCALC

		LDX	<ENINDX

		PHX				;
						;
		LDA	ENTROB,X
		LSR	A
		CLC
		ADC	#001C0H
		STA	<EWORK0

		LDA	ENCLOR,X
		XBA
		AND	#0FF00H
		ORA	<EWORK0
		STA	<EWORK0

		LDA	ENXPSL,X
		CLC
		ADC	#00008
		SEC
		SBC	ESCCH1
		SEC
		SBC	R0
		STA	<EWORK2

		LDA	ENYPSL,X
		CLC
		ADC	#00008
		SEC
		SBC	ESCCV1
		SEC
		SBC	R1
		STA	<EWORK4

		LDA	#00003
		STA	<EWORK6

		I16				;
		LDY	ENOAML,X		;

FYUKAMV0400	EQU	$
		LDA	<EWORK2
		SEC
		SBC	#00010H
		STA	SOAM_DX+0+8*0,Y
		STA	SOAM_DX+0+8*2,Y
		LDA	<EWORK2
		STA	SOAM_DX+0+8*1,Y
		STA	SOAM_DX+0+8*3,Y
		CLC
		ADC	R0
		STA	<EWORK2

		LDA	<EWORK4
		SEC
		SBC	#00010H
		STA	SOAM_DX+2+8*0,Y
		STA	SOAM_DX+2+8*1,Y
		LDA	<EWORK4
		STA	SOAM_DX+2+8*2,Y
		STA	SOAM_DX+2+8*3,Y
		CLC
		ADC	R1
		STA	<EWORK4

		LDA	<EWORK0
		STA	SOAM_DX+4+8*0,Y
		INC	A
		INC	A
		STA	SOAM_DX+4+8*1,Y
		CLC
		ADC	#0001EH			;00020H - 2
		STA	SOAM_DX+4+8*2,Y
		INC	A
		INC	A
		STA	SOAM_DX+4+8*3,Y

		TYA
		CLC
		ADC	#00020H
		TAY

		DEC	<EWORK6
		BNE	FYUKAMV0400

		I8
		PLX

		JSL	>ENMDCK

;＊＊＊＊＊＊＊＊＜　プレイヤーチェック　＞＊＊＊＊＊＊＊＊＊＊
		LDA	PLYSPD
		BPL	FYUKAMV1000
		JMP	FYUKAMV1700

FYUKAMV1000	EQU	$
		LDA	ENWRK9,X
		AND	#000FFH
		CLC
		ADC	#00028H
		AND	#000FFH
		CMP	#00050H
		BCC	FYUKAMV1080
		JMP	FYUKAMV1800

FYUKAMV1080	EQU	$
		LDA	#0FA00H			;(R4) <- チェックＹ　ＰＯＳ．の上限
		STA	R4			;

		LDY	<ENWRK0,X		;プレイヤー乗ってる ?
		BEQ	FYUKAMV1200		;  no: FYUKAMV1200

		LDA	PLXPSL_OLD		;Ｙ　ＰＯＳ．補正
		SEC				;
		SBC	PLXPSL			;
		BPL	FYUKAMV1100		;
						;
		EOR	#0FFFFH			;
		INC	A			;
						;
FYUKAMV1100	EQU	$			;
		CLC				;
		ADC	PLYPSL			;
		CLC				;
		ADC	#00004H			;
		STA	PLYPSL			;

FYUKAMV1200	EQU	$
		LDY	#000			;(R7) <- プレイヤーチェックＸ　ＰＯＳ．
		LDA	PCENTX			;
		SEC				;
		SBC	ECENTX,X		;
		BMI	FYUKAMV1300		;
						;
		INY				;
		INY				;
						;
FYUKAMV1300	EQU	$			;
		JSR	FYUKA_PLCHK

		LDA	CCWORK1F		;床に乗ってる ?
		BEQ	FYUKAMV1700		;  no: FYUKAMV1700

		LDA	ECENTY,X		;プレイヤーＹ　ＰＯＳ．セット
		CLC				;
		ADC	CCWORK1E		;
		SEC				;
		SBC	PLFTLN			;
		SEC				;
		SBC	#00020H			;
		STA	PLYPSL			;

		LDA	PLYSPD
		ASL	A
		ASL	A
		ASL	A

		STZ	PLYSPD

		INC	ONLFFG

		LDY	<ENWRK0,X		;プレイヤー乗ってた ?
		BNE	FYUKAMV1400		; yes: FYUKAMV1400

		INC	<ENWRK0,X		;プレイヤーＯＮフラグセット

		BRA	FYUKAMV1600

FYUKAMV1400	EQU	$
		LDA	<EWORK4			;プレイヤーは床の右側にいる ?
		BPL	FYUKAMV1500		; yes: FYUKAMV1500

		EOR	#0FFFFH
		INC	A

FYUKAMV1500	EQU	$
		ASL	A
		ASL	A
		CLC
		ADC	#00200H

FYUKAMV1600	EQU	$
		STA	<EWORK0
		LDY	<EWORK2
		CPY	#001
		BRA	FYUKAMV2100

FYUKAMV1700	EQU	$
		LDY	ENWRK9,X
		BRA	FYUKAMV1900

FYUKAMV1800	EQU	$
		LDY	ENWRKC,X

FYUKAMV1900	EQU	$
		STZ	<ENWRK0,X		;プレイヤーＯＮフラグクリア
		LDA	#00200H
		STA	<EWORK0

F_PLCHK0081	EQU	$
;＊＊＊＊＊＊＊＊＜　回転速度計算　＞＊＊＊＊＊＊＊＊＊＊
FYUKAMV2000	EQU	$
		CPY	#000

FYUKAMV2100	EQU	$
		BPL	FYUKAMV2200

		LDA	ENWRKA,X		;回転速度計算
		CLC				;
		ADC	<EWORK0			;
		STA	ENWRKA,X		;
		LDA	ENWRKC,X		;
		ADC	#00000			;
		STA	ENWRKC,X		;
		LDA	#00100H			;速度オーバー ?
		CMP	ENWRKB,X		;
		BPL	FYUKAMV2400		;  no: FYUKAMV2400
		BRA	FYUKAMV2300		; yes: FYUKAMV2300

FYUKAMV2200	EQU	$
		LDA	ENWRKA,X		;回転速度計算
		SEC				;
		SBC	<EWORK0			;
		STA	ENWRKA,X		;
		LDA	ENWRKC,X		;
		SBC	#00000			;
		STA	ENWRKC,X		;
		LDA	#0FF00H			;速度オーバー ?
		CMP	ENWRKB,X		;
		BMI	FYUKAMV2400		;  no: FYUKAMV2400
						;
FYUKAMV2300	EQU	$			;
		STA	ENWRKB,X		;

FYUKAMV2400	EQU	$
FYUKA_ROT_SET_I EQU	$
;＊＊＊＊＊＊＊＊＜　ビットマップエリアセット　＞＊＊＊＊＊＊＊＊＊＊
						;転送元アドレス＆バンクセット
		LDA	#CIPCHD+4060H+000	;(R12) <-- 転送元アドレスセット
		LDY	#BANK CIPCHD+4060H+000	;(R13) <-- 転送元バンクセット

FYUKA_ROT_SET	EQU	$
		STA	R12			;
		TYA
		STA	R13			;

		LDY	ENWRK9,X		;(R5) <- 回転角セット
		TYA
		STA	R5			;

		LDA	#00100H			;(R6) <- 倍率セット
		STA	R6			;

		LDY	ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_X,X		;(R3) <- ビットマップ座標＿Ｘセット
		STA	R3			;
		LDA	>TROBJ_PLOT_Y,X		;(R2) <- ビットマップ座標＿Ｙセット
		STA	R2			;
;
;-------------- OBJ mode 7 set ----------------------------------
		M_CHIP	C_32_ROTZOM

		LDX	<ENINDX

		INC	OBM7WF		;mode 7 OBJ chara DMA "ON"

		RTL
;
FYUKA_ANG_LIMIT EQU	$
		WORD	0C000H,04000H+1
		WORD	0E000H,02000H+1
;
FYUKA_ANG_CALC	EQU	$
		LDA	ENSTFG
		ORA	BIRIBIRI
		ORA	ITEMNO
		BNE	FYUKA_A_C0800

		LDA	ENWRK8,X		;回転角計算
		STA	<EWORK0			;
		CLC				;
		ADC	ENWRKB,X		;
		BPL	FYUKA_A_C0100		;
						;
		CMP	!FYUKA_ANG_LIMIT,Y	;
		BPL	FYUKA_A_C0700		;
						;
		LDA	!FYUKA_ANG_LIMIT,Y	;
		BRA	FYUKA_A_C0200		;
						;
FYUKA_A_C0100	EQU	$			;
		CMP	!FYUKA_ANG_LIMIT+2,Y	;
		BMI	FYUKA_A_C0700		;
						;
		LDA	!FYUKA_ANG_LIMIT+2,Y	;
						;
FYUKA_A_C0200	EQU	$			;
		PHA				;
		LDA	ENMYNO,X		;
		CMP	#SESAW			;
		BNE	FYUKA_A_C0500		;
						;
		LDA	ENWRKB,X		;回転速度反転させる
		CMP	#08000H			;
		ROR	A			;
		CMP	#08000H			;
		ROR	A			;
		EOR	#0FFFFH			;
		INC	A			;
		STA	ENWRKB,X		;
		M8				;
		LDA	ENWRKD,X		;
		CMP	#080H			;
		ROR	A			;
		CMP	#080H			;
		ROR	A			;
		EOR	#0FFH			;
		INC	A			;
		STA	ENWRKD,X		;
		STZ	ENWRKA,X		;
		M16				;
						;
FYUKA_A_C0500	EQU	$			;
		PLA				;
						;
FYUKA_A_C0700	EQU	$			;
		STA	ENWRK8,X		;

FYUKA_A_C0800	EQU	$

		RTS
;
FYUKA_XEDGE	EQU	$
		WORD	0D900H,02700H
		WORD	0F000H,01000H
		WORD	08C00H,07400H
FYUKA_CHKDT	EQU	$
		WORD	00000H,08000H
;
FYUKA_PLCHK	EQU	$
		STA	R7			;
		STA	<EWORK4			;

		LDA	!FYUKA_XEDGE,Y		;(R1) <- 床端Ｘ　ＰＯＳ．セット
		STA	R1			;

		TYA
		AND	#00002
		TAY

		LDA	!FYUKA_CHKDT,Y		;(R12) <- 範囲チェック用データ
		STA	R12			;

		STY	<EWORK2

		LDA	PLYPSL			;(R8) <- プレイヤーチェックＹ　ＰＯＳ．
		CLC				;
		ADC	PLFTLN			;
		CLC				;
		ADC	#00020H			;
		SEC				;
		SBC	ECENTY,X		;
		STA	R8			;

		LDA	<ENWRK0,X		;(R13) <- プレイヤーＯＮフラグ
		STA	R13			;

		LDY	ENWRK9,X		;(R9) <- 回転角セット
		TYA				;
		ASL	A			;
		STA	R9			;

		PHX
		I16
		TAX
		LDA	>TAN,X
		STA	R2
		I8
		PLX

		M_CHIP	M_FYUKA_CHECK

		LDX	<ENINDX

		RTS
;
;************************************************************************
;*		initial ( 浮き島 )					*
;************************************************************************
FLOATIN		EQU	$			;-- floatin --
		LDA	ENXPSL,X
		CLC
		ADC	#00008
		STA	ENXPSL,X
		LDA	ENYPSL,X
		CLC
		ADC	#00008
		STA	ENYPSL,X

		LDA	#00080H
		STA	ENYSPD,X

		STZ	ENMUKI,X

		RTL
;
;************************************************************************
;*		move	( 浮き島 )					*
;************************************************************************
;		ENWRK0	プレイヤーＯＮフラグ
;		ENWRK2
;		ENWRK4
;		ENWRK6	プレイヤーＯＮフラグ（サブ）
;		ENWRK8	回転角
;		ENWRKA
;		ENWRKC
;
FLOAT_ANGREV	EQU	$
		WORD	0FE00H,00200H
;
FLOATMV		EQU	$			;-- floatmv --
		LDY	ENTROB,X
		BMI	FLOATMV0100

		JSL	>TROBJ_OAM_4x4

FLOATMV0100	EQU	$
		JSL	>ENMDCK

;＊＊＊＊＊＊＊＊＜　回転角計算　＞＊＊＊＊＊＊＊＊＊＊
		LDY	#004
		JSR	FYUKA_ANG_CALC

		LDY	<ENWRK0,X		;プレイヤー乗ってる ?
		BNE	FLOATMV0400		; yes: FLOATMV0400

		CLC				;止まりかけてる ?
		ADC	#00200H			;
		CMP	#00400H			;
		BCS	FLOATMV0400		;  no: FLOATMV0400

		STZ	ENWRK8,X

		LDY	ENTROB,X
		BMI	FLOATMV0400

		JSL	>TROBJ_CLEAR

FLOATMV0400	EQU	$
;＊＊＊＊＊＊＊＊＜　プレイヤーチェック　＞＊＊＊＊＊＊＊＊＊＊
		LDY	PLYSPD+1
		BPL	FLOATMV1000
		JMP	FLOATMV1700

FLOATMV1000	EQU	$
		LDA	#0F800H			;(R4) <- チェックＹ　ＰＯＳ．の上限
		STA	R4			;

		LDY	<ENWRK0,X		;プレイヤー乗ってる ?
		BEQ	FLOATMV1200		;  no: FLOATMV1200

		LDA	PLXPSL_OLD		;Ｙ　ＰＯＳ．補正
		SEC				;
		SBC	PLXPSL			;
		BPL	FLOATMV1100		;
						;
		EOR	#0FFFFH			;
		INC	A			;
						;
FLOATMV1100	EQU	$			;
		CLC				;
		ADC	PLYPSL			;
		CLC				;
		ADC	#00004H			;
		STA	PLYPSL			;

FLOATMV1200	EQU	$
		LDY	#004			;(R7) <- プレイヤーチェックＸ　ＰＯＳ．
		LDA	PCENTX			;
		SEC				;
		SBC	ECENTX,X		;
		BMI	FLOATMV1300		;
						;
		INY				;
		INY				;
						;
FLOATMV1300	EQU	$			;
		JSR	FYUKA_PLCHK

		LDA	CCWORK1F		;床に乗ってる ?
		BEQ	FLOATMV1700		;  no: FLOATMV1700

		LDA	ECENTY,X		;プレイヤーＹ　ＰＯＳ．セット
		CLC				;
		ADC	CCWORK1E		;
		SEC				;
		SBC	#00020H			;
		SEC				;
		SBC	PLFTLN			;
		STA	PLYPSL			;

		LDA	PLYSPD
		ASL	A
		ASL	A
		ASL	A
		PHA

		STZ	PLYSPD

		LDY	ENWRK9,X		;プレイヤーを滑らせる
		TYA				;
		ASL	A			;
		STA	R1			;
		CLC
		ADC	#00020H
		AND	#001FEH
		CMP	#00040H
		BCC	FLOATMV1320

		LDA	#00008H			;
		STA	R6			;
		M_CHIP	M_ENMY_1P_ROT		;
		LDX	<ENINDX			;
		LDA	R1			;
		CLC				;
		ADC	PLXSPD			;
		STA	PLXSPD			;
		STA	PLMVSP			;

FLOATMV1320	EQU	$
		INC	ONLFFG

		LDY	ENTROB,X
		BPL	FLOATMV1380

		JSL	>TROBJ_SR_4x4

FLOATMV1380	EQU	$
		LDY	<ENWRK0,X		;プレイヤー乗ってた ?
		BNE	FLOATMV1400		; yes: FLOATMV1400

		LDA	#0FFFAH
		STA	ENBGYP,X
		INC	<ENWRK0,X		;プレイヤーＯＮフラグセット
		PLA
		BRA	FLOATMV1600

FLOATMV1400	EQU	$
		PLA
		LDA	#01000H

FLOATMV1600	EQU	$
		STA	<EWORK0
		LDY	<EWORK2
		CPY	#001
		BRA	FLOATMV2100

FLOATMV1700	EQU	$
		STZ	<ENWRK0,X		;プレイヤーＯＮフラグクリア
		STZ	ENBGYP,X
		LDY	#000
		LDA	ENWRK8,X		;じっとしてる ?
		BNE	FLOATMV1800		;  no: FLOATMV1800

		STA	ENWRKA,X
		STA	ENWRKC,X
		BRA	FLOATMV2400

FLOATMV1800	EQU	$
		BPL	FLOATMV1900

		INY
		INY

FLOATMV1900	EQU	$
		LDA	!FLOAT_ANGREV,Y
		BRA	FLOATMV2300

;＊＊＊＊＊＊＊＊＜　回転速度計算　＞＊＊＊＊＊＊＊＊＊＊
FLOATMV2000	EQU	$
		CPY	#000

FLOATMV2100	EQU	$
		BPL	FLOATMV2200

		LDA	ENWRKA,X		;回転速度計算
		CLC				;
		ADC	<EWORK0			;
		STA	ENWRKA,X		;
		LDA	ENWRKC,X		;
		ADC	#00000			;
		STA	ENWRKC,X		;
		LDA	#00100H			;速度オーバー ?
		CMP	ENWRKB,X		;
		BPL	FLOATMV2400		;  no: FLOATMV2400
		BRA	FLOATMV2300		; yes: FLOATMV2300

FLOATMV2200	EQU	$
		LDA	ENWRKA,X		;回転速度計算
		SEC				;
		SBC	<EWORK0			;
		STA	ENWRKA,X		;
		LDA	ENWRKC,X		;
		SBC	#00000			;
		STA	ENWRKC,X		;
		LDA	#0FF00H			;速度オーバー ?
		BMI	FLOATMV2400		;  no: FLOATMV2400
						;
FLOATMV2300	EQU	$			;
		STA	ENWRKB,X		;

FLOATMV2400	EQU	$
		LDA	ENTROB,X
		BMI	FLOATMV3000

;＊＊＊＊＊＊＊＊＜　ビットマップエリアセット　＞＊＊＊＊＊＊＊＊＊＊
						;転送元アドレス＆バンクセット
		LDA	#CIPCHD3+2060H+000	;(R12) <-- 転送元アドレスセット
		LDY	#BANK CIPCHD3+2060H+000 ;(R13) <-- 転送元バンクセット
		JSL	>FYUKA_ROT_SET

FLOATMV3000	EQU	$
		LDA	#00040H
		LDY	ENWATR,X
		BEQ	FLOATMV3500

		LDA	#0FFC0H

FLOATMV3500	EQU	$
		STA	ENGMAX,X
		M8
		LDA	#0FFH
		STA	ENWATR,X
		M16

		RTL
;
;************************************************************************
;*		initial ( シーソー )					*
;************************************************************************
SESAWIN		EQU	$			;-- sesawin --
		LDA	BG3USEFG		;ＢＧ３、すでにでてる ?
		BEQ	SESAWIN0100		;  no: SESAWIN0100

		JMP	>ENCLEAR

SESAWIN0100	EQU	$
		INC	BG3USEFG

		LDA	#00078H
		LDY	SCHMK1			;右にスクロールしてる ?
		BEQ	SESAWIN0500		; yes: SESAWIN0500

		LDA	#0FF88H

SESAWIN0500	EQU	$
		CLC
		ADC	ENXPSL,X
		STA	ENXPSL,X

		LDX	#004

SESAWIN0600	EQU	$
		LDA	>COL_ADDRESS+BG3_TEKI_0+1*2,X
		STA	>DATACOL+1*2,X
		STA	>MOTOCOL+1*2,X

		DEX
		DEX
		BPL	SESAWIN0600

		LDX	<ENINDX

		LDA	MANSEL			;MANSEL,SUBSELセーブ
		STA	ENWRK6,X

		LDA	#01000H
		STA	ENWRKA,X

		RTL
;
;************************************************************************
;*		move	( シーソー )					*
;************************************************************************
;		ENWRK0	プレイヤーＯＮフラグ
;		ENWRK2	ROUTINE MODE INDEX
;		ENWRK4
;		ENWRK6	MANSEL
;		ENWRK8	回転角
;		ENWRKA	回転角速度
;		ENWRKC	回転角速度
;
;		ENCONT	ＢＧ３バッファクリアフラグ
;
;		ENXMAX	サウンド用回転角カウンター
;
;		セット位置は、シーソーの両端 -80H,70H
;
SESAWMV		EQU	$			;-- sesawmv --
		JSR	SESAW_SET
;
		JSL	>ENMDCK

		JSR	SESAW_ANG_CHK

		JSR	SESAW_PLCHK
;
		RTL
;
SESAW_ANG_CHK	EQU	$
		LDY	#004
		JSR	FYUKA_ANG_CALC
		SEC
		SBC	<EWORK0
		BPL	SESAW_A_CHK0300

		EOR	#0FFFFH
		INC	A

SESAW_A_CHK0300 EQU	$
		CLC
		ADC	ENXMAX,X
		CMP	#01000H
		BMI	SESAW_A_CHK0400

		PHA
		LDA	#0001FH			;［Ｓ］
		JSL	>SOUND_3_ON
		PLA
		SEC
		SBC	#01000H

SESAW_A_CHK0400 EQU	$
		STA	ENXMAX,X

		RTS
;
SESAW_PLCHK	EQU	$
;＊＊＊＊＊＊＊＊＜　プレイヤーチェック　＞＊＊＊＊＊＊＊＊＊＊
		LDY	PLYSPD+1
		BPL	SESAW_PLCHK1100

		LDY	PLJUMP			;シーソーからジャンプ ?
		BEQ	SESAW_PLCHK1100		;  no: SESAW_PLCHK1100
		JMP	SESAW_PLCHK1900

SESAW_PLCHK1100 EQU	$
		LDA	#0F800H			;(R4) <- チェックＹ　ＰＯＳ．の上限
		STA	R4			;

		LDY	<ENWRK0,X		;プレイヤー乗ってる ?
		BEQ	SESAW_PLCHK1400		;  no: SESAW_PLCHK1400

		LDA	PLBGCR			;プレイヤー、ＢＧにくっついてる ?
		AND	#0000000000000111B	;
		BNE	SESAW_PLCHK1400		; yes: SESAW_PLCHK1400

		LDA	PLXPSL_OLD		;Ｙ　ＰＯＳ．補正
		SEC				;
		SBC	PLXPSL			;
		BPL	SESAW_PLCHK1300		;
						;
		EOR	#0FFFFH			;
		INC	A			;
						;
SESAW_PLCHK1300 EQU	$			;
		CLC				;
		ADC	PLYPSL			;
		CLC				;
		ADC	#00004H			;
		STA	PLYPSL			;

SESAW_PLCHK1400 EQU	$
		LDY	#008			;(R7) <- プレイヤーチェックＸ　ＰＯＳ．
		LDA	PCENTX			;
		SEC				;
		SBC	ECENTX,X		;
		BMI	SESAW_PLCHK1500		;
						;
		INY				;
		INY				;
						;
SESAW_PLCHK1500 EQU	$			;
		JSR	FYUKA_PLCHK

		LDA	CCWORK1F		;床に乗ってる ?
		BEQ	SESAW_PLCHK1900		;  no: SESAW_PLCHK1900

		LDA	PLBGCR			;プレイヤー、ＢＧにくっついてる ?
		AND	#0000000000000111B	;
		BNE	SESAW_PLCHK1900		; yes: SESAW_PLCHK1900

		LDA	ECENTY,X		;プレイヤーＹ　ＰＯＳ．セット
		CLC				;
		ADC	CCWORK1E		;
		SEC				;
		SBC	PLFTLN			;
		SEC				;
		SBC	#00020H			;
		STA	PLYPSL			;

		LDA	PLYSPD
		STA	R0
		LDA	#00180H
		STA	R6
		M_CHIP	MULTIPLY
		LDX	<ENINDX
		LDA	R0
		STZ	PLYSPD

		INC	ONLFFG

		LDY	<ENWRK0,X		;プレイヤー乗ってた ?
		BNE	SESAW_PLCHK1600		; yes: SESAW_PLCHK1600

		INC	<ENWRK0,X		;プレイヤーＯＮフラグセット
		BRA	SESAW_PLCHK1800

SESAW_PLCHK1600 EQU	$
		LDA	<EWORK4			;プレイヤーは床の右側にいる ?
		BPL	SESAW_PLCHK1700		; yes: SESAW_PLCHK1700

		EOR	#0FFFFH
		INC	A

SESAW_PLCHK1700 EQU	$
		ASL	A
		CLC
		ADC	#00100H

SESAW_PLCHK1800 EQU	$
		STA	<EWORK0
		LDY	<EWORK2
		CPY	#001
		BRA	SESAW_PLCHK2100

SESAW_POWER	EQU	$
		WORD	00020H,00010H

SESAW_PLCHK1900 EQU	$
		STZ	<ENWRK0,X		;プレイヤーＯＮフラグクリア

		LDY	#000
		LDA	ENWRK8,X		;回転を加速させる ?
		EOR	ENWRKB,X		;
		BPL	SESAW_PLCHK1A00		;  no: SESAW_PLCHK1A00
						;
		INY				;
		INY				;
						;
SESAW_PLCHK1A00 EQU	$
		LDA	ENWRK8,X
		BPL	SESAW_PLCHK1C00

		EOR	#0FFFFH
		INC	A

SESAW_PLCHK1C00 EQU	$
		STA	R0
		CMP	#00400H
		BPL	SESAW_PLCHK1C10

		LDA	#00020H
		BRA	SESAW_PLCHK1C30

SESAW_PLCHK1C10 EQU	$
		LDA	!SESAW_POWER,Y
		STA	R6
		M_CHIP	MULTIPLY
		LDX	<ENINDX
		LDA	R0

SESAW_PLCHK1C30 EQU	$
		STA	<EWORK0

;;;;;;;;		LDA	ENWRKB,X		;停止する ?
;;;;;;;;		CLC				;
;;;;;;;;		ADC	#00020H			;
;;;;;;;;		CMP	#00040H			;
;;;;;;;;		BCS	SESAW_BPCHK1D00		;  no: SESAW_BPCHK1D00
;;;;;;;;						;
;;;;;;;;		LDA	ENWRK8,X		;
;;;;;;;;		CLC				;
;;;;;;;;		ADC	#00020H			;
;;;;;;;;		CMP	#00040H			;
;;;;;;;;		BCS	SESAW_BPCHK1D00		;  no: SESAW_BPCHK1D00
;;;;;;;;
;;;;;;;;		STZ	<EWORK0
;;;;;;;;		STZ	ENWRKA,X
;;;;;;;;		STZ	ENWRKC,X
;;;;;;;;		STZ	ENWRK8,X
;;;;;;;;
;;;;;;;;SESAW_BPCHK1D00 EQU	$
;;;;;;;;		LDA	ENWRKB,X
;;;;;;;;		BPL	SESAW_BPCHK1C00
;;;;;;;;
;;;;;;;;		EOR	#0FFFFH
;;;;;;;;		INC	A
;;;;;;;;
;;;;;;;;SESAW_BPCHK1C00 EQU	$
;;;;;;;;		STA	<EWORK0
;;;;;;;;		CMP	#00200H
;;;;;;;;		BMI	SESAW_BPCHK1B00
;;;;;;;;
;;;;;;;;		LDA	#00200H
;;;;;;;;		STA	<EWORK0

SESAW_PLCHK1B00 EQU	$
;＊＊＊＊＊＊＊＊＜　回転速度計算　＞＊＊＊＊＊＊＊＊＊＊
		LDY	ENWRK9,X
		CPY	#000

SESAW_PLCHK2100 EQU	$
		BPL	SESAW_PLCHK2200

		LDA	ENWRKA,X		;回転速度計算
		CLC				;
		ADC	<EWORK0			;
		STA	ENWRKA,X		;
		LDA	ENWRKC,X		;
		ADC	#00000			;
		STA	ENWRKC,X		;
		LDA	#00100H			;速度オーバー ?
		CMP	ENWRKB,X		;
		BPL	SESAW_PLCHK2400		;  no: SESAW_PLCHK2400
		BRA	SESAW_PLCHK2300		; yes: SESAW_PLCHK2300

SESAW_PLCHK2200 EQU	$
		LDA	ENWRKA,X		;回転速度計算
		SEC				;
		SBC	<EWORK0			;
		STA	ENWRKA,X		;
		LDA	ENWRKC,X		;
		SBC	#00000			;
		STA	ENWRKC,X		;
		LDA	#0FF00H			;速度オーバー ?
		CMP	ENWRKB,X		;
		BMI	SESAW_PLCHK2400		;  no: SESAW_PLCHK2400
						;
SESAW_PLCHK2300 EQU	$			;
		STA	ENWRKB,X		;

SESAW_PLCHK2400 EQU	$

		RTS
;
SESAW_SET	EQU	$
		JSL	>DISPCK4		;画面外 ?
		BCC	SESAW_SET0300		;  no: SESAW_SET0300

		LDY	<ENWRK4,X		;赤ちゃんが乗ってる ?
		BNE	SESAW_SET0300		; yes: SESAW_SET0300

		PLA
		LDY	<ENCONT,X
		BEQ	SESAW_SET0100

		STZ	BG3USEFG
		JMP	>ENCLEAR

SESAW_SET0100	EQU	$
		INC	<ENCONT,X

		JSR	HDMABF_CLEAR

		RTL
;
SESAW_SET0300	EQU	$
		LDA	#BANK BG3SEE_SAW_DT	;(R1) <- データバンク
		STA	R1			;
		LDA	#BG3SEE_SAW_DT		;(R2) <- データアドレス
		STA	R2			;
		LDA	ENWRK9,X		;(R3) <- 角度
		AND	#000FFH
		STA	R3			;
		LDA	ENDSXL,X
		CLC
		ADC	#00008H
		STA	CREG0			; X POS
		LDA	ENDSYL,X
		CLC
		ADC	#00010H
		STA	CREG1			; Y POS
;
		M_CHIP	BG3_SEESAW_SET
;
		I16
;
;--------------< data trans. >-----------------
		JSL	>M_DMA_BFST
		LWORD	HDMABUF		;to address set
		LWORD	HDMABF		;from address set
		WORD	0D2H*2*2	;number of byte set

;--------------< config. set >-------------------
		MI8
		LDA	#011H
		STA	MANSEL
		LDA	#006H
		STA	SUBSEL
		LDA	#020H
		STA	SUBADF

		LDA	#08H		;ＢＧ３優先順位変更
		TSB	BGMODE

		LDA	#00011000B
		TSB	HD420C
		M16
		LDX	<ENINDX

		RTS
;
BG3SEE_SAW_DT	EQU	$
		HEX	10
		HEX	74,F0, 75,F1, 76,F3, 77,F6
		HEX	77,FA, 76,FD, 75,FF, 74,00
		HEX	8C,00, 8B,FF, 8A,FD, 89,FA
		HEX	89,F6, 8A,F3, 8B,F1, 8C,F0
;;;;;;;;		HEX	10
;;;;;;;;		HEX	74,E0, 75,E1, 76,E3, 77,E6
;;;;;;;;		HEX	77,FA, 76,FD, 75,FF, 74,00
;;;;;;;;		HEX	8C,00, 8B,FF, 8A,FD, 89,FA
;;;;;;;;		HEX	89,E6, 8A,E3, 8B,E1, 8C,E0
;;		HEX	10
;;		HEX	74,F0,75,F1,76,F3,77,F6
;;		HEX	77,0A,76,0D,75,0F,74,10
;;		HEX	8C,10,8B,0F,8A,0D,89,0A
;;		HEX	89,F6,8A,F3,8B,F1,8C,F0
;
;
;************************************************************************
;*		initial ( ダイナミックテレサ )				*
;************************************************************************
DTELE_I_SUB	EQU	$
		WORD	DTELE_I_SUB0		;
		WORD	DTELE_I_SUB1		;
;
DTELEIN		EQU	$			;-- dtelein --
		TXY
		LDA	<ENWRK2,X
		ASL	A
		TAX
		JSR	(DTELE_I_SUB,X)

		LDA	#EINIT
		STA	ENMODE,X

		RTL
;
DTELE_I_SUB0	EQU	$
		TYX

		LDA	#00000			;カラーフェードカウンタークリア
		STA	>CLFDCNT		;
		STZ	DTELESTG		;ステージタイプクリア
		M8
		LDA	#061H			;ＢＧ３の最優先フラグを落とす
		STA	BGMODE			;
		LDA	#022H
		STA	WIND30
		M16

		LDY	BG2TYP			;１６色バージョン ?
		CPY	#016H			;
		BEQ	DTELE_I_SUB0080		; yes: DTELE_I_SUB0080
		JMP	DTELE_I_SUB0300		;  no: DTELE_I_SUB0300

DTELE_I_SUB0080 EQU	$
		INC	DTELESTG		;ステージタイプセット
		LDA	#00001			;デモフラグセット
		STA	DTELEDEMO		;

		LDA	PLXPSL			;プレイヤー、所定の位置まで来た ?
		CMP	#00C38H			;
		BMI	DTELE_I_SUB0100		;  no: DTELE_I_SUB0100
;
		LDA	#000F1H			;［Ｓ］
		STA	SOUND_0
;
		JSL	>TROBJ_SR_4x4
		BCC	DTELE_I_SUB0100

		LDY	ENTROB,X
		STY	<ENWRK3,X

		JSL	>TROBJ_SR_4x4
		BCS	DTELE_I_SUB0200

		JSL	>TROBJ_CLEAR

DTELE_I_SUB0100 EQU	$

		RTS

DTELE_I_SUB0200 EQU	$
		STZ	PLXSPD
		STZ	PLMVSP
		JSL	>BERO_CANCEL

;;;;;;;;		STZ	PLCMKI
		LDA	#KAMC2
		JSL	>ENINSR_I
		LDA	#00000
		STA	ENXPSL,Y

		LDA	ESCCH1			;出現Ｘ　ＰＯＳ．セット
		SEC				;
		SBC	#00060H			;
		STA	ENXPSL,X		;
		LDA	PLYPSL			;出現Ｙ　ＰＯＳ．セット
		SEC				;
		SBC	#00020H			;
		STA	ENYPSL,X		;
		LDA	#00003H
		STA	ENYUSN,X
		LDA	#00004H
		STA	ENGPOW,X
		LDA	#00080H
		STA	ENXSPD,X
		LDA	#00002H
		STA	ENMUKI,X
		LDY	#DTELE_RMODE30
		STY	<ENWRK2,X

		LDX	#010H*2			;6 <- 1 COPY
DTELE_I_SUB0201 EQU	$
		LDA	>MOTOCOL+(09H*10H)*2,X
		STA	>DATACOL+(0EH*10H)*2,X
		DEX
		DEX
		BPL	DTELE_I_SUB0201

		LDX	#(010H*6)*2		;DTELE の使わない他のＢＧの
		LDA	#00000			;	パレットの変化後の値をセーブ
DTELE_I_SUB0210 EQU	$			;
		STA	>CHNGCOL+(10H*0)*2-2,X	;
		DEX				;
		DEX				;
		BNE	DTELE_I_SUB0210		;

		LDX	#(010H*1)*2		;DTELE の使うＢＧのパレットの変化後の値をセーブ
DTELE_I_SUB0220 EQU	$			;
		LDA	>DATACOL+(10H*6)*2-2,X	;
		STA	>CHNGCOL+(10H*6)*2-2,X	;
		LDA	>DATACOL+(10H*7)*2-2,X	;
		STA	>CHNGCOL+(10H*7)*2-2,X	;
		DEX				;
		DEX				;
		BNE	DTELE_I_SUB0220		;
		BRA	DTELE_I_SUB0600

DTELE_I_SUB0300 EQU	$
		INC	<ENWRK2,X

		LDX	#(010H*1)*2		;DTELE の使うＢＧのパレットの変化後の値をセーブ
DTELE_I_SUB0400 EQU	$			;
		LDA	>DATACOL+(10H*0)*2-2,X	;
		STA	>CHNGCOL+(10H*0)*2-2,X	;
		DEX				;
		DEX				;
		BNE	DTELE_I_SUB0400		;

		LDX	#(010H*7)*2		;DTELE の使わない他のＢＧの
		LDA	#00000			;	パレットの変化後の値をセーブ
DTELE_I_SUB0500 EQU	$			;
		STA	>CHNGCOL+(10H*1)*2-2,X	;
		DEX				;
		DEX				;
		BNE	DTELE_I_SUB0500		;

DTELE_I_SUB0600 EQU	$
		LDX	#(010H*8)*2		;オブジェのパレットの変化後の値をセーブ
DTELE_I_SUB0700 EQU	$			;
		LDA	>DATACOL+(10H*8)*2-2,X	;
		STA	>CHNGCOL+(10H*8)*2-2,X	;
		DEX				;
		DEX				;
		BNE	DTELE_I_SUB0700		;

		LDX	<ENINDX
		LDY	DTELESTG		;１６色バージョン ?
		BEQ	DTELE_I_SUB0800		;  no: DTELE_I_SUB0800

		LDA	#00080H
		STA	ENTIM1,X

		PLA			;直接［ＲＴＬ］
		RTL
;
;
DTELE_I_SUB1	EQU	$
		TYX

		LDA	>CLFDCNT		;カラー、１／２まで落ちた ?
		CMP	#00010H+1		;
		BPL	DTELE_I_SUB1100		; yes: DTELE_I_SUB1100

		LDA	#MOTOCOL		;カラーフェード
		STA	>MOTOADR		;
		LDA	#CHNGCOL		;
		STA	>CHNGADR		;
		M_CHIP	COLFADE			;
		LDX	<ENINDX			;

DTELE_I_SUB0800 EQU	$

		RTS
;
DTELE_I_SUB1100 EQU	$
		JSL	>TROBJ_SR_4x4
		BCC	DTELE_I_SUB1300

		LDY	ENTROB,X
		STY	<ENWRK3,X

		JSL	>TROBJ_SR_4x4
		BCS	DTELE_I_SUB1500

		JSL	>TROBJ_CLEAR

DTELE_I_SUB1300 EQU	$

		RTS

DTELE_I_SUB1500 EQU	$
		LDA	>COL_ADDRESS+DTELE_COL+00H*2
		STA	>MOTOCOL+000H*20H+005H*2
		LDA	>COL_ADDRESS+DTELE_COL+00H*2+2
		STA	>MOTOCOL+000H*20H+006H*2
;
		LDY	ENMUKI,X		;ボディーパターンインデックスセット
		STY	<ENWRK0,X

		LDX	#010H*10H*2

DTELE_I_SUB1800 EQU	$
		LDA	>DATACOL-2,X
		STA	>CHNGCOL-2,X
		LDA	>MOTOCOL-2,X
		STA	>DATACOL-2,X

		DEX
		DEX
		BNE	DTELE_I_SUB1800

		LDX	<ENINDX
		LDY	#000
		STY	<ENWRK2,X

		LDA	#00009			;［Ｓ］
		STA	SOUND_0

		PLA		;直接［ＲＴＬ］
		RTL
;
;************************************************************************
;*		move	( ダイナミックテレサ )				*
;************************************************************************
;B		ENWRK0	ボディーパターンインデックス
;B		ENWRK1	透明方向フラグ -8...不透明に 0...不動 8...透明に
;B		ENWRK2	ROUTINE MODE INDEX
;B		ENWRK3	もうひとつの ENTROB
;B		ENWRK4	透明度 0=不透明 1>=透明
;B		ENWRK5	反転方向フラグ -1...左に反転 0...不動 1..右に反転.
;		ENWRK6	倍率（０〜１ＦＦＨ）
;		ENWRK8	振幅
;		ENWRKA	振幅ＣＭＰデータ
;		ENWRKC	振幅加算値
;
;		ENCONT	倍率ＣＭＰデータ
;
;		ENCHPT	フェイスパターンインデックス
;
;		DTELEFCX	フェイスオフセットＸ　ＰＯＳ．
;		DTELE_TIMER	ズームストップタイマー
;		DTELEZCP	段階ズーム率
;		DTELEZURE	起点のずれ
;		DTELEDEMO	デモフラグ
;		DTELEDMGFLG	ダメージフラグ（プレイヤーチェックロック）
;
;		ENTIM0	ストップタイマー
;		ENTIM1
;		ENTIM2	顔移動ストップタイマー
;		ENTIM3	顔上げストップタイマー
;
DTELE_SUB	EQU	$
DTELE_0		EQU	$
		WORD	DTELE_SUB0		;サーチ＆いないいない
DTELE_1		EQU	$
		WORD	DTELE_SUB1		;反転
DTELE_20	EQU	$
		WORD	DTELE_SUB20		;やられた
DTELE_21	EQU	$
		WORD	DTELE_SUB21		;ウィンドウ効果
;;;;;;;;DTELE_22	EQU	$
;;;;;;;;		WORD	DTELE_SUB22		;ボスクリア
DTELE_30	EQU	$
		WORD	DTELE_SUB30		;イニシャルデモ（移動）
DTELE_31	EQU	$
		WORD	DTELE_SUB31		;イニシャルデモ（カメック待ち）
DTELE_32	EQU	$
		WORD	DTELE_SUB32		;イニシャルデモ（カラー転送）
DTELE_33	EQU	$
		WORD	DTELE_SUB33		;イニシャルデモ（ズーム）
;
DTELE_RMODE0	EQU	(DTELE_0-DTELE_SUB)/2
DTELE_RMODE1	EQU	(DTELE_1-DTELE_SUB)/2
DTELE_RMODE20	EQU	(DTELE_20-DTELE_SUB)/2
DTELE_RMODE21	EQU	(DTELE_21-DTELE_SUB)/2
;;;;;;;;DTELE_RMODE22	EQU	(DTELE_22-DTELE_SUB)/2
DTELE_RMODE30	EQU	(DTELE_30-DTELE_SUB)/2
DTELE_RMODE31	EQU	(DTELE_31-DTELE_SUB)/2
DTELE_RMODE32	EQU	(DTELE_32-DTELE_SUB)/2
DTELE_RMODE33	EQU	(DTELE_33-DTELE_SUB)/2
;
DTELEMV		EQU	$			;-- dtelemv --
;		ldy	#004
;		sty	2100h
;
		LDY	<ENWRK2,X		;姿が消えてる ?
		CPY	#DTELE_RMODE21		;
		BEQ	DTELEMV0080		; yes: DTELEMV0080
;;;;;;;;		CPY	#DTELE_RMODE22		;
;;;;;;;;		BEQ	DTELEMV0080

		LDA	ENMOD2,X		;ノーマルオブジェ ?
		AND	#0000000000000001B	;
		BEQ	DTELEMV0100		;  no: DTELEMV0100

DTELEMV0080	EQU	$
		JSL	>ENMDCK
		BRA	DTELEMV0300

DTELEMV0100	EQU	$
		JSR	DTELE_OAM_SET

		JSR	DTELE_BODY_SET

		JSL	>ENMDCK

		JSR	DTELE_ROT_SET

DTELEMV0300	EQU	$
		LDY	<ENWRK2,X
		TYA
		ASL	A
		TXY
		TAX
		JSR	(DTELE_SUB,X)

		LDY	<ENWRK2,X		;ダメージを受けてるｏｒデモ中 ?
		CPY	#DTELE_RMODE20		;
		BPL	DTELEMV0800		; yes: DTELEMV0800

		JSR	DTELE_COL_SET

		JSR	DTELE_DMG_CHK

		JSR	DTELE_MUKI_CHK

		JSR	DTELE_FACE_MOVE

		JSR	DTELE_OBJCHK

		JSR	DTELE_RANGE_CAL

DTELEMV0800	EQU	$
		LDY	DTELEDMGFLG		;プレイヤーチェックロック ?
		BEQ	DTELEMV0900		;  no: DTELEMV0900

		LDA	ENWRK6,X		;ダメージ中 ?
		CMP	<ENCONT,X		;
		BNE	DTELEMV0900		; yes: DTELEMV0900

		LDY	ECRSFG,X		;プレイヤーと接触してる ?
		BMI	DTELEMV0900		; yes: DTELEMV0900

		STZ	DTELEDMGFLG

DTELEMV0900	EQU	$
;		ldy	#00fh
;		sty	2100h
;
		RTL
;
DTELE_OAM_SET	EQU	$
		LDY	ENYUSN,X		;表示する ?
		BMI	DTELE_O_SET0000		;
		LDA	ENOAML,X		;
		BPL	DTELE_O_SET0100		;  no: DTELE_O_SET0800

DTELE_O_SET0000 EQU	$

		RTS

DTELE_O_SET0100 EQU	$
		JSL	>TROBJ_OAM_4x4

		I16
		LDA	ENOAML,X
		CLC
		ADC	#008*4
		TAY
		LDA	ENTROB,X
		PHA
		LDA	<ENWRK3,X
		AND	#000FFH
		STA	ENTROB,X

		JSL	>TROBJ_OAM_4x4_I
		IDX8

		PLA
		STA	ENTROB,X

		LDA	ENDSXL,X		;(R1) <-
		STA	R1			;
		LDA	ENDSYL,X		;(R2) <-
		STA	R2			;
		LDA	DTELEFCX		;(R3) <- フェイスオフセットＸ　ＰＯＳ．
		STA	R3			;
		LDA	#0FFF0H			;(R5) <-	”	　 Ｙ　ＰＯＳ．
		STA	R5			;
		LDA	ENWRK6,X		;(R6) <- 倍率
		STA	R6			;
		LDA	ENMUKI,X		;(R8) <- ENMUKI
		STA	R8			;
		TXA				;(R10) <- 敵のインデックス
		STA	R10			;

		M_CHIP	M_DTELE_OAMSET

		LDX	<ENINDX

DTELE_O_SET0800 EQU	$

		RTS
;
DTELE_BODY_SET	EQU	$
		LDA	#BANK BAKABON0		;(R0) <- データバンク
		STA	R0			;
		LDY	<ENWRK0,X		;(R1) <- データアドレス
		LDA	!BAKABON_ADR,Y		;
		STA	R1			;
		LDA	ENWRK6,X		;(R2) <- Ｘ倍率（１００Ｈ＝１倍）
		STA	R2			;
		STA	R3			;(R3) <- Ｙ倍率（１００Ｈ＝１倍）

		LDA	ENDSXL,X		;(CWRK0) <- Ｘ　ＰＯＳ．
		CLC				;
		ADC	#00008			;
		STA	CCWORK0			;
		LDA	ENDSYL,X		;(CWRK1) <- Ｙ　ＰＯＳ．
;;;;;;;;		CLC				;
;;;;;;;;		ADC	#00008			;
		STA	CCWORK1			;
;;;;;;;;		LDA	ENWRK8,X		;(CWRK2) <- 振幅
		STZ	CCWORK2			;
;;;;;;;;		LDA	#00030H			;(CWRK3) <- 周期
		STZ	CCWORK3			;
;;;;;;;;		LDA	DTELEZURE		;(CWRK7) <- 起点のずれ
		STZ	CCWORK7			;
;
		LDA	#HDMABF1		;(CWRK5) <- H-DMA BUFFER (H scroll)
		STA	CCWORK5			;
		LDA	#HDMABF			;(CWRK6) <- H-DMA BUFFER (V scroll)
		STA	CCWORK6			;
;
		M_CHIP	BG3_SHADOW_SET

		I16
;
;--------------< data trans. >-----------------
		JSL	>M_DMA_BFST
		LWORD	HDMABUF		;to address set
		LWORD	HDMABF		;from address set
		WORD	0D2H*2*2	;number of byte set
;--------------< config. set >-------------------
		MI8
		LDA	#00011000B
		TSB	HD420C
		M16
		LDX	<ENINDX

		RTS
;
HDMABF_CLEAR	EQU	$
		M_CHIP	HDMABF_CLR

		I16
;
;--------------< data trans. >-----------------
		JSL	>M_DMA_BFST
		LWORD	HDMABUF		;to address set
		LWORD	HDMABF		;from address set
		WORD	0D2H*2*2	;number of byte set
;
;--------------< config. set >-------------------
		I8
		M16
		LDX	<ENINDX
		LDA	ENMYNO,X
		CMP	#SESAW
		BNE	DTELE_B_SET0650

		LDA	ENWRK6,X
		BRA	DTELE_B_SET0800

DTELE_B_SET0650 EQU	$
		LDY	DTELESTG		;１６色バージョン ?
		BNE	DTELE_B_SET0700		; yes: DTELE_B_SET0700

		LDA	#00314H
		BRA	DTELE_B_SET0800

DTELE_B_SET0700 EQU	$
		LDA	#00512H

DTELE_B_SET0800 EQU	$
		STA	MANSEL
		M8
		LDA	#00011000B
		TSB	HD420C
		M16
		RTS
;
DTELE_MUKI_CHK	EQU	$
		LDA	ENWRK6,X		;ダメージ中 ?
		CMP	<ENCONT,X		;
		BMI	DTELE_M_CHK0800		; yes: DTELE_M_CHK0800
;
		LDY	EPXMUK,X
		TYA
		STA	<EWORK0

		LDY	<ENWRK0,X		;いないいない ?
		CPY	#004			;
		BMI	DTELE_M_CHK1000		;  no: DTELE_M_CHK1000
		CPY	#008			;振り返ってる途中 ?
		BEQ	DTELE_M_CHK0800		; yes: DTELE_M_CHK0800

		LDY	ECRSFG,X		;プレイヤー通過中 ?
		BMI	DTELE_M_CHK0800		; yes: DTELE_M_CHK0800

		LDA	<EWORK0			;反転する ?
		CMP	ENMUKI,X		;
		BEQ	DTELE_M_CHK0500		;  no: DTELE_M_CHK0500

		LDY	#001			;回転方向セット
		STY	<ENWRK5,X		;
		STY	<ENWRK2,X

		RTS

DTELE_M_CHK0500 EQU	$
		LDA	PLCMKI			;プレイヤーに見られてる ?
		CMP	ENMUKI,X		;
		BNE	DTELE_M_CHK0600		;  no: DTELE_M_CHK0600
		CMP	<EWORK0			;
		BEQ	DTELE_M_CHK0700		;

DTELE_M_CHK0600 EQU	$
		LDA	ENTIM3,X		;顔を上げていい ?
		BNE	DTELE_M_CHK0800		;  no: DTELE_M_CHK0800

		LDY	<ENWRK2,X		;反転してる ?
		CPY	#DTELE_RMODE1		;
		BEQ	DTELE_M_CHK0700		; yes: DTELE_M_CHK0700

		LDY	<ENWRK0,X		;顔上げポーズセット
		TYA				;
		AND	#00002			;
		TAY				;
		STY	<ENWRK0,X		;
		LDY	#0F8H			;不透明に
		STY	<ENWRK1,X		;

		RTS

DTELE_M_CHK0700 EQU	$
		LDA	#00020H			;顔上げストップタイマーセット
		STA	ENTIM3,X		;

DTELE_M_CHK0800 EQU	$

		RTS

DTELE_M_CHK1000 EQU	$
		LDA	ENMUKI,X		;反対側にいる ?
		DEC	A			;
		EOR	EPWIDX,X		;
		BPL	DTELE_M_CHK1100		; yes: DTELE_M_CHK1100

		LDY	DTELEDMGFLG		;ダメージを受けた後 ?
		BNE	DTELE_M_CHK1100		; yes: DTELE_M_CHK1100

		LDY	#0F8H			;不透明に
		STY	<ENWRK1,X
		LDA	PLCMKI			;プレイヤーに見られてる ?
		CMP	ENMUKI,X		;
		BNE	DTELE_M_CHK2000		;  no: DTELE_M_CHK2000
		CMP	<EWORK0			;
		BNE	DTELE_M_CHK2000		;

DTELE_M_CHK1100 EQU	$
		LDY	<ENWRK0,X		;いないいないポーズ
		TYA				;
		CLC				;
		ADC	#00004H			;
		TAY				;
		STY	<ENWRK0,X		;

		STZ	ENXSPD,X
		STZ	ENYSPD,X
		STZ	ENXPOW,X
		STZ	ENGPOW,X
		LDY	#008H			;透明に
		STY	<ENWRK1,X		;

DTELE_M_CHK2000 EQU	$

		RTS
;
DTELE_FACE_MOVE EQU	$
		LDY	<ENWRK5,X		;顔移動 ?
		BEQ	DTELE_F_MOV0800		;  no: DTELE_F_MOV0800

		LDA	ENTIM2,X		;ストップ ?
		BNE	DTELE_F_MOV0800		; yes: DTELE_F_MOV0800

		LDA	#00002
		STA	ENTIM2,X

		TYA
		CPY	#000H
		BPL	DTELE_F_MOV0100

		ORA	#0FF00H

DTELE_F_MOV0100 EQU	$
		CLC				;真ん中 ?
		ADC	DTELEFCX		;
		CMP	#0FFF4H			;
		BNE	DTELE_F_MOV0300		;  no: DTELE_F_MOV0300

		STA	DTELEFCX
		LDA	ENMUKI,X
		EOR	#00002
		STA	ENMUKI,X
		LDY	#0FFH
		STY	<ENWRK5,X
		RTS

DTELE_F_MOV0300 EQU	$
		CMP	#0FFECH			;反転終わり ?
		BNE	DTELE_F_MOV0700		;  no: DTELE_F_MOV0700

		LDY	#000
		STY	<ENWRK5,X

DTELE_F_MOV0700 EQU	$
		STA	DTELEFCX

DTELE_F_MOV0800 EQU	$

		RTS
;
DTELE_ROT_SET	EQU	$
		LDA	<ENCONT,X
		LDY	<ENWRK2,X		;イニシャルデモ中 ?
		CPY	#DTELE_RMODE33		;
		BEQ	DTELE_R_SET2070		; yes: DTELE_R_SET2070
		CPY	#DTELE_RMODE30		;イニシャルデモ中 ?
		BPL	DTELE_R_SET2020		; yes: DTELE_R_SET2020
		CPY	#DTELE_RMODE20		;ラストデモ中 ?
		BEQ	DTELE_R_SET2080		; yes: DTELE_R_SET2080

		LDA	ENWRK6,X		;ズーム中（ダメージ中） ?
		CMP	<ENCONT,X		;
		BPL	DTELE_R_SET2020		;  no: DTELE_R_SET2020

		LDA	#00002
		BRA	DTELE_R_SET2060

DTELE_R_SET2020 EQU	$
		LDA	<ENWRK0,X		;顔のパターンを換える ?
		BIT	#00008			;
		BEQ	DTELE_R_SET2040		;
						;
		LDA	#00004			;
						;
DTELE_R_SET2040 EQU	$			;
		AND	#00004H			;
		LSR	A			;
		LSR	A			;
		CMP	ENCHPT,X		;
		BEQ	DTELE_R_SET8000		;  no: DTELE_R_SET8000

DTELE_R_SET2060 EQU	$
		STA	ENCHPT,X

DTELE_R_SET2070 EQU	$
		LDA	ENWRK6,X

DTELE_R_SET2080 EQU	$
		SEC
		SBC	#001C0H
		STA	R0
		LDA	#-00070H
		STA	R6
		M_CHIP	MULTIPLY
		LDX	<ENINDX
		LDA	#00100H
		SEC
		SBC	R0
		STA	<EWORK4
		LDY	<ENWRK2,X		;ダメージを受けてる ?
		CPY	#DTELE_RMODE20		;
		BNE	DTELE_R_SET2200		;  no: DTELE_R_SET2200

		LDA	#00100H

DTELE_R_SET2200 EQU	$
		STA	<EWORK2

		LDA	ENTROB,X
		STA	<EWORK6
		LDY	<ENWRK3,X
		TYA
		STA	<EWORK8

		LDY	ENCHPT,X		;いないいない ?
		DEY				;
		BEQ	DTELE_R_SET3000		; yes: DTELE_R_SET3000
		BMI	DTELE_R_SET2500

		LDY	#006
		JSR	DTELE_R_SET_SB
		LDA	<EWORK8
		STA	<EWORK6
		LDY	#008
		BRA	DTELE_R_SET4000

DTELE_R_SET2500 EQU	$
		LDY	#000
		JSR	DTELE_R_SET_SB
		LDA	<EWORK8
		STA	<EWORK6
		LDY	#002
		BRA	DTELE_R_SET4000

DTELE_R_SET3000 EQU	$
		LDY	#004

DTELE_R_SET4000 EQU	$
		JSR	DTELE_R_SET_SB
		LDX	<ENINDX
		INC	OBM7WF			;mode 7 OBJ chara DMA "ON"

		JSR	DTELE_OAM_SET

DTELE_R_SET8000 EQU	$

		RTS
;
DTELE_CHAR_ADDR EQU	$
		WORD	CIPCHD3+4040H+001
		WORD	CIPCHD3+6040H+001
		WORD	CIPCHD3+4060H+001
		WORD	CIPCHD3+2000H+001
		WORD	CIPCHD4+0060H+001
DTELE_CHAR_BANK EQU	$
		WORD	BANK CIPCHD3+4040H+001
		WORD	BANK CIPCHD3+6040H+001
		WORD	BANK CIPCHD3+4060H+001
		WORD	BANK CIPCHD3+2000H+001
		WORD	BANK CIPCHD4+0060H+001
DTELE_C_YPOS	EQU	$
		WORD	00020H,00000H,00010H,00020H,00000H
;
DTELE_R_SET_SB	EQU	$
		LDA	!DTELE_CHAR_ADDR,Y	;chara data address set
		STA	R12			;
		LDA	!DTELE_CHAR_BANK,Y	;chara data bank set
		STA	R13			;

		LDA	<EWORK2			;(R11) <- 縦倍率セット
		STA	R11			;
		LDA	<EWORK4			;(R6) <- 横倍率セット
		STA	R6			;

		LDA	#00010H			;(R8) <- 中心Ｘ　ＰＯＳ．
		STA	R8			;
		LDA	!DTELE_C_YPOS,Y		;(R9) <- 中心Ｙ　ＰＯＳ．
		STA	R9			;

		LDX	<EWORK6
		LDA	>TROBJ_PLOT_X,X		;回転エリアＸ　ＰＯＳ．セット
		STA	R3			;
		LDA	>TROBJ_PLOT_Y,X		;回転エリアＹ　ＰＯＳ．セット
		STA	R2			;

		M_CHIP	C_32_ZOOM_XY

		RTS
;
DTELE_OBJCHK	EQU	$
		LDY	<ENWRK4,X		;姿が見えてる ?
		BNE	DTELE_OBJCHK080		;  no: DTELE_OBJCHK080

		LDA	<ENCONT,X		;ダメージ中 ?
		CMP	ENWRK6,X		;
		BNE	DTELE_OBJCHK080		; yes: DTELE_OBJCHK080

		LDY	<ENWRK1,X		;透明になろうとしてる ?
		DEY				;
		BPL	DTELE_OBJCHK080		; yes: DTELE_OBJCHK080

		JSR	DTELE_PLCHK

		JSR	DTELE_ENCHK

DTELE_OBJCHK080 EQU	$

		RTS
;
DTELE_PLCHK	EQU	$
		LDY	ECRSFG,X		;プレイヤーに接触した ?
		BPL	DTELE_PLCHK0800		;  no: DTELE_PLCHK0800

		LDY	DTELEDMGFLG		;ダメージ受けた後 ?
		BNE	DTELE_PLCHK0800		; yes: DTELE_PLCHK0800

		JSL	>PLFLST

DTELE_PLCHK0800 EQU	$
DTELE_ENCHK0000 EQU	$

		RTS
;
DTELE_ENCHK	EQU	$
		TXA
		STA	R1
		M_CHIP	SHOTENSR
		LDX	<ENINDX
		LDY	R1			;敵と接触した ?
		BMI	DTELE_ENCHK0000		;  no: DTELE_ENCHK0000

		LDA	EWIDEX,X
		CLC
		ADC	EWIDEX,Y
		ASL	A
		STA	<EWORK0
		LSR	A
		CLC
		ADC	ECENTX,Y
		SEC
		SBC	ECENTX,X
		CMP	<EWORK0
		BCS	DTELE_ENCHK0000

		LDA	EWIDEY,X
		CLC
		ADC	EWIDEY,Y
		ASL	A
		STA	<EWORK0
		LSR	A
		CLC
		ADC	ECENTY,Y
		SEC
		SBC	ECENTY,X
		CMP	<EWORK0
		BCS	DTELE_ENCHK0000

		LDA	ENMYNO,Y		;タマゴか ?
		CMP	#EGG00			;
		BCC	DTELE_ENCHK0000		;
		CMP	#EGG09+1		;
		BCS	DTELE_ENCHK0000		;  no: DTELE_ENCHK0000

		PHY
		TYX
		JSL	>ENDEATH_SET_4
		PLY

		LDA	ENWRK6,X		;ダメージ中 ?
		CMP	<ENCONT,X		;
		BNE	DTELE_ENCHK0800		; yes: DTELE_ENCHK0800

		LDA	ENWRK0,Y		;ＭＡＸ投げ ?
		CMP	#00002			;
		BPL	DTELE_ENCHK0800		;  no: DTELE_ENCHK0800

		STZ	ENXSPD,X
		STZ	ENYSPD,X
		STZ	ENXPOW,X
		STZ	ENGPOW,X
		INC	DTELEDMGFLG		;ダメージフラグセット

		LDA	#00078H			;［Ｓ］
		JSL	>SOUND_3_ON

		LDA	<ENCONT,X		;ラストダメージ ?
		CLC				;	;段階ズーム率セット
		ADC	#00018H			;	;
		STA	DTELEZCP		;	;
		CLC				;
		ADC	#00048H-18H		;
		CMP	#001C0H+1		;
		BMI	DTELE_ENCHK0600		;  no: DTELE_ENCHK0600

;;		LDA	<ENCONT,X		;段階ズーム率セット
;;		CLC				;
;;		ADC	#00010H			;
;;		STA	DTELEZCP		;
;;		CLC				;倍率ＣＭＰデータセット
;;		ADC	#00030H-010H		;
		STA	<ENCONT,X		;

		LDY	#008H			;透明に
		STY	<ENWRK1,X

		JSL	>BOSS_EN_CHANGE

		STZ	KOMR_ST_FG		;こうもり湧きだしエンド

		LDA	#00000			;カラーフェードカウンタークリア
		STA	>CLFDCNT		;
		LDA	#00002H			;顔のキャラパターンセット
		STA	ENCHPT,X		;
		INC	TIMER_STOP
		LDY	#DTELE_RMODE20
		STY	<ENWRK2,X

		JMP	DTELE_COL_INIT

DTELE_ENCHK0600 EQU	$
		STA	<ENCONT,X		;倍率ＣＭＰデータセット
		INC	<ENWRK4,X

DTELE_ENCHK0800 EQU	$

		RTS
;
DTELE_RANGE_CAL EQU	$
		LDA	#00030H
		STA	R6
		LDA	ENWRK6,X
		STA	R0
		M_CHIP	MULTIPLY
		LDX	<ENINDX
		LDA	R0
		STA	EWIDEX,X
		STA	EWIDEY,X

		RTS
;
;****************************************************************
;*								*
;*		ダイナミックテレサ カラー転送			*
;*								*
;****************************************************************
DTELE_COL_SET	EQU	$
		LDY	#01100000B		;ＢＧ３、１／２加算しない
		LDA	<ENWRK4,X		;一番不透明 ?
		AND	#000FFH			;
		BEQ	DTELE_C_SET0080		; yes: DTELE_C_SET0080

		LDY	#01100100B		;ＢＧ３、１／２加算する
		LDA	DTELESTG		;１６色バージョン ?
		BEQ	DTELE_C_SET0080		;  no: DTELE_C_SET0080

		LDY	#01100010B		;ＢＧ２、１／２加算する

DTELE_C_SET0080 EQU	$
		STY	SUBADF

		LDY	<ENWRK1,X		;透明度計算 ?
		BEQ	DTELE_C_SET0280		;  no: DTELE_C_SET0280

		TYA
		CPY	#000
		BPL	DTELE_C_SET0100

		ORA	#0FF00H

DTELE_C_SET0100 EQU	$
		STA	<EWORK0

		LDY	<ENWRK4,X
		TYA
		CLC
		ADC	<EWORK0			;完全に不透明になった
		BMI	DTELE_C_SET0200		; yes: DTELE_C_SET0200
		CMP	#00100H			;完全に透明になった
		BMI	DTELE_C_SET0300		;  no: DTELE_C_SET0300

		LDY	#0FFH
		BRA	DTELE_C_SET0240

DTELE_C_SET0200 EQU	$
		LDY	#000

DTELE_C_SET0240 EQU	$
		STY	<ENWRK4,X
		LDY	#000			;加算値クリア
		STY	<ENWRK1,X		;

DTELE_C_SET0280 EQU	$

		RTS

DTELE_C_SET0300 EQU	$
DTELE_COL_FADE	EQU	$
		TAY
		STY	<ENWRK4,X
		STA	R6				;R6  <- カラーフェード率
		LDY	DTELESTG			;１６色バージョン ?
		BNE	DTELE_C_SET0500			; yes: DTELE_C_SET0500

		LDA	#COL_ADDRESS+DTELE_COL+02H*2	;R14 <- ＴＯカラーデータアドレス
		STA	R14				;
		LDA	#BANK COL_ADDRESS+DTELE_COL	;R0  <- ＴＯカラーデータバンク
		STA	R0				;
		LDA	#005				;R8  <- カラーポインター(COL. NO.)
		STA	R8				;
		LDA	#002				;R12 <- カラー数(SUM.)
		STA	R12				;
		M_CHIP	COL_MORF_B
		BRA	DTELE_C_SET0700

DTELE_C_SET0500 EQU	$
		LDA	#COL_ADDRESS+DTELE_COL2		;R14 <- ＴＯカラーデータアドレス
		STA	R14				;
		LDA	#BANK COL_ADDRESS+DTELE_COL2	;R0  <- ＴＯカラーデータバンク
		STA	R0				;
		LDA	#061H				;R8  <- カラーポインター(COL. NO.)
		STA	R8				;
		LDA	#00EH				;R12 <- カラー数(SUM.)
		STA	R12				;
		M_CHIP	COL_MORF_B

		LDA	#COL_ADDRESS+DTELE_COL3		;R14 <- ＴＯカラーデータアドレス
		STA	R14				;
		LDA	#BANK COL_ADDRESS+DTELE_COL3	;R0  <- ＴＯカラーデータバンク
		STA	R0				;
		LDA	#071H				;R8  <- カラーポインター(COL. NO.)
		STA	R8				;
		LDA	#00EH				;R12 <- カラー数(SUM.)
		STA	R12				;
		M_CHIP	COL_MORF_B

DTELE_C_SET0700 EQU	$
		LDX	<ENINDX

		RTS
;
DTELE_DMG_COL	EQU	$
		WORD	07F26H,07FFFH,06F35H,00000H
		WORD	07F26H,0477FH,0323FH,07FFFH
;
DTELE_DMG_CHK	EQU	$
		LDY	DTELEDEMO		;デモ中 ?
		BNE	DTELE_D_CHK0400		; yes: DTELE_D_CHK0400

		LDA	ENWRK6,X		;ダメージ受けてる ?
		CMP	<ENCONT,X		;
		BPL	DTELE_D_CHK0400		;  no: DTELE_D_CHK0400

		LDY	DTELE_TIMER		;ズームストップ ?
		BEQ	DTELE_D_CHK0200		;  no: DTELE_D_CHK0200

		LDA	DTELESTG		;１６色バージョン ?
		BNE	DTELE_FLASH		; yes: DTELE_FLASH
		BRA	DTELE_FLASH0500

DTELE_D_CHK0200 EQU	$
		CMP	DTELEZCP		;段階ズーム終わり ?
		BMI	DTELE_D_CHK0500		;  no: DTELE_D_CHK0500

		LDA	#00020H			;ズームストップタイマーセット
		STA	DTELE_TIMER		;

		LDA	DTELEZCP		;次の段階ズーム率セット
		CLC				;
		ADC	#00018H			;
		CMP	<ENCONT,X		;
		BMI	DTELE_D_CHK0300		;
						;
		LDA	<ENCONT,X		;
						;
DTELE_D_CHK0300 EQU	$			;
		STA	DTELEZCP		;

DTELE_D_CHK0400 EQU	$

		RTS

DTELE_D_CHK0500 EQU	$
		CLC
		ADC	#00008
		STA	ENWRK6,X
		CMP	<ENCONT,X		;ダメージ終わり ?
		BMI	DTELE_FLASH		; yes: DTELE_FLASH

		LDY	DTELESTG		;１６色バージョン ?
		BEQ	DTELE_FLASH0500		;  no: DTELE_FLASH0500
		BRA	DTELE_FLASH2100

DTELE_FLASH	EQU	$
		LDA	FRCNT2
		LDY	DTELESTG		;１６色バージョン ?
		BNE	DTELE_FLASH2		; yes: DTELE_FLASH2

		AND	#00002
		ASL	A
		ASL	A
		TAY

DTELE_FLASH0500 EQU	$
		LDA	!DTELE_DMG_COL,Y
		STA	>DATACOL+000H*20H+004H*2
		LDA	!DTELE_DMG_COL+2,Y
		STA	>DATACOL+000H*20H+005H*2
		LDA	!DTELE_DMG_COL+4,Y
		STA	>DATACOL+000H*20H+006H*2
		LDA	!DTELE_DMG_COL+6,Y
		STA	>DATACOL+000H*20H+007H*2

		RTS
;
DTELE_FLASH2	EQU	$
		AND	#00002
		BNE	DTELE_FLASH2500

DTELE_FLASH2100 EQU	$
		LDX	#00EH*2
DTELE_FLASH2200 EQU	$
		LDA	>COL_ADDRESS+DTELE_COL0-2,X
		STA	>DATACOL+(06*10H+1-1)*2,X
		LDA	>COL_ADDRESS+DTELE_COL1-2,X
		STA	>DATACOL+(07*10H+1-1)*2,X
		DEX
		DEX
		BNE	DTELE_FLASH2200

		LDX	<ENINDX

		RTS

DTELE_FLASH2500 EQU	$
		LDX	#00EH*2
DTELE_FLASH2600 EQU	$
		LDA	>COL_ADDRESS+OBJ_SUB_B_COL+0FH*2-2,X
		STA	>DATACOL+(06*10H+1-1)*2,X
		STA	>DATACOL+(07*10H+1-1)*2,X
		DEX
		DEX
		BNE	DTELE_FLASH2600

		LDX	<ENINDX

		RTS
;
DTELE_S0_XMAX	EQU	$
DTELE_S0_GMAX	EQU	$
		WORD	0FF80H,00080H
;
DTELE_SUB0	EQU	$
		TYX

		LDY	<ENWRK0,X		;顔を上げてる ?
		CPY	#002+1			;
		BPL	DTELE_SUB0800		;  no: DTELE_SUB0800

		LDA	ENTIM0,X		;サーチする ?
		BNE	DTELE_SUB0800		;  no: DTELE_SUB0800

		LDA	#00020H
		STA	ENTIM0,X

DTELE_SUB0500	EQU	$
		LDA	ENWRK6,X		;ダメージ中 ?
		CMP	<ENCONT,X		;
		BNE	DTELE_SUB0800		; yes: DTELE_SUB0800

		LDY	EPXMUK,X
		LDA	!DTELE_S0_XMAX,Y
		STA	ENXMAX,X
		LDY	EPYMUK,X
		LDA	!DTELE_S0_GMAX,Y
		STA	ENGMAX,X
		LDA	#00002H
		STA	ENXPOW,X
		STA	ENGPOW,X

DTELE_SUB0800	EQU	$

		RTS
;
DTELE_SUB1	EQU	$
		TYX

		LDA	DTELEFCX
		SEC
		SBC	#0FFF4H-3
		CMP	#00006
		BCS	DTELE_SUB1100

		LDY	#008
		BRA	DTELE_SUB1300

DTELE_SUB1100	EQU	$
		LDA	ENMUKI,X
		CLC
		ADC	#00004
		TAY

DTELE_SUB1300	EQU	$
		STY	<ENWRK0,X

		LDY	<ENWRK5,X		;顔移動終わり ?
		BNE	DTELE_SUB1800		; yes: DTELE_SUB1800

;;;;;;;;		LDY	#000
		STY	<ENWRK2,X

DTELE_SUB1800	EQU	$

		RTS
;
DTELE_SUB20	EQU	$
		TYX

		LDA	ENTIM0,X		;ストップ ?
		BNE	DTELE_SUB20300		; yes: DTELE_SUB20300

		LDA	ENWRK6,X		;ズームアップ終わり ?
		CMP	<ENCONT,X		;
		BPL	DTELE_SUB20500		; yes: DTELE_SUB20500

		CMP	DTELEZCP		;段階ズーム終わり ?
		BNE	DTELE_SUB20100		;  no: DTELE_SUB20100

		CLC				;次の段階ズーム率セット
		ADC	#00018H			;
		STA	DTELEZCP		;
		LDA	#00020H			;ストップタイマーセット
		STA	ENTIM0,X		;
		BRA	DTELE_SUB20300

DTELE_SUB20100	EQU	$
		CLC
		ADC	#00008
		CMP	#00200H
		BMI	DTELE_SUB20200

		LDA	#00200H-1

DTELE_SUB20200	EQU	$
		STA	ENWRK6,X

DTELE_SUB20300	EQU	$
		JSR	DTELE_FLASH

		LDA	>CLFDCNT		;カラー、元通り ?
		CMP	#00020H			;
		BPL	DTELE_SUB20400		; yes: DTELE_SUB20400

		LDA	#CHNGCOL
		STA	>MOTOADR
		LDA	#MOTOCOL
		STA	>CHNGADR
		M_CHIP	COLFADE
		LDX	<ENINDX

DTELE_SUB20400	EQU	$

		RTS

DTELE_SUB20500	EQU	$
		LDA	#BG3EX
		JSL	>ENINSR_I
		BCC	DTELE_SUB20800

		LDA	ENXPSL,X
		STA	ENXPSL,Y
		LDA	ENYPSL,X
		STA	ENYPSL,Y
		LDA	#00002
		STA	ENWRK2,Y
		LDA	#00081H			;［Ｓ］
		JSL	>SOUND_3_ON
;
		JSR	HDMABF_CLEAR
;
		LDA	#00040H			;ストップタイマーセット
		STA	ENTIM0,X		;
		LDA	#00050H
		STA	TILTCT
		INC	<ENWRK2,X

DTELE_SUB20800	EQU	$
DTELE_SUB21000	EQU	$

		RTS
;
DTELE_COL_INIT	EQU	$
		LDX	#010H*10H*2		;初期カラーセット
						;
DTELE_C_I0100	EQU	$			;
		LDA	>CHNGCOL-2,X		;
		STA	>DATACOL-2,X		;
						;
		DEX				;
		DEX				;
		BNE	DTELE_C_I0100		;

		LDX	<ENINDX
		LDA	#00000			;カラーフェードカウンタークリア
		STA	>CLFDCNT		;
		LDY	#020H
		STY	SUBADF

		RTS
;
DTELE_SUB21	EQU	$
		TYX

		LDA	ENTIM0,X
		BNE	DTELE_SUB21000

		LDA	ENXPSL,X
		STA	<EWORK0
		LDA	ENYPSL,X
		STA	<EWORK2
		JSL	>BSCLW_SET_M

		LDA	#00100H
		STA	ENTIM0,X

		PLA
		JMP	>ENCLEAR_NORETN
;;;;;;;;		INC	<ENWRK2,X
;
;;;;;;;;DTELE_SUB22000	EQU	$
		RTS
;
;;;;;;;;DTELE_SUB22	EQU	$
;;;;;;;;		TYX
;;;;;;;;
;;;;;;;;		LDA	ENTIM0,X		;ストップ ?
;;;;;;;;		BNE	DTELE_SUB22000		; yes: DTELE_SUB22000
;;;;;;;;
;;;;;;;;		M8
;;;;;;;;		LDA	#0FFH
;;;;;;;;		STA	ENRETN,X
;;;;;;;;		M16
;;;;;;;;		PLA
;;;;;;;;		JMP	>BOSS_CLEAR_M
;
DTELE_S30_GMAX	EQU	$
		WORD	0FF80H,00080H
;
DTELE_SUB30	EQU	$
		TYX

		STZ	PLCMKI

		LDA	ENTIM1,X
		BNE	DTELE_SUB30100

		LDA	#00009H			;［Ｓ］
		STA	SOUND_0
		DEC	ENTIM1,X

DTELE_SUB30100	EQU	$
		LDA	EPWIDX,X		;プレイヤーのそばまで来た ?
		SEC				;
		SBC	#0FFA0H			;
		BNE	DTELE_SUB30400		;  no: DTELE_SUB30400

		INC	ENXPOW,X
		INC	BOSS_START		;カメック登場
		STZ	ENTIM1,X
		INC	<ENWRK2,X

		RTS

DTELE_SUB30400	EQU	$
		STA	ATSCRL_H		;スクロール制御
		LDA	SCCH1			;
		CMP	#00BC0H			;
		BEQ	DTELE_SUB30600		;
						;
		SEC				;
		SBC	#00BC0H			;
		STA	<EWORK0			;
		LDA	FRCNT2			;
		AND	#00001			;
		PHP				;
		LDA	SCCH1			;
		PLP				;
		BNE	DTELE_SUB30600		;
						;
		DEC	A			;
		LDY	<EWORK0+1		;
		BPL	DTELE_SUB30600		;
						;
		INC	A			;
		INC	A			;
						;
DTELE_SUB30600	EQU	$			;
		STA	ATSCRL_SCCH1		;

		LDA	EPWIDY,X
		CMP	#08000H
		ROR	A
		CMP	#08000H
		ROR	A
		EOR	#0FFFFH
		SEC
		ADC	ENYSPD,X
		STA	ENYSPD,X

DTELE_SUB31000	EQU	$
		LDA	ENTIM0,X
		BNE	DTELE_SUB30800

		LDA	#00020H
		STA	ENTIM0,X
		LDY	EPYMUK,X
		LDA	!DTELE_S30_GMAX,Y
		STA	ENGMAX,X

DTELE_SUB30800	EQU	$

		RTS
;
DTELE_SUB31	EQU	$
		TYX

		LDA	ENXSPD,X
		BPL	DTELE_SUB31100

		STZ	ENXSPD,X
		STZ	ENXPOW,X

DTELE_SUB31100	EQU	$
		LDA	BOSS_START		;カメック退場した ?
		BMI	DTELE_SUB31300		; yes: DTELE_SUB31300

		CMP	#00002			;カラー転送中 ?
		BMI	DTELE_SUB31000		;  no: DTELE_SUB31000

		STZ	ENGMAX,X
		LDA	#00002H
		STA	ENGPOW,X
		LDA	ENYSPD,X
		CLC
		ADC	#00002
		CMP	#00004
		BCS	DTELE_SUB31800

		STZ	ENYSPD,X
		STZ	ENGPOW,X

		RTS

DTELE_SUB31300	EQU	$
		LDA	#00030H
		STA	ENTIM0,X

		INC	<ENWRK2,X

DTELE_SUB31800	EQU	$
DTELE_SUB32000	EQU	$

		RTS
;
DTELE_SUB32	EQU	$
		TYX

		LDA	ENTIM0,X
		BNE	DTELE_SUB32000

		LDA	>CLFDCNT		;カラー、１／２まで落ちた ?
		CMP	#00010H+1		;
		BPL	DTELE_SUB32100		; yes: DTELE_SUB32100

		LDA	#MOTOCOL		;カラーフェード
		STA	>MOTOADR		;
		LDA	#CHNGCOL		;
		STA	>CHNGADR		;
		M_CHIP	COLFADE			;
		LDX	<ENINDX			;

		RTS
;
DTELE_SUB32100	EQU	$
		LDX	#0EH*2
DTELE_SUB32200	EQU	$
		LDA	>COL_ADDRESS+DTELE_COL0-2,X
		STA	>MOTOCOL+(06H*10H+01H)*2-2,X
		STA	>DATACOL+(06H*10H+01H)*2-2,X
		LDA	>COL_ADDRESS+DTELE_COL1-2,X
		STA	>MOTOCOL+(07H*10H+01H)*2-2,X
		STA	>DATACOL+(07H*10H+01H)*2-2,X
		DEX
		DEX
		BNE	DTELE_SUB32200

;ＢＧ２敵へ変更
		LDY	#0FH			;Ｈ−ＤＭＡパラメータ変更
		STY	4331H
		INY		;[ LDY	#10H ]
		STY	4341H
;
		LDA	#00512H
		STA	MANSEL			;MANSEL & SUBSEL SET
		LDY	#01100000B
		STY	SUBADF

		LDX	#010H*10H*2

DTELE_SUB32300	EQU	$
		LDA	>DATACOL-2,X
		STA	>CHNGCOL-2,X
		LDA	>MOTOCOL-2,X
		STA	>DATACOL-2,X

		DEX
		DEX
		BNE	DTELE_SUB32300

		LDX	<ENINDX
		LDA	#0100000000000010B
		STA	ENMOD2,X
		LDA	#00007H
		STA	ENYUSN,X
		M8
		LDA	#00100010B
		STA	ENCLOR,X
		STZ	ENCHRB,X
		M16
		LDA	#00050H
		STA	<ENCONT,X		;倍率ＣＭＰデータセット

		LDA	#00040H			;初期倍率セット
		STA	ENWRK6,X		;
		SEC
		SBC	#001C0H
		STA	R0
		LDA	#-00070H
		STA	R6
		M_CHIP	MULTIPLY
		LDX	<ENINDX
		LDA	#00100H
		SEC
		SBC	R0
		STA	<EWORK2
		STA	<EWORK4
		LDA	ENTROB,X
		STA	<EWORK6
		LDY	<ENWRK3,X
		TYA
		STA	<EWORK8

		LDY	#000
		JSR	DTELE_R_SET_SB
		LDA	<EWORK8
		STA	<EWORK6
		LDY	#002
		JSR	DTELE_R_SET_SB

		LDX	<ENINDX
		INC	OBM7WF			;mode 7 OBJ chara DMA "ON"

		LDA	#0FFECH			;フェイスオフセットＸ　ＰＯＳ．セット
		STA	DTELEFCX		;
;;;;;;;;		STZ	DTELEZURE		;起点のずれクリア

		LDA	ENYPSL,X
		SEC
		SBC	#00004
		STA	ENYPSL,X

		LDA	#00002H			;WRK0 <- ボディーパターンインデックス
		STA	<ENWRK0,X		;WRK1 <- 透明方向フラグ
		LDY	#000			;透明度セット
		STY	<ENWRK4,X
		JSR	HDMABF_CLEAR

		LDA	#00040H
		STA	ENTIM0,X
		STZ	BOSS_START		;カメック消去
		INC	<ENWRK2,X

		RTS
;
DTELE_SUB33	EQU	$
		TYX

		LDA	ENTIM0,X		;ストップ ?
		BNE	DTELE_SUB33800		; yes: DTELE_SUB33800

		LDA	ENWRK6,X		;大きくなりきった ?
		CLC				;
		ADC	#00002H			;
		STA	ENWRK6,X		;
		CMP	<ENCONT,X		;
		BMI	DTELE_SUB33800		;  no: DTELE_SUB33800

		LDA	#00020H			;ストップタイマーセット
		STA	ENTIM0,X		;
		LDA	<ENCONT,X		;デモ終わり ?
		CLC				;
		ADC	#00010H			;
		CMP	#00090H			;
		BNE	DTELE_SUB33200		;  no: DTELE_SUB33200

		STZ	PLMODE
		LDY	#000
		STY	<ENWRK2,X
		STZ	ENTIM0,X
		STZ	ATSCRL_H
		STZ	DTELEDEMO		;デモフラグクリア

		LDA	#KM2_S
		JSL	>ESINSR

		LDA	#00080H

DTELE_SUB33200	EQU	$
		STA	<ENCONT,X

DTELE_SUB33800	EQU	$

		RTS
;
BAKABON_ADR	EQU	$
		WORD	BAKABON0
		WORD	BAKABON1
		WORD	BAKABON2
		WORD	BAKABON3
		WORD	BAKABON4
;
BAKABON0	EQU	$
		HEX	78
		HEX	06,10
		HEX	06,1A
		HEX	06,22
		HEX	06,28
		HEX	06,2E
		HEX	06,32
		HEX	06,36
		HEX	06,3A
		HEX	06,3C
		HEX	06,40
		HEX	06,42
		HEX	06,46
		HEX	06,48
		HEX	06,4A
		HEX	06,4E
		HEX	06,50
		HEX	06,52
		HEX	06,54
		HEX	06,56
		HEX	06,58
		HEX	06,5A
		HEX	06,5A
		HEX	06,5C
		HEX	06,5E
		HEX	02,76
		HEX	02,7A
		HEX	02,7C
		HEX	01,7D
		HEX	01,7D
		HEX	01,7D
		HEX	01,7D
		HEX	01,7D
		HEX	01,7D
		HEX	02,7C
		HEX	02,7C
		HEX	01,7B
		HEX	02,7A
		HEX	02,7A
		HEX	02,78
		HEX	02,77
		HEX	02,76
		HEX	03,76
		HEX	03,75
		HEX	04,74
		HEX	04,73
		HEX	05,73
		HEX	06,72
		HEX	06,72
		HEX	06,72
		HEX	06,72
		HEX	06,74
		HEX	06,74
		HEX	06,74
		HEX	06,74
		HEX	06,74
		HEX	06,74
		HEX	06,74
		HEX	06,74
		HEX	06,74
		HEX	05,75
		HEX	05,75
		HEX	05,75
		HEX	05,75
		HEX	05,75
		HEX	05,76
		HEX	05,76
		HEX	05,76
		HEX	05,76
		HEX	04,77
		HEX	04,77
		HEX	04,76
		HEX	03,77
		HEX	03,77
		HEX	03,78
		HEX	03,78
		HEX	02,78
		HEX	01,79
		HEX	01,79
		HEX	01,7A
		HEX	00,7A
		HEX	FF,7B
		HEX	FF,7C
		HEX	FE,7C
		HEX	FE,7C
		HEX	FE,7C
		HEX	FD,7B
		HEX	FE,7A
		HEX	FD,79
		HEX	FD,77
		HEX	FE,76
		HEX	FD,75
		HEX	FD,73
		HEX	FE,72
		HEX	FD,71
		HEX	FD,6F
		HEX	FD,6D
		HEX	FE,6C
		HEX	FE,6A
		HEX	FE,68
		HEX	FE,66
		HEX	FE,64
		HEX	FE,62
		HEX	FE,60
		HEX	FE,5E
		HEX	FE,5B
		HEX	FE,59
		HEX	FE,56
		HEX	FE,53
		HEX	FE,51
		HEX	FE,4D
		HEX	FF,4A
		HEX	FF,46
		HEX	FF,42
		HEX	FF,3E
		HEX	FF,3A
		HEX	FF,35
		HEX	FF,2F
		HEX	FF,27
		HEX	FF,1F
		HEX	FF,13
;
BAKABON4	EQU	$
		HEX	78
		HEX	00,10
		HEX	00,1A
		HEX	00,22
		HEX	00,28
		HEX	00,2E
		HEX	00,32
		HEX	00,36
		HEX	00,3A
		HEX	00,3C
		HEX	00,40
		HEX	00,42
		HEX	00,46
		HEX	00,48
		HEX	00,4A
		HEX	00,4E
		HEX	00,50
		HEX	00,52
		HEX	00,54
		HEX	00,56
		HEX	00,58
		HEX	00,58
		HEX	00,5A
		HEX	00,5C
		HEX	00,5E
		HEX	00,5E
		HEX	00,60
		HEX	00,62
		HEX	00,62
		HEX	00,64
		HEX	00,66
		HEX	00,66
		HEX	00,68
		HEX	00,68
		HEX	00,6A
		HEX	00,6A
		HEX	00,6C
		HEX	00,6C
		HEX	00,6C
		HEX	00,6E
		HEX	00,6E
		HEX	00,6E
		HEX	00,70
		HEX	00,70
		HEX	00,70
		HEX	00,70
		HEX	00,72
		HEX	00,72
		HEX	00,72
		HEX	00,72
		HEX	00,72
		HEX	00,74
		HEX	00,74
		HEX	00,74
		HEX	00,74
		HEX	00,74
		HEX	00,74
		HEX	00,74
		HEX	00,74
		HEX	00,74
		HEX	00,74
		HEX	00,74
		HEX	00,74
		HEX	00,74
		HEX	00,74
		HEX	00,74
		HEX	00,74
		HEX	00,74
		HEX	00,74
		HEX	00,74
		HEX	00,74
		HEX	00,72
		HEX	00,72
		HEX	00,72
		HEX	00,72
		HEX	00,72
		HEX	00,70
		HEX	00,70
		HEX	00,70
		HEX	00,70
		HEX	00,6E
		HEX	00,6E
		HEX	00,6E
		HEX	00,6C
		HEX	00,6C
		HEX	00,6C
		HEX	00,6A
		HEX	00,6A
		HEX	00,68
		HEX	00,68
		HEX	00,66
		HEX	00,66
		HEX	00,64
		HEX	00,62
		HEX	00,62
		HEX	00,60
		HEX	00,5E
		HEX	00,5E
		HEX	00,5C
		HEX	00,5A
		HEX	00,58
		HEX	00,58
		HEX	00,56
		HEX	00,54
		HEX	00,52
		HEX	00,50
		HEX	00,4E
		HEX	00,4A
		HEX	00,48
		HEX	00,46
		HEX	00,42
		HEX	00,40
		HEX	00,3C
		HEX	00,3A
		HEX	00,36
		HEX	00,32
		HEX	00,2E
		HEX	00,28
		HEX	00,22
		HEX	00,1A
		HEX	00,10
;
BAKABON1	EQU	$
		HEX	78
		HEX	FA,10
		HEX	FA,1A
		HEX	FA,22
		HEX	FA,28
		HEX	FA,2E
		HEX	FA,32
		HEX	FA,36
		HEX	FA,3A
		HEX	FA,3C
		HEX	FA,40
		HEX	FA,42
		HEX	FA,46
		HEX	FA,48
		HEX	FA,4A
		HEX	FA,4E
		HEX	FA,50
		HEX	FA,52
		HEX	FA,54
		HEX	FA,56
		HEX	FA,58
		HEX	FA,5A
		HEX	FA,5A
		HEX	FA,5C
		HEX	FA,5E
		HEX	FE,76
		HEX	FE,7A
		HEX	FE,7C
		HEX	FE,7D
		HEX	FE,7D
		HEX	FE,7D
		HEX	FE,7D
		HEX	FE,7D
		HEX	FE,7D
		HEX	FE,7C
		HEX	FE,7C
		HEX	FE,7B
		HEX	FE,7A
		HEX	FE,7A
		HEX	FE,78
		HEX	FD,77
		HEX	FE,76
		HEX	FD,76
		HEX	FC,75
		HEX	FC,74
		HEX	FB,73
		HEX	FA,73
		HEX	FA,72
		HEX	FA,72
		HEX	FA,72
		HEX	FA,72
		HEX	FA,74
		HEX	FA,74
		HEX	FA,74
		HEX	FA,74
		HEX	FA,74
		HEX	FA,74
		HEX	FA,74
		HEX	FA,74
		HEX	FA,74
		HEX	FA,75
		HEX	FA,75
		HEX	FA,75
		HEX	FA,75
		HEX	FA,75
		HEX	FB,76
		HEX	FB,76
		HEX	FB,76
		HEX	FB,76
		HEX	FB,77
		HEX	FB,77
		HEX	FC,76
		HEX	FC,77
		HEX	FC,77
		HEX	FD,78
		HEX	FD,78
		HEX	FE,78
		HEX	FE,79
		HEX	FE,79
		HEX	FF,7A
		HEX	00,7A
		HEX	00,7B
		HEX	01,7C
		HEX	02,7C
		HEX	02,7C
		HEX	02,7C
		HEX	02,7B
		HEX	02,7A
		HEX	02,79
		HEX	02,77
		HEX	02,76
		HEX	02,75
		HEX	02,73
		HEX	02,72
		HEX	02,71
		HEX	02,6F
		HEX	02,6D
		HEX	02,6C
		HEX	02,6A
		HEX	02,68
		HEX	02,66
		HEX	02,64
		HEX	02,62
		HEX	02,60
		HEX	02,5E
		HEX	01,5B
		HEX	01,59
		HEX	02,56
		HEX	01,53
		HEX	01,51
		HEX	01,4D
		HEX	01,4A
		HEX	01,46
		HEX	01,42
		HEX	01,3E
		HEX	01,3A
		HEX	00,35
		HEX	00,2F
		HEX	00,27
		HEX	00,1F
		HEX	00,13
;
BAKABON2	EQU	$
		HEX	78
		HEX	06,10
		HEX	06,1A
		HEX	06,22
		HEX	06,28
		HEX	06,2E
		HEX	06,32
		HEX	06,36
		HEX	06,3A
		HEX	06,3C
		HEX	06,40
		HEX	06,42
		HEX	06,46
		HEX	06,48
		HEX	06,4A
		HEX	06,4E
		HEX	06,50
		HEX	06,52
		HEX	06,54
		HEX	06,56
		HEX	06,58
		HEX	06,58
		HEX	06,5A
		HEX	06,5C
		HEX	06,5E
		HEX	06,5E
		HEX	06,60
		HEX	06,62
		HEX	06,62
		HEX	06,64
		HEX	06,66
		HEX	06,66
		HEX	06,68
		HEX	06,68
		HEX	06,6A
		HEX	06,6A
		HEX	06,6C
		HEX	06,6C
		HEX	06,6C
		HEX	06,6E
		HEX	06,6E
		HEX	06,6E
		HEX	06,70
		HEX	06,70
		HEX	06,70
		HEX	06,70
		HEX	06,72
		HEX	06,72
		HEX	06,72
		HEX	06,72
		HEX	06,72
		HEX	06,74
		HEX	06,74
		HEX	06,74
		HEX	06,74
		HEX	06,74
		HEX	06,74
		HEX	06,74
		HEX	06,74
		HEX	06,74
		HEX	05,75
		HEX	05,75
		HEX	05,75
		HEX	05,75
		HEX	05,75
		HEX	05,76
		HEX	05,76
		HEX	05,76
		HEX	05,76
		HEX	04,77
		HEX	04,77
		HEX	04,76
		HEX	03,77
		HEX	03,77
		HEX	03,78
		HEX	03,78
		HEX	02,78
		HEX	01,79
		HEX	01,79
		HEX	01,7A
		HEX	00,7A
		HEX	FF,7B
		HEX	FF,7C
		HEX	FE,7C
		HEX	FE,7C
		HEX	FE,7C
		HEX	FD,7B
		HEX	FE,7A
		HEX	FD,79
		HEX	FD,77
		HEX	FE,76
		HEX	FD,75
		HEX	FD,73
		HEX	FE,72
		HEX	FD,71
		HEX	FD,6F
		HEX	FD,6D
		HEX	FE,6C
		HEX	FE,6A
		HEX	FE,68
		HEX	FE,66
		HEX	FE,64
		HEX	FE,62
		HEX	FE,60
		HEX	FE,5E
		HEX	FE,5B
		HEX	FE,59
		HEX	FE,56
		HEX	FE,53
		HEX	FE,51
		HEX	FE,4D
		HEX	FF,4A
		HEX	FF,46
		HEX	FF,42
		HEX	FF,3E
		HEX	FF,3A
		HEX	FF,35
		HEX	FF,2F
		HEX	FF,27
		HEX	FF,1F
		HEX	FF,13
;
BAKABON3	EQU	$
		HEX	78
		HEX	FA,10
		HEX	FA,1A
		HEX	FA,22
		HEX	FA,28
		HEX	FA,2E
		HEX	FA,32
		HEX	FA,36
		HEX	FA,3A
		HEX	FA,3C
		HEX	FA,40
		HEX	FA,42
		HEX	FA,46
		HEX	FA,48
		HEX	FA,4A
		HEX	FA,4E
		HEX	FA,50
		HEX	FA,52
		HEX	FA,54
		HEX	FA,56
		HEX	FA,58
		HEX	FA,58
		HEX	FA,5A
		HEX	FA,5C
		HEX	FA,5E
		HEX	FA,5E
		HEX	FA,60
		HEX	FA,62
		HEX	FA,62
		HEX	FA,64
		HEX	FA,66
		HEX	FA,66
		HEX	FA,68
		HEX	FA,68
		HEX	FA,6A
		HEX	FA,6A
		HEX	FA,6C
		HEX	FA,6C
		HEX	FA,6C
		HEX	FA,6E
		HEX	FA,6E
		HEX	FA,6E
		HEX	FA,70
		HEX	FA,70
		HEX	FA,70
		HEX	FA,70
		HEX	FA,72
		HEX	FA,72
		HEX	FA,72
		HEX	FA,72
		HEX	FA,72
		HEX	FA,74
		HEX	FA,74
		HEX	FA,74
		HEX	FA,74
		HEX	FA,74
		HEX	FA,74
		HEX	FA,74
		HEX	FA,74
		HEX	FA,74
		HEX	FA,75
		HEX	FA,75
		HEX	FA,75
		HEX	FA,75
		HEX	FA,75
		HEX	FB,76
		HEX	FB,76
		HEX	FB,76
		HEX	FB,76
		HEX	FB,77
		HEX	FB,77
		HEX	FC,76
		HEX	FC,77
		HEX	FC,77
		HEX	FD,78
		HEX	FD,78
		HEX	FE,78
		HEX	FE,79
		HEX	FE,79
		HEX	FF,7A
		HEX	00,7A
		HEX	00,7B
		HEX	01,7C
		HEX	02,7C
		HEX	02,7C
		HEX	02,7C
		HEX	02,7B
		HEX	02,7A
		HEX	02,79
		HEX	02,77
		HEX	02,76
		HEX	02,75
		HEX	02,73
		HEX	02,72
		HEX	02,71
		HEX	02,6F
		HEX	02,6D
		HEX	02,6C
		HEX	02,6A
		HEX	02,68
		HEX	02,66
		HEX	02,64
		HEX	02,62
		HEX	02,60
		HEX	02,5E
		HEX	01,5B
		HEX	01,59
		HEX	02,56
		HEX	01,53
		HEX	01,51
		HEX	01,4D
		HEX	01,4A
		HEX	01,46
		HEX	01,42
		HEX	01,3E
		HEX	01,3A
		HEX	00,35
		HEX	00,2F
		HEX	00,27
		HEX	00,1F
		HEX	00,13
;
DTELE_END	EQU	$
;
;************************************************************************
;*		initial ( 水車リフト（大＆小） )			*
;************************************************************************
MILL1_I_ANG	EQU	$
		HEX	080,07F
;
MILL2IN		EQU	$			;-- mill2in --
		LDA	FRCNT2
		STA	MILL2SET

		LDY	#0F0H			;回転角セット
		STY	<ENWRK4+1,X		;
		LDY	#000
		JSR	MILL0_ROT_CALC

		LDA	#00004
		STA	<EWORK0
;
MILL2IN0300	EQU	$
		LDA	<EWORK0
		ASL	A
		TAY
		LDA	MILL2L1X-2,Y
		STA	<EWORK4
		LDA	MILL2L1Y-2,Y
		STA	<EWORK6

		LDA	#HEIH0
		JSL	>ENINSR
		BCC	MILL1IN

		LDA	<EWORK4
		STA	ENWRK6,Y
		SEC
		SBC	#00008
		STA	ENXPSL,Y

		LDA	<EWORK6
		STA	ENWRK8,Y
		SEC
		SBC	#00010H
		STA	ENYPSL,Y

		LDA	<EWORK0
		ASL	A
		STA	ENWRK4,Y

		TXA
		STA	ENWRK0,Y

		LDA	MILL2SET
		STA	ENWRKA,Y

		LDA	#00001
		STA	ENWRKC,Y
		LDA	#00004			;routine mode index
		STA	ENWRK2,Y		;

		DEC	<EWORK0
		BNE	MILL2IN0300

MILL1IN		EQU	$			;-- mill1in --
		LDA	ENXPSL,X
		AND	#00010H
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		TAY
		LDA	!MILL1_I_ANG,Y
		TAY
		STY	<ENWRK1,X

MILL0IN		EQU	$			;-- mill0in --
MILS0IN		EQU	$			;-- mils0in --
		STZ	ENMUKI,X

		M8
		LDA	#0FFH			;水中でも同じスピード
		STA	ENWTSP,X
		M16

		LDA	#08000H
		STA	ENXMAX,X
		XBA
		STA	ENWRKA,X

		LDY	#0F0H
		STY	<ENWRK4+1,X

		STZ	EWIDEX,X		;サウンドセットカウンタークリア
		STZ	EWIDEY,X		;サウンドセットインデックスクリア

		LDA	ENYPSL,X
		SEC
		SBC	#00008H
		STA	ENYPSL,X

		LDA	BG1TYP			;ふかんコース ?
		CMP	#00003			;
		BEQ	MILL0IN0400		; yes: MILL0IN0400
		CMP	#0000DH			;
		BNE	MILL0IN0500		;  no: MILL0IN0500

MILL0IN0400	EQU	$
		INC	ECNTYW,X
		INC	ECNTYW,X

MILL0IN0500	EQU	$

		RTL
;
;************************************************************************
;*		move	 ( 水車リフト（大＆小） )			*
;************************************************************************
;B		ENWRK0	プレイヤーＯＮフラグ
;B		ENWRK1	絵の回転角加速度／１０Ｈ
;B		ENWRK2	プレイヤーの乗った台のオフセットＰＯＳ．
;B		ENWRK3	線リフトフラグ
;		ENWRK4	絵の回転角
;		ENWRK6	移動スカラー量ＬＯＷ
;		ENWRK8	移動スカラー量ＨＩＧＨ
;B		ENWRKA	円チェックデータ
;B		ENWRKB	ユニットチェックデータ
;		ENWRKC	ＢＧチェックインデックス
;
;		ENCONT	進行方向回転角
;
;		ENXMAX	角振動数
;
;		EWIDEX	サウンドセットカウンター
;		EWIDEY	サウンドセットインデックス
;
;		EWORK4		大小フラグ
;		EWORKC
;		EWORKE
;
;		MILL2SET	MILL2のセットフレームカウント
;
MILL0MV		EQU	$			;-- mill0mv --
MILL1MV		EQU	$			;-- mill1mv --
MILL2MV		EQU	$			;-- mill2mv --
MILS0MV		EQU	$			;-- mils0mv --
		STZ	<EWORK4
		LDA	ENMYNO,X
		CMP	#MILS0
		BEQ	MILL0MV0100
		CMP	#MILL1
		BNE	MILL0MV0200

		LDA	ENYPSL,X
		AND	#00010H
		BNE	MILL0MV0200

MILL0MV0100	EQU	$
		INC	<EWORK4
		INC	<EWORK4

MILL0MV0200	EQU	$
		JSR	MILL0_OAM_SET

		JSL	>ENMDCK

		LDA	ENOAML,X
		BMI	MILL0MV0700
		LDY	ENYUSN,X
		BMI	MILL0MV0700

		JSR	MILL0_1ST_CHK

		JSR	MILL0_ANG_CALC

		JSR	MILL0_BGCHK

		JSR	MILL0_PLCHK

		JSR	MILL0_ENGINE

MILL0MV0700	EQU	$

		RTL
;
MILL0_OAM_SET	EQU	$
		LDA	ENOAML,X
		BMI	MILL0_O_SET0100
		LDY	ENYUSN,X
		BPL	MILL0_O_SET0200

MILL0_O_SET0100 EQU	$
		RTS

MILL0_O_SET0200 EQU	$
		LDY	<EWORK4
		JSR	MILL0_ROT_CALC
		LDA	R7
		STA	<EWORKC
		LDA	R8
		STA	<EWORKE

		LDA	ENDSXL,X
		CLC
		ADC	#00008
		STA	<EWORK8
		LDA	ENDSYL,X
		STA	<EWORKA
;
		I16
		LDY	ENOAML,X
		LDA	<EWORK8			;リフト１　Ｘ　ＰＯＳ．
		CLC				;
		ADC	R8			;
		SEC				;
		SBC	<EWORK0			;
		STA	SOAM_DX+0+8*0,Y		;
		CLC				;
		ADC	<EWORK2			;
		STA	SOAM_DX+0+8*1,Y		;
		LDA	<EWORK8			;リフト２　Ｘ　ＰＯＳ．
		CLC				;
		ADC	R7			;
		SEC				;
		SBC	<EWORK0			;
		STA	SOAM_DX+0+8*2,Y		;
		CLC				;
		ADC	<EWORK2			;
		STA	SOAM_DX+0+8*3,Y		;
		LDA	<EWORK8			;リフト３　Ｘ　ＰＯＳ．
		SEC				;
		SBC	R8			;
		SEC				;
		SBC	<EWORK0			;
		STA	SOAM_DX+0+8*4,Y		;
		CLC				;
		ADC	<EWORK2			;
		STA	SOAM_DX+0+8*5,Y		;
		LDA	<EWORK8			;リフト４　Ｘ　ＰＯＳ．
		SEC				;
		SBC	R7			;
		SEC				;
		SBC	<EWORK0			;
		STA	SOAM_DX+0+8*6,Y		;
		CLC				;
		ADC	<EWORK2			;
		STA	SOAM_DX+0+8*7,Y		;
;
		LDA	<EWORKA			;リフト１　Ｙ　ＰＯＳ．
		SEC				;
		SBC	R7			;
		STA	SOAM_DX+2+8*0,Y		;
		STA	SOAM_DX+2+8*1,Y		;
		LDA	<EWORKA			;リフト２　Ｙ　ＰＯＳ．
		CLC				;
		ADC	R8			;
		STA	SOAM_DX+2+8*2,Y		;
		STA	SOAM_DX+2+8*3,Y		;
		LDA	<EWORKA			;リフト３　Ｙ　ＰＯＳ．
		CLC				;
		ADC	R7			;
		STA	SOAM_DX+2+8*4,Y		;
		STA	SOAM_DX+2+8*5,Y		;
		LDA	<EWORKA			;リフト４　Ｙ　ＰＯＳ．
		SEC				;
		SBC	R8			;
		STA	SOAM_DX+2+8*6,Y		;
		STA	SOAM_DX+2+8*7,Y		;
;
		JSR	MILL0_CHANE_SET
;
		LDA	<EWORK4			;大きいほうの水車 ?
		BEQ	MILL0_O_SET0500		; yes: MILL0_O_SET0500

		LDA	SOAM_DX+4+8*0,Y
		AND	#0F1FFH
		ORA	#00800H
		STA	SOAM_DX+4+8*0,Y
		STA	SOAM_DX+4+8*2,Y
		STA	SOAM_DX+4+8*4,Y
		STA	SOAM_DX+4+8*6,Y
		LDA	SOAM_DX+4+8*1,Y
		AND	#0F1FFH
		ORA	#00800H
		STA	SOAM_DX+4+8*1,Y
		STA	SOAM_DX+4+8*3,Y
		STA	SOAM_DX+4+8*5,Y
		STA	SOAM_DX+4+8*7,Y

		I8

		RTS
		IDX16

MILL0_O_SET0500 EQU	$
		LDA	R9
		CLC
		ADC	R9
		STA	R9
		LDA	R10
		CLC
		ADC	R10
		STA	R10
		TYA
		CLC
		ADC	#00008*4
		TAY
;
		JSR	MILL0_CHANE_SET
;
		I8
;
		RTS
;
MILL0_LIFT_REV	EQU	$
		HEX	10,10
		HEX	0C,08
MILL0_LIFT_RAD	EQU	$
		WORD	00028H,00018H
;
MILL0_ROT_CALC	EQU	$
		LDA	!MILL0_LIFT_REV,Y
		AND	#000FFH
		STA	<EWORK0
		LDA	!MILL0_LIFT_REV+1,Y
		AND	#000FFH
		STA	<EWORK2
		LDA	!MILL0_LIFT_RAD,Y
		STA	R6
		LDA	#00003
		STA	R9
		CPY	#000			;小さいやつ ?
		BEQ	MILL0_R_C0200		;  no: MILL0_R_C0200

		DEC	R9

MILL0_R_C0200	EQU	$
		LDY	<ENWRK4+1,X
		TYA
		ASL	A
		STA	R1
		M_CHIP	M_MILL0_OAM_CAL
		LDX	<ENINDX

		LDA	ENMYNO,X
		CMP	#MILL2
		BNE	MILL0_R_C0800

		LDA	ENXPSL,X
		CLC
		ADC	#00008
		STA	<EWORK6
		LDA	ENYPSL,X
		STA	<EWORK8
;
		LDA	<EWORK6			;リフト１　Ｘ　ＰＯＳ．
		CLC				;
		ADC	R8			;
		STA	MILL2L1X		;
		LDA	<EWORK6			;リフト２　Ｘ　ＰＯＳ．
		CLC				;
		ADC	R7			;
		STA	MILL2L2X		;
		LDA	<EWORK6			;リフト３　Ｘ　ＰＯＳ．
		SEC				;
		SBC	R8			;
		STA	MILL2L3X		;
		LDA	<EWORK6			;リフト４　Ｘ　ＰＯＳ．
		SEC				;
		SBC	R7			;
		STA	MILL2L4X		;

		LDA	<EWORK8			;リフト１　Ｙ　ＰＯＳ．
		SEC				;
		SBC	R7			;
		STA	MILL2L1Y		;
		LDA	<EWORK8			;リフト２　Ｙ　ＰＯＳ．
		CLC				;
		ADC	R8			;
		STA	MILL2L2Y		;
		LDA	<EWORK8			;リフト３　Ｙ　ＰＯＳ．
		CLC				;
		ADC	R7			;
		STA	MILL2L3Y		;
		LDA	<EWORK8			;リフト４　Ｙ　ＰＯＳ．
		SEC				;
		SBC	R8			;
		STA	MILL2L4Y		;
;
MILL0_R_C0800	EQU	$
		RTS
;
		IDX16
MILL0_CHANE_SET EQU	$
		LDA	<EWORK8			;リフト１の鎖の　Ｘ　ＰＯＳ．
		CLC				;
		ADC	R10			;
		SEC				;
		SBC	#00004			;
		STA	SOAM_DX+0+8*9,Y		;
		LDA	<EWORK8			;リフト２の鎖の　Ｘ　ＰＯＳ．
		CLC				;
		ADC	R9			;
		SEC				;
		SBC	#00004			;
		STA	SOAM_DX+0+8*0AH,Y	;
		LDA	<EWORK8			;リフト３の鎖の　Ｘ　ＰＯＳ．
		SEC				;
		SBC	R10			;
		SEC				;
		SBC	#00004			;
		STA	SOAM_DX+0+8*0BH,Y	;
		LDA	<EWORK8			;リフト４の鎖の　Ｘ　ＰＯＳ．
		SEC				;
		SBC	R9			;
		SEC				;
		SBC	#00004			;
		STA	SOAM_DX+0+8*0CH,Y	;
;
		LDA	<EWORKA			;リフト１の鎖の　Ｙ　ＰＯＳ．
		SEC				;
		SBC	R9			;
		CLC				;
		ADC	#00004			;
		STA	SOAM_DX+2+8*9,Y		;
		LDA	<EWORKA			;リフト２の鎖の　Ｙ　ＰＯＳ．
		CLC				;
		ADC	R10			;
		CLC				;
		ADC	#00004			;
		STA	SOAM_DX+2+8*0AH,Y	;
		LDA	<EWORKA			;リフト３の鎖の　Ｙ　ＰＯＳ．
		CLC				;
		ADC	R9			;
		CLC				;
		ADC	#00004			;
		STA	SOAM_DX+2+8*0BH,Y	;
		LDA	<EWORKA			;リフト４の鎖の　Ｙ　ＰＯＳ．
		SEC				;
		SBC	R10			;
		CLC				;
		ADC	#00004			;
		STA	SOAM_DX+2+8*0CH,Y	;

		RTS
		IDX8
;
MILL0_1ST_CHK	EQU	$
		LDA	ENXMAX,X		;ファーストフレーム ?
		CMP	#08000H			;
		BNE	MILL0_1ST_CHK60		;  no: MILL0_1ST_CHK60

		STZ	ENXMAX,X
		LDA	ENMYNO,X		;移動しないリフト ?
		CMP	#MILL1			;
		BEQ	MILL0_1ST_CHK50		; yes: MILL0_1ST_CHK50
		CMP	#MILL2			;
		BEQ	MILL0_1ST_CHK50		; yes: MILL0_1ST_CHK50

		I16				;線リフト ?
		LDA	ENWRKC,X		;
		TAX				;
		LDA	>ENBGCK_UNIT_C,X	;
		I8				;
		LDX	<ENINDX			;
		AND	#0FF00H			;
		CMP	#UT8700			;
		BNE	MILL0_1ST_CHK50		;  no: MILL0_1ST_CHK50

		INC	<ENWRK3,X
		BRA	MILL0_1ST_CHK60

MILL0_1ST_CHK50 EQU	$
		LDA	ENMOD1,X		;ＢＧチェック無しに
		AND	#0FFE0H
		STA	ENMOD1,X

MILL0_1ST_CHK60 EQU	$

		RTS
;
MILL0_BCHK_REV	EQU	$
		WORD	00010H,0000CH
MILL0_SOUND	EQU	$
		HEX	6A,6B,6C,6B
;
MILL0_BGCHK	EQU	$
		LDY	<ENWRK3,X		;線リフト ?
		BNE	MILL0_BGCHK2		; yes: MILL0_BGCHK2

		LDY	<EWORK4
		LDA	!MILL0_BCHK_REV,Y
		STA	CCWORK14
		LDA	ECENTX,X
		STA	CCWORK15
		LDA	ECENTY,X
		STA	CCWORK16

		LDA	<ENWRK4,X
		STA	R6
		LDA	<ENWRK1,X
		STA	R5
		LDA	<EWORKC
		STA	CCWORK1E
		LDA	<EWORKE
		STA	CCWORK1F
		M_CHIPR M_MILL0_BGCHK
		LDX	<ENINDX
		LDA	R1
		STA	ENCBFG,X
		BEQ	MILL0_BGCHK2500

		LDY	#000
		STY	<ENWRK1,X
		BRA	MILL0_BGCHK2500
;
MILL0_BGCHK2	EQU	$
		LDA	<ENCONT,X		;進行方向と回転方向合ってる ?
		SEC				;
		SBC	#04000H			;
		EOR	<ENWRK1-1,X		;
		BMI	MILL0_BGCHK2300		; yes: MILL0_BGCHK2300

		LDA	<ENCONT,X
		CLC
		ADC	#08000H
		STA	<ENCONT,X
		LDA	ENXMAX,X
		LDY	ENWRKA,X
		CPY	#002
		BPL	MILL0_BGCHK2100

		CLC
		ADC	#00100H
		AND	#001FEH
		BRA	MILL0_BGCHK2200

MILL0_BGCHK2100 EQU	$
		EOR	#0FFFFH
		INC	A

MILL0_BGCHK2200 EQU	$
		STA	ENXMAX,X

MILL0_BGCHK2300 EQU	$
		LDA	ENXPSL,X
		STA	<EWORK0
		LDA	ENYPSL,X
		STA	<EWORK2

		JSL	>NRLF0_BGCHK

		LDA	ENXPSL,X
		SEC
		SBC	<EWORK0
		CLC
		ADC	ENMOVX,X
		STA	ENMOVX,X
		LDA	ENYPSL,X
		SEC
		SBC	<EWORK2
		CLC
		ADC	ENMOVY,X
		STA	ENMOVY,X

MILL0_BGCHK2500 EQU	$
		LDY	<ENWRK1,X
		TYA
		CPY	#000
		BPL	MILL0_BGCHK2800

		ORA	#0FF00H

MILL0_BGCHK2800 EQU	$
		STA	<EWORK0
		ASL	A
		CLC
		ADC	<ENWRK4,X
		STA	<ENWRK4,X

		LDA	ENMYNO,X		;始めから動いてるリフト ?
		CMP	#MILL1			;
		BEQ	MILL0_BGCHK4000		;
		CMP	#MILL2			;
		BEQ	MILL0_BGCHK4000		; yes: MILL0_BGCHK4000

		LDA	<EWORK0
		BPL	MILL0_BGCHK3000

		EOR	#0FFFFH
		INC	A

MILL0_BGCHK3000 EQU	$
		CLC
		ADC	EWIDEX,X
		CMP	#00600H
		BMI	MILL0_BGCHK3200

		PHA
		LDA	EWIDEY,X
		INC	A
		AND	#00003
		STA	EWIDEY,X
		TAY
		LDA	!MILL0_SOUND,Y
		TAY
		TYA
		JSL	>SOUND_3_ON		;［Ｓ］
		PLA
		SEC
		SBC	#00600H

MILL0_BGCHK3200 EQU	$
		STA	EWIDEX,X

		RTS

MILL0_BGCHK4000 EQU	$
		LDY	<ENWRK1,X
		BEQ	MILL0_BGCHK4800

		LDA	#000E0H			;［Ｓ］
		STA	SOUND_1

MILL0_BGCHK4800 EQU	$

		RTS
;
MILL0_XRANGE	EQU	$
		WORD	0000CH+008,00008H+008
;
MILL0_PLCHK	EQU	$
		LDY	<EWORK4
		LDA	!MILL0_XRANGE,Y
		STA	R0
		ASL	A
		STA	R1

		LDA	<EWORKC
		EOR	#0FFFFH
		INC	A
		STA	<EWORK8
		LDA	<EWORKE
		EOR	#0FFFFH
		INC	A
		STA	<EWORKA
		STZ	<EWORK6

		LDA	<EWORKC				;1
		STA	<EWORK0
		LDA	<EWORKE
		JSR	MILL0_PLCHK_SB

		INC	<EWORK6
		LDA	<EWORKE				;0
		STA	<EWORK0
		LDA	<EWORK8
		JSR	MILL0_PLCHK_SB

		INC	<EWORK6
		LDA	<EWORK8				;3
		STA	<EWORK0
		LDA	<EWORKA
		JSR	MILL0_PLCHK_SB

		INC	<EWORK6
		LDA	<EWORKA				;2
		STA	<EWORK0
		LDA	<EWORKC
		JSR	MILL0_PLCHK_SB
		RTS
;
MILL0_PLCHK_SB	EQU	$
		STA	<EWORK2

		CPX	PONLFFG			;乗ってた ?
		BEQ	MILL0_PLC_SB100		; yes: MILL0_PLC_SB100

		LDY	PLYSPD+1		;プレイヤー上昇中 ?
		BMI	MILL0_PLC_SB080		; yes: MILL0_PLC_SB080

		LDA	EPWIDX,X		;プレイヤー乗った ?
		CLC				;
		ADC	<EWORK0			;
		CLC				;
		ADC	R0			;
		CMP	R1			;
		BCS	MILL0_PLC_SB080		;
						;
		LDA	EPWIDY,X		;
		CLC				;
		ADC	<EWORK2			;
		SEC				;
		SBC	PWIDEY			;
		SEC				;
		SBC	#00008			;
		CMP	#0FFF6H			;
		BCC	MILL0_PLC_SB080		;  no: MILL0_PLC_SB080

		LDY	PONLFFG			;プレイヤーすでにほかの誰かに乗ってる ?
		BNE	MILL0_PLC_SB080		; yes: MILL0_PLC_SB080

		STX	PONLFFG

		SEC				;プレイヤーＹ　ＰＯＳ．補正
		ADC	PLYPSL			;
		INC	A			;
		STA	PLYPSL			;

		LDY	<EWORK6
		STY	<ENWRK0,X
		JMP	MILL0_PLC_SB200

MILL0_PLC_SB080 EQU	$

		RTS

MILL0_PLC_SB100 EQU	$
		LDY	<ENWRK0,X		;この台に乗ってる ?
		CPY	<EWORK6			;
		BNE	MILL0_PLC_SB080		;  no: MILL0_PLC_SB080

		LDY	PLYSPD+1		;プレイヤージャンプした ?
		BMI	MILL0_PLC_SB130		; yes: MILL0_PLC_SB130

		LDY	PLEATFG			;プレイヤー食われてる ?
		BNE	MILL0_PLC_SB130		; yes: MILL0_PLC_SB130

		LDY	<ENWRK2,X
		TYA
		CPY	#000
		BPL	MILL0_PLC_SB120

		ORA	#0FF00H

MILL0_PLC_SB120 EQU	$
		STA	R2
		LDA	<EWORK0
		SEC
		SBC	R2
		CLC
		ADC	ENMOVX,X
		STA	R2
		CLC
		ADC	PLXPSL
		STA	PLXPSL
		LDA	R2
		CLC
		ADC	EPWIDX,X
		STA	EPWIDX,X

		LDA	EPWIDY,X		;
		CLC				;
		ADC	<EWORK2			;
		SEC				;
		SBC	PWIDEY			;
		SEC				;
		SBC	#00008			;
		SEC
		ADC	PLYPSL
		STA	PLYPSL

		LDA	EPWIDX,X		;台に乗ってる ?
		CLC				;
		ADC	<EWORK0			;
		CLC				;
		ADC	R0			;
		CMP	R1			;
		BCC	MILL0_PLC_SB200		; yes: MILL0_PLC_SB200

MILL0_PLC_SB130 EQU	$
		CPX	PONLFFG
		BNE	MILL0_PLC_SB150

		STZ	PONLFFG

MILL0_PLC_SB150 EQU	$
		LDY	#000			;プレイヤーＯＮフラグクリア
		STY	<ENWRK0,X

		PLA				;直接ＲＴＳ
		RTS

MILL0_PLC_SB200 EQU	$
		INC	ONLFFG

		LDY	<EWORK0
		STY	<ENWRK2,X
		STZ	PLYSPD

		PLA				;直接ＲＴＳ

MILL0_A_C0000	EQU	$

		RTS
;
MILL0_LIFT_NO	EQU	$
;			[2] [1] [4] [3]
		HEX	000,040,080,0C0
;
MILL0_ANG_CALC	EQU	$
		LDA	ENMYNO,X		;移動しないリフト ?
		CMP	#MILL1			;
		BEQ	MILL0_A_C0000		; yes: MILL0_A_C0000
		CMP	#MILL2			;
		BEQ	MILL0_A_C0000		; yes: MILL0_A_C0000

		CPX	PONLFFG			;プレイヤー乗ってる ?
		BNE	MILL0_A_C0500		;  no: MILL0_A_C0500

		LDY	<ENWRK0,X
		LDA	!MILL0_LIFT_NO,Y
		AND	#000FFH
		CLC
		ADC	<ENWRK4+1,X
		AND	#000FFH
		ASL	A
		STA	R1
		LDA	#0FFF0H
		STA	R6
		M_CHIP	M_ENMY_1P_ROT
		LDX	<ENINDX
		LDA	R0			;回ろうとする力が弱すぎる ?
;		 CLC
;		 ADC	 #00001
		INC	A
		CMP	#00002H
		BCC	MILL0_A_C0500

		LDY	<ENWRK1,X
		TYA
		CPY	#000
		BPL	MILL0_A_C0100

		ORA	#0FF00H

MILL0_A_C0100	EQU	$
		CLC
		ADC	R0
		TAY
		CLC
		ADC	#00080H
		CMP	#00100H
		BCC	MILL0_A_C0200

MILL0_A_C0180	EQU	$
		LDY	<ENWRK1,X

MILL0_A_C0200	EQU	$
		STY	<ENWRK1,X
		RTS

MILL0_A_C0500	EQU	$
		LDY	<ENWRK1,X
		TYA
		CPY	#000
		BPL	MILL0_A_C0600

		ORA	#0FF00H
		CLC
		ADC	#00002H
		BRA	MILL0_A_C0700

MILL0_A_C0600	EQU	$
		SEC
		SBC	#00002

MILL0_A_C0700	EQU	$
		TAY
		CLC
		ADC	#00002
		CMP	#00004
		BCS	MILL0_A_C0780

		LDY	#000

MILL0_A_C0780	EQU	$
		STY	<ENWRK1,X

MILL0_A_C0800	EQU	$

		RTS
;
MILL0_ENGINE	EQU	$
		M8
		LDA	<ENWRK1,X
		PHP
		BPL	MILL0_ENG0100

		EOR	#0FFH
		INC	A

MILL0_ENG0100	EQU	$
		TAY
		M16
		TYA
		STA	ENWRK7,X
		M8
		STZ	ENWRK9,X
		PLP
		BPL	MILL0_ENG0500

		DEC	ENWRK9,X

MILL0_ENG0500	EQU	$
		M16

		LDY	<ENWRK3,X		;線リフト ?
		BNE	MILL0_ENG0800		; yes: MILL0_ENG0800

		LDA	ENMYNO,X		;移動しないリフト ?
		CMP	#MILL1			;
		BEQ	MILL0_ENG0800		; yes: MILL0_ENG0800
		CMP	#MILL2			;
		BEQ	MILL0_ENG0800		; yes: MILL0_ENG0800

		LDA	ENWRK7,X
		LDY	ENWRK9,X
		BNE	MILL0_ENG0700

		EOR	#0FFFFH
		INC	A

MILL0_ENG0700	EQU	$
		STA	ENXSPD,X

MILL0_ENG0800	EQU	$

		RTS
;
SMUCH_MILL2_CHK EQU	$
		LDY	<ENWRK0,X
		LDA	ENMODE,Y		;水車リフトいる ?
		CMP	#EMOVE			;
		BNE	SMUCH_M_CHK0100		;  no: SMUCH_M_CHK0100

		LDA	ENMYNO,Y		;水車リフトのまま ?
		CMP	#MILL2			;
		BNE	SMUCH_M_CHK0100		;  no: SMUCH_M_CHK0100

		LDA	MILL2SET
		CMP	ENWRKA,X
		BEQ	SMUCH_M_CHK0800

SMUCH_M_CHK0100 EQU	$
		PLY
		PLA		;直接ＲＴＬ
		JMP	>ENCLEAR

SMUCH_M_CHK0800 EQU	$
		LDY	<ENWRK4,X
		LDA	MILL2L1X-2,Y
		SEC
		SBC	ENWRK6,X
		CLC
		ADC	ENXPSL,X
		STA	ENXPSL,X
		LDA	MILL2L1Y-2,Y
		SEC
		SBC	ENWRK8,X
		CLC
		ADC	ENYPSL,X
		STA	ENYPSL,X

		LDA	MILL2L1Y-2,Y		;リフトに戻った ?
		SEC				;
		SBC	#00010H			;
		CMP	ENYPSL,X		;
		BPL	SMUCH_M_CHK0900		;  no: SMUCH_M_CHK0900

		STA	ENYPSL,X
		STZ	ENYSPD,X
		STZ	ENGPOW,X

SMUCH_M_CHK0900 EQU	$
		LDA	MILL2L1X-2,Y
		STA	ENWRK6,X
		LDA	MILL2L1Y-2,Y
		STA	ENWRK8,X

		LDY	EPXMUK,X
		TYA
		STA	ENMUKI,X

		RTL
;
;
;************************************************************************
;*		initial ( player 1up bubble )				*
;************************************************************************
PUPBBIN		EQU	$			;-- pupbbin --
		RTL
;
;************************************************************************
;*		move	( player 1up bubble )				*
;************************************************************************
;		ENWRK0	１ＵＰ／３ＵＰフラグ  0...1UP 2...3UP
;		ENWRK2
;
PUPBBMV		EQU	$			;-- pupbbmv --
		STZ	ENMUKI,X

		LDY	<ENWRK0,X		;３ＵＰ ?
		BEQ	PUPBBMV0100		;  no: PUPBBMV0100

		LDA	ENOAML,X		;ＯＡＭセットしていい ?
		BMI	PUPBBMV0100		;  no: PUPBBMV0100

		I16
		TAY
		LDA	SOAM_DX+4+8*4,Y
		AND	#0FF00H
		ORA	#0004AH
		STA	SOAM_DX+4+8*4,Y
		I8

PUPBBMV0100	EQU	$
		JSL	>ENMDCK

		LDY	<ENWRK2,X
		BNE	PUPBBMV0180

		INC	<ENWRK2,X

		RTL

PUPBBMV0180	EQU	$
		LDY	ECRSFG,X		;プレイヤーにあたった ?
		BMI	PUPBBMV0200		; yes: PUPBBMV0200
		BEQ	PUPBBMV0500		;敵にあたった ?
						;  no: PUPBBMV0500
		LDA	ENMODE-1,Y
		CMP	#EMOVE
		BNE	PUPBBMV0500
		LDA	ENSHOT-1,Y		;ショットされてる ?
		BEQ	PUPBBMV0500		;  no: PUPBBMV0500

		DEY
		TYX
		JSL	>ENDEATH_SET_4

PUPBBMV0200	EQU	$
		LDA	ECENTX,X
		SEC
		SBC	#00008
		STA	WORK0
		LDA	ECENTY,X
		SEC
		SBC	#00008
		STA	WORK2

		LDY	<ENWRK0,X		;３ＵＰ ?
		BNE	PUPBBMV0300		; yes: PUPBBMV0300

		JSL	>PL_1UP_SET
		BRA	PUPBBMV0400

PUPBBMV0300	EQU	$
		JSL	>PL_3UP_SET

PUPBBMV0400	EQU	$
		LDA	#FLKIR		;(A) <-- 効果Ｎｏ．
		JSL	>EXINSR		;効果エリア確保
		LDA	ENXPSL,X
		STA	EXXPSL,Y	;Ｘ座標セット
		LDA	ENYPSL,X
		STA	EXYPSL,Y	;Ｙ座標セット
		LDA	#0CH
		STA	EXCHPT,Y	;パターンＮｏ．初期セット
		LDA	#08H
		STA	EXTIM0,Y	;タイマーセット

		LDA	<ENWRK4,X
;		STA	ENXPSL,X
		STA	<EWORK4
		LDA	ENWRK6,X
;		STA	ENYPSL,X
		JSL	>NON_EXIST_SET2

		JMP	>ENCLEAR_NORETN

PUPBBMV0500	EQU	$
		LDA	ENGMAX,X
		SEC
		SBC	ENYSPD,X
		CLC
		ADC	#00002
		CMP	#00004
		BCS	PUPBBMV0600

		LDA	ENGMAX,X
		EOR	#0FFFFH
		INC	A
		STA	ENGMAX,X

PUPBBMV0600	EQU	$
		LDA	ENTIM1,X
		BNE	PUPBBMV0700

		LDA	#00008
		STA	ENTIM1,X

		LDA	ENCHPT,X
		INC	A
		AND	#00003
		STA	ENCHPT,X

PUPBBMV0700	EQU	$
		LDA	ENCBFG,X
		AND	#00001
		BEQ	PUPBBMV0800

		STZ	ENYSPD,X

PUPBBMV0800	EQU	$

		RTL
;
;************************************************************************
;*		initial ( ノーマルオブジェコイン )			*
;************************************************************************
COIN1IN		EQU	$			;-- coin1in --
		LDA	#00100H
		STA	ENTIM0,X
		LDA	#00140H
		STA	ENTIM1,X
;		LDA	#00020H
		LDA	#00010H
		STA	ENTIM2,X

		RTL
;
;************************************************************************
;*		move	( ノーマルオブジェコイン )			*
;************************************************************************
;		ENWRK0	バウンドカウンター
;		ENWRK2	ROUTINE MODE INDEX
;		ENWRKA	DORB2 の ROUTINE INDEX
;		ENWRKC	セットチェックＰＯＳ．
;
;		ENTIM0	フラッシング開始タイマー
;		ENTIM1	寿命タイマー
;		ENTIM2	プレイヤーチェックロックタイマー
;		ENTIM3	キャラパターンチェンジタイマー
;
COIN1MV		EQU	$			;-- coin1mv --
		JSL	>ENMDCK

		LDA	FRCNT2
		LSR	A
		LSR	A
		LSR	A
		AND	#00003
		STA	ENCHPT,X

		LDY	<ENWRK2,X
		BEQ	COIN1MV1000

		LDA	ENCBFG,X		;地面に着いた ?
		LSR	A			;
		BCC	COIN1MV0800		;  no: COIN1MV0800

		JSL	>COIN1IN

		LDA	<RANDM0
		AND	#001FFH
		CLC
		ADC	#00100H-180H
		STA	ENXSPD,X
		LDA	<RANDM0
		XBA
		AND	#001FFH
		EOR	#0FFFFH
		INC	A
		CLC
		ADC	#0FE00H
		STA	ENYSPD,X
		LDA	#00002
		STA	ENYUSN,X

		STZ	<ENWRK2,X

COIN1MV0800	EQU	$

		RTL

COIN1MV1000	EQU	$
		LDA	ENCBFG,X		;足がついてる ?
		LSR	A			;
		BCC	COIN1MV1100		;  no: COIN1MV1100
;
		LDA	ENXSPD,X
		CMP	#08000H
		ROR	A
		STA	ENXSPD,X
		LDA	#0FD80H
		STA	ENYSPD,X
		LDA	#00040H
		STA	ENGPOW,X

COIN1MV1100	EQU	$
		LDA	ENTIM2,X		;プレイヤーチェックする ?
		BNE	COIN1MV1500		;  no: COIN1MV1500

		LDY	ECRSFG,X		;プレイヤーとあたった ?
		BEQ	COIN1MV1500
		BMI	COIN1MV1300		; yes: COIN1MV1300

		LDA	ENMODE-1,Y
		CMP	#EMOVE
		BNE	COIN1MV1500
		LDA	ENSHOT-1,Y
		BEQ	COIN1MV1500

		LDA	ENMYNO-1,Y
		CMP	#EGG00
		BMI	COIN1MV1500
		CMP	#EGG09+1
		BPL	COIN1MV1500

COIN1MV1300	EQU	$
		JSL	>COIN1_GET2

		JMP	>ENCLEAR_NORETN

COIN1MV1500	EQU	$
		LDA	ENTIM0,X		;フラッシングする?
		BNE	COIN1MV3000		;  no: COIN1MV3000

		LDA	ENTIM1,X		;消える ?
		BNE	COIN1MV1800		;  no: COIN1MV1800

		LDY	<ENWRK4,X		;効果だしてカウントアップする ?
		BNE	COIN1MV1300		; yes: COIN1MV1300

		JMP	>ENCLEAR

COIN1MV1800	EQU	$
		LDA	FRCNT2
		AND	#00001
		ASL	A
		DEC	A
		STA	ENYUSN,X

COIN1MV3000	EQU	$

		RTL
;
COIN1_GET	EQU	$
		PHB
		PHK
		PLB
		JSL	>COIN1_GET2
		JSL	>ENCLEAR_NORETN
		PLB
		RTL
;
COIN1_GET2	EQU	$
		LDA	#FLKIR
		JSL	>EXINSR
		LDA	ENXPSL,X
		STA	EXXPSL,Y
		LDA	ENYPSL,X
		STA	EXYPSL,Y
		LDA	#0000CH
		STA	EXCHPT,Y
		LDA	#00008
		STA	EXTIM0,Y

		JSL	>COIN1_END_SET
		JMP	>COIN_CATCH
;
;****************************************************************
;*		initial ( ショックウェーブ発生 )		*
;****************************************************************
SWAVMIN		EQU	$			;-- swavmin --
SWAV0IN		EQU	$			;-- swav0in --
SWAV1IN		EQU	$			;-- swav1in --
		RTL
;
;****************************************************************
;*		move	( ショックウェーブ発生 )		*
;****************************************************************
SWAVMMV		EQU	$			;-- swavmmv --
		JSL	>ENMDCK

		LDA	ENCBFG,X
		BIT	#00001
		BEQ	SWAVMMV0100

		AND	#0000CH
		BEQ	SWAVMMV0500

SWAVMMV0100	EQU	$
		JMP	>ENCLEAR

SWAVMMV0500	EQU	$
		LDA	ENTIM0,X		;ショックウェーブ出す ?
		BNE	SWAVMMV0700		;  no: SWAVMMV0700

		LDA	#SWAV1
		JSL	>ENINSR
		BCC	SWAVMMV0700

		LDA	ENXPSL,X
		STA	ENXPSL,Y
		LDA	ENYPSL,X
		STA	ENYPSL,Y
		LDA	#00001
		STA	ENCHPT,Y
		INC	A	;[ LDA	#00002 ]
		STA	EWIDEY,Y
		INC	A	;[ LDA	#00003 ]
		STA	ENTIM1,Y
		LDA	#00008
		STA	ENWRK0,Y
		LDA	#0000BH
		STA	ENWRK4,Y
		INC	A	;[ LDA	#0000CH ]
		STA	ECNTYW,Y

		LDA	#00039H			;［Ｓ］
		JSL	>SOUND_3_ON
;;;;;;;;		LDA	#00020H			;［Ｓ］
;;;;;;;;		STA	SOUND0

		LDA	#00006H
		STA	ENTIM0,X

SWAVMMV0700	EQU	$
		LDA	ENXPSL,X		;範囲外 ?
		SEC				;
		SBC	ENWRKC,X		;
		CLC				;
		ADC	#00080H			;
		CMP	#00100H			;
		BCS	SWAVMMV0100		; yes: SWAVMMV0100

		RTL
;
;****************************************************************
;*		move	( ショックウェーブ )			*
;****************************************************************
;		ENWRK0	キャラパターンインデックス
;		ENWRK4	キャラパターンインデックス加算値
;
SWAV0_CHPT	EQU	$
		HEX	00B,00A,009,008,007,006,005,004,003,002,001
SWAV1_CHPT	EQU	$
		HEX	012,011,009,010,00F,00E,00D,00C
;
SWAV0_YWIDE	EQU	$-4
;ENWRK0 =		[4] [5] [6] [7] [8] [9] [A]
		HEX	004,008,00C,010,008,004,002
;ENWRK0 =				[4] [5] [6] [7]
		HEX	000,000,000,000,004,006,00A,004
SWAV0_YCPOS	EQU	$-4
;ENWRK0 =		[4] [5] [6] [7] [8] [9] [A]
		HEX	00C,008,004,000,008,00C,00E
;ENWRK0 =				[4] [5] [6] [7]
		HEX	000,000,000,000,00C,00A,006,00C
;
;	ENCHPT	=	0,1
;	ENWRK0	=	B,8
;	ENWRK4	=	0,B
;	ENTIM1	=	3,3
;	EWIDEY	=	4,2
;	ECNTYW	=	C,E
;
SWAV0MV		EQU	$			;-- swav0mv --
SWAV1MV		EQU	$			;-- swav1mv --
		JSL	>ENMDCK

		LDA	ENTIM1,X
		BNE	SWAV0MV0800

		DEC	<ENWRK0,X
		BPL	SWAV0MV0700

		JMP	>ENCLEAR

SWAV0MV0700	EQU	$
		LDA	<ENWRK0,X
		CLC
		ADC	<ENWRK4,X
		TAY
		LDA	!SWAV0_CHPT,Y
		AND	#000FFH
		STA	ENCHPT,X

		LDA	#00003
		STA	ENTIM1,X

		LDA	!SWAV0_YWIDE,Y
		AND	#000FFH
		STA	EWIDEY,X
		LDA	!SWAV0_YCPOS,Y
		AND	#000FFH
		STA	ECNTYW,X

SWAV0MV0800	EQU	$
		LDY	<ENWRK0,X		;プレイヤーチェックをする ?
		CPY	#003+1			;
		BMI	SWAV0MV0900		;  no: SWAV0MV0900

		LDY	ECRSFG,X		;プレイヤーとあたった ?
		BPL	SWAV0MV0900		;  no: SWAV0MV0900

		JSL	>PLFLST

SWAV0MV0900	EQU	$

		RTL
;
;************************************************************************
;*		initial ( ちくわ )					*
;************************************************************************
TIKU0IN		EQU	$			;-- tiku0in --
TIKU1IN		EQU	$			;-- tiku1in --
		LDY	#008H
		LDA	ENMYNO,X
		CMP	#TIKU0
		BEQ	TIKU0IN0100

		LDY	#010H

TIKU0IN0100	EQU	$
		TYA
		STA	EWIDEX,X
		STA	EWIDEY,X
		RTL
;
;************************************************************************
;*		move	( ちくわ )					*
;************************************************************************
TIKU0_LPCNT	EQU	$
;			[TIKU0] [TIKU1]
		WORD	00001H, 00004H
TIKU0_BGUNIT	EQU	$
		WORD	UT7505,UT7500,UT7501,UT3DBB,UT3DBC
TIKU0_BGCHG_XP	EQU	$
		WORD	00000H,00000H,00010H,0FFF0H,00010H
TIKU0_BGCHG_YP	EQU	$
		WORD	00000H,00000H,00000H,00010H,00000H
;
TIKU0MV		EQU	$			;-- tiku0mv --
TIKU1MV		EQU	$			;-- tiku1mv --
		STZ	ENMUKI,X

		JSL	>ENMDCK

		LDY	<ENWRK2,X
		BEQ	TIKU0MV0300

		JMP	>ENCLEAR

TIKU0MV0300	EQU	$
;
;-------------- ”ブルブル”チェック ----------------------------
		LDA	ENTIM0,X		;”ブルブル” ?
		DEC	A			;
		CMP	#00050H			;
		BCS	TIKU0MV0600		;  no: TIKU0MV0600
;
		CMP	#00040H			;落下スタート ?
		BNE	TIKU0MV0500		;  no: TIKU0MV0500
;
		LDA	#00004H			;重力セット
		STA	ENGPOW,X
;
TIKU0MV0500	EQU	$
		LDA	<FRCNT2
		LSR	A
		BCC	TIKU0MV0600

		LDA	ENXPSL,X
		EOR	#00001H
		PHA
		SEC
		SBC	ENXPSL,X
		STA	ENMOVX,X
		PLA
		STA	ENXPSL,X
;
;-------------- プレイヤー衝突チェック --------------------------
TIKU0MV0600	EQU	$
		LDA	ONLFFG
		PHA

		JSL	>POBBGCR_H		;プレイヤーチェック

		PLA
		SEC
		SBC	ONLFFG			;元のＢＧに戻る ?
		ORA	ENGPOW,X		;
		BNE	TIKU0MV0800		;  no: TIKU0MV0800

		LDA	ENOAML,X
		BMI	TIKU0MV0800

		LDA	ENXPSL,X
		STA	<EWORK4
		LDA	ENYPSL,X
		STA	<EWORK6

		LDA	ENMYNO,X
		SEC
		SBC	#TIKU0
		ASL	A
		TAY
		LDA	!TIKU0_LPCNT,Y
		STA	<EWORK0

TIKU0MV0700	EQU	$
		LDA	!TIKU0_BGUNIT,Y
		STA	<EWORK2
		PHY

		JSR	TIKU0_BGCHG

		LDX	<ENINDX
		PLY
		INY
		INY
		DEC	<EWORK0
		BNE	TIKU0MV0700

		INC	<ENWRK2,X

TIKU0MV0800	EQU	$

		RTL
;
TIKU0_BGCHG	EQU	$
		LDA	!TIKU0_BGCHG_XP,Y
		CLC
		ADC	<EWORK4
		STA	<EWORK4
		LDA	!TIKU0_BGCHG_YP,Y
		CLC
		ADC	<EWORK6
		STA	<EWORK6

		LDA	<EWORK4			;BG write X pos. set
		STA	BGXPS1
		LDA	<EWORK6			;BG write Y pos. set
		STA	BGYPS1
		LDA	#BGCG			;BG change type no. set
		STA	BGCGNO
		LDA	<EWORK2			;BG change unit no. set
		STA	BGUTNO
		JSL	>UNITCHG

		RTS
;
;************************************************************************
;*		initial ( カウントダウンリフト )			*
;************************************************************************
CNTLFIN		EQU	$			;-- cntlfin --
		RTL
;
;************************************************************************
;*		move	( カウントダウンリフト )			*
;************************************************************************
;		ENWRK0	カウント数 0...LAST NO.
;
CNTLF_BGUNIT	EQU	$
		WORD	UT0000,UT0000,UT0000,UT0000	;[0]
		WORD	UT7600,UT7601,UT7778,UT7779	;[1]
		WORD	UT7602,UT7603,UT777A,UT777B	;[2]
		WORD	UT7604,UT7605,UT777C,UT777D	;[3]
;
CNTLFMV		EQU	$			;-- cntlfmv --
		JSL	>ENMDCK

		LDY	<ENWRK2,X
		BNE	CNTLFMV0100

		INC	<ENWRK2,X

		RTL

CNTLFMV0100	EQU	$
		LDA	ONLFFG
		PHA
		JSL	>POBBGCR_H
		PLA
		CMP	ONLFFG			;プレイヤー乗ってる ?
		BNE	CNTLFMV0800		; yes: CNTLFMV0800

		LDA	#0003BH			;［Ｓ］
		JSL	>SOUND_3_ON
;;;;;;;;		LDA	#00019H			;［Ｓ］
;;;;;;;;		STA	SOUND3

		LDA	<ENWRK0,X		;最後 ?
		BNE	CNTLFMV0500		;  no: CNTLFMV0500

		LDA	ECENTX,X
		STA	<EWORK0
		LDA	ECENTY,X
		STA	<EWORK2
		LDA	#FSMK0
		JSL	>FSMK0_SET2

		LDA	<ENWRK0,X

CNTLFMV0500	EQU	$
		ASL	A
		ASL	A
		ASL	A
		TAY

		LDA	ENXPSL,X
		STA	<EWORK4
		LDA	ENYPSL,X
		STA	<EWORK6
		LDA	#00004			;ループカウンター
		STA	<EWORK0			;

CNTLFMV0700	EQU	$
		LDA	!CNTLF_BGUNIT,Y
		STA	<EWORK2
		PHY
		TYA
		AND	#00007
		TAY
		INY
		INY

		JSR	TIKU0_BGCHG

		LDX	<ENINDX
		PLY
		INY
		INY
		DEC	<EWORK0
		BNE	CNTLFMV0700

		JSL	>ENCLEAR

CNTLFMV0800	EQU	$

		RTL
;
;************************************************************************
;*		initial ( がぼん )					*
;************************************************************************
GABON_XMAX	EQU	$
		WORD	0FFBDH,00046H
;
GABONIN		EQU	$			;-- gabonin --
		INC	<ENWRK4,X

		LDY	#000
		LDA	PLXPSL
		SEC
		SBC	ENXPSL,X
		BMI	GABONIN0100

		INY
		INY

GABONIN0100	EQU	$
		TYA
		STA	ENMUKI,X
		LDA	!GABON_XMAX,Y
		STA	ENXMAX,X

		RTL
;
;************************************************************************
;*		move	( がぼん )					*
;************************************************************************
;		ENWRK0	キャラパターンチェンジカウンター
;		ENWRK2	ROUTINE MODE INDEX
;		ENWRK4	PATTERN ADD
;		ENWRK6	倍率
;		ENWRK8	回転角
;		ENWRKA	回転角加算値
;		ENWRKC
;
GABON_SUB	EQU	$
		WORD	GABON_SUB0	;てくてく
		WORD	GABON_SUB1	;もちあげ
		WORD	GABON_SUB2	;着地待ち
		WORD	GABON_SUB3	;ごろごろ
;
GABONMV		EQU	$			;-- gabonmv --
		LDY	ENTROB,X
		BMI	GABONMV0100

		JSL	>TROBJ_OAM_2x2

GABONMV0100	EQU	$
		LDY	<ENWRK2,X		;ごろごろ ?
		CPY	#003			;
		BNE	GABONMV0200		;  no: GABONMV0200

		LDA	ENMODE,X
		CMP	#EMOVE
		BNE	GABONMV0200

		LDA	ENSTFG
		ORA	BIRIBIRI
		ORA	ITEMNO
		BNE	GABONMV0900

		LDA	ENCBFG,X		;壁にあたった ?
		AND	#0000CH			;
		BEQ	GABONMV0300		;  no: GABONMV0300

		JMP	>ENDEATH_SET_3

GABONMV0200	EQU	$
		JSL	>ENMDCK			;mode check

GABONMV0300	EQU	$
		TXY
		LDA	<ENWRK2,X
		ASL	A
		TAX
		JSR	(GABON_SUB,X)

		LDY	#000
		LDA	ENXMAX,X
		BEQ	GABONMV0800
		BMI	GABONMV0700

		INY
		INY

GABONMV0700	EQU	$
		TYA
		STA	ENMUKI,X

GABONMV0800	EQU	$
		JSR	GABON_PLCHK
		JSR	GABON_ENCHK

GABONMV0900	EQU	$

		RTL
;
GABON_TIMER	EQU	$
		HEX	00C,020,018
;
GABON_SUB0	EQU	$
		TYX

		STZ	ENXPOW,X

		LDY	ENCHPT,X
		CPY	#003H
		BMI	GABON_SUB0500

		LDA	ENTIM0,X
		BEQ	GABON_SUB0100

		RTS

GABON_SUB0100	EQU	$
		INC	ENCHPT,X
		LDY	ENCHPT,X
		CPY	#005H
		BMI	GABON_SUB0700

		INC	<ENWRK2,X		;routine mode index inc.

		BRA	GABON_SUB0700

GABON_SUB0500	EQU	$
		LDA	ENTIM1,X
		BEQ	GABON_SUB0580
		JMP	GABON_SUB0800

GABON_SUB0580	EQU	$
		LDA	ENXMAX,X
		EOR	EPWIDX,X
		BPL	GABON_SUB0800

		LDA	EPWIDX,X
		CLC
		ADC	#00060H
		CMP	#000C0H
		BCS	GABON_SUB0800

		LDA	EPWIDY,X
		CLC
		ADC	#00030H
		CMP	#00060H
		BCS	GABON_SUB0800

		LDA	#GABNB
		JSL	>ENINSR_I
		BCC	GABON_SUB0800

		PHX
		TYX
		JSL	>TROBJ_SR_4x4
		BCC	GABON_SUB0600

		TXY
		PLX

		LDA	ENXPSL,X		;Ｘ　ＰＯＳ．セット
		STA	ENXPSL,Y		;

		LDA	ENYPSL,X		;Ｙ　ＰＯＳ．セット
		STA	ENYPSL,Y		;

		LDA	#001C0H
		STA	ENWRK8,Y		;回転角セット
		LDA	#00080H			;倍率セット
		STA	ENWRK6,Y		;

		M8
		LDA	ENMUKI,X		;キャラ向きセット
		STA	ENMUKI,Y
		M16

		TXA
		STA	ENWRK0,Y

		LDA	#EINIT			;モードセット
		STA	ENMODE,Y

		LDA	#00003H			;キャラパターンナンバーセット
		STA	ENCHPT,X		;

		BRA	GABON_SUB0700
;
GABON_SUB0600	EQU	$
		JSL	>ENCLEAR

		PLX

GABON_SUB0700	EQU	$
		LDY	ENCHPT,X
		LDA	!GABON_TIMER-3,Y
		AND	#000FFH
		STA	ENTIM0,X

		STZ	ENXSPD,X
		STZ	ENXPOW,X

		RTS

GABON_SUB0800	EQU	$
		LDA	#0000BH			;Ｘ　ＰＯＷＥＲセット
		STA	ENXPOW,X

		LDA	ENCBFG,X	;side BG = 壁 ?
		BIT	#0000CH		;
		BNE	GABON_SUB0900	; yes: GABON_SUB0900

		AND	#00001H		;foot BG = 床 ?
		STA	<EWORK0		;
		LDA	ENSLOP,X	;foot BG = 坂 ?
		AND	#000FFH		;
		ORA	<EWORK0		;
		BNE	GABON_SUB0A00	; yes: GABON_SUB0A00

GABON_SUB0900	EQU	$
		LDA	#00020H			;ストップカウンターセット
		STA	ENTIM1,X

GABON_SUB0A00	EQU	$
		LDA	ENXSPD,X		;キャラパターンを変える ?
		BPL	GABON_SUB0B00		;
						;
		EOR	#0FFFFH			;
		INC	A			;
						;
GABON_SUB0B00	EQU	$			;
		CLC				;
		ADC	<ENWRK0,X		;
		CMP	#00200H			;
		BCC	GABON_SUB0E00		;  no: GABON_SUB0E00

		PHA

		LDA	ENCHPT,X
		CLC
		ADC	<ENWRK4,X
		CMP	#00003H
		BCC	GABON_SUB0C00

		LDA	<ENWRK4,X
		EOR	#0FFFFH
		INC	A
		STA	<ENWRK4,X
		BRA	GABON_SUB0D00

GABON_SUB0C00	EQU	$
		STA	ENCHPT,X

GABON_SUB0D00	EQU	$
		PLA
		SEC
		SBC	#00200H

GABON_SUB0E00	EQU	$
		STA	<ENWRK0,X

		RTS
;
GABON_JUMPX	EQU	$
		WORD	00059H,0FFA7H
;
GABON_SUB1	EQU	$
		TYX

		LDA	ENTIM0,X
		BNE	GABON_SUB1800

		LDA	#00002H
		STA	ENCHPT,X

		LDA	#0FE9AH
		STA	ENYSPD,X

		STZ	ENCBFG,X

		LDY	ENMUKI,X
		LDA	!GABON_JUMPX,Y
		STA	ENXSPD,X

		INC	<ENWRK2,X		;routine mode index inc.

GABON_SUB1800	EQU	$

		RTS
;
GABON_SUB2	EQU	$
		TYX

		LDA	ENCBFG,X		;地面についてる ?
		AND	#00001H			;
		BEQ	GABON_SUB2800		;  no: GABON_SUB2800

		STZ	ENXSPD,X

		LDA	#00060H			;ストップカウンターセット
		STA	ENTIM1,X

		STZ	ENCHPT,X

		STZ	<ENWRK2,X		;routine mode index set

GABON_SUB2800	EQU	$

		RTS
;
;************************************************************************
;*		initial ( がぼんのタマ )				*
;************************************************************************
GABNBIN		EQU	$			;-- gebnbin --
		JSR	GABNB_ROT_SET

		RTL
;
;************************************************************************
;*		move	( がぼんのタマ )				*
;************************************************************************
;		ENWRK0	ガボン本体 ROUTINE INDEX
;		ENWRK2	ROUTINE MODE INDEX
;		ENWRK4
;		ENWRK6	倍率
;		ENWRK8	回転角
;		ENWRKA
;		ENWRKC
;
GABNB_REV	EQU	$
		WORD	00010H,0FFF0H
;
GABNB_SUB	EQU	$
		WORD	GABNB_SUB0		;球だす
		WORD	GABNB_SUB1		;振りかぶって
		WORD	GABNB_SUB2		;投げたぁ
		WORD	GABNB_SUB3		;飛んでるえぇ〜
		WORD	DUMMY_SUB		;しっぱい
;
GABNBMV		EQU	$			;-- gabnbmv --
		LDY	ENYUSN,X
		BMI	GABNBMV0100

		JSL	>TROBJ_OAM_4x4

GABNBMV0100	EQU	$
		JSL	>ENMDCK			;mode check

		LDY	<ENWRK0,X		;がぼん本体食われてる　ｏｒ　死んでる ?
		LDA	ENMODE,Y		;
		CMP	#EMOVE			;
		BNE	GABNBMV0400		;
		LDA	ENSHOT,Y		;
		BEQ	GABNBMV0500		;  no: GABNBMV0500

GABNBMV0400	EQU	$
		LDY	<ENWRK2,X
		CPY	#003
		BPL	GABNBMV0500

		LDA	#002CCH			;Ｇ　ＭＡＸ　ＳＰＥＥＤセット
		STA	ENGMAX,X		;
		LDA	#0002CH			;Ｇ　ＰＯＷＥＲセット
		STA	ENGPOW,X		;

		LDY	#004			;routine mode index set
		STY	<ENWRK2,X		;

GABNBMV0500	EQU	$
		TXY
		LDA	<ENWRK2,X
		ASL	A
		TAX
		JSR	(GABNB_SUB,X)

		TROBJ_CHK_4
		BEQ	GABNBMV0600

		RTL

GABNBMV0600	EQU	$
		LDA	#00002H
		STA	ENYUSN,X

		JSR	GABNB_ROT_SET

		LDY	<ENWRK2,X		;自力で飛んでる ?
		CPY	#003H			;
		BPL	GABNBMV0700		; yes: GABNBMV0700

		LDY	<ENWRK0,X
		LDA	ENXPSL,Y
		SEC
		SBC	CCWORK11		;球Ｘ　ＰＯＳ．
		STA	ENXPSL,X

		LDA	ENYPSL,Y
		SEC
		SBC	CCWORK10		;球Ｙ　ＰＯＳ．
		STA	ENYPSL,X

GABNBMV0700	EQU	$
		LDA	ENXPSL,X		;ｖｓプレイヤーチェック
		CLC				;	;プレイヤーと接触した ?
		ADC	#00008			;	;
		SEC				;	;
		SBC	PCENTX			;	;
		CLC				;	;
		ADC	CCWORK12		;	;
		CMP	CCWORK13		;	;
		BCS	GABNBMV0800		;	;
						;	;
		LDA	ENYPSL,X		;	;
		CLC				;	;
		ADC	#00008			;	;
		SEC				;	;
		SBC	PCENTY			;	;
		CLC				;	;
		ADC	CCWORK14		;	;
		CMP	CCWORK15		;	;
		BCS	GABNBMV0800		;	;  no: GABNBMV0800
						;
		LDA	PLFLSH			;	;プレイヤーはダメージを受けている ?
		BNE	GABNBMV0800		;	; yes: GABNBMV0800
						;
		LDA	ENXSPD,X		;
		STA	PLXSPD			;
		STA	PLMVSP			;
						;
		JSL	>PLFLST

GABNBMV0800	EQU	$

		RTL
;
GABNB_ROT_SET	EQU	$
						;転送元アドレス＆バンクセット
		LDA	#CIPCHD+6000H+000H	;(R12) <-- 転送元アドレスセット
		STA	R12			;
		LDA	#BANK CIPCHD+6000H+000H ;(R13) <-- 転送元バンクセット
		STA	R13			;

		LDA	ENWRK8,X		;(R5) <- 回転角セット
		LSR	A			;
		STA	R5			;

		LDA	ENWRK6,X		;(R4) <- 倍率セット
		STA	R4			;

		LDA	#00A00H			;(R6) <-- ふりかぶり軌道半径
		STA	R6

		LDA	#00600H			;(R10) <-- あたりＸ半径
		STA	R10			;

		LDA	PWIDEX			;(R1) <-- プレイヤーあたりＸ半径
		STA	R1			;

		LDA	PWIDEY			;(R8) <-- プレイヤーあたりＹ半径
		STA	R8			;

		LDA	ENMUKI,X
		STA	R7

		LDY	ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_X,X		;(R3) <- ビットマップ座標＿Ｘセット
		STA	R3			;
		LDA	>TROBJ_PLOT_Y,X		;(R2) <- ビットマップ座標＿Ｙセット
		STA	R2			;
;
;-------------- OBJ mode 7 set ----------------------------------
;
;		M_CHIP	C_32_ROTZOM_16
		M_CHIP	M_GABNB_SET

		LDX	<ENINDX

		INC	OBM7WF			;mode 7 OBJ chara DMA "ON"

		RTS
;
GABNB_SUB0	EQU	$
		TYX

		LDA	ENWRK6,X		;倍率計算
		CLC				;
		ADC	#00009H			;
		CMP	#001FFH			;
		BMI	GABNB_SUB0100		;
						;
		INC	<ENWRK2,X		;
		LDA	#001FFH			;
						;
GABNB_SUB0100	EQU	$			;
		STA	ENWRK6,X		;

		RTS
;
GABNB_SUB1	EQU	$
		TYX

		LDA	ENWRK8,X		;回転角計算
		SEC				;
		SBC	#00008H			;
		AND	#001FEH			;
		CMP	#00160H			;
		BCS	GABNB_SUB1200		;
						;
		INC	<ENWRK2,X		;
						;
GABNB_SUB1200	EQU	$			;
		STA	ENWRK8,X		;

		RTS
;
GABNB_XSPD	EQU	$
		WORD	0FDE7H,00219H
;
GABNB_SUB2	EQU	$
		TYX

		LDA	ENWRK8,X		;回転角計算
		CLC				;
		ADC	#00008H			;
		AND	#001FEH			;
		CMP	#00180H			;
		BCC	GABNB_SUB2500		;
						;
		LDY	#000			;
		LDA	ENMUKI,X		;
		BEQ	GABNB_SUB2100		;
						;
		INY				;
		INY				;
						;
GABNB_SUB2100	EQU	$			;
		LDA	!GABNB_XSPD,Y		;
		STA	ENXSPD,X		;
						;
		INC	<ENWRK2,X		;
						;
		LDA	#00160H			;
						;
GABNB_SUB2500	EQU	$			;
		STA	ENWRK8,X		;

		RTS
;
GABNB_SUB3	EQU	$
		TYX

		LDA	ENWRK8,X		;回転角計算
		CLC				;
		ADC	#00008H			;
		AND	#001FEH			;
		STA	ENWRK8,X		;

		RTS
;
;************************************************************************
;*		initial ( ponta )					*
;************************************************************************
PONTA_XSPD	EQU	$
		WORD	0FFC0H,00040H
;
PONTAIN		EQU	$			;-- pontain --
		LDA	ENWRKA,X
		BEQ	PONTAIN0100

		STA	ENMOD2,X

PONTAIN0100	EQU	$
		LDY	ENMUKI,X
		LDA	!PONTA_XSPD,Y
		STA	ENXSPD,X
		INC	<ENCONT,X

		RTL
;
;************************************************************************
;*		move	( ponta )					*
;************************************************************************
;		ENWRK0	プレイヤーＯＮフラグ
;		ENWRK2	ROUTINE MODE INDEX
;		ENWRK4	死んだかフラグ
;
;		ENCONT	キャラパターンチェンジ向き
;
PONTA_ENMOD1_DT EQU	$
		WORD	0000100101000001B
		WORD	0000100001000001B
;
PONTA_SUB	EQU	$
		WORD	PONTA_SUB0		;のーまる
		WORD	PONTA_SUB1		;つぶれ
;
PONTAMV		EQU	$			;-- pontamv --
		LDY	#000
		LDA	ENSHOT,X
		BEQ	PONTAMV0100

		INY
		INY

PONTAMV0100	EQU	$
		LDA	!PONTA_ENMOD1_DT,Y
		STA	ENMOD1,X

		LDA	ENMODE,X
		CMP	#EMOVE
		BEQ	PONTAMV0200

		LDA	PLMODE
		CMP	#PDEM
		BNE	PONTAMV0200

		CMP	<ENWRK0,X
		BNE	PONTAMV0200

		LDA	#PMOV
		STA	PLMODE

PONTAMV0200	EQU	$
		LDA	ENMODE,X
		CMP	#EMOVE
		BEQ	PONTAMV0240
		CMP	#EEATM
		BEQ	PONTAMV0240

		LDY	<ENWRK4,X		;死んでから初めてのフレーム ?
		BNE	PONTAMV0240		;  no: PONTAMV0240

		JSL	>PUCHACONT_CK
;;;;		    INC	    <ENWRK4,X
;;;;		    INC	    PUCHACONT

PONTAMV0240	EQU	$
		JSL	>ENMDCK

		LDY	<ENWRK2,X
		BEQ	PONTAMV0248
		JMP	PONTAMV0500

PONTAMV0248	EQU	$
		LDA	ENCBFG,X		;地面に着いてる ?
		AND	#00001			;
		BEQ	PONTAMV0250		;  no: PONTAMV0250

		LDY	ENMUKI,X
		LDA	!PONTA_XSPD,Y
		STA	ENXSPD,X

PONTAMV0250	EQU	$
		LDY	ECRSFG,X
		BPL	PONTAMV0300

		LDA	EPWIDY,X		;プレイヤーに踏まれた ?
		SEC				;
		SBC	PWIDEY			;
		SEC				;
		SBC	EWIDEY,X		;
		CMP	#0FFF8H			;
		BCC	PONTAMV0280		;  no: PONTAMV0280

		LDY	PLYSPD+1		;プレイヤー上昇中 ?
		BMI	PONTAMV0500		; yes: PONTAMV0500

		LDY	PLJUMP			;ジャンプ中 ?
		BEQ	PONTAMV0280		;  no: PONTAMV0280

		LDA	ENCBFG,X		;地面に着いてる ?
		AND	#00001			;
		BEQ	PONTAMV0500		;  no: PONTAMV0500

		LDA	#00020H
		CMP	PLFLSH
		BMI	PONTAMV0260

		STA	PLFLSH

PONTAMV0260	EQU	$
		LDA	P_KEY_MNAG
		AND	KEYC1L
		STA	P_KEYC1L

		STZ	PLDOSN
		LDA	#PDEM
		STA	PLMODE
		STA	<ENWRK0,X

		LDA	#0111110001100000B	;食えなくする、投げた敵あたらなくする
		STA	ENMOD0,X		;

		STZ	ENXSPD,X
		STZ	PLXSPD
		STZ	PLMVSP
		STZ	PLYSPD

		LDA	#0001000101110101B	;ＯＡＭ数　４ー＞２
		STA	ENMOD2,X
		LDA	#0000AH
		STA	ENCHPT,X
		DEC	A		;[ LDA	#00004 ]
		STA	ENTIM1,X
		INC	<ENWRK2,X
		BRA	PONTAMV0500

PONTAMV0280	EQU	$
		JSL	>PLFLST_2
		BRA	PONTAMV0500

PONTAMV0300	EQU	$
		JSL	>SHOT_EN_KILL_SP	;死に絶えた ?
		BCS	PONTAMV0700		; yes: PONTAMV0700

PONTAMV0500	EQU	$
		TXY
		LDA	<ENWRK2,X
		ASL	A
		TAX
		JSR	(PONTA_SUB,X)

PONTAMV0700	EQU	$

		RTL
;
;
PONTA_SUB0	EQU	$
		TYX

		LDA	ENTIM1,X
		BNE	PONTA_SUB0800

		LDA	#00006
		STA	ENTIM1,X

		LDA	<ENCONT,X
		CLC
		ADC	ENCHPT,X
		BPL	PONTA_SUB0500

		LDA	#00001
		STA	<ENCONT,X
		BRA	PONTA_SUB0700

PONTA_SUB0500	EQU	$
		CMP	#00005
		BNE	PONTA_SUB0700

		LDA	#0FFFFH
		STA	<ENCONT,X
		LDA	#00003

PONTA_SUB0700	EQU	$
		STA	ENCHPT,X

PONTA_SUB0800	EQU	$

		RTS
;
PONTA_S1_YREV	EQU	$
;ENCHPT =		 [A]	[B]
		WORD	00018H,00014H
;
PONTA_SUB1	EQU	$
		TYX

		LDA	ENTIM1,X
		BNE	PONTA_SUB1800

		LDY	ENCHPT,X
		CPY	#00BH
		BNE	PONTA_SUB1300

		LDA	#PONBR
		JSL	>EXINSR
		LDA	ECENTX,X
		STA	EXXPSL,Y
		LDA	ECENTY,X
		STA	EXYPSL,Y
		LDA	#00002
		STA	EXTIM0,Y
		LDA	#00008
		STA	EXCHPT,Y

		LDA	#0003BH			;［Ｓ］
		JSL	>SOUND_3_ON
;;;;;;;;		LDA	#00019H		;［Ｓ］
;;;;;;;;		STA	SOUND3

		LDA	#PMOV
		STA	PLMODE
		STZ	P_KEYC1L
		STZ	P_KEYC2L
;
		JSL	>PUCHACONT_CK
;;;;		    INC	    <ENWRK4,X
;;;;		    INC	    PUCHACONT

		LDA	ECENTX,X
		STA	R1
		LDA	ECENTY,X
		STA	R2
		LDA	#00040H			;爆発半径
		STA	R10			;
		LDA	#00200H			;XSPD
		STA	CCWORK0
		LDA	#0FE00H			;YSPD
		STA	CCWORK1
		M_CHIP	PONTA_BOMB
		LDX	<ENINDX
		JSL	>ENCLEAR_NORETN

		RTS

PONTA_SUB1300	EQU	$
		INC	ENCHPT,X
		LDA	#00004
		STA	ENTIM1,X

PONTA_SUB1800	EQU	$
		LDA	PLBGCR
		AND	#0000000000000111B
		BNE	PONTA_SUB1900

		LDA	ENCHPT,X
		ASL	A
		TAY
		LDA	ENYPSL,X
		SEC
		SBC	!PONTA_S1_YREV-0AH*2,Y
		SEC
		SBC	PLFTLN
		STA	PLYPSL
		STZ	PLYSPD
		INC	ONLFFG

PONTA_SUB1900	EQU	$

		RTS
;
;------------------------------------------------------------------------
;-		プチプチカウンターチェック				-
;------------------------------------------------------------------------
PUCHACONT_CK	EQU	$
		INC	<ENWRK4,X

PUCHACONT_CK2	EQU	$
		INC	PUCHACONT
		BNE	PUCHACONT_CK_10 ;ボスクリアーウィンドウ効果セット？ ( no:PUCHACONT_CK_10 )
;
		LDA	ENXPSL,X
		STA	<EWORK0		;(EWK0,1) <-- セットＸ座標
		LDA	ENYPSL,X
		STA	<EWORK2		;(EWK2,3) <-- セットＹ座標
		JSL	>BSCLW_SET_M
PUCHACONT_CK_10 EQU	$
		RTL
;
PONTA_CHECK	EQU	$
		LDA	ENMYNO,X
		CMP	#PONTA
		BNE	PONTA_CHECK0800

		JSL	>PUCHACONT_CK

PONTA_CHECK0800 EQU	$

		RTL
;
;************************************************************************
;*		initial ( 鉄球兵士 )					*
;************************************************************************
GABN2IN		EQU	$			;-- gabn2in --
		LDA	#GBNB2
		JSL	>ENINSR_I
		BCC	GABN2IN0100

		STY	<ENWRK0,X

		TYX
		JSL	>TROBJ_SR_4x4
		BCS	GEBN2IN0200

GABN2IN0100	EQU	$
		LDX	<ENINDX
		JMP	>ENCLEAR

GEBN2IN0200	EQU	$
		LDX	<ENINDX
		LDY	<ENWRK0,X
		LDA	ENXPSL,X
		STA	ENXPSL,Y
		LDA	ENYPSL,X
		SEC
		SBC	#00010H
		STA	ENYPSL,Y
		LDA	#00100H			;初期倍率セット
		STA	ENWRK6,Y		;
		TXA
		STA	ENWRK0,Y
		LDA	#0FFC0H
		STA	ENYSPD,Y
;;;;;;;;		LDA	#00000
;;;;;;;;		STA	ENWRKA,Y		;くさりの半径
		LDA	#00005			;くさり回る数セット
		STA	ENWRKC,Y
		LDA	ENMUKI,X
		STA	ENMUKI,Y

		RTL
;
;************************************************************************
;*		move	( 鉄球兵士 )					*
;************************************************************************
;		ENWRK0	たまの ROTUINE INDEX
;		ENWRK2
;		ENWRK4
;		ENWRK6
;		ENWRK8
;		ENWRKA
;		ENWRKC
;
GABN2MV		EQU	$			;-- gabn2mv --
		JSL	>DISPCK2		;画面外 ?
		BCC	GABN2MV0010		;  no: GABN2MV0010

		LDY	<ENWRK0,X		;タマ範囲チェック＆クリア
		TYX				;
		JSL	>DISPCK1		;
		BCC	GABN2MV0008		;

		LDX	<ENINDX			;本体クリア
		JMP	>ENCLEAR		;

GABN2MV0008	EQU	$
		LDX	<ENINDX

GABN2MV0010	EQU	$
		LDA	ENCOLD,X		;凍ってる ?
		BNE	GABN2MV0200		; yes: GABN2MV0200
		LDA	ENMODE,X		;食べられた ?
		CMP	#EEATM			;
		BNE	GABN2MV0300		;  no: GABN2MV0300

GABN2MV0200	EQU	$
		JSR	GABN2_HEIH0_CHG

GABN2MV0300	EQU	$
		JSL	>ENMDCK

		STZ	ENCHPT,X		;キャラパターンチェンジ
		LDY	<ENWRK0,X		;
		LDA	ENWRK8,Y		;
		SEC				;
		SBC	#00010H			;
		AND	#001FEH			;
		CMP	#00080H			;
		BMI	GABN2MV0500		;
						;
		INC	ENCHPT,X		;
						;
		CMP	#00100H			;
		BMI	GABN2MV0500		;
						;
		INC	ENCHPT,X		;
						;
		CMP	#00180H			;
		BMI	GABN2MV0500		;
						;
		INC	ENCHPT,X		;

GABN2MV0500	EQU	$
		LDY	ECRSFG,X
		DEY
		BMI	GABN2MV0800

		LDA	ENMODE,Y
		CMP	#EMOVE
		BNE	GABN2MV0900
		LDA	ENSHOT,Y
		BEQ	GABN2MV0900

		JSR	GABN2_HEIH0_CHG

		JSL	>HEIH0_KIND_CHK

		RTL

GABN2MV0800	EQU	$
		JSL	>EPCRCK

GABN2MV0900	EQU	$

		RTL
;
GABN2_HEIH0_CHG EQU	$
;		 JSL	 >TROBJ_CLEAR
		PHY
		LDA	ENCOLD,X
		PHA
		LDA	ENXSPD,X
		PHA
		LDA	ENCLOR,X
		PHA
		TXY				;ヘイホーに変換
		LDA	#HEIH0			;
		JSL	>ESTATST		;
		PLA
		STA	ENCLOR,X
		INC	A
		STA	ENWRKC,X
		PLA
		STA	ENXSPD,X
		PLA
		STA	ENCOLD,X
		PLY

		RTS
;
;************************************************************************
;*		initial ( 鉄球兵士の球 )				*
;************************************************************************
GBNB2IN		EQU	$			;-- gbnb2in --
		JSR	GBNB2_ROT_SET
		RTL
;
;************************************************************************
;*		move	( 鉄球兵士の球 )				*
;************************************************************************
;		ENWRK0	鉄球兵士の ROUTINE INDEX
;		ENWRK2	ROUTINE MODE INDEX
;		ENWRK4	くさり回転角比較用
;		ENWRK6	倍率
;		ENWRK8	くさり回転角
;		ENWRKA	くさり半径
;		ENWRKC	くさり回す数
;
;		ENCONT	鉄球兵士とのＸ距離
;		ENXMAX	鉄球兵士とのＹ距離
;
GBNB2_SUB	EQU	$
		WORD	GBNB2_SUB0		;普通に回ってる
		WORD	GBNB2_SUB1		;攻撃してる
GBNB2_YUSN	EQU	$
		WORD	00006H,00001H
;
GBNB2MV		EQU	$			;-- gbnbmv --
		LDY	<ENWRK0,X		;鉄球兵士いる ?
		BEQ	GBNB2MV0280		;
		LDA	ENMYNO,Y		;
		CMP	#GABN2			;
		BNE	GBNB2MV0100		;  no: GBNB2MV0100
		LDA	ENCOLD,Y		;
		BNE	GBNB2MV0100		;
		LDA	ENMODE,Y		;
		CMP	#EMOVE			;
		BEQ	GBNB2MV0200		; yes: GBNB2MV0200

GBNB2MV0100	EQU	$
		LDA	#00100H
		SEC
		SBC	ENWRK8,X
		BPL	GBNB2MV0110

		EOR	#0FFFFH
		INC	A

GBNB2MV0110	EQU	$
		ASL	A
		STA	R0
		LDA	#00200H
		STA	R6
		M_CHIP	MULTIPLY
		LDX	<ENINDX
		LDA	R0
		LDY	ENWRK8+1,X
		BNE	GBNB2MV0120

		EOR	#0FFFFH
		INC	A

GBNB2MV0120	EQU	$
		LDY	ENMUKI,X
		BEQ	GBNB2MV0130

		EOR	#0FFFFH
		INC	A

GBNB2MV0130	EQU	$
		STA	ENXSPD,X		;
		LDA	#0FF00H
		STA	ENYSPD,X
		LDA	#00040H
		STA	ENGPOW,X
		STZ	<ENWRK0,X		;鉄球兵士いない
		LDA	ENMOD2,X		;範囲クリア有り
		ORA	#0000000000001000B
		STA	ENMOD2,X

		BRA	GBNB2MV0280

GBNB2MV0200	EQU	$
		LDA	ENXPSL,Y		;鉄球兵士とのＸ距離セット
		SEC				;
		SBC	ENXPSL,X		;
		STA	<ENCONT,X		;
		LDA	ENYPSL,Y		;鉄球兵士とのＹ距離セット
		SEC				;
		SBC	ENYPSL,X		;
		STA	ENXMAX,X		;

GBNB2MV0280	EQU	$
		JSR	GBNB2_OAM_SET

		JSL	>ENMDCK

		LDY	<ENWRK0,X		;鉄球兵士生きてる ?
		BEQ	GBNB2MV0500		; yes: GBNB2MV0500

		LDA	ENYPSL,X
		CLC
		ADC	#00010H
		CMP	ENYPSL,Y
		BPL	GBNB2MV0300

		STZ	ENYSPD,X

GBNB2MV0300	EQU	$
		LDY	#010H
		LDA	ENWRKA,X
		CMP	#06000H
		BNE	GBNB2MV0400

		LDY	#008

GBNB2MV0400	EQU	$
		TYA
		CLC
		ADC	ENWRK8,X		;回転角計算
		AND	#001FEH			;
		STA	ENWRK8,X		;

		TXY
		LDA	<ENWRK2,X
		ASL	A
		TAX
		JSR	(GBNB2_SUB,X)

		LDA	ENWRK8,X
		STA	<ENWRK4,X

		LDY	#000
		LDA	ENWRK8,X		;タマが鎖の後ろに回ってる ?
		SEC				;
		SBC	#00080H			;
		AND	#001FEH			;
		CMP	#00100H			;
		BMI	GBNB2MV0480		; yes: GBNB2MV0480

		LDY	#002

GBNB2MV0480	EQU	$
		LDA	!GBNB2_YUSN,Y
		STA	ENYUSN,X

GBNB2MV0500	EQU	$
		JSR	GBNB2_ROT_SET

		LDA	ECENTX,X		;ｖｓプレイヤーチェック
		SEC				;	;プレイヤーと接触した ?
		SBC	PCENTX			;	;
		CLC				;	;
		ADC	CCWORK12		;	;
		CMP	CCWORK13		;	;
		BCS	GBNB2MV0800		;	;
						;	;
		LDA	ECENTY,X		;	;
		SEC				;	;
		SBC	PCENTY			;	;
		CLC				;	;
		ADC	CCWORK14		;	;
		CMP	CCWORK15		;	;
		BCS	GBNB2MV0800		;	;  no: GBNB2MV0800
						;
		LDA	PLFLSH			;	;プレイヤーはダメージを受けている ?
		BNE	GBNB2MV0800		;	; yes: GBNB2MV0800
						;
		LDA	ENXSPD,X		;
		STA	PLXSPD			;
		STA	PLMVSP			;
		LDA	#0FF00H			;
		STA	PLYSPD			;
		LDA	#P006			;
		STA	PLJUMP			;
		LDA	#001+8000H		;
		STA	PLSPJP			;
		STZ	PLDOSN			;
						;
		JSL	>PLFLST

GBNB2MV0800	EQU	$

		RTL
;
GBNB2_OAM_XPOS	EQU	$
		WORD	0FFF8H,00008H
GBNB2_OAM_XADD	EQU	$
		WORD	00010H,0FFF0H
;
GBNB2_OAM_SET	EQU	$
;＊＊＊＊＊＊＊＊＜　ＯＡＭセット　＞＊＊＊＊＊＊＊＊
		LDY	<ENWRK0,X
		BNE	GBNB2_O_SET0080

		LDA	<ENCONT,X
		CMP	#08000H
		ROR	A
		CMP	#08000H
		ROR	A
		STA	<EWORK0
		LDA	ENXMAX,X
		BRA	GBNB2_O_SET0090

GBNB2_O_SET0080 EQU	$
		LDA	ENXPSL,Y
		SEC
		SBC	ENXPSL,X
		CMP	#08000H
		ROR	A
		CMP	#08000H
		ROR	A
		STA	<EWORK0
;
		LDA	ENYPSL,Y
		SEC
		SBC	ENYPSL,X

GBNB2_O_SET0090 EQU	$
;		SEC
;		SBC	#00008
		CLC
		ADC	#00004
		CMP	#08000H
		ROR	A
		CMP	#08000H
		ROR	A
		STA	<EWORK2
;
		LDA	ENDSXL,X		;
		CLC				;
		ADC	#00008			;
		STA	<EWORK4
		LDA	ENDSYL,X
		CLC
		ADC	#00008-4
		STA	<EWORK6
;
		LDA	#00003			;鎖の個数セット
		STA	<EWORKC			;

		LDA	#00008			;OAMインデックス加算値セット
		STA	<EWORKE			;

		I16
		LDY	ENOAML,X
		LDA	ENWRK8,X		;タマが鎖の後ろに回ってる ?
		SEC				;
		SBC	#00080H			;
		AND	#001FEH			;
		CMP	#00100H			;
		BMI	GBNB2_O_SET0100		; yes: GABN2_O_SET0100

		TYA
		CLC
		ADC	#8*4
		BRA	GBNB2_O_SET0200

GBNB2_O_SET0100 EQU	$
		LDA	#0FFF8H
		STA	<EWORKE
		TYA
		CLC
		ADC	#8*3
		TAY
		SEC
		SBC	#00008

GBNB2_O_SET0200 EQU	$
		PHY
		STA	R1			;R1 <- 鎖のOAMセットインデックス
;
		JSL	>TROBJ_OAM_4x4_I
		I16
		LDY	ENMUKI,X
		LDA	!GBNB2_OAM_XPOS,Y
		STA	<EWORK8
		LDA	!GBNB2_OAM_XADD,Y
		STA	<EWORKA
		PLY
		LDA	ENDSXL,X
		CLC
		ADC	<EWORK8
		STA	SOAM_DX+0+8*0,Y
		STA	SOAM_DX+0+8*2,Y
		CLC
		ADC	<EWORKA
		STA	SOAM_DX+0+8*1,Y
		STA	SOAM_DX+0+8*3,Y
		LDA	ENDSYL,X
		SEC
		SBC	#00008
		STA	SOAM_DX+2+8*0,Y
		STA	SOAM_DX+2+8*1,Y
		CLC
		ADC	#00010H
		STA	SOAM_DX+2+8*2,Y
		STA	SOAM_DX+2+8*3,Y
		LDA	#00002
		STA	SOAM_DX+6+8*0,Y
		STA	SOAM_DX+6+8*1,Y
		STA	SOAM_DX+6+8*2,Y
		STA	SOAM_DX+6+8*3,Y
;
		STZ	<EWORK8			;オフセットＸ　ＰＯＳ．クリア
		STZ	<EWORKA			;オフセットＹ　ＰＯＳ．クリア
;
		LDY	R1

GBNB2_O_SET0300 EQU	$
		LDA	<EWORK8
		CLC
		ADC	<EWORK0
		STA	<EWORK8
		CLC
		ADC	<EWORK4
		STA	SOAM_DX+0+8*0,Y

		LDA	<EWORKA
		CLC
		ADC	<EWORK2
		STA	<EWORKA
		CLC
		ADC	<EWORK6
		STA	SOAM_DX+2+8*0,Y

		LDA	#020BDH
		STA	SOAM_DX+4+8*0,Y
		LDA	#00000
		STA	SOAM_DX+6+8*0,Y

		TYA
		CLC
		ADC	<EWORKE
		TAY
		DEC	<EWORKC
		BNE	GBNB2_O_SET0300

		I8

		RTS
;
GBNB2_ROT_SET	EQU	$
						;転送元アドレス＆バンクセット
		LDA	#CIPCHD+6000H+000H	;(R12) <-- 転送元アドレスセット
		STA	R12			;
		LDA	#BANK CIPCHD+6000H+000H ;(R13) <-- 転送元バンクセット
		STA	R13			;

		STZ	R5			;(R5) <- 回転角セット

		LDA	ENWRK6,X		;(R4) <- 倍率セット
		STA	R4			;

		LDA	#00A00H			;(R6) <-- ふりかぶり軌道半径
		STA	R6

		LDA	#00600H			;(R10) <-- あたりＸ半径
		STA	R10			;

		LDA	PWIDEX			;(R1) <-- プレイヤーあたりＸ半径
		STA	R1			;

		LDA	PWIDEY			;(R8) <-- プレイヤーあたりＹ半径
		STA	R8			;

		LDA	ENMUKI,X
		STA	R7

		LDY	ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_X,X		;(R3) <- ビットマップ座標＿Ｘセット
		STA	R3			;
		LDA	>TROBJ_PLOT_Y,X		;(R2) <- ビットマップ座標＿Ｙセット
		STA	R2			;
;
;-------------- OBJ mode 7 set ----------------------------------
;
;		M_CHIP	C_32_ROTZOM_16
		M_CHIP	M_GABNB_SET

		LDX	<ENINDX

		INC	OBM7WF			;mode 7 OBJ chara DMA "ON"

		RTS
;
GBNB2_SUB0	EQU	$
		TYX

		LDA	ENWRKA,X		;回転半径計算
		CLC
		ADC	#00060H
		CMP	#02001H
		BPL	GBNB2_SUB0100

		STA	ENWRKA,X

GBNB2_SUB0100	EQU	$
		JSR	GBNB2_ROT

		LDA	R0			;倍率計算
		ASL	A			;
		XBA				;
		AND	#000FFH			;
		CMP	#00080H			;
		BMI	GBNB2_SUB0500		;
						;
		ORA	#0FF00H			;
		BRA	GBNB2_SUB0600		;
						;
GBNB2_SUB0500	EQU	$			;
		ASL	A			;
		ASL	A			;
						;
GBNB2_SUB0600	EQU	$			;
		CLC				;
		ADC	#00100H			;
		STA	ENWRK6,X		;

		LDA	ENWRK8,X		;鉄球を飛ばす ?
		CMP	<ENWRK4,X		;
		BPL	GBNB2_SUB0800		;
		DEC	ENWRKC,X		;
		BNE	GBNB2_SUB0800		;  no: GBNB2_SUB0800

		LDA	#06000H			;鎖の半径初期値セット
		STA	ENWRKA,X		;

		INC	<ENWRK2,X

GBNB2_SUB0800	EQU	$

		RTS
;
GBNB2_SUB1	EQU	$
		TYX

		LDA	ENWRK8,X		;
		CMP	#00100H			;
		BNE	GBNB2_SUB1500		;

		LDA	#01FE0H
		STA	ENWRKA,X

		LDA	#00005			;くさり回る数セット
		STA	ENWRKC,X

		DEC	<ENWRK2,X

GBNB2_SUB1500	EQU	$
		JSR	GBNB2_ROT

		LDY	ENWRK8,X
		BPL	GBNB2_SUB1600

		LDA	ENWRK6,X
		SEC
		SBC	#00010H
		CMP	#000C0H
		BMI	GBNB2_SUB1600

		STA	ENWRK6,X

GBNB2_SUB1600	EQU	$

		RTS
;
GBNB2_ROT	EQU	$
		LDA	ENWRK8,X
		LDY	ENMUKI,X
		BEQ	GBNB2_ROT0100

		EOR	#0FFFFH
		INC	A
		AND	#001FEH

GBNB2_ROT0100	EQU	$
		STA	R1			;Ｘ　ＰＯＳ．計算

		LDA	ENWRKA,X		;
		STA	R6			;
						;
		M_CHIP	M_ENMY_1P_ROT		;
						;
		LDX	<ENINDX			;
		LDY	<ENWRK0,X		;
		LDA	R1			;
		XBA				;
		AND	#000FFH			;
		CMP	#00080H			;
		BMI	GBNB2_ROT0500		;
						;
		ORA	#0FF00H			;
						;
GBNB2_ROT0500	EQU	$			;
		CLC				;
		ADC	ENXPSL,Y		;
		STA	ENXPSL,X		;

		RTS
;
;************************************************************************
;*		initial ( 死神ムーチョ )				*
;************************************************************************
DEATHIN		EQU	$			;-- deathin --
		RTL
;
;************************************************************************
;*		move	( 死神ムーチョ )				*
;************************************************************************
;		ENWRK0
;		ENWRK2
;		ENWRK4
;		ENWRK6
;		ENWRK8
;		ENWRKA
;		ENWRKC
;
;		ENCONT
;
;		ENTIM0
;		ENTIM1	キャラパターンチェンジタイマー
;		ENTIM2	Ｘ　ＭＡＸ　ＳＰＥＥＤチェンジタイマー
;		ENTIM3
;
;		DEATHFLG  退却フラグ
;		DEATHCT0  赤ちゃんに接触カウンター
;		DEATHCT1  赤ちゃんに取り憑きカウンター
;		DEATHLOC  出現ロックフラグ
;		DEATHLOC2 ボス戦用出現ロックフラグ
;		DEATHCHK  消去チェックカウンター
;
;		D_XPSL	オフセットＸ　ＰＯＳ．
;		D_YPSL	オフセットＹ　ＰＯＳ．
;		D_XSPD	Ｘ　ＳＰＥＥＤ
;		D_YSPD	Ｙ　ＳＰＥＥＤ
;		D_XMAX	Ｘ　ＭＡＸ　ＳＰＥＥＤ
;		D_GMAX	Ｇ　ＭＡＸ　ＳＰＥＥＤ
;		D_XPOW	Ｘ　ＰＯＷＥＲ
;		D_GPOW	Ｇ　ＰＯＷＥＲ
;		D_TIM0	ストップタイマー
;		D_TIM1	キャラパターンチェンジタイマー
;		D_TIM2	Ｘ　ＭＡＸ　ＳＰＥＥＤチェンジタイマー
;		D_CHPT	キャラパターン
;		D_NUM0	ポジションナンバー 00..LL 2..RL 4..LH 6..RH
;		D_BBFG	赤ちゃんに取り憑いたフラグ
;		D_MODE
;		D_MUKI
;
DEATH_SUB	EQU	$
DEATH_0		EQU	$
		WORD	DEATH_SUB0		;とりつき
DEATH_1		EQU	$
		WORD	DEATH_SUB1		;とりつき（位置補正）
DEATH_2		EQU	$
		WORD	DEATH_SUB2		;待ち
DEATH_3		EQU	$
		WORD	DEATH_SUB3		;運び
DEATH_5		EQU	$
		WORD	DEATH_SUB5		;しっぱい
;
DEATH_RMODE0	EQU	(DEATH_0-DEATH_SUB)/2
DEATH_RMODE1	EQU	(DEATH_1-DEATH_SUB)/2
DEATH_RMODE2	EQU	(DEATH_2-DEATH_SUB)/2
DEATH_RMODE3	EQU	(DEATH_3-DEATH_SUB)/2
DEATH_RMODE5	EQU	(DEATH_5-DEATH_SUB)/2
;
DEATH_AWAY_XSPD EQU	$
		WORD	0FFC0H,00040H,0FF00H,00100H
;
DEATHMV		EQU	$			;-- deathmv --
;		ldy	#004h
;		sty	2100h

		JSR	DEATH_OAM_SET

		JSL	>ENMDCK

		LDA	DSPMOD			;ボスＱちゃん戦 ?
		CMP	#00009			;
		BNE	DEATHMV1000		;  no: DEATHMV1000

		LDA	ENXPSL,X		;ポジション計算
		SEC				;
		SBC	ESCCH4			;
		CLC				;
		ADC	ESCCH1			;
		STA	ENXPSL,X		;
		CLC				;
		ADC	#00008			;
		STA	ECENTX,X		;
		LDA	ENYPSL,X		;
		SEC				;
		SBC	ESCCV4			;
		CLC				;
		ADC	ESCCV1			;
		STA	ENYPSL,X		;
		CLC				;
		ADC	#00008			;
		STA	ECENTY,X		;

		LDY	<ENWRK2+BABY_INDEX	;赤ちゃん捕まえてる ?
		CPY	#B_SP_RMODE20		;
		BNE	DEATHMV1000		;  no: DEATHMV1000

		LDA	BABYXPSL
		CLC
		ADC	ESCCH1
		STA	ENXPSL+BABY_INDEX
		CLC
		ADC	#00008
		STA	ECENTX+BABY_INDEX

;;;;;;;;		LDA	BABYXPSL
;;;;;;;;		STA	ENXPSL+BABY_INDEX
;;;;;;;;		LDA	BABYCNTX
;;;;;;;;		STA	ECENTX+BABY_INDEX

DEATHMV1000	EQU	$
		LDA	ENXPSL,X		;ポジションセーブ
		STA	CCWORK0			;
		LDA	ENYPSL,X		;
		STA	CCWORK1			;
		LDA	ECENTX,X		;
		STA	CCWORK2			;
		LDA	ECENTY,X		;
		STA	CCWORK3			;
;
		LDY	DEATHFLG		;赤ちゃん、誰かに取られた ?
		BNE	DEATHMV1400		; yes: DEATHMV1400

		LDA	BABYNO			;赤ちゃん、プレイヤーに取られた ?
		BMI	DEATHMV1200		; yes: DEATHMV1200

		LDA	GOAL_BOSS_CLEAR
		ORA	GOAL_IN
		BNE	DEATHMV1080

		LDA	TIMER			;タイマー、延びた ?
		CMP	#00AH*01H		;
		BMI	DEATHMV1100		;  no: DEATHMV1100

DEATHMV1080	EQU	$
		LDA	DEATHCT0		;一匹でも赤ちゃんに取り憑いてた ?
		BEQ	DEATHMV1200		;  no: DEATHMV1200

		JSL	>BABYM_SHABN_C6		;赤ちゃん復帰
		BRA	DEATHMV1200

DEATHMV1100	EQU	$
		LDA	ENMODE+BABY_INDEX	;赤ちゃん動いてる ?
		CMP	#EMOVE			;
		BEQ	DEATHMV1400		; yes: DEATHMV1400

DEATHMV1200	EQU	$
		INC	DEATHFLG		;撤退フラグセット
		STZ	DEATHCT0		;赤ちゃん取り憑きカウンタークリア

		LDX	#003*4			;みんなを退却モードに
						;
DEATHMV1300	EQU	$			;
		LDA	#DEATH_RMODE5		;
		STA	D_RMOD,X		;
		TXA				;
		LSR	A			;
		TAY				;
		LDA	!DEATH_AWAY_XSPD,Y	;
		STA	D_XSPD,X		;
		LDA	#00200H			;
		STA	D_YSPD,X		;
		LDA	#0F800H			;
		STA	D_GMAX,X		;
		LDA	#00010H			;
		STA	D_GPOW,X		;
						;
		DEX				;
		DEX				;
		DEX				;
		DEX				;
		BPL	DEATHMV1300		;

DEATHMV1400	EQU	$
;
		LDX	#003*4

DEATHMV1800	EQU	$
		LDA	D_MODE,X		;生きてる ?
		BEQ	DEATHMV2000		; yes: DEATHMV2000
		JMP	DEATHMV5000		;

DEATHMV2000	EQU	$
		LDA	D_XSPD,X		;スピード＆オフセットＰＯＳ．計算
		CMP	D_XMAX,X		;
		BMI	DEATHMV2100		;
						;
		SEC				;
		SBC	D_XPOW,X		;
		BRA	DEATHMV2200		;
						;
DEATHMV2100	EQU	$			;
		CLC				;
		ADC	D_XPOW,X		;
						;
DEATHMV2200	EQU	$			;
		STA	D_XSPD,X		;
		BPL	DEATHMV2300		;
						;
		CLC				;
		ADC	D_XSDR,X		;
		STA	D_XSDR,X		;
		LDA	D_XPSH,X		;
		SBC	#000			;
		BRA	DEATHMV2400		;
						;
DEATHMV2300	EQU	$			;
		CLC				;
		ADC	D_XSDR,X		;
		STA	D_XSDR,X		;
		LDA	D_XPSH,X		;
		ADC	#000			;
						;
DEATHMV2400	EQU	$			;
		STA	D_XPSH,X		;
						;
		LDA	CCWORK0			;
		CLC				;
		ADC	D_XPSL,X		;
		STA	CCWORK10		;
		LDA	CCWORK2			;
		CLC				;
		ADC	D_XPSL,X		;
		STA	CCWORK12		;
						;
		LDA	D_YSPD,X		;
		CMP	D_GMAX,X		;
		BMI	DEATHMV2500		;
						;
		SEC				;
		SBC	D_GPOW,X		;
		BRA	DEATHMV2600		;
						;
DEATHMV2500	EQU	$			;
		CLC				;
		ADC	D_GPOW,X		;
						;
DEATHMV2600	EQU	$			;
		STA	D_YSPD,X		;
		BPL	DEATHMV2700		;
						;
		CLC				;
		ADC	D_YSDR,X		;
		STA	D_YSDR,X		;
		LDA	D_YPSH,X		;
		SBC	#000			;
		BRA	DEATHMV2800		;
						;
DEATHMV2700	EQU	$			;
		CLC				;
		ADC	D_YSDR,X		;
		STA	D_YSDR,X		;
		LDA	D_YPSH,X		;
		ADC	#000			;
						;
DEATHMV2800	EQU	$			;
		STA	D_YPSH,X		;
						;
		LDA	CCWORK1			;
		CLC				;
		ADC	D_YPSL,X		;
		STA	CCWORK11		;
		LDA	CCWORK3			;
		CLC				;
		ADC	D_YPSL,X		;
		STA	CCWORK13		;

		LDA	D_TIM0,X		;タイマー計算
		BEQ	DEATHMV3000		;
						;
		DEC	D_TIM0,X		;
						;
DEATHMV3000	EQU	$			;
		LDA	D_TIM1,X		;
		BEQ	DEATHMV3100		;
						;
		DEC	D_TIM1,X		;
						;
DEATHMV3100	EQU	$			;
		LDA	D_TIM2,X		;
		BEQ	DEATHMV3200		;
						;
		DEC	D_TIM2,X		;
						;
DEATHMV3200	EQU	$			;
		TXY				;モード別処理
		LDA	D_RMOD,X		;
		ASL	A			;
		TAX				;
		JSR	(DEATH_SUB,X)		;
;
		LDA	D_TIM1,X		;キャラパターンチェンジ
		BNE	DEATHMV4000		;
						;
		LDA	#00006			;
		STA	D_TIM1,X		;
		LDA	D_CHPT,X		;
		INC	A			;
		AND	#00003			;
		STA	D_CHPT,X		;

DEATHMV4000	EQU	$
		LDA	CCWORK10		;補正後のオフセットＰＯＳセット
		SEC				;
		SBC	CCWORK0			;
		STA	D_XPSL,X		;
		LDA	CCWORK11		;
		SEC				;
		SBC	CCWORK1			;
		STA	D_YPSL,X		;

DEATHMV5000	EQU	$
		DEX
		DEX
		DEX
		DEX
		BMI	DEATHMV8000
		JMP	DEATHMV1800

DEATHMV8000	EQU	$
		LDX	<ENINDX
		LDA	DSPMOD			;ボスＱちゃん戦 ?
		CMP	#00009			;
		BNE	DEATHMV9000		;  no: DEATHMV9000

		LDA	ENXPSL,X		;ポジション計算
		SEC				;
		SBC	ESCCH1			;
		CLC				;
		ADC	ESCCH4			;
		STA	ENXPSL,X		;
		CLC				;
		ADC	#00008			;
		STA	ECENTX,X		;
		LDA	ENYPSL,X		;
		SEC				;
		SBC	ESCCV1			;
		CLC				;
		ADC	ESCCV4			;
		STA	ENYPSL,X		;
		CLC				;
		ADC	#00008			;
		STA	ECENTY,X		;

DEATHMV9000	EQU	$
;		ldy	#00fh
;		sty	2100h

		RTL
;
DEATH_CHAR	EQU	$
		HEX	02C,02D,03C,03D
;
DEATH_OAM_SET	EQU	$
		I16
		LDY	ENOAML,X
		LDX	#003*4

DEATH_O_SET0100 EQU	$
		LDA	D_MODE,X		;生きてる ?
		BEQ	DEATH_O_SET0200		; yes: DEATH_O_SET0200

		LDA	#08000H
		STA	SOAM_DX+00+8*0,Y
		STA	SOAM_DX+00+8*1,Y
		STA	SOAM_DX+00+8*2,Y
		BRA	DEATH_O_SET0700

DEATH_O_SET0200 EQU	$
		LDA	SOAM_DX+00+8*0,Y	;Ｘ　ＰＯＳ．
		CLC				;
		ADC	D_XPSL,X		;
		STA	SOAM_DX+00+8*0,Y	;
		STA	SOAM_DX+00+8*1,Y	;
		CLC				;
		ADC	#00008			;
		STA	SOAM_DX+00+8*2,Y	;
		LDA	SOAM_DX+02+8*0,Y	;Ｙ　ＰＯＳ．
		CLC				;
		ADC	D_YPSL,X		;
		STA	SOAM_DX+02+8*0,Y	;
		SEC				;
		SBC	#00008			;
		STA	SOAM_DX+02+8*1,Y	;
		STA	SOAM_DX+02+8*2,Y	;
		LDA	D_MUKI,X		;キャラクター＆フリップデータ
		XBA				;
		LSR	A			;
		LSR	A			;
		LSR	A			;
		XBA				;
		STA	<EWORK0			;
		PHY				;
		LDY	D_CHPT,X		;
		LDA	!DEATH_CHAR,Y		;
		AND	#000FFH			;
		PLY				;
		CLC				;
		ADC	SOAM_DX+04+8*1,Y	;
		STA	SOAM_DX+04+8*1,Y	;
		EOR	#04000H			;
		STA	SOAM_DX+04+8*2,Y	;
		LDA	SOAM_DX+04+8*0,Y	;
		EOR	<EWORK0			;
		STA	SOAM_DX+04+8*0,Y	;

DEATH_O_SET0700 EQU	$
		TYA
		CLC
		ADC	#00008*3
		TAY

		DEX
		DEX
		DEX
		DEX
		BPL	DEATH_O_SET0100

		I8
		LDX	<ENINDX

		RTS
;
DEATH_S0_GMAX	EQU	$
		WORD	00300H,0FD00H
;
DEATH_SUB0	EQU	$
		TYX

		LDA	#00002			;赤ちゃん追跡
		STA	D_MUKI,X		;
		LDA	ECENTX+BABY_INDEX	;
		SEC				;
		SBC	CCWORK12		;
		PHP				;
		BPL	BABYM_CHASE0100		;
						;
		EOR	#0FFFFH			;
		INC	A			;
						;
BABYM_CHASE0100 EQU	$			;
		LSR	A			;
		CMP	#00018H			;
		BMI	BABYM_CHASE0200		;
						;
		LDA	#00018H			;
						;
BABYM_CHASE0200 EQU	$			;
		CLC				;
		ADC	#00018H			;
		STA	D_XPOW,X		;
		ASL	A			;
		ASL	A			;
		ASL	A			;
		ASL	A			;
		PLP				;
		BPL	BABYM_CHASE0300		;
						;
		EOR	#0FFFFH			;
		INC	A			;
		STZ	D_MUKI,X		;
						;
BABYM_CHASE0300 EQU	$			;
		STA	D_XMAX,X		;
						;
		LDA	ECENTY+BABY_INDEX	;
		SEC				;
		SBC	CCWORK13		;
		PHP				;
		BPL	BABYM_CHASE0400		;
						;
		EOR	#0FFFFH			;
		INC	A			;
						;
BABYM_CHASE0400 EQU	$			;
		LSR	A			;
		CMP	#00018H			;
		BMI	BABYM_CHASE0500		;
						;
		LDA	#00018H			;
						;
BABYM_CHASE0500 EQU	$			;
		CLC				;
		ADC	#00018H			;
		STA	D_GPOW,X		;
		ASL	A			;
		ASL	A			;
		ASL	A			;
		ASL	A			;
		PLP				;
		BPL	BABYM_CHASE0600		;
						;
		EOR	#0FFFFH			;
		INC	A			;
						;
BABYM_CHASE0600 EQU	$			;
		STA	D_GMAX,X		;
;
		LDA	ECENTX+BABY_INDEX	;赤ちゃんにあたった ?
		SEC				;
		SBC	CCWORK12		;
		CLC				;
		ADC	#0000CH			;
		CMP	#0000CH*2		;
		BCC	DEATH_SUB0680		;
						;
DEATH_SUB0640	EQU	$			;
						;
		RTS				;
						;
DEATH_SUB0680	EQU	$			;
		LDA	ECENTY+BABY_INDEX	;
		SEC				;
		SBC	CCWORK13		;
		CLC				;
		ADC	#0000CH			;
		CMP	#0000CH*2		;
		BCS	DEATH_SUB0640		;  no: DEATH_SUB0640

		LDA	DEATHCT0		;向きセット
		PHP				;
		AND	#00002			;
		STA	D_MUKI,X		;

		PLP				;最初に着いた ?
		BNE	DEATH_SUB0900		;  no: DEATH_SUB0900

		LDA	DSPMOD			;ボスＱちゃん戦 ?
		CMP	#00009			;
		BNE	DEATH_SUB0700		;  no: DEATH_SUB0700

;;;;;;;;		LDA	ENXPSL+BABY_INDEX
		LDA	ENDSXL+BABY_INDEX
		STA	BABYXPSL
;;;;;;;;		LDA	ECENTX+BABY_INDEX
;;;;;;;;		STA	BABYCNTX
		STZ	ENYSPD+BABY_INDEX
		STZ	ENGMAX+BABY_INDEX
		JSL	>BABYM_AWABR_SET
		LDY	#007
		STY	BABYAWAPT
		LDY	#B_SP_RMODE20
		BRA	DEATH_SUB0800

DEATH_SUB0700	EQU	$
		JSL	>BABYM_DOROB_CUT
		JSL	>BABYM_SHABN_BRK
		STZ	ENXSPD+BABY_INDEX
		STZ	ENYSPD+BABY_INDEX
		STZ	ENGPOW+BABY_INDEX
		LDA	#0110000001000000B	;ＢＧチェック無しに
		STA	ENMOD1+BABY_INDEX	;
		LDY	#BABYM_RMODE20

DEATH_SUB0800	EQU	$
		STY	<ENWRK2+BABY_INDEX

DEATH_SUB0900	EQU	$
		LDY	DEATHCT0		;全員取り付いた ?
		CPY	#006			;
		BNE	DEATH_SUB0980		;  no: DEATH_SUB0980

		LDA	ENDSXL+BABY_INDEX	;赤ちゃん画面外 ?
		AND	#0FF00H			;
		STA	<EWORK0			;
		LDA	ENDSYL+BABY_INDEX	;
		AND	#0FF00H			;
		ORA	<EWORK0			;
		BEQ	DEATH_SUB0980		;  no: DEATH_SUB0980

		JMP	DEATH_GAME_OVER

DEATH_SUB0980	EQU	$
		TYA
		STA	D_NUM0,X
		INC	DEATHCT0		;赤ちゃん取り憑きカウンターアップ
		INC	DEATHCT0		;
		STZ	D_XSPD,X
		STZ	D_XPOW,X
		STZ	D_YSPD,X
		STZ	D_GPOW,X
		INC	D_RMOD,X

DEATH_SUB0A00	EQU	$

		RTS
;
DEATH_S1_XPOS	EQU	$
;			  LL	 RL	LH     RH
;		WORD	0FFFAH,00006H,0FFF6H,0000AH
		WORD	0FFF6H,0000AH,0FFFAH,00006H
DEATH_S1_YPOS	EQU	$
;		WORD	00010H,0000FH,00008H,00009H
		WORD	00008H,00009H,00010H,0000FH
;
DEATH_SUB1	EQU	$
		TYX

		LDY	#002H
		STY	<EWORK0
;;;;;;;;		LDY	D_NUM0,X
		TXA
		LSR	A
		TAY
		LDA	ENXPSL+BABY_INDEX	;位置補正
		CLC				;
		ADC	!DEATH_S1_XPOS,Y	;
		STA	<EWORK2			;
		LDA	CCWORK10		;
		SEC				;
		SBC	<EWORK2			;
		STA	<EWORK4			;
		INC	A			;
		CMP	#00002			;
		BCS	DEATH_SUB1300		;
						;
		STZ	<EWORK4			;
		DEC	<EWORK0			;
						;
DEATH_SUB1300	EQU	$			;
		LDA	<EWORK4			;
		CMP	#08000H			;
		ROR	A			;
		CLC				;
		ADC	<EWORK2			;
		STA	CCWORK10		;
						;
		LDA	ENYPSL+BABY_INDEX	;
		CLC				;
		ADC	!DEATH_S1_YPOS,Y	;
		STA	<EWORK2			;
		LDA	CCWORK11		;
		SEC				;
		SBC	<EWORK2			;
		STA	<EWORK4			;
		INC	A			;
		CMP	#00002			;
		BCS	DEATH_SUB1500		;
						;
		STZ	<EWORK4			;
		DEC	<EWORK0			;
						;
DEATH_SUB1500	EQU	$			;
		LDA	<EWORK4			;
		CMP	#08000H			;
		ROR	A			;
		CLC				;
		ADC	<EWORK2			;
		STA	CCWORK11		;
;
		LDY	<EWORK0			;位置補正終わり ?
		BNE	DEATH_SUB1700		;  no: DEATH_SUB1700

		INC	D_RMOD,X

DEATH_SUB1700	EQU	$

		RTS
;
DEATH_SUB2	EQU	$
		TYX

		LDY	DEATHCT0		;全員配置に着いた ?
		CPY	#004*2			;
		BMI	DEATH_SUB2800		;  no: DEATH_SUB2800

		LDY	DEATHCT1		;全員取り憑き終了 ?
		CPY	#004			;
		BPL	DEATH_SUB2300		; yes: DEATH_SUB2300

		LDY	D_BBFG,X		;すでに取り憑きを完了してる ?
		BNE	DEATH_SUB2800		; yes: DEATH_SUB2800

		INC	D_BBFG,X
		INC	DEATHCT1

		LDY	D_NUM0,X		;リーダー ?
		BNE	DEATH_SUB2800		;  no: DEATH_SUB2800

		LDA	#0003DH			;［Ｓ］
		STA	SOUND_3

		RTS

DEATH_SUB2300	EQU	$
;;;;;;;;		LDA	#00003
;;;;;;;;		STA	ENYUSN,X

;		LDY	D_NUM0,X		;リーダー ?
;		BNE	DEATH_SUB2500		;  no: DEATH_SUB2500
;
;		LDA	#00080H
;		STA	D_XSPD,X
;		STA	D_XMAX,X
;		LDA	#00010H
;		STA	D_XPOW,X

DEATH_SUB2500	EQU	$
		INC	D_RMOD,X

		TXA
		LSR	A
;;;;;;;;		TYA				;向きセット
		AND	#00002			;
		STA	D_MUKI,X		;

DEATH_SUB2800	EQU	$

		RTS
;
DEATH_SUB3	EQU	$
		TYX

		TXA
		LSR	A
		TAY
;;;;;;;;		LDA	D_NUM0,X
		AND	#00002
		STA	D_MUKI,X

;		 LDY	 D_NUM0,X		 ;リーダー ?
;		 BNE	 DEATH_SUB3500		 ;  no: DEATH_SUB3500
		CPY	#006H
		BNE	DEATH_SUB3500

		LDA	#00040H
		STA	D_GPOW,X
		LDA	#0F800H
		STA	D_GMAX,X
;
;Ｑちゃんボスで変になるから
;		LDA	D_TIM0,X		;反転 ?
;		BNE	DEATH_SUB3400		;  no: DEATH_SUB3400
;
;		LDA	#00040H
;		STA	D_TIM0,X
;
;		LDA	D_XMAX,X
;		EOR	#0FFFFH
;		INC	A
;		STA	D_XMAX,X
;
;DEATH_SUB3400	EQU	$
		LDA	CCWORK10		;赤ちゃんの位置補正
		SEC				;
		SBC	#00006H			;
		STA	ENXPSL+BABY_INDEX	;
		LDA	CCWORK11		;
		SEC				;
		SBC	#0000FH			;
		STA	ENYPSL+BABY_INDEX	;

		LDA	CCWORK11		;赤ちゃん、連れ去り完了 ?
		SEC				;
		SBC	ESCCV1			;
		CMP	#0FFF0H			;
		BPL	DEATH_SUB3800		;  no: DEATH_SUB3800

DEATH_GAME_OVER EQU	$
		LDA	PLMODE
		CMP	#PFAL
		BEQ	DEATH_SUB3490

		I16
;
		JSL	>TIMEUP_SET_SS
		LDA	#D_00
		STA	MODENO
;
		I8

DEATH_SUB3490	EQU	$

		RTS

DEATH_SUB3500	EQU	$
		LDA	ENMODE+BABY_INDEX
		CMP	#EMOVE
		BNE	DEATH_SUB3800

		LDA	ENXPSL+BABY_INDEX	;自分の位置補正
		CLC				;
		ADC	!DEATH_S1_XPOS,Y	;
		STA	CCWORK10		;
		LDA	ENYPSL+BABY_INDEX	;
		CLC				;
		ADC	!DEATH_S1_YPOS,Y	;
		STA	CCWORK11		;

DEATH_SUB3800	EQU	$

		RTS
;
DEATH_SUB5	EQU	$
		TYX

		LDY	D_YSPD+1,X
		BPL	DEATH_SUB5100

		LDA	#00040H
		STA	D_GPOW,X

DEATH_SUB5100	EQU	$
		LDA	DSPMOD			;ボスＱちゃん ?
		CMP	#00009			;
		BEQ	DEATH_SUB5400		; yes: DEATH_SUB5400

		LDA	CCWORK10		;画面外 ?
		SEC				;
		SBC	ESCCH1			;
		CLC				;
		ADC	#00040H			;
		CMP	#00100H+040H*2		;
		BCS	DEATH_SUB5500		; yes: DEATH_SUB5500
						;
DEATH_SUB5400	EQU	$			;
		LDA	CCWORK11		;
		SEC				;
		SBC	ESCCV1			;
		CLC				;
		ADC	#00040H			;
		CMP	#000E0H+040H*2		;
		BCC	DEATH_SUB5800		;  no: DEATH_SUB5800

DEATH_SUB5500	EQU	$
		INC	D_MODE,X
;
		DEC	DEATHCHK		;最後の一匹 ?
		BNE	DEATH_SUB5A00		;  no: DEATH_SUB5A00

		STZ	DEATHLOC		;セットロックフラグクリア
		STZ	DEATHFLG
		STZ	BABYCTM			;赤ちゃんチェックタイマークリア
		LDX	<ENINDX
		PLA
		JMP	>ENCLEAR

DEATH_SUB5800	EQU	$
		LDA	BABYNO			;赤ちゃんプレイヤーから離れた ?
		BMI	DEATH_SUB5A00		;  no: DEATH_SUB5A00

		LDY	DEATHCHK		;全員いる ?
		CPY	#004			;
		BNE	DEATH_SUB5A00		;  no: DEATH_SUB5A00

		LDA	TIMER			;タイムアップ前 ?
		CMP	#00AH*1			;
		BPL	DEATH_SUB5A00		;  no: DEATH_SUB5A00

		STZ	D_RMOD,X

DEATH_SUB5980	EQU	$
		STZ	DEATHCT1		;カウンタークリア
		STZ	DEATHFLG		;退却フラグクリア
		STZ	D_BBFG,X		;赤ちゃんに取り憑いたフラグクリア

DEATH_SUB5A00	EQU	$

		RTS
;
;
;
;
;
LOPLFIN		EQU	$			;-- loplfin --
LOPLFMV		EQU	$			;-- loplfmv --
;
;
;
;************************************************************************
;*		square root data * 100H ( 0-10H )			*
;************************************************************************
;SQRT_DATA	EQU	$
;		WORD	01000H,00FF7H,00FDFH,00FB7H,00F7DH,00F32H,00ED5H,00E63H
;		WORD	00DDBH,00D3AH,00C7DH,00B9EH,00A95H,00953H,007BEH,00591H
;		WORD	00000H
;
;
;
;
;
		END
;
