;*									*
;*	title name	: "yossy"					*
;*	proccess	: enemy sub.1					*
;*	file name	: ys_enmy13.asm					*
;*									*
;************************************************************************
;
;
		SALL
;
		include		ys_header.inc
		include		ys_unit.h
		include		ys_pld.h
		include		ys_color.h
		include		../union/ys_bgcheck.h
		include		ys_ename.h
		include		ys_presno.h
;
		XALL
;
;
;------------------------------------------------------------------------
;-		global symbol						-
;------------------------------------------------------------------------
		GLB	BG3FLIN, BG3BLIN, BG3ULIN, BG3KTIN
		GLB	BG3DOIN, BG3D2IN, BG3D3IN
;
		GLB	BG3FLMV, BG3BLMV, BG3ULMV, BG3KTMV
		GLB	BG3DOMV, BG3D2MV, BG3D3MV
;
;------------------------------------------------------------------------
;-		extern symbol						-
;------------------------------------------------------------------------
;
;-------------< ys_main >------------------------------------------------
		EXT	D_00
		EXT	RANDAM
		EXT	SOUND_3_ON
;
;-------------< sy_rpro >------------------------------------------------
		EXT	JSRSUB
		EXT	CHIPON,CHIPON_RAM_READ
		EXT	NEWVMADL
		EXT	SFC_BGCLR_4_L
		EXT	B3CL
;
;-------------< sy_play >------------------------------------------------
		EXT	PLCOLTR
		EXT	EBSTAT
		EXT	PFAL,PSTP,PMOV
		EXT	PFLP,PDEM
		EXT	TIMEUP_SET,TIMEUP_SET_S
		EXT	PUSHTM,PUSHPT
;
;-------------< ys_hajime-chan.asm >------------------------------------------------
		EXT	BABYM_SHABN_C2
		EXT	BABYM_SHABN_C3
		EXT	BABYM_SHABN_C4
		EXT	BABYM_SHABN_C5
;
		EXT	BABYM_RMODE90
		EXT	BABYM_RMODE91
;
;-------------< sy_bgsc >------------------------------------------------
		EXT	UNITCHG
;
;-------------< sy_enmy >------------------------------------------------
		EXT	ENEMY,ENINSB
		EXT	ENCLEAR,ENCLEAR_NORETN,DISPCK0,DISPCK1,DISPCK2
		EXT	ENINSR,ENINSR2,EEXCHK,EEYCHK,EEXYCK,ESTATST
		EXT	ENINSR_I,ENINSR2_I
		EXT	SCOREST,COLD_KIRA_ST,SHOT_EN_KILL,ENDEATH_SET_4
		EXT	ENMDCK,XSDOWN,EPCRCK,MUKEOR,XSPEOR,MKEOR2,PLFLST
		EXT	PLFLST_2
		EXT	FSMK0_SET4,FSMK0_SET2
;
		EXT	EINIT,EFAIL,EMOVE,EEATM,ENOSE,EBABL,ERINT,EFALL
		EXT	EFIRE
;
		EXT	COS,SIN
;
		EXT	EATMXS,NOSWT
;
		EXT	ENFAIL0,EGGKILL_ALL,ENDEATH_SET
		EXT	SHOT_EN_KILL_S,SHOT_EN_KILL_2
;
		EXT	EN_XYMOVE
;
		EXT	TROBJ_CANCEL
		EXT	TROBJ_SR_2x2,TROBJ_SR_4x4,TROBJ_SR_8x8
		EXT	TROBJ_SR_2x2_CL,TROBJ_SR_4x4_CL,TROBJ_SR_8x8_CL
		EXT	TROBJ_OAM_2x2,TROBJ_OAM_4x4,TROBJ_OAM_8x8
		EXT	TROBJ_OAM_2x2_I,TROBJ_OAM_4x4_I,TROBJ_OAM_8x8_I
		EXT	TROBJ_CLEAR
		EXT	TROBJ_PLOT_X,TROBJ_PLOT_Y
;
;-------------< sy_enmy3 >------------------------------------------------
;
;-------------< sy_enmy4 >------------------------------------------------
;
;-------------< sy_enmy5 >------------------------------------------------
;
;-------------< sy_enmy6 >------------------------------------------------
;
;-------------< sy_exst >------------------------------------------------
		EXT	EXINSR
;
;-------------< sy_unit >------------------------------------------------
		EXT	UNCOMPRES,VRAMDX_ST
		EXT	UNDTADD,UNDATA,RUTDATA
;
		EXT	M_DMA_BFST
;
;------------------------------------------------------------------------
;-		define symbol						-
;------------------------------------------------------------------------
;
;
;************************************************************************
;*									*
;*		program start						*
;*									*
;************************************************************************
;
		EXTEND
;
		MEM16
		IDX8
;
		DPAGE	EN0RAM
;
Group_6		GROUP	Bakabon_pro
Bakabon_pro	SECT	REL
;
		MEM16
		IDX8
;
;************************************************************************
;*		initial (ＢＧ３きん○ま)				*
;************************************************************************
;
NAGASA_L1	EQU	(03000H/2)
NAGASA_L2	EQU	(03000H/2)
NAGASA_L3	EQU	(00800H/2)
;
BG3KT_IN000D	EQU	$
		WORD	00400H,0FC00H
;
BG3KTIN		EQU	$
		LDA	#04000H
		STA	<ENWRK0,X	;角度初期値
		LDA	#04000H/2
		STA	<ENWRK2,X	;長さ初期値
		LDY	#000H
		LDA	ENXPSL,X
		SEC
		SBC	PCENTX
		BMI	BG3KT_IN010
		LDY	#002H
BG3KT_IN010	EQU	$
		LDA	!BG3KT_IN000D,Y
		STA	<ENWRK4,X	;速度の初期値
		
		STZ	ENWRK6,X
		STZ	ENWRKC,X	;フラグクリア
		STZ	ENTIM2,X
;
		RTL
;
;************************************************************************
;*		move    (ＢＧ３きん○ま)				*
;************************************************************************
;<ENWRK0,X 玉の伸びる角度
;<ENWRK2,X 玉までの長さ
;<ENWRK4,X 玉の揺れ速度
; ENWRK6,X 攻撃回数カウント
; ENWRK8,X 目標角度
; ENWRKA,X 目標長さ
; ENWRKC,X 各種フラグ
;  bit 15 アクション処理用初期化フラグ
;  bit 14
;  bit 13
;  bit 12
;---
;  bit 11 タマゴその他あたり？[yes=1]
;  bit 10 プレイヤー当てられた？[yes=1]
;  bit 09
;  bit 08
;---
;  bit 07
;  bit 06
;  bit 05 やられた！！[yes=1]
;  bit 04 赤ちゃん捕まっている？[yes=1]
;---
;  bit 03 アクションパターンナンバー
;  bit 02 アクションパターンナンバー
;  bit 01 アクションパターンナンバー
;  bit 00 アクションパターンナンバー
BG3KTMV		EQU	$
		LDA	ENWRKC,X
		STA	<EWORKE
;
		JSR	BG3KTPSET		;ポイントセット
		JSR	BG3KTCTL		;ポイント調整
		JSR	BG3KTDSP		;ＢＧ３スプラインセット
		JSR	BG3KTOSET		;ＯＡＭセット
;
BG3KT_MV000_X
		JSL	>ENMDCK
;
		LDA	ENDSXL,X
		CLC
		ADC	#090H
		CMP	#090H+0100H+090H
		BCS	BG3KT_MV040
;
		LDA	ENDSYL,X
		CLC
		ADC	#0C8H
		CMP	#0C8H+0D2H+000H
		BCC	BG3KT_MV050
;
BG3KT_MV040	EQU	$
		JSL	>ENCLEAR		;範囲外消去
;
		LDA	<EWORKE
		BIT	#010H
		BEQ	BG3KT_MV04B		;赤ちゃん捕まっている？[no->BG3KT_MV04B]
;
		LDA	ENWRK2
		CMP	#BABYM_RMODE90
		BEQ	BG3KT_MV04A
		CMP	#BABYM_RMODE91
		BNE	BG3KT_MV04B
;
BG3KT_MV04A	EQU	$
		JSL	>BABYM_SHABN_C5		;赤ちゃん切り放し処理
		LDA	#0400H
		STA	ENYSPD
BG3KT_MV04B	EQU	$
;
;;		LDY	#011H
;;		STY	MANSEL
;;		LDY	#002H
;;		STY	SUBSEL
;;		LDY	#020H
;;		STY	SUBADF
;
		BRA	BG3KT_MV900
;
BG3KT_MV050	EQU	$
		LDA	#00C00H
		TRB	<EWORKE			;当たり判定フラグクリア
;
		JSR	BG3KTPCK2		;プレイヤーチェック
;
		JSR	BG3KTBCTL		;赤ちゃんコントロール
;
		JSR	BG3KTACT		;動きコントロール
;
BG3KT_MV900	EQU	$
		LDX	<ENINDX
		LDA	<EWORKE
		STA	ENWRKC,X
;
;;;		LDY	#00FH
;;;		STY	!2100H
;
		LDX	<ENINDX
;
		RTL
;
;>>>>>>>>>>
;function
; 赤ちゃんのコントロール
;name
; BG3KTBCTL
;<<<<<<<<<<
BG3KTBCTL_000D	EQU	$
		WORD	-000H-(010H*2), 000H
BG3KTBCTL	EQU	$
;
		LDA	BABYNO
		BMI	BG3KT_BCTL100			;赤ちゃんヨッシーに乗ってる？[yes->BG3KT_OSET800]
;
		LDA	<EWORKE
		BIT	#00010H
		BEQ	BG3KT_BCTL110			;赤ちゃん捕まっている？[no->BG3KT_BCTL110]
;
		LDA	ENMUKI,X
		AND	#002H
		TAY
		LDA	>BSPL_B_POINT+(00AH-1)*4
		CLC
		ADC	!BG3KTBCTL_000D,Y
		CLC
		ADC	ENXPSL,X
		STA	ENXPSL				;中心座標Ｘ
		LDA	>BSPL_B_POINT+(009H-1)*4+2
		CLC
		ADC	#00080H-010H
		CLC
		ADC	ENYPSL,X
		STA	ENYPSL				;中心座標Ｙ
;
BG3KT_BCTL100	EQU	$
;
		LDA	<EWORKE
		BIT	#00010H
		BNE	BG3KT_BCTL200		;赤ちゃん捕まっている？[yes->BG3KT_MV200]
;
BG3KT_BCTL110	EQU	$
		LDA	<EWORKE
		AND	#0000FH
		CMP	#00001H
		BNE	BG3KT_BCTL900		;伸びモード中？[no->BG3KT_BCTL200]
;
		LDA	<EWORKE
		BIT	#00400H
		BEQ	BG3KT_BCTL900		;ヨッシー当てられた？[no->BG3KT_BCTL900]
;
		LDA	BABYNO
		BPL	BG3KT_BCTL900		;赤ちゃんヨッシーに乗っている？[no->BG3KT_BCTL200]
;
		LDA	<EWORKE
		PHA
		JSL	>BABYM_SHABN_C4
		PLA
		ORA	#00010H			;赤ちゃん捕まっているフラグオン
		STA	<EWORKE
;
		LDA	#03DH			;赤ちゃん捕まえたサウンド
		JSL	>SOUND_3_ON		;音
;
		RTS
;
;
;----捕まえている時に直接取り返された場合のため＆ムーチョに持っていかれるの処理
;
BG3KT_BCTL200	EQU	$
;
		LDA	TIMER
		BEQ	BG3KT_BCTL270		;タイマー０になった？（ムーチョに捕まった？）[yes->BG3KT_BCTL270]
;
		LDA	BABYNO
		BPL	BG3KT_BCTL900		;赤ちゃんヨッシーに乗っている？[no->BG3KT_BCTL900]
;
BG3KT_BCTL270	EQU	$
		LDA	#00800H			;卵あてられフラグセット
		TSB	<EWORKE
BG3KT_BCTL275	EQU	$
		LDA	#00410H			;赤ちゃん捕まっているフラグクリア＆ヨッシーが当たったフラグクリア
		TRB	<EWORKE
BG3KT_BCTL900	EQU	$		
		RTS
;
;>>>>>>>>>>
;function
; BG3KTDSP
;entry
;return
;<<<<<<<<<<
BG3KT_PNT	EQU	012H
;
BG3KTPSET	EQU	$
;
		LDA	#BG3KT_PNT-1
		ASL	A		;*2
		TAY
BG3KT_PSET120	EQU	$
		TYA
		ASL	A
		TAX
		LDA	!BG3KT_PSETD000,Y
		AND	#0FFH
		CMP	#080H
		BCC	BG3KT_PSET122
		ORA	#0FF00H
BG3KT_PSET122	EQU	$
		STA	>BSPL_B_POINT,X
		LDA	!BG3KT_PSETD000+1,Y
		AND	#0FFH
		CMP	#080H
		BCC	BG3KT_PSET124
		ORA	#0FF00H
BG3KT_PSET124	EQU	$
		SEC
		SBC	#070H
		STA	>BSPL_B_POINT+2,X
		DEY
		DEY
		BPL	BG3KT_PSET120
;
		LDX	<ENINDX
;
		RTS
;
;point< 3> = point< 2>
;point< 5> = point< 4>
;point< 6> = point< 5>
;point< 7> = point< 6>
;point< 8> = point< 7>
;point<13> = point<12>
;point<14> = point<13>
;point<15> = point<14>
;point<16> = point<15>
;point<18> = point<17>
;file <kintama2.CH7>
;screen no.<0>
;point kazu <012H>
;xmag=[001.00]
;ymag=[001.00]
;turn sw off
BG3KT_PSETD000	EQU	$
		BYTE	000H,000H, 010H,000H, 010H,000H, 008H,007H
		BYTE	008H,007H, 008H,007H, 008H,007H, 008H,007H
		BYTE	016H,018H, 000H,02EH, 0EAH,018H, 0F7H,007H
		BYTE	0F7H,007H, 0F7H,007H, 0F7H,007H, 0F7H,007H
		BYTE	0F0H,000H, 0F0H,000H
;
;;;;point< 3> = point< 2>
;;;;point< 5> = point< 4>
;;;;point< 6> = point< 5>
;;;;point< 7> = point< 6>
;;;;point< 8> = point< 7>
;;;;point<13> = point<12>
;;;;point<14> = point<13>
;;;;point<15> = point<14>
;;;;point<16> = point<15>
;;;;point<18> = point<17>
;;;;file <kintama.CH7>
;;;;screen no.<0>
;;;;point kazu <012H>
;;;;xmag=[001.00]
;;;;ymag=[001.00]
;;;;turn sw off
;;;BG3KT_PSETD000	EQU	$
;;;		BYTE	000H,000H, 00CH,000H, 00CH,000H, 006H,007H
;;;		BYTE	006H,007H, 006H,007H, 006H,007H, 006H,007H
;;;		BYTE	010H,014H, 000H,022H, 0F0H,014H, 0FAH,007H
;;;		BYTE	0FAH,007H, 0FAH,007H, 0FAH,007H, 0FAH,007H
;;;		BYTE	0F4H,000H, 0F4H,000H
;
;>>>>>>>>>>
;function
; BG3KTCTL
;entry
; <ENWRK0,X : 角度
; <ENWRK2,X : 半径（伸びてる長さ）
;return
;<<<<<<<<<<
BG3KTCTL	EQU	$
		LDA	<ENWRK0,X
		XBA
		ASL	A
		AND	#0FEH
		CLC
		ADC	#0100H
		STA	R1			;角度(MAX 01FEH)
		STA	<EWORK0			;EWORK0 = 中心角度
		LDA	<ENWRK2,X
		STA	<EWORK2			;EWORK2 = 半径／２
		ASL	A
		XBA
		AND	#0FFH
		STA	R6			;半径
;
		M_CHIP	M_ENMY_1P_ROT		;半径、角度より位置を計算する。
;
		LDA	R0			;Ｘ成分取り出し（玉部分）
		LSR	A
		STA	<EWORK4
		LDA	R1			;Ｙ成分取り出し（玉部分）
		LSR	A
		STA	<EWORK6
;
		LDY	#BG3KTCTL_D100_E-BG3KTCTL_D100-1
BG3KTCTL_010	EQU	$
		LDX	!BG3KTCTL_D100,Y
		LDA	>BSPL_B_POINT,X
		CLC
		ADC	R0
		STA	>BSPL_B_POINT,X
		LDA	>BSPL_B_POINT+2,X
		CLC
		ADC	R1
		STA	>BSPL_B_POINT+2,X
		DEY
		BPL	BG3KTCTL_010
;
		LDX	<ENINDX
;
		LDA	<EWORKE
		AND	#00FH
		CMP	#001H
		BEQ	BG3KTCTL_100
		CMP	#002H
		BEQ	BG3KTCTL_100
;
		RTS
;
BG3KTCTL_100	EQU	$
		LDA	<EWORK4				;２ポイント目
		CLC
		ADC	>BSPL_B_POINT+(006H-1)*4
		STA	>BSPL_B_POINT+(006H-1)*4
		LDA	<EWORK4
		CLC
		ADC	>BSPL_B_POINT+(00EH-1)*4
		STA	>BSPL_B_POINT+(00EH-1)*4
		LDA	<EWORK6
		CLC
		ADC	>BSPL_B_POINT+(006H-1)*4+2
		STA	>BSPL_B_POINT+(006H-1)*4+2
		LDA	<EWORK6
		CLC
		ADC	>BSPL_B_POINT+(00EH-1)*4+2
		STA	>BSPL_B_POINT+(00EH-1)*4+2
;
		LDA	<FRCNT2			;フレームカウンタ
		ASL	A
		ASL	A
		ASL	A
		ASL	A
		AND	#001FEH
		STA	R1			;角度
		LDA	<ENWRK2,X		;玉までの長さ
		XBA
		AND	#0FFH
		LSR	A			;1/2
		LSR	A			;1/4
		STA	R6			;半径
;
		M_CHIP	M_ENMY_1P_ROT		;半径、角度より位置を計算する。
;
		LDX	<ENINDX
		LDA	R1			;歪用の角度
		CLC
		ADC	<EWORK0
		AND	#01FEH
		STA	R1
		LDA	<EWORK2
		LSR	A
		XBA
		AND	#0FFH
		STA	R6
;
		M_CHIP	M_ENMY_1P_ROT		;半径、角度より位置を計算する。
;
		LDX	<ENINDX
		LDA	R0				;１ポイント目
		CLC
		ADC	>BSPL_B_POINT+(005H-1)*4
		STA	>BSPL_B_POINT+(005H-1)*4
		LDA	R0
		CLC
		ADC	>BSPL_B_POINT+(00FH-1)*4
		STA	>BSPL_B_POINT+(00FH-1)*4
		LDA	R1
		PHA
		CLC
		ADC	>BSPL_B_POINT+(005H-1)*4+2
		STA	>BSPL_B_POINT+(005H-1)*4+2
		PLA
		ADC	>BSPL_B_POINT+(00FH-1)*4+2
		STA	>BSPL_B_POINT+(00FH-1)*4+2
;
		LDA	<FRCNT2			;フレームカウンタ
		ASL	A
		ASL	A
		ASL	A
		ASL	A
		AND	#001FEH
		STA	R1			;角度
		LDA	<ENWRK2,X		;玉までの長さ
		XBA
		AND	#0FFH
		LSR	A			;1/2
		LSR	A			;1/4
		LSR	A			;1/8
		STA	R6			;半径
;
		M_CHIP	M_ENMY_1P_ROT		;半径、角度より位置を計算する。
;
		LDX	<ENINDX
		LDA	<EWORK0
		SEC
		SBC	R1			;歪用の角度
		AND	#01FEH
		STA	R1
		LDA	<EWORK2
		LSR	A
		CLC
		ADC	<EWORK2
		XBA
		AND	#0FFH
		STA	R6
;
		M_CHIP	M_ENMY_1P_ROT		;半径、角度より位置を計算する。
;
		LDX	<ENINDX
		LDA	R0				;３ポイント目
		CLC
		ADC	>BSPL_B_POINT+(007H-1)*4
		STA	>BSPL_B_POINT+(007H-1)*4
		LDA	R0
		CLC
		ADC	>BSPL_B_POINT+(00DH-1)*4
		STA	>BSPL_B_POINT+(00DH-1)*4
		LDA	R1
		PHA
		CLC
		ADC	>BSPL_B_POINT+(007H-1)*4+2
		STA	>BSPL_B_POINT+(007H-1)*4+2
		PLA
		ADC	>BSPL_B_POINT+(00DH-1)*4+2
		STA	>BSPL_B_POINT+(00DH-1)*4+2
;
		LDX	<ENINDX
;
		RTS
;
BG3KTCTL_D100	EQU	$
		BYTE	(8-1)*4, (9-1)*4, (10-1)*4, (11-1)*4, (12-1)*4
BG3KTCTL_D100_E	EQU	$
;
;>>>>>>>>>>
;function
; BG3KTDSP
;entry
;return
;<<<<<<<<<<
BG3KTDSP	EQU	$
;
		LDA	ENDSXL,X
		CLC
		ADC	#090H
		CMP	#090H+0100H+090H
		BCS	BG3KTDSP_005
;
		LDA	ENDSYL,X
		CLC
		ADC	#0C8H
		CMP	#0C8H+0D2H+000H
		BCC	BG3KTDSP_010
;
BG3KTDSP_005
		LDY	#011H
		STY	MANSEL
		LDY	#002H
		STY	SUBSEL
		LDY	#020H
		STY	SUBADF
;
		RTS
;
BG3KTDSP_010
		LDA	#00000H
		CLC
		ADC	ENDSXL,X
		STA	CREG0
		LDA	#0070H
		CLC
		ADC	ENDSYL,X
		STA	CREG1
;
		LDA	#BG3KT_PNT
		STA	R2
;
		M_CHIP	BG_BSPLINE_AW
;
		JSL	>M_DMA_BFST
		LWORD	HDMABUF			;to address set
		LWORD	HDMABF			;from address set
		WORD	0D2H*2*2		;number of byte set
;
;--------------< config. set >-------------------
		MI8
;
		LDA	#013H
		STA	MANSEL
		LDA	#004H
		STA	SUBSEL
		LDA	#022H
		STA	WIND30
		LDA	#063H
		STA	SUBADF
		LDA	#00011000B
		TSB	HD420C
;
		M16
;
		LDX	<ENINDX
;
		RTS
;
;>>>>>>>>>>
;function
; ＢＧ３金玉ＯＡＭセット
;entry
;return
;<<<<<<<<<<
BG3KTOSET	EQU	$
;
		I16
;
		LDA	>BSPL_B_POINT+(00AH-1)*4
		SEC
		SBC	#00008H
		STA	<EWORK0				;中心座標Ｘ
		LDA	>BSPL_B_POINT+(009H-1)*4+2
		CLC
		ADC	#00070H
		STA	<EWORK2				;中心座標Ｙ
;
		LDY	ENOAML,X
		LDX	#0000CH
BG3KT_OSET010	EQU	$
		LDA	SOAM_DX,Y
		CLC
		ADC	<EWORK0
		STA	SOAM_DX,Y
		LDA	SOAM_DX+2,Y
		CLC
		ADC	<EWORK2
		STA	SOAM_DX+2,Y
		TYA
		CLC
		ADC	#008H
		TAY
		DEX
		BNE	BG3KT_OSET010
;
		I8
;
BG3KT_OSET800	EQU	$
		LDX	<ENINDX
;
		RTS
;
;>>>>>>>>>>
;function
; ＢＧ３アクション
;entry
;<ENWRK0,X : 角度(0-FF)
;<ENWRK2,X :
;<ENWRK4,X : 揺れスピード
;return
;<<<<<<<<<<
;
YURE_MAX	EQU	030H			;左右に揺れる揺れ幅
;
BG3KTACT	EQU	$
;
		LDA	<EWORKE
		BIT	#00800H
		BEQ	BG3KT_ACT10		;卵当てられた｜赤ちゃんとられた？[no->BG3KT_ACT10]
;
		LDA	<EWORKE
		AND	#0FFE0H			;赤ちゃん捕まっているフラグオフ
		ORA	#08022H
		STA	<EWORKE			;縮みセット＆当てられフラグオン＆やられフラグオン
;
		LDA	TIMER
		BEQ	BG3KT_ACT10		;取られたのはムーチョ？[yes->BG3KT_ACT10]
;
		LDA	ENWRK2
		CMP	#BABYM_RMODE90
		BEQ	BG3KT_ACT00A		;赤ちゃん取られている？[yes->BG3KT_ACT00A]
		CMP	#BABYM_RMODE91	
		BNE	BG3KT_ACT10		;赤ちゃん取られている？[no->BG3KT_ACT0010]
;
BG3KT_ACT00A	EQU	$
		JSL	>BABYM_SHABN_C5		;赤ちゃん切り放し処理
		LDA	#0400H
		STA	ENYSPD
;
BG3KT_ACT10	EQU	$			;初期状態（プラプラ）
		LDA	<EWORKE
		AND	#00FH
		ASL	A
		TAY
		LDA	!BG3KT_ACTD00,Y
		STA	<EWORK0
		PER	2
		JMP	(EWORK0)
;
		RTS
;
BG3KT_ACTD00	EQU	$
		WORD	BG3KT_ACT000		;0 初期状態（プラプラ）
		WORD	BG3KT_ACT100		;1 ヨッシーの方へ伸びる
		WORD	BG3KT_ACT200		;2 縮む
		WORD	BG3KT_ACT300		;3 やられたＷＡＩＴ
;
BG3KT_YOFFSET	EQU	(014H)
;
;---通常時（ぷらぷらしてる）
;
BG3KT_ACTD010	EQU	$
		WORD	(040H-YURE_MAX)*0100H, (040H+YURE_MAX)*0100H
;
BG3KT_ACTD020	EQU	$
		WORD	00000H, 0FFFFH
;
BG3KT_ACTD030	EQU	$			;向き制御用データ
		BYTE	000H, 002H
;
BG3KT_ACT000	EQU	$			;初期状態（プラプラ）
;
		LDA	ENMUKI,X
		AND	#0FFFDH
		STA	ENMUKI,X
;
		LDY	#001H
		LDA	PLXPSL
		SEC
		SBC	ENXPSL,X
		BPL	BG3KT_ACT010
		LDY	#000H
BG3KT_ACT010	EQU	$			;初期状態（プラプラ）
		LDA	!BG3KT_ACTD030,Y
		AND	#0FFH
		ORA	ENMUKI,X
		STA	ENMUKI,X
;
		STZ	ENCHPT,X
;
		LDA	<ENWRK0,X
		SEC
		SBC	#04000H
		STA	<EWORK0
		LDA	<ENWRK4,X
		CLC
		ADC	<ENWRK0,X
		STA	<ENWRK0,X
		SEC
		SBC	#04000H
		EOR	<EWORK0
		BPL	BG3KT_ACT020
		LDA	#034H			;揺れているサウンド
		JSL	>SOUND_3_ON		;音
;
BG3KT_ACT020	EQU	$
		LDY	#002H
		LDA	<ENWRK0,X
		SEC
		SBC	#040H*100H
		BPL	BG3KT_ACT040
		LDY	#0000H
		EOR	#0FFFFH
BG3KT_ACT040	EQU	$
		CMP	#YURE_MAX*100H
		BCC	BG3KT_ACT060		;ゆれＭＡＸ以上？[no->BG3KT_ACT060]
		LDA	!BG3KT_ACTD010,Y	;最大値修正
		STA	<ENWRK0,X
;
BG3KT_ACT060	EQU	$
		LDY	#002H
		LDA	<ENWRK0,X
		SEC
		SBC	#040H*100H
		BPL	BG3KT_ACT062
		LDY	#000H
		EOR	#0FFFFH
		INC	A
BG3KT_ACT062	EQU	$
		XBA
		AND	#0FFH
		EOR	!BG3KT_ACTD020,Y
		CLC
		ADC	<ENWRK4,X
		STA	<ENWRK4,X		;加速度セット
;
;;;BG3KT_ACT070	EQU	$
;;;		LDA	<EWORKE
;;;		BIT	#00010H
;;;		BEQ	BG3KT_ACT071		;赤ちゃん捕まえてない？[yes->BG3KT_ACT0F0]
;;;;
;;;		LDA	#00400H
;;;		TRB	<EWORKE
;;;		JMP	BG3KT_ACT0F0
;;;;
;;;BG3KT_ACT071	EQU	$
;;;		LDA	<EWORKE
;;;		BIT	#00800H
;;;		BEQ	BG3KT_ACT072		;タマゴあてられた？[no->BG3KT_ACT072]
;;;;
;;;		LDA	#00010H
;;;		TRB	<EWORKE
;;;		JMP	BG3KT_ACT0F0
;
BG3KT_ACT072	EQU	$
;
		LDA	EWORKE
		BIT	#00010H
		BEQ	BG3KT_ACT073
		JMP	BG3KT_ACT0F0
;
BG3KT_ACT073	EQU	$
		LDA	PCENTX
		SEC
		SBC	ENXPSL,X
		CLC
		ADC	#060H
		CMP	#060H*2
		BCC	BG3KT_ACT082		;範囲内に入ってきた？[no->BG3KT_ACT0F0]
;
BG3KT_ACT07F	EQU	$
		RTS
;
BG3KT_ACT085D	EQU	$
		WORD	00042H			;偶数
		WORD	00062H			;奇数
BG3KT_ACT082	EQU	$
		LDA	PLFLSH
		BNE	BG3KT_ACT07F		;ヨッシーやられ点滅中？[yes->BG3KT_ACT07F]
;
		LDA	ENTIM2,X
		BNE	BG3KT_ACT07F		;攻撃ＯＫ？
;
		LDA	ENWRK6,X
		CMP	#003H
		BCC	BG3KT_ACT083		;攻撃を３回以上した？[no->BG3KT_ACT083]
;
		LDA	#050H
		STA	ENTIM2,X
		STZ	ENWRK6,X
;
		BRA	BG3KT_ACT07F
;
BG3KT_ACT083	EQU	$
		LDY	#000H
		LDA	ENXPSL,X
		BIT	#010H
		BEQ	BG3KT_ACT085
		LDY	#002H
BG3KT_ACT085	EQU	$
;
		LDA	<ENWRK2,X
		XBA
		AND	#0FFH
		ASL	A
		STA	<EWORK0			;現在の玉までの長さをだす。（ドット値）
;
		LDA	ENXPSL,X
		SEC
		SBC	PCENTX
		STA	R1			;Ｘ相対座標
		LDA	PCENTY
		SEC
		SBC	ENYPSL,X
		SEC
		SBC	#018H
		SEC
		SBC	<EWORK0
		CMP	#00010H			;プレイヤーの座標が10H以下は無視
		BMI	BG3KT_ACT0F0
		CLC
		ADC	<EWORK0
		CMP	#000C0H			;プレイヤーの座標がC0H以上も無視
;;;		CMP	!BG3KT_ACT085,Y
		BPL	BG3KT_ACT0F0
		CMP	!BG3KT_ACT085D,Y
		BMI	BG3KT_ACT08E
		LDA	!BG3KT_ACT085D,Y
BG3KT_ACT08E	EQU	$
		STA	<EWORK0
		EOR	#0FFFFH
		INC	A
		STA	R2			;Ｙ相対座標
;
		M_CHIP	M_RAD_GET
;
		LDX	<ENINDX
		LDA	R1
		SEC
		SBC	#0080H
		AND	#0FFH
		XBA
		STA	ENWRK8,X	;目標角度設定
;
		I16
;
		LDA	R1					; R = Y / Sin(R1)
		ASL	A					;
		TAX						;
		LDA	>SIN,X					;
		ASL	A					;
		TAX						;
		LDA	>DIVBUF,X				;
		STA	<EWORK2					;
;								;
		MI8						;
;								;
		LDX	<EWORK2					;
		STX	0211BH		;被乗数下位セット	;
		LDX	<EWORK3					;
		STX	0211BH		;被乗数上位セット	;
		LDA	<EWORK0					;
		LSR	A					;
		STA	0211CH		;			;
;
		M16
;
		LDX	<ENINDX
		LDA	02135H
		AND	#0FFH
		XBA
		STA	ENWRKA,X	;目標値セット（長さは半分）
;
		LDA	<EWORKE
		AND	#0FFF0H
		ORA	#08001H	
		STA	<EWORKE			;角度修正モードへ
;
		INC	ENWRK6,X
;
BG3KT_ACT0F0	EQU	$
;
		RTS
;
;---ヨッシーに向かって伸びる
;
BG3KT_ACTD100	EQU	$		;アニメーションパターン
		BYTE	007H, 006H, 005H, 004H, 003H, 002H, 001H, 000H
BG3KT_ACTD101	EQU	$		;カウンター
		BYTE	040H, 004H, 003H, 002H, 002H, 002H, 001H, 001H
;
BG3KT_ACT100	EQU	$
		LDA	<EWORKE
		BPL	BG3KT_ACT105
		AND	#7FFFH
		STA	<EWORKE
;
BG3KT_ACT104	EQU	$
		LDA	#BG3KT_ACTD221-BG3KT_ACTD220
		STA	<ENCONT,X
		STZ	ENTIM0,X
;
BG3KT_ACT105	EQU	$
		LDA	ENTIM0,X
		BNE	BG3KT_ACT130
;
		LDA	<ENCONT,X
		BEQ	BG3KT_ACT130
BG3KT_ACT107	EQU	$
		DEC	A
		STA	<ENCONT,X
		TAY
		LDA	!BG3KT_ACTD100,Y
		AND	#0FFH
		STA	ENCHPT,X
		LDA	!BG3KT_ACTD101,Y
		AND	#0FFH
		STA	ENTIM0,X
;
BG3KT_ACT130	EQU	$
;
		LDA	<EWORKE
		BIT	#00010H
		BNE	BG3KT_ACT138		;赤ちゃん捕まえた？[yes->BG3KT_ACT138]
;
		LDA	PCENTX
		SEC
		SBC	ENXPSL,X
		CLC
		ADC	#060H
		CMP	#060H*2
		BCC	BG3KT_ACT140		;範囲内にいる？[yes->BG3KT_ACT0F0]
;
		STZ	<ENWRK4,X
		STZ	ENWRK6,X
;
BG3KT_ACT138	EQU	$
		LDA	<EWORKE
		AND	#0FFF0H
		ORA	#08002H			;縮む
		STA	<EWORKE
;
		RTS
;
BG3KT_ACTD104	EQU	$
		WORD	-2*0100H, 2*0100H
;
BG3KT_ACT140	EQU	$
		LDY	#000H
		LDA	ENWRK8,X
		SEC
		SBC	<ENWRK0,X
		STA	<EWORK0
		BEQ	BG3KT_ACT145
		BMI	BG3KT_ACT143
		LDY	#002H
BG3KT_ACT143	EQU	$
		LDA	!BG3KT_ACTD104,Y
		CLC
		ADC	<ENWRK0,X
;;;		STA	<EWORK2
;;;		LDA	<EWORK2
		PHA
		SEC
		SBC	ENWRK8,X
		EOR	<EWORK0
		ASL	A			;<N>-><C>
		PLA
		BCS	BG3KT_ACT148		;符号に変化有り？（目標値通り過ぎた？）[no->BG3KT_ACT107]
BG3KT_ACT145	EQU	$
		LDA	ENWRK8,X
BG3KT_ACT148	EQU	$
		STA	<ENWRK0,X
;
;;;		LDA	ENWRK8,X
;;;		SEC
;;;		SBC	<EWORK2
;;;		EOR	<EWORK0
;;;		BPL	BG3KT_ACT107		;符号に変化有り？（目標値通り過ぎた？）[no->BG3KT_ACT107]
;;;BG3KT_ACT106	EQU	$
;;;		LDA	ENWRK8,X
;;;		BRA	BG3KT_ACT108
;;;BG3KT_ACT107	EQU	$
;;;		LDA	<EWORK2
;;;BG3KT_ACT108	EQU	$
;;;		STA	<ENWRK0,X
;
;--- 長さを伸ばす
;
BG3KT_ACT150	EQU	$
		LDA	ENWRKA,X
		SEC
		SBC	<ENWRK2,X
		BMI	BG3KT_ACT183		;もう通り過ぎてる？[yes->BG3KT_ACT183]
		ASL	A
		XBA
		AND	#0FFH
		ASL	A
		ASL	A
		ASL	A
		CLC
		ADC	#010H
		CLC
		ADC	<ENWRK2,X
		CMP	ENWRKA,X
		BCC	BG3KT_ACT185		;目標値到達？[no->BG3KT_ACT120]
BG3KT_ACT183	EQU	$
		LDA	<EWORKE
		AND	#0FFF0H
		ORA	#08002H
		STA	<EWORKE
		LDA	ENWRKA,X		;目標の長さセット
BG3KT_ACT185	EQU	$
		STA	<ENWRK2,X
;
		LDX	<ENINDX
		RTS
;
;---縮む
;
CHIZIMI_MIN	EQU	$			;縮みの目標値
		WORD	03000H/2, 03000H/2
CHIZIMI_SPD	EQU	(0800H/2)
;
BG3KT_ACTD210	EQU	$
		WORD	00000H, 08003H
BG3KT_ACTD220	EQU	$
		BYTE	00EH, 00DH, 00CH, 005H, 006H, 007H
BG3KT_ACTD221	EQU	$
		BYTE	0001H, 001H, 001H, 001H, 001H, 001H
;
BG3KT_ACT200	EQU	$
;
		LDA	<EWORKE
		BPL	BG3KT_ACT205
;
		AND	#7FFFH
		STA	<EWORKE
		LDA	#BG3KT_ACTD221-BG3KT_ACTD220
		STA	<ENCONT,X
		STZ	ENTIM0,X
;
BG3KT_ACT205	EQU	$
;
		LDA	ENTIM0,X
		BNE	BG3KT_ACT219
;
		LDA	<ENCONT,X
		BEQ	BG3KT_ACT219
