;************************************************************************
;*									*
;*	title name	: "yossy"					*
;*	proccess	: map enemy					*
;*	file name	: ys_mpen					*
;*									*
;************************************************************************
;
;
		SALL
;
		include		ys_header.inc
		include		ys_color.h
		include		../union/ys_mapobj.h
		include		ys_presno.h
;
		XALL
;
;
;------------------------------------------------------------------------
;-		global symbol						-
;------------------------------------------------------------------------
;
		GLB	MAP_OBJ_INIT,MAP_OBJ
;
;------------------------------------------------------------------------
;-		extern symbol						-
;------------------------------------------------------------------------
;-------------< ys_enmy >------------------------------------------------
		EXT	ENCSET_DM
;
;-------------< ys_rpro >------------------------------------------------
		EXT	CHIPON
;
;-------------< ys_exst >------------------------------------------------
		EXT	EXINSR,EXSTRA
;
		EXT	MP_SB
;
;-------------< ys_data >------------------------------------------------
		EXT	COS,SIN
;
;------------------------------------------------------------------------
;-		define symbol						-
;------------------------------------------------------------------------
;
;
;
;************************************************************************
;*									*
;*		program start						*
;*									*
;************************************************************************
;
;
;
		EXTEND
;
;
		MEM8
		IDX8
;
Group_11	GROUP	Mpen_pro
Mpen_pro	SECT	REL
;
;------------------------------------------------------------------------
;
;
;------------------------------------------------------------------------
;-		マップＯＢＪ						-
;------------------------------------------------------------------------
;************************************************************************
;*		マップＯＢＪ初期セットルーチンテーブル			*		  *
;************************************************************************
MP_INIT_ADR	EQU	$-(MAPSTART*2)
MP_PACN0_N	WORD	MP_PACN0IN	;[MP_PACN0]パックンフラワー
MP_WANW0_N	WORD	MP_WANW0IN	;[MP_WANW0]ワンワン
MP_SIMA0_N	WORD	MP_SIMA0IN	;[MP_SIMA0]島
MP_HASI0_N	WORD	MP_HASI0IN	;[MP_HASI0]橋
MP_BAGY0_N	WORD	MP_BAGY0IN	;[MP_BAGY0]４ＷＤ君
MP_OBAK0_N	WORD	MP_OBAK0IN	;[MP_OBAK0]お化け
MP_DORO0_N	WORD	MP_DORO0IN	;[MP_DORO0]泥棒君
MP_MUCH0_N	WORD	MP_MUCH0IN	;[MP_MUCH0]ムーチョ
MP_BOSS0_N	WORD	MP_BOSS0IN	;[MP_BOSS0]亀ボス
MP_BLOCK_N	WORD	MP_BLOCKIN	;[MP_BLOCK]ブロック
MP_COIN0_N	WORD	MP_COIN0IN	;[MP_COIN0]コイン
MP_SLAIM_N	WORD	MP_SLAIMIN	;[MP_SLAIM]スライム
MP_JYUGM_N	WORD	MP_JYUGMIN	;[MP_JYUGM]ジュゲム
MP_EGGFR_N	WORD	MP_EGGFRIN	;[MP_EGGFR]卵フラワー
MP_PUKPK_N	WORD	MP_PUKPKIN	;[MP_PUKPK]プクプク
MP_TAKHI_N	WORD	MP_TAKHIIN	;[MP_TAKHI]竹馬ヘイホー
MP_HATKM_N	WORD	MP_HATKMIN	;[MP_HATKM]ハテナ雲
MP_SESAW_N	WORD	MP_SESAWIN	;[MP_SESAW]シーソー
MP_TUMUG_N	WORD	MP_TUMUGIN	;[MP_TUMUG]つむじ君
MP_AHODR_N	WORD	MP_AHODRIN	;[MP_AHODR]阿呆鳥
;
;************************************************************************
;*		マップＯＢＪ名前ラベル					*
;************************************************************************
MP_PACN0	EQU	(MP_PACN0_N-MP_INIT_ADR)/2
MP_WANW0	EQU	(MP_WANW0_N-MP_INIT_ADR)/2
MP_SIMA0	EQU	(MP_SIMA0_N-MP_INIT_ADR)/2
MP_HASI0	EQU	(MP_HASI0_N-MP_INIT_ADR)/2
MP_BAGY0	EQU	(MP_BAGY0_N-MP_INIT_ADR)/2
MP_OBAK0	EQU	(MP_OBAK0_N-MP_INIT_ADR)/2
MP_DORO0	EQU	(MP_DORO0_N-MP_INIT_ADR)/2
MP_MUCH0	EQU	(MP_MUCH0_N-MP_INIT_ADR)/2
MP_BOSS0	EQU	(MP_BOSS0_N-MP_INIT_ADR)/2
MP_BLOCK	EQU	(MP_BLOCK_N-MP_INIT_ADR)/2
MP_COIN0	EQU	(MP_COIN0_N-MP_INIT_ADR)/2
MP_SLAIM	EQU	(MP_SLAIM_N-MP_INIT_ADR)/2
MP_JYUGM	EQU	(MP_JYUGM_N-MP_INIT_ADR)/2
MP_EGGFR	EQU	(MP_EGGFR_N-MP_INIT_ADR)/2
MP_PUKPK	EQU	(MP_PUKPK_N-MP_INIT_ADR)/2
MP_TAKHI	EQU	(MP_TAKHI_N-MP_INIT_ADR)/2
MP_HATKM	EQU	(MP_HATKM_N-MP_INIT_ADR)/2
MP_SESAW	EQU	(MP_SESAW_N-MP_INIT_ADR)/2
MP_TUMUG	EQU	(MP_TUMUG_N-MP_INIT_ADR)/2
MP_AHODR	EQU	(MP_AHODR_N-MP_INIT_ADR)/2
;
;************************************************************************
;*		マップＯＢＪ処理ルーチンテーブル			*
;************************************************************************
MP_MOVE_ADR	EQU	$-(MAPSTART*2)
		WORD	MP_PACN0MV	;[MP_PACN0]パックンフラワー
		WORD	MP_WANW0MV	;[MP_WANW0]ワンワン
		WORD	MP_SIMA0MV	;[MP_SIMA0]島
		WORD	MP_HASI0MV	;[MP_HASI0]橋
		WORD	MP_BAGY0MV	;[MP_BAGY0]４ＷＤ君
		WORD	MP_OBAK0MV	;[MP_OBAK0]お化け
		WORD	MP_DORO0MV	;[MP_DORO0]泥棒君
		WORD	MP_MUCH0MV	;[MP_MUCH0]ムーチョ
		WORD	MP_BOSS0MV	;[MP_BOSS0]亀ボス
		WORD	MP_BLOCKMV	;[MP_BLOCK]ブロック
		WORD	MP_COIN0MV	;[MP_COIN0]コイン
		WORD	MP_SLAIMMV	;[MP_SLAIM]スライム
		WORD	MP_JYUGMMV	;[MP_JYUGM]ジュゲム
		WORD	MP_EGGFRMV	;[MP_EGGFR]卵フラワー
		WORD	MP_PUKPKMV	;[MP_PUKPK]プクプク
		WORD	MP_TAKHIMV	;[MP_TAKHI]竹馬ヘイホー
		WORD	MP_HATKMMV	;[MP_HATKM]ハテナ雲
		WORD	MP_SESAWMV	;[MP_SESAW]シーソー
		WORD	MP_TUMUGMV	;[MP_TUMUG]つむじ君
		WORD	MP_AHODRMV	;[MP_AHODR]阿呆鳥
;
;************************************************************************
;*		ステータスデータ					*
;************************************************************************
MP_MODE2	EQU	$-(MAPSTART*2)
;			    [ENMOD2]
		WORD	0001000000000001B	;[MP_PACN0]パックンフラワー
		WORD	0001000000000001B	;[MP_WANW0]ワンワン
		WORD	0001000000000001B	;[MP_SIMA0]島
		WORD	0001000000000001B	;[MP_HASI0]橋
		WORD	0001100000000001B	;[MP_BAGY0]４ＷＤ君
		WORD	0001000000000001B	;[MP_OBAK0]お化け
		WORD	0001000000000001B	;[MP_DORO0]泥棒君
		WORD	0001000000000001B	;[MP_MUCH0]ムーチョ
		WORD	0010000000000001B	;[MP_BOSS0]亀ボス
		WORD	0001000000000001B	;[MP_BLOCK]ブロック
		WORD	0000100000000000B	;[MP_COIN0]コイン
		WORD	0001000000000001B	;[MP_SLAIM]スライム
		WORD	0010000000000001B	;[MP_JYUGM]ジュゲム
		WORD	0001000000000001B	;[MP_EGGFR]卵フラワー
		WORD	0000100000000000B	;[MP_PUKPK]プクプク
		WORD	0001100000000001B	;[MP_TAKHI]竹馬ヘイホー
		WORD	0010000000000001B	;[MP_HATKM]ハテナ雲
		WORD	0010100000000001B	;[MP_SESAW]シーソー
		WORD	0001000000000001B	;[MP_TUMUG]つむじ君
		WORD	0001100000000001B	;[MP_AHODR]阿呆鳥
