;************************************************************************
;*									*
;*	title name	: "yossy"					*
;*	proccess	: mario chip player program			*
;*	file name	: ys_mplay					*
;*									*
;************************************************************************
;
;
		SALL
;
		include		ys_chip.inc
		include		ys_chip2.inc
;
		XALL
;
;
;------------------------------------------------------------------------
;-		global symbol						-
;------------------------------------------------------------------------
		GLB	PL_CALC,XY_CALC,PL_BGCK,PL_BGCK_2,WATR_CHECK
		GLB	PL_KEY_XMOV,PL_XSP_DOWN,PL_BGCK_0300
		GLB	M_ENINSR,M_EXINSR
		GLB	BABL0_SET,WTUP0_SET,WTUP1_SET
		GLB	BABL0_SET_2,WTUP0_SET_2,WTUP1_SET_2
		GLB	BG_SIDECK_IN,BG_SIDECK,BG_HDFTCK,FOOT_RESULT,FOOT_RESULT_C
		GLB	BRBG0_SET,BGUNIT_READ_S,BGUNIT_READ
		GLB	BG_SIDECK_0000,BG_HDFTCK_0000
		GLB	DASH_SMOK_CK,DOSN_JUST_CK
		GLB	BRBG0_SET,SIDE_SP_CK,HED_SP_CK,FOOT_SP_CK
		GLB	XY_CALC,PL_CALC_JUMP,PL_CALC_NOJUMP
		GLB	DOKAN_INOUT_IN,DOKAN_INOUT_IN_2
		GLB	COIN_CROSS,FAIL_CROSS,SUGI_CROSS,CLR_COIN_CROSS
		GLB	BG_SP_CHECK
;
		GLB	R_32_ZOOM_16,R_32_ZOOM_16_XY
		GLB	R_32_RTZ_32,R_32_RTZ_32_XY,R_32_RTZ_C32_XY
		GLB	R_32_RTZ_32_XY_C
		GLB	R_32_ZOOM,R_32_ZOOM_XY,R_32_ZOOM_XY_C
;
		GLB	PSHT
;
;------------------------------------------------------------------------
;-		extern symbol						-
;------------------------------------------------------------------------
;
;-------------< ys_chip0 >-----------------------------------------------
		EXT	COS,SIN,LCOS,LSIN,LCOS_S,LSIN_S
;
;-------------< ys_msub0 >-----------------------------------------------
		EXT	ENCRDT,ENMODE0,ENMODE1,ENMODE2,ENDATA0,ENDATA1
		EXT	ENCHR_BNK,ETCADR
		EXT	EXMODE0,EXMODE1,EXMODE2,EXDATA0,EXDATA1
		EXT	EXCHR_BNK
		EXT	EN_BGTYPE,SAKA_DATA
;
;-------------< 敵Ｎｏ． >---------------------------------------
		EXT	DWNBG,FIREX,SOPB0,SUIKT,COLDX,HBLK2 ;,HBLK1
		EXT	ON_DW,TIKU0,TIKU1,CNTLF,DRKEY,MRBLK,SUIKA ;,POLDR
		EXT	GROCK,GRCKS
;
;-------------< 効果Ｎｏ． >-------------------------------------
		EXT	DUST0,DOSN0,DSMK1,DSMK0,BRBG0,WTUP0,WTUP1,BABL0
		EXT	NAG_P,PICHA,YKCHI,DORO0,DORO1,SNOW0
;
;-------------< ys_mplay0 >-----------------------------------------------
		EXT	CAR_MV
;
;-------------< ys_mplay3 >-----------------------------------------------
		EXT	HERI_MV
		EXT	SBMARIN_MV
		EXT	MOGURA_MV
		EXT	MARIO_MV
		EXT	TRAIN_MV
		EXT	SKI_MV
		EXT	EGG_MV
;
		EXT	MARIO_PS_HOSE
;
		EXT	BERO_P_BIRI,BERO_P_RETN,BERO_P_END
;
;-------------< ys_mpldt >-----------------------------------------------
		EXT	PLAYER_DATA
;
		EXT	MOVE_SOUND
;
		EXT	ON_SOAP,ON_WATR,ON_ICEB,ON_YUKI,ON_DORO
;
		EXT	DOSN_PATN,DOSN_DOWN,DOSN_END,DOSN_TMDT,DUST0_SET_POS
		EXT	DOSN_DOWN_P,DOSN_END_P
;
		EXT	SWIM_INDT,SWIM_PATN,SWIM_DW_PATN
		EXT	WTUP1_STDT
;
;;;;		    EXT	    DSMK0_SET_TM,DSMK0_SET_PS
;
		EXT	PLBGCK_POINT,PLBGCK_POINT_00,PLBGCK_POINT_01,PLBGCK_POINT_SW
		EXT	KAIDAN_PATN
		EXT	DOKAN_TYPE
		EXT	DSMK1_STCK
		EXT	WALK_SP,DASH_SP
		EXT	MAX_SPEED,MAX_DASH,ADD_SPEED,MIN_SPEED,SUB_SPEED
;
		EXT	EAT_OFST_POS,BERO_SHOT_DT,BERO_PATN,EAT_END_PT
		EXT	EAT_END_PT_END,EATEND,EATEGGEND,SPSHOT_ENNO
		EXT	BERO_BIRI_PATN
;
		EXT	FIRE_SET_XY
		EXT	FIRE_ST_P,FIRE_ST_M
;
		EXT	SOAP_SET_TMG,SOAP_SET_TMG_NO
		EXT	SOAP_SET_XY
		EXT	SOAP_ST_P,SOAP_ST_M
;
		EXT	SUIKA_SET_XY
		EXT	SUIKA_ST_P,SUIKA_ST_M
;
		EXT	FAIL_KYORO_PATN,SUIKA_SHOT_PATN
		EXT	ROTATION_PATN,ROT_DOWN_PATN,ROT_DOWN_TIM,ROT_DOWN_P
		EXT	NAGE_PATN,NAGE_P,NAGE_PATN_TMDT,SIT_PATN,SDBOYO_PATN,HDBOYO_PATN
		EXT	SPJMP_PATN,SPJMP_NAGE_PATN,JMPEND_PATN,JMPEND_PATN_E,JPET,SLIP_PATN
		EXT	NAGE_SLIP_PATN,PUSH_PATN,PLSTOP_PATN,MABATAKI,PORIPORI,KYORKYOR
		EXT	TANTAN,PLSTOP_PATN_E,PLSTOP_TMDT,PLSTOP_PTIN,WALK_TMDT
		EXT	BGWK00,BGWK01,BGWK02,BGWK03,BGWK04,WALK_TMDT_E
		EXT	BGWK05,BGWK06,BGWK07,BGWK08,BGWK09,BGWK0A
		EXT	WLKMX,WLKMX_C,WLKMX_Cx2,WLKMX_Cw2,WALK_SOUND,WALK_TMIN,WALK_PATN
		EXT	FR_CK,FR_MV,FURA_TMDT,FURA_PATN,FURA_EGG_PATN
		EXT	BURAN_PATN,BURAN_P
;
;------------------------------------------------------------------------
;-		define symbol						-
;------------------------------------------------------------------------
;
;-------------- ＢＧユニットＮｏ．バッファアドレス ----------------------
CBGUNIT		EQU	7F8000H
;
;
;
BWXMX		EQU	280H
PUSHTM		EQU	010H
;
PDKN		EQU	06H		;プレイヤーモード（ドカン出入り）
PSHT		EQU	0AH		;	 ”	 （エントツショット）
PFAL		EQU	0EH		;	 ”	 （ダウン）
PYGN		EQU	28H		;	 ”	 （溶岩落ち）
;
SKSNOW		EQU	06H		;[ ※ ../sfc/ys_exst.asm に存在！！ ]
;
;
;************************************************************************
;*									*
;*		program start						*
;*									*
;************************************************************************
;
;
Group_B		GROUP	S_play
S_play		SECT	REL
;
;
;************************************************************************
;*		敵サーチ（距離指定）					*
;*			out :						*
;*				(R1) <-- サーチ敵インデックス		*
;*					 ( ＜０：無し )			*
;************************************************************************
;
P_EN_SRCH_S
		SMS	R11,RTS0	;[ return address save ]
;
		IBT	R1,#0FFH	;[ IWT R1,#0FFFFH ]
		IBT	R9,#048H	;(R9) <-- 射程距離
;
		LMS	R10,CPCENTX	;(R10) <-- プレイヤー中心Ｘ
		LMS	R3,CPCENTY	;(R3) <-- プレイヤー中心Ｙ
;
		IWT	R4,#CECENTX	;(R4)  <-- enemy center pos index
		IWT	R5,#CENMODE	;(R5)  <-- enemy mode index
		IBT	R6,#CEMOVE	;(R6)  <-- enemy move no.
		IWT	R11,#CENMOD2+1	;(R11) <-- 照準合うかフラグポインター
;
		IBT	R14,#0FFH	;[ IWT R14,#0FFFFH ] (R14) <-- サーチ距離
;
		CACHE
;
		IBT	R12,#CENNO
		MOVE	R13,R15
P_EN_SRCH_S_010
		LDB	(R5)
		SUB	R6
		BNE	P_EN_SRCH_S_040 ;enemy cross check ok ? ( no:P_EN_SRCH_S_040 )
		NOP
;
		LDB	(R11)
		AND	#00000001B
		BEQ	P_EN_SRCH_S_040 ;照準合う？ ( no:P_EN_SRCH_S_040 )
		NOP
;
		LDW	(R4)
		SUB	R10
		LMS	R8,CPLCMKI
		DEC	R8
		BMI	P_EN_SRCH_S_020
		NOP
;
		NOT
		INC	R0
P_EN_SRCH_S_020
		SUB	R9
		BCS	P_EN_SRCH_S_040 ;サーチ敵ＯＫＸ距離？ ( no:P_EN_SRCH_S_040 )
		ADD	R9
;
		MOVE	R8,R0
;
		FROM	R4
		ADD	#2
		LDW	(R0)
		SUB	R3
		BPL	P_EN_SRCH_S_030
		NOP
;
		NOT
		INC	R0
P_EN_SRCH_S_030
		SUB	R9
		BCS	P_EN_SRCH_S_040 ;サーチ敵ＯＫＹ距離？ ( no:P_EN_SRCH_S_040 )
		ADD	R9
;
		ADD	R8
		SUB	R14
		BCS	P_EN_SRCH_S_040 ;サーチ敵ＯＫ？ ( no:P_EN_SRCH_S_040 )
		ADD	R14
;
		MOVE	R14,R0		;(R14) <-- Ｎｅｗサーチ距離
		MOVE	R1,R12		;(R1)  <-- Ｎｅｗサーチ敵インデックス
;
P_EN_SRCH_S_040
		IBT	R0,#4
		TO	R4
		ADD	R4
		TO	R5
		ADD	R5
		TO	R11
		ADD	R11
		LOOP
		NOP
;
		MOVES	R1,R1
		BMI	P_EN_SRCH_S_050 ;サーチ敵無し？ ( yes:P_EN_SRCH_S_050 )
		NOP
;
		IBT	R0,#CENNO
		SUB	R1
		ADD	R0
		TO	R1		;(R1) <-- サーチ敵インデックス
		ADD	R0
;
P_EN_SRCH_S_050
		LMS	R11,RTS0	;[ return address load ]
		mRTS
;
;************************************************************************
;*		ソニックモードキャンセルによる座標補正			*
;************************************************************************
MARIO_PS_HOSEI	EQU	$
		LMS	R0,CPMR_BGCF
		DEC	R0
		BMI	MARIO_PS_HS_010 ;ソニックモードだった？ ( no:MARIO_PS_HS_010 )
		NOP
;
		mJSR	MARIO_PS_HOSE
;
MARIO_PS_HS_010
		STOP
		NOP
;
;************************************************************************
;*		止まってるポーズセット					*
;************************************************************************
PL_STOP_PATN	EQU	$
		LMS	R0,CPSTPTM
		DEC	R0
		BPL	PL_STOP_PATN_10
		NOP
;
		SUB	R0
PL_STOP_PATN_10
		SBK			;[ SMS R0,CPSTPTM ]
;
		IBT	R0,#BANK PLAYER_DATA
		ROMB
;
		mJSR	PL_STOP_PT_SET
;
		SUB	R0		;<<< end >>>
		STOP
		NOP
;
;************************************************************************
;*		プレイヤーデモ用処理					*
;************************************************************************
PL_DEMO_0	EQU	$
		mJSR	XY_CALC		;Ｘ，Ｙ座標セット
;
		mJSR	PL_PATN		;パターンＮｏ．セット
;
		SUB	R0		;<<< end >>>
		STOP
		NOP
;
;************************************************************************
;*		プレイヤーデモ用処理（ゴール）				*
;************************************************************************
PL_DEMO_1	EQU	$
		IBT	R0,#BANK PLAYER_DATA
		ROMB
;
		mDJMP	YOSSY_MV_0110
;
;************************************************************************
;*		プレイヤーデモ用処理（タイトル）			*
;************************************************************************
PL_DEMO_2	EQU	$
		IBT	R0,#BANK PLAYER_DATA
		ROMB
;
		mDJMP	YOSSY_MV_0120
;
;************************************************************************
;*		ＢＧチェック						*
;************************************************************************
M_PLBGCK	EQU	$
		IBT	R0,#BANK PLAYER_DATA
		ROMB
;
		mJSR	PL_BGCK
;
		SUB	R0		;<<< end >>>
		STOP
		NOP
;
;************************************************************************
;*		プレイヤー座標計算					*
;************************************************************************
M_PLCALC	EQU	$
		mJSR	PL_CALC
;
		STOP
		NOP
;
;************************************************************************
;*		Ｘ，Ｙ座標計算						*
;************************************************************************
M_PLXYCLC	EQU	$
		mJSR	XY_CALC
;
		STOP
		NOP
;
;************************************************************************
;*		Ｙ座標計算						*
;************************************************************************
M_PLYCLC	EQU	$
		LMS	R2,CPLYSPD	;(R2) <-- Ｙスピード
		mJSR	XY_CALC_0550
;
		STOP
		NOP
;
;************************************************************************
;*									*
;*		プレイヤー処理						*
;*									*
;************************************************************************
;
PL_MOVE		EQU	$
		IBT	R0,#BANK PLAYER_DATA
		ROMB
;
;;;;		    mJSR    TIMER_CALC
;
;------------------------------------------------------------------------
;-		無敵”キラキラ”セット					-
;------------------------------------------------------------------------
		LM	R0,CSUPER_FLAG
		DEC	R0
		BMI	PL_MOVE_0050	;無敵？ ( no:PL_MOVE_0050 )
		NOP
;
		SBK			;[ SM R0,CSUPER_FLAG ]
;
		LM	R0,CFRCNT2
		AND	#07H
		BNE	PL_MOVE_0050	;”キラキラ”セット？ ( no:PL_MOVE_0050 )
		NOP
;
		IBT	R0,#010H	;(R0) <-- ヨコサイズ
		LM	R2,CRANDM0
		UMULT	R2
		HIB
		SUB	#08H
		LMS	R2,CPLXPSL
		TO	R2		;(R2) <-- ”キラキラ”セットＸ座標
		ADD	R2
;
		IBT	R0,#020H	;(R0) <-- タテサイズ
		LM	R3,CRANDM0+1
		UMULT	R3
		HIB
		SUB	#04H
		LMS	R3,CPLYPSL
		TO	R3		;(R3) <-- ”キラキラ”セットＹ座標
		ADD	R3
;
		IWT	R5,#DUST0	;(R5) <-- 効果Ｎｏ．
		mJSR	M_EXINSR	;効果エリア確保
;
		mSTW	R2,CEXXPSL,R1	;Ｘ座標セット
		mSTW	R3,CEXYPSL,R1	;Ｙ座標セット
		IBT	R5,#04H
		mSTW	R5,CEXWRK0,R1	;初期カウンターセット
		IBT	R5,#06H
		mSTW	R5,CEXTIM0,R1	;初期タイマーセット
;
;-------------- フラグ初期セット ----------------------------------------
PL_MOVE_0050
		SUB	R0
		SMS	R0,CPLUPFG	;上向きフラグリセット
;
		LMS	R1,CPLTYPE	;(R1) <-- プレイヤータイプ
		LMS	R0,CPLMVSP
		SUB	#0
		BEQ	PL_MOVE_0100	;移動中？ ( no:PL_MOVE_0100 )
		FROM	R1
;
		LSR			;1/2
		IWT	R14,#MOVE_SOUND
		TO	R14
		ADD	R14
		GETB
		SMS	R0,CMSOUND1
;
		FROM	R1		;[JSRSUB]
PL_MOVE_0100
		ADD	R1		;   "
		INC	R0		;   "
		TO	R15		;   "
		ADD	R15		;   "
		HEX	FF		;   "
		mTWORD	YOSSY_MV	;普通のヨッシー
		mTWORD	CAR_MV		;クルマ
		mTWORD	MOGURA_MV	;モグラ
		mTWORD	HERI_MV		;ヘリコプター
		mTWORD	TRAIN_MV	;汽車
		mTWORD	KINOKO_MV	;キノコ
		mTWORD	SBMARIN_MV	;潜水艦
		mTWORD	SKI_MV		;スキー
		mTWORD	MARIO_MV	;マリオ
		mTWORD	EGG_MV		;タマゴ
;
;
;
;
;
;************************************************************************
;*									*
;*		普通のヨッシー						*
;*									*
;************************************************************************
KAIDAN_SP	EQU	0100H		;階段歩きスピード
;
YOSSY_MV
		LMS	R0,CPROTSP
		SUB	#0
		BEQ	YOSSY_MV_FFFE	;回転中？ ( no:YOSSY_MV_FFFE )
		NOP
;
		LMS	R1,CPROTDW
		DEC	R1
		BPL	YOSSY_MV_FFFD4	;回転ダウンセット？ ( no:YOSSY_MV_FFFD4 )
		NOP
;
		IWT	R1,#0200H
		ADD	R1
		IWT	R1,#0200H*2+1
		SUB	R1
		BCC	YOSSY_MV_FFFD2	;回転ダウン？ ( no:YOSSY_MV_FFFD2 )
		SUB	R0		;[ IBT R0,#0 ]
;
		IBT	R0,#ROT_DOWN_P
YOSSY_MV_FFFD2
		SMS	R0,CPROTDW
;
YOSSY_MV_FFFD4
		SUB	R0		;[ IBT R0,#0 ]
		SMS	R0,CMKEYC1L	;コントローラー入力無しセット
		SMS	R0,CMKEYC2L
		BRA	YOSSY_MV_FFFF
		NOP
;
YOSSY_MV_FFFE
		LMS	R0,CPLFLSH
;;;;		    IWT	    R1,#0080H
		IBT	R1,#0040H
		SUB	R1
		BCC	YOSSY_MV_FFFF	;プレイヤーダメージ中？ ( no:YOSSY_MV_FFFF )
		NOP
;
		LMS	R0,CPLJUMP
		DEC	R0
		BPL	YOSSY_MV_FFFF	;プレイヤージャンプ中？ ( yes:YOSSY_MV_FFFF )
		NOP
;
		IBT	R1,#0		;(R1) <-- Ｘスピード
		IBT	R2,#0		;(R2) <-- Ｙスピード
		mJSR	XY_CALC_0500	;
		mJSR	PL_BGCK		;ＢＧチェック
		mDJMP	YOSSY_MV_0150
;
YOSSY_MV_FFFF
		LMS	R0,CPLSWIM
		DEC	R0
		BMI	YOSSY_MV_0000	;泳ぎ中？ ( no:YOSSY_MV_0000 )
		NOP
;
		mDJMP	YOSSY_SW
;
;------------------------------------------------------------------------
;-		階段歩き処理						-
;------------------------------------------------------------------------
YOSSY_MV_0000
		LMS	R0,CPLKAID
		SUB	#0
		BNE	YOSSY_MV_00000	;階段歩き中？ ( yes:YOSSY_MV_00000 )
		SUB	R0		;[ IBT R0,#0 ]
;
		mDJMP	YOSSY_MV_0001
;
YOSSY_MV_00000
		SMS	R0,CPLDOSN	;”ドスーン！！”フラグリセット
;
		mJSR	PL_KEY		;ジャンプキーチェック
;
		LMS	R0,CPLJUMP
		DEC	R0
		BMI	YOSSY_MV_00001	;ジャンプ？ ( no:YOSSY_MV_00001 )
		SUB	R0		;[ IBT R0,#0 ]
;
		SMS	R0,CPLKAID
		mDJMP	YOSSY_MV_0150
;
YOSSY_MV_00001
		IWT	R1,#KAIDAN_SP
		LMS	R0,CPLKAID	;(R0) <-- 階段歩きフラグ
		DEC	R0
		BPL	YOSSY_MV_00002
		INC	R0
;
		IWT	R1,#0-KAIDAN_SP
YOSSY_MV_00002
		SUB	R1
		TO	R2		;[ * not break (R0) ]
		XOR	R1
		BPL	YOSSY_MV_00003	;階段歩きＥＮＤ？ ( no:YOSSY_MV_00003 )
		NOP
;
		SUB	R0
YOSSY_MV_00003
		SBK			;[ SMS R0,CPLKAID ]
;
		IWT	R2,#KAIDAN_SP
		LMS	R0,CPLCMKI
		DEC	R0
		BMI	YOSSY_MV_00004
		WITH	R1
;
		NOT
		INC	R1
		WITH	R2
		NOT
		INC	R2
YOSSY_MV_00004
		SMS	R2,CPLMVSP	;[ スピードはジャンプした時の為 ]
		SMS	R2,CPLXSPD
		SMS	R1,CPLYSPD
;
		LMS	R0,CPLXSDR	;[ 移動を斜めに固定する為に座標計算をここでする ]
		LOB
		ADD	R2
		SBK			;[ SMS CPLXSDR ]
		HIB
		TO	R2		;(R2) <-- Ｙ移動値
		SEX
		LMS	R0,CPLXPSL
		ADD	R2
		SBK			;[ SMS CPLXPSL ]
;
		FROM	R1
		XOR	R2
		BPL	YOSSY_MV_00005
		WITH	R2
;
		NOT
		INC	R2
YOSSY_MV_00005
		LMS	R0,CPLYPSL
		ADD	R2
		SBK			;[ SMS CPLYPSL ]
;
		LMS	R0,CPLYPSL
		AND	#0FH
		MOVES	R1,R1
		BMI	YOSSY_MV_00006	;階段登り？ ( yes:YOSSY_MV_00006 )
		ADD	R0
;
		INC	R0
YOSSY_MV_00006
		ADD	R0
		IWT	R14,#KAIDAN_PATN
		TO	R14
		ADD	R14
		GETB
		INC	R14
		GETBH
		SMS	R0,CPLPATN	;パターンＮｏ．セット
;
		LMS	R0,CPLKAID
		SUB	#0
		BNE	YOSSY_MV_00008	;階段歩き終り？ ( no:YOSSY_MV_00008 )
		NOP
;
		mJSR	PL_BGCK		;ＢＧチェック
;
YOSSY_MV_00008
		mDJMP	YOSSY_MV_0050
;
;------------------------------------------------------------------------
;		”ドスーン！！”処理					-
;------------------------------------------------------------------------
YOSSY_MV_0001
		LMS	R7,CPLDOSN	;(R7) <-- ”ドスーン！！”フラグ
		DEC	R7
		BPL	YOSSY_MV_0002	;”ドスーン！！”中？ ( yes:YOSSY_MV_0002 )
		INC	R7
;
		mDJMP	YOSSY_MV_0100
;
YOSSY_MV_0002
		SMS	R7,CSCRONF	;フリースクロールセット
;
		LM	R1,CMKEYC1	;(R1) <-- コントローラー情報（連続）
		LM	R2,CMKEYC2	;(R2) <--	   ”	    （トリガー）
;
		IWT	R0,#DOSN_PATN-2
		ADD	R7
		TO	R14
		ADD	R7
		GETB
		INC	R14
		GETBH
		SMS	R0,CPLPATN
;
		LMS	R0,CPDSNTM
		LOB
		BNE	YOSSY_MV_0020	;パターン切り替え？ ( no:YOSSY_MV_0020 )
		NOP
;
		IBT	R0,#DOSN_DOWN_P-1
		SUB	R7
		BCS	YOSSY_MV_0010	;回転中？ ( yes:YOSSY_MV_0010 )
		INC	R7
;
		LMS	R0,CPLJUMP
		DEC	R0
		BPL	YOSSY_MV_0020	;着地？ ( no:YOSSY_MV_0020 )
		NOP
;
		IBT	R0,#DOSN_END_P
		SUB	R7
		BCS	YOSSY_MV_0010	;”ドスーン！！”パターン終り？ ( no:YOSSY_MV_0010 )
		NOP
;
;;;;		    LM	    R0,CP_KEY_JUMP+1
		LM	R0,CP_KEY_MNAG+1
;;;;		    OR	    R14
		LM	R14,CP_KEY_BERO+1
		OR	R14
		OR	#00000100B
		AND	R1
		SUB	#00000100B
		BEQ	YOSSY_MV_0030	;”ドスーン！！”継続？ ( yes:YOSSY_MV_0030 )
		SUB	R0
;
		SMS	R0,CPLDOSN
		mDJMP	YOSSY_MV_0100
;
YOSSY_MV_0010
		SMS	R7,CPLDOSN
;
		IWT	R0,#DOSN_TMDT-4
		ADD	R7
		TO	R14
		ADD	R7
		GETB
		SMS	R0,CPDSNTM	;パターン切り替えタイマーセット
;
YOSSY_MV_0020
		IBT	R0,#DOSN_DOWN_P
		SUB	R7
		BCC	YOSSY_MV_0030+1 ;回転中？ ( no:YOSSY_MV_0030 )
		SUB	R0		;[ IBT R0,#0 ]
;
		SMS	R0,CPLYSPD
		SMS	R0,CPLMVSP	;Ｘスピードクリアー
		SMS	R0,CPLXSPD	;	”
		BRA	YOSSY_MV_0045
		NOP
;
YOSSY_MV_0030
		SUB	R0
		SMS	R0,CPLMVSP	;Ｘスピードクリアー
		SMS	R0,CPLXSPD	;	”
;
		LMS	R0,CPLJUMP
		DEC	R0
		BPL	YOSSY_MV_0032	;着地？ ( no:YOSSY_MV_0032 )
		NOP
;
		mJSR	PL_CALC		;座標計算
		BRA	YOSSY_MV_0045
		NOP
;
YOSSY_MV_0032
		IWT	R0,#0800H
		SMS	R0,CPLYSPD	;Ｙスピードセット
;
;-------------- ”ドスーン！！”落下効果セット --------------------------
		LM	R0,CFRCNT2
		LSR
		BCC	YOSSY_MV_0040	;”ドスーン！！”落下効果セット？ ( no:YOSSY_MV_0040 )
		NOP
;
		IWT	R5,#DUST0	;(R5) <-- 効果Ｎｏ．
		mJSR	M_EXINSR	;効果エリア確保
;
		LM	R0,CRANDM0
		AND	#07H
		ADD	R0		;x2
		IWT	R14,#DUST0_SET_POS
		TO	R14
		ADD	R14
		GETBS
		INC	R14
		LM	R5,CPLXPSL
		TO	R5
		ADD	R5
		mSTW	R5,CEXXPSL,R1
		GETBS
		LM	R5,CPLYPSL
		TO	R5
		ADD	R5
		mSTW	R5,CEXYPSL,R1
		IBT	R5,#04H
		mSTW	R5,CEXWRK0,R1
		DEC	R5		;[ IBT R5,#03H ]
		mSTW	R5,CEXTIM0,R1
;
YOSSY_MV_0040
		mJSR	XY_CALC		;座標計算
;
YOSSY_MV_0045
		mJSR	PL_BGCK		;ＢＧチェック
		mJSR	WATR_CHECK	;水中チェック
;
YOSSY_MV_0050
		SUB	R0		;<<< end >>>
		STOP
		NOP
;
;------------------------------------------------------------------------
;-		ヨッシー普通の処理					-
;------------------------------------------------------------------------
YOSSY_MV_0100
		mJSR	PL_CALC		;座標計算
;
YOSSY_MV_0110
		mJSR	PL_BGCK		;ＢＧチェック
		mJSR	WATR_CHECK	;水中チェック
;
YOSSY_MV_0120
		mJSR	PL_KEY		;コントローラー入力
;
YOSSY_MV_0150
		mJSR	PL_PATN		;パターンＮｏ．セット
;
		SUB	R0		;<<< end >>>
		STOP
		NOP
;
;------------------------------------------------------------------------
;-		水中泳ぎ処理						-
;------------------------------------------------------------------------
YOSSY_SW
		LMS	R0,CPLMVSP	;Ｘスピードセット
		SMS	R0,CPLXSPD
		IBT	R0,#1
		SMS	R0,CPLSPJP	;ジタバタジャンプフラグセット
		mJSR	XY_CALC		;座標計算
;
		SUB	R0		;[ IBT R0,#0 ]
		SMS	R0,CPLSITD	;お座りフラグキャンセル
		mJSR	PL_BGCK		;ＢＧチェック
;
;-------------- 舌ショットチェック ------------------------------
		mJSR	BERO_CHECK	;舌ショットチェック
;
		LMS	R1,CPLSWIM
		FROM	R1
		SUB	#3
		BCS	YOSSY_SW_0200	;水中泳ぎ初期セット？ ( no:YOSSY_SW_0200 )
		NOP
;
;-------------- 水中泳ぎ初期処理 ----------------------------------------
;
;-------------- 初期浮力セット ----------------------------------
		FROM	R1		;x4
		ADD	R1		;
		ADD	R0		;
		IWT	R14,#SWIM_INDT-4
		TO	R14
		ADD	R14
		GETBS
		INC	R14
		LMS	R2,CPLYSPD
		ADD	R2
		BPL	YOSSY_SW_0050	;減速終了？ ( no:YOSSY_SW_0050 )
		SBK			;[ SMS R0,CPLYSPD ]
;
		GETB
		SBK			;[ SMS R0,CPLYSPD ]
;
		INC	R1
		SMS	R1,CPLSWIM
;
YOSSY_SW_0050
		INC	R14
;
;-------------- Ｘスピード減速 ----------------------------------
		IBT	R1,#040H
		LMS	R0,CPLMVSP
		SUB	#0
		BMI	YOSSY_SW_0100
		NOP
;
		WITH	R1
		NOT
		INC	R1
YOSSY_SW_0100
		ADD	R1
		TO	R1
		XOR	R1
		BMI	YOSSY_SW_0150	;Ｘスピード減速終了？ ( no:YOSSY_SW_0150 )
		NOP
;
		SUB	R0		;[ IBT R0,#0 ]
YOSSY_SW_0150
		SBK			;[ SMS R0,CPLMVSP ]
		SMS	R0,CPLXSPD
;
;-------------- 泳ぎ初期パターンセット --------------------------
		mDJMP	YOSSY_SW_0500
;
;-------------- 水中泳ぎ処理 --------------------------------------------
YOSSY_SW_0200
;
;-------------- Ｘ方向移動チェック ------------------------------
		IBT	R0,#ON_WATR	;水中歩きセット
		SMS	R0,CPLBGNO
		LM	R1,CMKEYC1	;(R1) <-- コントローラー情報（連続）
		mJSR	PL_KEY_XMOV	;コントローラー入力（Ｘスピード制御）
;
;-------------- 下向きチェック ----------------------------------
;;;;		    LM	    R1,CMKEYC1	    ;(R1) <-- コントローラー情報（連続）
;
		IBT	R9,#-1		;(R9) <-- 下向きフラグ減算データ
		LMS	R8,CPLDWFG	;(R8) <-- 下向きフラグ
		FROM	R1
		AND	#00000100B
		BEQ	YOSSY_SW_0202	;下向く？ ( no:YOSSY_SW_0202 )
		SUB	R0		;[ (R0) <-- ＭＡＸチェックデータ ]
;
		IBT	R9,#1		;(R9) <-- 下向きフラグ加算データ
		IBT	R0,#9		;(R0) <-- ＭＡＸチェックデータ
YOSSY_SW_0202
		SUB	R8
		BEQ	YOSSY_SW_0204	;下向きフラグＭＡＸ？ ( yes:YOSSY_SW_0204 )
		ADD	R8
;
		FROM	R8
		ADD	R9
		SBK			;[ SMS R0,CPLDWFG ]
YOSSY_SW_0204
;
;-------------- 水中泳ぎキャンセルチェック ------------------------------
		LMS	R2,CPLYSPD	;(R2) <-- Ｙスピード
		IBT	R3,#0F0H	;[ IWT R2,#0FFF0H ] (R3) <-- 浮力
;
		LMS	R0,CPLBGCR
		IBT	R4,#000011000B
		AND	R4
		BNE	YOSSY_SW_0232	;頭ＢＧ当たり？ ( yes:YOSSY_SW_0232 )
		NOP
;
		LMS	R7,CPLWATR	;(R7) <-- 水中フラグ
		FROM	R7
		AND	R4
		BNE	YOSSY_SW_0240	;頭水中？ ( yes:YOSSY_SW_0240 )
		NOP
;
		FROM	R9		;[ 0,-1 <- 1,-1 ]
		ASR			;
		ADD	R8
		SUB	#2
		BNE	YOSSY_SW_0206	;下向き”バッシャーン”効果セット？ ( no:YOSSY_SW_0206 )
		NOP
;
;-------------- 水しぶきセット ----------------------------------
		mJSR	WTUP0_SET	;”バッシャーン”効果セット
;
;-------------- ”ピチャピチャ”セット --------------------------
YOSSY_SW_0206
		mJSR	WTUP1_SET	;”ピチャピチャ”効果セット
;
;-------------- 水面ジャンプチェック ----------------------------
		LMS	R1,CP_KEY_JUMP	;(R1) <-- ジャンプボタン情報
;;;;		    LMS	    R0,CP_KEY_JUMP  ;(R0) <-- ジャンプボタン情報
;;;;		    IWT	    R1,#0000100000000000B
;;;;		    TO	    R1		    ;(R1) <-- ジャンプｕｐキー
;;;;		    OR	    R1
		LMS	R0,CMKEYC1L	;(R0) <-- コントローラー情報（連続）
		AND	R1
;;;;		    SUB	    R1
		BEQ	YOSSY_SW_0210	;ジャンプｕｐキー入力？ ( no:YOSSY_SW_0210 )
		NOP
;
		LMS	R0,CPLDWFG
		SUB	#0
;;;;		    LMS	    R1,CPLDWFG
;;;;		    OR	    R1
		BNE	YOSSY_SW_0210	;ジャンプＯＫ？ ( no:YOSSY_SW_0210 )
		NOP
;
		IWT	R0,#P006
		SMS	R0,CPLJUMP	;ジャンプフラグセット
		IWT	R0,#0FB80H
		SMS	R0,CPLYSPD	;ジャンプＹスピードセット
;;;;		    IBT	    R0,#01H
;;;;		    SMS	    R0,CPLSPJP	    ;ジタバタジャンプフラグ”ＯＮ”
		BRA	YOSSY_SW_0220
		SUB	R0		;[ * 泳ぎキャンセル ]
;
YOSSY_SW_0210
		IWT	R0,#101000000B
		AND	R7
		BNE	YOSSY_SW_0240	;水面に顔が出た？ ( no:YOSSY_SW_0240 )
		SUB	R0		;[ * R0 <- 0 ]
;
		LMS	R4,CPLJUMP
		SUB	R4		;[ * CMP #0 : R0=0 ]
		BNE	YOSSY_SW_0230	;着地？ ( no:YOSSY_SW_0230 )
		SUB	R0		;[ * 泳ぎキャンセル ]
;
YOSSY_SW_0220
		SMS	R0,CPLSWIM	;泳ぎキャンセル
;
;-------------- 水しぶきセット ----------------------------------
		mJSR	WTUP0_SET	;”バッシャーン”効果セット
		mDJMP	YOSSY_SW_0600
;
YOSSY_SW_0230
		IBT	R0,#0D0H	;[ IWT R0,#0FFD0H ]
		SUB	R2
		BMI	YOSSY_SW_0232	;上昇スピードオーバー？ ( no:YOSSY_SW_0232 )
		TO	R2		;[ * ]
;
		ADD	R2		;[ PLYSPD <-- 0FFD0H ]
YOSSY_SW_0232
		IBT	R3,#02H		;(R2) <-- 重力
;
;-------------- あぶくセット ------------------------------------
YOSSY_SW_0240
		mJSR	BABL0_SET	;あぶく効果セット
;
;-------------- 浮力セット --------------------------------------
YOSSY_SW_0250
		FROM	R2
		ADD	R3
		IWT	R3,#0FF00H
		SUB	R3
		BMI	YOSSY_SW_0300	;上昇スピードオーバー？ ( no:YOSSY_SW_0300 )
		TO	R3
;
		ADD	R3
YOSSY_SW_0300
		SMS	R3,CPLYSPD
;
;-------------- 泳ぎパターンセット ------------------------------
		LMS	R1,CPLWALK	;(R1) <-- 泳ぎパターンカウンター
		LMS	R0,CPLWKTM
		LOB
		BNE	YOSSY_SW_0340	;泳ぎパターン切り替え？ ( no:YOSSY_SW_0340 )
		NOP
;
		IBT	R0,#4		;泳ぎパターン切り替えタイマーセット
		SBK			;[ SMS R0,CPLWKTM ]
;
		LM	R0,CMKEYC1	;(R0) <-- コントローラー情報（連続）
		AND	#00000011B	;[ (Z) <-- 移動キー入力？ ]
;
		IBT	R0,#(7+1)*2	;(R0) <-- 目標泳ぎパターンカウンター（ダミー）
		BNE	YOSSY_SW_0310	;移動キー入力？ ( yes:YOSSY_SW_0310 )
		NOP
;
		LMS	R0,CPLXSPD
		IBT	R2,#040H
		ADD	R2
		IWT	R2,#040H*2+1
		SUB	R2
		BCC	YOSSY_SW_0310	;移動中？？ ( no:YOSSY_SW_0310 )
		SUB	R0		;(R0) <-- 目標泳ぎパターンカウンター
;
		IBT	R0,#3*2		;(R0) <-- 目標泳ぎパターンカウンター
YOSSY_SW_0310
		SUB	R1
		BEQ	YOSSY_SW_0340	;目標泳ぎパターンカウンター？ ( yes:YOSSY_SW_0340 )
		NOP			;(R0) <-- 泳ぎパターンカウンター加算値
;
		IBT	R0,#-2		;(R0) <-- 泳ぎパターンカウンター加算値
		BMI	YOSSY_SW_0320
		NOP
;
		IBT	R0,#2		;(R0) <-- 泳ぎパターンカウンター加算値
YOSSY_SW_0320
		TO	R1
		ADD	R1
		IBT	R0,#7*2
		SUB	R1
		BCS	YOSSY_SW_0330	;移動パターンＭＡＸオーバー？ ( no:YOSSY_SW_0330 )
		NOP
;
		IBT	R1,#4*2
YOSSY_SW_0330
		SMS	R1,CPLWALK	;泳ぎパターンカウンターセット
;
YOSSY_SW_0340
		LMS	R0,CPLDWFG
		DEC	R0
		BMI	YOSSY_SW_0350	;下向き？ ( no:YOSSY_SW_0350 )
		INC	R0
;
		SUB	#9
		BCS	YOSSY_SW_0350	;下向き中間ポーズ？ ( no:YOSSY_SW_0350 )
		INC	R1
;
;-------------- 下向き中間ポーズパターンセット ----------
		ADD	#9
		ADD	R0
		IWT	R14,#SWIM_DW_PATN
		TO	R14
		BRA	YOSSY_SW_0500
		ADD	R14
;
;-------------- 泳ぎパターンセット ----------------------
YOSSY_SW_0350
		IWT	R0,#SWIM_PATN
		ADD	R1
		TO	R14
		ADD	R1
;
;-------------- パターンＮｏ．セット ------------------------------------
YOSSY_SW_0500
;
;-------------- 回転パターンセット ------------------------------
		LMS	R0,CPROTSP
		MOVES	R2,R0
		BEQ	YOSSY_SW_0508	;回転？ ( no:YOSSY_SW_0508 )
		NOP
;
		mJSR	PL_ROT_PATN_ST
		BRA	YOSSY_SW_0600
		NOP
;
YOSSY_SW_0508
		LMS	R0,CBERFLG
		DEC	R0
		BPL	YOSSY_SW_0600	;舌ショット中？ ( yes:YOSSY_SW_0600 )
		NOP
;
		LMS	R0,CPLNAGE
		LOB
		BEQ	YOSSY_SW_0510	;タマゴ投げ中？ ( no:YOSSY_SW_0510 )
		ADD	R0		;x2
;
;-------------- タマゴ投げパターンセット ----------------------
		IWT	R14,#NAGE_PATN-2
		TO	R14
		ADD	R14
;
YOSSY_SW_0510
		GETB
		INC	R14
		GETBH			;(R0) <-- パターンＮｏ．
		SMS	R0,CPLPATN	;パターンＮｏ．セット
;
YOSSY_SW_0600
		SUB	R0		;<<< end >>>
		STOP
		NOP
;
;------------------------------------------------------------------------
;-		水中チェック						-
;------------------------------------------------------------------------
WATR_CHECK
		SMS	R11,RTS2	;[ return address save ]
;
		IWT	R1,#110010100B	;(R1) <-- 左チェックデータ
		LMS	R0,CPLXPSL
		AND	#08H
		BEQ	WATR_CHECK_0010
		NOP
;
		IBT	R1,#001101001B	;(R1) <-- 右チェックデータ
WATR_CHECK_0010
		LMS	R0,CPLWATR
		AND	R1
		SUB	R1
		BEQ	WATR_CHECK_0100	  ;水中につかってる？ ( yes:WATR_CHECK_0100 )
		ADD	R1
;
;-------------- 水中歩きチェック ----------------------------------------
		IBT	R4,#0CH		;(R4) <-- ”バッシャーン”セットＹ位置
;
		IWT	R1,#010100000B
		AND	R1
		BEQ	WATR_CHECK_0020	  ;足下水中？ ( no:WATR_CHECK_0020 )
		NOP
;
		LMS	R0,CPLJUMP
		DEC	R0
		BMI	WATR_CHECK_0030	  ;着地？ ( yes:WATR_CHECK_0030 )
		NOP
;
WATR_CHECK_0020
		LMS	R0,CPLSWLK
		DEC	R0
		BPL	WATR_CHECK_0110	  ;前回水中歩き？ ( yes:WATR_CHECK_0110 )
		NOP
;
		BRA	WATR_CHECK_0300
		NOP
;
WATR_CHECK_0030
		LMS	R0,CPLSWLK
		SMS	R0,CPLBGNO	;水中歩きセット
		DEC	R0
		BMI	WATR_CHECK_0040	  ;前回水中歩き？ ( no:WATR_CHECK_0040 )
		NOP
;
;-------------- 水中歩き処理 ------------------------------------
		LMS	R0,CPLSITD
		SUB	#2
		BEQ	WATR_CHECK_0200	  ;座った時の水しぶきセット？ ( yes:WATR_CHECK_0200 )
		NOP
;
		mJSR	WTUP1_SET	;”ピチャピチャ”効果セット
		BRA	WATR_CHECK_0300
		NOP
;
;-------------- 水中歩き初期セット ------------------------------
WATR_CHECK_0040
		IBT	R0,#ON_WATR	;水中歩きフラグセット
		SMS	R0,CPLSWLK
		SUB	R0		;Ｘスピードクリアー
		SMS	R0,CPLMVSP
		SMS	R0,CPLXSPD
		BRA	WATR_CHECK_0200
		NOP
;
;-------------- 水中泳ぎチェック ----------------------------------------
WATR_CHECK_0100
		IBT	R4,#00H		;(R4) <-- ”バッシャーン”セットＹ位置
;
;;;;		    LMS	    R0,CPLJUMP
;;;;		    SUB	    #0
;;;;		    BEQ	    WATR_CHECK_0200   ;着地？ ( yes:WATR_CHECK_0200 )
;;;;		    NOP
;
		LMS	R1,CPLYSPD	;(R1) <-- Ｙスピード
		MOVES	R1,R1
		BMI	WATR_CHECK_0200	  ;上昇中？ ( yes:WATR_CHECK_0200 )
		SUB	R0		;[ R0 <- 0 ]
;
		SMS	R0,CPLDOSN	;”ドスーン！！”フラグリセット
		SMS	R0,CPLWALK	;泳ぎパターンカウンターリセット
		SMS	R0,CPLWKTM	;	   ”	       切り替えタイマーリセット
		SMS	R0,CPLDWFG	;下向きフラグリセット
		INC	R0		;[ IBT R0,#01H ]
		SMS	R0,CPLSWIM	;水中泳ぎフラグセット
;
		IWT	R0,#0280H
		SUB	R1
		BPL	WATR_CHECK_0110	  ;飛び込みＹスピードオーバー？ ( no:WATR_CHECK_0110 )
		ADD	R1
;
		SMS	R0,CPLYSPD
WATR_CHECK_0110
		SUB	R0		;[ IBT R0,#0 ]
		SMS	R0,CPLSWLK	;水中歩きフラグリセット
;
;-------------- 水しぶきセット ----------------------------------
WATR_CHECK_0200
		mJSR	WTUP0_SET_2	;”バッシャーン”効果セット
;
WATR_CHECK_0300
		LMS	R11,RTS2	;[ return address load ]
		mRTS
;
;------------------------------------------------------------------------
;-		”バッシャーン”効果セット				-
;-			in :						-
;-				(R4) <-- ”バッシャーン”セットＹ位置	-
;-			break :						-
;-				(R0)(R1)(R5)(R12)(R13)			-
;------------------------------------------------------------------------
WTUP0_SET
		IBT	R4,#04H		;(R4) <-- ”バッシャーン”セットＹ位置
WTUP0_SET_2
		LMS	R0,CPTIMNG
		DEC	R0
		BPL	WTUP0_SET_010	;セットＯＫ？ ( no:WTUP0_SET_010 )
		NOP
;
		IBT	R0,#010H	;”バッシャーン”セットウェイトタイマーセット
		SBK			;[ SMS R0,CPTIMNG ]
;
		IBT	R0,#05FH
		SMS	R0,CMSOUND3	;[♪]
;
		SMS	R11,RTS0	;[ return address save ]
;
		IWT	R5,#WTUP0	;(R5) <-- 効果Ｎｏ．（水しぶき）
		mJSR	M_EXINSR	;効果エリア確保
;
;-------------- 水しぶきの初期セット ----------------------------
		LMS	R5,CPLXPSL
		mSTW	R5,CEXXPSL,R1	;Ｘ座標セット
		LMS	R0,CPLYPSL
		ADD	R4
		TO	R5
		BIC	#0FH		;[ AND #0FFF0H ]
		mSTW	R5,CEXYPSL,R1	;Ｙ座標セット
		IBT	R5,#WUP0P
		mSTW	R5,CEXWRK0,R1	;カウンター初期セット
		IBT	R5,#3
		mSTW	R5,CEXTIM0,R1	;タイマー初期セット
;
		LMS	R11,RTS0	;[ return address load ]
WTUP0_SET_010
		mRTS
;
;------------------------------------------------------------------------
;-		”ピチャピチャ”効果セット				-
;-			in :						-
;-				(R4) <-- ”ピチャピチャ”セットＹ位置	-
;-			break :						-
;-				(R0)(R1)(R5)(R6)(R12)(R13)(R14)		-
;------------------------------------------------------------------------
WTUP1_SET
		IBT	R4,#0AH		;(R4) <-- ”ピチャピチャ”セットＹ位置
WTUP1_SET_2
		LMS	R0,CPLXSPD
		SUB	#0
		BEQ	WTUP1_SET_020	;Ｘ移動？ ( no:WTUP1_SET_020 )
		NOP
;
		IBT	R6,#00H		;(R6) <-- セット向き
		BPL	WTUP1_SET_010
		NOP
;
		IBT	R6,#02H		;(R6) <-- セット向き
		NOT
		INC	R0
WTUP1_SET_010
		HIB
		ADD	R0
		IWT	R14,#WTUP1_STDT
		TO	R14
		ADD	R14
		GETB
		LM	R5,CFRCNT2
		AND	R5
		BNE	WTUP1_SET_020	;”ピチャピチャ”セットＯＫ？ ( no:WTUP1_SET_020 )
		INC	R14
;
		SMS	R11,RTS0	;[ return address save ]
;
		IWT	R5,#WTUP1	;(R5) <-- 効果Ｎｏ．（”ピチャピチャ”）
		mJSR	M_EXINSR	;効果エリア確保
;
;-------------- ”ピチャピチャ”初期セット ----------------------
		LMS	R0,CPLJUMP
		DEC	R0
		IBT	R0,#03H
		BPL	WTUP1_SET_012	;水中歩き？ ( no:WTUP1_SET_012 )
		NOP
;
		IBT	R0,#060H
WTUP1_SET_012
		SMS	R0,CMSOUND3	;[♪]
;
		mSTW	R6,CEXMUKI,R1	;向きセット
		LMS	R5,CPLXPSL
		mSTW	R5,CEXXPSL,R1	;Ｘ座標セット
		LMS	R0,CPLYPSL
		ADD	R4
		BIC	#0FH		;[ AND #0FFF0H ]
		TO	R5
		GETB
		TO	R5
		ADD	R5
		mSTW	R5,CEXYPSL,R1	;Ｙ座標セット
		IBT	R5,#WUP1P
		mSTW	R5,CEXTIM0,R1	;タイマー初期セット
;
		LMS	R11,RTS0	;[ return address load ]
WTUP1_SET_020
		mRTS
;
;------------------------------------------------------------------------
;-		あぶく効果セット					-
;-			in :						-
;-				(R4) <-- あぶくセットＸ位置		-
;-				(R6) <-- あぶくセットＹ位置		-
;-			break :						-
;-				(R0)(R1)(R5)(R12)(R13)			-
;------------------------------------------------------------------------
BABL0_SET
		IBT	R4,#010H
		IBT	R6,#0F8H	;[ IWT R6,#0FFF8H ]
BABL0_SET_2
		LM	R0,CFRCNT2
		IBT	R5,#7FH
		AND	R5
		BNE	BABL0_SET_020	;あぶくセットＯＫ？ ( no:BABL0_SET_020 )
		NOP
;
		SMS	R11,RTS0	;[ return address save ]
;
		IWT	R5,#BABL0	;(R5) <-- 効果Ｎｏ．（あぶく）
		mJSR	M_EXINSR	;効果エリア確保
;
;-------------- あぶく初期セット --------------------------------
		LM	R5,CRANDM0
		mSTW	R5,CEXWRK0,R1	;ランダムデータセット
		LMS	R5,CPLXPSL	;(R5) <-- プレイヤーＸ座標
		LMS	R0,CPLCMKI
		DEC	R0
		BMI	BABL0_SET_010
		FROM	R4
;
		NOT
		ADD	#4
BABL0_SET_010
		TO	R5
		ADD	R5
		mSTW	R5,CEXXPSL,R1	;Ｘ座標セット
		LMS	R0,CPLYPSL
		TO	R5
		ADD	R6
		mSTW	R5,CEXYPSL,R1	;Ｙ座標セット
		IBT	R5,#0FFH	;[ !=0 ]
		mSTW	R5,CEXTIM0,R1	;タイマー初期セット
;
		LMS	R11,RTS0	;[ return address load ]
BABL0_SET_020
		mRTS
;
;;;;;************************************************************************
;;;;;*									    *
;;;;;*		    タイマー計算					    *
;;;;;*									    *
;;;;;************************************************************************
;;;;;
;;;;TIMER_CALC
;;;;		    IWT	    R1,#CMTIMST	    ;(R1) <-- タイマーＲＡＭポインター
;;;;		    IBT	    R2,#00	    ;(R2) <-- ０チェック用データ
;;;;;
;;;;		    CACHE
;;;;;
;;;;		    IBT	    R12,#(CMTIMEN-CMTIMST)/2
;;;;		    MOVE    R13,R15
;;;;TIMER_CALC_010
;;;;		    LDW	    (R1)
;;;;		    SUB	    R2
;;;;		    BEQ	    TIMER_CALC_020  ;タイマー０？ ( yes:TIMER_CALC_020 )
;;;;		    DEC	    R0
;;;;;
;;;;		    SBK			    ;[ STW (R1) ]
;;;;TIMER_CALC_020
;;;;		    INC	    R1
;;;;		    LOOP
;;;;		    INC	    R1
;;;;;
;;;;		    mRTS
;
;************************************************************************
;*									*
;*		座標計算（重力セット）					*
;*									*
;************************************************************************
;
PL_CALC
		LMS	R0,CPLSTFG
		ADD	R0
		BCC	PL_CALC_FFFE	;赤ちゃん捕獲中？ ( no:PL_CALC_FFFE )
		NOP
;
		mRTS
;
PL_CALC_FFFE
		LMS	R1,CMKEYC1L	;(R1) <-- コントローラー情報
		LMS	R2,CPLYSPD	;(R2) <-- Ｙスピード
		LMS	R0,CPLSPJP
		TO	R3		;(R3) <-- ジタバタジャンプフラグ
		LOB
		HIB
		TO	R8		;(R8) <-- 敵踏んずけジタバタジャンプフラグ
		SWAP
;
		LM	R4,CPL_ADD_XSP	;(R4) <-- プレイヤーＸ方向圧力
		SUB	R0
		SBK			;[ SM R0,CPL_ADD_XSP ]
		LMS	R0,CPLMVSP
		TO	R6		;(R6) <-- 移動スピード
		ADD	R4
;
		LMS	R5,CPLJUMP	;(R5) <-- ジャンプフラグ
		DEC	R5
		BPL	PL_CALC_0100	;プレイヤージャンプ ？ ( yes:PL_CALC_0100 )
		INC	R5
;
		MOVES	R4,R4
		BNE	PL_CALC_FFFF	;滝床？ ( yes:PL_CALC_FFFF )
		SUB	R0		;ジタバタジャンプフラグ”ＯＦＦ”
;
		INC	R0		;ジタバタジャンプフラグ”ＯＮ”
PL_CALC_FFFF
		SMS	R0,CPLSPJP	;ジタバタジャンプフラグセット
;
;------------------------------------------------------------------------
;-		プレイヤー着地状態					-
;------------------------------------------------------------------------
PL_CALC_NOJUMP
		IBT	R0,#BANK LCOS
		ROMB			;※ＲＯＭアドレス変更（<XY_CALC>にて復帰）
;
		LMS	R7,CPLANGL	;(R7) <-- 足下角度
		IWT	R0,#LCOS
		TO	R14
		ADD	R7
		GETBS
		ADD	R0
		ADD	R0		;[ 100H <-- 040H ]
		LMULT
		WITH	R4
		HIB
		LOB
		SWAP
		TO	R9		;(R9) <-- Ｘスピード
		OR	R4
		SMS	R9,CPLXSPD	;Ｘスピードセット
;
		BPL	PL_CALC_0000
		WITH	R9
;
		NOT
		INC	R9
;
PL_CALC_0000
		LM	R0,CONLFFG
		SUB	#0
		BEQ	PL_CALC_0010	;リフトに乗ってる？ ( no:PL_CALC_0010 )
		NOP
;
		mDJMP	PL_CALC_0200
;
PL_CALC_0010
		LMS	R0,CPLTYPE	;くるまよしお ?
		SUB	#P_CAR		;
		BEQ	PL_CALC_0040	; yes: PL_CALC_0040
		NOP

		IWT	R0,#LSIN
		TO	R14
		ADD	R7
		GETBS
		ADD	R0
		ADD	R0		;[ 100H <-- 040H ]
		LMULT
		WITH	R4
		HIB
		LOB
		SWAP
		OR	R4
		SM	R0,CPL_ANGL_YSP ;移動角度Ｙスピードセット
		BMI	PL_CALC_0012	;上昇？ ( yes:PL_CALC_0012 )
		NOP
;
		ADD	R9		;Ｘスピード加算
PL_CALC_0012
;;;;		    IWT	    R4,#01FFH	    ;※足が離れるのを防ぐため
		IWT	R4,#0300H	;※足が離れるのを防ぐため
;;;;		    LMS	    R5,CBG2OF_FG
;;;;		    DEC	    R5
;;;;		    BMI	    PL_CALC_0014    ;オフセットモード？ ( no:PL_CALC_0014 )
;;;;		    NOP
;;;;;
;;;;		    IWT	    R4,#0300H	    ;※足が離れるのを防ぐため
;;;;PL_CALC_0014
		ADD	R4
;;;;;;;;		IWT	R4,#0400H
;;;;		    IWT	    R4,#0600H
		IWT	R4,#0700H
		SUB	R4
		BMI	PL_CALC_0020	;ＭＡＸＹスピードオーバー？ ( no:PL_CALC_0020 )
		ADD	R4
;
		MOVE	R0,R4
PL_CALC_0020
		SMS	R0,CPLYSPD	;Ｙスピードセット
;
PL_CALC_0040
		mDJMP	XY_CALC
;
;------------------------------------------------------------------------
;-		プレイヤージャンプ中					-
;------------------------------------------------------------------------
PL_CALC_0100
		SMS	R6,CPLXSPD	;Ｘスピードセット
;;;;		    SUB	    R0
;;;;		    SMS	    R0,CPLSITD	    ;お座りキャンセル（ジタバタジャンプしない様に）
;
		DEC	R3
		BPL	PL_CALC_0106	;ジタバタジャンプ中？ ( yes:PL_CALC_0106 )
		INC	R3
;
;-------------- ＮＥＸＴジタバタジャンプチェック ------------------------
		LMS	R0,CMKEYC2L	;(R0) <-- コントローラー情報（トリガー）
;;;;		    LMS	    R0,CMKEYC1L	    ;(R0) <-- コントローラー情報（トリガー）
		LMS	R7,CP_KEY_JUMP	;(R7) <-- ジャンプボタン情報
		AND	R7
		BEQ	PL_CALC_0102	;ジャンプキー入力？ ( no:PL_CALC_0102 )
		NOP
;
		LMS	R0,CPSPJTM
		SUB	#8
		BCC	PL_CALC_0104	;ＮＥＸＴジタバタジャンプＯＫ？ ( yes:PL_CALC_0104 )
		NOP
;
PL_CALC_0102
		mDJMP	PL_CALC_0200
;
PL_CALC_0104
		IBT	R3,#01H		;ＮＥＸＴジタバタジャンプ”ＯＮ”
		SMS	R3,CPLSPJP
;
;-------------- ジタバタジャンプ ----------------------------------------
PL_CALC_0106
		LMS	R0,CPSPJTM
		DEC	R0
		BPL	PL_CALC_0102	;ジタバタジャンプウェイト？ ( yes:PL_CALC_0102 )
		NOP
;
		LMS	R0,CPLTYPE
		DEC	R0
		BMI	PL_CALC_0107	;変身中？ ( no:PL_CALC_0107 )
		INC	R0
;
		IBT	R7,#P_MARIO
		SUB	R7
		BNE	PL_CALC_0190	;マリオ以外の変身？ ( yes:PL_CALC_0190 )
		NOP
;
PL_CALC_0107
		LMS	R0,CPLSITD
		DEC	R0
		BPL	PL_CALC_0190	;お座り？ ( yes:PL_CALC_0190 )
		DEC	R3
;
		BNE	PL_CALC_0110	;ジタバタジャンプ初期セット？ ( no:PL_CALC_0110 )
		INC	R3
;
;-------------- ジタバタジャンプ初期セット ----------------------
;;;;		    IWT	    R0,#0110H
		IWT	R0,#0160H
		SUB	R2
		BPL	PL_CALC_0200	;ジタバタジャンプセット？ ( no:PL_CALC_0200 )
		NOP
;
		LMS	R0,CP_KEY_JUMP	;(R0) <-- ジャンプボタン情報
		AND	R1
		BNE	PL_CALC_0108	;ジャンプキー入力？ ( yes:PL_CALC_0108 )
		NOP
;
		mDJMP	PL_CALC_0210
;
PL_CALC_0108
		INC	R3		;(R3) <-- 02H
		FROM	R3
		OR	R8
		SMS	R0,CPLSPJP	;ジタバタジャンプセット
;
;-------------- ジタバタジャンプ処理 ----------------------------
PL_CALC_0110
		LMS	R0,CP_KEY_JUMP	;(R0) <-- ジャンプボタン情報
		AND	R1
		BEQ	PL_CALC_0190	;ジャンプキー入力？ ( no:PL_CALC_0190 )
		NOP
;
		LMS	R0,CPLTYPE
		IBT	R7,#P_MARIO
		SUB	R7
		BNE	PL_CALC_0111	;マリオ？ ( no:PL_CALC_0111 )
		NOP
;
		mDJMP	MR_HOBARING
;
PL_CALC_0111
;;;;		    IWT	    R0,#0FE70H
		IWT	R0,#0FE80H
		MOVES	R8,R8
		BPL	PL_CALC_0112	;敵踏んずけジタバタジャンプ？ ( no:PL_CALC_0112 )
		NOP
;
		IWT	R0,#0FD40H
PL_CALC_0112
		SUB	R2
		BPL	PL_CALC_0190	;ジタバタジャンプ終了？ ( yes:PL_CALC_0190 )
		NOP
;
		LMS	R0,CPLJPTM
		LOB
		BNE	PL_CALC_0130	;ジタバタパターン切り替え？ ( no:PL_CALC_0130 )
		INC	R0
;
		INC	R0		;[ IBT R0,#02H ]
		SBK			;[ SMS R0,CPLJPTM ]
;
		INC	R3
		FROM	R3
		SUB	#08H+1-1
		BCC	PL_CALC_0120
		INC	R3
;
		IBT	R3,#04H
;
		IBT	R0,#037H
		SMS	R0,CMSOUND3	;[♪]
;
PL_CALC_0120
		FROM	R3
		OR	R8
		SMS	R0,CPLSPJP	;ジタバタパターンセット
;
PL_CALC_0130
		IWT	R0,#-0110H
		ADD	R2
		BPL	PL_CALC_0140
		NOP
;
		SUB	R0
PL_CALC_0140
		LSR
		LSR
		LSR
		NOT
		IBT	R7,#0F0H+1	;[ IWT R7,#0FFF0H+1 ]
		BRA	PL_CALC_0220
		ADD	R7
;
;-------------- ジタバタジャンプ終了 ----------------------------
PL_CALC_0190
		IBT	R3,#00
		SMS	R3,CPLSPJP
;;;;		    IBT	    R0,#010H	    ;ジタバタジャンプＮＥＸＴウェイトタイマー
		IBT	R0,#012H	;ジタバタジャンプＮＥＸＴウェイトタイマー
		SMS	R0,CPSPJTM
		IWT	R0,#P006	;ジャンプパターンリセット
		SMS	R0,CPLJUMP
;
;-------------- 普通のジャンプ ------------------------------------------
PL_CALC_0200
		LMS	R0,CPHBOYO
		DEC	R0
		BPL	PL_CALC_0220	;頭ＢＧ当たり”ボヨヨーン”？ ( yes:PL_CALC_0220 )
		SUB	R0		;無重力セット
;
		IBT	R7,#040H
		LMS	R0,CPLTYPE
		SUB	#P_CAR
		BEQ	PL_CALC_0220	;くるま? ( yes:PL_CALC_0220 )
		FROM	R7

		IBT	R7,#028H	;(R7) <-- 軽い重力
		LMS	R0,CP_KEY_JUMP	;(R0) <-- ジャンプボタン情報
		AND	R1
		BNE	PL_CALC_0220	;軽い重力？ ( yes:PL_CALC_0220 )
		FROM	R7
;
PL_CALC_0210
		IWT	R0,#0A0H	;(R0) <-- 重い重力
;
PL_CALC_JUMP
PL_CALC_0220
		TO	R2		;(R2) <-- 計算後Ｙスピード
		ADD	R2
		BMI	PL_CALC_0250	;上昇中？ ( yes:PL_CALC_0250 )
		NOP
;
		IWT	R0,#0400H
		SUB	R2
		BCS	PL_CALC_0230	;最大落下スピードオーバー？ ( no:PL_CALC_0230 )
		ADD	R2
;
		MOVE	R2,R0
PL_CALC_0230
		MOVES	R5,R5		;※リフトに乗っている時の為
		BEQ	PL_CALC_0250	;ジャンプ中？ ( no:PL_CALC_0250 )
		FROM	R3
;
;-------------- 落下パターンセット ------------------------------
		SUB	#02H
		BCS	PL_CALC_0250	;ジタバタジャンプ中？ ( yes:PL_CALC_0250 )
		NOP
;
		IWT	R7,#P008	;(R7) <-- 落下パターンＮｏ．
		FROM	R5
		SUB	R7
		BCS	PL_CALC_0240	;落下パターンＭＡＸ？ ( yes:PL_CALC_0240 )
		NOP
;
		LMS	R0,CPLJPTM
		LOB
		BNE	PL_CALC_0240	;パターン切り替え？ ( no:PL_CALC_0240 )
		NOP
;
		INC	R5
		IBT	R0,#08H
		SMS	R0,CPLJPTM
PL_CALC_0240
		SMS	R5,CPLJUMP	;ジャンプパターンセット
;
PL_CALC_0250
		SMS	R2,CPLYSPD	;Ｙスピードセット
;
;------------------------------------------------------------------------
;-		Ｘ，Ｙ座標計算						-
;------------------------------------------------------------------------
XY_CALC
		IBT	R0,#BANK PLAYER_DATA
		ROMB			;ＲＯＭアドレス復帰
;
		LMS	R1,CPLXSPD	;(R1) <-- Ｘスピード
		LMS	R2,CPLYSPD	;(R2) <-- Ｙ   ”
;
;-------------- 座標計算 ------------------------------------------------
XY_CALC_0500
		LM	R0,CPOLYONFG
		SUB	#0
		BEQ	XY_CALC_0540	;横回転ＢＧ３ポリゴン乗ってる？ ( no:XY_CALC_0540 )
		NOP
;
;-------------- 横回転ＢＧ３ポリゴンＸ座標計算 ------------------
		IBT	R0,#BANK COS
		ROMB
;
		LM	R3,CPOLYANG	;(R3) <-- 横回転ＢＧ３ポリゴン回転角度
		IWT	R0,#COS
		ADD	R3
		TO	R14
		ADD	R3
		GETB
		INC	R14
		TO	R6		;(R6) <-- ＣＯＳデータ
		GETBH
;
		IBT	R0,#-40H
		ADD	R3
		SWAP			;(N) set
		BMI	XY_CALC_0510
		WITH	R1
;
		NOT
		INC	R1
XY_CALC_0510
		LM	R0,CPOLYPLXD
		LOB
		ADD	R1		;(C)
		SBK			;[ SMS CPLXSDR ]
		HIB
		SEX
		LM	R1,CPOLYPLXL
		ADD	R1
		SBK			;[ SMS CPOLYPLXL ]
;
		LMULT
		WITH	R4
		HIB
		LOB
		SWAP
		OR	R4
		LM	R3,CPOLYXPS
		ADD	R3
		SMS	R0,CPLXPSL
;
		IBT	R0,#BANK PLAYER_DATA
		ROMB			;ＲＯＭアドレス復帰
;
		BRA	XY_CALC_0550
		NOP
;
XY_CALC_0540
		LMS	R0,CPLXSDR
		LOB
		ADD	R1		;(C)
		SBK			;[ SMS CPLXSDR ]
		HIB
		SEX
		LMS	R1,CPLXPSL
		ADD	R1
		SBK			;[ SMS CPLXPSL ]
;
XY_CALC_0550
		LMS	R0,CPLYSDR
		LOB
		ADD	R2		;(C)
		SBK			;[ SMS CPLYSDR ]
		HIB
		SEX
		LMS	R2,CPLYPSL
		ADD	R2
		SBK			;[ SMS CPLYPSL ]
;
		mRTS
;
;----------------------------------------------------------------
;-		マリオホバリング処理				-
;----------------------------------------------------------------
MR_HOBARING
		IWT	R6,#0100H	;(R6) <-- ＭＡＸＹスピード
;
		FROM	R3
		SUB	#2+3
		BCC	MR_HOBARING_008 ;ホバリング状態？ ( no:MR_HOBARING0_008 )
		NOP
;
		IBT	R0,#BANK SIN
		ROMB
;
		LMS	R7,CPMR_ANGL	;(R7) <-- ホバリング回転角度
		LMS	R5,CPMR_ANSP	;(R5) <-- ホバリング回転スピード
		MOVES	R5,R5
		BMI	MR_HOBARING_FFD
		SUB	R0
;
		IWT	R0,#00000011B*100H
		AND	R1		;(Z) set
		IBT	R0,#-1
		BEQ	MR_HOBARING_FFD ;加速？ ( no:MR_HOBARING_FFD )
		NOP
;
		IBT	R0,#-4
MR_HOBARING_FFD
		ADD	R7
		SEX			;(N) set
		IWT	R14,#0200H	;(R14) <-- ＭＡＸホバリング回転スピード
		IBT	R0,#010H
		BMI	MR_HOBARING_FFF
		NOP
;
		IWT	R14,#0FE00H	;(R14) <-- ＭＡＸホバリング回転スピード
		IWT	R0,#00000011B*100H
		AND	R1		;(Z) set
		IBT	R0,#0F2H	;[ IWT R0,#0FFF2H ]
		BEQ	MR_HOBARING_FFF ;加速？ ( no:MR_HOBARING_FFF )
		NOP
;
		ADD	R0		;x2
MR_HOBARING_FFF
		ADD	R5
		MOVE	R5,R0
		SUB	R14
		XOR	R14
		BMI	MR_HOBARING_000
		NOP
;
		MOVE	R5,R14
MR_HOBARING_000
		SMS	R5,CPMR_ANSP
;
		LMS	R0,CPMR_ANBF
		LOB
		ADD	R5
		SBK			;[ SMS R0,CPMR_ANBF ]
		HIB
		ADD	R7
		TO	R7
		LOB
		SMS	R7,CPMR_ANGL
;
MR_HOBARING_004
		IBT	R0,#018H
		ADD	R7
		LOB
		ADD	R0		;x2
		IWT	R14,#SIN
		TO	R14
		ADD	R14
		GETB
		INC	R14
		GETBH
		NOT
		INC	R0
		IWT	R6,#080H
		SUB	R6
		BPL	MR_HOBARING_020 ;ＭＡＸＹスピードオーバー？ ( yes:MR_HOBARING_020 )
		TO	R6		;(R6) <-- ＭＡＸＹスピード
;
		BRA	MR_HOBARING_020
		ADD	R6
;
MR_HOBARING_008
		LMS	R0,CPLJPTM
		LOB
		BNE	MR_HOBARING_020 ;ホバリングパターン切り替え？ ( no:MR_HOBARING_020 )
		NOP
;
		IBT	R0,#04H
		SBK			;[ SMS R0,CPLJPTM ]
;
		FROM	R3
		SUB	#2+3-1
		BNE	MR_HOBARING_010 ;ホバリング開始初期セット？ ( no:MR_HOBARING_010 )
		INC	R3
;
		IWT	R0,#0FF30H	;ホバリング用キャラクター回転スピード初期セット
		SMS	R0,CPMR_ANSP
		IWT	R2,#0FE40H	;(R2) <-- ホバリング開始Ｙスピード
MR_HOBARING_010
		SMS	R3,CPLSPJP	;ホバリングパターンセット
;
MR_HOBARING_020
		IBT	R0,#010H
		ADD	R2
		SUB	R6
		BPL	MR_HOBARING_030 ;最大落下スピードオーバー？ ( yes:MR_HOBARING_030 )
		TO	R6
;
		ADD	R6
MR_HOBARING_030
		SMS	R6,CPLYSPD	;Ｙスピードセット
		mDJMP	XY_CALC
;
;************************************************************************
;*									*
;*		ＢＧチェック						*
;*									*
;************************************************************************
;
PL_BGCK
		IWT	R14,#PLBGCK_POINT_SW ;(R14) <-- ＢＧチェックポイントデータポインター（泳ぎ）
		LMS	R0,CPLSWIM
		DEC	R0
		BPL	PL_BGCK_2	;泳いでる？ ( yes:PL_BGCK_2 )
		NOP
;
		IWT	R14,#PLBGCK_POINT_00 ;(R14) <-- ＢＧチェックポイントデータポインター（大）
		LMS	R0,CPLSITD
		SUB	#2
		BCC	PL_BGCK_2	;衝突サイズ小？ ( no:PL_BGCK_2 )
		NOP
;
		IWT	R14,#PLBGCK_POINT_01 ;(R14) <-- ＢＧチェックポイントデータポインター（小）
;
PL_BGCK_2
		SMS	R11,RTS2	;[ return address save ]
;
		LMS	R9,CPLXPSL	;(R9)  <-- プレイヤーＸ座標
		LMS	R10,CPLYPSL	;(R10) <--	”   Ｙ ”
		IBT	R2,#00		;(R2)  <-- ＢＧ当たりフラグクリアー
		SMS	R2,CPLWATR	;水中当たりフラグクリアー
		SMS	R2,CPLTNEL	;トンネル当たりフラグクリアー
		SMS	R2,CPLHARI	;ダメージＢＧ当たりフラグクリアー
		SMS	R2,CPLBGNO	;歩いている床のＢＧタイプクリアー
		SMS	R2,CPLANGL	;移動角度リセット
;
;------------------------------------------------------------------------
;-		左上サイドチェック					-
;------------------------------------------------------------------------
		IBT	R3,#001H	;(R3) <-- 補正向き
		IBT	R4,#0		;(R4) <-- 補正データ
		mJSR_X	BG_SIDECK_IN
		CACHE
;
;------------------------------------------------------------------------
;-		左下サイドチェック					-
;------------------------------------------------------------------------
		mJSR_X	BG_SIDECK+1
		HEX	3E		;[ SMS R11,RTS1 ]
;
;-------------- ドアチェック --------------------------------------------
		IWT	R0,#DR ;+BD
		AND	R7
		SMS	R0,CPLDOOR
;
;------------------------------------------------------------------------
;-		右上サイドチェック					-
;------------------------------------------------------------------------
		IBT	R3,#0FFH	;(R3) <-- 補正データ
		mJSR_X	BG_SIDECK+1
		HEX	3E		;[ SMS R11,RTS1 ]
;
;------------------------------------------------------------------------
;-		右下サイドチェック					-
;------------------------------------------------------------------------
		mJSR_X	BG_SIDECK+1
		HEX	3E		;[ SMS R11,RTS1 ]
;
		WITH	R9		;Ｘ座標補正
		ADD	R4
;
;------------------------------------------------------------------------
;-		サイド総合チェック					-
;------------------------------------------------------------------------
		LMS	R3,CPSPUSH	;(R3) <-- 横壁押しカウンターセット
		SUB	R0		;[ IBT R0,#0 ]
		SBK			;[ SMS R0,CPSPUSH ]
;
		MOVES	R1,R1
		BEQ	PL_BGCK_00200	;横当たりＯＫ？ ( no:PL_BGCK_00200 )
		SUB	R0
;
;-------------- 普通の当たり --------------------------------------------
		SMS	R0,CPLXSPD
		SMS	R0,CPLMVSP
;
;-------------- 横壁押しチェック --------------------------------
		LMS	R0,CPLJUMP
		DEC	R0
		BPL	PL_BGCK_00200	;ジャンプ中？ ( yes:PL_BGCK_00200 )
		FROM	R1
;
		AND	#0FH
		BEQ	PL_BGCK_0020	;左当たり？ ( yes:PL_BGCK_0020 )
		INC	R0		;[ IBT R0,#01H ]
;
		SUB	R0		;[ IBT R0,#0 ]
PL_BGCK_0020
		INC	R0		;[ 左:00000010B 右:00000001B ]
;
		LM	R1,CMKEYC1	;(R1) <-- コントローラー情報
		AND	R1
		BEQ	PL_BGCK_0040	;横壁押しキー入力？ ( no:PL_BGCK_0040 )
		INC	R3
;
;-------------- ドカン出入りチェック --------------------
		MOVE	R1,R0
		LMS	R0,CBABYNO
		ADD	R0
		BCC	PL_BGCK_0021	;赤ちゃん乗ってる？ ( no:PL_BGCK_0021 )
		NOP
;
		LMS	R5,CDOKNMK
		FROM	R5
		AND	#00000011B
		SUB	R1
		BNE	PL_BGCK_0021	;ドカン？ ( no:PL_BGCK_0021 )
		NOP
;
		LMS	R0,CBERFLG
		DEC	R0
		BPL	PL_BGCK_0021	;状態ＯＫ？ ( no:PL_BGCK_0021 )
		NOP
;
;-------------- ドカン出入りデモへ --------------
		mJSR	DOKAN_INOUT_IN	;[ (R5) <-- 向き ]
		BRA	PL_BGCK_0040
		NOP
;
;-------------- 横壁押しカウンターセット ----------------
PL_BGCK_00200
		LMS	R0,CPUSHFG  ;[ from ]
		SUB	#0
		BEQ	PL_BGCK_0024	;敵押し中？ ( no:PL_BGCK_0024 )
		NOP
;
		IBT	R0,#PUSHTM-1
		SUB	R3
		BCC	PL_BGCK_0021
		TO	R3
;
		ADC	R3		;[ IBT R3,#PUSHTM ]
PL_BGCK_0021
		IBT	R0,#PUSHTM+(4*5)-1
		SUB	R3
		BCS	PL_BGCK_0022
		NOP
;
		IBT	R3,#PUSHTM
PL_BGCK_0022
		SMS	R3,CPSPUSH	;横壁押しカウンターセット
PL_BGCK_0024
;
;------------------------------------------------------------------------
;-		左頭チェック						-
;------------------------------------------------------------------------
PL_BGCK_0040
		IBT	R3,#010H	;(R3) <-- 頭チェックフラグ
		mJSR_X	BG_HDFTCK+1
		HEX	3E		;[ SMS R11,RTS1 ]
;
;------------------------------------------------------------------------
;-		右頭チェック						-
;------------------------------------------------------------------------
		mJSR_X	BG_HDFTCK+1
		HEX	3E		;[ SMS R11,RTS1 ]
;
;------------------------------------------------------------------------
;-		頭総合チェック						-
;------------------------------------------------------------------------
		FROM	R2
		AND	#00000011B
		BNE	PL_BGCK_00400	;頭当たり？ ( no:PL_BGCK_00400 )
		NOP
;
		mDJMP	PL_BGCK_0050
;
;-------------- ＢＧ当たった --------------------------------------------
PL_BGCK_00400
		LMS	R0,CPLYSPD
		ADD	R0		;(C) <-- (N)
		BCC	PL_BGCK_0048	;プレイヤー下降中？ ( yes:PL_BGCK_0048 )
		SUB	R0
;
		SBK			;[ SMS R0,PLYSPD ]
		INC	R0		;[ IBT R0,#1 ]
		SMS	R0,CPLSPJP	;ジタバタジャンプ リセット
		IBT	R0,#014H	;ジタバタジャンプＮＥＸＴウェイトタイマー
		SMS	R0,CPSPJTM
;
;-------------- ドカン出入りチェック --------------------
		LMS	R0,CBABYNO
		ADD	R0
		BCC	PL_BGCK_0046	;赤ちゃん乗ってる？ ( no:PL_BGCK_0046 )
		NOP
;
		IWT	R0,#1111100000000000B
		AND	R7
		IWT	R1,#DK
		SUB	R1
		BNE	PL_BGCK_0046	;ドカン？ ( no:PL_BGCK_0046 )
		NOP
;
		MOVE	R5,R14		;(R14) save
;
		FROM	R6
		LOB
		IWT	R14,#DOKAN_TYPE
		TO	R14
		ADD	R14
		GETB
;
		MOVE	R14,R5		;(R14) load
;
		MOVE	R5,R0		;(R0)(R5) <-- ドカンタイプ情報
		TO	R1		;[ * not break (R0) ]
		AND	#00001000B	;[ 00001000B <-- ドカン向き ]
		BEQ	PL_BGCK_0046	;ドカンユニットＯＫ？ ( no:PL_BGCK_0046 )
		SWAP
;
		ADD	R0		;(C) <-- 左ｏｒ右？
		LMS	R0,CWORK0
		AND	#0FH
		BCC	PL_BGCK_0044	;左ドカン？ ( yes:PL_BGCK_0044 )
		NOP
;
		ADC	#0FH		;[ ADD #010H ]
PL_BGCK_0044
		SMS	R0,CDOKNCX	;補正用中心Ｘ座標セット
;
		IBT	R1,#01000000B
		WITH	R1		;[ * not break (R0) ]
		AND	R5
		BNE	PL_BGCK_0041	;内ドカン？ ( yes:PL_BGCK_0041 )
		NOP
;
		SUB	#0AH
		IBT	R1,#1AH-0AH
		SUB	R1
		BCS	PL_BGCK_0046	;Ｘ位置ＯＫ？ ( no:PL_BGCK_0046 )
		NOP
;
		LM	R0,CMKEYC1
		AND	#00001000B
		BEQ	PL_BGCK_0046	;上キー入力？ ( no:PL_BGCK_0046 )
		NOP
;
PL_BGCK_0041
		LMS	R0,CBERFLG
		DEC	R0
		BPL	PL_BGCK_0046	;状態ＯＫ？ ( no:PL_BGCK_0046 )
		NOP
;
;-------------- ドカン出入りデモへ --------------
		IBT	R5,#00001000B	;(R5) <-- ドカン向き
		mJSR	DOKAN_INOUT_IN_2 ;[ (R5) <-- 向き ]
		BRA	PL_BGCK_0050
		NOP
;
;-------------- サウンドセット座標セット ----------------
PL_BGCK_0046
		IBT	R0,#01FH	;[♪]
		SMS	R0,CMSOUND3
;
;-------------- 頭ＢＧ当たり”ボヨヨ〜ン”セット ----------------
		IBT	R0,#(2*4)
		SMS	R0,CPHBOYO
;
PL_BGCK_0048
		INC	R10		;Ｙ座標補正
;
;------------------------------------------------------------------------
;-		左足チェック						-
;------------------------------------------------------------------------
PL_BGCK_0050
		IBT	R3,#0F0H	;(R3) <-- 足チェックフラグ
		LMS	R4,CPLSKCL	;(R4) <-- 前回坂フラグ
		mJSR_X	BG_HDFTCK+1
		HEX	3E		;[ SMS R11,RTS1 ]
;
;-------------- 左足のＢＧチェック情報保存 ----------------------
		SMS	R1,CWORKA	;(CWKA) <-- 左足補正値
		LMS	R0,CWORK8
		SMS	R0,CPLSKCL	;前回坂フラグセット
;
		LMS	R0,CWORK0	;(CWK10) <-- ＢＧチェックＸ座標
		SMS	R0,CWORK10
		LMS	R0,CWORK1	;(CWK11) <-- ＢＧチェックＹ座標
		SMS	R0,CWORK11
		SMS	R6,CWORK12	;(CWK12) <-- BG unit no.
		SMS	R7,CWORK13	;(CWK13) <-- BG unit no. type
;
;------------------------------------------------------------------------
;-		中足チェック						-
;------------------------------------------------------------------------
		LMS	R4,CPLSKCC	;(R4) <-- 前回坂フラグ
		mJSR_X	BG_HDFTCK+1
		HEX	3E		;[ SMS R11,RTS1 ]
;
;-------------- 左足のＢＧチェック情報保存 ----------------------
		SMS	R1,CWORKB	;(CWKB) <-- 中足補正値
		LMS	R0,CWORK8	;(CWKE) <-- 中足移動角度
		SMS	R0,CPLSKCC	;前回坂フラグセット
;
		LMS	R0,CWORK0	;(CWK14) <-- ＢＧチェックＸ座標
		SMS	R0,CWORK14
		LMS	R0,CWORK1	;(CWK15) <-- ＢＧチェックＹ座標
		SMS	R0,CWORK15
		SMS	R6,CWORK16	;(CWK16) <-- BG unit no.
		SMS	R7,CWORK17	;(CWK17) <-- BG unit no. type
;
;------------------------------------------------------------------------
;-		右足チェック						-
;------------------------------------------------------------------------
		LMS	R4,CPLSKCR	;(R4) <-- 前回坂フラグ
		mJSR_X	BG_HDFTCK+1
		HEX	3E		;[ SMS R11,RTS1 ]
;
		SMS	R1,CWORKC	;(CWKC) <-- 右足補正値
		LMS	R4,CWORK8	;(R4) <-- 右足移動角度
		SMS	R4,CPLSKCR	;前回坂フラグセット
;
;------------------------------------------------------------------------
;-		足ＢＧ総合チェック					-
;------------------------------------------------------------------------
		FROM	R2
		AND	#00000111B
		BNE	PL_BGCK_0200	;足当たった？ ( yes:PL_BGCK_0200 )
		NOP
;
;-------------- リフト乗ってるか？チェック ------------------------------
		LMS	R0,CONLFFG
		SUB	#0
		BEQ	PL_BGCK_0180	;リフト乗ってる？ ( no:PL_BGCK_0180 )
		NOP
;
		IBT	R4,#0		;(R4) <-- 移動角度
		LMS	R6,CPLYSPD	;(R6) <-- Ｙスピード
		mDJMP	PL_BGCK_0260
;
;-------------- ＢＧ当たって無い ----------------------------------------
PL_BGCK_0180
		LMS	R0,CPLJUMP
		DEC	R0
		BPL	PL_BGCK_0190	;プレイヤージャンプ中？ ( yes:PL_BGCK_0190 )
		NOP
;
		IWT	R0,#P008	;ジャンプフラグ”ＯＮ”
		SMS	R0,CPLJUMP
PL_BGCK_0190
		mDJMP	PL_BGCK_0300
;
;-------------- ＢＧ当たり ----------------------------------------------
PL_BGCK_0200
;
;-------------- 最大補正値チェック [ (R3) <-- 最大補正値 ] ------
		LMS	R0,CWORKA	;(R0) <-- 左足補正値
		LMS	R5,CWORKB	;(R5) <-- 中足補正値
		SUB	R5
		BMI	PL_BGCK_0202	;左足補正値＞中足補正値？ ( yes:PL_BGCK_0202 )
		ADD	R5
;
		MOVE	R0,R5
PL_BGCK_0202
		LMS	R5,CWORKC      ;(R5) <-- 右足補正値
		MOVE	R3,R5
		SUB	R3
		BPL	PL_BGCK_0204	;（左足補正値＞中足補正値）＞右足補正値？ ( no:PL_BGCK_0204 )
		ADD	R3
;
		MOVE	R3,R0
;
;-------------- Ｙ座標補正 --------------------------------------
PL_BGCK_0204
		WITH	R10		;Ｙ座標補正
		ADD	R3
;
		FROM	R5
		SUB	R3
		BNE	PL_BGCK_0206	;右足当たりＯＫ？ ( no:PL_BGCK_0206 )
		NOP
;
;-------------- 右足当たりＯＫ後特殊ＢＧチェック --------
		mJSR	FOOT_RESULT
;
;-------------- 中足のＢＧチェック情報復帰 --------------
PL_BGCK_0206
		LMS	R0,CWORKB	;(R0) <-- 中足補正値
		SUB	R3
		BNE	PL_BGCK_0210	;中足当たりＯＫ？ ( no:PL_BGCK_0210 )
		NOP
;
		LMS	R0,CWORK14
		SMS	R0,CWORK0	;(CWK0) <-- 中足ＢＧチェックＸ座標
		LMS	R0,CWORK15
		SMS	R0,CWORK1	;(CWK1) <-- 中足ＢＧチェックＹ座標
		LMS	R6,CWORK16	;(R6)	<-- 中足 BG unit no.
		LMS	R7,CWORK17	;(R7)	<-- 中足 BG unit no. type
		LMS	R4,CPLSKCC	;(R4)	<-- 中足移動角度
;
;-------------- 中足当たりＯＫ後特殊ＢＧチェック --------
		mJSR	FOOT_RESULT_C
;
;-------------- 左足のＢＧチェック情報復帰 --------------
PL_BGCK_0210
		LMS	R0,CWORKA	;(R0) <-- 左足補正値
		SUB	R3
		BNE	PL_BGCK_0250	;中足当たりＯＫ？ ( no:PL_BGCK_0250 )
		NOP
;
		LMS	R0,CWORK10
		SMS	R0,CWORK0	;(CWK0) <-- 左足ＢＧチェックＸ座標
		LMS	R0,CWORK11
		SMS	R0,CWORK1	;(CWK1) <-- 左足ＢＧチェックＹ座標
		LMS	R6,CWORK12	;(R6)	<-- 左足 BG unit no.
		LMS	R7,CWORK13	;(R7)	<-- 左足 BG unit no. type
		LMS	R4,CPLSKCL	;(R4)	<-- 左足移動角度
;
;-------------- 左足当たりＯＫ後特殊ＢＧチェック --------
		mJSR	FOOT_RESULT
;
;-------------- 足当たり情報セット ------------------------------
PL_BGCK_0250
		LMS	R0,CPLSWIM
		DEC	R0
		BPL	PL_BGCK_0260	;泳ぎ中？ ( yes:PL_BGCK_0260 )
		NOP
;
		LMS	R6,CPLYSPD	;(R6) <-- Ｙスピード
		SUB	R0
		SBK			;[ SMS R0,CPLYSPD ] Ｙスピードクリアー
		IBT	R0,#0FFH	;[ IWT R0,#0FFFFH ] 着地継続の為
		SMS	R0,CPLYSDR
;
PL_BGCK_0260
		SMS	R4,CPLANGL	;移動角度セット
		SUB	R0
		SMS	R0,CPLSKCL	;前回坂フラグリセット
		SMS	R0,CPLSKCC
		SMS	R0,CPLSKCR
;;;;		    SMS	    R0,CPLKAID	    ;階段歩きフラグクリアー
;
;-------------- 着地の瞬間チェック ------------------------------
		LMS	R0,CPLJUMP
		DEC	R0
		BMI	PL_BGCK_0270	;着地の瞬間？ ( no:PL_BGCK_0270 )
		SUB	R0
;
		SMS	R0,CPLJUMP	;ジャンプフラグ”ＯＦＦ”
;;;;		    SMS	    R0,CPLSPJP	    ;ジタバタジャンプフラグリセット
		SMS	R0,CPLDSNC	;”ドスーン！！”ウェイトカウンターリセット
		LMS	R0,CPLXSPD
		SMS	R0,CPLMVSP	;移動スピードセット
		IBT	R0,#JPET-1
		SMS	R0,CPLJPTM	;着地パターンセットタイマーセット
;
;;;;		    IBT	    R0,#BANK LSIN   ;着地での移動スピードセット
;;;;		    ROMB
;;;;;
;;;;		    IWT	    R0,#LSIN
;;;;		    TO	    R14
;;;;		    ADD	    R4
;;;;		    GETB
;;;;		    SWAP
;;;;		    TO	    R5
;;;;		    FMULT
;;;;		    IBT	    R0,#040H
;;;;		    WITH    R14
;;;;		    SUB	    R0
;;;;		    GETB
;;;;		    SWAP
;;;;		    LMS	    R6,CPLXSPD	    ;(R6) <-- Ｘスピード
;;;;		    FMULT
;;;;		    SUB	    R5
;;;;		    ADD	    R0
;;;;		    ADD	    R0
;;;;		    SMS	    R0,CPLMVSP
;;;;;
;;;;		    IBT	    R0,#BANK PLAYER_DATA
;;;;		    ROMB
;
;-------------- ”ドスーン！！”着地チェック --------------------
		mJSR	DOSN_JUST_CK
;
PL_BGCK_0270
;
;-------------- 足元がオフセットモードでうごいてるか？チェック --
		LMS	R0,CBG2OF_FG
		DEC	R0
		BMI	PL_BGCK_0272	;オフセットモード？ ( no:PL_BGCK_0272 )
		NOP
;
		mJSR	BG2OF_ON_CK
;
PL_BGCK_0272
;;;;;-------------- ダッシュ土けむりセットチェック ------------------
;;;;		    mJSR    DASH_SMOK_CK
;
;-------------- ドア入りチェック --------------------------------
		LMS	R5,CPLDOOR
		MOVES	R5,R5
		BEQ	PL_BGCK_0300	;ドアの前いる？ ( no:PL_BGCK_0300 )
		NOP
;
		FROM	R9
		AND	#0FH
		SUB	#04H
		SUB	#04H*2+1
		BCS	PL_BGCK_0300	;ドアに入れる位置？ ( no:PL_BGCK_0300 )
		NOP
;
		LM	R0,CMKEYC1
		AND	#00001000B
		BEQ	PL_BGCK_0300	;ドアに入るキー入力？ ( no:PL_BGCK_0300 )
		NOP
;
		LMS	R0,CBERFLG
		DEC	R0
		BPL	PL_BGCK_0300	;舌ショット中？ ( yes:PL_BGCK_0300 )
		NOP
;
		LMS	R0,CBABYNO
		ADD	R0		;[ CMP #8000H ]
		BCC	PL_BGCK_0300	;赤ちゃん乗ってる？ ( no:PL_BGCK_0300 )
		NOP
;
;-------------- ドアに入る初期セット ------------------------------------
;;;;		    IWT	    R0,#DR
;;;;		    AND	    R5
;;;;		    BNE	    PL_BGCK_0280    ;ボーナスドア？ ( no:PL_BGCK_0280 )
;;;;		    NOP
;;;;;
;;;;		    IWT	    R5,#POLDR	    ;(R5) <-- 敵Ｎｏ．
;;;;		    mJSR    M_ENINSR	    ;敵エリア確保
;;;;;
;;;;		    BMI	    PL_BGCK_0300    ;敵エリア無し？ ( yes:PL_BGCK_0300 )
;;;;		    NOP
;;;;;
;;;;		    IBT	    R5,#CEINIT	    ;初期モードへ
;;;;		    mSTW    R5,CENMODE,R1
;;;;		    FROM    R9
;;;;		    BIC	    #0FH	    ;[ AND #0FFF0H ]
;;;;		    TO	    R5
;;;;		    OR	    #08H
;;;;		    mSTW    R5,CENXPSL,R1   ;Ｘ座標セット
;;;;		    FROM    R10
;;;;		    TO	    R5
;;;;		    BIC	    #0FH	    ;[ AND #0FFF0H ]
;;;;		    mSTW    R5,CENYPSL,R1   ;Ｙ座標セット
;;;;;
;;;;		    IBT	    R0,#01H
;;;;		    SMS	    R0,CPLSTFG	    ;プレイヤーＳＴＯＰ！！
;;;;		    SMS	    R0,CENSTFG	    ;敵ＳＴＯＰ！！
;
;-------------- プレイヤードアに入る初期セット ------------------
;;;;PL_BGCK_0280
		IBT	R0,#PSHT	;プレイヤーエントツショットモードセット
		SMS	R0,CPLMODE
		SUB	R0		;[ IBT R0,#0 ]
		SMS	R0,CPLWALK	;パターンカウンターセット
		IBT	R0,#06H
		SMS	R0,CPLWKTM	;パターン切り替えタイマーセット
		IBT	R0,#08H
		SMS	R0,CPCOLTR	;カラー切り替えカウンターセット
;
;------------------------------------------------------------------------
;-		ＢＧチェック結果セット					-
;------------------------------------------------------------------------
PL_BGCK_0300
		SMS	R9,CPLXPSL
		SMS	R10,CPLYPSL
		SMS	R2,CPLBGCR
;
;------------------------------------------------------------------------
;-		ダメージＢＧ当たりチェック				-
;------------------------------------------------------------------------
		LMS	R0,CPLHARI
		DEC	R0
		BMI	PL_BGCK_0350	;ダメージＢＧ当たりフラグクリアー
		NOP
;
;-------------- プレイヤーダメージセット --------------------------------
		mSFCALL PLFAILST	;プレイヤーダメージセット
		BRA	PL_BGCK_0500
		NOP
;
;------------------------------------------------------------------------
;-		トンネルＩＮ／ＯＵＴチェック				-
;------------------------------------------------------------------------
PL_BGCK_0350
		LMS	R0,CPLTNEL
		OR	R2		;(R0) <-- トンネル当たりフラグ
		IWT	R6,#111111000B	;(R6) <-- トンネルチェックデータ
;
		LM	R5,CCCHGTK
		DEC	R5
		BPL	PL_BGCK_0400	;今、トンネルの中？ ( yes:PL_BGCK_0400 )
		INC	R5
;
;-------------- トンネルに入ったか？チェック ----------------------------
		AND	R6
		SUB	R6
		BEQ	PL_BGCK_0410	;トンネルに入った？ ( yes:PL_BGCK_0410 )
		NOP
;
		BRA	PL_BGCK_0500
		NOP
;
;-------------- トンネルから出たか？チェック ----------------------------
PL_BGCK_0400
		AND	R6
		BNE	PL_BGCK_0500	;トンネルから出た？ ( no:PL_BGCK_0500 )
		NOP
;
;-------------- トンネルＩＮ／ＯＵＴデモスタート初期セット --------------
PL_BGCK_0410
		mSFCALL TN_INOUT_IN
;
PL_BGCK_0500
		LMS	R11,RTS2	;[ return address load ]
		mRTS
;
;------------------------------------------------------------------------
;-		足元がオフセットモードでうごいてるか？チェック		-
;------------------------------------------------------------------------
BG2OF_ON_CK	EQU	$
		LM	R0,CESCCH1
		TO	R5
		BIC	#07H		;[ AND	#0FFF8H ]
		LMS	R0,CPLXPSL
		SUB	R5
		LSR
		LSR
		IBT	R5,#0021H*2
		SUB	R5
		BCS	BG2OF_ON_CK_030 ;オフセットエリア？ ( no:BG2OF_ON_CK_030 )
		ADD	R5
;
		LSR			;[ AND #0FFFEH ]
		BNE	BG2OF_ON_CK_010 ;０ラインオフセットエリア？ ( no:BG2OF_ON_CK_010 )
		ADD	R0		;[ AND #0FFFEH ]
;
;-------------- ０ラインオフセットエリア ------------------------
		LM	R0,CBG2OFV
		BRA	BG2OF_ON_CK_020+1
		HEX	F5		;[ IWT R5,#1FFFH ]
;
;-------------- ０ライン以外のオフセットエリア ------------------
BG2OF_ON_CK_010
		IWT	R5,#CBG2OFF+(20H*2)-2
		ADD	R5
		LDW	(R0)
BG2OF_ON_CK_020
		IWT	R5,#1FFFH
		AND	R5
		LM	R5,CESCCV1
		SUB	R5
		LMS	R5,CONLFFG
		OR	R5
		SBK			;[ SMS R5,CONLFFG ]
;
BG2OF_ON_CK_030
		mRTS
;
;
;------------------------------------------------------------------------
;		キャッシュプログラム					-
;------------------------------------------------------------------------
;
;------------------------------------------------------------------------
;-		横当たりチェック					-
;-			in :						-
;-				(R1)  <-- 横ＢＧ当たりＯＫフラグ	-
;-				(R2)  <-- ＢＧ当たりフラグ		-
;-				(R3)  <-- 補正向き			-
;-				(R4)  <-- 補正データ			-
;-				(R9)  <-- プレイヤーＸ座標		-
;-				(R10) <--      ”   Ｙ ”		-
;-				(R11) <-- 復帰アドレス			-
;-				(R14) <-- ＢＧチェックポイント		-
;-						データアドレス		-
;-			out :						-
;-				(R0)  <-- BG unit no. type		-
;-				(R6)  <-- BG unit no.			-
;-				(R7)  <-- BG unit no. type		-
;-				(R8)  <-- BG type status data		-
;-				(CWK0) <- ＢＧチェックＸ座標		-
;-				(CWK1) <-	”    Ｙ ”		-
;-			break :						-
;-				(R5)					-
;-				(R12)					-
;-				(R13)					-
;-			use RAM :					-
;-				(RTS0)					-
;-				(RTS1)					-
;-				(CWKE)					-
;-				(CWKF)					-
;------------------------------------------------------------------------
BG_SIDECK_IN
		IBT	R1,#0		;(R1) <-- 横ＢＧ当たりＯＫフラグ
		SMS	R1,CDOKNMK	;ドカンチェックフラグリセット
;
BG_SIDECK
		SMS	R11,RTS1	;[ return address save ]
;
		WITH	R2		;[ ASL R2 ]
		ADD	R2
		WITH	R1		;[ ASL R1 ]
		ADD	R1
		WITH	R1		;[ ASL R1 ]
		ADD	R1
;
;-------------- ＢＧ当たりチェック --------------------------------------
		mJSR_X	BGUNIT_READ+1
		HEX	3F		;[ ALT3 ( GETBS ) ]
;
BG_SIDECK_0000
		AND	#AL
		BEQ	BG_SIDECK_0100	;ＢＧ当たり？ ( no:BG_SIDECK_0100 )
		NOP
;
;-------------- 移動方向チェック ----------------------------------------
		LMS	R0,CPLTYPE
		SUB	#P_SKI
		BNE	BG_SIDECK_0001	;スキーヨッシー？ ( no:BG_SIDECK_0001 )
		NOP
;
		LMS	R0,CPLJUMP
		DEC	R0
		BPL	BG_SIDECK_00002 ;ジャンプ中？ ( yes:BG_SIDECK_00002 )
		NOP
;
;-------------- 激突岩のチェック --------------------------------
		SMS	R6,CWORK2	;(CWK2) <-- BG unit no.
		SMS	R7,CWORK3	;(CWK3) <-- BG unit no. type
		SMS	R8,CWORK4	;(CWK4) <-- BG type status data
		LMS	R8,CWORK0
		FROM	R3		;x16
		ADD	R3		;
		MULT	#8		;
		TO	R8		;(R8) <-- BG check X pos
		ADD	R8
		SMS	R8,CWORK5	;(CWK5) <-- BG check X pos
		LMS	R0,CWORK1	;(R0) <-- BG check Y pos
		SMS	R0,CWORK6	;(CWK6) <-- BG check Y pos
		SMS	R5,CWORK7	;(CWK7) <-- 坂チェックデータ
		mJSR_X	BGUNIT_READ_S+1
		HEX	3D		;[ LMS R6,CBG2OF_FG ]
;
		AND	#SK		;(Z) set
;
		LMS	R6,CWORK2	;(R6) <-- up BG unit no.
		LMS	R7,CWORK3	;(R7) <-- up BG unit no. type
		LMS	R8,CWORK4	;(R8) <-- up BG type status data
		LMS	R0,CWORK5
		SMS	R0,CWORK0	;(CWK0) <-- BG check X pos
		LMS	R0,CWORK6
		SMS	R0,CWORK1	;(CWK1) <-- BG check Y pos
;
		BNE	BG_SIDECK_0100	;激突岩？ ( yes:BG_SIDECK_0100 )
		NOP
;
		BRA	BG_SIDECK_0001
		NOP
;
BG_SIDECK_00002
		LMS	R0,CPLYSPD
		ADD	R0		;(C) <-- (N)
		BCS	BG_SIDECK_0100	;上昇中？ ( yes:BG_SIDECK_0100 )
		NOP
;
BG_SIDECK_0001
		LMS	R0,CPLXSPD
		SUB	#0
		BEQ	BG_SIDECK_0002
		INC	R2		;ＢＧ当たりフラグ”ＯＮ”
;
		XOR	R3
		BPL	BG_SIDECK_0100	;移動方向ＯＫ？ ( no:BG_SIDECK_0100 )
		NOP
;
BG_SIDECK_0002
		INC	R1		;横ＢＧ当たりＯＫフラグ”ＯＮ”
;
;-------------- Ｘ座標補正チェック ------------------------------
		MOVES	R4,R3		;Ｘ座標補正値セット
;
		LMS	R0,CWORK0
		AND	#0FH
		INC	R3		;[ * (R3): 00001H or 0FFFFH ]
		BEQ	BG_SIDECK_0060	;左へ補正？ ( yes:BG_SIDECK_0060 )
		DEC	R3
;
		XOR	#0FH
BG_SIDECK_0060
		DEC	R0		;[ CMP #0 ]
		BPL	BG_SIDECK_0100	;ＢＧ当たり継続？ ( yes:BG_SIDECK_0100 )
		NOP
;
		SMS	R3,CPLXSDR
BG_SIDECK_0100
;
;------------------------------------------------------------------------
;-		横用特殊ＢＧ当たりチェック				-
;------------------------------------------------------------------------
		mDJMP	SIDE_SP_CK
;
;
;----------------------------------------------------------------
;-		ＢＧユニットＮｏ．読み込み			-
;-			in :					-
;-				(R1)  <-- 敵のインデックス	-
;-				(R9)  <-- 敵のＸ座標		-
;-				(R10) <--  ” Ｙ ”		-
;-				(R11) <-- 復帰アドレス		-
;-				(R14) <-- ＢＧチェックポイント	-
;-						データアドレス	-
;-			out :					-
;-				(R0)  <-- BG unit no. type	-
;-				(R6)  <-- BG unit no.		-
;-				(R7)  <-- BG unit no. type	-
;-				(R8)  <-- BG type status data	-
;-				(CWK0) <- ＢＧチェックＸ座標	-
;-				(CWK1) <-	”    Ｙ ”	-
;-			break :					-
;-				(R5)				-
;----------------------------------------------------------------
BGUNIT_READ
		GETBS
		INC	R14
		TO	R8		;(R8) <-- BG check X pos
		ADD	R9
;
		GETBS
		INC	R14
		ADD	R10
BGUNIT_READ_S
		LMS	R6,CBG2OF_FG
		DEC	R6		;(N) set
;
		TO	R7		;(R7) <-- BG check Y pos x2
		BMI	BGUNIT_READ_000 ;オフセットモード？ ( no:BGUNIT_READ_000 )
		ADD	R0
;
		mDJMP	BGUNIT_READ_O
;
BGUNIT_READ_000
		LMS	R5,CWRSCV1
		SUB	R5
		IWT	R5,#0E0H
		SUB	R5		;(C) set
;
		LMS	R5,CWRSCH1
		BCS	BGUNIT_READ_002 ;ＢＧチェックバッファＹ座標範囲内？ ( no:BGUNIT_READ_002 )
		FROM	R8
;
		SUB	R5
		HIB
		BNE	BGUNIT_READ_002 ;ＢＧチェックバッファＸ座標範囲内？ ( no:BGUNIT_READ_002 )
		FROM	R8
;
		LSR
		LSR
		LSR
		IBT	R5,#01F0H>>3
		TO	R5
		AND	R5
		IWT	R0,#0F0H<<1
		AND	R7
		ADD	R0
		OR	R5
		IWT	R5,#BGCHECK_BUF
		ADD	R5
		BRA	BGUNIT_READ_010
		LDW	(R0)
;
BGUNIT_READ_002
		MERGE
		BEQ	BGUNIT_READ_020 ;BG check point max over ? ( yes:BGUNIT_READ_020 )
		TO	R6
;
		LOB
		HIB
		AND	#07H*2
		UMULT	#8
		OR	R6
		IWT	R6,#CUNBUFAD
		ADD	R6
		LDB	(R0)
		IBT	R6,#3FH
		AND	R6
		TO	R6
		SWAP
		IWT	R0,#0F0H<<1
		TO	R5
		AND	R7
		FROM	R8
		LOB
		LSR
		LSR
		LSR
		OR	R5
		LSR
		OR	R6
		ADD	R0		;[ ASL ]
		IWT	R6,#CBGUNIT
		ADD	R6
		mRAM_READ		;<<< SFC-RAM read >>>
;
BGUNIT_READ_010
		MOVE	R6,R0		;(R6) <-- BG unit no.
		HIB
		UMULT	#3		;x3
BGUNIT_READ_011
		MOVE	R5,R14		;(R14) save
;
		IWT	R14,#EN_BGTYPE
		TO	R14		;(R14) <-- BG unit no. type data address
		ADD	R14
		SMS	R8,CWORK0	;(CWK0) <-- BG check X pos
		GETB
		INC	R14
;
		WITH	R7
		ASR
		SMS	R7,CWORK1	;(CWK1) <-- BG check Y pos
;
		IBT	R8,#11111000B	;(R8) <-- ＢＧタイプチェック用ＡＮＤデータ
;
		GETBH
		INC	R14
		MOVE	R7,R0		;(R0),(R7) <-- BG type data
;
		HIB			;[ 上位バイトは０になるのでＡＮＤしても上位バイトは０ ]
		AND	R8
		IBT	R8,#(CB/100H)-00001000B+2 ;[ CB=0111100000000000B：サイン拡張しない ]
		SUB	R8
		SUB	#00001111B	;[ 00000110B:CB 00001110B:MB ]
		BCS	BGUNIT_READ_012+1 ;点線ブロック？ ( no:BGUNIT_READ_012+1 )
		TO	R8		;[ * BGUNIT_READ_012 ]
;
		IBT	R8,#00001111B+00000010B ;[ 00001000B:CB 00010000B:MB ]
		ADD	R8
		LM	R8,CSWITCH_1
		AND	R8
		BEQ	BGUNIT_READ_012+1
		TO	R8		;[ * BGUNIT_READ_012 ]
;
		WITH	R7		;全当たりに変更
		OR	#AL
;
BGUNIT_READ_012
		TO	R8		;(R8) <-- BG type status data
		GETB
;
		MOVE	R0,R7		;(R0),(R7) <-- BG type data
		MOVE	R14,R5		;(R14) load
		mRTS
;
BGUNIT_READ_020
		IBT	R6,#UT0001	;(R6) <-- BG unit no.
		BRA	BGUNIT_READ_011
		SUB	R0		;[ (R0) <-- HIGH(R6) x3 ]
;
;----------------------------------------------------------------
;-		ＢＧユニットＮｏ．読み込み（オフセット）	-
;-			in :					-
;-				(R1)  <-- 敵のインデックス	-
;-				(R9)  <-- 敵のＸ座標		-
;-				(R10) <--  ” Ｙ ”		-
;-				(R11) <-- 復帰アドレス		-
;-				(R14) <-- ＢＧチェックポイント	-
;-						データアドレス	-
;-			out :					-
;-				(R0)  <-- BG unit no. type	-
;-				(R6)  <-- BG unit no.		-
;-				(R7)  <-- BG unit no. type	-
;-				(R8)  <-- BG type status data	-
;-				(CWK0) <- ＢＧチェックＸ座標	-
;-				(CWK1) <-	”    Ｙ ”	-
;-			break :					-
;-				(R5)				-
;----------------------------------------------------------------
BGUNIT_READ_O
		LM	R0,CESCCH1
		BIC	#07H		;[ AND	#0FFF8H ]
		FROM	R8
		SUB	R0
		LSR
		LSR
		IBT	R5,#0021H*2
		SUB	R5
		BCS	BGUNIT_READ_O40 ;オフセットエリア？ ( no:BGUNIT_READ_O40 )
		ADD	R5
;
		LSR			;[ AND #0FFFEH ]
		BNE	BGUNIT_READ_O20 ;０ラインオフセットエリア？ ( no:BGUNIT_READ_O20 )
		ADD	R0		;[ AND #0FFFEH ]
;
;-------------- ０ラインオフセットエリア ------------------------
		LM	R0,CBG2OFV
		BRA	BGUNIT_READ_O30+1
		HEX	F5		;[ IWT R5,#1FFFH ]
;
;-------------- ０ライン以外のオフセットエリア ------------------
BGUNIT_READ_O20
		IWT	R5,#CBG2OFF+(20H*2)-2
		ADD	R5
		LDW	(R0)
BGUNIT_READ_O30
		IWT	R5,#1FFFH
		AND	R5
		LM	R5,CESCCV1
		SUB	R5
		ADD	R0
		TO	R7
		ADD	R7
;
BGUNIT_READ_O40
		mDJMP_X BGUNIT_READ_000+1
		HEX	3D		;[ LMS R5,CWRSCV1 ]
;
;
;------------------------------------------------------------------------
;-		頭と足の当たりチェック					-
;-			in :						-
;-				(R2)  <-- ＢＧ当たりフラグ		-
;-				(R3)  <-- 頭か足のフラグ		-
;-				(R4)  <-- 前回坂フラグ（足のみ）	-
;-				(R9)  <-- プレイヤーＸ座標		-
;-				(R10) <--      ”   Ｙ ”		-
;-				(R11) <-- 復帰アドレス			-
;-				(R14) <-- ＢＧチェックポイント		-
;-						データアドレス		-
;-			out :						-
;-				(R0)  <-- BG unit no. type		-
;-				(R6)  <-- BG unit no.			-
;-				(R7)  <-- BG unit no. type		-
;-				(R8)  <-- BG type status data		-
;-				(CWK0) <- ＢＧチェックＸ座標		-
;-				(CWK1) <-	”    Ｙ ”		-
;-				(CWK8) <- 移動角度			-
;-
;-			break :						-
;-				(R1)					-
;-				(R5)					-
;-			use RAM :					-
;-				(RTS1)					-
;------------------------------------------------------------------------
BG_HDFTCK
		SMS	R11,RTS1	;[ return address save ]
;
		WITH	R2		;[ ASL R2 ]
		ADD	R2
;
		SUB	R0
		SMS	R0,CWORK8	;(CWK8) <-- saka angle
;
		mJSR_X	BGUNIT_READ+1
		HEX	3F		;[ ALT3 ( GETBS ) ]
;
BG_HDFTCK_0000
		LMS	R0,CWORK1	;(R0) <-- BG check Y pos
		TO	R1		;(R1) <-- Y pos cross size
		AND	#0FH
		MOVE	R12,R1		;(R12) <-- Y pos cross size
;
		IBT	R5,#MD+SK	;(R5) <-- 坂チェックデータ
		DEC	R3
		BPL	BG_HDFTCK_010	;頭チェック？ ( yes:BG_HDFTCK_010 )
		INC	R3
;
		IBT	R5,#SK		;(R5) <-- 坂チェックデータ
BG_HDFTCK_010
		FROM	R7
		AND	R5
		TO	R13		;(R13) <-- 下のＢＧは坂？チェックしたか？
		SUB	R5
		BEQ	BG_HDFTCK_020	;坂 cross ? ( yes:BG_HDFTCK_020 )
		NOP
;
;-------------- 下のＢＧは坂？チェック ----------------------------------
		SMS	R6,CWORK2	;(CWK2) <-- BG unit no.
		SMS	R7,CWORK3	;(CWK3) <-- BG unit no. type
		SMS	R8,CWORK4	;(CWK4) <-- BG type status data
		LMS	R8,CWORK0
		SMS	R8,CWORK5	;(CWK5) <-- BG check X pos
		LMS	R7,CWORK1
		SMS	R7,CWORK6	;(CWK6) <-- BG check Y pos
		SMS	R5,CWORK7	;(CWK7) <-- 坂チェックデータ
;
		FROM	R3
		ADD	R7
		mJSR_X	BGUNIT_READ_S+1
		HEX	3D		;[ LMS R6,CBG2OF_FG ]
;
		LMS	R5,CWORK7	;(R5) <-- 坂チェックデータ
		AND	R5
		SUB	R5
		BNE	BG_HDFTCK_040	;坂 cross ? ( no:BG_HDFTCK_040 )
		WITH	R1		;(R1) <-- Y pos cross size
;
		SUB	R3
;
;-------------- 坂チェック ----------------------------------------------
BG_HDFTCK_020
		SMS	R14,REG14	;(R14) save
;
		FROM	R8		;坂タイプＮｏ．x(8x16)
		SWAP
		MOVES	R3,R3
		BPL	BG_HDFTCK_030	;頭チェック？ ( yes:BG_HDFTCK_030 )
		LSR
;
		INC	R0		;[ +2 ]
		INC	R0		;
BG_HDFTCK_030
		IWT	R14,#SAKA_DATA+4
		TO	R14
		ADD	R14
		LMS	R0,CWORK0
		AND	#0FH
		MULT	#8
		TO	R14		;(R14) <-- 坂データアドレス
		ADD	R14
		TO	R5
		GETB
		INC	R14
		GETBS
;
		LMS	R14,REG14	;(R14) load
;
		SUB	R1
		XOR	R3
		BMI	BG_HDFTCK_036	;cross ? ( no:BG_HDFTCK_036 )
		TO	R1		;(R1) <-- 補正値
;
		XOR	R3
		INC	R1
		SMS	R5,CWORK8	;(CWK8) <-- saka angle
;
		MOVES	R3,R3
		BPL	BG_HDFTCK_070	;頭チェック？ ( yes:BG_HDFTCK_070 )
		INC	R2		;[ BG cross flag set ]
;
;-------------- 足の坂ＢＧ当たりＯＫチェック --------------------
		FROM	R5
		SEX
		BPL	BG_HDFTCK_032
		NOP
;
		NOT
		INC	R0
BG_HDFTCK_032
		LSR
		LSR
		LSR
		LSR
		ADD	#8+1		;(R0) <-- 坂の角度による補正可能範囲
		ADD	R1
;;;;;		     FROM    R1
;;;;;		     ADD     #8+1	     ;[ +1:スキーヨッシーで食い込む為 ]
		BMI	BG_HDFTCK_035	;補正できる範囲？ ( no:BG_HDFTCK_035 )
		NOP
;
		LMS	R0,CPLYSPD	;(R0) <-- 上下スピード
		ADD	R0		;(C) <-- (N)
		BCC	BG_HDFTCK_080	;上昇中？ ( no:BG_HDFTCK_080 )
		NOP
;
		LMS	R0,CPLJUMP
		DEC	R0
		BMI	BG_HDFTCK_080	;ジャンプ中？ ( no:BG_HDFTCK_080 )
		NOP
;
		DEC	R4
		BPL	BG_HDFTCK_035	;前回坂？ ( yes:BG_HDFTCK_035 )
		INC	R4
;
		LM	R0,CPLXSPD+1
		XOR	R5
		SEX
		BMI	BG_HDFTCK_035	;坂方向ＯＫ？ ( no:BG_HDFTCK_035 )
		SUB	R0		;[ saka angle clear !! ]
;
;-------------- 坂での上昇中強制補正 --------------------
		SMS	R0,CWORK8	;(CWK8) <-- saka angle
		WITH	R10		;Ｙ座標補正
		ADD	R1
;
BG_HDFTCK_035
		DEC	R2		;[ BG cross flag reset ]
BG_HDFTCK_036
		MOVES	R13,R13
		BEQ	BG_HDFTCK_060	;下のＢＧは坂？チェックしたか？ ( no:BG_HDFTCK_060 )
		NOP
;
;-------------- 下のＢＧは坂ではなかった --------------------------------
BG_HDFTCK_040
		MOVE	R1,R12	;[ from ] (R1) <-- Y pos cross size
;
		LMS	R6,CWORK2	;(R6) <-- up BG unit no.
		LMS	R7,CWORK3	;(R7) <-- up BG unit no. type
		LMS	R8,CWORK4	;(R8) <-- up BG type status data
		LMS	R0,CWORK5
		SMS	R0,CWORK0	;(CWK0) <-- BG check X pos
		LMS	R0,CWORK6
		SMS	R0,CWORK1	;(CWK1) <-- BG check Y pos
;
BG_HDFTCK_042
		IBT	R0,#AL
		DEC	R3
		BPL	BG_HDFTCK_050	;頭チェック？ ( yes:BG_HDFTCK_050 )
		INC	R3
;
		IBT	R0,#MD+AL
BG_HDFTCK_050
		AND	R7
		BEQ	BG_HDFTCK_060	;BG cross ? ( no:BG_HDFTCK_060 )
		NOP
;
		INC	R2		;[ BG cross flag set ]
;
		WITH	R1		;(R1) <-- 補正値
		NOT
;
		MOVES	R3,R3
		BPL	BG_HDFTCK_070	;頭チェック？ ( yes:BG_HDFTCK_070 )
		INC	R1
;
		LMS	R0,CPLYSPD	;(R0) <-- 上下スピード
		ADD	R0		;(C) <-- (N)
		BCS	BG_HDFTCK_052	;上昇中？ ( yes:BG_HDFTCK_052 )
		FROM	R1
;
		ADD	#8
		BPL	BG_HDFTCK_080	;補正できる範囲？ ( yes:BG_HDFTCK_080 )
		NOP
;
;-------------- 当たり無し補正値セット --------------------------
BG_HDFTCK_052
		DEC	R2		;[ BG cross flag reset ]
BG_HDFTCK_060
		IBT	R1,#020H	;当たり無し補正値
;
		DEC	R3
		BMI	BG_HDFTCK_080	;足チェック？ ( yes:BG_HDFTCK_080 )
		INC	R3
;
;------------------------------------------------------------------------
;-		頭用特殊ＢＧ当たりチェック				-
;------------------------------------------------------------------------
BG_HDFTCK_070
		mDJMP	HED_SP_CK
;
;------------------------------------------------------------------------
;-		足用特殊ＢＧ当たりチェック				-
;------------------------------------------------------------------------
BG_HDFTCK_080
		mDJMP	FOOT_SP_CK
;
;
;------------------------------------------------------------------------
;-		特殊ＢＧ当たりチェック					-
;-			in :						-
;-				(R1)  <-- ※使っている			-
;-				(R2)  <-- ＢＧ当たりフラグ		-
;-				(R3)  <-- ※使っている			-
;-				(R4)  <-- ※使っている			-
;-				(R9)  <-- プレイヤーＸ座標		-
;-				(R10) <--      ”   Ｙ ”		-
;-				(R11) <-- 復帰アドレス			-
;-				(R14) <-- ＢＧチェックポイント		-
;-						データアドレス		-
;-			out :						-
;-				(R6)  <-- BG unit no.			-
;-				(R7)  <-- BG unit no. type		-
;-				(CWK0) <- ＢＧチェックＸ座標		-
;-				(CWK1) <-	”    Ｙ ”		-
;-			break :						-
;-				(R1)					-
;-				(R5)					-
;-			use RAM :					-
;-				(RTS0)					-
;------------------------------------------------------------------------
BG_SP_CHECK
;
;-------------- 水中チェック ------------------------------------
		IBT	R0,#WT+MG
		AND	R7
		SUB	#WT
		BEQ	BG_SP_CHECK_050 ;水中？ ( yes:BG_SP_CHECK_050 )
		INC	R0
;
		LMS	R0,CWORK1
		LMS	R5,CWATER_Y
		SUB	R5
		BMI	BG_SP_CHECK_050 ;水中？ ( no:BG_SP_CHECK_050 )
		SUB	R0
;
		INC	R0
BG_SP_CHECK_050
		LSR			;(C) set
		LMS	R0,CPLWATR	;(R0) <-- 水中当たりフラグ
		ROL			;(C) get
		SBK			;[ SMS R0,CPLWATR ]
;
;-------------- トンネルチェック --------------------------------
		LMS	R0,CPLTNEL	;(R0) <-- トンネル当たりフラグ
		ADD	R0		;[ ASL ]
		IBT	R5,#TN
		WITH	R5
		AND	R7
		BEQ	BG_SP_CHECK_100 ;トンネル？ ( no:BG_SP_CHECK_100 )
		NOP
;
		INC	R0
BG_SP_CHECK_100
		SBK			;[ SMS R0,CPLTNEL ]
		mRTS
;
;------------------------------------------------------------------------
;-		横用特殊ＢＧ当たりチェック				-
;-			in :						-
;-				(R1)  <-- 横ＢＧ当たりＯＫフラグ	-
;-				(R2)  <-- ＢＧ当たりフラグ		-
;-				(R3)  <-- 補正向き			-
;-				(R4)  <-- 補正データ			-
;-				(R9)  <-- プレイヤーＸ座標		-
;-				(R10) <--      ”   Ｙ ”		-
;-				(R14) <-- ＢＧチェックポイント		-
;-						データアドレス		-
;-				(RTS1) <- 復帰アドレス			-
;-			out :						-
;-				(R6)  <-- BG unit no.			-
;-				(R7)  <-- BG unit no. type		-
;-				(CWK0) <- ＢＧチェックＸ座標		-
;-				(CWK1) <-	”    Ｙ ”		-
;-			break :						-
;-				(R1)					-
;-				(R5)					-
;-			use RAM :					-
;-				(RTS0)					-
;------------------------------------------------------------------------
SIDE_SP_CK
		mJSR	BG_SP_CHECK	;特殊ＢＧ当たりチェック
;
		IWT	R0,#1111100000000000B
		AND	R7
		BEQ	SIDE_SP_CK_010	;特殊ＢＧ？ ( no:SIDE_SP_CK_010 )
		HIB
;
		LSR			;[ JSRSUB ]
		INC	R0		;
		TO	R15		;
		ADD	R15		;
		HEX	FF		;
;
		mTWORD	SIDE_SP_CK_010	;[無し]
		mTWORD	SIDE_SP_CK_010	;[雪、草の上]
		mTWORD	SIDE_SP_CK_010	;[せっけん]
		mTWORD	SIDE_SP_CK_010	;[へこみ床]
		mTWORD	SIDE_SP_CK_010	;[泥]
		mTWORD	YOGAN_ON	;[溶岩]
		mTWORD	COIN_CROSS	;[コイン]
		mTWORD	SIDE_SP_CK_010	;[？ブロック]
		mTWORD	SIDE_SP_CK_010	;[食べれるＢＧ]
		mTWORD	SIDE_SP_CK_010	;[線路]
		mTWORD	FAIL_CROSS	;[当たるとダメージ]
		mTWORD	SIDE_SP_CK_010	;[杭]
		mTWORD	SIDE_SP_CK_010	;[左下階段]
		mTWORD	SIDE_SP_CK_010	;[右下階段]
		mTWORD	SIDE_SP_CK_010	;[乗ったら落ちる床]
		mTWORD	SIDE_SP_CK_010	;[点線ブロック]
		mTWORD	SIDE_SP_CK_010	;[マリオブロック]
		mTWORD	SIDE_SP_CK_010	;[ちくわブロック]
		mTWORD	SIDE_SP_CK_010	;[カウントブロック]
		mTWORD	SIDE_SP_CK_010	;[滝床（ぴちゃぴちゃ）]
		mTWORD	DOKAN_CROSS	;[ドカン]
		mTWORD	SUGI_CROSS	;[杉の木]
		mTWORD	CLR_COIN_CROSS	;[点線コイン]
		mTWORD	SIDE_SP_CK_010	;[氷ブロック]
		mTWORD	SIDE_SP_CK_010	;[ぐらぐら岩]
		mTWORD	SIDE_SP_CK_010	;[当たるとダメージ（坂杭）]
		mTWORD	SIDE_SP_CK_010	;[当たるとダメージ（氷柱）]
		mTWORD	PDOWN_CROSS	;[当たるとダウン]
;
SIDE_SP_CK_010
		LMS	R11,RTS1	;[ return address load ]
		mRTS
;
;----------------------------------------------------------------
;-		杉の木						-
;----------------------------------------------------------------
SUGI_CROSS
		LMS	R0,CPICHTM
		SUB	#0
		BNE	SUGI_CROSS_010	;セットＯＫ？ ( no:SUGI_CROSS_010 )
		NOP
;
		LMS	R0,CPLJUMP
		LMS	R5,CPLMVSP
		OR	R5
		BEQ	SUGI_CROSS_010	;セットＯＫ？ ( no:SUGI_CROSS_010 )
		NOP
;
		IBT	R0,#08H		;セットタイマーセット
		SMS	R0,CPICHTM
;
		IBT	R0,#04H	       ;[♪]
		SMS	R0,CMSOUND3
;
		SMS	R1,REG1		;(R1) save
;
		IWT	R5,#YKCHI	;(R5) <-- 効果Ｎｏ．
		mJSR	M_EXINSR	;効果エリア確保
;
		LMS	R0,CWORK0
		TO	R5
		BIC	#0FH		;[ AND #0FFF0H ]
		mSTW	R5,CEXXPSL,R1	;Ｘ座標セット
		LMS	R0,CWORK1
		TO	R5
		BIC	#0FH		;[ AND #0FFF0H ]
		mSTW	R5,CEXYPSL,R1	;Ｙ座標セット
		IBT	R5,#0EH
		mSTW	R5,CEXCHPT,R1	;初期パターンＮｏ．セット
		IBT	R5,#04H
		mSTW	R5,CEXTIM0,R1	;初期タイマーセット
;
		LMS	R1,REG1		;(R1) load
;
SUGI_CROSS_010
		LMS	R11,RTS1	;[ return address load ]
		mRTS
;
;----------------------------------------------------------------
;-		ドカン当たり					-
;----------------------------------------------------------------
DOKAN_CROSS
;
;-------------- ドカン出入りチェック ----------------------------
		MOVE	R5,R14		;(R14) save
;
		FROM	R6
		LOB
		IWT	R14,#DOKAN_TYPE
		TO	R14
		ADD	R14
		GETB
;
		MOVE	R14,R5		;(R14) load
;
		IBT	R5,#00000001B
		MOVES	R3,R3
		BMI	DOKAN_CROSS_010
		NOP
;
		IBT	R5,#00000010B
DOKAN_CROSS_010
		TO	R5
		AND	R5
		BEQ	DOKAN_CROSS_030 ;ドカンユニットＯＫ？ ( no:DOKAN_CROSS_030 )
		NOP
;
		IWT	R0,#UT7D10-1
		SUB	R6
		BCS	DOKAN_CROSS_020 ;外ドカン？ ( yes:DOKAN_CROSS_020 )
		NOP
;
		IWT	R0,#8000H
		TO	R5
		OR	R5
DOKAN_CROSS_020
		SMS	R5,CDOKNMK	;ドカンフラグセット
;
DOKAN_CROSS_030
		LMS	R11,RTS1	;[ return address load ]
		mRTS
;
;----------------------------------------------------------------
;-		点線コイン当たり				-
;----------------------------------------------------------------
CLR_COIN_CROSS
		LM	R0,CSWITCH_1
		AND	#00001000B
		BEQ	COIN_CROSS_010	;スイッチ”ＯＮ”？ ( no:COIN_CROSS_010 )
		NOP
;
;----------------------------------------------------------------
;-		コイン当たり					-
;----------------------------------------------------------------
COIN_CROSS
		mSFCALL COIN_BG_W	;コイン書き換え
;
COIN_CROSS_010
		LMS	R11,RTS1	;[ return address load ]
		mRTS
;
;------------------------------------------------------------------------
;-		頭用特殊ＢＧ当たりチェック				-
;-			in :						-
;-				(R2)  <-- ＢＧ当たりフラグ		-
;-				(R3)  <-- 頭か足のフラグ		-
;-				(R4)  <-- 移動角度			-
;-				(R9)  <-- プレイヤーＸ座標		-
;-				(R10) <--      ”   Ｙ ”		-
;-				(R14) <-- ＢＧチェックポイント		-
;-						データアドレス		-
;-				(RTS1) <- 復帰アドレス			-
;-			out :						-
;-				(R6)  <-- BG unit no.			-
;-				(R7)  <-- BG unit no. type		-
;-				(CWK0) <- ＢＧチェックＸ座標		-
;-				(CWK1) <-	”    Ｙ ”		-
;-			break :						-
;-				(R1)					-
;-				(R5)					-
;-			use RAM :					-
;-				(RTS0)					-
;------------------------------------------------------------------------
HED_SP_CK
		mJSR	BG_SP_CHECK	;特殊ＢＧ当たりチェック
;
;-------------- 特殊ＢＧ当たりチェック ----------------------------------
		IWT	R0,#1111100000000000B
		AND	R7		;(R0) <-- ＢＧタイプ
		BEQ	HED_SP_CK_100	;特殊ＢＧ？ ( no:HED_SP_CK_100 )
		HIB
;
		LSR			;[ JSRSUB ]
		INC	R0		;
		TO	R15		;
		ADD	R15		;
		HEX	FF		;
;
		mTWORD	HED_SP_CK_100	;[無し]
		mTWORD	HED_SP_CK_100	;[雪、草の上]
		mTWORD	HED_SP_CK_100	;[せっけん]
		mTWORD	HEKOMI_GON	;[へこみ天井]
		mTWORD	HED_SP_CK_100	;[泥]
		mTWORD	YOGAN_ON	;[溶岩]
		mTWORD	COIN_CROSS	;[コイン]
		mTWORD	QBLK_GON	;[？ブロック]
		mTWORD	EATBLK_GON	;[食べれるＢＧ]
		mTWORD	HED_SP_CK_100	;[[線路]
		mTWORD	FAIL_CROSS	;[当たるとダメージ]
		mTWORD	HED_SP_CK_100	;[杭]
		mTWORD	HED_SP_CK_100	;[左下階段]
		mTWORD	HED_SP_CK_100	;[右下階段]
		mTWORD	HED_SP_CK_100	;[乗ったら落ちる床]
		mTWORD	HED_SP_CK_100	;[点線ブロック]
		mTWORD	MARIOBLK_GON	;[マリオブロック]
		mTWORD	HED_SP_CK_100	;[ちくわブロック]
		mTWORD	HED_SP_CK_100	;[カウントブロック]
		mTWORD	PICHA_GON	;[滝床（ぴちゃぴちゃ）]
		mTWORD	HED_SP_CK_100	;[ドカン]
		mTWORD	SUGI_CROSS	;[杉の木]
		mTWORD	CLR_COIN_CROSS	;[点線コイン]
		mTWORD	HED_SP_CK_100	;[氷ブロック]
		mTWORD	HED_SP_CK_100	;[ぐらぐら岩]
		mTWORD	HED_SP_CK_100	;[当たるとダメージ（坂杭）]
		mTWORD	FAIL_CROSS	;[当たるとダメージ（氷柱）]
		mTWORD	PDOWN_CROSS	;[当たるとダウン]
;
HED_SP_CK_100
		LMS	R11,RTS1	;[ return address load ]
		mRTS
;
;----------------------------------------------------------------
;-		マリオブロック					-
;----------------------------------------------------------------
MARIOBLK_GON
		LM	R0,CSWITCH_1
		IBT	R5,#00010000B
		AND	R5
		BEQ	MARIOBLK_GON_20 ;スイッチ”ＯＮ”？ ( no:MARIOBLK_GON_20 )
		NOP
;
		LMS	R0,CPLYSPD
		ADD	R0		;(C) <-- (N)
		BCC	MARIOBLK_GON_20 ;プレイヤー下降中？ ( yes:MARIOBLK_GON_20 )
		NOP
;
		IWT	R5,#MRBLK	;(R5) <-- 敵Ｎｏ．
;
		SMS	R1,REG1		;(R1) save
;
		mJSR	M_ENINSR	;敵エリア確保
;
		BMI	MARIOBLK_GON_10 ;敵エリア無し？ ( yes:MARIOBLK_GON_10 )
		NOP
;
		IBT	R5,#CEINIT	;敵イニシャルモードセット
		mSTW	R5,CENMODE,R1
		LMS	R0,CWORK0
		TO	R5
		BIC	#0FH		;[ AND #0FFF0H ]
		mSTW	R5,CENXPSL,R1	;Ｘ座標セット
		LMS	R0,CWORK1
		TO	R5
		BIC	#0FH		;[ AND #0FFF0H ]
		mSTW	R5,CENYPSL,R1	;Ｙ座標セット
;
		mSFCALL CLR_BG_W	;ぬきＢＧ書き換え
;
MARIOBLK_GON_10
		LMS	R1,REG1		;(R1) load
;
MARIOBLK_GON_20
		LMS	R11,RTS1	;[ return address load ]
		mRTS
;
;
;----------------------------------------------------------------
;-		滝（ぴちゃぴちゃ）				-
;----------------------------------------------------------------
PICHA_GON
		LM	R0,CFRCNT2
		AND	#07H
		BNE	PICHA_GON_010	;セットＯＫ？ ( no:PICHA_GON_010 )
		NOP
;
		SMS	R1,REG1		;(R1) save
;
		IBT	R0,#04H		;[♪]
		SMS	R0,CMSOUND3
;
		IWT	R5,#PICHA	;(R5) <-- 効果Ｎｏ．
		mJSR	M_EXINSR	;効果エリア確保
;
		mSTW	R9,CEXXPSL,R1	;Ｘ座標セット
		IBT	R0,#06H
		TO	R5
		ADD	R10
		mSTW	R5,CEXYPSL,R1	;Ｙ座標セット
		IBT	R5,#05H
		mSTW	R5,CEXCHPT,R1	;初期パターンＮｏ．セット
		IBT	R5,#02H
		mSTW	R5,CEXTIM0,R1	;初期タイマーセット
;
		LMS	R1,REG1		;(R1) load
;
PICHA_GON_010
		LMS	R0,CPLYSPD	;滝の圧力セット
		ADD	#04H
		SBK			;[ SMS R0,CPLYSPD ]
;
		LMS	R11,RTS1	;[ return address load ]
		mRTS
;
;----------------------------------------------------------------
;-		へこみ天井					-
;----------------------------------------------------------------
HEKOMI_GON
		LMS	R0,CONCHNG
		SUB	#0
		BNE	HEKOMI_GON_020	;ＢＧ特殊エリア空きあり？ ( no:HEKOMI_GON_020 )
		NOP
;
		SMS	R1,REG1		;(R1) save
;
		IWT	R5,#DWNBG	;(R5) <-- 敵Ｎｏ．
		mJSR	M_ENINSR	;敵エリア確保
;
		BMI	HEKOMI_GON_010	;敵エリア無し？ ( yes:HEKOMI_GON_010 )
		NOP
;
		IBT	R5,#CEINIT	;敵イニシャルモードセット
		mSTW	R5,CENMODE,R1
		FROM	R9
		TO	R5
		SUB	#8
		mSTW	R5,CENXPSL,R1	;Ｘ座標セット
		LMS	R0,CWORK1
		TO	R5
		BIC	#0FH		;[ AND #0FFF0H ]
		mSTW	R5,CENYPSL,R1	;Ｙ座標セット
		IBT	R0,#0F0H	;[ IWT R0,#0FFF0H ]
		TO	R5
		OR	R5
		mSTW	R5,CENWRK2,R1	;初期倍率セット
;
		IBT	R0,#01H		;ＢＧ特殊エリア確保
		SMS	R0,CONCHNG
;
		IBT	R0,#BURAN_P
		SMS	R0,CPBURAN	;プレイヤー”ブラ〜ン”フラグ”ＯＮ”
;
HEKOMI_GON_010
		LMS	R1,REG1		;(R1) load
;
HEKOMI_GON_020
		DEC	R2		;当たりキャンセル！！
;
		LMS	R11,RTS1	;[ return address load ]
		mRTS
;
;----------------------------------------------------------------
;-		？ブロック					-
;----------------------------------------------------------------
QBLK_GON
		LMS	R0,CPLYSPD
		ADD	R0		;(C) <-- (N)
		BCC	QBLK_GON_020	;プレイヤー下降中？ ( yes:QBLK_GON_020 )
		FROM	R6
;
		LOB
		IWT	R5,#HBLK2-1
		TO	R5		;(R5) <-- 敵Ｎｏ．
		ADD	R5
;
		SMS	R1,REG1		;(R1) save
;
		mJSR	M_ENINSR	;敵エリア確保
;
		BMI	QBLK_GON_020	;敵エリア無し？ ( yes:QBLK_GON_020 )
		NOP
;
		IBT	R5,#CEINIT	;敵イニシャルモードセット
		mSTW	R5,CENMODE,R1
		LMS	R0,CWORK0
		TO	R5
		BIC	#0FH		;[ AND #0FFF0H ]
		mSTW	R5,CENXPSL,R1	;Ｘ座標セット
		LMS	R0,CWORK1
		TO	R5
		BIC	#0FH		;[ AND #0FFF0H ]
		mSTW	R5,CENYPSL,R1	;Ｙ座標セット
;
		mSFCALL CLR_BG_W	;ぬきＢＧ書き換え
;
QBLK_GON_010
		LMS	R1,REG1		;(R1) load
;
QBLK_GON_020
		LMS	R11,RTS1	;[ return address load ]
		mRTS
;
;----------------------------------------------------------------
;-		食べれるＢＧ					-
;----------------------------------------------------------------
EATBLK_GON
		LMS	R0,CPLYSPD
		ADD	R0		;(C) <-- (N)
		BCC	EATBLK_GON_010	;プレイヤー下降中？ ( yes:EATBLK_GON_010 )
		SUB	R0
;
		SMS	R0,CWORKE	;(CWKE) <-- 壊れたＢＧぶっ飛びＸスピード
		IBT	R0,#080H	;[ IWT R0,#0FF80H ]
		SMS	R0,CWORKF	;(CWKF) <-- 壊れたＢＧぶっ飛びＹスピード
;
		SMS	R1,REG1		;(R1) save
;
		mJSR	BRBG0_SET	;壊れたＢＧ効果セット
;
		LMS	R1,REG1		;(R1) load
;
EATBLK_GON_010
		LMS	R11,RTS1	;[ return address load ]
		mRTS
;
;
;------------------------------------------------------------------------
;-		足用特殊ＢＧ当たりチェック				-
;-			in :						-
;-				(R1)  <-- 補正値			-
;-				(R2)  <-- ＢＧ当たりフラグ		-
;-				(R3)  <-- 頭か足のフラグ		-
;-				(R4)  <-- 移動角度			-
;-				(R9)  <-- プレイヤーＸ座標		-
;-				(R10) <--      ”   Ｙ ”		-
;-				(R14) <-- ＢＧチェックポイント		-
;-						データアドレス		-
;-				(RTS1) <- 復帰アドレス			-
;-			out :						-
;-				(R6)  <-- BG unit no.			-
;-				(R7)  <-- BG unit no. type		-
;-				(CWK0) <- ＢＧチェックＸ座標		-
;-				(CWK1) <-	”    Ｙ ”		-
;-			break :						-
;-				(R1)					-
;-				(R5)					-
;-			use RAM :					-
;-				(RTS0)					-
;------------------------------------------------------------------------
FOOT_SP_CK
		mJSR	BG_SP_CHECK	;特殊ＢＧ当たりチェック
;
;-------------- 特殊ＢＧ当たりチェック ----------------------------------
		IWT	R0,#1111100000000000B
		AND	R7		;(R0) <-- ＢＧタイプ
		BEQ	FOOT_SP_CK_100	;特殊ＢＧ？ ( no:FOOT_SP_CK_100 )
		HIB
;
		LSR			;[ JSRSUB ]
		INC	R0		;
		TO	R15		;
		ADD	R15		;
		HEX	FF		;
;
		mTWORD	FOOT_SP_CK_100	;[無し]
		mTWORD	FOOT_SP_CK_100	;[雪、草の上]
		mTWORD	FOOT_SP_CK_100	;[せっけん]
		mTWORD	FOOT_SP_CK_100	;[へこみ床]
		mTWORD	FOOT_SP_CK_100	;[泥]
		mTWORD	YOGAN_ON	;[溶岩]
		mTWORD	COIN_CROSS	;[コイン]
		mTWORD	FOOT_SP_CK_100	;[？ブロック]
		mTWORD	FOOT_SP_CK_100	;[食べれるＢＧ]
		mTWORD	FOOT_SP_CK_100	;[[線路]
		mTWORD	FAIL_CROSS	;[当たるとダメージ]
		mTWORD	KUI_ON		;[杭]
		mTWORD	FOOT_SP_CK_100	;[左下階段]
		mTWORD	FOOT_SP_CK_100	;[右下階段]
		mTWORD	FOOT_SP_CK_100	;[乗ったら落ちる床]
		mTWORD	FOOT_SP_CK_100	;[点線ブロック]
		mTWORD	FOOT_SP_CK_100	;[マリオブロック]
		mTWORD	TIKUWA_ON	;[ちくわブロック]
		mTWORD	CNTDOWN_ON	;[カウントブロック]
		mTWORD	FOOT_SP_CK_100	;[滝床（ぴちゃぴちゃ）]
		mTWORD	FOOT_SP_CK_100	;[ドカン]
		mTWORD	SUGI_CROSS	;[杉の木]
		mTWORD	CLR_COIN_CROSS	;[点線コイン]
		mTWORD	FOOT_SP_CK_100	;[氷ブロック]
		mTWORD	GURAGURA_ON	;[ぐらぐら岩]
		mTWORD	FAIL_CROSS	;[当たるとダメージ（坂杭）]
		mTWORD	FOOT_SP_CK_100	;[当たるとダメージ（氷柱）]
		mTWORD	PDOWN_CROSS	;[当たるとダウン]
;
FOOT_SP_CK_100
		LMS	R11,RTS1	;[ return address load ]
		mRTS
;
;----------------------------------------------------------------
;-		ダメージＢＧ当たり				-
;----------------------------------------------------------------
FAIL_CROSS
		IBT	R0,#01H		;ダメージＢＧ当たりフラグセット
		SMS	R0,CPLHARI
;
		LMS	R11,RTS1	;[ return address load ]
		mRTS
;
;----------------------------------------------------------------
;-		溶岩						-
;----------------------------------------------------------------
YOGAN_ON
		LMS	R0,CPLMODE
		LM	R11,CSUPER_FLAG
		OR	R11
		BNE	YOGAN_ON_010	;プレイヤーモードＯＫ？ ( no:YOGAN_ON_010 )
		NOP
;
;-------------- プレイヤーダウンセット --------------------------
		mSFCALL YOGAN_IN	;プレイヤー溶岩落ちセット
;
		LMS	R0,CPLMODE
		IBT	R11,#PYGN
		SUB	R11
		BNE	YOGAN_ON_010	;プレイヤー溶岩落ち？ ( no:YOGAN_ON_010 )
		SUB	R0		;<<< end >>>
;
		STOP
		NOP
;
YOGAN_ON_010
		LMS	R11,RTS1	;[ return address load ]
		mRTS
;
;----------------------------------------------------------------
;-		当たるとダウン					-
;----------------------------------------------------------------
PDOWN_CROSS
		LMS	R0,CPLMODE
		LM	R11,CSUPER_FLAG
		OR	R11
		BNE	PDOWN_CROSS_010 ;プレイヤーモードＯＫ？ ( no:PDOWN_CROSS_010 )
		NOP
;
;-------------- プレイヤーダウンセット --------------------------
		mSFCALL PLDOWNST	;プレイヤーダウンセット
;
		LMS	R0,CPLMODE
		IBT	R11,#PFAL
		SUB	R11
		BNE	PDOWN_CROSS_010 ;プレイヤーダウン？ ( no:PDOWN_CROSS_010 )
		SUB	R0		;<<< end >>>
;
		STOP
		NOP
;
PDOWN_CROSS_010
		LMS	R11,RTS1	;[ return address load ]
		mRTS
;
;----------------------------------------------------------------
;-		杭						-
;----------------------------------------------------------------
KUI_ON
		LMS	R0,CPLDOSN
		DEC	R0
		BMI	KUI_ON_010	;”ドスーン！！”？ ( no:KUI_ON_010 )
		NOP
;
		LMS	R0,CPLJUMP
		DEC	R0
		BMI	KUI_ON_010	;着地の瞬間？ ( no:KUI_ON_010 )
		FROM	R6
;
		ADD	#1
		AND	#02H
		BNE	KUI_ON_010	;頭ユニット？ ( no:KUI_ON_010 )
		NOP
;
		IBT	R0,#010H	;強制補正！！
		TO	R1
		ADD	R1
;
KUI_ON_010
		LMS	R11,RTS1	;[ return address load ]
		mRTS
;
;;;;;----------------------------------------------------------------
;;;;;-		    食べれるＢＧ				    -
;;;;;----------------------------------------------------------------
;;;;EATBLK_ON
;;;;		    LMS	    R0,CPLDOSN
;;;;		    DEC	    R0
;;;;		    BMI	    EATBLK_ON_010   ;”ドスーン！！”？ ( no:EATBLK_ON_010 )
;;;;		    NOP
;;;;;
;;;;		    INC	    R1		    ;補正値変更！！
;;;;;
;;;;EATBLK_ON_010
;;;;		    LMS	    R11,RTS1	    ;[ return address load ]
;;;;		    mRTS
;
;----------------------------------------------------------------
;-		ちくわブロック					-
;----------------------------------------------------------------
TIKUWA_ON
		FROM	R2
		LSR
		BCC	KUI_ON_010	;ＢＧ当たりＯＫ？ ( no:KUI_ON_010 )
		NOP
;
		IBT	R12,#00		;(R12) <-- Ｘ座標補正値
		IBT	R13,#00		;(R13) <-- Ｙ	 ”
		IWT	R5,#TIKU0	;(R5)  <-- 敵Ｎｏ．（小さい）
		IWT	R0,#UT7505
		SUB	R6
		BEQ	TIKUWA_ON_020	;小さい方？ ( yes:TIKUWA_ON_020 )
		NOP
;
		IBT	R12,#08H	;(R12) <-- Ｘ座標補正値
		IBT	R13,#08H	;(R13) <-- Ｙ	 ”
		IWT	R0,#UT7500
		SUB	R6
		BEQ	TIKUWA_ON_010	;大きい方の右側？ ( no:TIKUWA_ON_010 )
		NOP
;
		IBT	R12,#-08H	;(R12) <-- Ｘ座標補正値
TIKUWA_ON_010
		IWT	R5,#TIKU1	;(R5) <-- 敵Ｎｏ．（大きい）
TIKUWA_ON_020
		LMS	R0,CWORK0
		BIC	#0FH		;[ AND #0FFF0H ]
		ADD	R12
		SBK			;[ SMS R0,CWORK0 ]
		LMS	R0,CWORK1
		BIC	#0FH		;[ AND #0FFF0H ]
		ADD	R13
		SBK			;[ SMS R0,CWORK1 ]
;
		SMS	R1,REG1		;(R1) save
;
		mJSR	M_ENINSR	;敵エリア確保
;
		BMI	TIKUWA_ON_040	;敵エリア無し？ ( yes:TIKUWA_ON_040 )
		NOP
;
		LMS	R5,CWORK0
		mSTW	R5,CENXPSL,R1	;Ｘ座標セット
		LMS	R5,CWORK1
		mSTW	R5,CENYPSL,R1	;Ｙ座標セット
		IBT	R5,#50H+32
		mSTW	R5,CENTIM0,R1	;初期タイマーセット
;
		mLDW0	CENMYNO,R1
		IWT	R5,#TIKU0
		SUB	R5		;(Z) set
;
		IBT	R12,#CLR_BG_W	;(R12) <-- ぬきＢＧ書き換えＮｏ．
		IBT	R13,#2		;(R13) <-- 衝突サイズ変更値
;
		BEQ	TIKUWA_ON_030	;小さい方？ ( yes:TIKUWA_ON_030 )
		NOP
;
		IBT	R12,#CLR_BG_W_4 ;(R12) <-- ぬきＢＧ書き換え（４ユニット）Ｎｏ．
		IBT	R13,#4		;(R13) <-- 衝突サイズ変更値
TIKUWA_ON_030
		mLDW0	CEWIDEY,R1
		TO	R5
		ADD	R13
		mSTW	R5,CEWIDEY,R1	;衝突Ｙサイズ変更
		mSTW	R5,CEWIDEX,R1	;衝突Ｘサイズ変更
;
		MOVE	R0,R12
		STOP			;<<< mSFCALL >>>
		NOP
;
		LMS	R1,REG1		;プレイヤー補正値変更
		INC	R1
		BRA	TIKUWA_ON_050
		INC	R1
;
TIKUWA_ON_040
		LMS	R1,REG1		;(R1) load
;
TIKUWA_ON_050
		LMS	R11,RTS1	;[ return address load ]
		mRTS
;
;----------------------------------------------------------------
;-		カウントダウンブロック				-
;----------------------------------------------------------------
CNTDOWN_ON
		FROM	R2
		LSR
		BCC	TIKUWA_ON_050	;ＢＧ当たりＯＫ？ ( no:TIKUWA_ON_050 )
		NOP
;
		SMS	R1,REG1		;(R1) save
		SMS	R2,REG2		;(R2) save
;
		FROM	R6
		LOB
		TO	R2		;(R2) <-- カウントＮｏ．
		LSR			;(C) <-- ０：左	 １：右
		BCC	CNTDOWN_ON_010	;左？ ( yes:CNTDOWN_ON_010 )
		NOP
;
		LMS	R0,CWORK0
		IBT	R5,#010H
		SUB	R5
		SBK			;[ SMS R0,CWORK0 ]
CNTDOWN_ON_010
;
		IWT	R5,#CNTLF	;(R5)  <-- 敵Ｎｏ．
		mJSR	M_ENINSR	;敵エリア確保
;
		BMI	CNTDOWN_ON_020	;敵エリア無し？ ( yes:CNTDOWN_ON_020 )
		NOP
;
		IBT	R0,#033H	;[♪]
		SMS	R0,CMSOUND3
;
		LMS	R0,CWORK0
		BIC	#0FH		;[ AND #0FFF0H ]
		TO	R5
		ADD	#08H
		mSTW	R5,CENXPSL,R1	;Ｘ座標セット
		LMS	R0,CWORK1
		BIC	#0FH		;[ AND #0FFF0H ]
		TO	R5
		ADD	#08H
		mSTW	R5,CENYPSL,R1	;Ｙ座標セット
		mSTW	R2,CENWRK0,R1	;カウントＮｏ．セット
		mLDW0	CEWIDEX,R1
		TO	R5
		ADD	#4
		mSTW	R5,CEWIDEX,R1	;衝突Ｘサイズ変更
		mLDW0	CEWIDEY,R1
		TO	R5
		ADD	#3
		mSTW	R5,CEWIDEY,R1	;衝突Ｙサイズ変更
		mLDW0	CECNTYW,R1
		TO	R5
		ADD	#2
		mSTW	R5,CECNTYW,R1	;衝突中心Ｙ位置変更
;
		FROM	R2
		ADD	R2
		IWT	R5,#UT7770
		TO	R5		;(R5) <-- 書き換えユニットＮｏ．
		ADD	R5
		mSFCALL UNIT_BG_W
		LMS	R0,CWORK0
		IBT	R1,#010H
		ADD	R1
		SBK			;[ SMS R0,CWORK0 ]
		INC	R5
		mSFCALL UNIT_BG_W
;
		LMS	R0,REG1		;プレイヤー補正値変更
		TO	R1
		ADD	#4
		BRA	CNTDOWN_ON_030
		NOP
;
CNTDOWN_ON_020
		LMS	R1,REG1		;(R1) load
CNTDOWN_ON_030
		LMS	R2,REG2		;(R2) load
;
CNTDOWN_ON_050
		LMS	R11,RTS1	;[ return address load ]
		mRTS
;
;----------------------------------------------------------------
;-		ぐらぐら岩					-
;----------------------------------------------------------------
GURAGURA_ON
		LMS	R0,CONFALL
		SUB	#0
		BNE	CNTDOWN_ON_050	;ＢＧ特殊エリア空きあり？ ( no:CNTDOWN_ON_050 )
		NOP
;
		FROM	R2
		LSR
		BCC	CNTDOWN_ON_050	;ＢＧ当たりＯＫ？ ( no:CNTDOWN_ON_050 )
		NOP
;
		IBT	R12,#00		;(R12) <-- Ｘ座標補正値
		IBT	R13,#00		;(R13) <-- Ｙ	 ”
		FROM	R6
		LOB
		IBT	R5,#LOW UT8F04
		SUB	R5
		BCS	GURAGURA_ON_010 ;小さい方？ ( yes:GURAGURA_ON_010 )
		NOP
;
		ADD	#2
		NOT
		INC	R0
		ADD	R0
		ADD	R0
		ADD	R0
		TO	R12		;(R12) <-- Ｘ座標補正値
		ADD	R0
		IBT	R13,#010H	;(R13) <-- Ｙ座標補正値
		IWT	R5,#GROCK	;(R5)  <-- 敵Ｎｏ．（大きい方）
		BRA	GURAGURA_ON_020
		NOP
;
GURAGURA_ON_010
		XOR	#01H
		ADD	R0
		ADD	R0
		ADD	R0
		TO	R12		;(R12) <-- Ｘ座標補正値
		ADD	R0
		IBT	R13,#00H	;(R13) <-- Ｙ座標補正値
		IWT	R5,#GRCKS	;(R5)  <-- 敵Ｎｏ．（小さい方）
GURAGURA_ON_020
		SMS	R13,CWORK2
		LMS	R0,CWORK0
		BIC	#0FH		;[ AND #0FFF0H ]
		ADD	R12
		SBK			;[ SMS R0,CWORK0 ]
		LMS	R0,CWORK1
		BIC	#0FH		;[ AND #0FFF0H ]
		ADD	R13
		SBK			;[ SMS R0,CWORK1 ]
;
		SMS	R1,REG1		;(R1) save
;
		mJSR	M_ENINSR	;敵エリア確保
;
		BMI	GURAGURA_ON_040	  ;敵エリア無し？ ( yes:GURAGURA_ON_040 )
		NOP
;
		IBT	R5,#CEINIT
		mSTW	R5,CENMODE,R1	;初期モードセット
		LMS	R5,CWORK0
		mSTW	R5,CENXPSL,R1	;Ｘ座標セット
		LMS	R5,CWORK1
		mSTW	R5,CENYPSL,R1	;Ｙ座標セット
;
		LMS	R0,CWORK2	;乗ったら落ちる床セットフラグ”ＯＮ”
		DEC	R0
		BPL	GURAGURA_ON_030
		INC	R0
;
		IBT	R0,#4
GURAGURA_ON_030
		SMS	R0,CONFALL
;
GURAGURA_ON_040
		LMS	R1,REG1		;(R1) load
		LMS	R11,RTS1	;[ return address load ]
		mRTS
;
;
;------------------------------------------------------------------------
;-		足当たりＯＫ後特殊ＢＧチェック（中足用）		-
;-			in :						-
;-				(R2)  <-- ＢＧ当たりフラグ		-
;-				(R3)  <-- Ｙ座標補正値			-
;-				(R4)  <-- 移動角度			-
;-				(R9)  <-- プレイヤーＸ座標		-
;-				(R10) <--      ”   Ｙ ”		-
;-				(R11) <-- 復帰アドレス			-
;-				(R14) <-- ＢＧチェックポイント		-
;-						データアドレス		-
;-			out :						-
;-				(R6)  <-- BG unit no.			-
;-				(R7)  <-- BG unit no. type		-
;-				(CWK0) <- ＢＧチェックＸ座標		-
;-				(CWK1) <-	”    Ｙ ”		-
;-			break :						-
;-				(R1)					-
;-				(R5)					-
;-			use RAM :					-
;-				(RTS0)					-
;-				(RTS1)					-
;------------------------------------------------------------------------
FOOT_RESULT_C
		SMS	R11,RTS1	;[ return address save ]
;
		IWT	R0,#1111100000000000B
		AND	R7		;(R0) <-- ＢＧタイプ
		BEQ	FOOT_RESULT_010 ;特殊ＢＧ？ ( no:FOOT_RESULT_010 )
		HIB
;
		LSR			;[ JSRSUB ]
		INC	R0		;
		TO	R15		;
		ADD	R15		;
		HEX	FF		;
;
		mTWORD	FOOT_RESULT_010 ;[無し]
		mTWORD	YUKI_ON		;[雪、草の上]
		mTWORD	SOAP_ON		;[せっけん]
		mTWORD	FOOT_RESULT_010 ;[へこみ床]
		mTWORD	DORO_ON		;[泥]
		mTWORD	FOOT_RESULT_010 ;[溶岩]
		mTWORD	FOOT_RESULT_010 ;[コイン]
		mTWORD	FOOT_RESULT_010 ;[？ブロック]
		mTWORD	EATBLK_ON_OK	;[食べれるＢＧ]
		mTWORD	RALE_ON		;[線路]
		mTWORD	FOOT_RESULT_010 ;[当たるとダメージ]
		mTWORD	FOOT_RESULT_010 ;[杭]
		mTWORD	FOOT_RESULT_010 ;[左下階段]
		mTWORD	FOOT_RESULT_010 ;[右下階段]
		mTWORD	FOOT_RESULT_010 ;[乗ったら落ちる床]
		mTWORD	FOOT_RESULT_010 ;[点線ブロック]
		mTWORD	FOOT_RESULT_010 ;[マリオブロック]
		mTWORD	FOOT_RESULT_010 ;[ちくわブロック]
		mTWORD	FOOT_RESULT_010 ;[カウントブロック]
		mTWORD	PICHA_ON	;[滝床（ぴちゃぴちゃ）]
		mTWORD	DOKAN_ON	;[ドカン]
		mTWORD	FOOT_RESULT_010 ;[杉の木]
		mTWORD	FOOT_RESULT_010 ;[点線コイン]
		mTWORD	ICE_BLK_ON	;[氷ブロック]
		mTWORD	FOOT_RESULT_010 ;[ぐらぐら岩]
		mTWORD	FOOT_RESULT_010 ;[当たるとダメージ（坂杭）]
		mTWORD	FOOT_RESULT_010 ;[当たるとダメージ（氷柱）]
		mTWORD	FOOT_RESULT_010 ;[当たるとダウン]
;
FOOT_RESULT_010
		LMS	R11,RTS1	;[ return address load ]
		mRTS
;
;------------------------------------------------------------------------
;-		足当たりＯＫ後特殊ＢＧチェック				-
;-			in :						-
;-				(R2)  <-- ＢＧ当たりフラグ		-
;-				(R3)  <-- Ｙ座標補正値			-
;-				(R4)  <-- 移動角度			-
;-				(R9)  <-- プレイヤーＸ座標		-
;-				(R10) <--      ”   Ｙ ”		-
;-				(R11) <-- 復帰アドレス			-
;-				(R14) <-- ＢＧチェックポイント		-
;-						データアドレス		-
;-			out :						-
;-				(R6)  <-- BG unit no.			-
;-				(R7)  <-- BG unit no. type		-
;-				(CWK0) <- ＢＧチェックＸ座標		-
;-				(CWK1) <-	”    Ｙ ”		-
;-			break :						-
;-				(R1)					-
;-				(R5)					-
;-			use RAM :					-
;-				(RTS0)					-
;-				(RTS1)					-
;------------------------------------------------------------------------
FOOT_RESULT
		SMS	R11,RTS1	;[ return address save ]
;
		IWT	R0,#1111100000000000B
		AND	R7		;(R0) <-- ＢＧタイプ
		BEQ	FOOT_RESULT_010 ;特殊ＢＧ？ ( no:FOOT_RESULT_010 )
		HIB
;
		LSR			;[ JSRSUB ]
		INC	R0		;
		TO	R15		;
		ADD	R15		;
		HEX	FF		;
;
		mTWORD	FOOT_RESULT_010 ;[無し]
		mTWORD	YUKI_ON_SK	;[雪、草の上]
		mTWORD	SOAP_ON		;[せっけん]
		mTWORD	HEKOMI_ON	;[へこみ床]
		mTWORD	DORO_ON_SK	;[泥]
		mTWORD	FOOT_RESULT_010 ;[溶岩]
		mTWORD	FOOT_RESULT_010 ;[コイン]
		mTWORD	FOOT_RESULT_010 ;[？ブロック]
		mTWORD	EATBLK_ON_OK	;[食べれるＢＧ]
		mTWORD	FOOT_RESULT_010 ;[線路]
		mTWORD	FOOT_RESULT_010 ;[当たるとダメージ]
		mTWORD	KUI_ON_OK	;[杭]
		mTWORD	KAIDAN_U_ON	;[左下階段]
		mTWORD	KAIDAN_D_ON	;[右下階段]
		mTWORD	FALL_BLK_ON	;[乗ったら落ちる床]
		mTWORD	FOOT_RESULT_010 ;[点線ブロック]
		mTWORD	FOOT_RESULT_010 ;[マリオブロック]
		mTWORD	FOOT_RESULT_010 ;[ちくわブロック]
		mTWORD	FOOT_RESULT_010 ;[カウントブロック]
		mTWORD	PICHA_ON_SK	;[滝床（ぴちゃぴちゃ）]
		mTWORD	FOOT_RESULT_010 ;[ドカン]
		mTWORD	FOOT_RESULT_010 ;[杉の木]
		mTWORD	FOOT_RESULT_010 ;[点線コイン]
		mTWORD	ICE_BLK_ON	;[氷ブロック]
		mTWORD	FOOT_RESULT_010 ;[ぐらぐら岩]
		mTWORD	FOOT_RESULT_010 ;[当たるとダメージ（坂杭）]
		mTWORD	FOOT_RESULT_010 ;[当たるとダメージ（氷柱）]
		mTWORD	FOOT_RESULT_010 ;[当たるとダウン]
;
;----------------------------------------------------------------
;-		線路						-
;----------------------------------------------------------------
RALE_ON
		LMS	R0,CPLTYPE
		SUB	#P_TRAIN
		BNE	RALE_ON_050	;汽車プレイヤー？ ( no:RALE_ON_050 )
		NOP
;
		LM	R0,CMKEYC1
		AND	#00000100B
		BEQ	RALE_ON_050	;レールモードへ？ ( no:RALE_ON_050 )
		NOP
;
;-------------- レールモード”ＯＮ” ----------------------------
		IBT	R0,#05DH
		SMS	R0,CMSOUND3	;[♪]
;
		IBT	R0,#040H
		SMS	R0,CPLANGL	;目標回転角セット
		SWAP
		SMS	R0,CPTR_MANG
		SUB	R0
		SMS	R0,CPTR_MUKI
		SMS	R0,CPTR_BACK
		IWT	R1,#0100H	;(R1) <-- レールモード”ＯＮ”
		SMS	R1,CPTR_MODE
		SUB	R0
		SMS	R0,CPLMVSP
;
RALE_ON_050
		LMS	R11,RTS1	;[ return address load ]
		mRTS
;
;----------------------------------------------------------------
;-		ドカン						-
;----------------------------------------------------------------
DOKAN_ON
;
;-------------- ドカン出入りチェック --------------------
		LMS	R0,CBABYNO
		ADD	R0
		BCC	DOKAN_ON_020	;赤ちゃん乗ってる？ ( no:DOKAN_ON_020 )
		FROM	R6
;
		LOB
		IWT	R14,#DOKAN_TYPE
		TO	R14
		ADD	R14
		GETB
;
		MOVE	R5,R0		;(R0)(R5) <-- ドカンタイプ情報
		TO	R14		;[ * not break (R0) ]
		AND	#00000100B	;[ 00000100B <-- ドカン向き ]
		BEQ	DOKAN_ON_020	;ドカンユニットＯＫ？ ( no:DOKAN_ON_020 )
		SWAP
;
		ADD	R0		;(C) <-- 左ｏｒ右？
		LMS	R0,CWORK0
		AND	#0FH
		BCC	DOKAN_ON_010	;左ドカン？ ( yes:DOKAN_ON_010 )
		NOP
;
		ADC	#0FH		;[ ADD #010H ]
DOKAN_ON_010
		SMS	R0,CDOKNCX	;補正用中心Ｘ座標セット
;
		IBT	R14,#01000000B
		WITH	R14		;[ * not break (R0) ]
		AND	R5
		BNE	DOKAN_ON_014	;内ドカン？ ( yes:DOKAN_ON_014 )
		NOP
;
		SUB	#08H
		IBT	R14,#18H-08H
		SUB	R14
		BCS	DOKAN_ON_020	;Ｘ位置ＯＫ？ ( no:DOKAN_ON_020 )
		NOP
;
		LM	R0,CMKEYC1
		AND	#00000100B
		BEQ	DOKAN_ON_020	;下キー入力？ ( no:DOKAN_ON_020 )
		NOP
;
;-------------- ドカン出入りデモへ --------------
DOKAN_ON_014
		LMS	R0,CBERFLG
		DEC	R0
		BPL	DOKAN_ON_020	;状態ＯＫ？ ( no:DOKAN_ON_020 )
		NOP
;
		IBT	R5,#00000100B	;(R5) <-- ドカン向き
		mJSR	DOKAN_INOUT_IN_2 ;[ (R5) <-- 向き ]
;
DOKAN_ON_020
		LMS	R11,RTS1	;[ return address load ]
		mRTS
;
;----------------------------------------------------------------
;-		ドカン出入りデモ初期セット			-
;-			in :					-
;-				(R5) <-- 向き			-
;----------------------------------------------------------------
DOKAN_INOUT_IN_2
		IWT	R0,#UT7D10-1
		SUB	R6
		BCS	DOKAN_INOUT_IN	;外ドカン？ ( yes:DOKAN_INOUT_IN )
		ADD	R6
;
		IWT	R0,#UT7D21-1
		SUB	R6		;(C) set
		IWT	R0,#8000H
		BCS	DOKAN_IO_IN_000
		NOP
;
		IWT	R0,#8000H+2000H
DOKAN_IO_IN_000
		TO	R5
		OR	R5
DOKAN_INOUT_IN
		FROM	R5
		LSR			;(R0) <-- 向き（１、２、４、８）
		WITH	R5		;(R5) <-- 向き（０、１、２、３）
		BIC	#00001111B	;[ AND #0FFF0H ]
DOKAN_IO_IN_010
		INC	R5		;x2
		INC	R5		;
		BCC	DOKAN_IO_IN_010
		LSR
;
		SMS	R5,CDOKNMK	;ドカン向きセット
		IBT	R0,#PDKN	;プレイヤーモードセット
		SMS	R0,CPLMODE
		SMS	R0,CENSTFG	;敵ＳＴＯＰ
		SUB	R0		;[ IBT R0,#0 ]
		SMS	R0,CDOKNCT	;ドカン移動カウンターリセット
		SMS	R0,CDOKNPT	;    ”	   パターンカウンターリセット
		SMS	R0,CPLWORKTM	;	 ”	   切り替えタイマーリセット
		SMS	R0,CPLMVSP	;スピードクリアー
		SMS	R0,CPLXSPD	;
		SMS	R0,CPLYSPD	;
		SMS	R0,CPLNAGE	;投げキャンセル
		INC	R0		;[ IBT R0,#01H ]
		SMS	R0,CDOKNGP	;    ”	   重力カウンターリセット
;
		IBT	R0,#031H	;[♪]
		SMS	R0,CMSOUND3
;
;-------------- タテドカン補正用中心Ｘ座標セット ----------------
		LMS	R0,CWORK0
		LMS	R5,CDOKNCX
		SUB	R5
		ADD	#08H
		mRTS_X
		SBK			;[ SMS R0,CWORK0 ]
;
;----------------------------------------------------------------
;-		滝床（ぴちゃぴちゃ）				-
;----------------------------------------------------------------
PICHA_ON_SK
		MOVES	R4,R4
		BEQ	PICHA_ON_010	;坂？ ( no:PICHA_ON_010 )
		NOP
;
PICHA_ON
		LMS	R0,CPICHTM
		SUB	#0
		BNE	PICHA_ON_010	;セットＯＫ？ ( no:PICHA_ON_010 )
		NOP
;
		IBT	R0,#08H		;セットタイマーセット
		SMS	R0,CPICHTM
;
		IBT	R0,#060H	;[♪]
		SMS	R0,CMSOUND3
;
		IWT	R5,#PICHA	;(R5) <-- 効果Ｎｏ．
		mJSR	M_EXINSR	;効果エリア確保
;
		mSTW	R9,CEXXPSL,R1	;Ｘ座標セット
		IBT	R0,#020H
		TO	R5
		ADD	R10
		mSTW	R5,CEXYPSL,R1	;Ｙ座標セット
		IBT	R5,#05H
		mSTW	R5,CEXCHPT,R1	;初期パターンＮｏ．セット
		IBT	R5,#02H
		mSTW	R5,CEXTIM0,R1	;初期タイマーセット
;
PICHA_ON_010
		FROM	R4
		SWAP
		BEQ	PICHA_ON_020	;坂？ ( no:PICHA_ON_020 )
		NOP
;
		IWT	R0,#0FD00H
		BPL	PICHA_ON_050
		NOP
;
		NOT			;[ IWT R0,#0200H ]
		BRA	PICHA_ON_050	;
		INC	R0		;
;
PICHA_ON_020
		FROM	R6
		HIB
		IWT	R5,#UT8200/100H
		SUB	R5
		BMI	PICHA_ON_060	;流れない？ ( yes:PICHA_ON_060 )
		NOP
;
		IWT	R0,#0FF00H
		BEQ	PICHA_ON_050	;右向き？ ( yes:PICHA_ON_050 )
		NOP
;
		NOT
		INC	R0
PICHA_ON_050
		SM	R0,CPL_ADD_XSP	;プレイヤーＸ方向圧力セット
PICHA_ON_060
		LMS	R11,RTS1	;[ return address load ]
		mRTS
;
;----------------------------------------------------------------
;-		泥						-
;----------------------------------------------------------------
DORO_ON_SK
		MOVES	R4,R4
;;;;		    BEQ	    DORO_ON_050	    ;坂？ ( no:DORO_ON_050 )
		BEQ	PICHA_ON_060	;坂？ ( no:PICHA_ON_060 )
		NOP
;
DORO_ON
		IBT	R0,#ON_DORO	;泥歩きセット
		SMS	R0,CPLBGNO
;
		LMS	R0,CPLJUMP
		DEC	R0
		BMI	DORO_ON_010	;着地の瞬間？ ( no:DORO_ON_010 )
		NOP
;
		IWT	R5,#DORO0	;(R5) <-- 効果Ｎｏ．
		IBT	R6,#02H		;(R6) <-- 初期タイマー
		IBT	R0,#08H		;(R0) <-- セットタイマーセット
		BRA	DORO_ON_040
		NOP
;
DORO_ON_010
		LMS	R0,CPLSTOP
		DEC	R0
		BMI	DORO_ON_020	;歩き中？ ( no:DORO_ON_020 )
		NOP
;
;-------------- 歩き中の泥セット --------------------------------
		LMS	R0,CPLWALK
		LMS	R5,CTIMING_CNT
		SBK			;[ SMS R0,CTIMIN]G_CNT
		SUB	R5
		BEQ	DORO_ON_050	;セットＯＫ？ ( no:DORO_ON_050 )
		ADD	R5
;
		BNE	DORO_ON_050	;セットＯＫ？ ( no:DORO_ON_050 )
		NOP
;
		BRA	DORO_ON_030
		NOP
;
;-------------- 止まってる時の泥セット --------------------------
DORO_ON_020
		LMS	R0,CPLMVSP
		DEC	R0
		BPL	DORO_ON_022
		INC	R0
;
		NOT
		INC	R0
DORO_ON_022
		LMS	R5,CTIMING_CNT
		ADD	R5
		IWT	R5,#1800H
		CMP	R5
		BCC	DORO_ON_050	;セットＯＫ？ ( no:DORO_ON_050 )
		SBK			;[ SMS R0,CTIMING_CNT ]
;
		SUB	R5
		SBK			;[ SMS R0,CTIMING_CNT ]
;
DORO_ON_030
		IWT	R5,#DORO1	;(R5) <-- 効果Ｎｏ．
		IBT	R6,#03H		;(R6) <-- 初期タイマー
		IBT	R0,#08H		;(R0) <-- セットタイマーセット
DORO_ON_040
		SMS	R0,CPICHTM	;セットタイマーセット
;
;;;;		    IBT	    R0,#062H	    ;[♪]
		IBT	R0,#060H	;[♪]
		SMS	R0,CMSOUND3
;
		mJSR	M_EXINSR	;効果エリア確保
;
		mSTW	R9,CEXXPSL,R1	;Ｘ座標セット
		IBT	R0,#010H
		TO	R5
		ADD	R10
		mSTW	R5,CEXYPSL,R1	;Ｙ座標セット
		IBT	R5,#09H
		mSTW	R5,CEXCHPT,R1	;初期パターンＮｏ．セット
		mSTW	R6,CEXTIM0,R1	;初期タイマーセット
		LMS	R5,PLCMKI
		mSTW	R5,CEXMUKI,R1	;向きセット
;
DORO_ON_050
		LMS	R11,RTS1	;[ return address load ]
		mRTS
;
;----------------------------------------------------------------
;-		氷ブロック					-
;----------------------------------------------------------------
ICE_BLK_ON
		IBT	R0,#ON_ICEB	;氷ブロックの上歩きセット
		SMS	R0,CPLBGNO
;
ICE_BLK_ON_010
		LMS	R11,RTS1	;[ return address load ]
		mRTS
;
;----------------------------------------------------------------
;-		雪、草の上					-
;----------------------------------------------------------------
YUKI_ON_SK
		MOVES	R4,R4
		BEQ	ICE_BLK_ON_010	;坂？ ( no:ICE_BLK_ON_010 )
		NOP
;
YUKI_ON
		LMS	R0,CMBG1TYP
		AND	#07H
		SUB	#04H
		BNE	YUKI_ON_050	;雪コース？ ( no:YUKI_ON_050 )
		NOP
;
		LMS	R0,CPLBGNO
		SUB	#ON_YUKI
		BEQ	YUKI_ON_010	;すでに雪の上歩きセット？ ( yes:YUKI_ON_010 )
		NOP
;
;-------------- 雪の上ＢＧチェック ------------------------------
		LMS	R8,CWORK0	;(R8) <-- BG check X pos
		LMS	R0,CWORK1
		IBT	R7,#010H
		SUB	R7
		mJSR_X	BGUNIT_READ_S+1
		HEX	3D		;[ LMS R6,CBG2OF_FG ]
;
		FROM	R6
		HIB
		IBT	R5,#HIGH UT2A00
		SUB	R5
		BEQ	YUKI_ON_000	;雪の上ユニット？ ( yes:YUKI_ON_000 )
		ADD	R5
;
		IBT	R5,#HIGH UT6A00
		SUB	R5
		BNE	YUKI_ON_050	;雪の上ユニット？ ( no:YUKI_ON_050 )
		NOP
;
YUKI_ON_000
		IBT	R0,#ON_YUKI	;雪の上歩きセット
		SMS	R0,CPLBGNO
;
		LMS	R0,CPLTYPE
		SUB	#P_HERI
		BEQ	YUKI_ON_010	;ヘリコプター？ ( yes:YUKI_ON_010 )
		NOP
;
		LMS	R0,CPLJUMP
		DEC	R0
		BPL	YUKI_ON_020	;着地の瞬間？ ( yes:YUKI_ON_020 )
		NOP
;
;-------------- 歩き中の雪セット --------------------------------
YUKI_ON_010
		LMS	R0,CPLWALK
		LMS	R5,CTIMING_CNT
		SBK			;[ SMS R0,CTIMING_CNT ]
		SUB	R5
		BEQ	YUKI_ON_050	;セットＯＫ？ ( no:YUKI_ON_050 )
		ADD	R5
;
		BNE	YUKI_ON_050	;セットＯＫ？ ( no:YUKI_ON_050 )
		NOP
;
YUKI_ON_020
		IWT	R0,#098H	;[♪]
		SMS	R0,CMSOUND3
;
		IWT	R5,#SNOW0	;(R5) <-- 効果Ｎｏ．
		mJSR	M_EXINSR	;効果エリア確保
;
		mSTW	R9,CEXXPSL,R1	;Ｘ座標セット
		IBT	R0,#018H
		TO	R5
		ADD	R10
		mSTW	R5,CEXYPSL,R1	;Ｙ座標セット
		IBT	R5,#SKSNOW
		mSTW	R5,CEXWRK0,R1	;初期カウンターセット
		IBT	R5,#03H
		mSTW	R5,CEXTIM0,R1	;初期タイマーセット
		IWT	R5,#0FEC0H
		mSTW	R5,CEXYSPD,R1	;Ｙスピードセット
;
YUKI_ON_050
		LMS	R11,RTS1	;[ return address load ]
		mRTS
;
;----------------------------------------------------------------
;-		せっけん					-
;----------------------------------------------------------------
SOAP_ON
		IBT	R0,#ON_SOAP	;せっけんの上歩きセット
		SMS	R0,CPLBGNO
;
		LMS	R11,RTS1	;[ return address load ]
		mRTS
;
;----------------------------------------------------------------
;-		へこみ床					-
;----------------------------------------------------------------
HEKOMI_ON
		LMS	R0,CONCHNG
		SUB	#0
		BNE	HEKOMI_ON_010	;ＢＧ特殊エリア空きあり？ ( no:HEKOMI_ON_010 )
		NOP
;
		IWT	R5,#DWNBG	;(R5) <-- 敵Ｎｏ．
		mJSR	M_ENINSR	;敵エリア確保
;
		BMI	HEKOMI_ON_010	;敵エリア無し？ ( yes:HEKOMI_ON_010 )
		NOP
;
		IBT	R5,#CEINIT	;敵イニシャルモードセット
		mSTW	R5,CENMODE,R1
		FROM	R9
		TO	R5
		SUB	#8
		mSTW	R5,CENXPSL,R1	;Ｘ座標セット
		LMS	R0,CWORK1
		TO	R5
		BIC	#0FH		;[ AND #0FFF0H ]
		mSTW	R5,CENYPSL,R1	;Ｙ座標セット
;
		IBT	R0,#01H		;ＢＧ特殊エリア確保
		SMS	R0,CONCHNG
;
HEKOMI_ON_010
		LMS	R11,RTS1	;[ return address load ]
		mRTS
;
;----------------------------------------------------------------
;-		階段						-
;----------------------------------------------------------------
KAIDAN_U_ON
		IWT	R1,#0F800H	;(R1) <-- 右上階段歩きフラグ
		BRA	KAIDAN_ON
		NOP
;
KAIDAN_D_ON
		IWT	R1,#0800H	;(R1) <-- 右下階段歩きフラグ
;
KAIDAN_ON
;
;-------------- 階段ジャンプチェック ----------------------------
		LMS	R0,CPLKAID
		LMS	R5,CBERFLG
		OR	R5
		LMS	R5,CPLNAGE
		BNE	KAIDAN_ON_050	;今、階段歩き中ｏｒ舌ショット中ｏｒタマゴ投げ中？ ( yes:KAIDAN_ON_050 )
		NOP
;
		LM	R0,CMKEYC1	;(R0) <-- コントローラー情報（連続）
		AND	#00000011B
		BEQ	KAIDAN_ON_050	;階段歩く？ ( no:KAIDAN_ON_050 )
		NOP
;
		IBT	R8,#0010H
		AND	#00000010B
		BEQ	KAIDAN_ON_010	;左へ歩く？ ( yes:KAIDAN_ON_010 )
		NOP
;
		IBT	R8,#0F0H	;[ IWT R8,#0FFF0H ]
KAIDAN_ON_010
		SMS	R0,CPLCMKI	;プレイヤー向きセット
;
		MOVE	R5,R8
		MOVES	R1,R1
		BPL	KAIDAN_ON_020
		WITH	R5
;
		NOT
		INC	R5
KAIDAN_ON_020
		MOVE	R0,R10
		MOVES	R5,R5
		BPL	KAIDAN_ON_030
		NOP
;
		XOR	#08H
KAIDAN_ON_030
		AND	#08H
		BEQ	KAIDAN_ON_040	;進行方向階段チェックする段？ ( no:KAIDAN_ON_040 )
		NOP
;
		MOVE	R14,R7		;(R7) save
;
		LMS	R0,CWORK0
		TO	R8		;(R8) <-- BG check X pos
		ADD	R8
		LMS	R0,CWORK1
		ADD	R5		;(R0) <-- BG check Y pos
		mJSR_X	BGUNIT_READ_S+1
		HEX	3D		;[ LMS R6,CBG2OF_FG ]
;
		FROM	R7
		SUB	R14
		BNE	KAIDAN_ON_060	;進行方向に階段あり？ ( no:KAIDAN_ON_060 )
		NOP
;
KAIDAN_ON_040
		SMS	R1,CPLKAID	;階段歩きフラグセット
;
		IBT	R0,#0080H	;スピードクリアー
		SMS	R0,CPLXSDR	;	”
		SMS	R0,CPLYSDR	;	”
;
KAIDAN_ON_050	EQU	$
		SUB	R0
		SMS	R0,CPLMVSP	;スピードクリアー
		SMS	R0,CPLXSPD	;	”
		SMS	R0,CPLYSPD	;	”
;
KAIDAN_ON_060
		LMS	R11,RTS1	;[ return address load ]
		mRTS
;
;----------------------------------------------------------------
;-		杭						-
;----------------------------------------------------------------
KUI_ON_OK
		LMS	R0,CPLDOSN
		DEC	R0
		BMI	KUI_ON_OK_010	;”ドスーン！！”？ ( no:KUI_ON_OK_010 )
		NOP
;
		LMS	R0,CPLJUMP
		DEC	R0
		BMI	KUI_ON_OK_010	;着地の瞬間？ ( no:KUI_ON_OK_010 )
		FROM	R6
;
		ADD	#1
		AND	#02H
		BNE	KUI_ON_OK_010	;頭ユニット？ ( no:KUI_ON_OK_010 )
		NOP
;
		mSFCALL KUI_BG_W	;杭ＢＧ書き換え
;
KUI_ON_OK_010
		LMS	R11,RTS1	;[ return address load ]
		mRTS
;
;----------------------------------------------------------------
;-		食べれるＢＧ					-
;----------------------------------------------------------------
EATBLK_ON_OK
		LMS	R0,CPLDOSN
		DEC	R0
		BMI	EATBLK_ON_OK_10 ;”ドスーン！！”？ ( no:EATBLK_ON_OK_10 )
		SUB	R0		;[ INT R0,#00 ]
;
		SMS	R0,CWORKE	;(CWKE) <-- 壊れたＢＧぶっ飛びＸスピード
		IWT	R0,#0080H
		SMS	R0,CWORKF	;(CWKF) <-- 壊れたＢＧぶっ飛びＹスピード
;
		mJSR	BRBG0_SET	;壊れたＢＧ効果セット
;
EATBLK_ON_OK_10
		LMS	R11,RTS1	;[ return address load ]
		mRTS
;
;----------------------------------------------------------------
;-		乗ったら落ちる床				-
;----------------------------------------------------------------
FALL_BLK_ON
		LMS	R0,CONFALL
		SUB	#0
		BNE	FALL_BLK_ON_010 ;ＢＧ特殊エリア空きあり？ ( no:FALL_BLK_ON_010 )
		NOP
;
		IWT	R5,#ON_DW	;(R5) <-- 敵Ｎｏ．
		mJSR	M_ENINSR	;敵エリア確保
;
		BMI	FALL_BLK_ON_010 ;敵エリア無し？ ( yes:FALL_BLK_ON_010 )
		NOP
;
		IBT	R5,#CEINIT	;敵イニシャルモードセット
		mSTW	R5,CENMODE,R1
		LMS	R0,CWORK0
		TO	R5
		BIC	#0FH		;[ AND #0FFF0H ]
		mSTW	R5,CENXPSL,R1	;Ｘ座標セット
		LMS	R0,CWORK1
		TO	R5
		BIC	#0FH		;[ AND #0FFF0H ]
		mSTW	R5,CENYPSL,R1	;Ｙ座標セット
;
		IBT	R0,#01H		;乗ったら落ちる床セットフラグ”ＯＮ”
		SMS	R0,CONFALL
;
FALL_BLK_ON_010
		LMS	R11,RTS1	;[ return address load ]
		mRTS
;
;
;;;;;------------------------------------------------------------------------
;;;;;-		    ダッシュ土けむりセットチェック			    -
;;;;;-			    in :					    -
;;;;;-				    (R2)  <-- ＢＧ当たりフラグ		    -
;;;;;-				    (R4)  <-- 移動角度			    -
;;;;;-				    (R9)  <-- プレイヤーＸ座標		    -
;;;;;-				    (R10) <--	   ”	Ｙ ”		    -
;;;;;-				    (R11) <-- 復帰アドレス		    -
;;;;;-				    (R14) <-- ＢＧチェックポイント	    -
;;;;;-						    データアドレス	    -
;;;;;-			    out :					    -
;;;;;-				    (R6)  <-- BG unit no.		    -
;;;;;-				    (R7)  <-- BG unit no. type		    -
;;;;;-				    (CWK0) <- ＢＧチェックＸ座標	    -
;;;;;-				    (CWK1) <-	    ”	  Ｙ ”		    -
;;;;;-			    break :					    -
;;;;;-				    (R1)				    -
;;;;;-				    (R5)				    -
;;;;;-				    (R13)				    -
;;;;;-			    use RAM :					    -
;;;;;-				    (RTS0)				    -
;;;;;------------------------------------------------------------------------
;;;;DASH_SMOK_CK
;;;;		    LMS	    R0,CPLDASH
;;;;		    DEC	    R0
;;;;		    BPL	    DASH_SMOK_CK_30 ;ダッシュ溜め中？ ( yes:DASH_SMOK_CK_30 )
;;;;		    NOP
;;;;;
;;;;		    LMS	    R0,CPLMVSP
;;;;		    DEC	    R0		    ;[ ０の２の補数は０！！ ]
;;;;		    BPL	    DASH_SMOK_CK_10
;;;;		    INC	    R0
;;;;;
;;;;		    NOT
;;;;		    INC	    R0
;;;;DASH_SMOK_CK_10
;;;;		    HIB
;;;;;
;;;;		    MOVE    R13,R14	    ;(R14) save
;;;;;
;;;;		    IWT	    R14,#DSMK1_STCK
;;;;		    TO	    R14
;;;;		    ADD	    R14
;;;;		    GETBS		    ;(R0) <-- ダッシュ土けむりセットタイミングデータ
;;;;;
;;;;		    MOVE    R14,R13	    ;(R14) load
;;;;;
;;;;		    DEC	    R0
;;;;		    BMI	    DASH_SMOK_CK_30 ;ダッシュ土けむりセット？ ( no:DASH_SMOK_CK_30 )
;;;;		    INC	    R0
;;;;;
;;;;		    LM	    R5,CFRCNT2
;;;;		    AND	    R5
;;;;		    BNE	    DASH_SMOK_CK_30 ;ダッシュ土けむりセット？ ( no:DASH_SMOK_CK_30 )
;;;;		    NOP
;;;;;
;;;;		    SMS	    R11,RTS0	    ;[ return address save ]
;;;;;
;;;;		    IWT	    R5,#DSMK1	    ;(R5) <-- 効果Ｎｏ．
;;;;		    mJSR    M_EXINSR	    ;効果エリア確保
;;;;;
;;;;		    IBT	    R5,#0F8H	    ;[ IWT R5,#0FFF8H ]
;;;;		    IBT	    R12,#080H	    ;[ IWT R12,#0FF80H ]
;;;;		    LMS	    R0,CPLCMKI
;;;;		    DEC	    R0		    ;[ (N) <-- 0:02H 1:00H ]
;;;;		    BMI	    DASH_SMOK_CK_20
;;;;		    INC	    R0
;;;;;
;;;;		    IBT	    R5,#010H
;;;;		    WITH    R12		    ;[ IWT R12,#0080H ]
;;;;		    LOB			    ;
;;;;DASH_SMOK_CK_20
;;;;		    TO	    R13
;;;;		    XOR	    #02H
;;;;		    mSTW    R13,CEXMUKI,R1  ;向きセット
;;;;		    WITH    R5
;;;;		    ADD	    R9		    ;[ ADD PLXPSL ]
;;;;		    mSTW    R5,CEXXPSL,R1   ;Ｘ座標セット
;;;;		    mSTW    R12,CEXXSPD,R1  ;Ｘスピードセット
;;;;		    IBT	    R0,#018H
;;;;		    TO	    R5
;;;;		    ADD	    R10
;;;;		    mSTW    R5,CEXYPSL,R1   ;Ｙ座標セット
;;;;		    IBT	    R5,#080H	    ;[ IWT R5,#0FF80H ]
;;;;		    mSTW    R5,CEXYSPD,R1
;;;;		    IBT	    R5,#04H
;;;;		    mSTW    R5,CEXWRK0,R1   ;初期カウンターセット
;;;;		    mSTW    R5,CEXTIM0,R1   ;初期タイマーセット
;;;;;
;;;;		    LMS	    R11,RTS0
;;;;;
;;;;DASH_SMOK_CK_30
;;;;		    mRTS
;
;------------------------------------------------------------------------
;-		”ドスーン！！”着地チェック				-
;-			in :						-
;-				(R2)  <-- ＢＧ当たりフラグ		-
;-				(R4)  <-- 移動角度			-
;-				(R9)  <-- プレイヤーＸ座標		-
;-				(R10) <--      ”   Ｙ ”		-
;-				(R11) <-- 復帰アドレス			-
;-				(R14) <-- ＢＧチェックポイント		-
;-						データアドレス		-
;-			out :						-
;-				(R6)  <-- BG unit no.			-
;-				(R7)  <-- BG unit no. type		-
;-				(CWK0) <- ＢＧチェックＸ座標		-
;-				(CWK1) <-	”    Ｙ ”		-
;-			break :						-
;-				(R1)					-
;-				(R5)					-
;-			use RAM :					-
;-				(RTS0)					-
;------------------------------------------------------------------------
DOSN_JUST_CK
		LMS	R0,CPLDOSN
		DEC	R0
		BMI	DOSN_JUST_CK_10 ;”ドスーン！！”？ ( no:DOSN_JUST_CK_10 )
		NOP
;
;-------------- サウンドセット座標セット ----------------
		IBT	R0,#023H	;[♪]
		SMS	R0,CMSOUND3
;
		IBT	R0,#040H
		SMS	R0,CSOUND_ON	;サウンドセットフラグセット
		LMS	R0,CPLXPSL
		SM	R0,CSOUND_X	;サウンドセットＸ座標セット
		LMS	R0,CPLYPSL
		SM	R0,CSOUND_Y	;サウンドセットＹ座標セット
;
		IBT	R0,#020H	;地震セット
		SMS	R0,CTILTCT
;
		SMS	R11,RTS0	;[ return address save ]
;
		IWT	R5,#DOSN0	;(R5) <-- 敵Ｎｏ．
		mJSR	M_EXINSR	;効果エリア確保
;
		mSTW	R9,CEXXPSL,R1	;Ｘ座標セット[ (R9):PLXPSL ]
		IBT	R0,#010H
		TO	R5
		ADD	R10		;[ ADD PLYPSL ]
		mSTW	R5,CEXYPSL,R1
		IBT	R5,#0BH		;初期カウンターセット
		mSTW	R5,CEXWRK0,R1
		IBT	R5,#02H		;初期タイマーセット
		mSTW	R5,CEXTIM0,R1
;
		LMS	R11,RTS0
;
DOSN_JUST_CK_10
		mRTS
;
;------------------------------------------------------------------------
;-		壊れたＢＧ効果セット					-
;-			in :						-
;-				(CWK0) <- セットＸ座標			-
;-				(CWK1) <-    ” Ｙ ”			-
;-				(CWKE) <- 壊れたＢＧぶっ飛びＸスピード	-
;-				(CWKE) <-	  ”	    Ｙ	 ”	-
;-			out :						-
;-									-
;-			break :						-
;-				(R1)					-
;-				(R5)					-
;-				(R12)					-
;-				(R13)					-
;-			use RAM :					-
;-				(RTS0)					-
;------------------------------------------------------------------------
BRBG0_SET
		SMS	R11,RTS0	;[ return address save ]
;
		IBT	R0,#0AH		;[♪]
		SMS	R0,CMSOUND3
;
		IWT	R5,#BRBG0	;(R5) <-- 効果Ｎｏ．
		mJSR	M_EXINSR	;効果エリア確保
;
		LMS	R0,CWORK0
		TO	R5
		BIC	#0FH		;[ AND #0FFF0H ]
		mSTW	R5,CEXXPSL,R1	;Ｘ座標セット
		LMS	R0,CWORK1
		TO	R5
		BIC	#0FH		;[ AND #0FFF0H ]
		mSTW	R5,CEXYPSL,R1	;Ｙ座標セット
		LMS	R5,CWORKE
		mSTW	R5,CEXXSPD,R1	;Ｘスピードセット
		LMS	R5,CWORKF
		mSTW	R5,CEXYSPD,R1	;Ｙスピードセット
		IBT	R5,#0AH
		mSTW	R5,CEXCHPT,R1	;初期パターンＮｏ．セット
		IBT	R5,#02H
		mSTW	R5,CEXTIM0,R1	;初期タイマーセット
		IBT	R5,#08H
		mSTW	R5,CEXGPOW,R1	;重力セット
		IWT	R5,#0400H
		mSTW	R5,CEXGMAX,R1	;最大重力セット
;
		mSFCALL EATBLK_BG_W	;食べれるＢＧ書き換え
;
		LMS	R11,RTS0
		mRTS
;
;************************************************************************
;*									*
;*		コントローラー入力					*
;*									*
;************************************************************************
;
PL_KEY
;
;------------------------------------------------------------------------
;-		舌ショットチェック					-
;------------------------------------------------------------------------
		SMS	R11,RTS2	;[ return address save ]
;
		mJSR	BERO_CHECK
;
		LMS	R11,RTS2	;[ retrn address load ]
;
;------------------------------------------------------------------------
;-		移動キーチェック					-
;------------------------------------------------------------------------
		LM	R1,CMKEYC1	;(R1) <-- コントローラー情報（連続）
		LM	R2,CMKEYC2	;(R2) <--	   ”	    （トリガー）
;
		LMS	R0,CPLKAID
		SUB	#0
		BEQ	PL_KEY_0000	;階段歩き中？ ( no:PL_KEY_0000 )
		NOP
;
		mDJMP	PL_KEY_1100
;
PL_KEY_0000
		LMS	R0,CPLJUMP
		DEC	R0
		BMI	PL_KEY_1000	;ジャンプ中？ ( no:PL_KEY_1000 )
		NOP
;
;------------------------------------------------------------------------
;-		ジャンプ中のキーチェック				-
;------------------------------------------------------------------------
;
;----------------------------------------------------------------
;-		”ドスーン！！”チェック			-
;----------------------------------------------------------------
		LMS	R0,CPLSITD
		LMS	R7,CBERFLG
		OR	R7
		LMS	R7,CPLNAGE	;(R7) <-- 0 ”ドスーン！！”フラグ”セット用データ
		OR	R7
		BNE	PL_KEY_0010	;タマゴ投げ か ”ドスーン！！”中？ ( yes:PL_KEY_0010 )
		SUB	R0
;
		FROM	R1
		AND	#00000011B
		BNE	PL_KEY_0010	;左右キー入力？ ( yes:PL_KEY_0010 )
		SUB	R0		;[ ”ドスーン！！”ウェイトカウンタークリアー ]
;
		FROM	R1
		AND	#00000100B
		BEQ	PL_KEY_0010	;下キー入力？ ( no:PL_KEY_0010 )
		INC	R7		;(R7) <-- ”ドスーン！！”フラグ”セット用データ
;
		LMS	R0,CPLDSNC
		INC	R0
		BEQ	PL_KEY_0020	;”ドスーン！！”禁止？ ( yes:PL_KEY_0020 )
		TO	R8		;[ * not break (R0) ]
;
		SUB	#08H
		BCC	PL_KEY_0010	;”ドスーン！！”ウェイトカウンターＯＫ？ ( no:PL_KEY_0010 )
		NOP
;
		IBT	R0,#073H
		SMS	R0,CMSOUND3	;[♪]
;
		SMS	R7,CPLDOSN	;”ドスーン！！”フラグ”ＯＮ”
		SUB	R0		;[ IBT R0,#0 ]
		SMS	R0,CPLYSPD	;Ｙスピードクリアー
		IBT	R0,#03H
		SMS	R0,CPDSNTM	;初期パターン切り替えタイマーセット
;
;-------------- 舌ショットキャンセル ----------------------------
		SMS	R11,RTS2	;[ return address save ]
;
		mJSR	BERO_CANCEL
;
		LMS	R11,RTS2	;[ retrn address load ]
		mDJMP	PL_KEY_1500
;
PL_KEY_0010
		SMS	R0,CPLDSNC	;”ドスーン！！”ウェイトカウンタークリアー
PL_KEY_0020
		mDJMP	PL_KEY_1500
;
;------------------------------------------------------------------------
;-		着地中のキーチェック					-
;------------------------------------------------------------------------
PL_KEY_1000
;
;----------------------------------------------------------------
;-		しゃがみチェック				-
;----------------------------------------------------------------
;;;;		    LMS	    R0,CPLDASH
		LMS	R0,CPLNAGE
		LOB			;[ * SBK ] (Z) <-- 投げ中？
;
		IBT	R8,#-1		;(R8) <-- しゃがみフラグ減算データ
		LMS	R7,CPLSITD	;[ * SBK ]
;
		BNE	PL_KEY_1010	;(Z):タマゴ投げ か 溜めダッシュ中？ ( yes:PL_KEY_1010 )
		SUB	R0		;(R0) <-- ＭＡＸチェックデータ（０）
;
		FROM	R1
		AND	#00000100B	;(R0) <-- ＭＡＸチェックデータ（０）
		BEQ	PL_KEY_1010	;しゃがみ？ ( no:PL_KEY_1010 )
		NOP
;
		IBT	R8,#1		;(R8) <-- しゃがみフラグ加算データ
		IBT	R0,#5		;(R0) <-- ＭＡＸチェックデータ
PL_KEY_1010
		SUB	R7
		BEQ	PL_KEY_1020	;しゃがみフラグＭＡＸ？ ( yes:PL_KEY_1020 )
		ADD	R7
;
		FROM	R7
		ADD	R8
		SBK			;[ SMS R0,CPLSITD ]
PL_KEY_1020
		BEQ	PL_KEY_1100	;しゃがみ中？ ( no:PL_KEY_1100 )
		SUB	R0		;[ IBT R0,#0 ]
;
		DEC	R0		;[ IWT R0,#0FFFFH ]
		SMS	R0,CPLDSNC	;”ドスーン！！”禁止！！
;
		LM	R0,CP_KEY_JUMP+1 ;(R0) <-- ジャンプボタン情報
		AND	R2
		BNE	PL_KEY_1102	;ジャンプ？ ( yes:PL_KEY_1102 )
		NOP
;
		mDJMP	PL_KEY_1800
;
;----------------------------------------------------------------
;-		ジャンプチェック				-
;----------------------------------------------------------------
PL_KEY_1100
		LM	R0,CP_KEY_JUMP+1 ;(R0) <-- ジャンプボタン情報
		AND	R2
		BEQ	PL_KEY_1200	;ジャンプ？ ( no:PL_KEY_1200 )
		NOP
;
PL_KEY_1102
		IBT	R0,#049H	;[♪]
		SMS	R0,CMSOUND3
;
;-------------- サウンドセット座標セット ----------------
		IBT	R0,#040H
		SMS	R0,CSOUND_ON	;サウンドセットフラグセット
		LMS	R0,CPLXPSL
		SM	R0,CSOUND_X	;サウンドセットＸ座標セット
		LMS	R0,CPLYPSL
		SM	R0,CSOUND_Y	;サウンドセットＹ座標セット
;
		LMS	R0,CPLBGCR
		IBT	R4,#000011000B
		AND	R4
		BNE	PL_KEY_1110	;頭ＢＧ当たり？ ( yes:PL_KEY_1110 )
		SUB	R0		;[ IBT R0,#0 ]
;
		IWT	R0,#0FB60H
PL_KEY_1110
		SMS	R0,CPLYSPD	;Ｙスピードセット
		LM	R6,CPL_ADD_XSP
		IWT	R0,#0170H
		LMULT
		WITH	R4
		HIB
		LOB
		SWAP
		OR	R4
		LMS	R6,CPLXSPD
		ADD	R6
		MOVE	R6,R0
		BPL	PL_KEY_1130
		NOP
;
		NOT
		INC	R0
PL_KEY_1130
		IWT	R4,#0300H
		SUB	R4
		BCC	PL_KEY_1140	;ＭＡＸスピードオーバー？ ( no:PL_KEY_1140 )
		NOP
;
		MOVES	R6,R6		;(N) set
		MOVE	R6,R4
		BPL	PL_KEY_1140
		WITH	R6
;
		NOT
		INC	R6
PL_KEY_1140
		SMS	R6,CPLMVSP
;
		IWT	R0,#P006
		SMS	R0,CPLJUMP	;ジャンプフラグ”ＯＮ”
;
		SUB	R0
		SMS	R0,CPLKAID	;階段フラグリセット
		SMS	R0,CPLSITD	;しゃがみリセット
		BRA	PL_KEY_1500
		NOP
;
;----------------------------------------------------------------
;-		上向きチェック					-
;----------------------------------------------------------------
PL_KEY_1200
		LMS	R0,CBERFLG
		DEC	R0
		BPL	PL_KEY_1500	;舌ショット中？ ( yes:PL_KEY_1500 )
		FROM	R1
;
		AND	#00001000B
		BEQ	PL_KEY_1500	;上向く？ ( no:PL_KEY_1500 )
		NOP
;
		IWT	R0,#P106
		SMS	R0,CPLUPFG	;上向きフラグ”ＯＮ”
;
;------------------------------------------------------------------------
;-		移動キーチェック					-
;------------------------------------------------------------------------
PL_KEY_1500
		LMS	R0,CPLKAID
		SUB	#0
		BEQ	PL_KEY_1502	;階段歩き中？ ( no:PL_KEY_1502 )
		NOP
;
		mDJMP	PL_KEY_1720
;
PL_KEY_1502
;;;;		    LMS	    R0,CPLDASH
;;;;		    SUB	    #0		    ;[ * PLSTOP へ ]
;;;;		    BEQ	    PL_KEY_1504	    ;溜めダッシュ？ ( no:PL_KEY_1504 )
;;;;		    NOP
;;;;;
;;;;		    mDJMP   PL_KEY_1510
;
PL_KEY_1504
		LM	R0,CFURA_FG
		SUB	#0
		BEQ	PL_KEY_1506	;”フラフラ〜”モード？ ( no:PL_KEY_1506 )
		NOP
;
		LMS	R0,CPLJUMP
		LMS	R5,CBERFLG
		OR	R5
		BEQ	PL_KEY_FURA	;ジャンプ中ｏｒ舌ショット中？ ( no:PL_KEY_FURA )
		NOP
;
PL_KEY_1506
		mDJMP	PL_KEY_XMOV
;
;------------------------------------------------------------------------
;-		”フラフラ〜”モードセット				-
;------------------------------------------------------------------------
PL_KEY_FURA
		LMS	R5,CPLFRCT	;(R5)  <-- ”フラフラ〜”カウンター
		MOVES	R12,R5		;(R12) <--	      ”	   （絶対値）
		BPL	PL_KEY_FR_010
		WITH	R12
;
		NOT
		INC	R12
PL_KEY_FR_010
		LMS	R4,CPLCMKI	;(R4)  <-- プレイヤー向き
;
		WITH	R1
		AND	#00000011B
		BEQ	PL_KEY_FR_050	;左右キー入力？ ( no:PL_KEY_FR_050 )
		NOP
;
;-------------- 移動キー入力 --------------------------------------------
		FROM	R1
		AND	#02H
		SUB	R4
		BEQ	PL_KEY_FR_020	;向き反転？ ( no:PL_KEY_FR_020 )
		NOP
;
		LMS	R0,CPLNAGE
		LOB
		BNE	PL_KEY_FR_020	;タマゴ投げ中？ ( yes:PL_KEY_FR_020 )
		WITH	R5		;”フラフラ〜”カウンター反転
;
		NOT
		INC	R5
		SMS	R5,CPLFRCT
		WITH	R4		;プレイヤー向き反転
		XOR	#02H
		SMS	R4,CPLCMKI
PL_KEY_FR_020
		IBT	R7,#02H		;(R7) <-- ”フラフラ〜”向き
		SMS	R7,CPLFRMK
		IBT	R0,#FR_CK-2
		SUB	R5
		BMI	PL_KEY_FR_060	;前進？ ( yes:PL_KEY_FR_060 )
		NOP
;
		BRA	PL_KEY_FR_061+1
		FROM	R7
;
;-------------- 移動キー入力無し ----------------------------------------
PL_KEY_FR_050	EQU	$
		LMS	R7,CPLFRMK	;(R7) <-- ”フラフラ〜”向き
;
PL_KEY_FR_060	EQU	$
		LMS	R0,CPSTPTM
		DEC	R0
		BPL	PL_KEY_FR_100	;カウンター切り替え？ ( no:PL_KEY_FR_100 )
		NOP
;
PL_KEY_FR_061	EQU	$
		FROM	R7
		XOR	R5
		BMI	PL_KEY_FR_062	;前進？ ( no:PL_KEY_FR_062 )
		NOP
;
		IBT	R0,#FR_MV-2-1
		SUB	R12
		BCC	PL_KEY_FR_070	;”フラフラ”終り？ ( yes:PL_KEY_FR_070 )
		NOP
;
		IBT	R0,#FR_CK
		SUB	R12
		BEQ	PL_KEY_FR_070	;ランダムセレクト？ ( yes:PL_KEY_FR_070 )
		NOP
;
;-------------- ”フラフラ〜”カウンター加算 --------------------
PL_KEY_FR_062
		WITH	R5
		BRA	PL_KEY_FR_090
		ADD	R7
;
;-------------- ランダムセレクト --------------------------------
PL_KEY_FR_070
		MOVES	R0,R1		;(R0) <-- 移動キー入力フラグ（１ｏｒ２）
		BNE	PL_KEY_FR_072	;移動キー入力？ ( yes:PL_KEY_FR_072 )
		SUB	R0		;[ 歩くになる為！！ ]
;
		IBT	R12,#FR_CK-2	;(R12) <-- 戻り”フラフラ〜”カウンターセット
		LM	R0,CRANDM0
		TO	R7
		AND	#04H
		WITH	R7		;(R7) <-- ”フラフラ〜”向き
		SUB	#02H
		SMS	R7,CPLFRMK
		FROM	R7
		XOR	R5
		BMI	PL_KEY_FR_080	;前進？ ( no:PL_KEY_FR_080 )
		NOP
;
		IBT	R12,#FR_CK+2	;(R12) <-- ”フラフラ〜”カウンターセット
		AND	#09H		;[ 移動キー入力中は（Ｒ０）＝０ ！！ ]
		BNE	PL_KEY_FR_080	;歩く？ ( no:PL_KEY_FR_080 )
		NOP
;
PL_KEY_FR_072
		IBT	R12,#FR_MV	;(R12) <-- 歩き”フラフラ〜”カウンターセット
PL_KEY_FR_080
		MOVES	R5,R5		;(N) set
		MOVE	R5,R12
		BPL	PL_KEY_FR_090
		WITH	R5
;
		NOT
		INC	R5
;
;-------------- ”フラフラ〜”カウンター切り替えタイマーセット --
PL_KEY_FR_090
		SMS	R5,CPLFRCT
		IBT	R0,#FR_MV
		ADD	R5
		LSR
		IWT	R14,#FURA_TMDT
		TO	R14
		ADD	R14
		GETB
		SMS	R0,CPSTPTM	;カウンター切り替えタイマーセット
;
;-------------- Ｘ移動チェック ----------------------------------
PL_KEY_FR_100
		IBT	R0,#FR_MV-1
		SUB	R12
		BCS	PL_KEY_1508	;移動？ ( no:PL_KEY_1508 )
		FROM	R7
;
		XOR	R5
		BMI	PL_KEY_1508	;カウンター加算？ ( no:PL_KEY_1508 )
		NOP
;
		MOVES	R5,R5
		BPL	PL_KEY_FR_110	;前進？ ( no:PL_KEY_FR_110 )
		WITH	R4
;
		XOR	#02H
PL_KEY_FR_110
		MOVE	R1,R4
		INC	R1		;[ ０→１、２→３ ]
;
;-------------- Ｘスピード制御 ------------------------------------------
PL_KEY_XMOV
		FROM	R1
		AND	#00000011B
		BNE	PL_KEY_1510	;左右キー入力？ ( yes:PL_KEY_1510 )
		NOP
;
PL_KEY_1508
		LMS	R0,CPLBGNO
		SUB	#ON_SOAP
		BCC	PL_KEY_1509	;滑らし？ ( no:PL_KEY_1509 )
		SUB	R0		;[ IBT R0,#0 ]
;
		SMS	R0,CPLSTOP
PL_KEY_1509
		mDJMP	PL_KEY_1800
;
PL_KEY_1510
		LMS	R7,CPLKEYFG
		MOVES	R7,R7
		BEQ	PL_KEY_1512	;キー反転？ ( no:PL_KEY_1512 )
		NOP
;
		XOR	#00000011B
PL_KEY_1512
		SMS	R0,CPLSTOP	;止まってるフラグリセット
;
		IBT	R7,#-1		;(R7) <-- 左右キーによる移動方向（左）
		TO	R4		;(R4) <-- プレイヤー向き
		AND	#02H
		BNE	PL_KEY_1520	;左へ？ ( yes:PL_KEY_1520 )
		NOP
;
		IBT	R7,#01H		;(R7) <-- 左右キーによる移動方向（右）
PL_KEY_1520
		LM	R0,CFURA_FG
		SUB	#0
		BNE	PL_KEY_1700	;”フラフラ”モード？ ( yes:PL_KEY_1700 )
		NOP
;
		LMS	R0,CPLCMKI	;(R0) <-- 移動向き
		SUB	R4
		BEQ	PL_KEY_1550	;向き変わった？ ( no:PL_KEY_1550 )
		NOP
;
		LMS	R0,CBERFLG
		LMS	R14,CPLNAGE
		OR	R14
		BNE	PL_KEY_1550	;舌ショット中ｏｒタマゴ投げ中？ ( yes:PL_KEY_1550 )
		NOP
;
		SMS	R4,CPLCMKI	;プレイヤー向きセット
;
PL_KEY_1550
		LMS	R0,CPLMVSP
		SUB	#0
		BEQ	PL_KEY_1700	;止まってた？ ( yes:PL_KEY_1700 )
		NOP
;
		XOR	R7
		BPL	PL_KEY_1700	;スリップ？ ( no:PL_KEY_1700 )
		NOP
;
;----------------------------------------------------------------
;-		スリップ					-
;----------------------------------------------------------------
PL_KEY_1600
;;;;		    LMS	    R0,CPLJUMP
;;;;		    SUB	    #0
;;;;		    BNE	    PL_KEY_1700	    ;ジャンプ中？ ( yes:PL_KEY_1700 )
;;;;		    NOP
;
		LMS	R0,PLBGNO
		SUB	#ON_SOAP
		BCS	PL_KEY_1700	;滑らし？ ( yes:PL_KEY_1700 )
		NOP
;
		IBT	R0,#04H
		SMS	R0,CPLSLIP	;スリップフラグ”ＯＮ”
;
;----------------------------------------------------------------
;-		加速						-
;----------------------------------------------------------------
PL_KEY_1700
		LM	R0,CPLBGNO+1	;ＢＧタイプ ×（（２＋２）×１６）
		LSR			;
		LSR			;
		TO	R7
		OR	R4		;[ ＯＲ（移動向き） ]
		LMS	R0,CPLANGL
		BIC	#0FH		;[ AND #0FFF0H ]
		LSR
		LSR
		TO	R7		;(R7) <-- 加速データポインター
		OR	R7
;
		IWT	R0,#MAX_SPEED
		TO	R14		;(R14) <-- ＭＡＸスピードデータポインター
		ADD	R7
		GETB
		INC	R14
		TO	R8		;(R8) <-- ＭＡＸスピード
		GETBH
;
		LMS	R0,CPLMVSP	;(R0) <-- 移動スピード
		LMS	R14,CBERFLG
		DEC	R14
		BPL	PL_KEY_1705	;(N):舌ショット？ ( yes:PL_KEY_1706 )
		NOP
;
		LMS	R14,CPLJUMP
		DEC	R14
		BMI	PL_KEY_1706	;ジャンプ中？ ( no:PL_KEY_1706 )
		INC	R14
;
		LMS	R14,CPLSPJP
		WITH	R14
		LOB
		DEC	R14
		DEC	R14
		BMI	PL_KEY_1706	;ジタバタジャンプ中？ ( no:PL_KEY_1706 )
		NOP
;
PL_KEY_1705
		ADD	R0		;スピード半分！！
PL_KEY_1706
		SUB	R8
		BEQ	PL_KEY_1850	;ＭＡＸスピードオーバー？ ( yes:PL_KEY_1850 )
		NOP
;
		XOR	R8
		BPL	PL_KEY_1850	;ＭＡＸスピードオーバー？ ( yes:PL_KEY_1850 )
		NOP
;
		LMS	R0,CPLSLIP
		LOB
		BEQ	PL_KEY_1710	;スリップ？ ( no:PL_KEY_1710 )
		NOP
;
		INC	R7
PL_KEY_1710
		IWT	R0,#ADD_SPEED
		ADD	R7
		TO	R14
		ADD	R7
		GETB
		INC	R14
		GETBH
;
		LMS	R7,CPLMVSP
		ADD	R7
		SBK			;[ SMS R0,CPLMVSP ]
;
PL_KEY_1720
		mRTS
;
;----------------------------------------------------------------
;-		減速						-
;----------------------------------------------------------------
PL_KEY_1800
		LMS	R0,CPLJUMP
		DEC	R0
		BMI	PL_KEY_1850	;ジャンプ中？ ( no:PL_KEY_1850 )
		NOP
;
		LMS	R0,CPLSWIM
		DEC	R0
		BPL	PL_KEY_1850	;泳いでる？ ( yes:PL_KEY_1850 )
		NOP
;
;--------------------------------------------------------
;-		ジャンプ中の減速			-
;--------------------------------------------------------
		IWT	R14,#MAX_SPEED	;(R14) <-- ＭＡＸスピードデータポインター
		LMS	R0,CPLSPJP
		TO	R8
		LOB
		LMS	R0,CPLMVSP
		DEC	R8
		DEC	R8
		BPL	PL_KEY_1802	;ジタバタジャンプ中？ ( yes:PL_KEY_1802 )
		ADD	R0
;
		ASR
PL_KEY_1802
		BPL	PL_KEY_1810
		NOP
;
		INC	R14
		INC	R14
PL_KEY_1810
		TO	R8
		GETB
		INC	R14
		WITH	R8
		GETBH
;
		SUB	R8
		BEQ	PL_KEY_1850	;ＭＡＸスピードオーバー？ ( yes:PL_KEY_1850 )
		NOP
;
		XOR	R8
		BPL	PL_KEY_1850	;ＭＡＸスピードオーバー？ ( yes:PL_KEY_1850 )
		NOP
;
		mRTS
;
;--------------------------------------------------------
;-		着地中の減速				-
;--------------------------------------------------------
PL_XSP_DOWN
PL_KEY_1850
		LM	R0,CPLBGNO+1	;ＢＧタイプ ×（２×１６）
		LSR			;
		LSR			;
		TO	R7		;
		LSR			;
		LMS	R0,CPLANGL
		BIC	#0FH		;[ AND #0FFF0H ]
		LSR
		LSR
		LSR
		TO	R4		;(R4) <-- 減速データポインター
		OR	R7
		IWT	R0,#MIN_SPEED
		TO	R14
		ADD	R4
		GETB
		INC	R14
		TO	R7		;(R7) <-- ＭＩＮスピード
		GETBH
;
		LMS	R8,CPLMVSP	;(R8) <-- 移動スピード
		FROM	R8
		SUB	R7
		BPL	PL_KEY_1860
		NOP
;
		INC	R4
PL_KEY_1860
		IWT	R0,#SUB_SPEED
		ADD	R4
		TO	R14
		ADD	R4
		GETB
		INC	R14
		GETBH
;
		LM	R4,CFURA_FG
		MOVES	R4,R4
		BEQ	PL_KEY_1862	;”フラフラ”モード？ ( no:PL_KEY_1862 )
		NOP
;
		DIV2
PL_KEY_1862
		LMS	R4,CPLSITD
		DEC	R4
		BMI	PL_KEY_1864	;しゃがんでる？ ( no:PL_KEY_1864 )
		NOP
;
		ADD	R0		;x4
		ADD	R0		;
PL_KEY_1864
		MOVE	R4,R0		;(R4) <-- 減速値
;
		ADD	R8
		MOVE	R8,R0
		SUB	R7
		XOR	R4
		BMI	PL_KEY_1870	;ＭＩＮスピードオーバー？ ( no:PL_KEY_1870 )
		SUB	R0
;
		SMS	R0,CPLSTOP
		MOVE	R8,R7
PL_KEY_1870
		SMS	R8,CPLMVSP
		mRTS
;
;------------------------------------------------------------------------
;-									-
;-		舌ショットチェック					-		   -
;-									-
;------------------------------------------------------------------------
BERO_CHECK
		LMS	R0,CPLFLSH
;;;;		    IWT	    R8,#080H
		IBT	R8,#040H
		SUB	R8
		BCC	BERO_CHECK_0000 ;ダメージ中？ ( no:BERO_CHECK_0000 )
		NOP
;
		mRTS
;
BERO_CHECK_0000
		SMS	R11,RTS1	;[ return address save ]
;
;------------------------------------------------------------------------
;-		舌のＢＧチェック					-
;------------------------------------------------------------------------
		LMS	R8,CBRCNTX	;(R8) <-- 舌のＸ座標
		LMS	R0,CBRCNTY	;(R0) <--   ”Ｙ ”
;
		mJSR_X	BGUNIT_READ_S+1 ;ＢＧユニットＮｏ．読み込み
		HEX	3D		;[ LMS R6,CBG2OF_FG ]
;
;		(R7) <-- BG unit no. type return !!
;
		LMS	R3,CEATSTP	;(R3) <-- 口に入れてるフラグ
		LMS	R4,CEATSPF	;(R4) <-- スペシャルショットフラグ
		LMS	R8,CEATFLG	;(R8) <-- 食べるてるフラグ
;
		LMS	R2,CBERFLG	;(R2) <-- 舌ショットフラグ
		DEC	R2
		BMI	BERO_CHECK_0010 ;舌ショット中？ ( no:BERO_CHECK_0010 )
		INC	R2
;
		mDJMP	BERO_CHECK_1500
;
;------------------------------------------------------------------------
;-		舌ショットチェック					-
;------------------------------------------------------------------------
BERO_CHECK_0010
;
;----------------------------------------------------------------
;-		タマゴ投げチェック				-
;----------------------------------------------------------------
		LMS	R0,CPLNAGE
		DEC	R0
		BPL	BERO_CHECK_0010C ;タマゴ投げ中？ ( yes:BERO_CHECK_0010C )
		NOP
;
		mDJMP	BERO_CHECK_0014
;
BERO_CHECK_0010C
		LMS	R1,CPLSWIM
		DEC	R1
		BPL	BERO_CHECK_0010E4 ;泳ぎ中？ ( yes:BERO_CHECK_0010E4 )
		NOP
;
		LMS	R1,CPNAGTM
		DEC	R1
		BMI	BERO_CHECK_0010D ;タマゴ投げパターン切り替え？ ( yes:BERO_CHECK_0010D )
		NOP
;
		mDJMP	BERO_CHECK_3000
;
BERO_CHECK_0010D
		LMS	R1,CPLNAGE_EGG
		MOVES	R1,R1
		BEQ	BERO_CHECK_0010D2 ;空振り？ ( yes:BERO_CHECK_0010D2 )
		NOP
;
		SUB	#6-1
		BEQ	BERO_CHECK_0010E ;投げ溜めポーズ？ ( yes:BERO_CHECK_0010E )
		NOP
;
BERO_CHECK_0010D2
		mDJMP	BERO_CHECK_0011
;
;-------------- 投げ溜めチェック --------------------------------
BERO_CHECK_0010E
		LMS	R3,CMKEYC2L
		LMS	R0,CP_KEY_BERO
		AND	R3
		BNE	BERO_CHECK_0010E4+1 ;キャンセルキー入力？ ( yes:BERO_CHECK_0010E4+1 )
		SUB	R0
;
		LMS	R3,CMKEYC1L	;(R3) <-- コントローラー情報（連続）
		IWT	R0,#0000001100000000B
		AND	R3
		BNE	BERO_CHECK_0010F ;キャンセルキー入力チェックＯＫ？ ( no:BERO_CHECK_0010F )
		SUB	R0		;[ キャンセルカウンターリセット ]
;
		IWT	R0,#0000010000000000B
		AND	R3
		BEQ	BERO_CHECK_0010F ;キャンセルキー入力？ ( no:BERO_CHECK_0010F )
		SUB	R0		;[ キャンセルカウンターリセット ]
;
		LMS	R0,CPLNAGR
		INC	R0
		TO	R2		;[ * not break (R0) ]
		SUB	#08H
		BCC	BERO_CHECK_0010F ;キャンセル？ ( no:BERO_CHECK_0010F )
		NOP
;
;-------------- タマゴ投げキャンセル --------------------
BERO_CHECK_0010E4
		SUB	R0
		SMS	R0,CPLNAGE
		SMS	R0,CPLNAGP
		mDJMP	BERO_CHECK_3000
;
BERO_CHECK_0010F
		SMS	R0,CPLNAGR	;キャンセルカウンターリセット
;
		IBT	R2,#01H		;(R2) <-- サーチ敵ターゲット表示タイマー
		LMS	R0,CCONFIGFG
		DEC	R0		;(N) set
		LMS	R0,P_KEY_MNAG	;(R0) <-- タマゴ投げボタン情報
		BMI	BERO_CHECK_0010F2 ;トリガータイプ？ ( yes:BERO_CHECK_0010F2 )
		NOP
;
;-------------- 押しっぱなしタイプ ----------------------
		AND	R3
		BEQ	BERO_CHECK_0010F4 ;タマゴ投げる？ ( yes:BERO_CHECK_0010F4 )
		NOP
;
		BRA	BERO_CHECK_00100
		NOP
;
;-------------- トリガータイプ --------------------------
BERO_CHECK_0010F2
		LMS	R3,CMKEYC2L	;(R3) <-- コントローラー情報（トリガー）
		LMS	R0,P_KEY_MNAG	;(R0) <-- タマゴ投げボタン情報
		AND	R3
		BEQ	BERO_CHECK_00100 ;タマゴ投げる？ ( no:BERO_CHECK_00100 )
		NOP
;
BERO_CHECK_0010F4
		IBT	R2,#010H	;(R2) <-- サーチ敵ターゲット表示タイマー
BERO_CHECK_00100
		LMS	R0,CPLNAGC
		ADD	#4
		IBT	R3,#020H
		SUB	R3
		BCS	BERO_CHECK_0010001 ;ターゲットカウンターＭＡＸ？ ( no:BERO_CHECK_0010001 )
		ADD	R3
;
		MOVE	R3,R0
BERO_CHECK_0010001
		LMS	R0,CPLNAGL
		SUB	#0
		BNE	BERO_CHECK_00102 ;ロックオン？ ( yes:BERO_CHECK_00102 )
		NOP
;
		LMS	R0,CPLNAGP
		IWT	R7,#(((08H*(48H-30H))+0FFH)&0FF00H)
		SUB	R7
		BCS	BERO_CHECK_001001 ;パワーＭＡＸ？ ( yes:BERO_CHECK_001001 )
		NOP
;
		LM	R0,CMKEYC1
		AND	#00001000B
		BNE	BERO_CHECK_0010010 ;上投げ？ ( yes:BERO_CHECK_0010010 )
		NOP
;
		IWT	R7,#4CH*2*040H	;(R7) <-- スタート目標角度
		BRA	BERO_CHECK_0010012
		NOP
;
;-------------- ターゲット角度回転 ----------------------
BERO_CHECK_001001
		LM	R0,CMKEYC1
		AND	#00001000B
		BEQ	BERO_CHECK_0010016 ;ターゲット角度変更？ ( no:BERO_CHECK_0010016 )
		NOP
;
;-------------- ターゲット角度変更 --------------
BERO_CHECK_0010010
		IWT	R7,#05CH*2*040H ;上投げ
BERO_CHECK_0010012
		LMS	R0,CPLNAGE_ANG	;(R0) <-- ターゲット角度
		TO	R14		;[ * not break (R0) ]
		SUB	R7		;(Z)+(N) set
;;;;		    BEQ	    BERO_CHECK_001006 ;目標角度と一致？ ( yes:BERO_CHECK_001006 )
		BEQ	BERO_CHECK_00100120 ;目標角度と一致？ ( yes:BERO_CHECK_00100120 )
		NOP			;[ * not break (N) ]
;
		IWT	R6,#0C0H
		BMI	BERO_CHECK_0010013
		NOP
;
BERO_CHECK_00100120
		IWT	R6,#-0C0H
BERO_CHECK_0010013
		SMS	R6,CPLNAGE_AMK	;ターゲット角度回転向きセット
;
BERO_CHECK_0010014
		ADD	R6
		MOVE	R14,R0
		SUB	R7
		XOR	R6
		MOVE	R0,R14
		BMI	BERO_CHECK_0010015 ;目標角度と一致？ ( no:BERO_CHECK_0010015 )
		NOP
;
		MOVE	R0,R7
BERO_CHECK_0010015
		BRA	BERO_CHECK_001004
		NOP
;
BERO_CHECK_0010016
		LMS	R0,CPLNAGE_ANG	;(R0) <-- ターゲット角度
		LMS	R6,CPLNAGE_AMK	;(R6) <-- ターゲット角度回転向き
BERO_CHECK_0010018
		TO	R7
		ADD	R6
		BMI	BERO_CHECK_001002 ;ＭＩＮ角度オーバー？ ( yes:BERO_CHECK_001002 )
		SUB	R0
;
		MOVE	R0,R7
		IWT	R7,#(03CH+20H)*2*040H
		SUB	R7
		BCC	BERO_CHECK_001004 ;ＭＡＸ角度オーバー？ ( no:BERO_CHECK_001004 )
		ADD	R7
;
		MOVES	R6,R6
		BMI	BERO_CHECK_001004 ;角度大オーバー？ ( yes:BERO_CHECK_001004 )
		NOP
;
BERO_CHECK_001002
		WITH	R6
		NOT
		INC	R6
BERO_CHECK_001003
		FROM	R6
		SBK			;[ SMS R6,CPLNAGE_AMK ]
;
BERO_CHECK_001004
		SMS	R0,CPLNAGE_ANG
;
BERO_CHECK_001006
		BRA	BERO_CHECK_00102
		NOP
;
BERO_CHECK_00101
		MOVE	R3,R0
;
;-------------- ロックオン切り替えチェック --------------
BERO_CHECK_00102
		LMS	R0,CMKEYC2L
		IBT	R7,#00110000B
		AND	R7
		BEQ	BERO_CHECK_001025 ;ロックオン切り替え？ ( no:BERO_CHECK_001025 )
		NOP
;
		LMS	R0,CPLNAGL
		SUB	#0
		BNE	BERO_CHECK_001023
		SUB	R0		;[ IBT R0,#0 ]
;
		MOVE	R0,R1
BERO_CHECK_001023
		SMS	R0,CPLNAGL
;
BERO_CHECK_001025
		IBT	R7,#00H		;(R7) <-- ターゲットカラーＡＮＤデータ（固定）
;;;;		    MOVES   R1,R1
;;;;		    BPL	    BERO_CHECK_00104 ;敵サーチ？ ( yes:BERO_CHECK_00104 )
;;;;		    NOP
;
;-------------- サーチ敵無しターゲット位置セット --------
		IBT	R0,#BANK LCOS_S
		ROMB
;
		IBT	R6,#030H	;(R6) <-- パワーＭＡＸまでの半径
		LMS	R0,CPLNAGP
		LSR
		LSR
		LSR
		ADD	R6
		IBT	R6,#048H	;(R6) <-- パワーＭＡＸの半径
		SUB	R6
		BCS	BERO_CHECK_001026
		ADD	R6
;
		MOVE	R6,R0		;(R6) <-- パワーＭＡＸの半径
BERO_CHECK_001026
		LMS	R0,CPLNAGE_ANG
		ADD	R0
		IWT	R14,#020H*2*40H*2
		SUB	R14
		LSR
		LSR
		LSR
		LSR
		LSR
		LSR
		LSR
		IWT	R14,#LCOS_S
		TO	R14
		ADD	R14
		GETB
		MULT	R6
		ADD	R0
		ADD	R0
		HIB
		SEX
		LMS	R4,CPLCMKI
		DEC	R4
		BMI	BERO_CHECK_00103
		NOP
;
		LMS	R4,CKOOPA_FG
		DEC	R4
		BPL	BERO_CHECK_00103
		NOP
;
		NOT
		INC	R0
BERO_CHECK_00103
		LMS	R4,CPLXPSL
		TO	R4		;(R4) <-- ターゲットＸ座標
		ADD	R4
;
		IWT	R0,#040H*2	;[ IWT R14,#LSIN ]
		TO	R14
		ADD	R14
		GETB
		MULT	R6
		ADD	R0
		ADD	R0
		HIB
		SEX
		ADD	#4
		LMS	R6,CPLYPSL
		TO	R6		;(R6) <-- ターゲットＹ座標
		ADD	R6
;
		IBT	R0,#BANK PLAYER_DATA
		ROMB
;
;-------------- ターゲット表示 --------------------------
		SMS	R3,CPLNAGC	;ターゲットカウンターセット
		SMS	R4,CPLNAGX	;ターゲットＸ座標セット
		SMS	R6,CPLNAGY	;     ”   Ｙ	 ”
;
		IWT	R5,#NAG_P	;(R5) <-- 効果Ｎｏ．
		mJSR	M_EXINSR	;効果エリア確保
;
		mSTW	R4,CEXXPSL,R1	;Ｘ座標セット
		mSTW	R6,CEXYPSL,R1	;Ｙ    ”
		LMS	R5,CPLXPSL
		mSTW	R5,CEXWRK4,R1	;基準Ｘ座標セット
		mSTW	R2,CEXTIM0,R1	;初期タイマーセット
		IBT	R0,#020H
		SUB	R3
		BCS	BERO_CHECK_001050
		ADD	R3
;
		MOVE	R3,R0
BERO_CHECK_001050
		mSTW	R3,CEXWRK0,R1	;ターゲットカウンターセット
		mLDW	R5,CEXCLOR,R1
;
		IBT	R4,#01H		;(R4)  <-- ターゲットタイプ
		mSTW	R4,CEXWRK2,R1	;ターゲットタイプセット
		LM	R0,CFRCNT2
		AND	#04H
		LSR
		ADD	#01H<<1		;[ カラー１ｏｒ２ ]
		TO	R5
		OR	R5
		mSTW	R5,CEXCLOR,R1	;カラーセット
;
		MOVE	R0,R3		;(R0) <-- ターゲットカウンター
;
		DEC	R2
		BNE	BERO_CHECK_00108 ;タマゴ投げる？ ( yes:BERO_CHECK_00108 )
		SUB	R0		;[ ロックオンフラグリセット ]
;
;-------------- 投げパワーｕｐ --------------------------
		LMS	R0,CPLNAGP
		IWT	R1,#(((08H*(48H-30H))+0FFH)&0FF00H)+(30H*8) ;[ 48H-30H:ターゲート長さの差 ]
		SUB	R1
		BCC	BERO_CHECK_00106 ;パワーＭＡＸ？ ( yes:BERO_CHECK_00106 )
		ADD	R1
;
		IWT	R0,#(((08H*(48H-30H))+0FFH)&0FF00H)
BERO_CHECK_00106
		IBT	R5,#030H	;[ 030H : パワー加算値 ]
		ADD	R5
		SMS	R0,CPLNAGP
;
		DEC	R0
		TO	R1
		HIB
		LOB
		SUB	R5		;[ 018H : パワー加算値 ]
		BCS	BERO_CHECK_00107 ;サウンドセット？ ( no:BERO_CHECK_00107 )
		NOP
;
		IBT	R0,#09H		;[♪]
		SMS	R0,CMSOUND3
;
BERO_CHECK_00107
		mDJMP	BERO_CHECK_3000
;
;-------------- 投げパターンセット ------------------------------
BERO_CHECK_00108
;;;;		    SUB	    R0		    ;[ IBT R0,#0 ]
;;;;		    SMS	    R0,CPLNAGL	    ;ロックオンフラグリセット
;
BERO_CHECK_0011
		LMS	R0,CPLNAGE
		DEC	R0		;-1
		TO	R14		;[ * not break (R0) ]
		SUB	#2
		BNE	BERO_CHECK_00110 ;サウンドセット？ ( no:BERO_CHECK_00110 )
		SBK			;[ SMS R0,CPLNAGE ] タマゴ投げフラグセット
;
		IBT	R14,#04AH	;[♪]
		SMS	R14,CMSOUND3
BERO_CHECK_00110
		IWT	R14,#NAGE_PATN_TMDT
		TO	R14
		ADD	R14
		GETB
		SMS	R0,CPNAGTM	;タイマーセット
;
BERO_CHECK_0012
		mDJMP	BERO_CHECK_3000
;
BERO_CHECK_0014
		MOVES	R3,R3
		BEQ	BERO_CHECK_0016 ;口に入れてる？ ( no:BERO_CHECK_0016 )
		NOP
;
		BMI	BERO_CHECK_0016 ;飲み込めない？ ( yes:BERO_CHECK_0016 )
		NOP
;
;-------------- 口に入れてる敵ショットチェック ------------------
		DEC	R4
		BPL	BERO_CHECK_001500 ;スペシャルショット？ ( yes:BERO_CHECK_001500 )
		INC	R4
;
;-------------- ２度押しモード --------------------------
		LMS	R0,CMKEYC2L	;(R0) <-- コントローラー情報（トリガー）
		LMS	R1,CP_KEY_BERO	;(R1) <-- 舌ショットボタン情報
		AND	R1
		BEQ	BERO_CHECK_0015F ;敵ショット？ ( no:BERO_CHECK_0015F )
		NOP
;
BERO_CHECK_0015
		mDJMP	BERO_CHECK_0022
;
;-------------- 飲み込みチェック --------------------------------
BERO_CHECK_0015F
		LMS	R0,CEAT_WAIT
		DEC	R0
		BMI	BERO_CHECK_00150 ;自動飲み込み？ ( yes:BERO_CHECK_00150 )
		NOP
;
BERO_CHECK_001500
		LMS	R1,CMKEYC1L	;(R1) <-- コントローラー情報（連続）
		IWT	R0,#00000100B*100H
		AND	R1
		BEQ	BERO_CHECK_0016 ;下キー入力？ ( no:BERO_CHECK_0016 )
		NOP
;
;-------------- 飲み込む！！ ----------------------------
BERO_CHECK_00150
		DEC	R4
		BPL	BERO_CHECK_0016 ;スペシャルショット？ ( yes:BERO_CHECK_0016 )
		INC	R4
;
		IBT	R3,#0		;飲み込みへ
		SMS	R3,CEATSTP
		IBT	R2,#EATEND+7	;飲み込みデモへ
		SMS	R2,CBERFLG
		mDJMP	BERO_CHECK_1500
;
;-------------- 口に入れて無い時の舌ショットチェック ------------
BERO_CHECK_0016
		LMS	R1,CMKEYC2L	;(R1) <-- コントローラー情報（トリガー）
		LMS	R0,CP_KEY_MNAG	;(R1) <-- ＭＡＸ投げボタン情報
		AND	R1
		BEQ	BERO_CHECK_0020 ;ＭＡＸ投げ？ ( no:BERO_CHECK_0020 )
		NOP
;
		LMS	R0,CPLSWIM
		DEC	R0
		BPL	BERO_CHECK_0018 ;泳ぎ中？ ( yes:BERO_CHECK_0018 )
		NOP
;
		LM	R0,CEGGPNT
		LOB
		BEQ	BERO_CHECK_0018 ;タマゴ持ってる？ ( no:BERO_CHECK_0018 )
		NOP
;
;-------------- タマゴ投げ初期セット ----------------------------
		LM	R1,CEGGLNK	;(R1) <-- 一番タマゴの敵インデックス
		mLDW0	CENMYNO,R1
		IWT	R7,#DRKEY
		SUB	R7
		BEQ	BERO_CHECK_0018 ;カギ？ ( yes:BERO_CHECK_0018 )
		NOP
;
		mSFCALL EGG_KILL	;タマゴオプション解除
;
		IBT	R0,#01AH	;[♪]
		SMS	R0,CMSOUND3
;
		IWT	R0,#CENWRK4	;タマゴ投げられフラグセット
		TO	R1
		ADD	R1
		IBT	R0,#0FFH
		STW	(R1)
;
BERO_CHECK_0018
		SMS	R0,CPLNAGE_EGG	;空振りフラグセット
;
		IBT	R0,#NAGE_P	;タマゴ投げフラグセット
		SMS	R0,CPLNAGE
		IBT	R0,#01H		;タマゴ投げパターン切り替えタイマーセット
		SMS	R0,CPNAGTM
		SUB	R0		;[ IBT R0,#0 ]
		SMS	R0,CPLNAGR	;タマゴ投げキャンセルカウンターリセット
		SMS	R0,CPLNAGL	;ロック解除
		SMS	R0,CPLKAID	;階段歩きキャンセル
;
;;;;		    IWT	    R7,#022H*2*040H
		IWT	R7,#08H*2*040H
		LM	R0,CMKEYC1
		AND	#00001000B
		BEQ	BERO_CHECK_00180 ;前投げ？ ( yes:BERO_CHECK_00180 )
		NOP
;
		IWT	R7,#05CH*2*040H ;上投げ
BERO_CHECK_00180
		SUB	R0		;[ INT R0,#0 ]
		SMS	R0,CPLNAGP
		SMS	R7,CPLNAGE_ANG	;ターゲット角度リセット
		IWT	R0,#-0C0H
		SMS	R0,CPLNAGE_AMK	;ターゲット角度回転向きリセット
;
		mDJMP	BERO_CHECK_3000
;
;----------------------------------------------------------------
;-		舌ショットチェック				-
;----------------------------------------------------------------
BERO_CHECK_0020
		LMS	R0,CP_KEY_BERO	;(R0) <-- 舌ショットボタン情報
		TO	R2
		AND	R1
		BEQ	BERO_CHECK_0030 ;舌ショット？ ( no:BERO_CHECK_0030 )
		NOP
;
BERO_CHECK_0022
		mDJMP	BERO_CHECK_0500
;
;----------------------------------------------------------------
;-		食べれるＢＧチェックオートチェック		-
;----------------------------------------------------------------
BERO_CHECK_0030
		LMS	R0,CPROTSP
		SUB	#0
		BEQ	BERO_CHECK_0031 ;回転中？ ( no:BERO_CHECK_0031 )
		NOP
;
		mDJMP	BERO_CHECK_3000
;
BERO_CHECK_0031
;;;;		    IWT	    R0,#1111100000000000B
;;;;		    AND	    R7
;;;;		    IWT	    R2,#ET
;;;;		    TO	    R2
;;;;		    SUB	    R2
;;;;		    BEQ	    BERO_CHECK_0033 ;食べれるＢＧ？ ( yes:BERO_CHECK_0033 )
;;;;		    INC	    R2		    ;[ INT R2,#01H ]
;;;;;
;;;;;-------------- 上のＢＧが食べれるか調べる ----------------------
;;;;		    LMS	    R0,CPLCMKI
;;;;		    ADD	    R0		    ;[ 0 <- 0 , 4 <- 2 ]
;;;;		    BNE	    BERO_CHECK_0032
;;;;		    NOP			    ;[ (Z)=1 : IBT R0,#4 ]
;;;;;
;;;;		    IBT	    R0,#-4
;;;;BERO_CHECK_0032
;;;;		    LMS	    R8,CBRCNTX
;;;;		    TO	    R8		    ;(R8) <-- 舌のＸ座標
;;;;		    ADD	    R8
;;;;;
;;;;		    LMS	    R0,CBRCNTY	    ;(R0) <--	”Ｙ ”
;;;;		    SUB	    #8
;;;;;
;;;;		    mJSR_X  BGUNIT_READ_S+1 ;ＢＧユニットＮｏ．読み込み
;;;;;;;;		TO	R7
;;;;		    HEX	    3D		    ;[ LMS R6,CBG2OF_FG ]
;;;;;
;;;;;		    (R7) <-- BG unit no. type return !!
;;;;;
;;;;		    IWT	    R0,#1111100000000000B
;;;;		    AND	    R7
;;;;		    IWT	    R2,#ET
;;;;		    SUB	    R2
;;;;		    BNE	    BERO_CHECK_0040 ;食べれるＢＧ？ ( no:BERO_CHECK_0040 )
;;;;		    NOP
;;;;;
;;;;		    IBT	    R2,#03H
;;;;BERO_CHECK_0033
;;;;		    MOVES   R3,R3
;;;;		    BNE	    BERO_CHECK_0036 ;口に入れてる？ ( yes:BERO_CHECK_0036 )
;;;;		    NOP
;;;;;
;;;;BERO_CHECK_0034
;;;;		    mDJMP   BERO_CHECK_0550
;;;;;
;;;;BERO_CHECK_0036
;;;;		    mDJMP   BERO_CHECK_0048
;
;----------------------------------------------------------------
;-		敵自動食べチェック				-
;----------------------------------------------------------------
;;;;BERO_CHECK_0040
;;;;		    LMS	    R1,CEATOK
;;;;		    DEC	    R1
;;;;		    BMI	    BERO_CHECK_0041 ;敵食べれる？ ( no:BERO_CHECK_0041 )
;;;;		    NOP
;;;;;
;;;;		    mLDB0   CENMODE,R1
;;;;		    IBT	    R2,#CEMOVE
;;;;		    SUB	    R2
;;;;		    BEQ	    BERO_CHECK_0042 ;敵健在？ ( yes:BERO_CHECK_0042 )
;;;;		    NOP
;;;;;
;;;;BERO_CHECK_0041
		mDJMP	BERO_CHECK_3000
;
;;;;BERO_CHECK_0042
;;;;		    IBT	    R2,#01H	    ;(R2) <-- 舌フラグセットデータ
;;;;;
;;;;		    MOVES   R8,R8
;;;;		    BEQ	    BERO_CHECK_0045 ;口に入れてる？ ( no:BERO_CHECK_0045 )
;;;;		    NOP
;;;;;
;;;;		    FROM    R4
;;;;		    SUB	    #3
;;;;		    BNE	    BERO_CHECK_0048 ;スイカの種スペシャルショット？ ( no:BERO_CHECK_0048 )
;;;;		    NOP
;;;;;
;;;;		    mLDW0   CENMYNO,R1
;;;;		    IWT	    R3,#SUIKA
;;;;		    SUB	    R3
;;;;		    BNE	    BERO_CHECK_0048 ;スイカ？ ( no:BERO_CHECK_0048 )
;;;;		    INC	    R1
;;;;;
;;;;		    IBT	    R3,#30
;;;;		    mLDW0   CENCHPT-1,R1
;;;;		    DEC	    R0
;;;;		    BMI	    BERO_CHECK_0043 ;噛りスイカ？ ( no:BERO_CHECK_0043 )
;;;;		    NOP
;;;;;
;;;;		    IBT	    R3,#3
;;;;BERO_CHECK_0043
;;;;		    LMS	    R0,CSUIKA_NO    ;スイカの種の数セット
;;;;		    ADD	    R3
;;;;		    SBK			    ;[ SMS R0,CSUIKA_NO ]
;;;;;
;;;;		    SMS	    R1,CEATFLG	    ;食べてるフラグリセット
;;;;		    SMS	    R1,CEATSTP	    ;口に入れてるフラグリセット
;;;;		    DEC	    R1
;;;;		    IBT	    R3,#CEEATM
;;;;		    mSTW    R3,CENMODE,R1
;;;;		    mLDW0   CENMOD2,R1
;;;;		    BIC	    #00001100B	    ;[ AND #0FFF3H ]
;;;;		    SBK			    ;[ mSTW R0,CENMOD2,R1 ]
;;;;		    IBT	    R8,#0
;;;;		    SMS	    R8,CEATSPF	    ;スペシャルショットフラグリセット
;;;;		    IBT	    R3,#0
;;;;		    mDJMP   BERO_CHECK_0550
;;;;;
;;;;BERO_CHECK_0045
;;;;		    mLDW0   CENMOD0,R1
;;;;		    IWT	    R5,#1100000000000000B
;;;;		    AND	    R5
;;;;		    IWT	    R5,#1000000000000000B
;;;;		    TO	    R5
;;;;		    SUB	    R5
;;;;		    BNE	    BERO_CHECK_0048 ;ヨコ当たりで蹴られる？ ( no:BERO_CHECK_0048 )
;;;;		    NOP
;;;;;
;;;;		    mLDW0   CENMOD1,R1
;;;;		    MOVE    R5,R0
;;;;		    IWT	    R1,#0110000000000000B
;;;;		    AND	    R1
;;;;		    SUB	    R1		    ;(Z) set
;;;;;
;;;;		    BEQ	    BERO_CHECK_0550 ;アイテム？ ( yes:BERO_CHECK_0550 )
;;;;		    NOP
;;;;;
;;;;		    MOVES   R5,R5
;;;;		    BMI	    BERO_CHECK_0550 ;飲み込む？ ( yes:BERO_CHECK_0550 )
;;;;		    NOP
;;;;;
;;;;BERO_CHECK_0048
;;;;		    mDJMP   BERO_CHECK_3000
;
;------------------------------------------------------------------------
;-		舌ショットセット					-
;------------------------------------------------------------------------
BERO_CHECK_0500
		LM	R0,CMKEYC1	;(R0) <-- コントローラー情報（連続）
		TO	R2
		AND	#00001000B
		BEQ	BERO_CHECK_0550 ;上キー入力？ ( no:BERO_CHECK_0550 )
		INC	R2		;[ IBT R2,#01H ]
;
		IBT	R2,#03H
BERO_CHECK_0550
		SMS	R2,CBERFLG	;舌ショット”ＯＮ”
;
		SUB	R0		;[ IBT R0,#0 ]
		SMS	R0,CBERO_BIRI	;ビリビリフラグキャンセル
		SMS	R0,CPLSITD	;しゃがみキャンセル
		SMS	R0,CPLKAID	;階段歩きキャンセル
		MOVES	R3,R3
		BNE	BERO_CHECK_0600 ;口に入れてる？ ( yes:BERO_CHECK_0600 )
		NOP
;
		IBT	R0,#3EH		;[♪]
		SMS	R0,CMSOUND3
;
;-------------- 口に入れて無い時のショット初期チェック ------------------
		FROM	R7
		AND	#AL
		BNE	BERO_CHECK_0560 ;ＢＧ当たり？ ( yes:BERO_CHECK_0560 )
		NOP
;
		mDJMP	BERO_CHECK_1050
;
;-------------- ＢＧ当たって口開けるだけセット ------------------
BERO_CHECK_0560
		IBT	R0,#02H+08H
		SMS	R0,CPSHOTM	;ショットデモタイマーセット
		mDJMP	BERO_CHECK_2250
;
;-------------- 口に入れてる時のショット初期チェック --------------------
BERO_CHECK_0600
		DEC	R4
		BMI	BERO_CHECK_0750 ;スペシャルショット？ ( no:BERO_CHECK_0750 )
		INC	R4
;
;-------------- スペシャルショットセット ------------------------
		LMS	R0,CPLSWIM
		DEC	R0
		BMI	BERO_CHECK_0602 ;泳いでる？ ( no:BERO_CHECK_0602 )
		SUB	R0		;[ IBT R0,#0 ]
;
		SMS	R0,CBERFLG	;舌ショット”ＯＦＦ”
		mDJMP	BERO_CHECK_3000
;
BERO_CHECK_0602
		IWT	R0,#CHR64+1F0H*20H ;ファイヤーショットキャラ転送フラグセット
		DEC	R4
		BEQ	BERO_CHECK_0610 ;ファイヤーショット？ ( yes:BERO_CHECK_0610 )
		INC	R4
;
		FROM	R4
		SUB	#4
		BNE	BERO_CHECK_0700 ;凍らせショット？ ( no:BERO_CHECK_0700 )
		NOP
;
		IWT	R0,#CHR64+1D0H*20H ;凍らせショットキャラ転送フラグセット
BERO_CHECK_0610
		SMS	R0,CPCHTRF
		LMS	R0,CBRCNTX	;ファイヤーＸ座標セット
		SMS	R0,CFIRSHX
		LMS	R0,CBRCNTY	;ファイヤーＹ座標セット
		SMS	R0,CFIRSHY
;
BERO_CHECK_0700
		FROM	R4
		SUB	#3
;;;;		    BEQ	    BERO_CHECK_0710 ;スイカショット？ ( yes:BERO_CHECK_0710 )
		BNE	BERO_CHECK_0710 ;スイカショット？ ( no:BERO_CHECK_0710 )
		SUB	R0		;[ IBT R0,#0 ]
;
;;;;		    IBT	    R2,#01H	    ;舌ショットフラグセット（横向き）
;;;;		    SMS	    R2,CBERFLG
;;;;		    mDJMP   BERO_CHECK_3000
;;;;;
;;;;BERO_CHECK_0710
		SMS	R0,CSUIKA_PT	;スイカの種ショット方向カウンターリセット
BERO_CHECK_0710
		mDJMP	BERO_CHECK_3000
;
;-------------- 普通のショット ----------------------------------
BERO_CHECK_0750
		FROM	R7
		AND	#AL
		BEQ	BERO_CHECK_0752 ;ＢＧ当たり？ ( no:BERO_CHECK_0752 )
		NOP
;
		mDJMP	BERO_CHECK_0900
;
;-------------- 口に入れてる時のショットセット ------------------
BERO_CHECK_0752
		IBT	R8,#0		;(R8) <-- 食べるてるフラグリセット
		SMS	R8,CEATFLG
;
		IWT	R12,#00180H	;上ショットＸスピード
		IWT	R13,#0FC80H	;     ”   Ｙスピード
		DEC	R2
		BNE	BERO_CHECK_0800 ;上にショット？ ( yes:BERO_CHECK_0800 )
		INC	R2
;
		IWT	R12,#00280H	;前ショットＸスピード
		IWT	R13,#00080H	;     ”   Ｙスピード
		LMS	R0,CPLCMKI
		DEC	R0
		BPL	BERO_CHECK_0800
		INC	R0
;
		INC	R0		;[ IBT R0,#01H ]
;
;-------------- ノーマルショット ----------------------------------------
BERO_CHECK_0800
		LMS	R0,CPLCMKI
		DEC	R0
		BMI	BERO_CHECK_0810
		WITH	R12
;
		NOT
		INC	R12
BERO_CHECK_0810
		SMS	R12,CPLNAGX	;ショットＸスピードセット
		SMS	R13,CPLNAGY	;ショットＹスピードセット
;
BERO_CHECK_0840
;;;;		    IBT	    R2,#03H
;;;;		    SMS	    R2,CBERFLG	    ;上ショット”ＯＮ”
;
BERO_CHECK_0850
		MOVE	R0,R2		;舌ショットフラグ x2
		DEC	R0		;
		ADD	R0		;
		LMS	R14,CPLCMKI
		OR	R14
		IWT	R14,#EAT_OFST_POS
		TO	R14
		ADD	R14
		GETBS
		INC	R14
		SMS	R0,CEATOFX	;食べたもののオフセットＸ位置セット
		GETBS
		SMS	R0,CEATOFY	;食べたもののオフセットＹ位置セット
;
BERO_CHECK_0900
		IWT	R1,#BE0D	;(R1) <-- ショットパターンＮｏ．
		LMS	R0,CPLSWIM
		DEC	R0
		BMI	BERO_CHECK_1000 ;泳いでる？ ( no:BERO_CHECK_1000 )
		NOP

		IWT	R1,#SB08	;(R1) <-- ショットパターンＮｏ．（泳いでる時）
BERO_CHECK_1000
		SMS	R1,CPLPATN	;パターンＮｏ．セット
;
		IBT	R0,#02H+08H	;(R0) <-- ショットデモタイマー
BERO_CHECK_1050
		SMS	R0,CPSHOTM	;ショットデモタイマーセット
		BRA	BERO_CHECK_1550
		NOP
;
;-------------- 舌ショット処理 ------------------------------------------
BERO_CHECK_1500
		LMS	R0,CPSHOTM
BERO_CHECK_1550
		MOVES	R1,R0		;(R1) <-- ショットデモタイマー
		BNE	BERO_CHECK_1800 ;ショットデモ？ ( yes:BERO_CHECK_1800 )
		NOP
;
		DEC	R8
		BMI	BERO_CHECK_1650 ;食べてる？ ( no:BERO_CHECK_1650 )
		INC	R8
;
		MOVES	R4,R4
		BEQ	BERO_CHECK_1600 ;スペシャルショット？ ( no:BERO_CHECK_1600 )
		NOP
;
;-------------- スペシャルショット ------------------------------
		LMS	R11,RTS1
		mDJMP	EAT_SP_SHOT
;
;-------------- 食べてるものショットできるかチェック ------------
BERO_CHECK_1600
		FROM	R7
		AND	#AL
		BEQ	BERO_CHECK_2000 ;ＢＧ当たり？ ( no:BERO_CHECK_2000 )
		NOP
;
		MOVES	R3,R3
		BNE	BERO_CHECK_1750 ;口に入れてる？ ( yes:BERO_CHECK_1750 )
		NOP
;
		mDJMP	BERO_CHECK_2000
;
BERO_CHECK_1650
		FROM	R7
		AND	#AL
		BEQ	BERO_CHECK_2000 ;ＢＧ当たり？ ( no:BERO_CHECK_2000 )
		NOP
;
		FROM	R2
		LSR
		BCC	BERO_CHECK_2000 ;舌戻り中？ ( yes:BERO_CHECK_2000 )
		SUB	R0		;[ IBT R0,#0 ]
;
		SMS	R0,CPLMVSP	;Ｘスピードクリアー
		INC	R2
		SMS	R2,CBERFLG
		IBT	R0,#1		;舌グニャフラグセット
		SMS	R0,CBERO_GUNYA
BERO_CHECK_1750
		LMS	R0,CBERXPS
		LMS	R1,CBERYPS
		OR	R1
		BNE	BERO_CHECK_2000 ;舌初期位置？ ( no:BERO_CHECK_2000 )
		NOP
;
		mDJMP_X BERO_CHECK_2550
		SUB	R0		;[ * 舌ショットフラグリセット ]
;
;-------------- ショットデモ ------------------------------------
BERO_CHECK_1800
		MOVES	R3,R3
		BEQ	BERO_CHECK_1850 ;口に入れてる？ ( no:BERO_CHECK_1850 )
		NOP
;
		FROM	R1
		SUB	#08H-1
		BNE	BERO_CHECK_1850 ;ショットパターンセット？ ( no:BERO_CHECK_1850 )
		NOP
;
		mDJMP	BERO_CHECK_2250
;
BERO_CHECK_1850
		mDJMP	BERO_CHECK_3000
;
;-------------- 舌伸縮セット ------------------------------------
BERO_CHECK_2000
		FROM	R2
		SUB	#07H
		BCC	BERO_CHECK_2010 ;飲み込みデモ？ ( no:BERO_CHECK_2010 )
		NOP
;
		mDJMP_X BERO_CHECK_2400+1
		FROM	R2
;
BERO_CHECK_2010
		LMS	R0,CBERO_GUNYA
		LOB
		BEQ	BERO_CHECK_2040 ;舌グニャ？ ( no:BERO_CHECK_2040 )
		FROM	R2
;
		IBT	R1,#BERO_P_END-1
		SUB	R1
		BCC	BERO_CHECK_2020 ;舌グニャ終了？ ( no:BERO_CHECK_2020 )
		ADD	R1
;
		BRA	BERO_CHECK_2030
		SUB	R0
;
BERO_CHECK_2020
		LMS	R1,CBERO_BIRI
		WITH	R1
		SUB	#2+1
		BCS	BERO_CHECK_2022 ;ビリビリ中？ ( yes:BERO_CHECK_2022 )
		INC	R0		;+1
;
		IBT	R1,#BERO_P_RETN
		SUB	R1
		BCS	BERO_CHECK_2030
		ADD	R1
;
		IBT	R1,#BERO_P_BIRI
		SUB	R1
		BCC	BERO_CHECK_2030
		ADD	R1
;
		IBT	R0,#BERO_P_RETN
		BRA	BERO_CHECK_2030
		NOP
;
BERO_CHECK_2022
		IBT	R1,#BERO_P_RETN
		SUB	R1
		BCC	BERO_CHECK_2030
		ADD	R1
;
		IBT	R0,#BERO_P_BIRI
BERO_CHECK_2030
		SMS	R0,CBERO_GUNYA
		BRA	BERO_CHECK_2250
		NOP
;
BERO_CHECK_2040
		ADD	R2		;x8
		ADD	R0		;
		LMS	R1,CPLCMKI	;(R1) <-- プレイヤー向き
		OR	R1		;
		ADD	R0		;
		IWT	R14,#BERO_SHOT_DT-8
		TO	R14
		ADD	R14
		GETB
		SEX
		BEQ	BERO_CHECK_2050 ;横ショット？ ( no:BERO_CHECK_2050 )
		INC	R14
;
		LMS	R1,CBERXPS
		ADD	R1
		BRA	BERO_CHECK_2100
		SBK			;[ SMS R0,CBERXPS ]
;
BERO_CHECK_2050
		GETBS
		LMS	R1,CBERYPS
		ADD	R1
		SBK			;[ SMS R0,CBERYPS ]
;
BERO_CHECK_2100
		INC	R14
		TO	R1
		GETBS
		SUB	R1
		BEQ	BERO_CHECK_2350 ;ＭＡＸ？ ( yes:BERO_CHECK_2350 )
		ADD	R1
;
		INC	R14
		TO	R1
		GETBS
		SUB	R1
		XOR	R1
		ADD	R0		;(C) <-- ＭＩＮチェックフラグ
;
		DEC	R8
		BPL	BERO_CHECK_2150 ;食べてる？ ( yes:BERO_CHECK_2150 )
		INC	R8
;
		BCS	BERO_CHECK_2250 ;ＭＩＮ？ ( no:BERO_CHECK_2250 )
		NOP
;
;-------------- 舌戻りチェック --------------------------
		LMS	R5,CMKEYC1L	;(R5) <-- コントローラー情報（連続）
		LMS	R0,CP_KEY_BERO	;(R0) <-- 舌ショットボタン情報
		AND	R5
		BNE	BERO_CHECK_2250 ;舌ショットキー離した？ ( no:BERO_CHECK_2250 )
		NOP
;
;-------------- 舌戻りセット --------------------
BERO_CHECK_2150
		FROM	R2
		LSR
		BCC	BERO_CHECK_2250 ;すでに戻ってる？ ( yes:BERO_CHECK_2250 )
		NOP
;
BERO_CHECK_2160
		INC	R2		;舌ショットフラグセット
		SMS	R2,CBERFLG
		DEC	R2
;
BERO_CHECK_2200
		IBT	R0,#03H		;待ちタイマーセット
		SMS	R0,CPSHOTM
;
;-------------- 舌ショットパターンセット ------------------------
BERO_CHECK_2250
		MOVE	R0,R2
		DEC	R0
		TO	R14
		BIC	#01H		;[ AND	#0FFFEH ]
;
		LMS	R1,CBERO_BIRI
		DEC	R1
		BMI	BERO_CHECK_2260 ;舌ビリビリ中？ ( no:BERO_CHECK_2260 )
		FROM	R1
;
		SUB	#2
		BCS	BERO_CHECK_2254
		NOP
;
		LMS	R0,CBERXPS
		LMS	R2,CBERYPS
		ADD	R2
		BPL	BERO_CHECK_2252
		NOP
;
		NOT
		INC	R0
BERO_CHECK_2252
		IBT	R2,#8*4
		SUB	R2
		BCS	BERO_CHECK_2258
		NOP
;
BERO_CHECK_2254
		SMS	R1,CBERO_BIRI
;
;-------------- 舌ビリビリパターンセット ----------------
BERO_CHECK_2258
		FROM	R1
		BIC	#01H
		ADD	R0
		OR	R14
		IWT	R14,#BERO_BIRI_PATN
		BRA	BERO_CHECK_2310+1
		TO	R14

BERO_CHECK_2260
		LMS	R0,CPLSWIM
		DEC	R0
		BMI	BERO_CHECK_2300 ;泳いでる？ ( no:BERO_CHECK_2300 )
		NOP
;
		INC	R14
BERO_CHECK_2300
		FROM	R14
		ADD	R14		;x2
		IWT	R14,#BERO_PATN
BERO_CHECK_2310
		TO	R14
		ADD	R14
		GETB
		INC	R14
		GETBH
		BRA	BERO_CHECK_2800
		NOP
;
;-------------- 舌ＭＡＸチェック --------------------------------
BERO_CHECK_2350
		FROM	R2
		LSR
		BCS	BERO_CHECK_2160 ;舌ショット終了？ ( no:BERO_CHECK_2160 )
		NOP
;
		DEC	R8		;[-1]
		BMI	BERO_CHECK_2550 ;食べてる？ ( no:BERO_CHECK_2550 )
		SUB	R0		;[ * 舌ショットフラグリセット ]
;
		mLDW0	CENMODE,R8
		IBT	R1,#CEEATM
		SUB	R1
		BNE	BERO_CHECK_2510 ;敵はずれた？ ( yes:BERO_CHECK_2510 )
		SUB	R0		;[ * 舌ショットフラグリセット ]
;
		MOVES	R3,R3
		BNE	BERO_CHECK_2550 ;口に入れてる？ ( yes:BERO_CHECK_2550 )
		NOP
;
		INC	R2		;[ ADD #07H-2-4 ]
BERO_CHECK_2400
		FROM	R2
		ADD	#4
BERO_CHECK_2450
		SMS	R0,CBERFLG	;舌ショットフラグセット
;
		IBT	R1,#EATEND+7+4
		SUB	R1
		BCC	BERO_CHECK_2460 ;タマゴ産み？ ( no:BERO_CHECK_2460 )
		ADD	R1
;
		IBT	R1,#EATEGGEND+7
		SUB	R1
		BCC	BERO_CHECK_2600 ;舌ショット終了？ ( no:BERO_CHECK_2600 )
		ADD	R1
;
		BRA	BERO_CHECK_2470
		NOP
;
BERO_CHECK_2460
		IBT	R1,#EATEND+7
		SUB	R1
		BCC	BERO_CHECK_2600 ;舌ショット終了？ ( no:BERO_CHECK_2600 )
		ADD	R1
;
BERO_CHECK_2470
		IBT	R0,#014H	;[♪]
		SMS	R0,CMSOUND3
;
BERO_CHECK_2510
		SUB	R0
		SMS	R0,CEATFLG	;食べるてるフラグリセット
;
BERO_CHECK_2550
		SMS	R0,CBERFLG	;舌ショットフラグリセット
		BRA	BERO_CHECK_3000
		NOP
;
;-------------- 飲み込みパターンセット --------------------------
BERO_CHECK_2600
		LMS	R1,CPLSWIM
		DEC	R1
		BMI	BERO_CHECK_2650 ;泳いでる？ ( no:BERO_CHECK_2650 )
		NOP
;
		INC	R0
BERO_CHECK_2650
		TO	R1		;x3
		ADD	R0		;
		ADD	R1		;
		IWT	R14,#EAT_END_PT-(7*3)
		TO	R14
		ADD	R14
		GETB
		INC	R14
		SMS	R0,CPSHOTM	;タイマーセット
		GETB
		INC	R14
		GETBH
;
BERO_CHECK_2800
		SMS	R0,CPLPATN	;パターンＮｏ．セット
;
BERO_CHECK_3000
		LMS	R11,RTS1
		mRTS
;
;------------------------------------------------------------------------
;-		スペシャルショットセット				-
;-			in :						-
;-				(R7) <-- BG unit no. type		-
;-				(R2) <-- 舌ショットフラグ		-
;-				(R3) <-- 口に入れてるフラグ		-
;-				(R4) <-- スペシャルショットフラグ	-
;-				(R8) <-- 食べるてるフラグ		-
;------------------------------------------------------------------------
EAT_SP_SHOT
		FROM	R4		;(R5) <--  JSRSUB address table pointer add data
		ADD	R4		;
		TO	R5		;
		ADD	R4		;
		INC	R5		;
;
		LMS	R0,CEATSPC	;スペシャルショットカウンター加算
		INC	R0
		SBK			;[ SMS R0,CEATSPC ]
;
		WITH	R15		;[ JSRSUB ]
		ADD	R5		;
		HEX	FF		;
		HEX	0,0,0		;[0] dummy
		WORD	FIRE_SHOT	;[1]
		NOP
		WORD	BABLE_SHOT	;[2]
		NOP
		WORD	SUIKA_SHOT	;[3]
		NOP
		WORD	COLD_SHOT	;[4]
		NOP
;
;----------------------------------------------------------------
;-		ファイヤーショット				-
;-			in :					-
;-				(R0) <-- EATSPC			-
;----------------------------------------------------------------
FIRE_SHOT
		IBT	R1,#(07H*2)+(07H*4)
		SUB	R1
		BCC	FIRE_SHOT_0050	;ファイヤーショット終了？ ( no:FIRE_SHOT_0050 )
		ADD	R1
;
;-------------- ファイヤーショット終了セット --------------------
		IWT	R0,#CHR64+1E0H*20H ;プレイヤースペシャルキャラ転送フラグセット
		SMS	R0,CPCHTRF
;
EAT_CANCEL
;;;;		    LMS	    R0,CEATSPT
		LMS	R0,CSUIKA_NO
		SUB	#10
;;;;		    SBK			    ;[ SMS R0,CEATSPT ]
		SBK			;[ SMS R0,CSUIKA_NO ]
		BNE	EAT_CANCEL_010	;スペシャルショット終了？ ( no:EAT_CANCEL_010 )
		SUB	R0		;[ IBT R0,#0 ]
;
EAT_CANCEL_2
		SMS	R0,CEATSPF	;スペシャルショットフラグリセット
		SMS	R0,CEATFLG	;食べてるフラグリセット
		SMS	R0,CEATSTP	;口に入れてるフラグリセット
EAT_CANCEL_3
EAT_CANCEL_010
		SMS	R0,CBERFLG	;舌ショットフラグリセット
		SMS	R0,CEATSPC	;スペシャルショットカウンターリセット
EAT_CANCEL_020
		mRTS
;
FIRE_SHOT_0050
		IBT	R1,#(07H*2)
		SUB	R1
		BCS	EAT_CANCEL_020	;敵ファイヤーセット？ ( no:EAT_CANCEL_020 )
		ADD	R1
;
		MOVE	R14,R0
		AND	#01H
		BNE	FIRE_SHOT_0150	;敵ファイヤーセットタイミング？ ( no:FIRE_SHOT_0150 )
		NOP
;
;-------------- 敵ファイヤーセット ------------------------------
		SMS	R11,RTS0	;[ return address save ]
;
		IWT	R5,#FIREX	;(R5) <-- 敵Ｎｏ．
		mJSR	M_ENINSR	;敵エリア確保
;
		BMI	FIRE_SHOT_0100	;敵エリア無し？ ( yes:FIRE_SHOT_0100 )
		NOP
;
		IBT	R0,#04H		;[♪]
		SMS	R0,CMSOUND3
;
		WITH	R14
		BIC	#01H
		LMS	R5,CPLCMKI	;(R5) <-- プレイヤー向き
		IBT	R0,#FIRE_ST_M
		TO	R12		;(R12) <-- プレイヤー向き×（２＋（４×６））
		MULT	R5
		IBT	R0,#FIRE_ST_P
		LMS	R11,CBERFLG
		DEC	R11
		BNE	FIRE_SHOT_0060	;プレイヤー上向いてる？ ( yes:FIRE_SHOT_0060 )
		NOP
;
		LMS	R11,CPLJUMP
		DEC	R11
		BPL	FIRE_SHOT_0060	;プレイヤージャンプ中？ ( yes:FIRE_SHOT_0060 )
		LSR			;[ IBT R0,#SUIKA_ST_P/2 ]
;
		SUB	R0		;[ IBT R0,#0 ]
FIRE_SHOT_0060
		ADD	R14
		ADD	R12
		IWT	R14,#FIRE_SET_XY-2
		TO	R14
		ADD	R14
		GETBS
		INC	R14
		LMS	R8,CFIRSHX
		TO	R8
		ADD	R8
		mSTW	R8,CENXPSL,R1	;Ｘ座標セット
		GETBS
		INC	R14
		LMS	R7,CFIRSHY
		TO	R7
		ADD	R7
		mSTW	R7,CENYPSL,R1	;Ｙ座標セット
		WITH	R5
		XOR	#02H
		mSTW	R5,CENMUKI,R1	;向きセット
		IBT	R5,#04H*4
		mSTW	R5,CENTIM0,R1	;タイマーセット
;
		WITH	R8
		ADD	#8
		FROM	R7
		ADD	#8
		mJSR_X	BGUNIT_READ_S+1 ;ＢＧユニットＮｏ．読み込み
		HEX	3D		;[ LMS R6,CBG2OF_FG ]
;
;		(R0) <-- BG unit no. type return !!
;
		AND	#AL
		BEQ	FIRE_SHOT_0100	;ＢＧ当たり？ ( no:FIRE_SHOT_0100 )
		NOP
;
		IBT	R0,#(07H*2)	;スペシャルショットカウンターセット
		SMS	R0,CEATSPC
;
FIRE_SHOT_0100
		LMS	R11,RTS0
;
FIRE_SHOT_0150
		mRTS
;
;----------------------------------------------------------------
;-		しゃぼん玉ショット				-
;-			in :					-
;-				(R0) <-- EATSPC			-
;----------------------------------------------------------------
BABLE_SHOT
		IBT	R1,#24
		SUB	R1
		BCC	BABLE_SHOT_0010 ;しゃぼん玉ショット終了？ ( no:BABLE_SHOT_0010 )
		ADD	R1
;
		mDJMP	EAT_CANCEL
;
;-------------- しゃぼん玉セットタイミングチェック --------------
BABLE_SHOT_0010
		IWT	R14,#SOAP_SET_TMG
		IBT	R12,#SOAP_SET_TMG_NO
		MOVE	R13,R15
BABLE_SHOT_0050
		TO	R1
		GETB
		SUB	R1
		BEQ	BABLE_SHOT_0100 ;しゃぼん玉セットタイミング？ ( yes:BABLE_SHOT_0100 )
		ADD	R1
;
		LOOP
		INC	R14
;
		mRTS
;
;-------------- 敵しゃぼん玉セット ------------------------------
BABLE_SHOT_0100
		SMS	R11,RTS0	;[ return address save ]
		MOVE	R14,R12		;(R12) save
;
		IWT	R5,#SOPB0	;(R5) <-- 敵Ｎｏ．
		mJSR	M_ENINSR	;敵エリア確保
;
		LMS	R11,RTS0	;[ return address load ]
		MOVE	R12,R14		;(R12) load
;
		BMI	BABLE_SHOT_0150	 ;敵エリア無し？ ( yes:BABLE_SHOT_0150 )
		NOP
;
		IBT	R0,#04H		;[♪]
		SMS	R0,CMSOUND3
;
		LMS	R0,CPLCMKI
		IBT	R14,#SOAP_ST_M
		TO	R14		;(R14) <-- プレイヤー向き×（２＋（４×６））
		MULT	R14
		IBT	R0,#SOAP_ST_P
		LMS	R5,CBERFLG
		DEC	R5
		BNE	BABLE_SHOT_0110 ;プレイヤー上向いてる？ ( yes:BABLE_SHOT_0110 )
		NOP
;
		LMS	R5,CPLJUMP
		MOVES	R5,R5
		BNE	BABLE_SHOT_0110 ;プレイヤージャンプ中？ ( yes:BABLE_SHOT_0110 )
		LSR			;[ IBT R0,#SUIKA_ST_P/2 ]
;
		SUB	R0		;[ IBT R0,#0 ]
BABLE_SHOT_0110
		ADD	R14
		IWT	R14,#SOAP_SET_XY
		TO	R14
		ADD	R14
		GETBS
		INC	R14
		LMS	R5,CBRCNTX
		TO	R5
		ADD	R5
		mSTW	R5,CENXPSL,R1	;Ｘ座標セット
		GETBS
		INC	R14
		LMS	R5,CBRCNTY
		TO	R5
		ADD	R5
		mSTW	R5,CENYPSL,R1	;Ｙ座標セット
;
		DEC	R12		;-1
		FROM	R12		;x4
		ADD	R12		;
		ADD	R0		;
		TO	R14
		ADD	R14
		GETB
		INC	R14
		TO	R5
		GETBH
		INC	R14
		mSTW	R5,CENXSPD,R1	;Ｘスピードセット
		GETB
		INC	R14
		TO	R5
		GETBH
		mSTW	R5,CENYSPD,R1	;Ｙスピードセット
;
		IBT	R5,#04
		mSTW	R5,CENCHPT,R1	;初期パターンＮｏ．セット
		IBT	R5,#10
		mSTW	R5,CENTIM1,R1	;初期タイマーセット
;
BABLE_SHOT_0150
		mRTS
;
;----------------------------------------------------------------
;-		スイカショット					-
;-			in :					-
;-				(R0) <-- EATSPC			-
;----------------------------------------------------------------
SUIKA_SHOT
;;;;		    SUB	    #6
		SUB	#8
		BCC	BABLE_SHOT_0150 ;スイカショットセット？ ( no:BABLE_SHOT_0150 )
		SUB	R0		;[ IBT R0,#0 ]
;
;-------------- 敵スイカ種セット --------------------------------
		SMS	R0,CEATSPC	;スイカショットウェイトセット
;
		SMS	R11,RTS0	;[ return address save ]
;
		IWT	R5,#SUIKT	;(R5) <-- 敵Ｎｏ．
		mJSR	M_ENINSR	;敵エリア確保
;
		LMS	R11,RTS0	;[ return address load ]
;
		BPL	SUIKA_SHOT_0050 ;敵エリア無し？ ( no:SUIKA_SHOT_0050 )
		NOP
;
		mDJMP	SUIKA_SHOT_0150
;
SUIKA_SHOT_0050
		IBT	R0,#045H	;[♪]
		SMS	R0,CMSOUND3
;
		LMS	R0,CPLCMKI
		IBT	R14,#SUIKA_ST_M
		TO	R14		;(R14) <-- プレイヤー向き×（２＋（４×６））
		MULT	R14
		IBT	R0,#SUIKA_ST_P
		LMS	R5,CBERFLG
		DEC	R5
		BNE	SUIKA_SHOT_0110 ;プレイヤー上向いてる？ ( yes:SUIKA_SHOT_0110 )
		NOP
;
		LMS	R5,CPLJUMP
		MOVES	R5,R5
		BNE	SUIKA_SHOT_0110 ;プレイヤージャンプ中？ ( yes:SUIKA_SHOT_0110 )
		LSR			;[ IBT R0,#SUIKA_ST_P/2 ]
;
		SUB	R0		;[ IBT R0,#0 ]
SUIKA_SHOT_0110
		ADD	R14
		IWT	R14,#SUIKA_SET_XY
		TO	R14
		ADD	R14
		GETBS
		INC	R14
		LMS	R5,CBRCNTX
		TO	R5
		ADD	R5
		mSTW	R5,CENXPSL,R1	;Ｘ座標セット
		GETBS
		INC	R14
		LMS	R5,CBRCNTY
		TO	R5
		ADD	R5
		mSTW	R5,CENYPSL,R1	;Ｙ座標セット
;
		LMS	R0,CSUIKA_PT
		TO	R5		;[ * not break (R0) ]
		SUB	#7-1
		BCC	SUIKA_SHOT_0120
		INC	R0
;
		SUB	R0
SUIKA_SHOT_0120
		SBK		       ;[ SMS R0,CSUIKA_PT ]
		ADD	R0
		ADD	R0
		TO	R14
		ADD	R14
		GETB
		INC	R14
		TO	R5
		GETBH
		INC	R14
		mSTW	R5,CENXSPD,R1	;Ｘスピードセット
		GETB
		INC	R14
		TO	R5
		GETBH
		mSTW	R5,CENYSPD,R1	;Ｙスピードセット
		IBT	R5,#1
		mSTW	R5,CENSHOT,R1	;ショットフラグ”ＯＮ”
		IBT	R5,#0FFH
		mSTB	R5,CENWTSP,R1	;水中スピードリセット
;
;-------------- 種切れチェック ----------------------------------
		LMS	R0,CSUIKA_NO
		DEC	R0
		BNE	SUIKA_SHOT_0150 ;種切れ？ ( no:SUIKA_SHOT_0150 )
		SBK			;[ SMS R0,CSUIKA_NO ]
;
		mDJMP_X EAT_CANCEL_2
		SUB	R0
;
SUIKA_SHOT_0150
		LMS	R0,CP_KEY_BERO	;(R0) <-- 舌ショットボタン情報
		LMS	R1,CMKEYC1L
		AND	R1
		BNE	SUIKA_SHOT_0100 ;連射スイカ種セット？ ( yes:SUIKA_SHOT_0100 )
		NOP
;
		mDJMP_X EAT_CANCEL_3
		SUB	R0
;
SUIKA_SHOT_0100
		mRTS
;
;----------------------------------------------------------------
;-		凍らせショット					-
;-			in :					-
;-				(R0) <-- EATSPC			-
;----------------------------------------------------------------
COLD_SHOT
		IBT	R1,#(07H*4)+(07H*4)
		SUB	R1
		BCC	COLD_SHOT_0050	;凍らせショット終了？ ( no:COLD_SHOT_0050 )
		ADD	R1
;
;-------------- 凍らせショット終了セット ------------------------
		IWT	R0,#CHR64+1E0H*20H ;プレイヤースペシャルキャラ転送フラグセット
		SMS	R0,CPCHTRF
		mDJMP	EAT_CANCEL
;
COLD_SHOT_0050
		IBT	R1,#(07H*4)
		SUB	R1
		BCS	SUIKA_SHOT_0100 ;凍らせ敵セット？ ( no:SUIKA_SHOT_0100 )
		ADD	R1
;
		MOVE	R14,R0
		AND	#03H
		BNE	SUIKA_SHOT_0100 ;凍らせ敵セットタイミング？ ( no:SUIKA_SHOT_0100 )
		NOP
;
;-------------- 凍らせ敵セット ----------------------------------
		SMS	R11,RTS0	;[ return address save ]
;
		IWT	R5,#COLDX	;(R5) <-- 敵Ｎｏ．
		mJSR	M_ENINSR	;敵エリア確保
;
		BMI	COLD_SHOT_0100	;敵エリア無し？ ( yes:COLD_SHOT_0100 )
		NOP
;
		IBT	R0,#04H		;[♪]
		SMS	R0,CMSOUND3
;
		FROM	R14
		BIC	#03H
		TO	R14
		LSR
		LMS	R5,CPLCMKI	;(R5) <-- プレイヤー向き
		IBT	R0,#FIRE_ST_M
		TO	R12		;(R12) <-- プレイヤー向き×（２＋（４×６））
		MULT	R5
		IBT	R0,#FIRE_ST_P
		LMS	R11,CBERFLG
		DEC	R11
		BNE	COLD_SHOT_0060	;プレイヤー上向いてる？ ( yes:COLD_SHOT_0060 )
		NOP
;
		LMS	R11,CPLJUMP
		DEC	R11
		BPL	COLD_SHOT_0060	;プレイヤージャンプ中？ ( yes:COLD_SHOT_0060 )
		LSR			;[ IBT R0,#SUIKA_ST_P/2 ]
;
		SUB	R0		;[ IBT R0,#0 ]
COLD_SHOT_0060
		ADD	R14
		ADD	R12
		IWT	R14,#FIRE_SET_XY-2
		TO	R14
		ADD	R14
		GETBS
		INC	R14
		LMS	R8,CFIRSHX
		TO	R8
		ADD	R8
		mSTW	R8,CENXPSL,R1	;Ｘ座標セット
		GETBS
		INC	R14
		LMS	R7,CFIRSHY
		TO	R7
		ADD	R7
		mSTW	R7,CENYPSL,R1	;Ｙ座標セット
		WITH	R5
		XOR	#02H
		mSTW	R5,CENMUKI,R1	;向きセット
		IBT	R5,#03H
		mSTW	R5,CENCHPT,R1	;パターンＮｏ．セット
		IBT	R5,#06H
		mSTW	R5,CENTIM0,R1	;タイマーセット
;
		WITH	R8
		ADD	#8
		FROM	R7
		ADD	#8
		mJSR_X	BGUNIT_READ_S+1 ;ＢＧユニットＮｏ．読み込み
		HEX	3D		;[ LMS R6,CBG2OF_FG ]
;
;		(R0) <-- BG unit no. type return !!
;
		AND	#AL
		BEQ	COLD_SHOT_0100	;ＢＧ当たり？ ( no:COLD_SHOT_0100 )
		NOP
;
		IBT	R0,#(07H*4)	;スペシャルショットカウンターセット
		SMS	R0,CEATSPC
;
COLD_SHOT_0100
		LMS	R11,RTS0
;
COLD_SHOT_0150
		mRTS
;
;------------------------------------------------------------------------
;-		舌ショットキャンセル					-		   -
;-			break :						-
;-				(R3),(R4),(R5),(R14)			-
;------------------------------------------------------------------------
BERO_CANCEL
		LMS	R3,CEATFLG
		DEC	R3		;[-1]
		BPL	BERO_CANCEL_010 ;食べてる？ ( yes:BERO_CANCEL_010 )
		NOP
;
		LMS	R3,CEATSTP
		MOVES	R3,R3
		BEQ	BERO_CANCEL_020 ;食べてる？ ( no:BERO_CANCEL_020 )
		SUB	R0		;[ R0 <- 0 ]
;
		BRA	BERO_CANCEL_030
		SUB	R0		;[ R0 <- 0 ]
;
BERO_CANCEL_010
		LMS	R0,CBERXPS
		LMS	R4,CBERYPS
		OR	R4
		BEQ	BERO_CANCEL_040 ;口に入れてる？ ( yes:BERO_CANCEL_040 )
		NOP
;
ENEAT_CANCEL
		IBT	R4,#CEMOVE	;敵を元に戻す
		mSTW	R4,CENMODE,R3
		IBT	R4,#0FFH
		mSTB	R4,CENWATR,R3	;水中フラグ初期セット
;
		mLDW0	CENMYNO,R3
		TO	R5
		ADD	R0
		IWT	R0,#ENDATA0
		TO	R14
		ADD	R5
		TO	R4
		GETB
		mSTW	R4,CENYUSN,R3
		IWT	R0,#ENMODE2
		TO	R14
		ADD	R5
		GETB
		IBT	R4,#00001100B
		TO	R4
		AND	R4
		mLDW0	CENMOD2,R3
		TO	R4
		OR	R4
		mSTW	R4,CENMOD2,R3
;
		SUB	R0		;[ IBT R0,#0 ]
		SMS	R0,CEATFLG
		SMS	R0,CEATSTP
		SMS	R0,CEATSPF
;
BERO_CANCEL_020
		SMS	R0,CBERFLG
BERO_CANCEL_030
		SMS	R0,CBERXPS
		SMS	R0,CBERYPS
BERO_CANCEL_040
		mRTS
;
;************************************************************************
;*									*
;*		パターンＮｏ．セット					*
;*									*
;************************************************************************
;
PL_PATN
;
;-------------- 回転パターンセット --------------------------------------
		LMS	R0,CPROTSP
		MOVES	R2,R0
		BEQ	PL_PATN_00100	;回転？ ( no:PL_PATN_00100 )
		NOP
;
PL_ROT_PATN_ST
		IBT	R1,#-06H
		BPL	PL_PATN_00010
		NOP
;
		NOT
		INC	R0
		IBT	R1,#06H
PL_PATN_00010
		IBT	R3,#040H
		SUB	R3
		BCS	PL_PATN_00018	;回転ダウンチェック？ ( no:PL_PATN_00018 )
		NOP
;
;-------------- 回転ダウンチェック ------------------------------
		LMS	R3,CPROTDW
		DEC	R3
		BMI	PL_PATN_00018	;回転ダウン？ ( no:PL_PATN_00018 )
		INC	R3
;
		LMS	R0,CPROTCT
		IWT	R4,#0600H-0100H
		SUB	R4
		BCC	PL_PATN_00022	;ダウンＯＫ回転パターン？ ( no:PL_PATN_00022 )
		NOP
;
		LMS	R0,CPLWORKTM
		DEC	R0
		BPL	PL_PATN_00014	;回転ダウンパターン切り替え？ ( no:PL_PATN_00014 )
		NOP
;
		DEC	R3
		SMS	R3,CPROTDW
		BNE	PL_PATN_00012
		NOP
;
		SMS	R3,CPROTSP	;回転キャンセル！！
PL_PATN_00012
		IWT	R0,#ROT_DOWN_TIM
		TO	R14
		ADD	R3
		GETB
		SMS	R0,CPLWORKTM	;回転ダウンパターン切り替えタイマーセット
PL_PATN_00014
		FROM	R3		;x2
		ADD	R3		;
		IWT	R14,#ROT_DOWN_PATN
		mDJMP_X PL_PATN_GET
		TO	R14
;
PL_PATN_00018
		WITH	R2
		ADD	R1
		FROM	R2
		XOR	R1
		BMI	PL_PATN_00020
		TO	R2		;[ IBT R2,#0 ]
;
		SUB	R0		;[ IBT R2,#0 ]
PL_PATN_00020
		SMS	R2,CPROTSP
;
PL_PATN_00022
		IWT	R1,#0600H	;(R1) <-- ＭＡＸ値
		LMS	R0,CPROTCT
		ADD	R2
		BPL	PL_PATN_00030	;ＭＩＮオーバー？ ( no:PL_PATN_00030 )
		NOP
;
		ADD	R1
PL_PATN_00030
		SUB	R1
		BCS	PL_PATN_00040	;ＭＡＸオーバー？ ( no:PL_PATN_00040 )
		NOP
;
		ADD	R1
PL_PATN_00040
		SBK			;[ SMS R0,CPROTCT ]
		HIB
		ADD	R0		;x2
		IWT	R14,#ROTATION_PATN
		mDJMP_X PL_PATN_GET
		TO	R14
;
;-------------- ダメージパターンセット ----------------------------------
PL_PATN_00100
		LMS	R1,CPLFLSH
;;;;		    IWT	    R2,#080H
		IBT	R2,#040H
		FROM	R1
		SUB	R2
		BCC	PL_PATN_01000	;ダメージ中？ ( no:PL_PATN_01000 )
		NOP
;
		IBT	R2,#(8*3)*2+32	;[ +32:着地までのウェイト ]
		SUB	R2
		BCC	PL_PATN_00110
		ADD	R2
;
		IWT	R0,#DM00
		SMS	R0,CPLPATN
		mRTS
;
PL_PATN_00110
		LMS	R2,CPLJUMP
		DEC	R2
		BMI	PL_PATN_00120	;ジャンプ中？ ( no:PL_PATN_0120 )
		NOP
;
		IBT	R2,#(8*3)*2
		SUB	R2
		BCS	PL_PATN_01000
		NOP
;
;;;;		    IWT	    R0,#080H
		IBT	R0,#040H
		SMS	R0,CPLFLSH
		BRA	PL_PATN_01000
		NOP
;
PL_PATN_00120
		IBT	R2,#(8*3)*2
		SUB	R2
		BCC	PL_PATN_00130
		ADD	R2
;
;;;;		    IWT	    R0,#080H+(8*3)*2-1
		IBT	R0,#040H+(8*3)*2-1
		SMS	R0,CPLFLSH
		IBT	R0,#(8*3)*2-1
PL_PATN_00130
		AND	#07H
		ADD	R0
		IWT	R14,#FAIL_KYORO_PATN
		mDJMP_X PL_PATN_GET
		TO	R14
;
;-------------- スペシャルショットパターンセット ------------------------
PL_PATN_01000
		LMS	R1,CEATSPC
		DEC	R1		;[ CMP #0 ]
		BMI	PL_PATN_02000	;スペシャルショット？ ( no:PL_PATN_02000 )
		NOP
;
		LMS	R0,CEATSPF
		SUB	#3
		BNE	PL_PATN_01030	;スイカショット？ ( no:PL_PATN_01030 )
		NOP
;
;-------------- スイカショットパターンセット --------------------
		MOVE	R0,R1
		IBT	R1,#6
PL_PATN_01010
		SUB	R1
		BCS	PL_PATN_01010+1
		SUB	R1
;
		ADD	R1
		ADD	R1
		TO	R1		;(R1) <-- スイカショットパターンＮｏ．
		ADD	R0		;x2
;
		IBT	R0,#6*2*2
		LMS	R2,CBERFLG
		DEC	R2
		BNE	PL_PATN_01020	;プレイヤー上向いてる？ ( yes:PL_PATN_01020 )
		NOP
;
		LMS	R2,CPLJUMP
		MOVES	R2,R2
		BNE	PL_PATN_01020	;プレイヤージャンプ中？ ( yes:PL_PATN_01020 )
		LSR			;[ IBT R0,#6*2 ]
;
		SUB	R0		;[ IBT R0,#0 ]
PL_PATN_01020
		ADD	R1
		IWT	R14,#SUIKA_SHOT_PATN
		mDJMP_X PL_PATN_GET
		TO	R14
;
;-------------- ”フー”パターンセット --------------------------
PL_PATN_01030
		IWT	R1,#SU0B
		LMS	R2,CBERFLG
		DEC	R2
		BNE	PL_PATN_01040	;プレイヤー上向いてる？ ( yes:PL_PATN_01040 )
		NOP
;
		IWT	R1,#SU0F
		LMS	R0,CPLJUMP
		DEC	R0
		BMI	PL_PATN_01040	;ジャンプ中？ ( no:PL_PATN_01040 )
		NOP
;
		IWT	R1,#SU04
PL_PATN_01040
		SMS	R1,CPLPATN
PL_PATN_RTS
		mRTS
;
;-------------- 舌出しパターンセット ------------------------------------
PL_PATN_02000
		LMS	R0,CBERFLG
		DEC	R0		;[ CMP #0 ]
		BPL	PL_PATN_RTS	;舌ショット中？ ( yes:PL_PATN_RTS )
		NOP
;
;;;;;-------------- 口の中で爆発パターンセット ------------------------------
;;;;		    LMS	    R0,CPLBOMB
;;;;		    LOB
;;;;		    BEQ	    PL_PATN_04000   ;口の中で爆発中？ ( no:PL_PATN_04000 )
;;;;		    NOP
;;;;;
;;;;		    IWT	    R1,#BO0A	    ;(R1) <-- 爆発パターンＮｏ．
;;;;		    SUB	    #03H+1
;;;;		    BCC	    PL_PATN_03010   ;プレイヤーカラー変更？ ( no:PL_PATN_03010 )
;;;;		    NOP
;;;;;
;;;;		    IBT	    R0,#02H	    ;プレイヤーカラーセット
;;;;		    SMS	    R0,CPLCLOR
;;;;		    IWT	    R1,#BO08	    ;(R1) <-- 爆発パターンＮｏ．
;;;;PL_PATN_03010
;;;;		    SMS	    R1,CPLPATN
;;;;		    mRTS
;
;-------------- タマゴ投げパターンセット --------------------------------
PL_PATN_04000
		LMS	R14,CPLNAGE
		DEC	R14
		BMI	PL_PATN_04100	;タマゴ投げ中？ ( no:PL_PATN_04100 )
		INC	R14
;
		FROM	R14
		SUB	#6
		BNE	PL_PATN_04090	;溜めポーズ？ ( no:PL_PATN_04090 )
		NOP
;
		LMS	R0,CPLNAGP
		DEC	R0
		BMI	PL_PATN_04090	;タマゴ投げ歩き？ ( no:PL_PATN_04090 )
		NOP
;
		LMS	R0,CPLJUMP
		DEC	R0
		BMI	PL_PATN_04010	;ジャンプ中？ ( no:PL_PATN_04010 )
		NOP
;
		LMS	R0,CPLSPJP
		LOB
		SUB	#02H
		BCC	PL_PATN_04090	;ジタバタジャンプ中？ ( no:PL_PATN_04090 )
		NOP
;
		IWT	R14,#SPJMP_NAGE_PATN
		mDJMP_X PL_PATN_GET
		TO	R14
;
PL_PATN_04010
		LMS	R0,CPLSLIP
		LOB
		BEQ	PL_PATN_04020	;スリップ中？ ( no:PL_PATN_04020 )
		NOP
;
		IWT	R14,#NAGE_SLIP_PATN
		mDJMP	PL_PATN_08010
;
PL_PATN_04020
		LMS	R0,CPLMVSP
		SUB	#0		;(N) <-- 符号
		BEQ	PL_PATN_04090	;止まってる？ ( yes:PL_PATN_04090 )
		NOP
;
		mDJMP	PL_PATN_11000
;
PL_PATN_04090
		LM	R0,CFURA_FG
		SUB	#0
		BEQ	PL_PATN_04092	;”フラフラ”モード？ ( no:PL_PATN_04092 )
		NOP
;
		IWT	R14,#FURA_EGG_PATN ;(R14) <-- タマゴ持ってる時パターンデータアドレス
		mDJMP	PL_PATN_10010
;
PL_PATN_04092
		IWT	R0,#NAGE_PATN-2
		ADD	R14
		BRA	PL_PATN_GET
		TO	R14
;
;-------------- 座りパターンセット --------------------------------------
PL_PATN_04100
		LMS	R0,CPLSITD
		LOB
		BEQ	PL_PATN_05000	;座り中？ ( no:PL_PATN_05000 )
		ADD	R0		;x2
;
		IWT	R14,#SIT_PATN-2
		BRA	PL_PATN_GET
		TO	R14
;
;-------------- 泳ぎパターンセット --------------------------------------
PL_PATN_05000
;
;-------------- ジャンプパターンセット ----------------------------------
PL_PATN_06000
		LMS	R1,CPLJUMP	;(R1) <-- ジャンプパターンＮｏ．
		DEC	R1
		BMI	PL_PATN_07000	;ジャンプ中？ ( no:PL_PATN_07000 )
		INC	R1
;
;-------------- ジャンプ横当たり”ボヨヨ〜ン”パターンセット ----
		LMS	R0,CPSBOYO
		LOB
		BEQ	PL_PATN_06100	;ジャンプ横当たり”ボヨヨ〜ン”？ ( no:PL_PATN_06100 )
		DEC	R0
;
		LSR
		BIC	#01H		;[ AND #0FFFEH ]
		IWT	R14,#SDBOYO_PATN
		BRA	PL_PATN_GET
		TO	R14
;
;-------------- ジャンプ頭当たり”ボヨヨ〜ン”パターンセット ----
PL_PATN_06100
		LMS	R0,CPHBOYO
		LOB
		BEQ	PL_PATN_06250	;ジャンプ頭当たり”ボヨヨ〜ン”？ ( no:PL_PATN_06250 )
		DEC	R0
;
		LMS	R14,CPBURAN
		DEC	R14
		BPL	PL_PATN_06200	;”ブラ〜ン”？ ( yes:PL_PATN_06200 )
		NOP
;
		BIC	#01H		;[ AND #0FFFEH ]
		IWT	R14,#HDBOYO_PATN
		BRA	PL_PATN_GET
		TO	R14
;
;-------------- ”ブラ〜ン”パターンセット ----------------------
PL_PATN_06200
		FROM	R14
		BIC	#01H
		IWT	R14,#BURAN_PATN
		BRA	PL_PATN_GET
		TO	R14
;
;-------------- ジタバタジャンプパターンセット ------------------
PL_PATN_06250
		LMS	R0,CPLSPJP
		LOB
		SUB	#02H
		BCC	PL_PATN_06300	;ジタバタジャンプ中？ ( no:PL_PATN_06300 )
		NOP
;
		IWT	R14,#SPJMP_PATN
		BRA	PL_PATN_GET
		TO	R14
;
;-------------- 普通のジャンプパターンセット --------------------
PL_PATN_06300
		SMS	R1,CPLPATN
		mRTS
;
;-------------- ジャンプ着地パターンセット ------------------------------
PL_PATN_07000
		LMS	R0,CPLJPTM
		LOB
		BEQ	PL_PATN_08000	;着地の瞬間？ ( no:PL_PATN_08000 )
		NOP
;
		BIC	#01H		;[ AND #0FFFEH ]
		IWT	R14,#JMPEND_PATN
		BRA	PL_PATN_GET
		TO	R14
;
;-------------- スリップパターンセット ----------------------------------
PL_PATN_08000
		LMS	R0,CPLSLIP
		LOB
		BEQ	PL_PATN_09000	;スリップ中？ ( no:PL_PATN_09000 )
		NOP
;
		IWT	R14,#SLIP_PATN
PL_PATN_08010
		LM	R0,CFRCNT2
		ADD	R0
		AND	#07H*2
		TO	R14
PL_PATN_GET
		ADD	R14
		GETB
		INC	R14
		GETBH
PL_PATN_SET_2
		SMS	R0,CPLPATN
		mRTS
;
PL_PATN_09000
		LMS	R0,CPLSTOP
		LOB
		BEQ	PL_PATN_10000	;棒立ち中？ ( yes:PL_PATN_10000 )
		NOP
;
;-------------- 横壁押しパターンセット ----------------------------------
		LMS	R0,CPSPUSH
		LOB
		BEQ	PL_PATN_09100	;横壁押し中？ ( no:PL_PATN_09100 )
		NOP
;
		IBT	R1,#PUSHTM
		SUB	R1
		BCC	PL_PATN_10000	;横壁押し待ち中？ ( no:PL_PATN_10000 )
		NOP
;
		LSR
		BIC	#01H		;[ AND #0FFFEH ]
		IWT	R14,#PUSH_PATN
		BRA	PL_PATN_GET
		TO	R14
;
PL_PATN_09100
		LMS	R0,CPLMVSP
		SUB	#0		;(N) <-- 符号
		BNE	PL_PATN_11000	;止まってる？ ( no:PL_PATN_11000 )
		NOP
;
;-------------- 止まってる時のパターンセット ----------------------------
;
;-------------- 上向きパターンセット ----------------------------
PL_PATN_10000
		LMS	R0,CPLUPFG
		SUB	#0
		BNE	PL_PATN_SET_2	;上向き中？ ( yes:PL_PATN_SET_2 )
		NOP
;
		LM	R0,CFURA_FG
		SUB	#0
		BEQ	PL_PATN_100050	;”フラフラ”モード？ ( no:PL_PATN_100050 )
		NOP
;
;-------------- ”フラフラ”パターンセット ----------------------
		IWT	R14,#FURA_PATN	;(R14) <-- タマゴ持ってない時パターンデータアドレス
PL_PATN_10010
		LMS	R0,CPLFRCT
		IBT	R1,#FR_MV
		ADD	R1
		BRA	PL_PATN_GET
		TO	R14
;
;-------------- 止まってる時のいろんなパターンセット ------------
PL_STOP_PT_SET
PL_PATN_100050
		LMS	R0,CPSTPTM
		LOB
		BNE	PL_PATN_10200	;”ポリポリ”？ ( no:PL_PATN_10200 )
		NOP
;
		IBT	R1,#00		;(R1) <-- ”タンタン”タイプ
		LM	R0,CRANDM0
		LSR
		BCS	PL_PATN_10100	;止まってる時のタイプセット？ ( no:PL_PATN_10100 )
;;;;;		     LSR		;[SFC] ＳＦＣ仕様に合わせた為！！
		NOP			;[SFC] ＳＦＣ仕様に合わせた為！！
;
		TO	R1
		AND	#03H*2
PL_PATN_10100
		SMS	R1,CPSTPNO	;止まってる時のタイプセット
		FROM	R1		;[SFC] ＳＦＣ仕様に合わせた為！！
		LSR			;[SFC] ＳＦＣ仕様に合わせた為！！
		IWT	R14,#PLSTOP_TMDT
		TO	R14
		ADD	R14
		GETB
		SMS	R0,CPSTPTM	;止まってる時のタイプ用タイマーセット
;
PL_PATN_10200
		TO	R1
		ADD	R0
		LMS	R0,CPSTPNO
;;;;		    ADD	    R0		;[SFC] ＳＦＣ仕様に合わせた為！！
		IWT	R14,#PLSTOP_PTIN
		TO	R14
		ADD	R14
		GETB
		INC	R14
		GETBH
		ADD	R1
		IWT	R14,#PLSTOP_PATN
		mDJMP_X PL_PATN_GET
		TO	R14
;
;-------------- 歩きパターンセット --------------------------------------
PL_PATN_11000
		BPL	PL_PATN_11100
		NOP
;
		NOT
		INC	R0
PL_PATN_11100
		LM	R4,CFURA_FG	;(R4) <-- ”フラフラ”モードフラグ
		MOVES	R4,R4
		BNE	PL_PATN_11200	;”フラフラ”モード？ ( yes:PL_PATN_11200 )
		NOP
;
		IWT	R1,#BWXMX-20H
		SUB	R1
		BCC	PL_PATN_11200	;（Ｐ）ダッシュ中？ ( no:PL_PATN_11200 )
		ADD	R1
;
;-------------- （Ｐ）ダッシュパターンセット --------------------
		IWT	R1,#P01C
		LMS	R0,CPLNAGE
		DEC	R0
		BMI	PL_PATN_11110	;タマゴ投げ中？ ( no:PL_PATN_11110 )
		NOP
;
		IWT	R1,#NR1C
PL_PATN_11110
		LM	R0,CFRCNT2
		AND	#00000010B
		BNE	PL_PATN_11130	;歩くサウンドセット？ ( no:PL_PATN_11130 )
		NOP
;
;-------------- 歩くサウンドセット ------------------------------
		LMS	R0,CPLBGNO
		IWT	R14,#WALK_SOUND
		TO	R14
		ADD	R14
		GETB
		DEC	R0
		BMI	PL_PATN_11120	;歩くサウンドセット？ ( no:PL_PATN_11120 )
		INC	R0
;
		SMS	R0,CMSOUND3    ;[♪]
PL_PATN_11120
		SUB	R0		;[ IBT R0,#0 ]
PL_PATN_11130
		SMS	R0,CPLWALK
		LSR
		ADD	R1
PL_PATN_SET
		SMS	R0,CPLPATN
		mRTS
;
;-------------- 歩きパターンセット ------------------------------
PL_PATN_11200
		ADD	R0
		ADD	R0
		TO	R1		;(R1) <-- 歩くスピードポインター
		HIB
		LMS	R0,CPLWKTM
		LOB			;(Z) <-- 歩くパターン切り替え？
;
		LMS	R0,CPLWALK	;(R0) <-- 歩くパターンカウンター [ * SBK ]
		IWT	R2,#WALK_PATN	;(R2) <-- 歩くパターンＮｏ．データアドレス
;
		BNE	PL_PATN_11400	;歩くパターン切り替え？ ( no:PL_PATN_11400 )
		NOP
;
		LMS	R3,CPLMVSP
		LMS	R14,CPLCMKI
		DEC	R14
		WITH	R3
		XOR	R14
		BMI	PL_PATN_11250	;後ろ歩き？ ( no:PL_PATN_11250 )
		INC	R0		;[+1]
;
		SUB	#2+1
		BPL	PL_PATN_11300
		NOP
;
		IBT	R0,#WLKMX_C
		BRA	PL_PATN_11300
		NOP
;
PL_PATN_11250
		IBT	R3,#WLKMX_C
		TO	R3
		SUB	R3
		BCC	PL_PATN_11300
		INC	R0		;[+2]
;
		SUB	R0
PL_PATN_11300
		SMS	R0,CPLWALK
		MOVE	R3,R0		;(R3) <-- 歩くパターンカウンター
;
		ADD	R0
		ADD	R0
		ADD	R0
		TO	R1
		OR	R1
;
		LMS	R0,CPLBGNO
		DEC	R3
		BMI	PL_PATN_11310	;歩くサウンドセットパターン？ ( yes:PL_PATN_11310 )
		INC	R3
;
		IBT	R14,#WLKMX_Cw2
		WITH	R14		;[ * not break (R0) ]
		SUB	R3
		BNE	PL_PATN_11350	;歩くサウンドセットパターン？ ( no:PL_PATN_11350 )
		NOP
;
;-------------- 歩くサウンドセット ------------------------------
PL_PATN_11310
		IWT	R14,#WALK_SOUND
		TO	R14
		ADD	R14
		TO	R14
		GETB
		DEC	R14
		BMI	PL_PATN_11350	;歩くサウンドセット？ ( no:PL_PATN_11350 )
		INC	R14
;
		SMS	R14,CMSOUND3	;[♪]
PL_PATN_11350
		ADD	R0
		IWT	R14,#WALK_TMIN
		TO	R14
		ADD	R14
		GETB
		INC	R14
		GETBH
		ADD	R1
		IWT	R14,#WALK_TMDT
		TO	R14
		ADD	R14
		GETB
		SMS	R0,CPLWKTM	;歩くパターン切り替えタイマーセット
;
		FROM	R3
PL_PATN_11400
		TO	R14
		ADD	R2
;
		LMS	R0,CPLNAGE
		DEC	R0
		BMI	PL_PATN_11410	;タマゴ投げ中？ ( no:PL_PATN_11410 )
		NOP
;
		IBT	R0,#WLKMX_C+2
		TO	R14
		ADD	R14
;
PL_PATN_11410
		MOVES	R4,R4
		BEQ	PL_PATN_11430	;”フラフラ”モード？ ( no:PL_PATN_11430 )
		NOP
;
		IBT	R0,#WLKMX_Cx2+(2*2)
		LMS	R4,CPLFRCT
		MOVES	R4,R4		;(N) set
;
		IBT	R4,#FR_MV
		BPL	PL_PATN_11420	;前進？ ( yes:PL_PATN_11420 )
		WITH	R4
;
		NOT
		INC	R4
		ADD	R0		;x2
PL_PATN_11420
		SMS	R4,CPLFRCT
		TO	R14
		ADD	R14
;
PL_PATN_11430
		GETB
		INC	R14
		GETBH
		SMS	R0,CPLPATN
		mRTS
;
;
;
;
;************************************************************************
;*									*
;*		キノコヨッシー						*
;*									*
;************************************************************************
KINOKO_MV
		SUB	R0		;<<< end >>>
		STOP
		NOP
;
;
;
;
;
;
;
;
;************************************************************************
;*									*
;*		敵エリア確保						*
;*			in:						*
;*				(R5) <-- 敵Ｎｏ．			*
;*			out:						*
;*				(N)  <-- 0:エリア有り 1:エリア無し	*
;*				(R1) <-- 敵インデックス			*
;*			break:						*
;*				(R12)					*
;*				(R13)					*
;*				(REG14)					*
;*									*
;************************************************************************
M_ENINSR	EQU	$
		IWT	R1,#CENMODE+(CENNO-1)*4 ;(R1) <-- 敵モードポインター
;
		IBT	R12,#CENNO-2-4
		MOVE	R13,R15
M_ENINSR_010
		LDB	(R1)
		SUB	#0
		BEQ	M_ENINSR_020	;空きあり？( yes:M_ENINSR_020 )
		DEC	R1
;
		DEC	R1
		DEC	R1
		LOOP
		DEC	R1
;
		mRTS_X
		DEC	R12		;(N) <-- エリア無し
;
M_ENINSR_020
		FROM	R12
		ADD	#2+4-1
		ADD	R0
		TO	R1		;(R1) <-- 敵のインデックス
		ADD	R0
;
		IBT	R12,#CEMOVE	;move "ON"
		mSTW	R12,CENMODE,R1
		IWT	R12,#00FFH
		mSTW	R12,CENRETN,R1	;[ mSTW CENDORE,R1 ]
;
		IBT	R12,#0
		mSTW	R12,CENCOLD,R1
		mSTW	R12,CENXSPD,R1
		mSTW	R12,CENYSPD,R1
		mSTW	R12,CENCONT,R1
		mSTW	R12,CENMUKI,R1
		mSTW	R12,CENEMU0,R1	;[ mSTW CENXSDR,R1 ]
		mSTW	R12,CECRSFG,R1	;[ mSTW CENCRPT,R1 ]
		mSTW	R12,CENWRK0,R1	;[ mSTW CENWRK1,R1 ]
		mSTW	R12,CENWRK2,R1	;[ mSTW CENWRK3,R1 ]
		mSTW	R12,CENWRK4,R1	;[ mSTW CENWRK5,R1 ]
		mSTW	R12,CENWRK6,R1	;[ mSTW CENWRK7,R1 ]
		mSTW	R12,CENWRK8,R1	;[ mSTW CENWRK9,R1 ]
		mSTW	R12,CENTIM0,R1
		mSTW	R12,CENTIM1,R1
		mSTW	R12,CENTIM2,R1
		mSTW	R12,CENTIM3,R1
		mSTW	R12,CENCHPT,R1
		mSTW	R12,CENCBFG,R1
		mSTW	R12,CENSLOP,R1	;[ mSTW R12,CEN_ADD_XSP,R1 ]
		mSTW	R12,CENSHOT,R1
		mSTW	R12,CENBGYP,R1
		mSTW	R12,CENDSXL,R1
		mSTW	R12,CENDSYL,R1
		mSTW	R12,CENXPOW,R1
		mSTW	R12,CENXMAX,R1
		mSTW	R12,CENWRKX,R1	;[ mSTW CENSPTM,R1 ]
		DEC	R12		;[ IBT R12,#0FFFFH ]
		mSTW	R12,CENOAML,R1
		mSTW	R12,CENTROB,R1
		IWT	R12,#0FFH+(((100H/8)-1)*100H)
		mSTW	R12,CENWATR,R1
;
		mSTW	R5,CENMYNO,R1	;敵Ｎｏ．セット
;
		FROM	R5
		TO	R12		;(R12) <-- 敵Ｎｏ．x2
		ADD	R5
;
		SMS	R14,REG14	;(R14) save
;
		IWT	R0,#ENCHR_BNK
		TO	R14
		ADD	R12
		TO	R13
		GETB			;(R0) <-- 敵キャラクターバンク
;
		IWT	R5,#COBJCHR_BNK+(6-1)
		IBT	R14,#6
M_ENINSR_030
		LDB	(R5)
		SUB	R13
		BEQ	M_ENINSR_040	;自分のキャラクターバンク有り？ ( yes:M_ENINSR_040 )
		DEC	R14
;
		BNE	M_ENINSR_030
		DEC	R5
;
		TO	R5
		BRA	M_ENINSR_050
		SUB	R0		;[ IBT R5,#0 ]
;
M_ENINSR_040
		FROM	R14		;[ 8 --> 8*4*8 = 100H ]
		ADD	#8		;[ 9 --> 9*4*8 = 120H ]
		ADD	R0		;[	   "          ]
		TO	R5		;[	   "          ]
		ADD	R0		;[	   "          ]
M_ENINSR_050
		mSTW	R5,CENCHRB,R1	;[ mSTW CENYSDR,R1 ]
;
		IWT	R0,#ENDATA0
		TO	R14
		ADD	R12
		TO	R5
		GETB
		INC	R14
		mSTW	R5,CENYUSN,R1
		GETB
		IBT	R5,#020H	;pri. initial set
		TO	R5
		XOR	R5
		mSTW	R5,CENCLOR,R1
		IWT	R0,#ENDATA1
		TO	R14
		ADD	R12
		TO	R5
		GETBS
		INC	R14
		mSTW	R5,CENGPOW,R1
		GETBS
		MULT	#8		;x10H
		TO	R5		;
		ADD	R0		;
		mSTW	R5,CENGMAX,R1
		IWT	R0,#ENMODE1
		TO	R14
		ADD	R12
		GETB
		INC	R14
		TO	R5
		GETBH
		mSTW	R5,CENMOD1,R1
		IWT	R0,#ENMODE2
		TO	R14
		ADD	R12
		GETB
		INC	R14
		TO	R5
		GETBH
		mSTW	R5,CENMOD2,R1
		IWT	R0,#ENMODE0
		TO	R14
		ADD	R12
		GETB
		INC	R14
		TO	R5
		GETBH
		mSTW	R5,CENMOD0,R1
;
		IBT	R0,#001FH
		AND	R5
		ADD	R0		;[ ASL ]
		ADD	R0		;[ ASL ]
		ADD	R0		;[ ASL ]
		IWT	R14,#ENCRDT
		TO	R14
		ADD	R14
		GETB
		INC	R14
		TO	R5
		GETBH
		INC	R14
		mSTW	R5,CECNTXW,R1
		GETB
		INC	R14
		TO	R5
		GETBH
		INC	R14
		mSTW	R5,CECNTYW,R1
		GETB
		INC	R14
		TO	R5
		GETBH
		INC	R14
		mSTW	R5,CEWIDEX,R1
		GETB
		INC	R14
		TO	R5
		GETBH
		mSTW	R5,CEWIDEY,R1
;
		LMS	R14,REG14	;(R14) load
;
		mRTS_X
		SUB	R0		;(N) <-- エリア有り
;
;************************************************************************
;*									*
;*		効果エリア確保						*
;*			in:						*
;*				(R5)  <-- 効果Ｎｏ．			*
;*			out:						*
;*				(R1)  <-- 効果インデックス		*
;*			break:						*
;*				(R12)					*
;*				(R13)					*
;*				(REG14)					*
;*									*
;************************************************************************
M_EXINSR	EQU	$
		IWT	R1,#CEXMODE+(CEXNO-1)*4 ;(R1) <-- 効果モードポインター
;
		IBT	R12,#CEXNO
		MOVE	R13,R15
M_EXINSR_010
		LDB	(R1)
		SUB	#0
		BEQ	M_EXINSR_030	;空きあり？( yes:M_EXINSR_030 )
		DEC	R1
;
		DEC	R1
		DEC	R1
		LOOP
		DEC	R1
;
		LM	R0,CEXSTCT
		DEC	R0
		DEC	R0
		DEC	R0
		DEC	R0
		BPL	M_EXINSR_020
		NOP
;
		IBT	R0,#(CEXNO-1)*4
M_EXINSR_020
		SBK
;
		LSR
		TO	R12
		LSR
		INC	R12
;
M_EXINSR_030
		DEC	R12
		FROM	R12
		ADD	R12
		TO	R1		;(R1) <-- 効果のインデックス
		ADD	R0
;
		IBT	R12,#CENOK	;move "ON"
		mSTW	R12,CEXMODE,R1
		IWT	R12,#00FFH
		mSTW	R12,CEXRETN,R1	;[ mSTW CEXDORE,R1 ]
;
		IBT	R12,#0
		mSTW	R12,CEXXSPD,R1
		mSTW	R12,CEXYSPD,R1
		mSTW	R12,CEXMUKI,R1
		mSTW	R12,CEXEMU0,R1	;[ mSTW CEXXSDR,R1 ]
		mSTW	R12,CEXWRK0,R1	;[ mSTW CEXWRK1,R1 ]
		mSTW	R12,CEXWRK2,R1	;[ mSTW CEXWRK3,R1 ]
		mSTW	R12,CEXWRK4,R1	;[ mSTW CEXWRK5,R1 ]
		mSTW	R12,CEXTIM0,R1
		mSTW	R12,CEXTIM1,R1
		mSTW	R12,CEXCHPT,R1
		mSTW	R12,CEXCBFG,R1
		mSTW	R12,CEXSLOP,R1	;[ mSTW R12,CEX_ADD_XSP,R1 ]
		mSTW	R12,CEXBGYP,R1
		mSTW	R12,CEXDSXL,R1
		mSTW	R12,CEXDSYL,R1
		mSTW	R12,CEXXPOW,R1
		mSTW	R12,CEXXMAX,R1
		mSTW	R12,CEXWRKX,R1	;[ mSTW CEXSPTM,R1 ]
		DEC	R12		;[ IBT R12,#0FFFFH ]
		mSTW	R12,CEXOAML,R1
		mSTW	R12,CEXTROB,R1
		IWT	R12,#0FFH+(((100H/8)-1)*100H)
		mSTW	R12,CEXWATR,R1
;
		mSTW	R5,CEXSTNO,R1	;exstra no. set
;
		FROM	R5
		TO	R12		;(R12) <-- 敵Ｎｏ．x2
		ADD	R5
;
		SMS	R14,REG14	;(R14) save
;
		IWT	R0,#EXCHR_BNK-EXSTART*2
		TO	R14
		ADD	R12
		TO	R13
		GETB			;(R0) <-- 敵キャラクターバンク
;
		IWT	R5,#COBJCHR_BNK+(6-1)
		IBT	R14,#6
M_EXINSR_040
		LDB	(R5)
		SUB	R13
		BEQ	M_EXINSR_050	;自分のキャラクターバンク有り？ ( yes:M_EXINSR_050 )
		DEC	R14
;
		BNE	M_EXINSR_040
		DEC	R5
;
		TO	R5
		BRA	M_EXINSR_060
		SUB	R0		;[ IBT R5,#0 ]
;
M_EXINSR_050
		FROM	R14		;[ 8 --> 8*4*8 = 100H ]
		ADD	#8		;[ 9 --> 9*4*8 = 120H ]
		ADD	R0		;[	   "          ]
		TO	R5		;[	   "          ]
		ADD	R0		;[	   "          ]
M_EXINSR_060
		mSTW	R5,CEXCHRB,R1	;[ mSTW CEXYSDR,R1 ]
;
		IWT	R0,#EXDATA0-EXSTART*2
		TO	R14
		ADD	R12
		TO	R5
		GETB
		INC	R14
		mSTW	R5,CEXYUSN,R1
		GETB
;;;;		    IBT	    R5,#020H	    ;pri. initial set
		IBT	R5,#030H	;pri. initial set
		TO	R5
		XOR	R5
		mSTW	R5,CEXCLOR,R1
		IWT	R0,#EXDATA1-EXSTART*2
		TO	R14
		ADD	R12
		TO	R5
		GETBS
		INC	R14
		mSTW	R5,CEXGPOW,R1
		GETBS
		MULT	#8		;x10H
		TO	R5		;
		ADD	R0		;
		mSTW	R5,CEXGMAX,R1
		IWT	R0,#EXMODE0-EXSTART*2
		TO	R14
		ADD	R12
		GETB
		INC	R14
		TO	R5
		GETBH
		mSTW	R5,CEXMOD0,R1
		IWT	R0,#EXMODE1-EXSTART*2
		TO	R14
		ADD	R12
		GETB
		INC	R14
		TO	R5
		GETBH
		mSTW	R5,CEXMOD1,R1
		IWT	R0,#EXMODE2-EXSTART*2
		TO	R14
		ADD	R12
		GETB
		INC	R14
		TO	R5
		GETBH
		mSTW	R5,CEXMOD2,R1
;
		LMS	R14,REG14	;(R14) load
		mRTS
;
;************************************************************************
;*		キャラクター拡大、縮小（サイズ ３２×３２）		*
;*				      （エリア １６×１６）		*
;*			入力 ： (R2)  <-- ビットマップ座標＿Ｙ		*
;*				(R3)  <--	 ”	  ＿Ｘ		*
;*				(R4)  <-- Ｙ倍率（１００Ｈ＝１．０）	*
;*				(R6)  <-- 倍率（１００Ｈ＝１．０）	*
;*				(R8)  <-- 中心＿Ｘ			*
;*				(R9)  <--   ”＿Ｙ			*
;*				(R12) <-- キャラクターアドレス（Ｌ，Ｈ）*
;*				(R13) <--	  ”	       (Ｂ）	*
;************************************************************************
;
R_32_ZOOM_16	EQU	$
		MOVE	R4,R6		;(R4) <-- Ｙ倍率セット
;
R_32_ZOOM_XY_16 EQU	$
		SMS	R11,RTS3	;[ return address save ]
;
		IBT	R1,#01H		;(R1) <-- color mode initial set
;
;-------------- キャラクター倍率変換 ------------------------------------
		IWT	R11,#DIVBUF
		FROM	R11
		ADD	R6
		ADD	R6
		TO	R6		;(R6) <-- キャラクター倍率
		LDW	(R0)
;
		FROM	R11
		ADD	R4
		ADD	R4
		TO	R11		;(R11) <-- キャラクター倍率
		LDW	(R0)
;
;-------------- キャラクタースタートポインター計算 ----------------------
		MOVE	R0,R8
		TO	R10
		SWAP
		ADD	R0		;x2
		NOT
		INC	R0
		LMULT
		WITH	R10		;(R10) <-- SX * x_zoom
		ADD	R4
		MOVE	R5,R6		;(R5) <-- Ｘ倍率
;
		MOVE	R6,R11
		MOVE	R0,R9
		TO	R7
		SWAP
		ADD	R0		;x2
		NOT
		INC	R0
		LMULT
		WITH	R7		;(R7) <-- SY * y_zoom
		ADD	R4
;
;-------------- 書き込みモード ＆キャラクターアドレスセット -------------
		MOVE	R0,R12
		LSR			;(C) <-- color mode
		BCC	R_32_ZOOM_16_10 ;hight bit color ? ( no:R_32_ZOOM_16_10 )
		ADD	R0
;
		WITH	R1
		OR	#04H
R_32_ZOOM_16_10
		FROM	R1
		CMODE			;color mode set
		MOVE	R6,R0		;(R6) <-- キャラクターアドレス（Ｌ，Ｈ）セット
;
;-------------- キャラクター書き込み ------------------------------------
		FROM	R13
		ROMB			;キャラクターアドレス (Ｂ）set
;
		IBT	R4,#32			;(R4)  <-- Y loop set
		MOVE	R9,R4			;(R9)  <-- X loop set
		IWT	R13,#R_32_ZOOM_16_30	;(R13) <-- loop return address set
;
		CACHE
;
R_32_ZOOM_16_20
		MOVE	R1,R3		;(R1) <-- plot start X pos set
		MOVE	R8,R10		;(R8) <-- PX
;
		MOVE	R12,R9		;X loop set
R_32_ZOOM_16_30
		MERGE
		BEQ	R_32_ZOOM_16_40 ;area over ? ( yes:R_32_ZOOM_16_40 )
		TO	R14
;
		ADD	R6
;
		WITH	R8
		ADD	R5
		GETC			;color set
		LOOP
		PLOT			;pset
;
		BRA	R_32_ZOOM_16_50+1
		WITH	R7
;
R_32_ZOOM_16_40
		WITH	R8
		ADD	R5
		SUB	R0		;[ IBT	R0,#00 ]
		COLOUR			;color set
		LOOP
		PLOT			;pset
;
R_32_ZOOM_16_50
		WITH	R7
		ADD	R11
		DEC	R4
		BNE	R_32_ZOOM_16_20 ;end ? ( no:R_32_ZOOM_16_20 )
		INC	R2		;Y pos +1
;
		RPIX
;
		LMS	R11,RTS3	;[ return address load ]
		mRTS
;
;************************************************************************
;*		キャラクター拡大、縮小、回転（サイズ ３２×３２）	*
;*		  （Ｘ，Ｙ倍率設定タイプ）  （エリア ３２×３２）	*
;*			入力 ： (R2)  <-- ビットマップ座標＿Ｙ		*
;*				(R3)  <--	 ”	  ＿Ｘ		*
;*				(R5)  <-- 角度（０〜ＦＦＨ）		*
;*				(R6)  <-- Ｘ倍率（１００Ｈ＝１．０）	*
;*				(R4)  <-- Ｙ	     ”			*
;*				(R12) <-- キャラクターアドレス（Ｌ，Ｈ）*
;*				(R13) <--	  ”	       (Ｂ）	*
;************************************************************************
;
R_32_RTZ_32
		MOVE	R4,R6		;(R4) <-- Ｙ倍率セット
;
R_32_RTZ_32_XY
		IBT	R1,#01H		;(R1) <-- color mode initial set
;
;-------------- キャラクター倍率変換 ------------------------------------
R_32_RTZ_32_XY_C
		IWT	R8,#DIVBUF
		FROM	R8
		ADD	R6
		ADD	R6
		TO	R6		;(R6) <-- キャラクター倍率
		LDW	(R0)
;
		FROM	R8
		ADD	R4
		ADD	R4
		TO	R8		;(R8) <-- キャラクター倍率
		LDW	(R0)
;
R_32_RTZ_C32_XY EQU	$
		SMS	R11,RTS3	;[ return aadress save ]
;
		WITH	R5
		ADD	R5
;
;-------------- キャラクタースタートポインター計算 ----------------------
		IBT	R0,#BANK COS
		ROMB
		IWT	R0,#COS
		TO	R14
		ADD	R5
		GETB
		INC	R14
		GETBH
		MOVE	R14,R0
		LMULT
		WITH	R4
		HIB
		LOB
		SWAP
		TO	R9		;(R9) <-- cos * α
		OR	R4
;
		MOVE	R7,R6		;(R7) <-- α
		MOVE	R6,R8
		FROM	R14
		LMULT
		WITH	R4
		HIB
		LOB
		SWAP
		TO	R8		;(R8) <---- cos * β
		OR	R4
		SMS	R8,CWORK0	;(CWK0) <--    "
;
		IWT	R0,#SIN
		TO	R14
		ADD	R5
		GETB
		INC	R14
		GETBH
		MOVE	R14,R0
		LMULT
		WITH	R4
		HIB
		LOB
		SWAP
		OR	R4
		NOT
		INC	R0
		MOVE	R5,R0		;(R5) <--- -sin * β
		ADD	R8		;(R0) <-- cos * β - sin * β
		NOT
		INC	R0
		ADD	R0
		ADD	R0
		ADD	R0
		ADD	R0
		IWT	R10,#010H*100H	;(R10)	<-- cxy
		TO	R11		;(R11) <-- (xy) * (cos * β - sin * β) + (cxy)
		ADD	R10
;
		MOVE	R6,R7
		FROM	R14
		LMULT
		WITH	R4
		HIB
		LOB
		SWAP
		OR	R4
		SMS	R0,CWORK1	;(CWK1) <-- sin * α
		ADD	R9		;(R0) <-- cos * α + sin * α
		NOT
		INC	R0
		ADD	R0
		ADD	R0
		ADD	R0
		ADD	R0
		TO	R10		;(R10) <-- (xy) * (cos * α + sin * α) + (cxy)
		ADD	R10
;
;-------------- 書き込みモード ＆キャラクターアドレスセット -------------
		MOVE	R0,R12
		LSR			;(C) <-- color mode
		BCC	R_32_RTZ_XY3210 ;hight bit color ? ( no:R_32_RTZ_XY3210 )
		ADD	R0
;
		WITH	R1
		OR	#04H
R_32_RTZ_XY3210
		FROM	R1
		CMODE			;color mode set
		MOVE	R6,R0		;(R6) <-- キャラクターアドレス（Ｌ，Ｈ）セット
;
;-------------- キャラクター書き込み ------------------------------------
		FROM	R13
		ROMB			;キャラクターアドレス（Ｂ）セット
;
		IBT	R4,#32			;(R4)  <-- Y loop set
		IWT	R13,#R_32_RTZ_XY3230	;(R13) <-- loop return address set
;
		CACHE
;
R_32_RTZ_XY3220
		MOVE	R1,R3		;(R1) <-- plot start X pos set
		MOVE	R8,R10		;(R8) <-- PX
		MOVE	R7,R11		;(R7) <-- PY
;
		IBT	R12,#32		;X loop set
R_32_RTZ_XY3230
		MERGE
		BCS	R_32_RTZ_XY3240 ;area over ? ( yes:R_32_RTZ_XY3240 )
		TO	R14
;
		ADD	R6
;
		WITH	R8
		ADD	R9
		WITH	R7
		ADD	R5
		GETC			;color set
		LOOP
		PLOT
;
		BRA	R_32_RTZ_XY3250+1
		LMS	R0,CWORK1	;[ dummy ]
;
R_32_RTZ_XY3240
		WITH	R8
		ADD	R9
		WITH	R7
		ADD	R5
		SUB	R0		;[ IBT	R0,#00 ]
		COLOUR			;color set
		LOOP
		PLOT			;pset
;
R_32_RTZ_XY3250
		LMS	R0,CWORK1	;(R0) <-- sin * α
		TO	R10
		ADD	R10
		LMS	R0,CWORK0	;(R0) <-- cos * β
		TO	R11
		ADD	R11
		DEC	R4
		BNE	R_32_RTZ_XY3220 ;end ? ( no:R_32_RTZ_XY3220 )
		INC	R2		;Y pos +1
;
		RPIX
;
		LMS	R11,RTS3	;[ return address load ]
		mRTS
;
;************************************************************************
;*		キャラクター拡大、縮小（サイズ ３２×３２）		*
;*			入力 ： (R2)  <-- ビットマップ座標＿Ｙ		*
;*				(R3)  <--	 ”	  ＿Ｘ		*
;*				(R6)  <-- 倍率（１００Ｈ＝１．０）	*
;*				(R8)  <-- 中心＿Ｘ			*
;*				(R9)  <--   ”＿Ｙ			*
;*				(R12) <-- キャラクターアドレス（Ｌ，Ｈ）*
;*				(R13) <--	  ”	       (Ｂ）	*
;************************************************************************
;
R_32_ZOOM	EQU	$
		MOVE	R4,R6		;(R4) <-- Ｙ倍率セット
;
R_32_ZOOM_XY	EQU	$
		IBT	R1,#01H		;(R1) <-- color mode initial set
;
R_32_ZOOM_XY_C	EQU	$
		SMS	R11,RTS3	;[ return aadress save ]
;
;-------------- キャラクター倍率変換 ------------------------------------
		IWT	R11,#DIVBUF
		FROM	R11
		ADD	R6
		ADD	R6
		TO	R6		;(R6) <-- キャラクター倍率
		LDW	(R0)
;
		FROM	R11
		ADD	R4
		ADD	R4
		TO	R11		;(R11) <-- キャラクター倍率
		LDW	(R0)
;
;-------------- キャラクタースタートポインター計算 ----------------------
		MOVE	R0,R8
		TO	R10
		SWAP
		NOT
		INC	R0
		LMULT
		WITH	R10		;(R10) <-- SX * x_zoom
		ADD	R4
		MOVE	R5,R6		;(R5) <-- Ｘ倍率
;
		MOVE	R6,R11
		MOVE	R0,R9
		TO	R7
		SWAP
		NOT
		INC	R0
		LMULT
		WITH	R7		;(R7) <-- SY * y_zoom
		ADD	R4
;
;-------------- 書き込みモード ＆キャラクターアドレスセット -------------
		MOVE	R0,R12
		LSR			;(C) <-- color mode
		BCC	R_32_ZOOM_10	;hight bit color ? ( no:R_32_ZOOM_10 )
		ADD	R0
;
		WITH	R1
		OR	#04H
R_32_ZOOM_10
		FROM	R1
		CMODE			;color mode set
		MOVE	R6,R0		;(R6) <-- キャラクターアドレス（Ｌ，Ｈ）セット
;
;-------------- キャラクター書き込み ------------------------------------
		FROM	R13
		ROMB			;キャラクターアドレス (Ｂ）set
;
		IWT	R13,#R_32_ZOOM_30	;(R13) <-- loop return address set
		IBT	R4,#32			;(R4)  <-- Y loop set
		MOVE	R9,R4			;(R9)  <-- X loop set
;
		CACHE
;
R_32_ZOOM_20
		MOVE	R1,R3		;(R1) <-- plot start X pos set
		MOVE	R8,R10		;(R8) <-- PX
;
		MOVE	R12,R9		;X loop set
R_32_ZOOM_30
		MERGE
		BCS	R_32_ZOOM_40	;area over ? ( yes:R_32_ZOOM_40 )
		TO	R14
;
		ADD	R6
;
		WITH	R8
		ADD	R5
		GETC			;color set
		LOOP
		PLOT			;pset
;
		BRA	R_32_ZOOM_50+1
		WITH	R7
;
R_32_ZOOM_40
		WITH	R8
		ADD	R5
		SUB	R0		;[ IBT	R0,#00 ]
		COLOUR			;color set
		LOOP
		PLOT			;pset
;
R_32_ZOOM_50
		WITH	R7
		ADD	R11
		DEC	R4
		BNE	R_32_ZOOM_20	;end ? ( no:R_32_ZOOM_20 )
		INC	R2		;Y pos +1
;
		RPIX
;
		LMS	R11,RTS3	;[ return address load ]
		mRTS
;
;
;
;
;
		END