;;;		LDA	#BG3KT_ACTD310-BG3KT_ACTD300-1
;;;		STA	<ENCONT,X
BG3KT_ACT215	EQU	$
		DEC	A
		STA	<ENCONT,X
		TAY
		LDA	!BG3KT_ACTD220,Y
		AND	#0FFH
		STA	ENCHPT,X
		LDA	!BG3KT_ACTD221,Y
		AND	#0FFH
		STA	ENTIM0,X
;
BG3KT_ACT219	EQU	$
		LDY	#000H
		LDA	<EWORKE
		BIT	#00020H
		BEQ	BG3KT_ACT219A
		LDY	#002H
BG3KT_ACT219A	EQU	$
		LDA	<ENWRK2,X
		SEC
		SBC	#CHIZIMI_SPD
		CMP	!CHIZIMI_MIN,Y
		BCS	BG3KT_ACT240
;
		LDA	<ENWRK0,X
		SEC
		SBC	#04000H
		XBA
		AND	#0FFH
;;		LSR	A
;;		LSR	A
;;		LSR	A
;;		LSR	A
;;		LSR	A
;;		LSR	A
;;		LSR	A
;;		LSR	A
		EOR	#0FFFFH
		INC	A
		CLC
		ADC	#00400H
		STA	<ENWRK4,X		;揺れスピードセット
;
		PHY
		LDY	#000H
		LDA	<EWORKE
		BIT	#00020H
		BEQ	BG3KT_ACT220
		LDA	#0100H
		STA	ENTIM1,X
		LDY	#002H
BG3KT_ACT220	EQU	$
		LDA	<EWORKE
		AND	#0FFD0H
		ORA	BG3KT_ACTD210,Y
		STA	<EWORKE
		PLY
;
		ORA	#00000H
		BMI	BG3KT_ACT300
;
		LDA	!CHIZIMI_MIN,Y
BG3KT_ACT240	EQU	$
		STA	<ENWRK2,X
;
		LDX	<ENINDX
		RTS
;
;---やられたＷＡＩＴ
;
BG3KT_ACTD300	EQU	$		;キャラクターパターン
		BYTE	010H, 011H, 010H, 00FH
BG3KT_ACTD310	EQU	$		;カウンター
		BYTE	002H, 020H, 002H, 010H
;
BG3KT_ACT300	EQU	$
;
		LDA	<EWORKE
		BPL	BG3KT_ACT310
;
		AND	#07FFFH
		STA	<EWORKE
;
		LDA	#BG3KT_ACTD310-BG3KT_ACTD300
		STA	<ENCONT,X
		STZ	ENTIM0,X
;
		LDA	#00100H
		STA	ENTIM1,X
;
BG3KT_ACT310	EQU	$
;
		LDA	ENTIM0,X
		BNE	BG3KT_ACT380
;
		DEC	<ENCONT,X
		BPL	BG3KT_ACT315
		LDA	#BG3KT_ACTD310-BG3KT_ACTD300-1
		STA	<ENCONT,X
BG3KT_ACT315	EQU	$
		LDY	<ENCONT,X
		LDA	!BG3KT_ACTD300,Y
		AND	#0FFH
		STA	ENCHPT,X
		LDA	!BG3KT_ACTD310,Y
		AND	#0FFH
		STA	ENTIM0,X
;
		LDA	ENTIM1,X
		BNE	BG3KT_ACT380
;
		LDA	<EWORKE
		AND	#0FFF0H
		STA	<EWORKE
;
BG3KT_ACT380	EQU	$
		RTS
;
;>>>>>>>>>>
;function
; ＢＧ３との当たり判定および、ヨッシー、マリオの制御
;name
; BG3KTPCK2
;entry
; <X>      : <ENINDXの値
; <EWORKE> : フラグ
;  bit 11 : 卵などあてられた？[yes->1]
;  bit 10 : プレイヤーにあたった？[yes->1]
;<<<<<<<<<<
BG3KTPCK2	EQU	$
;
		LDA	ENDSXL,X
		CLC
		ADC	#050H
		CMP	#050H+100H+050H
		BCS	BG3KT_PCK2400
;
		TXA
		STA	CCWORK9
		LDA	PLDSXL
		STA	CCWORKA
		LDA	PLDSYL
		STA	CCWORKB
		LDA	PLSITD
		STA	CCWORKC
;
		M_CHIP	BG3_CROSS_CK
;
		LDA	CCWORKD
		BEQ	BG3KT_PCK2100
;
		LDX	<ENINDX
		LDY	#000H
		LDA	ENXPSL,X
		CMP	PLXPSL
		BMI	BG3KT_PCK2050
		LDY	#002
BG3KT_PCK2050	EQU	$
		LDA	!BG3KT_PCKD000,Y
		CLC
		ADC	PLMVSP
		PHA
		SEC
		SBC	!BG3KT_PCKD010,Y
		EOR	!BG3KT_PCKD000,Y
		ASL	A
		PLA
		BCS	BG3KT_PCK2070
		LDA	!BG3KT_PCKD010,Y
BG3KT_PCK2070	EQU	$
		STA	PLMVSP
;
		LDA	<EWORKE
		LDA	<EWORKE
		PHA	
;
		LDX	<ENINDX
		JSL	>PLFLST
;
		PLA
		STA	<EWORKE
		LDA	#00400H			;プレイヤーあたったフラグオン
		TSB	<EWORKE
		LDX	<ENINDX
;
;--- 赤ちゃんチェック
;
BG3KT_PCK2100	EQU	$
;;		LDA	CCWORKA
;;		BEQ	BG3KT_PCK2200
;;;
;;		LDX	<ENINDX
;;		LDY	#000H
;;		LDA	ENXPSL,X
;;		CMP	ENXPSL
;;		BMI	BG3KT_PCK2180		;右当たり？[no->BG3KT_PCK080]
;;		LDY	#002H
;;BG3KT_PCK2180	EQU	$
;;		LDA	!BG3KT_PCKD000,Y
;;		CLC
;;		ADC	ENXSPD
;;		PHA
;;		SEC
;;		SBC	!BG3KT_PCKD010,Y
;;		EOR	!BG3KT_PCKD000,Y
;;		ASL	A
;;		PLA
;;		BCS	BG3KT_PCK2190
;;		LDA	!BG3KT_PCKD010,Y
;;BG3KT_PCK2190	EQU	$
;;		STA	ENXSPD
;
;--- 卵当てられチェック
;
BG3KT_PCK2200	EQU	$
		LDX	<ENINDX
		LDY	ECRSFG,X
		DEY
		BMI	BG3KT_PCK2400
;
		LDA	ENSHOT,Y
		BEQ	BG3KT_PCK2400
;
		LDA	<EWORKE
		PHA
;
		TYX
;;;		JSL	>SHOT_EN_KILL
		JSL	>ENDEATH_SET_4
;
		PLA
		ORA	#00800H
		STA	<EWORKE			;卵当てられたフラグオン
;
BG3KT_PCK2400	EQU	$
		LDX	<ENINDX
;
		RTS
;
BG3KT_PCKD000	EQU	$
		WORD	00100H, 0FF00H
BG3KT_PCKD010	EQU	$
		WORD	00200H, 0FE00H
;
;>>>>>>>>>>
;function
; ＢＧ３との当たり判定および、ヨッシー、マリオの制御
;name
; BG3KTPCK
;entry
; <X>      : <ENINDXの値
; <EWORKE> : フラグ
;  bit 11 : 卵などあてられた？[yes->1]
;  bit 10 : プレイヤーにあたった？[yes->1]
;<<<<<<<<<<
BG3KTPCK	EQU	$
		TXA
		STA	CCWORK9
		LDA	PLDSXL
		STA	CCWORKA
		LDA	PLDSYL
		STA	CCWORKB
		LDA	PLSITD
		STA	CCWORKC
;
		M_CHIP	BG3_CROSS_CK
;
		LDA	CCWORKD
		BEQ	BG3KT_PCK100
;
		LDX	<ENINDX
		LDY	#000H
		LDA	ENXPSL,X
		CMP	PLXPSL
		BMI	BG3KT_PCK050
		LDY	#002
BG3KT_PCK050	EQU	$
		LDA	!BG3KT_PCKD000,Y
		CLC
		ADC	PLMVSP
		PHA
		SEC
		SBC	!BG3KT_PCKD010,Y
		EOR	!BG3KT_PCKD000,Y
		ASL	A
		PLA
		BCS	BG3KT_PCK070
		LDA	!BG3KT_PCKD010,Y
BG3KT_PCK070	EQU	$
		STA	PLMVSP
;
		LDA	<EWORKE
		PHA
;
		LDX	<ENINDX
		JSL	>PLFLST
;
		PLA
		ORA	#00400H			;プレイヤーあたったフラグオン
		STA	<EWORKE
		LDX	<ENINDX
;
BG3KT_PCK100	EQU	$
		LDA	CCWORKA
		BEQ	BG3KT_PCK200
;
		LDX	<ENINDX
		LDY	#000H
		LDA	ENXPSL,X
		CMP	ENXPSL
		BMI	BG3KT_PCK180		;右当たり？[no->BG3KT_PCK080]
		LDY	#002H
BG3KT_PCK180	EQU	$
		LDA	!BG3KT_PCKD000,Y
		CLC
		ADC	ENXSPD
		PHA
		SEC
		SBC	!BG3KT_PCKD010,Y
		EOR	!BG3KT_PCKD000,Y
		ASL	A
		PLA
		BCS	BG3KT_PCK190
		LDA	!BG3KT_PCKD010,Y
BG3KT_PCK190	EQU	$
		STA	ENXSPD
;
BG3KT_PCK200	EQU	$
		LDX	<ENINDX
		LDY	ECRSFG,X
		DEY
		BMI	BG3KT_PCK400
;
		LDA	ENSHOT,Y
		BEQ	BG3KT_PCK400
;
		LDA	<EWORKE
		PHA
;
		TYX
		JSL	>ENDEATH_SET_4
;;;		JSL	>SHOT_EN_KILL
;
		PLA
		ORA	#00800H
		STA	<EWORKE			;卵当てられたフラグオン
;
BG3KT_PCK400	EQU	$
		LDX	<ENINDX
;
		RTS
;
;;;BG3KT_PCKD000	EQU	$
;;;		WORD	00100H, 0FF00H
;;;BG3KT_PCKD010	EQU	$
;;;		WORD	00200H, 0FE00H
;
;************************************************************************
;*		initial (ＢＧ３土管おばけ)				*
;************************************************************************
BG3DOIN		EQU	$
		LDA	#00000H
		STA	CREG0			;ＸＰＯＳセット
		LDA	#00000H
		STA	CREG1			;ＹＰＯＳセット
;
		RTL
;
;************************************************************************
;*		move    (ＢＧ３土管おばけ)				*
;************************************************************************
;<ENWRK0,X
;<ENWRK2,X
;<ENWRK4,X
; ENWRK6,X
; ENWRK8,X
; ENWRKA,X
; ENWRKC,X
;
;
;
;
BG3DOMV		EQU	$
		JSR	BG3DOPST		;ＢＧ３土管おばけポイントセット
		JSR	BG3DOSET		;ＢＧ３土管おばけセット
		JSR	BG3DOOSET		;ＢＧ３土管おばけＯＡＭセット
		JSL	>ENMDCK
;
		LDA	ENDSXL,X
		CLC
		ADC	#0200H			;右側範囲
		CMP	#0100H+0100H+200H
		BCS	BG3DO_MV040
;
		LDA	ENDSYL,X
		CLC
		ADC	#0180H+20H
		CMP	#0300H
		BCC	BG3DO_MV050
;
BG3DO_MV040	EQU	$
		JSL	>ENCLEAR		;範囲外消去
;
		BRA	BG3DO_MV900
;
BG3DO_MV050	EQU	$
		JSR	BG3DOPCK		;ＢＧ３土管おばけプレイヤー当たり判定セット
		JSR	BG3DOACT		;ＢＧ３土管おばけアクション
;
BG3DO_MV900	EQU	$
		LDX	<ENINDX
;
		RTL
;
;>>>>>>>>>>
;function
;name
; BG3DOPST
;entry
; i/ : <ENWRK0,X : モーフィングパターン＆モーフィング倍率
;<<<<<<<<<<
BG3DO_POINT_NO	EQU	01BH			;ＢＧ３ポイント数
;
BG3DOPST	EQU	$
;
		LDA	<ENWRK0,X
		XBA
		AND	#00FFH
		ASL	A
		TAX
		LDA	!BG3DO_PDT_000,X	;モーフィング元
		STA	<EWORK0
		LDA	!BG3DO_PDT_000+2,X	;モーフィング先
		STA	<EWORK2
;
		LDY	#(BG3DO_POINT_NO-1)*2		;ポイント数
BG3DO_PST010	EQU	$
		TYA
		ASL	A
		TAX
		LDA	(EWORK0),Y
		AND	#0FFH
		SEC
		SBC	#224
		STA	>MORP_S_POINT,X
		LDA	(EWORK2),Y
		AND	#0FFH
		SEC
		SBC	#224
		STA	>MORP_D_POINT,X
		LDA	(EWORK0),Y
		AND	#0FF00H
		XBA
		SEC
		SBC	#80
		STA	>MORP_S_POINT+2,X
		LDA	(EWORK2),Y
		AND	#0FF00H
		XBA
		SEC
		SBC	#80
		STA	>MORP_D_POINT+2,X
		DEY
		DEY
		BPL	BG3DO_PST010
;
		LDX	<ENINDX
;
		RTS
;
BG3DO_PDT_000	EQU	$
		WORD	BG3DO_PDT_100, BG3DO_PDT_200, BG3DO_PDT_300, BG3DO_PDT_400
		WORD	BG3DO_PDT_500, BG3DO_PDT_600
;
;file <dokanobake02.CH7>
;point kazu <01bH>
;xmag=[001.00]  ymag=[001.00]
;offset x=[224] y=[080]
;turn sw off
BG3DO_PDT_100	EQU	$
		BYTE	0E0H,050H, 0E0H,05FH, 080H,05FH, 072H,05FH
		BYTE	06EH,05DH, 052H,041H, 04EH,03FH, 010H,02FH
		BYTE	010H,03FH, 008H,03DH, 002H,038H, 001H,033H
		BYTE	001H,02CH, 002H,027H, 008H,022H, 010H,020H
		BYTE	050H,020H, 05EH,020H, 062H,022H, 07EH,03EH
		BYTE	082H,040H, 0E0H,043H, 0EFH,047H, 0F7H,04CH
		BYTE	0FFH,056H, 0FFH,05BH, 0FCH,05FH
;
;point<17> = point<16>
;file <dokanobake12.CH7>
;point kazu <01bH>
;xmag=[001.00]  ymag=[001.00]
;offset x=[224] y=[080]
;turn sw off
BG3DO_PDT_200	EQU	$
		BYTE	0E0H,050H, 0E0H,05FH, 080H,05FH, 072H,05FH
		BYTE	06EH,05DH, 052H,041H, 050H,03FH, 04FH,02FH
		BYTE	04FH,03FH, 048H,03DH, 042H,038H, 041H,033H
		BYTE	041H,02CH, 042H,027H, 048H,022H, 050H,020H
		BYTE	050H,020H, 05EH,020H, 062H,022H, 07EH,03EH
		BYTE	082H,040H, 0E0H,043H, 0EFH,047H, 0F7H,04CH
		BYTE	0FFH,056H, 0FFH,05BH, 0FCH,05FH
;
;point< 7> = point< 6>
;point<17> = point<16>
;point<18> = point<17>
;point<19> = point<18>
;point<20> = point<19>
;file <dokanobake22.CH7>
;point kazu <01bH>
;xmag=[001.00]  ymag=[001.00]
;offset x=[224] y=[080]
;turn sw off
BG3DO_PDT_300	EQU	$
		BYTE	0E0H,050H, 0E0H,05FH, 080H,05FH, 072H,05FH
		BYTE	06EH,05DH, 050H,03EH, 050H,03EH, 05BH,034H
		BYTE	04FH,03EH, 04CH,039H, 04BH,030H, 04DH,02BH
		BYTE	053H,025H, 05DH,023H, 062H,024H, 068H,028H
		BYTE	068H,028H, 068H,028H, 068H,028H, 068H,028H
		BYTE	082H,040H, 0E0H,043H, 0EFH,047H, 0F7H,04CH
		BYTE	0FFH,056H, 0FFH,05BH, 0FCH,05FH
;

;;;point kazu <01bH>
;;;xmag=[001.00]  ymag=[001.00]
;;;offset x=[224] y=[080]
;;;turn sw off
;;BG3DO_PDT_100	EQU	$
;;		BYTE	0E0H,050H, 0E0H,05FH, 080H,05FH, 072H,05FH
;;		BYTE	06EH,05DH, 032H,021H, 02EH,01FH, 010H,00FH
;;		BYTE	010H,01FH, 008H,01DH, 002H,018H, 001H,013H
;;		BYTE	001H,00CH, 002H,007H, 008H,002H, 010H,000H
;;		BYTE	030H,000H, 03EH,000H, 042H,002H, 07EH,03EH
;;		BYTE	082H,040H, 0E0H,043H, 0EFH,047H, 0F7H,04CH
;;		BYTE	0FFH,056H, 0FFH,05BH, 0FCH,05FH
;;;
;;;point<17> = point<16>
;;;file <dokanobake1.CH7>
;;;point kazu <01bH>
;;;xmag=[001.00]  ymag=[001.00]
;;;offset x=[224] y=[080]
;;;turn sw off
;;BG3DO_PDT_200	EQU	$
;;		BYTE	0E0H,050H, 0E0H,05FH, 080H,05FH, 072H,05FH
;;		BYTE	06EH,05DH, 032H,021H, 030H,01FH, 02FH,00FH
;;		BYTE	02FH,01FH, 028H,01DH, 022H,018H, 021H,013H
;;		BYTE	021H,00CH, 022H,007H, 028H,002H, 030H,000H
;;		BYTE	030H,000H, 03EH,000H, 042H,002H, 07EH,03EH
;;		BYTE	082H,040H, 0E0H,043H, 0EFH,047H, 0F7H,04CH
;;		BYTE	0FFH,056H, 0FFH,05BH, 0FCH,05FH
;;;
;;;point< 7> = point< 6>
;;;point<17> = point<16>
;;;point<18> = point<17>
;;;point<19> = point<18>
;;;file <dokanobake2.CH7>
;;v;point kazu <01bH>
;;;xmag=[001.00]  ymag=[001.00]
;;;offset x=[224] y=[080]
;;;turn sw off
;;BG3DO_PDT_300	EQU	$
;;		BYTE	0E0H,050H, 0E0H,05FH, 080H,05FH, 072H,05FH
;;		BYTE	06EH,05DH, 030H,01EH, 030H,01EH, 03BH,014H
;;		BYTE	02FH,01EH, 02CH,019H, 02BH,010H, 02DH,00BH
;;		BYTE	033H,005H, 03DH,003H, 042H,004H, 048H,008H
;;		BYTE	048H,008H, 048H,008H, 048H,008H, 07EH,03EH
;;		BYTE	082H,040H, 0E0H,043H, 0EFH,047H, 0F7H,04CH
;;		BYTE	0FFH,056H, 0FFH,05BH, 0FCH,05FH
;;;
;point< 4> = point< 3>
;point< 6> = point< 5>
;point< 7> = point< 6>
;point<17> = point<16>
;point<18> = point<17>
;point<19> = point<18>
;point<20> = point<19>
;file <dokanobake3.CH7>
;point kazu <01bH>
;xmag=[001.00]  ymag=[001.00]
;offset x=[224] y=[080]
;turn sw off
BG3DO_PDT_400	EQU	$
		BYTE	0E0H,050H, 0E0H,05FH, 080H,05FH, 080H,05FH
		BYTE	069H,058H, 069H,058H, 069H,058H, 073H,04CH
		BYTE	068H,058H, 064H,051H, 063H,048H, 065H,043H
		BYTE	06BH,03DH, 075H,03BH, 07AH,03CH, 07FH,040H
		BYTE	07FH,040H, 07FH,040H, 07FH,040H, 07FH,040H
		BYTE	082H,040H, 0E0H,043H, 0EFH,047H, 0F7H,04CH
		BYTE	0FFH,056H, 0FFH,05BH, 0FCH,05FH
;
;point< 4> = point< 3>
;point< 5> = point< 4>
;point< 6> = point< 5>
;point< 7> = point< 6>
;point<17> = point<16>
;point<18> = point<17>
;point<19> = point<18>
;point<20> = point<19>
;point<21> = point<20>
;file <dokanobake4.CH7>
;point kazu <01bH>
;xmag=[001.00]  ymag=[001.00]
;offset x=[224] y=[080]
;turn sw off
BG3DO_PDT_500	EQU	$
		BYTE	0E0H,050H, 0E0H,05FH, 080H,05FH, 080H,05FH
		BYTE	080H,05FH, 080H,05FH, 080H,05FH, 07FH,04FH
		BYTE	07FH,05FH, 078H,05DH, 072H,058H, 071H,053H
		BYTE	071H,04CH, 072H,047H, 078H,042H, 080H,040H
		BYTE	080H,040H, 080H,040H, 080H,040H, 080H,040H
		BYTE	080H,040H, 0E0H,043H, 0EFH,047H, 0F7H,04CH
		BYTE	0FFH,056H, 0FFH,05BH, 0FCH,05FH
;
;point< 3> = point< 2>
;point< 4> = point< 3>
;point< 5> = point< 4>
;point< 6> = point< 5>
;point< 7> = point< 6>
;point<17> = point<16>
;point<18> = point<17>
;point<19> = point<18>
;point<20> = point<19>
;point<21> = point<20>
;point<22> = point<21>
;file <dokanobake5.CH7>
;point kazu <01bH>
;xmag=[001.00]  ymag=[001.00]
;offset x=[224] y=[080]
;turn sw off
BG3DO_PDT_600	EQU	$
		BYTE	0E0H,050H, 0E0H,060H, 0E0H,060H, 0E0H,060H
		BYTE	0E0H,060H, 0E0H,060H, 0E0H,060H, 0E0H,051H
		BYTE	0DFH,060H, 0D8H,05EH, 0D2H,059H, 0D1H,054H
		BYTE	0D1H,04DH, 0D2H,048H, 0D8H,043H, 0E0H,041H
		BYTE	0E0H,041H, 0E0H,041H, 0E0H,041H, 0E0H,041H
		BYTE	0E0H,041H, 0E0H,041H, 0EFH,048H, 0F7H,04DH
		BYTE	0FFH,057H, 0FFH,05CH, 0FCH,060H
;
;>>>>>>>>>>
;function
; ＢＧ３土管おばけセット
;entry
;return
;<<<<<<<<<<
;
BG3DOSET	EQU	$
;
		LDA	ENWRKC,X
		STA	<EWORKE
;
		LDA	ENDSXL,X
		CMP	#00100H
		BCC	BG3DO_SET110
		CMP	#0FF00H
		BCS	BG3DO_SET110
		JMP	BG3DO_SET800
BG3DO_SET110	EQU	$
		CLC
		ADC	#000E0H
		STA	CREG0			;ＸＰＯＳセット
;
		LDA	ENDSYL,X
		CMP	#00200H
		BCC	BG3DO_SET120
		CMP	#0FF00H
		BCC	BG3DO_SET800
BG3DO_SET120	EQU	$
		CLC
;;		ADC	#00040H
		ADC	#00020H
		STA	CREG1			;ＹＰＯＳセット
		LDA	#MORP_S_POINT		;モーフィング元データアドレスセット
		STA	R1
		LDA	#MORP_D_POINT		;モーフィング先データアドレスセット
		STA	R2
		LDA	#BG3DO_POINT_NO
		STA	R3			;ＢＧ３ポイント数セット
		STZ	R4			;モーフィング中心ポイント番号セット
		LDA	#BG3_POLYGON_DT
		STA	R5			;モーフィングデータ出力アドレス
		LDA	<ENWRK0,X
		AND	#000FFH
		STA	R6			;モーフィング倍率
		LDA	#00000H
		STA	CREG15			;チェック無し
;
		M_CHIP	BG_MORPHING_AW
;
		JSL	>M_DMA_BFST
		LWORD	HDMABUF			;to address set
		LWORD	HDMABF			;from address set
		WORD	0D2H*2*2		;number of byte set
;
;--------------< config. set >-------------------
		MI8
;
		LDA	#013H
		STA	MANSEL
		LDA	#004H
		STA	SUBSEL
		LDA	#022H
		STA	WIND30
		LDA	#063H
		STA	SUBADF
		LDA	#00011000B
		TSB	HD420C
;
		M16
;
		LDA	#00008H
		TSB	<EWORKE
;
		BRA	BG3DO_SET900
;
BG3DO_SET800	EQU	$
;
		M8
;
		LDA	#004H
		TRB	SUBSEL
;
		M16
;
		LDA	#00008H
		TRB	<EWORKE
;
BG3DO_SET900	EQU	$
		LDX	<ENINDX
;
		LDA	<EWORKE
		STA	ENWRKC,X
;
		RTS
;
;>>>>>>>>>>
;function
;name
; BG3DOOSET
;<<<<<<<<<<
;
BG3DO_OSET_PT	EQU	008H-1			;ＯＡＭセット参考ポイントナンバー
;
BG3DOOSET	EQU	$
;
		STZ	ENMUKI,X
;

		I16
;
		LDY	ENOAML,X
		LDX	#0000CH
BG3DO_OSET210	EQU	$
		LDA	SOAM_DX,Y
		CLC
		ADC	>BG3_POLYGON_DT+BG3DO_OSET_PT*4
		CLC
;;;		ADC	#000D7H
		ADC	#000DEH				;95/06/17 change
		STA	SOAM_DX,Y
		LDA	SOAM_DX+2,Y
		CLC
		ADC	>BG3_POLYGON_DT+BG3DO_OSET_PT*4+2
		CLC
;;		ADC	#0003EH
;;		ADC	#0001EH
		ADC	#00018H				;95/06/17 change
		STA	SOAM_DX+2,Y
		TYA
		CLC
		ADC	#008H
		TAY
		DEX
		BNE	BG3DO_OSET210
;
		I8
;
		LDX	<ENINDX
;
;;		LDA	#00001H
;;		STA	ENCHPT,X
;
		RTS
;
;>>>>>>>>>>
;function
; 土管おばけ当たりチェック
;entry
; i/o :
;return
;
;<<<<<<<<<<
BG3DOPCK	EQU	$
;
		LDA	ENWRKC,X
		BIT	#00008H
		BNE	BG3DO_PCK010
		JMP	BG3DO_PCK400
BG3DO_PCK010	EQU	$
;
		LDA	ENWRKC,X
		AND	#0F7FFH
		STA	ENWRKC,X
;
		TXA
		STA	CCWORK9
		LDA	PLDSXL
		STA	CCWORKA
		LDA	PLDSYL
		STA	CCWORKB
		LDA	PLSITD
		STA	CCWORKC
;
		M_CHIP	BG3_CROSS_CK
;
		LDX	<ENINDX
;
		LDA	CCWORKD
		BEQ	BG3DO_PCK100
;
		LDY	#000H
		LDA	ENXPSL,X
		CLC
		ADC	#0E0H
		ASL	A
		CLC
		ADC	>BG3_POLYGON_DT+BG3DO_OSET_PT*4
		LSR	A
		CMP	PLXPSL
		BMI	BG3DO_PCK080		;右当たり？[no->BG3DO_PCK080]
		LDY	#002H
BG3DO_PCK080	EQU	$
		LDA	!BG3DO_PCKD000,Y
		CLC
		ADC	PLMVSP
		PHA
		SEC
		SBC	!BG3DO_PCKD010,Y
		EOR	!BG3DO_PCKD000,Y
		ASL	A
		PLA
		BCS	BG3DO_PCK090
		LDA	!BG3DO_PCKD010,Y
BG3DO_PCK090	EQU	$
		STA	PLMVSP
;
		LDX	<ENINDX
		JSL	>PLFLST
;
BG3DO_PCK100	EQU	$
;
		LDA	CCWORKA
		BEQ	BG3DO_PCK200
;
		LDX	<ENINDX
		LDY	#000H
		LDA	ENXPSL,X
		CLC
		ADC	#0E0H
		ASL	A
		CLC
		ADC	>BG3_POLYGON_DT+BG3DO_OSET_PT*4
		LSR	A
		CMP	ENXPSL
		BMI	BG3DO_PCK180		;右当たり？[no->BG3DO_PCK080]
		LDY	#002H
BG3DO_PCK180	EQU	$
		LDA	!BG3DO_PCKD000,Y
		CLC
		ADC	ENXSPD
		PHA
		SEC
		SBC	!BG3DO_PCKD010,Y
		EOR	!BG3DO_PCKD000,Y
		ASL	A
		PLA
		BCS	BG3DO_PCK190
		LDA	!BG3DO_PCKD010,Y
BG3DO_PCK190	EQU	$
		STA	ENXSPD
;
BG3DO_PCK200	EQU	$
;
		LDX	<ENINDX
		LDY	ECRSFG,X
		DEY
		BMI	BG3DO_PCK400
;
		LDA	ENSHOT,Y
		BEQ	BG3DO_PCK400
;
		TYX
		JSL	>SHOT_EN_KILL
;
		LDX	<ENINDX
		LDA	ENWRKC,X
		ORA	#00800H
		STA	ENWRKC,X		;当てられたフラグオン
;
BG3DO_PCK400	EQU	$
		LDX	<ENINDX
;
		RTS
;
BG3DO_PCKD000	EQU	$
		WORD	00100H, 0FF00H
BG3DO_PCKD010	EQU	$
		WORD	00200H, 0FE00H
;
;>>>>>>>>>>
;function
; ＢＧ３土管おばけアクション
;name
; BG3DOACT
;entry
;
;<<<<<<<<<<
;
BG3DO_PTMAX	EQU	500H
;
BG3DOACT	EQU	$
;
		LDA	ENWRKC,X
		STA	<EWORKE
;
;;;		LDA	<EWORKE
		BIT	#00800H
		BEQ	BG3DO_ACT050		;なにか当てられた？[no->BG3DO_ACT_100]
;
		LDA	#010H
		STA	ENTIM0,X		;縮み用アニメーションカウンタ
;
		LDA	<EWORKE
		AND	#0FFF8H
		ORA	#00401H
		STA	<EWORKE			;縮みフラグ＆アニメーションナンバーセット
;
		LDA	#079H			;BONBONシリーズやられ音
		JSL	>SOUND_3_ON		;音
;
BG3DO_ACT050	EQU	$
		AND	#00007H
		ASL	A
		TAY
		LDA	!BG3DO_ACTJ000,Y
		STA	<EWORK0
;
		PER	2
		JMP	(EWORK0)
;
		LDA	<EWORKE
		AND	#07FFFH
		BIT	#04000H
		BEQ	BG3DO_ACT090A
;
		AND	#0BFFFH
		ORA	#08000H
BG3DO_ACT090A	EQU	$
		STA	ENWRKC,X
;
		RTS
;
BG3DO_ACTJ000	EQU	$
		WORD	BG3DO_ACT100		;0 ノーマル状態
		WORD	BG3DO_ACT200		;1 縮み
		WORD	BG3DO_ACT300		;2 戻り
		WORD	BG3DO_ACT400		;3 ファイヤー
		WORD	BG3DO_ACT500		;4 どうしよう？
;
BG3DO_ACT100	EQU	$			;ノーマル状態
		LDA	ENTIM3,X
		BEQ	BG3DO_ACT105		;止め処理中？[no->BG3DO_ACT105]
;
		RTS
;
BG3DO_ACT105	EQU	$
		LDA	<ENWRK0,X
		BEQ	BG3DO_ACT110		;戻りあり？[no->BG3DO_ACT110]
;
		JSL	>RANDAM
		LDA	<RANDM0	
		BIT	#001FH
		BNE	BG3DO_ACT110		;戻りセットする？[no->BG3DO_ACT110]
		AND	#001H
		CLC
		ADC	#01CH
		STA	ENTIM0,X
;
		LDA	<EWORKE
		AND	#0FFF8H
		ORA	#00002H
		STA	<EWORKE			;アニメーションパターンセット
;
		JMP	BG3DO_ACT300
;
BG3DO_ACT110	EQU	$
;;		JSL	>RANDAM
;;;		LDA	<RANDM0
;;		BIT	#001FH
;;		BNE	BG3DO_ACT120		;ファイヤーセットする？[no->BG3DO_ACT120]
;
		LDA	ENTIM1,X
		BNE	BG3DO_ACT120		;ファイヤーＯＫ？
;
		LDA	#MSHIH
		STA	R4
		INC	A
		STA	R5
		M_CHIP	TARGET_COUNTER
		LDX	<ENINDX
		LDA	R6
		CMP	#003H
		BCS	BG3DO_ACT120
		STA	<EWORK0
;
		M_CHIP	EGGSEARCH
		LDX	<ENINDX
		LDA	R6
		CLC
		ADC	<EWORK0
		CMP	#006H				;タマゴ規定値６個未満？[no->BG3D2_ACT085]
		BCS	BG3DO_ACT121
;
		PHA
;
		LDA	<EWORKE
		AND	#0FFF8H
		ORA	#08003H
		STA	<EWORKE
;		
		PLA
;
		LDY	#000H
		CMP	#005H			;
		BCC	BG3DO_ACT118
		LDY	#002H
;;;		LDA	#002H
BG3DO_ACT118	EQU	$
		LDA	BG3DO_ACT120D,Y
		STA	<ENWRK4,X		;ファイヤー数セット
;
		JMP	BG3DO_ACT400
;
BG3DO_ACT120D	EQU	$
		WORD	00002H, 00001H		;ファイヤー数（卵存在数４個以下、５個以上）
;
BG3DO_ACT120	EQU	$
		LDX	<ENINDX
BG3DO_ACT121	EQU	$
		LDA	<EWORKE
		BPL	BG3DO_ACT122		;初期化？[no->BG3DO_ACT122]
;
		STZ	<ENWRK2,X
		STZ	ENTIM0,X
;
BG3DO_ACT122	EQU	$
		LDA	ENTIM0,X
		BNE	BG3DO_ACT130
;
		LDA	<ENWRK2,X
		BNE	BG3DO_ACT126
		LDA	#BG3DO_ACTD020-BG3DO_ACTD010-2
		STA	<ENWRK2,X
BG3DO_ACT126	EQU	$
		TAY
		LDA	!BG3DO_ACTD010,Y
		STA	ENCHPT,X
		LDA	!BG3DO_ACTD020,Y
		STA	ENTIM0,X
;
		DEC	<ENWRK2,X
		DEC	<ENWRK2,X
;
BG3DO_ACT130	EQU	$
		RTS
;
BG3DO_ACTD200	EQU	$
		HEX	00CH, 030H, 018H, 030H, 00CH
BG3DO_ACT200	EQU	$			;縮み
		LDA	#00EH
		STA	ENCHPT,X
;
;;;		LDA	#0C0H			;BONBONシリーズ動作音
;;;		STA	SOUND_1			;音
;
		LDA	ENTIM0,X
		BNE	BG3DO_ACT250		;終了?[no->BG3DO_ACT250]
;
		LDA	#00407H
		TRB	<EWORKE			;縮みフラグリセット＆アニメーションナンバーセット
;
		LDA	#020H
		STA	ENTIM3,X
;
		LDA	#0160H+020H
		STA	ENTIM1,X
;
		STZ	ENTIM0,X
		STZ	<ENWRK2,X
;
BG3DO_ACT250	EQU	$
		LDA	<ENWRK0,X
		XBA
		AND	#0FFH
		TAY
		LDA	BG3DO_ACTD200,Y
		AND	#0FFH
;;		LDA	#010H
		CLC
		ADC	<ENWRK0,X
		CMP	#BG3DO_PTMAX
		BCC	BG3DO_ACT280
;
		LDA	<EWORKE
		AND	#0FFF8H
		ORA	#04004H
		STA	<EWORKE			;こまったパターンへ
;
		LDA	#BG3DO_PTMAX-1
BG3DO_ACT280	EQU	$
		STA	<ENWRK0,X
;
		RTS
;
BG3DO_ACT300	EQU	$			;戻り
		LDA	ENTIM0,X
		BNE	BG3DO_ACT330
;
		LDA	<EWORKE
		AND	#0FFF8H
		ORA	#04000H
		STA	<EWORKE			;通常アニメーションパターンナンバーセット
;
BG3DO_ACT330	EQU	$
		LDA	#00005H
		STA	ENCHPT,X
;
		LDA	#0C0H			;BONBONシリーズ動作音
		STA	SOUND_1			;音
;
		LDA	<ENWRK0,X
		XBA
		AND	#0FFH
		ASL	A
		TAY
		LDA	!BG3DO_ACTD330,Y
		CLC
		ADC	<ENWRK0,X
		BPL	BG3DO_ACT380		;戻り過ぎ？[no->BG3DO_ACT_510]
;
		LDA	<EWORKE
		AND	#0FFF8H
		ORA	#04000H
		STA	<EWORKE			;通常アニメーションパターンナンバーセット
;
		LDA	#00000H
BG3DO_ACT380	EQU	$
		STA	<ENWRK0,X
;
		RTS
;
BG3DO_ACTD330	EQU	$
		WORD	-2		;0
		WORD	-8		;1
		WORD	-4		;2
		WORD	-8		;3
		WORD	-2		;4
;
BG3DO_ACTD410	EQU	$		;ファイヤーアニメーションパターン
		BYTE	007H, 006H, 005H, 004H, 003H, 002H, 00AH, 00BH
		BYTE	00AH, 001H, 002H, 003H, 004H, 005H, 006H
BG3DO_ACTD420	EQU	$		;ファイヤーアニメーションタイマー
		BYTE	  1,    1,    1,    1,    1,    1,    2,   10
		BYTE	  2,    1,    1,    1,    1,    1,    1
;
;----- ファイヤー
;
BG3DO_ACT400	EQU	$			;ファイヤー
		LDA	<EWORKE
		BPL	BG3DO_ACT410		;初期化？(no->BG3DO_ACT410)
;
		STZ	<ENWRK2,X
		STZ	ENTIM0,X