;
;
MP_DATA0	EQU	$-(MAPSTART*2)
;			[ENYUSN]  [ENCLOR]
		BYTE	     003H,00100000B	;[MP_PACN0]パックンフラワー
		BYTE	     005H,00101110B	;[MP_WANW0]ワンワン
		BYTE	     005H,00011100B	;[MP_SIMA0]島
		BYTE	     005H,00101010B	;[MP_HASI0]橋
		BYTE	     005H,00101100B	;[MP_BAGY0]４ＷＤ君
		BYTE	     005H,00101010B	;[MP_OBAK0]お化け
		BYTE	     002H,00101100B	;[MP_DORO0]泥棒君
		BYTE	     005H,00101100B	;[MP_MUCH0]ムーチョ
		BYTE	     005H,00101100B	;[MP_BOSS0]亀ボス
		BYTE	     005H,00011110B	;[MP_BLOCK]ブロック
		BYTE	     005H,00111100B	;[MP_COIN0]コイン
		BYTE	     005H,00101100B	;[MP_SLAIM]スライム
		BYTE	     005H,00101100B	;[MP_JYUGM]ジュゲム
		BYTE	     005H,00101110B	;[MP_EGGFR]卵フラワー
		BYTE	     005H,00101100B	;[MP_PUKPK]プクプク
		BYTE	     005H,00101110B	;[MP_TAKHI]竹馬ヘイホー
		BYTE	     003H,00101110B	;[MP_HATKM]ハテナ雲
		BYTE	     003H,00101100B	;[MP_SESAW]シーソー
		BYTE	     003H,00101100B	;[MP_TUMUG]つむじ君
		BYTE	     003H,00101100B	;[MP_AHODR]阿呆鳥
;
;
;------------------------------------------------------------------------
;-		マップ　ワールド　１　ＯＢＪ　データー			-
;------------------------------------------------------------------------
MP_01_OBJ_00	EQU	$
;;;;;;;;;			enemy no.  X	 Y
;;;;;;;;		WORD	MP_PACN0,0070H,00B0H,0000H	;[00]
;;;;;;;;		WORD	MP_PACN0,0078H,00B8H,0002H	;[01]
;;;;;;;;		WORD	MP_WANW0,0040H,0090H,0000H	;[02]
;;;;;;;;		WORD	MP_WANW0,0058H,00A8H,0002H	;[03]
;;;;;;;;		WORD	MP_HASI0,0088H,00B0H,0000H	;[04]
;;;;;;;;		WORD	MP_SIMA0,00C0H,0078H,0000H	;[05]
;;;;;;;;		WORD	MP_BAGY0,0108H,00B0H,0000H	;[06]
;;;;;;;;		WORD	MP_OBAK0,00A0H,00A0H,0000H	;[07]
;;;;;;;;		WORD	MP_DORO0,00B0H,0090H,0000H	;[08]
;;;;;;;;		WORD	MP_MUCH0,0168H,0078H,0000H	;[09]
;;;;;;;;		WORD	MP_BOSS0,01D8H,00A8H,0000H	;[0A]
;			enemy no.  X	 Y   muki
		WORD	MP_PACN0,008AH,00C2H,0000H	;[00]
		WORD	MP_WANW0,0040H,0090H,0000H	;[01]
		WORD	MP_SIMA0,00E8H,0078H,0000H	;[02]
		WORD	MP_DORO0,0126H,00D2H,0000H	;[03]
		WORD	MP_MUCH0,0060H,0080H,0000H	;[04]
		WORD	MP_BLOCK,0100H,0098H,0000H	;[05]
		WORD	MP_BLOCK,01B0H,00D4H,0000H	;[06]
		WORD	MP_JYUGM,01D0H,006CH,0000H	;[07]
		WORD	MP_SLAIM,01D8H,00ACH,0000H	;[08]
		WORD	MP_COIN0,003AH,00C8H,0000H	;[09]
		WORD	MP_COIN0,0052H,00A8H,0001H	;[0A]
		WORD	MP_COIN0,019AH,00D0H,0003H	;[0B]
		WORD	MP_TAKHI,00B4H,008EH,0000H	;[0C]
		WORD	MP_SESAW,0113H,00BFH,0000H	;[0D]
		WORD	MP_HATKM,00F0H,00C4H,0000H	;[0E]
		WORD	MP_EGGFR,000CH,00A6H,0000H	;[0F]
		WORD	MP_PUKPK,00E8H,00AAH,0000H	;[10]
		WORD	MP_TUMUG,01C8H,00B8H,0000H	;[11]
		WORD	MP_AHODR,0120H,0080H,0000H	;[12]
		WORD	0000H	;end code
;
;------------------------------------------------------------------------
;-		マップ　ワールド　２　ＯＢＪ　データー			-
;------------------------------------------------------------------------
MP_01_OBJ_01	EQU	$
;			enemy no.  X	 Y
		WORD	0000H	;end code
;
;------------------------------------------------------------------------
;-		マップ　ワールド　３　ＯＢＪ　データー			-
;------------------------------------------------------------------------
MP_01_OBJ_02	EQU	$
;			enemy no.  X	 Y
		WORD	0000H	;end code
;
;------------------------------------------------------------------------
;-		マップ　ワールド　４　ＯＢＪ　データー			-
;------------------------------------------------------------------------
MP_01_OBJ_03	EQU	$
;			enemy no.  X	 Y
		WORD	0000H	;end code
;
;------------------------------------------------------------------------
;-		マップ　ワールド　５　ＯＢＪ　データー			-
;------------------------------------------------------------------------
MP_01_OBJ_04	EQU	$
;			enemy no.  X	 Y
		WORD	0000H	;end code
;
;------------------------------------------------------------------------
;-		マップ　ワールド　６　ＯＢＪ　データー			-
;------------------------------------------------------------------------
MP_01_OBJ_05	EQU	$
MP_01_OBJ_06	EQU	$
;			enemy no.  X	 Y
		WORD	0000H	;end code
;
;
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		マップ敵イニシャル					x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;
;
MPENADR		EQU	$
		WORD	MP_01_OBJ_00,MP_01_OBJ_01,MP_01_OBJ_02
		WORD	MP_01_OBJ_03,MP_01_OBJ_04,MP_01_OBJ_05
		WORD	MP_01_OBJ_06
;
;
MAP_OBJ_INIT	EQU	$
		PHB
		PHK
		PLB
;
		MI16
;
		LDA	#0FFFFH
		STA	OBJCHR_BNK
		STA	OBJCHR_BNK+2
		STA	OBJCHR_BNK+4
;
		LDY	MPTYPE
		LDX	!MPENADR,Y
		JSR	MAP_OBJ_READ
;
		MEM8
		IDX8
;
;
;************************************************************************
;*									*
;*		マップ敵メイン						*
;*									*
;************************************************************************
;
MAP_OBJ_MOVE	EQU	$
		JSL	>ENCSET_DM	;マップＯＢＪ ＯＡＭセット
		JSL	>MAP_OBJ	;マップＯＢＪ処理
;
		M16
;
		M_CHIP	DX_OAM		;OAM convert
;
		M8
;
		PLB
		RTL
;
;
;************************************************************************
;*		マップＯＢＪデータ読み込み				*
;*			in  : (X) <-- マップＯＢＪデータポインター	*
;*			in  : (X) <-- マップＯＢＪデータポインター	*
;************************************************************************
;
		MEM16
		IDX16
;
MAP_OBJ_READ	EQU	$
		LDA	!0,X		;(A) <-- マップＯＢＪＮｏ．
		BEQ	MOR050		;データ終了？ ( yes:MOR050 )
;
		PHX			;(X) save
;
		I8
;
		JSR	MP_INSR
;
		I16
;
		PLX			;(X) load
;
		LDA	!2,X		;Ｘ座標初期セット
		STA	ENXPSL,Y
		LDA	!4,X		;Ｙ	”
		STA	ENYPSL,Y
		LDA	!6,X
		STA	ENMUKI,Y	;向きセット
		TXA
		CLC
		ADC	#8
		TAX
		BRA	MAP_OBJ_READ
;
MOR050		EQU	$
;
		MI8
;
		RTS
;
;************************************************************************
;*		マップＯＢＪメイン					*
;************************************************************************
;
		DPAGE	EN0RAM
;
MAP_OBJ		EQU	$
		PHB
		PHK
		PLB
		PHD			;(D) save
;
		M16
;
		LDA	#EN0RAM		;(D) <-- enemy 0 page
		TCD
;
;-------------- フレームカウンターセット --------------------------------
		INC	<FRCNT2
;
;-------------- 座標計算 ------------------------------------------------
;
		M_CHIP	XYMOVE
;
;------------------------------------------------------------------------
;		効果
;------------------------------------------------------------------------
		JSL	>EXSTRA		;効果
;
;-------------- マップＯＢＪルーチン ------------------------------------
		LDX	#(ENNO-1)*4
MAP_OBJ_050	EQU	$
		STX	<ENINDX
;
;----------------------------------------------------------------
;-		random set					-
;----------------------------------------------------------------
		LDY	2137H
		LDY	213FH
		LDA	213CH
		CLC
		ADC	<RANDM0
		STA	<RANDM0
;
;-------------- マップＯＢＪモードセレクト ----------------------
		JSR	MAP_MDSL
;
		DEX
		DEX
		DEX
		DEX
		BPL	MAP_OBJ_050
;
		M8
;
		PLD
		PLB
		RTL
;
		MEM16
;
;************************************************************************
;*		マップＯＢＪモードセレクト				*
;************************************************************************
MAP_MDSL	EQU	$
		LDA	ENMODE,X
		BEQ	RTSSUB
;
		JSR	MP_SUB0
;
		LDY	ENMODE,X
		LDA	!MP_MODE_ADR,Y
		PHA
;
RTSSUB		EQU	$
		RTS
;
MP_MODE_ADR	EQU	$-(CENOK-1)*2
MP_01		WORD	MP_INIT-1
MP_02		WORD	MP_MOVE-1
;
;- - - - - - - - - - - - - - - -
MINIT		EQU	MP_01-MP_MODE_ADR
MMOVE		EQU	MP_02-MP_MODE_ADR
;
;==========================================
MP_SUB0		EQU	$
		LDA	ENTIM0,X
		BEQ	MP_SUB0_050
		DEC	ENTIM0,X
