;************************************************************************
;*									*
;*	title name	: "yossy"					*
;*	proccess	: enemy sub.1					*
;*	file name	: ys_enmy4					*
;*									*
;************************************************************************
;
;
		SALL
;
		include		ys_header.inc
		include		ys_unit.h
		include		ys_pld.h
		include		ys_ename.h
		include		../union/ys_bgcheck.h
;
		XALL
;
;------------------------------------------------------------------------
;-		global symbol						-
;------------------------------------------------------------------------
		GLB	HBLK2IN,HBLK3IN,HBLK4IN
		GLB	JBLK0IN,KANI0IN
		GLB	DAI00IN,DAI01IN,DAI02IN,KIL00IN,KIL01IN
		GLB	KIL02IN,ZBUB0IN,ZBUB1IN,WANG0IN
		GLB	OSARUIN,KOROGIN,HBLK6IN,BLKLFIN
		GLB	BLKL2IN
		GLB	ZPACKIN,ZPAC2IN,BBROSIN
		GLB	JBLKLIN,FUSENIN,ZPAC3IN,WARPSIN,NIKOPIN,NIKP2IN
		GLB	NIKP3IN,BETO0IN,VOWVWIN,VOWV2IN,BAK20IN,BAK21IN
		GLB	BAKLFIN,YUKIDIN,JBKL2IN,MSGBXIN,BTELEIN,HSAN0IN
		GLB	NUNOOIN,RLTLFIN,RLTL2IN,RLTL3IN,POWSWIN,PKPK2IN
		GLB	PKPK3IN
		GLB	HBLK7IN
;
		GLB	HBLK2MV,HBLK3MV,HBLK4MV
		GLB	JBLK0MV,KANI0MV
		GLB	DAI00MV,DAI01MV,DAI02MV,KIL00MV,KIL01MV
		GLB	KIL02MV,ZBUB0MV,ZBUB1MV,WANG0MV
		GLB	OSARUMV,KOROGMV,HBLK6MV,BLKLFMV
		GLB	BLKL2MV
		GLB	ZPACKMV,ZPAC2MV,BBROSMV
		GLB	JBLKLMV,FUSENMV,ZPAC3MV,WARPSMV,NIKOPMV,NIKP2MV
		GLB	NIKP3MV,BETO0MV,VOWVWMV,VOWV2MV,BAK20MV,BAK21MV
		GLB	BAKLFMV,YUKIDMV,JBKL2MV,MSGBXMV,BTELEMV,HSAN0MV
		GLB	NUNOOMV,RLTLFMV,RLTL2MV,RLTL3MV,POWSWMV,PKPK2MV
		GLB	PKPK3MV
		GLB	HBLK7MV
;
		GLB	KIL00FL,KIL01FL,KIL02FL
;
		GLB	ZOOM_PLCHK,ST_ENMY_REFRECT
;
		GLB	TIMKN_3_SET,BBROS_CHECK,PKPK2_FALL
		GLB	YUKID_PLCHK3,YUKID_PL_REVISE,YUKID_PL_REV2
;
		GLB	MPACK_DEMO_ED
;
;
;
		GLB	HBLK5IN,HBLK5MV
		GLB	COIN0IN,COIN0MV
;
;
;
;------------------------------------------------------------------------
;-		extern symbol						-
;------------------------------------------------------------------------
;
;-------------< sy_main >------------------------------------------------
		EXT	D_00,GMIN
		EXT	SOUND_3_ON
;
;-------------< sy_rpro >------------------------------------------------
		EXT	JSRSUB
		EXT	CHIPON,CHIPON_RAM_READ
;
;-------------< sy_play >------------------------------------------------
		EXT	TIMEUP_SET
		EXT	EBSTAT
		EXT	PFAL,PSTP,PMOV,PCLR,PGUS,PDEM,PRET
		EXT	PFLP,PSHT
		EXT	BERO_CANCEL
;
;-------------< sy_bgsc >------------------------------------------------
		EXT	UNITCHG
		EXT	BGCG
;
;-------------< sy_enmy >------------------------------------------------
		EXT	ENEMY,ENINSB
		EXT	ENCLEAR,ENCLEAR_NORETN,DISPCK0,DISPCK1,DISPCK2,DISPCK3
		EXT	ENINSR,ENINSR2,EEXCHK,EEYCHK,EEXYCK,ESTATST,ENINSR_I,ENINSR2_I
		EXT	PLFLST_2,ENRINT
		EXT	SCOREST
		EXT	ENMDCK,XSDOWN,EPCRCK,MUKEOR,XSPEOR,MKEOR2,PLFLST
		EXT	POBBGCR,BOBBGCR,POBBGCR_H
		EXT	SHOT_EN_KILL,SHOT_EN_KILL_S
		EXT	NAGE_POS_SET
		EXT	ENFAIL0
		EXT	ENFAIL_FALL
;
		EXT	EINIT,EFAIL,EMOVE,EEATM,ENOSE,EBABL,EFALL,EFIRE,ECHNG
;
		EXT	EATMXS,NOSWT
;
		EXT	EN_XYMOVE,EN_TIMER,ENDEATH_SET,ENDEATH_SET_2
		EXT	ENDEATH_SET_3,ENDEATH_SET_4,EGGKILL_ALL
		EXT	PL_1UP_SET_P
;
		EXT	EXIST_CHECK,EXIST_CHECK_S2,NON_EXIST_SET,NON_EXIST_SET2
;
		EXT	EGG00_MVINT,FSMK0_SET,FSMK0_SET2
		EXT	COIN1_END_SET
;
		EXT	TROBJ_SR_2x2,TROBJ_SR_4x4,TROBJ_SR_8x8,TROBJ_SR_8x4
		EXT	TROBJ_SR_2x2_CL,TROBJ_SR_4x4_CL,TROBJ_SR_8x8_CL
		EXT	TROBJ_SR_8x4_CL
		EXT	TROBJ_OAM_8x4
		EXT	TROBJ_OAM_2x2,TROBJ_OAM_4x4,TROBJ_OAM_8x8,TROBJ_OAM_8H8
		EXT	TROBJ_OAM_2x2_I,TROBJ_OAM_4x4_I,TROBJ_OAM_8x8_I
		EXT	TROBJ_CLEAR
		EXT	TROBJ_PLOT_X,TROBJ_PLOT_Y
;
;-------------< sy_enmy2 >------------------------------------------------
		EXT	DEATH_RMODE4
;
		EXT	BGDATA_MAKE,NMZ_HOSEI,DOROB_SET
;
		EXT	NLFLRIN,NLFUDIN
;
;-------------< sy_enmy3 >------------------------------------------------
		EXT	ICE_IN_CK
		EXT	MKY_BABY_GET,MONKY_FAIL_SET
		EXT	MKY_OKAJ
		EXT	TO_COIN_CHANGE,EGG00_COL_SET
;
;-------------< sy_enmy5 >------------------------------------------------
		EXT	MPACK_START_ST
		EXT	MPACK_START_ED
;
;-------------< sy_enmy6 >------------------------------------------------
		EXT	DOKAN_CHECK,DOKAN_CHECK2
;
;-------------< sy_enmy8 >------------------------------------------------
		EXT	TRBOX_COIN_SET,TRBOX_TIME_SET
		EXT	SHOT_EN_KILL_SP,SHOT_EN_KILL_S2
;
;-------------< sy_enmy9 >------------------------------------------------
		EXT	DEATHENEMY
;
;-------------< sy_dorobo >------------------------------------------------
		EXT	DOROB_RMODE3
		EXT	DOROB_RMODE0
		EXT	DOROB_RMODE8
		EXT	POSITION_SAVE
;
;-------------< ys_babym >------------------------------------------------
		EXT	BABYM_RMODE00
		EXT	BABYM_RMODE10
		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_C7
;
;-------------< sy_enmy14 >------------------------------------------------
		EXT	B_LOOP
;
;-------------< sy_exst >------------------------------------------------
		EXT	EXINSR
;
;-------------< sy_unit >------------------------------------------------
		EXT	UNDTADD,UNDATA,RUTDATA
;
;-------------< ys_data >------------------------------------------------
		EXT	SIN,COS
;
;-------------< ys_msgdt >-----------------------------------------------
		EXT	CNFG_MSG
;
;------------------------------------------------------------------------
;-		define symbol						-
;------------------------------------------------------------------------
BABY_INDEX	EQU	00H
;
;
;
;************************************************************************
;*									*
;*		program start						*
;*									*
;************************************************************************
;
		EXTEND
;
		MEM16
		IDX8
;
		DPAGE	EN0RAM
;
Group_5		GROUP	Enemy4_pro
Enemy4_pro	SECT	REL
;
ANGCAL_MUKI	EQU	$
		STA	<EWORKC
		ASL	A
		STA	<EWORKE

		LDA	EPWIDX,X		;回転角セット
		STA	R1			;
						;
		LDA	EPWIDY,X		;
		STA	R2			;
						;
		M_CHIP	M_RAD_GET		;
						;
		LDX	<ENINDX			;
		LDA	ENWRKC,X		;
		PHA				;
		SEC				;
		SBC	R0			;
		CLC				;
		ADC	<EWORKC			;
		CMP	<EWORKE			;
		BCC	ANGCAL_MUKI0400		;
		BMI	ANGCAL_MUKI0200		;
						;
		CMP	#00100H			;
		BCS	ANGCAL_MUKI0300		;
						;
ANGCAL_MUKI0100 EQU	$			;
		PLA				;
		SEC				;
		SBC	<EWORKC			;
		BRA	ANGCAL_MUKI0500		;
						;
ANGCAL_MUKI0200 EQU	$			;
		CMP	#0FF00H			;
		BCC	ANGCAL_MUKI0100		;
						;
ANGCAL_MUKI0300 EQU	$			;
		PLA				;
		CLC				;
		ADC	<EWORKC			;
		BRA	ANGCAL_MUKI0500		;
						;
ANGCAL_MUKI0400 EQU	$			;
		PLA				;
						;
ANGCAL_MUKI0500 EQU	$			;
		AND	#001FEH			;
		STA	ENWRKC,X		;
		SEC				;
		SBC	#00080H			;
		CMP	#00100H			;
		BCS	ANGCAL_MUKI0600		;
						;
		STZ	ENMUKI,X		;
						;
		LDA	ENWRKC,X		;
		CLC				;
		ADC	#00100H			;
		BRA	ANGCAL_MUKI0700		;
						;
ANGCAL_MUKI0600 EQU	$			;
		LDA	#00002H			;
		STA	ENMUKI,X		;
						;
		LDA	ENWRKC,X		;
		EOR	#0FFFFH			;
		INC	A			;
						;
ANGCAL_MUKI0700 EQU	$			;
		AND	#001FEH			;
		STA	ENWRK8,X		;

		RTS
;
ANGCAL_SPD	EQU	$
		LDA	ENXSPD,X		;回転角計算
		CMP	#08000H
		ROR	A
		CMP	#08000H
		ROR	A
		STA	R1

		LDA	ENYSPD,X
		CMP	#08000H
		ROR	A
		CMP	#08000H
		ROR	A
		STA	R2

		M_CHIP	M_RAD_GET		;

		LDX	<ENINDX
		LDA	R0			;
		SEC				;
		SBC	#00080H			;
		CMP	#00100H			;
		BCS	ANGCAL_SPD0500		;
						;
		LDA	#00002H			;
		STA	ENMUKI,X		;
						;
		LDA	#00100H			;
		SEC				;
		SBC	R0			;
		BRA	ANGCAL_SPD0600		;
						;
ANGCAL_SPD0500	EQU	$			;
		STZ	ENMUKI,X		;
						;
		LDA	R0			;
						;
ANGCAL_SPD0600	EQU	$			;
		AND	#001FEH			;
		STA	ENWRK8,X		;

		RTS
;
;************************************************************************
;*		dummy subroutine					*
;************************************************************************
DUMMY_SUB	EQU	$
		TYX
		RTS
;
;************************************************************************
;*		initial ( ? block2 )					*
;************************************************************************
HBLK2IN		EQU	$			;-- hblk2in --
HBLK3IN		EQU	$			;-- hblk3in --
HBLK4IN		EQU	$			;-- hblk4in --
		JSL	>EXIST_CHECK

		LDA	ENMYNO,X
		SEC
		SBC	#HBLK2
		ASL	A
		STA	<ENWRK0,X

		LDA	#00100H			;初期倍率セット
		STA	ENWRK6,X		;

		RTL
;
;************************************************************************
;*		move	( ? block2 )					*
;************************************************************************
;		ENWRK0	ENEMY TYPE
;		ENWRK2
;		ENWRK4
;		ENWRK6	倍率
;		ENWRK8
;		ENWRKA	ジャンプエンドＹ　ＰＯＳ．
;		ENWRKC
;
HBLK2_SUB	EQU	$
		WORD	HBLK2_SUB0		;プレイヤー待ち
		WORD	HBLK2_SUB1		;変化中
;
HBLK2MV		EQU	$			;-- hblk2mv --
		JSL	>EGG00_COL_SET	;赤コインタマゴカラーセット
;
HBLK3MV		EQU	$			;-- hblk3mv --
HBLK4MV		EQU	$			;-- hblk4mv --
		STZ	ENMUKI,X

		LDY	ENCHPT,X		;回転エリア使ってる ?
		BEQ	HBLK2MV0100		;  no: HBLK2MV0100

		JSL	>TROBJ_OAM_4x4

HBLK2MV0100	EQU	$
		JSL	>ENMDCK			;mode check
;
		TXY
		LDA	<ENWRK2,X
		ASL	A
		TAX
		JSR	(HBLK2_SUB,X)
;
		JSR	HBLK2_ENCHK
;
		LDY	ENCHPT,X		;回転エリア使ってる ?
		BEQ	HBLK2MV0800		;  no: HBLK2MV0800

		JSR	HBLK2_ROT_SET

HBLK2MV0800	EQU	$
		LDY	<ENWRK2,X		;タマゴにモーフィング中 ?
		BEQ	HBLK2MV0900		;  no: HBLK2MV0900

		RTL

HBLK2MV0900	EQU	$
		JSL	>BOBBGCR

		LDY	ONLFFG			;
		PHY				;
		JSL	>POBBGCR_H		;足あたりチェック
		PLY				;
		CPY	ONLFFG			;足あたった ?
		BNE	HBLK2MV0A00		; yes: HBLK2MV0A00

		JSL	>POBBGCR		;頭、左右チェック

HBLK2MV0A00	EQU	$

		RTL
;
HBLK2_ENCHK	EQU	$
		LDY	<ENWRK2,X
		BEQ	HBLK2_ENCHK0800

		LDY	ECRSFG,X		;ほかの敵とあたった ?
		DEY				;
		BMI	HBLK2_ENCHK0800		;  no: HBLK2_ENCHK0800

		LDA	ENYPSL,Y		;下からあたった ?
		CMP	ENYPSL,X		;
		BPL	HBLK2_ENCHK0800		;  no: HBLK2_ENCHK0800

		LDA	ENGMAX,Y
		EOR	#0FFFFH
		INC	A
;		LDA	#0FC00H
		STA	ENYSPD,Y

HBLK2_ENCHK0800 EQU	$

		RTS
;
HBLK234_ZCMP	EQU	$
		WORD	00100H,001FFH
		WORD	000CCH,001FFH
		WORD	00100H,00199H
HBLK234_ZOOM	EQU	$
		WORD	00050H,0FFB0H
		WORD	00060H,0FF9EH
		WORD	00028H,0FFD8H
HBLK_CHAR	EQU	$
		WORD	CIPCHD+7040H+000H
		WORD	CIPCHD2+3070H+000H
		WORD	CIPCHD2+2070H+000H
HBLK_CHAR_BNK	EQU	$
		WORD	BANK CIPCHD+7040H+000H
		WORD	BANK CIPCHD2+3070H+000H
		WORD	BANK CIPCHD2+2070H+000H
;
HBLK2_ROT_SET	EQU	$
		LDA	<ENWRK0,X		;倍率計算
		PHA				;
		ASL	A			;
		TAY				;
		LDA	ENYSPD,X		;
		BMI	HBLK2_R_SET0100		;
						;
		INY				;
		INY				;
						;
HBLK2_R_SET0100 EQU	$			;
		LDA	!HBLK234_ZOOM,Y		;
		STA	<EWORK0			;
						;
		PLA				;
		ASL	A			;
		TAY				;
		LDA	ENWRK6,X		;
		CLC				;
		ADC	<EWORK0			;
		CMP	!HBLK234_ZCMP,Y		;
		BCS	HBLK2_R_SET0200		;
						;
		LDA	!HBLK234_ZCMP,Y		;
		BRA	HBLK2_R_SET0300		;
						;
HBLK2_R_SET0200 EQU	$			;
		CMP	!HBLK234_ZCMP+2,Y	;
		BCC	HBLK2_R_SET0300		;
						;
		LDA	!HBLK234_ZCMP+2,Y	;
						;
HBLK2_R_SET0300 EQU	$			;
		STA	ENWRK6,X		;

		LDY	<ENWRK0,X
		CPY	#004
		BEQ	HBLK2_R_SET0500

		PHY
		LDY	#000
		LDA	ENYSPD,X
		CMP	#0FF80H
		BMI	HBLK2_R_SET0400
		INY
		INY
		CMP	#00200H
		BMI	HBLK2_R_SET0400
		INY
		INY

HBLK2_R_SET0400 EQU	$
		LDA	!HBLK_CHAR,Y
		STA	R12
		LDA	!HBLK_CHAR_BNK,Y
		STA	R13
		LDA	ENWRK6,X
		STA	R6

		PLY
		BEQ	HBLK2_R_SET0600

		SEC
		SBC	#00100H
		LSR	A
		STA	<EWORK0
		LDA	#00100H
		SEC
		SBC	<EWORK0
		BRA	HBLK2_R_SET0600

HBLK2_R_SET0500 EQU	$
		LDA	#CIPCHD+4080H+001
		STA	R12
		LDA	#BANK CIPCHD+4080H+001
		STA	R13

		LDA	#000CEH			;(R6) <- Ｘ倍率セット
		STA	R6			;
		LDA	ENWRK6,X		;(R11) <- Ｙ倍率セット

HBLK2_R_SET0600 EQU	$
		STA	R11

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

		CPY	#004
		BNE	HBLK2_R_SET0700

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

		M_CHIP	C_32_ZOOM_XY
		BRA	HBLK2_R_SET0800

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

		M_CHIP	C_32_ZOOM_XY_16

HBLK2_R_SET0800 EQU	$
		LDX	<ENINDX

		INC	OBM7WF			;mode 7 OBJ chara DMA "ON"

		RTS
;
HBLK2_S0_YSPD	EQU	$
		WORD	0FC00H,0FEC0H,0FC00H
HBLK2_S0_GPOW	EQU	$
		WORD	00040H,00012H,00040H
;
HBLK2_SUB0	EQU	$
		TYX

		LDY	ECRSFG,X
		BPL	HBLK2_SUB0800

		LDA	EPWIDY,X
		CLC
		ADC	PWIDEY
		CLC
		ADC	EWIDEY,X
		CMP	#00008
		BCS	HBLK2_SUB0800

		LDY	PLYSPD+1
		BPL	HBLK2_SUB0800

		LDY	PLJUMP
		BEQ	HBLK2_SUB0800

		STZ	PLYSPD
		STZ	PLSPJP

		JSL	>TROBJ_SR_4x4
		BCC	HBLK2_SUB0500

		INC	ENCHPT,X

HBLK2_SUB0500	EQU	$
		LDY	<ENWRK0,X
		LDA	!HBLK2_S0_YSPD,Y		;Ｙ　ＳＰＥＥＤセット
		STA	ENYSPD,X		;
		LDA	!HBLK2_S0_GPOW,Y
		STA	ENGPOW,X

		LDA	ENYPSL,X
		STA	ENWRKA,X

		DEC	ENYPSL,X

		INC	<ENWRK2,X

HBLK2_SUB0800	EQU	$
HBLK2_SUB1000	EQU	$

		RTS
;
HBLK2_SUB1	EQU	$
		TYX

		LDA	ENWRKA,X		;元に戻る ?
		CMP	ENYPSL,X		;
		BCS	HBLK2_SUB1000		;  no: HBLK2_SUB1000

		STA	ENYPSL,X

		JSL	>TROBJ_CLEAR

		M8
		LDA	#0FFH
		STA	ENRETN,X
		M16

		TXY
		LDA	<ENWRK0,X
		LSR	A
		CLC
		ADC	#EGG00
		JSL	>ESTATST

		JSL	>POSITION_SAVE

		PHX
		TYX
		JSL	>EGG00_MVINT
		PLX

		PLA
		LDA	#0003AH
		JMP	>SOUND_3_ON
;
;************************************************************************
;*		initial ( ジャンプブロック )				*
;************************************************************************
JBLKLIN		EQU	$			;-- jblklin --
JBKL2IN		EQU	$			;-- jbkl2in --
		LDA	ENTROB,X
		BPL	JBLKLIN0200

		JSL	>TROBJ_SR_4x4_CL

		INC	ENCHPT,X
		LDA	#00100H
		STA	ENWRKA,X
		LDA	#0FFF8H
		STA	ENBGYP,X
;;;;;;;;		LDA	#00000
		STZ	ECNTYW,X
		LDA	#0000CH
		STA	EWIDEX,X
		STA	EWIDEY,X
		LDY	#002
		JSL	>JBLK0IN0100
		BRA	JBLKLIN0300

JBLKLIN0200	EQU	$
		JSL	>TROBJ_OAM_4x4

JBLKLIN0300	EQU	$
		JSL	>ICE_IN_CK

		LDA	ENYPSL,X
		CLC
		ADC	#00008
		STA	ENYPSL,X
		STA	ENXMAX,X

		RTL
;
JBLK0IN		EQU	$			;-- jblk0in --
		JSL	>ICE_IN_CK

		LDY	#000

JBLK0IN0100	EQU	$
		STY	<EWORKE

		LDA	#00004
		STA	EWIDEX,X

		LDA	#00100H			;初期倍率セット
		STA	ENWRK6,X		;

		STZ	ENMUKI,X

		LDA	EWIDEY,X		;プレイヤーチェックＹ　ＷＩＤＥセット
		CLC
		ADC	PWIDEY
		CLC
		ADC	PLFTLN
		STA	ENWRK8,X

		JSR	JBLK0_ROT_SET

		RTL
;
;************************************************************************
;*		move	( ジャンプブロック )				*
;************************************************************************
;B		ENWRK0	プレイヤーＯＮフラグ
;B		ENWRK1	倍率計算許可フラグ
;		ENWRK2	倍率計算フラグ 0...縮小 2...拡大
;		ENWRK4	プレイヤーＸ　ＰＯＳ．補正値
;		ENWRK6	横倍率
;		ENWRK8	プレイヤーチェックＹ　ＷＩＤＥ
;		ENWRKA	倍率ＭＡＸ
;		ENWRKC	ジャンプスピード
;
;		ENCONT	横倍率ＣＭＰデータ
;		ENXMAX	セットＹ　ＰＯＳ．
;
JBLK0MV		EQU	$			;-- jblk0mv --
;-------------- move --------------------------------------------
		LDY	ENCHPT,X
		BEQ	JBLK0MV0100

JBLKLMV		EQU	$			;-- jblklmv --
JBKL2MV		EQU	$			;-- jbkl2mv --
		JSL	>TROBJ_OAM_4x4

JBLK0MV0100	EQU	$
		JSL	>ENMDCK		;mode check
;
;		ldy	#004h
;		sty	2100h
;
		LDY	#000
		LDA	ENMYNO,X		;大ブロック ?
		CMP	#JBLK0			;
		BEQ	JBLK0MV0300		;  no: JBLK0MV0300

		INY
		INY

		CMP	#JBKL2			;覚える ?
		BNE	JBLK0MV0300		;  no: JBLK0MV0300

		LDA	ENXMAX,X		;前のフレームで足が地面についてた ?
		AND	#00001			;
		BEQ	JBLK0MV0300		;  no: JBLK0MV0300

		AND	ENCBFG,X		;足が地面についてる ?
		BNE	JBLK0MV0300		; yes: JBLK0MV0300

		LDA	ENXMAX,X		;セット位置より低くなった ?
		AND	#0FFFEH			;
		CMP	ENYPSL,X		;
		BPL	JBLK0MV0300		;  no: JBLK0MV0300

		LDA	ENMOD2,X		;範囲外クリアなし
		AND	#0FFF3H
		STA	ENMOD2,X

JBLK0MV0300	EQU	$
		STY	<EWORKE
;
		JSR	JBLK0_PLCHK
;
		JSR	JBLK0_ZOM_CALC
;
		JSR	JBLK0_ROT_SET
;
;		ldy	#00fh
;		sty	2100h
;
		LDA	ENCBFG,X
		AND	#00001
		STA	<EWORK0
		LDA	ENXMAX,X
		AND	#0FFFEH
		ORA	<EWORK0
		STA	ENXMAX,X

		RTL
;
JBLK0_PLCHK	EQU	$
		LDA	PLMODE			;
		ORA	PLTYPE
		BNE	JBLK0_PLCHK0200

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

		JMP	JBLK0_PLCHK1000

JBLK0_PLCHK0100 EQU	$
		LDA	PWIDEX
		CLC
		ADC	EWIDEX,X
		ASL	A
		STA	<EWORK0
		LSR	A
		CLC
		ADC	EPWIDX,X
		CMP	<EWORK0
		BCC	JBLK0_PLCHK0300

JBLK0_PLCHK0200 EQU	$
		RTS

JBLK0_PLCHK0300 EQU	$
		LDA	EPWIDY,X
		BMI	JBLK0_PLCHK0200

		SEC
		SBC	ENWRK8,X
		BPL	JBLK0_PLCHK0200

		LDY	PLJUMP
		BEQ	JBLK0_PLCHK0200
		LDY	PLYSPD+1
		BMI	JBLK0_PLCHK0200

		CLC
		ADC	PLYPSL
		STA	PLYPSL

		LDA	ENCBFG,X
		AND	#00001H
		BEQ	JBLK0_PLCHK0800

;;;;;;;;		LDA	PLXPSL
;;;;;;;;		STA	<ENWRK4,X

		LDY	<EWORKE			;JBLKL ?
		BNE	JBLK0_PLCHK0400		; yes: JBLK0_PLCHK0400

		LDA	ENTROB,X
		BPL	JBLK0_PLCHK0500

		JSL	>TROBJ_SR_4x4
		BCC	JBLK0_PLCHK0500

		INC	ENCHPT,X

JBLK0_PLCHK0400 EQU	$
		LDY	#001
		STY	<ENWRK1,X

JBLK0_PLCHK0500 EQU	$
		LDA	PLYSPD
		LSR	A
		LSR	A
		LDY	<EWORKE			;JBLKL ?
		BNE	JBLK0_PLCHK0550		; yes: JBLK0_PLCHK0550

		LSR	A

JBLK0_PLCHK0550 EQU	$
		CLC
		ADC	#00100H
		CMP	#001C0H
		BMI	JBLK0_PLCHK0600

		LDA	#001C0H

JBLK0_PLCHK0600 EQU	$
		CPY	#000			;JBLKL ?
		BEQ	JBLK0_PLCHK0700		;  no: JBLK0_PLCHK0700

		STA	R0
		LDA	#00140H
		STA	R6
		M_CHIP	DIVIDE
		LDX	<ENINDX
		LDA	R0

JBLK0_PLCHK0700 EQU	$
		STA	ENWRKA,X

		STZ	PLYSPD
		STZ	PLXSPD
		STZ	PLMVSP
		STZ	PLJUMP

		LDY	#002
		STY	<ENWRK2,X

		LDA	#00004
		CMP	PLFLSH
		BMI	JBLK0_PLCHK0780

		STA	PLFLSH

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

JBLK0_PLCHK0800 EQU	$

		RTS

JBLK0_PLCHK1000 EQU	$
		LDY	PLJUMP
		BEQ	JBLK0_PLCHK1100

		JSR	JBLK0_JUMP_INIT
		RTS

JBLK0_PLCHK1100 EQU	$
		LDA	PWIDEX			;プレイヤーちゃんと乗ってる ?
		CLC				;
		ADC	EWIDEX,X		;
		ASL	A			;
		STA	<EWORK0			;
		LSR	A			;
		CLC				;
		ADC	EPWIDX,X		;
		CMP	<EWORK0			;
		BCC	JBLK0_PLCHK1500		; yes: JBLK0_PLCHK1500

		JSR	JBLK0_J_I0500
		RTS

JBLK0_PLCHK1500 EQU	$
		LDA	ECENTY,X
		SEC
		SBC	ENWRK8,X
		SEC
		SBC	PCENTY
		CLC
		ADC	PLYPSL
		STA	PLYPSL

;;;;;;;;		LDA	<ENWRK4,X
;;;;;;;;		STA	PLXPSL

		STZ	PLYSPD
;;;;;;;;		STZ	PLXSPD
;;;;;;;;		STZ	PLMVSP
		LDA	#00004
		CMP	PLFLSH
		BMI	JBLK0_PLCHK1600

		STA	PLFLSH

JBLK0_PLCHK1600 EQU	$
		INC	ONLFFG

		RTS
;
JBLK0_ZADD	EQU	$
		WORD	0FFF0H,00010H
		WORD	0FFF8H,00008H
;
JBLK0_ZOM_CALC	EQU	$
		LDY	ENTROB,X
		BMI	JBLK0_Z_CAL0180

		LDY	<ENWRK1,X		;倍率計算する ?
		BEQ	JBLK0_Z_CAL0180		;  no: JBLK0_Z_CAL0180

		LDA	ENCBFG,X
		AND	#00001
		BNE	JBLK0_Z_CAL0100
		JMP	JBLK0_Z_CAL1000

JBLK0_Z_CAL0100 EQU	$
		LDY	<ENWRK2,X
		CPY	#004
		BNE	JBLK0_Z_CAL0200

		LDY	<EWORKE
		BNE	JBLK0_Z_CAL0150

		JSL	>TROBJ_CLEAR
		STZ	ENCHPT,X

JBLK0_Z_CAL0150 EQU	$
		LDY	#000
		STY	<ENWRK1,X

		LDA	#00100H
		STA	ENWRK6,X

JBLK0_Z_CAL0180 EQU	$

		RTS

JBLK0_Z_CAL0200 EQU	$
		TYA
		DEC	A
		STA	<EWORK0
		LDA	ENWRK6,X
		CLC
		ADC	!JBLK0_ZADD,Y
		STA	ENWRK6,X
		SEC
		SBC	ENWRKA,X
		EOR	<EWORK0
		BMI	JBLK0_Z_CAL0500

		LDA	ENWRKA,X
		STA	ENWRK6,X

		CPY	#000
		BEQ	JBLK0_Z_CAL0300

		LDA	#00100H
		STA	ENWRKA,X

		STZ	<ENWRK2,X

		RTS

JBLK0_Z_CAL0300 EQU	$
		LDA	#0FD00H
		STA	ENYSPD,X

		STZ	<ENWRK2,X
		LDA	#00140H
		STA	ENWRKA,X

		LDA	#0001FH			;［Ｓ］
		JSL	>SOUND_3_ON
;;;;;;;;		LDA	#00001H			;[Ｓ]
;;;;;;;;		STA	SOUND0			;

JBLK0_Z_CAL0500 EQU	$

		RTS

JBLK0_Z_CAL1000 EQU	$
		LDY	#004
		LDA	ENYSPD,X
		BMI	JBLK0_Z_CAL1100

		LDA	ENWRK6,X
		CMP	#00100H
		BPL	JBLK0_Z_CAL1100

		INY
		INY

JBLK0_Z_CAL1100 EQU	$
		LDA	ENWRK6,X
		CLC
		ADC	!JBLK0_ZADD,Y
		STA	ENWRK6,X

		RTS
;
JBLK0_CHAR	EQU	$
		WORD	CIPCHD+7050H+000
		WORD	CIPCHD3+40E0H+000
JBLK0_CHAR_BANK EQU	$
		WORD	BANK CIPCHD+7040H+000
		WORD	BANK CIPCHD3+40E0H+000
JBLK0_SET_X	EQU	$
		WORD	00008H,00010H
JBLK0_SET_Y	EQU	$
		WORD	00010H,0001CH
JBLK0_CHECK_Y	EQU	$
		WORD	00E00H,01800H
JBLK0_CENT_Y	EQU	$
		WORD	00008H,0000CH
;
JBLK0_ROT_SET	EQU	$
		LDY	<EWORKE
		LDA	ENTROB,X
		BPL	JBLK0_R_SET0100

		LDA	!JBLK0_CHECK_Y+1,Y
		AND	#000FFH
		BRA	JBLK0_R_SET0500

JBLK0_R_SET0100 EQU	$
		STZ	R7
		LDA	ENWRK6,X
		CMP	<ENCONT,X
		BEQ	JBLK0_R_SET0300

		STA	<ENCONT,X
		STA	R7

JBLK0_R_SET0300 EQU	$
;;;;;;;;		LDA	ENWRK6,X		;(R4) <- Ｘ倍率セット
		STA	R4			;
		LDA	#00200H			;(R11) <- Ｙ倍率セット
		SEC				;100H+100H
		SBC	ENWRK6,X		;
		STA	R11			;

		LDA	!JBLK0_CHAR_BANK,Y	;chara data bank set
		STA	R13
		LDA	!JBLK0_CHAR,Y		;chara data address set
		STA	R12

		LDA	!JBLK0_SET_X,Y		;(R8) <- 中心Ｘ　ＰＯＳ．
		STA	R8			;
		LDA	!JBLK0_SET_Y,Y		;(R9) <- 中心Ｙ　ＰＯＳ．
		STA	R9			;

		LDA	!JBLK0_CHECK_Y,Y	;(R6) <- チェック半径 * 100H
		STA	R6			;

		TYA
		STA	R10

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

		M_CHIP	M_JBLK0_SET

		LDX	<ENINDX

		INC	OBM7WF			;mode 7 OBJ chara DMA "ON"

		LDA	CCWORK10

JBLK0_R_SET0500 EQU	$
		LDY	<EWORKE
		CLC
		ADC	PWIDEY
		CLC
		ADC	PLFTLN
		SEC
		SBC	!JBLK0_CENT_Y,Y
		STA	ENWRK8,X

JBLK0_J_I0000	EQU	$

		RTS
;
JBLK0_JUMP_CALC EQU	$
		WORD	00280H,00200H
;
JBLK0_JUMP_INIT EQU	$
		LDY	<ENWRK0,X		;プレイヤー乗ってる ?
		BEQ	JBLK0_J_I0000		;  no: JBLK0_J_I0000

		LDA	ENCBFG,X
		AND	#00001
		BEQ	JBLK0_J_I0500

		LDY	<EWORKE			;JBLKL ?
		BNE	JBLK0_J_I0088		; yes: JBLK0_J_I0088

;		LDA	#00160H-0BCH
		LDA	#000B0H
		BRA	JBLK0_J_I0100

JBLK0_J_I0088	EQU	$
		LDA	ENWRK6,X
		CMP	#00140H
		BMI	JBLK0_J_I0090

		LDA	#00140H

JBLK0_J_I0090	EQU	$
		PHY
		STA	R0
		LDA	#00130H
		STA	R6
		M_CHIP	MULTIPLY
		LDX	<ENINDX
		LDA	R0
		PLY

		SEC
		SBC	#00020H

JBLK0_J_I0100	EQU	$
		ASL	A
		ASL	A
		EOR	#0FFFFH
		INC	A
		STA	ENYSPD,X
		STA	R0
		LDA	!JBLK0_JUMP_CALC,Y
		STA	R6
		M_CHIP	MULTIPLY
		LDX	<ENINDX
		LDA	R0
		STA	PLYSPD

		LDA	#00013H			;［Ｓ］
		JSL	>SOUND_3_ON
;;;;;;;;		LDA	#00008			;[Ｓ]
;;;;;;;;		STA	SOUND3

		LDA	#P006
		STA	PLJUMP
;;;;;;;;		LDA	#001+8000H
;;;;;;;;		STA	PLSPJP
		STA	SCRONF

		STZ	ENCBFG,X

JBLK0_J_I0500	EQU	$
		LDY	#000
		STY	<ENWRK0,X		;プレイヤーＯＮフラグクリア
		LDY	#004
		STY	<ENWRK2,X
		LDA	#00100H
		STA	ENWRKA,X

JBLK0_J_I0800	EQU	$

		RTS
;
;************************************************************************
;*		initial ( kani )					*
;************************************************************************
KANI0IN		EQU	$			;-- kani0in --
;		LDA	#00001H
;		STA	ENCHPT,X

		LDA	#0FFFFH
		STA	<ENCONT,X

		STZ	ENWRKA,X		;ひっくり返りフラグクリア

		LDA	#00003			;ダメージカウンターセット
		STA	ENWRKC,X

		RTL
;
;************************************************************************
;*		move	( kani )					*
;************************************************************************
;B		ENWRK0	Ｘ　ＰＯＳ．補正値
;B		ENWRK1	Ｙ　ＰＯＳ．補正値
;B		ENWRK2	ROUTINE MODE INDEX
;B		ENWRK3	ハサミズームフラグ
;B		ENWRK4	ハサミパターンフラグ
;B		ENWRK5	ハサミふりふりカウンター（２）／ハサミちょきちょきカウンター（３）
;		ENWRK6	動きフラグ（０）／倍率（１〜）
;		ENWRK8	キャラフリップカウンター（０）／回転角（１〜）
;		ENWRKA	ひっくり返りフラグ  0...NORMAL 2...REVERSE
;B		ENWRKC	ダメージカウンター
;B		ENWRKD	前のフレームのENCHPT
;
;		ENCONT	キャラナンバー（０〜１）／ハサミふりふりフラグ（２）／ハサミちょきちょきフラグ（３）
;
;		ENTIM0	動き変化タイマー
;		ENTIM1	ストップタイマー
;		ENTIM2	ハサミのびチェックロックタイマー
;		ENTIM3	ダメージタイマー
;
KANI0_SUB	EQU	$
		WORD	KANI0_SUB0		;ノーマル
		WORD	KANI0_SUB1		;ズーム　＆　ズーム
		WORD	KANI0_SUB2		;ふり　ふり
		WORD	KANI0_SUB3		;ちょき　ちょき
		WORD	KANI0_SUB4		;ぶん　ぶん
;
KANI0_CLOR	EQU	$
		WORD	0000000000100010B
		WORD	0000000000100100B
		WORD	0000000000100110B
		WORD	0000000000101000B
;
KANI0MV		EQU	$			;-- kani0mv --
		LDA	ENMODE,X
		CMP	#EFIRE
		BEQ	KANI0MV0100
		LDA	ENCOLD,X
		BEQ	KANI0MV0200

KANI0MV0100	EQU	$
		JSR	KANI0_ROT_SET

KANI0MV0200	EQU	$
;
		JSR	KANI0_OAM_SET
;
		JSL	>ENMDCK			;mode check
;
		LDA	ENMOD1,X		;行ったり来たりする ?
		AND	#0000001100000000B	;
		BNE	KANI0MV0300		; yes: KANI0MV0300

		LDA	ENCBFG,X		;地面に着いた ?
		LSR	A			;
		BCC	KANI0MV0300		;  no: KANI0MV0300

		LDA	#0000100101000011B
		STA	ENMOD1,X

KANI0MV0300	EQU	$
		LDA	#0000000000100010B	;ノーマルカラーセット
		STA	ENCLOR,X		;
;
		LDA	ENTIM3,X		;無敵中 ?
		BEQ	KANI0MV0600		;  no: KANI0MV0600

		AND	#00006H
		TAY
		LDA	!KANI0_CLOR,Y
		STA	ENCLOR,X

		LDA	ENXPSL,X
		SEC
		SBC	ENMOVX,X
		STA	ENXPSL,X

		STZ	ENXSPD,X

		INC	ENTIM0,X
		INC	ENTIM1,X
		INC	ENTIM2,X

		JSR	KANI0_OBJ_CHK

		RTL

KANI0MV0600	EQU	$
		JSR	KANI0_OBJ_CHK

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

		JSR	KANI0_OAM_SET

		M8
		LDA	ENCHPT,X
		CMP	ENWRKD,X
		BEQ	KANI0MV0A00

		STA	ENWRKD,X
		BNE	KANI0MV0A00

		M16
		JSL	>TROBJ_CLEAR

KANI0MV0A00	EQU	$
		M16

		RTL
;
KANI0_OBJ_CHK	EQU	$
		LDY	ECRSFG,X		;ショットされてる敵に衝突した ?
		DEY				;
		BMI	KANI0_O_CHK0800		;
						;
		LDA	ENMODE,Y		;
		CMP	#EMOVE			;
		BNE	KANI0_O_CHK0800		;
		LDA	ENSHOT,Y		;
		BEQ	KANI0_O_CHK0800		;  no: KANI0_O_CHK0800

		TYX
		JSL	>ENDEATH_SET_4

		DEC	ENWRKC,X		;ラスト ?
		LDY	ENWRKC,X		;
		BNE	KANI0_O_CHK0700		;  no: KANI0_O_CHK0700

		LDA	#EFALL
		STA	ENMODE,X
		LDA	#0FE00H
		STA	ENYSPD,X
		STZ	ENXPOW,X

		M8
		LDA	#0FFH
		STA	ENRETN,X
		M16

		LDA	#0000CH			;［Ｓ］
		JSL	>SOUND_3_ON

		PLA
		RTL

KANI0_O_CHK0700 EQU	$
		LDA	#00040H			;ダメージタイマーセット
		STA	ENTIM3,X		;
		RTS

KANI0_O_CHK0800 EQU	$
		PLA
		STA	<EWORK0
		JSL	>EPCRCK
		LDA	<EWORK0
		PHA

		RTS
;
KANI0_REV0	EQU	$
		WORD	00000H
KANI0_REV	EQU	$
		WORD	0FFF0H,00010H
KANI0_YREV	EQU	$-2
		WORD	0FFF0H
;
KANI0_OAM_SET	EQU	$
		LDY	ENWRKD,X		;ハサミＢＩＧ ?
		BNE	KANI0_O_SET0000		;  no: KANI0_O_SET0000

		RTS

KANI0_O_SET0000 EQU	$
		LDY	ENMUKI,X
		LDA	!KANI0_REV0,Y
		CLC
		ADC	ECENTX,X
		SEC
		SBC	ESCCH1
		STA	<EWORKC
		LDA	ECENTY,X
		SEC
		SBC	ESCCV1
		STA	<EWORKE

		JSL	>TROBJ_OAM_4x4

		LDY	ENMUKI,X		;ハサミの位置調整
		LDA	!KANI0_REV,Y		;
		STA	<EWORK0			;

		LDA	ENCLOR,X		;	;ひっくり返った　ｏｒ　元に戻った ?
		AND	#00080H			;	;
		ASL	A			;	;
		ASL	A			;	;
		XBA				;	;
		TAY				;	;
		CMP	ENWRKA,X		;	;
		BEQ	KANI0_O_SET0100		;	;  no: KANI0_O_SET0100
						;
		STA	ENWRKA,X		;	;ひっくり返りフラグセット
						;
KANI0_O_SET0100 EQU	$			;
		LDA	!KANI0_YREV,Y		;
		STA	<EWORK2			;

		I16				;
		LDY	ENOAML,X		;
		LDA	<ENWRK0,X		;
		AND	#000FFH			;
		CMP	#00080H			;
		BCC	KANI0_O_SET0200		;
						;
		ORA	#0FF00H			;
						;
KANI0_O_SET0200 EQU	$			;
		CLC				;
		ADC	<EWORKC			;
		STA	SOAM_DX+0+8*1,Y		;
		STA	SOAM_DX+0+8*3,Y		;
		CLC				;
		ADC	<EWORK0			;
		STA	SOAM_DX+0+8*0,Y		;
		STA	SOAM_DX+0+8*2,Y		;
						;
		LDA	<ENWRK1,X		;
		AND	#000FFH			;
		CMP	#00080H			;
		BCC	KANI0_O_SET0300		;
						;
		ORA	#0FF00H			;
						;
KANI0_O_SET0300 EQU	$			;
		CLC				;
		ADC	<EWORKE			;
		STA	SOAM_DX+2+8*2,Y		;
		STA	SOAM_DX+2+8*3,Y		;
		SEC				;
		SBC	<EWORK2			;
		STA	SOAM_DX+2+8*0,Y		;
		STA	SOAM_DX+2+8*1,Y		;
		I8

		RTS
;
KANI0_XMAX	EQU	$
		WORD	000B3H,00059H
		WORD	0FF4DH,0FFA7H
KANI0_XMAX2	EQU	$
		WORD	0FE9AH,00166H
;
KANI0_SUB0	EQU	$
		TYX

		LDA	ENTROB,X
		BMI	KANI0_SUB0080

		JSL	>TROBJ_CLEAR

KANI0_SUB0080	EQU	$
		LDA	ENTIM2,X		;ハサミのびチェックする ?
		BNE	KANI0_SUB0300		;  no: KANI0_SUB0300

		LDA	EPWIDY,X		;プレイヤー近くにいる ?
		CLC				;
		ADC	#00028H			;
		CMP	#00050H			;
		BCS	KANI0_SUB0300		;
						;
		LDA	EPWIDX,X		;
		CLC				;
		ADC	#00050H			;
		CMP	#000A0H			;
		BCS	KANI0_SUB0300		;  no: KANI0_SUB0300

		SEC				;ほんまごっつぅ近くにいる ?
		SBC	#00030H			;
		CMP	#00040H			;
		BCC	KANI0_SUB0100		; yes: KANI0_SUB0100

		LDY	EPXMUK,X
		LDA	KANI0_XMAX2,Y
		STA	ENXMAX,X
		LDA	#0000BH
		STA	ENXPOW,X
		LDA	#00010H
		STA	ENTIM0,X
		STZ	ENTIM1,X
		BRA	KANI0_SUB0300

KANI0_SUB0100	EQU	$
		JSL	>TROBJ_SR_4x4		;回転エリア確保ＯＫ ?
		BCC	KANI0_SUB0300		;  no: KANI0_SUB0300

KANI0_SUB0200	EQU	$
		LDY	#000
		LDA	EPWIDX,X
		BPL	KANI0_SUB0220

		INY
		INY

KANI0_SUB0220	EQU	$
		TYA
		STA	ENMUKI,X

		STZ	ENXSPD,X
		STZ	ENXPOW,X
		STZ	ENTIM0,X
		STZ	ENTIM1,X

;		LDA	#00300H		;ENWRK6 <- zoom size set
		LDA	#00055H		;ENWRK6 <- zoom size set
		STA	ENWRK6,X

;;;;;;;;		INC	ENCHPT,X

		LDA	#00002H
		STA	<ENWRK4,X

		LDA	#00010H			;回転角セット
		STA	ENWRK8,X		;

		LDA	#00201H
		STA	<ENWRK2,X	;ENWRK2 <- routine mode index inc.

KANI0_SUB0280	EQU	$

		RTS

KANI0_SUB0300	EQU	$
		LDA	ENTIM1,X		;止まってる ?
		BNE	KANI0_SUB0280		; yes: KANI0_SUB0280

		LDA	#0000BH			;Ｘ　ＰＯＷＥＲセット
		STA	ENXPOW,X

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

		AND	#00001H		;foot BG = 床 ?
		BNE	KANI0_SUB0500	; yes: KANI0_SUB0500

		LDA	ENSLOP,X	;foot BG = 坂 ?
		AND	#000FFH		;
		BNE	KANI0_SUB0500	; yes: KANI0_SUB0500

KANI0_SUB0400	EQU	$
		LDA	ENXPSL,X	;X POS. 補正
		SEC			;
		SBC	ENMOVX,X	;
		STA	ENXPSL,X	;

		LDA	ENYSPD,X	;Y POS. 補正
		BMI	KANI0_SUB0480

		AND	#0FF00H		;
		XBA			;
		STA	<EWORK0		;
					;
		LDA	ENYPSL,X	;
		SEC			;
		SBC	<EWORK0		;
		STA	ENYPSL,X	;

KANI0_SUB0480	EQU	$
		STZ	ENXMAX,X
		STZ	ENXSPD,X
		STZ	ENXPOW,X

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

		LDA	ENWRK6,X		;動く向きリバース
		EOR	#00004H			;
		STA	ENWRK6,X		;

KANI0_SUB0500	EQU	$
		LDA	ENXSPD,X		;フリップさせる ?
		BPL	KANI0_SUB0600		;
						;
		EOR	#0FFFFH			;
		INC	A			;
						;
KANI0_SUB0600	EQU	$			;
		CLC				;
		ADC	ENWRK8,X		;
		CMP	#00A00H			;
		BCC	KANI0_SUB0900		;  no: KANI0_SUB0900

		PHA

		LDA	ENMUKI,X		;flip
		EOR	#00002H			;
		STA	ENMUKI,X		;

		PLA
		SEC
		SBC	#00A00H

KANI0_SUB0900	EQU	$
		STA	ENWRK8,X

		LDA	ENTIM0,X		;スピード変える ?
		BNE	KANI0_SUB0B00		;  no: KANI0_SUB0B00

		LDA	<RANDM0
		AND	#0001FH
		PHA
		CLC
		ADC	#00020H
		STA	ENTIM0,X

		PLA
		AND	#00002H
		CLC
		ADC	ENWRK6,X
		TAY

		LDA	!KANI0_XMAX,Y		;Ｘ　ＭＡＸ　ＳＰＥＥＤセット
		STA	ENXMAX,X		;

KANI0_SUB0B00	EQU	$

		RTS
;
KANI0_ZADD	EQU	$
		WORD	0FFE8H,00008H		;CHK 0
;		WORD	0FFE8H,00018H		;CHK 0
;		WORD	00018H,0FFE8H		;CHK 0
;		WORD	00030H,0FFD0H		;CHK 2
;		WORD	00060H,0FFA0H		;CHK 4
;
KANI0_SUB1	EQU	$
		TYX

		LDA	#00001
		STA	ENCHPT,X

		LDY	<ENWRK3,X
		LDA	ENWRK6,X
		CLC
		ADC	!KANI0_ZADD,Y
		CMP	#000E3H
		BMI	KANI0_SUB1500

		STZ	<ENWRK4,X		;ハサミとじ

		LDA	<RANDM0			;ハサミふりふりカウンターセット
		PHA				;
		AND	#00002H			;
		CLC				;
		ADC	#00004H			;
		TAY				;

		STZ	<ENCONT,X		;ハサミふりふりフラグセット

		PLA
		AND	#00003H
		BNE	KANI0_SUB1280

		INY
		INY
		INY
		INY

KANI0_SUB1280	EQU	$
		CLC
		ADC	<ENWRK2,X
		INC	A
		AND	#000FFH
		CMP	#00004H
		BCC	KANI0_SUB1300

		TYA
		LSR	A
		TAY

;		LDA	#00009H			;[Ｓ]
;		STA	SOUND0

		LDA	#00004H

KANI0_SUB1300	EQU	$
		STA	<ENWRK2,X		;routine mode index set
		STY	<ENWRK5,X

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

		LDA	#000E3H
		BRA	KANI0_SUB1600

KANI0_SUB1500	EQU	$
		CMP	#00055H
		BPL	KANI0_SUB1600

		STZ	ENCHPT,X		;キャラパターンフラグセット

		LDA	<RANDM0			;ハサミのびチェックロックタイマーセット
		AND	#0001FH			;
		CLC				;
		ADC	#00010H			;
		STA	ENTIM2,X		;

		DEC	<ENWRK2,X		;routine mode index dec.

		LDY	#000			;動きフラグ再セット
		LDA	ENXMAX,X		;
		BPL	KANI0_SUB1580		;
						;
		LDY	#004			;
						;
KANI0_SUB1580	EQU	$			;
		TYA				;

KANI0_SUB1600	EQU	$
		STA	ENWRK6,X

		JSR	KANI0_ROT_SET

KANI0_SUB1900	EQU	$

		RTS
;
KANI0_FURI	EQU	$
		WORD	0FFF0H,00020H		;CHK 0
;		WORD	0FFF0H,00020H		;CHK 2
;		WORD	0FFE0H,00040H		;CHK 4
;
KANI0_SUB2	EQU	$
		TYX

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

		STZ	<EWORK2			;床たたき効果セットフラグクリア

		LDY	<ENCONT,X
		LDA	ENWRK8,X
		CLC
		ADC	!KANI0_FURI,Y
		AND	#001FEH
		CPY	#000
		BNE	KANI0_SUB2100

		CMP	#00190H
		BCS	KANI0_SUB2200

		CMP	#00100H
		BCC	KANI0_SUB2200

		LDA	#00190H

		LDY	#002
		BRA	KANI0_SUB2200

KANI0_SUB2100	EQU	$
		CMP	#00090H
		BCC	KANI0_SUB2200

		CMP	#00100H
		BCS	KANI0_SUB2200

		LDA	#00090H

		INC	<EWORK2			;床たたき効果セットフラグセット

		LDY	#000

KANI0_SUB2200	EQU	$
		STY	<ENCONT,X
		STA	ENWRK8,X
		CMP	#00010H
		BNE	KANI0_SUB2500

		DEC	<ENWRK5,X
		LDY	<ENWRK5,X
		BNE	KANI0_SUB2500

		LDA	#0FFFFH
		STA	<ENCONT,X

		LDA	#00001H			;ENWRK3 <- ハサミズームフラグ
		STA	<ENWRK2,X		;ENWRK2 <- 1 (ROUTINE MODE INDEX)

KANI0_SUB2500	EQU	$
		JSR	KANI0_ROT_SET_S

		LDY	<EWORK2			;床たたき効果セットする ?
		BEQ	KANI0_SUB2800		;  no: KANI0_SUB2800

		LDA	ENYPSL,X
		CLC
		ADC	#00014H
		STA	R0
		LDA	ECENTX,X
		CLC
		ADC	<EWORK0
		STA	R8
		M_CHIPR M_BGUNIT_READ
		LDX	<ENINDX
		LDA	#00045H			;［Ｓ］
		LDY	R5			;ＢＧある ?
		BEQ	KANI0_SUB2700		;  no: KANI0_SUB2700

		LDA	#KUMOB		;(A) <-- exstra no.
		JSL	>EXINSR
		LDA	#0000BH
		STA	EXWRK0,Y	;counter set

		LDA	#00006H
		STA	EXTIM0,Y

		LDA	ECENTX,X
		CLC
		ADC	<EWORK0
		SEC
		SBC	#00008
		STA	EXXPSL,Y	;X pos set

		LDA	ECENTY,X
		CLC
		ADC	CCWORK11
		SEC
		SBC	#00010H
		STA	EXYPSL,Y	;Y pos set

		LDA	#0001FH			;［Ｓ］

KANI0_SUB2700	EQU	$
		JSL	>SOUND_3_ON
;;;;;;;;		LDA	#00009H			;[Ｓ]
;;;;;;;;		STA	SOUND3

KANI0_SUB2800	EQU	$

		RTS
;
KANI0_SUB3	EQU	$
		TYX

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

;		TROBJ_CHK_2
;		BNE	KANI0_SUB3800

		LDA	ENTIM0,X		;ハサミパターンチェンジ ?
		BNE	KANI0_SUB3800		;  no: KANI0_SUB3800

		LDA	#00004H
		STA	ENTIM0,X

		LDA	<ENWRK4,X		;ハサミパターンフラグチェンジ
		EOR	#00002H			;
		STA	<ENWRK4,X		;
		BNE	KANI0_SUB3100

		LDA	#00037H			;［Ｓ］
		JSL	>SOUND_3_ON
;;;;;;;;		LDA	#0001BH			;[Ｓ]
;;;;;;;;		STA	SOUND0

KANI0_SUB3100	EQU	$
		DEC	<ENWRK5,X		;ちょきちょき終わり ?
		LDY	<ENWRK5,X		;
		BNE	KANI0_SUB3700		;  no: KANI0_SUB3700

		LDA	#0FFFFH
		STA	<ENCONT,X
;		LDA	#00001H			;ENWRK3 <- ハサミズームフラグ
		INC	A			;
		INC	A			;ENWRK2 <- routine mode index
		STA	<ENWRK2,X		;

KANI0_SUB3700	EQU	$
		JSR	KANI0_ROT_SET		;プレイヤーダメージ ?
		BCC	KANI0_SUB3800		;  no: KANI0_SUB3800

		JSL	>PLFLST

KANI0_SUB3800	EQU	$

		RTS
;
KANI0_SUB4	EQU	$
		TYX

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

;		TROBJ_CHK_2
;		BNE	KANI0_SUB3800	;RTS

		LDA	ENWRK8,X
		CLC
		ADC	#00010H			;CHK 0
;		ADC	#00020H			;CHK 2
;		ADC	#00040H			;CHK 4
		AND	#001FEH
		STA	ENWRK8,X
		CMP	#00010H
		BNE	KANI0_SUB4500

		DEC	<ENWRK5,X
		LDY	<ENWRK5,X
		BNE	KANI0_SUB4300

		LDA	#0FFFFH
		STA	<ENCONT,X
;		LDA	#00001H			;ENWRK3 <- ハサミズームフラグ
		INC	A			;
		INC	A			;ENWRK2 <- routine mode index
		STA	<ENWRK2,X		;
		BRA	KANI0_SUB4500

KANI0_SUB4300	EQU	$
		LDA	#0001FH			;［Ｓ］
		JSL	>SOUND_3_ON
;;;;;;;;		LDA	#00009H			;[Ｓ]
;;;;;;;;		STA	SOUND0

KANI0_SUB4500	EQU	$
		JMP	KANI0_ROT_SET_S
;
KANI0_ROT_SET_S EQU	$
		JSR	KANI0_ROT_SET
		BCC	KANI0_R_SET_S9

		JSL	>PLFLST

KANI0_R_SET_S9	EQU	$
KANI0_R_SET0000 EQU	$

		RTS
;
KANI0_CHAR	EQU	$
		WORD	CIPCHD+4000H+001H
		WORD	CIPCHD+4020H+001H
;
KANI0_CXPOS	EQU	$
		WORD	0FFF8H,00008H
;
KANI0_ROT_SET	EQU	$
		LDY	ENCHPT,X		;回転エリア使ってる ?
		BEQ	KANI0_R_SET0000		;  no: KANI0_R_SET0000

						;転送元アドレス＆バンクセット
						;(R12) <-- 転送元アドレスセット
		LDY	<ENWRK4,X		;(R13) <-- 転送元バンクセット
		LDA	!KANI0_CHAR,Y		;chara data address set
		STA	R12			;
		LDA	#BANK CIPCHD+4000H+001H ;chara data bank set
		STA	R13			;

		LDA	ENWRK8,X		;(R5) <- 回転角セット
		SEC
		SBC	#00040H
		AND	#001FEH
		STA	R11			;
		LDA	ENWRK8,X
		LSR	A			;
		STA	R5			;

		LDA	ENWRK6,X		;(R4) <- 倍率セット
		STA	R4			;

		LDA	ENMUKI,X
		STA	R9

		LDA	#-01400H		;(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	M_KANI0_SET

		INC	OBM7WF			;mode 7 OBJ chara DMA "ON"

		LDX	<ENINDX
		LDY	ENMUKI,X		;ハサミオフセットＸ　ＰＯＳ．
		LDA	!KANI0_CXPOS,Y
		CLC
		ADC	CCWORK10
		STA	<EWORK0
		TAY
		STY	<ENWRK0,X		;

		LDY	CCWORK11		;ハサミオフセットＹ　ＰＯＳ．
		STY	<ENWRK1,X		;

		TXA
		STA	R1
		M_CHIP	SHOTENSR

		LDX	<ENINDX
		LDY	R1
		BMI	KANI0_R_SET0500

		LDA	PWIDEX
		CLC
		ADC	#00008
		STA	<EWORKC
		ASL	A
		STA	<EWORKE

		LDA	<EWORK0
		CLC
		ADC	ECENTX,X
		SEC
		SBC	ECENTX,Y
		CLC
		ADC	<EWORKC
		CMP	<EWORKE
		BCS	KANI0_R_SET0500

		LDA	PWIDEY
		CLC
		ADC	#00008
		STA	<EWORKC
		ASL	A
		STA	<EWORKE

		LDA	CCWORK11
		CLC
		ADC	ECENTY,X
		SEC
		SBC	ECENTY,Y
		CLC
		ADC	<EWORKC
		CMP	<EWORKE
		BCS	KANI0_R_SET0500

		TYX
		JSL	>ENDEATH_SET_4

KANI0_R_SET0500 EQU	$
		LDA	EPWIDX,X
		CLC
		ADC	CCWORK10
		CLC
		ADC	#00010H
		CMP	#00020H
		BCS	KANI0_R_SET0800

		LDA	EPWIDY,X
		CLC
		ADC	CCWORK11
		CLC
		ADC	#00010H
		CMP	#00020H
		BCS	KANI0_R_SET0800

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

		SEC

		RTS

KANI0_R_SET0800 EQU	$
		CLC

		RTS
;
;************************************************************************
;*		initial ( telesa L size )				*
;************************************************************************
TELELIN		EQU	$			;-- telelin --
		JSL	>TROBJ_SR_4x4_CL
;
		LDA	#00049H			;初期倍率セット
		STA	ENWRK6,X

		JSR	TELEL_ROT_SET
;
		RTL
;
;************************************************************************
;*		move	( telesa L size )				*
;************************************************************************
;
;		ENWRK0
;		ENWRK2
;		ENWRK4
;		ENWRK6	倍率
;		ENWRK8	回転角
;
;		ENTIM1	スピードチェンジタイマー
;
TELEL_XMAX	EQU	$
TELEL_GMAX	EQU	$
		WORD	0FFA7H,00059H
TELEL_ZOOM	EQU	$
		WORD	00020H,0FFE0H
TELEL_CHAR	EQU	$
		WORD	CIPCHD+20E0H+001
		WORD	CIPCHD+0040H+001
;
TELELMV		EQU	$			;-- telelmv --
		JSL	>TROBJ_OAM_4x4

		JSL	>ENMDCK		;mode check
;
		TROBJ_CHK_4
		BEQ	TELELMV0200

		RTL

TELELMV0200	EQU	$
		M8
		LDA	#004H
		STA	ENYUSN,X
		M16

		LDA	#00002
		STA	ENXPOW,X
		STA	ENGPOW,X

;		LDA	ENXMAX,X		;進行方向にプレイヤーがいる ?
;		EOR	EPWIDX,X		;
;		BPL	TELELMV0210		;  no: TELELMV0210

		LDA	ENMUKI,X		;プレイヤー見つめてる ?
		EOR	PLCMKI			;
		BNE	TELELMV0210		;  no: TELELMV0210

		STZ	ENGPOW,X
		STZ	ENXPOW,X
		STZ	ENXSPD,X
		STZ	ENYSPD,X
		STZ	ENTIM1,X

		LDY	#002

		BRA	TELELMV0300

TELELMV0210	EQU	$
		LDA	ENTIM1,X
		BNE	TELELMV0230

		LDA	#00040H
		STA	ENTIM1,X

		LDA	<RANDM0
		PHA
		AND	#00001H
		BEQ	TELELMV0225

		LDY	EPXMUK,X
		LDA	!TELEL_XMAX,Y
		STA	ENXMAX,X

TELELMV0225	EQU	$
		PLA
		XBA
		AND	#00001H
		BEQ	TELELMV0230

		LDY	EPYMUK,X
		LDA	!TELEL_GMAX,Y
		STA	ENGMAX,X

TELELMV0230	EQU	$
		LDY	#000

TELELMV0300	EQU	$
		LDA	ENWRK6,X		;倍率計算
		CLC				;
		ADC	!TELEL_ZOOM,Y		;
		CMP	#000E3H			;
		BMI	TELELMV0400		;
						;
		LDA	#000E3H			;１００やったら、回転すると絵がきれるので
		BRA	TELELMV0500		;
						;
TELELMV0400	EQU	$			;
		CMP	#00049H			;
		BPL	TELELMV0500		;
						;
		LDA	#00049H			;
						;
TELELMV0500	EQU	$			;
		STA	ENWRK6,X		;

		LDA	EPWIDX,X		;回転角セット
		EOR	#0FFFFH			;
		INC	A			;
		STA	R1			;
						;
		LDA	EPWIDY,X		;
		EOR	#0FFFFH			;
		INC	A			;
		STA	R2			;
						;
		M_CHIP	M_RAD_GET		;
						;
		LDX	<ENINDX			;
		LDA	R0			;
		SEC				;
		SBC	#00080H			;
		CMP	#00100H			;
		BCS	TELELMV0610		;
						;
		LDA	#00002H			;
		STA	ENMUKI,X		;
						;
		LDA	R0			;
		EOR	#0FFFFH			;
		INC	A			;
		CLC				;
		ADC	#00100H			;
		BRA	TELELMV0620		;
						;
TELELMV0610	EQU	$			;
		STZ	ENMUKI,X		;
						;
		LDA	R0			;
						;
TELELMV0620	EQU	$			;
		AND	#001FEH			;
		STA	ENWRK8,X		;

		JSR	TELEL_ROT_SET

		LDA	CCWORK10		;	;プレイヤーはダメージを受けている ?
		CMP	#00002H			;	;
		BNE	TELELMV0800		;	; yes: TELELMV0800
						;
		JSL	>PLFLST

TELELMV0800	EQU	$
;
		RTL
;
TELEL_ROT_SET	EQU	$
		LDA	#BANK CIPCHD+0040H+001H ;chara data address set
		STA	R13			;
		LDA	!TELEL_CHAR,Y		;chara data bank set
		STA	R12			;

		LDA	ENWRK8,X	;(R5) <- 回転角セット
		LSR	A		;
		STA	R5		;

		LDA	ENWRK6,X	;(R4) <- 倍率セット
		STA	R4		;

		LDA	EPWIDX,X
		STA	R7
		LDA	EPWIDY,X
		STA	R8
		LDA	PLFLSH
		STA	R9
		LDA	#01A00H		;(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
		M_CHIP	M_TELEL_SET

		LDX	<ENINDX

		INC	OBM7WF		;mode 7 OBJ chara DMA "ON"

		RTS
;
;************************************************************************
;*		initial ( zoom bubble )					*
;************************************************************************
ZBUB0IN		EQU	$			;-- zbub0in --
		LDA	ENYPSL,X
		STA	ENWRKC,X
		M8
		LDA	#0FFH
		STA	ENWTSP,X
		M16

		RTL
;
;************************************************************************
;*		move	( zoom bubble )					*
;************************************************************************
;
;		ENWRK0	上昇フラグ  0..上昇 1..下降
;		ENWRK2	ROUTINE MODE INDEX
;		ENWRK4	ジャンプの種類
;		ENWRK6	倍率
;		ENWRK8
;		ENWRKA	しっぽ出現タイマー
;		ENWRKC	Ｙ　ＰＯＳ．
;
;		ENTIM1	ウェイトタイマー
;
ZBUB0_SUB	EQU	$
		WORD	ZBUB0_SUB0		;出現待ち
		WORD	ZBUB0_SUB1		;空中
;
ZBUB0MV		EQU	$			;-- zbub0mv --
ZBUB1MV		EQU	$			;-- zbub1mv --
		LDA	ENTROB,X
		BMI	ZBUB0MV0100

		JSL	>TROBJ_OAM_4x4

ZBUB0MV0100	EQU	$
		JSL	>ENMDCK

		LDY	ECRSFG,X		;プレイヤーにあたった ?
		BPL	ZBUB0MV0200		;  no: ZBUB0MV0200

		JSL	>PLFLST
		BRA	ZBUB0MV0300

ZBUB0MV0200	EQU	$
		JSL	>SHOT_EN_KILL_S2
		BCS	ZBUB0MV0800

ZBUB0MV0300	EQU	$
		LDA	ENMYNO,X
		CMP	#ZBUB0
		BEQ	ZBUB0MV0400

		JMP	ZBUB1MV0100

ZBUB0MV0400	EQU	$
		TXY
		LDA	<ENWRK2,X
		ASL	A
		TAX
		JSR	(ZBUB0_SUB,X)

		LDY	<ENWRK2,X
		BEQ	ZBUB0MV0800

		LDA	ENWRKA,X
		CLC
		ADC	#00020H
		CMP	#00100H
		BMI	ZBUB0MV0700

		AND	#000FFH
		PHA

;EX しっぽセット
		LDA	#BUBBR
		JSL	>EXINSR
		LDA	#00003
		STA	EXWRK0,Y

		ASL	A
;		LDA	#00006H
		STA	EXTIM0,Y

		LDA	ENXPSL,X		;Ｘ　ＰＯＳ．セット
		STA	EXXPSL,Y

		LDA	ENYPSL,X		;Ｙ　ＰＯＳ．セット
		STA	EXYPSL,Y

		PLA

ZBUB0MV0700	EQU	$
		STA	ENWRKA,X

ZBUB0MV0800	EQU	$

		RTL
;
ZBUB0_GPOW	EQU	$
		WORD	00009H,00012H
;
ZBUB0_SUB0	EQU	$
		TYX

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

		JSL	>TROBJ_SR_4x4
		BCC	ZBUB0_SUB0800

		LDA	<RANDM0			;Ｇ　ＰＯＷＥＲセット
		AND	#00002H			;
		STA	<ENWRK4,X		;
		TAY				;
		LDA	!ZBUB0_GPOW,Y		;
		STA	ENGPOW,X		;

		LDA	#0FD34H			;Ｙ　ＳＰＥＥＤセット
		STA	ENYSPD,X		;

		LDA	#00039H			;［Ｓ］
		JSL	>SOUND_3_ON
;;;;;;;;		LDA	#00027H			;[Ｓ]
;;;;;;;;		STA	SOUND3

		M8				;フリップデータクリア
		LDA	ENCLOR,X		;
		AND	#07FH			;
		STA	ENCLOR,X		;
		LDA	#002			;姿見せる
		STA	ENYUSN,X		;
		M16				;

		STZ	<ENWRK0,X		;上昇フラグクリア

		INC	<ENWRK2,X

ZBUB0_SUB0800	EQU	$

		RTS
;
ZBUB0_SUB1	EQU	$
		TYX

		LDA	ENWRKC,X		;元に戻る ?
		CMP	ENYPSL,X		;
		BPL	ZBUB0_SUB1100		;  no: ZBUB0_SUB1100

		STA	ENYPSL,X		;Ｙ　ＰＯＳ．セット

		STZ	ENYSPD,X		;Ｙ　ＳＰＥＥＤクリア

		STZ	ENGPOW,X		;Ｇ　ＰＯＷＥＲクリア

		JSL	>TROBJ_CLEAR		;回転エリア開放

		M8				;姿消す
		LDA	#0FFH			;
		STA	ENYUSN,X		;
		M16				;

		LDA	#00060H			;出現ロックタイマーセット
		STA	ENTIM1,X

		DEC	<ENWRK2,X

ZBUB0_SUB1080	EQU	$

		RTS

ZBUB0_SUB1100	EQU	$
		LDA	ENYSPD,X
		BPL	ZBUB0_SUB1200

		EOR	#0FFFFH
		INC	A
		BRA	ZBUB0_SUB1300

ZBUB0_SUB1200	EQU	$
		LDY	<ENWRK0,X		;上昇中 ?
		BNE	ZBUB0_SUB1300		;  no: ZBUB0_SUB1300

		PHA
		INC	<ENWRK0,X		;上昇フラグリセット

		M8				;キャラＶフリップ
		LDA	ENCLOR,X		;
		ORA	#080H			;
		STA	ENCLOR,X		;
		M16				;
		PLA

ZBUB0_SUB1300	EQU	$
		LSR	A			;(R11) <- 縦倍率セット
		CMP	#00080H			;
		BPL	ZBUB0_SUB1400		;
						;
		LDA	#00080H			;
		BRA	ZBUB0_SUB1500		;
						;
ZBUB0_SUB1400	EQU	$			;
		CMP	#00200H			;
		BMI	ZBUB0_SUB1500		;
						;
		LDA	#001FFH			;
						;
ZBUB0_SUB1500	EQU	$			;
		STA	R11			;

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

		LDA	#BANK CIPCHD2+00B0H+000 ;chara data bank set
		STA	R13
		LDA	#CIPCHD2+00B0H+000	;chara data address set
		STA	R12

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

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

		M_CHIP	C_32_ZOOM_XY_16

		LDX	<ENINDX

		INC	OBM7WF			;mode 7 OBJ chara DMA "ON"

ZBUB0_SUB1800	EQU	$

		RTS
;
;************************************************************************
;*		initial ( zoom bubble type 2 )				*
;************************************************************************
ZBUB1IN		EQU	$			;-- zbub1in --
		LDA	ENYPSL,X
		STA	ENWRKC,X
		M8
		LDA	#0FFH
		STA	ENWTSP,X
		M16

		RTL
;
;************************************************************************
;*		move	( zoom bubble type 2 )				*
;************************************************************************
;		ENWRK0	着地時の倍率
;B		ENWRK2	ROUTINE MODE INDEX
;B		ENWRK3	飛んでる方向（０．．．右、２．．．左）
;		ENWRK4	着地時のＹ　ＳＰＥＥＤワーク
;		ENWRK6	着地時のＸ　ＳＰＥＥＤ
;		ENWRK8	回転角(---)／横倍率(SUB3,4)
;		ENWRKA	着地時のＹ　ＳＰＥＥＤ
;		ENWRKC	Ｙ　ＰＯＳ．
;
;		ENCONT	着地方向フラグ 0..右 2..左 4..下 6..上
;
;		ENTIM1	ウェイトタイマー
;
ZBUB1_SUB	EQU	$
		WORD	ZBUB1_SUB0		;出現待ち
		WORD	ZBUB1_SUB1		;空中
		WORD	ZBUB1_SUB2		;壁、天井、地面に当たった時のしっぽ消し
		WORD	ZBUB1_SUB3		;壁、天井、地面に当たった時の潰れ
		WORD	ZBUB1_SUB4		;壁、天井、地面に当たった時の潰れからの復元
		WORD	ZBUB1_SUB5		;壁、天井、地面に当たった時のしっぽ復元
;
BUBBR_XSPD	EQU	$
BUBBR_YSPD	EQU	$
		WORD	00080H,00100H,00180H,00200H
		WORD	0FF80H,0FF00H,0FE80H,0FE00H
BUBBR_XIDX	EQU	$
		WORD	00008H,00000H,0FFFFH,0FFFFH
BUBBR_YIDX	EQU	$-4
		WORD	00008H,00000H
BUBBR_XPRV	EQU	$
		WORD	00008H,0FFF8H,00000H,00000H
BUBBR_YPRV	EQU	$-4
		WORD	00008H,0FFF8H
;
ZBUB1MV0100	EQU	$
		TXY
		LDA	<ENWRK2,X
		ASL	A
		TAX
		JSR	(ZBUB1_SUB,X)

		LDY	<ENWRK2,X
		BNE	ZBUB1MV0120

ZBUB1MV0110	EQU	$

		RTL

ZBUB1MV0120	EQU	$
		CPY	#003
		BEQ	ZBUB1MV0150
		CPY	#004
		BEQ	ZBUB1MV0150

		LDA	FRCNT
		AND	#00007H
		BNE	ZBUB1MV0110

ZBUB1MV0150	EQU	$
;EX しっぽセット
		LDA	#BUBBR
		JSL	>EXINSR
		LDA	#00003
		STA	EXWRK0,Y

		ASL	A
;		LDA	#00006H
		STA	EXTIM0,Y

		LDA	ENXPSL,X		;Ｘ　ＰＯＳ．セット
		STA	EXXPSL,Y

		LDA	ENYPSL,X		;Ｙ　ＰＯＳ．セット
		STA	EXYPSL,Y

		LDA	<ENWRK2,X		;このあとでＹｒｅｇを使ってるよん
		CMP	#00003
		BEQ	ZBUB1MV0200
		CMP	#00004
		BNE	ZBUB1MV0800

ZBUB1MV0200	EQU	$
		PHY
		LDY	<ENCONT,X
		LDA	!BUBBR_XPRV,Y
		STA	<EWORK8
		LDA	!BUBBR_YPRV,Y
		STA	<EWORKA

		LDA	!BUBBR_XIDX,Y
		BPL	ZBUB1MV0210

		LDA	FRCNT2
		AND	#00001
		BEQ	ZBUB1MV0210

		LDA	#00008H

ZBUB1MV0210	EQU	$
		STA	<EWORK4
		LDA	!BUBBR_YIDX,Y
		BPL	ZBUB1MV0220

		LDA	FRCNT2
		AND	#00001
		BEQ	ZBUB1MV0220

		LDA	#00008H

ZBUB1MV0220	EQU	$
		STA	<EWORK6

		LDA	<RANDM0
		PHA
		AND	#00006H
		CLC
		ADC	<EWORK4
		TAY
		LDA	!BUBBR_XSPD,Y
		STA	<EWORK0

		PLA
		XBA
		AND	#00006H
		CLC
		ADC	<EWORK6
		TAY
		LDA	!BUBBR_YSPD,Y
		PLY
		STA	EXYSPD,Y

		LDA	<EWORK0
		STA	EXXSPD,Y

		LDA	EXXPSL,Y
		CLC
		ADC	<EWORK8
		STA	EXXPSL,Y

		LDA	EXYPSL,Y
		CLC
		ADC	<EWORKA
		STA	EXYPSL,Y

ZBUB1MV0800	EQU	$

		RTL
;
ZBUB1_XSPD	EQU	$
		WORD	0FF4DH,000B3H
;
ZBUB1_SUB0	EQU	$
		TYX

		LDA	ENTIM1,X		;出現ウェイト ?
		BNE	ZBUB1_SUB0800		; yes: ZBUB1_SUB0800

		JSL	>TROBJ_SR_4x4
		BCC	ZBUB1_SUB0800

		LDA	EPXMUK,X		;Ｘ　ＳＰＥＥＤセット
		TAY				;
		STY	<ENWRK3,X		;
		LDA	!ZBUB1_XSPD,Y		;
		STA	ENXSPD,X		;

		LDA	#0FD34H			;Ｙ　ＳＰＥＥＤセット
		STA	ENYSPD,X

		LDA	#00009H			;Ｇ　ＰＯＷＥＲセット
		STA	ENGPOW,X

		M8
		LDA	#002
		STA	ENYUSN,X
		M16

		LDA	#00039H			;［Ｓ］
		JSL	>SOUND_3_ON
;;;;;;;;		LDA	#00027H			;[Ｓ]
;;;;;;;;		STA	SOUND3

		INC	<ENWRK2,X		;routine mode index inc.

ZBUB1_SUB0800	EQU	$

		RTS
;
ZBUB1_BGCKDT	EQU	$-1
;ENCBFG =		[1]  [2]  [3]  [4]  [5]	 [6]  [7]
		HEX	004, 006, 006, 000, 0FF, 0FF, 006
;			[8]  [9]  [A]  [B]  [C]	 [D]  [E]  [F]
		HEX	002, 0FF, 0FF, 006, 000, 000, 0FF, 006
;
ZBUB1_SUB1	EQU	$
		TYX

		LDA	ENWRKC,X		;元に戻る ?
		CMP	ENYPSL,X		;
		BPL	ZBUB1_SUB1100		;  no: ZBUB1_SUB1100

		STA	ENYPSL,X		;Ｙ　ＰＯＳ．セット

		STZ	ENXSPD,X		;Ｘ　ＳＰＥＥＤクリア
		STZ	ENYSPD,X		;Ｙ　ＳＰＥＥＤクリア

		STZ	ENGPOW,X		;Ｇ　ＰＯＷＥＲクリア

		JSL	>TROBJ_CLEAR

		M8				;姿消す
		LDA	#0FFH			;
		STA	ENYUSN,X		;
		M16				;

		LDA	#00060H			;出現ウェイトタイマーセット
		STA	ENTIM1,X

		DEC	<ENWRK2,X		;routine mode index dec.

ZBUB1_SUB1080	EQU	$

		RTS

ZBUB1_SUB1100	EQU	$
		LDA	#00001			;ＢＧチェックする点を計算
		LDY	ENYSPD+1,X		;
		BPL	ZBUB1_SUB1110		;
						;
		INC	A			;
						;
ZBUB1_SUB1110	EQU	$			;
		ORA	#00004			;
						;
		LDY	ENXSPD+1,X		;
		BPL	ZBUB1_SUB1120		;
						;
		EOR	#0000CH			;
						;
ZBUB1_SUB1120	EQU	$			;
		TAY
		AND	ENCBFG,X		;壁、天井、地面に当たった ?
		BEQ	ZBUB1_SUB1500		;  no: ZBUB1_SUB1500

		STY	<EWORK2			;かどっこに当たった ?
		TAY				;
		LDA	!ZBUB1_BGCKDT,Y		;
		AND	#000FFH			;
		CMP	#000FFH			;
		BNE	ZBUB1_SUB1180		;  no: ZBUB1_SUB1180

		LDA	ENXSPD,X		;ななめから当たった時、縦横どちらの
		BPL	ZBUB1_SUB1130		;点をとるかを決める
						;
		EOR	#0FFFFH			;
		INC	A			;
						;
ZBUB1_SUB1130	EQU	$			;
		STA	<EWORK0			;
						;
		LDA	ENYSPD,X		;
		BPL	ZBUB1_SUB1140		;
						;
		EOR	#0FFFFH			;
		INC	A			;
						;
ZBUB1_SUB1140	EQU	$			;
		CMP	<EWORK0			;
		BPL	ZBUB1_SUB1150		;
						;
		LDA	<EWORK2			;
		AND	#00008H			;
		LSR	A			;
		LSR	A			;
		BRA	ZBUB1_SUB1180		;
						;
ZBUB1_SUB1150	EQU	$			;
		LDA	<EWORK2			;
		AND	#00002			;
		CLC
		ADC	#00004

ZBUB1_SUB1180	EQU	$
		STA	<ENCONT,X

		LDA	ENXSPD,X		;Ｘ　ＳＰＥＥＤセーブ
		STA	ENWRK6,X		;
		LDA	ENYSPD,X		;Ｙ　ＳＰＥＥＤセーブ
		STA	ENWRKA,X		;	;下降中 ?
		BPL	ZBUB1_SUB1200		;	; yes: ZBUB1_SUB1200
						;
		EOR	#0FFFFH			;
		INC	A			;
		BRA	ZBUB1_SUB1210		;
						;
ZBUB1_SUB1200	EQU	$			;
		CMP	#00100H			;	;スピード小さすぎるか ?
		BPL	ZBUB1_SUB1210		;	;  no: ZBUB1_SUB1210
						;
		LDA	#00100H			;Ｙ　ＳＰＥＥＤセット
		STA	ENWRKA,X		;
		LDA	#000C0H			;倍率セット
		STA	<ENWRK0,X		;
						;
ZBUB1_SUB1210	EQU	$			;
		STA	<ENWRK4,X		;Ｙ　ＳＰＥＥＤワークセット

		STZ	ENXSPD,X		;Ｘ　ＳＰＥＥＤクリア
		STZ	ENYSPD,X		;Ｙ　ＳＰＥＥＤクリア
		STZ	ENGPOW,X		;Ｇ　ＰＯＷＥＲクリア

		INC	<ENWRK2,X		;routine mode index inc.

		RTS

ZBUB1_SUB1500	EQU	$
		JSR	ANGCAL_SPD		;回転角
		LDA	R0			;
		CLC				;
		ADC	#00080H			;
		AND	#001FEH			;
		STA	ENWRK8,X		;

		STZ	ENMUKI,X		;向きロック

		LDA	ENYSPD,X		;

ZBUB1_SET	EQU	$
		BPL	ZBUB1_SET0000

		EOR	#0FFFFH
		INC	A

ZBUB1_SET0000	EQU	$
		LSR	A			;(R11) <- 縦倍率セット
		CMP	#00080H			;
		BPL	ZBUB1_SET0100		;
						;
		LDA	#00080H			;
		BRA	ZBUB1_SET0200		;
						;
ZBUB1_SET0100	EQU	$			;
		CMP	#00200H			;
		BMI	ZBUB1_SET0200		;
						;
		LDA	#001FEH			;
						;
ZBUB1_SET0200	EQU	$			;
		STA	R11			;
		STA	CCWORK11

		LSR	A			;(R6) <- 横倍率セット
		LSR	A			;
		LSR	A			;
		STA	<EWORK0			;
		LDA	#00110H			;
		SEC				;
		SBC	<EWORK0			;
		STA	R6			;
		STA	CCWORK12		;

		LDA	ENWRK8,X		;(R5) <- 回転角セット
		LSR	A			;
		STA	R5			;

		LDA	#BANK CIPCHD2+00B0H+000 ;chara data bank set
		STA	R13
		LDA	#CIPCHD2+00B0H+000	;chara data address set
		STA	R12

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

		M_CHIP	C_32_RTZ_16_XY

		LDX	<ENINDX

		INC	OBM7WF			;mode 7 OBJ chara DMA "ON"

		LDY	<ENWRK2,X
		CPY	#001
		BNE	ZBUB1_SET0800

		LDA	CCWORK11		;倍率セット
		STA	<ENWRK0,X

ZBUB1_SET0800	EQU	$

		RTS
;
ZBUB1_SUB2	EQU	$
		TYX

		LDA	<ENWRK4,X
		SEC
		SBC	#000A0H
		STA	<ENWRK4,X		;

		JSR	ZBUB1_SET

		LDA	CCWORK11		;しっぽ消えた ?
		CMP	#00080H			;
		BNE	ZBUB1_SUB2800		;  no: ZBUB1_SUB2800

		LDA	CCWORK12		;横倍率セット
		STA	ENWRK8,X

		INC	<ENWRK2,X

ZBUB1_SUB2800	EQU	$

		RTS
;
ZBUB1_ANG	EQU	$
;			 [右]	[左]   [下]   [上]
		WORD	000C0H,00040H,00080H,00000H
;
ZBUB1_SUB3	EQU	$
		TYX

		LDA	ENWRK8,X		;(R6) <- 横倍率セット
		CLC				;
		ADC	#00020H			;
		CMP	#00154H			;
		BMI	ZBUB1_SUB3100		;
						;
		INC	<ENWRK2,X		;	;routine mode index inc.
						;
		LDA	#00154H			;
						;
ZBUB1_SUB3100	EQU	$			;
		STA	ENWRK8,X		;
		STA	R6			;
		LDA	#00200H			;(R11) <- 縦倍率セット
		SEC				;
		SBC	R6			;
		LSR	A			;
		STA	R11			;

		LDA	#BANK CIPCHD2+00B0H+000 ;chara data bank set
		STA	R13
		LDA	#CIPCHD2+00B0H+000	;chara data address set
		STA	R12

		LDY	<ENCONT,X
		LDA	!ZBUB1_ANG,Y
		STA	R5
		LDA	#00008H			;(R8) <- 中心Ｘ　ＰＯＳ．
		STA	R8			;
		LDA	#0000AH			;(R9) <- 中心Ｙ　ＰＯＳ．
		STA	R9			;

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

;		M_CHIP	C_32_ZOOM_XY_16
		M_CHIP	C_32_RTZ_16_XY

		LDX	<ENINDX

		INC	OBM7WF			;mode 7 OBJ chara DMA "ON"

		RTS
;
ZBUB1_SUB4	EQU	$
		TYX

		LDA	ENWRK8,X		;倍率計算
		SEC				;
		SBC	#00060H			;
		CMP	#00100H			;
		BPL	ZBUB1_SUB3100		;

		LDA	ENWRK6,X		;Ｘ　ＳＰＥＥＤセット
		LDY	<ENCONT,X		;
		CPY	#004			;
		BCS	ZBUB1_SUB4100		;
						;
		EOR	#0FFFFH			;
		INC	A			;
						;
ZBUB1_SUB4100	EQU	$			;
		STA	ENXSPD,X		;

		LDA	ENWRKA,X		;Ｙ　ＳＰＥＥＤセット
		CPY	#004			;
		BCC	ZBUB1_SUB4200		;
						;
		EOR	#0FFFFH			;
		INC	A			;
						;
ZBUB1_SUB4200	EQU	$			;
		STA	ENYSPD,X		;

		LDA	#00009H			;Ｇ　ＰＯＷＥＲセット
		STA	ENGPOW,X

		LDA	#00010H
		STA	<ENWRK4,X

		INC	<ENWRK2,X		;routine mode index inc.

		RTS
;
ZBUB1_SUB5	EQU	$
		TYX

		JSR	ANGCAL_SPD		;回転角
		LDA	R0			;
		CLC				;
		ADC	#00080H			;
		AND	#001FEH			;
		STA	ENWRK8,X		;

		STZ	ENMUKI,X		;向きロック

		LDA	<ENWRK4,X
		CLC
		ADC	#00060H
		STA	<ENWRK4,X
		JSR	ZBUB1_SET

		LDA	CCWORK11		;しっぽが元に戻った ?
		DEC	A			;
		CMP	<ENWRK0,X		;
		BMI	ZBUB1_SUB5800		;  no: ZBUB1_SUB5800

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

ZBUB1_SUB5800	EQU	$

		RTS
;
;************************************************************************
;*		initial ( わんわん )					*
;************************************************************************
WANG0IN		EQU	$			;-- wang0in --
		JSL	>TROBJ_SR_4x4_CL

		LDA	ENXPSL,X		;くさりの根本Ｘ　ＰＯＳ．セット
		CLC
		ADC	#00004
		STA	WANG00XP
		STA	WANG01XP
		STA	WANG02XP
		STA	WANG03XP
		STA	ENWRKA,X

		LDA	ENYPSL,X		;くさりの根本Ｙ　ＰＯＳ．セット
		CLC
		ADC	#00008H
		STA	WANG00YP
		STA	WANG01YP
		STA	WANG02YP
		STA	WANG03YP
		STA	ENWRKC,X

		LDA	#00100H			;初期倍率セット
		STA	ENWRK6,X		;

;;;;;;;;;		LDA	#00400H			;つなぎタイマーセット
;;;;;;;;;		STA	ENTIM3,X

		STZ	WANGFLAG		;わんわんフラグクリア

		JSR	WANG0_ROT_SET

		RTL
;
;************************************************************************
;*		move	( わんわん )					*
;************************************************************************
;		ENWRK0	キャラパターンフラグ
;		ENWRK2	ROUTINE MODE INDEX
;		ENWRK4	襲撃カウンター
;		ENWRK6	倍率
;		ENWRK8	回転角(SUB2)／ズームフラグ(SUB3)
;		ENWRKA	くさりの根元Ｘ　ＰＯＳ．
;		ENWRKC	くさりの根元Ｙ　ＰＯＳ．
;
;		ENCONT	バウンド回数(SUB1)／口ぱく待ちタイマー(SUB3)
;
;		ENTIM0	キャラパターンチェンジタイマー
;		ENTIM1	襲うタイマー
;		ENTIM2	サーチロックタイマー
;		ENTIM3	つなぎタイマー
;
WANG0_SUB	EQU	$
		WORD	WANG0_SUB0		;次の行動決定
		WORD	WANG0_SUB1		;さんぽさんぽ
		WORD	WANG0_SUB2		;襲う！
		WORD	WANG0_SUB3		;飛んでく
		WORD	WANG0_SUB4		;前に襲う！！
		WORD	WANG0_SUB5		;元に戻る（前に襲う！！）
WANG0_CHAR	EQU	$
		WORD	CIPCHD2+1080H+000	;横顔
		WORD	CIPCHD2+1090H+000
		WORD	CIPCHD2+10A0H+000
		WORD	CIPCHD2+1090H+000
;
		WORD	CIPCHD2+4000H+000	;正面顔
		WORD	CIPCHD2+4020H+000
		WORD	CIPCHD2+4040H+000
		WORD	CIPCHD2+4020H+000
;
WANG0_XSPD_REV	EQU	$
		WORD	00200H,0FE00H
;
WANG0MV		EQU	$			;-- wang0mv --
		LDY	ENMOD2+1,X		;３２ドット ?
		BPL	WANG0MV0010		; yes: WANG0MV0010

		JSL	>TROBJ_OAM_8H8
		LDA	#008*16
		BRA	WANG0MV0020

WANG0MV0010	EQU	$
		JSL	>TROBJ_OAM_4x4
		LDA	#008*4

WANG0MV0020	EQU	$
		STA	<EWORK8

		STZ	<EWORKA
		LDY	<ENWRK4,X		;襲撃する ?
		BEQ	WANG0MV0050		;  no: WANG0MV0050
		CPY	#002			;
		BPL	WANG0MV0050		;

		LDA	FRCNT2
		AND	#00004H
		BNE	WANG0MV0050

		LDA	#08000H
		STA	<EWORKA

WANG0MV0050	EQU	$
		PHX				;くさりの位置セット
		I16				;
		LDA	ENOAML,X		;
		CLC				;
		ADC	<EWORK8			;
		TAY				;
						;
		LDA	<ENWRK2,X		;	;ぷらぷらしてる ?
		CMP	#00002			;	;
		BMI	WANG0MV0090		;	; yes: WANG0MV0090
						;
		LDA	WANGBURE		;
		BEQ	WANG0MV0090		;
						;
		LDX	#006			;
WANG0MV0080	EQU	$			;
		LDA	<RANDM0			;
		PHA				;
		AND	#00001H			;
		CLC				;
		ADC	WANG00XP,X		;
		SEC				;
		SBC	ESCCH1			;
		STA	SOAM_DX+0,Y		;
		PLA				;
		PHA				;
		XBA				;
		AND	#00001H			;
		CLC				;
		ADC	WANG00YP,X		;
		SEC				;
		SBC	ESCCV1			;
		STA	SOAM_DX+2,Y		;
		TYA				;
		CLC				;
		ADC	#00008H			;
		TAY				;
						;
		PLA				;
		LSR	A			;
		STA	<RANDM0			;
						;
		DEX				;
		DEX				;
		BPL	WANG0MV0080		;
		BRA	WANG0MV0110		;
						;
WANG0MV0090	EQU	$			;
		LDX	#006			;
						;
WANG0MV0100	EQU	$			;
		LDA	WANG00XP,X		;
		SEC				;
		SBC	ESCCH1			;
		CLC				;
		ADC	<EWORKA			;
		STA	SOAM_DX+0,Y		;
		LDA	WANG00YP,X		;
		SEC				;
		SBC	ESCCV1			;
		STA	SOAM_DX+2,Y		;
		LDA	SOAM_DX+4,Y		;
		AND	#03FFFH			;
		STA	SOAM_DX+4,Y		;
		TYA				;
		CLC				;
		ADC	#00008H			;
		TAY				;
						;
		DEX				;
		DEX				;
		BPL	WANG0MV0100		;

WANG0MV0110	EQU	$
		I8
		PLX

		JSL	>ENMDCK

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

		JSR	WANG0_ROT_SET

		STZ	ENXPOW,X

		LDA	CCWORK1E		;くさりの伸び限界 ?
		STA	WANGFLAG		;
		BEQ	WANG0MV0700		;  no: WANG0MV0700

		LDA	#00010H
		STA	WANGBURE

		LDY	ENYSPD+1,X		;下に降りようとしてる ?
		BPL	WANG0MV0400		; yes: WANG0MV0400

		LDA	ENYPSL,X		;Ｙ　ＰＯＳ．補正
		SEC				;
		SBC	ENMOVY,X		;
		STA	ENYPSL,X		;

		STZ	ENYSPD,X		;Ｙ　ＳＰＥＥＤクリア

WANG0MV0400	EQU	$
		LDY	<ENWRK2,X		;襲ってる ?
		CPY	#002			;
		BPL	WANG0MV0600		; yes: WANG0MV0600

		LDA	ENCBFG,X		;地面に着いてる ?
		LSR	A			;
		BCS	WANG0MV0600		; yes: WANG0MV0600

		LDY	#000
		LDA	ENWRKA,X
		SEC
		SBC	#00004
		CMP	ENXPSL,X
		BPL	WANG0MV0500

		INY
		INY

WANG0MV0500	EQU	$
		LDA	!WANG0_XSPD_REV,Y
		STA	ENXMAX,X

		LDA	#00020H
		STA	ENXPOW,X
		BRA	WANG0MV0800

WANG0MV0600	EQU	$
		LDA	ENXPSL,X		;中に戻ろうとしてる ?
		SEC				;
		SBC	ENWRKA,X		;
		CLC				;
		ADC	#00004			;
		EOR	ENXSPD,X		;
		BMI	WANG0MV0700		; yes: WANG0MV0700

		LDA	ENXPSL,X		;Ｘ　ＰＯＳ．補正
		SEC				;
		SBC	ENMOVX,X		;
		STA	ENXPSL,X		;

		STZ	ENXSPD,X		;Ｘ　ＳＰＥＥＤクリア

WANG0MV0700	EQU	$
		LDA	WANGBURE
		BEQ	WANG0MV0800

		DEC	WANGBURE

WANG0MV0800	EQU	$
		LDY	<ENWRK2,X		;前に襲って来てる ?
		CPY	#004			;
		BMI	WANG0MV0900		;  no: WANG0MV0900

		RTL

WANG0MV0900	EQU	$
		JSL	>EPCRCK

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

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

		LDA	ENMOD2,Y
		LSR	A
		PHP

		LDA	ENXSPD,Y
		CMP	#08000H
		ROR	A
		CMP	#08000H
		ROR	A
		PLP				;１キャラ ?
		BCS	WANG0MV0908		;  no: WANG0MV0908

		CMP	#08000H
		ROR	A

WANG0MV0908	EQU	$
		CLC
		ADC	ENXSPD,X
		CMP	#00200H
		BMI	WANG0MV0910

		LDA	#00200H

WANG0MV0910	EQU	$
		CMP	#0FE00H
		BPL	WANG0MV0920

		LDA	#0FE00H

WANG0MV0920	EQU	$
		STA	ENXSPD,X

		LDA	#0FB00H
		STA	ENYSPD,X

		LDA	#00040H
		STA	ENGPOW,X

		TYX
		LDA	#00079H			;［Ｓ］
		JSL	>SOUND_3_ON
;
		JSL	>ENDEATH_SET_4

		LDA	#00001
		STA	<ENCONT,X
		LDY	#001
		STY	<ENWRK2,X

WANG0MV0A00	EQU	$

		RTL
;
WANG0_ROT_SET	EQU	$
		LDY	<ENWRK2,X		;横に襲ってきてる ?
		CPY	#002			;
		BNE	WANG0_R_SET0100		;  no: WANG0_R_SET0100

		LDA	ENXSPD,X		;動いてる ?
		BNE	WANG0_R_SET0080		; yes: WANG0_R_SET0080
						;
		LDA	ENCBFG,X		;	;地面に着いてる ?
		LSR	A			;	;
		BCS	WANG0_R_SET0200		;	; yes: WANG0_R_SET0200
						;
		LDA	ENYSPD,X		;
		BEQ	WANG0_R_SET0200		;  no: WANG0_R_SET0200

WANG0_R_SET0080 EQU	$
		JSR	ANGCAL_SPD
		BRA	WANG0_R_SET0200

WANG0_R_SET0100 EQU	$
		CPY	#004			;襲ってる ?
		BPL	WANG0_R_SET0200		; yes: WANG0_R_SET0200

		STZ	ENWRK8,X		;回転角固定

WANG0_R_SET0200 EQU	$
		LDY	#006

WANG0_R_SET0400 EQU	$
		LDA	WANG00XP,Y
		STA	CCWORK10,Y
		LDA	WANG00YP,Y
		STA	CCWORK14,Y

		DEY
		DEY
		BPL	WANG0_R_SET0400

		LDA	ENWRKC,X
		STA	R9
;
		LDA	ENWRKA,X
		STA	R8

		LDA	ENXPSL,X		;(R3) <- ワンワンのＸ半径
		STA	R1			;
		STA	R7			;
		SEC				;
		SBC	ENWRKA,X		;
		SEC				;
		SBC	#00004			;
		BPL	WANG0_R_SET0500		;
						;
		EOR	#0FFFFH			;
		INC	A			;
						;
WANG0_R_SET0500 EQU	$			;
		STA	R3			;

		LDA	ENYPSL,X		;(R4) <- ワンワンのＹ半径
		STA	R2			;
		SEC				;
		SBC	ENWRKC,X		;
		SEC				;
		SBC	#00008			;
		BPL	WANG0_R_SET0600		;
						;
		EOR	#0FFFFH			;
		INC	A			;
						;
WANG0_R_SET0600 EQU	$			;
		STA	R4			;
;
		LDA	#01000H			;(R5) <- ワンワンの行動半径(40H*40H)
		STA	R5			;

		XBA
;		LDA	#00010H			;(R11) <- くさりの範囲
		STA	R10			;

		LDA	ENCHPT,X		;CREG0 <- ＵＳＥ　ＡＲＥＡ　ＳＩＺＥセット
		STA	CREG0			;	（０．．３２　　１．．６４）

		LDA	<ENWRK2,X
		LSR	A
		DEC	A
		STA	CREG1

		LDA	ENWRK6,X		;CREG6 <- 倍率セット
		STA	CREG6

		LDA	ENWRK8,X		;CREG5 <- 回転角セット
		LSR	A			;
		STA	CREG5			;

		LDY	<ENWRK0,X
		LDA	#BANK CIPCHD2+10B0H+000 ;chara data bank set
		STA	CREG13
		LDA	!WANG0_CHAR,Y		;chara data address set
		STA	CREG12

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

		PLX
		LDY	<ENWRK2,X		;襲ってる ?
		CPY	#003
		BEQ	WANG0_R_SET0800

		CPY	#002			;
		BPL	WANG0_R_SET0900		; yes: WANG0_R_SET0900

		LDA	ENYPSL,X		;地面に着いてる ?
		CLC				;
		ADC	#00007H			;
		CMP	R9			;
		BMI	WANG0_R_SET0800		;  no: WANG0_R_SET0800

		LDY	WANGFLAG		;くさり伸びきってる ?
		BEQ	WANG0_R_SET0700		;  no: WANG0_R_SET0700

		M_CHIP	M_WANG0_SET3

		BRA	WANG0_R_SET0A00

WANG0_R_SET0700 EQU	$
;		STA	R9

		M_CHIP	M_WANG0_SET4

		BRA	WANG0_R_SET0A00

WANG0_R_SET0800 EQU	$
		M_CHIP	M_WANG0_SET

		BRA	WANG0_R_SET0A00

WANG0_R_SET0900 EQU	$
		M_CHIP	M_WANG0_SET2

WANG0_R_SET0A00 EQU	$
		LDX	<ENINDX

		INC	OBM7WF			;mode 7 OBJ chara DMA "ON"

		LDY	#006

WANG0_R_SET0B00 EQU	$
		LDA	CCWORK10,Y
		STA	WANG00XP,Y
		LDA	CCWORK14,Y
		STA	WANG00YP,Y

		DEY
		DEY
		BPL	WANG0_R_SET0B00

		RTS
;
WANG0_XSPD	EQU	$
		WORD	0FE80H,00180H
WANG0_XSPD2	EQU	$
		WORD	0FB00H,00500H
;
WANG0_SUB0	EQU	$
		TYX

		LDA	ENTIM2,X
		BEQ	WANG0_SUB0100

		LDA	ENCBFG,X		;地面に着いた ?
;;;;;;;;		AND	#00001H			;
;;;;;;;;		BEQ	WANG0_SUB0010		;  no: WANG0_SUB0010
		LSR	A			;
		BCC	WANG0_SUB0010		;  no: WANG0_SUB0010

		STZ	ENXSPD,X

WANG0_SUB0010	EQU	$
		JSR	WANG0_GAJI3

		RTS

WANG0_SUB0100	EQU	$
;		LDA	ENTIM3,X		;くさり切れる ?
;		BNE	WANG0_SUB0200		;  no: WANG0_SUB0200
;
;		LDA	<RANDM0
;		ORA	#00080H
;		BRA	WANG0_SUB0500
;
;WANG0_SUB0200	EQU	$
		LDA	EPWIDX,X		;プレイヤー近くに来た ?
		CLC				;
		ADC	#00040H			;
		CMP	#00080H			;
		BCC	WANG0_SUB0550		; yes: WANG0_SUB0550

		LDA	<RANDM0			;襲う ?
		BIT	#00003H			;
		BEQ	WANG0_SUB0500		; yes: WANG0_SUB0500

		PHA
		AND	#00003H			;バウンド回数セット
		INC	A			;
		STA	<ENCONT,X		;

		PLA
		XBA
		AND	#00002H
		STA	ENMUKI,X
		TAY
		LDA	!WANG0_XSPD,Y
		STA	ENXSPD,X

		LDA	#0FE00H
		STA	ENYSPD,X

		JMP	WANG0_SUB0800

WANG0_SUB0500	EQU	$
		XBA				;向きをかえて襲う ?
		BIT	#00003			;
		BEQ	WANG0_SUB0580		; yes: WANG0_SUB0580

WANG0_SUB0550	EQU	$
		LDY	EPXMUK,X		;プレイヤーに向かってくる
		BRA	WANG0_SUB0590		;

WANG0_SUB0580	EQU	$
		LDA	ENMUKI,X		;Ｘ　ＳＰＥＥＤセット
		EOR	#00002			;
		TAY				;
						;
WANG0_SUB0590	EQU	$			;
		LDA	!WANG0_XSPD2,Y		;
		STA	ENXSPD,X		;
		STA	WANGXDSV		;
		TYA
		STA	ENMUKI,X		;

		LDA	<RANDM0			;Ｙ　ＳＰＥＥＤセット
		PHP				;
		AND	#001FFH			;
		CLC				;
		ADC	#00300H			;
		EOR	#0FFFFH			;
		INC	A			;
		STA	ENYSPD,X		;

		PLP				;正面にくる ?
		BMI	WANG0_SUB0700		;  no: WANG0_SUB0700

		LDA	#00080H			;初期倍率セット
		STA	ENWRK6,X		;

		STZ	ENWRK8,X		;最大倍率インデックスセット

		LDA	#001FEH			;最大倍率セット
		STA	WANGZMRV		;

		LDA	#00050H			;口ぱく待ちタイマーセット
		STA	<ENCONT,X

		JSL	>TROBJ_CLEAR

		LDA	#00083H			;［Ｓ］
		JSL	>SOUND_3_ON

		JSL	>TROBJ_SR_8x4
		BCS	WANG0_SUB0600

		LDA	#00100H			;最大倍率セット
		STA	WANGZMRV		;

		JSL	>TROBJ_SR_4x4
		BRA	WANG0_SUB0680

WANG0_SUB0600	EQU	$
		INC	ENCHPT,X

		LDA	#1010000000000101B	;セット数１２ー＞２０
		STA	ENMOD2,X		;

WANG0_SUB0680	EQU	$
		LDA	#000A0H			;襲うタイマーセット
		STA	ENTIM1,X		;

		STZ	ENGPOW,X

		LDY	#004
		STY	<ENWRK2,X

		PLA				;直接ＲＴＬ
		RTL

WANG0_SUB0700	EQU	$
		LDA	#0007BH			;［Ｓ］
		JSL	>SOUND_3_ON

		LDA	#00060H			;襲うタイマーセット
		STA	ENTIM1,X		;

		STZ	ENGPOW,X

		INC	<ENWRK2,X

WANG0_SUB0800	EQU	$
		INC	<ENWRK2,X

WANG0_SUB0900	EQU	$

		RTS
;
WANG0_SUB1	EQU	$
		TYX

		LDY	WANGFLAG		;くさり伸び切った?
		BNE	WANG0_SUB1100		; yes: WANG0_SUB1100

		LDA	ENCBFG,X		;地面についた ?
		LSR	A			;
		BCC	WANG0_SUB1800		;  no: WANG0_SUB1800

		LDA	#00026H			;［Ｓ］
		JSL	>SOUND_3_ON

		DEC	<ENCONT,X		;バウンド終わり ?
		BNE	WANG0_SUB1500		;  no: WANG0_SUB1500

WANG0_SUB1100	EQU	$
		STZ	ENXSPD,X		;Ｘ　ＳＰＥＥＤクリア ?

		LDA	#00020H
		STA	ENTIM2,X

		DEC	<ENWRK2,X		;routine mode index dec.

		RTS

WANG0_SUB1500	EQU	$
		LDA	#0FE00H			;Ｙ　ＳＰＥＥＤセット ?
		STA	ENYSPD,X		;

WANG0_SUB1800	EQU	$
		JSR	WANG0_GAJI

		RTS
;
WANG0_SUB2	EQU	$
		TYX

		LDA	ENTIM1,X		;
		BNE	WANG0_SUB2700		;

;		LDY	<ENWRK4,X		;くさり切れる ?
;		BEQ	WANG0_SUB2500		;  no: WANG0_SUB2500
;
;		INC	<ENWRK4,X
;
;		LDA	ENWRK8,X
;		STA	R1
;		LDA	#00200H
;		STA	R6
;
;		M_CHIP	M_ENMY_1P_ROT
;
;		LDX	<ENINDX
;		LDA	R0
;		LDY	ENMUKI,X
;		BNE	WANG0_SUB2000
;
;		EOR	#0FFFFH
;		INC	A
;
;WANG0_SUB2000	EQU	$
;		STA	ENXSPD,X
;		LDA	R1
;		EOR	#0FFFFH
;		INC	A
;		STA	ENYSPD,X
;
;		INC	<ENWRK2,X			;ROUTINE MODE INDEX SET
;
;		RTS
;
;WANG0_SUB2500	EQU	$
		STZ	<ENWRK2,X

		STZ	ENXSPD,X
		STZ	ENYSPD,X
		LDA	#00020H
		STA	ENTIM2,X
		ASL	A
		STA	ENGPOW,X

		RTS

WANG0_SUB2700	EQU	$
		LDA	ENXSPD,X		;くさり伸び切った ?
		BNE	WANG0_SUB2780		;  no: WANG0_SUB2780
						;
		LDA	ENCBFG,X		;	;地面に着いてる ?
		LSR	A			;	;
		BCS	WANG0_SUB2800		;	; yes: WANG0_SUB2800
						;
		LDA	ENYSPD,X		;
		BEQ	WANG0_SUB2800		; yes: WANG0_SUB2800

WANG0_SUB2780	EQU	$
		LDY	#004			;キャラパターン固定
		STY	<ENWRK0,X		;

		RTS

WANG0_SUB2800	EQU	$
;		LDA	ENTIM3,X		;くさり切れる ?
;		ORA	<ENWRK4,X		;
;		BNE	WANG0_GAJI		;  no: WANG0_GAJI
;
;		INC	<ENWRK4,X

		BRA	WANG0_GAJI
;
;
WANG0_GAJI3	EQU	$
		LDA	#00008
		STA	<EWORK0

		LSR	A
;		LDA	#00004
		BRA	WANG0_GAJI0200

WANG0_GAJI2	EQU	$
		LDA	#00010H
		BRA	WANG0_GAJI0100

WANG0_GAJI	EQU	$
		LDA	#00008

WANG0_GAJI0100	EQU	$
		STA	<EWORK0

		LDA	#00002

WANG0_GAJI0200	EQU	$
		STA	<EWORK2

		LDA	ENTIM0,X
		BNE	WANG0_GAJI0400

		LDA	<EWORK2
		STA	ENTIM0,X

		LDA	<ENWRK0,X
		INC	A
		INC	A
		CMP	<EWORK0
		BCC	WANG0_GAJI0300

		LSR	A
		AND	#0FFF8H

WANG0_GAJI0300	EQU	$
		STA	<ENWRK0,X
		CMP	#00008
		BNE	WANG0_GAJI0400

		LDA	#00064H			;［Ｓ］
		JSL	>SOUND_3_ON

WANG0_GAJI0400	EQU	$

		RTS
;
WANG0_SUB3	EQU	$
		TYX

		LDA	ENWRKA,X
		CLC
		ADC	ENMOVX,X
		STA	ENWRKA,X
		LDA	ENWRKC,X
		CLC
		ADC	ENMOVY,X
		STA	ENWRKC,X

		BRA	WANG0_GAJI
;
WANG0_ZOOM	EQU	$
		WORD	0001CH,0002CH
WANG0_XSPD_RV	EQU	$
		WORD	00180H,0FE80H
WANG0_ZOOM_MAX	EQU	$			;がちょぉぉぉぉん
;		WORD	00100H,00150H,00100H,00130H,00100H,00110H,00100H,00100H
;		WORD	00080H,000D0H,00080H,000B0H,00080H,000A0H,00080H,00080H
		WORD	00100H,000C4H,00100H,000D8H,00100H,000F0H,00100H,00100H
		WORD	001FEH,0013CH,001FEH,00174H,001FEH,0019AH,001FEH,001FEH
;
WANG0_SUB4	EQU	$
		TYX

		LDA	ENTIM1,X		;襲うのおわり ?
		BNE	WANG0_SUB4100		;  no: WANG0_SUB4100

		LDA	#00040H			;Ｇ　ＰＯＷＥＲセット
		STA	ENGPOW,X		;

		LDY	#000
		LDA	WANGXDSV		;Ｘ　ＳＰＥＥＤセット
		BMI	WANG0_SUB4080		;
						;
		INY				;
		INY				;
						;
WANG0_SUB4080	EQU	$			;
		LDA	!WANG0_XSPD_RV,Y	;
		STA	ENXSPD,X		;

		INC	<ENWRK2,X		;routine mode index inc.

		RTS

WANG0_SUB4100	EQU	$
		LDA	ENMOD2,X
		AND	#1000000000000000B
		XBA
		ASL	A
		ASL	A
		XBA
		TAY

		LDA	ENWRK8,X		;拡大してる ?
		AND	#00002
		BEQ	WANG0_SUB4110		; yes: WANG0_SUB4110

		LDA	ENWRK6,X
		SEC
		SBC	!WANG0_ZOOM,Y
		STA	ENWRK6,X
		CMP	WANGZMRV
		BPL	WANG0_SUB4180
		BRA	WANG0_SUB4120

WANG0_SUB4110	EQU	$
		LDA	ENWRK6,X
		CLC
		ADC	!WANG0_ZOOM,Y
		STA	ENWRK6,X
		DEC	A
		CMP	WANGZMRV
		BMI	WANG0_SUB4180

WANG0_SUB4120	EQU	$
		LDA	WANGZMRV
		STA	ENWRK6,X

		STZ	ENXSPD,X		;Ｘ　ＳＰＥＥＤクリア
		STZ	ENYSPD,X		;Ｙ　ＳＰＥＥＤクリア

		LDA	ENWRK8,X		;ズームフラグ反転
		INC	A
		INC	A
		CMP	#00010H
		BMI	WANG0_SUB4130

		LDA	#0000EH

WANG0_SUB4130	EQU	$
		STA	ENWRK8,X

		LDA	ENMOD2,X
		AND	#1000000000000000B
		XBA
		LSR	A
		LSR	A
		LSR	A
		STA	<EWORK0
		CLC
		ADC	ENWRK8,X
		TAY
		LDA	!WANG0_ZOOM_MAX,Y
		STA	WANGZMRV

		LDY	<EWORK0
		LDA	!WANG0_ZOOM_MAX,Y
		CMP	ENWRK6,X
		BNE	WANG0_SUB4180

		LDA	#00010H
		STA	WANGBURE

WANG0_SUB4180	EQU	$
		LDA	<ENCONT,X
		BNE	WANG0_SUB4300

		JMP	WANG0_GAJI2
;
WANG0_SUB4300	EQU	$
		LDY	#00CH			;キャラパターン固定
		STY	<ENWRK0,X		;

		LDA	ENXSPD,X
		ORA	ENYSPD,X
		BNE	WANG0_SUB4800

		LDA	<ENCONT,X
		BEQ	WANG0_SUB4800

		DEC	<ENCONT,X

WANG0_SUB4800	EQU	$

		RTS
;
WANG0_ZOOM2	EQU	$
		WORD	00006H,00008H
;
WANG0_SUB5	EQU	$
		TYX

		LDA	ENCBFG,X		;地面に着いた ?
		AND	#00001H			;
		BEQ	WANG0_SUB5010		;  o: WANG0_SUB5010

		STZ	ENXSPD,X

WANG0_SUB5010	EQU	$
		LDY	#008			;キャラパターン固定
		STY	<ENWRK0,X		;

		LDA	ENMOD2,X
		AND	#1000000000000000B
		XBA
		ASL	A
		ASL	A
		XBA
		TAY

		LDA	ENWRK6,X		;倍率計算
		SEC				;
		SBC	!WANG0_ZOOM2,Y		;
		CMP	#00080H			;
		BPL	WANG0_SUB5800		;

		LDA	#00020H
		STA	ENTIM2,X

		LDY	ENMOD2+1,X		;３２ドット ?
		BPL	WANG0_SUB5100		; yes: WANG0_SUB5100

		JSL	>TROBJ_CLEAR

		JSL	>TROBJ_SR_4x4

		DEC	ENCHPT,X

		LDA	#0100000000000101B	;セット数２０ー＞８
		STA	ENMOD2,X		;

		STZ	ENWRK8,X		;初期回転角セット

		STZ	<ENWRK0,X		;キャラパターン固定

		STZ	<ENWRK2,X		;routine mode index clear

		LDA	#00100H			;初期倍率セット
		STA	ENWRK6,X		;

		PLA

		RTL

WANG0_SUB5100	EQU	$
		STZ	<ENWRK0,X		;キャラパターン固定

		STZ	<ENWRK2,X		;routine mode index clear

		LDA	#00100H

WANG0_SUB5800	EQU	$
		STA	ENWRK6,X

		RTS
;
;************************************************************************
;*		initial ( おさるさるさる )				*
;************************************************************************
OSARUIN		EQU	$			;-- osaruin --
		JSL	>TROBJ_SR_4x4_CL

		LDA	ENTROB,X
		STA	<ENWRK0,X

		JSL	>TROBJ_SR_4x4_CL

		LDA	#0FE40H			;さるの最大回転速度セット
		STA	ENXMAX,X		;
		STA	ENGMAX,X		;
		LDA	#08000H
		STA	ENWRK6,X
		STA	ENWRK8,X

		LDA	#00018H			;一番外のさるの回転ストップタイマーセット
		STA	ENTIM3,X		;

;		LDA	ENXPSL,X
;		AND	#00010H
;		STA	<ENWRK2,X
;
		JSR	OSARU_ROT_SET

		RTL
;
;************************************************************************
;*		move	( おさるさるさる )				*
;************************************************************************
;		ENWRK0	もう一つの ENTROB
;		ENWRK2	おさる動いてるフラグ
;		ENWRK4
;		ENWRK6	一番中のさるの回転角
;		ENWRK8	一番外のさるの回転角
;		ENWRKA	一番中のさるの回転速度
;		ENWRKC	一番外のさるの回転速度
;
;		ENXMAX	一番中のさるの最大回転速度
;		ENXMAX	一番外のさるの最大回転速度
;
;		ENTIM0
;		ENTIM1
;		ENTIM3	一番外のさるの回転ストップタイマー
;
OSARUMV		EQU	$			;-- osarumv --
;		ldy	#004
;		sty	2100h
;
		JSR	OSARU_OAM_SET

		LDA	ENMODE,X
		CMP	#ECHNG
		BNE	OSARUMV0080

		LDA	ENTROB,X
		BMI	OSARUMV0040

		JSL	>TROBJ_CLEAR

OSARUMV0040	EQU	$
		LDA	<ENWRK0,X
		STA	ENTROB,X
		JSL	>TROBJ_CLEAR

OSARUMV0080	EQU	$
		JSL	>ENMDCK

;		LDY	<ENWRK2,X		;おさる動いてる ?
;		BEQ	OSARUMV0100		; yes: OSARUMV0100
;
;		LDA	ECENTX,X		;おさる範囲内 ?
;		SEC				;
;		SBC	PCENTX			;
;		CLC				;
;		ADC	#00050H			;
;		CMP	#000A0H			;
;		BCS	OSARUMV0800		;  no: OSARUMV0800
;
;		STZ	<ENWRK2,X
;
;OSARUMV0100	EQU	$
		JSR	OSARU_DSP_CHK

		JSR	OSARU_BABY_CHK

		JSR	OSARU_ANG_CALC

		JSR	OSARU_ROT_SET
;
;		ldy	#00fh
;		sty	2100h
;
OSARUMV0800	EQU	$

		RTL
;
OSARU_O_XPOS	EQU	$
		WORD	0FFF0H,00010H
OSARU_O_XADD	EQU	$-2
		WORD	0FFF0H
;
OSARU_OAM_SET	EQU	$
		LDY	ENWRK6+1,X
		TYA
		ASL	A
		STA	R1
		STA	R7
		LDY	ENWRK8+1,X
		TYA
		ASL	A
		STA	R5
		LDA	ENWRK8,X
		SEC
		SBC	ENWRK6,X
		XBA
		TAY
		TYA
		CPY	#000
		BPL	OSARU_O_SET0100

		ORA	#0FF00H

OSARU_O_SET0100 EQU	$
		ASL	A
		STA	R0

;		SEC
;		SBC	R1
;		STA	R0
;		CLC
;		ADC	#00080H
;		CMP	#00100H
;		BCC	OSARU_O_SET0100
;
;		LDA	R0
;		CLC
;		ADC	#00200H
;		STA	R0
;
;OSARU_O_SET0100	EQU	$
		LDA	ENMUKI,X
		STA	R8
		M_CHIP	OSARU_POS_CALC
		LDX	<ENINDX

		JSL	>TROBJ_OAM_4x4
		I16
		LDA	ENOAML,X
		CLC
		ADC	#008*4
		PHA
		TAY
		JSL	>TROBJ_OAM_4x4_I
		IDX8
		LDA	ENTROB,X
		STA	<EWORK0
		LDA	<ENWRK0,X
		STA	ENTROB,X
		I16
		PLA
		CLC
		ADC	#008*4
		PHA
		TAY
		JSL	>TROBJ_OAM_4x4_I
		IDX8
		I16
		PLA
		CLC
		ADC	#008*4
		TAY
		JSL	>TROBJ_OAM_4x4_I
		IDX8
		LDA	<EWORK0
		STA	ENTROB,X

		LDA	ENDSXL,X
		CLC
		ADC	#00008
		LDY	ENMUKI,X
		CLC
		ADC	!OSARU_O_XPOS,Y
		STA	<EWORK0
		LDA	!OSARU_O_XADD,Y
		STA	<EWORK2
		LDA	ENDSYL,X
		SEC
		SBC	#00008
		STA	<EWORK4

		LDA	#CCWORK10
		STA	<EWORK6

		LDA	#00004
		STA	<EWORKA
		I16
		LDY	ENOAML,X

OSARU_O_SET0300 EQU	$
		LDA	(EWORK6)
		CLC
		ADC	<EWORK0
		STA	SOAM_DX+0+8*0,Y
		STA	SOAM_DX+0+8*2,Y
		CLC
		ADC	<EWORK2
		STA	SOAM_DX+0+8*1,Y
		STA	SOAM_DX+0+8*3,Y

		INC	<EWORK6
		INC	<EWORK6
		LDA	(EWORK6)
		CLC
		ADC	<EWORK4
		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

		DEC	<EWORKA
		BEQ	OSARU_O_SET0500

		INC	<EWORK6
		INC	<EWORK6

		TYA
		CLC
		ADC	#008*4
		TAY
		BRA	OSARU_O_SET0300

OSARU_O_SET0500 EQU	$
		I8

OSARU_D_CHK0000 EQU	$
		RTS
;
OSARU_DSP_CHK	EQU	$
		JSL	>DISPCK1		;画面外 ?
		BCC	OSARU_D_CHK0000		;  no: OSARU_D_CHK0000

		LDA	<ENWRK0,X
		STA	ENTROB,X

		PLA				;直接ＲＴＬ
		JMP	>TROBJ_CLEAR
;
OSARU_BABY_CHK	EQU	$
		LDY	#004*(4-1)

		LDA	BABYNO			;他のどろぼうにとられてる ?
		BIT	#06000H			;
		BNE	OSARU_D_CHK0000		; yes: OSARU_D_CHK0000

		LDY	DEATHCT0		;死神に捕まった ?
		BNE	OSARU_D_CHK0000		; yes: OSARU_D_CHK0000

		AND	#08000H
		BEQ	OSARU_B_CHK1000

OSARU_B_CHK0100 EQU	$
		LDA	EPWIDX,X
		CLC
		ADC	CCWORK10,Y
		CLC
		ADC	#00010H
		CMP	#00020H
		BCS	OSARU_B_CHK0500

		LDA	EPWIDY,X
		CLC
		ADC	CCWORK10+2,Y
		CLC
		ADC	#00010H
		CMP	#00020H
		BCC	OSARU_B_CHK2000

OSARU_B_CHK0500 EQU	$
		TYA
		SEC
		SBC	#00004
		TAY
		BPL	OSARU_B_CHK0100

OSARU_B_CHK1000 EQU	$
		LDA	ECENTX,X
		SEC
		SBC	ECENTX+BABY_INDEX
		STA	<EWORK0
		LDA	ECENTY,X
		SEC
		SBC	ECENTY+BABY_INDEX
		STA	<EWORK2

		LDY	#004*(4-1)

OSARU_B_CHK1100 EQU	$
		LDA	<EWORK0
		CLC
		ADC	CCWORK10,Y
		CLC
		ADC	#00010H
		CMP	#00020H
		BCS	OSARU_B_CHK1500

		LDA	<EWORK2
		CLC
		ADC	CCWORK10+2,Y
		CLC
		ADC	#00010H
		CMP	#00020H
		BCC	OSARU_B_CHK2000

OSARU_B_CHK1500 EQU	$
		TYA
		SEC
		SBC	#00004
		TAY
		BPL	OSARU_B_CHK1100

		RTS
;
OSARU_B_CHK2000 EQU	$
		STY	<EWORK0

		LDA	CCWORK10,Y
		STA	<EWORK2
		LDA	CCWORK11,Y
		STA	<EWORK4

		CPY	#004*2
		BMI	OSARU_B_CHK2100

		INX
		INX

OSARU_B_CHK2100 EQU	$
		LDA	#00040H
		LDY	ENWRKA+1,X
		BPL	OSARU_B_CHK2200

		LDA	#0FFC0H

OSARU_B_CHK2200 EQU	$
		CLC
		ADC	ENWRK6+1,X
		AND	#000FFH
		ASL	A
		STA	R1
		LDA	#0FC00H
		STA	R6
		M_CHIP	M_ENMY_1P_ROT
		LDX	<ENINDX
		LDY	ENMUKI,X
		BEQ	OSARU_B_CHK2300

		LDA	R0
		EOR	#0FFFFH
		INC	A
		STA	R0

OSARU_B_CHK2300 EQU	$
		LDA	#MONK3
		JSL	>ENINSR
		BCC	OSARU_B_CHK3000

		LDA	ENXPSL,X
		CLC
		ADC	<EWORK2
		STA	ENXPSL,Y
		LDA	ENYPSL,X
		CLC
		ADC	<EWORK4
		STA	ENYPSL,Y

		LDA	R0
		STA	ENXSPD,Y
		LDA	R1
		STA	ENYSPD,Y

		LDA	#MKY_OKAJ
		STA	ENWRKA,Y

		TYX
		JSL	>MKY_BABY_GET
		LDX	<ENINDX

		LDY	#004*(4-1)

OSARU_B_CHK2500 EQU	$
		STY	<EWORK6
		CPY	<EWORK0
		BEQ	OSARU_B_CHK2700

		LDA	CCWORK10,Y
		STA	<EWORK2
		LDA	CCWORK11,Y
		STA	<EWORK4

		LDA	#MONK0
		JSL	>ENINSR_I
		BCC	OSARU_B_CHK3000

		LDA	ENXPSL,X
		CLC
		ADC	<EWORK2
		STA	ENXPSL,Y
		LDA	ENYPSL,X
		CLC
		ADC	<EWORK4
		STA	ENYPSL,Y

		LDA	#00001
		STA	ENWRKA,Y

OSARU_B_CHK2700 EQU	$
		LDY	<EWORK6
		TYA
		SEC
		SBC	#00004
		TAY
		BPL	OSARU_B_CHK2500

		JSL	>TROBJ_CLEAR
		LDA	<ENWRK0,X
		STA	ENTROB,X
		PLA				;直接ＲＴＬ
		JMP	>ENCLEAR_NORETN

OSARU_B_CHK3000 EQU	$

		RTS
;
OSARU_ANG_POW	EQU	$
		WORD	0FFFAH,00006H
;
OSARU_ANG_CALC	EQU	$
		LDY	#000
		LDA	ENWRKA,X
		SEC
		SBC	ENXMAX,X
		BEQ	OSARU_A_C1000
		STA	<EWORK0
		BPL	OSARU_A_C0500

		INY
		INY

OSARU_A_C0500	EQU	$
		LDA	ENWRKA,X
		CLC
		ADC	!OSARU_ANG_POW,Y
		STA	ENWRKA,X
		SEC
		SBC	ENXMAX,X
		EOR	<EWORK0
		BPL	OSARU_A_C1000

		LDA	ENXMAX,X
		STA	ENWRKA,X

OSARU_A_C1000	EQU	$
		LDY	ENWRK6+1,X
		TYA
		SEC
		SBC	#00040H
		STA	<EWORK0
		LDA	ENWRK6,X
		CLC
		ADC	ENWRKA,X
		STA	ENWRK6,X
		XBA
		AND	#000FFH
		SEC
		SBC	#00040H
		EOR	<EWORK0
		BPL	OSARU_A_C1800

		LDA	<EWORK0
		CLC
		ADC	#00010H
		CMP	#00020H
		BCS	OSARU_A_C1800

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

OSARU_A_C1800	EQU	$
		LDA	ENTIM3,X
		BNE	OSARU_A_C2800

		LDY	#000
		LDA	ENWRKC,X
		SEC
		SBC	ENGMAX,X
		BEQ	OSARU_A_C2100
		STA	<EWORK0
		BPL	OSARU_A_C2000

		INY
		INY

OSARU_A_C2000	EQU	$
		LDA	ENWRKC,X
		CLC
		ADC	!OSARU_ANG_POW,Y
		STA	ENWRKC,X
		SEC
		SBC	ENGMAX,X
		EOR	<EWORK0
		BPL	OSARU_A_C2100

		LDA	ENGMAX,X
		STA	ENWRKC,X

OSARU_A_C2100	EQU	$
		LDY	ENWRK8+1,X
		TYA
		SEC
		SBC	#00040H
		STA	<EWORK0
		LDA	ENWRK8,X
		CLC
		ADC	ENWRKC,X
		STA	ENWRK8,X
		XBA
		AND	#000FFH
		SEC
		SBC	#00040H
		EOR	<EWORK0
		BPL	OSARU_A_C2200

		LDA	<EWORK0
		CLC
		ADC	#00010H
		CMP	#00020H
		BCS	OSARU_A_C2200

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

OSARU_A_C2200	EQU	$
;		LDA	ENXPSL,X		;ぶらぶらタイプ ?
;		AND	#00010H			;
;		BEQ	OSARU_A_C2800		; yes: OSARU_A_C2800
;
;		LDY	ENWRKA+1,X
;		BMI	OSARU_A_C2300
;
;		STZ	ENWRKA,X
;		STZ	ENXMAX,X
;
;OSARU_A_C2300	EQU	$
;		LDY	ENWRKC+1,X
;		BMI	OSARU_A_C2800
;
;		STZ	ENWRKC,X
;		STZ	ENGMAX,X
;
OSARU_A_C2800	EQU	$

		RTS
;
OSARU_ROT_SET	EQU	$
		LDA	#CIPCHD2+4060H+000	;(R12) <-- 転送元アドレスセット
		STA	R12			;
		LDA	#BANK CIPCHD2+4060H+000 ;(R13) <-- 転送元バンクセット
		STA	R13			;

		LDA	ENWRK8,X		;(R5) <- 回転角セット
		SEC
		SBC	ENWRK6,X
		BPL	OSARU_R_SET0100

		LDA	#00000

OSARU_R_SET0100 EQU	$
		STA	<EWORK6
		LSR	A
		STA	<EWORK4

		LDA	ENWRK8,X
		CLC
		ADC	ENWRK6,X
		LSR	A
		CLC
		ADC	<EWORK4
		XBA
		AND	#000FFH
		STA	R5

OSARU_R_SET_T1	EQU	$
		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
		LDA	#CIPCHD2+4060H+000	;(R12) <-- 転送元アドレスセット
		STA	R12			;
		LDA	#BANK CIPCHD2+4060H+000 ;(R13) <-- 転送元バンクセット
		STA	R13			;

		LDA	ENWRK8,X		;(R5) <- 回転角セット
		CLC				;
		ADC	<EWORK6			;
		XBA
		AND	#000FFH
		STA	R5			;

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

		LDY	<ENWRK0,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
;
;************************************************************************
;*		initial ( ? block6 )					*
;************************************************************************
HBLK6IN		EQU	$			;-- hblk6in --
		JSL	>TROBJ_SR_4x4_CL

		LDA	ENYPSL,X		;Ｙ　ＰＯＳ．セーブ
		STA	<ENWRK4,X		;

		LDA	#00100H			;初期倍率セット
		STA	ENWRK6,X		;

		STZ	ENMUKI,X

		JSR	HBLK6_ROT_SET

		RTL
;
;************************************************************************
;*		move	( ? block6 )					*
;************************************************************************
;		ENWRK0	ＢＧチェックフラグ
;		ENWRK2	ROUTINE MODE INDEX
;		ENWRK4	ジャンプエンドＹ　ＰＯＳ．
;		ENWRK6	倍率
;
HBLK6_SUB	EQU	$
		WORD	DUMMY_SUB	;だみー
		WORD	HBLK6_SUB1	;ずーむ　あっぷ　＆　上昇
		WORD	HBLK6_SUB2	;うぇいと
		WORD	HBLK6_SUB3	;ずーむ　だうん
;
HBLK6MV		EQU	$			;-- hblk6mv --
		JSL	>TROBJ_OAM_4x4

		JSL	>ENMDCK

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

		TROBJ_CHK_4
		BNE	HBLK6MV0200

		JSR	HBLK6_ROT_SET

HBLK6MV0200	EQU	$
		LDA	<ENWRK2,X
		PHA
		LDA	#00700H			;
		STA	R0			;(R0) <- 横チェック半径 * 100Hセット
		LDA	#00800H
		STA	R1			;(R1) <- 縦チェック半径 * 100Hセット

		LDA	#0000AH			;内当たり幅セット
		STA	<EWORKA

		STZ	<EWORK2			;接触フラグクリア

		LDY	#001			;
		STY	<EWORK9
		STY	<EWORK6			;ブロックフラグセット
		DEY				;Yreg <- 半当たりチェックフラグセット
		STZ	R3			;(R3) <- 縦方向補正値セット

		LDA	ENWRK6,X		;Areg <- 縦倍率セット
		STA	R6			;(R6) <- 横倍率セット

		JSL	>ZOOM_PLCHK
		PLA
		CMP	<ENWRK2,X
		BEQ	HBLK6MV0800

		LDA	#00015H			;［Ｓ］
		JSL	>SOUND_3_ON

HBLK6MV0800	EQU	$

		RTL
;
HBLK6_ROT_SET	EQU	$
		LDA	ENWRK6,X		;(R6) <- Ｘ倍率セット
		STA	R6			;
		STA	R11

		LDA	#BANK CIPCHD+7040H+000	;chara data bank set
		STA	R13
		LDA	#CIPCHD+7040H+000	;chara data address set
		STA	R12

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

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

		M_CHIP	C_32_ZOOM_XY_16

		LDX	<ENINDX

		INC	OBM7WF			;mode 7 OBJ chara DMA "ON"

		RTS
;
HBLK6_SUB1	EQU	$
		TYX

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

		LDA	ENCBFG,X		;下は地面 ?
		AND	#00003H			;
		BEQ	HBLK6_SUB1100		;  no: HBLK6_SUB1200

		INC	<ENWRK0,X
		BRA	HBLK6_SUB1200

HBLK6_SUB1100	EQU	$
		LDA	<ENWRK4,X		;元の位置に戻る ?
		CMP	ENYPSL,X		;
		BPL	HBLK6_SUB1500		;  no: HBLK6_SUB1500
						;
		STA	ENYPSL,X		;

HBLK6_SUB1200	EQU	$
		STZ	ENYSPD,X		;Ｙ　ＳＰＥＥＤクリア
		STZ	ENGPOW,X		;Ｇ　ＰＯＷＥＲクリア

		INC	<ENWRK2,X		;routine mode index inc.

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

HBLK6_SUB1500	EQU	$
		JSR	HBLK6_BIG

		RTS
;
HBLK6_SUB2	EQU	$
		TYX

		LDA	<ENWRK0,X		;ＢＧにひっかかって止まった ?
		BEQ	HBLK6_SUB2100		;  no: HBLK6_SUB2100

		LDA	ENCBFG,X		;下にＢＧがある ?
		AND	#00003			;
		BEQ	HBLK6_SUB2200		;  no: HBLK6_SUB2200

HBLK6_SUB2100	EQU	$
		LDA	ENTIM0,X		;ストップ ?
		BNE	HBLK6_BIG		; yes: HBLK6_BIG

HBLK6_SUB2200	EQU	$
		LDA	#00040H			;Ｇ　ＰＯＷＥＲセット
		STA	ENGPOW,X		;

		INC	<ENWRK2,X		;routine mode index inc.

HBLK6_BIG	EQU	$
		LDA	ENWRK6,X
		CLC
		ADC	#00010H
		CMP	#00200H
		BMI	HBLK6_BIG0100

		LDA	#001FFH

HBLK6_BIG0100	EQU	$
		STA	ENWRK6,X

		RTS
;
HBLK6_SUB3	EQU	$
		TYX

		LDA	<ENWRK4,X
		INC	A
		CMP	ENYPSL,X
		BPL	HBLK6_SUB3100

		DEC	A
		STA	ENYPSL,X

		STZ	ENYSPD,X
		STZ	ENGPOW,X

HBLK6_SUB3100	EQU	$
		LDA	ENWRK6,X
		SEC
		SBC	#00018H
		CMP	#00100H
		BPL	HBLK6_SUB3800

		LDA	#00100H

		LDY	ENGPOW,X
		BNE	HBLK6_SUB3800

		STZ	<ENWRK2,X

HBLK6_SUB3800	EQU	$
		STA	ENWRK6,X

		RTS
;
;********************************************************************************
;*		(R0)	横チェック半径 * 100H					*
;*		(R1)	縦チェック半径 * 100H					*
;*		(R3)	縦方向固定補正値 / 2					*
;*		(R6)	横倍率							*
;*		Areg	縦倍率							*
;*		Yreg	半当たりチェックフラグ					*
;*		EWORK2	接触フラグ  0...NORMAL other...ALL CASE CHECK		*
;*		EWORK9	中心計算用フラグ					*
;*		EWORKA	内当たり幅						*
;********************************************************************************
ZOOM_PLCHK	EQU	$
		STA	R9			;縦倍率セット
		STY	<EWORK8			;半当たりチェックフラグセット

		LDA	PWIDEX
		STA	R7
		LDA	PWIDEY
		STA	R8

		M_CHIP	M_ZOOM_PLCHK

		LDX	<ENINDX

		STZ	<EWORK4

		LDA	ENXPSL,X		;プレイヤーと横衝突した ?
		CLC				;
		ADC	#00008H			;
		SEC				;
		SBC	PCENTX			;
		STA	<EWORKC			;
		CLC				;
		ADC	CCWORK1E		;
		CMP	CCWORK1C		;
		BCC	ZOOM_PLCHK0000		; yes: ZOOM_PLCHK0000

		RTL

ZOOM_PLCHK0000	EQU	$
		LDA	#00008			;中心計算
		LDY	<EWORK9			;
		BEQ	ZOOM_PLCHK0040		;

		CPY	#001
		BNE	ZOOM_PLCHK0010

		LDA	#00010H			;中心 = Y POS. + 10H - ZOOM_Y - KOTEI/2
		SEC				;
		SBC	CCWORK1B		;
		SEC
		SBC	R3
		BRA	ZOOM_PLCHK0040

ZOOM_PLCHK0010	EQU	$
		LDA	#0FFF0H			;中心 = Y POS. - 10H + ZOOM_Y - KOTEI/2
		CLC
		ADC	CCWORK1B
		SEC
		SBC	R3

ZOOM_PLCHK0040	EQU	$
		CLC
		ADC	ENYPSL,X		;プレイヤーと縦衝突した ?
		SEC				;
		SBC	PCENTY			;
		SEC				;
		SBC	PLFTLN			;
		STA	<EWORKE			;
		CLC				;
		ADC	CCWORK1F		;
		CMP	CCWORK1D		;
		BCS	ZOOM_PLCHK0090		;  no: ZOOM_PLCHK0090

		LDA	CCWORK1F
		SEC
		SBC	<EWORKA
		STA	<EWORK0

		LDA	<EWORKE			;プレイヤー上からあたった ?
		BPL	ZOOM_PLCHK0050		; yes: ZOOM_PLCHK0050

		PHA
		LDA	<EWORK0
		EOR	#0FFFFH
		INC	A
		STA	<EWORK0
		PLA

		CMP	<EWORK0			;食い込んでる ?
		BMI	ZOOM_PLCHK0100		;  no: ZOOM_PLCHK0100
		BRA	ZOOM_PLCHK0070		; yes: ZOOM_PLCHK0070

ZOOM_PLCHK0050	EQU	$
		CMP	<EWORK0			;食い込んでる ?
		BPL	ZOOM_PLCHK0100		;  no: ZOOM_PLCHK0100

ZOOM_PLCHK0070	EQU	$
		LDY	<EWORK8			;半当たり ?
		BNE	ZOOM_PLCHK0180		; yes: ZOOM_PLCHK0180

		INC	<EWORK4

		LDA	PLXSPD			;補正していい ?
		EOR	<EWORKC			;
		BMI	ZOOM_PLCHK0088		;  no: ZOOM_PLCHK0088

		LDA	CCWORK1E		;右からあたった ?
		INC	A
		LDY	<EWORKC+1		;
		BMI	ZOOM_PLCHK0080		; yes: ZOOM_PLCHK0080

		INC	<EWORK4

		EOR	#0FFFFH

ZOOM_PLCHK0080	EQU	$
		CLC
		ADC	<EWORKC
		CLC
		ADC	PLXPSL			;Ｘ　ＰＯＳ．補正
		STA	PLXPSL			;

		STZ	PLXSPD			;Ｘ　ＳＰＥＥＤクリア
		STZ	PLMVSP			;ＳＰＥＥＤクリア
;;;;;;;;		STZ	PLSPJP			;ふんばりフラグクリア

ZOOM_PLCHK0088	EQU	$
		CLC

ZOOM_PLCHK0090	EQU	$

		RTL

ZOOM_PLCHK0100	EQU	$
		LDA	<EWORKE			;プレイヤー上からあたった ?
		BPL	ZOOM_PLCHK0200		; yes: ZOOM_PLCHK0200

		LDY	<EWORK2
		BNE	ZOOM_PLCHK0160

		LDA	<EWORKE			;チェックしていい ?
		EOR	PLYSPD			;
		BMI	ZOOM_PLCHK0180		;  no: ZOOM_PLCHK0180

ZOOM_PLCHK0160	EQU	$
		LDY	<EWORK8			;半当たり ?
		BNE	ZOOM_PLCHK0180		; yes: ZOOM_PLCHK0180

		LDY	#004
		STY	<EWORK4

		LDA	<EWORKE
		CLC
		ADC	CCWORK1F
		CLC
		ADC	PLYPSL			;Ｙ　ＰＯＳ．補正
		STA	PLYPSL			;

		STZ	PLYSPD
		STZ	PLSPJP			;ふんばりフラグクリア

		LDY	<EWORK6			;ブロック ?
		BEQ	ZOOM_PLCHK0180		;  no: ZOOM_PLCHK0180

		LDA	<ENWRK2,X
		BNE	ZOOM_PLCHK0180

		LDA	#0FC00H			;Ｙ　ＳＰＥＥＤセット
		STA	ENYSPD,X		;

		LDA	#00040H			;Ｇ　ＰＯＷＥＲセット
		STA	ENGPOW,X		;

		INC	<ENWRK2,X

ZOOM_PLCHK0180	EQU	$
		SEC

		RTL

ZOOM_PLCHK0200	EQU	$
		LDA	<EWORKE			;チェックしていい ?
		EOR	PLYSPD			;
		BMI	ZOOM_PLCHK0180		;  no: ZOOM_PLCHK0180

		LDY	#008
		STY	<EWORK4

		LDA	<EWORKE
		SEC
		SBC	CCWORK1F
		CLC
		ADC	#00002
		CLC
		ADC	PLYPSL			;Ｙ　ＰＯＳ．補正
		STA	PLYPSL			;

		LDY	#000
		STY	PLYSDR
		STZ	PLYSPD

		INC	ONLFFG

		CLC

		RTL
;
;************************************************************************
;*		initial ( block lift )					*
;************************************************************************
BLKLFIN		EQU	$			;-- blklfin --
BLKL2IN		EQU	$			;-- blkl2in --
		JSL	>TROBJ_SR_4x4_CL

		LDA	#00100H			;初期倍率セット
		STA	ENWRK6,X		;
		STA	ENWRK8,X

		STZ	<ENCONT,X

		JSR	BLKLF_ROT_SET

		RTL
;
;************************************************************************
;*		move	( block lift )					*
;************************************************************************
;		ENWRK0	前のフレームのＸ　ＰＯＳ．
;		ENWRK2	ROUTINE MODE INDEX
;		ENWRK4	前のフレームのＹ　ＰＯＳ．
;		ENWRK6	Ｘ倍率
;		ENWRK8	Ｙ倍率
;		ENWRKA	下端のＹ　ＰＯＳ．
;		ENWRKC	上端のＹ　ＰＯＳ．
;
;		ENCONT	使用ＯＢＪナンバー
;
;		ENTIM0	ストップタイマー
;
BLKLF_SUB	EQU	$
		WORD	BLKLF_SUB0	;プレイヤー待ち
		WORD	BLKLF_SUB1	;変形
		WORD	DUMMY_SUB	;左右移動
		WORD	DUMMY_SUB	;上下移動
;
BLKLF_CHAR	EQU	$
		WORD	CIPCHD2+10B0H+000
		WORD	CIPCHD2+0060H+000
BLKLF_RADX	EQU	$
		WORD	00600H,00E00H
BLKLF_RADY	EQU	$
		WORD	00A00H,00600H
;
BLKLFMV		EQU	$			;-- blklfmv --
BLKL2MV		EQU	$			;-- blkl2mv --
		JSL	>TROBJ_OAM_4x4

		LDY	<ENWRK2,X		;変形中 ?
		CPY	#001			;
		BEQ	BLKLFMV0100		; yes: BLKLFMV0100

		JSL	>ENMDCK
		BRA	BLKLFMV0200

BLKLFMV0100	EQU	$
		JSL	>EN_TIMER
		JSR	BLKLF_ROT_SET

BLKLFMV0200	EQU	$
		JSR	BLKLF_MOV_LIM

		JSR	BLKLF_OBJ_CHK
		JSL	>ZOOM_PLCHK		;プレイヤー乗ってる ?
		BCS	BLKLFMV0600		;  no: BLKLFMV0600

		LDA	PLXPSL
		CLC
		ADC	ENMOVX,X
		STA	PLXPSL
		LDA	PLYPSL
		CLC
		ADC	ENMOVY,X
		STA	PLYPSL

BLKLFMV0600	EQU	$
		TXY
		LDA	<ENWRK2,X
		ASL	A
		TAX
		JSR	(BLKLF_SUB,X)

		LDA	ENXPSL,X
		STA	<ENWRK0,X
		LDA	ENYPSL,X
		STA	<ENWRK4,X

		RTL
;
BLKLF_MOV_LIM	EQU	$
		LDY	<ENWRK2,X
		CPY	#002
		BMI	BLKLF_M_L2000
		BNE	BLKLF_M_L1000

		LDA	ENXPSL,X
		CMP	ENWRKC,X
		BMI	BLKLF_M_L0100

		CMP	ENWRKA,X
		BMI	BLKLF_M_L1300

BLKLF_M_L0100	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
		BRA	BLKLF_M_L1300

BLKLF_M_L1000	EQU	$
		LDA	ENYPSL,X
		CMP	ENWRKC,X
		BMI	BLKLF_M_L1100

		CMP	ENWRKA,X
		BMI	BLKLF_M_L1300

BLKLF_M_L1100	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

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

BLKLF_M_L2000	EQU	$

		RTS
;
BLKLF_OBJ_CHK	EQU	$
		LDY	<ENCONT,X
		LDA	!BLKLF_RADX,Y
		STA	R0			;(R0) <- 横チェック半径 * 100Hセット
		LDA	!BLKLF_RADY,Y
		STA	R1			;(R1) <- 縦チェック半径 * 100Hセット

		LDA	#0000AH			;内当たり幅セット
		STA	<EWORKA

		STZ	<EWORK2			;接触フラグクリア

		LDY	#000			;Yreg <- 半当たりチェックフラグセット
		STY	<EWORK9
		TYA
		STA	R3			;(R3) <- 縦方向補正値セット
		INY
		STY	<EWORK6			;ブロックフラグセット

		LDA	ENWRK6,X		;(R6) <- 横倍率セット
		STA	R6			;
		LDA	ENWRK8,X		;Areg <- 縦倍率セット

		RTS
;
BLKLF_ROT_SET	EQU	$
		LDA	ENWRK6,X		;(R6)  <- Ｘ倍率セット
		STA	R6			;
		LDA	ENWRK8,X		;(R11) <- Ｙ倍率セット
		STA	R11			;

		LDY	<ENCONT,X
		LDA	#BANK CIPCHD2+10B0H+000 ;chara data bank set
		STA	R13
		LDA	!BLKLF_CHAR,Y		;chara data address set
		STA	R12

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

		LDA	#00010H			;(R8) <- 中心Ｘ　ＰＯＳ．
		CPY	#000
		BEQ	BLKLF_R_SET0200

		STA	R8			;
		STA	R9			;(R9) <- 中心Ｙ　ＰＯＳ．

		M_CHIP	C_32_ZOOM_XY

		BRA	BLKLF_R_SET0300

BLKLF_R_SET0200 EQU	$
		LSR	A		;[ LDA	#00008H ]			;(R8) <- 中心Ｘ　ＰＯＳ．
		STA	R8			;
		STA	R9			;(R9) <- 中心Ｙ　ＰＯＳ．

		M_CHIP	C_32_ZOOM_XY_16

BLKLF_R_SET0300 EQU	$
		LDX	<ENINDX

		INC	OBM7WF			;mode 7 OBJ chara DMA "ON"

		RTS
;
BLKLF_SUB0	EQU	$
		TYX

		LDY	ECRSFG,X		;プレイヤーにあたった ?
		BMI	BLKLF_SUB0100		; yes: BLKLF_SUB0100
		DEY				;物にあたった ?
		BMI	BLKLF_SUB0800		;  no: BLKLF_SUB0800

		LDA	ENMODE,Y
		CMP	#EMOVE
		BNE	BLKLF_SUB0800
		LDA	ENSHOT,Y		;飛んでるタマゴにあたった ?
		BEQ	BLKLF_SUB0800		;  no: BLKLF_SUB0800

		TYX
		JSL	>ENDEATH_SET_4
		BRA	BLKLF_SUB0500

BLKLF_SUB0100	EQU	$
		STZ	PLMVSP
		STZ	PLXSPD
		STZ	PLYSPD

BLKLF_SUB0500	EQU	$
		LDA	ECENTX,X
		STA	<EWORK0
		LDA	ECENTY,X
		STA	<EWORK2
		LDA	#FSMK1
		JSL	>FSMK0_SET2

		LDY	#002
		STY	<ENCONT,X

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

		LDA	#00080H			;横倍率再セット
		STA	ENWRK6,X		;
		LDA	#001FFH			;縦倍率再セット
		STA	ENWRK8,X		;

		LDA	#00005H			;［Ｓ］
		JSL	>SOUND_3_ON

		INC	PLSTFG			;ゲームストップ
		INC	ENSTFG			;

		INC	<ENWRK2,X		;routine mode index inc.

BLKLF_SUB0800	EQU	$

		RTS
;
BLKLF_SUB1	EQU	$
		TYX

		LDY	ENTIM0,X		;ストップ ?
		BNE	BLKLF_SUB1800		; yes: BLKLF_SUB1800

		LDA	ENWRK6,X		;
		CLC				;
		ADC	#00004			;
		CMP	#00100H			;
		BMI	BLKLF_SUB1100		;
						;
		LDA	#00100H			;
						;
BLKLF_SUB1100	EQU	$			;
		STA	ENWRK6,X		;

		LDA	ENWRK8,X		;
		SEC				;
		SBC	#00008			;
		CMP	#00100H			;
		BPL	BLKLF_SUB1200		;
						;
		LDA	#00100H			;
						;
BLKLF_SUB1200	EQU	$			;
		STA	ENWRK8,X		;

		ORA	ENWRK6,X		;変形終わり ?
		CMP	#00100H			;
		BNE	BLKLF_SUB1800		;  no: BLKLF_SUB1800

		LDA	ENMYNO,X
		CMP	#BLKLF
		BNE	BLKLF_SUB1300

		JSL	>NLFLRIN

		BRA	BLKLF_SUB1400

BLKLF_SUB1300	EQU	$
		JSL	>NLFUDIN

		INC	<ENWRK2,X

BLKLF_SUB1400	EQU	$
		STZ	PLSTFG			;ゲームラン
		STZ	ENSTFG			;

		INC	<ENWRK2,X

BLKLF_SUB1800	EQU	$

		RTS
;
;************************************************************************
;*		initial ( ずーむぱっくん )				*
;************************************************************************
ZPACKIN		EQU	$			;-- zpackin --
ZPAC3IN		EQU	$			;-- zpac3in --
		INC	ENCHPT,X

		LDA	ENXPSL,X
		STA	R8
		LDA	ENYPSL,X
		CLC
		ADC	#00010H
		JSL	>DOKAN_CHECK2		;セット位置は土管の上 ?
		BNE	ZPACKIN0800		;  no: ZPACKIN0800

		LDA	ENXPSL,X
		CLC
		ADC	#00008
		STA	ENXPSL,X

ZPACKIN0800	EQU	$

		RTL
;
;************************************************************************
;*		move	( ずーむぱっくん )				*
;************************************************************************
;B		ENWRK0	オフセットＸ　ＰＯＳ．
;B		ENWRK1	オフセットＹ　ＰＯＳ．
;B		ENWRK2	ROUTINE MODE INDEX
;B		ENWRK3	転送キャラナンバー
;		ENWRK4	USE
;		ENWRK6	倍率	(100H=1.0 200H=0.5)
;		ENWRK8	回転角	(0-1FEH)
;		ENWRKA	プレイヤー吸い込みＸ　ＰＯＳ．(SUB2)／吐き出しフラグ 0... 1 time  1... 2 times
;		ENWRKC	プレイヤー吸い込みＹ　ＰＯＳ．(SUB2)／ズームロックフラグ
;
;		ENCONT	キャラパターンナンバー
;
;		ENTIM0	キャラパターンチェンジタイマー
;		ENTIM1	ズームロックタイマー
;		ENTIM2	USE
;		ENTIM3	プレイヤーチェックロックタイマー
;
;		EWORKC	頭のオフセットＸ　ＰＯＳ．
;		EWORKE	頭のオフセットＹ　ＰＯＳ．
;
ZPACK_SUB	EQU	$
		WORD	ZPACK_SUB0		;NORMAL
		WORD	ZPACK_SUB1		;ZOOM
		WORD	ZPACK_SUB2		;プレイヤーお召し上がり中
		WORD	ZPACK_SUB3		;お荷物お召し上がり中
		WORD	ZPACK_SUB4		;ぺっ
		WORD	ZPACK_SUB5		;プレイヤーお召し上がり中２
		WORD	ZPACK_SUB6		;がぁ〜ん
		WORD	ZPACK_SUB7		;やられとぅわぁー
MPACK_DM	EQU	$
		WORD	ZPACK_SUB10		;マザーパックンデモ（プレイヤーチェック）
		WORD	ZPACK_SUB11		;マザーパックンデモ（カベ閉じ待ち）
		WORD	ZPACK_SUB12		;マザーパックンデモ（ズーム）
		WORD	ZPACK_SUB13		;マザーパックンデモ（カメック退場までじっとしてる）
		WORD	ZPACK_SUB14		;マザーパックンデモ（ジャンプため）
		WORD	ZPACK_SUB15		;マザーパックンデモ（ジャンプ）
		WORD	ZPACK_SUB16		;マザーパックンデモ（範囲クリアチェック）
		WORD	ZPACK_SUB17		;マザーパックンデモ（MPACK出現待ち）
;		WORD	ZPACK_SUB20		;マザーパックンデモ（２回目以降	 プレイヤーチェック）
;		WORD	ZPACK_SUB21		;マザーパックンデモ（２回目以降	 カベ閉じ待ち）
;		WORD	ZPACK_SUB22		;マザーパックンデモ（２回目以降	 MPACK出現待ち）
MPACK_DM_ED	EQU	$
		WORD	ZPACK_SUB30		;マザーパックンデモ（やられとぅわぁー）
;
;
MPACK_DEMO	EQU	(MPACK_DM-ZPACK_SUB)/2
MPACK_DEMO_ED	EQU	(MPACK_DM_ED-ZPACK_SUB)/2
;
ZPACK_TREV	EQU	$
		WORD	00010H,00000H
;
ZPACKMV		EQU	$			;-- zpackmv --
ZPAC3MV		EQU	$			;-- zpac3mv --
		LDA	<ENWRK0,X
		AND	#000FFH
		CMP	#00080H
		BMI	ZPACKMV0200

		ORA	#0FF00H

ZPACKMV0200	EQU	$
		STA	<EWORKC

		LDA	<ENWRK1,X
		AND	#000FFH
		CMP	#00080H
		BMI	ZPACKMV0300

		ORA	#0FF00H

ZPACKMV0300	EQU	$
		LDY	ENCLOR,X
		BPL	ZPACKMV0320

		CLC
		ADC	#00010H

ZPACKMV0320	EQU	$
		STA	<EWORKE

		LDA	ENCHPT,X		;頭ＢＩＧ ?
		BNE	ZPACKMV0400		;  no: ZPACKMV0400

		JSR	ZPACK_OAM_SET

ZPACKMV0400	EQU	$
		LDY	<ENWRK2,X		;プレイヤー口の中 ?
		CPY	#004			;
		BNE	ZPACKMV0500		;
						;
		LDY	ENWRKA,X		;
		BEQ	ZPACKMV0700		;
		BRA	ZPACKMV0600		; yes: ZPACKMV0600
						;
ZPACKMV0500	EQU	$			;
		CPY	#003			;
		BMI	ZPACKMV0700		;
		CPY	#005+1			;
		BPL	ZPACKMV0700		;  no: ZPACKMV0700

ZPACKMV0600	EQU	$
		STZ	PLYUSN

ZPACKMV0700	EQU	$
		LDA	ENCOLD,X		;凍ってる ?
		BEQ	ZPACKMV0710		;  no: ZPACKMV0710

		LDA	ENMYNO,X		;逆さパックン ?
		CMP	#ZPAC3			;
		BNE	ZPACKMV0710		;  no: ZPACKMV0710

		LDA	#1000100001000000B	;ＢＧチェックなし
		STA	ENMOD1,X		;

ZPACKMV0710	EQU	$
		LDY	<ENWRK2,X
		CPY	#MPACK_DEMO_ED
		BEQ	ZPACKMV0720

		JSL	>ENMDCK			;mode check
;
ZPACKMV0720	EQU	$
		JSL	>DISPCK2		;画面外 ?
		BCC	ZPACKMV0780		;  no: ZPACKMV0780

		LDY	<ENWRK2,X		;マザーパックンのでも ?
		CPY	#MPACK_DEMO		;
		BPL	ZPACKMV0780		; yes: ZPACKMV0780
		CPY	#002			;プレイヤー捕まえてる ?
		BMI	ZPACKMV0750		;  no: ZPACKMV0750
		CPY	#005+1			;やられてる ?
		BPL	ZPACKMV0790		; yes: ZPACKMV0790

		CPY	#004
		BNE	ZPACKMV0730
		LDY	ENWRKA,X		;プレイヤーまだ口の中 ?
		BEQ	ZPACKMV0750		;  no: ZPACKMV0750

ZPACKMV0730	EQU	$
		STZ	PLMODE
		LDA	#00070H			;プレイヤーしばらく無敵に
		STA	PLFLSH			;
		STZ	PLEATFG
		STZ	PONLFFG

ZPACKMV0750	EQU	$
		JMP	>ENCLEAR

		RTL
;
ZPACKMV0780	EQU	$
		LDY	<ENWRK2,X		;
		CPY	#MPACK_DEMO		;
		BMI	ZPACKMV0790		;

		LDY	ECRSFG,X
		DEY
		BMI	ZPACKMV0799

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

		TYX
		JSL	>ENDEATH_SET_4
		LDY	#MPACK_DEMO_ED
		STY	<ENWRK2,X
		BRA	ZPACKMV0799

ZPACKMV0790	EQU	$
		JSR	ZPACK_CRSCHK
;
ZPACKMV0799	EQU	$
		TXY
		LDA	<ENWRK2,X
		ASL	A
		TAX
		JSR	(ZPACK_SUB,X)
;
		LDA	#00008
		STA	ECNTXW,X
		STA	ECNTYW,X
;
		LDA	ENCHPT,X		;頭ＢＩＧ ?
		BNE	ZPACKMV0800		;  no: ZPACKMV0800

		LDA	<EWORKC
		STA	ECNTXW,X
		LDA	<EWORKE
		STA	ECNTYW,X

ZPACKMV0800	EQU	$

		RTL
;
ZPACK_CRSCHK	EQU	$
		LDY	ECRSFG,X		;何かに衝突した ?
		BNE	ZPACK_CRSCHK080		; yes: ZPACK_CRSCHK080

		TXA				;何か飛んできたものにあたった ?
		STA	R1			;
		M_CHIP	SHOTENSR		;
		LDX	<ENINDX			;
		LDY	R1			;
		BMI	ZPACK_CRSCHK080		;
						;
		LDA	EWIDEX,Y		;
		CLC				;
		ADC	#00006			;
		STA	<EWORK0			;
		ASL	A			;
		STA	<EWORK2			;
						;
		LDA	ENXPSL,X		;
		CLC				;
		ADC	#00008			;
		SEC				;
		SBC	ECENTX,Y		;
		CLC				;
		ADC	<EWORK0			;
		CMP	<EWORK2			;
		BCS	ZPACK_CRSCHK080		;
						;
		LDA	EWIDEY,Y		;
		CLC				;
		ADC	#00006			;
		STA	<EWORK0			;
		ASL	A			;
		STA	<EWORK2			;
						;
		LDA	ENYPSL,X		;
		CLC				;
		ADC	#00008			;
		SEC				;
		SBC	ECENTY,Y		;
		CLC				;
		ADC	<EWORK0			;
		CMP	<EWORK2			;
		BCS	ZPACK_CRSCHK080		;  no: ZPACK_CRSCHK080

		INY
		TYA
		STA	ECRSFG,X

ZPACK_CRSCHK080 EQU	$

		RTS
;
ZPACK_SUB0	EQU	$
		TYX

		PLA
		STA	<EWORK0
		JSL	>EPCRCK
		LDA	<EWORK0
		PHA

		LDA	ENTIM1,X		;ズームロック ?
		BNE	ZPACK_SUB0800		; yes: ZPACK_SUB0800

		LDA	EPWIDX,X		;プレイヤーが近づいてきた ?
		CLC				;
		ADC	#00070H			;
		CMP	#000E0H			;
		BCS	ZPACK_SUB0800		;
						;
		LDA	EPWIDY,X		;
		CLC				;
		ADC	#00070H			;
		CMP	#000E0H			;
		BCS	ZPACK_SUB0800		;  no: ZPACK_SUB0800

		LDA	PLTYPE			;プレイヤー＝まりお ?
		CMP	#P_MARIO		;
		BEQ	ZPACK_SUB0800		; yes: ZPACK_SUB0800

		JSL	>TROBJ_SR_4x4		;回転エリア確保できた ?
		BCC	ZPACK_SUB0800		;  no: ZPACK_SUB0800

		LDA	#1000010010101000B	;食ったらダメージ／ＯＢＪ衝突サイズ０ー＞８
		STA	ENMOD0,X		;投げた敵あたらなくする／踏めなくする
		LDA	#0011110101010001B	;シャボン玉に入らなくする
		STA	ENMOD2,X		;

		LDA	#00055H			;倍率セット
		STA	ENWRK6,X		;

		INC	<ENWRK2,X		;routine mode index inc.

ZPACK_SUB0800	EQU	$

		RTS
;
ZPACK_SUB1	EQU	$
		TYX

		LDY	ECRSFG,X		;敵と衝突した ?
		DEY				;
		BMI	ZPACK_SUB1600		;  no: ZPACK_SUB1600

		LDA	ENMODE,Y
		CMP	#EMOVE
		BNE	ZPACK_SUB1600
		LDA	ENSHOT,Y		;飛んできた ?
		BEQ	ZPACK_SUB1600		;  no: ZPACK_SUB1600

		JSR	ZPACK_DEAD

		LDA	ENWRK8,X
		LDY	ENMUKI,X
		BEQ	ZPACK_SUB1100

		EOR	#0FFFFH
		SEC
		ADC	#00100H
		AND	#001FEH

ZPACK_SUB1100	EQU	$
		STA	ENWRKC,X		;
		LDA	#00206H
		STA	<ENWRK2,X
		RTS

ZPACK_SUB1600	EQU	$
		TROBJ_CHK_4
		BNE	ZPACK_SUB1901

		STZ	ENCHPT,X

		JSR	ZPACK_CALC
		JSR	ZPACK_SET
		JSR	ZPACK_HEAD_CHG

		LDY	FUFUFU			;デバッグモード ?
		BNE	ZPACK_SUB1901		; yes: ZPACK_SUB1901

		LDY	ENTIM3,X		;プレイヤーチェックロック ?
		BEQ	ZPACK_SUB1910		;  no: ZPACK_SUB1910

ZPACK_SUB1901	EQU	$
		RTS

ZPACK_SUB1910	EQU	$
		LDA	PWIDEX
		CLC
		ADC	#00004
		ASL	A
		STA	<EWORK4
		LSR	A
		CLC
		ADC	ENXPSL,X		;プレイヤーと接触した ?
		CLC				;
		ADC	<EWORKC			;
		SEC				;
		SBC	PCENTX			;
		STA	<EWORK0			;
		CMP	<EWORK4			;
		BCS	ZPACK_SUB1901		;
						;
		LDA	PWIDEY			;
		CLC				;
		ADC	#00004			;
		ASL	A			;
		STA	<EWORK4			;
		LSR	A			;
		CLC				;
		ADC	ENYPSL,X		;
		CLC				;
		ADC	<EWORKE			;
		SEC				;
		SBC	PCENTY			;
		STA	<EWORK2			;
		CMP	<EWORK4			;
		BCS	ZPACK_SUB1901		;  no: ZPACK_SUB1901

		LDA	ENWRK6,X		;パックンの花成長しきってない ?
		SEC				;
		SBC	#00100H			;
		ORA	PLFLSH			;プレイヤーはダメージを受けている ?
		ORA	PLEATFG			;プレイヤー誰かに食べられてる ?
		BNE	ZPACK_SUB1A00		; yes: ZPACK_SUB1A00

		JSL	>EGGKILL_ALL

;;;;;;;;		STX	PONLFFG			;強制

		LDA	#1010000001000001B	;敵でなくす、ごろごろにやられない
		STA	ENMOD1,X
		LDA	#0011110100000001B	;凍らない、燃えない
		STA	ENMOD2,X

		INC	PLEATFG

		LDY	NOSEIDX			;プレイヤー何か背負ってた ?
		BMI	ZPACK_SUB1988		;  no: ZPACK_SUB1988

		TYA
		STA	ENEATFG

ZPACK_SUB1988	EQU	$
		LDA	<EWORK0			;プレイヤーの吸い込みＰＯＳ．セット
		STA	ENWRKA,X		;
		LDA	<EWORK2			;
		STA	ENWRKC,X		;

		JSL	>BERO_CANCEL

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

		LDA	#00202H			;ENWRK2 <- routine mode index
		STA	<ENWRK2,X		;ENWRK3 <- 口開けフラグ

		JSR	ZPACK_SET
		JSR	ZPACK_HEAD_POS

ZPACK_SUB1A00	EQU	$

		RTS
;
ZPACK_CALC	EQU	$
		LDY	ENWRKC,X		;敵と衝突した ?
		BNE	ZPACK_CALC0100		; yes: ZPACK_CALC0100

		LDA	PLTYPE			;プレイヤー＝まりお ?
		CMP	#P_MARIO		;
		BEQ	ZPACK_CALC0100		; yes: ZPACK_CALC0100

		LDA	ENXPSL,X		;プレイヤーが離れた ?
		CLC				;
		ADC	#00008			;
		SEC				;
		SBC	PCENTX			;
		CLC				;
		ADC	#00070H			;
		CMP	#000E0H			;
		BCS	ZPACK_CALC0100		;
						;
		LDA	ENYPSL,X		;
		CLC				;
		ADC	#00008			;
		SEC				;
		SBC	PCENTY			;
		CLC				;
		ADC	#00070H			;
		CMP	#000E0H			;
		BCC	ZPACK_CALC0300		;  no: ZPACK_CALC0300

ZPACK_CALC0100	EQU	$			;
		LDA	ENWRK6,X		;倍率計算＆セット
		SEC				;	;縮小終了 ?
		SBC	#00020H			;	;
		CMP	#00055H			;	;
		BPL	ZPACK_CALC0400		;	;  no: ZPACK_CALC0400
						;
		JSL	>TROBJ_CLEAR		;	;use area cansel
						;
		LDY	ENWRKC,X		;	;敵と衝突した ?
		BEQ	ZPACK_CALC0200		;	;  no: ZPACK_CALC0200
						;
		STZ	ENWRKC,X		;	;ズームロックフラグクリア
		LDA	#00100H			;	;ズームロックタイマーセット
		STA	ENTIM1,X		;	;
						;
ZPACK_CALC0200	EQU	$			;
		LDA	#00001H			;	;キャラパターンナンバーセット
		STA	ENCHPT,X		;	;
						;	;
		LDA	#1011111000000000B	;	;食えるようにする／ＯＢＪ衝突サイズ８ー＞０
		STA	ENMOD0,X		;	;投げた敵あたる／踏める
		LDA	#0011110111010001B	;	;シャボン玉に入るようにする
		STA	ENMOD2,X		;
						;
		DEC	<ENWRK2,X		;	;routine mode index set
						;
		LDA	#00055H			;
		STA	ENWRK6,X		;
						;
		RTS				;
						;
ZPACK_CALC0300	EQU	$			;
ZPACK_CALC2	EQU	$			;
		LDA	ENWRK6,X		;	;拡大終了 ?
		CLC				;	;
		ADC	#00040H			;	;
		CMP	#00100H			;	;
		BMI	ZPACK_CALC0400		;	;  no: ZPACK_CALC0400
						;
		LDA	#00100H			;
						;
ZPACK_CALC0400	EQU	$			;
		STA	ENWRK6,X		;

		LDA	ENXPSL,X		;回転角セット
		CLC				;
		ADC	#00008			;
		SEC				;
		SBC	PCENTX			;
		STA	R1			;
						;
		LDA	ENYPSL,X		;
		CLC				;
		ADC	#00008			;
		SEC				;
		SBC	PCENTY			;
		LDY	ENCLOR,X		;
		BPL	ZPACK_CALC0500		;
						;
		EOR	#0FFFFH			;
		INC	A			;
						;
ZPACK_CALC0500	EQU	$			;
		STA	R2			;
						;
		M_CHIP	M_RAD_GET		;
						;
		LDX	<ENINDX			;
		LDA	R0			;
		SEC				;
		SBC	#00080H			;
		CMP	#00100H			;
		BCS	ZPACK_CALC0700		;
						;
		STZ	ENMUKI,X		;
						;
		LDA	R0			;
		CMP	#00100H			;
		BMI	ZPACK_CALC0600		;
						;
		LDA	#00100H			;
						;
ZPACK_CALC0600	EQU	$			;
		CLC				;
		ADC	#00100H			;
		BRA	ZPACK_CALC0900		;
						;
ZPACK_CALC0700	EQU	$			;
		LDA	#00002H			;
		STA	ENMUKI,X		;
						;
		LDA	R0			;
		CMP	#00080H			;
		BMI	ZPACK_CALC0800		;
						;
		LDA	#00000			;
						;
ZPACK_CALC0800	EQU	$			;
		EOR	#0FFFFH			;
		INC	A			;
						;
ZPACK_CALC0900	EQU	$			;
		AND	#001FEH			;
		STA	ENWRK8,X		;

		RTS
;
ZPACK_HEAD_CHG	EQU	$
		LDA	ENTIM0,X		;キャラパターンチェンジ ?
		BNE	ZPACK_H_CHG0100		;  no: ZPACK_H_CHG0100

		LDA	#00008H			;キャラパターンチェンジタイマーセット
		STA	ENTIM0,X		;

		LDA	<ENWRK3,X		;キャラパターンチェンジフラグチェンジ
		EOR	#00002H			;
		STA	<ENWRK3,X		;
		TAY
		BEQ	ZPACK_H_CHG0100

		LDA	#00039H			;［Ｓ］
		JSL	>SOUND_3_ON

ZPACK_H_CHG0100 EQU	$
ZPACK_HEAD_POS	EQU	$
		LDA	CCWORK11		;口オフセットＸ　ＰＯＳ．
		STA	<EWORKC			;
		TAY				;
		STY	<ENWRK0,X		;

		LDA	CCWORK10		;口オフセットＹ　ＰＯＳ．
		TAY				;
		STY	<ENWRK1,X		;
		LDY	ENCLOR,X		;
		BPL	ZPACK_H_CHG0800		;
						;
		CLC				;
		ADC	#00010H			;
						;
ZPACK_H_CHG0800 EQU	$			;
		STA	<EWORKE			;

		RTS
;
ZPACK_SUB2	EQU	$
		TYX

		STX	PONLFFG			;強制

		LDA	ENXPSL,X
		CLC
		ADC	<EWORKC
		STA	<EWORK0
		LDA	ENYPSL,X
		CLC
		ADC	<EWORKE
		STA	<EWORK2
		LDA	ENWRKA,X
		STA	<EWORK4
		LDA	ENWRKC,X
		STA	<EWORK6

		JSL	>NMZ_HOSEI
		PHA

		LDA	<EWORK4
		STA	ENWRKA,X
		LDA	<EWORK6
		STA	ENWRKC,X
		LDA	<EWORK8
		SEC
		SBC	PCENTX
		CLC
		ADC	PLXPSL
		STA	PLXPSL
		LDA	<EWORKA
		SEC
		SBC	PCENTY
		CLC
		ADC	PLYPSL
		STA	PLYPSL
		PLA				;補正終了 ?
		BNE	ZPACK_SUB2500		;  no: ZPACK_SUB2500

		STZ	ENWRKA,X
		STZ	ENWRKC,X

		LDA	#00005H			;ENWRK2 <- routine mode index
		STA	<ENWRK2,X		;ENWRK3 <- 口開けフラグ

;		LDA	#00040H			;口ぱく回数10H * 4セット
		LDA	#00020H			;口ぱく回数10H * 4セット
		STA	<ENCONT,X		;

		STZ	PLYUSN			;プレイヤー消す
		LDY	NOSEIDX			;プレイヤーに誰か乗ってた ?
		BMI	ZPACK_SUB2400		;  no: ZPACK_SUB2400

		LDA	#000FFH
		STA	ENYUSN,Y		;乗せてるやつの消す

		DEC	<ENWRK2,X
		DEC	<ENWRK2,X
		INC	ENWRKA,X
		LDA	#00004H			;口ぱく回数1H * 4セット
		STA	<ENCONT,X		;

		LDA	#00014H			;［Ｓ］
		JSL	>SOUND_3_ON
;;;;;;;;		LDA	#00006			;[Ｓ]
;;;;;;;;		STA	SOUND0

ZPACK_SUB2400	EQU	$
		JSR	ZPACK_SET
		JSR	ZPACK_HEAD_POS

ZPACK_SUB2500	EQU	$
;;;;;;;;		JSR	ZPACK_SET

ZPACK_SUB2800	EQU	$

		RTS
;
ZPACK_ZADD	EQU	$
		WORD	00008H,0FFF8H
ZPACK_ZLIM	EQU	$
		WORD	00110H,00100H
ZPACK_PLXSPD	EQU	$
		WORD	0FC80H,00380H
ZPACK_ENXSPD	EQU	$
		WORD	0FC00H,00400H
ZPACK_ANGADD	EQU	$
		WORD	00004H,0FFFCH
;
ZPACK_SUB5	EQU	$
		TYX

		LDA	ENCLOR,X
		AND	#0FFE0H
		ORA	#00024H
		STA	ENCLOR,X
		LDA	ENWRK6,X		;ノーマルのサイズ ?
		CMP	#00100H			;
		BMI	ZPACK_SUB3000		;  no: ZPACK_SUB3000

		LDA	ENCLOR,X
		AND	#0FFE0H
		ORA	#00022H
		STA	ENCLOR,X

		LDA	KEYC1L			;キー入力があった ?
		AND	#0CFF0H			;
		CMP	KEYWORK			;
		BEQ	ZPACK_SUB3000		;  no: ZPACK_SUB3000
		STA	KEYWORK			;
		CMP	#00000			;
		BEQ	ZPACK_SUB3000		;  no: ZPACK_SUB3000

		LDA	<ENCONT,X		;残り少ない ?
		CMP	#00004+1		;
		BMI	ZPACK_SUB3000		; yes: ZPACK_SUB3000

		SEC
		SBC	#00010H
		CMP	#00004
		BPL	ZPACK_SUB5080

		LDA	#00004

ZPACK_SUB5080	EQU	$
		AND	#0FFFCH
		STA	<ENCONT,X
		LDA	#000C0H
		STA	ENWRK6,X
		BRA	ZPACK_SUB3000

ZPACK_SUB3	EQU	$
		TYX

		LDY	NOSEIDX
		CPY	#000
		BMI	ZPACK_SUB3000

		LDA	#000FFH
		STA	ENYUSN,Y		;乗せてるやつ消す

ZPACK_SUB3000	EQU	$
		LDY	#000
		LDA	ENWRK8,X
		BEQ	ZPACK_SUB3020
		CMP	#00100H
		BPL	ZPACK_SUB3010

		INY
		INY

ZPACK_SUB3010	EQU	$
		CLC
		ADC	!ZPACK_ANGADD,Y
		AND	#001FCH
		STA	ENWRK8,X

ZPACK_SUB3020	EQU	$
		TROBJ_CHK_4
		BEQ	ZPACK_SUB3028

		JMP	ZPACK_SUB3800

ZPACK_SUB3028	EQU	$
		LDA	<ENCONT,X
		AND	#00002H
		TAY
		LDA	ENWRK6,X
		CLC
		ADC	!ZPACK_ZADD,Y
		CMP	!ZPACK_ZLIM,Y
		BEQ	ZPACK_SUB3030

		JMP	ZPACK_SUB3400

ZPACK_SUB3030	EQU	$
		DEC	<ENCONT,X		;口ぱく終わり ?
		DEC	<ENCONT,X		;
		BEQ	ZPACK_SUB3040		; yes: ZPACK_SUB3040

		JMP	ZPACK_SUB3100		;  no: ZPACK_SUB3100

ZPACK_SUB3040	EQU	$
		PHY

		LDY	<ENWRK2,X		;プレイヤーを吐きだす ?
		CPY	#005			;
		BNE	ZPACK_SUB3050		;  no: ZPACK_SUB3050
		JMP	ZPACK_SUB3080		; yes: ZPACK_SUB3080

ZPACK_SUB3050	EQU	$
		LDY	ENMUKI,X
		LDA	!ZPACK_ENXSPD,Y
		STA	<EWORK0

		LDY	NOSEIDX
		LDA	ENXPSL,X
		CLC
		ADC	<EWORKC
		SEC
		SBC	#00008
		STA	ENXPSL,Y
		LDA	ENYPSL,X
		CLC
		ADC	<EWORKE
		SEC
		SBC	#00008
		STA	ENYPSL,Y
		LDA	#EMOVE
		STA	ENMODE,Y

		LDA	<EWORK0
		STA	ENXSPD,Y

		CPY	#BABY_INDEX		;赤ちゃん ?
		BNE	ZPACK_SUB3070		;  no: ZPACK_SUB3070

		LDA	ENXSPD+BABY_INDEX
		CMP	#08000H
		ROR	A
		STA	ENXSPD+BABY_INDEX

		STZ	<ENCONT+BABY_INDEX	;キャラパターンカウンタークリア
		STZ	ENWRKC+BABY_INDEX	;乗ってるフラグクリア

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

		LDA	BABYNO			;CLEAR 8000H
		AND	#00FFFH			;
		STA	BABYNO			;

		LDA	PLYPSL
		SEC
		SBC	#00030H
		CLC
		ADC	ESCCV1
		CLC
		ADC	#00030H
		CMP	#08000H
		ROR	A
		STA	BABYYCKDT

;;;;;;;;		PHY
;;;;;;;;		LDA	#0003CH			;［Ｓ］
;;;;;;;;		JSL	>SOUND_3_ON
;;;;;;;;		PLY
		BRA	ZPACK_SUB3078

ZPACK_SUB3070	EQU	$
		STZ	ENMYNSFG		;敵のせ情報フラグクリア

ZPACK_SUB3078	EQU	$
		PHX
		LDA	ENMYNO,Y
		ASL	A
		TAX
		M8
		LDA	>ENDATA0,X
		STA	ENYUSN,Y
		M16
		PLX

		LDA	#0FFFFH
		STA	ENEATFG
		STA	NOSEIDX
		BRA	ZPACK_SUB3090

ZPACK_SUB3080	EQU	$
;;;;;;;;		LDA	#PMOV
;;;;;;;;		STA	PLMODE
		STZ	PLMODE
		LDY	ENMUKI,X
		LDA	!ZPACK_PLXSPD,Y
		STA	PLXSPD
		STA	PLMVSP
		LDA	#00070H			;プレイヤーしばらく無敵に
		STA	PLFLSH			;

		STZ	PLEATFG
		STZ	PONLFFG

		LDA	#00060H			;プレイヤーチェックロックタイマーセット
		STA	ENTIM3,X		;

		LDA	#1000100001000001B	;敵に戻す、ごろごろにやられる
		STA	ENMOD1,X
		LDA	#0011110101010001B	;凍る、燃える
		STA	ENMOD2,X

ZPACK_SUB3090	EQU	$
		LDA	#00014H			;［Ｓ］
		JSL	>SOUND_3_ON
;;;;;;;;		LDA	#00020H			;[Ｓ]
;;;;;;;;		STA	SOUND0

		LDA	#00020H
		STA	ENTIM0,X

		LDA	#00204H			;ENWRK2 <- routine index mode
		STA	<ENWRK2,X		;ENWRK3 <- 口開けフラグ

		PLY

ZPACK_SUB3100	EQU	$
		LDA	!ZPACK_ZLIM,Y

ZPACK_SUB3400	EQU	$
		STA	ENWRK6,X

		JSR	ZPACK_SET
		JSR	ZPACK_HEAD_POS

ZPACK_SUB3800	EQU	$
ZPACK_PLREV	EQU	$
		LDA	ENXPSL,X
		CLC
		ADC	<EWORKC
		SEC
		SBC	PCENTX
		CLC
		ADC	PLXPSL
		STA	PLXPSL
		LDA	ENYPSL,X
		CLC
		ADC	<EWORKE
		SEC
		SBC	PCENTY
		CLC
		ADC	PLYPSL
		STA	PLYPSL

		RTS
;
ZPACK_SUB4	EQU	$
		TYX

		LDY	ENWRKA,X
		BEQ	ZPACK_SUB4000

		JSR	ZPACK_PLREV

ZPACK_SUB4000	EQU	$
		LDA	ENTIM0,X		;ストップ ?
		BNE	ZPACK_SUB4800		; yes: ZPACK_SUB4800

		CPY	#000			;プレイヤー何か背負ってた ?
		BNE	ZPACK_SUB4100		; yes: ZPACK_SUB4100

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

		RTS

ZPACK_SUB4100	EQU	$
		DEC	ENWRKA,X

;		LDA	#00040H			;口ぱく回数10H * 4セット
		LDA	#00020H			;口ぱく回数10H * 4セット
		STA	<ENCONT,X		;

		LDA	#00005H			;ENWRK2 <- routine mode index
		STA	<ENWRK2,X		;ENWRK3 <- 口開けフラグ

		JSR	ZPACK_SET
		JSR	ZPACK_HEAD_POS

ZPACK_SUB4800	EQU	$

		RTS
;
ZPACK_SUB6	EQU	$
		JSR	ZPAC2_SUB2
		BRA	ZPACK_SUB7500
;
ZPACK_SUB7	EQU	$
		PLA				;
		STA	<EWORK0			;
		JSR	ZPAC2_SUB3		;
		LDA	<EWORK0			;
		PHA				;

ZPACK_SUB7500	EQU	$
		JSR	ZPAC2_ANG_CALC
		JSR	ZPACK_SET
		JMP	ZPACK_HEAD_POS
;
ZPACK_SUB10	EQU	$
;ZPACK_SUB20	EQU	$
		TYX

		LDA	PLXPSL			;プレイヤー、部屋に入ってきた ?
		CMP	#00300H			;
		BMI	ZPACK_SUB10800		;  no: ZPACK_SUB10800

		LDA	#000F1H			;［Ｓ］
		STA	SOUND_0

		LDA	#DMPLC
		JSL	>ENINSR
		LDA	#PDEM
		STA	PLMODE
		LDA	#MPACK_START_ST
		STA	ENWRK0,Y
		LDA	#MPACK_START_ED
		STA	ENWRKC,Y

		STZ	PLXSPD
		STA	PLMVSP
		INC	<ENWRK2,X

ZPACK_SUB10800	EQU	$

		RTS
;
ZPACK_SUB11	EQU	$
;ZPACK_SUB21	EQU	$
		TYX

		LDY	BOSS0FLG		;カベ閉じ終わった ?
		BEQ	ZPACK_SUB11800		;  no: ZPACK_SUB11800

;		LDY	<ENWRK2,X		;２回目以降 ?
;		CPY	#011H			;
;		BNE	ZPACK_SUB11100		;  no: ZPACK_SUB11100
;
;		LDA	#00051H
;		STA	ENTIM2,X
;		INC	<ENWRK2,X
;		RTS
;
;ZPACK_SUB11100 EQU	$
		JSL	>TROBJ_SR_4x4		;回転エリア確保できた ?
		BCC	ZPACK_SUB11800		;  no: ZPACK_SUB11800

		LDA	#1000010010101000B	;食ったらダメージ／ＯＢＪ衝突サイズ０ー＞８
		STA	ENMOD0,X		;投げた敵あたらなくする／踏めなくする
		LDA	#0011110101010001B	;シャボン玉に入らなくする
		STA	ENMOD2,X		;

		LDA	#00055H			;倍率セット
		STA	ENWRK6,X		;

		LDA	#00040H			;カメック出現タイマーセット
		STA	ENTIM2,X		;

		LDA	#00009H			;［Ｓ］
		STA	SOUND_0

		INC	<ENWRK2,X

		LDA	#KAMC2			;セットＯＫ ?
		JSL	>ENINSR_I		;
		BCC	ZPACK_SUB11800		;  no: ZPACK_SUB11800

		LDA	#00010H
		STA	ENXPSL,Y

ZPACK_SUB11800	EQU	$

		RTS
;
ZPACK_SUB12	EQU	$
		TYX

		LDY	BOSS_RETRY		;２回目以降 ?
		BEQ	ZPACK_SUB12200		;  no: ZPACK_SUB12200

		LDA	BOSS_START
		BNE	ZPACK_SUB12280

ZPACK_SUB12200	EQU	$
		LDA	>MSG_NO			;メッセージが表示された ?
		BEQ	ZPACK_SUB12300		;  no: ZPACK_SUB12300

ZPACK_SUB12280	EQU	$
		STA	ENTIM0,X		;頭のキャラパターンを固定する
		LDY	#000
		STY	<ENWRK3,X
		JSR	ZPACK_SET
		JSR	ZPACK_HEAD_CHG

		INC	<ENWRK2,X
		RTS

ZPACK_SUB12300	EQU	$
		TROBJ_CHK_4
		BNE	ZPACK_SUB12800

		STZ	ENCHPT,X
		JSR	ZPACK_CALC2
		JSR	ZPACK_SET
		JSR	ZPACK_HEAD_CHG

ZPACK_SUB12800	EQU	$
		LDA	ENTIM2,X		;カメックセット ?
		BNE	ZPACK_SUB12900		;  no: ZPACK_SUB12900

		INC	BOSS_START		;[1]
		DEC	ENTIM2,X

ZPACK_SUB12900	EQU	$

		RTS
;
ZPACK_SUB13	EQU	$
		TYX

		LDA	BOSS_START		;カメック退場した ?
		BPL	ZPACK_SUB13800		;  no: ZPACK_SUB13800

		LDA	#00020H			;ストップタイマーセット
		STA	ENTIM2,X		;
		LDA	#0FFFFH
		STA	ENTIM0,X

		STZ	BOSS_START		;カメックも消す

		INC	<ENWRK2,X

ZPACK_SUB13800	EQU	$

		RTS
;
ZPACK_SUB14	EQU	$
		TYX

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

		LDA	ENWRK8,X		;頭を垂れ終わった ?
		CLC				;
		ADC	#00002			;
		AND	#001FEH			;
		CMP	#00030H			;
		BNE	ZPACK_SUB14300		;  no: ZPACK_SUB14300

		LDA	#00020H
		STA	ENTIM2,X
		INC	<ENWRK2,X
		LDA	#00030H

ZPACK_SUB14300	EQU	$
ZPACK_SUB15300	EQU	$
		STA	ENWRK8,X
		JSR	ZPACK_SET
		JSR	ZPACK_HEAD_CHG

ZPACK_SUB14800	EQU	$
ZPACK_SUB15800	EQU	$

		RTS
;
ZPACK_SUB15	EQU	$
		TYX

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

		LDA	ENWRK8,X		;頭を上げ終わった ?
		SEC				;
		SBC	#00010H			;
		AND	#001FEH			;
		CMP	#001D0H			;
		BNE	ZPACK_SUB15300		;  no: ZPACK_SUB15300

		LDA	#0FC00H
		STA	ENYSPD,X
		LDA	#1000100001000000B	;ＢＧチェックなし
		STA	ENMOD1,X		;
		LDA	ENYPSL,X
		CLC
		ADC	#00010H
		STA	<ENWRK4,X
		INC	<ENWRK2,X
		LDA	#001D0H
		BRA	ZPACK_SUB15300
;
ZPACK_SUB16	EQU	$
		TYX

		LDA	ENYPSL,X		;元いた所より低くなった ?
		CMP	<ENWRK4,X		;
		BMI	ZPACK_SUB16100		;  no: ZPACK_SUB16100

		LDA	#1000100001000001B	;ＢＧチェック有り
		STA	ENMOD1,X		;

ZPACK_SUB16100	EQU	$
		LDA	ENDSYL,X		;画面下に消えた ?
		CMP	#00100H			;
		BMI	ZPACK_SUB16800		;  no: ZPACK_SUB16800

		LDA	#00080H			;ストップタイマーセット
		STA	ENTIM2,X		;
		INC	<ENWRK2,X

ZPACK_SUB16800	EQU	$

		RTS
;
ZPACK_SUB17	EQU	$
;ZPACK_SUB22	EQU	$
		TYX

;		LDY	PLMODE
;		BNE	ZPACK_SUB17100
;
;		LDA	#PDEM
;		STA	PLMODE
;
;ZPACK_SUB17100 EQU	$
		LDA	ENTIM2,X		;ストップ ?
		BNE	ZPACK_SUB17300		; yes: ZPACK_SUB17300

;;;;;;;;		STZ	BOSS_START		;カメックも消す
		INC	BOSS0FLG
		PLA
		JMP	>ENCLEAR

ZPACK_SUB17300	EQU	$
		CMP	#00030H
		BNE	ZPACK_SUB17800

;		LDA	#00180H
		LDA	#00260H
		STA	TILTCT
;		LDA	#00120H
		LDA	#001C0H
		STA	TILTCT2

ZPACK_SUB17800	EQU	$

		RTS
;
ZPACK_SUB30	EQU	$
		TYX

		LDA	ENCLOR,X
		EOR	#00002H
		STA	ENCLOR,X

		RTS
;
ZPACK_REV	EQU	$
ZPACK_YREV	EQU	$
		WORD	00010H,0FFF0H
ZPACK_REV2	EQU	$-2
ZPACK_YREV2	EQU	$-2
		WORD	00000H
;
ZPACK_OAM_SET	EQU	$
		JSL	>TROBJ_OAM_4x4

		LDA	ENCLOR,X
		AND	#00080H
		ASL	A
		ASL	A
		XBA
		TAY
		LDA	!ZPACK_YREV,Y
		STA	<EWORK2
		LDA	!ZPACK_YREV2,Y
		STA	<EWORK4
		LDY	ENMUKI,X		;頭の位置調整
		LDA	!ZPACK_REV,Y		;
		STA	<EWORK0			;
		LDA	!ZPACK_REV2,Y		;
						;
		I16				;
		LDY	ENOAML,X		;
		CLC				;
		ADC	<EWORKC			;
		CLC				;
		ADC	ENDSXL,X		;
		STA	SOAM_DX+0+8*0,Y		;
		STA	SOAM_DX+0+8*2,Y		;
		CLC				;
		ADC	<EWORK0			;
		STA	SOAM_DX+0+8*1,Y		;
		STA	SOAM_DX+0+8*3,Y		;
						;
		LDA	<EWORKE			;
		CLC				;
		ADC	<EWORK4			;
		CLC				;
		ADC	ENDSYL,X		;
		STA	SOAM_DX+2+8*0,Y		;
		STA	SOAM_DX+2+8*1,Y		;
		CLC				;
		ADC	<EWORK2			;
		STA	SOAM_DX+2+8*2,Y		;
		STA	SOAM_DX+2+8*3,Y		;

		LDA	<ENWRK2,X		;マザーパックンのデモ ?
		CMP	#00006			;
		BMI	ZPACK_O_SET0300		;  no: ZPACK_O_SET0300

		LDA	BOSS_START		;カラー操作中 ?
		BMI	ZPACK_O_SET0500		;
		CMP	#00002			;
		BPL	ZPACK_O_SET0500		;  no: ZPACK_O_SET0500

ZPACK_O_SET0300 EQU	$
		LDA	ENCOLD,X		;凍ってる ?
		BNE	ZPACK_O_SET0500		; yes: ZPACK_O_SET0500

		LDA	SOAM_DX+4+8*4,Y		;茎のカラー固定
		AND	#0F1FFH			;
		ORA	#00200H			;
		STA	SOAM_DX+4+8*4,Y		;
		LDA	SOAM_DX+4+8*5,Y		;
		AND	#0F1FFH			;
		ORA	#00200H			;
		STA	SOAM_DX+4+8*5,Y		;
		LDA	SOAM_DX+4+8*6,Y		;
		AND	#0F1FFH			;
		ORA	#00200H			;
		STA	SOAM_DX+4+8*6,Y		;

ZPACK_O_SET0500 EQU	$
		I8

		RTS
;
ZPACK_CHAR	EQU	$
		WORD	CIPCHD+60E0H+001H	;口閉じ
		WORD	CIPCHD+60C0H+001H	;口開け
;
ZPACK_SET	EQU	$
		LDA	ENCHPT,X		;回転オブジェ使ってる ?
		BNE	ZPACK_SET0800		;  no: ZPACK_SET0800

		LDA	ENWRK8,X
		LSR	A			;(R5) <- 回転角セット
		STA	R5			;
		TAY
		BMI	ZPACK_SET0100

		CLC
		ADC	#00100H

ZPACK_SET0100	EQU	$
		SEC
		SBC	#000C0H
		LSR	A
		LSR	A
		STA	R1
		LDA	R5
		SEC
		SBC	R1
		AND	#000FFH
		STA	R1

		LDY	<ENWRK3,X		;転送元アドレス＆バンクセット
		LDA	!ZPACK_CHAR,Y		;
		STA	R12			;(R12) <-- 転送元アドレスセット
		LDA	#BANK CIPCHD+60C0H+001H ;(R13) <-- 転送元バンクセット
		STA	R13			;

		LDA	ENWRK6,X		;(R4) <- 倍率セット
		STA	R0			;
		STA	R4			;

		LDA	#00C00H			;(R6) <-- 半径
		STA	R6

		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	M_ZPACK_SET

		LDX	<ENINDX

		INC	OBM7WF			;mode 7 OBJ chara DMA "ON"
		LDY	ENCLOR,X		;逆さパックン ?
		BPL	ZPACK_SET0800		;  no: ZPACK_SET0800

		LDA	CCWORK10
		EOR	#0FFFFH
		INC	A
		STA	CCWORK10

ZPACK_SET0800	EQU	$

		RTS
;
;************************************************************************
;*		initial ( ポンキーパックン )				*
;************************************************************************
ZPAC2IN		EQU	$			;-- zpac2in --
		JSL	>TROBJ_SR_4x4_CL
		LDA	#00100H			;初期倍率セット
		STA	ENWRK6,X		;

		LDA	#001C0H
		STA	ENWRK8,X

		LDA	#00003			;WRKA <- 3 ダメージカウンターセット
		STA	ENWRKA,X

		JSR	ZPAC2_SUB0100

		LDA	<ENCONT,X
		LDY	ENMUKI,X
		BEQ	ZPAC2IN0500

		CLC
		ADC	#00008

ZPAC2IN0500	EQU	$
		TAY
		LDA	!ZPAC2_S1_ANGCMP,Y	;回転角セット
		STA	ENWRKC,X

		JSR	ZPACK_SET

		RTL
;
;************************************************************************
;*		move	( ポンキーパックン )				*
;************************************************************************
;B		ENWRK0	オフセットＸ　ＰＯＳ．
;B		ENWRK1	オフセットＹ　ＰＯＳ．
;B		ENWRK2	ROUTINE MODE INDEX
;B		ENWRK3	頭のキャラパターン
;B		ENWRK4	玉の位置フラグ 0...左  2...右
;		ENWRK5
;		ENWRK6	倍率
;		ENWRK8	回転角
;		ENWRKA	ダメージカウンター
;		ENWRKC	目標回転角
;
;		ENCONT	口もご回数(SUB0)　／　吐き出し回数(SUB1)
;
;		ENTIM0	USE
;		ENTIM1	キャラパターンチェンジタイマー
;		ENTIM2
;		ENTIM3	ストップタイマー
;
ZPAC2_SUB	EQU	$
		WORD	ZPAC2_SUB0		;口もご
		WORD	ZPAC2_SUB1		;玉吐き出し
		WORD	ZPAC2_SUB2		;がぁ〜ん
		WORD	ZPAC2_SUB3		;やられとぅわぁー
;
ZPAC2MV		EQU	$			;-- zpac2mv --
		LDY	<ENWRK0,X
		TYA
		CPY	#000H
		BPL	ZPAC2MV0300

		ORA	#0FF00H

ZPAC2MV0300	EQU	$
		STA	<EWORKC
		STA	ECNTXW,X

		LDY	<ENWRK1,X
		TYA
		CPY	#000H
		BPL	ZPAC2MV0400

		ORA	#0FF00H

ZPAC2MV0400	EQU	$
		STA	<EWORKE
		STA	ECNTYW,X
;
		JSR	ZPACK_OAM_SET
;
		JSL	>ENMDCK
;
		TXY
		LDA	<ENWRK2,X
		ASL	A
		TAX
		JSR	(ZPAC2_SUB,X)
;
		JSR	ZPAC2_OBJCK
;
		JSR	ZPAC2_ANG_CALC
		JSR	ZPACK_SET

		LDY	CCWORK11		;口オフセットＸ　ＰＯＳ．
		STY	<ENWRK0,X		;

		LDY	CCWORK10		;口オフセットＹ　ＰＯＳ．
		STY	<ENWRK1,X		;

		RTL
;
ZPAC2_HEAD_ROT	EQU	$
		LDA	EPWIDX,X		;回転角セット
		EOR	#0FFFFH			;
		INC	A			;
		STA	R1			;
		LDA	EPWIDY,X		;
		EOR	#0FFFFH			;
		INC	A			;
		STA	R2			;
		M_CHIP	M_RAD_GET		;
		LDX	<ENINDX			;
		LDA	R0			;

ZPAC2_HEAD_ROT2 EQU	$
		STA	<EWORK0
		SEC
		SBC	ENWRKC,X
		CLC
		ADC	#00004
		CMP	#00008
		BCS	ZPAC2_HD_RT0200

		LDA	<EWORK0
		BRA	ZPAC2_HD_RT0600

ZPAC2_HD_RT0200 EQU	$
		BPL	ZPAC2_HD_RT0400

		CMP	#0FF00H
		BMI	ZPAC2_HD_RT0500

ZPAC2_HD_RT0300 EQU	$
		LDA	ENWRKC,X
		SEC
		SBC	#00004
		BRA	ZPAC2_HD_RT0600

ZPAC2_HD_RT0400 EQU	$
		CMP	#00100H
		BPL	ZPAC2_HD_RT0300

ZPAC2_HD_RT0500 EQU	$
		LDA	ENWRKC,X
		CLC
		ADC	#00004

ZPAC2_HD_RT0600 EQU	$
		AND	#001FEH
		STA	ENWRKC,X

		RTS
;
ZPAC2_OBJCK	EQU	$
		LDY	<ENWRK2,X		;ダメージ中 ?
		CPY	#002			;
		BPL	ZPAC2_OBJCK0800		; yea: ZPAC2_OBJCK0800

		LDY	ECRSFG,X		;誰かにあたった ?
		BEQ	ZPAC2_OBJCK0800		;  no: ZPAC2_OBJCK0800
		DEY				;敵と衝突した ?
		BPL	ZPAC2_OBJCK0300		; yes: ZPAC2_OBJCK0300

		JSL	>PLFLST
		RTS

ZPAC2_OBJCK0300 EQU	$
		LDA	ENMODE,Y
		CMP	#EMOVE
		BNE	ZPAC2_OBJCK0800
		LDA	ENSHOT,Y
		BEQ	ZPAC2_OBJCK0800

ZPACK_DEAD	EQU	$
		LDA	ENXSPD,Y
		PHP
		TYX
		JSL	>ENDEATH_SET_4
		LDA	#0000BH			;［Ｓ］
		JSL	>SOUND_3_ON

		LDY	#000
		PLP				;左から飛んできた ?
		BPL	ZPAC2_OBJCK0500		; yes: ZPAC2_OBJCK0500

		INY
		INY

ZPAC2_OBJCK0500 EQU	$
		STY	<ENWRK4,X
		LDA	#00020H
		STA	ENTIM3,X
		LDY	#002
		STY	<ENWRK2,X

ZPAC2_OBJCK0800 EQU	$

		RTS
;
ZPAC2_ANG_CALC	EQU	$
		LDY	#000			;回転角＆向きセット
		LDA	ENWRKC,X		;
		CLC				;
		ADC	#00080H			;
		AND	#001FEH			;
		CMP	#00100H-18H		;
		BMI	ZPAC2_A_C0100		;
		CMP	#00100H+18H		;
		BMI	ZPAC2_A_C0800		;
						;
		INY				;
		INY				;
						;
		LDA	ENWRKC,X		;
		SEC				;
		SBC	#00100H			;
		EOR	#0FFFFH			;
		INC	A			;
		BRA	ZPAC2_A_C0200		;
						;
ZPAC2_A_C0100	EQU	$			;
		LDA	ENWRKC,X		;
						;
ZPAC2_A_C0200	EQU	$			;
		AND	#001FEH			;
		STA	ENWRK8,X		;
		TYA				;
		STA	ENMUKI,X		;

ZPAC2_A_C0800	EQU	$

		RTS
;
ZPAC2_S0_ZADD	EQU	$
		WORD	00004H,0FFFCH
ZPAC2_S0_ZCMP	EQU	$
		WORD	00100H,000E0H
;
ZPAC2_SUB0	EQU	$
		TYX

		LDA	ENTIM3,X		;ストップ ?
		BNE	ZPAC2_SUB0800		; yes: ZPAC2_SUB0800

		LDA	<ENCONT,X
		AND	#00001
		ASL	A
		TAY
		LDA	!ZPAC2_S0_ZADD,Y
		STA	<EWORK0
		CLC
		ADC	ENWRK6,X
		STA	ENWRK6,X
		SEC
		SBC	!ZPAC2_S0_ZCMP,Y
		EOR	<EWORK0
		BMI	ZPAC2_SUB0500

		DEC	<ENCONT,X		;口もご終わり ?
		BPL	ZPAC2_SUB0500		;  no: ZPAC2_SUB0500

ZPAC2_SUB0100	EQU	$
		LDA	#00010H			;ストップタイマーセット
		STA	ENTIM3,X		;
		LDA	#00004			;たま吐き回数*2 セット
		STA	<ENCONT,X		;
		LDA	ENXPSL,X		;単発 ?
		AND	#00010H			;
		BNE	ZPAC2_SUB0200		;  no: ZPAC2_SUB0200

		LDY	#006
		STY	<ENCONT,X

ZPAC2_SUB0200	EQU	$
		LDA	#00001
		STA	<ENWRK2,X		;WRK2 <- 1 WRK3 <- 0

ZPAC2_SUB0500	EQU	$
		JSR	ZPAC2_HEAD_ROT

ZPAC2_SUB0800	EQU	$
ZPAC2_SUB1000	EQU	$

		RTS
;
ZPAC2_S1_ANGCMP EQU	$
		WORD	00190H,001A8H,001A8H,00198H	;左向き
		WORD	00170H,00158H,00158H,00168H	;右向き
;		WORD	00190H,00198H,001B0H	;左向き
;		WORD	00170H,00168H,00150H	;右向き
;
ZPAC2_SUB1	EQU	$
		TYX

		LDA	ENTIM1,X		;口を閉じる ?
		BNE	ZPAC2_SUB1080		;  no: ZPAC2_SUB1080

		LDY	#000			;頭のキャラパターンセット
		STY	<ENWRK3,X		;

ZPAC2_SUB1080	EQU	$
		LDA	ENTIM3,X		;ストップ ?
		BNE	ZPAC2_SUB1000		; yes: ZPAC2_SUB1000

		LDA	<ENCONT,X		;たま吐き終わり ?
		BPL	ZPAC2_SUB1100		;  no: ZPAC2_SUB1100

		LDA	#00010H			;ストップタイマーセット
		STA	ENTIM3,X		;
		LDA	#0000BH			;口もぐ回数セット
		STA	<ENCONT,X		;
		STZ	<ENWRK2,X		;WRK2 <- 0 ,WRK3 <- 0
		RTS

ZPAC2_SUB1100	EQU	$
		LDY	ENMUKI,X
		BEQ	ZPAC2_SUB1200

		CLC
		ADC	#00008

ZPAC2_SUB1200	EQU	$
		TAY
		LDA	!ZPAC2_S1_ANGCMP,Y	;回転角セット
		PHA
		PHY
		JSR	ZPAC2_HEAD_ROT2
		PLY
		PLA				;回転し終わった ?
		CMP	ENWRKC,X		;
		BNE	ZPAC2_SUB1000		;  no: ZPAC2_SUB1000

		LDA	ENXPSL,X		;単発 ?
		AND	#00010H			;
		BNE	ZPAC2_SUB1300		;  no: ZPAC2_SUB1300

		STZ	<ENCONT,X

ZPAC2_SUB1300	EQU	$
		DEC	<ENCONT,X
		DEC	<ENCONT,X

		LDA	#00010H			;口閉じタイマーセット
		STA	ENTIM1,X		;
		LDA	#00040H			;ストップタイマーセット
		STA	ENTIM3,X		;
		LDY	#002			;頭のキャラパターンセット
		STY	<ENWRK3,X		;

		LDA	#STAMA
		JSL	>ENINSR_I
		BCS	ZPAC2_SUB1600

		LDA	#0FFFFH
		STA	<ENCONT,X
		RTS

ZPAC2_SUB1600	EQU	$
		LDA	ENXPSL,X
		CLC
		ADC	<EWORKC
		SEC
		SBC	#00008H
		STA	ENXPSL,Y

		LDA	ENYPSL,X
		CLC
		ADC	<EWORKE
		SEC
		SBC	#00008
		STA	ENYPSL,Y

		LDA	#00040H
		STA	ENGPOW,Y
		LDA	#00400H
		STA	ENGMAX,Y

		PHY
		LDA	#0FA00H
		STA	R6
		LDA	ENWRKC,X
		STA	R1
		M_CHIP	M_ENMY_1P_ROT
		LDX	<ENINDX
		PLY
		LDA	R0
		STA	ENXSPD,Y
		LDA	R1
		STA	ENYSPD,Y
		LDA	ENMUKI,X
		STA	ENMUKI,Y

		LDA	#00014H			;［Ｓ］
		JSL	>SOUND_3_ON

		RTS
;
ZPAC2_S2_ANGAND EQU	$
		WORD	0FFF0H,0FFF0H
		WORD	0FFFCH,0FFFCH
ZPAC2_S2_ANGADD EQU	$
		WORD	0FFF0H,00010H
		WORD	0FFFCH,00004H
ZPAC2_S2_ANGCMP EQU	$
		WORD	00140H,001C0H
		WORD	00100H,00000H
ZPAC2_S2_COL	EQU	$
		HEX	22,22,24,20
;
ZPAC2_SUB2	EQU	$
		TYX

		LDA	ENTIM3,X		;ストップ ?
		BNE	ZPAC2_SUB2100		; yes: ZPAC2_SUB2100

		LDA	ENMYNO,X
		CMP	#ZPAC2
		BNE	ZPAC2_SUB2020

		LDY	ENWRKA,X
		LDA	!ZPAC2_S2_COL-1,Y
		AND	#000FFH
		STA	ENCLOR,X

		DEC	ENWRKA,X		;ラストがぁ〜ん ?
		BNE	ZPAC2_SUB2080		;  no: ZPAC2_SUB2080

ZPAC2_SUB2020	EQU	$
;		LDY	#004
;		LDA	ENWRKC,X
;		CMP	#001C0H
;		BEQ	ZPAC2_SUB2040
;
;		INY
;		INY
;
;ZPAC2_SUB2040	EQU	$
;		STY	<ENWRK4,X

		LDA	#00025H			;［Ｓ］
		JSL	>SOUND_3_ON

		INC	<ENWRK2,X
		RTS

ZPAC2_SUB2080	EQU	$
		LDA	#00010H			;ストップタイマーセット
		STA	ENTIM3,X		;
		LDA	#0000BH			;口もぐ回数セット
		STA	<ENCONT,X		;
		STZ	<ENWRK2,X		;WRK2 <- 0 WRK3 <- 0

		RTS

ZPAC2_SUB2100	EQU	$
		LDY	<ENWRK4,X		;回転角計算
		BMI	ZPAC2_SUB2600		;
						;
		LDA	!ZPAC2_S2_ANGAND,Y	;
		AND	ENWRKC,X		;
		CLC				;
		ADC	!ZPAC2_S2_ANGADD,Y	;
		AND	#001FEH			;
		CMP	!ZPAC2_S2_ANGCMP,Y	;
		BNE	ZPAC2_SUB2500		;
						;
		LDA	!ZPAC2_S2_ANGCMP,Y	;
		LDY	#0FFH			;
		STY	<ENWRK4,X		;
						;
ZPAC2_SUB2500	EQU	$			;
		STA	ENWRKC,X		;

ZPAC2_SUB2600	EQU	$
		LDA	ENMYNO,X
		CMP	#ZPAC2
		BNE	ZPAC2_SUB2800

		LDA	FRCNT2
		BIT	#00003
		BNE	ZPAC2_SUB2800

		AND	#00004
		LSR	A
		LSR	A
		CLC
		ADC	ENWRKA,X
		TAY
		LDA	!ZPAC2_S2_COL-1,Y
		AND	#000FFH
		STA	ENCLOR,X

ZPAC2_SUB2800	EQU	$

		RTS
;
ZPAC2_SUB3	EQU	$
		TYX

		LDA	ENWRK6,X		;十分小さくなった ?
		SEC				;
		SBC	#00004			;
		CMP	#00030H			;
		BPL	ZPAC2_SUB3500		;  no: ZPAC2_SUB3500

		M8
		LDA	#0FFH
		STA	ENRETN,X
		M16

		PLA
		JMP	>ENDEATH_SET_4

ZPAC2_SUB3500	EQU	$
		STA	ENWRK6,X

		LDA	ENTIM1,X		;色を替える ?
		BNE	ZPAC2_SUB3800		;  no: ZPAC2_SUB3800

		LDA	#00004
		STA	ENTIM1,X

		LDA	ENCLOR,X
		EOR	#0000EH
		STA	ENCLOR,X

ZPAC2_SUB3800	EQU	$
		RTS
;
;		BRA	ZPAC2_SUB2100
;
;************************************************************************
;*		initial ( bound bros. )					*
;************************************************************************
BBROS_PAIR_XPOS EQU	$
		WORD	00030H,0FFD0H
BBROS_PAIR_XSPD EQU	$
BBROS_S01_XSPD	EQU	$
		WORD	0FEC0H,00140H
;
BBROSIN		EQU	$			;-- bbrosin --
		JSL	>TROBJ_SR_4x4_CL

		LDA	#00003			;足の長さセット
		STA	ENWRK8,X
		LDA	#00100H			;初期倍率セット
		STA	ENWRK6,X

		M8
		STZ	ENWRKA,X		;兄弟のフラグセット（兄貴）
		M16

		LDY	ENWRKC,X		;食べられてた ?
		BMI	BBROSIN0100		; yes: BBROSIN0100

		LDA	ENXPSL,X		;弟もセットする ?
		AND	#00010H			;
		BEQ	BBROSIN0480		; yes: BBROSIN0480

BBROSIN0100	EQU	$
		LDA	#003FFH			;WRKC <- 兄弟はいない
		STA	ENWRKC,X		;WRKD <- ダメージカウンター

		LDY	#BBROS_RMODE30
		STY	<ENWRK2,X

		LDA	#00034H
		STA	ENGPOW,X
		LDA	#00340H
		STA	ENGMAX,X

		LDA	#00002			;自分じゃない方が下になる
		STA	BBROSFLG		;
		AND	<ENWRK4,X		;兄弟ＯＦＦ
		STA	<ENWRK4,X		;

		JSR	BBROS_ROT_SET

		RTL

BBROSIN0480	EQU	$
		LDY	ENMUKI,X
		LDA	!BBROS_PAIR_XPOS,Y
		STA	<EWORK0
		LDA	!BBROS_PAIR_XSPD,Y
		STA	<EWORK4

		LDA	#BBROS
		JSL	>ENINSR
		BCC	BBROSIN0500

		STY	<EWORK2

		TYX
		JSL	>TROBJ_SR_4x4
		BCS	BBROSIN0600

		JSL	>ENCLEAR

		LDX	<ENINDX

BBROSIN0500	EQU	$
		JMP	>ENCLEAR

BBROSIN0600	EQU	$
		LDX	<ENINDX
		LDY	<EWORK2
		LDA	ENXPSL,X
		CLC
		ADC	<EWORK0
		STA	ENXPSL,Y
		LDA	ENYPSL,X
		STA	ENYPSL,Y
		LDA	ENMUKI,X
		STA	ENMUKI,Y
		TYA
		ORA	#00300H
		STA	ENWRKC,X
		TXA
		ORA	#00300H
		STA	ENWRKC,Y
		TXA
		XBA
		ORA	#00002
;;;;;;;;		LDA	#00002			;兄弟のフラグセット（弟）
		STA	ENWRKA,Y
		INC	A			;[ LDA	#003 ]
		STA	ENWRK8,Y		;足の長さセット
		LDA	#00100H			;初期倍率セット
		STA	ENWRK6,Y		;
		LDA	<EWORK4
		STA	ENXSPD,Y
		LDA	#0FB00H
		STA	ENYSPD,Y
		LDA	#00500H/4
		STA	ENWRK0,Y

		LDA	#BBROS_RMODE10
		STA	ENWRK2,Y

		M8
		LDA	ENRETN,X
		STA	ENRETN,Y
		TYA
		STA	ENWRKB,X
		M16

		TYX
		JSR	BBROS_ROT_SET

		LDX	<ENINDX
		STZ	BBROSFLG		;兄貴が下
		JSR	BBROS_ROT_SET

BBROSIN0800	EQU	$

		RTL
;
;************************************************************************
;*		move	( bound bros. )					*
;************************************************************************
;		BBROSFLG	下になるやつのフラグ 0...兄 2...弟
;
;		ENWRK0	ジャンプ中の倍率計算用データ
;		ENWRK2	ROUTINE MODE INDEX
;		ENWRK4	プレイヤー＆兄弟乗ってるフラグ 0..NO 1..PLAYER 2..BROS. 3..PLAYER & BROS.
;		ENWRK6	倍率
;		ENWRK8	足の長さ
;B		ENWRKA	兄弟のフラグ   0...兄 2...弟
;B		ENWRKB	兄弟の ROUTINE INDEX（ENRETNチェック用）
;B		ENWRKC	兄弟の ROUTINE INDEX
;B		ENWRKD	ダメージカウンター
;
;		ENCONT	伸び縮みカウンター
;
;		ENXMAX	EAT処理チェックフラグ
;
;		ENTIM0
;		ENTIM1
;		ENTIM2	USE
;		ENTIM3	プレイヤーチェックロックタイマー
;
;		EWORKE	頭のＹ座標（ BBROS_PLCHK でセット）
;
BBROS_SUB	EQU	$
;---------------< 下のやつの処理 >-----------------
BBROS_00	EQU	$
		WORD	BBROS_SUB00		;上に乗られるのを待ってる
BBROS_01	EQU	$
		WORD	BBROS_SUB01		;ひしゃげ＆上のやつを弾く
BBROS_02	EQU	$
		WORD	BBROS_SUB02		;のびる
BBROS_03	EQU	$
		WORD	BBROS_SUB03		;元に戻る
;---------------< 上のやつの処理 >-----------------
BBROS_10	EQU	$
		WORD	BBROS_SUB10		;上昇チェック
BBROS_11	EQU	$
		WORD	BBROS_SUB11		;自分でジャンプした後の着地チェック
BBROS_12	EQU	$
		WORD	DUMMY_SUB		;兄弟の上に乗った
BBROS_13	EQU	$
		WORD	BBROS_SUB13		;下のやつに弾かれた後の着地チェック
BBROS_14	EQU	$
		WORD	BBROS_SUB14		;着地びよびよ
BBROS_15	EQU	$
		WORD	BBROS_SUB15		;自分でジャンプ！！
;---------------< プレイヤーだけが乗ってる >----------------
BBROS_20	EQU	$
		WORD	BBROS_SUB20		;ひしゃげ＆上のプレイヤーを弾く（兄弟チェック）
BBROS_21	EQU	$
		WORD	BBROS_SUB21		;元に戻る（身の振り方を考える）
;---------------< 一匹になった >----------------
BBROS_30	EQU	$
		WORD	BBROS_SUB30		;倍率調整（姿勢をノーマルにする）
BBROS_31	EQU	$
		WORD	BBROS_SUB31		;自分でジャンプ！！
BBROS_32	EQU	$
		WORD	BBROS_SUB32		;上昇チェック
BBROS_33	EQU	$
		WORD	BBROS_SUB33		;自分でジャンプした後の着地チェック
;
BBROS_RMODE00	EQU	(BBROS_00-BBROS_SUB)/2
BBROS_RMODE01	EQU	(BBROS_01-BBROS_SUB)/2
BBROS_RMODE02	EQU	(BBROS_02-BBROS_SUB)/2
BBROS_RMODE03	EQU	(BBROS_03-BBROS_SUB)/2
BBROS_RMODE10	EQU	(BBROS_10-BBROS_SUB)/2
BBROS_RMODE11	EQU	(BBROS_11-BBROS_SUB)/2
BBROS_RMODE12	EQU	(BBROS_12-BBROS_SUB)/2
BBROS_RMODE13	EQU	(BBROS_13-BBROS_SUB)/2
BBROS_RMODE14	EQU	(BBROS_14-BBROS_SUB)/2
BBROS_RMODE15	EQU	(BBROS_15-BBROS_SUB)/2
BBROS_RMODE20	EQU	(BBROS_20-BBROS_SUB)/2
BBROS_RMODE21	EQU	(BBROS_21-BBROS_SUB)/2
BBROS_RMODE30	EQU	(BBROS_30-BBROS_SUB)/2
BBROS_RMODE31	EQU	(BBROS_31-BBROS_SUB)/2
BBROS_RMODE32	EQU	(BBROS_32-BBROS_SUB)/2
BBROS_RMODE33	EQU	(BBROS_33-BBROS_SUB)/2
;
BBROSMV		EQU	$			;-- bbrosmv --
		LDY	ENYUSN,X
		BMI	BBROSMV0100

		JSR	BBROS_OAM_SET

BBROSMV0100	EQU	$
		JSR	BBROS_BROS_ECHK

		JSL	>ENMDCK
;
		LDA	#00018H			;R0 <- どんぶりの直径
		STA	R0
		LDA	#0000EH			;R1 <- 足の位置
		STA	R1
		LDA	ENYPSL,X		;R2 <- ENYPSL
		STA	R2
		LDA	#00200H
		SEC
		SBC	ENWRK6,X		;R6 <- 倍率
		STA	R6
		LDA	ENWRK8,X		;R3 <- 足の長さ
		STA	R3

		M_CHIP	M_BBROS_B_REV

		LDX	<ENINDX
		LDA	R0
		STA	<EWORKE

		JSR	BBROS_ENCHK
		JSR	BBROS_PLCHK

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

		JSR	BBROS_ROT_SET

BBROS_CHECK0000 EQU	$

		RTL
;
BBROS_CHECK	EQU	$
;		LDA	ENMYNO,X
		CMP	#BBROS
		BNE	BBROS_CHECK0000

		JSR	BBROS_B_ECHK002
		JMP	>ENCLEAR_NORETN
;
BBROS_O_SCHR	EQU	$
		WORD	0009EH,0002EH,0002FH
BBROS_O_YREV	EQU	$
		WORD	0FFFFH,00001H,00003H
;
BBROS_OAM_SET	EQU	$
		LDY	#000
		LDA	<ENWRK2,X		;プレイヤーだけ乗ってる ?
		CMP	#BBROS_RMODE20		;
		BEQ	BBROS_O_SET0100		;
		CMP	#BBROS_RMODE21		;
		BEQ	BBROS_O_SET0100		; yes: BBROS_O_SET0100

		LDA	ENCBFG,X		;地面に着いてる ?
		LSR	A			;
		BCS	BBROS_O_SET0300		; yes: BBROS_O_SET0300

;		LDA	ENWRKA,X		;下にいる ?
;		AND	#000FFH			;
;		CMP	BBROSFLG		;
;		BEQ	BBROS_O_SET0300		; yes: BBROS_O_SET0300

		LDA	<ENWRK2,X
		CMP	#BBROS_RMODE12		;兄弟の上に乗った ?
		BEQ	BBROS_O_SET0300		; yes: BBROS_O_SET0300（偏平足）
;		CMP	#BBROS_RMODE15		;自分でジャンプ！！ ?
;		BEQ	BBROS_O_SET0100		; yes: BBROS_O_SET0100（バタ足）
		CMP	#BBROS_RMODE14		;着地びよびよ ?
		BEQ	BBROS_O_SET0100		; yes: BBROS_O_SET0100（バタ足）
		CMP	#BBROS_RMODE31		;自分でジャンプ！！ ?
		BNE	BBROS_O_SET0200		;  no: BBROS_O_SET0200

BBROS_O_SET0100 EQU	$
		LDA	ENTIM2,X
		BEQ	BBROS_O_SET0300

		INY
		INY
		BRA	BBROS_O_SET0300

BBROS_O_SET0200 EQU	$
		INY
		INY

		LDA	ENTIM2,X
		BNE	BBROS_O_SET0300

		INY
		INY

BBROS_O_SET0300 EQU	$
		LDA	!BBROS_O_SCHR,Y
		STA	<EWORK0
		LDA	!BBROS_O_YREV,Y
		STA	ENWRK8,X

		I16
		LDY	ENOAML,X
		BMI	BBROS_O_SET0700

		LDA	SOAM_DX+4+8*0,Y
		AND	#0FF00H
		ORA	<EWORK0
		STA	SOAM_DX+4+8*0,Y
		LDA	SOAM_DX+4+8*1,Y
		AND	#0FF00H
		ORA	<EWORK0
		STA	SOAM_DX+4+8*1,Y

		TYA
		CLC
		ADC	#008*2
		TAY
		PHY

		JSL	>TROBJ_OAM_4x4_I

		I16
		PLY
		LDA	#00004
		STA	<EWORK2
		LDA	ENWRK8,X
		STA	<EWORK0

BBROS_O_SET0500 EQU	$
		LDA	SOAM_DX+2+8*0,Y
		SEC
		SBC	<EWORK0
		STA	SOAM_DX+2+8*0,Y

		TYA
		CLC
		ADC	#00008
		TAY

		DEC	<EWORK2
		BNE	BBROS_O_SET0500

BBROS_O_SET0700 EQU	$
		I8

BBROS_ENCHK0000 EQU	$

		RTS
;
BBROS_ENCHK	EQU	$
		TXA
		STA	R1
		M_CHIP	MY_ENCROS2

BBROS_ENCHK0040 EQU	$
		LDX	<ENINDX
		LDY	R14
		BMI	BBROS_ENCHK0000

		LDA	ENMODE,Y
		CMP	#EMOVE
		BNE	BBROS_ENCHK0000
		LDA	ENSHOT,Y		;なんか、あたってきよった ?
		BNE	BBROS_ENCHK0080		; yes: BBROS_ENCHK0080

BBROS_EBCHK0060 EQU	$
		LDX	#BANK MY_ENCROS2
		LDA	R15
		JSL	>CHIPON
		BRA	BBROS_ENCHK0040

BBROS_ENCHK0080 EQU	$
		LDA	ENMOD1,Y		;アイテムかリフト ?
		AND	#0100000000000000B	;
		BNE	BBROS_EBCHK0060		; yes: BBROS_EBCHK0060

		TYX
		JSL	>ENDEATH_SET_4

BBROS_TO_HEAVEN EQU	$
		JSL	>TIMKN_3_SET

		LDY	ENWRKB,X		;兄弟は生きてる ?
		BMI	BBROS_ENCHK0300		;  no: BBROS_ENCHK0300

		M8
		LDA	#0FFH
		STA	ENWRKB,Y
		M16

BBROS_ENCHK0300 EQU	$
		M8
		LDA	#0FFH
		STA	ENRETN,X
		M16

		PLA			;直接ＲＴＬ
		JMP	>ENDEATH_SET_3
;
BBROS_TIMKN_XSP EQU	$
		WORD	00000H,0FE6BH,00195H
BBROS_TIMKN_YSP EQU	$
		WORD	0FE00H,0FE11H,0FE11H
;
TIMKN_3_SET	EQU	$
		PHB
		PHK
		PLB
		LDA	TIMER
		STA	<EWORK6
		LDY	#003*2

TIMKN_3_SET0100 EQU	$
		TYA
		STA	<EWORK0
		LDA	!BBROS_TIMKN_XSP-2,Y
		STA	<EWORK2
		LDA	!BBROS_TIMKN_YSP-2,Y
		STA	<EWORK4

		LDA	<EWORK6			;３０秒分ある ?
		CLC				;
		ADC	#0000AH			;
		STA	<EWORK6			;
		CMP	#(01EH+1)*0AH		;
		BMI	TIMKN_3_SET0300		;  no: TIMKN_3_SET0300

		LDA	#COIN1
		BRA	TIMKN_3_SET0400

TIMKN_3_SET0300 EQU	$
		LDA	#TIMKN

TIMKN_3_SET0400 EQU	$
		JSL	>ENINSR_I
		BCC	TIMKN_3_SET0500

		LDA	ENXPSL,X
		STA	ENXPSL,Y
		LDA	ENYPSL,X
		STA	ENYPSL,Y
		LDA	<EWORK2
		STA	ENXSPD,Y
		LDA	<EWORK4
		STA	ENYSPD,Y
		LDA	#00011H			;プレイヤーチェックロックタイマーセット
		STA	ENTIM2,Y		;

		LDY	<EWORK0
		DEY
		DEY
		BNE	TIMKN_3_SET0100

TIMKN_3_SET0500 EQU	$
		PLB
		RTL
;
BBROS_BROS_ECHK EQU	$			;-- bros. exist check --
		LDA	ENCOLD,X		;凍ってる ?
		BEQ	BBROS_B_ECHK001		;  no: BBROS_B_ECHK001

		STZ	ENMOD1,X		;ＢＧチェックなし
		LDA	#0011000101010101B	;範囲クリアＯＮ
		STA	ENMOD2,X
		BRA	BBROS_B_ECHK002

BBROS_B_ECHK001 EQU	$
		LDA	ENMODE,X		;生きてる ?
		CMP	#EMOVE			;
		BEQ	BBROS_B_ECHK100		; yes: BBROS_B_ECHK100

		CMP	#EEATM
		BEQ	BBROS_B_ECHK008

BBROS_B_ECHK002 EQU	$
		LDY	ENWRKB,X		;兄弟は生きてる ?
		BPL	BBROS_B_ECHK003		; yes: BBROS_B_ECHK003

		RTS

BBROS_B_ECHK003 EQU	$
		M8
		LDA	#0FFH
		STA	ENWRKB,Y
		STA	ENRETN,X
		STA	ENWRKB,X
		M16
		BRA	BBROS_B_ECHK009

BBROS_B_ECHK008 EQU	$
		LDA	ENXMAX,X		;すでにEAT処理は済ませている ?
		BNE	BBROS_B_ECHK080		; yes: BBROS_B_ECHK080

BBROS_B_ECHK009 EQU	$
		LDY	ENWRKC,X		;兄弟と一緒に攻撃してる ?
		BMI	BBROS_B_ECHK080		;  no: BBROS_B_ECHK080

		M8
		LDA	#0FFH
		STA	ENWRKC,Y
		STA	ENWRKC,X
		M16
		LDA	#BBROS_RMODE30
		STA	ENWRK2,Y
		LDA	ENWRKA,Y
		EOR	#00002
		STA	BBROSFLG
		LDA	#00034H
		STA	ENGPOW,Y
		LDA	#00340H
		STA	ENGMAX,Y
		STA	ENXMAX,X
		LDA	ENWRK4,Y		;兄弟ＯＦＦ
		AND	#00002H			;
		STA	ENWRK4,Y		;

BBROS_B_ECHK080 EQU	$

		PLA
		RTL

BBROS_B_ECHK100 EQU	$
		JSL	>DISPCK3		;範囲外 ?
		BCC	BBROS_B_ECHK280		;  no: BBROS_B_ECHK280

		LDY	ENWRKC,X		;兄弟と一緒に攻撃してる ?
		BMI	BBROS_B_ECHK130		;  no: BBROS_B_ECHK130

		TYX				;兄弟も範囲外 ?
		JSL	>DISPCK3		;
		BCC	BBROS_B_ECHK200		;  no: BBROS_B_ECHK200

		JSL	>ENCLEAR

BBROS_B_ECHK130 EQU	$
		LDX	<ENINDX

		LDY	ENWRKB,X		;兄弟は生きてる ?
		BMI	BBROS_B_ECHK180		;  no: BBROS_B_ECHK180

		M8
		LDA	#0FFH
		STA	ENWRKB,Y
		STA	ENRETN,X
		M16

BBROS_B_ECHK180 EQU	$
		PLA			;直接ＲＴＬ
		JMP	>ENCLEAR

BBROS_B_ECHK200 EQU	$
		LDX	<ENINDX

BBROS_B_ECHK280 EQU	$

		RTS
;
BBROS_PC_XSPD	EQU	$
		WORD	00100H,0FF00H
;
BBROS_PLCHK	EQU	$
		LDY	PLEATFG			;プレイヤー食われてる ?
		BNE	BBROS_PLCHK0450		; yes: BBROS_PLCHK0450

		CPX	PONLFFG			;プレイヤーすでに乗ってる ?
		BNE	BBROS_PLCHK0500		;  no: BBROS_PLCHK0500

		LDA	<ENWRK4,X		;プレイヤーすでに乗ってる ?
		AND	#00002			;
		BEQ	BBROS_PLCHK0500		;  no: BBROS_PLCHK0500

		LDA	PLBGCR			;プレイヤーの足がＢＧにあたってる ?
		BIT	#0000000000000111B	;
		BNE	BBROS_PLCHK0400		; yes: BBROS_PLCHK0400

		LDY	ENYSPD+1,X		;上昇中 ?
		BPL	BBROS_PLCHK0200		;  no: BBROS_PLCHK0200

		AND	#0000000000011000B	;頭がＢＧにあたってる ?
		BEQ	BBROS_PLCHK0200		;  no: BBROS_PLCHK0200

		STZ	ENYSPD,X
		LDA	ENYPSL,X
		SEC
		SBC	ENMOVY,X
		STA	ENYPSL,X
		LDA	ECENTY,X
		SEC
		SBC	ENMOVY,X
		STA	ECENTY,X
		STZ	ENMOVY,X

BBROS_PLCHK0200 EQU	$
		LDA	PWIDEX			;プレイヤー素直に乗ってる ?
		CLC				;
		ADC	EWIDEX,X		;
		ASL	A			;
		STA	<EWORK0			;
		LSR	A			;
		CLC				;
		ADC	PCENTX			;
		SEC				;
		SBC	ECENTX,X		;
		CMP	<EWORK0			;
		BCS	BBROS_PLCHK0400		;  no: BBROS_PLCHK0400

		LDY	PLYSPD+1		;プレイヤー上昇中 ?
		BPL	BBROS_PLCHK0580		;  no: BBROS_PLCHK0580

BBROS_PLCHK0400 EQU	$
		LDA	#00010H			;プレイヤーチェックロックタイマーセット
		STA	ENTIM3,X		;

BBROS_PLCHK0450 EQU	$
		LDA	<ENWRK4,X		;プレイヤーＯＮフラグクリア
		AND	#00001			;
		STA	<ENWRK4,X		;

		CPX	PONLFFG
		BNE	BBROS_PLCHK0480

		STZ	PONLFFG

BBROS_PLCHK0480 EQU	$

		RTS

BBROS_PLCHK0500 EQU	$
		LDA	PWIDEX			;プレイヤーが乗ってきた ?
		CLC				;
		ADC	EWIDEX,X		;
		ASL	A			;
		STA	<EWORK0			;
		LSR	A			;
		CLC				;
		ADC	PCENTX			;
		SEC				;
		SBC	ECENTX,X		;
		CMP	<EWORK0			;
		BCS	BBROS_PLCHK0450		;
						;
		LDA	<EWORKE			;
		SEC				;
		SBC	PWIDEY			;
		SEC				;
		SBC	PCENTY			;
		BPL	BBROS_PLCHK0450		;
		CMP	#0FFF0H			;
		BCS	BBROS_PLCHK0550		; yes: BBROS_PLCHK0550

BBROS_PLCHK0540 EQU	$
		JMP	BBROS_PLCHK0800

BBROS_PLCHK0550 EQU	$
		LDY	PLYSPD+1		;プレイヤー上昇中 ?
		BMI	BBROS_PLCHK0540		; yes: BBROS_PLCHK0540

		LDA	PLBGCR			;プレイヤー、頭を打ってる ?
		BIT	#0000000000011000B	;
		BEQ	BBROS_PLCHK0560		;  no: BBROS_PLCHK0560

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

BBROS_PLCHK0560 EQU	$
		LDY	PLDOSN			;どすん中 ?
		BEQ	BBROS_PLCHK0570		;  no: BBROS_PLCHK0570

		JMP	BBROS_TO_HEAVEN

BBROS_PLCHK0570 EQU	$
		LDY	PONLFFG
		BEQ	BBROS_PLCHK0577
		CPX	PONLFFG
		BNE	BBROS_PLCHK0800

BBROS_PLCHK0577 EQU	$
		STX	PONLFFG

		LDA	<ENWRK4,X		;プレイヤーＯＮフラグセット
		ORA	#00002			;
		STA	<ENWRK4,X		;

BBROS_PLCHK0580 EQU	$
		LDA	ENCBFG,X		;地面に着いてる ?
		AND	#00001H			;
		BEQ	BBROS_PLCHK0700		;  no: BBROS_PLCHK0700

		LDA	<ENWRK4,X		;兄弟が乗ってる ?
		AND	#00001			;
		BNE	BBROS_PLCHK0700		; yes: BBROS_PLCHK0700

		LDY	<ENWRK2,X		;プレイヤーが乗ってる ?
		CPY	#BBROS_RMODE20		;
		BEQ	BBROS_PLCHK0700		; yes: BBROS_PLCHK0700

		LDA	#00004
		STA	ENTIM2,X
		LDY	#BBROS_RMODE20
		STY	<ENWRK2,X

		STZ	PLXSPD
		STZ	PLMVSP

BBROS_PLCHK0700 EQU	$
		LDA	<EWORKE			;プレイヤーＹ　ＰＯＳ．補正
		SEC				;
		SBC	PWIDEY			;
		SEC				;
		SBC	PCENTY			;
		CLC				;
		ADC	PLYPSL			;
		STA	PLYPSL			;

		LDA	#0000000110000000B	;
		LDY	ENMOVX+1,X		;
		BMI	BBROS_PLCHK0780		;
						;
		LDA	#0000000001100000B	;
						;
BBROS_PLCHK0780 EQU	$			;
		AND	PLBGCR			;
		BNE	BBROS_PLCHK0790		;

		LDA	PLXPSL
		CLC
		ADC	ENMOVX,X
		STA	PLXPSL

BBROS_PLCHK0790 EQU	$
		STZ	PLYSPD
		STZ	PLDOSN
		INC	ONLFFG

		RTS

BBROS_PLCHK0800 EQU	$
		LDY	ECRSFG,X		;プレイヤーと接触してる ?
		BPL	BBROS_PLCHK1800		;  no: BBROS_PLCHK1800

		JSL	>PLFLST

BBROS_PLCHK1800 EQU	$
		RTS
;
BBROS_ROT_SET	EQU	$
		LDA	ENWRK6,X		;(R6) <- Ｘ倍率セット
		STA	R6
		LDA	#00200H			;(R11) <- Ｙ倍率セット
		SEC
		SBC	R6
		STA	R11			;

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

		LDA	#BANK CIPCHD2+00E0H+001 ;chara data bank set
		STA	R13

		LDA	#CIPCHD2+00E0H+001	;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	C_32_ZOOM_XY

		LDX	<ENINDX

		INC	OBM7WF			;mode 7 OBJ chara DMA "ON"

		RTS
;
BBROS_SUB00	EQU	$
		TYX
;
BBROS_B_ONCHK	EQU	$
		LDY	ENWRKC,X		;兄弟は上昇中 ?
		BMI	BBROS_B_O0800

		LDA	ENYSPD,Y		;
		BMI	BBROS_B_O0800		; yes: BBROS_B_O0800

		LDA	ENXPSL,X		;兄弟が、上に乗ってきた ?
		SEC				;
		SBC	ENXPSL,Y		;
		CLC				;
		ADC	#00010H			;
		CMP	#00020H			;
		BCS	BBROS_B_O0800		;
						;
		LDA	<EWORKE			;
		SEC				;
		SBC	#0000EH			;
		STA	<EWORK0			;
		SEC				;
		SBC	ENYPSL,Y		;
		BPL	BBROS_B_O0800		;
						;
		CMP	#0FFF8H			;
		BMI	BBROS_B_O0800		;  no: BBROS_B_O0800

		LDA	<EWORK0
		STA	ENYPSL,Y
		LDA	#00000
		STA	ENYSPD,Y
		STA	ENGPOW,Y
		STA	ENXSPD,Y
		LDA	#00002
		STA	ENTIM2,Y
		LDA	#BBROS_RMODE12
		STA	ENWRK2,Y

		INC	<ENWRK4,X		;兄弟ＯＮ
		LDY	#BBROS_RMODE01
		STY	<ENWRK2,X

BBROS_B_O0800	EQU	$

		RTS
;
BBROS_SUB01	EQU	$
		TYX

		LDA	ENWRK6,X		;ひしゃげ切った ?
		CMP	#00160H			;
		BMI	BBROS_SUB01300		;  no: BBROS_SUB01300

		LDY	ENWRKC,X
		LDA	ENMODE,Y		;上のやつ生きてる ?
		CMP	#EMOVE			;
		BNE	BBROS_SUB01100		;  no: BBROS_SUB01100

		LDA	#0FA00H
		STA	ENYSPD,Y
		LDA	#00034H
		STA	ENGPOW,Y
		LDA	#00340H
		STA	ENGMAX,Y
		LDA	#00004
		STA	ENTIM2,Y
		LDA	#00600H/4
		STA	ENWRK0,Y
		PHY
		LDA	ENMUKI,Y
		TAY
		LDA	!BBROS_S01_XSPD,Y
		PLY
		STA	ENXSPD,Y
		LDA	#BBROS_RMODE13
		STA	ENWRK2,Y
		LDA	#00034H			;［Ｓ］
		JSL	>SOUND_3_ON

BBROS_SUB01100	EQU	$
		LDA	<ENWRK4,X		;プレイヤー乗ってた ?
		AND	#00002			;
		BEQ	BBROS_SUB01200		;  no: BBROS_SUB01200

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

BBROS_SUB01200	EQU	$
		STZ	<ENWRK4,X		;兄弟ＯＦＦ
		INC	<ENWRK2,X
		LDA	#00160H
		BRA	BBROS_SUB01500

BBROS_SUB01300	EQU	$
		CLC
		ADC	#00008H

BBROS_SUB01500	EQU	$
		STA	ENWRK6,X
		LDY	ENWRKC,X
		STA	ENWRK6,Y

		LDA	<EWORKE			;上に乗ってる兄弟のＹ　ＰＯＳ．補正
		SEC				;
		SBC	#0000EH			;
		STA	ENYPSL,Y		;

		RTS
;
BBROS_SUB02	EQU	$
		TYX

		LDA	ENWRK6,X		;伸び切った ?
		CMP	#000C0H			;
		BPL	BBROS_SUB02300		;  no: BBROS_SUB02300

		INC	<ENWRK2,X
		LDA	#000C0H
		BRA	BBROS_SUB02500

BBROS_SUB02300	EQU	$
		SEC
		SBC	#00018H

BBROS_SUB02500	EQU	$
		STA	ENWRK6,X

		RTS
;
BBROS_SUB03	EQU	$
		TYX

		LDA	ENWRK6,X		;元に戻った ?
		CMP	#00100H			;
		BMI	BBROS_SUB03300		;  no: BBROS_SUB03300

		STZ	<ENWRK2,X

		LDA	#00100H
		BRA	BBROS_SUB03500

BBROS_SUB03300	EQU	$
		CLC
		ADC	#00008

BBROS_SUB03500	EQU	$
		STA	ENWRK6,X

		RTS
;
;
;
BBROS_SUB10	EQU	$
BBROS_SUB32	EQU	$
		TYX
;
;LDY にしたらあかんよ〜
		LDA	ENYSPD,X		;上昇中 ?
		BMI	BBROS_SUB13300		; yes: BBROS_SUB13300

		INC	<ENWRK2,X

		RTS
;
BBROS_SUB11	EQU	$
BBROS_SUB33	EQU	$
		TYX

		LDA	ENCBFG,X		;地面に着いた ?
		AND	#00001			;
		BEQ	BBROS_SUB11800		;  no: BBROS_SUB11800

		INC	A		;[ LDA	#00002 ]
		STA	ENTIM2,X
		STZ	ENXSPD,X

		LDY	#BBROS_RMODE15
		LDA	<ENWRK2,X
		CMP	#BBROS_RMODE11
		BEQ	BBROS_SUB11500

		LDY	#BBROS_RMODE31

BBROS_SUB11500	EQU	$
		STY	<ENWRK2,X

BBROS_SUB11800	EQU	$

		RTS
;
BBROS_SUB13	EQU	$
		TYX

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

		LDA	#00100H
		STA	ENWRK6,X

		LDA	ENCBFG,X		;地面に着いた ?
		AND	#00001			;
		BEQ	BBROS_SUB13200		;  no: BBROS_SUB13200

		LDA	#00004H
		STA	ENTIM2,X
		STA	<ENCONT,X
		STZ	ENXSPD,X
		INC	<ENWRK2,X

BBROS_SUB13200	EQU	$

		RTS

BBROS_SUB13300	EQU	$
		EOR	#0FFFFH
		INC	A
		STA	R1
		LDA	<ENWRK0,X
		ASL	A
		STA	R2
		LDA	#00040H
		STA	R3

		M_CHIP	M_PERCENT_VALUE

		LDX	<ENINDX
		LDA	#00100H
		SEC
		SBC	R0
		CLC
		ADC	ENWRK6,X
		LSR	A
		STA	ENWRK6,X

		RTS
;
BBROS_S14_ZCMP	EQU	$
		WORD	00100H,000C0H,00160H
BBROS_S14_ZADD	EQU	$
		WORD	00008H,0FFF0H,00010H
;
BBROS_SUB14	EQU	$
		TYX

		LDA	<ENCONT,X
		TAY
		AND	#00002H
		BEQ	BBROS_SUB14100

		LDA	ENWRK6,X
		CMP	!BBROS_S14_ZCMP,Y
		BPL	BBROS_SUB14300
		BRA	BBROS_SUB14180

BBROS_SUB14100	EQU	$
		LDA	ENWRK6,X
		CMP	!BBROS_S14_ZCMP,Y
		BMI	BBROS_SUB14300

BBROS_SUB14180	EQU	$
		DEC	<ENCONT,X
		DEC	<ENCONT,X
		BPL	BBROS_SUB14200

		PHY
		LDY	ENWRKC,X
		LDA	#00010H
		STA	ENTIM0,Y
		LDA	#00000
		STA	ENXSPD,Y
		LDA	#BBROS_RMODE15
		STA	ENWRK2,Y

		LDY	#BBROS_RMODE00
		STY	<ENWRK2,X

		LDA	BBROSFLG
		EOR	#00002
		STA	BBROSFLG
		PLY

BBROS_SUB14200	EQU	$
		LDA	!BBROS_S14_ZCMP,Y
		BRA	BBROS_SUB14500

BBROS_SUB14300	EQU	$
		CLC
		ADC	!BBROS_S14_ZADD,Y

BBROS_SUB14500	EQU	$
		STA	ENWRK6,X

BBROS_SUB15000	EQU	$

		RTS
;
BBROS_SUB15	EQU	$
		TYX

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

		LDA	ENWRK6,X		;ひしゃげ切った ?
		CMP	#00140H			;
		BMI	BBROS_SUB15600		;  no: BBROS_SUB15600

		LDY	ENWRKC,X
		LDA	ECENTX,Y
		SEC
		SBC	ECENTX,X
		STA	R0
		CLC
		ADC	#00040H
		CMP	#00080H
		BCC	BBROS_SUB15300
		BPL	BBROS_SUB15100

		LDA	#0FFC0H
		BRA	BBROS_SUB15200

BBROS_SUB15100	EQU	$
		LDA	#00040H

BBROS_SUB15200	EQU	$
		STA	R0

BBROS_SUB15300	EQU	$
		LDA	#005C0H
		STA	R6
		M_CHIP	MULTIPLY
		LDX	<ENINDX
		STZ	ENMUKI,X
		LDA	R0
		STA	ENXSPD,X
		BMI	BBROS_SUB15400

		LDA	#00002
		STA	ENMUKI,X

BBROS_SUB15400	EQU	$
		LDA	#0FB00H
		STA	ENYSPD,X
		LDA	#00500H/4
		STA	<ENWRK0,X
		LDA	#00004H
		STA	ENTIM2,X
		LDA	#BBROS_RMODE10
		STA	ENWRK2,X
		STZ	ENCBFG,X

		LDA	#00034H			;［Ｓ］
		JSL	>SOUND_3_ON

		LDA	<ENWRK4,X		;プレイヤー乗ってる ?
		AND	#00002			;
		BEQ	BBROS_SUB15500		;  no: BBROS_SUB15500

		STZ	ONLFFG
		STZ	<ENWRK4,X		;プレイヤーＯＦＦ
		LDA	#00010H			;プレイヤーチェックロックタイマーセット
		STA	ENTIM3,X		;

BBROS_SUB15500	EQU	$
		LDA	#00140H
		BRA	BBROS_SUB15700

BBROS_SUB15600	EQU	$
		CLC
		ADC	#00006H

BBROS_SUB15700	EQU	$
		STA	ENWRK6,X

		RTS
;
BBROS_SUB20	EQU	$
		TYX

		LDY	ENYSPD+1,X
		BMI	BBROS_SUB20040
		LDA	ENCBFG,X
		AND	#00001H
		BEQ	BBROS_SUB20040

		STZ	ENXSPD,X

BBROS_SUB20040	EQU	$
		LDA	ENWRK6,X		;ひしゃげ切った ?
		CMP	#00160H			;
		BMI	BBROS_SUB20300		;  no: BBROS_SUB20300

		LDA	<ENWRK4,X		;プレイヤー乗ってる ?
		AND	#00002			;
		BNE	BBROS_SUB20100		; yes: BBROS_SUB20100

		STZ	ONLFFG

		LDA	#00004
		STA	ENTIM2,X
		INC	<ENWRK2,X
		BRA	BBROS_SUB20180

BBROS_SUB20100	EQU	$
;		LDY	ENWRKA,X		;下になってたやつ ?
;		CPY	BBROSFLG		;
;		BEQ	BBROS_SUB20180		; yes: BBROS_SUB20180
;
		LDY	ENWRKC,X		;兄弟はいる ?
		BMI	BBROS_SUB20180		;  no: BBROS_SUB20180

		LDA	ENCBFG,Y		;兄弟は地面に着いてる ?
		LSR	A			;
		BCC	BBROS_SUB20180		;  no: BBROS_SUB20180

		LDA	#BBROS_RMODE15		;兄弟にジャンプしてもらってる ?
		CMP	ENWRK2,Y		;
		BEQ	BBROS_SUB20180		; yes: BBROS_SUB20180

		STA	ENWRK2,Y		;兄弟にジャンプしてもらう
		LDA	#00010H
		STA	ENTIM0,Y
		LDA	#00000
		STA	ENXSPD,Y
		LDY	ENWRKA,X
		STY	BBROSFLG

BBROS_SUB20180	EQU	$
		LDA	#00160H
		BRA	BBROS_SUB20500

BBROS_SUB20300	EQU	$
		CLC
		ADC	#00008H

BBROS_SUB20500	EQU	$
		STA	ENWRK6,X

		JSR	BBROS_B_ONCHK

		RTS
;
BBROS_SUB21	EQU	$
		TYX

		LDY	ENYSPD+1,X
		BMI	BBROS_SUB21040
		LDA	ENCBFG,X
		AND	#00001H
		BEQ	BBROS_SUB21040

		STZ	ENXSPD,X

BBROS_SUB21040	EQU	$
		LDA	ENWRK6,X		;元に戻った ?
		CMP	#00100H			;
		BPL	BBROS_SUB21500		;  no: BBROS_SUB21500

		LDY	ENWRKC,X		;兄弟はいる ?
		BPL	BBROS_SUB21100		; yes: BBROS_SUB21100

		LDY	#BBROS_RMODE30
		BRA	BBROS_SUB21300

BBROS_SUB21100	EQU	$
;LDYはだめ！！
		LDA	ENWRKA,X		;下になってたやつ ?
		CMP	BBROSFLG		;
		BEQ	BBROS_SUB21200		; yes: BBROS_SUB21200

		LDA	ENCBFG,Y		;兄弟は地面に着いてる ?
		LSR	A			;
		BCC	BBROS_SUB21400		;  no: BBROS_SUB21400

		LDA	#00010H
		STA	ENTIM0,Y
		LDA	#00000
		STA	ENXSPD,Y
		LDA	#BBROS_RMODE15		;兄弟にジャンプしてもらう
		STA	ENWRK2,Y		;

		LDY	ENWRKA,X
		STY	BBROSFLG

BBROS_SUB21200	EQU	$
		LDY	#BBROS_RMODE00

BBROS_SUB21300	EQU	$
		STY	<ENWRK2,X

BBROS_SUB21400	EQU	$
		LDA	#00100H
		BRA	BBROS_SUB21800

BBROS_SUB21500	EQU	$
		SEC
		SBC	#00010H

BBROS_SUB21800	EQU	$
		JMP	BBROS_SUB20500
;
;
;
BBROS_S30_ZADD	EQU	$
		WORD	00008H,0FFF8H
;
BBROS_SUB30	EQU	$
		TYX

		LDA	ENCBFG,X		;地面に着いた ?
		AND	#00001			;
		BEQ	BBROS_SUB30200		;  no: BBROS_SUB30200

		STZ	ENXSPD,X

		LDY	#000
		LDA	ENWRK6,X		;普通の状態 ?
		CMP	#00100H			;
		BNE	BBROS_SUB30300		;  no: BBROS_SUB30300

		LDA	#00004H
		STA	ENTIM2,X
		LDA	#00020H
		STA	ENTIM0,X
		INC	<ENWRK2,X

BBROS_SUB30200	EQU	$

		RTS

BBROS_SUB30300	EQU	$
		BMI	BBROS_SUB30400		;倍率調整
						;
		INY				;
		INY				;
						;
BBROS_SUB30400	EQU	$			;
		CLC				;
		ADC	!BBROS_S30_ZADD,Y	;
		AND	#0FFF8H			;
		STA	ENWRK6,X		;

		RTS
;
BBROS_S31_XSPD	EQU	$
		WORD	0FF22H,000DEH
;
BBROS_SUB31	EQU	$
		TYX

		LDA	ENWRK6,X		;ひしゃげ切った ?
		CMP	#00140H			;
		BMI	BBROS_SUB31600		;  no: BBROS_SUB31600

		LDY	ENMUKI,X
		LDA	!BBROS_S31_XSPD,Y
		STA	ENXSPD,X
		LDA	#0FA00H
		STA	ENYSPD,X
		LDA	#00600H/4
		STA	<ENWRK0,X
		LDA	#00004H
		STA	ENTIM2,X
		INC	ENWRK2,X

		LDA	#00034H			;［Ｓ］
		JSL	>SOUND_3_ON

		LDA	#00140H
		BRA	BBROS_SUB31700

BBROS_SUB31600	EQU	$
		CLC
		ADC	#00008H

BBROS_SUB31700	EQU	$
		STA	ENWRK6,X

BBBROS_SUB31800 EQU	$

		RTS
;
;************************************************************************
;*		initial ( 風船リフト )					*
;************************************************************************
FUSEN_I_CLOR	EQU	$
		HEX	20,22,24,28
;
FUSENIN		EQU	$			;-- fusenin --
		LDA	ENXPSL,X		;湧きだしフラグ ?
		BIT	#00010H			;
		BEQ	FUSENIN0080		;  no: FUSENIN0080

		AND	#0FFE0H
		STA	ENWRKC,X
		LDA	#000FFH
		STA	ENYUSN,X
		LDA	#0000000001100000B	;食えない、投げた敵あたらない
		STA	ENMOD0,X		;
		LDA	#0100000000000000B	;ＢＧチェックしない、敵じゃない
		STA	ENMOD1,X		;
		LDA	#0000000000000010B	;範囲クリアなし
		STA	ENMOD2,X		;
		STZ	ENGPOW,X
		INC	<ENWRK2,X
		LDY	FUSN_ST_FG
		BNE	FUSENIN0040

		INC	FUSN_ST_FG		;風船リフトのわきだしフラグ”ＯＮ”

FUSENIN0040	EQU	$

		RTL

FUSENIN0080	EQU	$
		LDY	FUSENFLG
		BNE	FUSENIN0100

		JSL	>TROBJ_SR_4x4_CL

		INC	FUSENFLG
		LDA	ENTROB,X
		STA	FUSENTRO
		BRA	FUSENIN0200

FUSENIN0100	EQU	$
		LDA	FUSENTRO
		STA	ENTROB,X

FUSENIN0200	EQU	$
		INC	FUSENSUM

		LDA	#00040H
		STA	ENTIM0,X
		STA	ENXMAX,X
		LDA	#00004H
		STA	ENXPOW,X

		M8
		LDA	<RANDM0
		AND	#003
		TAY
		LDA	!FUSEN_I_CLOR,Y
		STA	ENCLOR,X
		M16

;＊＊＊＊＊＊＊＊＜　ビットマップエリアセット　＞＊＊＊＊＊＊＊＊＊＊
		LDA	#CIPCHD3+0040H+001	;(R12) <-- 転送元アドレスセット
		STA	R12			;
		LDA	#BANK CIPCHD3+0040H+001 ;(R13) <-- 転送元バンクセット
		STA	R13			;

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

		LDA	#00010H
		STA	R8
		STA	R9

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

		M_CHIP	C_32_ZOOM

		LDX	<ENINDX

		INC	OBM7WF		;mode 7 OBJ chara DMA "ON"

		RTL
;
;************************************************************************
;*		move	( 風船リフト )					*
;************************************************************************
;		ENWRK0	へこみフラグ
;		ENWRK2	湧きだしフラグ
;		ENWRK4	変形率
;		ENWRK6	変形率加算データ
;		ENWRK8	へこみちょっとだけ復元フラグ
;		ENWRKA	変形率ＣＭＰデータ
;		ENWRKC	セットＸ　ＰＯＳ．
;
;		ENCONT
;
;		ENTIM0	Ｘ　ＭＡＸ　ＳＰＥＥＤチェンジタイマー
;
;		FUSENFLG	FLAG
;		FUSENTRO	ENTROB
;		FUSENSUM	SUM.
;
;		セット位置が奇数なら湧きだしフラグ
;		セット位置が偶数なら単体セット
;
FUSENMV		EQU	$			;-- fusenmv --
		LDY	<ENWRK2,X		;湧きだしフラグ ?
		BEQ	FUSENMV0100		;  no: FUSENMV0100
		JMP	FUSENMV1000

FUSENMV0100	EQU	$
;-------------- move --------------------------------------------
		JSL	>TROBJ_OAM_4x4

		JSL	>ENMDCK			;mode check
;
		JSL	>DISPCK2		;範囲外 ?
		BCC	FUSENMV0500		;  no: FUSENMV0500

		LDA	ENTROB,X		;へこんでた ?
		CMP	FUSENTRO		;
		BEQ	FUSENMV0200		;  no: FUSENMV0200

		JSL	>TROBJ_CLEAR

		LDA	FUSENTRO
		STA	ENTROB,X

FUSENMV0200	EQU	$
		DEC	FUSENSUM		;最後 ?
		BEQ	FUSENMV0300		; yes: FUSENMV0300

		LDA	#0FFFFH
		STA	ENTROB,X
		BRA	FUSENMV0400

FUSENMV0300	EQU	$
		STZ	FUSENFLG		;回転エリア確保フラグクリア

FUSENMV0400	EQU	$
		CPX	PONLFFG
		BNE	FUSENMV0480

		STZ	PONLFFG

FUSENMV0480	EQU	$
		JMP	>ENCLEAR

FUSENMV0500	EQU	$
		JSR	FUSEN_PLCHK

		JSR	FUSEN_ROT_SET
;
		LDA	ENTIM0,X		;風船の揺れ制御
		BNE	FUSENMV0800		;
						;
		LDA	#00040H*2		;
		STA	ENTIM0,X		;
						;
		LDA	ENXMAX,X		;
		EOR	#0FFFFH			;
		INC	A			;
		STA	ENXMAX,X		;
						;
FUSENMV0800	EQU	$			;

		RTL
;
FUSENMV1000	EQU	$
		JSL	>ENMDCK

		LDY	FUSN_ST_FG		;湧きだし終わり ?
		BEQ	FUSENMV0480		; yes: FUSENMV0480

		LDA	ENDSXL,X		;画面内 ?
		CLC				;
		ADC	#00040H			;
		CMP	#00100H+040H*2		;
		BCS	FUSENMV0480		;  no: FUSENMV0480

		LDA	ENTIM0,X		;湧きだす ?
		BNE	FUSENMV1800		;  no: FUSENMV1800

		LDA	#FUSEN
		JSL	>ENINSR_I
		BCC	FUSENMV1800

		LDA	ENWRKC,X
		STA	ENXPSL,Y
		LDA	ESCCV1
		CLC
		ADC	#00100H
		STA	ENYPSL,Y

		LDA	#00040H*9
		STA	ENTIM0,X

FUSENMV1800	EQU	$
		RTL
;
FUSEN_PLCHK	EQU	$
		LDY	PLYSPD+1		;プレイヤー上昇中 ?
		BMI	FUSEN_PLCHK0100		; yes: FUSEN_PLCHK0100

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

		LDA	PLBGCR			;プレイヤー頭打ってる ?
		AND	#0000000000011000B	;
		BNE	FUSEN_PLCHK0100		; yes: FUSEN_PLCHK0100

		LDA	EPWIDX,X
		CLC
		ADC	#00010H
		CMP	#00020H
		BCS	FUSEN_PLCHK0100

		LDA	<ENWRK4,X
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		CLC
		ADC	ENYPSL,X
		CLC
		ADC	#00000
		SEC
		SBC	PCENTY
		SEC
		SBC	PWIDEY
		STA	<EWORK0

		CPX	PONLFFG
		BNE	FUSEN_PLCHK0000

		LDA	ENGMAX,X		;プレイヤー乗ってた ?
		CMP	#0FF40H			;
		BEQ	FUSEN_PLCHK0180		;  no: FUSEN_PLCHK0180
		JMP	FUSEN_PLCHK1200

FUSEN_PLCHK0000 EQU	$
		CMP	#0FFF8H
		BCS	FUSEN_PLCHK1000

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

		STZ	PONLFFG

FUSEN_PLCHK0180 EQU	$
		LDA	#00040H
		STA	ENXMAX,X
		LDA	#0FF40H
		STA	ENGMAX,X
		LDA	EPWIDX,X
		ASL	A
		ASL	A
		ASL	A
		ASL	A
		STA	ENXSPD,X

FUSEN_PLCHK0200 EQU	$
		LDY	<ENWRK0,X		;へこんでる ?
		BEQ	FUSEN_PLCHK0600		;  no: FUSEN_PLCHK0600

		LDA	<ENWRK4,X
		SEC
		SBC	#00010H
		STA	<ENWRK4,X
		CMP	#00010H
		BPL	FUSEN_PLCHK0600

		STZ	<ENWRK0,X		;へこみフラグクリア
		STZ	<ENWRK4,X

		JSL	>TROBJ_CLEAR

		LDA	FUSENTRO
		STA	ENTROB,X

FUSEN_PLCHK0600 EQU	$

		RTS

FUSEN_PLCHK1000 EQU	$
		LDY	PLJUMP			;プレイヤージャンプ中 ?
		BEQ	FUSEN_PLCHK0100		;  no: FUSEN_PLCHK0100

		LDY	PONLFFG			;プレイヤー誰かに乗ってる ?
		BNE	FUSEN_PLCHK0200		; yes: FUSEN_PLCHK0200

		STX	PONLFFG

		LDA	PLYSPD			;変形率ＣＭＰデータセット
		LSR	A			;
		LSR	A			;
		CMP	#00060H
		BMI	FUSEN_PLCHK1080

		LDA	#00060H

FUSEN_PLCHK1080 EQU	$
		STA	ENWRKA,X		;

		ASL	A
		CLC
		ADC	ENYSPD,X
		CMP	#000C0H
		BMI	FUSEN_PLCHK1100

		LDA	#000C0H

FUSEN_PLCHK1100 EQU	$
		STA	ENYSPD,X
		LDA	#0FFD0H
		STA	ENGMAX,X
		LDA	PLXSPD
		CMP	#08000H
		ROR	A
		CMP	#08000H
		ROR	A
		CMP	#08000H
		ROR	A
		CLC
		ADC	ENXSPD,X
		STA	ENXSPD,X
		STZ	ENXMAX,X

		JSL	>TROBJ_SR_4x4
		BCC	FUSEN_PLCHK1200

		STZ	<ENWRK4,X		;変形率クリア
		STZ	ENWRK8,X		;へこみちょっとだけ復元フラグクリア
		LDA	#00010H			;変形率加算データセット
		STA	ENWRK6,X		;
		INC	<ENWRK0,X		;へこみフラグセット

FUSEN_PLCHK1200 EQU	$
		LDA	PLBGCR			;プレイヤー地面に着いてる ?
		AND	#0000000000000111B	;
		BEQ	FUSEN_PLCHK1208		;  no: FUSEN_PLCHK1208

		LDY	ENYSPD+1,X
		BMI	FUSEN_PLCHK1208
		JMP	FUSEN_PLCHK0100

FUSEN_PLCHK1208 EQU	$
		LDY	<ENWRK0,X		;へこんでる ?
		BEQ	FUSEN_PLCHK1400		;  no: FUSEN_PLCHK1400

		LDA	ENWRKA,X		;変形率セット
		CMP	<ENWRK4,X		;
		BMI	FUSEN_PLCHK1210		;
						;
		LDA	<ENWRK4,X		;
		CLC				;
		ADC	ENWRK6,X		;
		BRA	FUSEN_PLCHK1230		;
						;
FUSEN_PLCHK1210 EQU	$			;
		LDA	ENWRK8,X		;	;最初のつぶれ ?
		BNE	FUSEN_PLCHK1220		;	;  no: FUSEN_PLCHK1220
						;
		INC	ENWRK8,X		;
						;
		LDA	ENWRK6,X		;	;変形率加算データセット
		LSR	A			;	;
		STA	ENWRK6,X		;	;
						;
		LDA	#00020H			;	;最大変形率セット
		STA	ENWRKA,X		;	;
						;
FUSEN_PLCHK1220 EQU	$			;
		LDA	<ENWRK4,X		;
		CMP	ENWRK6,X
		BEQ	FUSEN_PLCHK1230

		SEC				;
		SBC	ENWRK6,X		;
						;
FUSEN_PLCHK1230 EQU	$			;
		STA	<ENWRK4,X		;

FUSEN_PLCHK1400 EQU	$
;;;;;;;;		LDA	<ENWRK4,X		;プレイヤーＹ　ＰＯＳ補正
;;;;;;;;		LSR	A
;;;;;;;;		LSR	A
;;;;;;;;		LSR	A
;;;;;;;;		LSR	A
;;;;;;;;		CLC
;;;;;;;;		ADC	ENYPSL,X
;;;;;;;;		SEC
;;;;;;;;		SBC	#00023H
;;;;;;;;		STA	PLYPSL

		LDA	<EWORK0
		INC	A
		SEC
		ADC	PLYPSL
		STA	PLYPSL

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

		STZ	PLJUMP
		STZ	PLYSPD
		INC	ONLFFG

FUSEN_PLCHK1800 EQU	$

		RTS
;
FUSEN_ROT_SET	EQU	$
		LDA	ENTROB,X		;ほかのやつらと一緒 ?
		CMP	FUSENTRO			;
		BEQ	FUSEN_R_SET0800		; yes: FUSEN_R_SET0800

		LDA	<ENWRK4,X		;(R4) <- 変形率
		STA	R4
;
		LDY	ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_X,X
		STA	CCWORK0
		LDA	>TROBJ_PLOT_Y,X
		STA	R2

		M_CHIP	M_FUSEN_SET

		LDX	<ENINDX

		INC	OBM7WF		;mode 7 OBJ chara DMA "ON"

FUSEN_R_SET0800 EQU	$

		RTS
;
;************************************************************************
;*		initial (warp block)					*
;************************************************************************
WARPSIN		EQU	$			;-- warpsin --
		LDA	PCHNG_TM		;プレイヤー変身中 ?
		BEQ	WARPSIN0080		;  no: WARPSIN0080
		LDA	CCHGMK			;
		BNE	WARPSIN0100		; yes: WARPSIN0100

WARPSIN0080	EQU	$
		LDY	#003
		STY	<ENWRK2,X
		LDA	#000FFH
		STA	ENYUSN,X
		RTL

WARPSIN0100	EQU	$
		LDA	ENXPSL,X
		STA	<EWORK0
		LDA	ENYPSL,X
		STA	<EWORK2
		LDA	#FSMK0
		JSL	>FSMK0_SET2

		JSL	>TROBJ_SR_4x4_CL

		LDA	ENXPSL,X		;Ｘ　ＰＯＳ．セーブ
		STA	<ENWRK0,X		;

		DEC	ENYPSL,X
		LDA	ENYPSL,X		;Ｙ　ＰＯＳ．セーブ
		STA	<ENWRK4,X

		STZ	ENMUKI,X

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

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

		LDA	#BANK CIPCHD2+60C0H+000 ;chara data bank set
		STA	R13

		LDA	#CIPCHD2+60C0H+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	C_32_ZOOM

		LDX	<ENINDX

		INC	OBM7WF			;mode 7 OBJ chara DMA "ON"

		RTL
;
;************************************************************************
;*		move	(warp block)					*
;************************************************************************
;		ENWRK0	ＸエンドＸ　ＰＯＳ．
;		ENWRK2	ROUTINE MODE INDEX
;		ENWRK4	ＹエンドＹ　ＰＯＳ．
;		ENWRK6	飛んだ方向 0...横 1...縦
;		ENWRK8
;		ENWRKA
;		ENWRKC
;
WARPS_SUB	EQU	$
		WORD	DUMMY_SUB		;まち
		WORD	WARPS_SUB1
		WORD	WARPS_SUB2
;;;;;;;;		WORD	WARPS_SUB3		;プレイヤー変身待ち
;
WARPSMV		EQU	$			;-- warpsmv --
		JSL	>TROBJ_OAM_4x4

		LDA	ENSTFG
		ORA	BIRIBIRI
		ORA	ITEMNO
		BEQ	WARPSMV0100

		JSL	>EN_XYMOVE

WARPSMV0100	EQU	$
		LDA	PLMODE			;プレイヤー元に戻ってる ?
		CMP	#PRET			;
		BEQ	WARPSMV0800		; yes: WARPSMV0800

		TXY
		LDA	<ENWRK2,X		;プレイヤー変身待ち ?
		CMP	#00003			;
		BNE	WARPSMV0300		;  no: WARPSMV0300

		LDA	PCHNG_TM		;プレイヤー変身中 ?
		BEQ	WARPSMV0900		;
		LDA	CCHGMK			;
		BEQ	WARPSMV0900		;  no: WARPSMV0900

		LDA	#00002
		STA	ENYUSN,X
		STZ	<ENWRK2,X
		JMP	>WARPSIN0100

WARPSMV0300	EQU	$
		ASL	A
		TAX
		JSR	(WARPS_SUB,X)

		JSR	WARPS_PLCHK
		BCS	WARPSMV0800

		LDA	PLYPSL_OLD
		STA	PLYPSL

		LDA	CCHGMK			;プレイヤー何かに変身してる ?
		BEQ	WARPSMV0700		;  no: WARPSMV0700

		INC	PLSTFG
		INC	ENSTFG

WARPSMV0700	EQU	$
		LDA	#00020H			;［Ｓ］
		JSL	>SOUND_3_ON

		RTL

WARPSMV0800	EQU	$
		LDA	PCHNG_TM		;変身が解けてる ?
		BNE	WARPSMV0900		;  no: WARPSMV0900

		LDA	ENXPSL,X
		STA	<EWORK0
		LDA	ENYPSL,X
		STA	<EWORK2
		LDA	#FSMK0
		JSL	>FSMK0_SET2
		JMP	>ENCLEAR

WARPSMV0900	EQU	$

		RTL
;
WARPS_SUB1	EQU	$
		TYX

		LDY	ENWRK6,X		;横に動いてる ?
		BNE	WARPS_SUB1300		;  no: WARPS_SUB1300

		LDA	ENXSPD,X		;チェックしていい ?
		EOR	ENXMAX,X		;
		BMI	WARPS_SUB1800		;  no: WARPS_SUB1800

		LDA	<ENWRK0,X		;元に戻る ?
		SEC				;
		SBC	ENXPSL,X		;
		CLC				;
		ADC	#00004			;
		CMP	#00008			;
		BCS	WARPS_SUB1800		;  no: WARPS_SUB1800

		LDA	<ENWRK0,X
		STA	ENXPSL,X
		STZ	ENXPOW,X
		STZ	ENXSPD,X
		BRA	WARPS_SUB1500

WARPS_SUB1300	EQU	$
		LDA	ENYSPD,X		;チェックしていい ?
		EOR	ENGMAX,X		;
		BMI	WARPS_SUB1800		;  no: WARPS_SUB1800

		LDA	<ENWRK4,X		;元に戻る ?
		SEC				;
		SBC	ENYPSL,X		;
		CLC				;
		ADC	#00004			;
		CMP	#00008			;
		BCS	WARPS_SUB1800		;  no: WARPS_SUB1800

		LDA	<ENWRK4,X
		STA	ENYPSL,X
		STZ	ENGPOW,X
		STZ	ENYSPD,X

WARPS_SUB1500	EQU	$
		LDA	CCHGMK			;プレイヤー何かに変身してる ?
		BNE	WARPS_SUB1600		; yes: WARPS_SUB1600

		STZ	<ENWRK2,X

		RTS

WARPS_SUB1600	EQU	$
		LDA	#00020H
		STA	ENTIM1,X

		STZ	ENSTFG

		LDA	ENXPSL,X
		STA	ENXPSL+BABY_INDEX
		LDA	ENYPSL,X
		STA	ENYPSL+BABY_INDEX
		LDA	#0FC00H
		STA	ENYSPD+BABY_INDEX
		LDA	#00018H
		STA	ENGPOW+BABY_INDEX
		LDA	#00080H
		STA	ENGMAX+BABY_INDEX
		LDY	#BABYM_RMODE52
		STY	<ENWRK2+BABY_INDEX

		LDA	#0001CH			;［Ｓ］
		JSL	>SOUND_3_ON

;;;;;;;;		LDA	#0001EH			;[Ｓ]
;;;;;;;;		STA	SOUND0

		INC	<ENWRK2,X

WARPS_SUB1800	EQU	$
WARPS_SUB2000	EQU	$

		RTS
;
WARPS_SUB2	EQU	$
		TYX

		LDA	ENTIM1,X
		BNE	WARPS_SUB2000

		LDA	#KUMOB
		JSL	>EXINSR

		LDA	ENXPSL,X
		STA	EXXPSL,Y
		LDA	ENYPSL,X
		SEC
		SBC	#00010H
		STA	EXYPSL,Y
		LDA	#0000BH
		STA	EXWRK0,Y		;counter set
		LDA	#00006H
		STA	EXTIM0,Y		;timer set

		PLA				;直接ＲＴＬ
		JMP	>ENCLEAR
;
WARPS_XSPD	EQU	$
WARPS_YSPD	EQU	$
		WORD	0FC00H,00400H
;
WARPS_PLCHK	EQU	$
		LDY	<ENWRK2,X		;プレイヤーチェックしていい ?
		BEQ	WARPS_PLCHK0100		; yes: WARPS_PLCHK0100

		JSL	>POBBGCR

		SEC

WARPS_PLCHK0080 EQU	$

		RTS

WARPS_PLCHK0100 EQU	$
		STZ	ENWRK6,X

		LDA	#00E00H
		STA	R0			;(R0) <- 横チェック半径 * 100Hセット
		LDA	#01000H
		STA	R1			;(R1) <- 縦チェック半径 * 100Hセット

		STZ	R3			;(R3) <- 縦方向補正値セット

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

		LDA	PWIDEX
		STA	R7
		LDA	PWIDEY
		STA	R8

		M_CHIP	M_ZOOM_PLCHK

		LDX	<ENINDX

		LDA	ENXPSL,X		;プレイヤーと横衝突した ?
		CLC				;
		ADC	#00008H			;
		SEC				;
		SBC	PCENTX			;
		STA	<EWORKC			;
		CLC				;
		ADC	CCWORK1E		;
		CMP	CCWORK1C		;
		BCS	WARPS_PLCHK0080		;  no: WARPS_PLCHK0080

		LDA	#0FFF0H			;中心 = Y POS. - 10H + WARPS_Y - KOTEI/2
		CLC
		ADC	CCWORK1B
		SEC
		SBC	R3
		CLC
		ADC	ENYPSL,X		;プレイヤーと縦衝突した ?
		SEC				;
		SBC	PCENTY			;
		SEC				;
		SBC	PLFTLN			;
		STA	<EWORKE			;
		CLC				;
		ADC	CCWORK1F		;
		CMP	CCWORK1D		;
		BCS	WARPS_PLCHK0600		;  no: WARPS_PLCHK0600

		LDA	CCWORK1F
		SEC
		SBC	#00010H
		STA	<EWORK0

		LDA	<EWORKE			;プレイヤー上からあたった ?
		BPL	WARPS_PLCHK0300		; yes: WARPS_PLCHK0300

		PHA
		LDA	<EWORK0
		EOR	#0FFFFH
		INC	A
		STA	<EWORK0
		PLA

		CMP	<EWORK0			;食い込んでる ?
		BMI	WARPS_PLCHK0700		;  no: WARPS_PLCHK0700
		BRA	WARPS_PLCHK0400		; yes: WARPS_PLCHK0400

WARPS_PLCHK0300 EQU	$
		CMP	<EWORK0			;食い込んでる ?
		BPL	WARPS_PLCHK0700		;  no: WARPS_PLCHK0700

WARPS_PLCHK0400 EQU	$
		LDA	PLXSPD			;補正していい（衝突方向ＯＫ） ?
		EOR	<EWORKC			;
		BMI	WARPS_PLCHK0600		;  no: WARPS_PLCHK0600

		STZ	<EWORK0

		LDA	CCWORK1E		;右からあたった ?
		LDY	<EWORKC+1		;
		BMI	WARPS_PLCHK0500		; yes: WARPS_PLCHK0500

		INC	<EWORK0
		INC	<EWORK0

		EOR	#0FFFFH
		INC	A

WARPS_PLCHK0500 EQU	$
		CLC
		ADC	<EWORKC
		CLC
		ADC	PLXPSL			;Ｘ　ＰＯＳ．補正
		STA	PLXPSL			;

		LDY	<EWORK0
		LDA	!WARPS_XSPD,Y
		STA	ENXSPD,X
		EOR	#0FFFFH
		INC	A
		STA	ENXMAX,X

		LDA	#00040H
		STA	ENXPOW,X

		STZ	PLXSPD
		STZ	PLMVSP
		BRA	WARPS_PLCHK0900

WARPS_PLCHK0600 EQU	$
		SEC
		RTS

WARPS_PLCHK0700 EQU	$
		STZ	<EWORK0
		LDA	CCWORK1F
		LDY	<EWORKE+1		;プレイヤー上からあたった ?
		BMI	WARPS_PLCHK0800		;  no: WARPS_PLCHK0800

		INC	<EWORK0
		INC	<EWORK0

		EOR	#0FFFFH
		INC	A

WARPS_PLCHK0800 EQU	$
		CLC
		ADC	<EWORKE
		CLC
		ADC	PLYPSL			;Ｙ　ＰＯＳ．補正
		STA	PLYPSL			;

		LDY	<EWORK0
		LDA	!WARPS_YSPD,Y		;Ｙ　ＳＰＥＥＤセット
		STA	ENYSPD,X		;
		EOR	#0FFFFH
		INC	A
		STA	ENGMAX,X

		LDA	#00040H			;Ｇ　ＰＯＷＥＲセット
		STA	ENGPOW,X		;

		STZ	PLYSPD
		INC	ENWRK6,X

WARPS_PLCHK0900 EQU	$
		STZ	PLSPJP			;ふんばりフラグクリア

		INC	<ENWRK2,X

		CLC
		RTS
;
;************************************************************************
;*		initial ( にこにこぷん！ )				*
;************************************************************************
NIKOPIN		EQU	$			;-- nikopin --
		LDY	NIKP2FLG
		BEQ	NIKOPIN0100

		JMP	>ENCLEAR

NIKOPIN0100	EQU	$
		INC	NIKP2FLG

		LDY	#008

NIKOPIN0300	EQU	$
		LDA	NIKP3IDX,Y
		BMI	NIKOPIN0500
		BEQ	NIKOPIN0400

		PHY
		TAY
		LDA	#0FFFFH
		STA	ENWRKC,Y
		PLY

NIKOPIN0400	EQU	$
		LDA	#0FFFFH
		STA	NIKP3IDX,Y

NIKOPIN0500	EQU	$
		DEY
		DEY
		BPL	NIKOPIN0300

		RTL
;
;************************************************************************
;*		move	( にこにこぷん！ )				*
;************************************************************************
NIKOPMV		EQU	$			;-- nikopmv --
		STZ	ENMUKI,X

		JSL	>ENMDCK

		LDA	<ENWRK0,X
		BNE	NIKOPMV0800

		LDA	#NIKP2
		JSL	>ENINSR_I
		BCC	NIKOPMV0800

		LDA	ENXPSL,X
		STA	ENXPSL,Y
		LDA	ENYPSL,X
		STA	ENYPSL,Y

		STX	NIKOPIDX

		INC	<ENWRK0,X

NIKOPMV0800	EQU	$

		RTL
;
;************************************************************************
;*		initial ( にこにこぷん！ 花 )				*
;************************************************************************
NIKP2IN		EQU	$			;-- nikp2in --
		JSR	NIKP2_ROT_SET
;		DEC	ENTIM3,X		;最初の一回目フラグセット

		RTL
;
;************************************************************************
;*		move	( にこにこぷん！ 花 )				*
;************************************************************************
;		NIKOPIDX	くきの ROUTINE INDEX
;		NIKP2FLG	出現抑制フラグ
;		NIKP3IDX	花びらの ROUTINE INDEX
;		NIKP3ANG	花の中心と花びらの中心の角度
;
;		ENWRK0	花びら持ってるフラグ
;		ENWRK2	ROUTINE MODE INDEX
;		ENWRK4	はなのＹ　ＰＯＳ．
;		ENWRK6	倍率
;		ENWRK8	回転角
;		ENWRKA	花の中心から花びらの中心までの距離
;		ENWRKC	花びらチェックフラグ
;
;		ENTIM0	ストップタイマー
;		ENTIM1	パターンチェンジタイマー
;		ENTIM2
;		ENTIM3	最初の一回目フラグ
;
;		ENCONT
;
NIKP2_SUB	EQU	$
		WORD	NIKP2_SUB0		;顔ズーム＆花びらセット
		WORD	NIKP2_SUB1		;花びらにょき
		WORD	NIKP2_SUB2		;回転
		WORD	NIKP2_SUB3		;ばくはつ
		WORD	NIKP2_SUB4		;花びら取られた
;
NIKP2MV		EQU	$			;-- nikp2mv --
		STZ	ENMUKI,X

		JSR	NIKP2_OAM_SET

		JSR	NIKP3_POS_SET

		JSL	>ENMDCK

		LDY	NIKP2FLG		;クリアする ?
		BPL	NIKP2MV0100		;  no: NIKP2MV0100

		LDX	NIKOPIDX
		JSL	>ENCLEAR

		LDX	<ENINDX

		STZ	NIKP2FLG

		JMP	>ENCLEAR

NIKP2MV0100	EQU	$
		JSL	>DISPCK2		;画面内 ?
		BCC	NIKP2MV0500		; yes: NIKP2MV0500

		LDY	#0FFH			;（敵クリアを１フレーム遅らせて花びらに知らせる）
		STY	NIKP2FLG		;

		RTL

NIKP2MV0500	EQU	$
		TXY
		LDA	<ENWRK2,X
		ASL	A
		TAX
		JSR	(NIKP2_SUB,X)

		JSR	NIKP2_ROT_SET

		RTL
;
;
;
NIKP2_OAM_SET	EQU	$
		LDY	ENTROB,X		;回転エリアＵＳＥ ?
		BPL	NIKP2_O_SET0200		; yes: NIKP2_O_SET0200

		I16
		LDY	ENOAML,X
		LDA	#08000H
		STA	SOAM_DX+0+8*0,Y
		STA	SOAM_DX+0+8*1,Y
		STA	SOAM_DX+0+8*2,Y
		STA	SOAM_DX+0+8*3,Y
		I8

		RTS

NIKP2_O_SET0200 EQU	$
		JSL	>TROBJ_OAM_4x4

		LDA	ENWRK8,X		;回転角
		SEC
		SBC	#00080H
		AND	#001FEH
		STA	R1
		LDA	ENWRK6,X		;倍率
		PHA
		STA	R2
		STA	R3
		LDA	#00004			;回転の中心から顔の中心までの距離
		STA	R5

		M_CHIP	M_ENMY_ROTZOM

		LDA	R0
		STA	<EWORK0
		LDA	R1
		STA	<EWORK4

		PLA
		STA	R6
		LDA	#0000AH
		STA	R0

		M_CHIP	MULTIPLY

		LDX	<ENINDX
		I16
		LDY	ENOAML,X

		LDA	ECENTX,X
		SEC
		SBC	<EWORK0
		SEC
		SBC	ESCCH1
		STA	<EWORK0
		SEC
		SBC	#00010H
		STA	<EWORK2

		LDA	ENYPSL,X
		SEC
		SBC	R0
		STA	<ENWRK4,X
		SEC
		SBC	<EWORK4
		SEC
		SBC	ESCCV1
		STA	<EWORK4

		LDA	<EWORK2
		STA	SOAM_DX+0+8*0,Y
		STA	SOAM_DX+0+8*2,Y
		LDA	<EWORK0
		STA	SOAM_DX+0+8*1,Y
		STA	SOAM_DX+0+8*3,Y

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

		LDY	#000
		LDA	ENWRK8,X
		CLC
		ADC	#00010H
		AND	#001FEH
		CMP	#00020H
		BCC	NIKP2_O_SET0400
		INY
		CMP	#00110H
		BPL	NIKP2_O_SET0400

		INY

NIKP2_O_SET0400 EQU	$
		I8
		TYA
		LDY	NIKOPIDX
		STA	ENCHPT,Y

NIKP3_P_SET0000 EQU	$

		RTS
;
NIKP3_POS_SET	EQU	$
		LDY	<ENWRK0,X		;花びら持ってる ?
		BEQ	NIKP3_P_SET0000		;  no: NIKP3_P_SET0000

		LDA	TILTCT			;画面揺れた ?
		BEQ	NIKP3_P_SET0500		;  no: NIKP3_P_SET0500

		LDA	NIKP3ANG
		STA	<EWORK0

		LDY	#008H

NIKP3_P_SET0100 EQU	$
		LDX	NIKP3IDX,Y
		BMI	NIKP3_P_SET0200

		LDA	<EWORK0
		STA	R1
		LDA	#00200H
		STA	R6

		PHY
		PHX
		M_CHIP	M_ENMY_1P_ROT
		PLX
		PLY

		LDA	R1
		STA	ENXSPD,X
		LDA	R0
		EOR	#0FFFFH
		INC	A
		STA	ENYSPD,X

		LDA	#00040H
		STA	ENGPOW,X
		LDA	#00008
		STA	ENXPOW,X

NIKP3_P_SET0200 EQU	$
		LDA	<EWORK0
		CLC
		ADC	#00066H
		AND	#001FEH
		STA	<EWORK0

		DEY
		DEY
		BPL	NIKP3_P_SET0100

		LDX	<ENINDX

		STZ	<ENWRK0,X		;花びら持ってるフラグクリア

		LDA	#00020H
		STA	ENTIM0,X

		LDA	#00004*2
		STA	<ENCONT,X

		LDY	#004
		STY	<ENWRK2,X

		RTS

NIKP3_P_SET0500 EQU	$
		LDA	ECENTX,X
		SEC
		SBC	#00008
		STA	<EWORK0
		LDA	<ENWRK4,X
		SEC
		SBC	#00008
		STA	<EWORK2
		LDA	NIKP3ANG
		STA	<EWORK6
		LDA	ENWRKA,X
		STA	R6

		LDY	#008H

NIKP3_P_SET0600 EQU	$
		LDX	NIKP3IDX,Y
		BMI	NIKP3_P_SET0700

		LDA	<EWORK6
		SEC
		SBC	#00080H
		AND	#001FEH
		STA	R1
		PHX
		PHY

		M_CHIP	M_ENMY_1P_ROT

		PLY
		PLX
		LDA	<EWORK0
		SEC
		SBC	R0
		STA	ENXPSL,X
		LDA	<EWORK2
		SEC
		SBC	R1
		STA	ENYPSL,X

NIKP3_P_SET0700 EQU	$
		LDA	<EWORK6
		CLC
		ADC	#00066H
		AND	#001FEH
		STA	<EWORK6

		DEY
		DEY
		BPL	NIKP3_P_SET0600

		LDX	<ENINDX

NIKP2_R_SET0000 EQU	$

		RTS
;
NIKP2_ROT_SET	EQU	$
		LDY	ENTROB,X
		BMI	NIKP2_R_SET0000

		LDA	ENWRK6,X		;(R6) <- 倍率セット
		STA	R6			;

		LDA	ENWRK8,X		;(R5) <- 回転角セット
		LSR	A			;
		STA	R5			;

		LDA	#CIPCHD3+0060H+000	;char. data address set
		STA	R12
		LDA	#BANK CIPCHD3+0060H+000 ;char. data bank set
		STA	R13

		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"

NIKP2_SUB0000	EQU	$

		RTS
;
NIKP2_SUB0	EQU	$
		TYX

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

		LDY	ENWRKC,X
		BNE	NIKP2_SUB0200

		LDY	#008

NIKP2_SUB0100	EQU	$
		LDA	NIKP3IDX,Y
		BPL	NIKP2_SUB0000

		DEY
		DEY
		BPL	NIKP2_SUB0100

		INC	ENWRKC,X

NIKP2_SUB0200	EQU	$
		LDA	ENTROB,X		;回転エリアＵＳＥ ?
		BPL	NIKP2_SUB0300		; yes: NIKP2_SUB0300

		JSL	>TROBJ_SR_4x4		;領域確保ＯＫ ?
		BCC	NIKP2_SUB0000		;  no: NIKP2_SUB0000

NIKP2_SUB0300	EQU	$
		LDA	ENWRK6,X		;倍率計算（ズームアップ）
		CLC				;
		ADC	#00010H			;
		CMP	#000E0H			;
		BPL	NIKP2_SUB0400		;
						;
NIKP2_SUB0380	EQU	$
		STA	ENWRK6,X		;

		RTS
;
NIKP2_SUB0400	EQU	$
		CMP	#00100H
		BMI	NIKP2_SUB0430

		LDA	#00100H
		LDY	<ENWRK0,X
		BEQ	NIKP2_SUB0480

		STA	ENWRK6,X

		INC	<ENWRK2,X

		RTS

NIKP2_SUB0430	EQU	$
		LDY	<ENWRK0,X
		BEQ	NIKP2_SUB0480

		INC	ENWRKA,X

		BRA	NIKP2_SUB0380

NIKP2_SUB0480	EQU	$
		STA	ENWRK6,X

		LDA	ECENTX,X		;花びらセットＸ　ＰＯＳ．
		SEC				;
		SBC	#00008			;
		STA	<EWORK2			;
		LDA	<ENWRK4,X		;花びらセットＹ　ＰＯＳ．
		SEC				;
		SBC	#00008			;
		STA	<EWORK4			;

		LDA	#00005
		STA	<EWORK0

NIKP2_SUB0500	EQU	$
		LDA	#NIKP3
		JSL	>ENINSR
		BCC	NIKP2_SUB0600

		LDA	<EWORK2
		STA	ENXPSL,Y
		LDA	<EWORK4
		STA	ENYPSL,Y

		TYA
		PHA
		LDA	<EWORK0
		ASL	A
		STA	ENWRKC,Y
		TAY
		PLA
		STA	NIKP3IDX-2,Y

		DEC	<EWORK0
		BNE	NIKP2_SUB0500
		BRA	NIKP2_SUB0700

NIKP2_SUB0600	EQU	$
		LDA	<EWORK0
		BEQ	NIKP2_SUB0700

		ASL	A
		TAY

		LDA	#0FFFFH
		STA	NIKP3IDX-2,Y

		DEC	<EWORK0
		BRA	NIKP2_SUB0600

NIKP2_SUB0700	EQU	$
		LDA	#00003
		STA	ENWRKA,X		;花の中心と花びらの中心の初期距離セット

		STZ	NIKP3ANG

		INC	<ENWRK0,X		;花びら持ってるフラグセット

		RTS
;
NIKP2_SUB1	EQU	$
		TYX

		LDA	ENWRKA,X
		INC	A
		CMP	#00014H
		BNE	NIKP2_SUB1800

		LDA	<RANDM0
		AND	#00003
		CLC
		ADC	#00005
		STA	<ENCONT,X

		LDA	#00020H
		STA	ENTIM0,X
		LDA	#00030H			;TIM0+10H
		STA	ENTIM1,X

		INC	<ENWRK2,X

		LDA	#00010H

NIKP2_SUB1800	EQU	$
		STA	ENWRKA,X

		RTS
;
NIKP2_SUB2	EQU	$
		TYX

;		LDA	ENTIM3,X		;最初の一回目 ?
;		BNE	NIKP2_SUB2080		; yes: NIKP2_SUB2080

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

		LDA	ENTIM1,X
		BNE	NIKP2_SUB2300

		LDA	#00020H
		DEC	<ENCONT,X
		BPL	NIKP2_SUB2100

NIKP2_SUB2080	EQU	$
;		STZ	ENTIM3,X		;最初の一回目フラグクリア

		LDA	#00004*2
		STA	<ENCONT,X
;;;;;;;;		LDA	#00008H
		STA	ENTIM0,X

		INC	ENWRK2,X

		RTS

NIKP2_SUB2100	EQU	$
		BNE	NIKP2_SUB2200

		LSR	A

NIKP2_SUB2200	EQU	$
		STA	ENTIM1,X

NIKP2_SUB2300	EQU	$
		LDA	<ENCONT,X
		AND	#00001
		ASL	A
		ASL	A
		ASL	A
		SEC
		SBC	#00004
		CLC
		ADC	ENWRK8,X
		AND	#001FEH
		STA	ENWRK8,X

		LDA	NIKP3ANG
		CLC
		ADC	#00004
		AND	#001FEH
		STA	NIKP3ANG

NIKP2_SUB2400	EQU	$
NIKP2_SUB3000	EQU	$

		RTS
;
NIKP2_S3_ZADD	EQU	$
		WORD	0FFF0H,00010H
NIKP2_S3_ZCMP	EQU	$
		WORD	00080H,000E0H,000A0H,000F0H,000C0H
;
NIKP2_SUB3	EQU	$
NIKP2_SUB4	EQU	$
		TYX

		LDA	ENTIM0,X
		BNE	NIKP2_SUB3000

		LDA	<ENCONT,X
		AND	#00002
		PHP
		TAY

		LDA	!NIKP2_S3_ZADD,Y
		CLC
		ADC	ENWRK6,X
		LDY	<ENCONT,X
		PLP
		BNE	NIKP2_SUB3100

		CMP	!NIKP2_S3_ZCMP,Y
		BPL	NIKP2_SUB3300
		BRA	NIKP2_SUB3200

NIKP2_SUB3100	EQU	$
		CMP	!NIKP2_S3_ZCMP,Y
		BMI	NIKP2_SUB3300

NIKP2_SUB3200	EQU	$
		DEC	<ENCONT,X
		DEC	<ENCONT,X
		BMI	NIKP2_SUB3400

		LDA	!NIKP2_S3_ZCMP,Y

NIKP2_SUB3300	EQU	$
		STA	ENWRK6,X

		RTS

NIKP2_SUB3400	EQU	$
;---------------< ばくはつ効果発生 >-----------------
		LDA	#SMK04
		JSL	>EXINSR

		LDA	ECENTX,X
		SEC
		SBC	#00008
		STA	EXXPSL,Y
		LDA	<ENWRK4,X
		SEC
		SBC	#00008
		STA	EXYPSL,Y

		LDA	#00003
		STA	EXCHPT,Y
		INC	A		;[ LDA	#00004 ]
		STA	EXTIM0,Y

		LDY	<ENWRK2,X
		CPY	#004
		BEQ	NIKP2_SUB3800

		LDA	NIKP3ANG
		STA	<EWORK6

		LDA	#00200H
		STA	R6

		LDY	#008

NIKP2_SUB3500	EQU	$
		LDX	NIKP3IDX,Y
		BMI	NIKP2_SUB3700

		LDA	<EWORK6
		SEC
		SBC	#00080H
		AND	#001FEH
		STA	R1

		PHY
		PHX

		M_CHIP	M_ENMY_1P_ROT

		PLX
		PLY
		LDA	R0
		EOR	#0FFFFH
		INC	A
		STA	ENXSPD,X
		LDA	R1
		EOR	#0FFFFH
		INC	A
		STA	ENYSPD,X

NIKP2_SUB3700	EQU	$
		LDA	<EWORK6
		CLC
		ADC	#00066H
		AND	#001FEH
		STA	<EWORK6

		DEY
		DEY
		BPL	NIKP2_SUB3500

		LDX	<ENINDX

NIKP2_SUB3800	EQU	$
		LDA	#000C0H			;ストップタイマーセット
		STA	ENTIM0,X

		STZ	ENWRK6,X		;初期倍率セット
		STZ	ENWRK8,X		;初期角度セット

		STZ	<ENWRK0,X		;花びら持ってるフラグクリア
		STZ	ENWRKC,X
		STZ	<ENWRK2,X

		JSL	>TROBJ_CLEAR

		RTS
;
;************************************************************************
;*		initial ( にこにこぷん！ 花びら )			*
;************************************************************************
NIKP3IN		EQU	$			;-- nikp3in --
		RTL
;
;************************************************************************
;*		move	( にこにこぷん！ 花びら )			*
;************************************************************************
;		ENWRK0
;		ENWRK2
;		ENWRK4
;		ENWRK6
;		ENWRK8
;		ENWRKA
;		ENWRKC	NIKP3IDX のインデックス
;
;		ENTIM0
;		ENTIM1
;		ENTIM2
;		ENTIM3
;
;		ENCONT
;
NIKP3MV		EQU	$			;-- nikp3mv --
		STZ	ENMUKI,X

		LDY	ENMODE,X
		CPY	#EMOVE
		BEQ	NIKP3MV0100

		JSR	NIKP3_CLEAR
		BRA	NIKP3MV0180

NIKP3MV0100	EQU	$
		LDA	ENSHOT,X
		BEQ	NIKP3MV0180

		JSL	>DISPCK2		;画面内 ?
		BCC	NIKP3MV0180		; yes: NIKP3MV0180

		JSR	NIKP3_CLEAR
		JMP	>ENCLEAR

NIKP3MV0180	EQU	$
		JSL	>ENMDCK

NIKP3MV0190	EQU	$
		LDY	NIKP2FLG		;本体死んだ ?
		BMI	NIKP3MV0200		;  yes: NIKP3MV0200

		JSL	>DISPCK2		;画面内 ?
		BCC	NIKP3MV0300		; yes: NIKP3MV0300

		JSR	NIKP3_CLEAR
		JMP	>ENCLEAR

NIKP3MV0200	EQU	$
		LDA	ENXSPD,X		;すでに発射されてる ?
		ORA	ENYSPD,X		;
		BNE	NIKP3MV0300		; yes: NIKP3MV0300

		JSR	NIKP3_CLEAR
		LDA	#00040H
		STA	ENGPOW,X

NIKP3MV0300	EQU	$
		LDY	ECRSFG,X
		DEY
		BMI	NIKP3MV0900

		JMP	>SHOT_EN_KILL_SP

NIKP3MV0900	EQU	$
		JSL	>EPCRCK

		RTL
;
NIKP3_CLEAR	EQU	$
		LDY	ENWRKC,X
		BMI	NIKP3_CLEAR0800

		LDA	#0FFFFH
		STA	NIKP3IDX-2,Y
		STA	ENWRKC,X

NIKP3_CLEAR0800 EQU	$
		RTS
;
;************************************************************************
;*		initial ( vow-vow )					*
;************************************************************************
VOWVWIN		EQU	$			;-- vowvwin --
VOWV2IN		EQU	$			;-- vowv2in --
		LDA	ENWRKA,X
		CMP	#0FFFFH
		BNE	VOWVWIN0300
		CMP	ENWRKC,X
		BNE	VOWVWIN0300

		JSL	>TROBJ_SR_4x4
		BCS	VOWVWIN0500

		LDA	#EINIT
		STA	ENMODE,X

		RTL

VOWVWIN0300	EQU	$
		JSL	>TROBJ_SR_4x4_CL

		INC	<ENWRK4,X

VOWVWIN0500	EQU	$
		LDA	#00100H
		STA	ENWRK6,X
		LDY	ENMUKI,X
		STY	<ENWRK5,X
		STZ	ENWRKA,X
		STZ	ENWRKC,X

		LDA	#00005
		STA	ENYUSN,X

		JSR	VOWVW_ROT_SET

		RTL
;
;************************************************************************
;*		move	( vow-vow )					*
;************************************************************************
;B		ENWRK0	ENCBFGセーブ
;B		ENWRK1	回転オブジェキャラパターン
;		ENWRK2	ROUTINE MODE INDEX
;B		ENWRK4	伸縮フラグ  0...伸び 1...縮み
;B		ENWRK5	向きフラグ
;		ENWRK6	倍率
;		ENWRK8	回転角
;		ENWRKA
;		ENWRKC	Ｙスピードセーブ
;
;		ENTIM0	ストップタイマー
;		ENTIM1	キャラパターンチェンジタイマー
;		ENTIM2
;		ENTIM3	回転オブジェキャラパターンチェンジタイマー
;
;		ENCONT	キャラパターンカウンター
;
VOWVW_SUB	EQU	$
VOWVW_00	EQU	$
		WORD	VOWVW_SUB00
VOWVW_10	EQU	$
		WORD	VOWVW_SUB10
VOWVW_11	EQU	$
		WORD	VOWVW_SUB11
VOWVW_12	EQU	$
		WORD	VOWVW_SUB12
VOWVW_20	EQU	$
		WORD	VOWVW_SUB20
VOWVW_21	EQU	$
		WORD	VOWVW_SUB21
VOWVW_22	EQU	$
		WORD	VOWVW_SUB22
;
VOWVW_RMODE00	EQU	(VOWVW_00-VOWVW_SUB)/2
VOWVW_RMODE10	EQU	(VOWVW_10-VOWVW_SUB)/2
VOWVW_RMODE11	EQU	(VOWVW_11-VOWVW_SUB)/2
VOWVW_RMODE12	EQU	(VOWVW_12-VOWVW_SUB)/2
VOWVW_RMODE20	EQU	(VOWVW_20-VOWVW_SUB)/2
VOWVW_RMODE21	EQU	(VOWVW_21-VOWVW_SUB)/2
VOWVW_RMODE22	EQU	(VOWVW_22-VOWVW_SUB)/2
;
VOWVWMV		EQU	$			;-- vowvwmv --
VOWV2MV		EQU	$			;-- vowv2mv --
		LDA	ENCOLD,X
		BEQ	VOWVWMV0060

		JSR	VOWVW_ANG_CALC

		JSR	VOWVW_OAM_SET

		LDA	ENCOLD,X
		PHA
		TXY				;ヘイホーに変換
		LDA	#HEIH0			;
		JSL	>ESTATST		;
		PLA
		STA	ENCOLD,X
		LDA	#00022H
		STA	ENCLOR,X
		INC	A
		STA	ENWRKC,X
		JMP	VOWVWMV0500

VOWVWMV0060	EQU	$
		LDY	ENMODE,X		;食われてる ?
		CPY	#EEATM			;
		BNE	VOWVWMV0100		;  no: VOWVWMV0100

		LDA	#0FFFFH
		STA	ENWRKA,X
		STA	ENWRKC,X
		LDA	#00100H
		STA	ENWRK6,X

		LDY	ENYUSN,X		;飲み込まれてる ?
		BMI	VOWVWMV0500		; yes: VOWVWMV0500

VOWVWMV0080	EQU	$
		JSR	VOWVW_ANG_CALC

		JSR	VOWVW_OAM_SET

		JSR	VOWVW_ROT_SET

		BRA	VOWVWMV0500

VOWVWMV0100	EQU	$
		CPY	#EMOVE			;動いてる ?
		BNE	VOWVWMV0080		;  no: VOWVWMV0080

		LDY	ENSHOT,X		;ショットされてる ?
		BEQ	VOWVWMV0300		;  no: VOWVWMV0300

		LDA	#00011H
		STA	ENCHPT,X

		LDA	<ENWRK5,X		;食われたときと反対を向いてる ?
		AND	#000FFH			;
		CMP	ENMUKI,X		;
		PHP				;
		BEQ	VOWVWMV0210		;  no: VOWVWMV0210

		LDY	ENMUKI,X
		STY	<ENWRK5,X
		LDA	ENWRK8,X
		EOR	#0FFFFH
		INC	A
		AND	#001FEH
		STA	ENWRK8,X

VOWVWMV0210	EQU	$
		LDA	ENXSPD,X		;真上にショットされてる ?
		BNE	VOWVWMV0280		;  no: VOWVWMV0280

		LDA	ENYSPD,X		;頂上付近 ?
		CLC				;
		ADC	#00100H			;
		CMP	#00200H			;
		BCS	VOWVWMV0280		;  no: VOWVWMV0280

		LDA	ENWRK6,X		;縮小し過ぎ ?
		SEC				;
		SBC	#00020H			;
		CMP	#00060H			;
		BPL	VOWVWMV0250		;  no: VOWVWMV0250

		LDA	#00060H

VOWVWMV0250	EQU	$
		STA	ENWRK6,X

VOWVWMV0280	EQU	$
		JSR	VOWVW_ANG_CALC

		JSR	VOWVW_OAM_SET

		JSR	VOWVW_ROT_SET

		PLP					;よーーく注意すること！！
		BNE	VOWVWMV0500

		LDA	#00005
		STA	ENYUSN,X
		BRA	VOWVWMV0500

VOWVWMV0300	EQU	$
		JSR	VOWVW_ANG_CALC

		JSR	VOWVW_OAM_SET

VOWVWMV0500	EQU	$
		JSL	>ENMDCK

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

		JSR	VOWVW_ROT_SET

		LDA	<ENWRK5,X		;前のフレームと同じ向き ?
		AND	#000FFH			;
		CMP	ENMUKI,X		;
		BEQ	VOWVWMV0800		; yes: VOWVWMV0800

		LDA	ENWRK8,X		;回転角調整
		EOR	#0FFFFH			;
		INC	A			;
		AND	#001FEH			;
		STA	ENWRK8,X		;

VOWVWMV0800	EQU	$
		LDY	ENMUKI,X
		STY	<ENWRK5,X

		JSL	>EPCRCK

		RTL
;
VOWVW_ANG_CALC	EQU	$
		LDA	ENMYNO,X
		CMP	#VOWVW
		BEQ	VOWVW_A_C0010

		JMP	VOWV2_ANG_CALC

VOWVW_A_C0010	EQU	$
		LDY	<ENWRK2,X		;イニシャルズーム中 ?
		CPY	#VOWVW_RMODE00		;
		BEQ	VOWVW_A_C0500		; yes: VOWVW_A_C0500

		LDA	ENWRK6,X		;倍率計算
		LDY	<ENWRK4,X		;	;伸びてる ?
		BEQ	VOWVW_A_C0200		;	; yes: VOWVW_A_C0200
						;
VOWVW_A_C0080	EQU	$			;
		CMP	#000A0H			;	;縮み過ぎ ?
		BPL	VOWVW_A_C0100		;	;  no: VOWVW_A_C0100
						;
		LDA	#000A0H			;
		BRA	VOWVW_A_C0400		;
						;
VOWVW_A_C0100	EQU	$			;
		SEC				;
		SBC	#00010H			;
		BRA	VOWVW_A_C0400		;
						;
VOWVW_A_C0200	EQU	$			;
		CMP	#00100H			;	;伸び過ぎ ?
		BMI	VOWVW_A_C0300		;	;  no: VOWVW_A_C0300
						;
		LDA	#00100H			;
		BRA	VOWVW_A_C0400		;
						;
VOWVW_A_C0300	EQU	$			;
		CLC				;
		ADC	#00008H			;
						;
VOWVW_A_C0400	EQU	$			;
		STA	ENWRK6,X		;

VOWVW_A_C0500	EQU	$
		LDY	<ENWRK4,X
		BNE	VOWVW_A_C0800

		LDA	ENXSPD,X		;回転角セット
		CMP	#08000H			;
		ROR	A			;
		CMP	#08000H			;
		ROR	A			;
		LDY	ENMUKI,X		;
		BEQ	VOWVW_A_C0600		;
						;
		EOR	#0FFFFH			;
		INC	A			;
						;
VOWVW_A_C0600	EQU	$			;
		STA	R2			;
						;
		LDA	ENYSPD,X		;
		CMP	#08000H			;
		ROR	A			;
		CMP	#08000H			;
		ROR	A			;
		EOR	#0FFFFH			;
		INC	A			;
		STA	R1			;
						;
		M_CHIP	M_RAD_GET		;
						;
		LDX	<ENINDX			;
		LDA	R0			;
		AND	#001FEH			;
		STA	ENWRK8,X		;

VOWVW_A_C0800	EQU	$

		RTS

VOWV2_ANG_CALC	EQU	$
		LDA	ENXSPD,X		;回転角セット
		LDY	ENMUKI,X		;
		BEQ	VOWV2_A_C0100		;
						;
		EOR	#0FFFFH			;
		INC	A			;
						;
VOWV2_A_C0100	EQU	$			;
		CMP	#08000H			;
		ROR	A			;
		CMP	#08000H			;
		ROR	A			;
		CMP	#08000H			;
		ROR	A			;
		AND	#001FEH			;
		SEC				;
		SBC	ENWRK8,X		;
		PHP				;
		CLC				;
		ADC	#00100H			;
		CMP	#00200H			;
		BCS	VOWV2_A_C0200		;
						;
		PLP				;
		BPL	VOWV2_A_C0400		;
		BRA	VOWV2_A_C0300		;
						;
VOWV2_A_C0200	EQU	$			;
		PLP				;
		BMI	VOWV2_A_C0400		;
						;
VOWV2_A_C0300	EQU	$			;
		LDA	ENWRK8,X		;
		SEC				;
		SBC	#00010H			;
		BRA	VOWV2_A_C0500		;
						;
VOWV2_A_C0400	EQU	$			;
		LDA	ENWRK8,X		;
		CLC				;
		ADC	#00010H			;
						;
VOWV2_A_C0500	EQU	$			;
		AND	#001FEH			;
		STA	ENWRK8,X		;

VOWVW_O_SET0000 EQU	$

		RTS
;
VOWVW_YREV	EQU	$
		HEX	00C,00C,00C,00C,00D,00D,00C,00B,00A,00B,00C,00D,010
		HEX	010,010,010,010,008
VOWVW_OAM_SET	EQU	$
		LDY	ENYUSN,X
		BMI	VOWVW_O_SET0000

		I16
		LDA	ENOAML,X
		CLC
		ADC	#008*3
		TAY
		PHY
		JSL	>TROBJ_OAM_4x4_I
		IDX8

		LDA	ENTIM3,X
		BNE	VOWVW_O_SET0300

		LDA	#00004
		STA	ENTIM3,X

		LDA	<ENWRK1,X
		INC	A
		AND	#00003
		TAY
		STY	<ENWRK1,X

VOWVW_O_SET0300 EQU	$
		LDA	#00008H
		STA	R5
		LDA	ENWRK8,X
		SEC
		SBC	#00080H
		AND	#001FEH
		STA	R1
		LDA	#00100H
		STA	R2
		LDA	ENWRK6,X
		STA	R3

		M_CHIP	M_ENMY_ROTZOM

		LDX	<ENINDX
		LDA	R0
		LDY	<ENWRK5,X		;左向き ?
		BNE	VOWVW_O_SET0380		;  no: VOWVW_O_SET0380

		EOR	#0FFFFH
		INC	A

VOWVW_O_SET0380 EQU	$
		CLC
		ADC	ECENTX,X
		SEC
		SBC	ESCCH1
		STA	<EWORK2
		SEC
		SBC	#00010H
		STA	<EWORK0
		LDY	ENCHPT,X
		LDA	!VOWVW_YREV,Y
		AND	#000FFH
		STA	<EWORK4
		LDA	ENYPSL,X
		CLC
		ADC	#00010H
		SEC
		SBC	<EWORK4
		SEC
		SBC	R1
		SEC
		SBC	ESCCV1
		STA	<EWORK4

		I16
		PLY
		LDA	<ENWRK5,X
		AND	#000FFH
		BEQ	VOWVW_O_SET0400

		LDA	<EWORK0
		PHA
		LDA	<EWORK2
		STA	<EWORK0
		PLA
		STA	<EWORK2

VOWVW_O_SET0400 EQU	$
		LDA	<ENWRK1,X
		AND	#00002
		BEQ	VOWVW_O_SET0500

		LDA	<EWORK0
		PHA
		LDA	<EWORK2
		STA	<EWORK0
		PLA
		STA	<EWORK2

		LDA	SOAM_DX+4+8*0,Y
		EOR	#04000H
		STA	SOAM_DX+4+8*0,Y
		LDA	SOAM_DX+4+8*1,Y
		EOR	#04000H
		STA	SOAM_DX+4+8*1,Y
		LDA	SOAM_DX+4+8*2,Y
		EOR	#04000H
		STA	SOAM_DX+4+8*2,Y
		LDA	SOAM_DX+4+8*3,Y
		EOR	#04000H
		STA	SOAM_DX+4+8*3,Y

VOWVW_O_SET0500 EQU	$
		LDA	<EWORK0
		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

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

		I8

		RTS
;
VOWVW_CHAR	EQU	$
		WORD	CIPCHD3+4040H+000
		WORD	CIPCHD3+6040H+000
;
VOWVW_ROT_SET	EQU	$
		LDA	ENWRK6,X		;(R11) <- 縦倍率セット
		STA	R11			;

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

		LDA	<ENWRK1,X
		AND	#00002
		TAY
		LDA	ENWRK8,X
		CPY	#000
		BEQ	VOWVW_R_SET0100

		EOR	#0FFFFH
		INC	A
		AND	#001FEH

VOWVW_R_SET0100 EQU	$
		LSR	A			;
		STA	R5			;

		LDA	<ENWRK1,X		;chara data address set
		AND	#00001			;
		ASL	A			;
		TAY				;
		LDA	!VOWVW_CHAR,Y		;
		STA	R12			;
		LDA	#BANK CIPCHD3+4040H+000 ;chara data bank set
		STA	R13

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

		M_CHIP	C_32_RTZ_32_XY

		LDX	<ENINDX

		INC	OBM7WF			;mode 7 OBJ chara DMA "ON"

		RTS
;
;
;
VOWVW_SUB00	EQU	$
		TYX

		LDA	ENWRK6,X		;伸びきった ?
		CMP	#00100H			;
		BMI	VOWVW_SUB0500		;  no: VOWVW_SUB0500

		LDY	#VOWVW_RMODE20
		LDA	ENMYNO,X
		CMP	#VOWVW
		BNE	VOWVW_SUB0300

		LDY	#000
		STY	<ENWRK4,X
		LDA	#00140H
		STA	ENWRK8,X

		LDA	#0FE00H
		STA	ENXSPD,X
		LDA	#0FC00H
		STA	ENYSPD,X

		LDY	#VOWVW_RMODE11

VOWVW_SUB0300	EQU	$
		STY	<ENWRK2,X

		LDA	#00100H
		BRA	VOWVW_SUB0600

VOWVW_SUB0500	EQU	$
		CLC
		ADC	#00010H

VOWVW_SUB0600	EQU	$
		STA	ENWRK6,X

		RTS
;
VOWVW_S10_XSPD	EQU	$
		WORD	0FE00H,00200H
;
VOWVW_SUB10	EQU	$
		TYX

		LDA	<ENWRK0,X		;頭か足があたってる ?
		AND	#00003			;
		BEQ	VOWVW_SUB10300		;  no: VOWVW_SUB10300

		AND	#00001			;足があたってる ?
		BEQ	VOWVW_SUB10200		;  no: VOWVW_SUB10200

		LDA	#0FC00H
		BRA	VOWVW_SUB10400

VOWVW_SUB10200	EQU	$
		LDA	ENWRKC,X
		EOR	#0FFFFH
		INC	A
		BRA	VOWVW_SUB10400

VOWVW_SUB10300	EQU	$
		LDA	ENWRKC,X

VOWVW_SUB10400	EQU	$
		STA	ENYSPD,X

		LDY	ENMUKI,X
		LDA	!VOWVW_S10_XSPD,Y
		STA	ENXSPD,X

		LDY	#000
		STY	<ENWRK4,X

		INC	<ENWRK2,X

		RTS
;
VOWVW_SUB11	EQU	$
		TYX

		LDY	ENCHPT,X		;壁にあたってからの復帰 ?
		CPY	#011H			;
		BNE	VOWVW_SUB11400		;  no: VOWVW_SUB11400

		LDA	<ENWRK0,X		;横からあたった ?
		BIT	#0000CH			;
		BEQ	VOWVW_SUB11400		;  no: VOWVW_SUB11400

		LDA	ENYPSL,X
		CLC
		ADC	#00008
		STA	ENYPSL,X

VOWVW_SUB11400	EQU	$
		LDY	ENCBFG,X
		STY	<ENWRK0,X
		TYA
		AND	#0000FH			;
		BEQ	VOWVW_SUB11800		;

		AND	#0000CH			;横からあたった ?
		BEQ	VOWVW_SUB11500		;  no: VOWVW_SUB11500

		LDY	ENCHPT,X
		CPY	#00CH
		BMI	VOWVW_SUB11500
		CPY	#011H
		BPL	VOWVW_SUB11500

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

VOWVW_SUB11500	EQU	$
		LDA	ENYSPD,X
		STA	ENWRKC,X
		STZ	ENXSPD,X
		STZ	ENYSPD,X
		STZ	ENGPOW,X
		LDA	ENXPSL,X
		SEC
		SBC	ENMOVX,X
		STA	ENXPSL,X
		LDA	ENYPSL,X
		SEC
		SBC	ENMOVY,X
		STA	ENYPSL,X

		INC	<ENWRK4,X

		LDA	#00011H
		STA	ENCHPT,X

		INC	<ENWRK2,X

		RTS

VOWVW_SUB11800	EQU	$
		LDA	ENYSPD,X		;キャラパターンセット
		PHP				;
		CLC				;
		ADC	#00040H			;
		CMP	#00080H			;
		BCS	VOWVW_SUB11810		;
						;
		PLP				;
		LDA	#0000EH			;
		BRA	VOWVW_SUB11880		;
						;
VOWVW_SUB11810	EQU	$			;
		CLC				;
		ADC	#001C0H			;
		CMP	#00400H			;
		BCS	VOWVW_SUB11820		;
						;
		LDA	#0000FH			;
		PLP				;
		BPL	VOWVW_SUB11880		;
						;
		LDA	#0000DH			;
		BRA	VOWVW_SUB11880		;
						;
VOWVW_SUB11820	EQU	$			;
		LDA	#00010H			;
		PLP				;
		BPL	VOWVW_SUB11880		;
						;
		LDA	#0000CH			;
						;
VOWVW_SUB11880	EQU	$			;
		STA	ENCHPT,X		;

		RTS
;
VOWVW_SUB12	EQU	$
		TYX

		LDA	ENWRK6,X		;縮みきった ?
		CMP	#00090H			;
		BNE	VOWVW_SUB12800		;  no: VOWVW_SUB12800

		LDA	#00040H
		STA	ENGPOW,X
		LDY	#VOWVW_RMODE10
		STY	<ENWRK2,X

VOWVW_SUB12800	EQU	$
		JSR	VOWVW_EXSET

		RTS
;
VOWVW_EXXSPD	EQU	$
VOWVW_EXYSPD	EQU	$
		WORD	00080H,00100H,00180H,00200H
		WORD	0FF80H,0FF00H,0FE80H,0FE00H
VOWVW_EXXIDX	EQU	$
		WORD	00008H,00000H,0FFFFH,0FFFFH
VOWVW_EXYIDX	EQU	$-4
		WORD	00008H,00000H
VOWVW_EXXREV	EQU	$
		WORD	00008H,0FFF8H,00000H,00000H
VOWVW_EXYREV	EQU	$-4
		WORD	00008H,0FFF8H
;
VOWVW_EXSET	EQU	$
;EX しっぽセット
		LDA	#BUBBR
		JSL	>EXINSR
		LDA	#00003
		STA	EXWRK0,Y

		ASL	A
;		LDA	#00006H
		STA	EXTIM0,Y
		LDA	#00022H
		STA	EXCLOR,Y

		PHY
		LDA	<ENWRK0,X
		BIT	#0000CH
		BNE	VOWVW_EXSET0100

		AND	#00002
		CLC
		ADC	#00004
		BRA	VOWVW_EXSET0200

VOWVW_EXSET0100 EQU	$
		AND	#00004
		EOR	#00004
		LSR	A

VOWVW_EXSET0200 EQU	$
		TAY

		LDA	!VOWVW_EXXREV,Y
		STA	<EWORK8
		LDA	!VOWVW_EXYREV,Y
		STA	<EWORKA

		LDA	!VOWVW_EXXIDX,Y
		BPL	VOWVW_EXSET0500

		LDA	<RANDM0
		AND	#00008
		BEQ	VOWVW_EXSET0500

		LDA	#00008H

VOWVW_EXSET0500 EQU	$
		STA	<EWORK4

		LDA	!VOWVW_EXYIDX,Y
		BPL	VOWVW_EXSET0600

		LDA	<RANDM0
		AND	#00020H
		BEQ	VOWVW_EXSET0600

		LDA	#00008H

VOWVW_EXSET0600 EQU	$
		STA	<EWORK6

		LDA	<RANDM0
		PHA
		AND	#00006H
		CLC
		ADC	<EWORK4
		TAY
		LDA	!VOWVW_EXXSPD,Y
		STA	<EWORK0

		PLA
		XBA
		AND	#00006H
		CLC
		ADC	<EWORK6
		TAY
		LDA	!VOWVW_EXYSPD,Y
		PLY
		STA	EXYSPD,Y

		LDA	<EWORK0
		STA	EXXSPD,Y

		LDA	ENXPSL,X
		CLC
		ADC	<EWORK8
		STA	EXXPSL,Y
		LDA	ENYPSL,X
		CLC
		ADC	<EWORKA
		STA	EXYPSL,Y

VOWVW_EXSET0800 EQU	$

		RTS
;
VOWVW_S20_XMAX	EQU	$
		WORD	0FE00H,00200H
;
VOWVW_SUB20	EQU	$
		TYX

		LDA	ENTIM0,X
		BNE	VOWVW_SUB20500

		LDY	ENMUKI,X
		LDA	!VOWVW_S20_XMAX,Y
		STA	ENXMAX,X

		LDA	#00030H
		STA	ENTIM2,X

		LDA	#00004
		STA	ENCHPT,X

		INC	<ENWRK2,X

		RTS

VOWVW_SUB20500	EQU	$
		LDA	ENTIM1,X
		BNE	VOWVW_SUB20800

		LDA	#00004
		STA	ENTIM1,X

		LDA	ENCHPT,X
		INC	A
		AND	#00003
		STA	ENCHPT,X

VOWVW_SUB20800	EQU	$

		RTS
;
VOWVW_SUB21	EQU	$
		TYX

		LDA	ENTIM0,X
		BNE	VOWVW_SUB21100

		LDA	ENCBFG,X
		AND	#00001
		BNE	VOWVW_SUB21200

		STZ	ENXPOW,X
		LDA	#00010H
		STA	ENCHPT,X
		INC	<ENWRK2,X

VOWVW_SUB21100	EQU	$
		INC	ENTIM2,X

		RTS

VOWVW_SUB21200	EQU	$
		LDA	#00010H
		STA	ENXPOW,X

		LDA	ENTIM2,X
		BNE	VOWVW_SUB21300

		STZ	ENXMAX,X

		LDA	ENXSPD,X
		CLC
		ADC	#00010H
		CMP	#00020H
		BCS	VOWVW_SUB21300

		STZ	ENXSPD,X
		STZ	ENXPOW,X

		LDA	#00060H
		STA	ENTIM0,X

		STZ	ENCHPT,X

		DEC	<ENWRK2,X

		RTS

VOWVW_SUB21300	EQU	$
		LDA	ENXSPD,X
		BPL	VOWVW_SUB21500

		EOR	#0FFFFH
		INC	A

VOWVW_SUB21500	EQU	$
		CLC
		ADC	<ENCONT,X
		CMP	#00400H
		BMI	VOWVW_SUB21800

		PHA
		LDA	ENCHPT,X
		SEC
		SBC	#00003
		AND	#00007
		CLC
		ADC	#00004
		STA	ENCHPT,X

		PLA
		AND	#003FFH

VOWVW_SUB21800	EQU	$
		STA	<ENCONT,X

		RTS
;
VOWVW_SUB22	EQU	$
		TYX

		INC	ENTIM2,X

		LDA	ENCBFG,X
		AND	#00001
		BEQ	VOWVW_SUB22800

		LDA	#00010H
		STA	ENTIM0,X

		LDA	#0000EH
		STA	ENCHPT,X

		DEC	<ENWRK2,X

VOWVW_SUB22800	EQU	$

		RTS
;
;************************************************************************
;*		initial ( バケツ )					*
;************************************************************************
BAK20IN		EQU	$			;-- bak20in --
BAK21IN		EQU	$			;-- bak21in --
BAKLFIN		EQU	$			;-- baklfin --
		JSL	>TROBJ_SR_4x4_CL

		LDA	#00100H			;初期倍率セット
		STA	ENWRK6,X

		LDA	ENXPSL,X
		CLC
		ADC	#00004
		STA	ENWRKA,X
		LDA	ENYPSL,X
		SEC
		SBC	#00006
		STA	ENWRKC,X

		STZ	ENMUKI,X

		JSR	BAK20_ROT_SET2

		LDA	ENMYNO,X		;バケツリフト ?
		CMP	#BAKLF			;
		BNE	BAK20IN0800		;  no: BAK20IN0800

		LDA	ENXPSL,X
		AND	#00010H
		LSR	A
		LSR	A
		LSR	A
		STA	<ENCONT,X

BAK20IN0800	EQU	$

		RTL
;
;************************************************************************
;*		move	( バケツ )					*
;************************************************************************
;		ENWRK0	中身セットフラグ
;		ENWRK2	ROUTINE MODE INDEX
;		ENWRK4	回転角ＣＭＰデータ
;		ENWRK6	たて倍率
;		ENWRK8	回転角
;		ENWRKA	軸のＸ　ＰＯＳ．
;		ENWRKC	軸のＹ　ＰＯＳ．
;
;		ENCONT	中身の ROUTINE INDEX (SUB1)／回転速度 (SUB2)
;
;		ENTIM0	ストップタイマー
;
BAK20_SUB	EQU	$
		WORD	BAK20_SUB0		;のーまる
		WORD	BAK20_SUB1		;はねあげ
		WORD	BAK20_SUB2		;ぐるん
		WORD	BAK20_SUB3		;うそぐるん
		WORD	BAK20_SUB4		;えんど
;
BAK20MV		EQU	$			;-- bak20mv --
BAK21MV		EQU	$			;-- bak21mv --
;		ldy	#004h
;		sty	2100h

		JSR	BAK20_OAM_SET

		JSL	>ENMDCK

		JSL	>DISPCK2		;範囲外 ?
		BCC	BAK20MV0500		;  no: BAK20MV0500

		LDY	<ENWRK0,X		;中身を出した後 ?
		BEQ	BAK20MV0300		;  no: BAK20MV0300

		JMP	>ENCLEAR_NORETN

BAK20MV0300	EQU	$
		JMP	>ENCLEAR

BAK20MV0500	EQU	$
		TXY
		LDA	<ENWRK2,X
		ASL	A
		TAX
		JSR	(BAK20_SUB,X)

		JSR	BAK20_ENCHK

		JSR	BAK20_ROT_SET

;		ldy	#00fh
;		sty	2100h

		RTL
;
BAK20_OAM_SET	EQU	$
		JSL	>TROBJ_OAM_4x4

		LDA	ENWRK9,X
		AND	#000FFH
		ASL	A
		STA	R1
		LDA	#0000AH
		STA	R6
		M_CHIP	M_ENMY_1P_ROT
		LDX	<ENINDX
		I16
		LDY	ENOAML,X
		LDA	ENGPOW,X
		BNE	BAK20_O_SET0500

		LDA	ENWRKA,X
		CLC
		ADC	#00004H-8
		SEC
		SBC	R1
		STA	ENXPSL,X
		CLC
		ADC	#00008
		SEC
		SBC	ESCCH1
		STA	<EWORK0
		LDA	ENWRKC,X
		CLC
		ADC	#00004H-8
		CLC
		ADC	R0
		STA	ENYPSL,X
		CLC
		ADC	#00008
		SEC
		SBC	ESCCV1
		STA	<EWORK2

		LDA	<EWORK0
		STA	SOAM_DX+0+8*1,Y
		STA	SOAM_DX+0+8*3,Y
		SEC
		SBC	#00010H
		STA	SOAM_DX+0+8*0,Y
		STA	SOAM_DX+0+8*2,Y
		LDA	<EWORK2
		STA	SOAM_DX+2+8*2,Y
		STA	SOAM_DX+2+8*3,Y
		SEC
		SBC	#00010H
		STA	SOAM_DX+2+8*0,Y
		STA	SOAM_DX+2+8*1,Y

;--------------< 軸セット >--------------------
BAK20_O_SET0500 EQU	$
		LDA	ENOAML,X
		CLC
		ADC	#008*4
		TAY
		LDA	ENWRKA,X
		SEC
		SBC	ESCCH1
		STA	SOAM_DX+0+8*0,Y
		LDA	ENWRKC,X
		SEC
		SBC	ESCCV1
		STA	SOAM_DX+2+8*0,Y
		I8

		RTS
;
BAK20_ENCHK	EQU	$
		LDY	ECRSFG,X		;投げられたものにあたった ?
		DEY				;
		BMI	BAK20_ENCHK0800		;
						;
		LDA	ENMODE,Y		;
		CMP	#EMOVE			;
		BNE	BAK20_ENCHK0800		;
						;
		LDA	ENSHOT,Y		;
		BEQ	BAK20_ENCHK0800		;  no: BAK20_ENCHK0800

		TYX
		JSL	>ENDEATH_SET_4

		LDA	#0002EH			;［Ｓ］
		JSL	>SOUND_3_ON

BAK20_ENCHK0800 EQU	$

		RTS
;
BAK20_ROT_SET	EQU	$
		LDA	ENTROB,X
		BMI	BAK20_R_SET0800

		LDA	ENWRK8,X		;回転してる（ビットマップエリア書き直す） ?
		CMP	<ENWRK4,X		;
		BEQ	BAK20_R_SET0800		;  no: BAK20_R_SET0800

		STA	<ENWRK4,X

BAK20_ROT_SET2	EQU	$
		LDA	ENWRK6,X		;(R11) <- 縦倍率セット
		STA	R11			;

		LDA	#00200H			;(R6) <- 横倍率セット
		SEC				;
		SBC	ENWRK6,X		;
		STA	R6			;

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

		LDA	#BANK CIPCHD3+20C0H+000 ;chara data bank set
		STA	R13
		LDA	#CIPCHD3+20C0H+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	C_32_RTZ_32_XY

		LDX	<ENINDX

		INC	OBM7WF			;mode 7 OBJ chara DMA "ON"

BAK20_R_SET0800 EQU	$
BAK20_SUB0000	EQU	$

		RTS
;
BAK20_JUMP_INIT EQU	$
		WORD	BAK20_J_INIT		;どろぼー
		WORD	BAK21_J_INIT		;コイン
BAK20_NAKAMI	EQU	$
		WORD	DOROB
		WORD	COIN1
;
BAK20_SUB0	EQU	$
		TYX

		LDY	ECRSFG,X		;投げられたものにあたった ?
		DEY				;
		BMI	BAK20_SUB0000		;
						;
		LDA	ENMODE,Y		;
		CMP	#EMOVE			;
		BNE	BAK20_SUB0000		;
		LDA	ENSHOT,Y		;
		BEQ	BAK20_SUB0000		;  no: BAK20_SUB0000

		LDA	ECENTX,Y
		SEC
		SBC	ECENTX,X
		STA	R1
		LDA	ECENTY,Y
		SEC
		SBC	ECENTY,X
		STA	R2

		M_CHIP	M_RAD_GET

		LDX	<ENINDX
		LDY	ECRSFG,X
		DEY
		LDA	R0
		CMP	#00100H			;上からあたった ?
		BMI	BAK20_SUB0100		;  no: BAK20_SUB0100

		LDA	ENXSPD,Y
		EOR	#0FFFFH
		INC	A
		BRA	BAK20_SUB0500

BAK20_SUB0100	EQU	$
		SEC				;バケツをはね上げる ?
		SBC	#00080H-010H		;
		CMP	#00020H			;
		BCS	BAK20_SUB0300		;  no: BAK20_SUB0300

		LDA	ENMYNO,Y
		CMP	#EGG00
		BMI	BAK20_SUB0180
		CMP	#EGG09+1
		BPL	BAK20_SUB0180

		LDA	#0FD00H
		STA	ENYSPD,X
		LDY	#004
		STY	<ENWRK2,X

		RTS

BAK20_SUB0180	EQU	$
		LDA	#0FE00H
		STA	ENYSPD,X
		LDA	#00040H
		STA	ENGPOW,X

		LDY	#0FFH
		STY	<ENCONT,X

		LDA	ENMYNO,X
		SEC
		SBC	#BAK20
		ASL	A
		TAY
		STY	<EWORK0
		LDA	!BAK20_NAKAMI,Y
		JSL	>ENINSR_I
		BCC	BAK20_SUB0200

		STY	<ENCONT,X

		LDX	<EWORK0
		JSR	(BAK20_JUMP_INIT,X)

BAK20_SUB0200	EQU	$
		INC	<ENWRK2,X

		RTS

BAK20_SUB0300	EQU	$
		LDA	ENMYNO,Y		;たまごにあたった ?
		CMP	#EGG00			;
		BMI	BAK20_SUB0400		;
		CMP	#EGG09+1		;
		BPL	BAK20_SUB0400		;  no: BAK20_SUB0400

		LDA	ENGPOW,Y		;ＭＡＸの投げ ?
		BNE	BAK20_SUB0400		;  no: BAK20_SUB0400

		LDA	ENXSPD,Y
		PHP
		LDA	#00800H
		PLP
		BPL	BAK20_SUB0500

		LDA	#0F800H
		BRA	BAK20_SUB0500

BAK20_SUB0400	EQU	$
		LDA	ENXSPD,Y

BAK20_SUB0500	EQU	$
		STA	<ENCONT,X

		LDY	#002
		STY	<ENWRK2,X

BAK20_SUB0800	EQU	$

		RTS
;
BAK20_J_CHK	EQU	$
		WORD	0FFF8H
		WORD	00000H
;
BAK20_SUB1	EQU	$
		TYX

		LDA	ENWRKC,X
		CLC
		ADC	#00006
		CMP	ENYPSL,X
		BPL	BAK20_SUB1300

		STA	ENYPSL,X
		STZ	ENYSPD,X
		STZ	ENGPOW,X

BAK20_SUB1300	EQU	$
		LDA	ENMYNO,X
		SEC
		SBC	#BAK20
		ASL	A
		TAY
		STY	<EWORK2
		LDA	!BAK20_J_CHK,Y
		STA	<EWORK0

		LDY	<ENCONT,X
		BMI	BAK20_SUB1700

		LDA	ENMODE,Y
		CMP	#EINIT
		BEQ	BAK20_SUB1800
		CMP	#EMOVE
		BNE	BAK20_SUB1700

		LDA	ENYPSL,Y
		CLC
		ADC	<EWORK0
		CMP	ENYPSL,X
		BMI	BAK20_SUB1800

		TYX
		JSL	>ENCLEAR
		LDX	<ENINDX

BAK20_SUB1700	EQU	$
		STZ	<ENWRK2,X

BAK20_SUB1800	EQU	$

		RTS
;
BAK20_ANG_ADD	EQU	$
		WORD	00020H,00040H
		WORD	0FFC0H,0FFE0H
		WORD	00040H,00040H
		WORD	0FFC0H,0FFC0H
;
BAK20_SUB2	EQU	$
		TYX

		LDA	ENWRK8,X
		CLC
		ADC	<ENCONT,X
		STA	ENWRK8,X
		SEC
		SBC	#08000H-0400H
		CMP	#00800H
		BCS	BAK20_SUB2300

		LDA	#00010H
		STA	ENTIM0,X
		INC	<ENWRK2,X

		RTS

BAK20_SUB2300	EQU	$
		LDY	#000

BAK20_SUB2400	EQU	$
		LDA	ENWRK8,X		;右に傾いてる ?
		BMI	BAK20_SUB2500		;  no: BAK20_SUB2500

		TYA
		CLC
		ADC	#00004
		TAY

BAK20_SUB2500	EQU	$
		LDA	<ENCONT,X		;右にいってる ?
		BPL	BAK20_SUB2600		; yes: BAK20_SUB2600

		INY
		INY

BAK20_SUB2600	EQU	$
		CLC
		ADC	!BAK20_ANG_ADD,Y
		STA	<EWORK0
		CLC
		ADC	#00040H
		CMP	#00080H
		BCS	BAK20_SUB2700

		LDA	ENWRK8,X
		CLC
		ADC	#00080H
		CMP	#00100H
		BCS	BAK20_SUB2700

		STZ	ENWRK8,X
		STZ	<ENWRK2,X
		RTS

BAK20_SUB2700	EQU	$
		LDA	<EWORK0
		STA	<ENCONT,X

		RTS
;
BAK20_DERU_INIT EQU	$
		WORD	BAK20_D_INIT
		WORD	BAK21_D_INIT
;
BAK20_SUB3	EQU	$
		TYX

		LDY	#008
		LDA	ENWRK8,X
		CLC
		ADC	<ENCONT,X
		STA	ENWRK8,X
		SEC
		SBC	#08000H-0400H
		CMP	#00800H
		BCS	BAK20_SUB2400

		LDA	ENTIM0,X		;チェックロック ?
		BNE	BAK20_SUB2300		; yes: BAK20_SUB2300

		LDA	#08000H
		STA	ENWRK8,X

		TXY
		LDA	ENMYNO,X
		SEC
		SBC	#BAK20
		ASL	A
		TAX
		JSR	(BAK20_DERU_INIT,X)

		LDA	#00030H			;ストップタイマーセット
		STA	ENTIM0,X		;
		STA	<ENWRK0,X		;中身セットフラグセット
		INC	<ENWRK2,X

		RTS
;
BAK20_SUB4	EQU	$
		TYX

		LDA	ENTIM0,X
		BNE	BAK20_SUB4800

		LDA	#00040H
		STA	ENGPOW,X
		LDA	#08000H			;軸消去
		STA	ENWRKA,X		;

		LDA	ENMOD1,X			;ＢＧチェックなし ?
		AND	#0000000000011111B		;
		BEQ	BAK20_SUB4800			; yes: BAK20_SUB4800

		LDA	ENCBFG,X			;地面についた ?
		AND	#00001H				;
		BEQ	BAK20_SUB4800			;  no: BAK20_SUB4800

		LDA	#0010000000000000B
		STA	ENMOD1,X			;ＢＧチェックなし

		LDA	#0FC00H
		STA	ENYSPD,X

		LDA	#0002FH				;［Ｓ］
		JSL	>SOUND_3_ON

BAK20_SUB4800	EQU	$

		RTS
;
BAK20_J_INIT	EQU	$
		LDX	<ENINDX

		LDA	ENXPSL,X
		STA	ENXPSL,Y
		LDA	ENYPSL,X
		CLC
		ADC	#00004
		STA	ENYPSL,Y
		LDA	#0000CH				;ここに注意
		STA	ENWRK2,Y
		LDA	#00017H
		STA	ENCHPT,Y
		LDA	#0FE00H
		STA	ENYSPD,Y

		RTS
;
BAK21_J_INIT	EQU	$
		LDX	<ENINDX

		LDA	ENXPSL,X
		STA	ENXPSL,Y
		LDA	ENYPSL,X
		SEC
		SBC	#00004
		STA	ENYPSL,Y
		LDA	#0FE80H
		STA	ENYSPD,Y
		LDA	#0FFFFH
		STA	ENTIM0,Y
		STA	ENTIM1,Y
		STA	ENTIM2,Y
		LDA	#00007
		STA	ENYUSN,Y
		LDA	#00001
		STA	ENWRK2,Y

		RTS
;
BAK20_D_INIT	EQU	$
		TYX

		LDA	#DOROB
		JSL	>ENINSR_I
		BCC	BAK20_D_INIT080

		LDA	ENXPSL,X
		STA	ENXPSL,Y
		LDA	ENYPSL,X
		CLC
		ADC	#00008
		STA	ENYPSL,Y
		LDA	#00017H
		STA	ENCHPT,Y

BAK20_D_INIT080 EQU	$

		RTS
;
BAK21_COIN_XPOS EQU	$
		WORD	00004H,00000H,0FFFCH,0FFFFH,00002H
BAK21_COIN_YPOS EQU	$
		WORD	0FFFCH,00004H,00002H,0FFFEH,0FFF8H
;
BAK21_D_INIT	EQU	$
		TYX

		LDY	#008H

BAK21_D_INIT010 EQU	$
		PHY
		LDA	!BAK21_COIN_XPOS,Y
		STA	<EWORK0
		LDA	!BAK21_COIN_YPOS,Y
		STA	<EWORK2

		LDA	#COIN1
		JSL	>ENINSR
		BCC	BAK21_D_INIT080

		LDA	ENXPSL,X
		CLC
		ADC	<EWORK0
		STA	ENXPSL,Y
		LDA	ENYPSL,X
		CLC
		ADC	<EWORK2
		STA	ENYPSL,Y
		LDA	#0FFFFH
		STA	ENTIM0,Y
		STA	ENTIM1,Y
		STA	ENTIM2,Y
		LDA	#000007
		STA	ENYUSN,Y
		LDA	#00400H
		STA	ENYSPD,Y
		LDA	#00001H
		STA	ENWRK2,Y

		PLY
		DEY
		DEY
		BPL	BAK21_D_INIT010

		PHY

BAK21_D_INIT080 EQU	$
		PLY

		RTS
;
;************************************************************************
;*		move	( バケツリフト )				*
;************************************************************************
;		ENWRK0	回転速度
;		ENWRK2	ROUTINE MODE INDEX
;		ENWRK4	回転角ＣＭＰデータ
;		ENWRK6	たて倍率
;		ENWRK8	回転角
;		ENWRKA	軸のＸ　ＰＯＳ．
;		ENWRKC	軸のＹ　ＰＯＳ．／プレイヤー位置補正値(SUB2)
;
;		ENCONT	セットコースフラグ 0...溶岩コース 2...水中コース
;
;		ENTIM0	ストップタイマー
;
BAKLF_SUB	EQU	$
		WORD	BAKLF_SUB0		;のーまる
		WORD	BAKLF_SUB1		;
		WORD	BAKLF_SUB2		;
		WORD	DUMMY_SUB
;
BAKLFMV		EQU	$			;-- baklfmv --
;		ldy	#004h
;		sty	2100h

		JSR	BAK20_OAM_SET

		JSL	>ENMDCK

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

		JSR	BAK20_ENCHK

		JSR	BAK20_ROT_SET

		LDY	<ENWRK2,X
		CPY	#002
		BMI	BAKLFMV1000

		LDA	EPWIDX,X
		CLC
		ADC	#00014H
		CMP	#00028H
		BCS	BAKLFMV1000

		LDA	EPWIDY,X		;プレイヤー上から乗ってきた ?
		SEC				;
		SBC	PWIDEY			;
		SEC				;
		SBC	#0000CH			;
		BPL	BAKLFMV1000		;
		CMP	#0FFE4H			;
		BMI	BAKLFMV1000		;  no: BAKLFMV1000

		LDA	#00010H
		STA	PL_NO_DOWN

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

		RTL
;
BAKLF_SUB0	EQU	$
		TYX

		LDY	ECRSFG,X		;投げられたものにあたった ?
		DEY				;
		BMI	BAKLF_SUB0800		;
						;
		LDA	ENMODE,Y		;
		CMP	#EMOVE			;
		BNE	BAKLF_SUB0800		;
						;
		LDA	ENSHOT,Y		;
		BEQ	BAKLF_SUB0800		;  no: BAKLF_SUB0800

		LDA	#0FD00H
		STA	ENYSPD,X
		LDA	#00040H
		STA	ENGPOW,X
		LDA	#08000H			;軸消去
		STA	ENWRKA,X
		STZ	ENWRKC,X

		INC	<ENWRK2,X

BAKLF_SUB0800	EQU	$

		RTS
;
BAKLF_SUB1	EQU	$
		TYX

		LDA	ENCBFG,X			;地面についた ?
		AND	#00001H				;
		BEQ	BAKLF_SUB1300			;  no: BAKLF_SUB1300

		LDA	#0100000000000000B
		STA	ENMOD1,X			;ＢＧチェックなし

		LDA	#0FC00H
		STA	ENYSPD,X
		LDY	#003
		STY	<ENWRK2,X

		LDA	#0002FH			;［Ｓ］
		JSL	>SOUND_3_ON

		RTS

BAKLF_SUB1300	EQU	$
		LDY	ENWATR,X			;水中 ?
		BEQ	BAKLF_SUB1800			;  no: BAKLF_SUB1800

		LDA	ENYSPD,X
		LSR	A
		LSR	A
		LSR	A
		STA	ENYSPD,X
		INC	<ENWRK2,X

BAKLF_SUB1800	EQU	$

		RTS
;
BAKLF_S2_GMAX	EQU	$
		WORD	00200H,0FF80H
;
BAKLF_SUB2	EQU	$
		TYX

		LDY	#002
		LDA	ENWATR,X		;水中 ?
		AND	#000FFH			;
		BNE	BAKLF_SUB2300		; yes: BAKLF_SUB2300

		DEY
		DEY

BAKLF_SUB2300	EQU	$
		LDA	!BAKLF_S2_GMAX,Y
		STA	ENGMAX,X

		LDA	ENYSPD,X
		BPL	BAKLF_SUB2500

		EOR	#0FFFFH
		INC	A

BAKLF_SUB2500	EQU	$
		CLC
		ADC	#00080H
		AND	#0FF00H
		XBA
		ASL	A
		ASL	A
		ASL	A
		ASL	A
		CLC
		ADC	#00010H
		STA	ENGPOW,X

		M8
		LDA	#0FFH
		STA	ENWATR,X
		M16

		JSR	BAKLF_PLCHK

		RTS
;
BAKLF_AADD	EQU	$
		WORD	0FFF0H,00010H
BAKLF_XMAX	EQU	$
		WORD	00080H,0FF80H
BAKLF_BGYP0	EQU	$
		WORD	0000CH,00002H
BAKLF_BGYP1	EQU	$
		WORD	00008H,0FFFEH
;
BAKLF_PLCHK	EQU	$
		LDY	<ENCONT,X
		LDA	!BAKLF_BGYP0,Y
		STA	ENBGYP,X

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

		LDY	PLEATFG			;プレイヤー 食われてる ?
		BEQ	BAKLF_PLCHK0200		;  no: BAKLF_PLCHK0200

BAKLF_PLCHK0100 EQU	$
		CPX	PONLFFG			;前まで乗ってた ?
		BNE	BAKLF_PLCHK0120		;  no: BAKLF_PLCHK0120

		STZ	PONLFFG
;;;;;;;;		LDY	#PMOV
		STZ	PLMODE

BAKLF_PLCHK0120 EQU	$

		JMP	BAKLF_PLCHK0409

BAKLF_PLCHK0200 EQU	$
		CPX	PONLFFG
		BNE	BAKLF_PLCHK0300

		LDA	EPWIDX,X
		SEC
		SBC	ENMOVX,X
		STA	EPWIDX,X
		LDA	EPWIDY,X
		SEC
		SBC	ENMOVY,X
		STA	EPWIDY,X

BAKLF_PLCHK0300 EQU	$
		LDA	EPWIDX,X
		CLC
		ADC	#00010H
		CMP	#00020H
		BCS	BAKLF_PLCHK0100

		LDA	EPWIDY,X		;プレイヤー上から乗ってきた ?
		SEC				;
		SBC	PWIDEY			;
		CLC				;
		ADC	#00008			;
;;;;;;;;		CLC				;
;;;;;;;;		ADC	EWIDEY,X		;
		BPL	BAKLF_PLCHK0100		;
		CMP	#0FFF8H			;
		BMI	BAKLF_PLCHK0100		;  no: BAKLF_PLCHK0100

		STA	<EWORK0

		LDY	PONLFFG			;プレイヤー何かに乗ってる ?
		BNE	BAKLF_PLCHK0400		; yes: BAKLF_PLCHK0400

		LDA	EPWIDX,X
		STA	ENWRKC,X

		STX	PONLFFG
		LDY	#PDEM
		STY	PLMODE

BAKLF_PLCHK0400 EQU	$
		CPX	PONLFFG			;自分に乗ってる ?
		BNE	BAKLF_PLCHK0120		;  no: BAKLF_PLCHK0120

		LDY	<ENCONT,X
		LDA	!BAKLF_BGYP1,Y
		STA	ENBGYP,X

		LDA	P_KEY_MNAG		;ＭＡＸ投げ＆上下キー＆ベロ
		ORA	P_KEY_BERO
		ORA	#00C00H			;上下キー
		AND	KEYC1L
		STA	P_KEYC1L
		LDA	KEYC2L			;左右キー以外
		AND	#0FCFFH
		STA	P_KEYC2L

		LDA	<EWORK0			;プレイヤーＹ　ＰＯＳ．補正
		CLC				;
		ADC	PLYPSL			;
		INC	A			;
		SEC				;
		ADC	ENMOVY,X		;
		STA	PLYPSL			;
		INC	ONLFFG			;プレイヤーＯＮフラグセット
		LDA	#00010H
		CMP	PLFLSH
		BMI	BAKLF_PLCHK0402

		STA	PLFLSH

BAKLF_PLCHK0402 EQU	$
		STZ	PLXSPD
		STZ	PLMVSP
		STZ	PLYSPD
		STZ	PLXSDR
		STZ	PLYSDR
		STZ	PLDOSN			;

		LDA	ENWRKC,X
		CMP	#0FFFDH
		BEQ	BAKLF_PLCHK0408
		BPL	BAKLF_PLCHK0404

		INC	ENWRKC,X
		BRA	BAKLF_PLCHK0408

BAKLF_PLCHK0404 EQU	$
		DEC	ENWRKC,X

BAKLF_PLCHK0408 EQU	$
		LDA	EPWIDX,X
		SEC
		SBC	ENWRKC,X
		CLC
		ADC	PLXPSL
		STA	PLXPSL

		LDY	BERFLG			;舌が出てる ?
		BNE	BAKLF_PLCHK0409		; yes: BAKLF_PLCHK0409

		LDA	KEYC1L+1		;左右キーの入力があった ?
		AND	#00003			;
		BNE	BAKLF_PLCHK0500		; yes: BAKLF_PLCHK0500

BAKLF_PLCHK0409 EQU	$
		LDA	ENWRK8,X		;傾いていない ?
		BEQ	BAKLF_PLCHK0480		; yes: BAKLF_PLCHK0480

		BPL	BAKLF_PLCHK0410		;傾き補正
						;
		CLC				;
		ADC	#00080H			;
		BRA	BAKLF_PLCHK0420		;
						;
BAKLF_PLCHK0410 EQU	$			;
		SEC				;
		SBC	#00080H			;
						;
BAKLF_PLCHK0420 EQU	$			;
		STA	ENWRK8,X		;
		CLC				;傾き補正終了 ?
		ADC	#00080H			;
		CMP	#00100H			;
		BCS	BAKLF_PLCHK0480		;  no: BAKLF_PLCHK0480

		STZ	ENWRK8,X
		STZ	<ENWRK0,X

BAKLF_PLCHK0480 EQU	$
		STZ	ENXMAX,X
		LDA	ENXSPD,X		;止まりかけてる ?
		INC	A			;
		INC	A			;
		CMP	#00004			;
		BCS	BAKLF_PLCHK0490		;  no: BAKLF_PLCHK0490

		STZ	ENXSPD,X
		STZ	ENXPOW,X

BAKLF_PLCHK0490 EQU	$

		RTS

BAKLF_PLCHK0500 EQU	$
		AND	#00002			;プレイヤー向きセット
		STA	PLCMKI			;
		TAY

		LDA	!BAKLF_XMAX,Y
		STA	ENXMAX,X
		LDA	#00002
		STA	ENXPOW,X

		LDA	<ENWRK0,X
		CLC
		ADC	!BAKLF_AADD,Y
		CMP	#00100H
		BMI	BAKLF_PLCHK0510

		LDA	#00100H

BAKLF_PLCHK0510 EQU	$
		CMP	#0FF00H
		BPL	BAKLF_PLCHK0520

		LDA	#0FF00H

BAKLF_PLCHK0520 EQU	$
		STA	<ENWRK0,X

		LDA	ENWRK8,X
		CLC
		ADC	<ENWRK0,X
		CMP	#01000H
		BMI	BAKLF_PLCHK0710

		LDA	#01000H

BAKLF_PLCHK0710 EQU	$
		CMP	#0F000H
		BPL	BAKLF_PLCHK0720

		LDA	#0F000H

BAKLF_PLCHK0720 EQU	$
		STA	ENWRK8,X

		RTS
;
;****************************************************************
;*		initial ( ゆきだるま )				*
;****************************************************************
YUKIDIN		EQU	$			;-- yukidin --
		LDY	<ENWRK3,X		;リフトＯＮ ?
		BEQ	YUKIDIN0500		;  no: YUKIDIN0500

		JSL	>TROBJ_SR_4x4
		BCS	YUKIDIN0300

		LDY	<ENWRK3,X
		LDA	#00000
		STA	ENWRK8,Y
		JMP	>ENCLEAR

YUKIDIN0300	EQU	$
		JSR	YUKID_ROT_SET_I

		RTL

YUKIDIN0500	EQU	$
		JSL	>TROBJ_SR_4x4_CL

		JSR	YUKID_ROT_SET_I

		LDA	ENXPSL,X
		STA	ENWRKA,X
		STA	<EWORK4
		LDA	ENYPSL,X
		STA	ENWRKC,X
		JSL	>EXIST_CHECK_S2		;中身ある ?
		BNE	YUKIDIN0700		;  no: YUKIDIN0700

		M8
		LDA	ENXPSL,X
		AND	#010H
		LSR	A
		LSR	A
		LSR	A
		STA	<EWORK0
		LDA	ENYPSL,X
		AND	#00010H
		LSR	A
		LSR	A
		ORA	<EWORK0
		STA	<ENWRK0,X
		M16

YUKIDIN0700	EQU	$
		LDY	#002
		STY	<ENWRK2,X

YUKIDIN0800	EQU	$

		RTL
;
;****************************************************************
;*		move	( ゆきだるま )				*
;****************************************************************
;B		ENWRK0	中身の種類フラグ 0...空 1...タイム５ 2...１ＵＰ 3...スライディングたーくん
;B		ENWRK1	プレイヤーサイドタッチフラグ
;B		ENWRK2	ROUTINE MODE INDEX
;B		ENWRK3	LIFT ROUTINE INDEX
;B		ENWRK4	プレイヤーパターンチェンジカウンター ( PSPUSH )
;B		ENWRK5	進行方向キーチェックデータ
;		ENWRK6	回転角
;		ENWRK8	目標回転角
;		ENWRKA	セットＸ　ＰＯＳ．
;		ENWRKC	セットＹ　ＰＯＳ．
;
;		ENCONT	プレイヤーどすこいタイマー
;
;		ENTIM0	ストップタイマー
;		ENTIM1
;		ENTIM2
;		ENTIM3
;
YUKID_SUB	EQU	$
		WORD	YUKID_SUB0		;リフトに乗ってる
		WORD	YUKID_SUB1		;リフトから降りる
		WORD	YUKID_SUB2		;動いてる
;
YUKIDMV		EQU	$			;-- yukidmv --
		JSL	>TROBJ_OAM_4x4

		LDA	ENMODE,X
		CMP	#EMOVE
		BEQ	YUKIDMV0100

		CMP	#EFIRE
		BNE	YUKIDMV0080

		PLY
		PLA

YUKIDMV0080	EQU	$
		JSR	YUKID_FAIL

YUKIDMV0100	EQU	$
		JSL	>ENMDCK

		JSR	YUKID_ANG_CALC

		JSR	YUKID_SPD_CHG

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

		JSR	YUKID_ROT_SET

		JSR	YUKID_PLCHK

		RTL
;
YUKID_ANG_CALC	EQU	$
		LDA	ENWRK6,X
		BIT	#0FF00H
		BEQ	YUKID_A_C0100

		ORA	#0FF00H

YUKID_A_C0100	EQU	$
		STA	<EWORK0
		LDA	ENWRK8,X
		SEC
		SBC	<EWORK0
		CMP	#08000H
		ROR	A
		CMP	#08000H
		ROR	A
		CLC
		ADC	<EWORK0
		AND	#001FEH
		STA	ENWRK6,X

YUKID_S_C0000	EQU	$

		RTS
;
YUKID_SPEED	EQU	$
		WORD	0FD00H,00300H
;
YUKID_SPD_CHG	EQU	$
		LDY	<ENWRK3,X		;リフトに乗ってる ?
		BNE	YUKID_S_C0000		; yes: YUKID_S_C0000

		LDY	ENSLOP,X		;
		BEQ	YUKID_S_C0300		;

		PHP
		LDY	#000
		PLP
		BPL	YUKID_S_C0200

		INY
		INY

YUKID_S_C0200	EQU	$
		LDA	!YUKID_SPEED,Y

YUKID_S_C0300	EQU	$
		STA	ENXMAX,X

		LDA	#00000
		LDY	<ENWRK1,X		;プレイヤーに押されてる ?
		BNE	YUKID_S_C0600		; yes: YUKID_S_C0600

		LDA	ENWRK8,X
		LDY	ENMUKI,X
		BEQ	YUKID_S_C0500

		EOR	#0FFFFH
		INC	A

YUKID_S_C0500	EQU	$
		AND	#001FEH
		STA	R1
		LDA	#00020H
		STA	R6
		M_CHIP	M_ENMY_1P_ROT
		LDX	<ENINDX
		LDA	R1
		BPL	YUKID_S_C0600

		EOR	#0FFFFH
		INC	A

YUKID_S_C0600	EQU	$
		CLC
		ADC	#00004
		STA	ENXPOW,X

		LDA	ENXSPD,X
		ASL	A
		BPL	YUKID_S_C0700

		EOR	#0FFFFH
		INC	A

YUKID_S_C0700	EQU	$
		XBA
		AND	#000FFH
		STA	ENBGYP,X

		RTS
;
YUKID_ROT_SET	EQU	$
		TROBJ_CHK_4
		BNE	YUKID_R_SET0800

YUKID_ROT_SET_I EQU	$
		LDA	#CIPCHD+2040H+001H	;chara data address set
		STA	R12
		LDA	#BANK CIPCHD+2040H+001H
		STA	R13
;
		LDA	ENWRK6,X		;(R5) <- 回転角セット
		LSR	A
		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			;
;
		M_CHIP	C_32_ROTZOM
;
		LDX	<ENINDX

		INC	OBM7WF		;mode 7 OBJ chara DMA "ON"

YUKID_R_SET0800 EQU	$
YUKID_PLCHK0000 EQU	$

		RTS
;
;
YUKID_PLCHK	EQU	$
		LDY	ECRSFG,X		;誰にも衝突しなかった ?
		BEQ	YUKID_PLCHK0000		; yes: YUKID_PLCHK0000
		BMI	YUKID_PLCHK1000		;プレイヤーと衝突した

		M8
		LDA	#000			;プレイヤーサイドタッチフラグクリア
		STA	<ENWRK1,X		;
		M16

		LDA	ENMODE-1,Y
		CMP	#EMOVE
		BNE	YUKID_PLCHK0000
		LDA	ENSHOT-1,Y
		BEQ	YUKID_PLCHK0000

		LDA	ENGPOW-1,Y
		STA	<EWORK0
		TYX
		DEX
		JSL	>SHOT_EN_KILL		;衝突処理した ?
		BCC	YUKID_PLCHK0300		; yes: YUKID_PLCHK0300

		LDA	ENMOD0,X		;衝突チェックされる
		ORA	#0000001000000000B	;
		STA	ENMOD0,X		;
		PLA
		RTL

YUKID_PLCHK0300 EQU	$
		LDA	<EWORK0			;マックス投げ ?
		CMP	#00040H			;
		BCS	YUKID_PLCHK0000		;  no: YUKID_PLCHK0000

		JMP	YUKID_FAIL

YUKID_PLCHK1000 EQU	$
		LDA	EPWIDY,X		;踏まれた ?
		SEC				;
		SBC	PWIDEY			;
		SEC				;
		SBC	EWIDEY,X		;
		CMP	#0FFF8H			;
		BCC	YUKID_PLCHK1500		;  no: YUKID_PLCHK1500

		LDY	#000			;プレイヤーサイドタッチフラグクリア
		STY	<ENWRK1,X		;

		LDY	PLYSPD+1		;上昇中 ?
		BMI	YUKID_PLCHK1700		; yes: YUKID_PLCHK1700

;;;;;;;;		LDY	PLDOSN			;どすん ?
;;;;;;;;		BEQ	YUKID_PLCHK1700		;  no: YUKID_PLCHK1700
		LDA	#P006
		STA	PLJUMP
		LDA	#001+8000H
		LDA	#0FC00H
		STA	PLYSPD
		JMP	YUKID_FAIL

YUKID_PLCHK1500 EQU	$
		LDA	EPWIDX,X
		BPL	YUKID_PLCHK1530

		CLC
		ADC	PWIDEX
		CLC
		ADC	EWIDEX,X
		BRA	YUKID_PLCHK1550

YUKID_PLCHK1530 EQU	$
		SEC
		SBC	PWIDEX
		SEC
		SBC	EWIDEX,X

YUKID_PLCHK1550 EQU	$
		STA	<EWORK6

		STZ	<EWORK0
		LDY	<ENWRK1,X		;初めて横に触れた ?
		BEQ	YUKID_PLCHK1600		; yes: YUKID_PLCHK1600

		JSR	YUKID_PLCHK2
		BRA	YUKID_PLCHK1660

YUKID_PLCHK1600 EQU	$
		JSL	>YUKID_PLCHK3

YUKID_PLCHK1660 EQU	$
		LDA	PLBGCR			;プレイヤー壁に挟まれた ?
		AND	<EWORK0			;
		BEQ	YUKID_PLCHK1680		;  no: YUKID_PLCHK1680

		LDA	ENXSPD,X
		EOR	#0FFFFH
		INC	A
		CMP	#08000H
		ROR	A
		STA	ENXSPD,X
		LDA	CCWORK1F
		STA	PLXPSL

YUKID_PLCHK1680 EQU	$
		RTS

YUKID_PLCHK1700 EQU	$
		LDA	PLXSPD
		SEC
		SBC	ENXSPD,X
		CMP	#08000H
		ROR	A
		CMP	#08000H
		ROR	A
		CLC
		ADC	ENXSPD,X
		STA	ENXSPD,X

		LDA	#0FE00H
		LDY	EPXMUK,X
		BEQ	YUKID_PLCHK1780

		LDA	#00200H

YUKID_PLCHK1780 EQU	$
		STA	PLXSPD
		STA	PLMVSP
		LDA	#0FC00H
		STA	PLYSPD
		LDA	#P006
		STA	PLJUMP

YUKID_PLCHK1800 EQU	$

		RTS
;
YUKID_VS_PLXSPD EQU	$
		WORD	00280H,0FD80H
YUKID_PLXREV	EQU	$
		WORD	00002H,0FFFEH
YUKID_BGCKDT	EQU	$
		WORD	0000000110000000B
		WORD	0000000001100000B
;
YUKID_PLCHK2	EQU	$
		LDA	<ENWRK4,X
		AND	#0FF00H
		STA	<EWORK4

		LDA	KEYC1L			;進行方向と同じ方向のキーが押されてる ?
		BIT	<EWORK4			;
		BEQ	YUKID_PLCHK2080		;  no: YUKID_PLCHK2080

		AND	P_KEY_JUMP		;ジャンプボタン押された ?
		BEQ	YUKID_PLCHK2100		;  no: YUKID_PLCHK2100

YUKID_PLCHK2080 EQU	$
		LDA	PLXPSL			;プレイヤーＸ　ＰＯＳ．補正
		CLC				;
		ADC	<EWORK6			;
		STA	PLXPSL			;

		LDA	ENXSPD,X		;プレイヤーＸ　ＳＰＥＥＤセット
		STA	PLXSPD			;
		STA	PLMVSP			;

		LDY	#000
		STY	<ENWRK1,X		;プレイヤーサイドタッチフラグクリア

		RTS
;
YUKID_PLCHK2100 EQU	$
		LDA	<EWORK4+1
		AND	#00002
		TAY
;		LDY	EPXMUK,X		;プレイヤーＸ　ＰＯＳ．補正
		LDA	PLXPSL			;
		CLC				;
		ADC	<EWORK6			;
		CLC				;
		ADC	!YUKID_PLXREV,Y		;
		STA	PLXPSL			;

		LDA	EPWIDX,X		;プレイヤーから遠ざかってる ?
		EOR	ENXSPD,X		;
		BPL	YUKID_PLCHK2200		; yes: YUKID_PLCHK2200

		LDA	!YUKID_BGCKDT,Y		;プレイヤーＢＧチェック用データセット
		STA	<EWORK0			;

YUKID_PLCHK2200 EQU	$
		LDA	ENXSPD,X		;動いてる ?
		BEQ	YUKID_PLCHK2400		;  no: YUKID_PLCHK2400

		SEC				;プレイヤーの方が速い ?
		SBC	PLXSPD			;
		EOR	EPWIDX,X		;
		BPL	YUKID_PLCHK2750		;  no: YUKID_PLCHK2750

YUKID_PLCHK2400 EQU	$
		LDA	PLNAGE			;プレイヤー投げてる ?
		ORA	BERFLG			;プレイヤー舌を出してる ?
		BNE	YUKID_PLCHK2C00		; yes:YUKID_PLCHK2C00

		INC	PUSHFG			;敵押しフラグ”ＯＮ”

		LDA	PLXSPD
		SEC
		SBC	ENXSPD,X
		STA	R0
		LDA	#00010H
		STA	R6
		M_CHIP	MULTIPLY
		LDX	<ENINDX
		LDA	R0
		CLC
		ADC	ENXSPD,X
		STA	<EWORKE
		CLC
		ADC	#00280H
		LDY	#000
		CMP	#00500H
		BCC	YUKID_PLCHK2700
		BPL	YUKID_PLCHK2600

		INY
		INY

YUKID_PLCHK2600 EQU	$
		LDA	!YUKID_VS_PLXSPD,Y
		STA	<EWORKE

YUKID_PLCHK2700 EQU	$
		LDA	<EWORKE
		STA	ENXSPD,X

YUKID_PLCHK2750 EQU	$
		INC	PSPUSH			;押しカウンターセット

YUKID_PLCHK2C00 EQU	$

		RTS
;
;
YUKID_PLCHK3	EQU	$
		LDY	PLJUMP			;
		BEQ	YUKID_P30500		;

		JMP	YUKID_P33000

YUKID_P30500	EQU	$
		LDA	ENXSPD,X		;動いてる ?
		BNE	YUKID_P30200		; yes: YUKID_P30200

		LDA	PLXSPD			;プレイヤー動いてる ?
		BNE	YUKID_P30800		; yes: YUKID_P30800
		JMP	YUKID_P38000

YUKID_P30200	EQU	$
		LDA	PLXSPD			;プレイヤー動いてる ?
		BNE	YUKID_P30700		; yes: YUKID_P30700

		LDA	EPWIDX,X		;プレイヤーに向かってる ?
		EOR	ENXSPD,X		;
		BMI	YUKID_P33000		; yes: YUKID_P33000

YUKID_P30600	EQU	$
		RTL

YUKID_P30700	EQU	$
		EOR	ENXSPD,X		;プレイヤーと同じ方向に進んでる ?
		BPL	YUKID_P31000		; yes: YUKID_P31000

YUKID_P30800	EQU	$
		LDA	EPWIDX,X		;プレイヤー向かってきてる ?
		EOR	PLXSPD			;
		BMI	YUKID_P30600		;  no: YUKID_P30600
		JMP	YUKID_P35000

YUKID_P31000	EQU	$
		LDA	ENXSPD,X		;プレイヤーの方が速い ?
		SEC				;
		SBC	PLXSPD			;
		EOR	PLXSPD			;
		BPL	YUKID_P31600		;  no: YUKID_P31600

		LDA	EPWIDX,X		;プレイヤー向かってきてる ?
		EOR	PLXSPD			;
		BMI	YUKID_P30800		;  no: YUKID_P30800
		JMP	YUKID_P35000		; yes: YUKID_P35000

YUKID_P31600	EQU	$
		LDA	EPWIDX,X		;プレイヤー向かってきてる ?
		EOR	PLXSPD			;
		BPL	YUKID_P30800		; yes: YUKID_P30800
;
; プレイヤーおっとっと
YUKID_P33000	EQU	$
		LDA	KEYC1L			;キー入力有り ?
		AND	#00300H			;
		BEQ	YUKID_P33300		;  no: YUKID_P33300

		AND	#00200H			;こっち側にキーが入ってる ?
		DEC	A			;
		EOR	EPWIDX,X		;
		BPL	YUKID_P33300		;  no: YUKID_P33300

		LDA	PLXSPD			;
		BPL	YUKID_P33100

		EOR	#0FFFFH
		INC	A

YUKID_P33100	EQU	$
		AND	#0FF00H			;
		XBA				;
		INC	A			;
		LDY	EPXMUK,X
		BEQ	YUKID_P33180

		EOR	#0FFFFH
		INC	A

YUKID_P33180	EQU	$
		CLC
		ADC	ENXSPD,X		;
		STA	ENXSPD,X		;

YUKID_P33300	EQU	$
YUKID_PL_SLIP	EQU	$
		LDA	#00160H
		STA	EGOPSP
;
		LDA	PLJUMP			;プレイヤージャンプ中 ?
;;;;;;;;		ORA	PLTYPE			;プレイヤー変身中 ?
		ORA	PLNAGE			;プレイヤー投げポーズ ?
		ORA	BERFLG			;プレイヤーお食事ポーズ ?
		BNE	YUKID_P33500		; yes: YUKID_P33500

		LDA	FRCNT2
		AND	#00007
		ASL	A
		TAX
		LDA	>SLIP_PATN,X
		STA	PLPATN
		LDX	<ENINDX

YUKID_P33500	EQU	$
YUKID_PL_REVISE EQU	$
		LDY	EPXMUK,X		;R12 <- 補正量
		TYA				;
		EOR	#00002			;
		DEC	A			;
		ASL	A			;
		CLC				;
		ADC	<EWORK6			;
						;
YUKID_PL_REV2	EQU	$			;
		STA	R12			;

		LDA	PWIDEX			;CWRK10 <- チェックＸ　ＰＯＳ．１
		LDY	EPXMUK,X		;CWRK12 <- チェックＸ　ＰＯＳ．２
		BNE	YUKID_P33600		;
						;
		EOR	#0FFFFH			;
		INC	A			;
						;
YUKID_P33600	EQU	$			;
		CLC				;
		ADC	PCENTX			;
		STA	<EWORK2			;
		STA	CCWORK10		;
		STA	CCWORK12		;
		LDA	PCENTY			;CWRK11 <- チェックＹ　ＰＯＳ．１
		SEC				;
		SBC	#00004			;
		STA	CCWORK11		;
		CLC				;CWRK13 <- チェックＹ　ＰＯＳ．２
		ADC	#00004+4		;
		STA	CCWORK13		;
		STZ	R9			;R9 <- 補正方向
		M_CHIPR PL_REVISE_CHK
		LDX	<ENINDX
		LDA	CCWORK10		;プレイヤーのＸ　ＰＯＳ．補正
		SEC				;
		SBC	<EWORK2			;
		CLC				;
		ADC	PLXPSL			;
		STA	PLXPSL			;

		LDA	R12			;補正ＯＫ ?
		BEQ	YUKID_P33800		; yes: YUKID_P33800

		LDY	EPXMUK,X		;進行方向にプレイヤーがいる ?
		TYA				;
		DEC	A			;
		EOR	ENXSPD,X		;
		BMI	YUKID_P33800		;  no: YUKID_P33800

		LDA	ENXSPD,X
		CMP	#08000H
		ROR	A
		EOR	#0FFFFH
		INC	A
		STA	ENXSPD,X
		STZ	PLXSPD
		STZ	PLMVSP

YUKID_P33800	EQU	$
		RTL
;
;プレイヤーに押される
YUKID_P35000	EQU	$
		LDA	KEYC1L			;キー入力有り ?
		AND	#00300H			;
		BNE	YUKID_P35040		; yes: YUKID_P35040
		JMP	YUKID_P33000		;  no: YUKID_P33000

YUKID_P35040	EQU	$
		AND	#00200H			;こっち側にキーが入ってる ?
		DEC	A			;
		EOR	EPWIDX,X		;
		BMI	YUKID_P35048		; yes: YUKID_P35048
		JMP	YUKID_P33500		;  no: YUKID_P33500

YUKID_P35048	EQU	$
		LDA	ENXSPD,X		;止まってる ?
		BEQ	YUKID_P35050		; yes: YUKID_P35050

;;;;;;;;		LDA	ENXSPD,X	;プレイヤーと自分のＸ　ＳＰＥＥＤセット
		EOR	PLXSPD			;	;プレイヤーと反対方向に動いてる ?
		BPL	YUKID_P35080		;	;  no: YUKID_P35080
						;
YUKID_P35050	EQU	$			;
		LDA	PLXSPD			;
		CMP	#08000H			;
		ROR	A			;
		CMP	#08000H			;
		ROR	A			;
		CMP	#08000H			;
		ROR	A			;
		LDY	PLJUMP			;
		BEQ	YUKID_P35180		;
						;
		CMP	#08000H			;
		ROR	A			;
		CMP	#08000H			;
		ROR	A			;
		BRA	YUKID_P35180		;
						;
YUKID_P35080	EQU	$			;
		LDA	PLXSPD			;
		AND	#0FF00H			;
		XBA				;
		TAY				;
		BPL	YUKID_P35090		;
						;
		ORA	#0FF00H			;
						;
YUKID_P35090	EQU	$			;
		LDY	PLJUMP			;	;プレイヤージャンプ中 ?
		BNE	YUKID_P35180		;	; yes: YUKID_P35180
						;
		ASL	A			;
						;
YUKID_P35180	EQU	$			;
		CLC				;
		ADC	ENXSPD,X		;
		STA	<EWORK8			;
						;
		LDA	ENXSPD,X		;	;動いてる ?
		BEQ	YUKID_P35200		;	;  no: YUKID_P35200
						;
		EOR	PLXSPD			;	;プレイヤーと正面衝突した ?
		BPL	YUKID_P35200		;	;  no: YUKID_P35200
						;
		LDA	ENXSPD,X		;	;衝撃が大きかった ?
		SEC				;	;
		SBC	PLXSPD			;	;
		CLC				;	;
		ADC	#00200H			;	;
		CMP	#00400H			;	;
		BCC	YUKID_P35200		;	;  no: YUKID_P35200
						;
		JSR	YUKID_PLCHK1700		;
						;
		RTL				;
						;
YUKID_P35200	EQU	$			;
		LDA	<EWORK8			;
		STA	ENXSPD,X		;
		STA	PLXSPD			;
		STA	PLMVSP			;

		INC	<ENWRK1,X		;プレイヤーサイドタッチフラグセット

		LDA	ENMYNO,X
		CMP	#YUKID
		BNE	YUKID_P35400

		STZ	<ENCONT,X		;プレイヤーどすこいタイマークリア

		LDA	KEYC1L			;進行方向キーチェックデータ
		AND	#00300H			;    ＆プレイヤーパターンチェンジカウンターセット
		CMP	#00300H			;
		BNE	YUKID_P35300		;
						;
		AND	#00100H			;
						;
YUKID_P35300	EQU	$			;
		ORA	#00010H			;
		STA	<ENWRK4,X		;
		BRA	YUKID_P38000

YUKID_P35400	EQU	$
		TAY
		PHY
		STZ	ENWRKA,X		;プレイヤーどすこいタイマークリア

		LDA	#00010H			;プレイヤーパターンチェンジカウンターセット
		STA	<ENWRK4,X		;

		LDA	KEYC1L
		AND	#00300H
		CMP	#00300H
		BNE	YUKID_P35500

		AND	#00100H

YUKID_P35500	EQU	$
		PLY
		CPY	#MBALL
		BEQ	YUKID_P35600

		STA	ENWRKC,X
		BRA	YUKID_P35700

YUKID_P35600	EQU	$
		STA	ENWRK6,X

YUKID_P35700	EQU	$
		LDY	ENSLOP,X		;坂の上にいる ?
		BEQ	YUKID_P35800		;  no: YUKID_P35800

		JMP	YUKID_PL_REVISE

YUKID_P35800	EQU	$
		LDY	EPXMUK,X		;R12 <- 補正量
		TYA				;
		DEC	A			;
		ASL	A			;
		SEC				;
		SBC	<EWORK6			;
		BRA	YUKID_P38100
;
;敵補正の後、足らない分プレイヤー補正
YUKID_P38000	EQU	$
;		LDY	EPXMUK,X		;R12 <- 補正量
;		PHP				;
;		TYA				;
;		DEC	A			;
;		ASL	A			;
;		SEC				;
;		SBC	<EWORK6			;
		LDA	<EWORK6			;R12 <- 補正量
		EOR	#0FFFFH			;
		INC	A			;

YUKID_P38100	EQU	$
		STA	R12			;
		STA	<EWORK2			;
		LDA	EWIDEX,X		;CWRK10 <- チェックＸ　ＰＯＳ．１
		LDY	EPXMUK,X		;CWRK12 <- チェックＸ　ＰＯＳ．２
		BEQ	YUKID_P38300		;
						;
		EOR	#0FFFFH			;
		INC	A			;
						;
YUKID_P38300	EQU	$			;
		CLC				;
		ADC	ECENTX,X		;
		STA	<EWORK2			;
		STA	CCWORK10		;
		STA	CCWORK12		;
		LDA	ECENTY,X		;CWRK11 <- チェックＹ　ＰＯＳ．１
		SEC				;
		SBC	#00004			;
		STA	CCWORK11		;
		CLC				;CWRK13 <- チェックＹ　ＰＯＳ．２
		ADC	#00004+4		;
		STA	CCWORK13		;
		STZ	R9			;R9 <- 補正方向
		M_CHIPR PL_REVISE_CHK
		LDX	<ENINDX
		LDA	CCWORK10		;自分のＸ　ＰＯＳ．補正
		SEC				;
		SBC	<EWORK2			;
		CLC				;
		ADC	ENXPSL,X		;
		STA	ENXPSL,X		;

YUKID_P38400	EQU	$
		LDA	R12			;補正ＯＫ ?
		BEQ	YUKID_P38800		;  no: YUKID_P38800

		LDY	<EWORK6+1		;R12 <- 補正量
		BPL	YUKID_P38500		;
						;
		EOR	#0FFFFH			;
		INC	A			;
						;
YUKID_P38500	EQU	$			;
		STA	R12			;
		LDA	PWIDEX			;CWRK10 <- チェックＸ　ＰＯＳ．１
		LDY	EPXMUK,X		;CWRK12 <- チェックＸ　ＰＯＳ．２
		BNE	YUKID_P38600		;
						;
		EOR	#0FFFFH			;
		INC	A			;
						;
YUKID_P38600	EQU	$			;
		CLC				;
		ADC	PCENTX			;
		STA	<EWORK2			;
		STA	CCWORK10		;
		STA	CCWORK12		;
		LDA	PCENTY			;CWRK11 <- チェックＹ　ＰＯＳ．１
		SEC				;
		SBC	#00004			;
		STA	CCWORK11		;
		CLC				;CWRK13 <- チェックＹ　ＰＯＳ．２
		ADC	#00004+4		;
		STA	CCWORK13		;
		STZ	R9			;R9 <- 補正方向
		M_CHIPR PL_REVISE_CHK
		LDX	<ENINDX
		LDA	CCWORK10		;プレイヤーのＸ　ＰＯＳ．補正
		SEC				;
		SBC	<EWORK2			;
		CLC				;
		ADC	PLXPSL			;
		STA	PLXPSL			;

		LDA	ENXSPD,X
		CMP	#08000H
		ROR	A
		EOR	#0FFFFH
		INC	A
		STA	ENXSPD,X
		STZ	PLXSPD
		STZ	PLMVSP

YUKID_P38800	EQU	$
		RTL
;
;
;
;
;
;
;
;
;
;
;
;
YUKID_SUB0	EQU	$
		TYX

		LDA	EPWIDX,X		;プレイヤー 近くにいる ?
		CLC				;
		ADC	#00040H			;
		CMP	#00080H			;
		BCS	YUKID_SUB0800		;  no: YUKID_SUB0800

		LDY	EPXMUK,X		;プレイヤー目の前にいる ?
		TYA				;
		CMP	ENMUKI,X		;
		BEQ	YUKID_SUB0800		; yes: YUKID_SUB0800

		LDA	#00040H
		STA	ENTIM0,X
		INC	<ENWRK2,X

YUKID_SUB0800	EQU	$

		RTS
;
YUKID_SUB1	EQU	$
		TYX

		LDA	ENTIM0,X		;リフトから降りる ?
		BNE	YUKID_SUB1800		;  no: YUKID_SUB1800

		LDY	<ENWRK3,X
		LDA	#00000			;リフトから降りる
		STA	ENWRK8,Y		;
		TAY
		STY	<ENWRK3,X		;
		LDA	ENMOD2,X		;範囲クリアあり
		ORA	#0000000000000100B
		STA	ENMOD2,X

		INC	<ENWRK2,X

YUKID_SUB1800	EQU	$

		RTS
;
YUKID_SUB2	EQU	$
		TYX

		LDA	ENCBFG,X		;空中 ?
		BIT	#00001			;
		BEQ	YUKID_SUB2800		; yes: YUKID_SUB2800

		LDA	ENSLOP,X		;目標回転角セット
		ASL	A			;
		PHP				;
		BIT	#0FF00H			;
		BEQ	YUKID_SUB2000		;
						;
		ORA	#0FF00H			;
						;
YUKID_SUB2000	EQU	$			;
		LDY	ENMUKI,X		;	;右向き ?
		BEQ	YUKID_SUB2100		;	;  no: YUKID_SUB2100
						;
		EOR	#0FFFFH			;
		INC	A			;
						;
YUKID_SUB2100	EQU	$			;
		STA	ENWRK8,X		;
		PLP				;
		BNE	YUKID_SUB2500		;

		LDA	ENXSPD,X		;止まった ?
		CLC				;
		ADC	#00010H			;
		CMP	#00020H			;
		BCS	YUKID_SUB2500		;  no: YUKID_SUB2500

		STZ	ENXSPD,X
		STZ	ENXPOW,X
		LDY	EPXMUK,X
		TYA
		STA	ENMUKI,X
		BRA	YUKID_SUB2800

YUKID_SUB2500	EQU	$
		LDY	ENBGYP,X		;ＢＧチェック位置調整
		CPY	#004			;
		BPL	YUKID_SUB2600		;
						;
		INC	ENBGYP,X		;
						;
YUKID_SUB2600	EQU	$
		LDA	ENCBFG,X		;かべにぶつかった ?
		BIT	#0000CH			;
		BEQ	YUKID_SUB2800		;  no: YUKID_SUB2800

		JMP	YUKID_FAIL

YUKID_SUB2700	EQU	$
		STZ	ENWRK8,X		;目標回転角クリア
		STZ	ENBGYP,X		;ＢＧチェック位置調整クリア

YUKID_SUB2800	EQU	$
		LDY	<ENWRK0,X		;中身はスライディングたーくん ?
		CPY	#006			;
		BNE	YUKID_SUB2900		;  no: YUKID_SUB2900

		LDA	EPWIDX,X		;プレイヤー近づいてきた ?
		CLC				;
		ADC	#00030H			;
		CMP	#00060H			;
		BCC	YUKID_FAIL		; yes: YUKID_FAIL

YUKID_SUB2900	EQU	$
YUKID_FAIL0000	EQU	$

		RTS
;
YUKID_FAIL	EQU	$
		LDY	<ENWRK0,X		;中身ある ?
		BEQ	YUKID_FAIL0800		;  no: YUKID_FAIL0800

		DEY				;タイム５ ?
		DEY				;
		BNE	YUKID_FAIL0400		;  no: YUKID_FAIL0400

		JSL	>TRBOX_TIME_SET
;;;;;;;;		JSL	>TROBJ_COUN_SET
		BRA	YUKID_FAIL0600

YUKID_FAIL0400	EQU	$
		DEY				;１ＵＰ ?
		DEY				;
		BNE	YUKID_FAIL0500		;  no: YUKID_FAIL0500

		JSL	>PL_1UP_SET_P
;;;;;;;;		JSL	>TRBOX_TIME_SET
		BRA	YUKID_FAIL0600

YUKID_FAIL0500	EQU	$
		LDA	#STRKN
		JSL	>ENINSR_I
		BCC	YUKID_FAIL0000

		LDA	ENXPSL,X
		STA	ENXPSL,Y
		LDA	ENYPSL,X
		STA	ENYPSL,Y

YUKID_FAIL0600	EQU	$
		LDA	ENWRKA,X
		STA	<EWORK4
		LDA	ENWRKC,X
		JSL	>NON_EXIST_SET2

YUKID_FAIL0800	EQU	$
		LDA	#SNWBR		;(A) <-- exstra no.
		JSL	>EXINSR
		LDA	#00008H
		STA	EXWRK0,Y	;counter set
		LDA	#00001H
		STA	EXTIM0,Y
		LDA	ENXPSL,X
		STA	EXXPSL,Y	;X pos set
		LDA	ENYPSL,X
		STA	EXYPSL,Y	;Y pos set
		LDA	ENXSPD,X
		STA	EXXSPD,Y
		LDA	ENYSPD,X
		BPL	YUKID_FAIL0880

		LDA	#00000

YUKID_FAIL0880	EQU	$
		STA	EXYSPD,Y

		LDA	#00037H		;［Ｓ］
		JSL	>SOUND_3_ON

		LDY	<ENWRK3,X		;リフトに乗ってた ?
		BEQ	YUKID_FAIL0900		;  no: YUKID_FAIL0900

		LDA	#00000
		STA	ENWRK8,Y

YUKID_FAIL0900	EQU	$
		PLA			;直接［ＲＴＬ］
		JMP	>ENCLEAR
;
;************************************************************************
;*		initial ( キラー砲台 )					*
;************************************************************************
DAI00_I_COL	EQU	$
		WORD	00022H,00024H,00020H
;
DAI00IN		EQU	$			;-- dai00in --
DAI01IN		EQU	$			;-- dai01in --
DAI02IN		EQU	$			;-- dai02in --
		LDA	#00100H			;初期倍率セット
		STA	ENWRK6,X

		LDA	ENMYNO,X		;行動フラグセット
		SEC				;
		SBC	#DAI00			;
		ASL	A			;
		TAY				;
		STY	<ENWRK0,X		;
		LDA	!DAI00_I_COL,Y		;カラーセット
		STA	ENCLOR,X		;
		CPY	#002H			;回転砲台 ?
		BNE	HODAIIN0800		;  no: HODAIIN0800

		JSL	>TROBJ_SR_4x4_CL

		LDY	#004H			;キャラパターンナンバーセット
		STY	<ENWRK3,X

		JSR	HODAI_ROT_SET

		LDA	EPWIDX,X		;回転角セット
		STA	R1			;
		LDA	EPWIDY,X		;
		STA	R2			;
						;
		M_CHIP	M_RAD_GET		;
		LDX	<ENINDX			;
						;
		LDA	R0			;
		STA	ENWRKC,X		;
		SEC				;
		SBC	#00080H			;
		CMP	#00100H			;
		BCS	HODAIIN0100		;
						;
		STZ	ENMUKI,X		;
						;
		BRA	HODAIIN0800		;
						;
HODAIIN0100	EQU	$			;
		LDA	#00002H			;
		STA	ENMUKI,X		;

HODAIIN0800	EQU	$
		LDA	#0FFFFH			;killer routine index clear
		STA	ENWRKA,X
		TAY				;一発目フラグセット
		STY	<ENWRK1,X		;

		RTL
;
;************************************************************************
;*		move	( キラー砲台 )					*
;************************************************************************
;B		ENWRK0	行動タイプ
;B		ENWRK1	一発目フラグ
;B		ENWRK2	ROUTINE MODE INDEX
;B		ENWRK3	砲身キャラパターンフラグ
;B		ENWRK4	砲身ズームフラグ
;B		ENWRK5	キラーショットフラグ
;		ENWRK6	倍率
;		ENWRK8	回転角
;		ENWRKA	キラーの ROUTINE INDEX
;		ENWRKC	回転角計算用ワーク
;
;		ENCONT	ZOOM COUNTER
;
;		ENTIM0
;		ENTIM1	発射ウェイトタイマー
;		ENTIM2
;		ENTIM3
;
;DAI00		固定砲台（サーチキラー）
;DAI01		回転砲台（バウンドキラー）
;DAI02		固定砲台（直進キラー）
;
HODAI_SUB	EQU	$
		WORD	HODAI_SUB0		;キラー弾込め待ち
		WORD	HODAI_SUB1		;キラー発射待ち
		WORD	HODAI_SUB2		;キラー発射後のリアクション
;
HODAI_REV	EQU	$
		WORD	00010H,0FFF0H
HODAI_REV2	EQU	$
		WORD	0FFF8H,00008H
;
DAI00MV		EQU	$			;-- dai00mv --
DAI01MV		EQU	$			;-- dai01mv --
DAI02MV		EQU	$			;-- dai02mv --
		JSR	HODAI_OAM_SET

		LDY	ENWRKA+1,X		;キラー持ってる ?
		BMI	DAI00MV0200		;  no: DAI00MV0200

		LDA	ENCOLD,X		;凍ってる ?
		BNE	DAI00MV0100		; yes: DAI00MV0100
		LDA	ENMODE,X		;砲台しっかり生きてる ?
		CMP	#EMOVE			;
		BNE	DAI00MV0100		; yes: DAI00MV0100

		LDA	GATE_IN			;プレイヤー中間ゲートをくぐった ?
		BEQ	DAI00MV0180		;  no: DAI00MV0180

DAI00MV0100	EQU	$
		TYX
		JSL	>ENCLEAR
		LDX	<ENINDX
		LDA	#0FFFFH
		STA	ENWRKA,X
		BRA	DAI00MV0200

DAI00MV0180	EQU	$
		LDA	#EINIT			;キラーじっとしとき
		STA	ENMODE,Y		;

DAI00MV0200	EQU	$
		JSL	>ENMDCK

		JSR	HODAI_PLCHK

		TXY
		LDA	<ENWRK2,X
		AND	#000FFH
		ASL	A
		TAX
		JSR	(HODAI_SUB,X)

		JSR	HODAI_ROT_SET

		JSR	KILLER_SHOT		;キラー発射トリガーチェック

		LDY	<ENWRK0,X		;バウンドキラー砲台 ?
		CPY	#002			;
		BNE	DAI00MV0800		;  no: DAI00MV0800

		LDY	ENWRKA,X		;前にセットしたキラーまだ生きてる ?
		BMI	DAI00MV0800		;  no: DAI00MV0800
		LDA	ENMYNO,Y		;
		CMP	#KIL01			;
		BNE	DAI00MV0700		; yes: DAI00MV0700
		LDA	ENCOLD,Y
		BNE	DAI00MV0700
		LDA	ENMODE,Y		;
		CMP	#EMOVE			;
		BEQ	DAI00MV0800		;
		CMP	#EINIT			;
		BEQ	DAI00MV0800		;

DAI00MV0700	EQU	$
		LDA	#0FFFFH
		STA	ENWRKA,X

DAI00MV0800	EQU	$

		RTL
;
HODAI_OAM_SET	EQU	$
		LDY	ENTROB+1,X		;回転オブジェ使用中 ?
		BMI	HODAI_O_SET0800		;  no: HODAI_O_SET0800

		LDY	ENMUKI,X		;頭の位置調整
		LDA	!HODAI_REV,Y		;
		STA	<EWORK0			;
		LDA	!HODAI_REV2,Y		;
		STA	<EWORK2			;
						;
		LDA	#0FFF0H			;
		LDY	ENCLOR,X		;
		BPL	HODAI_O_SET0100		;
						;
		LDA	#00010H			;
						;
HODAI_O_SET0100 EQU	$			;
		STA	<EWORK4			;
						;
		I16				;
		LDA	ENOAML,X		;
		CLC				;
		ADC	#00008H			;008H * 1
		TAY				;

		LDA	ENDSXL,X		;
		CLC				;
		ADC	<EWORK2			;
		STA	SOAM_DX+0,Y		;
		STA	SOAM_DX+0+16,Y		;
		CLC				;
		ADC	<EWORK0			;
		STA	SOAM_DX+0+8,Y		;
		STA	SOAM_DX+0+24,Y		;
						;
		LDA	ENDSYL,X		;
		CLC				;
		ADC	<EWORK4			;
		STA	SOAM_DX+2,Y		;
		STA	SOAM_DX+2+8,Y		;
		SEC				;
		SBC	<EWORK4			;
		STA	SOAM_DX+2+16,Y		;
		STA	SOAM_DX+2+24,Y		;

		LDA	SOAM_DX+6+8*0,Y
		ORA	#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

		JSL	>TROBJ_OAM_4x4_I

		I8

HODAI_O_SET0800 EQU	$

		RTS
;
HODAI_CHAR	EQU	$
		WORD	CIPCHD2+0010H+000H
		WORD	CIPCHD2+0000H+000H
		WORD	CIPCHD2+3000H+000H
;
HODAI_ROT_SET	EQU	$
		LDY	ENTROB+1,X		;回転オブジェ使用中 ?
		BMI	HODAI_R_SET0800		;  no: HODAI_R_SET0800

						;転送元アドレス＆バンクセット
		LDY	<ENWRK3,X		;(R12) <-- 転送元アドレスセット
		LDA	!HODAI_CHAR,Y		;(R13) <-- 転送元バンクセット
		STA	R12			;
		LDA	#BANK CIPCHD2+0000H+00H ;
		STA	R13			;

		LDA	ENWRK8,X		;(R5) <- 回転角セット
		STA	R11			;
		LSR	A			;
		STA	R5			;

		LDA	ENWRK6,X		;(R6) <- 倍率セット
		STA	R6			;

		LDA	ENMUKI,X		;(R4) <- キャラ向き
		STA	R4			;

		LDA	#00010H			;SMOKE XPOS.
		STA	R9

;		LDA	#00000H			;SMOKE YPOS.
		STZ	R10

		LDY	ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_X,X		;(R3) <- ビットマップ座標＿Ｘセット
		STA	R3			;
		LDA	>TROBJ_PLOT_Y,X		;(R2) <- ビットマップ座標＿Ｙセット
		STA	R2			;
;
;-------------- OBJ mode 7 set ----------------------------------
;
;		ldy	#004h
;		sty	2100h
;
;		M_CHIP	C_32_ROTZOM_16
		M_CHIP	M_HODAI_SET
;
;		ldy	#00fh
;		sty	2100h

		LDX	<ENINDX

		INC	OBM7WF			;mode 7 OBJ chara DMA "ON"

HODAI_R_SET0800 EQU	$
HODAI_PLCHK0000 EQU	$

		RTS
;
HODAI_PLCHK	EQU	$
;		LDY	ENTROB+1,X		;回転オブジェ使用中 ?
;		BPL	HODAI_PLCHK0100		; yes: HODAI_PLCHK0100
;
;		LDY	ONLFFG
;		STY	<EWORK2
;		PLA
;		STA	<EWORK0
;		JSL	>EPCRCK
;		LDA	<EWORK0
;		PHA
;
;		LDY	ONLFFG			;
;		CPY	<EWORK2			;
;		BNE	HODAI_PLCHK0000		;
;
;		JSL	>POBBGCR
;
;		RTS
;
;HODAI_PLCHK0100 EQU	$
		LDA	#00005
		STA	R0
		LDA	ENWRK6,X		;(R6) <- 倍率セット
		STA	R6			;
		M_CHIP	MULTIPLY
		LDX	<ENINDX

		LDA	R0			;プレイヤーと接触した ?
		CLC				;
		ADC	PWIDEX			;
		STA	<EWORK4			;
		ASL	A			;
		STA	<EWORK0			;
		LSR	A			;
		CLC				;
		ADC	EPWIDX,X		;
		CMP	<EWORK0			;
		BCS	HODAI_PLCHK0000		;
						;
		LDA	#00008			;
		STA	R0			;
		M_CHIP	MULTIPLY		;
		LDX	<ENINDX			;
		LDA	R0			;
		CLC				;
		ADC	PWIDEY			;
		ASL	A			;
		STA	<EWORK2			;
		LSR	A			;
		CLC				;
		ADC	EPWIDY,X		;
;		 SEC				 ;
;		 SBC	 #00003			 ;
		CMP	<EWORK2			;
		BCS	HODAI_PLCHK0000		;  no: HODAI_PLCHK0000

		CMP	#00008			;プレイヤー下からあたってきた ?
		BCS	HODAI_PLCHK1000		;  no: HODAI_PLCHK1000

		LDY	PLYSPD+1		;プレイヤー上昇中 ?
		BPL	HODAI_PLCHK0000		;  no: HODAI_PLCHK0000

		STZ	PLSPJP
		CLC				;プレイヤーＹ　ＰＯＳ．補正
		ADC	PLYPSL			;
		STA	PLYPSL			;
		STZ	PLYSPD

HODAI_PLCHK0800 EQU	$

		RTS

HODAI_PLCHK1000 EQU	$
		SEC				;プレイヤーに踏まれた ?
		SBC	<EWORK2			;
		CMP	#0FFF6H			;
		BCC	HODAI_PLCHK2000		;  no: HODAI_PLCHK2000

		LDY	PLJUMP			;プレイヤージャンプ中 ?
		BEQ	HODAI_PLCHK1100		;  no: HODAI_PLCHK1100

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

HODAI_PLCHK1100 EQU	$
		INC	ONLFFG

		INC	A
		SEC				;プレイヤーＹ　ＰＯＳ．補正
		ADC	PLYPSL			;
		STA	PLYPSL			;
		STZ	PLYSPD

		RTS

HODAI_PLCHK2000 EQU	$
		LDA	PLXSPD			;プレイヤー向かってきてる ?
		BNE	HODAI_PLCHK2100		;
						;
		LDA	PLCMKI			;
		EOR	#00002			;
		DEC	A			;
						;
HODAI_PLCHK2100 EQU	$			;
		STA	<EWORK6			;
		EOR	EPWIDX,X		;
		BMI	HODAI_PLCHK2800		;  no: HODAI_PLCHK2800

		LDA	<EWORK4			;プレイヤーＸ　ＰＯＳ．補正
		LDY	<EWORK6+1		;
		BMI	HODAI_PLCHK2200		;
						;
		EOR	#0FFFFH			;
		INC	A			;
						;
HODAI_PLCHK2200 EQU	$			;
		CLC				;
		ADC	ECENTX,X		;
		SEC				;
		SBC	PCENTX			;
		CLC				;
		ADC	PLXPSL			;
		STA	PLXPSL			;

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

HODAI_PLCHK2800 EQU	$
KILLER_SHOT0000 EQU	$

		RTS
;
KILLER_SHOT	EQU	$
		LDY	<ENWRK5,X		;キラーを打ち出してもいい ?
		BEQ	KILLER_SHOT0000		;  no: KILLER_SHOT0000

		LDY	#000			;killer shot flag clear
		STY	<ENWRK5,X

;EN キラー初期データセット
		LDA	ENWRK8,X		;キラーＹ　ＳＰＥＥＤチェック
		SEC				;
		SBC	#00100H			;
		EOR	CCWORK12		;
		BMI	KILLER_SHOT0100		;
						;
		LDA	CCWORK12		;
		EOR	#0FFFFH			;
		STA	CCWORK12		;
						;
KILLER_SHOT0100 EQU	$
;EX けむりセット
		LDA	#SMK00
		JSL	>EXINSR
		LDA	#00006
		STA	EXWRK0,Y

		LDA	#00002H
		STA	EXTIM0,Y

		LDA	ENXPSL,X		;Ｘ　ＰＯＳ．セット
		SEC
		SBC	CCWORK11
		STA	EXXPSL,Y

		LDA	ENYPSL,X		;Ｙ　ＰＯＳ．セット
		SEC
		SBC	#00008H
		SEC
		SBC	CCWORK10
		STA	EXYPSL,Y

		LDA	#00047H			;［Ｓ］
		JSL	>SOUND_3_ON

KIL_SHOT_INIT	EQU	$			;キラー持ってる ?
		LDY	ENWRKA+1,X		;  no: KILLER_SHOT0000
		BMI	KILLER_SHOT0000

		LDA	#00100H			;倍率セット
		STA	ENWRK6,Y

		LDA	ENWRK8,X		;回転角セット
		STA	ENWRK8,Y

		LDA	ENXPSL,X		;Ｘ　ＰＯＳ．セット
		SEC
		SBC	CCWORK11
		STA	ENXPSL,Y

		LDA	ENYPSL,X		;Ｙ　ＰＯＳ．セット
		SEC
		SBC	#00008H
		SEC
		SBC	CCWORK10
		STA	ENYPSL,Y

		LDA	ENMUKI,X		;向きセット
		STA	ENMUKI,Y

		LDA	CCWORK12		;Ｙ　ＳＰＥＥＤセット
		STA	ENYSPD,Y
		LDA	CCWORK13		;Ｘ　ＳＰＥＥＤセット
		STA	ENXSPD,Y

		LDA	#0110100000100000B	;食える
		STA	ENMOD0,Y		;

		LDA	ENMYNO,Y
		SEC
		SBC	#KIL00
		STA	ENWRKC,Y

		LDA	ENWRKC,X		;回転角ワークセット
		STA	ENWRK0,Y		;

		LDA	#00030H			;サーチロックタイマーセット
		STA	ENTIM1,Y		;

		LDA	#00200H			;サーチエンドタイマーセット
		STA	ENTIM2,Y

		LDA	#EINIT
		STA	ENMODE,Y

		LDA	ENWRKA,X
		ORA	#0FF00H			;killer routine index clear
		STA	ENWRKA,X

		RTS
;
HODAI_ANG	EQU	$
		WORD	00000H,00100H
;
HODAI_SUB0	EQU	$
		TYX

		LDY	<ENWRK0,X		;回転砲台 ?
		CPY	#002H			;
		BNE	HODAI_SUB0300		;  no: HODAI_SUB0300

		LDA	#00004H
		JSR	ANGCAL_MUKI

		LDA	ENTIM1,X		;発射する ?
		BNE	HODAI_SUB0200		;  no: HODAI_SUB0200

		LDY	<ENWRK1,X		;一発目 ?
		BEQ	HODAI_SUB0100		;  no: HODAI_SUB0100

		LDA	ENDSXL,X		;画面内 ?
		CLC				;
		ADC	#00010H			;
		CMP	#00100H+10H		;
		BCS	HODAI_SUB0200		;  no: HODAI_SUB0200

		LDY	#000			;一発目フラグクリア
		STY	<ENWRK1,X		;

HODAI_SUB0100	EQU	$
		JSR	KILLER_SET
		BCC	HODAI_SUB0200

		LDA	#00174H
		STA	ENWRK6,X

		LDA	#00001H			;ENWRK2 <- routine mode index inc.
		STA	<ENWRK2,X		;ENWRK3 <- 砲身キャラパターンフラグセット

HODAI_SUB0200	EQU	$

		RTS

HODAI_SUB0300	EQU	$
		LDA	EPXMUK,X		;向きセット
		AND	#000FFH			;
		STA	ENMUKI,X		;
		TAY				;回転角ワークセット
		LDA	!HODAI_ANG,Y		;
		STA	ENWRKC,X		;

		LDA	ENTIM1,X		;発射する ?
		BNE	HODAI_SUB0800		;  no: HODAI_SUB0800

		LDY	<ENWRK1,X		;一発目 ?
		BEQ	HODAI_SUB0400		;  no: HODAI_SUB0400

		LDA	ENDSXL,X		;画面内に来た ?
		CLC				;
		ADC	#00010H			;
		CMP	#00100H+10H		;
		BCS	HODAI_SUB0800		;  no: HODAI_SUB0800

		LDY	#000			;一発目フラグクリア
		STY	<ENWRK1,X		;

HODAI_SUB0400	EQU	$
		JSL	>TROBJ_SR_4x4
		BCC	HODAI_SUB0800

HODAI_SUB0500	EQU	$
		JSR	KILLER_SET		;キラー弾込めＯＫ ?
		BCS	HODAI_SUB0600		; yes: HODAI_SUB0600

		JSL	>TROBJ_CLEAR
		BRA	HODAI_SUB0800

HODAI_SUB0600	EQU	$
		LDA	#00174H
		STA	ENWRK6,X

		LDA	#00001H			;ENWRK2 <- routine mode index inc.
		STA	<ENWRK2,X		;ENWRK3 <- 砲身キャラパターンフラグセット

HODAI_SUB0800	EQU	$

		RTS
;
HODAI_SUB1	EQU	$
		TYX

		LDA	ENWRK6,X		;キラー発射準備ＯＫ ?
		CLC				;
		ADC	#00004H			;
		CMP	#001FFH			;
		BMI	HODAI_SUB1100		;  no: HODAI_SUB1100

		LDY	#002H			;ZOOM COUNTER SET
		STY	<ENCONT,X		;

		LDA	#00102H			;ENWRK4 <-- hodai pattern flag
		STA	<ENWRK4,X		;ENWRK5 <-- killer shot flag

		LDA	#00202H			;ENWRK3 <-- 砲身キャラパターンフラグセット
		STA	<ENWRK2,X		;ENWRK2 <-- routine mode index inc.

		LDA	#001FFH

HODAI_SUB1100	EQU	$
		STA	ENWRK6,X

		RTS
;
HODAI_ZOOM	EQU	$
		WORD	00010H,0FFF0H
HODAI_PATF	EQU	$
		WORD	00004H,00000H
;
HODAI_SUB2	EQU	$
		TYX

		LDY	<ENWRK4,X		;
		LDA	ENWRK6,X		;
		CLC				;
		ADC	!HODAI_ZOOM,Y		;
		CMP	#001FFH			;
		BMI	HODAI_SUB2100		;

		LDY	#002H			;砲身キャラパターンフラグセット
		STY	<ENWRK3,X

		LDA	<ENWRK4,X
		EOR	#00002H
		STA	<ENWRK4,X

		LDA	#001FFH
		BRA	HODAI_SUB2200

HODAI_SUB2100	EQU	$
		CMP	#00199H
		BPL	HODAI_SUB2200

		LDA	<ENWRK4,X
		EOR	#00002H
		STA	<ENWRK4,X

		LDA	#00199H			;キラー発射終了 ?
		DEC	<ENCONT,X		;
		BNE	HODAI_SUB2200		;  no: HODAI_SUB2200

		LDY	#000
		LDA	<ENWRK0,X
		AND	#000FFH
		CMP	#00002H
		BEQ	HODAI_SUB2180

		INY
		INY

HODAI_SUB2180	EQU	$
		LDA	#00100H			;発射ウェイトタイマーセット
		STA	ENTIM1,X

		LDA	!HODAI_PATF,Y
		STA	<ENWRK3,X		;砲身キャラパターンフラグクリア
		LDA	#00100H
		STA	ENWRK6,X
		TYA
		BEQ	HODAI_SUB2190

		JSL	>TROBJ_CLEAR

HODAI_SUB2190	EQU	$
		LDY	#000
		STY	<ENWRK2,X		;routine mode index set

		RTS

HODAI_SUB2200	EQU	$
		STA	ENWRK6,X

HODAI_SUB2800	EQU	$

		RTS
;
KILLER_SET	EQU	$
		LDY	<ENWRK0,X		;バウンドキラー砲台 ?
		CPY	#002			;
		BNE	KILLER_SET0080		;  no: KILLER_SET0080

		LDA	ENWRKA,X		;前にセットしたキラーは生きている ?
		AND	#000FFH
		CMP	#00080H
		BMI	KILLER_SET0100		; yes: KILLER_SET0100

KILLER_SET0080	EQU	$
		TYA
		LSR	A
		CLC
		ADC	#KIL00
		TXY
		JSL	>ENINSR2_I
		BCC	KILLER_SET0100

		LDA	ENMYNO,Y		;直進キラー ?
		CMP	#KIL02			;
		BEQ	KILLER_SET0300		; yes: KILLER_SET0300

		PHX
		TYX
		JSL	>TROBJ_SR_4x4
		BCS	KILLER_SET0200

		JSL	>ENCLEAR

		PLX

KILLER_SET0100	EQU	$
		CLC
		RTS

KILLER_SET0200	EQU	$
		TXY
		PLX

KILLER_SET0300	EQU	$
		TYA
		M8
		STA	ENWRKA,X		;キラーの ROUTINE INDEX をセット
		STA	ENWRKB,X		;キラーの ROUTINE INDEX をセット
		M16

		LDA	ENXPSL,X		;キラーのダミーＸ　ＰＯＳ．セット
		STA	ENXPSL,Y

		LDA	ENYPSL,X		;キラーのダミーＹ　ＰＯＳ．セット
		STA	ENYPSL,Y

		LDA	ENCLOR,X
		STA	ENCLOR,Y

		M8
		LDA	#0FFH
		STA	ENWTSP,X
		M16

		SEC
		RTS
;
;************************************************************************
;*		initial ( キラー )					*
;************************************************************************
KIL00IN		EQU	$			;-- kil00in --
		JSR	KIL00_ROT_SET_I

KIL02IN		EQU	$			;-- kil02in --
KIL00IN_RTL	EQU	$
		RTL
;
;************************************************************************
;*		move	( キラー )					*
;************************************************************************
;		ENWRK0	回転角ワーク
;		ENWRK2	サーチロック解除フラグ
;		ENWRK4	キャラパターンフラグ
;		ENWRK6	倍率
;		ENWRK8	回転角
;		ENWRKA
;		ENWRKC	行動タイプ
;
;		ENTIM0	キラー口パクタイマー
;		ENTIM1	サーチタイマー
;		ENTIM2	サーチエンドタイマー
;
;		ENCONT	しぼみタイマー
;
;KIL00		サーチキラー（回転オブジェ使用）
;KIL02		直進キラー（回転オブジェ未使用）
;
KIL00MV		EQU	$			;-- kil00mv --
		LDY	ENYUSN,X
		BMI	KIL00MV0100

		LDY	ENTROB+1,X
		BMI	KIL00MV0100

		JSL	>TROBJ_OAM_4x4

KIL00MV0100	EQU	$
		JSR	KIL00_EAT_CHK
;
		JSL	>ENMDCK
;
		LDY	<ENWRK2,X		;サーチロック解除 ?
		BNE	KIL00MV0300		; yes: KIL00MV0300

		LDA	ENTIM1,X		;サーチロック ?
		BNE	KIL00MV0200		; yes: KIL00MV0200

		INC	<ENWRK2,X		;サーチロック解除

		JSR	KIL_MAXSPD_SET

KIL00MV0200	EQU	$
		JMP	KIL00MV0900

KIL00MV0300	EQU	$
		LDA	ENTIM2,X		;プレイヤーサーチ終わり ?
		BNE	KIL00MV0800		;  no: KIL00MV0800

		LDA	<ENCONT,X		;フラッシングカウンター　＝　０ ?
		BNE	KIL00MV0500		;  no: KIL00MV0500

		LDY	<ENWRK2,X		;初めてフラッシングする ?
		DEY				;
		BEQ	KIL00MV0400		; yes: KIL00MV0400

KILLER_BREAK	EQU	$
		LDA	#FUSNB		;(A) <-- exstra no.
		JSL	>EXINSR
		LDA	#0000BH
		STA	EXWRK0,Y	;counter set

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

		LDA	ENXPSL,X
		STA	EXXPSL,Y	;X pos set

		LDA	ENYPSL,X
		STA	EXYPSL,Y	;Y pos set

		JMP	>ENCLEAR

KIL00MV0400	EQU	$
		LDA	#00018H			;フラッシングカウンターセット
		STA	<ENCONT,X		;

		INC	<ENWRK2,X
		BRA	KIL00MV0600

KIL00MV0500	EQU	$
		DEC	<ENCONT,X

KIL00MV0600	EQU	$
		LDA	ENCLOR,X		;カラー反転
		EOR	#0000EH			;
		STA	ENCLOR,X		;

		LDA	ENWRK6,X		;倍率計算（小さくなってく）
		SEC				;
		SBC	#00004H			;
		CMP	#00040H			;
		BPL	KIL00MV0700		;
						;
		LDA	#00040H			;
						;
KIL00MV0700	EQU	$			;
		STA	ENWRK6,X		;

KIL00MV0800	EQU	$
		JSR	KIL_MAXSPD_SET		;サーチスピードセット

		JSR	ANGCAL_SPD		;回転角セット

KIL00MV0900	EQU	$
		JSR	KIL00_ROT_SET		;回転オブジェセット

		BRA	KIL00MV0980

KIL02MV		EQU	$			;-- kil02mv --
		JSR	KIL00_EAT_CHK

		JSL	>ENMDCK

		LDA	#00004
		STA	ENYUSN,X

KIL00MV0980	EQU	$
		LDA	ENWRK6,X		;(R4) <- チェックＸ倍率
		STA	R4			;(R9) <- チェックＹ倍率
		STA	R9
		JSR	KIL00_PLCHK		;プレイヤーチェック

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

		LDA	#00006H			;キャラパターンチェンジタイマーセット
		STA	ENTIM0,X		;

		LDA	<ENWRK4,X		;キャラパターンチェンジ
		EOR	#00002H			;
		STA	<ENWRK4,X		;

KIL00MV0A00	EQU	$

		RTL
;
KIL00_I_XMAX	EQU	$
		WORD	0FE00H,00200H
;
KIL00_EAT_CHK	EQU	$
		LDY	ENSHOT,X		;プレイヤーに吐かれた ?
		BEQ	KIL00_E_CHK0800		;  no: KIL00_E_CHK0800

		LDY	ENTROB,X		;回転エリアを使ってた ?
		BMI	KIL00_E_CHK0100		;  no: KIL00_E_CHK0100

		JSL	>TROBJ_CLEAR

KIL00_E_CHK0100 EQU	$
		LDA	ENXSPD,X
		PHA
		LDA	ENYSPD,X
		PHA
		LDA	ENCLOR,X
		PHA

		TXY
		LDA	#KIL02
		JSL	>ESTATST

		LDY	ENMUKI,X
		LDA	!KIL00_I_XMAX,Y
		STA	ENXMAX,X
		LDA	#00040H
		STA	ENGPOW,X
		STA	ENXPOW,X

		LDA	#0110100000100000B	;食える
		STA	ENMOD0,X		;

;		LDA	#00016H			;Ｇ　ＰＯＷＥＲセット
;		STA	ENGPOW,X		;
;		LDA	#002CCH			;Ｇ　ＭＡＸセット
;		STA	ENGMAX,X		;
;
;		LDA	#EFAIL			;モードチェンジ
;		STA	ENMODE,X
;
;		LDA	ENMOD1,X		;ＢＧチェックキャンセル
;		AND	#0FFE0H			;
;		STA	ENMOD1,X		;

		PLA
		STA	ENCLOR,X
		PLA
		STA	ENYSPD,X
		PLA
		STA	ENXSPD,X

		PLA
		RTL

KIL00_E_CHK0800 EQU	$

		RTS
;
KIL00_CHAR	EQU	$
		WORD	CIPCHD2+1000H+000H
		WORD	CIPCHD2+0020H+000H
;
KIL00_ROT_SET	EQU	$
		TROBJ_CHK_4			;回転オブジェセットフレーム ?
		BNE	KIL00_R_SET0800		;  no: KIL00_R_SET0800

		LDA	#00004
		STA	ENYUSN,X

KIL00_ROT_SET_I EQU	$
		LDY	<ENWRK4,X		;(R12) <-- 転送元アドレスセット
		LDA	!KIL00_CHAR,Y		;(R13) <-- 転送元バンクセット
		STA	R12			;
		LDA	#BANK CIPCHD2+0020H+00H ;
		STA	R13			;

		LDA	ENWRK8,X		;(R5) <- 回転角セット
		LSR	A			;
		STA	R5			;

		LDA	ENWRK6,X		;(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"

KIL00_R_SET0800 EQU	$
KIL00_PLCHK0000 EQU	$

		RTS
;
KIL00_PLCHK	EQU	$
		LDA	#0000CH
		JSR	KIL00_PLCHK_SB
		BCS	KIL00_PLCHK0000

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

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

		LDA	PLBGCR			;プレイヤー頭打ってる ?
		AND	#0000000000011000B	;
		BNE	KIL00_PLCHK0080		; yes: KIL00_PLCHK0080

		LDA	#0FA00H			;プレイヤー跳ね上がりスピードセット
		STA	PLYSPD			;
		LDA	#P006
		STA	PLJUMP
		STZ	PLDOSN
		LDA	#01H+8000H
		STA	PLSPJP

KIL00_PLCHK0080 EQU	$
		STZ	ENYSPD,X		;Ｙ　ＳＰＥＥＤクリア
		STZ	ENXSPD,X		;Ｘ　ＳＰＥＥＤクリア

		LDA	#00016H			;Ｇ　ＰＯＷＥＲセット
		STA	ENGPOW,X		;
		LDA	#002CCH			;Ｇ　ＭＡＸセット
		STA	ENGMAX,X		;

		STZ	<ENWRK4,X		;キャラパターン固定

		LDA	#EFAIL			;モードチェンジ
		STA	ENMODE,X

		LDA	ENMOD1,X		;ＢＧチェックキャンセル
		AND	#0FFE0H			;
		STA	ENMOD1,X		;

		LDA	#0000BH			;［Ｓ］
		JSL	>SOUND_3_ON

		RTS

KIL00_PLCHK0100 EQU	$
		LDA	#00006
		JSR	KIL00_PLCHK_SB
		BCS	KIL00_PLCHK0800

		STZ	PLYSPD
		STZ	PLSPJP			;ふんばりフラグクリア

		JSL	>PLFLST

KIL00_PLCHK0800 EQU	$

		RTS
;
KIL00_PLCHK_SB	EQU	$
		STA	R6
		LDA	R4
		STA	R0
		M_CHIP	MULTIPLY
		LDX	<ENINDX
		LDA	R0
		CLC
		ADC	PWIDEX
		ASL	A
		STA	<EWORK0
		LSR	A
		CLC
		ADC	EPWIDX,X
		CMP	<EWORK0
		BCS	KIL00_P_SB0800

		LDA	R9
		STA	R0
		M_CHIP	MULTIPLY
		LDX	<ENINDX
		LDA	R0
		CLC
		ADC	PWIDEY
		STA	<EWORK2
		ASL	A
		STA	<EWORK0
		LSR	A
		CLC
		ADC	EPWIDY,X
		CMP	<EWORK0

KIL00_P_SB0800	EQU	$

		RTS
;
KIL00_XMAX	EQU	$
KIL00_GMAX	EQU	$
		WORD	0009CH,0FF64H
;
KIL_MAXSPD_SET	EQU	$
		LDA	#00005H
		STA	ENGPOW,X
		STA	ENXPOW,X

		LDA	ENTIM1,X
		BNE	KIL_MAXSPD_SET3

		LDA	#00040H
		STA	ENTIM1,X

		LDY	#000
		LDA	EPWIDX,X
		BMI	KIL_MAXSPD_SET1

		INY
		INY

KIL_MAXSPD_SET1 EQU	$
		LDA	!KIL00_XMAX,Y
		STA	ENXMAX,X

		LDY	#000
		LDA	EPWIDY,X
		BMI	KIL_MAXSPD_SET2

		INY
		INY

KIL_MAXSPD_SET2 EQU	$
		LDA	!KIL00_GMAX,Y
		STA	ENGMAX,X

KIL_MAXSPD_SET3 EQU	$

		RTS
;
;************************************************************************
;*		fail	( キラー類 )					*
;************************************************************************
KIL00FL		EQU	$			;-- kil00fl --
KIL01FL		EQU	$			;-- kil01fl --
		JSL	>TROBJ_OAM_4x4

		LDA	ENSTFG
		ORA	BIRIBIRI
		ORA	ITEMNO
		BNE	KIL00FL0800

		LDA	ENWRK8,X		;回転角計算
		CLC				;
		ADC	#00002			;
		AND	#001FEH			;
		STA	ENWRK8,X		;

		JSR	KIL00_ROT_SET

KIL00FL0800	EQU	$

		RTL
;
KIL02FL		EQU	$			;-- kil02fl --
		JMP	>ENFAIL_FALL
;
;************************************************************************
;*		initial ( バウンドキラー )				*
;************************************************************************
KIL01IN		EQU	$			;-- kil01in --
		JSR	KIL01_ROT_SET

		RTL
;
;************************************************************************
;*		move	( バウンドキラー )				*
;************************************************************************
;		ENWRK0	着地時のＥＮＳＬＯＰ
;		ENWRK2	ROUTINE MODE INDEX
;		ENWRK4	縦倍率
;		ENWRK6	横倍率
;		ENWRK8	回転角
;		ENWRKA	着地時のＸ　ＳＰＥＥＤ
;		ENWRKC	着地時のＹ　ＳＰＥＥＤ
;
;		ENCONT	着地時のＥＮＣＢＦＧ
;
;		ENTIM0	ウェイトタイマー
;		ENTIM1
;		ENTIM2
;
KIL01_SUB	EQU	$
		WORD	KIL01_SUB0		;NORMAL
		WORD	KIL01_SUB1		;BOUND ANIMATION 1
		WORD	KIL01_SUB2		;BOUND ANIMATION 2
		WORD	KIL01_SUB3		;BOUND ANIMATION 3
;
KIL01MV		EQU	$			;-- kil01mv --
		LDY	ENYUSN,X
		BMI	KIL01MV0100
		LDY	ENTROB+1,X
		BMI	KIL01MV0100

		JSL	>TROBJ_OAM_4x4

KIL01MV0100	EQU	$
		JSR	KIL00_EAT_CHK

		LDA	ENCOLD,X
		BEQ	KIL01MV0300

		STZ	ENMOD1,X

KIL01MV0300	EQU	$
		JSL	>ENMDCK

		LDA	#00004H
		STA	ENYUSN,X

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

		JSR	KIL01_ROT_SET

		LDA	ENWRK6,X		;(R4) <- チェックＸ倍率
		STA	R4			;
		LDA	<ENWRK4,X		;(R9) <- チェックＹ倍率
		STA	R9			;
		JSR	KIL00_PLCHK		;プレイヤーチェック

		RTL
;
KIL01_ROT_SET	EQU	$
		LDA	#CIPCHD2+0020H+00H	;(R12) <-- 転送元アドレスセット
		STA	R12			;
		LDA	#BANK CIPCHD2+0020H+00H ;(R13) <-- 転送元バンクセット
		STA	R13			;

		LDA	ENWRK8,X		;(R5) <- 回転角セット
		LSR	A			;
		STA	R5			;

		LDA	ENWRK6,X		;(R6) <- 横倍率セット
		STA	R6			;
		LDA	<ENWRK4,X		;(R11) <- 縦倍率セット
		STA	R11			;

		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_RTZ_32_XY

		LDX	<ENINDX

		INC	OBM7WF		;mode 7 OBJ chara DMA "ON"

		RTS
;
KIL01_SUB0	EQU	$
		TYX

		LDA	#00100H			;
		STA	<ENWRK4,X		;縦倍率セット
		STA	ENWRK6,X		;横倍率セット

		JSR	KIL01_BGCHK

		RTS
;
KIL01_BGCHK	EQU	$
		LDA	ENCBFG,X		;壁、天井、地面に当たった ?
		AND	#0000FH			;
		BEQ	KIL01_SUB0900		;  no: KIL01_SUB0900

		TAY
		STY	<EWORK2			;かどっこに当たった ?
		LDA	!ZBUB1_BGCKDT,Y		;
		AND	#000FFH			;
		CMP	#000FFH			;
		BNE	KIL01_SUB0600		;  no: KIL01_SUB0600

		LDA	ENXSPD,X		;ななめから当たった時、縦横どちらの
		BPL	KIL01_SUB0300		;点をとるかを決める
						;
		EOR	#0FFFFH			;
		INC	A			;
						;
KIL01_SUB0300	EQU	$			;
		STA	<EWORK0			;
						;
		LDA	ENYSPD,X		;
		BPL	KIL01_SUB0400		;
						;
		EOR	#0FFFFH			;
		INC	A			;
						;
KIL01_SUB0400	EQU	$			;
		CMP	<EWORK0			;
		BPL	KIL01_SUB0500		;
						;
		LDA	<EWORK2			;
		AND	#00008H			;
		LSR	A			;
		LSR	A			;
		BRA	KIL01_SUB0600		;
						;
KIL01_SUB0500	EQU	$			;
		LDA	<EWORK2			;
		AND	#00002			;
		CLC				;
		ADC	#00004			;

KIL01_SUB0600	EQU	$
		STA	<ENCONT,X

		LDA	ENSLOP,X		;ＥＮＳＬＯＰセーブ
		AND	#000FFH			;
		STA	<ENWRK0,X		;

		STZ	ENXSPD,X		;Ｘ　ＳＰＥＥＤクリア
		STZ	ENYSPD,X		;Ｙ　ＳＰＥＥＤクリア

		LDY	#001
		STY	<ENWRK2,X

		PLA				;直接ＲＴＳ
		RTS

KIL01_SUB0900	EQU	$
		LDA	ENXSPD,X		;Ｘ　ＳＰＥＥＤセーブ
		STA	ENWRKA,X		;
		LDA	ENYSPD,X		;Ｙ　ＳＰＥＥＤセーブ
		STA	ENWRKC,X		;

		RTS
;
KIL01_CBADD	EQU	$
;ENSLOP =		 [D0]	[E0]   [F0]   [00]   [10]   [20]   [30]	 [OTHER]
;ENMUKI = 0
		WORD	0FE58H,0FE80H,0FEACH,0FF00H,0FEACH,0FE80H,0FE54H,00200H
;ENMUKI = 2
		WORD	0FFA8H,0FF80H,0FF54H,0FE00H,0FE54H,0FE80H,0FEA8H,0FF00H
;;;;ENMUKI	= 0
;;;		WORD	0FF58H,0FF80H,0FFACH,00000H,0FFACH,0FF80H,0FF54H,00300H
;;;;ENMUKI	= 2
;;;		WORD	000A8H,00080H,00054H,00000H,00054H,00080H,000A8H,00100H
;
;
KIL01_SUB1	EQU	$
		TYX

		LDA	ENWRK6,X
		SEC
		SBC	#00008
		CMP	#000A0H
		BPL	KIL01_SUB1500

		LDY	<ENCONT,X		;縦からあたった ?
		CPY	#004			;
		BPL	KIL01_SUB1100		; yes: KIL01_SUB1100

;		LDA	<ENWRK0,X
;		BNE	KIL01_SUB1200

		LDA	#0000EH
		BRA	KIL01_SUB1300

KIL01_SUB1100	EQU	$
		LDA	<ENWRK0,X

KIL01_SUB1200	EQU	$
		CLC
		ADC	#00038H
		AND	#000F0H
		LSR	A
		LSR	A
		LSR	A

KIL01_SUB1300	EQU	$
		LDY	ENMUKI,X
		BEQ	KIL01_SUB1400

		CLC
		ADC	#00010H

KIL01_SUB1400	EQU	$
		TAY
		LDA	!KIL01_CBADD,Y
		LDY	ENMUKI,X
		BNE	KIL01_SUB1480

		SEC
		SBC	ENWRK8,X
		BRA	KIL01_SUB1490

KIL01_SUB1480	EQU	$
		CLC
		ADC	ENWRK8,X

KIL01_SUB1490	EQU	$
		AND	#001FEH

		STA	R1
		LDA	#000166H
		STA	R6

		M_CHIP	M_ENMY_1P_ROT

		LDX	<ENINDX
		LDA	R0
		STA	ENXSPD,X
		LDA	R1
		STA	ENYSPD,X

		JSR	ANGCAL_SPD

		INC	<ENWRK2,X
		LDA	#000A0H

KIL01_SUB1500	EQU	$
		STA	ENWRK6,X
		LDA	#00200H
		SEC
		SBC	ENWRK6,X
		STA	<ENWRK4,X

		RTS
;
KIL01_SUB2	EQU	$
		TYX

		JSR	KIL01_BGCHK

		LDA	ENWRK6,X
		CLC
		ADC	#00008
		CMP	#00130H
		BMI	KIL01_SUB2100

		INC	<ENWRK2,X
		LDA	#00130H

KIL01_SUB2100	EQU	$
		BRA	KIL01_SUB1500
;
KIL01_SUB3	EQU	$
		TYX

		JSR	KIL01_BGCHK

		LDA	ENWRK6,X
		SEC
		SBC	#00004
		CMP	#00100H
		BPL	KIL01_SUB3100

		STZ	<ENWRK2,X
		LDA	#00100H

KIL01_SUB3100	EQU	$
		BRA	KIL01_SUB1500
;
;************************************************************************
;*		initial ( message box )					*
;************************************************************************
MSGBXIN		EQU	$			;-- msgbxin --
		JSL	>TROBJ_SR_4x4_CL

		LDA	#00100H			;初期倍率セット
		STA	ENWRK6,X		;

		LDA	ENYPSL,X
		STA	<ENWRK4,X

		LDA	#00001
		STA	ENCHPT,X

		JSR	MSGBX_ROT_SET

		RTL
;
;************************************************************************
;*		move	( message box )					*
;************************************************************************
;		ENWRK0
;		ENWRK2	ROUTINE MODE INDEX
;		ENWRK4	ジャンプエンドＹ　ＰＯＳ．
;		ENWRK6	倍率
;		ENWRK8	キャラパターンフラグ
;		ENWRKA
;		ENWRKC
;
MSGBX_SUB	EQU	$
		WORD	DUMMY_SUB		;のーまる
		WORD	MSGBX_SUB1		;
		WORD	MSGBX_SUB2		;
;
MSGBX_CHAR	EQU	$
		WORD	CIPCHD3+6010H+000
		WORD	CIPCHD3+7010H+000
MSGBX_Z_ADD	EQU	$
		WORD	00018H,0FFE8H
		WORD	00020H,0FFE0H
;
MSGBXMV		EQU	$			;-- msgbxmv --
;-------------- move --------------------------------------------
		JSL	>TROBJ_OAM_4x4

;;;;;;;;		JSL	>ENMDCK			;mode check
;
		LDA	ENSTFG
		ORA	BIRIBIRI
		ORA	ITEMNO
		BEQ	MSGBXMV0100

		JSL	>EN_XYMOVE
		JSL	>EN_TIMER

MSGBXMV0100	EQU	$
		STZ	ENMUKI,X

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

		LDA	ENSTFG
		ORA	BIRIBIRI
		ORA	ITEMNO
		BEQ	MSGBXMV0200

		LDY	<ENWRK2,X
		BEQ	MSGBXMV0700

MSGBXMV0200	EQU	$
		JSR	MSGBX_ROT_SET

MSGBXMV0700	EQU	$
		LDY	<ENWRK2,X		;プレイヤーを待ってる ?
		BNE	MSGBXMV0900		;  no: MSGBXMV0900

		LDY	PLYSPD+1
		BPL	MSGBXMV0800

		LDY	PLJUMP
		BEQ	MSGBXMV0800

		LDA	EPWIDX,X
		CLC
		ADC	#0000CH
		CMP	#00018H
		BCS	MSGBXMV0800

		LDA	EPWIDY,X
		CMP	#0FFE8H
		BMI	MSGBXMV0800
		CMP	#0FFF0H
		BPL	MSGBXMV0800

		STZ	PLYSPD
		STZ	PLSPJP			;ふんばりフラグクリア

MSGBXMV0780	EQU	$
		DEC	ENYPSL,X
		LDA	#0FC00H
		STA	ENYSPD,X
		LDA	#00034H
		STA	ENGPOW,X
		STZ	ENWRK8,X		;キャラパターンロック

		INC	PLSTFG
		INC	ENSTFG

		LDA	#00032H			;［Ｓ］
		JSL	>SOUND_3_ON

		INC	<ENWRK2,X		;routine mode index inc.

		RTL

MSGBXMV0800	EQU	$
		LDY	ECRSFG,X		;敵にあたった ?
		DEY				;
		BMI	MSGBXMV0880		;  no: MSGBXMV0880

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

		TYX
		JSL	>ENDEATH_SET_4
		BRA	MSGBXMV0780

MSGBXMV0880	EQU	$
		LDA	ENTIM1,X		;キャラパターンチェンジ ?
		BNE	MSGBXMV0900		;  no: MSGBXMV0900

		LDA	#00008
		STA	ENTIM1,X

		LDA	ENWRK8,X
		EOR	#00002
		STA	ENWRK8,X

MSGBXMV0900	EQU	$
		JSL	>POBBGCR
;
		RTL
;
MSGBX_ROT_SET	EQU	$
		LDY	ENWRK8,X
		LDA	!MSGBX_CHAR,Y
		STA	R12
		LDA	#BANK CIPCHD3+6010H+000
		STA	R13

		LDA	ENWRK6,X
		STA	R6
		SEC
		SBC	#00100H
		LSR	A
		STA	<EWORK0
		LDA	#00100H
		SEC
		SBC	<EWORK0
		STA	R11

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

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

		M_CHIP	C_32_ZOOM_XY_16

		LDX	<ENINDX

		INC	OBM7WF			;mode 7 OBJ chara DMA "ON"

		RTS
;
MSGBX_SUB1	EQU	$
		TYX

		LDA	<ENWRK4,X		;元に戻る ?
		CMP	ENYPSL,X		;
		BPL	MSGBX_SUB1100		;  no: MSGBX_SUB1100

		STA	ENYPSL,X
		STZ	ENYSPD,X
		STZ	ENGPOW,X
		STZ	ENWRKA,X
		INC	<ENWRK2,X

		RTS

MSGBX_SUB1100	EQU	$
		LDY	#000
		LDA	ENYSPD,X		;倍率計算
		BMI	MSGBX_SUB1200		;
						;
		INY				;
		INY				;
						;
MSGBX_SUB1200	EQU	$			;
		LDA	ENWRK6,X		;
		CLC				;
		ADC	!MSGBX_Z_ADD,Y		;
		CMP	#000A0H			;
		BPL	MSGBX_SUB1300		;
						;
		LDA	#000A0H			;
		BRA	MSGBX_SUB1400		;
						;
MSGBX_SUB1300	EQU	$			;
		CMP	#001FFH			;
		BMI	MSGBX_SUB1400		;
						;
		LDA	#001FFH			;
						;
MSGBX_SUB1400	EQU	$			;
		STA	ENWRK6,X		;

MSGBX_SUB1800	EQU	$

		RTS
;
MSGBX_SUB2	EQU	$
		TYX

		LDY	ENWRKA,X
		LDA	ENWRK6,X
		CLC
		ADC	!MSGBX_Z_ADD+4,Y
		CPY	#000
		BEQ	MSGBX_SUB2600

		CMP	#00100H
		BPL	MSGBX_SUB2700

		LDA	ENXPSL,X		;メッセージナンバーセット
		AND	#00010H			;
		LSR	A			;
		LSR	A			;
		LSR	A			;
		LSR	A			;
		TAY				;
		LDA	ENYPSL,X		;
		AND	#00010H			;
		BEQ	MSGBX_SUB2000		;
						;
		INY				;
		INY				;
						;
MSGBX_SUB2000	EQU	$			;
		TYA				;
		STA	<EWORK0			;
						;
		LDA	MAPOINT			;
		ASL	A			;
		ASL	A			;
		CLC				;
		ADC	<EWORK0			;
		STA	>MSG_NO			;
;
		CMP	#00001
		BNE	MSGBX_SUB2500
		LDA	!CONFIGFG
		BEQ	MSGBX_SUB2500
		LDA	#CNFG_MSG
		STA	>MSG_NO
;
MSGBX_SUB2500	EQU	$
		INC	MSGMOD
		STZ	<ENWRK2,X

		LDA	#00100H
		BRA	MSGBX_SUB2700

MSGBX_SUB2600	EQU	$
		CMP	#00160H
		BMI	MSGBX_SUB2700

		LDA	#00002
		STA	ENWRKA,X
		LDA	#00160H

MSGBX_SUB2700	EQU	$
		STA	ENWRK6,X

		RTS
;
;************************************************************************
;*		initial ( 目隠しテレサ )				*
;************************************************************************
BTELE_I_XMAX	EQU	$
		WORD	0FFC0H,00040H
BTELE_I_GMAX	EQU	$
		WORD	00100H,0FF00H
BTELE_I_YSPD	EQU	$-2
		WORD	00100H
;
BTELEIN		EQU	$			;-- btelein --
		LDY	ENMUKI,X
		LDA	!BTELE_I_XMAX,Y
		STA	ENXMAX,X
		LDA	#00006H
		STA	ENXPOW,X

		LDY	#000
		LDA	PLYPSL
		CMP	ENYPSL,X
		BMI	BTELEIN0100

		INY
		INY

BTELEIN0100	EQU	$
		LDA	!BTELE_I_GMAX,Y
		STA	ENGMAX,X
		LDA	!BTELE_I_YSPD,Y
		STA	ENYSPD,X

		LDA	ENYPSL,X		;スタートＹ　ＰＯＳ．セーブ
		STA	ENWRKC,X

		LDA	#00026H
		STA	ENCLOR,X

		RTL
;
;************************************************************************
;*		move	( 目隠しテレサ )				*
;************************************************************************
;		ENWRK0
;		ENWRK2	ROUTINE MODE INDEX
;		ENWRK4	サブルーチンキャンセルフラグ  0..NO 1..CANCEL
;		ENWRK6	音のなったＸ　ＰＯＳ．
;		ENWRK8	　　”　　Ｙ　ＰＯＳ．
;		ENWRKA	きょろきょろ回数
;		ENWRKC	スタートＹ　ＰＯＳ．
;
BTELE_SUB	EQU	$
		WORD	BTELE_SUB00		;のーまる
		WORD	BTELE_SUB01		;のーまるふりむき
BTELE_10	EQU	$
		WORD	BTELE_SUB10		;のーまる　ー＞　ききみみ
BTELE_11	EQU	$
		WORD	BTELE_SUB11		;のーまる　ー＞　ききみみ（ふりかえり）
BTELE_20	EQU	$
		WORD	BTELE_SUB20		;かおかえ＆ちぇいす
BTELE_21	EQU	$
		WORD	BTELE_SUB21		;ちぇいすターン
BTELE_30	EQU	$
		WORD	BTELE_SUB30		;きょろきょろ（減速）
BTELE_31	EQU	$
		WORD	BTELE_SUB31		;きょろきょろ（かおかえ）
BTELE_32	EQU	$
		WORD	BTELE_SUB32		;きょろきょろ（のーまるフェイス）
BTELE_40	EQU	$
		WORD	BTELE_SUB40		;きょろきょろ（ちぇいす）
BTELE_50	EQU	$
		WORD	BTELE_SUB50		;あふたーぷれいやーくろす
;
BTELE_RMODE10	EQU	(BTELE_10-BTELE_SUB)/2
BTELE_RMODE11	EQU	(BTELE_11-BTELE_SUB)/2
BTELE_RMODE20	EQU	(BTELE_20-BTELE_SUB)/2
BTELE_RMODE21	EQU	(BTELE_21-BTELE_SUB)/2
BTELE_RMODE30	EQU	(BTELE_30-BTELE_SUB)/2
BTELE_RMODE31	EQU	(BTELE_31-BTELE_SUB)/2
BTELE_RMODE32	EQU	(BTELE_32-BTELE_SUB)/2
BTELE_RMODE40	EQU	(BTELE_40-BTELE_SUB)/2
BTELE_RMODE50	EQU	(BTELE_50-BTELE_SUB)/2
;
BTELEMV		EQU	$			;-- btelemv --
		JSL	>ENMDCK

		LDY	ECRSFG,X
		BPL	BTELEMV0300

		JSL	>PLFLST

		LDY	<ENWRK2,X
		CPY	#BTELE_RMODE50
		BEQ	BTELEMV0400

		LDA	#0FFFFH
		STA	ENTIM2,X
		LDA	#00100H
		STA	ENTIM1,X
		LDA	#00007
		STA	ENCHPT,X
		LDA	#0FC00H
		STA	ENGMAX,X
		STZ	ENXMAX,X
		LDA	#00008H
		STA	ENGPOW,X
		STA	ENXPOW,X

		LDY	#BTELE_RMODE50
		STY	<ENWRK2,X
		BRA	BTELEMV0400

BTELEMV0300	EQU	$
		JSL	>EPCRCK

BTELEMV0400	EQU	$
		JSR	BTELE_SOUND_CHK

		LDY	<ENWRK4,X
		BNE	BTELEMV0500

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

BTELEMV0500	EQU	$
		JSR	BTELE_SPD_STOP

		RTL
;
BTELE_S_XMAX	EQU	$
;		WORD	0FE00H,00200H
		WORD	0FF00H,00100H
BTELE_S_GMAX	EQU	$
		WORD	0FE80H,00180H
;
BTELE_SOUND_CHK EQU	$
		LDA	ENTIM2,X		;サウンドチェックする ?
		BNE	BTELE_S_CHK0280		;  no: BTELE_S_CHK0280

		LDA	SOUND_ON		;サウンドなってる ?
		BEQ	BTELE_S_CHK0100		;  no: BTELE_S_CHK0100
		JMP	BTELE_S_CHK1000		; yes: BTELE_S_CHK1000

BTELE_S_CHK0100 EQU	$
		LDY	<ENWRK2,X		;
		CPY	#BTELE_RMODE10		;ききみみたててる ?
		BEQ	BTELE_S_CHK0200		; yes: BTELE_S_CHK0200
		CPY	#BTELE_RMODE11		;
		BEQ	BTELE_S_CHK0200		;
		CPY	#BTELE_RMODE40		;
		BNE	BTELE_S_CHK0300		;  no: BTELE_S_CHK0300

BTELE_S_CHK0200 EQU	$
		LDA	#00003
		STA	ENCHPT,X
		INC	A	;[ LDA	#00004 ]
		STA	ENTIM1,X
		LDA	#0FFFFH
		STA	ENTIM2,X
		STZ	<ENWRK4,X		;サブルーチンキャンセルフラグクリア
		LDY	#BTELE_RMODE31
		STY	<ENWRK2,X

BTELE_S_CHK0280 EQU	$

		RTS

BTELE_S_CHK0300 EQU	$
		CPY	#BTELE_RMODE20		;ちぇいす中 ?
		BNE	BTELE_S_CHK0400		;  no: BTELE_S_CHK0400

		STZ	ENXMAX,X
		STZ	ENGMAX,X
		LDA	EPWIDX,X
		BPL	BTELE_S_CHK0310

		EOR	#0FFFFH
		INC	A

BTELE_S_CHK0310 EQU	$
		LSR	A
		LSR	A
		STA	ENXPOW,X
		LDA	EPWIDY,X
		BPL	BTELE_S_CHK0320

		EOR	#0FFFFH
		INC	A

BTELE_S_CHK0320 EQU	$
		LSR	A
		LSR	A
		STA	ENGPOW,X

;		LDA	#00010H
;		STA	ENXPOW,X
;		STA	ENGPOW,X

		LDA	#00002
		STA	ENCHPT,X
		LDA	#00004
		STA	ENTIM1,X
		LDA	#0FFFFH
		STA	ENTIM2,X
		LDY	#BTELE_RMODE30
		STY	<ENWRK2,X

		RTS

BTELE_S_CHK0400 EQU	$
		CPY	#BTELE_RMODE30		;見失った ?
		BNE	BTELE_S_CHK0500		;  no: BTELE_S_CHK0500

		LDA	#00003
		STA	ENCHPT,X
		INC	A		[ LDA	#00004 ]
		STA	ENTIM1,X
		LDA	#0FFFFH
		STA	ENTIM2,X
		INC	<ENWRK2,X

		RTS

BTELE_S_CHK0500 EQU	$
		CPY	#BTELE_RMODE31
		BNE	BTELE_S_CHK0600

		LDA	#00005
		STA	ENCHPT,X
		DEC	A		;[ LDA	#00004 ]
		STA	ENTIM1,X
		DEC	A
		STA	ENWRKA,X
		LDA	ENMUKI,X
		STA	<ENCONT,X
		LDA	#0FFFFH
		STA	ENTIM2,X
		INC	<ENWRK2,X

		RTS

BTELE_S_CHK0600 EQU	$
		CPY	#BTELE_RMODE32
		BNE	BTELE_S_CHK0700

		STZ	<ENWRK4,X		;サブルーチンキャンセルフラグクリア
		DEC	ENWRKA,X		;きょろきょろ終わり ?
		BNE	BTELE_S_CHK0650		;  no: BTELE_S_CHK0650

		LDY	#000
		LDA	ENYPSL,X
		CMP	ENWRKC,X
		BMI	BTELE_S_CHK0630

		INY
		INY

BTELE_S_CHK0630 EQU	$
		LDA	!BTELE_I_GMAX,Y
		STA	ENGMAX,X
		LDA	!BTELE_I_YSPD,Y
		STA	ENYSPD,X

		LDY	ENMUKI,X
		LDA	!BTELE_I_XMAX,Y
		STA	ENXMAX,X
		LDA	#00100H
		STA	ENTIM0,X

		STZ	<ENWRK2,X

		RTS

BTELE_S_CHK0650 EQU	$
		LDA	#00005
		STA	ENCHPT,X
		DEC	A		;[ LDA	#00004 ]
		STA	ENTIM1,X
		LDA	ENMUKI,X
		STA	<ENCONT,X
		LDA	#0FFFFH
		STA	ENTIM2,X

BTELE_S_CHK0700 EQU	$

		RTS

BTELE_S_CHK1000 EQU	$
		LDY	<ENWRK2,X		;のーまる ?
		BEQ	BTELE_S_CHK1010		; yes: BTELE_S_CHK1010
		CPY	#BTELE_RMODE31		;
		BNE	BTELE_S_CHK1200		;  no: BTELE_S_CHK1200

BTELE_S_CHK1010 EQU	$
		STZ	ENXMAX,X
		STZ	ENGMAX,X
		LDA	#00010H
		STA	ENXPOW,X
		STA	ENGPOW,X

		LDA	#0FFFFH
		STA	ENTIM2,X
		LDY	#BTELE_RMODE10
		LDA	SOUND_Y
		STA	ENWRK8,X
		LDA	SOUND_X
		STA	ENWRK6,X
		SEC
		SBC	ENXPSL,X
		STA	<EWORK0
		LDA	ENMUKI,X
		STA	<ENCONT,X
		DEC	A
		EOR	<EWORK0
		BPL	BTELE_S_CHK1100

		LDY	#BTELE_RMODE11

BTELE_S_CHK1100 EQU	$
		STY	<ENWRK2,X

		RTS

BTELE_S_CHK1200 EQU	$
		CPY	#BTELE_RMODE10		;ききみみたててる ?
		BEQ	BTELE_S_CHK1300		; yes: BTELE_S_CHK1300
		CPY	#BTELE_RMODE11		;
		BEQ	BTELE_S_CHK1300		;
		CPY	#BTELE_RMODE40		;
		BNE	BTELE_S_CHK1400		;  no: BTELE_S_CHK1400

BTELE_S_CHK1300 EQU	$
		STZ	<ENWRK4,X		;サブルーチンキャンセルフラグクリア
		LDA	#00004
		STA	ENTIM1,X
		LDA	#0FFFFH
		STA	ENTIM2,X

		LDY	#000
		LDA	SOUND_X
		CMP	ENXPSL,X
		BMI	BTELE_S_CHK1310

		INY
		INY

BTELE_S_CHK1310 EQU	$
		TYA
		CMP	ENMUKI,X
		BEQ	BTELE_S_CHK1350

		LDA	#00009
		STA	ENCHPT,X
		LDA	ENMUKI,X
		STA	<ENCONT,X
		LDY	#BTELE_RMODE40
		STY	<ENWRK2,X

		RTS

BTELE_S_CHK1350 EQU	$
		LDA	SOUND_X
		STA	ENWRK6,X
		LDA	SOUND_Y
		STA	ENWRK8,X
		LDA	#00002
		STA	ENCHPT,X
		LDY	#BTELE_RMODE20
		STY	<ENWRK2,X

		RTS

BTELE_S_CHK1400 EQU	$
		CPY	#BTELE_RMODE20
		BNE	BTELE_S_CHK1500

		LDA	SOUND_X
		STA	ENWRK6,X
		LDA	SOUND_Y
		STA	ENWRK8,X

BTELE_CHASE_INT EQU	$
		LDA	#00040H
		STA	ENTIM2,X
;		LDA	#00008H
;		STA	ENXPOW,X
;		STA	ENGPOW,X

		LDA	EPWIDX,X
		BPL	BTELE_S_CHK1401

		EOR	#0FFFFH
		INC	A

BTELE_S_CHK1401 EQU	$
		LSR	A
		LSR	A
		LSR	A
		STA	ENXPOW,X
		LDA	EPWIDY,X
		BPL	BTELE_S_CHK1402

		EOR	#0FFFFH
		INC	A

BTELE_S_CHK1402 EQU	$
		LSR	A
		LSR	A
		LSR	A
		STA	ENGPOW,X

		LDY	#000
		LDA	ENWRK6,X
		CMP	ENXPSL,X
		BMI	BTELE_S_CHK1410

		INY
		INY

BTELE_S_CHK1410 EQU	$
		LDA	!BTELE_S_XMAX,Y
		STA	ENXMAX,X
		TYA
		CMP	ENMUKI,X
		BEQ	BTELE_S_CHK1420

		LDA	#0FFFFH
		STA	ENTIM2,X
		LDA	ENMUKI,X
		STA	<ENCONT,X
		DEC	ENCHPT,X
		LDA	#00004
		STA	ENTIM1,X
		LDY	#BTELE_RMODE21
		STY	<ENWRK2,X

BTELE_S_CHK1420 EQU	$
		LDY	#000
		LDA	ENWRK8,X
		CMP	ENYPSL,X
		BMI	BTELE_S_CHK1450

		INY
		INY

BTELE_S_CHK1450 EQU	$
		LDA	!BTELE_S_GMAX,Y
		STA	ENGMAX,X

BTELE_S_CHK1480 EQU	$

		RTS

BTELE_S_CHK1500 EQU	$
		CPY	#BTELE_RMODE32
		BNE	BTELE_S_CHK1480

		STZ	<ENWRK4,X		;サブルーチンキャンセルフラグクリア
		JMP	BTELE_S_CHK1010
;
BTELE_SPD_STOP	EQU	$
		LDA	ENXMAX,X
		BNE	BTELE_SPD_ST050

		LDA	ENXPOW,X
		BEQ	BTELE_SPD_ST050

		DEC	A
		STA	<EWORK0
		ASL	A
		STA	EWORK2
		LDA	ENXSPD,X
		CLC
		ADC	<EWORK0
		CMP	<EWORK2
		BCS	BTELE_SPD_ST050

		STZ	ENXSPD,X
		STZ	ENXPOW,X

BTELE_SPD_ST050 EQU	$
		LDA	ENGMAX,X
		BNE	BTELE_SPD_ST080

		LDA	ENGPOW,X
		BEQ	BTELE_SPD_ST080

		DEC	A
		STA	<EWORK0
		ASL	A
		STA	<EWORK2
		LDA	ENYSPD,X
		CLC
		ADC	<EWORK0
		CMP	<EWORK2
		BCS	BTELE_SPD_ST080

		STZ	ENYSPD,X
		STZ	ENGPOW,X

BTELE_SPD_ST080 EQU	$

		RTS
;
BTELE_SUB00	EQU	$
		TYX

		LDA	ENTIM0,X		;止める ?
		BNE	BTELE_SUB00500		;  no: BTELE_SUB00500

		STZ	ENXMAX,X

		LDA	ENXSPD,X		;止まった ?
		ORA	ENXPOW,X		;
		BNE	BTELE_SUB00500		;  no: BTELE_SUB00500

		LDA	ENMUKI,X
		STA	<ENCONT,X
		LDA	#00005
		STA	ENCHPT,X
		INC	<ENWRK2,X

		RTS

BTELE_SUB00500	EQU	$
BTELE_FURIKO	EQU	$
		LDA	#00006
		STA	ENXPOW,X
		STA	ENGPOW,X

		LDY	#000
		LDA	ENYPSL,X		;Ｇ　ＭＡＸかえる ?
		CMP	ENWRKC,X		;
		BMI	BTELE_SUB00800		;  no: BTELE_SUB00800

		INY
		INY

BTELE_SUB00800	EQU	$
		LDA	!BTELE_I_GMAX,Y
		STA	ENGMAX,X

		RTS
;
BTELE_SUB01	EQU	$
		TYX

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

		LDA	ENMUKI,X
		CMP	<ENCONT,X
		BEQ	BTELE_SUB01500

		STZ	ENCHPT,X
		LDA	#00100H
		STA	ENTIM0,X
		LDY	ENMUKI,X
		LDA	!BTELE_I_XMAX,Y
		STA	ENXMAX,X

		STZ	<ENWRK2,X

		RTS

BTELE_SUB01500	EQU	$
		EOR	#00002
		STA	ENMUKI,X

		LDA	#00008
		STA	ENTIM1,X

BTELE_SUB01800	EQU	$
		JMP	BTELE_FURIKO
;
BTELE_SUB10	EQU	$
		TYX

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

		DEC	ENCHPT,X
		LDY	ENCHPT,X		;シーケンスエンド ?
		CPY	#003			;
		BEQ	BTELE_SUB11700		;  no: BTELE_SUB11700
		BRA	BTELE_SUB11300		; yes: BTELE_SUB11300
;
BTELE_SUB11	EQU	$
		TYX

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

		LDA	ENMUKI,X		;シーケンスエンド ?
		CMP	<ENCONT,X		;
		BEQ	BTELE_SUB11500		;  no: BTELE_SUB11500

BTELE_SUB11300	EQU	$
		LDA	#00008
		STA	ENCHPT,X
		LDA	#00040H
		STA	ENTIM2,X
		STZ	ENXMAX,X
		STZ	ENGMAX,X
		INC	<ENWRK4,X		;サブルーチンキャンセルフラグセット

		RTS

BTELE_SUB11500	EQU	$
		LDA	ENMUKI,X
		EOR	#00002
		STA	ENMUKI,X

BTELE_SUB11700	EQU	$
		LDA	#00004
		STA	ENTIM1,X

BTELE_SUB11800	EQU	$

		RTS
;
BTELE_SUB20	EQU	$
		TYX

		LDY	ENCHPT,X
		CPY	#007
		BEQ	BTELE_SUB20800

		LDA	ENTIM1,X
		BNE	BTELE_SUB20800

		LDA	#00007
		STA	ENCHPT,X
		JSR	BTELE_CHASE_INT

BTELE_SUB20800	EQU	$

		RTS
;
BTELE_SUB21	EQU	$
		TYX

		LDA	ENTIM1,X
		BNE	BTELE_SUB21800

		LDA	ENMUKI,X
		CMP	<ENCONT,X
		BEQ	BTELE_SUB21500

		STZ	ENTIM2,X
		DEC	ENCHPT,X
		DEC	<ENWRK2,X

		RTS

BTELE_SUB21500	EQU	$
		EOR	#00002
		STA	ENMUKI,X

		LDA	#00004
		STA	ENTIM1,X

BTELE_SUB21800	EQU	$

		RTS
;
BTELE_SUB30	EQU	$
		TYX

		LDA	ENTIM1,X
		BNE	BTELE_SUB30800

		LDY	ENCHPT,X
		CPY	#008
		BEQ	BTELE_SUB30500

		LDA	#00008
		STA	ENCHPT,X

BTELE_SUB30500	EQU	$
		LDA	ENXSPD,X
		ORA	ENYSPD,X
		BNE	BTELE_SUB30800

		STZ	ENTIM2,X

BTELE_SUB30800	EQU	$

		RTS
;
BTELE_SUB31	EQU	$
		TYX

		LDA	ENTIM1,X
		BNE	BTELE_SUB31800

		INC	ENCHPT,X
		LDY	ENCHPT,X
		CPY	#005
		BNE	BTELE_SUB31500

		STZ	ENTIM2,X
		STZ	ENCHPT,X

		RTS

BTELE_SUB31500	EQU	$
		LDA	#00004
		STA	ENTIM1,X

BTELE_SUB31800	EQU	$

		RTS
;
BTELE_SUB32	EQU	$
		TYX

		LDA	ENTIM1,X
		BNE	BTELE_SUB32800

		LDY	ENCHPT,X
		BNE	BTELE_SUB32500

		LDA	#00010H
		STA	ENTIM2,X
		INC	<ENWRK4,X		;サブルーチンキャンセルフラグセット

		RTS

BTELE_SUB32500	EQU	$
		LDA	ENMUKI,X
		CMP	<ENCONT,X
		BEQ	BTELE_SUB32700

		LDA	#00010H
		STA	ENTIM1,X
		STZ	ENCHPT,X

		RTS

BTELE_SUB32700	EQU	$
		EOR	#00002
		STA	ENMUKI,X

BTELE_SUB32800	EQU	$

		RTS
;
BTELE_SUB40	EQU	$
		TYX

		LDA	ENTIM1,X
		BNE	BTELE_SUB40800

		LDA	ENMUKI,X
		CMP	<ENCONT,X
		BEQ	BTELE_SUB40700

		LDA	#00020H
		STA	ENTIM2,X
		LDA	#00008
		STA	ENCHPT,X
		INC	<ENWRK4,X		;サブルーチンキャンセルフラグセット

		RTS

BTELE_SUB40700	EQU	$
		EOR	#00002
		STA	ENMUKI,X

		LDA	#00004
		STA	ENTIM1,X

BTELE_SUB40800	EQU	$

		RTS
;
BTELE_SUB50	EQU	$
		TYX

		LDA	ENTIM1,X
		BNE	BTELE_SUB50500

		STZ	ENTIM2,X
		LDY	#BTELE_RMODE20
		STY	<ENWRK2,X

		RTS

BTELE_SUB50500	EQU	$
		LDA	ENYPSL,X
		CMP	ENWRKC,X
		BPL	BTELE_SUB50700

		STZ	ENXMAX,X

BTELE_SUB50700	EQU	$
		JMP	BTELE_FURIKO
;
;************************************************************************
;*		initial ( heading sanbo 親 )				*
;************************************************************************
HSAN0IN		EQU	$			;-- hsan0in --
		DEC	<ENWRK0,X

		LDA	#HSAN1
		JSL	>ENINSR
		BCC	HSAN0IN0500

		LDA	ENXPSL,X
		STA	ENXPSL,Y
		STA	ENWRK6,Y
		LDA	ENYPSL,X
		SEC
		SBC	#00010H
		STA	ENYPSL,Y
		STY	<ENWRK0,X

		LDA	#00005			;キャラパターンデータインデックスセット
		STA	ENWRK6,X
		LDY	#002
		STY	<ENWRK2,X

HSAN0IN0500	EQU	$
		STZ	ENWRKA,X
		LDY	MPTYPE			;マップ１ ?
		BEQ	HSAN0IN0700		; yes: HSAN0IN0700

		INC	ENWRKA,X
		INC	ENWRKA,X

HSAN0IN0700	EQU	$

		RTL
;
;************************************************************************
;*		move	( heading sanbo 親  )				*
;************************************************************************
;		ENWRK0	子供の ROUTINE INDEX
;		ENWRK2	ROUTINE MODE INDEX
;		ENWRK4	ヘディングカウンター
;		ENWRK6	キャラパターンデータインデックス
;		ENWRK8
;		ENWRKA	マップＮｏ．
;		ENWRKC
;
;		ENCONT
;
;		ENTIM0	ストップタイマー
;		ENTIM1
;		ENTIM2
;		ENTIM3
;
HSAN0_SUB	EQU	$
		WORD	HSAN0_SUB0		;ちぢみウェイト
		WORD	HSAN0_SUB1		;補正
HSAN0_2		EQU	$
		WORD	HSAN0_SUB2		;のび
		WORD	HSAN0_SUB3		;のびウェイト
		WORD	HSAN0_SUB4		;ちぢみ
HSAN0_5		EQU	$
		WORD	HSAN0_SUB5		;悲しんで元通り
;
HSAN0_RMODE2	EQU	(HSAN0_2-HSAN0_SUB)/2
HSAN0_RMODE5	EQU	(HSAN0_5-HSAN0_SUB)/2
;
HSAN0MV		EQU	$			;-- hsan0mv --
		JSL	>ENMDCK

		LDY	<ENWRK0,X		;プレイヤーチェックしない ?
		BMI	HSAN0MV0040		; yes: HSAN0MV0040

		JSL	>EPCRCK

HSAN0MV0040	EQU	$
		LDY	<ENWRK0,X		;子供いる ?
		BMI	HSAN0MV0100		;  no: HSAN0MV0100

		LDA	ENMODE,Y
		CMP	#EMOVE
		BNE	HSAN0MV0080

		LDA	ENWRK2,Y
		BNE	HSAN0MV0080

		LDA	ENMYNO,Y
		CMP	#HSAN1
		BEQ	HSAN0MV0100

HSAN0MV0080	EQU	$
		LDY	#0FFH
		STY	<ENWRK0,X

		LDA	#00060H
		STA	ENTIM1,X

		LDY	#HSAN0_RMODE5
		STY	<ENWRK2,X

HSAN0MV0100	EQU	$
		TXY
		LDA	<ENWRK2,X
		ASL	A
		TAX
		JSR	(HSAN0_SUB,X)

		RTL
;
HSAN0_SUB0	EQU	$
		TYX

		LDA	ENTIM0,X
		BNE	HSAN0_SUB0800

		LDA	#HSAN1
		JSL	>ENINSR
		BCC	HSAN0_SUB0800

		LDA	ENXPSL,X
		STA	ENXPSL,Y
		STA	ENWRK6,Y
		LDA	ENYPSL,X
		DEC	A
		DEC	A
		STA	ENYPSL,Y
		STY	<ENWRK0,X

		LDA	#00020H
		STA	ENTIM1,X
		INC	<ENWRK2,X		;routine mode index inc.

HSAN0_SUB0800	EQU	$

		RTS
;
HSAN0_SUB1	EQU	$
		TYX

		LDY	<ENWRK0,X
		LDA	#00000
		STA	ENYSPD,Y

		LDA	ENTIM1,X
		BNE	HSAN0_SUB1800

		LDA	#00002H
		STA	ENTIM1,X

		LDA	ENYPSL,Y
		DEC	A
		STA	ENYPSL,Y
		SEC
		SBC	ENYPSL,X
		CMP	#0FFF3H
		BNE	HSAN0_SUB1800

		LDA	#00020H
		STA	ENTIM1,X

		LDA	#00005			;キャラパターンデータインデックスセット
		STA	ENWRK6,X

		INC	<ENWRK2,X

HSAN0_SUB1800	EQU	$

		RTS
;
HSAN0_S2_ENCH	EQU	$
;ENWRK6 =		[0] [1] [2] [3] [4]
		HEX	003,004,003,002,001
HSAN0_S2_ENCH_2 EQU	$
		HEX	004,004,003,002,001
HSAN0_S2_TIM1	EQU	$
		HEX	000,008,002,001,002
HSAN0_S2_TIM1_2 EQU	$
		HEX	000,000,002,001,002
HSAN0_S2_YPOS	EQU	$-1
;ENCHPT =		[1] [2] [3] [4]
		HEX	0F0,0EA,0E4,0E2
;
HSAN0_SUB2	EQU	$
		TYX

		LDA	ENTIM1,X
		BNE	HSAN0_SUB2090

		DEC	ENWRK6,X
		BPL	HSAN0_SUB2100

		INC	<ENWRK4,X
		LDY	<ENWRK4,X
		CPY	#003
		BNE	HSAN0_SUB2080

		STZ	<ENWRK4,X

HSAN0_SUB2080	EQU	$
		INC	<ENWRK2,X

HSAN0_SUB2090	EQU	$
		RTS

HSAN1_MIN_SPD	EQU	$
		WORD	0FC00H,0FBC0H	;0FB00H
HSAN1_MAX_SPD	EQU	$
		WORD	0FB00H,0FA00H	;0F880H
HSAN1_GPOW	EQU	$
		WORD	00020H,00030H	;00040H
HSAN1_GMAX	EQU	$
		WORD	00300H,00300H	;00400H
HSAN0_SUB2100	EQU	$
		LDY	ENWRK6,X
		CPY	#001
		BNE	HSAN0_SUB2500

		PHY
		LDY	ENWRKA,X
		LDA	!HSAN1_GPOW,Y
		STA	<EWORK0
		LDA	!HSAN1_GMAX,Y
		STA	<EWORK2
		LDA	!HSAN1_MIN_SPD,Y
		LDY	<ENWRK4,X
		CPY	#002
		BNE	HSAN0_SUB2400

		LDY	ENWRKA,X
		LDA	!HSAN1_MAX_SPD,Y

HSAN0_SUB2400	EQU	$
		LDY	<ENWRK0,X
		STA	ENYSPD,Y
		LDA	<EWORK0
		STA	ENGPOW,Y
		LDA	<EWORK2
		STA	ENGMAX,Y
		PLY

HSAN0_SUB2500	EQU	$
		LDA	<ENWRK4,X
		CMP	#00002
		BEQ	HSAN0_SUB2700

		LDA	!HSAN0_S2_ENCH,Y
		AND	#000FFH
		STA	ENCHPT,X

		LDA	!HSAN0_S2_TIM1,Y
		BRA	HSAN0_SUB2780

HSAN0_SUB2700	EQU	$
		LDA	!HSAN0_S2_ENCH_2,Y
		AND	#000FFH
		STA	ENCHPT,X

		LDA	HSAN0_S2_TIM1_2,Y

HSAN0_SUB2780	EQU	$
		AND	#000FFH
		STA	ENTIM1,X

		CPY	#001
		BMI	HSAN0_SUB2800

		LDY	ENCHPT,X
		LDA	!HSAN0_S2_YPOS,Y
		LDY	<ENWRK0,X
		ORA	#0FF00H
		CLC
		ADC	ENYPSL,X
		STA	ENYPSL,Y

HSAN0_SUB2800	EQU	$

		RTS
;
HSAN0_S3_YCHK	EQU	$
		WORD	0FFE2H,0FFE4H,0FFE4H
;
HSAN0_SUB3	EQU	$
		TYX

		LDA	<ENWRK4,X
		ASL	A
		TAY
		LDA	!HSAN0_S3_YCHK,Y
		LDY	<ENWRK0,X
		CLC
		ADC	ENYPSL,X
		CMP	ENYPSL,Y
		BPL	HSAN0_SUB3800

		STA	ENYPSL,Y
		LDA	#00000
		STA	ENGPOW,Y
		STA	ENYSPD,Y

		LDA	#00002
		STA	ENTIM1,X
		INC	<ENWRK2,X

HSAN0_SUB3800	EQU	$

		RTS
;
HSAN0_S4_YPOS	EQU	$
;ENCHPT =		[0] [1] [2] [3]
		HEX	0F2,0F0,0EA,0E4H
HSAN0_S4_TIM1	EQU	$
		HEX	004,001,001,001
HSAN0_S4_TIM1_2 EQU	$
		HEX	010,001,001
;
HSAN0_SUB4	EQU	$
		TYX

		LDA	ENTIM1,X
		BNE	HSAN0_SUB4800

		DEC	ENCHPT,X
		LDY	ENCHPT,X
		BNE	HSAN0_SUB4500

		LDA	#00005			;キャラパターンデータインデックスセット
		STA	ENWRK6,X
		LDA	#HSAN0_RMODE2
		STA	<ENWRK2,X

HSAN0_SUB4500	EQU	$
		LDA	<ENWRK4,X
		CMP	#00002
		BNE	HSAN0_SUB4600

		LDA	!HSAN0_S4_TIM1_2,Y
		BRA	HSAN0_SUB4700

HSAN0_SUB4600	EQU	$
		LDA	!HSAN0_S4_TIM1,Y

HSAN0_SUB4700	EQU	$
		AND	#000FFH
		STA	ENTIM1,X
		LDA	!HSAN0_S4_YPOS,Y
		LDY	<ENWRK0,X
		ORA	#0FF00H
		CLC
		ADC	ENYPSL,X
		STA	ENYPSL,Y

HSAN0_SUB4800	EQU	$

		RTS
;
HSAN0_SUB5	EQU	$
		TYX

		LDA	ENTIM1,X
		BNE	HSAN0_SUB5800

		LDA	#00008
		STA	ENTIM1,X
		DEC	ENCHPT,X
		BPL	HSAN0_SUB5800

		STZ	ENCHPT,X
		LDA	#00180H
		STA	ENTIM0,X
		STZ	<ENWRK2,X

HSAN0_SUB5800	EQU	$

		RTS
;
;************************************************************************
;*		initial ( べとべとくん )				*
;************************************************************************
BETO0IN		EQU	$			;-- beto0in --
		JSL	>TROBJ_SR_4x4_CL

		LDA	#00100H			;初期倍率セット
		STA	ENWRK6,X		;
		STA	ENWRK8,X		;

		JSR	BETO0_ROT_SET

		RTL
;
;************************************************************************
;*		move	( べとべとくん )				*
;************************************************************************
;		ENWRK0	プレイヤーＯＮフラグ
;		ENWRK2	ROUTINE MODE INDEX
;		ENWRK4	Ｘスピード
;		ENWRK6	横倍率
;		ENWRK8	縦倍率
;		ENWRKA
;		ENWRKC	プレイヤーのＸ　ＰＯＳ．補正値
;
;		ENCONT	ズームデータのインデックス
;
;		ENTIM0	ストップタイマー
;		ENTIM1	キャラパターンチェンジタイマー
;
BETO0_SUB	EQU	$
		WORD	BETO0_SUB0		;じっとしてる
		WORD	BETO0_SUB1		;あるいてる
		WORD	BETO0_SUB2		;プレイヤー発見（ジャンプまで）
		WORD	BETO0_SUB3		;プレイヤー発見（着地まで）
		WORD	BETO0_SUB4		;プレイヤーに突進
		WORD	BETO0_SUB5		;プレイヤー乗ってる（着地）
		WORD	BETO0_SUB6		;プレイヤー乗ってる（横伸び＆キー待ち）
		WORD	BETO0_SUB7		;プレイヤー乗ってる（ジャンプ）
		WORD	BETO0_SUB8		;プレイヤー乗ってる（小ジャンプ）
		WORD	BETO0_SUB9		;元通り
;
BETO0_EN_RXSPD	EQU	$
		WORD	00200H,0FE00H
;
BETO0MV		EQU	$			;-- beto0mv --
		JSR	BETO0_OAM_SET

		LDA	ENMODE,X
		CMP	#EMOVE
		BEQ	BETO0MV0300

		LDY	<ENWRK0,X
		BEQ	BETO0MV0300

		JSR	BETO0_REMOVE

BETO0MV0300	EQU	$
		JSL	>ENMDCK

		JSR	BETO0_BGCHK

		JSR	BETO0_DSPCHK

		JSR	BETO0_PLCHK

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

		JSR	BETO0_ROT_SET

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

		JSR	BETO0_ENCHK		;ひっくり返るやつ皆ごろし

BETO0MV0600	EQU	$

		RTL

BETO0MV0700	EQU	$
ST_ENMY_REFRECT EQU	$
		TXA
		STA	R1
		M_CHIP	MY_ENCROS2
		BRA	BETO0MV1100

BETO0MV1000	EQU	$
		LDX	#BANK MY_ENCROS2
		LDA	R15
		JSL	>CHIPON

BETO0MV1100	EQU	$
		LDX	<ENINDX
		LDY	R14
		BMI	BETO0MV0600
		BEQ	BETO0MV0600

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

		LDA	ENMYNO,Y		;タマゴ ?
		CMP	#EGG00			;
		BCC	BETO0MV1200		;  no: BETO0MV1200
		CMP	#EGG09+1		;
		BCC	BETO0MV1300		; yes: BETO0MV1300

BETO0MV1200	EQU	$
		LDA	ENMOD1,Y		;アイテムかリフト ?
		AND	#0100000000000000B	;
		BNE	BETO0MV1000		; yes: BETO0MV1000

		TYX
		JSL	>ENDEATH_SET_4
		BRA	BETO0MV1000

BETO0MV1300	EQU	$
		LDA	ENWRK4,Y		;オプションになってる ?
		BNE	BETO0MV1000		; yes: BETO0MV1000

		PHX
		LDX	#000
		LDA	CCWORK0			;右からあたってきた ?
		BPL	BETO0MV1400		; yes: BETO0MV1400

		INX
		INX

BETO0MV1400	EQU	$
		LDA	>BETO0_EN_RXSPD,X
		PLX
		STA	ENXSPD,Y
		LDA	#0FC00H
		STA	ENYSPD,Y
		LDA	#00040H
		STA	ENGPOW,Y
		LDA	#00001
		STA	ENSHOT,Y
		BRA	BETO0MV1000
;
BETO0_OAM_SET	EQU	$
		LDA	ENCLOR,X
		AND	#0FF00H
		BNE	BETO0_O_SET0800
		LDY	ENYUSN,X
		BMI	BETO0_O_SET0800

		JSL	>TROBJ_OAM_4x4

		LDA	ENDSXL,X
		CLC
		ADC	#00008-4
		STA	<EWORK0
		LDA	ENWRK6,X
		STA	R6
		LDA	#00002
		STA	<EWORK2
		I16
		LDY	ENOAML,X

BETO0_O_SET0100 EQU	$
		PHY
		LDA	SOAM_DX+0+8*4,Y
		SEC
		SBC	<EWORK0
		STA	R0
		I8
		M_CHIP	MULTIPLY
		I16
		PLY
		LDA	<EWORK0
		CLC
		ADC	R0
		STA	SOAM_DX+0+8*4,Y
		TYA
		CLC
		ADC	#008H*1
		TAY
		DEC	<EWORK2
		BNE	BETO0_O_SET0100

		I8
		LDX	<ENINDX

BETO0_O_SET0800 EQU	$
BETO0_PLCHK0000 EQU	$

		RTS
;
BETO0_BOUND	EQU	$
		WORD	00100H,0FF00H
;
BETO0_PLCHK	EQU	$
		LDY	<ENWRK2,X		;元に戻ってる ?
		CPY	#009			;
		BPL	BETO0_PLCHK0000		; yes: BETO0_PLCHK0000

		LDA	#0000EH
		STA	R0
		LDA	ENWRK8,X
		STA	R6
		M_CHIP	MULTIPLY
		LDX	<ENINDX
		LDA	R0
		CLC
		ADC	PWIDEY
		STA	<EWORK0
;
		CPX	PONLFFG			;プレイヤー乗ってる ?
		BNE	BETO0_PLCHK0080		;  no: BETO0_PLCHK0080
		JMP	BETO0_PLCHK0400		; yes: BETO0_PLCHK0400

BETO0_PLCHK0080 EQU	$
		LDY	<ENWRK2,X		;プレイヤー乗ってた ?
		CPY	#005			;
		BMI	BETO0_PLCHK0100		;  no: BETO0_PLCHK0100
		JMP	BETO0_PLCHK0480		;

BETO0_PLCHK0100 EQU	$
		LDY	ECRSFG,X		;プレイヤー近くにいる ?
		BPL	BETO0_PLCHK0000		;  no: BETO0_PLCHK0000

		LDA	ENYPSL,X		;プレイヤー、上から乗ってきた ?
		CLC				;
		ADC	#00010H			;
		SEC				;
		SBC	PCENTY			;
		SEC				;
		SBC	<EWORK0			;
		CMP	#0FFF8H			;
		BCS	BETO0_PLCHK0300		; yes: BETO0_PLCHK0300

		LDY	EPXMUK,X		;
		LDA	ENXSPD,X
		BEQ	BETO0_PLCHK0200

		TYA				;進行方向にプレイヤー ?
		CMP	ENMUKI,X		;
		BNE	BETO0_PLCHK0200		;  no: BETO0_PLCHK0200

		LDA	ENXSPD,X
		CLC
		ADC	PLXSPD
		STA	PLXSPD
		STA	PLMVSP

BETO0_PLCHK0200 EQU	$
		LDA	PLXSPD
		CLC
		ADC	!BETO0_BOUND,Y
		STA	ENXSPD,X

		LDA	#0FF00H
		STA	ENYSPD,X

		LDA	#00001
		STA	ENSHOT,X

		RTS

BETO0_PLCHK0300 EQU	$
		LDY	PLTYPE			;プレイヤー何かに変身してる ?
		BNE	BETO0_PLCHK0500		; yes: BETO0_PLCHK0500

		LDY	PONLFFG			;プレイヤー乗ってる ?
		BNE	BETO0_PLCHK0500		;  no: BETO0_PLCHK0500

		STX	PONLFFG
		INC	<ENWRK0,X
		LDA	PLXPSL			;プレイヤーの補正地セット
		SEC				;
		SBC	ENXPSL,X		;
		STA	ENWRKC,X		;
		LDA	#0111010001000000B	;食えない
		STA	ENMOD0,X
		LDA	#0000010000000001B	;ごろごろにつぶされない
		STA	ENMOD1,X
		LDA	#0011000100000101B	;凍らない、燃えない
		STA	ENMOD2,X
		STZ	ENCHPT,X
		LDA	#00008
		STA	EWIDEX,X
		STA	EWIDEY,X
		LDY	#005
		STY	<ENWRK2,X

BETO0_PLCHK0400 EQU	$
		LDY	PLEATFG			;プレイヤー 食われてる ?
		BNE	BETO0_PLCHK0430		; yes: BETO0_PLCHK0430

		LDY	ENWATR,X		;水につかってる ?
		BNE	BETO0_PLCHK0430		; yes: BETO0_PLCHK0430

		LDA	KEYC1L			;下キーが入った ?
		AND	#00400H			;
		BNE	BETO0_REMOVE		; yes: BETO0_REMOVE

		LDA	PLFLSH			;プレイヤー、ダメージ中 ?
		BEQ	BETO0_PLCHK0600		;  no: BETO0_PLCHK0600

BETO0_PLCHK0430 EQU	$
		CPX	PONLFFG			;プレイヤー、乗ってた ?
		BNE	BETO0_PLCHK0500		;  no: BETO0_PLCHK0500

BETO0_REMOVE	EQU	$
BETO0_PLCHK0480 EQU	$
;;;;;;;;		LDA	PMOV
		STZ	PONLFFG
		STZ	PLMODE

		STZ	<ENWRK0,X

		LDA	#0111010010000000B	;食える
		STA	ENMOD0,X
		LDA	#0000110000000001B	;ごろごろにつぶされる
		STA	ENMOD1,X
		LDA	#0011000101010101B	;凍る、燃える
		STA	ENMOD2,X
		LDA	#00040H
		STA	ENGPOW,X
		LDA	#00006
		STA	EWIDEX,X
		STA	EWIDEY,X
		LDY	#009
		STY	<ENWRK2,X

BETO0_PLCHK0500 EQU	$

		RTS

BETO0_PLCHK0600 EQU	$
		LDA	PCENTX
		STA	R8
		LDA	PCENTY
		SEC
		SBC	PWIDEY
		STA	R0
		M_CHIPR M_BGUNIT_READ
		LDX	<ENINDX
		LDY	R5
		BEQ	BETO0_PLCHK0608

;		 LDA	 PLBGCR			 ;プレイヤー頭打ってる ?
;		 AND	 #0000000000011000B	 ;
;		 BEQ	 BETO0_PLCHK0608	 ;  no: BETO0_PLCHK0608

		LDY	ENYSPD+1,X		;下降中 ?
		BPL	BETO0_PLCHK0608		; yes: BETO0_PLCHK0608

		LDA	ENYPSL,X
		SEC
		SBC	ENMOVY,X
		STA	ENYPSL,X

		STZ	ENYSPD,X

BETO0_PLCHK0608 EQU	$
		LDA	ENXSPD,X
		BEQ	BETO0_PLCHK0609

		LDA	PLBGCR			;プレイヤー横のＢＧにあたった ?
		AND	#0000000111100000B	;
		BEQ	BETO0_PLCHK0609		;  no: BETO0_PLCHK0609

		AND	#0000000110000000B	;進行方向のＢＧ ?
		DEC	A			;
		EOR	ENXSPD,X		;
		BPL	BETO0_PLCHK0609		;  no: BETO0_PLCHK0609

		LDA	ENXPSL,X
		SEC
		SBC	ENMOVX,X
		STA	ENXPSL,X

		LDA	ENXSPD,X
		EOR	#0FFFFH
		INC	A
		CMP	#08000H
		ROR	A
		STA	ENXSPD,X

BETO0_PLCHK0609 EQU	$
		LDA	ENWRKC,X
		BEQ	BETO0_PLCHK0630
		BPL	BETO0_PLCHK0610

		INC	ENWRKC,X
		BRA	BETO0_PLCHK0630

BETO0_PLCHK0610 EQU	$
		DEC	ENWRKC,X

BETO0_PLCHK0630 EQU	$
		LDA	ENXPSL,X		;プレイヤーＸ　ＰＯＳ．補正
		CLC				;
		ADC	ENWRKC,X		;
		STA	PLXPSL			;
;
		LDA	ENYPSL,X		;プレイヤーＹ　ＰＯＳ．補正
		CLC				;
		ADC	#00010H+2		;	;+2...食い込ませる
		SEC				;
		SBC	<EWORK0			;
		SEC				;
		SBC	PCENTY			;
		CLC				;
		ADC	PLYPSL			;
		STA	PLYPSL			;

;		LDA	P_KEY_BERO
;		ORA	P_KEY_JUMP
;		ORA	P_KEY_MNAG
		LDA	P_KEY_JUMP
		ORA	#00700H			;左右、下キー
		EOR	#0FFFFH
		STA	<EWORK0

		LDA	KEYC1L
		AND	<EWORK0
		STA	P_KEYC1L
		LDA	KEYC2L
		AND	<EWORK0
		STA	P_KEYC2L

		LDA	BERFLG			;舌出てる ?
		ORA	PLNAGE			;投げようとしてる ?
		BNE	BETO0_PLCHK0700		; yes: BETO0_PLCHK0700

		LDA	KEYC1L+1		;左右キーが入ってる ?
		AND	#00003			;
		BEQ	BETO0_PLCHK0700		;  no: BETO0_PLCHK0700

		AND	#00002
		STA	PLCMKI
		EOR	#00002
		STA	ENMUKI,X

BETO0_PLCHK0700 EQU	$
		LDA	#PDEM
		STA	PLMODE
		STZ	PLXSPD
		STZ	PLYSPD
		STZ	PLDOSN
		INC	ONLFFG
		LDY	#040H
		LDA	KEYC1L			;ジャンプキーが入ってる ?
		AND	P_KEY_JUMP		;
		BEQ	BETO0_PLCHK0800		;  no: BETO0_PLCHK0800

		LDY	#020H

BETO0_PLCHK0800 EQU	$
		TYA
		STA	ENGPOW,X

		RTS
;
BETO0_ROT_SET	EQU	$
		LDA	ENWRK8,X		;(R11) <- Ｙ倍率セット
		STA	R11			;
		LDA	ENWRK6,X		;(R6) <- Ｘ倍率セット
		STA	R6			;

		LDA	#BANK CIPCHD+4000H+000	;chara data bank set
		STA	R13
		LDA	#CIPCHD+4000H+000	;chara data address set
		STA	R12

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

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

		M_CHIP	C_32_ZOOM_XY_16

		LDX	<ENINDX

		INC	OBM7WF			;mode 7 OBJ chara DMA "ON"

		RTS
;
;ひっくり返れるやつ皆ごろし
BETO0_ENCHK	EQU	$
		LDY	ENYSPD+1,X		;上昇中 ?
		BMI	BETO0_ENCHK0800		; yes: BETO0_ENCHK0800

		TXA
		STA	R1
		M_CHIP	MY_ENCROS

BETO0_ENCHK0100 EQU	$
		LDX	<ENINDX
		LDY	R14
		BMI	BETO0_ENCHK0800
		BEQ	BETO0_ENCHK0800

		LDA	ENMODE,Y
		CMP	#EMOVE
		BNE	BETO0_ENCHK0800
		LDA	ENSHOT,Y
		BNE	BETO0_ENCHK0800

		TYX
		JSL	>ENDEATH_SET

		LDA	#0001DH			;［Ｓ］
		JSL	>SOUND_3_ON
;;;;;;;;		LDA	#00008H			;［Ｓ］
;;;;;;;;		STA	SOUND0

		LDX	#BANK MY_ENCROS
		LDA	R15
		JSL	>CHIPON
		BRA	BETO0_ENCHK0100

BETO0_ENCHK0800 EQU	$

		RTS
;
BETO0_BGCHK	EQU	$
		LDA	ENCBFG,X
		AND	#0000CH
		BEQ	BETO0_BGCHK0800

		AND	#00008
		DEC	A
		EOR	ENXSPD,X
		BPL	BETO0_BGCHK0800

		LDA	ENXPSL,X
		SEC
		SBC	ENMOVX,X
		STA	ENXPSL,X

BETO0_BGCHK0800 EQU	$

		RTS
;
BETO0_DSPCHK	EQU	$
		CPX	PONLFFG			;プレイヤー乗ってる ?
		BNE	BETO0_DSPCHK080		;  no: BETO0_DSPCHK080

		LDA	ENDSXL,X
		BMI	BETO0_DSPCHK050
		CMP	#000F0H
		BMI	BETO0_DSPCHK080

BETO0_DSPCHK050 EQU	$
		SEC
		SBC	ENMOVX,X
		STA	ENXPSL,X
		STZ	ENXSPD,X

BETO0_DSPCHK080 EQU	$

		RTS
;
BETO0_S0_XSPD	EQU	$
		WORD	0FF00H,00100H
;
BETO0_SUB0	EQU	$
		TYX

		LDA	ENTIM0,X
		BNE	BETO0_SUB0800

		LDA	<RANDM0+1
		AND	#00002
		STA	ENMUKI,X
		TAY
		LDA	!BETO0_S0_XSPD,Y
		STA	ENXSPD,X

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

		INC	<ENWRK2,X

		RTS

BETO0_SUB0800	EQU	$
BETO0_PL_SEARCH EQU	$
		LDY	EPXMUK,X		;プレイヤー、目前にいる ?
		TYA				;
		CMP	ENMUKI,X		;
		BNE	BETO0_P_S0800		;
		LDA	EPWIDX,X		;
		CLC				;
		ADC	#00060H			;
		CMP	#000C0H			;
		BCS	BETO0_P_S0800		;
		LDA	EPWIDY,X		;
		CLC				;
		ADC	#00030H			;
		CMP	#00060H			;
		BCS	BETO0_P_S0800		;  no: BETO0_P_S0800

		STZ	ENXSPD,X
		LDA	#00001
		STA	<ENCONT,X
		LDA	#00008
		STA	ENTIM0,X
		STZ	ENCHPT,X
		LDY	#002
		STY	<ENWRK2,X

BETO0_P_S0800	EQU	$

		RTS
;
BETO0_S1_TIM1	EQU	$-1
;ENCHPT =		[1] [2] [3] [4] [5] [6]
		HEX	002,003,004,003,003,002		;SUB1
		HEX	001,002,002,002,002,001		;SUB4
;
BETO0_SUB1	EQU	$
BETO0_SUB4	EQU	$
		TYX

		LDA	ENTIM0,X
		BNE	BETO0_SUB1100

		LDA	<RANDM0
		AND	#0001FH
		CLC
		ADC	#00020H
		STA	ENTIM0,X
		STZ	ENXSPD,X
		STZ	ENCHPT,X
		STZ	<ENWRK2,X

		RTS

BETO0_SUB1100	EQU	$
		LDY	<ENWRK2,X
		CPY	#004
		BEQ	BETO0_SUB1200

		JSR	BETO0_PL_SEARCH

BETO0_SUB1200	EQU	$
		LDA	ENTIM1,X		;キャラパターンチェンジ ?
		BNE	BETO0_SUB1800		;  no: BETO0_SUB1800

		LDY	ENCHPT,X
		INY
		CPY	#007
		BMI	BETO0_SUB1400

		LDY	#001

BETO0_SUB1400	EQU	$
		TYA
		STA	ENCHPT,X
		LDY	<ENWRK2,X
		CPY	#004
		BNE	BETO0_SUB1500

		CLC
		ADC	#00006
		TAY

BETO0_SUB1500	EQU	$
		LDA	!BETO0_S1_TIM1,Y
		AND	#000FFH
		STA	ENTIM1,X

BETO0_SUB1800	EQU	$

		RTS
;
BETO0_S2_ZIDX	EQU	$
		BYTE	BETO0_Z_1
		BYTE	BETO0_Z_0
;
BETO0_SUB2	EQU	$
		TYX

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

		LDY	<ENCONT,X
		LDA	!BETO0_S2_ZIDX,Y
		TAY
		JSR	BETO0_ZOOM_CALC
		BNE	BETO0_SUB2800

		DEC	<ENCONT,X
		BPL	BETO0_SUB2800

		LDA	#0FD00H
		STA	ENYSPD,X
;;;;;;;;		LDA	#00009			;［Ｓ］
;;;;;;;;		STA	SOUND0
		LDA	#00001
		STA	<ENCONT,X
		INC	<ENWRK2,X

BETO0_SUB2800	EQU	$

		RTS
;
BETO0_S3_ZIDX	EQU	$
		BYTE	BETO0_Z_2
		BYTE	BETO0_Z_3
BETO0_S3_XSPD	EQU	$
		WORD	0FE00H,00200H
;
BETO0_SUB3	EQU	$
		TYX

		LDA	ENCBFG,X		;地面に着いた ?
		AND	#00001			;
		BEQ	BETO0_SUB3500		;  no: BETO0_SUB3500

		STZ	ENCHPT,X
		LDY	<ENCONT,X
		LDA	!BETO0_S3_ZIDX,Y
		TAY
		JSR	BETO0_ZOOM_CALC
		BNE	BETO0_SUB3400

		DEC	<ENCONT,X
		BPL	BETO0_SUB3400

		LDY	ENMUKI,X
		LDA	!BETO0_S3_XSPD,Y
		STA	ENXSPD,X

		LDA	<RANDM0
		AND	#0003FH
		CLC
		ADC	#00020H
		STA	ENTIM0,X
		STZ	ENCHPT,X
		INC	<ENWRK2,X

BETO0_SUB3400	EQU	$

		RTS

BETO0_SUB3500	EQU	$
		LDY	#BETO0_Z_2
		JSR	BETO0_ZOOM_CALC

BETO0_JITABATA	EQU	$
		LDA	ENTIM1,X		;キャラパターンチェンジ ?
		BNE	BETO0_JB0800		;  no: BETO0_JB0800

		LDY	ENCHPT,X
		INY
		CPY	#007
		BMI	BETO0_JB0400

		LDY	#001

BETO0_JB0400	EQU	$
		TYA
		STA	ENCHPT,X
		LDA	#00002
		STA	ENTIM1,X

BETO0_JB0800	EQU	$

		RTS
;
BETO0_SUB5	EQU	$
		TYX

		LDA	ENCBFG,X		;地面に着いた ?
		AND	#00001			;
		BEQ	BETO0_SUB5800		;  no: BETO0_SUB5800

		LDA	ENXSPD,X
		STA	<ENWRK4,X
		STZ	ENXSPD,X
		STZ	ENCHPT,X

		LDY	#BETO0_Z_4
		JSR	BETO0_ZOOM_CALC
		BNE	BETO0_SUB5500

		LDA	#00001
		STA	<ENCONT,X
		INC	<ENWRK2,X

BETO0_SUB5500	EQU	$

		RTS

BETO0_SUB5800	EQU	$
		JSR	BETO0_KEY_CHK

		LDA	KEYC1L			;ジャンプキーが押されてる ?
		AND	P_KEY_JUMP		;
		BEQ	BETO0_SUB5500		;  no: BETO0_SUB5500

		JMP	BETO0_JITABATA
;
BETO0_S6_ZADR	EQU	$
		BYTE	BETO0_Z_8
		BYTE	BETO0_Z_5
;
BETO0_SUB6	EQU	$
		TYX

		LDY	#007
		LDA	KEYC1L			;ジャンプボタンを押された ?
		BIT	P_KEY_JUMP		;
		BNE	BETO0_SUB6200		; yes: BETO0_SUB6200

		BIT	#00300H			;左右キーが入ってる ?
		BEQ	BETO0_SUB6500		;  no: BETO0_SUB6500

		INY

BETO0_SUB6200	EQU	$
		STY	<ENWRK2,X
		LDA	#00001
		STA	<ENCONT,X

		RTS

BETO0_SUB6500	EQU	$
		LDA	<ENWRK4,X		;スピード減算
		BEQ	BETO0_SUB6600		;
						;
		CMP	#08000H			;
		ROR	A			;
		STA	<ENWRK4,X		;
						;
BETO0_SUB6600	EQU	$
		LDY	<ENCONT,X		;
		BMI	BETO0_SUB6800		;

		LDA	!BETO0_S6_ZADR,Y
		TAY
		JSR	BETO0_ZOOM_CALC
		BNE	BETO0_SUB6800

		DEC	<ENCONT,X

BETO0_SUB6800	EQU	$

		RTS
;
BETO0_S7_ZADR	EQU	$
		BYTE	BETO0_Z_7
		BYTE	BETO0_Z_6
		BYTE	BETO0_Z_A
		BYTE	BETO0_Z_9
;BETO0_S7_XSPD	EQU	$
;		WORD	00100H,0FF00H
;		WORD	00080H,0FF80H
BETO0_S7_YSPD	EQU	$
		WORD	0FB80H,0FD00H
;
BETO0_SUB7	EQU	$
BETO0_SUB8	EQU	$
		TYX

		LDA	ENCBFG,X		;空中 ?
		AND	#00001			;
		BEQ	BETO0_SUB7500		; yes: BETO0_SUB7500

		LDA	<ENCONT,X
		BMI	BETO0_SUB7600

		LDY	<ENWRK2,X
		CPY	#007
		BEQ	BETO0_SUB7040

		CLC
		ADC	#00002

BETO0_SUB7040	EQU	$
		TAY
		LDA	!BETO0_S7_ZADR,Y
		TAY
		JSR	BETO0_ZOOM_CALC
		BNE	BETO0_SUB7400

		DEC	<ENCONT,X
		BPL	BETO0_SUB7400

		LDA	<ENWRK2,X
		SEC
		SBC	#00007
		ASL	A
		TAY
		LDA	!BETO0_S7_YSPD,Y
		STA	ENYSPD,X

		LDA	#00035H			;［Ｓ］
		JSL	>SOUND_3_ON

;		LDA	KEYC1L+1		;左右キーが入ってる ?
;		AND	#00003			;
;		BEQ	BETO0_SUB7100		;  no: BETO0_SUB7100
;
;		AND	#00002
;		CPY	#000			;SUB7 ?
;		BEQ	BETO0_SUB7080		; yes: BETO0_SUB7080
;
;		CLC
;		ADC	#00004
;
;BETO0_SUB7080	EQU	$
;		TAY
;		LDA	!BETO0_S7_XSPD,Y
;
;BETO0_SUB7100	EQU	$
		LDA	<ENWRK4,X
		STA	ENXSPD,X

BETO0_SUB7400	EQU	$

		RTS

BETO0_SUB7500	EQU	$
		JSR	BETO0_KEY_CHK

		LDY	#BETO0_Z_2
		JSR	BETO0_ZOOM_CALC
		BNE	BETO0_SUB7800

BETO0_SUB7600	EQU	$
		LDY	#005
		STY	<ENWRK2,X

BETO0_SUB7800	EQU	$
		LDA	KEYC1L			;ジャンプキーが押されてる ?
		AND	P_KEY_JUMP		;
		BEQ	BETO0_SUB7400		;  no: BETO0_SUB7400

		JMP	BETO0_JITABATA
;
BETO0_XADD	EQU	$
		WORD	00020H,0FFE0H
		WORD	00010H,0FFF0H
BETO0_XMAX	EQU	$
		WORD	00400H,0FC00H
		WORD	00200H,0FE00H
BETO0_CHKDT	EQU	$
		WORD	0FFFFH,00000H
		WORD	0FFFFH,00000H
;
BETO0_KEY_CHK	EQU	$
		LDA	KEYC1L+1		;左右キーが入ってる ?
		AND	#00003			;
		BEQ	BETO0_K_C0800		;  no: BETO0_K_C0800

		AND	#00002
		CPY	#000			;SUB7 ?
		BEQ	BETO0_K_C0100		; yes: BETO0_K_C0100

		CLC
		ADC	#00004

BETO0_K_C0100	EQU	$
		TAY
		LDA	!BETO0_XADD,Y
		CLC
		ADC	ENXSPD,X
		STA	ENXSPD,X
		SEC
		SBC	!BETO0_XMAX,Y
		EOR	!BETO0_CHKDT,Y
		BPL	BETO0_K_C0800

		LDA	!BETO0_XMAX,Y
		STA	ENXSPD,X

BETO0_K_C0800	EQU	$

		RTS
;
BETO0_SUB9	EQU	$
		TYX

		LDY	#BETO0_Z_2
		JSR	BETO0_ZOOM_CALC
		BNE	BETO0_SUB9800

		STZ	<ENWRK2,X

BETO0_SUB9800	EQU	$

		RTS
;
BETO0_ZOOM_DT	EQU	$
;			Ｘズーム率　ＸズームＣＰ　ＸズームＣＨＫ
;			Ｙズーム率　ＹズームＣＰ　ＹズームＣＨＫ
BETO0_0		EQU	$
		WORD	00012H,001C0H,00024H
		WORD	00012H,000A0H,00024H
BETO0_1		EQU	$
		WORD	0000FH,000C0H,0001EH
		WORD	0000FH,00180H,0001EH
BETO0_2		EQU	$
		WORD	0000CH,00100H,00018H
		WORD	0000CH,00100H,00018H
BETO0_3		EQU	$
		WORD	0000CH,001C0H,00018H
		WORD	0000CH,000A0H,00018H
BETO0_4		EQU	$
		WORD	00020H,001E0H,00040H
		WORD	00020H,00040H,00040H
BETO0_5		EQU	$
		WORD	0000CH,00100H,00018H
		WORD	0000CH,00100H,00018H
BETO0_6		EQU	$
		WORD	00014H,000E0H,00028H
		WORD	00014H,00140H,00028H
BETO0_7		EQU	$
		WORD	00024H,00080H,00048H
		WORD	00010H,00160H,00020H
BETO0_8		EQU	$
		WORD	00008H,001C0H,00010H
		WORD	00008H,00080H,00010H
BETO0_9		EQU	$
		WORD	00014H,000F0H,00028H
		WORD	00014H,00120H,00028H
BETO0_A		EQU	$
		WORD	00024H,000C0H,00048H
		WORD	00010H,00130H,00020H
;
BETO0_Z_0	EQU	(BETO0_0-BETO0_0)
BETO0_Z_1	EQU	(BETO0_1-BETO0_0)
BETO0_Z_2	EQU	(BETO0_2-BETO0_0)
BETO0_Z_3	EQU	(BETO0_3-BETO0_0)
BETO0_Z_4	EQU	(BETO0_4-BETO0_0)
BETO0_Z_5	EQU	(BETO0_5-BETO0_0)
BETO0_Z_6	EQU	(BETO0_6-BETO0_0)
BETO0_Z_7	EQU	(BETO0_7-BETO0_0)
BETO0_Z_8	EQU	(BETO0_8-BETO0_0)
BETO0_Z_9	EQU	(BETO0_9-BETO0_0)
BETO0_Z_A	EQU	(BETO0_A-BETO0_0)
;
BETO0_ZOOM_CALC EQU	$
		LDA	#00002
		STA	<EWORK0
;
BETO0_Z_C0080	EQU	$
		LDA	ENWRK6,X		;倍率計算
		CMP	!BETO0_ZOOM_DT+02H,Y	;
		BEQ	BETO0_Z_C0300		;
		BMI	BETO0_Z_C0100		;
						;
		SEC				;
		SBC	!BETO0_ZOOM_DT+00H,Y	;
		BRA	BETO0_Z_C0200		;
						;
BETO0_Z_C0100	EQU	$			;
		CLC				;
		ADC	!BETO0_ZOOM_DT+00H,Y	;
						;
BETO0_Z_C0200	EQU	$			;
		STA	ENWRK6,X		;
		SEC				;
		SBC	!BETO0_ZOOM_DT+02H,Y	;
		CLC				;
		ADC	!BETO0_ZOOM_DT+00H,Y	;
		CMP	!BETO0_ZOOM_DT+04H,Y	;
		BCS	BETO0_Z_C0400		;
						;
BETO0_Z_C0300	EQU	$			;
		DEC	<EWORK0			;
		LDA	!BETO0_ZOOM_DT+02H,Y	;
		STA	ENWRK6,X		;

BETO0_Z_C0400	EQU	$
		CPX	<ENINDX
		BNE	BETO0_Z_C0800

		INX
		INX
		TYA
		CLC
		ADC	#00006
		TAY
		BRA	BETO0_Z_C0080

BETO0_Z_C0800	EQU	$
		LDX	<ENINDX
		LDY	<EWORK0

		RTS
;
;************************************************************************
;*		initial ( 布おばけ )					*
;************************************************************************
NUNOOIN		EQU	$			;-- nunooin --
		JSL	>TROBJ_SR_4x4_CL
		LDA	#00004H
		STA	ENBGYP,X
		STZ	ENWRKA,X		;ENBGYP 加減算フラグリセット

		JSR	NUNOO_ROT_SET_I

		RTL
;
;************************************************************************
;*		move	( 布おばけ )					*
;************************************************************************
;B		ENWRK0	中身セットフラグ
;B		ENWRK1	キャラパターンカウンター
;		ENWRK2	ROUTINE MODE INDEX
;B		ENWRK4	赤ちゃんＧＥＴフラグ
;B		ENWRK5	ENBGYP 変更ロックフラグ
;		ENWRK6	BERXPS SAVE
;		ENWRK8	回転角
;		ENWRKA	ENBGYP 加減算フラグ
;		ENWRKC	回転角セーブ(SUB1)／回転角変更倍率(SUB2)
;
;		ENCONT	回転方向フラグ
;
;		ENTIM0
;		EBTIM1	キャラパターンチェンジタイマー
;		ENTIM2	回転角変更ロックフラグ１
;		ENTIM3	　　　　　”　　　　　２
;
NUNOO_CHAR	EQU	$
		WORD	CIPCHD3+0040H+000
		WORD	CIPCHD3+0020H+000
		WORD	CIPCHD3+0000H+000
;
NUNOO_SUB	EQU	$
		WORD	NUNOO_SUB0		;のーまる
		WORD	NUNOO_SUB1		;ジャンプ（上昇）
		WORD	NUNOO_SUB2		;ジャンプ（下降）
		WORD	NUNOO_SUB3		;プレイヤーにおおいかぶさり
		WORD	NUNOO_SUB4		;にげ
;
NUNOOMV		EQU	$			;-- nunoomv --
		JSR	NUNOO_OAM_SET

;		LDA	ENCOLD,X
;		BNE	NUNOOMV0010
;
		LDY	ENMODE,X		;布食われた ?
		CPY	#EEATM			;
		BEQ	NUNOOMV0400		; yes: NUNOOMV0400
		CPY	#EFALL			;死んでる ?
		BEQ	NUNOOMV0100		; yes: NUNOOMV0100
		CPY	#ECHNG
		BEQ	NUNOOMV0010
;		CPY	#EFIRE
;		BEQ	NUNOOMV0010
		JMP	NUNOOMV0B00		;  no: NUNOOMV0B00

NUNOOMV0010	EQU	$
		LDY	<ENWRK4,X		;赤ちゃん持ってる ?
		BEQ	NUNOOMV0080		;  no: NUNOOMV0080

		JSR	NUNOO_BABYM_RET
		JSL	>BABYM_SHABN_C7

NUNOOMV0080	EQU	$
		JMP	NUNOOMV0B00

NUNOOMV0100	EQU	$
		LDY	<ENWRK4,X		;赤ちゃんをさらってる ?
		BEQ	NUNOOMV0200		;  no: GONTAMV0020

		JSR	NAKAMI_SET2		;どろぼう＆赤ちゃんセット
		BRA	NUNOOMV0300

NUNOOMV0200	EQU	$
		JSR	NAKAMI_SET

NUNOOMV0300	EQU	$
		PLA
		PLY
		JMP	>ENCLEAR

NUNOOMV0400	EQU	$
		LDY	BERFLG			;下から食われた ?
		CPY	#003			;
		BEQ	NUNOOMV0500		; yes: GONTAMV0500
		CPY	#004			;
		BNE	NUNOOMV0800		;  no: GONTAMV0800

NUNOOMV0500	EQU	$
		LDY	<ENWRK4,X		;赤ちゃん持ってる ?
		BEQ	NUNOOMV0600		;  no: NUNOOMV0600

		LDA	#EEATM
		STA	ENMODE+BABY_INDEX
		JSR	NUNOO_BABYM_RET

NUNOOMV0600	EQU	$
		LDA	ENCBFG,X		;地面に着いてる ?
		AND	#00001			;
		BEQ	NUNOOMV0700		;  no: NUNOOMV0700

		LDA	ENYPSL,X
		SEC
		SBC	ENMOVY,X
		STA	ENYPSL,X

NUNOOMV0700	EQU	$
		LDA	#EMOVE
		STA	ENMODE,X

		STZ	EATFLG

		PLA
		PLY
		RTL

NUNOOMV0800	EQU	$
		LDY	<ENWRK0,X		;中身セットする ?
		BNE	NUNOOMV0A00		;  no: GONTAMV0400

		LDA	#0011000100000001B	;ＯＡＭ４−＞５
		STA	ENMOD2,X

		LDY	<ENWRK4,X		;赤ちゃんをさらってる ?
		BEQ	NUNOOMV0900		;  no: GONTAMV0300

		JSR	NAKAMI_SET2		;どろぼう＆赤ちゃんセット
		BRA	NUNOOMV0A00

NUNOOMV0900	EQU	$
		JSR	NAKAMI_SET

NUNOOMV0A00	EQU	$
		JSR	SHITA_ADJUST

NUNOOMV0B00	EQU	$
		JSL	>ENMDCK			;mode check

		LDY	<ENWRK2,X		;プレイヤーにひっつきむし ?
		CPY	#003			;
		BEQ	NUNOOMV1000		; yes: NUNOOMV1000

		CPY	#002			;プレイヤー目掛けて降りていく ?
		BNE	NUNOOMV0C00		;  no: NUNOOMV0C00

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

		LDA	EPWIDX,X
		CLC
		ADC	#00010H
		CMP	#00020H
		BCS	NUNOOMV0C00

		LDA	EPWIDY,X
		BMI	NUNOOMV1000

NUNOOMV0C00	EQU	$
		JSL	>EPCRCK

NUNOOMV1000	EQU	$
;＊＊＊＊＊＊＊＊＜　範囲外チェック　＞＊＊＊＊＊＊＊＊＊＊
		JSR	NUNOO_DISP_CHK

;＊＊＊＊＊＊＊＊＜　ムーブサブ　＞＊＊＊＊＊＊＊＊＊＊
		TXY
		LDA	<ENWRK2,X
		ASL	A
		TAX
		JSR	(NUNOO_SUB,X)

;＊＊＊＊＊＊＊＊＜　キャラパターンチェンジ　＞＊＊＊＊＊＊＊＊＊＊
		M8
		LDA	ENTIM1,X
		BNE	NUNOOMV2000

		LDA	#008H
		STA	ENTIM1,X
		DEC	<ENWRK1,X
		DEC	<ENWRK1,X
		BPL	NUNOOMV2000

		LDY	#004
		STY	<ENWRK1,X

NUNOOMV2000	EQU	$
		M16

;＊＊＊＊＊＊＊＊＜　ENXPOW クリアチェック　＞＊＊＊＊＊＊＊＊＊＊
		LDA	ENXPOW,X
		BEQ	NUNOOMV2300

		ASL	A
		STA	<EWORK0

		LDA	ENXSPD,X
		CLC
		ADC	ENXPOW,X
		CMP	<EWORK0
		BCS	NUNOOMV2300

		STZ	ENXPOW,X
		STZ	ENXSPD,X

NUNOOMV2300	EQU	$
;＊＊＊＊＊＊＊＊＜　ENBGYP 計算　＞＊＊＊＊＊＊＊＊＊＊
		LDY	<ENWRK5,X		;ENBGYP 変更ロック ?
		BNE	NUNOOMV2900		; yes: NUNOOMV2900

		LDA	FRCNT2
		AND	#00003
		BNE	NUNOOMV2900

		LDA	ENWRKA,X
		DEC	A
		CLC
		ADC	ENBGYP,X
		BMI	NUNOOMV2700

		CMP	#0000CH
		BMI	NUNOOMV2800

NUNOOMV2700	EQU	$
		PHA
		LDA	ENWRKA,X
		EOR	#00002
		STA	ENWRKA,X
		PLA

NUNOOMV2800	EQU	$
		STA	ENBGYP,X

NUNOOMV2900	EQU	$
		JSR	NUNOO_ROT_SET

		RTL
;
NUNOO_OAM_SET	EQU	$
		LDY	ENCHPT,X
		BNE	NUNOO_O_SET0800

		JSL	>TROBJ_OAM_4x4

		LDA	ENWRK8,X
		STA	R1
		LDA	#00008H
		STA	R6
		M_CHIP	M_ENMY_1P_ROT
		LDX	<ENINDX
		LDY	ENMUKI,X
		BEQ	NUNOO_O_SET0080

		LDA	R1
		EOR	#0FFFFH
		INC	A
		STA	R1

NUNOO_O_SET0080 EQU	$
		LDA	#0FFF8H
		CLC
		ADC	R0
		STA	R0

		I16
		LDY	ENOAML,X

		LDA	#00004
		STA	<EWORK0

NUNOO_O_SET0100 EQU	$
		LDA	SOAM_DX+0+8*0,Y
		CLC
		ADC	R1
		STA	SOAM_DX+0+8*0,Y
		LDA	SOAM_DX+2+8*0,Y
		CLC
		ADC	R0
		STA	SOAM_DX+2+8*0,Y

		TYA
		CLC
		ADC	#00008
		TAY

		DEC	<EWORK0
		BNE	NUNOO_O_SET0100

		I8

NUNOO_O_SET0800 EQU	$

		RTS
;
NUNOO_DISP_CHK	EQU	$
		JSL	>DISPCK2		;画面外 ?
		BCC	NUNOO_D_CHK0100		;  no: NUNOO_D_CHK0100

		LDY	<ENWRK4,X		;赤ちゃんを持ってる ?
		BNE	NUNOO_D_CHK0200		; yes: NUNOO_D_CHK0200

		PLA
		JMP	>ENCLEAR

NUNOO_D_CHK0100 EQU	$
		LDY	<ENWRK4,X		;赤ちゃんを持ってる ?
		BNE	NUNOO_D_CHK0300		; yes: NUNOO_D_CHK0300

		RTS

NUNOO_D_CHK0200 EQU	$
		STZ	ENXSPD,X
		STZ	ENYSPD,X

NUNOO_D_CHK0300 EQU	$
		LDA	DEATHCT0		;死神に取り憑かれてる ?
		BNE	NUNOO_D_CHK0800		; yes: NUNOO_D_CHK0800

		LDA	ENXPSL,X
		STA	ENXPSL+BABY_INDEX
		LDA	ENYPSL,X
		STA	ENYPSL+BABY_INDEX

		RTS

NUNOO_D_CHK0800 EQU	$
NUNOO_BABYM_RET EQU	$
		LDY	#004
		STY	ENYUSN+BABY_INDEX
		STZ	ENTIM3+BABY_INDEX
		STZ	ENCBFG+BABY_INDEX
		LDA	#1011001000100000B	;食えるようにする
		STA	ENMOD0+BABY_INDEX
		STZ	<ENWRK0+BABY_INDEX
		STZ	ENWRKC+BABY_INDEX

		LDA	BABYNO
		AND	#00FFFH
		STA	BABYNO

		LDY	#000
		STY	<ENWRK4,X		;赤ちゃんＧＥＴフラグクリア
		STY	<ENWRK2,X

		LDA	#00020H			;サーチロックタイマーセット
		STA	ENTIM2,X

		RTS
;
NUNOO_ROT_SET	EQU	$
;＊＊＊＊＊＊＊＊＜　ビットマップエリアセット　＞＊＊＊＊＊＊＊＊＊＊
		LDY	ENCHPT,X
		BNE	NUNOOMV3000

		TROBJ_CHK_2
		BNE	NUNOOMV3000

NUNOO_ROT_SET_I EQU	$
		LDY	<ENWRK1,X
		LDA	!NUNOO_CHAR,Y		;(R12) <-- 転送元アドレスセット
		STA	R12			;
		LDA	#BANK CIPCHD3+0000H+000 ;(R13) <-- 転送元バンクセット
		STA	R13			;

		LDA	ENWRK8,X		;(R5) <- 回転角セット
		LSR	A			;
		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"

NUNOOMV3000	EQU	$

		RTS
;
NUNOO_S0_XSPD	EQU	$
		WORD	0FF00H,00100H
NUNOO_S0_XSPD2	EQU	$
		WORD	0FE80H,00180H
;
NUNOO_SUB0	EQU	$
NUNOO_SUB4	EQU	$
		TYX

		LDA	ENXSPD,X		;動いてる ?
		BNE	NUNOO_SUB0500		; yes: NUNOO_SUB0500

		STZ	ENTIM2,X		;回転角変更ロックフラグ１クリア
		STZ	ENTIM3,X		;　　　　　”　　　　　２クリア

		LDA	ENWRK8,X		;まっすぐ（回転角＝０） ?
		BEQ	NUNOO_SUB0400		; yes: NUNOO_SUB0400

		CLC				;ちょっとしか傾いていない ?
		ADC	#00002			;
		CMP	#00004			;
		BCS	NUNOO_SUB0600		;  no: NUNOO_SUB0600

NUNOO_SUB0400	EQU	$
		LDA	ENMUKI,X
		EOR	#00002
		STA	ENMUKI,X

NUNOO_SUB0500	EQU	$
		LDY	ENMUKI,X
		LDA	!NUNOO_S0_XSPD,Y
		STA	ENXSPD,X

NUNOO_SUB0600	EQU	$
		JSR	NUNOO_ANG_CALC

NUNOO_SUB0700	EQU	$
		LDY	<ENWRK2,X
		BNE	NUNOO_SUB0800

		LDA	ENMUKI,X		;プレイヤーが前にいる?
		DEC	A			;
		EOR	EPWIDX,X		;
		BPL	NUNOO_SUB0800		;  no: NUNOO_SUB0800

		LDA	EPWIDX,X
		CLC
		ADC	#00040H
		CMP	#00080H
		BCS	NUNOO_SUB0800

		LDA	EPWIDY,X
		CLC
		ADC	#00040H
		CMP	#00080H
		BCS	NUNOO_SUB0800

		LDA	ENWRK8,X		;回転角セーブ
		CLC				;
		ADC	#00020H			;
		STA	ENWRKC,X		;
		LDY	ENMUKI,X
		LDA	!NUNOO_S0_XSPD2,Y
		STA	ENXSPD,X
		STZ	ENGMAX,X
		LDA	#00008H
		STA	ENGPOW,X
		LSR	A	;[ LDA	#00004H ]
		STA	ENXPOW,X
		LDA	#0FE80H
		STA	ENYSPD,X
		LDA	#1000110010000011B	;行ったり来り＜ー落ちる
		STA	ENMOD1,X		;
		INC	<ENWRK5,X		;ENBGYP 変更ロックフラグセット
		STZ	ENWRKA,X
		STZ	ENBGYP,X
		INC	<ENWRK2,X

		RTS

NUNOO_SUB0800	EQU	$
		LDA	ENCBFG,X
		AND	#00001
		BEQ	NUNOO_SUB0900

		LDA	#1000111010000011B	;行ったり来り＜ー止まる
		STA	ENMOD1,X		;
		LDY	#000			;ENBGYP 変更ロックフラグクリア
		STY	<ENWRK5,X		;

NUNOO_SUB0900	EQU	$

		RTS
;
NUNOO_SUB1	EQU	$
		TYX

		LDA	ENYSPD,X
		CLC
		ADC	#00020H
		CMP	#00040H
		BCS	NUNOO_SUB1300

		STZ	ENYSPD,X
		STZ	ENGPOW,X
		STZ	ENWRKC,X
		INC	<ENWRK2,X

		RTS

NUNOO_SUB1300	EQU	$
		LDA	ENYSPD,X
		CLC
		ADC	#00180H
		STA	R6

		LDA	ENWRKC,X	;元
		STA	R1		;

		LDA	#00040H		;先
		STA	R7		;

		M_CHIP	M_B_1P_MORPH

		LDX	<ENINDX
		LDA	R1
		SEC
		SBC	#00020H
		AND	#0001FEH
		STA	ENWRK8,X

		RTS
;
NUNOO_SUB2	EQU	$
		TYX

		LDA	ENWRKC,X
		CLC
		ADC	#00010H
		CMP	#00110H
		BEQ	NUNOO_SUB2300

		STA	ENWRKC,X
		STA	R6

		LDA	#00020H		;元
		STA	R1		;

		STZ	R7		;先

		M_CHIP	M_B_1P_MORPH

		LDX	<ENINDX
		LDA	R1
		STA	ENWRK8,X

		RTS

NUNOO_SUB2300	EQU	$
		LDA	#00200H
		STA	ENGMAX,X
		LDA	#00020H
		STA	ENGPOW,X

		LDA	ENCBFG,X		;地面に着いた ?
		AND	#00001			;
		BEQ	NUNOO_SUB2400		;  no: NUNOO_SUB2400

		LDY	ENMUKI,X
		LDA	!NUNOO_S0_XSPD,Y
		STA	ENXSPD,X
		LDA	#1000111010000011B	;行ったり来り＜ー止まる
		STA	ENMOD1,X		;
		LDY	#000			;ENBGYP 変更ロックフラグクリア
		STY	<ENWRK5,X		;
		STZ	<ENWRK2,X

		RTS

NUNOO_SUB2400	EQU	$
		LDA	EPWIDX,X
		CLC
		ADC	#00010H
		CMP	#00020H
		BCS	NUNOO_SUB2500

		LDA	EPWIDY,X
		BPL	NUNOO_SUB2500
		CMP	#0FFE8H
		BMI	NUNOO_SUB2500

		LDA	BABYNO			;プレイヤー赤ちゃん乗せてる ?
		BPL	NUNOO_SUB2500		;  no: NUNOO_SUB2500

		AND	#00FFFH
		ORA	#04000H
		STA	BABYNO

		LDA	#0003CH			;［Ｓ］
		JSL	>SOUND_3_ON

		LDA	#0FFFFH
		STA	ENTIM3+BABY_INDEX
		STA	NOSEIDX			;乗せフラグクリア

		LDA	#BABYM_RMODE40
		STA	<ENWRK2+BABY_INDEX
		LDA	#EMOVE
		STA	ENMODE+BABY_INDEX
		LDY	#0FFH
		STY	ENYUSN+BABY_INDEX
		STX	<ENWRK0+BABY_INDEX
		STA	ENWRKC+BABY_INDEX
		LDA	#1011001001100000B	;食えなくする
		STA	ENMOD0+BABY_INDEX
		LDA	#0110000001001111B	;ＢＧチェックあり
		STA	ENMOD1+BABY_INDEX

		INC	<ENWRK4,X		;赤ちゃんＧＥＴフラグセット

		LDA	#00020H			;ウェイトタイマーセット
		STA	ENTIM0,X		;
		STA	PLKEYFG			;プレイヤーキーロック

		INC	<ENWRK2,X

NUNOO_SUB2500	EQU	$

		RTS
;
NUNOO_S3_XPS	EQU	$
		WORD	00006H,0FFFAH
NUNOO_S3_XSPD	EQU	$
		WORD	0FF00H,00100H
;
NUNOO_SUB3	EQU	$
		TYX

		LDA	PLCMKI
		STA	ENMUKI,X

		LDA	ENTIM0,X		;ウェイト ?
		BNE	NUNOO_SUB3500		; yes: NUNOO_SUB3500

		STA	PLKEYFG			;プレイヤーキーロック解除
		LDA	#00080H
		STA	PLFLSH

		LDA	ENMUKI,X
		EOR	#00002
		STA	ENMUKI,X
		TAY
		LDA	!NUNOO_S3_XSPD,Y
		STA	ENXSPD,X
		LDA	#0FC00H
		STA	ENYSPD,X

		INC	<ENWRK2,X		;routine mode index dec.

NUNOO_SUB3500	EQU	$
		LDA	KEYC1L
		AND	#0CFF0H
		CMP	KEYWORK
		BEQ	NUNOO_SUB3600

		STA	KEYWORK

		LDA	ENTIM0,X
		SEC
		SBC	#00002
		BMI	NUNOO_SUB3600

		STA	ENTIM0,X

NUNOO_SUB3600	EQU	$
		LDY	PLCMKI
		LDA	PLXPSL			;ポジション補正
		CLC				;
		ADC	!NUNOO_S3_XPS,Y		;
		STA	ENXPSL,X		;
		LDA	PLYPSL			;
		CLC				;
		ADC	#00006			;
		STA	ENYPSL,X		;

		RTS
;
NUNOO_ANG_ADD	EQU	$
		WORD	00002H,0FFFEH
NUNOO_ANG_LIM	EQU	$
		WORD	00020H,001E0H
;
NUNOO_ANG_CALC	EQU	$
		LDA	ENSLOP,X		;坂 ?
		AND	#000FFH			;
		BEQ	NUNOO_A_CAL1000		;  no: NUNOO_A_CAL1000

		ASL	A
		LDY	ENMUKI,X
		BEQ	NUNOO_A_CAL0080

		EOR	#0FFFFH
		INC	A
		AND	#0001FEH

NUNOO_A_CAL0080 EQU	$
		STA	<EWORK0
		CMP	ENWRK8,X
		BEQ	NUNOO_A_CAL0400

		LDY	#000
		LDA	<EWORK0
		SEC
		SBC	ENWRK8,X
		PHP
		CLC
		ADC	#00100H
		CMP	#00200H
		BCS	NUNOO_A_CAL0100

		PLP
		BPL	NUNOO_A_CAL0300
		BRA	NUNOO_A_CAL0200

NUNOO_A_CAL0100 EQU	$
		PLP
		BMI	NUNOO_A_CAL0300

NUNOO_A_CAL0200 EQU	$
		INY
		INY

NUNOO_A_CAL0300 EQU	$
		LDA	ENWRK8,X
		CLC
		ADC	!NUNOO_ANG_ADD,Y
		AND	#001FEH
		STA	ENWRK8,X

NUNOO_A_CAL0400 EQU	$

		RTS

NUNOO_A_CAL1000 EQU	$
		LDA	ENTIM2,X		;角度ロック ?
		ORA	ENTIM3,X		;角度変更しない ?
		BNE	NUNOO_A_CAL1600		; yes: NUNOO_A_CAL1600

		LDA	#00002
		STA	ENTIM3,X

		LDY	<ENCONT,X
		LDA	ENWRK8,X
		CLC
		ADC	!NUNOO_ANG_ADD,Y
		AND	#001FEH
		BIT	#00100H
		BEQ	NUNOO_A_CAL1100

		ORA	#0FF00H

NUNOO_A_CAL1100 EQU	$
		CPY	#000
		BNE	NUNOO_A_CAL1200

		CMP	#00020H
		BMI	NUNOO_A_CAL1500
		BRA	NUNOO_A_CAL1300

NUNOO_A_CAL1200 EQU	$
		CMP	#0FFE0H
		BPL	NUNOO_A_CAL1500

NUNOO_A_CAL1300 EQU	$
		LDA	<ENCONT,X
		EOR	#00002
		STA	<ENCONT,X

		LDA	#00020H
		STA	ENTIM2,X

		LDA	!NUNOO_ANG_LIM,Y

NUNOO_A_CAL1500 EQU	$
		AND	#001FEH
		STA	ENWRK8,X

NUNOO_A_CAL1600 EQU	$

		RTS
;
;
NUNOO_NAKA_XPS	EQU	$
		WORD	0FFF8H,00008H
;
NAKAMI_SET	EQU	$
		LDA	EPXMUK,X		;左にプレイヤー ?
		AND	#000FFH			;
		STA	ENMUKI,X
		TAY
		LDA	!NUNOO_NAKA_XPS,Y
		STA	<EWORK4			;

		LDA	#HEIH0			;
		JSL	>ENINSR			;
		BCC	NAKAMI_SET0600		;fail: NAKAMI_SET0600

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

		LDA	ENYPSL,X		;中身Ｙ　ＰＯＳ．セット
		AND	#0FFF0H			;
		STA	ENYPSL,Y		;

		LDA	ENMUKI,X		;向きセット
		STA	ENMUKI,Y		;

		LDA	#00001H
		STA	ENSHOT,Y		;
		STA	ENWRKC,Y

NAKAMI_SET0600	EQU	$
		LDA	BERXPS
		STA	ENWRK6,X

		STZ	EATOFX		;

		LDA	#0FFFCH
		STA	EATOFY		;y offset lock

		LDA	#00001H		;char. pat. no. set
		STA	ENCHPT,X	;

		LDA	#00005
		STA	ENYUSN,X

		INC	<ENWRK0,X	;nakami set lock !!

		RTS
;
NUNOO_NAKA_XPS2 EQU	$
		WORD	0FFF8H,00008
;
NAKAMI_SET2	EQU	$
		JSL	>BABYM_SHABN_C3

		LDY	#004
		STY	ENYUSN+BABY_INDEX
		STZ	<ENWRK0+BABY_INDEX

		LDY	ENMUKI,X
		LDA	!NUNOO_NAKA_XPS2,Y
		STA	<EWORK0

		LDA	#DOROB
		JSL	>ENINSR
		BCC	NAKAMI_SET0600

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

		LDA	ENYPSL,X		;中身Ｙ　ＰＯＳ．セット
		AND	#0FFF0H			;
		CLC				;
		ADC	#00010H			;
		STA	ENYPSL,Y		;
		STA	<EWORK6			;

		JSL	>DOROB_SET

		JMP	NAKAMI_SET0600
;
BERO_XPS	EQU	$
		WORD	00008H,0FFF8H
BERO_XPS2	EQU	$
		WORD	00008H,0FFF8H
EAT_XPS		EQU	$
		WORD	0FFF8H,00008H
EAT_XPS_REV	EQU	$
		WORD	0FFE8H,00018H
;
SHITA_ADJUST	EQU	$
		LDA	PLCMKI			;キャラ向きセット
		AND	#00002H			;
		TAY				;
		STA	ENMUKI,X		;

		LDA	ENCHPT,X		;パターンチェンジ終わり ?
		CMP	#00003H			;
		BMI	SHITA_AD0000		;  no: SHITA_AD0000
		JMP	SHITA_AD0800

SHITA_AD0000	EQU	$
		LDA	BERXPS			;yossy bero x_pos. adjust
		BEQ	SHITA_AD0200		;
		CLC				;
		ADC	#00008H			;
		CMP	#00010H			;
		BCS	SHITA_AD0100		;
						;
		LDA	!BERO_XPS,Y		;
		STA	BERXPS			;

		BRA	SHITA_AD0200

SHITA_AD0100	EQU	$
		LDA	BERXPS			;bero offset x_pos. calc.
		SEC				;
		SBC	ENWRK6,X		;
		CLC				;
		ADC	EATOFX			;
		STA	EATOFX			;

SHITA_AD0200	EQU	$
		LDA	ENTIM1,X		;キャラパターンチェンジ?
		BNE	SHITA_AD0300		;  no: SHITA_AD0300

		LDA	#00002H
		STA	ENTIM1,X

		INC	ENCHPT,X		;char. pat. no. inc.
		LDA	ENCHPT,X		;キャラパターンチェンジ終わり ?
		CMP	#00003H			;
		BEQ	SHITA_AD0400		; yes: SHITA_AD0400

SHITA_AD0300	EQU	$
		JMP	SHITA_AD0A00		;  no: SHITA_AD0A00

SHITA_AD0400	EQU	$
		LDA	EATOFX
		CLC
		ADC	BERXPS
		PHA
		AND	#08000H
		STA	<EWORK6
		PLA
		CLC				;プレイヤーの近くに布がいった ?
		ADC	#00010H			;
		CMP	#00020H			;
		BCC	SHITA_AD0600		; yes: SHITA_AD0600

		LDA	BERXPS
		EOR	<EWORK6
		BMI	SHITA_AD1300
		BRA	SHITA_AD0A00

SHITA_AD0600	EQU	$
		INC	ENCHPT,X
		LDA	BERXPS			;プレイヤーの口と布が重なった ?
		EOR	<EWORK6			;
		BPL	SHITA_AD0A00		;  no: SHITA_AD0A00

		INC	ENCHPT,X
		BRA	SHITA_AD0A00

SHITA_AD0800	EQU	$
		LDA	BERXPS			;舌の先端がプレイヤーの近くにある ?
		BEQ	SHITA_AD0A00		;
						;
		CLC				;
		ADC	#00010H			;
		CMP	#00020H			;
		BCS	SHITA_AD0900		;  no: SHITA_AD0900

		LDA	!BERO_XPS,Y		;舌の位置固定
		STA	BERXPS			;

		LDA	EATOFX			;
		CLC				;
		ADC	!EAT_XPS,Y		;
		STA	EATOFX			;
		CLC
		ADC	!BERO_XPS2,Y
		BRA	SHITA_AD1000

SHITA_AD0900	EQU	$
		LDA	EATOFX
		CLC
		ADC	BERXPS

SHITA_AD1000	EQU	$
		PHA				;
		AND	#08000H			;
		STA	<EWORK6			;
		PLA				;
		CLC				;プレイヤーの口に近づいてきた ?
		ADC	#00010H			;
		CMP	#00020H			;
		BCS	SHITA_AD1200		;  no: SHITA_AD1200

		LDY	#004
		LDA	BERXPS
		EOR	<EWORK6
		BPL	SHITA_AD1100

		INY

SHITA_AD1100	EQU	$
		TYA
		STA	ENCHPT,X
		BRA	SHITA_AD0A00

SHITA_AD1200	EQU	$
		LDA	BERXPS
		EOR	<EWORK6
		BPL	SHITA_AD0A00

SHITA_AD1300	EQU	$
		PLA				; 直接ＲＴＬ

		RTL

SHITA_AD0A00	EQU	$
		LDA	BERXPS
		STA	ENWRK6,X

		RTS
;
;************************************************************************
;*		initial ( ルーレットリフト )				*
;************************************************************************
RLTLF_ANG_ADD	EQU	$
;ENMYNO =		[RLTLF] [RLTL2]
		WORD	00480H, 00240H
RLTLFIN		EQU	$			;-- rltlfin --
RLTL2IN		EQU	$			;-- rltl2in --
		JSL	>TROBJ_SR_4x4_CL

		LDA	ENMYNO,X
		SEC
		SBC	#RLTLF
		ASL	A
		TAY
		LDA	!RLTLF_ANG_ADD,Y	;回転角加算値の加算値セット
		STA	ENWRKA,X
		STZ	ENWRKC,X		;スピードのスカラー量クリア

		LDA	#00100H			;初期倍率セット
		STA	ENWRK6,X

		JSR	RLTLF_ROT_SET

		RTL
;
;************************************************************************
;*		move	( ルーレットリフト )				*
;************************************************************************
;		ENWRK0	プレイヤー一度でも乗ったかフラグ
;		ENWRK2	進行方向
;		ENWRK4	回転角加算値
;		ENWRK6	倍率
;		ENWRK8	回転角
;		ENWRKA	回転角加算値の加算値
;		ENWRKC	スピードのスカラー量
;
;		ENCONT	EPWIDX のセーブ
;
;		ENTIM0	フラッシング開始タイマー
;		ENTIM1	寿命タイマー
;		ENTIM2
;
RLTLFMV		EQU	$			;-- rltlfmv --
RLTL2MV		EQU	$			;-- rltl2mv --
		STZ	ENMUKI,X

		JSL	>TROBJ_OAM_4x4

		JSL	>RLTLF_MDCK

		JSR	RLTLF_DISPCK

		JSR	RLTLF_PLCHK

		JSR	RLTLF_SPD_SET

		JSR	RLTLF_BGCHK

		JSR	RLTLF_ROT_SET

		LDY	<ENWRK0,X		;消滅する ?
		BEQ	RLTLFMV3800		;  no: RLTLFMV3800

		LDA	ENTIM0,X		;フラッシングする?
		BNE	RLTLFMV3800		;  no: RLTLFMV3800

		LDA	ENTIM1,X		;消える ?
		BNE	RLTLFMV3600		;  no: RLTLFMV3600

		LDA	ENWRK6,X
		SEC
		SBC	#00020H
		STA	ENWRK6,X
		CMP	#00010H
		BPL	RLTLFMV3600

		CPX	PONLFFG
		BNE	RLTLFMV3500

		STZ	PONLFFG

RLTLFMV3500	EQU	$
		JMP	>ENCLEAR

RLTLFMV3600	EQU	$
		LDY	#0FFH
		LDA	FRCNT2
		AND	#00001
		BNE	RLTLFMV3700

		LDY	#005

RLTLFMV3700	EQU	$
		TYA
		STA	ENYUSN,X

RLTLFMV3800	EQU	$

		RTL
;
RLTLF_DISPCK	EQU	$
		JSL	>DISPCK0
		BCS	RLTLF_DISPCK800

		RTS
;
RLTLF_MDCK	EQU	$
		LDA	ENSTFG			;処理停止中 ?
		ORA	BIRIBIRI
		ORA	ITEMNO
		BNE	RLTLF_MDCK0140		; yes: RLTLF_MDCK0140

		LDY	ENSHOT,X		;ショットされてる ?
		BNE	RLTLF_MDCK0200		; yes: RLTLF_MDCK0200

		LDA	ENMODE,X
		CMP	#EMOVE
		BEQ	RLTLF_MDCK0180

RLTLF_MDCK0140	EQU	$
		PLY

RLTLF_DISPCK800 EQU	$
		PLA

RLTLF_MDCK0180	EQU	$
		RTL

RLTLF_MDCK0200	EQU	$
		LDA	#00040H
		STA	ENXPOW,X
		STZ	ENXMAX,X
		STZ	ENGMAX,X

		LDA	ENXSPD,X
		CLC
		ADC	#00040H
		CMP	#00080H
		BCS	RLTLF_MDCK0210

		STZ	ENXSPD,X
		STZ	ENXPOW,X

RLTLF_MDCK0210	EQU	$
		LDA	ENYSPD,X
		CLC
		ADC	#00040H
		CMP	#00080H
		BCS	RLTLF_MDCK0220

		STZ	ENYSPD,X
		STZ	ENGPOW,X

RLTLF_MDCK0220	EQU	$
		LDA	ENXSPD,X
		ORA	ENYSPD,X
		BEQ	RLTLF_RETURN

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

		LDA	ENMODE,Y		;あたった敵は動いてる ?
		CMP	#EMOVE			;
		BNE	RLTLF_MDCK0300		;  no: RLTLF_MDCK0300
;
		LDA	ENMOD0,Y		;あたった敵はショットした敵とあたる ?
		AND	#0000000000100000B	;
		BNE	RLTLF_MDCK0300		;  no: RLTLF_MDCK0300
;
;-------------- 敵を蹴散らす --------------------
		PHY
		TYX
		JSL	>ENDEATH_SET	;敵の死亡セット
		PLY
		LDA	#00
		STA	ENXPOW,Y
		LDA	#0FE00H
		STA	ENYSPD,Y
;
		LDX	<ENINDX
		LDA	#040H
		STA	ENGPOW,Y
;
		LDA	ENXSPD,X
		ASR16
		STA	ENXSPD,Y
;
		JSL	>FSMK0_SET

RLTLF_RETURN	EQU	$
		JSL	>TROBJ_CLEAR

		LDA	<ENWRK4,X
		PHA
		LDA	ENWRK6,X
		PHA
		LDA	ENWRK8,X
		PHA

		TXY			;(Y) <-- index
		LDA	ENMYNO,X	;(A) <-- enemy no.
		JSL	>ESTATST	;enemy status set

		PLA
		STA	ENWRK8,X
		PLA
		STA	ENWRK6,X
		PLA
		STA	<ENWRK4,X

		LDA	#ENRINT
		STA	<EWORK0
		LDA	#BANK ENRINT
		STA	<EWORK2

		JML	(EWORK0)
;
RLTLF_MDCK0300	EQU	$
		LDA	ENCBFG,X		;壁にあたった ?
		AND	#00001100B		;
		BEQ	RLTLF_MDCK0400		;  no: RLTLF_MDCK0400

		LDA	ENXSPD,X
		EOR	#0FFFFH
		INC	A
		STA	ENXSPD,X
		BRA	RLTLF_MDCK0700

RLTLF_MDCK0400	EQU	$
		LDA	ENCBFG,X		;頭、足がついてる ?
		AND	#000011B		;
		BEQ	RLTLF_MDCK0700		;  no: RLTLF_MDCK0700
;
		STZ	ENYSPD,X
		LDA	ENYPSL,X
		SEC
		SBC	ENMOVY,X
		STA	ENYPSL,X
;
		BRA	RLTLF_RETURN		;  no: RLTLF_RETURN
;
RLTLF_MDCK0700	EQU	$
		PLY
		PLA
		RTL
;
RLTLF_P_YCHK	EQU	$
;EPWIDX =		[0] [1] [2] [3] [4] [5] [6]
		HEX	000,000,000,001,001,001,003
;EPWIDX =		[7] [8] [9] [A] [B] [C]
		HEX	003,004,005,006,007,008
;
;＊＊＊＊＊＊＊＊＜　プレイヤーチェック　＞＊＊＊＊＊＊＊＊＊＊
RLTLF_PLCHK	EQU	$
		LDY	PLYSPD+1		;プレイヤー上昇中 ?
		BMI	RLTLF_PLCHK0100		; yes: RLTLF_PLCHK0100

		LDY	PLEATFG			;プレイヤー食われてる ?
		BEQ	RLTLF_PLCHK0200		;  no: RLTLF_PLCHK0200

RLTLF_PLCHK0100 EQU	$
		JMP	RLTLF_PLCHK0600

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

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

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

RLTLF_PLCHK0250 EQU	$
		LDA	EPWIDX,X
		SEC
		SBC	ENMOVX,X
		STA	EPWIDX,X

RLTLF_PLCHK0300 EQU	$
		LDA	EPWIDX,X
		CLC
		ADC	#0000CH
		CMP	#00018H
		BCS	RLTLF_PLCHK0100

		LDA	EPWIDX,X
		BPL	RLTLF_PLCHK0400

		EOR	#0FFFFH
		INC	A

RLTLF_PLCHK0400 EQU	$
		STA	<ENCONT,X
		TAY
		LDA	!RLTLF_P_YCHK,Y
		AND	#000FFH

		CPX	PONLFFG			;プレイヤー乗ってた ?
		BNE	RLTLF_PLCHK0480		;  no: RLTLF_PLCHK0480

		SEC
		SBC	#00028H-1
		SEC
		SBC	PLFTLN
		CLC
		ADC	ENYPSL,X
		BRA	RLTLF_PLCHK0530

RLTLF_PLCHK0480 EQU	$
		CLC
		ADC	EPWIDY,X
		SEC
		SBC	PLFTLN
		STA	<EWORK0
		CMP	#0001CH-1
		BPL	RLTLF_PLCHK0600
		CMP	#0001CH-8-1-1
		BMI	RLTLF_PLCHK0600

		LDY	PONLFFG			;プレイヤー誰にも乗ってない ?
		BEQ	RLTLF_PLCHK0490		; yes: RLTLF_PLCHK0490
		JMP	RLTLF_PLCHK0630		;  no: RLTLF_PLCHK0630

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

		LDA	ENMYNO,X
		CMP	#RLTL2
		BNE	RLTLF_PLCHK0500

		LDY	<ENWRK0,X		;一度でもプレイヤーが乗った ?
		BNE	RLTLF_PLCHK0500		; yes: RLTLF_PLCHK0500

;		LDA	#00040H*4-00060H	;フラッシング開始タイマーセット
		LDA	#00040H*4*2-00075H	;フラッシング開始タイマーセット
		STA	ENTIM0,X		;
;		LDA	#00040H*4		;寿命タイマー セット
		LDA	#00040H*4*2		;寿命タイマー セット
		STA	ENTIM1,X		;

		INC	<ENWRK0,X

RLTLF_PLCHK0500 EQU	$
		LDA	<EWORK0
		SEC
		SBC	#0001CH-1
		CLC
		ADC	PLYPSL
		CLC
		ADC	ENMOVY,X

RLTLF_PLCHK0530 EQU	$
		STA	PLYPSL
		INC	ONLFFG
		STZ	PLYSPD

		LDA	PLXPSL
		CLC
		ADC	ENMOVX,X
		STA	PLXPSL

		LDA	PLBGCR			;プレイヤーの頭があたってる ?
		BIT	#0000000000011000B	;
		BEQ	RLTLF_PLCHK0580		;  no: RLTLF_PLCHK0580
		AND	#0000000111100000B	;プレイヤー壁にめりこんでるだけ ?
		BNE	RLTLF_PLCHK0580		; yes: RLTLF_PLCHK0580

		LDA	ENCBFG,X
		ORA	#00002H
		STA	ENCBFG,X

RLTLF_PLCHK0580 EQU	$
		LDA	ENMYNO,X
		CMP	#RLTL3
		BEQ	RLTLF_PLCHK0700

		STZ	ENWRKA,X		;回転角加算値の加算値クリア

		LDA	#00100H
		STA	ENWRKC,X		;スピードのスカラー量クリア
		RTS

RLTLF_PLCHK0600 EQU	$
		CPX	PONLFFG
		BNE	RLTLF_PLCHK0630

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

RLTLF_PLCHK0630 EQU	$
		LDA	ENMYNO,X
		CMP	#RLTL3
		BEQ	RLTLF_PLCHK0700

		SEC
		SBC	#RLTLF
		ASL	A
		TAY
		LDA	!RLTLF_ANG_ADD,Y	;回転角加算値の加算値セット
		STA	ENWRKA,X
		STZ	ENWRKC,X		;スピードのスカラー量クリア

RLTLF_PLCHK0700 EQU	$

		RTS
;
;＊＊＊＊＊＊＊＊＜　回転角計算　＞＊＊＊＊＊＊＊＊＊＊
RLTLF_SPD_SET	EQU	$
		LDA	<ENWRK4,X
		CLC
		ADC	ENWRKA,X
		PHA
		AND	#0FE00H
		XBA
		EOR	#0FFFFH
		INC	A
		CLC
		ADC	ENWRK8,X
		AND	#001FEH
		STA	ENWRK8,X
		PLA
		AND	#001FFH
		STA	<ENWRK4,X
		STZ	ENXSPD,X
		STZ	ENYSPD,X

		LDA	<ENWRK2-1,X
		AND	#00100H
		CLC
		ADC	ENWRK8,X
		AND	#001FEH
		STA	R1
		LDA	ENWRKC,X
		STA	R6
		M_CHIP	M_ENMY_1P_ROT
		LDX	<ENINDX
		LDA	R1
		STA	ENXSPD,X
		LDA	R0
		EOR	#0FFFFH
		INC	A
		STA	ENYSPD,X

		RTS
;
;＊＊＊＊＊＊＊＊＜　ＢＧチェック　＞＊＊＊＊＊＊＊＊＊＊
RLTLF_BGCHK	EQU	$
		LDA	ENYSPD,X
		BEQ	RLTLF_BGCHK0100

		LDA	ENCBFG,X		;頭、足であたった ?
		AND	#00003			;
		BEQ	RLTLF_BGCHK0100		;  no: RLTLF_BGCHK0100

		DEC	A			;進行方向のＢＧに衝突した ?
		DEC	A			;
		EOR	ENYSPD,X		;
		BPL	RLTLF_BGCHK0100		;  no: RLTLF_BGCHK0100

		LDA	ENWRK8,X
		EOR	#0FFFFH
		INC	A
		SEC
		SBC	#00100H
		AND	#001FEH
		STA	ENWRK8,X

		LDA	ENYPSL,X
		SEC
		SBC	ENMOVY,X
		STA	ENYPSL,X

RLTLF_BGCHK0100 EQU	$
		LDA	ENXSPD,X
		BEQ	RLTLF_BGCHK0300

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

		SEC				;進行方向の壁に衝突した ?
		SBC	#00008			;
		EOR	ENXSPD,X		;
		BPL	RLTLF_BGCHK0300		;  no: RLTLF_BGCHK0300

		LDA	ENWRK8,X
		EOR	#0FFFFH
		INC	A
		AND	#001FEH
		STA	ENWRK8,X

		LDA	ENXPSL,X
		SEC
		SBC	ENMOVX,X
		STA	ENXPSL,X

RLTLF_BGCHK0300 EQU	$

		RTS
;
;
RLTL3_ROT_SET	EQU	$
;＊＊＊＊＊＊＊＊＜　ビットマップエリアセット　＞＊＊＊＊＊＊＊＊＊＊
		LDA	#00100H			;(R6) <- 倍率セット
		STA	R6			;

		LDA	#CIPCHD3+4000H+000	;(R12) <-- 転送元アドレスセット
		LDY	#BANK CIPCHD3+4000H+000 ;(R13) <-- 転送元バンクセット
		BRA	RLTLF_R_SET_SB
;
RLTLF_ROT_SET	EQU	$
;＊＊＊＊＊＊＊＊＜　ビットマップエリアセット　＞＊＊＊＊＊＊＊＊＊＊
		LDA	ENWRK6,X		;(R6) <- 倍率セット
		STA	R6			;

		LDA	#CIPCHD+2060H+001	;(R12) <-- 転送元アドレスセット
		LDY	#BANK CIPCHD+2060H+001	;(R13) <-- 転送元バンクセット

RLTLF_R_SET_SB	EQU	$
		STA	R12			;
		TYA
		STA	R13			;

		LDA	ENWRK8,X		;(R5) <- 回転角セット
		LSR	A			;
		STA	R5			;

		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
;
;************************************************************************
;*		initial ( ルーレットリフト )				*
;************************************************************************
RLTL3IN		EQU	$			;-- rltl3in --
		JSL	>TROBJ_SR_4x4_CL

		LDA	ENWRKC,X
		INC	A
		BEQ	RLTL3IN0500
		INC	A
		BEQ	RLTL3IN0400

RLTL3IN0300	EQU	$
		LDA	ENXSPD,X
		AND	#00010H
		BEQ	RLTL3IN0500

RLTL3IN0400	EQU	$
		LDA	#00020H
		STA	ENCLOR,X

RLTL3IN0500	EQU	$
		STZ	ENWRKC,X		;スピードのスカラー量

		LDA	ENWRK6,X		;回転の途中だった ?
		SEC				;
		SBC	ENWRK8,X		;
		BEQ	RLTL3IN0700		;  no: RLTL3IN0700

		AND	#000FFH			;今の回転角と、目標回転角が正反対
		BEQ	RLTL3IN0600		; yes: RLTL3IN0600

		LDY	#001
		STY	<ENWRK0,X
		BRA	RLTL3IN0700

RLTL3IN0600	EQU	$
		LDA	ENWRK6,X
		STA	ENWRK8,X

RLTL3IN0700	EQU	$
		LDA	#00340H
		STA	ENGMAX,X

		JSR	RLTL3_ROT_SET

		RTL
;
;************************************************************************
;*		move	( ルーレットリフト )				*
;************************************************************************
;		ENWRK0	ROUTINE MODE INDEX
;B		ENWRK2	進行方向
;B		ENWRK3	回転回数
;		ENWRK4	回転角加算値
;		ENWRK6	目標回転角
;		ENWRK8	回転角
;		ENWRKA	回転角加算値の加算値
;		ENWRKC	スピードのスカラー量
;
;		ENXMAX	スピードのスカラー量加算値
;		ENGMAX	スピードのスカラー量加算値の加減
;
;		ENCONT	EPWIDX のセーブ
;
;		ENTIM0	ショット敵チェックロックタイマー
;		ENTIM1
;		ENTIM2
;
RLTL3_SUB	EQU	$
		WORD	RLTL3_SUB0
		WORD	RLTL3_SUB1
;
RLTL3MV		EQU	$			;-- rltl3mv --
		STZ	ENMUKI,X

		JSL	>TROBJ_OAM_4x4

		LDA	ENMODE,X
		CMP	#EEATM
		BNE	RLTL3MV0500

		LDY	ENYUSN,X
		BPL	RLTL3MV0500

		LDA	#0FFFFH
		STA	ENWRKC,X

		LDA	ENWRK6,X
		AND	#00040H
		BEQ	RLTL3MV0500

		DEC	ENWRKC,X

RLTL3MV0500	EQU	$
		JSL	>RLTLF_MDCK

		JSR	RLTLF_DISPCK

		JSR	RLTLF_PLCHK

		JSR	RLTLF_SPD_SET

		JSR	RLTLF_BGCHK

		JSR	RLTL3_ENCHK

		TXY
		LDA	<ENWRK0,X
		ASL	A
		TAX
		JSR	(RLTL3_SUB,X)

		JSR	RLTL3_ROT_SET

		RTL
;
RLTL3_ENCHK0000 EQU	$

		RTS
;
RLTL3_ENCHK	EQU	$
		LDA	ENTIM0,X
		BNE	RLTL3_ENCHK0000

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

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

		STZ	ENWRKC,X		;スピードのスカラー量クリア

		PHY
		TYX
		JSL	>ENDEATH_SET_4
		PLY

		LDA	#00020H			;ショット敵チェックロックタイマーセット
		STA	ENTIM0,X		;

		LDA	ENXSPD,Y
		CMP	#08000H
		ROR	A
		CMP	#08000H
		ROR	A
		STA	R1
		LDA	ENYSPD,Y
		CMP	#08000H
		ROR	A
		CMP	#08000H
		ROR	A
		STA	R2
		M_CHIP	M_RAD_GET
		LDX	<ENINDX
		LDA	R0
		PHA

		LDA	ECROSX,X
		STA	R1
		LDA	ECROSY,X
		STA	R2
		M_CHIP	M_RAD_GET
		LDX	<ENINDX
		PLA
		SEC
		SBC	R0
		PHP
		CLC
		ADC	#00100H
		CMP	#00200H
		BCS	RLTL3_ENCHK0300

		PLP
		BPL	RLTL3_ENCHK0400
		BRA	RLTL3_ENCHK0500

RLTL3_ENCHK0300 EQU	$
		PLP
		BPL	RLTL3_ENCHK0500

RLTL3_ENCHK0400 EQU	$
		LDA	#0F000H
		BRA	RLTL3_ENCHK0600

RLTL3_ENCHK0500 EQU	$
		LDA	#01000H

RLTL3_ENCHK0600 EQU	$
		STA	ENWRKA,X

		PHP

		LDA	ENWRK8,X
		LDY	<ENWRK0,X
		BEQ	RLTL3_ENCHK0700

		LDA	ENWRK6,X

RLTL3_ENCHK0700 EQU	$
		PLP
		BPL	RLTL3_ENCHK0750

		CLC
		ADC	#00080H
		BRA	RLTL3_ENCHK0760

RLTL3_ENCHK0750 EQU	$
		SEC
		SBC	#00080H

RLTL3_ENCHK0760 EQU	$
		AND	#001FEH
		STA	ENWRK6,X

		INY				;回転回数セット
		INY				;
		STY	<ENWRK3,X		;

		LDY	#001
		STY	<ENWRK0,X

		RTS
;
RLTL3_SUB0	EQU	$
		TYX

		LDA	ENGMAX,X
		CLC
		ADC	ENXMAX,X
		PHA
		AND	#000FFH
		STA	ENXMAX,X
		PLA
		AND	#0FF00H
		BPL	RLTL3_SUB0100

		ORA	#000FFH

RLTL3_SUB0100	EQU	$
		XBA
		CLC
		ADC	ENWRKC,X
		STA	ENWRKC,X
		BPL	RLTL3_SUB0500

		LDA	<ENWRK2,X
		EOR	#00001H
		STA	<ENWRK2,X

		STZ	ENWRKC,X
		STZ	ENXMAX,X
		BRA	RLTL3_SUB0700

RLTL3_SUB0500	EQU	$
		CMP	#00100H
		BMI	RLTL3_SUB0800

		LDA	#00100H
		STA	ENWRKC,X
		STZ	ENXMAX,X

		CPX	PONLFFG
		BEQ	RLTL3_SUB0800

RLTL3_SUB0700	EQU	$
		LDA	ENGMAX,X
		EOR	#0FFFFH
		INC	A
		STA	ENGMAX,X

RLTL3_SUB0800	EQU	$

		RTS
;
RLTL3_SUB1	EQU	$
		TYX

		LDA	ENWRK8,X
		SEC
		SBC	ENWRK6,X
		CLC
		ADC	#00010H
		CMP	#00020H
		BCS	RLTL3_SUB1800

		LDY	<ENWRK3,X
		DEY
		STY	<ENWRK3,X
		BPL	RLTL3_SUB1800

		LDA	ENWRK6,X
		STA	ENWRK8,X

		STZ	ENWRKA,X		;回転角加算値の加算値クリア

		LDA	#00100H			;スピードのスカラー量セット
		STA	ENWRKC,X		;

		STZ	<ENWRK0,X		;ROUTINE MODE INDEX SET

RLTL3_SUB1800	EQU	$

		RTS
;
;************************************************************************
;*		initial ( pow switch )					*
;************************************************************************
POWSW_ZOOM_INIT EQU	$
		WORD	00100H,000A0H,00060H
;
POWSWIN		EQU	$			;-- powswin --
		LDY	POWSWCNT		;ＰＯＷスイッチ使い切った ?
		CPY	#006
		BNE	POWSWIN0100		;  no: POWSWIN0100

		JMP	>ENCLEAR

POWSWIN0100	EQU	$
		JSL	>TROBJ_SR_4x4_CL

		LDY	POWSWCNT
		LDA	!POWSW_ZOOM_INIT,Y	;初期倍率セット
		STA	ENWRK6,X		;

		STZ	ENMUKI,X		;向きロック

		JSR	POWSW_ROT_SET

		RTL
;
;************************************************************************
;*		move	( pow switch )					*
;************************************************************************
;		ENWRK2	ROUTINE MODE INDEX
;		ENWRK6	倍率
;
POWSW_SUB	EQU	$
		WORD	DUMMY_SUB		;まち
		WORD	POWSW_SUB1
		WORD	DUMMY_SUB
;
POWSWMV		EQU	$			;-- powswmv --
		JSL	>TROBJ_OAM_4x4

		JSL	>ENMDCK

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

		TROBJ_CHK_4
		BNE	POWSWMV0300

		JSR	POWSW_ROT_SET

POWSWMV0300	EQU	$
		LDA	#00E00H
		STA	R0			;(R0) <- 横チェック半径 * 100Hセット
;		LDA	#00E00H
		STA	R1			;(R1) <- 縦チェック半径 * 100Hセット

		LDA	#00010H			;内当たり幅セット
		STA	<EWORKA
		STZ	<EWORK2			;接触フラグクリア

		LDY	#002			;
		STY	<EWORK9			;EWORK9 <- 中心計算用フラグセット
		LDY	#000			;Yreg <- 半当たりチェックフラグセット
		STZ	<EWORK6			;ブロックフラグクリア ( "? BLOCK" ?? )
		STZ	R3			;(R3) <- 縦方向補正値セット

		LDA	#00100H			;(R6) <- 横倍率セット
		STA	R6			;
		LDA	ENWRK6,X		;Areg <- 縦倍率セット

		JSL	>ZOOM_PLCHK		;

		LDY	<EWORK4			;プレイヤーと接触した ?
		BNE	POWSWMV0500		; yes: POWSWMV0500

		LDY	<ENWRK2,X
		CPY	#002
		BNE	POWSWMV0400

		STZ	<ENWRK2,X

POWSWMV0400	EQU	$

		RTL

POWSWMV0500	EQU	$
		CPY	#004			;プレイヤー下から突いた ?
		BNE	POWSWMV0400		;  no: POWSWMV0400

		LDY	<ENWRK2,X		;突かれてもいい ?
		BNE	POWSWMV0400		;  no: POWSWMV0400

		LDA	#00020H			;地震タイマーセット
		STA	TILTCT			;

;		LDY	#(ENNO-1)*4
;
;POWSWMV0600	EQU	$
;		LDA	ENMOD1,Y		;ひっくり返る ?
;		AND	#0000100000000000B	;
;		BEQ	POWSWMV0700		;  no: POWSWMV0700
;
;		LDA	ENMODE,Y		;ひっくり返っていい ?
;		CMP	#EFAIL			;
;		BCC	POWSWMV0700		;  no: POWSWMV0700
;
;		LDA	#0000
;		STA	ENXSPD,Y
;		STA	ENXPOW,Y
;		STA	ENTIM0,Y
;		LDA	#0FD34H
;		STA	ENYSPD,Y
;		LDA	#00200H
;		STA	ENTIM3,Y
;		LDA	#EDOWN
;		STA	ENMODE,Y
;
;POWSWMV0700	EQU	$
;		DEY
;		DEY
;		DEY
;		DEY
;		BPL	POWSWMV0600

		JSL	>TO_COIN_CHANGE

		INC	<ENWRK2,X

		LDA	#0001FH			;［Ｓ］
		JSL	>SOUND_3_ON
;;;;;;;;		LDA	#00016H			;[Ｓ]
;;;;;;;;		STA	SOUND3

		INC	POWSWCNT		;ラスト ?
		INC	POWSWCNT		;
		LDY	POWSWCNT		;
		CPY	#006			;
		BNE	POWSWMV0800		;  no: POWSWMV0800

		LDA	#KUMOB
		JSL	>EXINSR

		LDA	ENXPSL,X
		STA	EXXPSL,Y
		LDA	ENYPSL,X
		SEC
		SBC	#00010H
		STA	EXYPSL,Y
		LDA	#0000BH
		STA	EXWRK0,Y		;counter set
		LDA	#00006H
		STA	EXTIM0,Y		;timer set

		JSL	>TROBJ_CLEAR

		JSL	>ENCLEAR

POWSWMV0800	EQU	$

		RTL
;
POWSW_ROT_SET	EQU	$
		LDA	ENWRK6,X		;(R0) <- Ｙ倍率セット
		STA	R11
		LDA	#00100H			;(R4) <- Ｘ倍率セット
		STA	R6			;

		LDA	#00010H			;(R8) <- 中心Ｘ　ＰＯＳ．
		STA	R8			;
;		LDA	#00000H			;(R9) <- 中心Ｙ　ＰＯＳ．
		STZ	R9			;

		LDA	#BANK CIPCHD2+60A0H+000 ;chara data bank set
		STA	R13

		LDA	#CIPCHD2+60A0H+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	C_32_ZOOM_XY

		LDX	<ENINDX

		INC	OBM7WF			;mode 7 OBJ chara DMA "ON"

		RTS
;
POWSW_SUB1	EQU	$
		TYX

		LDY	POWSWCNT
		LDA	ENWRK6,X
		CMP	!POWSW_ZOOM_INIT,Y	;
		BPL	POWSW_SUB1100

		INC	<ENWRK2,X

		LDA	!POWSW_ZOOM_INIT,Y	;
		BRA	POWSW_SUB1200

POWSW_SUB1100	EQU	$
		SEC
		SBC	#00010H

POWSW_SUB1200	EQU	$
		STA	ENWRK6,X

		RTS
;
;************************************************************************
;*		initial ( ぷくぷく )					*
;************************************************************************
PKPK2_I_XREV	EQU	$
		WORD	0FFC0H,00040H
PKPK2IN		EQU	$			;-- pkpk2in --
PKPK3IN		EQU	$			;-- pkpk3in --
;		 LDA	 #00100H		 ;水中での移動スピード１倍
;		 STA	 ENWTSP,X		 ;
		M8
		LDA	#0FFH
		STA	ENWTSP,X
		M16

		LDA	ENYPSL,X		;水面のＹ　ＰＯＳ．セット
		STA	ENWRKC,X

		LDA	ENXPSL,X
		PHA
		SEC
		SBC	ESCCH1
		STA	<EWORK0
		PLA
		AND	#00010H
		EOR	#00010H
		LSR	A
		LSR	A
		LSR	A
		STA	ENMUKI,X

		LDY	ENMYNO,X
		CPY	#PKPK2
		BEQ	PKPK2IN0800

		LDA	<EWORK0
		LDY	ENMUKI,X		;右向き ?
		BNE	PKPK2IN0500		;

		CMP	#00120H
		BMI	PKPK2IN0700
		BRA	PKPK2IN0600

PKPK2IN0500	EQU	$
		CMP	#0FFE0H
		BPL	PKPK2IN0700

PKPK2IN0600	EQU	$
		JSL	>TROBJ_SR_4x4_CL

		LDY	#003			;ジャンプ回数セット
		STY	<ENCONT,X		;

		JSR	PKPK2_SUB0200

		LDY	ENMUKI,X
		LDA	!PKPK2_S0_XSPD,Y
		STA	ENXSPD,X

		RTL

PKPK2IN0700	EQU	$
		JMP	>ENCLEAR

PKPK2IN0800	EQU	$
		TAY
		LDA	ENXPSL,X		;往復の中心Ｘ　ＰＯＳ．セット
		CLC				;
		ADC	!PKPK2_I_XREV,Y		;
		STA	ENWRKA,X		;

		JSR	PKPK2_ROT_SET

		RTL
;
;************************************************************************
;*		move	( ぷくぷく )					*
;************************************************************************
;		ENWRK0	キャラパターンフラグ
;		ENWRK2	ROUTINE MODE INDEX
;		ENWRK4	向きセーブ
;		ENWRK8	回転角
;		ENWRKA	往復の中心Ｘ　ＰＯＳ．
;		ENWRKC	水面のＹ　ＰＯＳ．
;
;		ENCONT	ジャンプ回数
;
PKPK2_SUB	EQU	$
		WORD	PKPK2_SUB0		;のーまる左右
		WORD	PKPK2_SUB1		;たーん
		WORD	PKPK2_SUB2		;じゃんぷ
		WORD	DUMMY_SUB		;消滅
;
PKPK2MV		EQU	$			;-- pkpk2mv --
PKPK3MV		EQU	$			;-- pkpk3mv --
		JSR	PKPK2_OAM_SET

		JSL	>PKPK2_FALL

		JSL	>ENMDCK

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

		JSR	PKPK2_ROT_SET

		JSL	>EPCRCK

		RTL
;
PKPK2_FALL_CHPT EQU	$
		HEX	003,004,005,004
;
PKPK2_OAM_SET	EQU	$
		LDA	ENTROB,X
		BMI	PKPK2_O_SET0800
		LDA	ENOAML,X
		BMI	PKPK2_O_SET0800
		LDY	ENYUSN,X
		BMI	PKPK2_O_SET0800

		JSL	>TROBJ_OAM_4x4

		I16
		LDY	ENOAML,X
		LDA	SOAM_DX+0+8*0,Y
		STA	SOAM_DX+0+8*4,Y
		LDA	SOAM_DX+2+8*0,Y
		STA	SOAM_DX+2+8*4,Y
		LDA	SOAM_DX+4+8*0,Y
		STA	SOAM_DX+4+8*4,Y
		I8

PKPK2_O_SET0800 EQU	$

		RTS
;
PKPK2_FALL	EQU	$
		LDA	ENMODE,X		;プレイヤーに踏まれた ?
		CMP	#EFALL			;
		BNE	PKPK2_FALL0800		;  no: PKPK2_FALL0800

		CPX	PONLFFG			;プレイヤー乗ってた ?
		BNE	PKPK2_FALL0300		;  no: PKPK2_FALL0300

		STZ	PONLFFG

PKPK2_FALL0300	EQU	$
		LDA	ENTROB,X
		BMI	PKPK2_FALL0500

		JSL	>TROBJ_CLEAR

PKPK2_FALL0500	EQU	$
		LDA	#00004
		STA	ENCHPT,X
		LDA	ENCLOR,X
		ORA	#00080H
		STA	ENCLOR,X

;		CMP	<ENWRK0,X
;		BNE	PKPK2_FALL0100
;		CMP	<ENWRK2,X
;		BEQ	PKPK2_FALL0300
;
;PKPK2_FALL0100 EQU	$
;		STA	<ENWRK0,X
;		STA	<ENWRK2,X
;
;		LDA	#0003FH			;水中スピード１／４
;		STA	ENWTSP,X		;
;		LDA	#1000000000000001B	;ＢＧチェックする
;		STA	ENMOD1,X		;
;
;		LDA	ENYPSL,X		;水中 ?
;		CMP	ENWRKC,X		;
;		BPL	PKPK2_FALL0300		; yes: PKPK2_FALL0300
;
;		STZ	<ENWRK4,X		;しぶき出現ロックフラグクリア
;
;PKPK2_FALL0300 EQU	$
;		LDY	<ENWRK4,X		;しぶきを出す ?
;		BNE	PKPK2_FALL0400		;  no: PKPK2_FALL0400
;
;		LDA	ENYPSL,X		;水中 ?
;		CMP	ENWRKC,X		;
;		BMI	PKPK2_FALL0400		;  no: PKPK2_FALL0400
;
;		JSR	PKPK2_SHIBUKI
;		INC	<ENWRK4,X		;しぶき出現ロックフラグセット
;
;PKPK2_FALL0400 EQU	$
;		LDA	ENTROB,X
;		BMI	PKPK2_FALL0500
;
;		JSL	>TROBJ_CLEAR
;
;PKPK2_FALL0500 EQU	$
;		LDA	ENTIM1,X
;		BNE	PKPK2_FALL0700
;
;		LDA	#00004H
;		STA	ENTIM1,X
;
;		LDY	<ENWRK0,X
;		INY
;		CPY	#004
;		BMI	PKPK2_FALL0600
;
;		LDY	#000
;
;PKPK2_FALL0600 EQU	$
;		STY	<ENWRK0,X
;		LDA	!PKPK2_FALL_CHPT,Y
;		AND	#000FFH
;		STA	ENCHPT,X
;
;PKPK2_FALL0700 EQU	$
;		PLA
;		PLY
;
PKPK2_FALL0800	EQU	$

		RTL
;
PKPK2_ROT_SET	EQU	$
		LDA	ENTROB,X
		BMI	PKPK2_R_SET0800

;＊＊＊＊＊＊＊＊＜　ビットマップエリアセット　＞＊＊＊＊＊＊＊＊＊＊
		LDA	ENXSPD,X		;回転角計算
		CMP	#08000H
		ROR	A
		CMP	#08000H
		ROR	A
		STA	R1

		LDA	ENYSPD,X
		CMP	#08000H
		ROR	A
		CMP	#08000H
		ROR	A
		STA	R2

		M_CHIP	M_RAD_GET		;

		LDX	<ENINDX
		LDA	R1			;
		SEC				;
		SBC	#00040H			;
		CMP	#00080H			;
		BCS	PKPK2_R_SET0500		;
						;
		LDA	#00080H			;
		SEC				;
		SBC	R1			;
		BRA	PKPK2_R_SET0600		;
						;
PKPK2_R_SET0500 EQU	$			;
		LDA	R1			;
						;
PKPK2_R_SET0600 EQU	$			;
		AND	#000FFH			;(R5) <- 回転角セット
		STA	R5			;

		LDA	#CIPCHD3+4020H+000	;(R12) <-- 転送元アドレスセット
		STA	R12			;
		LDA	#BANK CIPCHD3+4020H+000 ;(R13) <-- 転送元バンクセット
		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_32_ROTZOM

		LDX	<ENINDX

		INC	OBM7WF		;mode 7 OBJ chara DMA "ON"

PKPK2_R_SET0800 EQU	$

		RTS
;
PKPK2_S0_SEQ	EQU	$
		HEX	01,00,0E,00
PKPK2_S0_TIM1	EQU	$
		HEX	0A,08,0A,08
PKPK2_S0_TURN	EQU	$
		WORD	0000EH,00001H
PKPK2_S0_XSPD	EQU	$
		WORD	0FEF8H,00108H
;
PKPK2_SUB0	EQU	$
		TYX

		LDA	ENXPSL,X		;ターンする ?
		SEC				;
		SBC	ENWRKA,X		;
		CLC				;
		ADC	#00040H			;
		CMP	#00080H			;
		BCS	PKPK2_SUB0300		; yes PKPK2_SUB0300

		SEC				;ジャンプする ?
		SBC	#00020H			;
		CMP	#00040H			;
		BCS	PKPK2_SUB0500		;  no: PKPK2_SUB0500

		JSL	>TROBJ_SR_4x4		;回転エリア確保できた ?
		BCC	PKPK2_SUB0300		;  no: PKPK2_SUB0300

		INC	<ENCONT,X		;ジャンプ回数セット

PKPK2_SUB0200	EQU	$
		JSR	PKPK2_SHIBUKI

		LDA	#0FA80H
		STA	ENYSPD,X

		LDA	#0002EH
		STA	ENGPOW,X

		LDA	#00011H
		STA	ENCHPT,X

		LDY	#002
		STY	<ENWRK2,X

		RTS

PKPK2_SUB0300	EQU	$
		STA	<EWORK0
		LDA	ENMUKI,X
		DEC	A
		EOR	<EWORK0
		BMI	PKPK2_SUB0500

		LDY	ENMUKI,X		;向きセーブ
		STY	<ENWRK4,X		;
		LDA	!PKPK2_S0_TURN,Y
		STA	ENCHPT,X
		LDA	#00008
		STA	ENTIM1,X

		STZ	ENXSPD,X
		STZ	<ENWRK0,X		;キャラパターンフラグクリア

		INC	<ENWRK2,X

		RTS

PKPK2_SUB0500	EQU	$
		LDY	ENMUKI,X
		LDA	!PKPK2_S0_XSPD,Y
		STA	ENXSPD,X

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

		LDA	<ENWRK0,X
		INC	A
		AND	#00003
		STA	<ENWRK0,X
		TAY
		LDA	!PKPK2_S0_SEQ,Y
		AND	#000FFH
		STA	ENCHPT,X
		LDA	!PKPK2_S0_TIM1,Y
		AND	#000FFH
		STA	ENTIM1,X

PKPK2_SUB0800	EQU	$

		RTS
;
PKPK2_S1_R_SEQ	EQU	$-1
		HEX	0F,01
PKPK2_S1_L_SEQ	EQU	$-1
		HEX	10,0E
;
PKPK2_SUB1	EQU	$
		TYX

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

		LDA	#00008H
		STA	ENTIM1,X

		INC	<ENWRK0,X
		LDA	<ENWRK0,X
		CMP	#00003
		BNE	PKPK2_SUB1100

		DEC	<ENWRK2,X

		RTS

PKPK2_SUB1100	EQU	$
		LDY	<ENWRK4,X		;右移動反転 ?
		BNE	PKPK2_SUB1500		; yes: PKPK2_SUB1500

		CMP	#00002
		PHP
		LDA	<ENWRK0,X
		CLC
		ADC	#00002
		TAY
		BRA	PKPK2_SUB1700

PKPK2_SUB1500	EQU	$
		CMP	#00001
		PHP
		LDY	<ENWRK0,X

PKPK2_SUB1700	EQU	$
		LDA	!PKPK2_S1_R_SEQ,Y
		AND	#000FFH
		STA	ENCHPT,X

		PLP
		BNE	PKPK2_SUB1800

		LDA	ENMUKI,X
		EOR	#00002
		STA	ENMUKI,X

PKPK2_SUB1800	EQU	$

		RTS
;
PKPK2_SUB2	EQU	$
		TYX

		LDA	ENWRKC,X		;水面に着いた ?
		CMP	ENYPSL,X		;
		BPL	PKPK2_SUB2800		;  no: PKPK2_SUB2800

		JSR	PKPK2_SHIBUKI

		DEC	<ENCONT,X		;ジャンプ終わり ?
		BNE	PKPK2_SUB2500		;  no: PKPK2_SUB2500

		LDY	ENMYNO,X
		CPY	#PKPK2
		BEQ	PKPK2_SUB2300

		INC	<ENWRK2,X

		RTS

PKPK2_SUB2300	EQU	$
		JSL	>TROBJ_CLEAR

		STZ	ENYSPD,X
		STZ	ENGPOW,X
		STZ	ENCHPT,X

		STZ	<ENWRK2,X

		RTS

PKPK2_SUB2500	EQU	$
		LDA	#0FA80H
		STA	ENYSPD,X

PKPK2_SUB2800	EQU	$

		RTS
;
PKPK2_SHIBUKI	EQU	$
		LDA	#PKSB1
		JSL	>EXINSR

		LDA	ENXPSL,X
		STA	EXXPSL,Y
		LDA	ENYPSL,X
		STA	EXYPSL,Y
		LDA	#00006
		STA	EXCHPT,Y
		LDA	#00002
		STA	EXTIM0,Y

		LDA	#00003			;［Ｓ］
		JSL	>SOUND_3_ON
;;;;;;;;		LDA	#0000EH			;［Ｓ］
;;;;;;;;		STA	SOUND0

		RTS
;
;************************************************************************
;*		initial ( ころがりくん )				*
;************************************************************************
KOROGIN		EQU	$			;-- korogin --
		RTL
;
;************************************************************************
;*		move	( ころがりくん )				*
;************************************************************************
;		ENWRK0
;		ENWRK2	ROUTINE MODE INDEX
;		ENWRK4	まるまりフラグ 0...NORMAL 2...TAMA
;		ENWRK6	衝突チェックフラグ
;		ENWRK8	キャラチェンジカウンター
;		ENWRKA	倒した敵の数
;		ENWRKC	Y SPEED
;
;		ENTIM0	ムーブロックタイマー
;		ENTIM1	キャラパターンチェンジタイマー
;		ENTIM2	プレイヤーチェックロックタイマー
;		ENTIM3	プレイヤーダメージロックタイマー
;
KOROG_SUB	EQU	$
		WORD	KOROG_SUB0		;まったれや
		WORD	KOROG_SUB1		;じゃんぷじゃん
		WORD	KOROG_SUB2		;たま
;
KOROGMV		EQU	$			;-- korogmv --
		JSL	>ENMDCK

		LDA	ENXSPD,X		;止まりかけてる ?
		CLC				;
		ADC	#00008H			;
		CMP	#00010H			;
		BCS	KOROGMV0100		;  no: KOROGMV0100

		STZ	ENXSPD,X

KOROGMV0100	EQU	$
		TXY
		LDA	<ENWRK2,X
		ASL	A
		TAX
		JSR	(KOROG_SUB,X)

		LDA	#00040H
		STA	ENGPOW,X

		LDY	<ENWRK2,X		;ジャンプしてる ?
		DEY				;
		BNE	KOROGMV0300		;  no: KOROGMV0300

		LDY	ENCHPT,X		;たまになっていない ?
		CPY	#002			;
		BPL	KOROGMV0300		;  no: KOROGMV0300

		LDA	ENYSPD,X		;ジャンプの頂上付近 ?
		CLC				;
		ADC	#000A0H			;
		CMP	#00140H			;
		BCS	KOROGMV0300		;  no: KOROGMV0300

		LDA	#00008H
		STA	ENGPOW,X

KOROGMV0300	EQU	$
		LDY	ENCHPT,X		;たまになった ?
		CPY	#002			;
		BMI	KOROGMV0700		;  no: KOROGMV0700

		JSR	KOROG_PLCHK
		JSR	KOROG_ENCHK
		RTL

KOROGMV0700	EQU	$
		STZ	<ENWRK0,X

		LDY	ECRSFG,X		;敵と衝突した ?
		DEY				;
		BMI	KOROGMV0A00		;  no: KOROGMV0A00

		LDA	ENMODE,Y
		CMP	#EMOVE
		BNE	KOROGMV0B00
		LDA	ENSHOT,Y		;
		BEQ	KOROGMV0B00		;

		LDA	ENXSPD,Y
		CMP	#00300H
		BMI	KOROGMV0810

		LDA	#00300H

KOROGMV0810	EQU	$
		CMP	#0FD00H
		BPL	KOROGMV0820

		LDA	#0FD00H

KOROGMV0820	EQU	$
		STA	ENXSPD,X
		LDA	#00002
		STA	ENCHPT,X
		STA	<ENWRK2,X

		LDA	ENMYNO,Y		;
		CMP	#EGG00			;タマゴと衝突した ?
		BMI	KOROGMV0900		;  no: KOROGMV0900
		CMP	#EGG09+1		;
		BPL	KOROGMV0900		;

		TYX
		JMP	>SHOT_EN_KILL

KOROGMV0900	EQU	$
		CMP	#KORA0			;亀類と衝突した ?
		BCC	KOROGMV0B00		;  no: KOROGMV0B00
		CMP	#PTPT2+1		;
		BCS	KOROGMV0B00		;  no: KOROGMV0B00

		JSR	KOROG_KAME_KILL

		RTL

KOROGMV0A00	EQU	$
		LDY	ECRSFG,X		;プレイヤーと衝突した ?
		BPL	KOROGMV0B00		;  no: KOROGMV0B00

		LDA	#00062H			;［Ｓ］
		STA	<ENWRK0,X
		JSL	>SOUND_3_ON

		LDA	#00010H			;プレイヤーチェックロックタイマーセット
		STA	ENTIM2,X
		LDA	#00002
		STA	ENCHPT,X
		STA	<ENWRK2,X

KOROGMV0B00	EQU	$
		JSL	>EPCRCK

		RTL
;
KOROG_SUB0	EQU	$
		TYX

		LDY	EPXMUK,X
		TYA
		STA	ENMUKI,X

		STZ	ENCHPT,X		;キャラパターンチェンジロック

		LDA	ENTIM0,X		;まってる ?
		BNE	KOROG_SUB0800		; yes: KOROG_SUB0800

		STZ	<ENWRK4,X		;まるまりフラグクリア

		LDA	EPWIDX,X		;プレイヤーそばにいる ?
		CLC				;
		ADC	#00060H			;
		CMP	#000C0H			;
		BCS	KOROG_SUB0100		;
						;
		LDA	EPWIDY,X		;
		CLC				;
		ADC	#00040H			;
		CMP	#00080H			;
		BCS	KOROG_SUB0100		;  no: KOROG_SUB0100

		LDA	#00002
		STA	ENCHPT,X
		STA	<ENWRK4,X		;まるまりフラグセット

KOROG_SUB0100	EQU	$
		LDA	#0FC00H			;Ｙ　ＳＰＥＥＤセット
		STA	ENYSPD,X		;
		INC	<ENWRK2,X		;routine mode index set

KOROG_SUB0800	EQU	$

		RTS
;
KOROG_LKTIM	EQU	$
		WORD	00010H,00060H
;
KOROG_SUB1	EQU	$
		TYX

		LDA	ENCBFG,X		;地面に着いた ?
		AND	#00001			;
		BEQ	KOROG_SUB1000		;  no: KOROG_SUB1000

		LDY	<ENWRK4,X
		STY	<ENWRK2,X		;routine mode index set
		LDA	!KOROG_LKTIM,Y		;ムーブロックタイマーセット
		STA	ENTIM0,X		;

		RTS

KOROG_SUB1000	EQU	$
		LDY	<ENWRK4,X		;たまになってる ?
		BNE	KOROG_SUB1800		; yes: KOROG_SUB1800

		LDA	ENYSPD,X		;じたばたする ?
		CLC				;
		ADC	#000A0H			;
		CMP	#00140H			;
		BCS	KOROG_SUB1500		;  no: KOROG_SUB1500

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

		LDA	#00004			;キャラパターンチェンジタイマーセット
		STA	ENTIM1,X		;

		LDA	ENCHPT,X		;じたばたキャラパターンチェンジ
		EOR	#00001			;
		STA	ENCHPT,X		;

KOROG_SUB1300	EQU	$
		LDA	ENYSPD,X
		STA	ENWRKC,X

		RTS

KOROG_SUB1500	EQU	$
		LDA	#00001
		STA	ENCHPT,X

KOROG_SUB1800	EQU	$

		RTS
;
KOROG_SUB2	EQU	$
		TYX

		JSR	KOROG_KATA

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

		LDA	ENWRKC,X		;バウンドする ?
		BMI	KOROG_SUB2100		;
		LSR	A			;
		CMP	#00100H			;
		BMI	KOROG_SUB2100		;  no: KOROG_SUB2100

		EOR	#0FFFFH
		INC	A
		STA	ENYSPD,X

		RTS

KOROG_SUB2100	EQU	$
		LDA	ENXMAX,X		;平地で止まった ?
		ORA	ENTIM0,X		;
		ORA	ENXSPD,X		;
		BNE	KOROG_SUB2300		;  no: KOROG_SUB2300

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

		LDA	#00010H			;ストップタイマーセット
		STA	ENTIM0,X		;
		STZ	<ENWRK2,X		;routine mode index set

		RTS

KOROG_SUB2300	EQU	$
		LDA	ENXSPD,X		;キャラパターンチェンジ ?
		BPL	KOROG_SUB2400		;
						;
		EOR	#0FFFFH			;
		INC	A			;
						;
KOROG_SUB2400	EQU	$			;
		CLC				;
		ADC	ENWRK8,X		;
		CMP	#00400H			;
		BCC	KOROG_SUB2500		;  no: KOROG_SUB2500

		SEC
		SBC	#00400H
		PHA
		LDA	ENCHPT,X		;キャラパターンチェンジ
		EOR	#00001			;
		STA	ENCHPT,X		;
		PLA

KOROG_SUB2500	EQU	$
		STA	ENWRK8,X

		LDA	ENYSPD,X		;Ｙ　ＳＰＥＥＤ保存
		STA	ENWRKC,X		;

		RTS
;
KOROG_PL_XSPD	EQU	$
		WORD	00180H,0FE80H
;
KOROG_PLCHK	EQU	$
		LDA	ENTIM2,X		;プレイヤーチェックロック ?
		BNE	KOROG_PLCHK0080		; yes: KOROG_PLCHK0080

		LDY	ECRSFG,X		;プレイヤーと衝突した ?
		BMI	KOROG_PLCHK0100		; yes: KOROG_PLCHK0100

KOROG_PLCHK0080 EQU	$
		STZ	<ENWRK0,X
		RTS

KOROG_PLCHK0100 EQU	$
		LDY	<ENWRK0,X		;すでにサウンドが立ってる ?
		BNE	KOROG_PLCHK0200		; yes: KOROG_PLCHK0200

		LDA	#00062H			;［Ｓ］
		STA	<ENWRK0,X
		JSL	>SOUND_3_ON

KOROG_PLCHK0200 EQU	$
		LDA	KEYC1L+1		;プレイヤーのキー入力があった ?
		AND	#00003			;
		BEQ	KOROG_PLCHK0300		;  no: KOROG_PLCHK0300

		AND	#00002			;プレイヤー、たまに向かう方向にキーをいれてる ?
		DEC	A			;
		EOR	EPWIDX,X		;
		BMI	KOROG_PLCHK0500		; yes: KOROG_PLCHK0500
;
;プレイヤーを弾く
KOROG_PLCHK0300 EQU	$
		LDA	ENXSPD,X		;止まってる ?
		BEQ	KOROG_PLCHK0480		; yes: KOROG_PLCHK0480

		CMP	#08000H
		ROR	A
		STA	ENXSPD,X
		STA	R0
		LDA	#00300H
		STA	R6
		M_CHIP	MULTIPLY
		LDX	<ENINDX
		LDA	R0
		EOR	PLXSPD			;プレイヤーと同じ方向に動いてる ?
		BMI	KOROG_PLCHK0400		;  no: KOROG_PLCHK0400

		LDA	R0			;プレイヤーの方が速い ?
		SEC				;
		SBC	PLXSPD			;
		EOR	PLXSPD			;
		BMI	KOROG_PLCHK0480		; yes: KOROG_PLCHK0480

		LDA	EPWIDX,X		;プレイヤー離れていこうとしてる ?
		EOR	PLXSPD			;
		BPL	KOROG_PLCHK0480		; yes: KOROG_PLCHK0480
		BRA	KOROG_PLCHK0430		;

KOROG_PLCHK0400 EQU	$
		LDA	EPWIDX,X		;プレイヤー離れていこうとしてる ?
		EOR	PLXSPD			;
		BPL	KOROG_PLCHK0480		; yes: KOROG_PLCHK0480

KOROG_PLCHK0430 EQU	$
		LDA	R0
		STA	PLXSPD
		STA	PLMVSP

KOROG_PLCHK0480 EQU	$
		LDA	EPWIDX,X
		BPL	KOROG_PLCHK0490

		CLC
		ADC	PWIDEX
		CLC
		ADC	EWIDEX,X
		BRA	KOROG_PLCHK04A0

KOROG_PLCHK0490 EQU	$
		SEC
		SBC	PWIDEX
		SEC
		SBC	EWIDEX,X

KOROG_PLCHK04A0 EQU	$
		STA	<EWORK6
		JSL	>YUKID_PL_SLIP

		LDA	PLNAGE			;プレイヤー投げポーズ ?
		ORA	BERFLG			;プレイヤーお食事ポーズ ?
		BNE	KOROG_PLCHK04B0		; yes: KOROG_PLCHK04B0

		LDY	EPXMUK,X
		TYA
		STA	PLCMKI

KOROG_PLCHK04B0 EQU	$

		RTS
;
;プレイヤーに蹴られる
KOROG_PLCHK0500 EQU	$
		LDA	ENXSPD,X		;プレイヤーと反対方向に向かってる ?
		EOR	PLXSPD			;
		BPL	KOROG_PLCHK0600		;  no: KOROG_PLCHK0600

		LDA	ENXSPD,X		;プレイヤーとくっつく
		CLC				;
		ADC	PLXSPD			;
		CMP	#08000H			;
		ROR	A			;
		STA	ENXSPD,X		;
		STA	PLXSPD			;
		STA	PLMVSP			;

		RTS

KOROG_PLCHK0600 EQU	$
		LDY	EPXMUK,X
		LDA	PLXSPD
		CLC
		ADC	!KOROG_PL_XSPD,Y
		STA	ENXSPD,X
		LDA	PLXSPD
		STA	R0
		LDA	#000C0H
		STA	R6
		M_CHIP	MULTIPLY
		LDX	<ENINDX
		LDA	R0
		STA	PLXSPD
		STA	PLMVSP

KOROG_ENCHK0000 EQU	$

		RTS
;
KOROG_S2_XSPD0	EQU	$
		WORD	00080H,0FF80H
KOROG_S2_XSPD	EQU	$
		WORD	0FD00H,00300H
KOROG_SOUND	EQU	$-1
		HEX	0C,0D,0E,0F,10,11,12
;
KOROG_ENCHK	EQU	$
		TXA
		STA	R1
		M_CHIP	MY_ENCROS2

KOROG_ENCHK0100 EQU	$
		LDX	<ENINDX
		LDY	R14
		BMI	KOROG_ENCHK0000
		BEQ	KOROG_ENCHK0000

		LDA	ENMODE,Y		;あたった敵は動いてる ?
		CMP	#EMOVE			;
		BNE	KOROG_ENCHK0190		;  no: KOROG_ENCHK0190
;
		LDA	ENMOD1,Y		;敵 ?
		AND	#0110000000000000B	;
		BEQ	KOROG_ENCHK0180		; yes: KOROG_ENCHK0180

		LDA	ENMYNO,Y		;ズームフラワー ?
		CMP	#ZFLWR			;
		BEQ	KOROG_ENCHK0150		; yes: KOROG_ENCHK0150
		CMP	#ZFLW2			;
		BEQ	KOROG_ENCHK0150		; yes: KOROG_ENCHK0150

		CMP	#EGG00			;タマゴと衝突した ?
		BMI	KOROG_ENCHK0190		;  no: KOROG_ENCHK0190
		CMP	#EGG09+1		;
		BPL	KOROG_ENCHK0190		;

		LDA	ENWRK4,Y		;オプションタマゴ ?
		BNE	KOROG_ENCHK0190		; yes: KOROG_ENCHK0190

		TYX
		JSL	>SHOT_EN_KILL
		JMP	KOROG_DEAD

KOROG_ENCHK0150 EQU	$
		LDA	ENWRK2,Y		;ズームフラワー満開 ?
		CMP	#002			;
		BNE	KOROG_ENCHK0190		;  no: KOROG_ENCHK0190

		INC	ENSHOT,X		;ズームフラワーの方でチェックさせる
		LDA	#0000011000100000B	;
		STA	ENMOD0,X		;
		BRA	KOROG_ENCHK0000		;

KOROG_ENCHK0180 EQU	$
		LDA	ENMYNO,Y		;同じころがりくん ?
		CMP	#KOROG			;
		BNE	KOROG_ENCHK0300		;  no: KOROG_ENCHK0300

		LDA	ENWRK6,X		;すでに衝突処理はしてる ?
		BEQ	KOROG_ENCHK0200		;  no: KOROG_ENCHK0200

		STZ	ENWRK6,X		;衝突チェックフラグクリア

KOROG_ENCHK0190 EQU	$
		BRA	KOROG_ENCHK0800

KOROG_ENCHK0200 EQU	$
		JSR	KOROG_KOROG_CRS
		BRA	KOROG_ENCHK0800

KOROG_ENCHK0300 EQU	$
		PHA
		LDA	ENWRKA,X		;倒した敵の数カウント
		INC	A			;
		CMP	#00008+1		;
		BPL	KOROG_ENCHK0310		;
						;
		STA	ENWRKA,X		;
						;
KOROG_ENCHK0310 EQU	$
		PLA
		CMP	#KORA0			;亀類と衝突した ?
		BCC	KOROG_ENCHK0700		;  no: KOROG_ENCHK0700
		CMP	#PTPT2+1		;
		BCS	KOROG_ENCHK0700		;  no: KOROG_ENCHK0700
;
;-------------- 亀類と衝突 ----------------------
KOROG_ENCHK0500 EQU	$
		JSR	KOROG_KAME_CRS
		BRA	KOROG_ENCHK0780
;
;-------------- 敵を蹴散らす --------------------
KOROG_ENCHK0700 EQU	$
		PHY
		TYX
		JSL	>ENDEATH_SET_4		;敵の死亡セット
		PLY
;
KOROG_ENCHK0780 EQU	$
		LDA	ENWRKA,X		;１ｕｐする ?
		CMP	#00008			;
		BMI	KOROG_ENCHK0790		;  no: KOROG_ENCHK0790

		TYX
		JSL	>PL_1UP_SET_P
		BRA	KOROG_ENCHK0800

KOROG_ENCHK0790 EQU	$
		TAY
		LDA	!KOROG_SOUND,Y
		AND	#000FFH
		JSL	>SOUND_3_ON

KOROG_ENCHK0800 EQU	$
		LDX	#BANK MY_ENCROS2
		LDA	R15
		JSL	>CHIPON
		JMP	KOROG_ENCHK0100
;
KOROG_KOROG_CRS EQU	$
		LDA	ENXSPD,Y		;あたったやつは動いてる ?
		BNE	KOROG_K_C1000		; yes: KOROG_K_C1000

		LDA	ENXSPD,X		;自分は動いてる ?
		BNE	KOROG_K_C1500		; yes: KOROG_K_C1500

		RTS

KOROG_K_C1000	EQU	$
		JSR	KOROG_DEAD

		LDA	ENXSPD,X		;自分は動いてる ?
		BEQ	KOROG_K_C1800		;  no: KOROG_K_C1800

KOROG_K_C1500	EQU	$
		PHX
		TYX
		PLY
		JSR	KOROG_DEAD
		LDX	<ENINDX

KOROG_K_C1800	EQU	$

		RTS
;
KORA_DEATH_XSPD EQU	$
		WORD	0FE00H,00200H
;
KOROG_KAME_CRS	EQU	$
		CMP	#KORA1+1		;甲羅 ?
		BCS	KOROG_K_CRS1000		;  no: KOROG_K_CRS1000

		LDA	ENSHOT,Y		;ショットされてる ?
		BEQ	KOROG_K_CRS1000		;  no: KOROG_K_CRS1000

		JSR	KOROG_DEAD
;
;------------ あたってきたやつを殺す ------------
KOROG_K_CRS1000 EQU	$
KOROG_KAME_KILL EQU	$
		PHY
		TYX
		JSL	>DEATHENEMY
;
		JSL	>ENDEATH_SET
;
		PLY
		LDA	ECENTX,X
		LDX	#000
		CMP	ECENTX,Y
		BPL	KOROG_K_CRS1100

		INX
		INX

KOROG_K_CRS1100 EQU	$
		LDA	!KORA_DEATH_XSPD,X
		STA	ENXSPD,Y
		LDA	#EFAIL
		STA	ENMODE,Y
		LDA	#00040H
		STA	ENGPOW,Y
		LDA	#00400H
		STA	ENGMAX,Y
		LDA	#0FC00H
		STA	ENYSPD,Y
		LDA	#00001
		STA	ENWRKA,Y		; のこのこ／パタパタ デスフラグ セット !!
		LDX	<ENINDX
		RTS
;
;-------------- 自分が死ぬ ---------------------
KOROG_DEAD	EQU	$
		PHY
		JSL	>ENDEATH_SET_2

		PLY
		PHY
		LDA	ECENTX,Y
		LDY	#000
		CMP	ECENTX,X
		BPL	KOROG_D0100

		INY
		INY

KOROG_D0100	EQU	$
		LDA	KORA_DEATH_XSPD,Y
		STA	ENXSPD,X
		LDA	#EFAIL
		STA	ENMODE,X
		LDA	#0FC00H
		STA	ENYSPD,X
		LDA	#0000100001000000B	;ＢＧチェックなし
		STA	ENMOD1,X		;
		LDA	ENCLOR,X
		ORA	#00080H
		STA	ENCLOR,X
		PLY

		RTS
;
KOROG_XPOW	EQU	$
		WORD	00008H
		WORD	00008H,00010H,00020H
		WORD	00020H,00010H,00008H
		WORD	00000H
;
		WORD	00008H
		WORD	00010H,00020H,00040H
		WORD	00040H,00020H,00010H
		WORD	00000H
;
KOROG_XMAX	EQU	$-2
;			-10    -20    -30
		WORD	00300H,0021FH,00180H
;			+30    +20    +10
		WORD	0FE80H,0FDE1H,0FD00H
;
KOROG_KATA	EQU	$
		LDY	#000

		LDA	ENSLOP,X		;坂 ?
		AND	#000FFH			;
		BNE	KOROG_KATA0010		; yes: KOROG_KATA0010

		LDA	ENCBFG,X		;空中 ?
		AND	#00001			;
		BEQ	KOROG_KATA0900		; yes: KOROG_KATA0900

		LDA	ENXSPD,X		;止まってる ?
		BNE	KOROG_KATA0001		;  no: KOROG_KATA0001

		LDY	#00EH

KOROG_KATA0001	EQU	$
		LDA	#00000
		BRA	KOROG_KATA0800

KOROG_KATA0010	EQU	$
		CMP	#00080H
		BMI	KOROG_KATA0100

		ORA	#0FF00H
		LDY	#004
		CLC
		ADC	#00020H
		BRA	KOROG_KATA0200

KOROG_KATA0100	EQU	$
		LDY	#00AH
		SEC
		SBC	#00020H

KOROG_KATA0200	EQU	$
		BEQ	KOROG_KATA0500
		BMI	KOROG_KATA0300

		DEY
		DEY
		BRA	KOROG_KATA0500

KOROG_KATA0300	EQU	$
		INY
		INY

KOROG_KATA0500	EQU	$
		LDA	!KOROG_XMAX,Y

KOROG_KATA0800	EQU	$
		STA	ENXMAX,X
		ASL	A
		STA	<EWORK0

		EOR	ENXSPD,X		;反対方向に動いてる ?
		BMI	KOROG_KATA0840		; yes: KOROG_KATA0840

		LDA	ENXSPD,X		;スピード出過ぎてる ?
		SEC				;
		SBC	ENXMAX,X		;
		EOR	ENXSPD,X		;
		BPL	KOROG_KATA0880		;  no: KOROG_KATA0880

KOROG_KATA0840	EQU	$
		TYA
		CLC
		ADC	#008*2
		TAY

KOROG_KATA0880	EQU	$
		LDA	!KOROG_XPOW,Y

KOROG_KATA0900	EQU	$
		STA	ENXPOW,X

		RTS
;
;************************************************************************
;*		intial	( タマゴわきだし？ブロック )			*
;************************************************************************
HBLK7IN		EQU	$
		JSL	>TROBJ_SR_4x4
		BCC	HBLK7IN_0050	;エリア確保？ ( no:HBLK7IN_0050 )
;
		JSL	>HBLK7_CHRST	;キャラクター初期セット
		LDA	ENMOD2,X	;ＯＢＪ使用数を１個から４個へ
		CLC
		ADC	#0001100000000001B
		STA	ENMOD2,X
;
HBLK7IN_0050	EQU	$
		INC	EGG_BLOCK_CT	;タマゴブロックセットカウンターセット
;
		LDA	ENXPSL,X
		STA	<ENWRK0,X	;基準Ｘ座標保存
		LDA	ENYPSL,X
		STA	<ENWRK2,X	;基準Ｙ座標保存
;
		LDA	ENXPSL,X
		SEC
		SBC	PLXPSL
		STA	<ENWRK4,X	;左へ出るか、右へ出るか？
		RTL
;
;************************************************************************
;*		move	( タマゴわきだし？ブロック )			*
;************************************************************************
HBLK7_SET_XSP	EQU	$
; EGG_BLOCK_CT -->	  [0]	 [1]	[2]    [3]    [4]    [5]    [6]	   [7]
		WORD	000F0H,000D8H,00100H,000C8H,000E0H,000F8H,000D0H,000E8H
HBLK7_SET_YSP	EQU	$
		WORD	0FD30H,0FD78H,0FD00H,0FDA8H,0FD60H,0FD18H,0FD90H,0FD48H
;
HBLK7_ANG_AD	EQU	$
; ENWRK6,X -->		 [0]   [2]
		WORD	0300H,-300H
;
HBLK7MV		EQU	$
;
;-------------- ＯＡＭセット --------------------------------------------
		LDA	ENTROB,X
		ORA	ENOAML,X
		BMI	HBLK7MV_0050	;回転エリア使用？ ( no:HBLK7MV_0050 )
;
		JSL	>TROBJ_OAM_4x4	;
;
;-------------- モードチェック ------------------------------------------
HBLK7MV_0050	EQU	$
		JSL	>ENMDCK		;enemy mode check
;
;-------------- プレイヤーとの衝突チェック ------------------------------
		JSL	>POBBGCR	;リフト補正チェック
;
;-------------- 敵との衝突チェック --------------------------------------
		LDY	ECRSFG,X
		DEY
		BMI	HBLK7MV_0052	;敵と衝突？ ( no:HBLK7MV_0052 )
;
		LDA	ENMODE,Y
		CMP	#EMOVE
		BNE	HBLK7MV_0052	;健在？ ( no:HBLK7MV_0052 )
;;;;		    LDA	    ENMOD1,Y
;;;;		    AND	    #0110000000000000B
;;;;		    BNE	    HBLK7MV_0052    ;敵？ ( no:HBLK7MV_0052 )
		LDA	ENMOD1,Y
		AND	#0000100000000000B
		BEQ	HBLK7MV_0052	;ひっくり返れる？ ( no:HBLK7MV_0052 )
;
;-------------- 敵蹴散らし --------------------------------------
		TYX
		JSL	>ENDEATH_SET
;
;-------------- 移動計算 ------------------------------------------------
HBLK7MV_0052	EQU	$
		LDA	ENWRK8,X
		BPL	HBLK7MV_0058	;ＢＧに戻す？ ( no:HBLK7MV_0058 )
;
;-------------- ＢＧに戻す --------------------------------------
		LDA	<ENWRK0,X
		STA	BGXPS1		;ＢＧ書き換えＸ座標セット
		LDA	<ENWRK2,X
		STA	BGYPS1		;ＢＧ書き換えＹ座標セット
		LDA	#BGCG
		STA	BGCGNO		;ＢＧ書き換えタイプＮｏ．
		LDA	#UT5F04
		STA	BGUTNO		;ＢＧ書き換えユニットＮｏ．
		JSL	>UNITCHG
;
		LDX	<ENINDX
		JMP	>ENCLEAR
;
HBLK7MV_0058	EQU	$
		LDY	ENWRK6,X
		CLC
		ADC	!HBLK7_ANG_AD,Y
		STA	ENWRK8,X
		BPL	HBLK7MV_0060	;ＢＧに戻す？ ( no:HBLK7MV_0060 )
;
		LDA	#0FFH		;表示無しセット
		STA	ENYUSN,X
		RTL

HBLK7MV_0060	EQU	$
		CMP	#018H*100H
		BMI	HBLK7MV_0100	;回転向き反転？ ( no:HBLK7MV_0100 )
;
;-------------- 回転向き反転 ------------------------------------
		LDA	#02H
		STA	ENWRK6,X
;
;-------------- タマゴセット ----------------------------
		M_CHIP	EGGSEARCH
;
		LDX	<ENINDX
		LDA	R6
		CMP	#6
		BCS	HBLK7MV_0100	;タマゴいっぱい？ ( yes:HBLK7MV_0100 )
;
;;;;		    LDA	    <RANDM0
;;;;		    AND	    #03H
;;;;		    CLC
;;;;		    ADC	    #EGG00	    ;(A) <-- 敵Ｎｏ．
		LDA	#EGG03		;(A) <-- 敵Ｎｏ．
		JSL	>ENINSR_I	;敵エリア確保
		BCC	HBLK7MV_0100	;     ”     ？ ( no:MRBLKMV_0100 )
;
		LDA	ENXPSL,X	;タマゴＸ座標セット
		STA	ENXPSL,Y
		LDA	ENYPSL,X	;タマゴＹ座標セット
		STA	ENYPSL,Y
		LDA	EGG_BLOCK_CT
		AND	#07H
		ASL	A
		TAX
		LDA	!HBLK7_SET_YSP,X ;タマゴＹスピードセット
		STA	ENYSPD,Y
		LDA	!HBLK7_SET_XSP,X ;タマゴＸスピードセット
		LDX	<ENINDX
		BIT	<ENWRK4,X
		BPL	HBLK7MV_0070
		EOR	#0FFFFH
		INC	A
HBLK7MV_0070	EQU	$
		STA	ENXSPD,Y
;
		LDA	#04H		;[♪]
		JSL	>SOUND_3_ON	;(Y) load
;
;-------------- 座標計算 ----------------------------------------
HBLK7MV_0100	EQU	$
		LDA	ENWRK8+1,X
		AND	#00FFH
		ASL	A
		TAX
		LDA	>SIN,X
		TAY
		STY	211BH
		XBA
		TAY
		STY	211BH
		LDY	#020H		;[R]
		STY	211CH
		LDA	>COS,X
		PHA			;(A) save
		LDX	<ENINDX
		LDA	<ENWRK2,X
		CLC
		ADC	2135H
		STA	ENYPSL,X	;Ｙ座標セット
		PLY			;(A) load
		STY	211BH
		PLY			;(A) load
		STY	211BH
		LDY	#020H		;[R]
		STY	211CH
		LDA	#020H
		SEC
		SBC	2135H
		BIT	<ENWRK4,X
		BPL	HBLK7MV_0150
		EOR	#0FFFFH
		INC	A
HBLK7MV_0150	EQU	$
		CLC
		ADC	<ENWRK0,X
		STA	ENXPSL,X	;Ｘ座標セット
;
		LDA	ENTROB,X
		BMI	HBLK7_CHRST_020 ;回転エリア使用？ ( no:HBLK7_CHRST_020 )
;
;-------------- キャラクターセット --------------------------------------
HBLK7_CHRST	EQU	$
		LDA	ENWRK8+1,X
		BIT	<ENWRK4,X
		BMI	HBLK7_CHRST_010
		EOR	#0FFFFH
		INC	A
HBLK7_CHRST_010 EQU	$
		AND	#00FFH
		STA	R5		;(R5)  <-- 回転角度
		LDY	ENTROB,X
		TYX
		LDA	>TROBJ_PLOT_X,X
		STA	R3		;(R3)  <-- ビットマップ座標＿Ｘ
		LDA	>TROBJ_PLOT_Y,X
		STA	R2		;(R2)  <--	  ”	   ＿Ｘ
		LDA	#0100H
		STA	R6		;(R6)  <-- 倍率
		LDA	#CIPCHD+7040H
		STA	R12		;(R12) <-- キャラクターアドレス（Ｌ，Ｈ）
		LDA	#BANK CIPCHD+7040H
		STA	R13		;(R13) <--	   ”		(Ｂ）
;
		I8
;
		M_CHIP	C_32_ROTZOM_16
;
		INC	OBM7WF		;mode 7 OBJ chara DMA "ON"
;
		LDX	<ENINDX
HBLK7_CHRST_020 EQU	$
		RTL
;
;
;
;
;
HBLK5IN		EQU	$			;-- hblk5in --
HBLK5MV		EQU	$			;-- hblk5mv --
COIN0IN		EQU	$			;-- coin0in --
COIN0MV		EQU	$			;-- coin0mv --
;
;
;
;
;
		END