;
BG3DO_ACT410	EQU	$
		LDA	ENTIM0,X
		BEQ	BG3DO_ACT411
		JMP	BG3DO_ACT480
;
BG3DO_ACT411	EQU	$
		LDY	<ENWRK2,X
		CPY	#BG3DO_ACTD420-BG3DO_ACTD410
		BCC	BG3DO_ACT450		;アニメーション終了？[no->BG3DO_ACT430]
;
		DEC	<ENWRK4,X
		BEQ	BG3DO_ACT430		;ショット数分吐いた？[yes->BG3DO_ACT450]
;
		LDA	#04000H
		TSB	<EWORKE
;
		JMP	BG3DO_ACT480
;
BG3DO_ACT430	EQU	$
;;;		LDA	#00C0H
		LDA	#0060H
		STA	ENTIM1,X		;次のファイヤーまでの時間
;
		LDA	<EWORKE
		AND	#0BFF8H
		ORA	#04000H
		STA	<EWORKE
;
		BRA	BG3DO_ACT480
;
BG3DO_ACT450	EQU	$
		LDA	!BG3DO_ACTD420,Y
		AND	#0FFH
		STA	ENTIM0,X
		CPY	#BG3DO_ACTD420-BG3DO_ACTD410-1
		BNE	BG3DO_ACT452			;最後のアニメーションパターン？[no->BG3DO_ACT452]
		LDA	<ENWRK4,X
		CMP	#001H
		BEQ	BG3DO_ACT452			;最後のファイヤー？[yes->BG3DO_ACT452]
		LDA	ENTIM0,X
		CLC
		ADC	#040H
		STA	ENTIM0,X
BG3DO_ACT452	EQU	$
		LDA	!BG3DO_ACTD410,Y
		AND	#0FFH
		STA	ENCHPT,X
;
		CPY	#007H				;ファイヤーオン？[yes->]
		BNE	BG3DO_ACT470
;
		LDA	#077H			;ヘイホー発射サウンド
		JSL	>SOUND_3_ON		;音
;
;;		LDA	#OBFIR				;(A) <-- 敵Ｎｏ．
;;		JSL	>ENINSR				;敵エリア確保
;;		BCC	BG3DO_ACT470			;     ”     ？ [no->OBAKE_FIRE_0150]
;
;;		LDA	ENXPSL,X
;;		CLC
;;		ADC	>BG3_POLYGON_DT+BG3DO_OSET_PT*4
;;		CLC
;;		ADC	#000CCH
;;		STA	ENXPSL,Y
;;		LDA	ENYPSL,X
;;		CLC
;;		ADC	>BG3_POLYGON_DT+BG3DO_OSET_PT*4+2
;;		CLC
;;		ADC	#0003EH
;;		STA	ENYPSL,Y		
;;		LDA	#0FE80H
;;		STA	ENXSPD,Y	;X speed set
;;		LDA	#010H
;;		STA	ENXPOW,Y	;X power set
;;		LDA	#0200H
;;		STA	ENTIM0,Y	;move timer set
;;		LDA	#02H
;;		STA	ENTIM1,Y	;pattern change timer set
;;		LDA	#020H+040H
;;		STA	ENTIM2,Y	;wait timer set
;
		LDA	#MSHIH
		JSR	>ENINSR_I
;
		LDA	ENXPSL,X
		CLC
		ADC	>BG3_POLYGON_DT+BG3DO_OSET_PT*4
		CLC
		ADC	#000CCH
		STA	ENXPSL,Y			;Ｘポジション
		LDA	ENYPSL,X
		CLC
		ADC	>BG3_POLYGON_DT+BG3DO_OSET_PT*4+2
		CLC
;;		ADC	#0003EH
		ADC	#0001EH
		STA	ENYPSL,Y			;Ｙポジション
		LDA	#0FE00H
		STA	ENXSPD,Y			;Ｘスピード
		LDA	#0FD80H
		STA	ENYSPD,Y			;Ｙスピード
;
		M8
;
		LDA	#000H+1
		STA	ENWRKA,Y			;でんぐりヘイホーカラーセット				;
		LDX	#004H
		STX	<ENWRK2,Y			;なんかしらんけど固定値
;
		M16
;
		LDA	#00000H
		STA	ENMUKI,Y
;
		LDX	<ENINDX
;
BG3DO_ACT470	EQU	$
		INC	<ENWRK2,X
BG3DO_ACT480	EQU	$
		RTS
;
;----- こまったー
;
BG3DO_ACT500	EQU	$
		LDA	<EWORKE
		BPL	BG3DO_ACT515		;初期化？[no->BG3DO_ACT515]
;
		STZ	ENTIM0,X
		STZ	<ENWRK2,X
;
BG3DO_ACT515	EQU	$
		LDA	ENTIM0,X
		BNE	BG3DO_ACT580
;
		LDA	<ENWRK2,X
		BNE	BG3DO_ACT517
		LDA	#BG3DO_ACTD220-BG3DO_ACTD210-2
		STA	<ENWRK2,X
BG3DO_ACT517	EQU	$
		TAY
		LDA	!BG3DO_ACTD220,Y
		STA	ENTIM0,X
		LDA	!BG3DO_ACTD210,Y
		STA	ENCHPT,X
;
BG3DO_ACT518	EQU	$
		DEC	<ENWRK2,X
		DEC	<ENWRK2,X
;
		BNE	BG3DO_ACT580
;
		LDA	<EWORKE
		AND	#0FFF8H
		ORA	#04000H
		STA	<EWORKE
;
		LDA	#00100H
		STA	ENTIM3,X
;
		LDA	#0180H
		STA	ENTIM1,X
;
BG3DO_ACT580	EQU	$
		RTS
BG3DO_ACTD010	EQU	$		;通常顔アニメーションパターン
		WORD	008H, 009H, 008H, 007H
BG3DO_ACTD020	EQU	$		;通常顔アニメーションタイマー
		WORD	4,8,4,10
;
BG3DO_ACTD210	EQU	$		;こまった。アニメーションパターン
		WORD	00FH, 010H, 011H, 10H, 0FH
		WORD	00FH, 010H, 011H, 10H, 0FH
BG3DO_ACTD220	EQU	$		;こまった。アニメーションタイマー
		WORD	  10,    2,   20,   2,  10
		WORD	  10,    2,   20,   2,  10
;
;************************************************************************
;*		initial (ＢＧ３土管お化け２号)				*
;************************************************************************
BG3D2_MIN1	EQU	0020H		;土管お化けの最初の大きさ
BG3D2_MIN2	EQU	0030H		;土管お化けの大きくなってからの最小の大きさ
BG3D2_MAX	EQU	0118H
;
BG3D2IN		EQU	$
		LDA	#BG3D2_MIN1
		STA	<ENWRK0,X	;初期モーフィング率セット
		LDA	#BG3D2_MAX
		STA	<ENWRK2,X	;目標値リセット
;
		LDA	#00003H
		STA	ENWRKC,X
;
		LDA	#008H
		STA	ENTIM0,X
;
		LDA	#008H
		STA	<ENCONT,X
;
		RTL
;
;************************************************************************
;*		move    (ＢＧ３土管お化け２号)				*
;************************************************************************
;<ENWRK0,X : モーフィング率
;<ENWRK2,X : 目標値
;<ENWRK4,X : フレーム毎変化量
; ENWRK6,X : 食らった玉数（未使用）
; ENWRK8,X : 
; ENWRKA,X :
; ENWRKC,X : 各種フラグなど()
;  bit15 : アニメーション初期化フラグ。1=初期化
;  bit14 : お化け表示フラグ 1==表示
;  bit13 :
;  bit12 :
;--
;  bit11 :
;  bit10 : 
;  bit9  :
;  bit8  :
;--
;  bit7  : 卵あてられフラグ。1=あてられた。
;  bit6  : 
;  bit5  : 顔オブジェ表示フラグ 1=表示
;  bit4  :
;--
;  bit3  :
;  bit2  :
;  bit1  :
;  bit0  :
BG3D2_POINT_NO	EQU	014H
;
BG3D2MV		EQU	$
		LDA	ENWRKC,X
		STA	<EWORKE			;フラグの読み出し
;
		LDA	#000H
		STA	<EWORKC			;お化け番号セット
;
		JSR	BG3DPSET		;ポイントセット
		JSR	BG3DDSP			;ＢＧ３ポリゴンセット
		JSR	BG3D2OSET		;オブジェセット
;
		LDA	<EWORKE
		STA	ENWRKC,X
;
		JSL	>ENMDCK
;
		LDA	ENWRKC,X
		STA	<EWORKE
;
		LDA	ENDSXL,X
		CLC
		ADC	#090H
		CMP	#100H+(090H*2)
		BCS	BG3D2_MV040
;
		LDA	ENDSYL,X
		CLC
		ADC	#0100H
		CMP	#0100H+0100H+0100H
		BCC	BG3D2_MV050
;
BG3D2_MV040	EQU	$
		JSL	>ENCLEAR		;範囲外消去
;
		BRA	BG3D2_MV900
;
BG3D2_MV050	EQU	$
		LDA	<EWORKE
		BIT	#00400H
		BEQ	BG3D2_MV100		;表示フラグオン
;
		JSR	BG3KTPCK		;プレイヤー、赤ちゃん、卵、当たりチェック（注意金玉と共用のルーチン）
BG3D2_MV100	EQU	$
		JSR	BG3D2ACT
;
BG3D2_MV900	EQU	$
		LDX	<ENINDX
		LDA	<EWORKE
		STA	ENWRKC,X
;
		RTL

;>>>>>>>>>>
;function
; 土管お化け２号オブジェセット
;name
;<<<<<<<<<<
BG3D2_OSETD010	EQU	$
		WORD	0078H		;0 通常状態
		WORD	0000H		;1 縮む（きゃぁー）
		WORD	0078H		;2 戻る（じわじわ）
		WORD	0028H		;3 ウェルカム（ほほほほほ）
		WORD	0078H		;4 ファイヤー
;
BG3D2OSET	EQU	$
		LDA	ENCHPT,X
		CMP	#014H+1
		BCS	BG3D2_OSET100
;
		LDA	<EWORKE
		AND	#0000FH
		ASL	A
		TAY
		LDA	<ENWRK0,X
		CMP	!BG3D2_OSETD010,Y
		BCC	BG3D2_OSET100			;表示する？[no->BG3D2_OSET100]
;
BG3D2_OSET000	EQU	$
		CPY	#001H*2
		BNE	BG3D2_OSET005
;
		LDA	<EWORKE
		BIT	#00200H
		BEQ	BG3D2_OSET100
;
BG3D2_OSET005	EQU	$
;
		I16
;
		LDA	#0FFF8H
		STA	<EWORK0				;中心座標Ｘ
		LDA	>BG3_POLYGON_DT+00AH*4+2
		CLC
		ADC	#010H
		STA	<EWORK2				;中心座標Ｙ
;
		LDY	ENOAML,X
		LDX	#0000CH
BG3D2_OSET010	EQU	$
		LDA	SOAM_DX,Y
		CLC
		ADC	<EWORK0
		STA	SOAM_DX,Y
		LDA	SOAM_DX+2,Y
		CLC
		ADC	<EWORK2
		STA	SOAM_DX+2,Y
		TYA
		CLC
		ADC	#008H
		TAY
		DEX
		BNE	BG3D2_OSET010
;
		I8
;
		LDA	#0200H
		TSB	<EWORKE
;
		LDX	<ENINDX
;
		RTS
;
BG3D2_OSET100	EQU	$
		I16
;
		LDY	ENOAML,X
		LDX	#0000CH
BG3D2_OSET110	EQU	$
		LDA	#000E8H
		STA	SOAM_DX+2,Y
		TYA
		CLC
		ADC	#008H
		TAY
		DEX
		BNE	BG3D2_OSET110
;
		I8
;
		LDA	#00200H
		TRB	<EWORKE			;オブジェ表示ビットオン
;
		LDX	<ENINDX
;
		RTS
;
;>>>>>>>>>>
;function
;
;name
;entry
;return
;<<<<<<<<<<
MODORI_TIM0	EQU	080H			;初期の戻り時間
MODORI_TIM1	EQU	008H			;２回目以降の戻り時間
;
BG3D2ACT	EQU	$
		JSR	BG3D2_ACTSTAY		;常に行う処理
;
		LDA	<EWORKE
		AND	#0000FH
		ASL	A
		TAY
		LDA	!BG3D2_ACTD00,Y
		STA	<EWORK0
		PER	2
		JMP	(EWORK0)
;
		LDX	<ENINDX
;
		RTS
;
BG3D2_ACTD00	EQU	$
		WORD	BG3D2_ACT000		;0 通常状態
		WORD	BG3D2_ACT100		;1 縮む（きゃぁー）
		WORD	BG3D2_ACT200		;2 戻る（じわじわ）
		WORD	BG3D2_ACT300		;3 ウェルカム（ほほほほほ）
		WORD	BG3D2_ACT400		;4 ファイヤー
;
BG3D2_ACTD10	EQU	$			;向きの設定値
		HEX	00,02
;
BG3D2_ACTSTAY	EQU	$			;常に行う処理
		LDY	#001H
		LDA	PLXPSL
		SEC
		SBC	ENXPSL,X
		BPL	BG3D2_ACTS005
		LDY	#0
BG3D2_ACTS005	EQU	$
		LDA	!BG3D2_ACTD10,Y
		AND	#0FFH
		STA	ENMUKI,X
;
		LDA	<EWORKE
		BIT	#00800H
		BEQ	BG3D2_ACTS080		;卵あてられた？[no->BG3D2_ACTS080]
;
		LDA	#079H			;BONBONシリーズやられ音
		JSL	>SOUND_3_ON		;音
;
		LDA	<EWORKE
		AND	#0000FH
		CMP	#00001H
		BEQ	BG3D2_ACTS080		;縮み中？[yes->BG3D2_ACTS080]
;
BG3D2_ACTS008	EQU	$
		LDA	<ENWRK0,X
		SEC
		SBC	#020H
		CMP	#BG3D2_MIN2
		BCS	BG3D2_ACTS010
		LDA	#BG3D2_MIN2
BG3D2_ACTS010	EQU	$
		STA	<ENWRK2,X
;
		LDA	#00008H
		STA	<ENWRK4,X		;フレーム毎変化量
;
		LDA	<EWORKE
		AND	#0F7F0H
		ORA	#08001H		
		STA	<EWORKE			;縮み中フラグオン
;
BG3D2_ACTS080	EQU	$
		RTS
;
BG3D2_ACT000	EQU	$
;
		LDA	<ENWRK0,X
		CMP	#BG3D2_MAX
		BCS	BG3D2_ACT080		;最大大きさ以下？（戻りあり？）[no->BG3D2_ACT080]
;
		LDA	ENTIM0,X
		BEQ	BG3D2_ACT005		;戻ってもいい？[yes->BG3D2_ACT090]
;
		RTS
;
BG3D2_ACT005	EQU	$
		JSL	>RANDAM
		LDA	<RANDM0	
		BIT	#0F800H
		BNE	BG3D2_ACT080		;戻る？[no->BG3D2_ACT080]
;
		AND	#03H
		ASL	A
		ASL	A
		CLC
		ADC	#004H
		CLC
		ADC	<ENWRK0,X
		CMP	#BG3D2_MAX
		BCC	BG3D2_ACT060
		LDA	#BG3D2_MAX
BG3D2_ACT060	EQU	$
		STA	<ENWRK2,X
;
		LDA	<EWORKE
		AND	#0FFF0H
		ORA	#08002H
		STA	<EWORKE			;戻り制御番号セット
;
BG3D2_ACT080	EQU	$
		LDA	ENTIM3,X
		BNE	BG3D2_ACT085			;ファイヤーウエイトＯＫ？[yes->BG3D2_ACT085]
;
		LDA	<ENWRK0,X
		CMP	#078H
		BCC	BG3D2_ACT085			;モーフィング率ＯＫ？[no->BG3D2_ACT085]
;
;;;		LDA	#MSHIH
		LDA	#HEIH0
		STA	R4
		INC	A
		STA	R5
		M_CHIP	TARGET_COUNTER
		LDA	R6
		CMP	#003H
		BCS	BG3D2_ACT085			;でんぐりへいほー３個未満？[no->BG3D2_ACT085]
		STA	<EWORK0
;
		M_CHIP	EGGSEARCH
		LDA	R6
		CLC
		ADC	<EWORK0
		CMP	#006H				;タマゴ規定値５個未満？[no->BG3D2_ACT085]
		BCS	BG3D2_ACT085
;
		JSL	>RANDAM
		LDA	<RANDM0
		BIT	#0007H
		BNE	BG3D2_ACT085
;
		LDA	<EWORKE
		AND	#0FFF0H
		ORA	#08004H
		STA	<EWORKE			;ファイヤーセット
;
BG3D2_ACT085	EQU	$
		LDX	<ENINDX
		JSR	BG3D2ANM
;
BG3D2_ACT090	EQU	$
		RTS
;
BG3D2_ACT100	EQU	$			;1 縮む（きゃぁー）
		JSR	BG3D2ANM
;
		LDA	<ENWRK4,X
		SEC
		SBC	#001H
		STA	<ENWRK4,X
;
		LDA	<ENWRK0,X
		CLC
		ADC	<ENWRK4,X
		CMP	<ENWRK2,X	
		BCS	BG3D2_ACT110		;目標値到達？[no->BG3D2_ACT110]
;
		CMP	#BG3D2_MIN2
		BCS	BG3D2_ACT108
;
		LDA	#MODORI_TIM0*3
		BRA	BG3D2_ACT109
;
BG3D2_ACT108	EQU	$
		LDA	#MODORI_TIM0
BG3D2_ACT109	EQU	$
		STA	ENTIM0,X		;戻りまでの余裕時間
;
		LDA	<EWORKE
		AND	#0FFF0H
		ORA	#08000H
		STA	<EWORKE			;ノーマルモードへ
;
		LDA	<ENWRK2,X
BG3D2_ACT110	EQU	$
		STA	<ENWRK0,X
;
BG3D2_ACT190	EQU	$
;
		RTS
;
BG3D2_ACT200	EQU	$			;2 戻る（じわじわ）
		JSR	BG3D2ANM
;
		LDA	<ENWRK0,X
		CLC
		ADC	#002H
		CMP	<ENWRK2,X
		BCC	BG3D2_ACT280		;戻りきった？[no->BG3D2_ACT280]
;
		LDA	<EWORKE
		AND	#0FFF0H
		ORA	#08000H
		STA	<EWORKE
;;;		STZ	ENWRK6,X		;卵くらった数リセット
;;;		LDA	!BG3D2_ACTD20
;;;		STA	>DATACOL+(01H*2)	;物体の左側の明るい部分
;;;		STA	>MOTOCOL+(01H*2)
;;;		LDA	!BG3D2_ACTD30
;;;		STA	>DATACOL+(02H*2)	;物体の右側の暗い部分
;;;		STA	>MOTOCOL+(02H*2)
;;;		LDA	#00000H
;;;		STA	>DATACOL+(03H*2)	;ふちどりの色
;;;		STA	>MOTOCOL+(03H*2)
;;;;
		LDA	<ENWRK2,X
;;;		CMP	BG3D2_MAX
;;;		BNE	BG3D2_ACT280
;;;		STZ	ENWRK6,X
BG3D2_ACT280	EQU	$
		STA	<ENWRK0,X
BG3D2_ACT290	EQU	$
;
		RTS
;
BG3D2_ACT300	EQU	$			;3 ウェルカム（ほほほほほ）
;
		LDA	ENTIM0,X
		BNE	BG3D2_ACT399		;まち時間オッケー？[no->BG3D2_ACT399]
;
		JSR	BG3D2ANM
;
		LDA	<ENWRK2,X
		SEC
		SBC	<ENWRK0,X
		BCC	BG3D2_ACT320		;目標値に達した？[yes->BG3D2_ACT320]
		LSR	A
		LSR	A
		BEQ	BG3D2_ACT320		;目標値に達した？[yes->BG3D2_ACT320]
		ADC	<ENWRK0,X
;
		BRA	BG3D2_ACT330
;
BG3D2_ACT320	EQU	$
		LDA	<EWORKE
		AND	#0FFF0H
		ORA	#08000H
		STA	<EWORKE
;
		LDA	<ENWRK2,X
BG3D2_ACT330	EQU	$
		STA	<ENWRK0,X
;
BG3D2_ACT399	EQU	$
;
		RTS
;
;;;BG3D2_ACTD400	EQU	$				;ファイヤーポジション
;;;		WORD	0FFE6H,0001AH
;;;BG3D2_ACTD410	EQU	$				;ファイヤースピード
;;;		WORD	0FE00H,00200H
BG3D2_ACTD400	EQU	$				;でんぐりへいほーポジション
		WORD	0FFE6H-008H,0001AH-008H
BG3D2_ACTD410	EQU	$				;でんぐりへいほースピード
		WORD	0FE00H,00200H
BG3D2_ACT400	EQU	$				;5 ファイヤー
		LDA	ENTIM1,X			;アニメーション次へ？[no->]
		BNE	BG3D2_ACT440
;
		LDA	<ENCONT,X
		BNE	BG3D2_ACT410			;ファイヤー終了？[no->BG3D2_ACT410]
;
		LDA	<EWORKE
		AND	#0FFF0H
		ORA	#08000H
		STA	<EWORKE
;
		BRA	BG3D2_ACT440
;
BG3D2_ACT410	EQU	$
		CMP	#008H
		BNE	BG3D2_ACT440			;ファイヤー？[no->BG3D2_ACT440]
;
		LDA	#077H			;ヘイホー発射サウンド
		JSL	>SOUND_3_ON		;音
;
;;;		LDA	#OBFIR				;(A) <-- 敵Ｎｏ．
;;;		JSL	>ENINSR				;敵エリア確保
;;;		BCC	BG3D2_ACT440			;     ”     ？ [no->OBAKE_FIRE_0150]
;;;;
;;;		LDA	>BG3_POLYGON_DT+00AH*4+2
;;;		CLC
;;;		ADC	ENYPSL,X
;;;		CLC
;;;		ADC	#010H
;;;		STA	ENYPSL,Y
;;;;
;;;		LDA	ENXPSL,X
;;;		SEC
;;;;		SBC	#008H
;;;;		STA	<EWORK0
;;;;
;;;		LDA	ENMUKI,X
;;;		AND	#002H
;;;		TAX
;;;		LDA	!BG3D2_ACTD400,X
;;;		CLC
;;;		ADC	<EWORK0
;;;		STA	ENXPSL,Y
;
;;;		LDA	!BG3D2_ACTD410,X
;;;		STA	ENXSPD,Y	;X speed set
;;;		LDA	#010H
;;;		STA	ENXPOW,Y	;X power set
;;;		LDA	#0200H
;;;		STA	ENTIM0,Y	;move timer set
;;;		LDA	#02H
;;;		STA	ENTIM1,Y	;pattern change timer set
;;;		LDA	#020H+040H
;;;		STA	ENTIM2,Y	;wait timer set
;
;;;		LDA	#MSHIH
;;;		JSR	>ENINSR_I
;;;;
;;;		LDA	>BG3_POLYGON_DT+00AH*4+2
;;;		CLC
;;;		ADC	ENYPSL,X
;;;		CLC
;;;		ADC	#010H
;;;		STA	ENYPSL,Y
;;;;
;;;		LDA	ENXPSL,X
;;;		STA	<EWORK0
;;;;
;;;		LDA	ENMUKI,X
;;;		AND	#002H
;;;		STA	ENMUKI,Y
;;;		TAX
;;;		LDA	!BG3D2_ACTD400,X
;;;		CLC
;;;		ADC	<EWORK0
;;;		STA	ENXPSL,Y
;;;;
;;;		LDA	!BG3D2_ACTD410,X
;;;		STA	ENXSPD,Y			;Ｘスピード
;;;		LDA	#0FD80H
;;;		STA	ENYSPD,Y			;Ｙスピード
;;;;
;;;		M8
;;;;
;;;		LDA	#000H+1
;;;		STA	ENWRKA,Y			;でんぐりヘイホーカラーセット				;
;;;		LDX	#004H
;;;		STX	<ENWRK2,Y			;なんかしらんけど固定値
;;;;
;;;		M16
;;;;
;;;		LDA	#00000H
;;;		STA	ENMUKI,Y
;
		LDA	#HEIH0
		JSL	>ENINSR
;;;		BCC	HEIH0_SET0800
		BCC	BG3D2_ACT440	;敵エリア確保ＯＫ？[no->BG3D2_ACT440]
;
		LDA	>BG3_POLYGON_DT+00AH*4+2
		CLC
		ADC	ENYPSL,X
		CLC
		ADC	#010H
		STA	ENYPSL,Y
;
		LDA	ENXPSL,X
		SEC
		SBC	#008H
		STA	<EWORK0
;
		LDA	ENMUKI,X
		AND	#002H
		STA	ENMUKI,Y
		TAX
		LDA	!BG3D2_ACTD400,X
		CLC
		ADC	<EWORK0
		STA	ENXPSL,Y
;
;;;		LDA	ENXPSL,X
;;;		STA	ENXPSL,Y
;;;		LDA	ENYPSL,X
;;;		STA	ENYPSL,Y
		LDA	!BG3D2_ACTD410,X
		STA	ENXSPD,Y			;Ｘスピード
		LDA	#0FD80H
		STA	ENYSPD,Y			;Ｙスピード
;;;		LDA	#00000
;;;		STA	ENXSPD,Y
;;;		LDA	#00000
;;;		STA	ENYSPD,Y
;;;		LDA	#00000			;向きセット
;;;		STA	ENMUKI,Y
		LDA	#00018H			;ストップタイマーセット
		STA	ENTIM0,Y
		LDA	#00004			;振り返り回数セット
		STA	ENCONT,Y
		LDA	#00001			;カラーデータセーブ
		STA	ENWRKC,Y
;
		LDX	<ENINDX
;;;		LDA	#090H
		LDA	#048H
		STA	ENTIM3,X	;次のファイヤーまでのタイマー
;
BG3D2_ACT440	EQU	$
		JSR	BG3D2ANM		;アニメーション
BG3D2_ACT480	EQU	$
		RTS
;
BG3D2ANM	EQU	$
		LDA	<EWORKE
		BPL	BG3D2_ANM010
;
		STZ	ENTIM1,X
		STZ	<ENCONT,X
;
		LDA	#08000H
		TRB	<EWORKE
;
BG3D2_ANM010	EQU	$
		CLC
		LDA	ENTIM1,X
		BNE	BG3D2_ANM090
;
		I16
;
		LDA	<EWORKE
		AND	#0000FH
		ASL	A
		TAY
		LDA	!BG3D2_ANMD00,Y
		STA	<EWORK0
		LDA	!BG3D2_ANMD10,Y
		STA	<EWORK2

		LDA	<ENCONT,X
		BNE	BG3D2_ANM020
		LDA	!BG3D2_ANMD0,Y
BG3D2_ANM020	EQU	$
		DEC	A
		STA	<ENCONT,X
		TAY
		LDA	(EWORK0),Y
		AND	#0FFH
		STA	ENTIM1,X
		LDA	(EWORK2),Y
		AND	#0FFH
		STA	ENCHPT,X
;
		I8
;
		SEC			;キャリーフラグ
BG3D2_ANM090	EQU	$
		RTS
;
BG3D2_ANMD0	EQU	$
		WORD	(BG3D2_ANMD010-BG3D2_ANMD000)
		WORD	(BG3D2_ANMD110-BG3D2_ANMD100)
		WORD	(BG3D2_ANMD210-BG3D2_ANMD200)
		WORD	(BG3D2_ANMD310-BG3D2_ANMD300)
		WORD	(BG3D2_ANMD410-BG3D2_ANMD400)
;
BG3D2_ANMD00	EQU	$
		WORD	BG3D2_ANMD000		;0 通常状態タイマー
		WORD	BG3D2_ANMD100		;1 縮む（きゃぁー）タイマー
		WORD	BG3D2_ANMD200		;2 戻る（じわじわ）
		WORD	BG3D2_ANMD300		;3 ウェルカム（ほほほほほ）
		WORD	BG3D2_ANMD400		;4 ファイヤー
BG3D2_ANMD10	EQU	$
		WORD	BG3D2_ANMD010		;0 通常状態パターン
		WORD	BG3D2_ANMD110		;1 縮む（きゃぁー）パターン
		WORD	BG3D2_ANMD210		;2 戻る（じわじわ）パターン
		WORD	BG3D2_ANMD310		;3 ウェルカム（ほほほほほ）パターン
		WORD	BG3D2_ANMD410		;4 ファイヤー
;
BG3D2_ANMD000	EQU	$			;0 通常状態タイマー
		HEX	04,08,04,08
BG3D2_ANMD010	EQU	$			;0 通常状態パターンナンバー
		HEX	08,09,08,07
;
BG3D2_ANMD100	EQU	$			;1 縮む（きゃぁー）タイマー
		HEX	40,02,04,01,01,01,01,01,02
BG3D2_ANMD110	EQU	$			;1 縮む（きゃぁー）パターン
		HEX	14,13,12,0E,0D,0C,05,06,07
;
BG3D2_ANMD200	EQU	$			;0 通常状態タイマー
		HEX	04,08,04,08
BG3D2_ANMD210	EQU	$			;0 通常状態パターンナンバー
		HEX	08,09,08,07
;
BG3D2_ANMD300	EQU	$
		HEX	40,04,03,02,02,01,01,01
BG3D2_ANMD310	EQU	$
		HEX	07,06,05,04,03,02,01,00
BG3D2_ANMD400	EQU	$
		HEX	01,01,01,01,01,01,02,10,02,01,01,01,01,01,10
BG3D2_ANMD410	EQU	$
		HEX	06,05,04,03,02,01,0A,0B,0A,02,03,04,05,06,07
;
;************************************************************************
;*		initial (ＢＧ３土管お化け３号)				*
;************************************************************************
;;;BG3D3_MIN1	EQU	0080H		;土管お化けの最初の大きさ
;;;BG3D3_MIN2	EQU	0000H		;土管お化けの大きくなってからの最小の大きさ
;;;BG3D3_MAX	EQU	0100H
;
BG3D3IN		EQU	$
		RTL
;;;		LDA	#BG3D3_MIN1
;;;		STA	<ENWRK0,X	;初期モーフィング率セット
;;;		LDA	#BG3D3_MAX
;;;		STA	<ENWRK2,X	;目標値リセット
;;;;
;;;		LDA	#00003H
;;;		STA	ENWRKC,X
;;;;
;;;		LDA	#030H
;;;		STA	ENTIM0,X
;;;;
;;;		LDA	#008H
;;;		STA	<ENCONT,X
;;;;
;;;		RTL
;
;************************************************************************
;*		move    (ＢＧ３土管お化け３号)				*
;************************************************************************
;<ENWRK0,X : モーフィング率
;<ENWRK2,X : 目標値
;<ENWRK4,X : フレーム毎変化量
; ENWRK6,X : 食らった玉数（未使用）
; ENWRK8,X : 
; ENWRKA,X :
; ENWRKC,X : 各種フラグなど()
;  bit15 : アニメーション初期化フラグ。1=初期化
;  bit14 : お化け表示フラグ 1=表示
;  bit13 : 死亡フラグ。1=死亡
;  bit12 :
;--
;  bit11 : 卵当てられたフラグ1=当てられた。
;  bit10 : 
;  bit9  : 顔オブジェ表示フラグ 1=表示
;  bit8  :
;--
;  bit7  : 
;  bit6  : 
;  bit5  : 
;  bit4  :
;--
;  bit3  :
;  bit2  :
;  bit1  :
;  bit0  :
;<EWORK6:7 : ポリゴン点数
;<EWORKC:D : おばけ番号
;<EWORKE:F : EWORKCと同じ
BG3D3MV		EQU	$
		RTL
;
;;;		LDA	#004H
;;;		TRB	SUBSEL
;;;		LDA	#00400H
;;;		TRB	<EWORKE
;;;;
;;;		LDA	ENWRKC,X
;;;		STA	<EWORKE			;フラグの読み出し
;;;		BIT	#02000H
;;;		BNE	BG3D3_MV060		;死亡中？[yes->BG3D3_MV990]
;;;;
;;;		LDA	#001H
;;;		STA	<EWORKC			;お化け番号セット
;;;;
;;;		JSR	BG3DPSET
;;;		JSR	BG3DDSP
;;;BG3D3_MV060	EQU	$
;;;		JSR	BG3D3OSET		;オブジェセット
;;;;
;;;		LDA	<EWORKE
;;;		STA	ENWRKC,X
;;;;
;;;		JSL	>ENMDCK			;モードチェック
;;;;
;;;		LDA	ENWRKC,X
;;;		STA	<EWORKE			;フラグの再読み出し
;;;;
;;;		LDA	ENDSXL,X
;;;		CLC
;;;		ADC	#090H
;;;		CMP	#0100H+(090H*2)
;;;		BCS	BG3D3_MV040
;;;;
;;;		LDA	ENDSYL,X
;;;		CLC
;;;		ADC	#0100H
;;;		CMP	#0100H+0100H+100H
;;;		BCC	BG3D3_MV050
;;;;
;;;BG3D3_MV040	EQU	$
;;;		JSL	>ENCLEAR		;範囲外消去
;;;;
;;;		BRA	BG3D3_MV900
;;;;
;;;BG3D3_MV050	EQU	$
;;;		LDA	<EWORKE
;;;		BIT	#02000H
;;;		BNE	BG3D3_MV900		;死亡中？[yes->BG3D3_MV990]
;;;;;;		STA	ENWRKC,X		;フラグの書き戻し
;;;;
;;;;;;		LDA	<EWORKE
;;;		BIT	#00400H
;;;		BEQ	BG3D3_MV100		;表示されてる？[no->BG3D3_MV100]
;;;;
;;;		JSR	BG3KTPCK		;プレイヤー、赤ちゃん、卵、当たりチェック（注意き○たまと共用のルーチン）
;;;BG3D3_MV100	EQU	$
;;;		JSR	BG3D3ACT
;;;;
;;;BG3D3_MV900	EQU	$
;;;		LDX	<ENINDX
;;;		LDA	<EWORKE
;;;		STA	ENWRKC,X
;;;;
;;;		RTL
;;;;
;>>>>>>>>>>
;function
; 土管お化け２号＆３号ポイントセット
;name
; BG3DPSET
;entry
; <EWORKC:D : お化けの番号[２号=0,３号=1]
;return
;<<<<<<<<<<
BG3DPSET_D1	EQU	$			;ポイントアドレスのアドレス
		WORD	BG3DPSET_D10		;お化け２号
;;;		WORD	BG3DPSET_D11		;お化け３号
;
BG3DPSET_D10	EQU	$
		WORD	BG3DPSET_D100		;パターン０（点）
		WORD	BG3DPSET_D101		;パターン１（普通の大きさ）
;
;;;BG3DPSET_D11	EQU	$
;;;		WORD	BG3DPSET_D110		;パターン０（点）
;;;		WORD	BG3DPSET_D111		;パターン１（普通の大きさ）
;
;
BG3DPSET_D0	EQU	$			;ポイント数
		BYTE	014H			;お化け２号
		BYTE	00EH			;お化け３号
;
;file <dokanobakeII.CH7>
;screen no.<0>
;point kazu <014H>
;xmag=[000.00]
;ymag=[000.00]
;turn sw off
BG3DPSET_D100	EQU	$
		BYTE	000H,000H, 000H,000H, 000H,000H, 000H,000H
		BYTE	000H,000H, 000H,000H, 000H,000H, 000H,000H
		BYTE	000H,000H, 000H,000H, 000H,000H, 000H,000H
		BYTE	000H,000H, 000H,000H, 000H,000H, 000H,000H
		BYTE	000H,000H, 000H,000H, 000H,000H, 000H,000H
;
;file <dokanobakeII.CH7>
;screen no.<0>
;point kazu <014H>
;xmag=[001.00]
;ymag=[001.00]
;turn sw off
BG3DPSET_D101	EQU	$
		BYTE	000H,000H, 0C8H,000H, 0C5H,0FFH, 0C4H,0FEH
		BYTE	0C3H,0FAH, 0C5H,0D9H, 0C9H,0C1H, 0D1H,0A9H
		BYTE	0D8H,0A1H, 0E0H,09DH, 000H,099H, 021H,09DH
		BYTE	029H,0A1H, 030H,0A9H, 038H,0C1H, 03CH,0D9H
		BYTE	03EH,0FAH, 03DH,0FEH, 03CH,0FFH, 039H,000H
;
;;;;file <dokanobakeIII.CH7>
;;;;screen no.<0>
;;;;point kazu <00eH>
;;;;xmag=[000.00]
;;;;ymag=[000.00]
;;;;turn sw off
;;;BG3DPSET_D110	EQU	$
;;;		BYTE	000H,000H, 000H,000H, 000H,000H, 000H,000H
;;;		BYTE	000H,000H, 000H,000H, 000H,000H, 000H,000H
;;;		BYTE	000H,000H, 000H,000H, 000H,000H, 000H,000H
;;;		BYTE	000H,000H, 000H,000H
;;;;
;;;;file <dokanobakeIII.CH7>
;;;;screen no.<0>
;;;;point kazu <00eH>
;;;;xmag=[001.00]
;;;;ymag=[001.00]
;;;;turn sw off
;;;BG3DPSET_D111	EQU	$
;;;		BYTE	000H,000H, 0F2H,000H, 0F1H,0FEH, 0F0H,0FBH
;;;		BYTE	0F2H,0E9H, 0F5H,0E5H, 0FCH,0E2H, 000H,0E1H
;;;		BYTE	003H,0E2H, 00AH,0E5H, 00DH,0E9H, 00FH,0FBH
;;;		BYTE	00EH,0FEH, 00DH,000H
;
BG3DPSET	EQU	$
		LDY	<EWORKC
		LDA	!BG3DPSET_D0,Y
		AND	#0FFH
		STA	<EWORK6			;ポイント数取得
		TYA
		ASL	A
		TAY
		LDA	!BG3DPSET_D1,Y
		STA	<EWORK0
		LDY	#000H			;モーフィング元
		LDA	(EWORK0),Y
		STA	<EWORK2
		LDY	#002H			;モーフィング先
		LDA	(EWORK0),Y
		STA	<EWORK4