MP_SUB0_050	EQU	$
		LDA	ENTIM1,X
		BEQ	MP_SUB0_100
		DEC	ENTIM1,X
MP_SUB0_100	EQU	$
		LDA	ENTIM2,X
		BEQ	MP_SUB0_150
		DEC	ENTIM2,X
MP_SUB0_150	EQU	$
		LDA	ENTIM3,X
		BEQ	MP_SUB0_200
		DEC	ENTIM3,X
MP_SUB0_200	EQU	$
		RTS
;
;************************************************************************
;*		マップＯＢＪ初期セットルーチン				*
;************************************************************************
MP_INIT		EQU	$
		LDA	#MMOVE		;next goto move !!
		STA	ENMODE,X
		LDA	ENMYNO,X
		ASL	A
;
		I16
;
		TAY
		LDA	!MP_INIT_ADR,Y
		STA	<EWORK
;
		I8
;
		JMP	(EWORK)
;
;************************************************************************
;*		マップＯＢＪ処理ルーチン				*
;************************************************************************
MP_MOVE		EQU	$
		LDA	ENMYNO,X
		ASL	A
;
		I16
;
		TAY
		LDA	!MP_MOVE_ADR,Y
		STA	<EWORK
;
		I8
;
		JMP	(EWORK)
;
;************************************************************************
;*		マップＯＢＪエリア確保（ＢＧ２側表示セット）		*
;*			in  : (A) <-- enemy no.				*
;*			out : (C) <-- 0:area nothing			*
;*				1:find (Y) <- index			*
;************************************************************************
MP_INSR_X	EQU	$
		JSR	MP_INSR
		BCC	INSR_X_050
;
		LDA	#02FFH		;[ & LDA #02H	  ]
		STA	ENRETN,Y	;[ & STA ENDORE,Y ]
INSR_X_050	EQU	$
		RTS
;
;************************************************************************
;*		マップＯＢＪエリア確保					*
;*			in  : (A) <-- enemy no.				*
;*			out : (C) <-- 0:area nothing			*
;*				1:find (Y) <- index			*
;************************************************************************
MP_INSR		EQU	$
		PHA			;(A) save
;
		LDY	#(ENNO-1)*4
INSR050		EQU	$
		LDA	ENMODE,Y
		BEQ	INSR100		;area find ? ( yes:INSR100 )
		DEY
		DEY
		DEY
		DEY
		BPL	INSR050
		PLA
		CLC
		RTS
;
INSR100		EQU	$
		LDA	#MINIT
		STA	ENMODE,Y
		LDA	#00FFH
		STA	ENRETN,Y	;[ & STA ENDORE,Y ]
		LDA	#0000
		STA	ENCOLD,Y
		STA	ENXSPD,Y
		STA	ENYSPD,Y
		STA	ENCONT,Y