;
		LDA	<EWORK6
		DEC	A
		ASL	A
		TAY
BG3D_PSET010	EQU	$
		TYA
		ASL	A
		TAX
;;;		LDA	!BG3D_PD01,Y
;;;		LDA	(EWORK2),Y
;;;		AND	#0FFH
;;;		CMP	#080H
;;;		BCC	BG3D_PSET012
;;;		ORA	#0FF00H
BG3D_PSET012	EQU	$
		LDA	#000H
		STA	>MORP_S_POINT,X			;モーフィング元データＸ座標セット
;;;		LDA	!BG3D2_PD01,Y
;;;		LDA	(EWORK2),Y
;;;		AND	#0FF00H
;;;		BPL	BG3D_PSET014
;;;		ORA	#000FFH
BG3D_PSET014	EQU	$
;;;		XBA
		LDA	#000H
		STA	>MORP_S_POINT+2,X		;モーフィング元データＹ座標セット
;
;;;		LDA	!BG3D2_PD00,Y
;;;		LDA	(EWORK4),Y
		LDA	!BG3DPSET_D101,Y
		AND	#0FFH
		CMP	#080H
		BCC	BG3D_PSET022
		ORA	#0FF00H
BG3D_PSET022	EQU	$
		STA	>MORP_D_POINT,X			;モーフィング先データＸ座標セット
;;;		LDA	!BG3D2_PD00,Y
;;;		LDA	(EWORK4),Y
		LDA	!BG3DPSET_D101,Y
		AND	#0FF00H
		BPL	BG3D_PSET024
		ORA	#000FFH
BG3D_PSET024	EQU	$
		XBA
		STA	>MORP_D_POINT+2,X		;モーフィング先データＹ座標セット
		DEY
;;;		DEY
		BPL	BG3D_PSET010
;
		LDX	<ENINDX
;		
		RTS
;
;>>>>>>>>>>
;function
; 土管お化け２号＆３号表示
;name
; BG3DDSP
;entry
;<EWORK6:7 : ポイント数セット
;<EWORKE:F : 各種フラグ（詳細はトップヘッダーを参照）
;return
;<<<<<<<<<<
BG3DDSP		EQU	$
;
		LDA	#004H
		TRB	SUBSEL
		LDA	#00400H
		TRB	<EWORKE
;
		LDA	ENDSXL,X
		CLC
		ADC	#080H
		CMP	#200H
		BCS	BG3D_DSP800
;
		LDA	ENDSYL,X
		CLC
		ADC	#080H
		CMP	#200H
		BCS	BG3D_DSP800
;
		LDA	ENDSXL,X
		STA	CREG0
		LDA	ENDSYL,X
		STA	CREG1
		LDA	#MORP_S_POINT		;モーフィング元データアドレスセット
		STA	R1
		LDA	#MORP_D_POINT		;モーフィング先データアドレスセット
		STA	R2
		LDA	<EWORK6
		STA	R3			;ＢＧ３ポイント数セット
		STZ	R4			;モーフィング中心ポイント番号セット
		LDA	#BG3_POLYGON_DT
		STA	R5			;モーフィングデータ出力アドレス
		LDA	<ENWRK0,X
		AND	#003FFH
		STA	R6			;モーフィング倍率
		LDA	#00000H
		STA	CREG15			;チェック無し
;
		M_CHIP	BG_MORPHING_AW
;
		JSL	>M_DMA_BFST
		LWORD	HDMABUF			;to address set
		LWORD	HDMABF			;from address set
		WORD	0D2H*2*2		;number of byte set
;
;--------------< config. set >-------------------
		MI8				;メモリ８ビットモード＆インデックス１６ビットモード
;
;;;		LDA	#013H
;;;		STA	MANSEL
		LDA	#004H
		TSB	SUBSEL
		LDA	#002H
		TSB	WIND30
		LDA	#063H
		STA	SUBADF
		LDA	#00011000B
		TSB	HD420C
;
		M16				;メモリ１６ビットモード
;
		LDA	#00400H
		TSB	<EWORKE
;
BG3D_DSP800	EQU	$
BG3D_DSP900	EQU	$
		LDX	<ENINDX
;
		RTS
;
;>>>>>>>>>>
;function
; 土管お化け３号オブジェセット
;name
;<<<<<<<<<<
;;BG3D3_OSETD000	EQU	$
;;		HEX	00,00,00,00,00
;;;BG3D3_OSETD010	EQU	$
;;;		WORD	0080H		;0 通常状態
;;;		WORD	0080H		;1 縮む（きゃぁー）
;;;		WORD	0080H		;2 戻る（じわじわ）
;;;		WORD	0000H		;3 ウェルカム（ほほほほほ）
;;;		WORD	0080H		;4 ファイヤー
;;;;
;;;BG3D3OSET	EQU	$
;;;		LDA	ENCHPT,X
;;;		CMP	#014H+1
;;;		BCS	BG3D3_OSET100
;;;;
;;;		LDA	<EWORKE
;;;		BIT	#02000H
;;;		BNE	BG3D3_OSET100			;死亡中？[yes->BG3D3_OSET100]
;;;		AND	#0000FH
;;;		ASL	A
;;;		TAY
;;;		LDA	<ENWRK0,X
;;;		CMP	!BG3D3_OSETD010,Y
;;;		BCC	BG3D3_OSET100			;表示する？[no->BG3D3_OSET100]
;;;;
;;;BG3D3_OSET000	EQU	$
;;;		CPY	#001H*2
;;;		BNE	BG3D3_OSET005
;;;;
;;;		LDA	<EWORKE
;;;		BIT	#00200H
;;;		BEQ	BG3D3_OSET100
;;;;
;;;BG3D3_OSET005	EQU	$
;;;		I16
;;;;
;;;		LDA	#0FFF8H
;;;		STA	<EWORK0				;中心座標Ｘ
;;;		LDA	>BG3_POLYGON_DT+007H*4+2
;;;		CLC
;;;		ADC	#004H
;;;		STA	<EWORK2				;中心座標Ｙ
;;;;
;;;		LDY	ENOAML,X
;;;		LDX	#0000CH
;;;BG3D3_OSET010	EQU	$
;;;		LDA	SOAM_DX,Y
;;;		CLC
;;;		ADC	<EWORK0
;;;		STA	SOAM_DX,Y
;;;		LDA	SOAM_DX+2,Y
;;;		CLC
;;;		ADC	<EWORK2
;;;		STA	SOAM_DX+2,Y
;;;		TYA
;;;		CLC
;;;		ADC	#008H
;;;		TAY
;;;		DEX
;;;		BNE	BG3D3_OSET010
;;;;
;;;		I8
;;;;
;;;		LDA	#0200H
;;;		TSB	<EWORKE
;;;;
;;;		LDX	<ENINDX
;;;;
;;;		RTS
;;;;
;;;BG3D3_OSET100	EQU	$
;;;		I16
;;;;
;;;		LDY	ENOAML,X
;;;		LDX	#0000CH
;;;BG3D3_OSET110	EQU	$
;;;		LDA	#000E8H
;;;		STA	SOAM_DX+2,Y
;;;		TYA
;;;		CLC
;;;		ADC	#008H
;;;		TAY
;;;		DEX
;;;		BNE	BG3D3_OSET110
;;;;
;;;		I8
;;;;
;;;		LDA	#00200H
;;;		TRB	<EWORKE			;オブジェ表示ビットオン
;;;;
;;;		LDX	<ENINDX
;;;;
;;;		RTS
;
;>>>>>>>>>>
;function
;name
; BG3D3ACT
;entry
;return
;<<<<<<<<<<
;;MODORI_TIM0	EQU	080H			;初期の戻り時間
;;MODORI_TIM1	EQU	008H			;２回目以降の戻り時間
;
;;;BG3D3ACT	EQU	$
;;;		JSR	BG3D3_ACTSTAY		;常に行う処理
;;;;
;;;		LDA	<EWORKE
;;;		AND	#0000FH
;;;		ASL	A
;;;		TAY
;;;		LDA	!BG3D3_ACTD00,Y
;;;		STA	<EWORK0
;;;		PER	2
;;;		JMP	(EWORK0)
;;;;
;;;		LDX	<ENINDX
;;;;
;;;		RTS
;;;;
;;;BG3D3_ACTD00	EQU	$
;;;		WORD	BG3D3_ACT000		;0 通常状態
;;;		WORD	BG3D3_ACT100		;1 縮む（きゃぁー）
;;;		WORD	BG3D3_ACT200		;2 戻る（じわじわ）
;;;		WORD	BG3D3_ACT300		;3 ウェルカム（ほほほほほ）
;;;		WORD	BG3D3_ACT400		;4 ファイヤー
;;;;
;;;BG3D3_ACTD10	EQU	$			;向きの設定値
;;;		HEX	00,02
;;;;
;;;BG3D3_ACTSTAY	EQU	$			;常に行う処理
;;;		LDY	#001H
;;;		LDA	PLXPSL
;;;		SEC
;;;		SBC	ENXPSL,X
;;;		BPL	BG3D3_ACTS005
;;;		LDY	#0
;;;BG3D3_ACTS005	EQU	$
;;;		LDA	!BG3D3_ACTD10,Y
;;;		AND	#0FFH
;;;		STA	ENMUKI,X
;;;;
;;;		LDA	<EWORKE
;;;		BIT	#00800H
;;;		BEQ	BG3D3_ACTS080		;卵あてられた？[no->BG3D3_ACTS080]
;;;;
;;;BG3D3_ACTS008	EQU	$
;;;;
;;;		LDA	#079H			;BONBONシリーズやられ音
;;;		JSL	>SOUND_3_ON		;音
;;;;
;;;		LDA	<ENWRK0,X
;;;		SEC
;;;		SBC	#080H
;;;		CMP	#BG3D3_MIN2
;;;		BPL	BG3D3_ACTS010
;;;		LDA	#BG3D3_MIN2
;;;BG3D3_ACTS010	EQU	$
;;;		STA	<ENWRK2,X
;;;;
;;;		LDA	#00008H
;;;		STA	<ENWRK4,X		;フレーム毎変化量
;;;;
;;;		LDA	<EWORKE
;;;		AND	#0F7F0H
;;;		ORA	#08001H		
;;;		STA	<EWORKE			;縮み中フラグオン
;;;;
;;;BG3D3_ACTS080	EQU	$
;;;		RTS
;;;;
;;;BG3D3_ACT000	EQU	$
;;;;
;;;		LDA	<ENWRK0,X
;;;		CMP	#BG3D3_MAX
;;;		BCS	BG3D3_ACT080		;最大大きさ以下？（戻りあり？）[no->BG3D3_ACT080]
;;;;
;;;		LDA	ENTIM0,X
;;;		BEQ	BG3D3_ACT005		;戻ってもいい？[yes->BG3D3_ACT005]
;;;;
;;;		RTS
;;;;
;;;BG3D3_ACT005	EQU	$
;;;		JSL	>RANDAM
;;;		LDA	<RANDM0	
;;;		BIT	#0F800H
;;;		BNE	BG3D3_ACT080		;戻る？[no->BG3D3_ACT080]
;;;;
;;;		AND	#03H
;;;		ASL	A
;;;		ASL	A
;;;		CLC
;;;		ADC	#010H
;;;		CLC
;;;		ADC	<ENWRK0,X
;;;		CMP	#BG3D3_MAX
;;;		BCC	BG3D3_ACT060
;;;		LDA	#BG3D3_MAX
;;;BG3D3_ACT060	EQU	$
;;;		STA	<ENWRK2,X
;;;;
;;;		LDA	<EWORKE
;;;		AND	#0FFF0H
;;;		ORA	#08002H
;;;		STA	<EWORKE			;戻り制御番号セット
;;;;
;;;BG3D3_ACT080	EQU	$
;;;		LDA	ENTIM3,X
;;;		BNE	BG3D3_ACT085			;ファイヤーウエイトＯＫ？[yes->BG3D3_ACT085]
;;;;
;;;		LDA	<ENWRK0,X
;;;		CMP	#080H
;;;		BCC	BG3D3_ACT085			;モーフィング率ＯＫ？[no->BG3D3_ACT085]
;;;;
;;;		LDA	#MSHIH
;;;		STA	R4
;;;		INC	A
;;;		STA	R5
;;;		M_CHIP	TARGET_COUNTER
;;;		LDA	R6
;;;		CMP	#003H				;でんぐりへいほー３個未満？[no->BG3D3_ACT085]
;;;		BCS	BG3D3_ACT085
;;;		STA	<EWORK0
;;;;
;;;		M_CHIP	EGGSEARCH
;;;		LDA	R6
;;;		CLC
;;;		ADC	<EWORK0
;;;		CMP	#006H				;タマゴ規定値６個未満？[no->BG3D3_ACT085]
;;;		BCS	BG3D3_ACT085
;;;;
;;;		JSL	>RANDAM
;;;		LDA	<RANDM0
;;;		BIT	#0007H
;;;		BNE	BG3D3_ACT085
;;;;
;;;		LDA	<EWORKE
;;;		AND	#0FFF0H
;;;		ORA	#08004H
;;;		STA	<EWORKE			;ファイヤーセット
;;;;
;;;BG3D3_ACT085	EQU	$
;;;		LDX	<ENINDX
;;;		JSR	BG3D3ANM
;;;;
;;;BG3D3_ACT090	EQU	$
;;;		RTS
;;;;
;;;BG3D3_ACT100	EQU	$			;1 縮む（きゃぁー）
;;;		JSR	BG3D3ANM
;;;;
;;;		LDA	<ENWRK4,X
;;;		SEC
;;;		SBC	#001H
;;;		STA	<ENWRK4,X
;;;;
;;;		LDA	<ENWRK0,X
;;;		CLC
;;;		ADC	<ENWRK4,X
;;;		CMP	<ENWRK2,X	
;;;		BPL	BG3D3_ACT110		;目標値到達？[no->BG3D3_ACT110]
;;;;
;;;		LDA	#MODORI_TIM0
;;;		STA	ENTIM0,X		;戻りまでの余裕時間
;;;;
;;;		LDA	<EWORKE
;;;		AND	#0FFF0H
;;;		ORA	#08000H
;;;		STA	<EWORKE			;ノーマルモードへ
;;;;
;;;		LDA	#MODORI_TIM0
;;;		STA	ENTIM0,X		;戻りまでの余裕時間
;;;;
;;;		LDA	<ENWRK2,X
;;;		BNE	BG3D3_ACT110		;死亡？[no->BG3D3_ACT110]
;;;;
;;;		LDA	#02000H
;;;		TSB	<EWORKE
;;;;
;;;		LDA	<ENWRK2,X
;;;BG3D3_ACT110	EQU	$
;;;		STA	<ENWRK0,X
;;;;
;;;BG3D3_ACT190	EQU	$
;;;;
;;;		RTS
;;;;
;;;BG3D3_ACT200	EQU	$			;2 戻る（じわじわ）
;;;		JSR	BG3D3ANM
;;;;
;;;		LDA	<ENWRK0,X
;;;		CLC
;;;		ADC	#002H
;;;		CMP	<ENWRK2,X
;;;		BCC	BG3D3_ACT280		;戻りきった？[no->BG3D3_ACT280]
;;;;
;;;		LDA	<EWORKE
;;;		AND	#0FFF0H
;;;		ORA	#08000H
;;;		STA	<EWORKE
;;;;
;;;		LDA	<ENWRK2,X
;;;BG3D3_ACT280	EQU	$
;;;		STA	<ENWRK0,X
;;;BG3D3_ACT290	EQU	$
;;;;
;;;		RTS
;;;;
;;;BG3D3_ACT300	EQU	$			;3 ウェルカム（ほほほほほ）
;;;;
;;;		LDA	ENTIM0,X
;;;		BNE	BG3D3_ACT399		;まち時間オッケー？[no->BG3D3_ACT399]
;;;;
;;;		JSR	BG3D3ANM
;;;;
;;;		LDA	<ENWRK2,X
;;;		SEC
;;;		SBC	<ENWRK0,X
;;;		BCC	BG3D3_ACT320		;目標値に達した？[yes->BG3D3_ACT320]
;;;		LSR	A
;;;		LSR	A
;;;		BEQ	BG3D3_ACT320		;目標値に達した？[yes->BG3D3_ACT320]
;;;		ADC	<ENWRK0,X
;;;;
;;;		BRA	BG3D3_ACT330
;;;;
;;;BG3D3_ACT320	EQU	$
;;;		LDA	<EWORKE
;;;		AND	#0FFF0H
;;;		ORA	#08000H
;;;		STA	<EWORKE
;;;;
;;;		LDA	<ENWRK2,X
;;;BG3D3_ACT330	EQU	$
;;;		STA	<ENWRK0,X
;;;;
;;;BG3D3_ACT399	EQU	$
;;;;
;;;		RTS
;;;;
;;;BG3D3_ACTD400	EQU	$				;でんぐりへいほーポジション
;;;		WORD	0FFECH-008H,00014H-008H
;;;BG3D3_ACTD410	EQU	$				;でんぐりへいほースピード
;;;		WORD	0FE00H,00200H
;;;BG3D3_ACT400	EQU	$				;5 ファイヤー
;;;		LDA	ENTIM1,X			;アニメーション次へ？[no->]
;;;		BNE	BG3D3_ACT440
;;;;
;;;		LDA	<ENCONT,X
;;;		BNE	BG3D3_ACT410			;ファイヤー終了？[no->BG3D3_ACT410]
;;;;
;;;		LDA	<EWORKE
;;;		AND	#0FFF0H
;;;		ORA	#08000H
;;;		STA	<EWORKE
;;;;
;;;		BRA	BG3D3_ACT440
;;;;
;;;BG3D3_ACT410	EQU	$
;;;		CMP	#008H
;;;		BNE	BG3D3_ACT440			;ファイヤー？[no->BG3D3_ACT440]
;;;;
;;;		LDA	#077H			;ヘイホー発射サウンド
;;;		JSL	>SOUND_3_ON		;音
;;;;
;;;		LDA	#MSHIH
;;;		JSR	>ENINSR_I
;;;;
;;;		LDA	>BG3_POLYGON_DT+00AH*4+2
;;;		CLC
;;;		ADC	ENYPSL,X
;;;		CLC
;;;		ADC	#004H
;;;		STA	ENYPSL,Y
;;;;
;;;		LDA	ENXPSL,X
;;;		STA	<EWORK0
;;;;
;;;		LDA	ENMUKI,X
;;;		AND	#002H
;;;		STA	ENMUKI,Y
;;;		TAX
;;;		LDA	!BG3D3_ACTD400,X
;;;		CLC
;;;		ADC	<EWORK0
;;;;;;		SEC
;;;;;;		SBC	#008H
;;;		STA	ENXPSL,Y
;;;;
;;;		LDA	!BG3D3_ACTD410,X
;;;		STA	ENXSPD,Y			;Ｘスピード
;;;		LDA	#0FD80H
;;;		STA	ENYSPD,Y			;Ｙスピード
;;;;
;;;		M8
;;;;
;;;		LDA	#000H+1
;;;		STA	ENWRKA,Y			;でんぐりヘイホーカラーセット
;;;;
;;;		LDX	#004H
;;;		STX	<ENWRK2,Y			;なんかしらんけど固定値
;;;;
;;;		M16
;;;;
;;;;;		LDA	#00000H
;;;;;		STA	ENMUKI,Y
;;;;
;;;		LDX	<ENINDX
;;;;;;		LDA	#090H
;;;		LDA	#048H
;;;		STA	ENTIM3,X	;次のファイヤーまでのタイマー
;;;;
;;;BG3D3_ACT440	EQU	$
;;;		JSR	BG3D3ANM		;アニメーション
;;;BG3D3_ACT480	EQU	$
;;;		RTS
;;;;
;;;BG3D3ANM	EQU	$
;;;		LDA	<EWORKE
;;;		BPL	BG3D3_ANM010
;;;;
;;;		STZ	ENTIM1,X
;;;		STZ	<ENCONT,X
;;;;
;;;		LDA	#08000H
;;;		TRB	<EWORKE
;;;;
;;;BG3D3_ANM010	EQU	$
;;;		CLC
;;;		LDA	ENTIM1,X
;;;		BNE	BG3D3_ANM090
;;;;
;;;		I16
;;;;
;;;		LDA	<EWORKE
;;;		AND	#0000FH
;;;		ASL	A
;;;		TAY
;;;		LDA	!BG3D3_ANMD00,Y
;;;		STA	<EWORK0
;;;		LDA	!BG3D3_ANMD10,Y
;;;		STA	<EWORK2
;;;
;;;		LDA	<ENCONT,X
;;;		BNE	BG3D3_ANM020
;;;		LDA	!BG3D3_ANMD0,Y
;;;BG3D3_ANM020	EQU	$
;;;		DEC	A
;;;		STA	<ENCONT,X
;;;		TAY
;;;		LDA	(EWORK0),Y
;;;		AND	#0FFH
;;;		STA	ENTIM1,X
;;;		LDA	(EWORK2),Y
;;;		AND	#0FFH
;;;		STA	ENCHPT,X
;;;;
;;;		I8
;;;;
;;;		SEC			;キャリーフラグ
;;;BG3D3_ANM090	EQU	$
;;;		RTS
;;;;
;;;BG3D3_ANMD0	EQU	$
;;;		WORD	(BG3D3_ANMD010-BG3D3_ANMD000)
;;;		WORD	(BG3D3_ANMD110-BG3D3_ANMD100)
;;;		WORD	(BG3D3_ANMD210-BG3D3_ANMD200)
;;;		WORD	(BG3D3_ANMD310-BG3D3_ANMD300)
;;;		WORD	(BG3D3_ANMD410-BG3D3_ANMD400)
;;;;
;;;BG3D3_ANMD00	EQU	$
;;;		WORD	BG3D3_ANMD000		;0 通常状態タイマー
;;;		WORD	BG3D3_ANMD100		;1 縮む（きゃぁー）タイマー
;;;		WORD	BG3D3_ANMD200		;2 戻る（じわじわ）
;;;		WORD	BG3D3_ANMD300		;3 ウェルカム（ほほほほほ）
;;;		WORD	BG3D3_ANMD400		;4ファイヤー
;;;BG3D3_ANMD10	EQU	$
;;;		WORD	BG3D3_ANMD010		;0 通常状態パターン
;;;		WORD	BG3D3_ANMD110		;1 縮む（きゃぁー）パターン
;;;		WORD	BG3D3_ANMD210		;2 戻る（じわじわ）パターン
;;;		WORD	BG3D3_ANMD310		;3 ウェルカム（ほほほほほ）パターン
;;;		WORD	BG3D3_ANMD410		;4 ファイヤー
;;;;
;;;BG3D3_ANMD000	EQU	$			;0 通常状態タイマー
;;;		HEX	04,08,04,08
;;;BG3D3_ANMD010	EQU	$			;0 通常状態パターンナンバー
;;;		HEX	08,09,08,07
;;;;
;;;BG3D3_ANMD100	EQU	$			;1 縮む（きゃぁー）タイマー
;;;		HEX	40,02,04,01,01,01,01,01,02
;;;BG3D3_ANMD110	EQU	$			;1 縮む（きゃぁー）パターン
;;;		HEX	14,13,12,0E,0D,0C,05,06,07
;;;;
;;;BG3D3_ANMD200	EQU	$			;0 通常状態タイマー
;;;		HEX	04,08,04,08
;;;BG3D3_ANMD210	EQU	$			;0 通常状態パターンナンバー
;;;		HEX	08,09,08,07
;;;;
;;;BG3D3_ANMD300	EQU	$
;;;		HEX	40,04,03,02,02,01,01,01
;;;BG3D3_ANMD310	EQU	$
;;;		HEX	07,06,05,04,03,02,01,00
;;;BG3D3_ANMD400	EQU	$
;;;		HEX	01,01,01,01,01,01,02,10,02,01,01,01,01,01,10
;;;BG3D3_ANMD410	EQU	$
;;;		HEX	06,05,04,03,02,01,0A,0B,0A,02,03,04,05,06,07
;;;;
;************************************************************************
;*		initial (ＢＧ３ウンババリフト)				*
;************************************************************************
;
BG3UL_MIN	EQU	040H		;初期値の高さ
;
BG3ULIN		EQU	$
;
		LDA	#00100H
		STA	<ENWRK0,X		;モーフィング元＆先セット
;
		LDA	#BG3UL_MIN
		STA	<ENWRK2,X		;初期モーフィング倍率セット
		STA	ENWRKA,X		;初期モーフィング倍率セット
;
		STZ	ENWRK4,X
;;;		STZ	ENWRK6,X
		STZ	<ENCONT,X
		LDA	#08000H
		STA	ENWRKC,X		;フラグリセット
;
		RTL
;
;************************************************************************
;*		move    (ＢＧ３ウンババリフト)				*
;************************************************************************
;<ENWRK0:1 : i/o モーフィング元＆先ナンバー
;<ENWRK2:3 : i/o モーフィング倍率
;<ENWRK4:5 : i/o アクションナンバー＆フラグ
; ENWRK6:7 : 前フレーム()
; ENWRK8:9 : フレーム
; ENWRKA:B : 次フレームモーフィングパターン値
; ENWRKC:D : 各種フラグ
;  bit 15 : アクションパターン初期化フラグ 初期化=1
;  bit 14 : 次フレーム初期化フラグ 初期化=1
;  bit 13 : 
;  bit 12 : 
;---
;  bit 11 : 
;  bit 10 : 
;  bit 09 : 
;  bit 08 : 
;---
;  bit 07 : 
;  bit 06 : 
;  bit 05 : 
;  bit 04 : 
;---
;  bit 03 : 
;  bit 02 : 目パチパチ処理用フラグ 目パチパチ中=1
;  bit 01 : ＢＧ当たりフラグ 当たり=1
;  bit 00 : 動き用フラグ 動く=1
;---
;
BG3ULMV		EQU	$
;
		LDA	ENWRKC,X
		STA	<EWORKE
;
		JSR	BG3ULBCK		;リフトＢＧチェック
		JSR	BG3ULACT		;リフトウンババうごき
		JSR	BG3ULSET		;リフトウンババ表示
;
		JSR	BG3ULNFRM		;ウンババリフト次フレーム位置算出
		JSR	BG3ULOSET		;ウンババリフトＯＡＭセット
;
		LDA	<EWORKE
		STA	ENWRKC,X
;
		JSL	>ENMDCK			;リフトウンババ
;
		LDA	ENWRKC,X
		STA	<EWORKE
;
;;;		LDA	ENDSXL,X
;;;		CLC
;;;		ADC	#028H	
;;;		CMP	#028H+100H+028H
;;;		BCS	BG3UL_MV040
;
;;		LDA	ENDSYL,X
;;		CLC
;;		ADC	#080H
;;		CMP	#080H+100H+080H
;;		BCC	BG3UL_MV050
;
;;;		LDY	#011H
;;;		STY	MANSEL
;;;		LDY	#002H
;;;		STY	SUBSEL
;;;		LDY	#020H
;;;		STY	SUBADF
;
BG3UL_MV040	EQU	$
;;		JSL	>ENCLEAR
;;		BRA	BG3UL_MV900
;
BG3UL_MV050	EQU	$
		LDA	ENWRKA,X
		STA	<ENWRK2,X
;
;;;		JSR	BG3ULCHK		;プレイヤー当たり判定
		JSR	BG3ULPCK
;
BG3UL_MV900	EQU	$
		LDX	<ENINDX
		LDA	<EWORKE
		STA	ENWRKC,X
;
		RTL
;
;>>>>>>>>>>
;function
; リフトウンババ表示
;name
; BG3ULBCK
;entry
;return
;work
;<<<<<<<<<<
BG3ULBCK_PNT	EQU	(010H) 		;ＢＧチェック用ポイント
;
BG3ULBCK	EQU	$
;
		LDA	>BG3_POLYGON_DT+(BG3ULBCK_PNT-1)*4
		CLC
		ADC	ENXPSL,X
		STA	R8
		LDA	>BG3_POLYGON_DT+(BG3ULBCK_PNT-1)*4+2
		CLC
		ADC	ENYPSL,X
		STA	R0
;
		M_CHIPR M_BGUNIT_READ		;
;
		LDX	<ENINDX
		LDA	R5
		BEQ	BG3UL_BCK800		;ＢＧに当たった？[no->BG3UL_BCK800]
;
		LDA	#00002H
		TSB	<EWORKE
BG3UL_BCK800	EQU	$
		RTS
;>>>>>>>>>>
;function
; リフトウンババ表示
;name
; BG3ULSET
;entry
; <ENWRK0:1  : モーフィング番号
;   highbyte = モーフィング先パターン
;   low byte = モーフィング元パターン
; <ENWRK2:3  : モーフィング倍率(0100H=100%)
; ENXDSL
; ENYDSL
;return
;work
;<<<<<<<<<<
BG3UL_PNT_NO	EQU	010H
;
BG3ULSET	EQU	$
;
		LDA	ENDSXL,X
		CLC
		ADC	#028H	
		CMP	#028H+100H+028H
		BCC	BG3UL_SET050
;
;;		LDA	ENDSYL,X
;;		CLC
;;		ADC	#080H
;;		CMP	#080H+100H+080H
;;		BCC	BG3UL_MV050
;
		LDY	#011H
		STY	MANSEL
		LDY	#002H
		STY	SUBSEL
		LDY	#020H
		STY	SUBADF
;
		RTS
;
BG3UL_SET050
		LDA	#BANK BG3UL_SET_D000
		STA	R0
		LDA	<ENWRK0,X
		AND	#000FFH
		ASL	A
		TAY
		LDA	!BG3UL_SET_D00,Y
		STA	R1				;モーフィング元アドレスセット
		LDA	<ENWRK0,X
		XBA
		AND	#000FFH
		ASL	A
		TAY
		LDA	!BG3UL_SET_D00,Y
		STA	R2				;モーフィング先アドレスセット
		LDA	#BG3UL_PNT_NO
		STA	R3				;ポイント数セット
		LDA	#00000H
		STA	R4				;中心ポイント番号セット
		LDA	#BG3_POLYGON_DT
		STA	R5				;ポリゴンデータ出力アドレス
		LDA	<ENWRK2,X
		STA	R6				;モーフィングパーセント
		LDA	ENDSXL,X
		STA	CREG0				;(CREG0) <- Ｘ　ＰＯＳ．
		LDA	ENDSYL,X
		STA	CREG1				;(CREG1) <- Ｙ　ＰＯＳ．
;
		M_CHIP	BG3_MORPHING_N
;
BG3UL_SET1	EQU	$
		JSL	>M_DMA_BFST
		LWORD	HDMABUF		;to address set
		LWORD	HDMABF		;from address set
		WORD	0D2H*2*2	;number of byte set
;
;--------------< config. set >-------------------
		MI8
;;		LDA	#017H
		LDA	#013H
		STA	!MANSEL
;;		LDA	#000H
		LDA	#004H
		STA	SUBSEL
		LDA	#022H
		STA	WIND30
		LDA	#063H
		STA	SUBADF
		LDA	#00011000B
		TSB	HD420C
		M16
		LDX	<ENINDX

		RTS
;
BG3UL_SET_D00	EQU	$
		WORD	BG3UL_SET_D000, BG3UL_SET_D100
;;;		WORD	BG3UL_SET_D200, BG3UL_SET_D300
;;;		WORD	BG3UL_SET_D400, BG3UL_SET_D500, BG3UL_SET_D600, BG3UL_SET_D700
;
;>>>>>>>>>>
;function
; リフトウンババうごき
;name
; BG3ULACT
;entry
; ENWRK4:5 : ウンババあくしょんナンバー
;  bit15 : 初期化フラグ
; <ENCONT   : ウンババあくしょんカウンター
;  bit15 : アクション終了カウンター
; EWORKE
;return
; EWORKE
;<<<<<<<<<<
;
BG3UL_ACT_D100	EQU	$
		WORD	BG3UL_ACT50, 00001H	;00 乗りまち   (5)
		WORD	BG3UL_ACT00, 00001H	;01 移動       (0)
		WORD	BG3ULACT10, 00001H	;02 のびる     (1)高さ小
		WORD	BG3ULACT30, 00001H	;03 ぱちぱち   (3)
		WORD	BG3ULACT20, 00001H	;03 ちぢむ     (2)
		WORD	BG3UL_ACT00, 00001H	;00 移動       (0)
		WORD	BG3ULACT10, 00001H	;01 のびる     (1)高さ小
		WORD	BG3ULACT30, 00001H	;02 ぱちぱち   (3)
;;		WORD	BG3ULACT40, 00001H	;00 あたりまち (4)
		WORD	BG3ULACT20, 00001H	;03 ちぢむ     (2)
		WORD	BG3UL_ACT00, 00001H	;00 移動       (0)
		WORD	BG3ULACT11, 00001H	;05 のびる     (1)高さ大
		WORD	BG3ULACT30, 00001H	;06 ぱちぱち   (3)
		WORD	BG3ULACT20, 00001H	;07 ちぢむ     (2)
;;		WORD	BG3ULACT40, 00001H	;00 あたりまち (4)
;;		WORD	BG3ULACT12, 00001H	;05 のびる     (1)高さ大
;;		WORD	BG3ULACT30, 00001H	;06 ぱちぱち   (3)
;;		WORD	BG3ULACT20, 00001H	;07 ちぢむ     (2)
;;		WORD	BG3ULACT40, 00001H	;08 あたりまち (4)
;;		WORD	BG3ULACT11, 00001H	;09 のびる     (1)高さ中
;;		WORD	BG3ULACT30, 00001H	;0A ウエイト   (3)
;;		WORD	BG3ULACT20, 00005H	;0B ちぢむ     (2)
;;		WORD	BG3ULACT40, 00505H	;0C あたりまち (4)
;;		WORD	BG3ULACT11, 00405H	;0D のびる     (1)高さ中
;;		WORD	BG3ULACT30, 00404H	;0E ぱちぱち   (3)
;;		WORD	BG3ULACT20, 00402H	;0F ちぢむ     (2)
;;		WORD	BG3ULACT40, 00202H	;10 あたりまち (4)
;;		WORD	BG3ULACT11, 00502H	;11 のびる     (1)高さ中
;;		WORD	BG3ULACT30, 00505H	;12 ぱちぱち   (3)
;;		WORD	BG3ULACT20, 00507H	;13 ちぢむ     (2)
		WORD	00000H
;
BG3ULACT	EQU	$
;
		JSR	BG3UL_ACT010S
;
		LDA	<ENWRK4,X
		ASL	A
		ASL	A
BG3UL_ACT010	EQU	$
		TAY
		LDA	!BG3UL_ACT_D100,Y
		BNE	BG3UL_ACT100
		STA	<ENWRK4,X
;
		LDA	#08000H
		TSB	<EWORKE
;
		BRA	BG3UL_ACT010
;
BG3UL_ACT100	EQU	$
		STA	<EWORK0
;
		LDA	!BG3UL_ACT_D100+2,Y
		STA	<ENWRK0,X
;
		PER	2			;JSR	(EWORK0,Y)
		JMP	(EWORK0)		;
;
		LDA	<EWORKE
		AND	#07FFFH
		BIT	#04000H
		BEQ	BG3UL_ACT800		;次フレーム初期化？[no->BG3UL_ACT_800]
;
		EOR	#0C000H			;次フレーム初期化フラグＯＦＦ＆初期化フラグＯＮ
;
		INC	<ENWRK4,X
;
BG3UL_ACT800	EQU	$
		STA	<EWORKE
;
BG3UL_ACT900	EQU	$
		RTS
;
;---目パチパチ処理
;
BG3UL_ACT000SD	EQU	$	;目パチクリ
		WORD	00000H, 00001H, 00002H, 00001H, 00002H
		WORD	00000H, 00000H, 00001H, 00002H, 00001H, 00002H
BG3UL_ACT010SD	EQU	$
;
BG3UL_ACT000S	EQU	$			;初期化処理
;
		LDA	#BG3UL_ACT010SD-BG3UL_ACT000SD-1
		STA	ENTIM1,X
;
		LDA	#00004H
		TSB	<EWORKE
;
BG3UL_ACT010S	EQU	$
;
		LDA	<EWORKE
		BIT	#0004H
		BEQ	BG3UL_ACT080S
;
		LDA	ENTIM1,X
		PHA
		BNE	BG3UL_ACT020S
		LDA	#00004H
		TRB	<EWORKE
BG3UL_ACT020S	EQU	$
		PLA
		AND	#0FFFEH
		TAY
		LDA	!BG3UL_ACT000SD,Y
		STA	ENCHPT,X
BG3UL_ACT080S	EQU	$
;
		RTS
;
;
;---リフト乗り待ち(5)
;
BG3UL_ACT50	EQU	$
;
		LDA	<EWORKE
		BPL	BG3UL_ACT50_20
;
		LDA	#000F0H
		STA	ENTIM0,X
;
BG3UL_ACT50_20	EQU	$
		LDA	<EWORKE
		BIT	#00004H
		BNE	BG3UL_ACT50_80
;
		LDA	#00002H
		STA	ENCHPT,X
;
BG3UL_ACT50_25	EQU	$
		LDA	ENTIM0,X
		BNE	BG3UL_ACT50_30
;
		LDA	#000F0H
		STA	ENTIM0,X
;
		JSR	BG3UL_ACT000S
;
BG3UL_ACT50_30	EQU	$
		LDA	<EWORKE
		BIT	#00001H
		BEQ	BG3UL_ACT50_80
;
		LDA	<EWORKE
		AND	#0FFFBH		;目パチパチフラグオフ
		ORA	#04000H		;次フレーム初期化フラグ
		STA	<EWORKE
;
BG3UL_ACT50_80	EQU	$
		RTS
;
;
;---リフトウンババいどう(0)
;
BG3UL_ACT00	EQU	$
		LDA	<EWORKE
		BPL	BG3UL_ACT00_30
;
		LDA	#00180H
		STA	ENXSPD,X
		LDA	#00080H
		STA	ENTIM0,X
		LDA	#002H
		STA	ENMUKI,X
		LDA	#002H
		STA	ENCHPT,X
;
BG3UL_ACT00_30	EQU	$
		LDA	<EWORKE
		BIT	#00002H
		BNE	BG3UL_ACT00_90		;ＢＧに当たっている？（進んでいない？）[yes->BG3UL_ACT00_90]
;
		LDA	ENDSXL,X
		CLC
		ADC	#080H
		CMP	#080H+0100H+080H
		BCS	BG3UL_ACT00_40		;音を鳴らす範囲内？[no->BG3UL_ACT00_40]
;
		LDA	#0C0H			;BONBONシリーズ動作音
		STA	SOUND_1			;音
;
BG3UL_ACT00_40
		LDA	ENTIM0,X
		BNE	BG3UL_ACT00_70
;
		STZ	ENXSPD,X
;
		LDA	#04000H
		TSB	<EWORKE
;
		RTS
;
BG3UL_ACT00_70	EQU	$
		CMP	#017H
		BNE	BG3UL_ACT00_78
;
		JSR	BG3UL_ACT000S
;
BG3UL_ACT00_78	EQU	$
		RTS
;
BG3UL_ACT00_90	EQU	$
		STZ	ENXSPD,X
		RTS
;
;---リフトウンババのびる(01)
;
BG3ULACT10_TM0	EQU	001H			;ウェイトタイマー値
;
BG3UL_ACT10_01D	EQU	$			;モーフィング値変化量
		WORD	00003H, 00006H
BG3UL_ACT10_02D	EQU	$			;モーフィング目標値
		WORD	00090H, 00120H
;
BG3ULACT10	EQU	$
		LDY	#000H
		BRA	BG3UL_ACT10_05
BG3ULACT11	EQU	$
		LDY	#002H
BG3UL_ACT10_05	EQU	$
;
		STZ	ENCHPT,X
;
		LDA	<EWORKE
		BPL	BG3UL_ACT10_30
;
		LDA	#01EH
		STA	ENTIM0,X		;のびるまでウェイト数
;
BG3UL_ACT10_30
		LDA	ENTIM0,X
		BNE	BG3UL_ACT10_800
;
		LDA	<ENWRK2,X
		CLC
		ADC	!BG3UL_ACT10_01D,Y
		STA	ENWRKA,X
		CMP	!BG3UL_ACT10_02D,Y
		BCC	BG3UL_ACT10_800
;
		LDA	#04000H
		TSB	<EWORKE
;
BG3UL_ACT10_800	EQU	$
;
		RTS

;
;---リフトウンババちぢむ(02)
;
BG3ULACT20	EQU	$
		LDA	<EWORKE
		BPL	BG3UL_ACT20_100
;
		LDA	#00002H
		STA	ENCHPT,X
;
		STZ	ENTIM0,X
;
BG3UL_ACT20_100	EQU	$
		LDA	ENTIM0,X
		BNE	BG3UL_ACT20_900		;ウェイトタイマー０？[no->BG3UL_ACT10_800]
;
		LDA	#00002H
		STA	ENTIM0,X
;
		LDA	<ENWRK2,X
		SEC
		SBC	#003H
		CMP	#BG3UL_MIN
		BPL	BG3UL_ACT20_800
;
		LDA	#04000H
		TSB	<EWORKE
;
		LDA	#BG3UL_MIN
BG3UL_ACT20_800	EQU	$
		STA	ENWRKA,X
;
BG3UL_ACT20_900	EQU	$
		RTS
;
;---リフトウンババウェイト(3)
;
BG3ULACT30	EQU	$
		LDA	<EWORKE
		BPL	BG3UL_ACT30_10		;初期化する?[no->BG3UL_ACT30_100]
;
		LDA	#016H*3*3
		STA	ENTIM0,X
;
BG3UL_ACT30_10	EQU	$
;
		LDA	ENTIM0,X
		CMP	#017H
		BNE	BG3UL_ACT30_70		;目パチパチ開始？[no->BG3UL_ACT70_70]
;
		JSR	BG3UL_ACT000S
;
BG3UL_ACT30_70	EQU	$
		LDA	ENTIM0,X
		BNE	BG3UL_ACT30_90		;行動終了？[no->BG3UL_ACT30_900]
;
		LDA	<EWORKE
		AND	#0FFFBH
		ORA	#04000H
		STA	<EWORKE
;
BG3UL_ACT30_90	EQU	$
		RTS
;;;
;;;
;;;---ウンババリフトトリガーウエイト(4)
;;;
;;BG3ULACT40	EQU	$
;;;
;;		LDA	<EWORKE
;;		BPL	BG3UL_ACT40_100		;初期化する？[no->BG3UL_ACT40_100]
;;;
;;;;		LDA	#020H
;;;;		STA	<ENCONT,X
;;;
;;		LDA	#002H
;;		STA	ENCHPT,X
;;;
;;BG3UL_ACT40_100	EQU	$
;;;;		DEC	<ENCONT,X
;;BG3UL_ACT40_800	EQU	$
;;;;		LDA	<ENCONT,X
;;		LDA	EWORKE
;;		BIT	#00800H
;;;;		BNE	BG3UL_ACT40_900
;;		BEQ	BG3UL_ACT40_900
;;;
;;		LDA	#04000H
;;		TSB	<EWORKE
;;;
;;BG3UL_ACT40_900	EQU	$
;;		RTS
;
;>>>>>>>>>>
;function
; 変形リフト次フレームポイント計算
;name
; BG3ULFRM
;entry
; <ENWRK0:1 : 変形リフトパターン値
;return
; <EWORK0:1 : 次フレーム変形リフト中心位置Ｘ座標
; <EWORK2:3 : 次フレーム変形リフト中心位置Ｙ座標
;break
;<<<<<<<<<<
;
BG3UL_OBJ_PNT	EQU	00AH
;
BG3ULNFRM	EQU	$
		LDA	<ENWRK0,X		;DATA NO GET
		AND	#000FFH
		ASL	A
		TAY
		LDA	BG3UL_SET_D00,Y
		STA	<EWORK0			;MORP BEFORE ADDRESS SET
		LDA	<ENWRK0,X		;DATA NO GET
		XBA
		AND	#000FFH
		ASL	A
		TAY
		LDA	BG3UL_SET_D00,Y
		STA	<EWORK2			;MORP AFTER ADDRESS SET
;
		LDY	#(BG3UL_OBJ_PNT-1)*2
		LDA	(EWORK0),Y
		AND	#0FFH
		BIT	#080H
		BEQ	BG3UL_NFRM_010
		ORA	#0FF00H
BG3UL_NFRM_010	EQU	$
		STA	R1
		LDA	(EWORK2),Y
		AND	#0FFH
		BIT	#080H
		BEQ	BG3UL_NFRM_020
		ORA	#0FF00H
BG3UL_NFRM_020	EQU	$
		STA	R3
		INY
		LDA	(EWORK0),Y
		AND	#0FFH
		BIT	#080H
		BEQ	BG3UL_NFRM_030
		ORA	#0FF00H
BG3UL_NFRM_030	EQU	$
		STA	R2
		LDA	(EWORK2),Y
		AND	#0FFH
		BIT	#080H
		BEQ	BG3UL_NFRM_040
		ORA	#0FF00H
BG3UL_NFRM_040	EQU	$
		STA	R5
		LDA	ENWRKA,X
		STA	R6
;
		M_CHIP	ONEPOINT_MORP
;
		LDX	<ENINDX
;
		LDA	R7
		STA	<EWORKA
		STA	<ENCONT,X
		LDA	R8
		STA	<EWORKC
;
		RTS
;
;>>>>>>>>>>
;function
; ＢＧ３ウンババリフト
;entry
; <ENWRK6:7 : 前フレームＸ座標
; <ENWRK8:9 : 前フレームＹ座標
;return
;<<<<<<<<<<
BG3ULOSET	EQU	$
;
		I16
;
		LDA	ENWRK6,X
		SEC
		SBC	#008H
		STA	<EWORK0
		LDA	ENWRK8,X
		CLC
		ADC	#010H
		STA	<EWORK2
;
		LDY	ENOAML,X
		LDX	#000DH
BG3UL_OSET_210	EQU	$
		LDA	SOAM_DX,Y
		CLC
		ADC	<EWORK0
		STA	SOAM_DX,Y
		LDA	SOAM_DX+2,Y
		CLC
		ADC	<EWORK2
		STA	SOAM_DX+2,Y
		TYA
		CLC
		ADC	#008H
		TAY
		DEX
		BNE	BG3UL_OSET_210
;
		I8
;
		LDX	<ENINDX
;
		RTS
;
;;;;>>>>>>>>>>
;;;;function
;;;; ウンババリフト対プレイヤー＆その他チェック
;;;;name
;;;; BG3ULCHK
;;;;entry
;;;; ENWRK0,X
;;;;return
;;;;work
;;;;<<<<<<<<<<
;;;;
;;;BG3UL_CHK_D100	EQU	$		;左右あたりよう補正データ
;;;		WORD	00001H, 0FFFFH
;;;;
;;;BG3ULCHK	EQU	$
;;;;
;;;		LDA	#00800H
;;;		TRB	<EWORKE
;;;;
;;;		TXA
;;;		STA	CCWORK9		;敵インデックスセット
;;;		LDA	PLXPSL
;;;		SEC
;;;		SBC	SCCH1
;;;		STA	CCWORKA		;プレイヤー表示Ｘ位置セット
;;;		LDA	PLYPSL
;;;		SEC
;;;		SBC	SCCV1
;;;		STA	CCWORKB		;プレイヤー表示Ｙ位置セット
;;;		LDA	PLSITD
;;;		STA	CCWORKC		;プレイヤー座っている？フラグセット
;;;;
;;;		M_CHIP	BG3_CROSS_CK
;;;;
;;;		LDX	<ENINDX
;;;;
;;;		LDA	CCWORKD
;;;		BEQ	BG3UL_CHK500	;プレイヤー当たり？[no->BG3UL_CHK500]
;;;		BIT	#00001H
;;;		BEQ	BG3UL_CHK400	;足当たっている？[no->BG3UL_CHK400]
;;;;
;;;		LDA	ENYPSL,X
;;;		SEC
;;;		SBC	ENYP2L
;;;		CLC
;;;		ADC	PLYPSL
;;;		STA	PLYPSL
;;;;
;;;		LDA	PLYSPD
;;;		BMI	BG3UL_CHK400	;プレイヤー上昇中？[yes->BG3UL_CHK400]
;;;;
;;;		LDA	ENXPSL,X
;;;		SEC
;;;		SBC	ENXP2L
;;;		CLC
;;;		ADC	PLXPSL
;;;		STA	PLXPSL		;Ｘ座標補整
;;;;
;;;		LDA	ENMOVX,X
;;;		CLC
;;;		ADC	PLXPSL
;;;		STA	PLXPSL
;;;;
;;;		LDA	PLYPSL
;;;		CLC
;;;		ADC	CCWORKE
;;;		STA	PLYPSL		;プレイヤー足当たりによる補正
;;;;
;;;		INC	ONLFFG
;;;;
;;;		LDA	#02000H
;;;		TSB	<EWORKE		;乗ったフラグオン
;;;;
;;;		LDA	#0300H
;;;		STA	PLYSPD
;;;;
;;;BG3UL_CHK400	EQU	$
;;;		LDA	CCWORKD
;;;		BIT	#0001EH
;;;		BEQ	BG3UL_CHK500	;左右当たり？[no->BG3UL_CHK900]
;;;;
;;;		LDY	#000H
;;;		BIT	#00014H
;;;		BNE	BG3UL_CHK420	;左当たり？[yes->BG3UL_CHK420]
;;;;
;;;		LDY	#002H
;;;BG3UL_CHK420	EQU	$
;;;;
;;;		LDA	PLXPSL
;;;		CLC
;;;		ADC	BG3UL_CHK_D100,Y
;;;		STA	PLXPSL
;;;;
;;;		LDA	PLMVSP
;;;		EOR	BG3UL_CHK_D100,Y
;;;		BPL	BG3UL_CHK500
;;;;
;;;		STZ	PLXSPD
;;;		STZ	PLMVSP
;;;;
;;;BG3UL_CHK500	EQU	$
;;;		LDY	ECRSFG,X
;;;		DEY
;;;		BMI	BG3UL_CHK900		;敵当たり？
;;;;
;;;		LDA	ENSHOT,Y
;;;		BEQ	BG3UL_CHK900		;ショット？
;;;;
;;;		TYX
;;;		LDA	<EWORKE
;;;		PHA
;;;;
;;;		JSL	>SHOT_EN_KILL
;;;;
;;;		PLA
;;;		ORA	#00800H
;;;		STA	<EWORKE
;;;;
;;;BG3UL_CHK900	EQU	$
;;;		LDX	<ENINDX
;;;;
;;;		LDA	<EWORKA
;;;		STA	ENWRK6,X
;;;		LDA	<EWORKC
;;;		STA	ENWRK8,X
;;;;
;;;		RTS
;
;>>>>>>>>>>
;function
; 変形リフトプレイヤーとの判定処理
;name
; BG3ULPCK
;entry
; <EWORKA:B : リフト中心位置Ｘ座標
; <EWORKC:D : リフト中心位置Ｙ座標
;  ENWRK6:3 : 前フレームリフト中心位置Ｘ座標
;  ENWRK8:5 : 前フレームリフト中心位置Ｙ座標
;  ENWRKC:D :
;return
;  ENWRK6:7 : 現フレームリフト中心位置Ｘ座標（次フレーム用）
;  ENWRK8:9 : 現フレームリフト中心位置Ｙ座標（次フレーム用）
;  ENWRKC:D :
;break
; EWORK4:5
;<<<<<<<<<<
BG3ULPCK	EQU	$
;
;;;		LDA	<EWORKE
;;;		BIT	#00001H
;;;		BEQ	BG3UL_PCK100		;前フレーム乗っていた？[no->BG3FL_PHCK010]
;;;;
;;;		LDA	<EWORK0			;当たり中心Ｘ座標
;;;		SEC
;;;		SBC	ENWRK6,X
;;;		CLC
;;;		ADC	!PLXPSL
;;;		STA	!PLXPSL
;;;;
;;;		LDA	#00001H
;;;		TRB	<EWORKE
;;;;
BG3UL_PCK100	EQU	$
		LDA	PLYSPD
;;;		BPL	BG3UL_PCK105		;プレイヤー上昇中？[no->BG3UL_PCK105]
;;;		JMP	BG3UL_PCK800
		BMI	BG3UL_PCK800		;プレイヤー上昇中？[yes->BG3UL_PCK800]
;
BG3UL_PCK105	EQU	$
;
		LDA	PCENTX	
		SEC
		SBC	ENXPSL,X
		CLC
		ADC	<EWORKA
		STA	<EWORK0
		ASL	A		;<N>-><C>
		LDA	PWIDEX
		BCS	BG3UL_PCK115
		EOR	#0FFFFH
		INC	A
BG3UL_PCK115	EQU	$
		CLC
		ADC	<EWORK0
		CLC
		ADC	#018H
		CMP	#030H
		BCS	BG3UL_PCK800
;
;;;		LDA	<EWORK0			;当たり中心Ｘ座標
;;;		SEC
;;;		SBC	#018H
;;;		SEC
;;;		SBC	PLXPSL
;;;		CLC
;;;		SBC	#010H
;;;		BPL	BG3FL_PCK800
;;;;
;;;		LDA	<EWORK0			;当たり中心Ｘ座標
;;;		CLC
;;;		ADC	#018H
;;;		SEC
;;;		SBC	PLXPSL
;;;		BCC	BG3FL_PCK800
;;;;
		LDA	ENYPSL,X
		CLC
		ADC	<EWORKC			;当たり中心Ｙ座標
		SEC				;'95.04.14 add
		SBC	#0008H			;
		STA	<EWORK0
		SEC
		SBC	PLYPSL
		CLC
		CMP	#00AH
		BMI	BG3UL_PCK800
		CMP	#020H
		BCS	BG3UL_PCK800
		LDA	<EWORK0
		SEC
		SBC	#020H
		STA	PLYPSL
;
		INC	ONLFFG
;
		LDA	#00001H
		TSB	<EWORKE
;
		LDA	ENMOVX,X
		CLC
		ADC	PLXPSL
		STA	PLXPSL
;
BG3UL_PCK800	EQU	$
		LDA	<EWORKA
		STA	ENWRK6,X
		LDA	<EWORKC
		STA	ENWRK8,X
;
		RTS
;
;file <kemekuji_lift00.CH7>
;screen no.<0>
;point kazu <010H>
;xmag=[001.00]
;ymag=[001.80]
;turn sw off
BG3UL_SET_D000	EQU	$						;けめくじ（１８０％）
		BYTE	000H,000H, 0C1H,000H, 0C8H,0F4H, 0D0H,0E5H
		BYTE	0D8H,0D0H, 0E0H,0ACH, 0E8H,091H, 0F0H,086H
		BYTE	0F8H,082H, 000H,081H, 001H,081H, 009H,082H
		BYTE	011H,08AH, 019H,098H, 020H,0DEH, 028H,000H
;
;file <kemekuji_lift00.CH7>
;screen no.<0>
;point kazu <010H>
;xmag=[001.00]
;ymag=[000.00]
;turn sw off
BG3UL_SET_D100	EQU	$						;けめくじ（基本）
		BYTE	000H,000H, 0C1H,000H, 0C8H,000H, 0D0H,000H
		BYTE	0D8H,000H, 0E0H,000H, 0E8H,000H, 0F0H,000H
		BYTE	0F8H,000H, 000H,000H, 001H,000H, 009H,000H
		BYTE	011H,000H, 019H,000H, 020H,000H, 028H,000H
;
;;;;;
;;;;;
;;;;;file <unbabalift0.CH7>
;;;;;screen no.<0>
;;;;;point kazu <03cH>
;;;;;xmag=[001.00]
;;;;;ymag=[001.00]
;;;;;turn sw off
;;;;BG3UL_SET_D000	EQU	$						;オバケ
;;;;		BYTE	000H,000H, 0FFH,000H, 0FEH,000H, 0FCH,000H
;;;;		BYTE	0FBH,0FFH, 0F8H,0FEH, 0F5H,0FBH, 0F3H,0F8H
;;;;		BYTE	0F1H,0F5H, 0EFH,0F0H, 0EBH,0E5H, 0E8H,0DBH
;;;;		BYTE	0E5H,0D1H, 0E3H,0C6H, 0E1H,0BEH, 0E1H,0ADH
;;;;		BYTE	0E3H,0A9H, 0E4H,0A7H, 0E5H,0A5H, 0E7H,0A3H
;;;;		BYTE	0E8H,0A1H, 0E9H,0A0H, 0EBH,09DH, 0EDH,09BH
;;;;		BYTE	0EFH,099H, 0F1H,097H, 0F4H,095H, 0F8H,093H
;;;;		BYTE	0FDH,091H, 000H,091H, 001H,091H, 004H,091H
;;;;		BYTE	009H,093H, 00DH,095H, 010H,097H, 012H,099H
;;;;		BYTE	014H,09BH, 016H,09DH, 018H,0A0H, 019H,0A1H
;;;;		BYTE	01AH,0A3H, 01CH,0A5H, 01DH,0A7H, 01EH,0A9H
;;;;		BYTE	020H,0ADH, 020H,0BEH, 01EH,0C6H, 01CH,0D1H
;;;;		BYTE	019H,0DBH, 016H,0E5H, 012H,0F0H, 010H,0F5H
;;;;		BYTE	00EH,0F8H, 00CH,0FBH, 009H,0FEH, 006H,0FFH
;;;;		BYTE	005H,000H, 003H,000H, 002H,000H, 001H,000H
;;;;;
;;;;;
;;;;;file <unbabalift0.CH7>
;;;;;screen no.<1>
;;;;;point kazu <03cH>
;;;;;xmag=[001.00]
;;;;;ymag=[001.00]
;;;;;turn sw off
;;;;BG3UL_SET_D100	EQU	$						;幅３０Ｈの四角
;;;;		BYTE	000H,000H, 0E9H,000H, 0E9H,0FEH, 0E9H,0FDH
;;;;		BYTE	0E9H,0FCH, 0E9H,0FBH, 0E9H,0FAH, 0E9H,0F9H
;;;;		BYTE	0E9H,0F8H, 0E9H,0F7H, 0E9H,0F6H, 0E9H,0F5H
;;;;		BYTE	0E9H,0F4H, 0E9H,0F3H, 0E9H,0F2H, 0E9H,0F1H
;;;;		BYTE	0E9H,0F0H, 0E9H,0EFH, 0E9H,0EEH, 0E9H,0EDH
;;;;		BYTE	0E9H,0ECH, 0E9H,0EBH, 0E9H,0EAH, 0E9H,0E9H
;;;;		BYTE	0E9H,0E8H, 0E9H,0E7H, 0E9H,0E6H, 0E9H,0E5H
;;;;		BYTE	0E9H,0E3H, 000H,0E3H, 001H,0E3H, 018H,0E3H
;;;;		BYTE	018H,0E5H, 018H,0E6H, 018H,0E7H, 018H,0E8H
;;;;		BYTE	018H,0E9H, 018H,0EAH, 018H,0EBH, 018H,0ECH
;;;;		BYTE	018H,0EDH, 018H,0EEH, 018H,0EFH, 018H,0F0H
;;;;		BYTE	018H,0F1H, 018H,0F2H, 018H,0F3H, 018H,0F4H
;;;;		BYTE	018H,0F5H, 018H,0F6H, 018H,0F7H, 018H,0F8H
;;;;		BYTE	018H,0F9H, 018H,0FAH, 018H,0FBH, 018H,0FCH
;;;;		BYTE	018H,0FDH, 018H,0FEH, 018H,000H, 001H,000H
;;;;;
;;;;file <unbabalift0.CH7>
;;;;screen no.<2>
;;;;point kazu <03cH>
;;;;xmag=[001.00]
;;;;ymag=[001.00]
;;;;turn sw off
;;;BG3UL_SET_D200	EQU	$						;半円
;;;		BYTE	000H,000H, 000H,000H, 0FCH,000H, 0F8H,000H
;;;		BYTE	0F6H,000H, 0F4H,000H, 0F2H,000H, 0F0H,000H
;;;		BYTE	0EFH,000H, 0EEH,000H, 0ECH,000H, 0EBH,000H
;;;		BYTE	0EAH,000H, 0E9H,000H, 0E9H,000H, 0E9H,000H
;;;		BYTE	0E9H,0FFH, 0E9H,0FCH, 0EAH,0F8H, 0EBH,0F6H
;;;		BYTE	0ECH,0F4H, 0EEH,0F2H, 0EFH,0F0H, 0F0H,0EFH
;;;		BYTE	0F2H,0EEH, 0F4H,0ECH, 0F6H,0EBH, 0F8H,0EAH
;;;		BYTE	0FCH,0E9H, 000H,0E9H, 001H,0E9H, 005H,0E9H
;;;		BYTE	009H,0EAH, 00BH,0EBH, 00DH,0ECH, 00FH,0EEH
;;;		BYTE	011H,0EFH, 012H,0F0H, 013H,0F2H, 015H,0F4H
;;;		BYTE	016H,0F6H, 017H,0F8H, 018H,0FCH, 018H,0FFH
;;;		BYTE	018H,000H, 018H,000H, 018H,000H, 017H,000H
;;;		BYTE	016H,000H, 015H,000H, 013H,000H, 012H,000H
;;;		BYTE	011H,000H, 00FH,000H, 00DH,000H, 00BH,000H
;;;		BYTE	009H,000H, 005H,000H, 001H,000H, 001H,000H
;;;;
;;;;file <unbabalift0.CH7>
;;;;screen no.<3>
;;;;point kazu <03cH>
;;;;xmag=[001.00]
;;;;ymag=[001.00]
;;;;turn sw off
;;;BG3UL_SET_D300	EQU	$						;２＊２の四角
;;;		BYTE	000H,000H, 000H,000H, 000H,000H, 000H,000H
;;;		BYTE	000H,000H, 000H,000H, 000H,000H, 000H,000H
;;;		BYTE	000H,000H, 000H,000H, 000H,000H, 000H,000H
;;;		BYTE	000H,000H, 000H,000H, 000H,000H, 000H,000H
;;;		BYTE	000H,000H, 000H,000H, 000H,000H, 000H,000H
;;;		BYTE	000H,000H, 000H,000H, 000H,000H, 000H,000H
;;;		BYTE	000H,000H, 000H,000H, 000H,000H, 000H,000H
;;;		BYTE	000H,000H, 000H,0FFH, 001H,0FFH, 001H,000H
;;;		BYTE	001H,000H, 001H,000H, 001H,000H, 001H,000H
;;;		BYTE	001H,000H, 001H,000H, 001H,000H, 001H,000H
;;;		BYTE	001H,000H, 001H,000H, 001H,000H, 001H,000H
;;;		BYTE	001H,000H, 001H,000H, 001H,000H, 001H,000H
;;;		BYTE	001H,000H, 001H,000H, 001H,000H, 001H,000H
;;;		BYTE	001H,000H, 001H,000H, 001H,000H, 001H,000H
;;;		BYTE	001H,000H, 001H,000H, 001H,000H, 001H,000H
;;;;
;;;;file <unbabalift1.CH7>
;;;;screen no.<1>
;;;;point kazu <03cH>
;;;;xmag=[001.00]
;;;;ymag=[001.00]
;;;;turn sw off
;;;BG3UL_SET_D400	EQU	$						;円
;;;		BYTE	000H,000H, 0FFH,000H, 0FCH,000H, 0F8H,0FFH
;;;		BYTE	0F6H,0FEH, 0F4H,0FDH, 0F2H,0FBH, 0F0H,0FAH
;;;		BYTE	0EFH,0F9H, 0EEH,0F7H, 0ECH,0F5H, 0EBH,0F3H
;;;		BYTE	0EAH,0F1H, 0E9H,0EDH, 0E9H,0E9H, 0E9H,0E8H
;;;		BYTE	0E9H,0E7H, 0E9H,0E4H, 0EAH,0E0H, 0EBH,0DEH
;;;		BYTE	0ECH,0DCH, 0EEH,0DAH, 0EFH,0D8H, 0F0H,0D7H
;;;		BYTE	0F2H,0D6H, 0F4H,0D4H, 0F6H,0D3H, 0F8H,0D2H
;;;		BYTE	0FCH,0D1H, 000H,0D1H, 001H,0D1H, 005H,0D1H
;;;		BYTE	009H,0D2H, 00BH,0D3H, 00DH,0D4H, 00FH,0D6H
;;;		BYTE	011H,0D7H, 012H,0D8H, 013H,0DAH, 015H,0DCH
;;;		BYTE	016H,0DEH, 017H,0E0H, 018H,0E4H, 018H,0E7H
;;;		BYTE	018H,0E8H, 018H,0E9H, 018H,0EDH, 017H,0F1H
;;;		BYTE	016H,0F3H, 015H,0F5H, 013H,0F7H, 012H,0F9H
;;;		BYTE	011H,0FAH, 00FH,0FBH, 00DH,0FDH, 00BH,0FEH
;;;		BYTE	009H,0FFH, 005H,000H, 002H,000H, 001H,000H
;;;;
;;;;file <unbabalift1.CH7>
;;;;screen no.<2>
;;;;point kazu <03cH>
;;;;xmag=[001.00]
;;;;ymag=[001.00]
;;;;turn sw off
;;;BG3UL_SET_D500	EQU	$						;バネ
;;;		BYTE	000H,000H, 0E9H,000H, 0E9H,0FFH, 0E9H,0FEH
;;;		BYTE	011H,0F0H, 011H,0EFH, 0E9H,0E0H, 0E9H,0DFH
;;;		BYTE	011H,0D0H, 011H,0CFH, 0E9H,0C0H, 0E9H,0BFH
;;;		BYTE	011H,0B0H, 011H,0AFH, 0E9H,0A0H, 0E9H,09FH
;;;		BYTE	011H,090H, 011H,08FH, 0E9H,08FH, 0E9H,081H
;;;		BYTE	0F7H,081H, 0F8H,081H, 0F9H,081H, 0FAH,081H
;;;		BYTE	0FBH,081H, 0FCH,081H, 0FDH,081H, 0FEH,081H
;;;		BYTE	0FFH,081H, 000H,081H, 001H,081H, 002H,081H
;;;		BYTE	003H,081H, 004H,081H, 005H,081H, 006H,081H
;;;		BYTE	007H,081H, 008H,081H, 009H,081H, 00AH,081H
;;;		BYTE	018H,081H, 018H,08EH, 018H,08FH, 018H,090H
;;;		BYTE	0F0H,09FH, 0F0H,0A0H, 018H,0AFH, 018H,0B0H
;;;		BYTE	0F0H,0BFH, 0F0H,0C0H, 018H,0CFH, 018H,0D0H
;;;		BYTE	0F0H,0DFH, 0F0H,0E0H, 018H,0EFH, 018H,0F0H
;;;		BYTE	0F0H,0FEH, 018H,0FFH, 018H,000H, 001H,000H
;;;;
;;;;file <unbabalift1.CH7>
;;;;screen no.<3>
;;;;point kazu <03cH>
;;;;xmag=[001.00]
;;;;ymag=[001.00]
;;;;turn sw off
;;;BG3UL_SET_D600	EQU	$						;16*16の四角
;;;		BYTE	000H,000H, 0FFH,000H, 0FEH,000H, 0FDH,000H
;;;		BYTE	0FCH,000H, 0FBH,000H, 0FAH,000H, 0F9H,000H
;;;		BYTE	0F9H,0FFH, 0F9H,0FEH, 0F9H,0FDH, 0F9H,0FCH
;;;		BYTE	0F9H,0FBH, 0F9H,0FAH, 0F9H,0F9H, 0F9H,0F8H
;;;		BYTE	0F9H,0F7H, 0F9H,0F6H, 0F9H,0F5H, 0F9H,0F4H
;;;		BYTE	0F9H,0F3H, 0F9H,0F2H, 0F9H,0F1H, 0FAH,0F1H
;;;		BYTE	0FBH,0F1H, 0FCH,0F1H, 0FDH,0F1H, 0FEH,0F1H
;;;		BYTE	0FFH,0F1H, 000H,0F1H, 001H,0F1H, 002H,0F1H
;;;		BYTE	003H,0F1H, 004H,0F1H, 005H,0F1H, 006H,0F1H
;;;		BYTE	007H,0F1H, 008H,0F1H, 008H,0F2H, 008H,0F3H
;;;		BYTE	008H,0F4H, 008H,0F5H, 008H,0F6H, 008H,0F7H
;;;		BYTE	008H,0F8H, 008H,0F9H, 008H,0FAH, 008H,0FBH
;;;		BYTE	008H,0FCH, 008H,0FDH, 008H,0FEH, 008H,0FFH
;;;		BYTE	008H,000H, 007H,000H, 006H,000H, 005H,000H
;;;		BYTE	004H,000H, 003H,000H, 002H,000H, 001H,000H
;;;;
;;;;file <unbabalift1.CH7>
;;;;screen no.<0>
;;;;point kazu <03cH>
;;;;xmag=[001.00]
;;;;ymag=[001.00]
;;;;turn sw off
;;;BG3UL_SET_D700	EQU	$						;ばねちぢみ
;;;		BYTE	000H,000H, 0E9H,000H, 0E9H,0FFH, 0E9H,0FEH
;;;		BYTE	011H,0FEH, 011H,0FDH, 0E9H,0FDH, 0E9H,0FCH
;;;		BYTE	011H,0FCH, 011H,0FBH, 0E9H,0FBH, 0E9H,0FAH
;;;		BYTE	011H,0FAH, 011H,0F9H, 0E9H,0F9H, 0E9H,0F8H
;;;		BYTE	011H,0F8H, 011H,0F7H, 0E9H,0F7H, 0E9H,0E9H
;;;		BYTE	0F7H,0E9H, 0F8H,0E9H, 0F9H,0E9H, 0FAH,0E9H
;;;		BYTE	0FBH,0E9H, 0FCH,0E9H, 0FDH,0E9H, 0FEH,0E9H
;;;		BYTE	0FFH,0E9H, 000H,0E9H, 001H,0E9H, 002H,0E9H
;;;		BYTE	003H,0E9H, 004H,0E9H, 005H,0E9H, 006H,0E9H
;;;		BYTE	007H,0E9H, 008H,0E9H, 009H,0E9H, 00AH,0E9H
;;;		BYTE	018H,0E9H, 018H,0F6H, 018H,0F7H, 018H,0F8H
;;;		BYTE	0F0H,0F8H, 0F0H,0F9H, 018H,0F9H, 018H,0FAH
;;;		BYTE	0F0H,0FAH, 0F0H,0FBH, 018H,0FBH, 018H,0FCH
;;;		BYTE	0F0H,0FCH, 0F0H,0FDH, 018H,0FDH, 018H,0FEH
;;;		BYTE	0F0H,0FEH, 018H,0FFH, 018H,000H, 001H,000H
;
;************************************************************************
;*		initial ( ＢＧ３ブロック )				*
;************************************************************************
;
BG3BL_HLEN	EQU	(040H)
BG3BL_VLEN	EQU	(030H)
BG3BL_HLEN2	EQU	(0040H)
BG3BL_VLEN2	EQU	(0030H)
BG3BL_AREA	EQU	(BG3BL_HLEN*BG3BL_VLEN)
;
BG3BL_HLEN_D	EQU	$
		WORD	BG3BL_HLEN, BG3BL_HLEN2
BG3BL_VLEN_D	EQU	$
		WORD	BG3BL_VLEN, BG3BL_VLEN2
;
BG3BLIN		EQU	$
;
		LDY	#000H
		LDA	ENXPSL,X
		BIT	#00010H
		BEQ	BG3BL_IN100
		LDY	#002H
BG3BL_IN100	EQU	$
		LDA	!BG3BL_HLEN_D,Y
		STA	<ENWRK2,X
		LDA	!BG3BL_VLEN_D,Y
		STA	<ENWRK4,X
;
;;		LDA	#BG3BL_HLEN				
;;		STA	<ENWRK2,X		;横幅整数部
;;		LDA	#BG3BL_VLEN
;;		STA	<ENWRK4,X		;縦幅整数部
;;		STZ	!ENWRK6,X		;ぽよぽよ処理目標値
;;		STZ	!ENWRK8,X		;ぽよぽよ処理現在値
;
		STZ	ECNTXW,X
		STZ	ECNTYW,X
;
		RTL
;
;************************************************************************
;*		move	( ＢＧ３ブロック )				*
;************************************************************************
;entry
; ENWRK0:1 : 各種フラグ(returnを参照のこと)
; ENWRK2:3 : ブロックの横幅 
; ENWRK4:5 : ブロックの縦幅
;return
; ENWRK0:1 : 各種フラグ
;  bit  0 : ＢＧ当たり下 当たり=0
;  bit  1 : ＢＧ当たり上
;  bit  2 : ＢＧ当たり右
;  bit  3 : ＢＧ当たり左
;  bit  4 : プレイヤー乗ってる？ 乗ってる=1
;  bit  5 : プレイヤー押してる？ 押してる=1
;  bit  6 : プレイヤー頭当たり？ 当たり=1
;  bit  7 : 押しぽよフラグ（一度っきりぽよ）
;  bit  8 : プレイヤー縦当たりしている？ してる=1
;  bit  9 :
;  bit 10 : 縦に縮められなかった？縮められなかった=1（１フレームのみ有効）
;  bit 11 : 前フレーム ドスンされてた？ されてた=1
;  bit 12 : 前フレーム プレイヤー乗ってる？ のってた=1
;  bit 13 : 前フレーム プレイヤー押してる？ 押してた=1
;  bit 14 : 前フレーム プレイヤー地面についてた？ ついてる=1
;  bit 15 : 前フレーム プレイヤー縦当たりしている？ してる=1
; ENWRK2:3 : ブロックの横幅 
; ENWRK4:5 : ブロックの縦幅
; ENWRK6:7 : ブロックぽよぽよ目標値
; ENWRK8:9 : ブロックぽよぽよ現在値
;
BG3BLMV		EQU	$
;
		LDA	#0F880H
		AND	<ENWRK0,X
		STA	<ENWRK0,X
;
		JSR	BG3BLSET		;ＢＧ３ブロックポリゴンセット
;
;;;		JSR	BG3BL_OSET		;ＯＡＭセット
;
		JSL	>ENMDCK
;
		LDA	ENDSXL,X
		CLC
		ADC	#078H
		CMP	#078H+0100H+078H
		BCS	BG3BL_MV040
;
		LDA	ENDSYL,X
		CLC
		ADC	#078H
		CMP	#078H+0D2H+078H
		BCC	BG3BL_MV050
;
BG3BL_MV040
		JSL	>ENCLEAR		;範囲外消去
;
		RTL
;
BG3BL_MV050
		LDA	<ENWRK2,X
		ASR16
		STA	!EWIDEX,X
;
		LDA	<ENWRK4,X
		ASR16
		STA	!EWIDEY,X
;
		JSR	BG3BL_CHK		;ＢＧ３ブロックＢＧチェック
;
		JSR	BG3BL_PCHK		;プレイヤー対ＢＧ３処理
;
		JSR	BG3BL_POYO		;ＢＧ３ブロックぽよぽよ処理
;
;--- フラグ設定
;
		I16				;インデックス１６ビット
;
		LDA	<ENWRK0,X		;前フレームフラグリセット
		AND	#007FFH
;
		LDY	!PLDOSN
		BEQ	BG3BLMV_100		;ドスン？[no->BG3BLMV_100]
;
		BIT	#00010H
		BEQ	BG3BLMV_100		;乗られている？[no->BG3BLMV_100]
;
		ORA	#00800H
;
		BIT	#00400H
		BEQ	BG3BLMV_100		;ちぢまなかった？[no->BG3BLMV_100]
;
		LDY	#00000H
		STY	PLDOSN