;;;;;;;;		STA	ENMUKI,Y
		STA	ENEMU0,Y	;[ & STA ENXSDR,Y ]
		STA	ENCHRB,Y	;[ & STA ENYSDR,Y ]
		STA	ECRSFG,Y	;[ & STA ENCRPT,Y ]
		STA	ENWRK0,Y	;[ & STA ENWRK1,Y ]
		STA	ENWRK2,Y	;[ & STA ENWRK3,Y ]
		STA	ENWRK4,Y	;[ & STA ENWRK5,Y ]
		STA	ENWRK6,Y	;[ & STA ENWRK7,Y ]
		STA	ENWRK8,Y	;[ & STA ENWRK9,Y ]
		STA	ENWRKA,Y	;[ & STA ENWRKB,Y ]
		STA	ENWRKC,Y	;[ & STA ENWRKD,Y ]
		STA	ENTIM0,Y
		STA	ENTIM1,Y
		STA	ENTIM2,Y
		STA	ENTIM3,Y
		STA	ENCHPT,Y
		STA	ENCBFG,Y
		STA	ENSLOP,Y	;[ & STA EN_ADD_XSP,Y ]
		STA	ENSHOT,Y
		STA	ENDSXL,Y
		STA	ENDSYL,Y
		STA	ENXPOW,Y
		STA	ENXMAX,Y
		STA	ENWRKX,Y	;[ & STA ENSPTM,Y ]
		STA	ENGPOW,Y
		STA	ENGMAX,Y
		STA	ENMOD0,Y
		STA	ENMOD1,Y
		DEC	A		;[ LDA #0FFFFH ]
		STA	ENTROB,Y
		LDA	#0FFH+(((100H/8)-1)*100H)
		STA	ENWATR,Y
;
		PLA			;(A) load
;
		STA	ENMYNO,Y
;
		PHX			;(X) save
;
		ASL	A
;
		I16
;
		TAX
		LDA	!MP_DATA0+1,X
		AND	#00FFH
		STA	ENCLOR,Y
		LDA	!MP_DATA0,X
		AND	#00FFH
		STA	ENYUSN,Y
		LDA	!MP_MODE2,X
		STA	ENMOD2,Y
;
		I8			; index 8 bit mode !!
;
		PLX			;(X) load
		SEC
		RTS
;
;
;
		MEM16
		IDX8
;
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		パックンフラワーイニシャルセット			x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TIMINTD		EQU	$
		WORD	00005H,00038H
;
PTNINTD		EQU	$
		WORD	00000H,00002H
;
MP_PACN0IN	EQU	$
		LDY	ENMUKI,X
		LDA	!TIMINTD,Y
		STA	ENTIM0,X
		LDA	!PTNINTD,Y
		STA	<ENCONT,X
		STA	ENCHPT,X
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		パックンフラワームーブ					x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
PACPTDT		EQU	$
		WORD	00000H,00001H,00002H,00003H,00004H,00003H,00004H,00003H
		WORD	00004H,00003H,00004H
;
PACTMDT		EQU	$
		WORD	00005H,00005H,00018H,00006H,00006H,00006H,00006H,00006H
		WORD	00006H,00006H,00006H
;
;
MP_PACN0MV	EQU	$
		LDA	ENTIM0,X
		BNE	MP_PNV100	; char chenge ?
;					; Yes !!
		INC	<ENCONT,X	; paturn counter inc. !!
		LDA	<ENCONT,X
		ASL	A
		TAY
		CPY	#PACTMDT-PACPTDT
		BNE	MP_PNV050	; paturn counter over ?
;					; Yes !!
		LDY	#000
		STZ	<ENCONT,X	; paturn counter clear !!
;
MP_PNV050	EQU	$
		LDA	!PACPTDT,Y
		STA	ENCHPT,X	; paturn No. set !!
		LDA	!PACTMDT,Y
		STA	ENTIM0,X	; paturn timer set !!
;
MP_PNV100	EQU	$
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		ワンワンイニシャルセット				x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MP_WANW0IN	EQU	$
		LDA	ENYPSL,X
		STA	<ENWRK0,X
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		ワンワンムーブ						x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
WANPTDT		EQU	$
		WORD	00000,00001,00002,00001
;
XSPDATA		EQU	$
		WORD	0FFC0H,00040H
;
;
MP_WANW0MV	EQU	$
		LDA	ENTIM0,X
		BNE	MP_WWV250	; jump ?
;					; Yes !!
		LDA	ENWRKC,X
		BNE	MP_WWV050	; jump initial ?
;					; Yes !!
		LDA	ENMUKI,X
		EOR	#00002
		STA	ENMUKI,X	; wanwan frip !!
		TAY
		LDA	!XSPDATA,Y
		STA	ENXSPD,X
		LDA	#00200H
		STA	ENGMAX,X	; 重力ＭＡＸセット
		LDA	#00020H
		STA	ENGPOW,X	; 重力セット
		LDA	#0FD00H
		STA	ENYSPD,X
		INC	ENWRKC,X
		BRA	MP_WWV250
;
MP_WWV050	EQU	$
		LDA	ENYPSL,X
		CMP	<ENWRK0,X
		BCC	MP_WWV100	; 着地した　？
;					; Yes !!
		LDA	<ENWRK0,X
		STA	ENYPSL,X
		STZ	ENGMAX,X
		STZ	ENGPOW,X
		STZ	ENWRKC,X
		STZ	ENYSPD,X
		STZ	ENXSPD,X
		LDA	#00020H
		STA	ENTIM0,X
		BRA	MP_WWV250
;
MP_WWV100	EQU	$
		LDA	ENYSPD,X
		CLC
		ADC	#00180H
		CMP	#00300H
		BCS	MP_WWV200	; キャラクターチェンジ　？
;					; Yes !!
		INC	<ENCONT,X
		LDA	<ENCONT,X
		AND	#00003
		BNE	MP_WWV150	; パターンチェンジ　？
;					; Yes !!
		LDA	<ENCONT,X
		AND	#0000CH
		LSR	A
		TAY
		LDA	!WANPTDT,Y
		STA	ENCHPT,X
;
MP_WWV150	EQU	$
		BRA	MP_WWV250
;
MP_WWV200	EQU	$
		STZ	ENCHPT,X
;
MP_WWV250	EQU	$
		I16			; index 16 bit mode !!
		LDY	ENOAML,X
		LDA	<ENWRK0,X
		SEC
		SBC	ENYPSL,X
		CLC
		ADC	ENYPSL,X
		CLC
		ADC	#0000CH
		STA	SOAM_DX+10,Y
		LDA	ENYPSL,X
		SEC
		SBC	<ENWRK0,X
		CMP	#00010H
		BCC	MP_WWV300
;
		LDA	SOAM_DX+12,Y
		AND	#0FF00H
		ORA	#0000EH
		STA	SOAM_DX+12,Y
;
MP_WWV300	EQU	$
		I8			; index 8 bit mode !!
;
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		島イニシャルセット					x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MP_SIMA0IN	EQU	$
		LDA	#02FFH		;[ & LDA #02H	  ]
		STA	ENRETN,X	;[ & STA ENDORE,X ]
		LDA	ENXPSL,X
		STA	<ENWRK0,X
		SEC
		SBC	MPSCH31
		STA	ENXPSL,X
;
		I16			; index 16 bit mode !!
;
		LDY	ENOAML,X
		STA	SOAM_DX,Y
		CLC
		ADC	#00010H
		STA	SOAM_DX+8,Y
;
		I8			; index 8 bit mode !!
;
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		島ムーブ						x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MP_SIMA0MV	EQU	$
		LDA	<ENWRK0,X
		SEC
		SBC	MPSCH31
		STA	ENXPSL,X
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		橋イニシャルセット					x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MP_HASI0IN	EQU	$
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		橋ムーブ						x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MP_HASI0MV	EQU	$
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		４ＷＤ君イニシャルセット				x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MP_BAGY0IN	EQU	$
		LDA	ENYPSL,X
		STA	<ENWRK4,X
		CLC
		ADC	#00010H
		STA	<ENWRK2,X
		LDA	ENXPSL,X
		STA	ENWRK8,X
		CLC
		ADC	#00010H
		STA	ENWRK6,X
		LDA	#00008
		STA	ENTIM1,X
;
SACHMOV		EQU	$
		TXA
		CLC
		ADC	<ENCONT,X
		TAY
		LDA	ENWRK6,Y
		STA	R1		; 目標Ｘ座標
		LDA	ENWRK2,Y
		STA	R2		; 目標Ｙ座標
		LDA	ENXPSL,X
		STA	R3		; 現在Ｘ座標
		LDA	ENYPSL,X
		STA	R4		; 現在Ｙ座標
		LDA	#00100H
		STA	R6		; 移動スピード
;
		M_CHIP	SEARCH_SPEED
;
		LDX	<ENINDX
		LDA	R1
		STA	ENXSPD,X	; Ｘスピード
		LDA	R2
		STA	ENYSPD,X	; Ｙスピード
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		４ＷＤ君ムーブ						x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
BAGYPTD		EQU	$
		WORD	00004,00005
;
;
MP_BAGY0MV	EQU	$
		LDA	ENTIM0,X
		BNE	MP_BYV150
;
		STZ	<ENWRK0,X
		TXA
		CLC
		ADC	<ENCONT,X
		TAY
		LDA	ENXPSL,X
		SEC
		SBC	ENWRK6,Y
		BEQ	MP_BYV030
		BCC	MP_BYV050	; 目標Ｘ座標オーバー　？
;					; Yes !!
		EOR	ENXSPD,X
		BMI	MP_BYV050	; X point over ?
;					; Yes !!
MP_BYV030	EQU	$
		LDA	ENWRK6,Y
		XBA
		STA	ENWRKA,X
		AND	#0FF00H
		STA	ENXSDR,X
;
		M8			; memory 8 bit mode !!
;
		LDA	ENWRKA,X
		STA	ENXPSH,X
;
		M16			; memory 16 bit mode !!
;
		STZ	ENXSPD,X
		INC	<ENWRK0,X
;
MP_BYV050	EQU	$
		LDA	ENYPSL,X
		SEC
		SBC	ENWRK2,Y
		BEQ	MP_BYV070
		BCC	MP_BYV100	; 目標Ｙ座標オーバー　？
;					; Yes !!
		EOR	ENYSPD,X
		BMI	MP_BYV100	; Y point over ?
;					; Yes !!
MP_BYV070	EQU	$
		LDA	ENWRK2,Y
		XBA
		STA	ENWRKA,X
		AND	#0FF00H
		STA	ENYSDR,X
;
		M8			; memory 8 bit mode !!
;
		LDA	ENWRKA,X
		STA	ENYPSH,X
;
		M16			; memory 16 bit mode !!
;
		STZ	ENYSPD,X
		INC	<ENWRK0,X
;
MP_BYV100	EQU	$
		LDA	<ENWRK0,X
		CMP	#00002
		BNE	MP_BYV200	; next pointer ?
;					; Yes !!
		LDA	<ENCONT,X
		STA	ENCHPT,X
		EOR	#00002
		STA	<ENCONT,X
		LDA	#00030H
		STA	ENTIM0,X
		RTS
;
MP_BYV150	EQU	$
		CMP	#00001H
		BEQ	MP_BYV190
;
		CMP	#00018H
		BNE	MP_BYV170
;
		LDY	<ENCONT,X
		LDA	!BAGYPTD,Y
		STA	ENCHPT,X
;
MP_BYV170	EQU	$
		RTS
;
MP_BYV190	EQU	$
		LDA	<ENCONT,X
		STA	ENCHPT,X
;
MP_BYV200	EQU	$
		LDA	ENTIM1,X
		BNE	MP_BYV250
;
		LDA	ENCHPT,X
		EOR	#00001
		STA	ENCHPT,X
		LDA	#00008
		STA	ENTIM1,X
;
MP_BYV250	EQU	$
		JMP	SACHMOV
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		お化けイニシャルセット					x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
OBAXSPD		EQU	$
		WORD	0FF80H,00080H
;
;
MP_OBAK0IN	EQU	$
		LDY	ENMUKI,X
		LDA	!OBAXSPD,Y
		STA	ENXSPD,X
		LDA	#0FF80H
		STA	ENGMAX,X	; 重力ＭＡＸセット
		LDA	#00004H
		STA	ENGPOW,X	; 重力セット
		LDA	#000B0H
		STA	ENYSPD,X
		LDA	#00008
		STA	ENTIM0,X
		LDA	ENYPSL,X
		STA	<ENWRK0,X
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		お化けムーブ						x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
OBAPTDT		EQU	$
		WORD	00000,00001,00002,00001
;
;
MP_OBAK0MV	EQU	$
		LDA	ENTIM0,X
		BNE	MP_OKV050	; キャラクターチェンジ　？
;					; Yes !!
		LDA	<ENCONT,X
		INC	A
		AND	#00003
		STA	<ENCONT,X
		ASL	A
		TAY
		LDA	!OBAPTDT,Y
		STA	ENCHPT,X	; パターンＮｏ．セット
		LDA	#0000CH
		STA	ENTIM0,X	; パターンタイマーセット
;
MP_OKV050	EQU	$
		LDA	ENTIM1,X
		BEQ	MP_OKV080	; 移動　？
;					; Yes !!
		CMP	#00001
		BNE	MP_OKV100	; 移動イニシャルセット　？
;					; Yes !!
		LDA	ENMUKI,X
		EOR	#00002
		STA	ENMUKI,X	; 向き反転
		TAY
		LDA	!OBAXSPD,Y
		STA	ENXSPD,X	; Ｘ　スピードセット
		LDA	#000B0H
		STA	ENYSPD,X	; Ｙ　スピードセット
		LDA	#0FF80H
		STA	ENGMAX,X	; 重力ＭＡＸセット
		LDA	#00004H
		STA	ENGPOW,X	; 重力セット
;
MP_OKV080	EQU	$
		LDA	ENYSPD,X
		BPL	MP_OKV100	; 上昇中　？
;					; Yes !!
		LDA	<ENWRK0,X
		CMP	ENYPSL,X
		BCC	MP_OKV100	; 上昇オーバー　？
;					; Yes !!
		STZ	ENYSDR,X
		LDA	<ENWRK0,X
		STA	ENYPSL,X
		LDA	#00030H
		STA	ENTIM1,X
		STZ	ENGMAX,X
		STZ	ENGPOW,X
		STZ	ENXSPD,X
		STZ	ENYSPD,X
;
MP_OKV100	EQU	$
		I16			; index 16 bit mode !!
;
		LDY	ENOAML,X
		LDA	<ENWRK0,X
		CLC
		ADC	#00020H
		STA	SOAM_DX+10,Y
;
		LDA	ENYPSL,X
		SEC
		SBC	<ENWRK0,X
		CMP	#0000CH
		BCC	MP_OKV150	; 影キャラクターチェンジ　？
;					; Yes !!
		LDA	SOAM_DX+12,Y
		SEC
		SBC	#00002
		STA	SOAM_DX+12,Y
;
MP_OKV150	EQU	$
		I8			; index 16 bit mode !!
;
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		泥棒君イニシャルセット					x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MP_DORO0IN	EQU	$
		LDA	#00010H
		STA	ENTIM0,X	; パターンチェンジタイマーセット
		LDA	#00000
		STA	ENCHPT,X	; パターンＮｏ．セット
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		泥棒君ムーブ						x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MP_DORO0MV	EQU	$
		LDA	<ENWRK0,X
		ASL	A
		TAY
		LDA	!DRMVADR,Y
		STA	<EWORK0
		JMP	(EWORK0)
;
;
DRMVADR		EQU	$
		WORD	MOVWAIT		; 泥棒君ストップルーチン
		WORD	DORMOVE		; 泥棒君移動ルーチン
		WORD	NOZOMOV		; 泥棒君覗き見ルーチン
		WORD	DORMOV1		; 泥棒君移動ルーチン
		WORD	NOZOMV1		; 泥棒君覗き見ルーチン
		WORD	DORMOV1		; 泥棒君移動ルーチン
		WORD	NOZOMV2		; 泥棒君覗き見ルーチン
		WORD	DORMOV2		; 泥棒君移動ルーチン
;
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		JSR	MOVWAIT ( 泥棒君ストップルーチン )		x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MOVWAIT		EQU	$
		LDA	ENTIM0,X
		BNE	MWT050		; 泥棒君移動　？
;					; Yes !!
		INC	<ENWRK0,X
		LDA	#00006
		STA	ENTIM0,X	; パターンチェンジタイマーセット
		LDA	#0FF00H
		STA	ENXSPD,X	; 移動スピードセット
		LDA	ENXPSL,X
		SEC
		SBC	#00012
		STA	<ENWRK2,X	; 次のＸポジションセット
		LDA	#00002
		STA	ENCHPT,X	; パターンＮｏ．セット
;
MWT050		EQU	$
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		JSR	DORMOVE ( 泥棒君移動ルーチン )			x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MOVPTD0		EQU	$
		WORD	00002,00003,00004
;
DORMOVE		EQU	$
		LDA	ENTIM0,X
		BNE	DORMOVE_050	; 移動パターンチェンジ　？
;					; Yes !!
		INC	<ENCONT,X
		LDA	<ENCONT,X
		ASL	A
		TAY
		LDA	!MOVPTD0,Y
		STA	ENCHPT,X	; 移動パターンセット
		LDA	#00006
		STA	ENTIM0,X	; 移動パターンタイマーセット
;
DORMOVE_050	EQU	$
		LDA	ENXPSL,X
		CMP	<ENWRK2,X
		BNE	DORMOVE_100
;
		LDA	<ENWRK2,X
		STA	ENXPSL,X	; 移動Ｘポジションセット
		STZ	ENXSPD,X	; 移動スピードクリアー
		INC	<ENWRK0,X	; モードインク
		LDA	#00004
		STA	ENTIM0,X	; パターンチェンジタイマーセット
		STZ	<ENCONT,X
;
PRIOSET		EQU	$
		I16			; index 16 bit mode !!
;
		LDY	ENOAML,X
		LDA	SOAM_DX+4,Y
		ORA	#01000H
		STA	SOAM_DX+4,Y	; プライオリティーセット
;
		I8			; index 8 bit mode !!
;
DORMOVE_100	EQU	$
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		JSR	NOZOMOV ( 泥棒君覗き見ルーチン )		x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
NOZOPTD		EQU	$
		WORD	00002H,00003H,00002H,00003H,00002H,00003H,00002H
;
NOZOTMD		EQU	$
		WORD	00010H,00010H,00010H,00010H,00010H,00010H,00004H
;
;
NOZOMOV		EQU	$
		JSR	PRIOSET
		LDA	ENTIM0,X
		BNE	NOZOMOV_050	; パターンチェンジ　？
;					; Yes !!
		INC	<ENCONT,X
		LDA	<ENCONT,X
		ASL	A
		TAY
		LDA	!NOZOPTD,Y
		STA	ENCHPT,X	; パターンＮｏ．セット
		LDA	!NOZOTMD,Y
		STA	ENTIM0,X	; パターンチェンジタイマーセット
		CPY	#(NOZOTMD-NOZOPTD)-2
		BNE	NOZOMOV_050	; 走っていく　？
;					; Yes !!
		INC	<ENWRK0,X	; モードインク
		LDA	ENXPSL,X
		SEC
		SBC	#0002CH
		STA	<ENWRK2,X	; 次のＸポジションセット
		LDA	#0FF00H
		STA	ENXSPD,X	; 移動スピードセット
;
NOZOMOV_050	EQU	$
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		JSR	DORMOV1 ( 泥棒君移動ルーチン )			x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MOVPTD1		EQU	$
		WORD	00002,00004
;
DORMOV1		EQU	$
		JSR	PRIOSET
		LDA	ENTIM0,X
		BNE	DORMOV1_050	; 移動パターンチェンジ　？
;					; Yes !!
		LDA	<ENCONT,X
		INC	A
		AND	#00001
		STA	<ENCONT,X
		ASL	A
		TAY
		LDA	!MOVPTD1,Y
		STA	ENCHPT,X	; 移動パターンセット
		LDA	#00006
		STA	ENTIM0,X	; 移動パターンタイマーセット
;
DORMOV1_050	EQU	$
		LDA	ENXPSL,X
		CMP	<ENWRK2,X
		BNE	DORMOV1_100
;
		LDA	<ENWRK2,X
		STA	ENXPSL,X	; 移動Ｘポジションセット
		STZ	ENXSPD,X	; 移動スピードクリアー
		INC	<ENWRK0,X	; モードインク
		LDA	#00010H
		STA	ENTIM0,X	; パターンチェンジタイマーセット
		STZ	<ENCONT,X
		LDA	#00002
		STA	ENCHPT,X	; パターンＮｏ．セット
;
DORMOV1_100	EQU	$
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		JSR	NOZOMV1 ( 泥棒君覗き見ルーチン )		x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
NOZOMV1		EQU	$
		JSR	PRIOSET
		LDA	ENTIM0,X
		BNE	NOZOMV1_050	; パターンチェンジ　？
;					; Yes !!
		INC	<ENCONT,X
		LDA	<ENCONT,X
		ASL	A
		TAY
		LDA	!NOZOPTD,Y
		STA	ENCHPT,X	; パターンＮｏ．セット
		LDA	!NOZOTMD,Y
		STA	ENTIM0,X	; パターンチェンジタイマーセット
		CPY	#(NOZOTMD-NOZOPTD)-2
		BNE	NOZOMV1_050	; 走っていく　？
;					; Yes !!
		INC	<ENWRK0,X	; モードインク
		LDA	ENXPSL,X
		CLC
		ADC	#0002CH
		STA	<ENWRK2,X	; 次のＸポジションセット
		LDA	#00100H
		STA	ENXSPD,X	; 移動スピードセット
		LDA	#00002
		STA	ENMUKI,X	; 向き反転
;
NOZOMV1_050	EQU	$
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		JSR	NOZOMV2 ( 泥棒君覗き見ルーチン )		x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
NOZOMV2		EQU	$
		JSR	PRIOSET
		LDA	ENTIM0,X
		BNE	NOZOMV2_050	; パターンチェンジ　？
;					; Yes !!
		INC	<ENCONT,X
		LDA	<ENCONT,X
		ASL	A
		TAY
		LDA	!NOZOPTD,Y
		STA	ENCHPT,X	; パターンＮｏ．セット
		LDA	!NOZOTMD,Y
		STA	ENTIM0,X	; パターンチェンジタイマーセット
		CPY	#(NOZOTMD-NOZOPTD)-2
		BNE	NOZOMV2_050	; 走っていく　？
;					; Yes !!
		INC	<ENWRK0,X	; モードインク
		LDA	ENXPSL,X
		CLC
		ADC	#00012
		STA	<ENWRK2,X	; 次のＸポジションセット
		LDA	#00100H
		STA	ENXSPD,X	; 移動スピードセット
;
NOZOMV2_050	EQU	$
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		JSR	DORMOV2 ( 泥棒君移動ルーチン )			x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DORMOV2		EQU	$
		LDA	ENTIM0,X
		BNE	DORMOV2_050	; 移動パターンチェンジ　？
;					; Yes !!
		LDA	<ENCONT,X
		INC	A
		AND	#00001
		STA	<ENCONT,X
		ASL	A
		TAY
		LDA	!MOVPTD1,Y
		STA	ENCHPT,X	; 移動パターンセット
		LDA	#00006
		STA	ENTIM0,X	; 移動パターンタイマーセット
;
DORMOV2_050	EQU	$
		LDA	ENXPSL,X
		CMP	<ENWRK2,X
		BNE	DORMOV2_100
;
		LDA	<ENWRK2,X
		STA	ENXPSL,X	; 移動Ｘポジションセット
		STZ	ENXSPD,X	; 移動スピードクリアー
		STZ	<ENWRK0,X	; モードクリアー
		LDA	#00040H*15
		STA	ENTIM0,X	; パターンチェンジタイマーセット
		STZ	<ENCONT,X
		LDA	#00000
		STA	ENCHPT,X	; パターンＮｏ．セット
		STZ	ENMUKI,X
;
DORMOV2_100	EQU	$
		RTS
;
;
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		ムーチョイニシャルセット				x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MUCXSPD		EQU	$
		WORD	00080H,0FF80H
;
;
MP_MUCH0IN	EQU	$
		LDA	ENXPSL,X
		STA	<ENWRK4,X	; left X position set !!
		CLC
		ADC	#00030H
		STA	<ENWRK2,X	; right X position set !!
		LDY	ENMUKI,X
		LDA	!MUCXSPD,Y
		STA	ENXSPD,X	; Ｘスピードセット !!
		LDA	#00008
		STA	ENTIM0,X	; パターンタイマーセット !!
		LDA	ENYPSL,X
		STA	ENWRK6,X
		LDA	#00004
		STA	ENTIM2,X
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		ムーチョムーブ						x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
PUROPSD		EQU	$
		WORD	00000H,0FFFBH
;
FRIPDAT		EQU	$
		WORD	00000H,04000H
;
;
MP_MUCH0MV	EQU	$
		LDA	<ENWRK0,X
		BEQ	MP_MHV100	; move stop ?
;					; Yes !!
		LDA	ENTIM1,X
		BNE	MP_MHV050	; move start ?
;					; Yes !!
		STZ	<ENWRK0,X
		LDA	<ENCONT,X
		EOR	#00002
		STA	<ENCONT,X	; 向きチェンジ
		TAY
		LDA	!MUCXSPD,Y
		STA	ENXSPD,X	; Ｘスピードセット
		LDA	ENCHPT,X
		AND	#00002
		EOR	#00002
		STA	ENCHPT,X
		LDA	ENWRK6,X
		STA	ENYPSL,X
		BRA	MP_MHV150
;
MP_MHV050	EQU	$
		AND	#00004
		LSR	A
		LSR	A
		CLC
		ADC	ENWRK6,X
		STA	ENYPSL,X
		BRA	MP_MHV150
;
MP_MHV100	EQU	$
		TXA
		CLC
		ADC	<ENCONT,X
		TAY
		LDA	ENXPSL,X
		CMP	ENWRK2,Y
		BNE	MP_MHV150	; 向きチェンジ？
;					; Yes !!
		INC	<ENWRK0,X	 ; move stop flag set !!
		LDA	#00030H
		STA	ENTIM1,X	; stop timer set !!
		STZ	ENXSPD,X
		LDA	ENCHPT,X
		EOR	#00001
		STA	ENCHPT,X
;
MP_MHV150	EQU	$
		LDA	ENTIM2,X
		BNE	MP_MHV200	; プロペラキャラクターチェンジ　？
;					; Yes !!
		LDA	ENWRK8,X
		EOR	#00002
		STA	ENWRK8,X
		LDA	#00001
		STA	ENTIM2,X
;
MP_MHV200	EQU	$
		PHX
		I16			; index 16 bit mode !!
;
		LDY	ENWRK8,X
		LDA	ENOAML,X
		TAX
		LDA	!PUROPSD,Y
		CLC
		ADC	SOAM_DX,X
		STA	SOAM_DX,X
		LDA	SOAM_DX+4,X
		EOR	!FRIPDAT,Y
		STA	SOAM_DX+4,X
;
		I8			; index 8 bit mode !!
		PLX
;
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		ＷＯＲＬＤ１　大ボスイニシャルセット			x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
BOSXSPD		EQU	$
		WORD	0FFC0H,00040H
;
;
MP_BOSS0IN	EQU	$
		LDA	ENXPSL,X
		STA	<ENWRK4,X	; left X position set !!
		SEC
		SBC	#00030H
		STA	<ENWRK2,X	; right X position set !!
		LDY	ENMUKI,X
		LDA	!BOSXSPD,Y
		STA	ENXSPD,X	; Ｘスピードセット !!
		LDA	#00008
		STA	ENTIM0,X	; パターンタイマーセット !!
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		ＷＯＲＬＤ１　大ボスムーブ				x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MP_BOSS0MV	EQU	$
		LDA	<ENCONT,X
		BEQ	MP_BS0050	; move stop ?
;					; Yes !!
		LDA	ENTIM1,X
		BNE	MP_BS0100	; move start ?
;					; Yes !!
		STZ	<ENCONT,X
		LDA	ENMUKI,X
		EOR	#00002
		STA	ENMUKI,X	; 向きチェンジ
		TAY
		LDA	!BOSXSPD,Y
		STA	ENXSPD,X	; Ｘスピードセット
		BRA	MP_BS0100
;
MP_BS0050	EQU	$
		TXA
		CLC
		ADC	ENMUKI,X
		TAY
		LDA	ENXPSL,X
		CMP	ENWRK2,Y
		BNE	MP_BS0100	; 向きチェンジ？
;					; Yes !!
		INC	<ENCONT,X	; move stop flag set !!
		LDA	#00020H
		STA	ENTIM1,X	; stop timer set !!
		STZ	ENXSPD,X
;
MP_BS0100	EQU	$
		LDA	ENTIM0,X
		BNE	MP_BS0150	; キャラクターチェンジ？
;					; Yes !!
		LDA	ENCHPT,X
		EOR	#00001
		STA	ENCHPT,X	; パターンセット
		LDA	#00008
		STA	ENTIM0,X	; タイマーセット
;
MP_BS0150	EQU	$
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		ＷＯＲＬＤ１　ブロックイニシャルセット			x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MP_BLOCKIN	EQU	$
		LDA	#00020H
		STA	ENTIM0,X	; パターンチェンジタイマーセット
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		ＷＯＲＬＤ１　ブロックムーブ				x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MP_BLOCKMV	EQU	$
		LDA	ENTIM0,X
		BNE	MP_BLOCKMV_050	; パターンチェンジ　？
;					; Yes !!
		LDA	ENCHPT,X
		EOR	#00001
		STA	ENCHPT,X	; パターンＮｏ．セット
		LDA	#00020H
		STA	ENTIM0,X	; パターンチェンジタイマーセット
;
MP_BLOCKMV_050	EQU	$
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		ＷＯＲＬＤ１　コインイニシャルセット			x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MP_COIN0IN	EQU	$
		LDA	#00008H
		STA	ENTIM0,X	; コインパターンチェンジタイマーセット
		LDA	ENMUKI,X
		STA	<ENCONT,X	; コインパターンポインターセット
		STZ	ENMUKI,X	; 向きクリアー
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		ＷＯＲＬＤ１　コインムーブ				x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
COINPTD		EQU	$
		WORD	00000H,00001H,00002H,00001H
;
;
MP_COIN0MV	EQU	$
		LDA	ENTIM0,X
		BNE	MP_COIN0MV_050	; コインパターンチェンジ　？
;					; Yes !!
		LDA	<ENCONT,X
		INC	A
		AND	#00003
		STA	<ENCONT,X	; コインパターンポインターセット
		ASL	A
		TAY
		LDA	!COINPTD,Y
		STA	ENCHPT,X	; コインパターンＮｏ．セット
		LDA	#00008
		STA	ENTIM0,X	; コインパターンチェンジタイマーセット
;
MP_COIN0MV_050	EQU	$
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		ＷＯＲＬＤ１　スライムイニシャルセット			x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MP_SLAIMIN	EQU	$
		LDA	#00010H
		STA	ENTIM0,X	; キャラクターチェンジタイマーセット
		LDA	ENYPSL,X
		STA	ENWRKC,X	; Ｙ座標セット
		CLC
		ADC	#00008H
		STA	ENWRKA,X	; Ｙ座標セット
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		ＷＯＲＬＤ１　スライムムーブ				x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
SLAITMD		EQU	$
		WORD	00010H,00008H,00010H,00008H
;
SLAIPTD		EQU	$
		WORD	00000H,00001H,00002H,00001H
;
SLYSPDT		EQU	$
		WORD	00010H,0FFF0H
;
;
MP_SLAIMMV	EQU	$
		LDA	ENTIM0,X
		BNE	MP_SLAIMMV_050	; スライムパターンチェンジ　？
;					; Yes !!
		LDA	<ENCONT,X
		INC	A
		AND	#00003
		STA	<ENCONT,X
		ASL	A
		TAY
		LDA	!SLAIPTD,Y
		STA	ENCHPT,X	; スライムパターンＮｏ．セット
		LDA	!SLAITMD,Y
		STA	ENTIM0,X	; スライムパターンチェンジタイマーセット
;
MP_SLAIMMV_050	EQU	$
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		ＷＯＲＬＤ１　ジュゲムイニシャルセット			x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MP_JYUGMIN	EQU	$
		LDY	ENMUKI,X
		LDA	!OBAXSPD,Y
		STA	ENXSPD,X
		LDA	#0FF80H
		STA	ENGMAX,X	; 重力ＭＡＸセット
		LDA	#00004H
		STA	ENGPOW,X	; 重力セット
		LDA	#000B0H
		STA	ENYSPD,X
		LDA	#00008
		STA	ENTIM0,X
		LDA	ENYPSL,X
		STA	<ENWRK0,X
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		ＷＯＲＬＤ１　ジュゲムムーブ				x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MP_JYUGMMV	EQU	$
		LDA	ENTIM0,X
		BNE	MP_JYUGMMV_050	; キャラクターチェンジ　？
;					; Yes !!
		LDA	ENCHPT,X
		EOR	#00001
;;;;;;;;		INC	A
;;;;;;;;		CMP	#00003
;;;;;;;;		BNE	MP_JYUGMMV_020	; パターンＮｏ．オーバー　？
;;;;;;;;;					; Yes !!
;;;;;;;;		LDA	#00000
;;;;;;;;;
;;;;;;;;MP_JYUGMMV_020	EQU	$
		STA	ENCHPT,X	; パターンＮｏ．セット
		LDA	#00008H
		STA	ENTIM0,X	; パターンタイマーセット
;
MP_JYUGMMV_050	EQU	$
		LDA	ENTIM1,X
		BEQ	MP_JYUGMMV_100	; 移動　？
;					; Yes !!
		CMP	#00001
		BNE	MP_JYUGMMV_150	; 移動イニシャルセット　？
;					; Yes !!
		LDA	ENMUKI,X
		EOR	#00002
		STA	ENMUKI,X	; 向き反転
		TAY
		LDA	!OBAXSPD,Y
		STA	ENXSPD,X	; Ｘ　スピードセット
		LDA	#000B0H
		STA	ENYSPD,X	; Ｙ　スピードセット
		LDA	#0FF80H
		STA	ENGMAX,X	; 重力ＭＡＸセット
		LDA	#00004H
		STA	ENGPOW,X	; 重力セット
;
MP_JYUGMMV_100	EQU	$
		LDA	ENYSPD,X
		BPL	MP_JYUGMMV_150	; 上昇中　？
;					; Yes !!
		LDA	<ENWRK0,X
		CMP	ENYPSL,X
		BCC	MP_JYUGMMV_150	; 上昇オーバー　？
;					; Yes !!
		STZ	ENYSDR,X
		LDA	<ENWRK0,X
		STA	ENYPSL,X
		LDA	#00030H
		STA	ENTIM1,X	; ジュゲム止まっているタイマーセット
		STZ	ENGMAX,X	; 重力ＭＡＸクリアー
		STZ	ENGPOW,X	; 重力クリアー
		STZ	ENXSPD,X	; Ｘスピードクリアー
		STZ	ENYSPD,X	; Ｙスピードクリアー
		LDA	#00000
		STA	ENCHPT,X	; パターンＮｏ．セット
;
MP_JYUGMMV_150	EQU	$
		RTS
;
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		卵フラワーイニシャルセット				x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MP_EGGFRIN	EQU	$
		LDA	#0001CH
		STA	ENTIM0,X	; パターンチェンジタイマーセット
		LDA	ENYPSL,X
		STA	<ENWRK2,X	; イニシャルＹポジションセット
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		卵フラワームーブ					x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MP_EGGFRMV	EQU	$
		LDA	<ENWRK0,X
		ASL	A
		TAY
		LDA	!MP_EGGFRMV_ADR,Y
		STA	<EWORK0
		JMP	(EWORK0)
;
;
MP_EGGFRMV_ADR	EQU	$
		WORD	EGFRWAT		; 卵フラワー止まってる処理
		WORD	EGFRJMP		; 卵ジャンプ処理
;
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		JSR	EGFRWAT ( 卵フラワー止まってる処理 )		x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
EGFRWAT		EQU	$
		LDA	ENTIM0,X
		BNE	EGFRWAT_050	; 卵ジャンプする　？
;					; Yes !!
		INC	<ENWRK0,X
		LDA	#00001
		STA	ENCHPT,X	; パターンＮｏ．セット
		LDA	#0FE00H
		STA	ENYSPD,X	; ジャンプスピードセット
		LDA	#00040H
		STA	ENGPOW,X	; 重力スピードセット
		LDA	#00400H
		STA	ENGMAX,X	; 重力マックススピードセット
;
EGFRWAT_050	EQU	$
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		JSR	EGFRJMP ( 卵ジャンプ処理 )			x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
EGFRJMP		EQU	$
		LDA	ENYPSL,X
		CMP	<ENWRK2,X
		BCC	EGFRJMP_050	; ジャンプ終わり　？
;					; Yes !!
		STZ	ENYSDR,X
		LDA	<ENWRK2,X
		STA	ENYPSL,X	; Ｙポジションセット
		STZ	ENCHPT,X	; パターンＮｏ．セット
		LDA	#0001CH
		STA	ENTIM0,X	; パターンチェンジタイマーセット
		STZ	ENYSPD,X	; ジャンプスピードクリアー
		STZ	<ENWRK0,X	; モードクリアー
		STZ	ENGPOW,X	; 重力スピードクリアー
		STZ	ENGMAX,X	; 重力マックススピードクリアー
;
EGFRJMP_050	EQU	$
		I16			; index 16 bit mode !!
;
		LDY	ENOAML,X
		LDA	<ENWRK2,X
		STA	SOAM_DX+8+2,Y	; フラワーＹポジションセット
;
		I8			; index 8 bit mode !!
;
		RTS
;
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		プクプクイニシャルセット				x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MP_PUKPKIN	EQU	$
		LDA	#0FC00H
		STA	ENYSPD,X	; ジャンプスピードセット
		LDA	ENYPSL,X
		STA	<ENWRK2,X	; イニシャルＹポジションセット
		LDA	#00040H
		STA	ENGPOW,X	; 重力スピードセット
		LDA	#00400H
		STA	ENGMAX,X	; 重力マックススピードセット
		LDA	#00003
		STA	ENTIM0,X	; パターンチェンジタイマーセット
;
MIZUSET		EQU	$
		LDA	#MP_SB
		JSL	>EXINSR
		LDA	<ENWRK2,X
		CLC
		ADC	#00008H
		STA	EXYPSL,Y
		LDA	ENXPSL,X
		CLC
		ADC	#00002H
		STA	EXXPSL,Y
		LDA	#00010H
		STA	EXTIM0,Y
;
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		プクプクムーブ						x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MP_PUKPKMV	EQU	$
		LDA	<ENWRK0,X
		ASL	A
		TAY
		LDA	!MP_PUKPKMV_ADR,Y
		STA	<EWORK0
		JMP	(EWORK0)
;
;
MP_PUKPKMV_ADR	EQU	$
		WORD	PUKJUMP		; プクプクジャンプ処理
		WORD	PUKWAIT		; プクプク止まってる処理
;
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		JSR	PUKJUMP ( プクプクジャンプ処理 )		x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
PUKJUMP		EQU	$
		LDA	ENYSPD,X
		BMI	PUKJUMP_050	; 上昇中　？
;					; No !!
		LDA	ENYPSL,X
		CMP	<ENWRK2,X
		BCC	PUKJUMP_050
;
		STZ	ENYSDR,X
		LDA	<ENWRK2,X
		STA	ENYPSL,X	; Ｙポジションセット
		LDA	#0001CH
		STA	ENTIM0,X	; パターンチェンジタイマーセット
		STZ	ENYSPD,X	; ジャンプスピードクリアー
		INC	<ENWRK0,X	; モードインク
		STZ	ENGPOW,X	; 重力スピードクリアー
		STZ	ENGMAX,X	; 重力マックススピードクリアー
		LDA	#00040H*15
		STA	ENTIM0,X	; 次に出てくるタイマーセット
		LDA	#000FFH
		STA	ENYUSN,X
		JSR	MIZUSET
;
PUKJUMP_050	EQU	$
		LDA	ENTIM0,X
		BNE	PUKJUMP_100	; 反転する　？
;					; Yes !!
		LDA	ENMUKI,X
		EOR	#00002
		STA	ENMUKI,X
;
PUKJUMP_100	EQU	$
		LDY	#000
		LDA	ENYSPD,X
		BMI	PUKJUMP_150	; 上昇中　？
;					; No !!
		INY
;
PUKJUMP_150	EQU	$
		TYA
		STA	ENCHPT,X	; パターンＮｏ．セット
;
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		JSR	PUKWAIT ( プクプク止まってる処理 )		x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
PUKWAIT		EQU	$
		LDA	ENTIM0,X
		BNE	PUKWAIT_050	; ジャンプする　？
;					; Yes !!
		LDA	#0FC00H
		STA	ENYSPD,X	; ジャンプスピードセット
		LDA	#00040H
		STA	ENGPOW,X	; 重力スピードセット
		LDA	#00400H
		STA	ENGMAX,X	; 重力マックススピードセット
		LDA	#00003
		STA	ENTIM0,X	; パターンチェンジタイマーセット
		STZ	ENCHPT,X
		LDA	#00005H
		STA	ENYUSN,X
		STZ	<ENWRK0,X	; モードクリアー
		JMP	MIZUSET
;
PUKWAIT_050	EQU	$
		RTS
;
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		竹馬ヘイホーイニシャルセット				x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MP_TAKHIIN	EQU	$
		LDA	#0000EH
		STA	ENTIM0,X	; パターンチェンジタイマーセット
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		竹馬ヘイホームーブ					x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TKHIPTD		EQU	$
		WORD	00000H,00001H,00000H,00002H
;
MP_TAKHIMV	EQU	$
		LDA	ENTIM0,X
		BNE	MP_TAKHIMV_050	; パターンチェンジ　？
;					; Yes !!
		LDA	<ENCONT,X
		INC	A
		AND	#00003
		STA	<ENCONT,X
		ASL	A
		TAY
		LDA	!TKHIPTD,Y
		STA	ENCHPT,X	; パターンＮｏ．セット
		LDA	#0000EH
		STA	ENTIM0,X	; パターンチェンジタイマーセット
;
MP_TAKHIMV_050	EQU	$
		RTS
;
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		ハテナ雲イニシャルセット				x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MP_HATKMIN	EQU	$
		LDA	ENYPSL,X
		STA	<ENWRK4,X	; イニシャルＹポジションセット
		SEC
		SBC	#00010H
		STA	<ENWRK2,X
		LDA	#00006
		STA	ENTIM0,X	; パターンチェンジタイマーセット
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		ハテナ雲ムーブ						x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
HTNGMPD		EQU	$
		WORD	00000H,00001H,00002H,00001H
;
HTNYSPD		EQU	$
		WORD	0FFFFH,00001H
;
;
MP_HATKMMV	EQU	$
		LDA	ENTIM0,X
		BNE	MP_HATKMMV_050	; パターンチェンジ　？
;					; Yes !!
		LDA	<ENCONT,X
		INC	A
		AND	#00003
		STA	<ENCONT,X	; パターンポインターセット
		ASL	A
		TAY
		LDA	!HTNGMPD,Y
		STA	ENCHPT,X	; パターンＮｏ．セット
		LDA	#00006
		STA	ENTIM0,X	; パターンチェンジタイマーセット
;
MP_HATKMMV_050	EQU	$
;;;;;;;;		I16			; index 16 bit mode !!
;;;;;;;;;
;;;;;;;;		LDA	FRCNT
;;;;;;;;		AND	#00007
;;;;;;;;		BNE	MP_HATKMMV_100	; 移動する　？
;;;;;;;;;
;;;;;;;;		LDY	<ENWRK0,X
;;;;;;;;		LDA	!HTNYSPD,Y
;;;;;;;;		STA	ENWRK6,X	; 移動スピードセット
;;;;;;;;		TXA
;;;;;;;;		ORA	<ENWRK0,X
;;;;;;;;		TAY
;;;;;;;;;
;;;;;;;;		LDA	ENYPSL,X
;;;;;;;;		CLC
;;;;;;;;		ADC	ENWRK6,X
;;;;;;;;		STA	ENYPSL,X	; ハテナ雲Ｙポジションセット
;;;;;;;;		CMP	ENWRK2,Y
;;;;;;;;		BNE	MP_HATKMMV_100	; 逆移動　？
;;;;;;;;;					; Yes !!
;;;;;;;;		LDA	<ENWRK0,X
;;;;;;;;		EOR	#00002
;;;;;;;;		STA	<ENWRK0,X	; 移動方向反転
;;;;;;;;;
;;;;;;;;MP_HATKMMV_100	EQU	$
;;;;;;;;		LDY	ENOAML,X
;;;;;;;;		LDA	<ENWRK4,X
;;;;;;;;		CLC
;;;;;;;;		ADC	#00012H
;;;;;;;;		STA	SOAM_DX+(8*3)+2,Y
;;;;;;;;;
;;;;;;;;		I8			; index 8 bit mode !!
;;;;;;;;;
		RTS
;
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		シーソーイニシャルセット				x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MP_SESAWIN	EQU	$
		LDA	!SISOTMD
		STA	ENTIM0,X	; パターンチェンジタイマーセット
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		シーソームーブ						x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
SISOPTD		EQU	$
		WORD	00000H,00001H,00002H,00001H,00000H,00003H,00004H,00003H
;
SISOTMD		EQU	$
		WORD	0000CH,0000CH,00016H,0000CH,0000CH,0000CH,00016H,0000CH
;
;
MP_SESAWMV	EQU	$
		LDA	ENTIM0,X
		BNE	MP_SESAWMV_050	; パターンチェンジ　？
;					; Yes !!
		LDA	<ENCONT,X
		INC	A
		AND	#00007
		STA	<ENCONT,X
		ASL	A
		TAY
		LDA	!SISOPTD,Y
		STA	ENCHPT,X	; パターンＮｏ．セット
		LDA	!SISOTMD,Y
		STA	ENTIM0,X	; パターンチェンジタイマーセット
;
MP_SESAWMV_050	EQU	$
		RTS
;
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		つむじ君イニシャルセット				x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MP_TUMUGIN	EQU	$
		LDA	ENXPSL,X
		STA	<ENWRK4,X	; 出発Ｘ地点セット
		SEC
		SBC	#00018H
		STA	ENWRK6,X	; 中間Ｘ地点セット
		SEC
		SBC	#00018H
		STA	<ENWRK2,X	; 折り返しＸ地点セット
		LDA	#00010H
		STA	ENXPOW,X	; 横Ｇスピードセット
		LDA	#0FC00H
		STA	ENXMAX,X	; 横Ｇマックススピードセット
		LDA	#00006
		STA	ENTIM0,X	; パターンチェンジタイマーセット
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		つむじ君ムーブ						x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MP_TUMUGMV	EQU	$
		LDA	<ENWRK0,X
		ASL	A
		TAY
		LDA	!MP_TUMUGMV_ADR,Y
		STA	<EWORK0
		JMP	(EWORK0)
;
;
MP_TUMUGMV_ADR	EQU	$
		WORD	TUMUMOV		; つむじ君移動処理
		WORD	TUMUHAN		; つむじ君反転処理
;
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		JSR	TUMUMOV ( つむじ君移動処理 )			x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TUMUSPD		EQU	$
		WORD	00010H,00010H,00010H,00010H
;
TUMUMXD		EQU	$
		WORD	0FC00H,00000H,00000H,00400H
;
;
TUMUMOV		EQU	$
		LDA	ENMUKI,X
		ASL	A
		TAY
		LDA	ENXPSL,X
		CMP	ENWRK6,X
		BCS	TUMUMOV_050	; つむじ君中間地点より右　？
;					; No !!
		INY
		INY
;
TUMUMOV_050	EQU	$
		LDA	!TUMUSPD,Y
		STA	ENXPOW,X	; 横Ｇスピードセット
		LDA	!TUMUMXD,Y
		STA	ENXMAX,X	; 横Ｇマックススピードセット
		TXA
		ORA	ENMUKI,X
		TAY
		LDA	ENWRK2,Y
		STA	R1		; 目標Ｘ座標
		LDA	ENYPSL,X
		STA	R2		; 目標Ｙ座標
		STA	R4		; 現在Ｙ座標
		LDA	ENXPSL,X
		STA	R3		; 現在Ｘ座標
		LDA	#00200H
		STA	R6		; 移動スピード
		PHY
;
		M_CHIP	SEARCH_SPEED
;
		PLY
		LDX	<ENINDX
		LDA	ENXPSL,X
		SEC
		SBC	ENWRK2,Y
		BEQ	TUMUMOV_100	; 目的地到着　？
;					; No !!
		EOR	R1
		BMI	TUMUMOV_150	; 目的地オーバー　？
;					; Yes !!
TUMUMOV_100	EQU	$
		STZ	ENXSDR,X
		LDA	ENWRK2,Y
		STA	ENXPSL,X	; 目的地セット
		STZ	ENXPOW,X	; 横Ｇスピードクリアー
		STZ	ENXMAX,X	; 横Ｇマックススピードクリアー
		STZ	ENXSPD,X	; 横スピードクリアー
		INC	<ENWRK0,X	; モードインク
		LDA	#00008
		STA	ENTIM0,X	; パターンチェンジタイマーセット
		LDA	#00003
		STA	ENCHPT,X
		RTS
;
TUMUMOV_150	EQU	$
		LDA	ENTIM0,X
		BNE	TUMUMOV_250	; パターンチェンジ　？
;					; Yes !!
		LDA	ENCHPT,X
		INC	A
		CMP	#00003
		BNE	TUMUMOV_200	; パターンＮｏ．オーバー　？
;					; Yes !!
		LDA	#00000
;
TUMUMOV_200	EQU	$
		STA	ENCHPT,X	; パターンＮｏ．セット
		LDA	#00006
		STA	ENTIM0,X	; パターンチェンジタイマーセット
;
TUMUMOV_250	EQU	$
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		JSR	TUMUHAN ( つむじ君反転処理 )			x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TUMUHAN		EQU	$
		LDA	ENTIM0,X
		BNE	TUMUHAN_050
;
		LDA	ENMUKI,X
		EOR	#00002
		STA	ENMUKI,X	; 向き反転
		ASL	A
		TAY
		LDA	!TUMUSPD,Y
		STA	ENXPOW,X	; 横Ｇスピードセット
		LDA	!TUMUMXD,Y
		STA	ENXMAX,X	; 横Ｇマックススピードセット
		STZ	<ENWRK0,X	; モードクリアー
		LDA	#00006
		STA	ENTIM0,X	; パターンチェンジタイマーセット
		STZ	ENCHPT,X	; パターンＮｏ．セット
;
TUMUHAN_050	EQU	$
		RTS
;
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		阿呆鳥イニシャルセット					x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MP_AHODRIN	EQU	$
		LDA	ENXPSL,X
		SEC
		SBC	#00020H
		STA	<ENWRK2,X	; Ｘ中心位置セット
		LDA	ENYPSL,X
		STA	<ENWRK4,X	; Ｙ中心位置セット
;;;;;;;;		LDA	#00004
;;;;;;;;		STA	ENTIM1,X	; 角度替えタイマーセット
		LDA	#00008
		STA	ENTIM0,X	; パターンチェンジタイマーセット
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		阿呆鳥ムーブ						x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
AHOMUKD		EQU	$
		WORD	00000H,00000H,00002H,00002H
;
PATNMKD		EQU	$
		WORD	00000H,00002H,00002H,00000H
;
AHOPTND		EQU	$
		WORD	00000H,00006H,00000H,0FFFAH
;
PATNCPD		EQU	$
		WORD	00006H,0000CH
;
PATNLDD		EQU	$
		WORD	00000H,00006H
;
;
MP_AHODRMV	EQU	$
;;;;;;;;		LDA	ENTIM1,X
;;;;;;;;		BNE	MP_AHODRMV_050	; 角度替え　？
;;;;;;;;;					; Yes !!
		I16			; index 16 bit mode !!
;
		LDA	ENWRK6,X
		CLC
		ADC	#00001H
		AND	#000FFH
		STA	ENWRK6,X
		TXY
		ASL	A
		TAX
		LDA	>COS,X
		AND	#08000H
		STA	<EWORK0
		LDA	>COS,X
		LSR	A
		ORA	<EWORK0
		LSR	A
		ORA	<EWORK0
		LSR	A
		ORA	<EWORK0
		CLC
		ADC	ENWRK2,Y
		STA	ENXPSL,Y	; Ｘポジションセット
		LDA	>SIN,X
		EOR	#0FFFFH
		INC	A
		STA	<EWORK2
		AND	#08000H
		STA	<EWORK0
		LDA	<EWORK2
		LSR	A
		ORA	<EWORK0
		LSR	A
		ORA	<EWORK0
		LSR	A
		ORA	<EWORK0
		LSR	A
		ORA	<EWORK0
		LSR	A
		ORA	<EWORK0
		CLC
		ADC	ENWRK4,Y
		STA	ENYPSL,Y	; Ｙポジションセット
		TYX
;
		I8			; index 8 bit mode !!
;
MP_AHODRMV_050	EQU	$
		LDA	ENWRK6,X
		AND	#0003FH
		BNE	MP_AHODRMV_200
;
		LDA	ENWRK6,X
		AND	#000C0H
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		TAY
		LDA	!AHOMUKD,Y
		STA	ENMUKI,X	; むきセット
		LDA	!PATNMKD,Y
		STA	<ENCONT,X
		LDA	ENCHPT,X
		CLC
		ADC	!AHOPTND,Y
;;;;;;;;		CMP	!PATNCPD,Y
;;;;;;;;		BCS	MP_AHODRMV_200	; パターンチェンジ　？
;;;;;;;;;					; Yes !!
;;;;;;;;		LDA	!PATNLDD,Y
		STA	ENCHPT,X	; パターンＮｏ．セット
;
MP_AHODRMV_200	EQU	$
		LDY	<ENCONT,X
		LDA	ENTIM0,X
		BNE	MP_AHODRMV_300	; パターンチェンジ　？
;					; Yes !!
		LDA	ENCHPT,X
		INC	A
		CMP	!PATNCPD,Y
		BCC	MP_AHODRMV_250	; パターンＮｏ．オーバー　？
;					; Yes !!
		LDA	!PATNLDD,Y
;
MP_AHODRMV_250	EQU	$
		STA	ENCHPT,X	; パターンＮｏ．セット
		LDA	#00008
		STA	ENTIM0,X	; パターンチェンジタイマーセット
;
MP_AHODRMV_300	EQU	$
		RTS
;
;
;
;
;
;
;
;
;
;
;
;
;
;
		END