;
BG3BLMV_100	EQU	$
		LDY	!PLJUMP
		BNE	BG3BLMV_200		;プレイヤー飛んでる？[yes->BG3BLMV_200]
;
		ORA	#04000H
;
BG3BLMV_200	EQU	$
		BIT	#00010H
		BEQ	BG3BLMV_210		;プレイヤー乗ってる？[no->BG3BLMV_210]
;
		ORA	#01000H
;
BG3BLMV_210	EQU	$
		BIT	#00020H
		BEQ	BG3BLMV_220		;プレイヤー押してる？[no->BG3BLMV_220]
;
		ORA	#02000H
;
BG3BLMV_220	EQU	$
		BIT	#00100H			
		BEQ	BG3BLMV_230		;プレイヤー縦当たりしている？[no->BG3BLMV_230]
;
		ORA	#8000H
;
BG3BLMV_230	EQU	$
		STA	<ENWRK0,X		;
;
		I8
;
		LDX	<ENINDX
;
		RTL

;;;;>>>>>>>>>>
;;;;function
;;;; ＢＧ３ブロックＯＡＭセット
;;;;name
;;;; BG3BL_OSET
;;;;entry
;;;;return
;;;;break
;;;;<<<<<<<<<<
;;;BG3BL_OSET_D000	EQU	$
;;;		WORD	00000H, 00001H, 00002H, 00002H, 00001H
;;;		WORD	00000H, 00000H, 00001H, 00002H, 00002H, 00001H
;;;BG3BL_OSET_D100	EQU	$
;;;;
;;;BG3BL_OSET	EQU	$
;;;;
;;;		LDA	ENTIM3,X
;;;		BEQ	BG3BL_OSET_100		;パチパチアニメーション中？[no->BG3BL_OSET_100]
;;;;
;;;		AND	#0FFFEH
;;;		TAY
;;;		LDA	!BG3BL_OSET_D000,Y
;;;		STA	ENCHPT,X
;;;;
;;;		BRA	BG3BL_OSET_900
;;;;
;;;BG3BL_OSET_100	EQU	$
;;;		LDA	<ENWRK0,X
;;;		BIT	#00800H
;;;		BEQ	BG3BL_OSET_400		;前フレームドスン乗りしていた[no->BG3BL_OSET_400]
;;;;
;;;		BIT	#00400H
;;;		BNE	BG3BL_OSET_150		;もう縮められない？[]
;;;;
;;;		LDA	PLDOSN
;;;		BNE	BG3BL_OSET_400		;ドスン中？[yes->BG3BL_OSET_400]
;;;;
;;;BG3BL_OSET_150	EQU	$
;;;		LDA	#BG3BL_OSET_D100-BG3BL_OSET_D000
;;;		STA	ENTIM3,X
;;;;
;;;		BRA	BG3BL_OSET_900
;;;;
;;;BG3BL_OSET_400	EQU	$
;;;		LDA	PLDOSN
;;;		BEQ	BG3BL_OSET_800		;ドスン？[no->BG3BL_OSET_100]
;;;;
;;;		LDA	<ENWRK0,X
;;;		BIT	#01000H
;;;		BEQ	BG3BL_OSET_800		;前フレーム乗っている？[no->BG3BL_OSET_100]
;;;;
;;;		LDA	#00002H
;;;		STA	ENCHPT,X
;;;;
;;;		BRA	BG3BL_OSET_900
;;;;
;;;BG3BL_OSET_800	EQU	$
;;;		LDA	#000H
;;;		STA	ENCHPT,X
;;;BG3BL_OSET_900	EQU	$
;;;		RTS
;

;>>>>>>>>>>
;function
; ＢＧ３ブロックポリゴン点データセット
;entry
; ENWRK2:3 : ブロックの横幅 
; ENWRK4:5 : ブロックの縦幅
;return
; EWORK0:1 : ブロックの左ポイント（中心よりの相対座標）
; EWORK2:3 : ブロックの右ポイント（中心よりの相対座標）
; EWORK4:5 : ブロックの上ポイント（中心よりの相対座標）
; EWORK6:7 : ブロックの下ポイント（中心よりの相対座標）
;break
;<<<<<<<<<<
BG3BL_PGET	EQU	$
;
		LDA	<ENWRK2,X		;BLOCK WIDE GET
		LSR	A			;1/2
		BCS	BG3BLS_000
		DEC	A			;
BG3BLS_000	EQU	$
		STA	<EWORK2			;RIGHT
		SEC
		SBC	<ENWRK2,X
		INC	A
		STA	<EWORK0			;LEFT
;
		LDA	<ENWRK4,X		;BLOCK HIGHT GET
		LSR	A			;
		BCS	BG3BLS_010
		DEC	A			;
BG3BLS_010	EQU	$
		STA	<EWORK6			;LOWLER
		SEC
		SBC	<ENWRK4,X
		INC	A
		STA	<EWORK4			;UPPER
;
		RTS
;
;>>>>>>>>>>
;function
; ＢＧブロックポリゴンセット
;name
; BG3BLSET
;entry
; ENWRK2:3 :
; ENWRK4:5 :
;return
; none
;<<<<<<<<<<
BG3BLSET	EQU	$
;
		LDA	ENDSXL,X
		ADC	#078H
		CMP	#078H+100H+078H
		BCC	BG3BL_SET100			;表示範囲内[yes->BG3BL_SET100]
;
		M8
;
		LDA	#004H
		TRB	MANSEL
;
		M16
;
		LDX	<ENINDX
;
		RTS
;
BG3BL_SET100
		JSR	BG3BL_PGET			;ＢＧ３ブロックポリゴン用ポイント取り出し
;
		LDA	<EWORK0				;LEFT SIDE X POSITION
		SEC
		SBC	!ENWRK8,X
		STA	>BG3_POLYGON_DT+000H*4+0
		STA	>BG3_POLYGON_DT+00FH*4+0
		CLC
		ADC	#001H
		STA	>BG3_POLYGON_DT+001H*4+0
		STA	>BG3_POLYGON_DT+00EH*4+0
		CLC
		ADC	#001H
		STA	>BG3_POLYGON_DT+002H*4+0
		STA	>BG3_POLYGON_DT+00DH*4+0
		CLC
		ADC	#002H
		STA	>BG3_POLYGON_DT+003H*4+0
		STA	>BG3_POLYGON_DT+00CH*4+0
;
		LDA	<EWORK2				;RIGHT SIDE X POSITION
		CLC
		ADC	!ENWRK8,X
		STA	>BG3_POLYGON_DT+007H*4+0
		STA	>BG3_POLYGON_DT+008H*4+0
		SEC
		SBC	#001H
		STA	>BG3_POLYGON_DT+006H*4+0
		STA	>BG3_POLYGON_DT+009H*4+0
		SEC
		SBC	#001H
		STA	>BG3_POLYGON_DT+005H*4+0
		STA	>BG3_POLYGON_DT+00AH*4+0
		SEC
		SBC	#002H
		STA	>BG3_POLYGON_DT+004H*4+0
		STA	>BG3_POLYGON_DT+00BH*4+0
;
		LDA	<EWORK4				;UPPER SIDE Y POSITION
		CLC
		ADC	!ENWRK8,X
		STA	>BG3_POLYGON_DT+003H*4+2
		STA	>BG3_POLYGON_DT+004H*4+2
		CLC
		ADC	#0001H
		STA	>BG3_POLYGON_DT+002H*4+2
		STA	>BG3_POLYGON_DT+005H*4+2
		CLC
		ADC	#001H
		STA	>BG3_POLYGON_DT+001H*4+2
		STA	>BG3_POLYGON_DT+006H*4+2
		CLC
		ADC	#002H
		STA	>BG3_POLYGON_DT+000H*4+2
		STA	>BG3_POLYGON_DT+007H*4+2
;
		LDA	<EWORK6				;LOWER SIDE Y POSITION
		STA	>BG3_POLYGON_DT+00CH*4+2
		STA	>BG3_POLYGON_DT+00BH*4+2
		SEC
		SBC	#001H
		STA	>BG3_POLYGON_DT+00DH*4+2
		STA	>BG3_POLYGON_DT+00AH*4+2
		SEC
		SBC	#001H
		STA	>BG3_POLYGON_DT+00EH*4+2
		STA	>BG3_POLYGON_DT+009H*4+2
		SEC
		SBC	#002H
		STA	>BG3_POLYGON_DT+00FH*4+2
		STA	>BG3_POLYGON_DT+008H*4+2
;
		LDA	!ENDSXL,X			;(CREG0) <- Ｘ　ＰＯＳ．
		STA	CREG0				;
		LDA	!ENDSYL,X			;(CREG1) <- Ｙ　ＰＯＳ．
		STA	CREG1				;
		LDA	#010H				;ポイント数
		STA	R1				;
		LDA	#BG3_POLYGON_DT			;ポリゴンデータスタートアドレス
		STA	CREG4				;
		LDA	#BG3_POLYGON_DT+(010H*4)-4	;ポリゴンデータエンドアドレス
		STA	CREG5				;
;
		M_CHIP	BG_POLYGON_SET
;
BG3BL_SET1	EQU	$
		JSL	>M_DMA_BFST
		LWORD	HDMABUF		;to address set
		LWORD	HDMABF		;from address set
		WORD	0D2H*2*2	;number of byte set

;--------------< config. set >-------------------
		MI8
;
;;		LDA	#013H
;;		STA	!MANSEL
		LDA	#004H
		TSB	MANSEL
;;		LDA	#004H
;;		STA	SUBSEL
;;		LDA	#022H
;;		STA	WIND30
;;		LDA	#063H
;;		STA	SUBADF
		LDA	#00011000B
		TSB	HD420C
		M16
		LDX	<ENINDX

		RTS
;
;>>>>>>>>>>
;function
; ＢＧ３ブロック対ＢＧ当たり判定
;name
; BG3BL_CHK
;entry
; EWORK0 X left  point
; EWORK2 X right point
; EWORK4 Y upper point
; EWORK6 Y lower point
;return
; non
;work
; EWORK0 - B
;<<<<<<<<<<
BG3BL_CHK	EQU	$
;
		JSR	BG3BL_PGET
;
		LDA	<EWORK0
		CLC				;
		ADC	!ENXPSL,X		;
		STA	<EWORK0			;
		LDA	<EWORK2
		CLC				;
		ADC	!ENXPSL,X		;
		STA	<EWORK2			;
		LDA	<EWORK4
		CLC				;
		ADC	!ENYPSL,X		;
		STA	<EWORK4			;
		LDA	<EWORK6
		CLC				;
		ADC	!ENYPSL,X		;
		STA	<EWORK6			;
;
BG3BL_HCK_002	EQU	$
;
		LDA	#007H
		STA	<EWORK8
;
		JSR	SQCHKBG
;
		LDX	<ENINDX
		LDA	<EWORKE			;当たり判定フラグセーブ
		ORA	<ENWRK0,X		;
		STA	<ENWRK0,X		;
;
		LDA	<EWORKE			;
		AND	#00003H			;upper & lowler check
		BEQ	BG3BL_HCK_300
;;		CMP	#00003H
;;		BEQ	BG3BL_HCK_300
;
BG3BL_HCK_210	EQU	$
		LDA	<EWORKE
		BIT	#00001H
		BNE	BG3BL_HCK_230		;下当たり？[yes->BG3BL_HCK_230]
;---- upper hit
BG3BL_HCK_220	EQU	$
		LDA	<EWORK4			;---upper hit
;;;		AND	#0000FH
		EOR	#0000FH
		BEQ	BG3BL_HCK_260		;当たり幅ゼロ？[yes->BG3BL_HCK_280]
		INC	A
		AND	#0000FH
		STA	<EWORKA
;;;		STA	!ENWRKA,X
;
		LDA	ENYSPD,X
		BPL	BG3BL_HCK_260		;[->BG3BL_HCK_280]
;
		STZ	ENYSPD,X
		STZ	ENMOVY,X
;
		BRA	BG3BL_HCK_260		;[->BG3BL_HCK_280]
;---- lower hit
BG3BL_HCK_230	EQU	$
		LDA	<EWORK6
		INC	A
		AND	#0000FH
		EOR	#0FFFFH
		INC	A
		STA	<EWORKA
;;;		STA	!ENWRKA,X
;
		LDA	ENYSPD,X
		BMI	BG3BL_HCK_260
;
		STZ	ENYSPD,X
		STZ	ENMOVY,X
;
BG3BL_HCK_260	EQU	$
		LDA	ENYPSL,X
		CLC
		ADC	<EWORKA
		STA	ENYPSL,X
;
;;		LDA	EPWIDY,X
;;		CLC
;;		ADC	<EWORKA
;;		STA	EPWIDY,X
;
BG3BL_HCK_280	EQU	$
;;		LDA	<EWORKE		;upper & left flg off
;;		AND	#0FFFCH		;
;;		STA	<EWORKE		;
;
;;		BRA	BG3BL_HCK_800
;
BG3BL_HCK_300	EQU	$
BG3BL_HCK_310	EQU	$
;
		LDA	<EWORKE
		AND	#0000CH
		BEQ	BG3BL_HCK_400
		CMP	#0000CH
		BEQ	BG3BL_HCK_380
		BIT	#00008H		;left hit ?
		BEQ	BG3BL_HCK_320	;no ---> BG3BL_HCK_320
;---- left hit
		LDA	<EWORK0
		AND	#0000FH
		EOR	#0000FH
		INC	A
		AND	#0000FH
		STA	<EWORK8
;;;		STA	!ENWRK8,X
;
		LDA	ENXSPD,X
		BPL	BG3BL_HCK_360		;[->BG3BL_HCK_280]
;
		STZ	ENXSPD,X
		STZ	ENMOVY,X
;
		BRA	BG3BL_HCK_360
;
;---- right hit
BG3BL_HCK_320	EQU	$
;
		LDA	<EWORK2
		INC	A
		AND	#0000FH
		EOR	#0FFFFH
		INC	A
		STA	<EWORK8
;;;		STA	!ENWRK8,X
;
		LDA	ENXSPD,X
		BMI	BG3BL_HCK_360
;
		STZ	ENXSPD,X
		STZ	ENMOVX,X
;
BG3BL_HCK_360	EQU	$
		LDA	ENXPSL,X
		CLC
		ADC	<EWORK8
		STA	ENXPSL,X
;
;;		LDA	EPWIDX,X
;;		CLC
;;		ADC	<EWORK8
;;		STA	EPWIDX,X
;
BG3BL_HCK_380	EQU	$
;;		LDA	<EWORKE
;;		AND	#0FFF3H
;;		STA	<EWORKE
;
BG3BL_HCK_400	EQU	$
;;		LDA	<EWORKE
;;		BIT	#000FH
;;		BEQ	BG3BL_HCK_800
;
;;		JMP	BG3BL_HCK_210
;
;
BG3BL_HCK_800	EQU	$
;
		RTS
;
;
;>>>>>>>>>>
;function
; YOSSY AND BG3 BLOCK CHECK
;name
; BG3BL_PCHK
;entry
;return
; <ENWRK0:1
;  bit4 : on player 1 = on 0 = off
;  bit3 : left      1 = hit 0 = non hit
;  bit2 : right     1 = hit 0 = non hit
;  bit1 : high      1 = hit 0 = non hit
;  bit0 : lowler    1 = hit 0 = non hit
;break
;<<<<<<<<<<
;
POYOPLUS_DT	EQU	$		;ぽよぽよ処理用データ
		WORD	00001H, 0FFFFH
;
BG3BL_PCHK	EQU	$
;
;--- yossy push & revise
;
		STZ	<EWORKE
;
		LDX	<ENINDX
;
		LDA	<ENWRK2,X
		ASR16
		STA	!EWIDEX,X
		LDA	<ENWRK4,X
		ASR16
		STA	!EWIDEY,X
;
		LDA	!PLMVSP			
		PHA				;プレイヤーＸスピード保存
		JSR	PCHKSUB			;プレイヤー全当たりチェック
		PLA				;プレイヤーＸスピード復帰
;;;		BCC	BG3BL_PCHK200		;ヨコ方向当たり？[yes->BG3BL_PCHK200]
		BCS	BG3BLPCHK_010
		JMP	BG3BL_PCHK200
;
BG3BLPCHK_010	EQU	$
		CPY	#001H
		BNE	BG3BL_PCHK090		;当たり有り？（縦方向当たり有り？）[no->BG3BL_PCHK090]
;
;--------縦方向あたり
;
		LDA	<EWORKE
		BEQ	BG3BLPCHK_100		;足当たり？[no->BG3BLPCHK_090]
;
		LDA	!PLDOSN
		BEQ	BG3BLPCHK_080		;ドスン？[no->BG3BLPCHK_080]
;
		LDA	<ENWRK0,X	
		AND	#000CH
		CMP	#000CH
		BEQ	BG3BLPCHK_080		;ＢＧ３ブロック左右両当たり？[yes->BG3BLPCHK_080]
;
		LDA	<ENWRK4,X
		CMP	#00DH+1
		BCC	BG3BLPCHK_070		;まだ縮められる？[no->BG3BLPCHK_070]
;
		LDA	<ENWRK2,X
		PHA
;
		LDA	<ENWRK4,X
		DEC	A
		TAY
		LDA	#BG3BL_AREA
;
		JSR	SQSDCAL			;<A>/<Y> = <A> & (!4214H)
;
		STA	<ENWRK2,X
;
		DEC	<ENWRK4,X
		LDA	<ENWRK4,X
		LSR	A			;bit 0 -> <Carry>
		BCS	BG3BLPCHK050		;ブロック厚み偶数？[no->PHCKS_342]
;
		INC	!PLYPSL
;
		INC	!ENYPSL,X
;
BG3BLPCHK050	EQU	$
;
		PLA
;
		EOR	#0FFFFH
		SEC
		ADC	<ENWRK2,X
		LSR	A
		STA	<EWORK0
;
		LDA	<ENWRK0,X		
		BIT	#0000CH
		BEQ	BG3BLPCHK_080		;ＢＧ３ブロック左右どちらか当たりあり？[no->BG3BLPCHK_080]
		BIT	#00008H
		BEQ	BG3BLPCHK_060		;ＢＧ３ブロック左当たり？[no->BG3BLPCHK_060]
;
		LDA	!ENXPSL,X
		CLC
		ADC	<EWORK0
		STA	!ENXPSL,X
;
		BRA	BG3BLPCHK_080
;
BG3BLPCHK_060	EQU	$
		LDA	!ENXPSL,X
		SEC
		SBC	<EWORK0
		STA	!ENXPSL,X
;
		BRA	BG3BLPCHK_080
;
BG3BLPCHK_070	EQU	$
;
		LDA	<ENWRK0,X
		ORA	#00400H
		STA	<ENWRK0,X
;
BG3BLPCHK_080	EQU	$
		LDA	<ENWRK0,X		;乗っているフラグ＆縦当たりフラグオン
		ORA	#00110H
		STA	<ENWRK0,X
;
BG3BL_PCHK090	EQU	$
		JMP	BG3BL_PCHK500		;[->おわり＆フラグセット]
;
BG3BLPCHK_100	EQU	$
;
		LDA	!PLJUMP
		BNE	BG3BLPCHK_150		;ジャンプ中？[yes->BG3BLPCHK_180]
;
		LDY	<EWORK6
		LDA	PLXPSL
		CLC
		ADC	EWORK2,Y
		STA	PLXPSL
;
		BRA	BG3BLPCHK_180
;
BG3BLPCHK_150	EQU	$
		LDA	<ENWRK0,X
		ORA	#00100H
		STA	<ENWRK0,X
;
BG3BLPCHK_180	EQU	$
		JMP	BG3BL_PCHK500		;[->おわり＆フラグセット]
;
;
;---- 横方向当たり
;
BG3BL_PCHK200	EQU	$
		CMP	PLMVSP
		BNE	BG3BL_PCHK201		;横方向当たりOK?[yes->BG3BL_PCHK201]
		JMP	BG3BL_PCHK500
BG3BL_PCHK201	EQU	$
		STA	<EWORK8			;Ｘ方向スピード保存
;
		LDA	<ENWRK0,X
		ORA	#00020H
		STA	<ENWRK0,X		;プレイヤー押してたフラグＯＮ
;
		LDY	<EWORK6
		LDA	!EWORK2,Y
		STA	<EWORKA			;EWORKA	= プレイヤーＸ軸方向補整量
;
		LDA	<ENWRK0,X		;save フラグ
		PHA				;
		AND	#0BFFFH			;
		STA	<ENWRK0,X		;前フレーム地面乗りフラグリセット
		PLA				;load フラグ
		BIT	#04000H			;
		BNE	BG3BL_PCHK220		;前フレーム地面乗ってた? [yes->BG3BL_PCHK220]
;
		LDY	#001H			;フラグセット
;
		LDA	!PLJUMP
		BNE	BG3BL_PCHK280		;プレイヤージャンプ中[yes->BG3BL_PCHK280]
;
BG3BL_PCHK220	EQU	$
;
		LDA	PLNAGE
		BNE	BG3BL_PCHK280		;プレイヤー投げ？[yes->BG3BL_PCHK280]
;
		LDA	BERFLG
		BNE	BG3BL_PCHK280		;舌出してる？[yes->BG3BL_PCHK280]
;
		LDY	<EWORK6
		LDA	!EWORK2,Y
		BPL	BG3BL_PCHK240		;プレイヤープラス補整?(ブロック補整マイナス) [yes->BG3BL_PHCK_500]
;
		LDA	<ENWRK0,X
		BIT	#00004H
		BNE	BG3BL_PCHK290		;ブロック移動不可? （縮む？）[yes->BG3BL_PHCK_990]
		BRA	BG3BL_PCHK260		;ブロック移動
;
BG3BL_PCHK240	EQU	$
;
		LDA	<ENWRK0,X
		BIT	#00008H
		BNE	BG3BL_PCHK290		;ブロック移動不可? （縮む？）[yes->BG3BL_PHCK_990]
;
;----------ブロック移動
;
BG3BL_PCHK260	EQU	$
;
		LDY	!PLYSPD
		BMI	BG3BL_PCHK280		;プレイヤー上方向へ移動中？[yes->]
;
		LDA	!ENXPSL,X
		SEC
		LDX	<EWORK6
		SBC	BG3BL_PHCK_DT0,X
		LDX	<ENINDX
		SEC
		SBC	<EWORKA
		STA	!ENXPSL,X
;
		LDA	<EWORK8			;EWORK8 = プレイヤーＸスピード
		PHA
		CLC
		ADC	#0C0H
		CMP	#0C0H*2+1
		PLA
		BCC	BG3BL_PCHK265
;
		LDA	#00E0H
		LDX	<EWORK6
		BNE	BG3BL_PCHK265
;
		LDA	#0FF20H	
BG3BL_PCHK265	EQU	$
		STA	!PLMVSP			;
		LDA	#00000H			;
		STA	!PLXSPD			;
;
		LDA	ENTIM0,X
		BNE	BG3BL_PCHK268
;
		LDA	#059H			;ブロック移動＆押され音
		JSL	>SOUND_3_ON		;音
;
		LDA	#00AH
		STA	ENTIM0,X
;
BG3BL_PCHK268	EQU	$
		JMP	BG3BL_PCHK400
;
;
;----------プレイヤー補整
;
BG3BL_PCHK280	EQU	$
		LDA	!PLXPSL			;プレイヤー自体の補整
		CLC				;
		LDX	<EWORK6			;
		ADC	BG3BL_PHCK_DT0,X	;
		LDX	<ENINDX			;
		CLC				;
		ADC	<EWORKA			;
		STA	!PLXPSL			;
;
		CPY	#000H
		BNE	BG3BL_PCHK282		;ブロック押せないによるプレイヤー補正？[no->BG3BL_PCHK282]
		JMP	BG3BL_PCHK400
BG3BL_PCHK282	EQU	$
;
		STZ	!PLXSPD			;
		STZ	!PLMVSP			;
;
		JMP	BG3BL_PCHK500
;
;----------ブロック縮む
;
BG3BL_PCHK290	EQU	$			;縮む処理
;
		LDA	<EWORK8			;EWORK8 = プレイヤーＸスピード
		PHA
		CLC
		ADC	#0C0H
		CMP	#0C0H*2+1
		PLA
		BCC	BG3BL_PCHK295
;
		LDA	#00C0H			;
		LDX	<EWORK6
		BNE	BG3BL_PCHK295
;
		LDA	#0FF40H	
BG3BL_PCHK295	EQU	$
		STA	!PLMVSP			;
		LDA	#00000H			;
		STA	!PLXSPD			;
;
		LDX	<ENINDX
;
		LDY	#000H			;フラグセット（プレイヤ補正時に使用）
;
		LDA	<ENWRK0,X
		AND	#00003H
		CMP	#00003H
		BEQ	BG3BL_PCHK280		;ＢＧ３ブロック上下ともあたっている？[yes->BG3BL_PCHK280]
;
		LDA	<ENWRK2,X
		DEC	A
		TAY
		LDA	#BG3BL_AREA
;
		JSR	SQSDCAL			;<A>/<Y> = <A> & (!4214H)
;
		LDY	#000H			;フラグセット（プレイヤ補正時に使用）
;
		CMP	#040H+1
		BCS	BG3BL_PCHK280		;もう縮められない？[yes->BG3BL_PCHK290]
;
		STA	<ENWRK4,X
;
		DEC	<ENWRK2,X
;
		LDA	<ENWRK2,X		;縮めたときに発生する隙間の補整
		AND	#000001H		;
		ASL	A			;
		ASL	A			;
		CLC				;
		ADC	<EWORK6			;
		TAY				;
		LDA	BG3BL_PHCK_DT2,Y	;
		CLC				;
		ADC	!ENXPSL,X		;
		STA	!ENXPSL,X		;
;
		LDX	<EWORK6			;
		LDA	BG3BL_PHCK_DT0,X	;
;;;		ASL	A			;
		LDX	!ENINDX			;
		CLC				;
		ADC	<EWORKA			;
		CLC				;
		ADC	!PLXPSL			;
		CLC				;
		ADC	BG3BL_PHCK_DT2,Y	;
		STA	!PLXPSL			;
;
		LDA	ENTIM0,X
		BNE	BG3BL_PCHK293
;
		LDA	#059H			;ブロック移動＆押され音
		JSL	>SOUND_3_ON		;音
;
		LDA	#00AH
		STA	ENTIM0,X
;
BG3BL_PCHK293	EQU	$
;
		LDX	<ENINDX
;
;;		JMP	BG3BL_PCHK300
;
;---- プレイヤー押しポーズセット
;
BG3BL_PCHK400	EQU	$
		INC	PUSHFG
		INC	PSPUSH
;;;;		LDA	!PLXSPD
;;;		LDA	!PLMVSP
;;		BPL	BG3BL_PCHK405		;
;;		EOR	#0FFFFH
;;		INC	A
;;BG3BL_PCHK405	EQU	$
;;		CLC
;;		ADC	<ENCONT,X
;;		CMP	#00040H
;;		BMI	BG3BL_PCHK420
;;;
;;		PHA
;;;
;;		LDY	!ENWRKC,X
;;		INY
;;		CPY	#PUSHTM+(4*5)
;;		BCC	BG3BL_PCHK415
;;		LDY	#PUSHTM
;;BG3BL_PCHK415	EQU	$
;;		TYA
;;		STA	!ENWRKC,X
;;;
;;		PLA
;;;
;;		AND	#0003FH
;;BG3BL_PCHK420	EQU	$
;;		STA	<ENCONT,X
;
;;		LDY	!ENWRKC,X
;;		TYA
;;		SEC
;;		SBC	#PUSHTM
;;		BCC	BG3BL_PCHK500		;wait?[yes->BG3BL_PCHK500]
;;		LSR	A
;;		LSR	A
;;		ASL	A
;;		TAX
;;		LDA	>PUSHPT,X
;;		STA	PLPATN
;;;
;;		LDX	<ENINDX
;
BG3BL_PCHK500	EQU	$
;
;;		LDA	<EWORKE
;;		ORA	<ENWRK0,X
;;		STA	<ENWRK0,X
;;		STA	<EWORKE
;
		RTS
;
;>>>>>>>>>>
;function
; プレイヤーとの当たり判定チェック
;name
; PCHKSUB
;entry
; PWIDEX,PWIDEY
; EWIDEX,EWIDEY
; EPWIDX,EPWIDY
;return
; EWORK0-D
; EWORKE HIT FLAG
;         bit 4 = 0 : X
;                 1 : X hit
;         bit 5 = 0 :
;               = 1 :
;work
; EWORK0:1 : WORK
; EWORK2:3 : left  hit value
; EWORK4:5 : right hit value
; EWORK6:7 : Y index (left or right)
; EWORK8:9 : head hit value
; EWORKA:B : foot hit value
; EWORKC:D : Y index (head or foot)
; EWORKE:F :
;<<<<<<<<<<
PHCKS_DT0	EQU	$
		WORD	00001H, 0FFFFH
;
PCHKSUB		EQU	$
;
		STZ	<EWORKE
;
		BRA	PHCKS_100
PHCKS_099
		LDY	#000H		;プレイヤーに当たっていない。
		SEC			;横当たりなし
		RTS
;
;-- head & foot check
PHCKS_100	EQU	$
		LDA	!PWIDEY
		CLC
		ADC	!EWIDEY,X
		STA	<EWORK0
;
		LDA	!EPWIDY,X
		SEC
		SBC	<EWORK0
		CLC
		ADC	!ENWRK8,X
;;;		BEQ	PHCKS_110	;95.02.22 del
		BPL	PHCKS_099
PHCKS_110	EQU	$
		STA	<EWORKA		;foot cross dot
;
		LDA	<EWORK0
		SEC
		ADC	!EPWIDY,X
		BEQ	PHCKS_099	;95.02.22 add
		BMI	PHCKS_099
		STA	<EWORK8		;head closs dot
;
		LDY	#000H		;head cross
		LDA	!EPWIDY,X	;revise vector <hit check>
		BMI	PHCKS_120
		LDY	#002H		;foot cross
PHCKS_120	EQU	$
		STY	<EWORKC
;;		LDA	<EWORKA
;;		LDY	#000H
;;		CLC
;;		ADC	<EWORK8
;;		BMI	PHCKS_120
;;		LDY	#002H
;;PHCKS_120	EQU	$
;;		STY	<EWORKC
;
;--- right & left check
PHCKS_200	EQU	$
		LDA	!PWIDEX
		CLC
		ADC	!EWIDEX,X
		STA	<EWORK0
;
		LDA	!EPWIDX,X
		SEC
		SBC	<EWORK0
		BPL	PHCKS_099	;cross out? [yes -> PHCK_BON_900]
		STA	<EWORK4		;player right cross dot(プレイヤー右側)
PHCKS_210	EQU	$
;
		LDA	<EWORK0
		CLC
		ADC	!EPWIDX,X
		BEQ	PHCKS_099
		BMI	PHCKS_099
		STA	<EWORK2		;player left cross dot(プレイヤー左側)
;
		LDY	#000H
		LDA	!EPWIDX,X
		BMI	PHCKS_220
		LDY	#002H
PHCKS_220	EQU	$
		STY	<EWORK6
;;		LDA	<EWORK4
;;		LDY	#000H
;;		CLC
;;		ADC	<EWORK2
;;		BMI	PHCKS_220
;;		LDY	#002H
;;PHCKS_220	EQU	$
;;		STY	<EWORK6
;
PHCKS_300	EQU	$
		LDA	EWORK2,Y
		BPL	PHCKS_310
		EOR	#0FFFFH
		INC	A
PHCKS_310	EQU	$
		STA	<EWORK0
		LDY	<EWORKC
		LDA	EWORK8,Y
		BPL	PHCKS_320
		EOR	#0FFFFH
		INC	A
PHCKS_320	EQU	$
		CMP	<EWORK0
		BCC	PHCKS_321
		JMP	PHCKS_400
PHCKS_321	EQU	$
		CMP	#00DH		;head or foot revise
		BCC	PHCKS_322
		JMP	PHCKS_400
PHCKS_3210	EQU	$
		LDA	#0040H
		STA	!PLMVSP
;
		LDA	<ENWRK0,X
		ORA	#00040H
		STA	<ENWRK0,X
;
		JMP	PHCKS_400
PHCKS_322	EQU	$
;
		LDA	EWORK8,Y
		BEQ	PHCKS_330	;foot cross? [yes->PHCKS_330]
		BMI	PHCKS_330	;foot cross? [yes->PHCKS_330] 
;--- head cross
		CLC
		ADC	PLYPSL
		STA	PLYPSL
		STZ	PLSPJP
		BRA	PHCKS_340
;--- foot cross
PHCKS_330	EQU	$
		SEC
		ADC	!PLYPSL
		STA	!PLYPSL
		LDA	!ENYPSL,X
		SEC
		SBC	!ENYP2L
		SEC
		ADC	!PLYPSL
		STA	!PLYPSL
		LDY	PLYSPD+1
		BPL	PHCKS_331	;player jump up
		JMP	PHCKS_900	;player jump up
;
PHCKS_331	EQU	$
		LDA	!ENXPSL,X
		SEC
		SBC	!ENXP2L
		CLC
		ADC	!PLXPSL
		STA	!PLXPSL
;
		INC	!ONLFFG
;
		INC	<EWORKE
;
		LDA	!PLYSPD
		STA	<EWORKC
;
PHCKS_340	EQU	$
;
		LDA	!ENYSPD,X
		BPL	PHCKS_350
		LDA	#00000H
PHCKS_350	EQU	$
		STA	!PLYSPD
		LDY	#001H		;プレイヤーに当たっている
		SEC			;横当たり無し
		RTS
;--- side cross
PHCKS_400	EQU	$
;
;;		LDA	<ENWRK0,X
;;		BIT	#00800H
;;		BEQ	PHCKS_415
;
;;		LDA	<ENWRK0,X
;;		AND	#0DFFFH
;;		STA	<ENWRK0,X
;
;;		STZ	!PLJUMP
;
PHCKS_415	EQU	$
		LDX	<EWORK6
		LDA	<EWORK0
		LSR	A
		BEQ	PHCKS_420
;
;;		LDA	<EWORKE
;;		ORA	#00010H
;;		STA	<EWORKE
;;		LDA	PLXPSL
;;		CLC
;;		ADC	>PHCKS_DT0,X
;;		STA	PLXPSL
PHCKS_420	EQU	$
		LDA	PLMVSP
		EOR	>PHCKS_DT0,X
		BPL	PHCKS_800
;;		LDA	<EWORKE
;;		ORA	#00020H
;;		STA	<EWORKE
		STZ	PLXSPD
		STZ	PLMVSP
PHCKS_800	EQU	$
		LDX	<ENINDX
;
PHCKS_900	EQU	$
		LDY	#001H		;プレイヤーに当たっている
		CLC			;横当たり有り
		RTS
;
;>>>>>>>>>>
;function
; ぽよぽよ処理
;name
;BG3BL_POYO
;entry
;return
;<<<<<<<<<<
;
BG3BL_POYO	EQU	$
;
		LDA	<ENWRK0,X
		BIT	#00100H
		BEQ	BG3BL_POYO100		;乗っている？[no->BG3BL_POYO100]
;
		LDA	<ENWRK0,X
;;		BIT	#01000H
		BIT	#08000H
		BNE	BG3BL_POYO300		;乗ったばかり？（前フレームは乗ってない？）[no->BG3BL_POYO100]
;
;
;;		LDA	<EWORKC
;;		CMP	#0200H
;;		BCC	BG3BL_POYO300		;プレイヤーYスピード080H以上?[no->BG3BL_POYO300]
;
		LDA	#003H
		STA	!ENWRK6,X		;ぽよぽよ目標値
;
		LDA	!PLDOSN
		BEQ	BG3BL_POYO080		;ドスン？[no->BG3BL_POYO080]
;
		LDA	#005H
		STA	!ENWRK6,X		;ぽよぽよ目標値
BG3BL_POYO080	EQU	$
;;;		STZ	!ENWRK8,X		;ぽよぽよ現在値
;
		BRA	BG3BL_POYO300
;
BG3BL_POYO100	EQU	$
;
		LDA	<ENWRK0,X
		BIT	#00020H
		BEQ	BG3BL_POYO300		;プレイヤー押している？[no->BG3BL_POYO300]
;
		BIT	#02000H
		BNE	BG3BL_POYO300		;前フレーム押している？[yes->BG3BL_POYO300]
;
		LDA	!ENWRK0,X
		ORA	#00080H
		STA	!ENWRK0,X
;
		LDA	#0FFFDH
		STA	!ENWRK6,X		;ぽよぽよ目標値(-2)
;
BG3BL_POYO300	EQU	$
		LDA	!ENWRK6,X
		BEQ	BG3BL_POYO900		;ぽよぽよ処理中？[no->BG3BL_PHCK_437]
;
BG3BL_POYO310	EQU	$
		SEC				;目標値−現在値(目標値への偏差)がでる。
		SBC	!ENWRK8,X		;
		BEQ	BG3BL_POYO500		;ぽよぽよ目標値達成？[yes->BG3BL_POYO500]
		AND	#08000H			;MSBの取得
		CLC
		ROL	A
		ROL	A
		ASL	A
		TAY
		LDA	!POYOPLUS_DT,Y
		CLC
		ADC	ENWRK8,X
		STA	ENWRK8,X		;ぽよぽよ修正値
;
		LDA	<ENWRK0,X
		BIT	#00010H
		BEQ	BG3BL_POYO380		;プレイヤー乗っている？[no->BG3BL_POYO380]
;
		LDA	PLYSPD
		BMI	BG3BL_POYO380		;プレイヤー上昇中？[yes->BG3BL_POYO380]
;
		LDA	!POYOPLUS_DT,Y
		CLC
		ADC	PLYPSL
		STA	PLYPSL
;
BG3BL_POYO380	EQU	$
;
		LDA	ENTIM1,X
		BNE	BG3BL_POYO900
;
		LDA	#062H
		JSL	>SOUND_3_ON
;
		LDA	#00CH
		STA	ENTIM1,X
;
		BRA	BG3BL_POYO900
;
BG3BL_POYO500	EQU	$
;
		LDA	<ENWRK0,X
		BIT	#00080H
		BNE	BG3BL_POYO600		;前フレームドスンしていた？[yes->BG3BL_POYO600]
BG3BL_POYO505	EQU	$
		LDA	ENWRK6,X
		EOR	#0FFFFH
		INC	A
		BMI	BG3BL_POYO510		;目標値はマイナス？[yes->BG3BL_PHCK_4360]
		DEC	A
BG3BL_POYO510	EQU	$
		STA	ENWRK6,X
		BRA	BG3BL_POYO310
;
BG3BL_POYO600	EQU	$
;
;
		LDA	<ENWRK0,X
		AND	#0FF7FH
		STA	<ENWRK0,X
;
		LDA	#00001H
		STA	!ENWRK6,X
;
		BRA	BG3BL_POYO310
;
;
BG3BL_POYO900	EQU	$
;
		RTS
;
BG3BL_PHCK_DT0	EQU	$
		WORD	0FFFFH, 00001H		;BLOCK [LEFT,RIGHT] PLAYER [RIGHT,LEFT]
BG3BL_PHCK_DT1	EQU	$
		WORD	00001H, 0FFFFH		;BLOCK [LEFT,RIGHT] PLAYER [RIGHT,LEFT]
;
BG3BL_PHCK_DT2	EQU	$
		WORD	00000H, 00001H		;EVEN, <BLOCK LEFT>, <BLOCK RIGHT>
		WORD	0FFFFH, 00000H		;ODD,  <BLCOK LEFT>, <BLOCK RIGHT>
;
;>>>>>>>>>>
;function
; 四角の面積と一片の長さよりもう一片の長さを求める。
;name
; SQSDCAL (SQUARE SIDE CALC)
;entry
; <A> : 面積
; <Y> : 一片の長さ
;return
; <A> : もう一片の長さ
;<<<<<<<<<<
SQSDCAL	EQU	$
;
		STA	!04204H		;CPU Register
		STY	!04206H		;CPU Register
;
		NOP			;wait
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
;
		LDA	!04214H		;
;
		RTS
;
;
;>>>>>>>>>>
;function
; square check for BG (四角ブロックＢＧ判定)
;name 
; SQCHKBG
;entry
; EWORK0:1 X left  point <non break>
; EWORK2:3 X right point <non break>
; EWORK4:5 Y upper point <non break>
; EWORK6:7 Y lower point <non break>
; EWORK8:9 X&Y MAX SPEED
;return
; EWORKE:F hit point flg
;  bit 3 : X left  hit
;  bit 2 : X right hit
;  bit 1 : Y upper hit
;  bit 0 : Y lower hit
;  EWORKA : for point check counter
;  EWORKC : for point check counter
;<<<<<<<<<<
SQCHKBG		EQU	$
;
		STZ	<EWORKE			;BG HIT FLG RESET
;
SQCBG_100	EQU	$			;--- left & right line hit check
		DEC	<EWORK0			;X left  check point set
		INC	<EWORK2			;X right check point set
		LDA	<EWORK4			;Y scan point set
		CLC				;
		ADC	<EWORK8			;max speed add
		STA	<EWORKA			;
		LDA	<EWORK6
		SEC
		SBC	<EWORK8
		STA	<EWORKC
SQCBG_110	EQU	$			;
		LDA	<EWORK0			;left check
		STA	R8			;
		LDA	<EWORKA			;
		STA	R0			;
		M_CHIPR M_BGUNIT_READ		;
;
		LDA	R5			;hit?
		BEQ	SQCBG_120		;no ---> SQCBG_120
;
		LDA	<EWORKE
		ORA	#008H
		STA	<EWORKE
;
SQCBG_120	EQU	$
		LDA	<EWORK2			;right check
		STA	R8			;
		LDA	<EWORKA			;
		STA	R0			;
		M_CHIPR M_BGUNIT_READ		;
;
		LDA	R5			;hit?
		BEQ	SQCBG_130		;no ---> SQCBG_130
;
		LDA	<EWORKE
		ORA	#004H
		STA	<EWORKE
;
SQCBG_130	EQU	$
		LDA	<EWORKE			;
		AND	#00CH			;
		CMP	#00CH			;left hit & right hit?
		BEQ	SQCBG_200		;yes ---> SQCBG_200
;
SQCBG_140	EQU	$
		LDA	<EWORKA
		AND	#0FFF0H
		CLC
		ADC	#00010H
		STA	<EWORKA
;
;;;		LDA	<EWORKA			;now check left & right check Y point last over?
		CMP	<EWORKC			;
		BEQ	SQCBG_110		;no --> SQCBG_110 (next check point == last check point)
		BCC	SQCBG_110		;no --> SQCBG_110 (next check point <  last check point))
;
SQCBG_200	EQU	$
		INC	<EWORK0		;X left  recover
		DEC	<EWORK2		;X right recover
		DEC	<EWORK4		;Y upper check point set
		DEC	<EWORK4
		INC	<EWORK6		;Y lower check point set
		LDA	<EWORK0		;X left 
		CLC
		ADC	<EWORK8
		STA	<EWORKA
		LDA	<EWORK2
		SEC
		SBC	<EWORK8
		STA	<EWORKC
;
SQCBG_210	EQU	$
;;;		LDA	<EWORKA		;upper point check
;;;		STA	R8		;
;;;		LDA	<EWORK4		;
;;;		STA	R0		;
;;;		M_CHIPR M_BGUNIT_READ	;
;;;;
;;;		LDA	R5		;hit
;;;		BEQ	SQCBG_220	;no -> SQCBG_220
;;;;
;;;		LDA	<EWORKE
;;;		ORA	#00002H
;;;		STA	<EWORKE
;
SQCBG_220	EQU	$
		LDA	<EWORKA		;lower point check
		STA	R8		;
		LDA	<EWORK6		;
		STA	R0		;
;					;
		M_CHIPR M_BGUNIT_READ	;
;
		LDA	R5
		BEQ	SQCBG_230	;hit? [no -> SQCBG_230]
;
		LDA	<EWORKE
		ORA	#00001H
		STA	<EWORKE
;
SQCBG_230	EQU	$
		LDA	<EWORKE		;upper & lower full hit?
		AND	#00003H		;
		CMP	#00003H		;
		BEQ	SQCBG_300	;yes -> SQCBG_300
;
		LDA	<EWORKA
		AND	#0FFF0H
		CLC
		ADC	#00010H
		STA	<EWORKA
;
		CMP	<EWORKC
		BEQ	SQCBG_210
		BCC	SQCBG_210
;
SQCBG_300	EQU	$
;
		INC	<EWORK4		;upper recover
		INC	<EWORK4		;upper recover
		DEC	<EWORK6		;lowerrecover
;
		RTS
;
;
;-------------------------------------------------------------------------------
;
;
;************************************************************************
;*		initial ( ＢＧ３変形リフト )				*
;************************************************************************
BG3FLIN		EQU	$			;-- bg3flin --
		LDA	>BG3_POLYGON_DT
		CLC
		ADC	!ENXPSL,X
		CLC
		ADC	#00018H
		STA	!ENWRK2,X
		LDA	>BG3_POLYGON_DT+2*4+2
		CLC
		ADC	!ENYPSL,X
		SEC
		SBC	#008H
		STA	!ENWRK4,X
;
		LDA	#0600H			;回転パターン初期値（真ん中の一番下。）
		STA	<ENWRK0,X		;
;
		STZ	!ENMUKI,X
;
		STZ	!ENWRKA,X
		STZ	!ENWRKC,X
;
		STZ	!ENTIM0,X
		STZ	!ENTIM1,X
;
;;		LDA	#0001FH			;熔岩色
;;		LDA	#07F9CH
;;		LDA	#07D4AH
;;		STA	>DATACOL+(01H*2)
;;		STA	>MOTOCOL+(01H*2)
;;		LDA	#00015H
;;		LDA	#07294H
;;		LDA	#03CE7H
;;		STA	>DATACOL+(02H*2)
;;		STA	>MOTOCOL+(02H*2)
;;		LDA	#001DFH			;熔岩色
;;		LDA	#00000H
;;		LDA	#00000H
;;		STA	>DATACOL+(03H*2)
;;		STA	>MOTOCOL+(03H*2)
;
;;;		LDX	<ENINDX
;
		RTL
;
;************************************************************************
;*		move	( ＢＧ３変形リフト )				*
;************************************************************************
;
; ENWRK0:1 変形リフトパターン値(上位１バイトはパターン番号、下位１バイトはモーフィング率)
; ENWRK2:3 前フレーム変形リフト中心位置Ｘ座標
; ENWRK4:5 前フレーム変形リフト中心位置Ｙ座標
; ENWRK6:7 目の位置（中心位置よりの相対位置）
; ENWRK8:9
; ENWRKA:B 次リフトパターン値として内部で使用
; ENWRKC:D 各種フラグ
;  bit15 : ＢＧ３表示？[yes=1]
;  bit14 :
;  bit13 :
;  bit12 :
;  bit11 :
;  bit10 :
;  bit09 :
;  bit08 :
;  bit07 :
;  bit06 :
;  bit05 :
;  bit04 :
;  bit03 :
;  bit02 :
;  bit01 :
;  bit00 : 前フレーム乗っていた？[yes=1]
;
BG3FLMV		EQU	$			;-- bg3flmv --
		LDA	ENWRKC,X
		STA	<EWORKE
;
		JSR	BG3FL_SET
;
		JSR	BG3FL_KEY
		JSR	BG3FL_NFRM
		JSR	BG3FL_OSET
;
;;;		LDA	<EWORKE
;;;		STA	ENWRKC,X		;フラグ待避
;
		JSL	>ENMDCK
;
;;;		LDA	ENWRKC,X
;;;		STA	<EWORKE			;フラグ再読み込み
;
		LDA	<EWORKE
		BMI	BG3FL_MV200		;範囲外?[no->BG3FL_MV200]
;
		JSL	>ENCLEAR		;範囲外消去
		BRA	BG3FL_MV990
;
BG3FL_MV200	EQU	$
;
		LDA	ENWRKA,X
		STA	<ENWRK0,X
;
		JSR	BG3FLPCK
BG3FL_MV990	EQU	$
		LDA	<EWORKE
		STA	ENWRKC,X
		RTL
;
BG3FL_MVPRM	EQU	8		;
BG3FL_PTPRM	EQU	13		;
;>>>>>>>>>>
;function
; 変形リフト表示＆オブジェ表示＆効果セット
;name
; BG3FL_SET
;entry
;return
;break
;<<<<<<<<<<
BG3FL_SET	EQU	$
;
		LDA	#MORP_S_POINT
		STA	R1
		LDA	#MORP_D_POINT
		STA	R2
;
		LDA	#BANK LIFT_DT		;ROM BANK SET
		STA	R0			;
		STA	R8
		LDA	<ENWRK0,X		;DATA NO GET
		XBA				;
		ASL	A			;
		TAY				;
		LDA	LIFT_DT,Y		;MORP BEFORE DATA
		STA	R14			;
		INY				;
		INY				;
		LDA	LIFT_DT,Y		;MORP AFTER DATA
		STA	R7			;
		LDA	#50			;point of number
		STA	R3			;
		LDA	#00019H			;centern point number (0-)
		STA	R4			;
		LDA	#BG3_POLYGON_DT
		STA	R5
;
		LDA	<ENWRK0,X
		AND	#0FFH
		STA	R6
;
		LDA	#08000H
		TRB	<EWORKE
		LDA	ENDSXL,X		;(CREG0) <- Ｘ　ＰＯＳ．
		STA	<EWORK0			;
		STA	CREG0			;
		CLC
		ADC	#080H
		CMP	#00100H+080H*2
		BCC	BG3FL_SET_010
		JMP	BG3FL_SET_900
BG3FL_SET_010	EQU	$
		LDA	ENDSYL,X		;(CREG1) <- Ｙ　ＰＯＳ．
		STA	<EWORK2			;
		STA	CREG1			;
		CLC
		ADC	#00D2H
		CMP	#0100H+0D2H*2
		BCC	BG3FL_SET_020
		JMP	BG3FL_SET_900
;
BG3FL_SET_020	EQU	$
		LDA	#-125
		STA	CREG2			;データ補整値  対Ｘ座標
		LDA	#-214
		STA	CREG3			;データ補整値  対Ｙ座標
;
		M_CHIP	BG_MORPHING_OB2
;
		JSL	>M_DMA_BFST
		LWORD	HDMABUF		;to address set
		LWORD	HDMABF		;from address set
		WORD	0D2H*2*2	;number of byte set

;--------------< config. set >-------------------
		MI8
		LDA	#013H
		STA	MANSEL
		LDA	#004H
		STA	SUBSEL
		LDA	#022H
		STA	WIND30
		LDA	#063H
		STA	SUBADF
		LDA	#00011000B
		TSB	HD420C
;
		M16
;
		LDA	#08000H
		TSB	<EWORKE
;
BG3FL_SET_900	EQU	$
		LDX	<ENINDX
;
		RTS
;
;>>>>>>>>>>
;function : ＢＧ３回転床回転操作
; BG3FL_KEY
;entry
;return
;<<<<<<<<<<
BG3FL_KEY	EQU	$
;
;;		LDA	KEYB1L
;;		STA	<EWORKE
;;		ORA	#00100H
;;		STA	KEYB1L
;;;
;;		LDA	KEYB1L			;回転角操作（左右キー） ?
;;		AND	#00300H			;
;;		BEQ	BG3FL_K900		;  no: BG3FL_KEY0100
;;;
;;		LDA	KEYB1L
;;		BIT	#00100H		;2p.right-key push check
;;		BEQ	BG3FL_K100	;non push
;
		LDA	#BG3FL_MVPRM
		STA	<EWORK0
;
		LDA	<ENWRK0,X
		CMP	#0C00H
		BCC	BG3FL_K010
		PHA
		LDA	#BG3FL_MVPRM/2
		STA	<EWORK0
		PLA
BG3FL_K010	EQU	$
		CLC
		ADC	<EWORK0
;;;		STA	ENWRKA,X
		CMP	#BG3FL_PTPRM*100H
		BCC	BG3FL_K100
;
		LDA	#00000H
BG3FL_K100	EQU	$
		STA	ENWRKA,X
;
;;		LDA	KEYB1L
;;		BIT	#00200H
;;		BEQ	BG3FL_K200
;;;
;;		LDA	#BG3FL_MVPRM
;;		STA	<EWORK0
;;;
;;		LDA	<ENWRK0,X
;;		CMP	#0C00H
;;		BCC	BG3FL_K110
;;		PHA
;;		LDA	#BG3FL_MVPRM/2
;;		STA	<EWORK0
;;		PLA
;;BG3FL_K110	EQU	$
;;		SEC
;;		SBC	<EWORK0
;;		STA	<ENWRK0,X
;;		BPL	BG3FL_K200
;;;
;;		LDA	#BG3FL_PTPRM*100H-BG3FL_MVPRM
;;		STA	<ENWRK0,X
;;;
;;BG3FL_K200	EQU	$
;;;
;;BG3FL_K900	EQU	$
;;;
;;		LDA	<EWORKE
;;		STA	KEYB1L
;
		RTS
;
;>>>>>>>>>>
;function
; 変形リフト次フレームポイント計算
;name
; BG3FL_SET
;entry
; <ENWRKA:B : 変形リフトパターン値
;return
; <EWORK0:1 : 次フレーム変形リフト中心位置Ｘ座標
; <EWORK2:3 : 次フレーム変形リフト中心位置Ｙ座標
;break
;<<<<<<<<<<
BG3FL_NFRM	EQU	$
		LDA	ENWRKA,X		;DATA NO GET
		XBA				;
		ASL	A			;
		TAY				;
		LDA	LIFT_DT,Y		;MORP BEFORE DATA
		STA	<EWORK0			;
		INY				;
		INY				;
		LDA	LIFT_DT,Y		;MORP AFTER DATA
		STA	<EWORK2			;
;
		LDY	#0*2
		LDA	(EWORK0),Y
		AND	#0FFH
		SEC
		SBC	#125
		STA	R1
		LDA	(EWORK2),Y
		AND	#0FFH
		SEC
		SBC	#125
		STA	R3
		LDY	#2*2+1
		LDA	(EWORK0),Y
		AND	#0FFH
		SEC
		SBC	#214
		STA	R2
		LDA	(EWORK2),Y
		AND	#0FFH
		SEC
		SBC	#214
		STA	R5
		LDA	ENWRKA,X
		AND	#0FFH
		STA	R6
;
		M_CHIP	ONEPOINT_MORP
;
		LDX	<ENINDX
;
		LDA	R7
		CLC
		ADC	!ENXPSL,X
		CLC
		ADC	#00018H
		STA	<EWORK0
		LDA	R8
		CLC
		ADC	!ENYPSL,X
		SEC
		SBC	#008H
		STA	<EWORK2
;
		RTS
;
;>>>>>>>>>>
;function
; ＯＢＪセット
;name
; BG3FL_OSET
;entry
; <ENWRK2:3 : 前フレームのリフト中心位置Ｘ座標（オブジェにとっては）
; <ENWRK4:5 : 前フレームのリフト中心位置Ｙ座標
;
;
;return
;work
;<<<<<<<<<<
BG3FL_OSET_D000	EQU	$
		WORD	0FF80H, 00080H
BG3FL_OSET	EQU	$
;
		LDA	<ENWRK2,X
;;;		LDA	<EWORK0
		SEC
		SBC	ENXPSL,X
		SEC
		SBC	#008H
		STA	<EWORK4			;リフト相対Ｘ座標
		LDA	<ENWRK4,X
;;;		LDA	<EWORK2
		SEC
		SBC	ENYPSL,X
		SEC
		SBC	#008H
		STA	<EWORK6			;リフト相対Ｙ座標
;
		LDA	<EWORK0
		CMP	ENWRK2,X
		BEQ	BG3FL_OSET_010
		BCC	BG3FL_OSET_005
;
		LDA	ENMUKI,X
		ORA	#0002H
		STA	ENMUKI,X
;
		BRA	BG3FL_OSET_010
;
BG3FL_OSET_005	EQU	$
		LDA	ENMUKI,X
		AND	#0FFFDH
		STA	ENMUKI,X
;
BG3FL_OSET_010	EQU	$		
		LDA	<EWORK2
		CMP	ENWRK4,X
		BEQ	BG3FL_OSET_020
		BCC	BG3FL_OSET_015
;
		LDA	ENMUKI,X
		ORA	#00004H
		STA	ENMUKI,X
;
		BRA	BG3FL_OSET_020
;
BG3FL_OSET_015	EQU	$
		LDA	ENMUKI,X
		AND	#0FFFBH
		STA	ENMUKI,X
;
BG3FL_OSET_020	EQU	$
		LDA	ENMUKI,X
		AND	#00002H
		TAY
		LDA	!BG3FL_OSET_D000,Y
		CLC
		ADC	ENWRK6,X
		STA	<EWORK8
		BPL	BG3FL_OSET_023
		EOR	#0FFFFH
		INC	A
BG3FL_OSET_023	EQU	$
		CMP	#00400H
		BCS	BG3FL_OSET_025
;
		LDA	<EWORK8
		STA	ENWRK6,X
;
BG3FL_OSET_025	EQU	$
;
		LDA	ENWRK6,X
		AND	#0FF00H
		BPL	BG3FL_OSET_028
		ORA	#000FFH
BG3FL_OSET_028	EQU	$
		XBA
		STA	<EWORK8
;
		I16
;
		LDY	ENOAML,X		;(Y)<-ＯＡＭポインター
		LDX	#004H			;(X)<-ＯＡＭ数
BG3FL_OSET_310	EQU	$
		LDA	<EWORK8
		CLC
		ADC	<EWORK4
		CLC
		ADC	SOAM_DX,Y
		STA	SOAM_DX,Y
		LDA	SOAM_DX+2,Y
		CLC
		ADC	<EWORK6
		CLC
		ADC	#008H
		STA	SOAM_DX+2,Y
		TYA
		CLC
		ADC	#008H
		TAY
		DEX
		BNE	BG3FL_OSET_310		;セット終了[no->BG3FL_SET_310]
;
		LDX	#003H
BG3FL_OSET_320	EQU	$
		LDA	SOAM_DX,Y
		CLC
		ADC	<EWORK4
		STA	SOAM_DX,Y
		LDA	SOAM_DX+2,Y
		CLC
		ADC	<EWORK6
		STA	SOAM_DX+2,Y
		LDA	SOAM_DX+4,Y
		AND	#07FFFH
		STA	SOAM_DX+4,Y
		TYA
		CLC
		ADC	#008H
		TAY
		DEX
		BNE	BG3FL_OSET_320		;セット終了[no->BG3FL_SET_310]
;
		LDX	<ENINDX
;
		I8
;
;;		LDA	#LFAWA			;(A) <-- 効果Ｎｏ．
;;		JSL	>EXINSR			;効果エリア確保
;
;;		LDA	ENTIM1,X
;;		BNE	BG3FL_OSET600		;パターンタイマー０?[no->BG3FL_SET600]
;
;;		DEC	ENWRKA,X
;;		DEC	ENWRKA,X
;;		LDA	ENWRKA,X
;;		BPL	BG3FL_OSET580		;パターン終了？[no->BG3FL_SET580]
;
;;		LDA	#00EH*2-2		;パターン０セット
;;		STA	ENWRKA,X
;
BG3FL_OSET580	EQU	$
;;		PHX
;;		TAX
;;		LDA	!BG3FL_SETD001,X		;タイマーセット
;;		PLX
;;		STA	ENTIM1,X
;
BG3FL_OSET600	EQU	$
;
;;		LDA	ENWRKA,X
;;		PHX
;;		TAX
;;		LDA	!BG3FL_SETD000,X		;キャラクター番号セット
;;		STA	EXCHPT,Y
;;		PLX
;
BG3FL_OSET680	EQU	$
;
;;		LDA	>BG3_POLYGON_DT+0*4
;;		CLC
;;		ADC	ENXPSL,X
;;		CLC
;;		ADC	#010H
;;		STA	EXXPSL,Y
;;		LDA	>BG3_POLYGON_DT+2*4+2
;;		CLC
;;		ADC	ENYPSL,X
;;		SEC
;;		SBC	#008H
;;		STA	EXYPSL,Y
;;		LDA	#WUP0P		;pattern counter set
;;		STA	EXWRK0,Y
;;		LDA	#001H
;;		STA	EXTIM0,Y	;timer set
;;		LDA	#00003H		;［Ｓ］音
;;		JSL	>SOUND_3_ON
;
BG3FL_OSET800	EQU	$
;
		LDA	!ENTIM0,X
		BNE	BG3FL_OSET_900
;
		LDA	#WTUP0		;(A) <-- 効果Ｎｏ．（変形リフト用の泡）
		JSL	>EXINSR		;効果エリア確保
;
		LDA	ENXPSL,X
		SEC
		SBC	#008H
		STA	EXXPSL,Y
		LDA	ENYPSL,X
		SEC
		SBC	#00CH
		STA	EXYPSL,Y
		LDA	#WUP0P		;pattern counter set
		STA	EXWRK0,Y
		LDA	#003H
		STA	EXTIM0,Y	;timer set
;;		LDA	#00003H		;［Ｓ］音
;;		JSL	>SOUND_3_ON
;
		LDA	#02EH
		STA	!ENTIM0,X
;
BG3FL_OSET_880	EQU	$
		LDY	#000H
;
BG3FL_OSET_900	EQU	$
;
		I8
;
		RTS
;			0     1     2     3     4     5     6     7
BG3FL_SETD000	EQU	$							;キャラクター番号
		WORD	0007H,0008H,0009H,000AH,0009H,0008H,0007H,0006H
		WORD	0005H,0004H,0003H,0002H,0001H
		WORD	0000H
BG3FL_SETD001	EQU	$							;タイマー
		WORD	0003H,0004H,0005H,0004H,0003H,0003H,0003H,0003H
		WORD	0003H,0003H,0003H,0003H,0003H
		WORD	0003H
;
;>>>>>>>>>>
;function
; 変形リフトプレイヤーとの判定処理
;name
; BG3FLPCK
;entry
; <EWORK0:1 : リフト中心位置Ｘ座標
; <EWORK2:3 : リフト中心位置Ｙ座標
; <ENWRK2:3 : 前フレームリフト中心位置Ｘ座標
; <ENWRK4:5 : 前フレームリフト中心位置Ｙ座標
;  ENWRKC:D :
;return
; <ENWRK2:3 : 現フレームリフト中心位置Ｘ座標（次フレーム用）
; <ENWRK4:5 : 現フレームリフト中心位置Ｙ座標（次フレーム用）
;  ENWRKC:D :
;break
; EWORK4:5
;<<<<<<<<<<
BG3FLPCK	EQU	$
;
		LDA	<EWORKE
		BIT	#00001H
		BEQ	BG3FL_PCK100		;前フレーム乗っていた？[no->BG3FL_PHCK010]
;
		LDA	<EWORK0			;当たり中心Ｘ座標
		SEC
		SBC	<ENWRK2,X
		CLC
		ADC	!PLXPSL
		STA	!PLXPSL
;
		LDA	#00001H
		TRB	<EWORKE
;
BG3FL_PCK100	EQU	$
		LDA	PLYSPD
		BMI	BG3FL_PCK800		;プレイヤー上昇中？[yes->BG3FL_PCK800]
;
BG3FL_PCK105	EQU	$
		LDA	PCENTX
		SEC
		SBC	<EWORK0
		STA	<EWORK4
		ASL	A		;<N>-><C>
		LDA	PWIDEX
		BCS	BG3FL_PCK115
		EOR	#0FFFFH
		INC	A
BG3FL_PCK115	EQU	$
		CLC
		ADC	<EWORK4
		CLC
		ADC	#018H
		CMP	#030H
		BCS	BG3FL_PCK800
;
;;;		LDA	<EWORK0			;当たり中心Ｘ座標
;;;		SEC
;;;		SBC	#018H
;;;		SEC
;;;		SBC	PLXPSL
;;;		CLC
;;;		SBC	#010H
;;;		BPL	BG3FL_PCK800
;;;;
;;;		LDA	<EWORK0			;当たり中心Ｘ座標
;;;		CLC
;;;		ADC	#018H
;;;		SEC
;;;		SBC	PLXPSL
;;;		BCC	BG3FL_PCK800
;;;;
		LDA	<EWORK2			;当たり中心Ｙ座標
		SEC				;'95.04.14 add
		SBC	#0008H			;
		STA	<EWORK4
		SEC
		SBC	PLYPSL
		CLC
		CMP	#00AH
		BMI	BG3FL_PCK800
		CMP	#020H
		BCS	BG3FL_PCK800
		LDA	<EWORK4
		SEC
		SBC	#020H
		STA	PLYPSL
;
		INC	ONLFFG
;
		LDA	#00001H
		TSB	<EWORKE
;
BG3FL_PCK800	EQU	$
		LDA	<EWORK0
		STA	<ENWRK2,X
		LDA	<EWORK2
		STA	<ENWRK4,X
;
		RTS
;
;
LIFT_DT		EQU	$
		WORD	LIFT_DT0,  LIFT_DT1,  LIFT_DT2,	 LIFT_DT3,  LIFT_DT4,  LIFT_DT5,  LIFT_DT6,  LIFT_DT7
		WORD	LIFT_DT8,  LIFT_DT9,  LIFT_DTA,	 LIFT_DTB,  LIFT_DTC,  LIFT_DT0
;
;kakudo=<  0> point_n=<50>
LIFT_DT0	EQU	$
		BYTE	000H,16CH, 003H,169H, 00BH,167H, 024H,167H
		BYTE	02CH,169H, 02FH,16CH, 031H,172H, 034H,177H
		BYTE	037H,17DH, 03AH,182H, 03FH,187H, 044H,18DH
		BYTE	04BH,192H, 052H,197H, 05AH,19DH, 062H,1A2H
		BYTE	06AH,1A7H, 072H,1ADH, 079H,1B2H, 07FH,1B7H
		BYTE	084H,1BDH, 089H,1C2H, 08CH,1C7H, 08FH,1CDH
		BYTE	092H,1D2H, 094H,0D7H, 093H,0DAH, 092H,0DBH
		BYTE	067H,0DBH, 066H,0DAH, 065H,0D7H, 064H,1D2H
		BYTE	061H,1CDH, 05EH,1C7H, 05BH,1C2H, 056H,1BDH
		BYTE	051H,1B7H, 04AH,1B2H, 043H,1ADH, 03BH,1A7H
		BYTE	033H,1A2H, 02BH,19DH, 023H,197H, 01CH,192H
		BYTE	015H,18DH, 010H,187H, 00BH,182H, 008H,17DH
		BYTE	005H,177H, 002H,172H
;
;kakudo=< 15> point_n=<50>
LIFT_DT1	EQU	$
		BYTE	003H,186H, 006H,183H, 00EH,181H, 027H,181H
		BYTE	02FH,183H, 032H,186H, 035H,18BH, 038H,18FH
		BYTE	03BH,193H, 03FH,197H, 044H,19BH, 049H,19FH
		BYTE	04FH,1A3H, 055H,1A7H, 05CH,1ABH, 063H,1AFH
		BYTE	06BH,1B3H, 072H,1B7H, 078H,1BBH, 07DH,1BFH
		BYTE	082H,1C3H, 087H,1C7H, 08BH,1CBH, 08EH,1CFH
		BYTE	091H,1D3H, 094H,0D7H, 093H,0DAH, 092H,0DBH
		BYTE	067H,0DBH, 066H,0DAH, 065H,0D7H, 063H,1D3H
		BYTE	060H,1CFH, 05DH,1CBH, 059H,1C7H, 054H,1C3H
		BYTE	04FH,1BFH, 049H,1BBH, 043H,1B7H, 03CH,1B3H
		BYTE	034H,1AFH, 02DH,1ABH, 026H,1A7H, 020H,1A3H
		BYTE	01AH,19FH, 015H,19BH, 010H,197H, 00CH,193H
		BYTE	009H,18FH, 006H,18BH
;
;kakudo=< 30> point_n=<50>
LIFT_DT2	EQU	$
		BYTE	00DH,19FH, 010H,19CH, 018H,19AH, 031H,19AH
		BYTE	039H,19CH, 03CH,19FH, 03FH,1A2H, 042H,1A5H
		BYTE	046H,1A8H, 04AH,1ABH, 04EH,1ADH, 052H,1B0H
		BYTE	057H,1B3H, 05DH,1B6H, 063H,1B9H, 068H,1BBH
		BYTE	06EH,1BEH, 074H,1C1H, 07AH,1C4H, 07EH,1C7H
		BYTE	082H,1C9H, 086H,1CCH, 08AH,1CFH, 08EH,1D2H
		BYTE	091H,1D5H, 094H,0D7H, 093H,0DAH, 092H,0DBH
		BYTE	067H,0DBH, 066H,0DAH, 065H,0D7H, 063H,1D5H
		BYTE	060H,1D2H, 05CH,1CFH, 058H,1CCH, 054H,1C9H
		BYTE	050H,1C7H, 04BH,1C4H, 045H,1C1H, 03FH,1BEH
		BYTE	039H,1BBH, 034H,1B9H, 02EH,1B6H, 028H,1B3H
		BYTE	023H,1B0H, 01FH,1ADH, 01BH,1ABH, 017H,1A8H
		BYTE	013H,1A5H, 010H,1A2H
;
;kakudo=< 45> point_n=<50>
LIFT_DT3	EQU	$
		BYTE	01EH,1B4H, 021H,1B1H, 029H,1AFH, 042H,1AFH
		BYTE	04AH,1B1H, 04DH,1B4H, 050H,1B6H, 053H,1B8H
		BYTE	056H,1BAH, 059H,1BBH, 05DH,1BDH, 060H,1BFH
		BYTE	064H,1C1H, 068H,1C2H, 06DH,1C4H, 071H,1C6H
		BYTE	075H,1C8H, 07AH,1C9H, 07DH,1CBH, 081H,1CDH
		BYTE	084H,1CFH, 088H,1D0H, 08BH,1D2H, 08EH,1D4H
		BYTE	091H,0D6H, 094H,0D7H, 093H,0DAH, 092H,0DBH
		BYTE	067H,0DBH, 066H,0DAH, 065H,0D7H, 063H,0D6H
		BYTE	060H,1D4H, 05DH,1D2H, 05AH,1D0H, 056H,1CFH
		BYTE	053H,1CDH, 04FH,1CBH, 04BH,1C9H, 046H,1C8H
		BYTE	042H,1C6H, 03EH,1C4H, 039H,1C2H, 035H,1C1H
		BYTE	031H,1BFH, 02EH,1BDH, 02AH,1BBH, 027H,1BAH
		BYTE	024H,1B8H, 021H,1B6H
;
;kakudo=< 60> point_n=<50>
LIFT_DT4	EQU	$
		BYTE	033H,1C5H, 036H,1C2H, 03EH,1C0H, 057H,1C0H
		BYTE	05FH,1C2H, 062H,1C5H, 065H,1C6H, 067H,1C7H
		BYTE	069H,1C8H, 06CH,1C9H, 06EH,1CAH, 071H,1CBH
		BYTE	073H,1CCH, 076H,1CDH, 079H,1CEH, 07BH,1CEH
		BYTE	07DH,1CFH, 080H,1D0H, 083H,1D1H, 085H,1D2H
		BYTE	088H,1D3H, 08AH,1D4H, 08DH,1D5H, 08FH,0D6H
		BYTE	091H,0D6H, 094H,0D7H, 093H,0DAH, 092H,0DBH
		BYTE	067H,0DBH, 066H,0DAH, 065H,0D7H, 063H,0D6H
		BYTE	061H,0D6H, 05FH,1D5H, 05CH,1D4H, 05AH,1D3H
		BYTE	057H,1D2H, 055H,1D1H, 052H,1D0H, 04FH,1CFH
		BYTE	04CH,1CEH, 04AH,1CEH, 047H,1CDH, 044H,1CCH
		BYTE	042H,1CBH, 03FH,1CAH, 03DH,1C9H, 03AH,1C8H
		BYTE	038H,1C7H, 036H,1C6H
;
;kakudo=< 75> point_n=<50>
LIFT_DT5	EQU	$
		BYTE	04CH,1CFH, 04FH,1CCH, 057H,1CAH, 070H,1CAH
		BYTE	078H,1CCH, 07BH,1CFH, 07DH,1D0H, 07DH,1D0H
		BYTE	07EH,1D1H, 080H,1D1H, 081H,1D1H, 082H,1D2H
		BYTE	083H,1D2H, 085H,1D3H, 086H,1D3H, 087H,1D3H
		BYTE	088H,1D4H, 08AH,1D4H, 08BH,1D5H, 08CH,1D5H
		BYTE	08DH,1D5H, 08FH,0D6H, 090H,0D6H, 091H,0D6H
		BYTE	092H,0D6H, 094H,0D7H, 093H,0DAH, 092H,0DBH
		BYTE	067H,0DBH, 066H,0DAH, 065H,0D7H, 064H,0D6H
		BYTE	063H,0D6H, 062H,0D6H, 060H,0D6H, 05FH,1D5H
		BYTE	05EH,1D5H, 05DH,1D5H, 05BH,1D4H, 05AH,1D4H
		BYTE	059H,1D3H, 058H,1D3H, 056H,1D3H, 055H,1D2H
		BYTE	054H,1D2H, 053H,1D1H, 051H,1D1H, 050H,1D1H
		BYTE	04FH,1D0H, 04EH,1D0H
;
;kakudo=< 90> point_n=<50>
LIFT_DT6	EQU	$
		BYTE	066H,1D2H, 069H,1CFH, 071H,1CDH, 08AH,1CDH
		BYTE	092H,1CFH, 095H,1D2H, 094H,1D3H, 094H,1D3H
		BYTE	094H,1D3H, 094H,1D3H, 094H,1D4H, 094H,1D4H
		BYTE	094H,1D4H, 094H,1D4H, 094H,1D5H, 094H,1D5H
		BYTE	094H,1D5H, 094H,1D5H, 094H,0D6H, 094H,0D6H
		BYTE	094H,0D6H, 094H,0D6H, 094H,0D6H, 094H,0D6H
		BYTE	094H,0D6H, 094H,0D7H, 093H,0DAH, 092H,0DBH
		BYTE	067H,0DBH, 066H,0DAH, 065H,0D7H, 066H,0D6H
		BYTE	066H,0D6H, 066H,0D6H, 066H,0D6H, 066H,0D6H
		BYTE	066H,0D6H, 066H,0D6H, 066H,1D5H, 066H,1D5H
		BYTE	066H,1D5H, 066H,1D5H, 066H,1D4H, 066H,1D4H
		BYTE	066H,1D4H, 066H,1D4H, 066H,1D3H, 066H,1D3H
		BYTE	066H,1D3H, 066H,1D3H
;
;kakudo=<105> point_n=<50>
LIFT_DT7	EQU	$
		BYTE	080H,1CBH, 083H,1C8H, 08BH,1C6H, 0A4H,1C6H
		BYTE	0ACH,1C8H, 0AFH,1CBH, 0ADH,1CCH, 0ACH,1CDH
		BYTE	0ABH,1CDH, 0A9H,1CEH, 0A8H,1CEH, 0A7H,1CFH
		BYTE	0A5H,1D0H, 0A4H,1D0H, 0A2H,1D1H, 0A1H,1D1H
		BYTE	0A0H,1D2H, 09EH,1D3H, 09DH,1D3H, 09BH,1D4H
		BYTE	09AH,1D4H, 099H,1D5H, 097H,0D6H, 096H,0D6H
		BYTE	095H,0D6H, 094H,0D7H, 093H,0DAH, 092H,0DBH
		BYTE	067H,0DBH, 066H,0DAH, 065H,0D7H, 067H,0D6H
		BYTE	068H,0D6H, 069H,0D6H, 06BH,1D5H, 06CH,1D4H
		BYTE	06DH,1D4H, 06FH,1D3H, 070H,1D3H, 072H,1D2H
		BYTE	073H,1D1H, 074H,1D1H, 076H,1D0H, 077H,1D0H
		BYTE	079H,1CFH, 07AH,1CEH, 07BH,1CEH, 07DH,1CDH
		BYTE	07DH,1CDH, 07EH,1CCH
;
;kakudo=<120> point_n=<50>
LIFT_DT8	EQU	$
		BYTE	099H,1B7H, 09CH,1B4H, 0A4H,1B2H, 0BDH,1B2H
		BYTE	0C5H,1B4H, 0C8H,1B7H, 0C6H,1B9H, 0C4H,1BBH
		BYTE	0C2H,1BCH, 0BFH,1BEH, 0BDH,1BFH, 0BAH,1C1H
		BYTE	0B7H,1C3H, 0B4H,1C4H, 0B1H,1C6H, 0AEH,1C7H
		BYTE	0AAH,1C9H, 0A7H,1CBH, 0A4H,1CCH, 0A1H,1CEH
		BYTE	09EH,1CFH, 09CH,1D1H, 099H,1D3H, 097H,1D4H
		BYTE	095H,0D6H, 094H,0D7H, 093H,0DAH, 092H,0DBH
		BYTE	067H,0DBH, 066H,0DAH, 065H,0D7H, 067H,0D6H
		BYTE	069H,1D4H, 06BH,1D3H, 06EH,1D1H, 070H,1CFH
		BYTE	073H,1CEH, 076H,1CCH, 079H,1CBH, 07CH,1C9H
		BYTE	07FH,1C7H, 082H,1C6H, 085H,1C4H, 088H,1C3H
		BYTE	08BH,1C1H, 08EH,1BFH, 090H,1BEH, 093H,1BCH
		BYTE	095H,1BBH, 097H,1B9H
;
;kakudo=<135> point_n=<50>
LIFT_DT9	EQU	$
		BYTE	0AEH,195H, 0B1H,192H, 0B9H,190H, 0D2H,190H
		BYTE	0DAH,192H, 0DDH,195H, 0DBH,199H, 0D9H,19CH
		BYTE	0D6H,19FH, 0D3H,1A3H, 0D0H,1A6H, 0CCH,1A9H
		BYTE	0C8H,1ADH, 0C3H,1B0H, 0BDH,1B3H, 0B8H,1B6H
		BYTE	0B3H,1BAH, 0ADH,1BDH, 0A8H,1C0H, 0A4H,1C4H
		BYTE	0A0H,1C7H, 09DH,1CAH, 09AH,1CEH, 097H,1D1H
		BYTE	095H,1D4H, 094H,0D7H, 093H,0DAH, 092H,0DBH
		BYTE	067H,0DBH, 066H,0DAH, 065H,0D7H, 067H,1D4H
		BYTE	069H,1D1H, 06CH,1CEH, 06FH,1CAH, 072H,1C7H
		BYTE	076H,1C4H, 07AH,1C0H, 07EH,1BDH, 084H,1BAH
		BYTE	089H,1B6H, 08EH,1B3H, 094H,1B0H, 099H,1ADH
		BYTE	09DH,1A9H, 0A1H,1A6H, 0A4H,1A3H, 0A7H,19FH
		BYTE	0AAH,19CH, 0ACH,199H
;
;kakudo=<150> point_n=<50>
LIFT_DTA	EQU	$
		BYTE	0BFH,16BH, 0C2H,168H, 0CAH,166H, 0E3H,166H
		BYTE	0EBH,168H, 0EEH,16BH, 0ECH,171H, 0EAH,176H
		BYTE	0E8H,17CH, 0E5H,181H, 0E1H,186H, 0DCH,18CH
		BYTE	0D6H,191H, 0CFH,197H, 0C8H,19CH, 0C1H,1A1H
		BYTE	0B9H,1A7H, 0B2H,1ACH, 0ABH,1B2H, 0A5H,1B7H
		BYTE	0A0H,1BCH, 09CH,1C2H, 099H,1C7H, 097H,1CDH
		BYTE	095H,1D2H, 094H,0D7H, 093H,0DAH, 092H,0DBH
		BYTE	067H,0DBH, 066H,0DAH, 065H,0D7H, 067H,1D2H
		BYTE	069H,1CDH, 06BH,1C7H, 06EH,1C2H, 072H,1BCH
		BYTE	077H,1B7H, 07DH,1B2H, 083H,1ACH, 08AH,1A7H
		BYTE	092H,1A1H, 099H,19CH, 0A0H,197H, 0A7H,191H
		BYTE	0ADH,18CH, 0B2H,186H, 0B6H,181H, 0B9H,17CH
		BYTE	0BBH,176H, 0BDH,171H
;
;kakudo=<165> point_n=<50>
LIFT_DTB	EQU	$
		BYTE	0C9H,139H, 0CCH,136H, 0D4H,134H, 0EDH,134H
		BYTE	0F5H,136H, 0F8H,139H, 0F7H,141H, 0F6H,149H
		BYTE	0F5H,151H, 0F2H,159H, 0EDH,161H, 0E8H,169H
		BYTE	0E1H,171H, 0D8H,179H, 0CFH,181H, 0C6H,188H
		BYTE	0BCH,190H, 0B3H,198H, 0AAH,1A0H, 0A3H,1A8H
		BYTE	09EH,1B0H, 099H,1B8H, 096H,1C0H, 095H,1C8H
		BYTE	094H,1D0H, 094H,0D7H, 093H,0DAH, 092H,0DBH
		BYTE	067H,0DBH, 066H,0DAH, 065H,0D7H, 066H,1D0H
		BYTE	067H,1C8H, 068H,1C0H, 06BH,1B8H, 070H,1B0H
		BYTE	075H,1A8H, 07CH,1A0H, 084H,198H, 08DH,190H
		BYTE	097H,188H, 0A0H,181H, 0A9H,179H, 0B2H,171H
		BYTE	0B9H,169H, 0BEH,161H, 0C3H,159H, 0C6H,151H
		BYTE	0C7H,149H, 0C8H,141H
;
;kakudo=<180> point_n=<50>
LIFT_DTC	EQU	$
		BYTE	0CCH,105H, 0CFH,102H, 0D7H,100H, 0F0H,100H
		BYTE	0F8H,102H, 0FBH,105H, 0FCH,110H, 0FCH,11AH
		BYTE	0FBH,125H, 0F9H,12FH, 0F5H,13AH, 0EFH,144H
		BYTE	0E7H,14FH, 0DDH,159H, 0D2H,164H, 0C7H,16EH
		BYTE	0BCH,179H, 0B1H,183H, 0A7H,18EH, 09FH,198H
		BYTE	099H,1A3H, 095H,1ADH, 093H,1B8H, 092H,1C2H
		BYTE	092H,1CDH, 094H,0D7H, 093H,0DAH, 092H,0DBH
		BYTE	067H,0DBH, 066H,0DAH, 065H,0D7H, 064H,1CDH
		BYTE	064H,1C2H, 065H,1B8H, 067H,1ADH, 06BH,1A3H
		BYTE	071H,198H, 079H,18EH, 082H,183H, 08DH,179H
		BYTE	098H,16EH, 0A3H,164H, 0AEH,159H, 0B8H,14FH
		BYTE	0C0H,144H, 0C6H,13AH, 0CAH,12FH, 0CCH,125H
		BYTE	0CDH,11AH, 0CDH,110H
;










;;;kakudo=<  0> point_n=<50>
;;LIFT_DT0	EQU	$
;;		WORD	0FF82H,0FF96H, 0FF85H,0FF93H, 0FF8DH,0FF91H, 0FFA6H,0FF91H
;;		WORD	0FFAEH,0FF93H, 0FFB1H,0FF96H, 0FFB4H,0FF9CH, 0FFB6H,0FFA1H
;;		WORD	0FFB9H,0FFA7H, 0FFBCH,0FFACH, 0FFC1H,0FFB1H, 0FFC7H,0FFB7H
;;		WORD	0FFCDH,0FFBCH, 0FFD4H,0FFC1H, 0FFDCH,0FFC7H, 0FFE4H,0FFCCH
;;		WORD	0FFEDH,0FFD1H, 0FFF5H,0FFD7H, 0FFFCH,0FFDCH, 00001H,0FFE1H
;;		WORD	00007H,0FFE7H, 0000CH,0FFECH, 0000FH,0FFF1H, 00012H,0FFF7H
;;		WORD	00014H,0FFFCH, 00017H,00001H, 00016H,00004H, 00015H,00005H
;;		WORD	0FFEAH,00005H, 0FFE9H,00004H, 0FFE8H,00001H, 0FFE6H,0FFFCH
;;		WORD	0FFE4H,0FFF7H, 0FFE1H,0FFF1H, 0FFDEH,0FFECH, 0FFD9H,0FFE7H
;;		WORD	0FFD3H,0FFE1H, 0FFCDH,0FFDCH, 0FFC6H,0FFD7H, 0FFBEH,0FFD1H
;;		WORD	0FFB5H,0FFCCH, 0FFADH,0FFC7H, 0FFA5H,0FFC1H, 0FF9EH,0FFBCH
;;		WORD	0FF98H,0FFB7H, 0FF92H,0FFB1H, 0FF8DH,0FFACH, 0FF8AH,0FFA7H
;;		WORD	0FF87H,0FFA1H, 0FF85H,0FF9CH
;;;
;;;kakudo=< 15> point_n=<50>
;;LIFT_DT1	EQU	$
;;		WORD	0FF86H,0FFB0H, 0FF89H,0FFADH, 0FF91H,0FFABH, 0FFAAH,0FFABH
;;		WORD	0FFB2H,0FFADH, 0FFB5H,0FFB0H, 0FFB8H,0FFB5H, 0FFBBH,0FFB9H
;;		WORD	0FFBEH,0FFBDH, 0FFC2H,0FFC1H, 0FFC7H,0FFC5H, 0FFCCH,0FFC9H
;;		WORD	0FFD2H,0FFCDH, 0FFD8H,0FFD1H, 0FFDFH,0FFD5H, 0FFE6H,0FFD9H
;;		WORD	0FFEEH,0FFDDH, 0FFF5H,0FFE1H, 0FFFBH,0FFE5H, 00000H,0FFE9H
;;		WORD	00005H,0FFEDH, 0000AH,0FFF1H, 0000EH,0FFF5H, 00011H,0FFF9H
;;		WORD	00014H,0FFFDH, 00017H,00001H, 00016H,00004H, 00015H,00005H
;;		WORD	0FFEAH,00005H, 0FFE9H,00004H, 0FFE8H,00001H, 0FFE6H,0FFFDH
;;		WORD	0FFE3H,0FFF9H, 0FFE0H,0FFF5H, 0FFDCH,0FFF1H, 0FFD7H,0FFEDH
;;		WORD	0FFD2H,0FFE9H, 0FFCCH,0FFE5H, 0FFC6H,0FFE1H, 0FFBFH,0FFDDH
;;		WORD	0FFB7H,0FFD9H, 0FFB0H,0FFD5H, 0FFA9H,0FFD1H, 0FFA3H,0FFCDH
;;		WORD	0FF9DH,0FFC9H, 0FF98H,0FFC5H, 0FF93H,0FFC1H, 0FF8FH,0FFBDH
;;		WORD	0FF8CH,0FFB9H, 0FF89H,0FFB5H
;;;
;;;kakudo=< 30> point_n=<50>
;;LIFT_DT2	EQU	$
;;		WORD	0FF90H,0FFC9H, 0FF93H,0FFC6H, 0FF9BH,0FFC4H, 0FFB4H,0FFC4H
;;		WORD	0FFBCH,0FFC6H, 0FFBFH,0FFC9H, 0FFC2H,0FFCCH, 0FFC5H,0FFCFH
;;		WORD	0FFC9H,0FFD2H, 0FFCDH,0FFD5H, 0FFD1H,0FFD7H, 0FFD5H,0FFDAH
;;		WORD	0FFDAH,0FFDDH, 0FFE0H,0FFE0H, 0FFE6H,0FFE3H, 0FFEBH,0FFE5H
;;		WORD	0FFF1H,0FFE8H, 0FFF7H,0FFEBH, 0FFFDH,0FFEEH, 00001H,0FFF1H
;;		WORD	00005H,0FFF3H, 00009H,0FFF6H, 0000DH,0FFF9H, 00011H,0FFFCH
;;		WORD	00014H,0FFFFH, 00017H,00001H, 00016H,00004H, 00015H,00005H
;;		WORD	0FFEAH,00005H, 0FFE9H,00004H, 0FFE8H,00001H, 0FFE6H,0FFFFH
;;		WORD	0FFE3H,0FFFCH, 0FFDFH,0FFF9H, 0FFDBH,0FFF6H, 0FFD7H,0FFF3H
;;		WORD	0FFD3H,0FFF1H, 0FFCEH,0FFEEH, 0FFC8H,0FFEBH, 0FFC2H,0FFE8H
;;		WORD	0FFBCH,0FFE5H, 0FFB7H,0FFE3H, 0FFB1H,0FFE0H, 0FFABH,0FFDDH
;;		WORD	0FFA6H,0FFDAH, 0FFA2H,0FFD7H, 0FF9EH,0FFD5H, 0FF9AH,0FFD2H
;;		WORD	0FF96H,0FFCFH, 0FF93H,0FFCCH
;;;
;;;kakudo=< 45> point_n=<50>
;;LIFT_DT3	EQU	$
;;		WORD	0FFA1H,0FFDEH, 0FFA4H,0FFDBH, 0FFACH,0FFD9H, 0FFC5H,0FFD9H
;;		WORD	0FFCDH,0FFDBH, 0FFD0H,0FFDEH, 0FFD3H,0FFE0H, 0FFD6H,0FFE2H
;;		WORD	0FFD9H,0FFE4H, 0FFDCH,0FFE5H, 0FFE0H,0FFE7H, 0FFE3H,0FFE9H
;;		WORD	0FFE7H,0FFEBH, 0FFEBH,0FFECH, 0FFF0H,0FFEEH, 0FFF4H,0FFF0H
;;		WORD	0FFF8H,0FFF2H, 0FFFDH,0FFF3H, 00000H,0FFF5H, 00004H,0FFF7H
;;		WORD	00007H,0FFF9H, 0000BH,0FFFAH, 0000EH,0FFFCH, 00011H,0FFFEH
;;		WORD	00014H,00000H, 00017H,00001H, 00016H,00004H, 00015H,00005H
;;		WORD	0FFEAH,00005H, 0FFE9H,00004H, 0FFE8H,00001H, 0FFE6H,00000H
;;		WORD	0FFE3H,0FFFEH, 0FFE0H,0FFFCH, 0FFDDH,0FFFAH, 0FFD9H,0FFF9H
;;		WORD	0FFD6H,0FFF7H, 0FFD2H,0FFF5H, 0FFCEH,0FFF3H, 0FFC9H,0FFF2H
;;		WORD	0FFC5H,0FFF0H, 0FFC1H,0FFEEH, 0FFBCH,0FFECH, 0FFB8H,0FFEBH
;;		WORD	0FFB4H,0FFE9H, 0FFB1H,0FFE7H, 0FFADH,0FFE5H, 0FFAAH,0FFE4H
;;		WORD	0FFA7H,0FFE2H, 0FFA4H,0FFE0H
;;;
;;;kakudo=< 60> point_n=<50>
;;LIFT_DT4	EQU	$
;;		WORD	0FFB6H,0FFEFH, 0FFB9H,0FFECH, 0FFC1H,0FFEAH, 0FFDAH,0FFEAH
;;		WORD	0FFE2H,0FFECH, 0FFE5H,0FFEFH, 0FFE8H,0FFF0H, 0FFEAH,0FFF1H
;;		WORD	0FFECH,0FFF2H, 0FFEFH,0FFF3H, 0FFF1H,0FFF4H, 0FFF4H,0FFF5H
;;		WORD	0FFF6H,0FFF6H, 0FFF9H,0FFF7H, 0FFFCH,0FFF8H, 0FFFEH,0FFF8H
;;		WORD	00000H,0FFF9H, 00003H,0FFFAH, 00006H,0FFFBH, 00008H,0FFFCH
;;		WORD	0000BH,0FFFDH, 0000DH,0FFFEH, 00010H,0FFFFH, 00012H,00000H
;;		WORD	00014H,00000H, 00017H,00001H, 00016H,00004H, 00015H,00005H
;;		WORD	0FFEAH,00005H, 0FFE9H,00004H, 0FFE8H,00001H, 0FFE6H,00000H
;;		WORD	0FFE4H,00000H, 0FFE2H,0FFFFH, 0FFDFH,0FFFEH, 0FFDDH,0FFFDH
;;		WORD	0FFDAH,0FFFCH, 0FFD8H,0FFFBH, 0FFD5H,0FFFAH, 0FFD2H,0FFF9H
;;		WORD	0FFCFH,0FFF8H, 0FFCDH,0FFF8H, 0FFCAH,0FFF7H, 0FFC7H,0FFF6H
;;		WORD	0FFC5H,0FFF5H, 0FFC2H,0FFF4H, 0FFC0H,0FFF3H, 0FFBDH,0FFF2H
;;		WORD	0FFBBH,0FFF1H, 0FFB9H,0FFF0H
;;;
;;;kakudo=< 75> point_n=<50>
;;LIFT_DT5	EQU	$
;;		WORD	0FFCFH,0FFF9H, 0FFD2H,0FFF6H, 0FFDAH,0FFF4H, 0FFF3H,0FFF4H
;;		WORD	0FFFBH,0FFF6H, 0FFFEH,0FFF9H, 00000H,0FFFAH, 00000H,0FFFAH
;;		WORD	00001H,0FFFBH, 00003H,0FFFBH, 00004H,0FFFBH, 00005H,0FFFCH
;;		WORD	00006H,0FFFCH, 00008H,0FFFDH, 00009H,0FFFDH, 0000AH,0FFFDH
;;		WORD	0000BH,0FFFEH, 0000DH,0FFFEH, 0000EH,0FFFFH, 0000FH,0FFFFH
;;		WORD	00010H,0FFFFH, 00012H,00000H, 00013H,00000H, 00014H,00000H
;;		WORD	00015H,00000H, 00017H,00001H, 00016H,00004H, 00015H,00005H
;;		WORD	0FFEAH,00005H, 0FFE9H,00004H, 0FFE8H,00001H, 0FFE7H,00000H
;;		WORD	0FFE6H,00000H, 0FFE5H,00000H, 0FFE3H,00000H, 0FFE2H,0FFFFH
;;		WORD	0FFE1H,0FFFFH, 0FFE0H,0FFFFH, 0FFDEH,0FFFEH, 0FFDDH,0FFFEH
;;		WORD	0FFDCH,0FFFDH, 0FFDBH,0FFFDH, 0FFD9H,0FFFDH, 0FFD8H,0FFFCH
;;		WORD	0FFD7H,0FFFCH, 0FFD6H,0FFFBH, 0FFD4H,0FFFBH, 0FFD3H,0FFFBH
;;		WORD	0FFD2H,0FFFAH, 0FFD1H,0FFFAH
;;;
;;;kakudo=< 90> point_n=<50>
;;LIFT_DT6	EQU	$
;;		WORD	0FFE9H,0FFFCH, 0FFECH,0FFF9H, 0FFF4H,0FFF7H, 0000DH,0FFF7H
;;		WORD	00015H,0FFF9H, 00018H,0FFFCH, 00017H,0FFFDH, 00017H,0FFFDH
;;		WORD	00017H,0FFFDH, 00017H,0FFFDH, 00017H,0FFFEH, 00017H,0FFFEH
;;		WORD	00017H,0FFFEH, 00017H,0FFFEH, 00017H,0FFFFH, 00017H,0FFFFH
;;		WORD	00017H,0FFFFH, 00017H,0FFFFH, 00017H,00000H, 00017H,00000H
;;		WORD	00017H,00000H, 00017H,00000H, 00017H,00000H, 00017H,00000H
;;		WORD	00017H,00000H, 00017H,00001H, 00016H,00004H, 00015H,00005H
;;		WORD	0FFEAH,00005H, 0FFE9H,00004H, 0FFE8H,00001H, 0FFE9H,00000H
;;		WORD	0FFE9H,00000H, 0FFE9H,00000H, 0FFE9H,00000H, 0FFE9H,00000H
;;		WORD	0FFE9H,00000H, 0FFE9H,00000H, 0FFE9H,0FFFFH, 0FFE9H,0FFFFH
;;		WORD	0FFE9H,0FFFFH, 0FFE9H,0FFFFH, 0FFE9H,0FFFEH, 0FFE9H,0FFFEH
;;		WORD	0FFE9H,0FFFEH, 0FFE9H,0FFFEH, 0FFE9H,0FFFDH, 0FFE9H,0FFFDH
;;		WORD	0FFE9H,0FFFDH, 0FFE9H,0FFFDH
;;;
;;;kakudo=<105> point_n=<50>
;;LIFT_DT7	EQU	$
;;		WORD	00003H,0FFF5H, 00006H,0FFF2H, 0000EH,0FFF0H, 00027H,0FFF0H
;;		WORD	0002FH,0FFF2H, 00032H,0FFF5H, 00030H,0FFF6H, 0002FH,0FFF7H
;;		WORD	0002EH,0FFF7H, 0002CH,0FFF8H, 0002BH,0FFF8H, 0002AH,0FFF9H
;;		WORD	00028H,0FFFAH, 00027H,0FFFAH, 00025H,0FFFBH, 00024H,0FFFBH
;;		WORD	00023H,0FFFCH, 00021H,0FFFDH, 00020H,0FFFDH, 0001EH,0FFFEH
;;		WORD	0001DH,0FFFEH, 0001CH,0FFFFH, 0001AH,00000H, 00019H,00000H
;;		WORD	00018H,00000H, 00017H,00001H, 00016H,00004H, 00015H,00005H
;;		WORD	0FFEAH,00005H, 0FFE9H,00004H, 0FFE8H,00001H, 0FFEAH,00000H
;;		WORD	0FFEBH,00000H, 0FFECH,00000H, 0FFEEH,0FFFFH, 0FFEFH,0FFFEH
;;		WORD	0FFF0H,0FFFEH, 0FFF2H,0FFFDH, 0FFF3H,0FFFDH, 0FFF5H,0FFFCH
;;		WORD	0FFF6H,0FFFBH, 0FFF7H,0FFFBH, 0FFF9H,0FFFAH, 0FFFAH,0FFFAH
;;		WORD	0FFFCH,0FFF9H, 0FFFDH,0FFF8H, 0FFFEH,0FFF8H, 00000H,0FFF7H
;;		WORD	00000H,0FFF7H, 00001H,0FFF6H
;;;
;;;kakudo=<120> point_n=<50>
;;LIFT_DT8	EQU	$
;;		WORD	0001CH,0FFE1H, 0001FH,0FFDEH, 00027H,0FFDCH, 00040H,0FFDCH
;;		WORD	00048H,0FFDEH, 0004BH,0FFE1H, 00049H,0FFE3H, 00047H,0FFE5H
;;		WORD	00045H,0FFE6H, 00042H,0FFE8H, 00040H,0FFE9H, 0003DH,0FFEBH
;;		WORD	0003AH,0FFEDH, 00037H,0FFEEH, 00034H,0FFF0H, 00031H,0FFF1H
;;		WORD	0002DH,0FFF3H, 0002AH,0FFF5H, 00027H,0FFF6H, 00024H,0FFF8H
;;		WORD	00021H,0FFF9H, 0001FH,0FFFBH, 0001CH,0FFFDH, 0001AH,0FFFEH
;;		WORD	00018H,00000H, 00017H,00001H, 00016H,00004H, 00015H,00005H
;;		WORD	0FFEAH,00005H, 0FFE9H,00004H, 0FFE8H,00001H, 0FFEAH,00000H
;;		WORD	0FFECH,0FFFEH, 0FFEEH,0FFFDH, 0FFF1H,0FFFBH, 0FFF3H,0FFF9H
;;		WORD	0FFF6H,0FFF8H, 0FFF9H,0FFF6H, 0FFFCH,0FFF5H, 0FFFFH,0FFF3H
;;		WORD	00002H,0FFF1H, 00005H,0FFF0H, 00008H,0FFEEH, 0000BH,0FFEDH
;;		WORD	0000EH,0FFEBH, 00011H,0FFE9H, 00013H,0FFE8H, 00016H,0FFE6H
;;		WORD	00018H,0FFE5H, 0001AH,0FFE3H
;;;
;;;kakudo=<135> point_n=<50>
;;LIFT_DT9	EQU	$
;;		WORD	00031H,0FFBFH, 00034H,0FFBCH, 0003CH,0FFBAH, 00055H,0FFBAH
;;		WORD	0005DH,0FFBCH, 00060H,0FFBFH, 0005EH,0FFC3H, 0005CH,0FFC6H
;;		WORD	00059H,0FFC9H, 00056H,0FFCDH, 00053H,0FFD0H, 0004FH,0FFD3H
;;		WORD	0004BH,0FFD7H, 00046H,0FFDAH, 00040H,0FFDDH, 0003BH,0FFE0H
;;		WORD	00036H,0FFE4H, 00030H,0FFE7H, 0002BH,0FFEAH, 00027H,0FFEEH
;;		WORD	00023H,0FFF1H, 00020H,0FFF4H, 0001DH,0FFF8H, 0001AH,0FFFBH
;;		WORD	00018H,0FFFEH, 00017H,00001H, 00016H,00004H, 00015H,00005H
;;		WORD	0FFEAH,00005H, 0FFE9H,00004H, 0FFE8H,00001H, 0FFEAH,0FFFEH
;;		WORD	0FFECH,0FFFBH, 0FFEFH,0FFF8H, 0FFF2H,0FFF4H, 0FFF5H,0FFF1H
;;		WORD	0FFF9H,0FFEEH, 0FFFDH,0FFEAH, 00001H,0FFE7H, 00007H,0FFE4H
;;		WORD	0000CH,0FFE0H, 00011H,0FFDDH, 00017H,0FFDAH, 0001CH,0FFD7H
;;		WORD	00020H,0FFD3H, 00024H,0FFD0H, 00027H,0FFCDH, 0002AH,0FFC9H
;;		WORD	0002DH,0FFC6H, 0002FH,0FFC3H
;;;
;;;kakudo=<150> point_n=<50>
;;LIFT_DTA	EQU	$
;;		WORD	00042H,0FF95H, 00045H,0FF92H, 0004DH,0FF90H, 00066H,0FF90H
;;		WORD	0006EH,0FF92H, 00071H,0FF95H, 0006FH,0FF9BH, 0006DH,0FFA0H
;;		WORD	0006BH,0FFA6H, 00068H,0FFABH, 00064H,0FFB0H, 0005FH,0FFB6H
;;		WORD	00059H,0FFBBH, 00052H,0FFC1H, 0004BH,0FFC6H, 00044H,0FFCBH
;;		WORD	0003CH,0FFD1H, 00035H,0FFD6H, 0002EH,0FFDCH, 00028H,0FFE1H
;;		WORD	00023H,0FFE6H, 0001FH,0FFECH, 0001CH,0FFF1H, 0001AH,0FFF7H
;;		WORD	00018H,0FFFCH, 00017H,00001H, 00016H,00004H, 00015H,00005H
;;		WORD	0FFEAH,00005H, 0FFE9H,00004H, 0FFE8H,00001H, 0FFEAH,0FFFCH
;;		WORD	0FFECH,0FFF7H, 0FFEEH,0FFF1H, 0FFF1H,0FFECH, 0FFF5H,0FFE6H
;;		WORD	0FFFAH,0FFE1H, 00000H,0FFDCH, 00006H,0FFD6H, 0000DH,0FFD1H
;;		WORD	00015H,0FFCBH, 0001CH,0FFC6H, 00023H,0FFC1H, 0002AH,0FFBBH
;;		WORD	00030H,0FFB6H, 00035H,0FFB0H, 00039H,0FFABH, 0003CH,0FFA6H
;;		WORD	0003EH,0FFA0H, 00040H,0FF9BH
;;;
;;;kakudo=<165> point_n=<50>
;;LIFT_DTB	EQU	$
;;		WORD	0004CH,0FF63H, 0004FH,0FF60H, 00057H,0FF5EH, 00070H,0FF5EH
;;		WORD	00078H,0FF60H, 0007BH,0FF63H, 0007AH,0FF6BH, 00079H,0FF73H
;;		WORD	00078H,0FF7BH, 00075H,0FF83H, 00070H,0FF8BH, 0006BH,0FF93H
;;		WORD	00064H,0FF9BH, 0005BH,0FFA3H, 00052H,0FFABH, 00049H,0FFB2H
;;		WORD	0003FH,0FFBAH, 00036H,0FFC2H, 0002DH,0FFCAH, 00026H,0FFD2H
;;		WORD	00021H,0FFDAH, 0001CH,0FFE2H, 00019H,0FFEAH, 00018H,0FFF2H
;;		WORD	00017H,0FFFAH, 00017H,00001H, 00016H,00004H, 00015H,00005H
;;		WORD	0FFEAH,00005H, 0FFE9H,00004H, 0FFE8H,00001H, 0FFE9H,0FFFAH
;;		WORD	0FFEAH,0FFF2H, 0FFEBH,0FFEAH, 0FFEEH,0FFE2H, 0FFF3H,0FFDAH
;;		WORD	0FFF8H,0FFD2H, 0FFFFH,0FFCAH, 00007H,0FFC2H, 00010H,0FFBAH
;;		WORD	0001AH,0FFB2H, 00023H,0FFABH, 0002CH,0FFA3H, 00035H,0FF9BH
;;		WORD	0003CH,0FF93H, 00041H,0FF8BH, 00046H,0FF83H, 00049H,0FF7BH
;;		WORD	0004AH,0FF73H, 0004BH,0FF6BH
;;;
;;;kakudo=<180> point_n=<50>
;;LIFT_DTC	EQU	$
;;		WORD	0004FH,0FF2FH, 00052H,0FF2CH, 0005AH,0FF2AH, 00073H,0FF2AH
;;		WORD	0007BH,0FF2CH, 0007EH,0FF2FH, 0007FH,0FF3AH, 0007FH,0FF44H
;;		WORD	0007EH,0FF4FH, 0007CH,0FF59H, 00078H,0FF64H, 00072H,0FF6EH
;;		WORD	0006AH,0FF79H, 00060H,0FF83H, 00055H,0FF8EH, 0004AH,0FF98H
;;		WORD	0003FH,0FFA3H, 00034H,0FFADH, 0002AH,0FFB8H, 00022H,0FFC2H
;;		WORD	0001CH,0FFCDH, 00018H,0FFD7H, 00016H,0FFE2H, 00015H,0FFECH
;;		WORD	00015H,0FFF7H, 00017H,00001H, 00016H,00004H, 00015H,00005H
;;		WORD	0FFEAH,00005H, 0FFE9H,00004H, 0FFE8H,00001H, 0FFE7H,0FFF7H
;;		WORD	0FFE7H,0FFECH, 0FFE8H,0FFE2H, 0FFEAH,0FFD7H, 0FFEEH,0FFCDH
;;		WORD	0FFF4H,0FFC2H, 0FFFCH,0FFB8H, 00005H,0FFADH, 00010H,0FFA3H
;;		WORD	0001BH,0FF98H, 00026H,0FF8EH, 00031H,0FF83H, 0003BH,0FF79H
;;		WORD	00043H,0FF6EH, 00049H,0FF64H, 0004DH,0FF59H, 0004FH,0FF4FH
;;		WORD	00050H,0FF44H, 00050H,0FF3AH
;;;
;
;;;************************************************************************
;;;*		initial ( ポリゴンテスト )				*
;;;************************************************************************
;;POLTS_IND000	EQU	$
;;		WORD	00000H,0FFC0H, 00040H,00000H, 00000H,00040H
;;		WORD	0FFC0H,00000H
;;POLTS_IND000_E	EQU	$
;;;
;;POLTS_PNT_NO	EQU	(POLTS_IND000_E-POLTS_IND000)/4
;;;
;;POLTSIN		EQU	$
;;		I16
;;;
;;		LDX	#(POLTS_PNT_NO*4)-2
;;POLTS_IN010	EQU	$
;;		LDA	POLTS_IND000,X
;;		STA	>BG3_POLYGON_DT,X
;;		DEX
;;		DEX
;;		BPL	POLTS_IN010
;;;
;;		I8
;;;
;;		LDX	<ENINDX
;;;
;;		RTL
;;;
;;;************************************************************************
;;;*		move ( ポリゴンテスト )					*
;;;************************************************************************
;;POLTSMV		EQU	$
;;		LDA	ENDSXL,X
;;		CLC
;;		ADC	#00000H
;;		STA	CREG0			;(CREG0) <- Ｘ　ＰＯＳ．
;;		LDA	ENDSYL,X
;;		CLC
;;		ADC	#00000H
;;		STA	CREG1			;(CREG1) <- Ｙ　ＰＯＳ．
;;;
;;		LDA	#POLTS_PNT_NO
;;		STA	R1
;;;
;;		LDA	#BG3_POLYGON_DT
;;		STA	CREG4
;;		LDA	#BG3_POLYGON_DT+(POLTS_PNT_NO*4)-4
;;		STA	CREG5
;;;
;;		M_CHIP	BG_POLYGON_SET
;;;
;;		JSL	>M_DMA_BFST
;;		LWORD	HDMABUF		;to address set
;;		LWORD	HDMABF		;from address set
;;		WORD	0D2H*2*2	;number of byte set
;;
;;;--------------< config. set >-------------------
;;		MI8
;;		LDA	#004H
;;		STA	SUBSEL
;;		LDA	#022H
;;		STA	WIND30
;;		LDA	#063H
;;		STA	SUBADF
;;		LDA	#00011000B
;;		TSB	HD420C
;;		M16
;;		LDX	<ENINDX
;;;
;;		RTL
;;;
;;;************************************************************************
;;;*		initial ( Ｂスプラインテスト )				*
;;;************************************************************************
;;;;BSPTS_IND000	EQU	$
;;;;		BYTE	BSPTS_PNT_NO
;;;;BSPTS_IND001	EQU	$
;;;;		BYTE	000H,0C0H, 040H,000H, 000H,040H
;;;;		BYTE	0C0H,000H
;;;;BSPTS_IND000_E	EQU	$
;;;
;;;;BSPTS_PNT_NO	EQU	(BSPTS_IND000_E-BSPTS_IND001)/2
;;;
;;BSPTS_IND0	EQU	$
;;		WORD	BSPTS_IND00, BSPTS_IND01, BSPTS_IND02
;;
;;BSPTS_PNT_NO	EQU	(BSPTS_IND00_E-BSPTS_IND001)/2
;;;
;;;file <morptest.CH7>
;;;screen no.<1>
;;;point kazu <008H>
;;;xmag=[001.00]
;;;ymag=[001.00]
;;;turn sw off
;;BSPTS_IND00	EQU	$
;;		BYTE	BSPTS_PNT_NO
;;BSPTS_IND001	EQU	$
;;		BYTE	000H,000H, 016H,009H, 01FH,01FH, 016H,036H
;;		BYTE	000H,03FH, 0E9H,036H, 0E0H,01FH, 0E9H,009H
;;BSPTS_IND00_E	EQU	$
;;;
;;;file <morptest.CH7>
;;;screen no.<2>
;;;point kazu <008H>
;;;xmag=[001.00]
;;;ymag=[001.00]
;;;turn sw off
;;BSPTS_IND01	EQU	$
;;		BYTE	BSPTS_PNT_NO
;;BSPTS_IND011	EQU	$
;;		BYTE	000H,000H, 019H,006H, 01FH,01FH, 019H,039H
;;		BYTE	000H,03FH, 0E6H,039H, 0E0H,01FH, 0E6H,006H
;;BSPTS_IND01_E	EQU	$
;;;
;;;file <morptest.CH7>
;;;screen no.<3>
;;;point kazu <008H>
;;;xmag=[001.00]
;;;ymag=[001.00]
;;;turn sw off
;;BSPTS_IND02	EQU	$
;;		BYTE	BSPTS_PNT_NO
;;BSPTS_IND021	EQU	$
;;		BYTE	000H,000H, 013H,00CH, 01FH,01FH, 013H,033H
;;		BYTE	000H,03FH, 0ECH,033H, 0E0H,01FH, 0ECH,00CH
;;BSPTS_IND02_E	EQU	$
;;;
;;;
;;BSPTSIN		EQU	$
;;;
;;		LDA	#000H
;;		ASL	A
;;		TAY
;;		LDA	BSPTS_IND0,Y
;;		STA	<EWORK0
;;;
;;		M8
;;		I16
;;;
;;		LDX	#BSPTS_IND00_E-BSPTS_IND00-1
;;BSPTS_IN010	EQU	$
;;		TXY
;;		LDA	(EWORK0),Y
;;		STA	>BSPL_B_POINT,X
;;		DEX
;;		BPL	BSPTS_IN010
;;;
;;		M16
;;		I8
;;;
;;		LDX	<ENINDX
;;;
;;		RTL
;;;
;;;************************************************************************
;;;*		move ( Ｂスプラインテスト )				*
;;;************************************************************************
;;BSPTSMV		EQU	$
;;		LDA	ENDSXL,X
;;		CLC
;;		ADC	#00000H
;;		STA	CREG0			;(CREG0) <- Ｘ　ＰＯＳ．
;;		LDA	ENDSYL,X
;;		CLC
;;		ADC	#00000H
;;		STA	CREG1			;(CREG1) <- Ｙ　ＰＯＳ．
;;;
;;		M_CHIP	BG3_BSPLINE_SET
;;;
;;		JSL	>M_DMA_BFST
;;		LWORD	HDMABUF		;to address set
;;		LWORD	HDMABF		;from address set
;;		WORD	0D2H*2*2	;number of byte set
;;
;;;--------------< config. set >-------------------
;;		MI8
;;		LDA	#004H
;;		STA	SUBSEL
;;		LDA	#022H
;;		STA	WIND30
;;		LDA	#063H
;;		STA	SUBADF
;;		LDA	#00011000B
;;		TSB	HD420C
;;		M16
;;		LDX	<ENINDX
;;;
;;		RTL
;
		END

