;************************************************************************
;*									*
;*	title name	: "yossy"					*
;*	proccess	: game play main				*
;*	file name	: ys_bgsc					*
;*									*
;************************************************************************
;
;
		SALL
;
		include		yst_header.inc
		include		../../../JPN/sfc/ys_unit.h
		include		../../../JPN/sfc/ys_color.h
		include		../../../JPN/sfc/ys_msg.h
		include		../../../JPN/sfc/ys_presno.h
		include		../../../JPN/sfc/ys_ename.h
;
		XALL
;
;
;------------------------------------------------------------------------
;-		global symbol						-
;------------------------------------------------------------------------
		GLB	GMINIT,GMPLAY,GMFADE,GMGOAL
		GLB	BG3SCRCLR,BG3WANCLR,BG3WTRCLR
		GLB	BGCOIN_SETCHK
;
		GLB	BGCIN_STCHK_ADR,BGCIN_STCHK_DAT
		GLB	Pause_move
;
;------------------------------------------------------------------------
;-		extern symbol						-
;------------------------------------------------------------------------
;
;-------------< ys_main >------------------------------------------------
		EXT	OAMDXCLR,VRAMCL,URAMCLR,OAMCLR,VMADSPL,BLNKOFF
		EXT	RANDAM
		EXT	DMA_M_M,SOUND_3_ON
;
		EXT	GMIN
		EXT	B3CL,WNCL,B3WRCL
;
;-------------< ys_enmy >------------------------------------------------
		EXT	EFAIL,ECHNG
;
;-------------< ys_enmy3 >-----------------------------------------------
		EXT	ITEGG_INIT,TO_COIN_CHANGE
;
;-------------< ys_rpro >------------------------------------------------
		EXT	CHIPON,CHIPON1
		EXT	NEWVMADL,BGCDMA_L
;
;-------------< ys_init >------------------------------------------------
		EXT	GMCHRST,GMCOLST,GMMDST,UNCOMPRES,VRAMDX_ST
		EXT	DBLTELESA,DBLCOLST,UNCOMPRES_X
		EXT	DIVDTST,M_DMA_BFST,M_DMA_BFST_N
		EXT	M_DMA_BFST_K
;
		EXT	GM01,GM02,GM03,GM04,GM05,GM06,GM07
		EXT	GM08,GM09,GM0A,GM0B,GM0C,GM0D,GM0E,GM0F,GM10
		EXT	ENITSB
;
;-------------< ys_play >------------------------------------------------
		EXT	PLINIT,PLAYER,PLCSET,PLSCRL
		EXT	SCRL_CXY_SET
		EXT	TIMEUP_SET,BERO_CANCEL
		EXT	PCLR
;
;-------------< ys_enmy >------------------------------------------------
		EXT	ENEMY,ENINSB,ENCSET,ENINSR
		EXT	QKM_COIN_XSP
		EXT	BABY0,BABY3,EGG00
;
;-------------< ys_exst >------------------------------------------------
		EXT	EXINSR
		EXT	TMKNX
;
;-------------< ys_data >------------------------------------------------
		EXT	DIVDAT,SIN,COS
;
;-------------< ys_bgsc >------------------------------------------------
		EXT	BGINT,BGSET,BG3SCK,UNITST
;
;-------------< ys_bgsc0 >-----------------------------------------------
		EXT	RND_RND
;
;-------------< yst_init >-----------------------------------------------
		EXT	ITSB
;
;-------------< yst_en_edit >--------------------------------------------
		EXT	HNKNST
;
;-------------< yst_en_file >--------------------------------------------
		EXT	MODINC
;
;------------------------------------------------------------------------
;-		define symbol						-
;------------------------------------------------------------------------
;;;;		EQU
;
;
;
;************************************************************************
;*									*
;*		program start						*
;*									*
;************************************************************************
;
;
		EXTEND
;
;
		MEM8
		IDX8
;
Group_1	       GROUP   Game_pro
Game_pro	SECT	REL
;
;************************************************************************
;*		game use ram clear					*
;************************************************************************
GMURAMCLR	EQU	$
		JSL	>URAMCLR
		RTL
;
;************************************************************************
;*		game initial						*
;************************************************************************
GMMDNOD		EQU	$	;[DSPMOD]
		BYTE	GM01	;[00:地下、雪コースなど（基本タイプ）]
		BYTE	GM02	;[01:モグラＢＧ３マスク]
		BYTE	GM03	;[02:水中]
		BYTE	GM04	;[03:溶岩モード２]
		BYTE	GM05	;[04:バブルＢＧ３マスク]
		BYTE	GM06	;[05:カベ]
		BYTE	GM07	;[06:森のこもれび]
		BYTE	GM08	;[07:穴ジュゲム、アホー鳥ＢＧ３コース]
		BYTE	GM09	;[08:雪降りコース]
		BYTE	GM0A	;[09:ボス　モード７用]
		BYTE	GM0B	;[0A:モード０  ダブル テレサ用]
		BYTE	GM0C	;[0B:ドカン]
		BYTE	GM0D	;[0C:ＢＧ２敵]
		BYTE	GM0E	;[0D:ＢＧ２敵ゲロゲーロの胃袋]
		BYTE	GM0F	;[0E:ＢＧ３マスク]
		BYTE	GM10	;[0F:雪だんだんやむコース]
;
;------------------------------------------------------------------------
;-		たべるｏｒなげるフラグデータ				-
;------------------------------------------------------------------------
GMINIT		EQU	$
		PHB			;(DBR) save
		PHK			;(DBR) <-- (PBR)
		PLB
;
		DOS	_DOSSTP		;sfx-dos stop !!
;
;-------------- イニシャル ヒット フラグ ＯＮ !! --------
		LDA	#0FFH
		STA	!SV_STATUS
		LDA	#001
		STA	!MAPOINT
		STZ	!MID_POINT
		STZ	!SPECIAL_P
		STZ	!SPECIAL_P+1
;
;-------------- 赤ちゃんランダムセット ------------------
		JSL	>RANDAM
		AND	#03H
		STA	BABYNO
		STZ	BABYNO
;
;-------------- プレイヤー初期データセット --------------
		LDA	#58H
		STA	TIMCNT
		LDA	#99
		STA	PLCONT
		LDA	#050
		STA	!BONAS_CNT
;;;;K;;;;		LDA	#3
;;;;K;;;;		STA	PLLIFE
;
		JSL	>VRAMCL		;VRAM clear
;
;-------------- ＴＯＯＬ用ＲＡＭの退避 ------------------
		MI16			; memory , index 16bit mode
		LDX	#00000
TOOL_TAIHI	EQU	$
		LDA	!TOOL_RAM_START,X
		STA	>TOOL_BUF,X
		INX
		INX
		CPX	#TOOL_RAM_SIZE
		BCC	TOOL_TAIHI
;
		LDA	!ENBGFLG
		BNE	KKKKK_KKKKK
		LDA	!ENDTPT
		STA	>ENMYDTBF
;
		PHB
		LDX	#ENMYDTBF
		LDY	#ENMYDTBF_BAK
		LDA	#01000H-1
		MVN	#BANK ENMYDTBF,#BANK ENMYDTBF_BAK
		PLB
;
KKKKK_KKKKK	EQU	$
;
		PHB
		LDX	#COURSEDT
		LDY	#DTBUFF_BAK
		LDA	#01000H-1
		MVN	#BANK COURSEDT,#BANK DTBUFF_BAK
		PLB
		MI8			; memory , index 8bit mode
;
		JSL	>GMURAMCLR	;use RAM clear
;
		LDA	#004
		STA	!SVFILEIDX
;
		M16			; memory 16bit mode
		LDX	#080H-2
KKKK_KKKK	EQU	$
		STZ	!SV_COIN_BF0,X
		STZ	!SV_COIN_BF1,X
		STZ	!SV_COIN_BF2,X
		STZ	!SV_COIN_BF3,X
		DEX
		DEX
		BPL	KKKK_KKKK
;
		M8			; memory 8bit mode
		LDA	#000
		TAX
KKK_KKK		EQU	$
		INC	A
		STA	!ITEMBUF,X
		CMP	#005
		BCC	KKK_KKK_000
		LDA	#000
KKK_KKK_000	EQU	$
		INX
		CPX	#027
		BCC	KKK_KKK
;
;------------------------------------------------------------------------
;-		course data initial set					-
;------------------------------------------------------------------------
;
		MI16
;
;;;;		    LDA	    NEXTGOTO
;;;;		    BNE	    GMIN010	    ;next go to ? ( yes:GMIN010 )
;
;----------------------------------------------------------------
;-		1st course data set				-
;----------------------------------------------------------------
;
;-------------- たまごオプションクリアー ------------------------
		STZ	EGGPNT
;
;-------------- 敵ＲＡＭクリアー --------------------------------
		LDX	#(CEXNO+CENNO-1)*4
		LDA	#0FFH
GMIN000		EQU	$
		STZ	EXMODE,X
		STA	EXYUSN,X
		DEX
		DEX
		DEX
		DEX
		BPL	GMIN000
;
;;;;		    LDA	    MAPOINT
;;;;		    ASL	    A
;;;;		    TAX
;;;;		    LDA	    >MPSTATBL,X
;;;;		    TAX
;;;;;
;;;;		    LDA	    >MPSTATUS+15,X  ;timer set
;;;;		    AND	    #00FFH
;;;;		    STA	    TIMERNO
;;;;		    STZ	    TIMERNO
;;;;		    LDA	    >MPSTATUS+16,X  ;player start X pos set
;;;;		    AND	    #00FFH
;;;;		    STA	    PLAYXP
;;;;		    LDA	    >MPSTATUS+17,X  ;	   "      Y    "
;;;;		    AND	    #00FFH
;;;;		    STA	    PLAYYP
;;;;		    LDA	    >MPSTATUS+14,X  ;course data pointer set
;;;;		    BRA	    GMIN020
;;;;;
;;;;;----------------------------------------------------------------
;;;;;-		    next go to course data set			    -
;;;;;----------------------------------------------------------------
;;;;GMIN010	    EQU	    $
;;;;		    STZ	    NEXTGOTO	    ;next go to flag reset
;;;;		    LDA	    <PLYPSH
;;;;		    ASL	    A
;;;;		    ASL	    A
;;;;		    ASL	    A
;;;;		    ASL	    A
;;;;		    ORA	    <PLXPSH
;;;;		    AND	    #00FFH
;;;;		    ASL	    A		    ;x4
;;;;		    ASL	    A		    ;
;;;;		    TAX
;;;;		    LDA	    >NXGOTOBF+1,X   ;player start X pos set
;;;;		    AND	    #00FFH
;;;;		    STA	    PLAYXP
;;;;		    LDA	    >NXGOTOBF+2,X   ;	   "      Y    "
;;;;		    AND	    #00FFH
;;;;		    STA	    PLAYYP
;;;;		    LDA	    >NXGOTOBF+0,X   ;course data pointer set
;;;;;
;----------------------------------------------------------------
;-		course data set					-
;----------------------------------------------------------------
;;;;GMIN020	    EQU	    $
;;;;		    AND	    #00FFH
;;;;		    ASL	    A		    ;
;;;;		    STA	    <WORK	    ;
;;;;		    ASL	    A		    ; x6
;;;;;;;;	    CLC			    ;
;;;;		    ADC	    <WORK	    ;
;;;;		    TAX
;;;;;
;;;;;-------------- BG course data set ------------------------------
;;;;		    LDA	    >COURSTBL,X	    ;BG course data address set
;;;;;;;;		LDA	#COURSEDT
;;;;		    STA	    <BGDTADR
;;;;		    LDA	    >COURSTBL+1,X
;;;;;;;;		LDA	#COURSEDT/100H
;;;;		    STA	    <BGDTADR+1
;
;-------------- enemy data address set --------------------------
;;;;		    LDA	    >COURSTBL+3,X   ;enemy data address set
		LDA	#M_ENDTBF
		STA	>EDTADR
;;;;		    LDA	    >COURSTBL+5,X
;;;;		    AND	    #00FFH
		LDA	#BANK M_ENDTBF
		STA	>EDTADR+2
;
		MI8
;
;------------------------------------------------------------------------
;-		ＢＧ３水面位置セット					-
;------------------------------------------------------------------------
;
		M16
;
		LDA	#07B0H		;(A) <-- ＢＧ３水面位置（低）
		LDX	BG3TYP
		CPX	#13H
		BEQ	GMIN030_050
		LDA	#0700H		;(A) <-- ＢＧ３水面位置（高）
		CPX	#1DH
		BEQ	GMIN030_050
		LDA	#4000H		;(A) <-- ＢＧ３水面位置（無し）
GMIN030_050	EQU	$
		STA	WATER_Y
;
		M8
;
;-------------- BG buffer set -------------------------------------------
		JSL	>UNITST		;unit no. buffer set
;
;$$$$$$$$$$$$$$ プレイヤー出現位置セット＆ＢＧ１タイプ待避 $$$$$$$$$$$$$$
;
		M16
;
		LDA	BG1TYP
		STA	T_BG1TYP
		LDA	!BG1COL
		STA	!T_BG1COL
		LDA	T_PLXPSL
		STA	PLXPSL
		LDA	T_PLYPSL
		STA	PLYPSL
;
		M8
;
;
		LDX	#000
		LDA	#004
TEST_ITEM	EQU	$
		STA	!ITEMBUF,X
		INX
		CPX	#027
		BCC	TEST_ITEM
;
;
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
		LDA	!DSPMOD
		CMP	#00AH		; ダブルテレサ キャラクターセット ?
		BNE	GMIN045		;	 NO -> GMIN045
		JSL	>DBLTELESA
		JSL	>DBLCOLST
		BRA	GMIN048_50
;
;------------------------------------------------------------------------
;-		character set						-
;------------------------------------------------------------------------
GMIN045		EQU	$
		JSL	>GMCHRST	;コースキャラクターセット
;
;------------------------------------------------------------------------
;-		color set						-
;------------------------------------------------------------------------
		JSL	>GMCOLST	;color set
		JSL	>BGCDMA_L	;転送キャラクターセット
;
;------------------------------------------------------------------------
;-		PPU Reg. set						-
;------------------------------------------------------------------------
GMIN048		EQU	$
		LDY	DSPMOD
		LDX	!GMMDNOD,Y	;(X) <-- game mode type no.
		JSL	>GMMDST		;game mode set
;
;------------------------------------------------------------------------
;-		H-DMA initial set					-
;------------------------------------------------------------------------
		JSR	INHDMA		;H-DMA initial set
;
;------------------------------------------------------------------------
;-		BG screen set						-
;------------------------------------------------------------------------
		JSR	BG2_SCR_INIT	;ＢＧ２スクリーン初期セット
		JSR	BG3_SCR_INIT	;ＢＧ３	       ”
;
;------------------------------------------------------------------------
;-		player initial set					-
;------------------------------------------------------------------------
GMIN048_50	EQU	$
		JSL	>PLINIT		;player initial
;
;------------------------------------------------------------------------
;-		offset data initial set					-
;------------------------------------------------------------------------
;;;;		LDA	BGMODE
;;;;		AND	#07H
;;;;		CMP	#02H
;;;;		BNE	GMIN050		;yogan ? ( no:GMIN050 )
;;;;;
;;;;		JSR	BGOFST
GMIN050		EQU	$
;
;------------------------------------------------------------------------
;-		BG course initial write					-
;------------------------------------------------------------------------
		JSL	>BGINT		;BG initial write
;
;------------------------------------------------------------------------
;-		enemy initial set					-
;------------------------------------------------------------------------
;
		JSL	>HNKNST		;ツールの敵データ変換
;
GMIN053		EQU	$
		JSL	>ENINSB		;enemy initial set
;
;------------------------------------------------------------------------
;-		mater initial set					-
;------------------------------------------------------------------------
		JSR	METERIT		;meter initial
;;;;K;;;;;
;;;;K;;;;;------------------------------------------------------------------------
;;;;K;;;;;-		H-DMA initial set					-
;;;;K;;;;;------------------------------------------------------------------------
;;;;K;;;;		JSR	INHDMA		;H-DMA initial set
;
;------------------------------------------------------------------------
;-		Etc initial set						-
;------------------------------------------------------------------------
		JSL	>DIVDTST	;div data set
;
;------------------------------------------------------------------------
;-		1st game play initial set				-
;------------------------------------------------------------------------
;;;;		    JSL	    >GMPLAY2	    ;initial game play
		JSL	>GMFADE2	;initial game play fade "in/out"
		LDA	#0FH
		STA	FADNO		;fade no set
		LDA	FADMK
		EOR	#01H
		STA	FADMK		;fade muki
;
;-------------- NMI-IRQ "ON" --------------------------------------------
		LDA	#02H		;IRQ counter set
		STA	IRQFLG
		LDA	#070H		;H counter set
		STA	4207H
		LDA	#0D8H		;V counter set
		STA	4209H
		LDA	#10110001B	;timer IRQ "ON"
		STA	4200H
		STA	1E00H
		CLI			;IRQ enable
;
;-------------- スクロール基準セット ----------------------------
;
		MI16
;
		JSL	>SCRL_CXY_SET	;スクロール基準セット
;
;;;;K;;;;;------------ ＢＧ２ 特殊スクロール イニシャルセット ------------
;;;;K;;;;		MI16			; mempry , index 16bit mode
;;;;K;;;;		JSR	BG2SPCL_INT
;
		MI8
;
;-------------- オフセットモードフラグセット --------------------
		LDA	BGMODE
		AND	#07H
		CMP	#02H
		BNE	GMIN160		;オフセットモード？ ( no:GMIN160 )
;
		INC	BG2OF_FG
GMIN160		EQU	$
;
		JMP	>MODINC
;
;************************************************************************
;*		game play fade "in/out"					*
;************************************************************************
;
GMFADE2		EQU	$
;
GMFADE		EQU	$
		PHB			;(DBR) save
		PHK			;(DBR) <-- (PBR)
		PLB
;
;-------------- ゲーム画面セット ----------------------------------------
		LDA	#01H
		STA	PLSTFG		;player stop !!
		STA	ENSTFG		;enemy	  "
		JSL	>GMPLAY2	;game play ( display only )
;
;;;;;-------------- ウィンドウセット ----------------------------------------
;;;;;
;;;;		    M16
;;;;;
;;;;		    LDA	    GMFADE_NO
;;;;		    STA	    R1
;;;;		    STA	    R2
;;;;		    STA	    R3
;;;;		    LDA	    GMFADE_CT
;;;;		    STA	    R4
;;;;		    LDA	    #080H
;;;;		    STA	    R5
;;;;		    LDA	    #058H
;;;;		    STA	    R6
;;;;		    M_CHIP  MSWINPOLY
;;;;;
;;;;		    LDA	    GMFADE_NO
;;;;		    CLC
;;;;		    ADC	    #04H
;;;;		    AND	    #0FFH
;;;;		    STA	    GMFADE_NO
;;;;		    LDA	    GMFADE_CT
;;;;		    CLC
;;;;		    ADC	    #08H
;;;;		    CMP	    #0100H
;;;;		    BCS	    GMFADE_010
;;;;;
;;;;		    STA	    GMFADE_CT
;;;;		    BRA	    GMFADE_020
;;;;;
;;;;GMFADE_010	    EQU	    $
;;;;		    LDA	    #0100H
;;;;		    STA	    GMFADE_CT
;;;;;
;;;;		    LDA	    GMFADE_NO
;;;;		    BNE	    GMFADE_020
;;;;;
;;;;;-------------- go to game play !! ------------------------------
;;;;;
;;;;		    M8
;;;;;
;;;;		    STZ	    WIND23	    ;window disable
;;;;		    STZ	    WIND24
;;;;		    STZ	    WIND25
;;;;		    LDA	    #00100000B	    ;H-DMA "OFF"
;;;;		    TRB	    HD420C
;;;;		    JMP	    >MODINC
;;;;;
;;;;		    MEM16
;;;;;
;
;-------------- ウィンドウセット ----------------------------------------
;
		M16
;
		LDA	GMFADE_NO
		STA	R1		;(R1) <-- 変形元データＮｏ．
		INC	A
		STA	R2		;(R2) <--  ” 先      ”
		LDA	GMFADE_CT
		STA	R6		;(R6) <--  ” 率
		M_CHIP	WIND_CHANGE
;
;-------------- ウィンドウパラメータセット ------------------------------
		LDA	GMFADE_CT
		CLC
		ADC	#08H
		STA	GMFADE_CT
		CMP	#0100H+1
		BCC	GMFADE_020	;変形データ切り替え？ ( no:GMFADE_020 )
;
		INC	GMFADE_NO
		LDA	GMFADE_NO
		CMP	#02H
		BCC	GMFADE_010	;end ? ( no:GMFADE_010 )
;
;-------------- go to game play !! ------------------------------
;
		M8
;
		STZ	WMANSL		;window disable
		STZ	WSUBSL
		STZ	WIND23
		STZ	WIND24
		STZ	WIND25
		LDA	#00100000B	;H-DMA "OFF"
		TRB	HD420C
		STZ	PLSTFG		;player move !!
		STZ	ENSTFG		;enemy	  "
		JMP	>MODINC
;
		MEM16
;
GMFADE_010	EQU	$
		STZ	GMFADE_CT
;
GMFADE_020	EQU	$
;
;-------------- ウィンドウバッファ転送セット ----------------------------
		JSL	>M_DMA_BFST
		LWORD	WINDBUF		;転送先アドレス
		LWORD	WINDBF		;転送元アドレス
		WORD	(0D2H*4)	;転送バイト数
;
		M8
;
;-------------- window PPU set ----------------------------------
		LDA	#00011111B
		STA	212EH
		STA	212FH
		LDA	#00110011B
		STA	WIND23
		STA	WIND24
		STA	WIND25
		STZ	212AH		;window logic set
		STZ	212BH		;
		LDA	#00100000B
		TSB	HD420C		;H-DMA "ON" !!
;
		PLB
		RTL
;
;-------------- ゴール テスト -----------------------------------
;
;************************************************************************
;*		game goal in						*
;************************************************************************
;
GMGOAL		EQU	$
		LDX	GOAL_IN
		CPX	#GOAL_CL
		BCS	GMGOAL_010	;ゲーム画面セット？ ( no:GMGOAL_010 )
;
;-------------- ゲーム画面セット ----------------------------------------
		JSL	>GMPLAY2	;game play ( display )
;
		LDX	GOAL_IN
		JSR	(!GMGOAL_SUB,X)
		BRA	GMGOAL_020
GMGOAL_010	EQU	$
		LDA	#ENITSB
		STA	!MODENO
;
;-------------- ＴＯＯＬ用ＲＡＭ　セット --------------------------------
		MI16			; memroy , index 16bit mode
		LDX	#0000
GMGOAL_010_50	EQU	$
		LDA	>TOOL_BUF,X
		STA	!TOOL_RAM_START,X
		INX
		INX
		CPX	#TOOL_RAM_SIZE
		BCC	GMGOAL_010_50
		MI8			; memroy , index 8bit mode
;
		STZ	!NMITYP
;
GMGOAL_020	EQU	$
		RTL
;
;------------------------------------------------------------------------
;-		ゴール処理ルーチンテーブルデータ			-
;------------------------------------------------------------------------
GMGOAL_SUB	EQU	$-1
		WORD	GMGOAL_INIT	;初期セット
		WORD	GMGOAL_WAIT	;デモ待ち
GOAL_CALC	WORD	GMGOAL_WAIT
;
GOAL_CL		EQU	GOAL_CALC-GMGOAL_SUB
;
;----------------------------------------------------------------
;-		初期セット					-
;----------------------------------------------------------------
;
GMGOAL_INIT	EQU	$
;
;-------------- ＲＡＭ初期セット --------------------------------
;
		M16
		LDA	#0FF00H		;ウィンドウＹ位置セット
		STA	GMFADE_CT
		M8
		INC	GOAL_IN
		INC	GOAL_IN
;
;----------------------------------------------------------------
;-		デモ待ち					-
;----------------------------------------------------------------
GMGOAL_WAIT	EQU	$
		RTS
;
;
BG3LINEDAT1	EQU	$
		WORD	00145H,00146H,08145H,08146H,00145H,00146H
		WORD	00145H,00146H,08145H,08146H,00145H,08146H
		WORD	00145H,08146H,08145H,00146H,04145H,00146H
		WORD	08145H,00146H,00145H,08146H,00145H,00146H
;
TIMER_DEC	EQU	00010
;
TIMER_MAX	EQU	00020
;
COIN_MAX	EQU	00030
;
;
GMGOAL_SCR0	EQU	$
		BYTE	MAL,MAL+2,NUK,HHH,III,GGG,HHH,NUK,SSS,CCC,OOO
		BYTE	RRR,EEE,UUP,UUP,UUP,UUP,S22,S66,NUK,MAL,MAL+2
;
GMGOAL_SCR1	EQU	$
		BYTE	STR,STR+2,NUK,SSS,TTT,AAA,RRR,NUK,UUP,UUP,UUP,UUP
		BYTE	UUP,NUK,S00,NNM,S22,S00,ARW,ARW+2,NUK,S00,TEN,TEN+2
;
GMGOAL_SCR2	EQU	$
		BYTE	CIN,CIN+2,NUK,CCC,OOO,III,NNN,NUK,UUP,UUP,UUP,UUP
		BYTE	UUP,NUK,S00,NNM,S33,S00,ARW,ARW+2,NUK,S00,TEN,TEN+2
;
GMGOAL_SCR3	EQU	$
		BYTE	FWR,FWR+2,NUK,FFF,LLL,OOO,WWW,EEE,RRR,NUK,UUP,UUP
		BYTE	UUP,UUP,UUP,S00,NNM,S55,ARW,ARW+2,NUK,S00,TEN,TEN+2
;
GMGOAL_SCR4	EQU	$
		BYTE	TTT,OOO,TTT,AAA,LLL,NUK,PPP,OOO,III,NNN,TTT,UUP
		BYTE	UUP,UUP,UUP,UUP,UUP,NUK,S00,TEN,TEN+2
;
GMGOAL_SCR5	EQU	$		; **ポーズ用**
		BYTE	NUK,HHH,III,GGG,HHH,NUK,SSS,CCC,OOO,RRR,EEE
		BYTE	UUP,UUP,UUP,UUP,UUP,UUP,NUK,S00,TEN,TEN+2
;
GMGOAL_SCR6	EQU	$
;
GMGOAL_MJ_DAT0	EQU	$
		WORD	0010AH,0010BH,0010CH,0010DH,0010EH,04106H,00120H,00121H
		WORD	00122H,00123H,00124H,0C116H,00126H,00127H,00109H,00128H
		WORD	00129H,00128H,04102H,0012CH,0012DH,0012EH,08136H,00101H
		WORD	00101H,00142H,00144H,00143H,0017FH,0012AH,0012BH,00548H
		WORD	00549H,0054AH,0054BH,0054CH,0054DH,0054EH,0054FH,0017FH
GMGOAL_KAZ_DT0	EQU	$
		WORD	00109H,00100H,00102H,00102H,00103H
		WORD	00104H,00105H,00106H,00107H,0C115H
		WORD	00168H,00167H,00175H,00176H
		WORD	0017FH,0017FH
;
GMGOAL_MJ_DAT1	EQU	$
		WORD	0011AH,0011BH,0011CH,0011DH,0011EH,0011FH,00130H,00131H
		WORD	00132H,00133H,00134H,0C106H,00136H,00137H,00119H,00138H
		WORD	00139H,00140H,00112H,0013CH,0013DH,0013EH,08126H,00111H
		WORD	0013CH,0C142H,0C144H,0017FH,00141H,0013AH,0013BH,00508H
		WORD	00518H,00525H,00535H,0052FH,0053FH,0050FH,00547H,0017FH
GMGOAL_KAZ_DT1	EQU	$
		WORD	00119H,00110H,0C142H,00112H,00113H
		WORD	00114H,00115H,00116H,00117H,0C105H
		WORD	00178H,00177H,00179H,0017AH
		WORD	0015FH,0016FH
;
AAA	EQU	0
BBB	EQU	AAA+2
CCC	EQU	BBB+2
DDD	EQU	CCC+2
EEE	EQU	DDD+2
FFF	EQU	EEE+2
GGG	EQU	FFF+2
HHH	EQU	GGG+2
III	EQU	HHH+2
JJJ	EQU	III+2
KKK	EQU	JJJ+2
LLL	EQU	KKK+2
MMM	EQU	LLL+2
NNN	EQU	MMM+2
OOO	EQU	NNN+2
PPP	EQU	OOO+2
QQQ	EQU	PPP+2
RRR	EQU	QQQ+2
SSS	EQU	RRR+2
TTT	EQU	SSS+2
UUU	EQU	TTT+2
VVV	EQU	UUU+2
WWW	EQU	VVV+2
XXX	EQU	WWW+2
YYY	EQU	XXX+2
ZZZ	EQU	YYY+2
NNM	EQU	ZZZ+2
UUP	EQU	NNM+2
DWP	EQU	UUP+2
MAL	EQU	DWP+2
STR	EQU	MAL+2+2
FWR	EQU	STR+2+2
CIN	EQU	FWR+2+2
MIS	EQU	CIN+2+2
NUK	EQU	MIS+2+2
S00	EQU	NUK+2
S11	EQU	S00+2
S22	EQU	S11+2
S33	EQU	S22+2
S44	EQU	S33+2
S55	EQU	S44+2
S66	EQU	S55+2
S77	EQU	S66+2
S88	EQU	S77+2
S99	EQU	S88+2
S100	EQU	S99+2
ARW	EQU	S100+2+2
TEN	EQU	ARW+2+2
;
;-------------- ゴール テスト -----------------------------------
;
;************************************************************************
;*		game play						*
;************************************************************************
;
;-------------- カウントダウン用数字キャラクターアドレスデータ ----------
;
;-------------- ０〜９まで --------------------------------------
CNTDOWN_CHR	EQU	$
		WORD	CHR50+(200H*20H)  ;[0]
		WORD	CHR50+(202H*20H)  ;[1]
		WORD	CHR50+(204H*20H)  ;[2]
		WORD	CHR50+(206H*20H)  ;[3]
		WORD	CHR50+(208H*20H)  ;[4]
		WORD	CHR50+(20AH*20H)  ;[5]
		WORD	CHR50+(20CH*20H)  ;[6]
		WORD	CHR50+(20EH*20H)  ;[7]
		WORD	CHR50+(220H*20H)  ;[8]
		WORD	CHR50+(222H*20H)  ;[9]
;
;-------------- １０以上 ----------------------------------------
CNTDOWN_CHR_10	EQU	$
		WORD	CHR50+(0B0H*20H)  ;[0]
		WORD	CHR50+(0B1H*20H)  ;[1]
		WORD	CHR50+(0B2H*20H)  ;[2]
		WORD	CHR50+(0B3H*20H)  ;[3]
		WORD	CHR50+(0D0H*20H)  ;[4]
		WORD	CHR50+(0D1H*20H)  ;[5]
		WORD	CHR50+(0D2H*20H)  ;[6]
		WORD	CHR50+(0D3H*20H)  ;[7]
		WORD	CHR50+(0D4H*20H)  ;[8]
		WORD	CHR50+(0D5H*20H)  ;[9]
;
;-------------- カウントダウン用数字ＯＡＭセットデータ ------------------
CTDWX_U_L	EQU	020H
CTDWY_U_L	EQU	020H
CTDWX_U_R	EQU	0C0H
CTDWY_U_R	EQU	020H
;
CNTDOWN_OAM_IN	EQU	$
		BYTE	CNTDOWN_OAM_U_L-CNTDOWN_OAM+(5*4)-2 ;[0]
		BYTE	CNTDOWN_OAM_U_R-CNTDOWN_OAM+(5*4)-2 ;[1]
;
CNTDOWN_OAM	EQU	$
;			      X		     Y	       CH   AT
CNTDOWN_OAM_U_L EQU	$
		BYTE	008H+CTDWX_U_L,008H+CTDWY_U_L,00CH,032H ;[0]
		BYTE	000H+CTDWX_U_L,000H+CTDWY_U_L,0C8H,032H ;[1]
		BYTE	010H+CTDWX_U_L,000H+CTDWY_U_L,0C8H,072H ;[2]
		BYTE	000H+CTDWX_U_L,010H+CTDWY_U_L,0C8H,0B2H ;[3]
		BYTE	010H+CTDWX_U_L,010H+CTDWY_U_L,0C8H,0F2H ;[4]
CNTDOWN_OAM_U_R EQU	$
		BYTE	008H+CTDWX_U_R,008H+CTDWY_U_R,00CH,032H ;[0]
		BYTE	000H+CTDWX_U_R,000H+CTDWY_U_R,0C8H,032H ;[1]
		BYTE	010H+CTDWX_U_R,000H+CTDWY_U_R,0C8H,072H ;[2]
		BYTE	000H+CTDWX_U_R,010H+CTDWY_U_R,0C8H,0B2H ;[3]
		BYTE	010H+CTDWX_U_R,010H+CTDWY_U_R,0C8H,0F2H ;[4]
;
;-------------- 赤ちゃんレーダーＯＡＭセットデータ ----------------------
BABY_MK_XAD	EQU	$
		WORD	0FFF0H,00010H  ;,00000H,00000H
BABY_MK_YAD	EQU	$
		WORD	00000H,00000H,0FFEAH,00010H
BABY_MK_OAMDT	EQU	$
;			X  Y  CH AT
		HEX	00,03,C4,30	;[右]
		HEX	08,00,D5,30
		HEX	00,05,C4,B0
		HEX	08,08,D5,B0
		HEX	00,00,D5,70	;[左]
		HEX	08,03,C4,70
		HEX	00,08,D5,F0
		HEX	08,05,C4,F0
		HEX	03,00,C4,30	;[下]
		HEX	05,00,C4,70
		HEX	00,08,C5,F0
		HEX	08,08,C5,B0
		HEX	00,00,C5,70	;[上]
		HEX	08,00,C5,30
		HEX	03,08,C4,B0
		HEX	05,08,C4,F0
;
METCOLD		EQU	$
		WORD	003FFH,0023FH,0001FH,04010H,07C00H,07E00H,047E0H,003F4H
		WORD	003FFH,0023FH,0001FH
;
BACKCLD		EQU	$
		WORD	07D93H,07FFFH,07FFFH,07FFFH,07DF5H,07FF7H,07FF9H,07DF5H
		WORD	07FF9H,07FFFH,00000H,00000H,00000H,00000H,00000H,00000H
;
		WORD	07D93H,07FFFH,07FFFH,07EBAH,07E17H,07FF7H,07F18H,07E76H
		WORD	07FFBH,07FFDH,00000H,00000H,00000H,00000H,00000H,00000H
;
		WORD	07D93H,07FFFH,07FFFH,07E17H,07EBAH,07FF7H,07E76H,07F18H
		WORD	07FFDH,07FFBH,00000H,00000H,00000H,00000H,00000H,00000H
;
		WORD	07D93H,07FFFH,07FFFH,07DF5H,07FFFH,07FF7H,07DF5H,07FF9H
		WORD	07FFFH,07FF9H,00000H,00000H,00000H,00000H,00000H,00000H
;
COLDTAR		EQU	$
		BYTE	0FH*2*1-1,0FH*2*2-1,0FH*2*3-1,0FH*2*4-1,0FH*2*3-1,0FH*2*2-1
;
;-------------- tilt data -----------------------------------------------
TILTAD		EQU	$
		WORD	00000H,00001H,00000H,0FFFFH,00000H,0FFFEH,00000H,0FFFFH
TILTAD2		EQU	$
		WORD	0FFFEH,00000H,00002H,00000H,0FFFEH,00000H,0FFFCH,00000H
;
;-------------- ”ビリビリ”モザイクセットデータ ------------------------
BIRIBIRI_MOZDT	EQU	$
		BYTE	0111B+(00H<<4),0111B+(00H<<4),0111B+(01H<<4),0111B+(01H<<4)
		BYTE	0111B+(02H<<4),0111B+(02H<<4),0111B+(03H<<4),0111B+(03H<<4)
		BYTE	0111B+(04H<<4),0111B+(04H<<4),0111B+(05H<<4),0111B+(05H<<4)
		BYTE	0111B+(06H<<4),0111B+(06H<<4),0111B+(07H<<4),0111B+(07H<<4)
;
;-------------- pause check data ----------------------------------------
GM_PS_CHK_CMP	EQU	$
		BYTE	000,Vram_save+8+1
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		initial game play					x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
GMPLAY2		EQU	$
;
;------------------------------------------------------------------------
;-		key cancel !!						-
;------------------------------------------------------------------------
		STZ	<KEYC1
		STZ	<KEYC1L
		STZ	<KEYC2
		STZ	<KEYC2L
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		game play						x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
GMPLAY		EQU	$
		PHB			;(DBR) save
		PHK			;(DBR) <-- (PBR)
		PLB
;
;------------------------------------------------------------------------
;-		モード７ＯＢＪクリアー					-
;------------------------------------------------------------------------
		STZ	OBJ_BG_FG
;
;------------------------------------------------------------------------
;-		massage display check					-
;------------------------------------------------------------------------
		LDA	MSGMOD		; メッセージ表示 ?
		BEQ	GM_PAUSE_CHK	;	NO -> GM_PAUSE_CHK
;
		JSR	MSGDSP
		JMP	GMPL010
;
;------------------------------------------------------------------------
;-		pause check						-
;------------------------------------------------------------------------
INTPRMT_ADR	EQU	$-2
		WORD	TIME10_PRMT	; 1 タイマー １０
		WORD	TIME20_PRMT	; 2 タイマー ２０
		WORD	POW_PRMT	; 3 どこでもＰＯＷ
		WORD	EGG_PRMT	; 4 いつでもタマゴ
		WORD	GARASU_PRMT	; 5 虫めがね
		WORD	ALLHTN_PRMT	; 6 敵みんなハテナ雲
		WORD	SUIKA_PRMT	; 7 スイカの種アイテム
		WORD	COLD0_PRMT	; 8 氷アイテム
		WORD	FIRE0_PRMT	; 9 火アイテム
;
;
GM_PAUSE_CHK	EQU	$
		LDA	!GMPAUSE	; ポーズ中 ?
		BNE	GM_PS_CHK_020	;	YES -> GM_PS_CHK_020
;
		LDA	<KEYC2
		AND	#00010000B	; スタート キー ＯＮ ?
		BEQ	GM_PS_CHK_FFF	;	NO -> GM_PS_CHK_FFF
		LDA	CCHGTN		; トンネル書き換え中？
		ORA	GOAL_BOSS_CLEAR
		BEQ	GM_PS_CHK_000	;	NO -> GM_PS_CHK_000
GM_PS_CHK_FFF	EQU	$
		JMP	GMPL010
;
GM_PS_CHK_000	EQU	$
		LDA	!GMPASMK
		EOR	#001
		AND	#001
		STA	!GMPASMK
		LDA	#001
		STA	!GMPAUSE
;
GM_PS_CHK_020	EQU	$
		JSL	>OAMCLR		;OAM clear
;
;----------------------------------------------------------------
;-		pause move					-
;----------------------------------------------------------------
		LDA	<KEYC2
		AND	#00100000B	;course clear ?
		BEQ	GMPL004
;
;-------------- return to editor !! -----------------------------
RET_EDIT	EQU	$
		LDA	#ITSB
		STA	MODENO
;
;
;-------------- ＴＯＯＬ用ＲＡＭ　セット --------------------------------
;
		STZ	!NMITYP
;
		MI16			; memroy , index 16bit mode
		LDX	#0000
TOOL_RAM_MODOSU EQU	$
		LDA	>TOOL_BUF,X
		STA	!TOOL_RAM_START,X
		INX
		INX
		CPX	#TOOL_RAM_SIZE
		BCC	TOOL_RAM_MODOSU
		I8			; index 8bit mode
;
;$$$$$$$$$$$$$$ ＢＧ１タイプ復帰 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
		LDA	T_BG1TYP
		STA	BG1TYP
		LDA	!T_BG1COL
		STA	!BG1COL
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;
		LDX	SIFTFG
		LDA	<SCCH1
		CLC
		ADC	#00088H
		STA	CRXPSL1,X
		LDA	<SCCV1
		CLC
		ADC	#00068H
		STA	CRYPSL1,X
;
		M8		; memroy 8bit mode
		PLB
		RTL
;
;
GMPL004		EQU	$
GM_PAUSE	EQU	$
		JMP	GMPASUB
;
;------------------------------------------------------------------------
;-		game move						-
;------------------------------------------------------------------------
GMPL010		EQU	$
		JSL	>OAMDXCLR	;OAM clear
;
;------------------------------------------------------------------------
;-		scroll counter set					-
;------------------------------------------------------------------------
		JSL	>PLSCRL		;scroll set
;
;------------------------------------------------------------------------
;-		BG write						-
;------------------------------------------------------------------------
		JSL	>BGSET		;BG write
;
;;;; ツールのみ		       JSR     >BG3SCK	       ;"mogura" course BG3 screen set check
		JSL	>BG3SCK		;"mogura" course BG3 screen set check
;
;------------------------------------------------------------------------
;-		to "Tilt" scroll counter save				-
;------------------------------------------------------------------------
;
		M16
;
		LDA	<SCCV1
		PHA			;BG1 scroll counter_V save
;
;------------------------------------------------------------------------
;-		"Tilt" set						-
;------------------------------------------------------------------------
		LDA	PLSTFG
		ORA	ENSTFG
		ORA	BIRIBIRI
		BNE	GMPL020		;ＳＴＯＰ？ ( yes:GMPL020 )
;
		LDA	TILTCT2
		BEQ	GMPL012		;tilt ? ( no:GMPL012 )
;
		DEC	TILTCT2
		AND	#07H
		ASL	A
		TAY
		LDA	!TILTAD2,Y
		STA	TILTAL		;"Tilt" counter set
		CLC
		ADC	<SCCV1
		STA	<SCCV1
		STA	ESCCV1
;
		LDY	BG3TYP
		CPY	#09H
		BEQ	GMPL011
		CPY	#0AH
		BNE	GMPL0110
GMPL011		EQU	$
		LDA	TILTAL
		CLC
		ADC	<SCCV3
		STA	<SCCV3
		STA	ESCCV3
;
GMPL0110	EQU	$
		LDA	TILTCT
		BEQ	GMPL013

		DEC	TILTCT
		BRA	GMPL013
;
GMPL012		EQU	$
		LDA	TILTCT
		BEQ	GMPL013		;tilt ? ( no:GMPL013 )
;
		DEC	TILTCT
		AND	#07H
		ASL	A
		TAY
		LDA	!TILTAD,Y
		STA	TILTAL		;"Tilt" counter set
		CLC
		ADC	<SCCV1
		STA	<SCCV1
		STA	ESCCV1
;
		LDY	BG3TYP
		CPY	#09H
		BEQ	GMPL0120
		CPY	#0AH
		BNE	GMPL013
GMPL0120	EQU	$
		LDA	TILTAL
		CLC
		ADC	<SCCV3
		STA	<SCCV3
		STA	ESCCV3
;
GMPL013		EQU	$
;
;------------------------------------------------------------------------
;-		offset data set						-
;------------------------------------------------------------------------
GMPL020		EQU	$
;
		M8
;
		LDX	BG2OF_FG	;(X) <-- オフセットモードタイプ
		BEQ	GMPL030		;オフセットモード？ ( no:GMPL030 )
;
		JSR	(!BG2OFST_TBL,X)
;
;------------------------------------------------------------------------
;-		OAM set							-
;------------------------------------------------------------------------
GMPL030		EQU	$
		JSL	>ENCSET		;enemy	OAM set
		JSL	>PLCSET		;player	   "
;
;------------------------------------------------------------------------
;-		player move						-
;------------------------------------------------------------------------
		JSL	>PLAYER		;player move
;
;------------------------------------------------------------------------
;-		enemy move						-
;------------------------------------------------------------------------
		JSL	>ENEMY		;enemy move
;
;------------------------------------------------------------------------
;-		H-DMA data set						-
;------------------------------------------------------------------------
		JSR	SPACIAL
;
;------------------------------------------------------------------------
;-		to "Tilt" scroll counter load				-
;------------------------------------------------------------------------
;
		M16
;
		PLA			;BG1 scroll counter_V load
		STA	<SCCV1
		STA	ESCCV1
;
;------------------------------------------------------------------------
;-		赤ちゃんカウントダウンチェック				-
;------------------------------------------------------------------------
		LDA	BABYNO		;赤ちゃんカウントダウンフラグセット
		AND	#1010000000000000B
		STA	BABYDWN
		LDA	CCHGMK
		ORA	CCHGFG
		ORA	GMFADE_CT
		ORA	ENSTFG
		BEQ	GMPL032		;赤ちゃんカウントダウンＯＫ？ ( yes:GMPL032 )
		LDA	#01H
GMPL032		EQU	$
		ORA	BABYDWN
		STA	BABYDWN
;;仮;;		      BNE     GMPL040	      ;赤ちゃんカウントダウン？ ( no:GMPL040 )
;;仮;;;
;;仮;;;-------------- タイム君セットチェック ----------------------------------
;;仮;;		      LDA     TIMCHG
;;仮;;		      BEQ     GMPL040	      ;タイム君セット？ ( no:GMPL040 )
;;仮;;;
;;仮;;		      LDA     #04BH	      ;[♪]
;;仮;;		      JSL     >SOUND_3_ON
;;仮;;;
;;仮;;		      LDA     #TMKNX	      ;(A) <-- 効果Ｎｏ．
;;仮;;		      JSL     >EXINSR	      ;効果エリア確保
;;仮;;;;;;		  LDA	  PLXPSL	  ;Ｘ座標セット
;;仮;;		      LDA     ENXPSL	      ;Ｘ座標セット
;;仮;;		      STA     EXXPSL,Y
;;仮;;;;;;		  LDA	  PLYPSL	  ;Ｙ座標セット
;;仮;;		      LDA     ENYPSL	      ;Ｙ座標セット
;;仮;;		      CLC
;;仮;;		      ADC     #08H
;;仮;;		      STA     EXYPSL,Y
;;仮;;		      LDA     #0FFFFH	      ;タイマーセット
;;仮;;		      STA     EXTIM0,Y
;;仮;;		      LDA     RANDM0
;;仮;;		      AND     #07H*2
;;仮;;		      TAX
;;仮;;		      LDA     >QKM_COIN_XSP,X
;;仮;;		      STA     EXXSPD,Y
;;仮;;		      LDA     #0FD00H	      ;Ｙスピードセット
;;仮;;		      STA     EXYSPD,Y
;
;------------------------------------------------------------------------
;-		OAM data convert					-
;------------------------------------------------------------------------
GMPL040		EQU	$
		LDX	#BANK DX_OAM
		LDA	#DX_OAM
		JSL	>CHIPON1	;[ "TASK !!" mater set ]
;
;------------------------------------------------------------------------
;-		赤ちゃん誘拐カウントチェック				-
;------------------------------------------------------------------------
COUNT_DOWN	EQU	$
		LDA	OBJ_TIMER_DISP
		BEQ	COUNT_DOWN_0050
		DEC	OBJ_TIMER_DISP
;
COUNT_DOWN_0050 EQU	$
		LDA	GMFADE_CT
		BNE	COUNT_DOWN_011	;カーテンウィンドウ中？ ( yes:COUNT_DOWN_011 )
;
		LDA	TIMER
		CMP	#100
		BCC	COUNT_DOWN_018	;ＯＢＪカウンター表示？ ( yes:COUNT_DOWN_018 )
;
;;;;;-------------- 初めて敵に当たったメッセージ表示チェック ----------------
;;;;		    LDY	    SV_STATUS
;;;;		    BMI	    COUNT_DOWN_0100 ;初めて敵に当たったメッセージ表示ＯＫ？ ( no:COUNT_DOWN_0100 )
;;;;;
;;;;		    CMP	    #300-50
;;;;		    BCS	    COUNT_DOWN_0100 ;初めて敵に当たったメッセージ表示チェック？ ( no:COUNT_DOWN_0100 )
;;;;;
;;;;		    LDY	    MAPOINT
;;;;		    BNE	    COUNT_DOWN_0100 ;１Ｗ−１？ ( no:COUNT_DOWN_0100 )
;;;;;
;;;;		    LDA	    #080H	    ;メッセージ表示済セット
;;;;		    TSB	    SV_STATUS
;;;;		    INC	    MSGMOD	    ;メッセージ表示”ＯＮ”
;;;;		    LDA	    #MIS_MSG
;;;;		    STA	    >MSG_NO
;;;;;
;;;;COUNT_DOWN_0100 EQU	    $
		LDA	BABYDWN
		BEQ	COUNT_DOWN_020	;赤ちゃんレーダーセット？ ( yes:COUNT_DOWN_020 )
;
		LDA	OBJ_TIMER_DISP
		BNE	COUNT_DOWN_0102 ;強制ＯＢＪタイマー表示？ ( yes:COUNT_DOWN_0102 )
;
		LDA	<KEYC1L
		ORA	PLMODE
		ORA	MSGMOD
		BNE	COUNT_DOWN_011	;キー入力無しｏｒプレイヤーデモ？ ( no:COUNT_DOWN_011 )
;
		LDA	OBJ_TIMER_WAIT
		CMP	#60H
		BCS	COUNT_DOWN_0102 ;ＯＢＪタイマー表示？ ( yes:COUNT_DOWN_0102 )
		INC	OBJ_TIMER_WAIT
		JMP	LIF150
;
COUNT_DOWN_011	EQU	$
		STZ	OBJ_TIMER_WAIT
		JMP	LIF150
;
;-------------- 中間ゲート通過タイマーＵＰ！！ ------------------
COUNT_DOWN_0102 EQU	$
		JMP	COUNT_DOWN_100
;
;-------------- 赤ちゃんレーダーＯＡＭセット ----------------------------
COUNT_DOWN_018	EQU	$
		STZ	OBJ_TIMER_WAIT
;
		LDA	BABYDWN
		BNE	COUNT_DOWN_0102 ;赤ちゃんレーダーセット？ ( no:COUNT_DOWN_0102 )
;
COUNT_DOWN_020	EQU	$
		LDX	#04		;(X) <-- 矢印方向（Ｙ方向下）
		LDA	ENDSXL
		SEC
		SBC	#08H
		CMP	#(0100H-018H)-08H
		BCS	COUNT_DOWN_030	;Ｘ座標オーバー？ ( yes:COUNT_DOWN_030 )
		LDA	ENDSYL
		SEC
		SBC	#010H
		CMP	#(0D9H-08H)-010H
		BCC	COUNT_DOWN_090	;Ｙ座標オーバー？ ( no:COUNT_DOWN_090 )
;
COUNT_DOWN_030	EQU	$
		LDA	ENDSYL
		SEC
		SBC	#(0D9H/2)-08H	;[ 0B9H:V size ]
		STA	<WORK4		;(WK4,5) <-- 中心からのＹ距離
		ABS16
		STA	<WORK6		;(WK6,7) <-- ＡＢＳ（中心からのＹ距離）
		LDA	ENDSXL
		SEC
		SBC	#(100H/2)-08H
		STA	<WORK0		;(WK0,1) <-- 中心からのＸ距離
		ABS16
		STA	<WORK2		;(WK2,3) <-- ＡＢＳ（中心からのＸ距離）
;
		CMP	<WORK6
		BCC	COUNT_DOWN_080	;Ｘ方向にレーダー表示？ ( yes:COUNT_DOWN_080 )
		LDX	#00		;(X) <-- Ｘ方向
COUNT_DOWN_080	EQU	$
		LDA	<WORK0,X
		BPL	COUNT_DOWN_090	;左⇔右、上⇔下？
		INX
		INX
COUNT_DOWN_090	EQU	$
		LDA	ENDSXL
		CLC
		ADC	!BABY_MK_XAD,X
		CMP	#02H
		BPL	COUNT_DOWN_092
		LDA	#02H
COUNT_DOWN_092	EQU	$
		CMP	#0100H-12H+1
		BMI	COUNT_DOWN_094
		LDA	#0100H-12H
COUNT_DOWN_094	EQU	$
		STA	<WORK2
		LDA	ENDSYL
		CLC
		ADC	!BABY_MK_YAD,X
		CMP	#0AH
		BPL	COUNT_DOWN_096
		LDA	#0AH
COUNT_DOWN_096	EQU	$
		CMP	#0D9H-012H+1
		BMI	COUNT_DOWN_098
		LDA	#0D9H-012H
COUNT_DOWN_098	EQU	$
		STA	<WORK3
		TXA
		ASL	A
		ASL	A
		ASL	A
		TAX
		LDA	FRCNT2
		AND	#04H
		LSR	A
;;;;		    CLC
		ADC	#02H
		XBA
		STA	<WORK		;(WK0,1) <-- カラー
		CLC			;[ * (C) <- 0 ]
		LDA	<WORK2
		ADC	!BABY_MK_OAMDT,X
		STA	OAM+(5*4)	;ＯＡＭ	 Ｘ，Ｙ座標セット
		LDA	!BABY_MK_OAMDT+2,X
		ORA	<WORK
		STA	OAM+(5*4)+2	;ＯＡＭ	 キャラＮｏ．，ＡＴＴセット
		LDA	<WORK2
		ADC	!BABY_MK_OAMDT+4,X
		STA	OAM+(5*4)+4	;ＯＡＭ	 Ｘ，Ｙ座標セット
		LDA	!BABY_MK_OAMDT+6,X
		ORA	<WORK
		STA	OAM+(5*4)+6	;ＯＡＭ	 キャラＮｏ．，ＡＴＴセット
		LDA	<WORK2
		ADC	!BABY_MK_OAMDT+8,X
		STA	OAM+(5*4)+8	;ＯＡＭ	 Ｘ，Ｙ座標セット
		LDA	!BABY_MK_OAMDT+10,X
		ORA	<WORK
		STA	OAM+(5*4)+10	;ＯＡＭ	 キャラＮｏ．，ＡＴＴセット
		LDA	<WORK2
		ADC	!BABY_MK_OAMDT+12,X
		STA	OAM+(5*4)+12	;ＯＡＭ	 Ｘ，Ｙ座標セット
		LDA	!BABY_MK_OAMDT+14,X
		ORA	<WORK
		STA	OAM+(5*4)+14	;ＯＡＭ	 キャラＮｏ．，ＡＴＴセット
;
;-------------- ＯＢＪカウンター表示 ------------------------------------
COUNT_DOWN_100	EQU	$
;
;-------------- カウントキャラクター転送セット ------------------
		LDA	TIMER_HI
		BEQ	COUNT_DOWN_130	;１０の桁は０？ ( yes:COUNT_DOWN_130 )
;
		ASL	A
		TAX
		LDA	!CNTDOWN_CHR_10,X
		STA	PCHNO0+24
		XBA
		TAX
		INX
		INX
		STX	PCHNO0+27
		LDA	TIMER_MID
		ASL	A
		TAX
		LDA	!CNTDOWN_CHR_10,X
		STA	PCHNO0+28
		XBA
		TAX
		INX
		INX
		BRA	COUNT_DOWN_132
;
COUNT_DOWN_130	EQU	$
		LDA	TIMER_MID
		ASL	A
		TAX
		LDA	!CNTDOWN_CHR,X
		STA	PCHNO0+24
		CLC
		ADC	#020H
		STA	PCHNO0+28
		XBA
		TAX
		INX
		INX
		STX	PCHNO0+27
COUNT_DOWN_132	EQU	$
		STX	PCHNO0+31
		LDX	#BANK CHR50
		STX	PCHNO0+26
		STX	PCHNO0+30
;
		LDA	#0000001010101010B
		STA	OAMSUB		;OAM sub set
		STZ	OAMSUB+2	;    "
;
;-------------- カウントＯＡＭセット ----------------------------
		LDA	PLDSXL
		SEC
		SBC	#((100H-010H)/2)-020H
		CMP	#020H*2
		BCC	COUNT_DOWN_136	;ＯＢＪタイマー表示位置変更？ ( no:COUNT_DOWN_136 )
;
		LDX	#00
		LDA	PLDSXL
		SEC
		SBC	#(100H-010H)/2
		BPL	COUNT_DOWN_134
		INX
COUNT_DOWN_134	EQU	$
		STX	OBJ_TIMER_DSPS
;
COUNT_DOWN_136	EQU	$
		LDX	OBJ_TIMER_DSPS
		LDY	!CNTDOWN_OAM_IN,X
		LDX	#(5*4)-2
COUNT_DOWN_140	EQU	$
		LDA	!CNTDOWN_OAM,Y
		STA	OAM,X
		DEY
		DEY
		DEX
		DEX
		BPL	COUNT_DOWN_140
;
;------------------------------------------------------------------------
;		カラー転送						-
;------------------------------------------------------------------------
LIF150		EQU	$
;
		M8
;
		LDA	COLTRP
		ASL	A
		TAX
		JSR	(COLTR_SEL,X)
;
;------------------------------------------------------------------------
;-		”ビリビリ”セット					-
;------------------------------------------------------------------------
		LDA	BIRIBIRI
		BEQ	MET150		;”ビリビリ”？ ( no:MET150 )
;
		DEC	BIRIBIRI
		AND	#0FH
		TAX
		LDA	!BIRIBIRI_MOZDT,X
;
MET150		EQU	$
;
;
;-------------- ツールのみ ----------------------------------------------　
		LDA	NEXTGOTO
		BNE	MET160
		LDA	MODENO
		CMP	#GMIN
		BCS	MET170
;
MET160		EQU	$
		STZ	NEXTGOTO
		JMP	RET_EDIT
;
MET170		EQU	$
;------------------------------------------------------------------------
;
;
		PLB
		RTL
;
;testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest
;test		test						     test
;testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest
;
		lda	#4
		sta	2100h
;
		PLB
		RTL
;
;
;
;
;
		M16
;
		M_CHIP	TEST_01
;
		M8
;
		lda	#0fh
		sta	2100h
;
		PLB
		RTL
;
;************************************************************************
;*									*
;*		カラー転送						*
;*									*
;************************************************************************
;
		MEM8
		IDX8
;
COLTR_SEL	EQU	$
		WORD	COLTR_00	;[00] カラー転送無し
		WORD	COLTR_01	;[01] 氷の城
		WORD	COLTR_02	;[02] 森のこもれびカラーアニメーション
		WORD	COLTR_03	;[03] カベ背景カラーアニメーション
		WORD	COLTR_04	;[04] ハチ滝背景カラーアニメーション
		WORD	COLTR_05	;[05] 地下いわカラーアニメーション
		WORD	COLTR_06	;[06] 地下コースＢＧ１の滝
		WORD	COLTR_07	;[07] 地下いわ と 地下コースＢＧ１の滝
		WORD	COLTR_08	;[08] ドカンコースＢＧ１の滝
		WORD	COLTR_09	;[09] ハチ城
		WORD	COLTR_0A	;[0A] 地下第２ 溶岩
		WORD	COLTR_0B	;[0B] 雪 (だんだん降ってくる)
		WORD	COLTR_0C	;[0C] 雪 (だんだんやむ)
		WORD	COLTR_0D	;[0D] ＢＧ３ ハチ夕日
		WORD	COLTR_0E	;[0E] 地下滝 ( 水 ＆ 溶岩 )
		WORD	COLTR_0F	;[0F] ＢＧ３ボス部屋
		WORD	COLTR_10	;[10] 氷の地下 (ＢＧ１)
		WORD	COLTR_11	;[11] ＢＧ３霧
		WORD	COLTR_12	;[12] 転送タイプ ５,Ａ,１０,１１ の組合せ
		WORD	COLTR_13	;[13] 地下標準カラー 地下滝 森のこもれび
		WORD	COLTR_14	;[14] ＢＧ３霧だけ
;
;------------------------------------------------------------------------
;-		カラー転送無し						-
;------------------------------------------------------------------------
COLTR_00	EQU	$
		RTS
;
;------------------------------------------------------------------------
;-		氷の城							-
;------------------------------------------------------------------------
COLTR_01_DAT	EQU	$
		WORD	COL_ADDRESS+ICE_SIRO_COL0
		WORD	COL_ADDRESS+ICE_SIRO_COL1
		WORD	COL_ADDRESS+ICE_SIRO_COL2
		WORD	COL_ADDRESS+ICE_SIRO_COL3
		WORD	COL_ADDRESS+ICE_SIRO_COL4
		WORD	COL_ADDRESS+ICE_SIRO_COL5
		WORD	COL_ADDRESS+ICE_SIRO_COL6
		WORD	COL_ADDRESS+ICE_SIRO_COL7
;
COLTR_01_CNT	EQU	$
		BYTE	030H,010H,050H,010H
;
;
COLTR_01	EQU	$
		M16			; memory 16bit mode
		DEC	!COL_ANIME_TM
		LDA	!COL_ANIME_TM
		BPL	COLTR_01_200
		LDA	!COL_ANIME_CT
		INC	A
		INC	A
		AND	#00007*2
		STA	!COL_ANIME_CT
		BNE	COLTR_01_100
		JSL	>RND_RND
		AND	#00003
		TAX
		LDA	COLTR_01_CNT,X
		AND	#000FFH
		BRA	COLTR_01_150
COLTR_01_100	EQU	$
		LDA	#00004
COLTR_01_150	EQU	$
		STA	!COL_ANIME_TM
;
COLTR_01_200	EQU	$
		LDX	!COL_ANIME_CT
		LDA	COLTR_01_DAT,X
		STA	<WORK0
		LDA	#00013*2
		STA	<WORKE
		LDX	#00004*20H+003H*2
		JSR	BG1_ANIME_SET
		M8			; memory 8bit mode
		RTS
;
;------------------------------------------------------------------------
;-		森のこもれびカラーアニメーション			-
;------------------------------------------------------------------------
;
;-------------- 森のこもれびカラーアニメーションタイマーデータ ----------
MORI_COL_ANIME	EQU	$
		HEX	00,40,40,40
;
COLTR_02	EQU	$
;
		I16
;
		LDA	PLXPSL		;（仮）
		SEC			;
		SBC	PLXPSL_OLD	;
		BMI	COLTR_02_022
		BNE	COLTR_02_020
		LDY	PLXSPD
		BNE	COLTR_02_010
		LDX	COL_ANIME_CT
		CPX	#01H
		BEQ	COLTR_02_030
		STZ	COL_ANIME_TM
COLTR_02_010	EQU	$
		LDA	#01H
COLTR_02_020	EQU	$
		EOR	#0FFFFH
		INC	A
COLTR_02_022	EQU	$
		SEC
		SBC	#06H
COLTR_02_030	EQU	$
;
		I8
;
		CLC
		ADC	COL_ANIME_TM
		STA	COL_ANIME_TM
		BPL	COLTR_02_070	;カラー切り替え？ ( no:COLTR_02_070 )
		LDX	COL_ANIME_CT
		INX
		CPX	#04H
		BCC	COLTR_02_040
		LDX	#00H
COLTR_02_040	EQU	$
		STX	COL_ANIME_CT
		LDA	>MORI_COL_ANIME,X
		BNE	COLTR_02_050	;ランダムタイマーセット？ ( no:COLTR_02_050 )
;
		LDA	RANDM0
		AND	#0E0H
		CLC			;[ 10H-2FH ]
		ADC	#020H
COLTR_02_050	EQU	$
		STA	COL_ANIME_TM
		TXA
		ASL	A		;x6
;;;;		    CLC			;
		ADC	COL_ANIME_CT	;
		ASL	A
		TAX
;
		PHB			;(DBR) save
		LDA	#BANK DATACOL	;(DBR) <-- DATACOL(B)
		PHA
		PLB
;
		M16
;
		LDY	#0
COLTR_02_060	EQU	$
		LDA	>COL_ADDRESS+MORI_ANIM_COL,X
		STA	MOTOCOL+(05H*2),Y
		STA	DATACOL+(05H*2),Y
		INX
		INX
		INY
		INY
		CPY	#(3*2)
		BCC	COLTR_02_060
;
		M8
;
		PLB
;
COLTR_02_070	EQU	$
		RTS
;
;------------------------------------------------------------------------
;-		カベ背景カラーアニメーション				-
;------------------------------------------------------------------------
COLTR_03	EQU	$
		LDA	FRCNT2
		AND	#03H*8
		ASL	A
		ASL	A
;;;;		    CLC
		ADC	#(16-1)*2
		TAX
;
		PHB			;(DBR) save
		LDA	#BANK DATACOL	;(DBR) <-- DATACOL(B)
		PHA
		PLB
;
		M16
;
		LDY	#(16-1)*2
COLTR_03_010	EQU	$
		LDA	>COL_ADDRESS+KABE_ANIM_COL,X
		STA	MOTOCOL+(70H*2),Y
		STA	DATACOL+(70H*2),Y
		DEX
		DEX
		DEY
		DEY
		BPL	COLTR_03_010
;
		M8
;
		PLB
		RTS
;
;------------------------------------------------------------------------
;-		ハチ滝背景カラーアニメーション				-
;------------------------------------------------------------------------
COLTR_04_DAT	EQU	$
		WORD	COL_ADDRESS+B3TAKI_COL_0
		WORD	COL_ADDRESS+B3TAKI_COL_1
		WORD	COL_ADDRESS+B3TAKI_COL_2
		WORD	COL_ADDRESS+B3TAKI_COL_3
		WORD	COL_ADDRESS+B3TAKI_COL_4
		WORD	COL_ADDRESS+B3TAKI_COL_5
		WORD	COL_ADDRESS+B3TAKI_COL_6
		WORD	COL_ADDRESS+B3TAKI_COL_7
;
;
COLTR_04	EQU	$
		LDA	FRCNT2
		AND	#01CH
		LSR	A
		TAX
		LDA	#BANK COL_ADDRESS
		STA	<WORK2
;
		M16			; memory 16bit mode
		LDA	!BG2SCR_CNT
		CLC
		ADC	#00000H
		STA	!BG2SCR_CNT
;
;
		LDA	COLTR_04_DAT,X
		STA	<WORK0
		PHB
		LDY	#BANK DATACOL
		PHY
		PLB
;
		LDY	#000H
COLTR_04_030	EQU	$
		LDA	[<WORK0],Y
		STA	!MOTOCOL+(7*16+01)*2,Y
		STA	!DATACOL+(7*16+01)*2,Y
		INY
		INY
		CPY	#(15*2)
		BCC	COLTR_04_030
;
		M8			; memory 8bit mode
		PLB
;
		LDA	#010H
		STA	!BG3SPH_CT
;
		RTS
;
;-----------------------------------------------------------------------
;-		地下いわカラーアニメーション				-
;-----------------------------------------------------------------------
COLTR_05	EQU	$
		JSR	BG1CHIKA_COL
COLTR_05_SB	EQU	$
		LDX	!COL_ANIME_CT
		LDA	!FRCNT2
		AND	#007H		; カラー切り替え？
		BNE	COLTR_05_40	;	NO -> COLTR_05_40
;
		TXA
		CLC
		ADC	#(8*2)
		AND	#070H
		STA	!COL_ANIME_CT
		TAX
;
COLTR_05_40	EQU	$
		PHB			;(DBR) save
		LDA	#BANK DATACOL	;(DBR) <-- DATACOL(B)
		PHA
		PLB
		M16			; memory 16bit mode
;
		LDY	#000
COLTR_05_50	EQU	$
		LDA	>COL_ADDRESS+CHIKA_IWA_COL,X
		STA	!MOTOCOL+(71H*2),Y
		STA	!DATACOL+(71H*2),Y
		INX
		INX
		INY
		INY
		CPY	#(8*2)
		BCC	COLTR_05_50
;
		M8			; memory 8bit mode
		PLB
		RTS
;
;------------------------------------------------------------------------
;-		地下コースＢＧ１の滝					-
;------------------------------------------------------------------------
COLTR_06_DAT	EQU	$
		WORD	COL_ADDRESS+B1TAKI_COL0
		WORD	COL_ADDRESS+B1TAKI_COL1
		WORD	COL_ADDRESS+B1TAKI_COL2
		WORD	COL_ADDRESS+B1TAKI_COL3
;
;
COLTR_06	EQU	$
		JSR	COLTR_05_SB
COLTR_06_SB	EQU	$
		M16			; memory 16bit mode
		LDA	!FRCNT2		; 地下標準カラー
		AND	#00038H
		LSR	A
		LSR	A
		TAX
		LDA	B1CK_COL_ADR,X
		STA	<WORK0
;
		LDX	#010H*2*4+003H*2
		LDA	#0000DH*2
		STA	<WORKE
		JSR	BG1_ANIME_SET
		M8			; memory 8bit mode		
;
COLTR_06_SB_SB	EQU	$
		LDA	!FRCNT2
		AND	#018H
		LSR	A
		LSR	A
		TAX
;
		M16			; memory 16bit mode
		LDA	COLTR_06_DAT,X
		STA	<WORK0
;
		LDX	#053H*2
		LDA	#00004H*2
		STA	<WORKE
		JSR	BG1_ANIME_SET
		M8			; memory 8bit mode
		RTS
;
;------------------------------------------------------------------------
;-		地下いわ と 地下コースＢＧ１の滝			-
;------------------------------------------------------------------------
COLTR_07	EQU	$
		JSR	COLTR_05_SB
		JSR	COLTR_06
		RTS
;
;------------------------------------------------------------------------
;-		ＢＧ１地下カラー転送					-
;------------------------------------------------------------------------
B1CK_COL_ADR	EQU	$
		WORD	COL_ADDRESS+B1CHIKA_COL0
		WORD	COL_ADDRESS+B1CHIKA_COL1
		WORD	COL_ADDRESS+B1CHIKA_COL2
		WORD	COL_ADDRESS+B1CHIKA_COL3
		WORD	COL_ADDRESS+B1CHIKA_COL4
		WORD	COL_ADDRESS+B1CHIKA_COL5
		WORD	COL_ADDRESS+B1CHIKA_COL6
		WORD	COL_ADDRESS+B1CHIKA_COL7
;
;
BG1CHIKA_COL	EQU	$
		LDA	!BG1TYP
		AND	#007
		BNE	B1CK_COL_PASS
		M16			; memory 16bit mode
		LDA	!FRCNT2
		AND	#00038H
		LSR	A
		LSR	A
		TAX
		LDA	B1CK_COL_ADR,X
		STA	<WORK0
;
		LDX	#010H*2*4+003H*2
		LDA	#0000DH*2
		STA	<WORKE
		JSR	BG1_ANIME_SET
;
		LDA	<WORK0
		CLC
		ADC	#0000DH*2
		STA	<WORK0
;
		LDX	#010H*2*0+002H*2
		LDA	#00006H*2
		STA	<WORKE
		JSR	BG1_ANIME_SET
		M8			; memory 8bit mode
B1CK_COL_PASS	EQU	$
		RTS
;
;------------------------------------------------------------------------
;-		ドカンコースＢＧ１の滝					-
;------------------------------------------------------------------------
COLTR_08_DAT	EQU	$
		WORD	COL_ADDRESS+B1DKAN_COL0
		WORD	COL_ADDRESS+B1DKAN_COL1
		WORD	COL_ADDRESS+B1DKAN_COL2
		WORD	COL_ADDRESS+B1DKAN_COL3
;
COLTR_08	EQU	$
		LDA	!FRCNT2
		AND	#00CH
		LSR	A
		TAX
;
		M16			; memory 16bit mode
		LDA	COLTR_08_DAT,X
		STA	<WORK0
;
COLTR_08_SET	EQU	$
		LDX	#053H*2
		LDA	#00004H*2
		STA	<WORKE
		JSR	BG1_ANIME_SET
;
		M8			; memory 8bit mode
		RTS
;
;------------------------------------------------------------------------
;-		ハチ城							-
;------------------------------------------------------------------------
COLTR_09_DAT	EQU	$
		WORD	COL_ADDRESS+BG3SHIRO+0*2
		WORD	COL_ADDRESS+BG3SHIRO+1*2
		WORD	COL_ADDRESS+BG3SHIRO+2*2
		WORD	COL_ADDRESS+BG3SHIRO+3*2
		WORD	COL_ADDRESS+BG3SHIRO+4*2
		WORD	COL_ADDRESS+BG3SHIRO+3*2
		WORD	COL_ADDRESS+BG3SHIRO+2*2
		WORD	COL_ADDRESS+BG3SHIRO+1*2
;
;
COLTR_09	EQU	$
		LDA	#BANK COL_ADDRESS
		STA	<WORK2
		LDA	!COL_ANIME_TM
		INC	A
		STA	!COL_ANIME_TM
		CMP	#006
		BCC	COLTR_09_10
		STZ	!COL_ANIME_TM
		LDA	!COL_ANIME_CT
		INC	A
		INC	A
		AND	#007H*2
		STA	!COL_ANIME_CT
COLTR_09_10	EQU	$
		LDX	!COL_ANIME_CT
		LDA	#BANK COL_ADDRESS
		STA	<WORK2
		M16			; memory 16bit mode
		LDA	COLTR_09_DAT,X
		STA	<WORK0
		LDA	[<WORK0]
		STA	>MOTOCOL+001H*2
		STA	>DATACOL+001H*2
		STA	>MOTOCOL+009H*2
		STA	>DATACOL+009H*2
		M8			; memory 8bit mode
		RTS
;
;------------------------------------------------------------------------
;-		地下第２ 溶岩						-
;------------------------------------------------------------------------
COLTR_0A_DAT	EQU	$
		WORD	COL_ADDRESS+CHIKA2_COL0
		WORD	COL_ADDRESS+CHIKA2_COL1
		WORD	COL_ADDRESS+CHIKA2_COL2
		WORD	COL_ADDRESS+CHIKA2_COL3
;
;
COLTR_0A	EQU	$
		LDA	!FRCNT2
		AND	#018H
		LSR	A
		LSR	A
		TAX
		LDA	#BANK COL_ADDRESS
		STA	<WORK2
;
		M16			; memory 16bit mode
		LDA	COLTR_0A_DAT,X
		STA	<WORK0
;
		JMP	COLTR_08_SET
		MEM8
;
;------------------------------------------------------------------------
;-		雪 (だんだん降ってくる)					-
;------------------------------------------------------------------------
COLTR_0B_DAT	EQU	$
		WORD	COL_ADDRESS+SNOW_COL7
		WORD	COL_ADDRESS+SNOW_COL6
		WORD	COL_ADDRESS+SNOW_COL5
		WORD	COL_ADDRESS+SNOW_COL4
		WORD	COL_ADDRESS+SNOW_COL3
		WORD	COL_ADDRESS+SNOW_COL2
		WORD	COL_ADDRESS+SNOW_COL1
		WORD	COL_ADDRESS+SNOW_COL0
;
;
COLTR_0B	EQU	$
		M16			; memory 16bit mode
		LDA	!COL_ANIME_TM
		INC	A
		CMP	#00070H
		BCS	COLTR_0B_000
		STA	!COL_ANIME_TM
		BRA	COLTR_0B_900
;
COLTR_0B_000	EQU	$
		LDA	!FRCNT2
		AND	#0007FH
		BNE	COLTR_0B_900
;
		M8			; memory 8bit mode
		LDA	#004
		STA	!MANSEL
		LDA	#013H
		STA	!SUBSEL
		LDA	#024H
		STA	!SUBADF
		M16			; memory 16bit mode
		LDA	!COL_ANIME_CT
		INC	A
		CMP	#00008
		BCS	COLTR_0B_900
		STA	!COL_ANIME_CT
		ASL	A
		TAY
		LDA	COLTR_0B_DAT,Y
		STA	<WORK0
		LDX	#00001H*2
		LDA	#00003H*2
		STA	<WORKE
		JSR	BG1_ANIME_SET
;
COLTR_0B_900	EQU	$
		M8			; memory 8bit mode
		RTS
;
;------------------------------------------------------------------------
;-		雪 (だんだんやむ)					-
;------------------------------------------------------------------------
COLTR_0C_DAT	EQU	$
		WORD	COL_ADDRESS+SNOW_COL0
		WORD	COL_ADDRESS+SNOW_COL1
		WORD	COL_ADDRESS+SNOW_COL2
		WORD	COL_ADDRESS+SNOW_COL3
		WORD	COL_ADDRESS+SNOW_COL4
		WORD	COL_ADDRESS+SNOW_COL5
		WORD	COL_ADDRESS+SNOW_COL6
		WORD	COL_ADDRESS+SNOW_COL7
;
;
COLTR_0C	EQU	$
		M16			; memory 16bit mode
		LDA	!COL_ANIME_TM
		INC	A
		CMP	#001A0H
		BCS	COLTR_0C_000
		STA	!COL_ANIME_TM
		BRA	COLTR_0C_900
;
COLTR_0C_000	EQU	$
		LDA	!FRCNT2
		AND	#0003FH
		BNE	COLTR_0B_900
;
		LDA	!COL_ANIME_CT
		INC	A
		CMP	#00008
		BCS	COLTR_0C_800
		STA	!COL_ANIME_CT
		ASL	A
		TAY
		LDA	COLTR_0C_DAT,Y
		STA	<WORK0
		LDX	#00001H*2
		LDA	#00003H*2
		STA	<WORKE
		JSR	BG1_ANIME_SET
		BRA	COLTR_0C_900
;
COLTR_0C_800	EQU	$
		LDA	!MANSEL
		EOR	#004
		STA	!MANSEL
		LDA	!SUBADF
		EOR	#004
		STA	!SUBADF
		STZ	!COLTRP
;
COLTR_0C_900	EQU	$
		M8			; memory 8bit mode
		RTS
;
;------------------------------------------------------------------------
;-		ＢＧ３ ハチ夕日						-
;------------------------------------------------------------------------
COLTR_0D_DAT0	EQU	$
		WORD	COL_ADDRESS+B3YUHI_COL_0
		WORD	COL_ADDRESS+B3YUHI_COL_1
		WORD	COL_ADDRESS+B3YUHI_COL_2
		WORD	COL_ADDRESS+B3YUHI_COL_3
		WORD	COL_ADDRESS+B3YUHI_COL_3
		WORD	COL_ADDRESS+B3YUHI_COL_2
		WORD	COL_ADDRESS+B3YUHI_COL_1
		WORD	COL_ADDRESS+B3YUHI_COL_0
;
COLTR_0D_DAT1	EQU	$
		WORD	COL_ADDRESS+B3ASAHI_COL_0
		WORD	COL_ADDRESS+B3ASAHI_COL_1
		WORD	COL_ADDRESS+B3ASAHI_COL_2
		WORD	COL_ADDRESS+B3ASAHI_COL_3
		WORD	COL_ADDRESS+B3ASAHI_COL_3
		WORD	COL_ADDRESS+B3ASAHI_COL_2
		WORD	COL_ADDRESS+B3ASAHI_COL_1
		WORD	COL_ADDRESS+B3ASAHI_COL_0
;
;
COLTR_0D	EQU	$
		LDA	!COL_ANIME_TM
		INC	A
		CMP	#012
		BCC	COLTR_0D_100
		INC	!COL_ANIME_CT
		LDA	#000
COLTR_0D_100	EQU	$
		STA	!COL_ANIME_TM
;
		LDA	!COL_ANIME_CT
		AND	#007
		ASL	A
		TAY
		M16			; memory 16bit mode
		LDA	!BG3COL
		AND	#00001
		BNE	COLTR_0D_120
		LDA	COLTR_0D_DAT0,Y
		BRA	COLTR_0D_140
COLTR_0D_120	EQU	$
		LDA	COLTR_0D_DAT1,Y
COLTR_0D_140	EQU	$
		STA	<WORK0
		LDX	#00001H*2
		LDA	#00003H*2
		STA	<WORKE
		JSR	BG1_ANIME_SET
;
		LDA	#00002
		STA	!BG3SPH_CT
		LDA	#00002
		STA	!BG3SPV_CT
		M8			; memory 8bit mode
;
		RTS
;
;------------------------------------------------------------------------
;-		地下滝 ( 水 ＆ 溶岩 )					-
;------------------------------------------------------------------------
COLTR_0E_DAT	EQU	$
		WORD	COL_ADDRESS+B2CK_TK_COL0
		WORD	COL_ADDRESS+B2CK_TK_COL1
		WORD	COL_ADDRESS+B2CK_TK_COL2
		WORD	COL_ADDRESS+B2CK_TK_COL3
		WORD	COL_ADDRESS+B2CK_TK_COL4
		WORD	COL_ADDRESS+B2CK_TK_COL5
		WORD	COL_ADDRESS+B2CK_TK_COL6
		WORD	COL_ADDRESS+B2CK_TK_COL7
;
COLTR_0E_ADR	EQU	$
		WORD	00006H*20H+00008H*2
		WORD	00006H*20H+00004H*2
;
COLTR_0E_AND	EQU	$
		WORD	0001CH,00038H
;
;
COLTR_0E	EQU	$
		LDA	!BG1TYP
		CMP	#008		; 地下第２コースの溶岩 ?
		BNE	COLTR_0E_020	;	NO -> COLTR_0E_020
		JSR	COLTR_0A
		BRA	COLTR_0E_SB
COLTR_0E_020	EQU	$
		JSR	COLTR_06_SB_SB
COLTR_0E_SB	EQU	$
		M16			; memory 16bit mode
		LDA	!BG2COL
		AND	#00001
		ASL	A
		TAY
		ASL	A
		ASL	A
		ASL	A
		STA	<WORK0
		LDA	COLTR_0E_ADR,Y
		TAX
		LDA	COLTR_0E_AND,Y
		AND	!FRCNT2
		DEY
		BMI	COLTR_0E_500
		LSR	A
COLTR_0E_500	EQU	$
		LSR	A
		TAY
		LDA	COLTR_0E_DAT,Y
		CLC
		ADC	<WORK0
		STA	<WORK0
		LDA	#00008*2
		STA	<WORKE
		JSR	BG1_ANIME_SET
		M8			; memory 8bit mode
		RTS
;
;------------------------------------------------------------------------
;-		ＢＧ３ボス部屋						-
;------------------------------------------------------------------------
COLTR_0F_DAT	EQU	$
		WORD	COL_ADDRESS+B3BSRM_COL0
		WORD	COL_ADDRESS+B3BSRM_COL1
		WORD	COL_ADDRESS+B3BSRM_COL2
		WORD	COL_ADDRESS+B3BSRM_COL3
;
;
COLTR_0F	EQU	$
		M16			; memory 16bit mode
		LDA	!FRCNT2
		AND	#0000CH
		LSR	A
		TAX
		LDA	COLTR_0F_DAT,X
		STA	<WORK0
		LDA	#00003H*2
		STA	<WORKE
		LDX	#00000H*20H+00005H*2
		JSR	BG1_ANIME_SET
		M8			; memory 8bit mode
		RTS
;
;------------------------------------------------------------------------
;-		氷の地下 (ＢＧ１)					-
;------------------------------------------------------------------------
COLTR_10_DAT	EQU	$
		WORD	COL_ADDRESS+B1ICECK_COL7
		WORD	COL_ADDRESS+B1ICECK_COL6
		WORD	COL_ADDRESS+B1ICECK_COL5
		WORD	COL_ADDRESS+B1ICECK_COL4
		WORD	COL_ADDRESS+B1ICECK_COL3
		WORD	COL_ADDRESS+B1ICECK_COL2
		WORD	COL_ADDRESS+B1ICECK_COL1
		WORD	COL_ADDRESS+B1ICECK_COL0
;
COLTR_10_CNT	EQU	$
		WORD	00040H+00008H*8*2
		WORD	00020H+00008H*8*2
		WORD	00060H+00008H*8*2
		WORD	00020H+00008H*8*2
;
;
COLTR_10	EQU	$
		M16			; memory 16bit mode
		LDA	!COL_ANIME_PM
		CMP	#00008H*8*2
		BCS	COLTR_10_400
		LSR	A
		LSR	A
		AND	#00007*2
		TAX
		LDA	COLTR_10_DAT,X
		STA	<WORK0
		LDA	#00007H*2
		STA	<WORKE
		LDX	#00004*20H+009H*2
		JSR	BG1_ANIME_SET
;
COLTR_10_400	EQU	$
		DEC	!COL_ANIME_PM
		BPL	COLTR_10_900
		JSL	>RND_RND
		ADC	<FRCNT
		AND	#00003
		ASL	A
		TAX
		LDA	COLTR_10_CNT,X
		STA	!COL_ANIME_PM
;
COLTR_10_900	EQU	$
		M8			; memory 8bit mode
		JSR	COLTR_05_SB
		RTS
;
;------------------------------------------------------------------------
;-		ＢＧ３霧						-
;------------------------------------------------------------------------
COLTR_11	EQU	$
		JSR	COLTR_0E
		M16				; memory 16bit mode
		LDA	#COL_ADDRESS+B3KIRI_COL
		STA	<WORK0
		M8				; memory 8bit mode
COLTR_11_SB	EQU	$
		M16			; memory 16bit mode
		LDA	!COL_ANM_TM00
		CMP	#00320H
		BCC	COLTR_11_800
		CMP	#00320H+200H
		BCS	COLTR_11_900
;
		SBC	#00320H-1
		AND	#0FFE0H
		LSR	A
		LSR	A
		ADC	<WORK0
		STA	<WORK0
		LDA	#00004H*2
		STA	<WORKE
		LDX	#00000H*20H+00000H*2
		JSR	BG1_ANIME_SET
		LDA	#01304H
		STA	!MANSEL
		LDA	!SUBADF
		ORA	#00004
		STA	!SUBADF
;
COLTR_11_800	EQU	$
		CLC
		SED
		LDA	!COL_ANM_TM00
		ADC	#00001
		STA	!COL_ANM_TM00
		CLD
COLTR_11_900	EQU	$
		M8			; memory 8bit mode
		RTS
;
;------------------------------------------------------------------------
;-		転送タイプ ５,Ａ,１０,１１ の組合せ			-
;------------------------------------------------------------------------
COLTR_12	EQU	$
		JSR	COLTR_0A
		JSR	COLTR_10
		M16				; memory 16bit mode
		LDA	#COL_ADDRESS+B3KR_SR_COL
		STA	<WORK0
		M8				; memory 8bit mode
		JSR	COLTR_11_SB
		RTS
;
;------------------------------------------------------------------------
;-		地下標準カラー 地下滝 森のこもれび			-
;------------------------------------------------------------------------
COLTR_13	EQU	$
		JSR	COLTR_02	; 森のこもれび
		JSR	COLTR_0E_SB	; 地下滝
		M16			; memory 16bit mode
		LDA	!FRCNT2		; 地下標準カラー
		AND	#00038H
		LSR	A
		LSR	A
		TAX
		LDA	B1CK_COL_ADR,X
		STA	<WORK0
;
		LDX	#010H*2*4+003H*2
		LDA	#0000DH*2
		STA	<WORKE
		JSR	BG1_ANIME_SET
		M8			; meory 8bit mode
		RTS
;
;------------------------------------------------------------------------
;-		ＢＧ３霧だけ						-
;------------------------------------------------------------------------
COLTR_14	EQU	$
		M16				; memory 16bit mode
		LDA	!COL_ANM_TM00
		CMP	#00320H
		BCC	COLTR_14_800
		CMP	#00320H+200H
		BCS	COLTR_14_900
;
		SBC	#00320H-1
		AND	#0FFE0H
		LSR	A
		LSR	A
		ADC	#COL_ADDRESS+B3KR_SR_COL
		STA	<WORK0
		LDA	#00004H*2
		STA	<WORKE
		LDX	#00000H*20H+00000H*2
		JSR	BG1_ANIME_SET
		LDA	#01304H
		STA	!MANSEL
		LDA	!SUBADF
		ORA	#00004
		STA	!SUBADF
;
COLTR_14_800	EQU	$
		CLC
		SED
		LDA	!COL_ANM_TM00
		ADC	#00001
		STA	!COL_ANM_TM00
		CLD
COLTR_14_900	EQU	$
		M8			; memory 8bit mode
		RTS
;
;++++++++++++++++++++++++++++++++++++++++++++++++
;+						+
;+	ＢＧ１アニメーションカラー セット	+
;+			in			+
;+			  X : data set index	+
;+			wk0 : データアドレス	+
;+			wkE : ループ リミット	+
;++++++++++++++++++++++++++++++++++++++++++++++++
		MEM16
BG1_ANIME_SET	EQU	$
		LDA	#BANK COL_ADDRESS
		STA	<WORK2
		PHB			;(DBR) save
		LDY	#BANK DATACOL	;(DBR) <-- DATACOL(B)
		PHY
		PLB
;
		LDY	#000H
BG1_ANIME_LOP	EQU	$
		LDA	[<WORK0],Y
		STA	!MOTOCOL,X
		STA	!DATACOL,X
		INX
		INX
		INY
		INY
		CPY	<WORKE
		BCC	BG1_ANIME_LOP
;
		PLB
		RTS
		MEM8
;
;
;
;
;------------------------------------------------------------------------
;-		pause move						-
;-			in  : (Y) <-- pause flag			-
;------------------------------------------------------------------------
;
;-------------- moji OAM data -------------------------------------------
GMPASOAM	EQU	$
;			X   Y	CH  AT
		HEX	02A,014,0E0,030 ;[00] "P"
		HEX	03A,014,0E2,030 ;[01]
		HEX	02A,024,000,031 ;[02]
		HEX	03A,024,002,031 ;[03]
;
		HEX	046,014,0E4,030 ;[04] "A"
		HEX	056,014,0E6,030 ;[05]
		HEX	046,024,004,031 ;[06]
		HEX	056,024,006,031 ;[07]
;
		HEX	062,014,0E8,030 ;[08] "U"
		HEX	072,014,0EA,030 ;[09]
		HEX	062,024,008,031 ;[0A]
		HEX	072,024,00A,031 ;[0B]
;
		HEX	07E,014,0EC,030 ;[0C] "S"
		HEX	08E,014,0EE,030 ;[0D]
		HEX	07E,024,00C,031 ;[0E]
		HEX	08E,024,00E,031 ;[0F]
;
		HEX	09A,014,020,031 ;[10] "E"
		HEX	0AA,014,022,031 ;[11]
		HEX	09A,024,028,031 ;[12]
		HEX	0AA,024,02A,031 ;[13]
GMPASOAME	EQU	$
;
;-------------- moji move data ------------------------------------------
GMPASINTM	EQU	$
;			P  A  U	 S  E
		HEX	00,04,08,0C,10
;
GMPASZMAD	EQU	$
; GMPASZMK -->
		HEX	FC,04,FC,04,FC,04,FC,04,FC,04,FC
ZOMMAX		HEX	01,00
GMPASZMCP	EQU	$
		HEX	20,34,20,34,20,34,20,34,20,34,20
		HEX	34,00
ZOMMX		EQU	ZOMMAX-GMPASZMAD
;
GMPASASAD	EQU	$
;			ZOMMX ->
		HEX	04,FF
GMPASASMX	EQU	$
		HEX	40,10
;
GMPASMJNO	EQU	$
;			 P  A  U  S  E
		HEX	00,01,02,03,04
;
GMPASCNTX	EQU	$
		HEX	10,30,50,70,10
GMPASCNTY	EQU	$
		HEX	50,50,50,50,70
;
GMPASIN_SNDNO	EQU	$
		WORD	01H,	   02H
;
GMPASUB_ADR	EQU	$-2
		WORD	GMPASUB_000,GMPASUB_100
		WORD	GMPASUB_200,GMPASUB_300
		WORD	GMPASUB_400,GMPASUB_500
		WORD	GMPASUB_600,GMPASUB_700
		WORD	GMPASUB_800
ITEM_OBJ	EQU	$
		WORD	GMPASUB_900
GMPASUB_MOVE	EQU	$
		WORD	GMPASUB_A00,GMPASUB_A00
		WORD	GMPASUB_A00,GMPASUB_A00
		WORD	GMPASUB_A00,GMPASUB_A00
		WORD	GMPASUB_A00,GMPASUB_B00
OBJ_SAVE	EQU	$
;
Vram_save	EQU	(OBJ_SAVE-GMPASUB_ADR)/2
Item_obj	EQU	(ITEM_OBJ-GMPASUB_ADR)/2
Pause_move	EQU	(GMPASUB_MOVE-GMPASUB_ADR)/2
;
;
GMPASUB		EQU	$
		MI16			; memory , index 16bit mode
		LDA	!GMPAUSE
		AND	#000FFH
		ASL	A
		TAX
		LDA	!GMPASMK
		AND	#00FFH
		ASL	A
		TAY
		JSR	(GMPASUB_ADR,X)
		MI8			; memory , index 8bit mode
;
;------------------------------- アイテム オブジェ セット
		LDA	!GMPAUSE
		CMP	#Item_obj
		BCC	GMPASUB_PASS
		LDA	!ITEMDSP	; アイテムを持っているか ?
		BEQ	GMPASUB_PASS	;	NO -> GMPASUB_PASS
		JSR	ITEMOBJST
;
		JSR	MTR_COL_CHG
;
GMPASUB_PASS	EQU	$
		PLB
		RTL
;
		MEM16
		IDX16
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+	カーソル枠の カラーアニメーション		+
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
MTR_COL_DAT	EQU	$
		WORD	07C00H,07C1FH,0001FH,003FFH
		WORD	003E0H,003FFH,0001FH,07C1FH
;
;
MTR_COL_CHG	EQU	$
		M16			; memory 16bit mode
		LDA	<FRCNT
		AND	#00111000B
		LSR	A
		LSR	A
		TAX
		LDA	MTR_COL_DAT,X
		STA	>DATACOL+(01*20H)+(0EH*2)
		M8			; memory 8bit mode
		RTS
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+		カラー フェード イン , アウト		+
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
GM_PS_ADR	EQU	$
		WORD	GM_PS_OUT,GM_PS_IN
;
;
GMPASUB_900	EQU	$
		M8			; memory 8bit mode
		LDA	!GMPASMK
		EOR	#001
		BRA	GMPASUB_050
;
GMPASUB_000	EQU	$
		M8			; memory 8bit mode
		LDA	!GMPASMK
GMPASUB_050	EQU	$
		PHA			;(A) save
;
		ASL	A
		TAX
		LDA	!FADNO
		JSR	(GM_PS_ADR,X)
;
		PLA			;(A) load
		EOR	GMPASMK
		BEQ	GMPASUB_060	;赤ちゃんカウント表示？ ( yes:GMPASUB_060 )
		RTS
;
;-------------- 赤ちゃんカウント表示 --------------------
GMPASUB_060	EQU	$
;
		M16			; memory 16bit mode
		I8
;
		PLA			;[ pull pull return !! ]
		JMP	>COUNT_DOWN_011 ;赤ちゃんカウント表示へ
;
		MEM8
		IDX8
;
;------------------------------- カラー フェード イン
GM_PS_IN	EQU	$
		DEC	A
		DEC	A
		BPL	GM_PS_IN_OUT
		JSR	GMPASUB_MODE
		LDA	#080H
		BRA	GM_PS_IN_OUT
;
;------------------------------- カラー フェード アウト
GM_PS_OUT	EQU	$
		AND	#00FH
		INC	A
		INC	A
		CMP	#00FH
		BCC	GM_PS_IN_OUT
		JSR	GMPASUB_MODE
		LDA	#00FH
GM_PS_IN_OUT	EQU	$
		STA	!FADNO
		RTS
;
		MEM16
		IDX16
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+		ＯＢＪ データ セーブ ＆ ロード		+
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
GMPASUB_1_AD	EQU	$
		WORD	05400H,05400H+8000H
GMPASUB_1_BT	EQU	$
		WORD	(16*8)*20H,(16*8)*20H+2
;
;
GMPASUB_100	EQU	$
		TYX
		LDA	!GMPASIN_SNDNO,X ;[♪]
		STA	<SOUND_3
;
		LDA	#OBJ_BUF
		STA	<WORK0
		LDY	GMPASUB_1_BT,X	;(Y) <-- number of byte
		LDA	GMPASUB_1_AD,X	;(A) <-- VRAM address
		JMP	VRMSAVE
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+		ＯＢＪ データ セーブ ＆ ロード		+
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
GMPASUB_2_AD	EQU	$
		WORD	04E00H,04E00H+8000H
GMPASUB_2_BT	EQU	$
		WORD	(16*6)*20H,(16*6)*20H+2
;
;
GMPASUB_200	EQU	$
;
;-------------- pause moji RAM clear --------------------
		MI8			; memory , index 8bit mode
		LDX	#GMPASCLRSE-1
GMPASUB_220	EQU	$
		STZ	!GMPASCLR_S,X
		DEX
		BPL	GMPASUB_220
;
		LDX	#PASMOJ-2
GMPASUB_230	EQU	$
		LDA	GMPASINTM,X
		STA	!GMPASTIM,X
		DEX
		BPL	GMPASUB_230
;
		MI16			; memory , index 16bit mode
		TYX
		LDA	#OBJ_BUF
		CLC
		ADC	GMPASUB_1_BT+2
		STA	<WORK0
		LDY	GMPASUB_2_BT,X	;(Y) <-- number of byte
		LDA	GMPASUB_2_AD,X	;(A) <-- VRAM address
		BRA	VRMSAVE
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+	ＢＧ３キャラクター データ セーブ ＆ ロード	+
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
GMPASUB_3_AD	EQU	$
		WORD	02800H,02800H+8000H
;
;
GMPASUB_300	EQU	$
		TYX
		LDA	#B3CHR_BUF
		STA	<WORK0
		LDY	GMPASUB_1_BT,X	;(Y) <-- number of byte
		LDA	GMPASUB_3_AD,X	;(A) <-- VRAM address
		BRA	VRMSAVE
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+	ＢＧ３スクリーン データ セーブ ＆ ロード	+
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
GMPASUB_4_AD	EQU	$
		WORD	03400H,03400H+8000H
;
GMPASUB_4_BT	EQU	$
		WORD	(16*4)*20H,(16*4)*20H+2
;
;
GMPASUB_400	EQU	$
		TYX
		LDA	#B3SCR_BUF
		STA	<WORK0
		LDY	GMPASUB_4_BT,X	;(Y) <-- number of byte
		LDA	GMPASUB_4_AD,X	;(A) <-- VRAM address
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+		ＶＲＡＭエリア セーブ			+
;+				in			+
;+				Y <- number of byte	+
;+				A <- VRAM address	+
;+				wrk0,1 <- 転送先アドレス+
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
VRMSAVE		EQU	$
		PHB			;(DBR) save
		PEA	VRAMDX/100H
		PLB
		PLB			;(DBR) <-- VRAMDX(B)
;
		LDX	VRAMDX
		STA	0,X		;VRAM address set
		ASL	A		;(C) <-- VRAM read ?
		LDA	#10000000B
		STA	2,X		;inc mode set
		LDA	#BANK OBJ_BUF
		STA	7,X		;A bus address(H,B) set
		TYA
		STA	8,X		;number of byte set
		LDA	#10000001B+(39H*100H)
		LDY	<WORK0		; VRAM read ?
		BCS	VRSV010		;	YES -> VRSV010
;
		LDA	#00000001B+(18H*100H)
		INY
		INY
VRSV010		EQU	$
		STA	3,X		;inc mode & DMA parameter set
		TYA
		STA	5,X		;B bus address & A bus addres(L) set
;
		TXA
		CLC
		ADC	#12
		STA	10,X		;next data address set
		STA	VRAMDX		;end address set
;
		PLB		;(DBR) load
		JSR	GMPASUB_MODE
		RTS
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+		点数表示用キャラクター セット		+
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
GMPASUB_500	EQU	$
		TYA			; セット ＯＫ ?
		BEQ	GMPASUB_590	;	NO -> GMPASUB_590
		LDX	#CHR32
		LDA	#BANK CHR32
		LDY	ITEM_STOP
		BEQ	GMPASUB_510	;アイテム使用禁止？ ( no:GMPASUB_510 )
;
		LDX	#CHR64P
		LDA	#BANK CHR64P
GMPASUB_510	EQU	$
		STA	<WORK1
		LDY	#05400H
		LDA	#00400H
		JSL	>VRAMDX_ST
GMPASUB_590	EQU	$
		JSR	GMPASUB_MODE
		RTS
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+		メーター キャラクターセット		+
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
GMPASUB_600	EQU	$
		TYA			; セット ＯＫ ?
		BEQ	GMPASUB_690	;	NO -> GMPASUB_690
		LDA	#CHRE9A
		JSL	>UNCOMPRES_X
;
		LDX	#BANK WOB7CHR
		STX	<WORK1
		LDX	#WOB7CHR+1000H
		LDY	#02C00H
		JSL	>VRAMDX_ST
GMPASUB_690	EQU	$
		JSR	GMPASUB_MODE
		RTS
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+	各パラメータ データ セーブ ＆ ロード		+
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
GMPASUB_7_BNK	EQU	$
		WORD	BANK PRMTR_BUF,BANK GMMDRM,BANK PRMTR_BUF
;
GMPASUB_7_ADR	EQU	$
		WORD	PRMTR_BUF,GMMDRM,PRMTR_BUF
;
GMPASUB_7_SUB	EQU	$
		WORD	GMPASUB_710,GMPASUB_720
;
;
GMPASUB_700	EQU	$
		JSR	GMPASUB_MODE
		TYX
		JSR	(GMPASUB_7_SUB,X)
;
		LDA	GMPASUB_7_BNK,Y
		STA	<WORK2
		LDA	GMPASUB_7_ADR,Y
		STA	<WORK0
		INY
		INY
		LDA	GMPASUB_7_BNK,Y
		STA	<WORK5
		LDA	GMPASUB_7_ADR,Y
		STA	<WORK3
;
		LDY	#00000H
		TYX
		M8			; memory 8bit mode
GMPASUB_750	EQU	$
		LDA	[<WORK0],Y
		STA	[<WORK3],Y
		INY
		CPY	#GMMDNO
		BCC	GMPASUB_750
;
		RTS
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+		カラー セット				+
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
GMPS_COL_ADR	EQU	$
		WORD	GMPS_COL_OUT,GMPS_COL_IN
;
GMPASUB_800	EQU	$
		JSR	GMPASUB_MODE
		PHB
		I8			; index 8bit mode
		TYX
		JMP	(GMPS_COL_ADR,X)
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+		ポーズ モード イニシャル セット		+
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
GMPASUB_A00	EQU	$
		JSR	GMPASUB_MODE
		MI8			; memory , index 8bit mode
		LDA	!GMPAUSE
		SEC
		SBC	#Pause_move
		ASL	A
		ASL	A
		ASL	A
		LDX	#PASMOJ-2
GMPASUB_A40	EQU	$
		STA	GMPASZOM,X
		DEX
		BPL	GMPASUB_A40
;
GMPASUB_A90	EQU	$
		JMP	GMPASUB_B70
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+		ポーズ プレイ中				+
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
GMPASUB_B00	EQU	$
		MI8			; memory , index 8bit mode
		JSR	ITMSEL		; アイテム セレクト
;
		LDA	!ITEMNO
		BEQ	GMPASUB_B03
		LDA	<KEYC2L
		AND	#10000000B	; "Ａ" キー ＯＮ ?
		BNE	GMPASUB_B05
GMPASUB_B03	EQU	$
		LDA	<KEYC2
		AND	#01010000B	; "Ｂ" or スタート キー ＯＮ ?
		BEQ	GMPASUB_B20	;	NO -> GMPASUB_B20
GMPASUB_B05	EQU	$
		LDA	!GMPASMK
		EOR	#001
		AND	#001
		STA	!GMPASMK
		JSR	GMPASUB_MODE
;
GMPASUB_B20	EQU	$
		LDX	#PASMOJ-2
GMPASUB_B25	EQU	$
		LDA	GMPASTIM,X	; wait ?
		BEQ	GMPASUB_B30	;	NO -> GMPASUB_B30
;
		LDA	<FRCNT
		AND	#03H
		BNE	GMPASUB_B60
		DEC	GMPASTIM,X	;timer dec
		BRA	GMPASUB_B60
;
;-------------- moji zoom -----------------------
GMPASUB_B30	EQU	$
		LDY	GMPASZMK,X
		LDA	<FRCNT
		AND	#03H
		BNE	GMPASUB_B35
		LDA	GMPASZOM,X
		CLC
		ADC	!GMPASZMAD,Y
		STA	GMPASZOM,X
		CMP	!GMPASZMCP,Y	; zoom muki change ?
		BNE	GMPASUB_B35	;	NO -> GMPASUB_B35
;
		INC	GMPASZMK,X
GMPASUB_B35	EQU	$
		CPY	#ZOMMX		; moji rotation ?
		BCC	GMPASUB_B60	;	NO -> GMPASUB_B60
;
;-------------- moji rotation -------------------
		LDA	GMPASXAS,X
		CMP	!GMPASASMX-ZOMMX,Y	; max rotation speed ?
		BNE	GMPASUB_B40		;	NO -> GMPASUB_B40
;
		CPY	#ZOMMX		; rotation end check ?
		BEQ	GMPASUB_B50	;	NO -> GMPASUB_B50
		LDA	GMPASXAN,X
		BNE	GMPASUB_B50	;	NO -> GMPASUB_B50
;
;-------------- go to wait set ------------------
		STZ	GMPASZMK,X	;zoom muki reset
		STZ	GMPASXAS,X	;rotation speed reset
		STZ	GMPASXAC,X	;	"       calc reset
		LDA	#020H
		STA	GMPASTIM,X	;wait timer set
		BRA	GMPASUB_B70
;
GMPASUB_B40	EQU	$
		LDA	<FRCNT
		LSR	A
		BCS	GMPASUB_B50
		LDA	GMPASXAS,X
		CLC
		ADC	!GMPASASAD-ZOMMX,Y
		STA	GMPASXAS,X
GMPASUB_B50	EQU	$
		LDA	GMPASXAS,X
		TAY
		ASL	A
		ASL	A
		ASL	A
		ASL	A
		CLC
		ADC	GMPASXAC,X
		STA	GMPASXAC,X
		TYA
		PHP			;(C),(N) save
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		PLP
		BPL	GMPASUB_B55
		ORA	#0F0H
GMPASUB_B55	EQU	$
		ADC	GMPASXAN,X
		STA	GMPASXAN,X
;
GMPASUB_B60	EQU	$
		DEX
		BMI	GMPASUB_B70
		JMP	GMPASUB_B25
;
;-------------- moji polygon set ------------------------
GMPASUB_B70	EQU	$
;
		M16
;
		LDA	#WOB7CHR+(80H*20H)
		STA	R1		;(R1) <-- M-chip clear RAM start address
		LDA	#(80H*20H)/2
		STA	R12
		M_CHIP	MRAM_CLR
;
		LDX	#PASMOJ-2
GMPASUB_B80	EQU	$
		LDA	!GMPASMJNO,X
		AND	#00FFH
		STA	R1		;(R1) <-- moji no.
		LDA	GMPASXAN,X
		AND	#00FFH
		STA	R2		;(R2) <-- X angle
		STA	R3		;(R3) <-- Y   "
		LDA	!GMPASCNTX,X
		AND	#00FFH
		STA	R4		;(R4) <-- center X pos
		LDA	!GMPASCNTY,X
		AND	#00FFH
		STA	R5		;(R5) <--    "   Y  "
		LDA	GMPASZOM,X
		AND	#00FFH
		STA	R6		;(R6) <-- zoom flag
;
		PHX			;(X) save
;
		M_CHIP	MOJIPOLY2
;
		PLX			;(X) load
;
		DEX
		BPL	GMPASUB_B80
;
		LDA	#WOB7CHR+(80H*20H)+(60H*20H)
		STA	R1		;(R1) <-- convert RAM from start address
		LDA	#WOB7CHR+(80H*20H)+(48H*20H)
		STA	R2		;(R2) <-- convert RAM to start address
		LDA	#(8*20H)/2
		STA	R3		;(R3) <-- 1 block number of word
		LDA	#01H
		STA	R4		;(R4) <-- number of block
		M_CHIP	MJRAMCNV	;moji polygon RAM convert
;
		LDA	#WOB7CHR+(80H*20H)+(70H*20H)
		STA	R1		;(R1) <-- convert RAM from start address
		LDA	#WOB7CHR+(80H*20H)+(58H*20H)
		STA	R2		;(R2) <-- convert RAM to start address
		LDA	#(8*20H)/2
		STA	R3		;(R3) <-- 1 block number of word
		LDA	#01H
		STA	R4		;(R4) <-- number of block
		M_CHIP	MJRAMCNV	;moji polygon RAM convert
;
;-------------- pause moji OAM set ------------------------------
		LDA	#1010101010101010B	;big size set
		STA	>OAMSUB
		STA	>OAMSUB+2
		STA	>OAMSUB+4
		STA	>OAMSUB+6
;
		M8
;
		STZ	<WORK0
		LDA	#010H
		STA	<WORK0
		LDX	#000H
GMPASUB_B90	EQU	$
		LDA	!GMPASOAM+0,X
		CLC
		ADC	<WORK0
		STA	>OAM+0,X
		LDA	!GMPASOAM+1,X
		STA	>OAM+1,X
		LDA	!GMPASOAM+2,X
		STA	>OAM+2,X
		LDA	!GMPASOAM+3,X
		STA	>OAM+3,X
		INX
		INX
		INX
		INX
		CPX	#GMPASOAME-GMPASOAM
		BCC	GMPASUB_B90
;
		RTS
;
;++++++++++++++++++++++++++++++++++++++++
;+	ポースモードＮＯ．ＩＮＣ	+
;++++++++++++++++++++++++++++++++++++++++
GMPASUB_MD_DT	EQU	$
		BYTE	0FFH,001H
;
;
GMPASUB_MODE	EQU	$
		PHY
		PHP
		M8		; memory 8bit mode
		LDY	!GMPASMK
		LDA	!GMPAUSE
		CLC
		ADC	GMPASUB_MD_DT,Y
		STA	!GMPAUSE
;
GMPASUB_MD_90	EQU	$
		PLP
		PLY
		RTS
;
		MEM16
		IDX16
;
;++++++++++++++++++++++++++++++++++++++++++++++++
;+	その他の データ 復帰			+
;++++++++++++++++++++++++++++++++++++++++++++++++
GMPASUB_710	EQU	$
		LDA	>SCH_BUF
		STA	<SCCH3
		LDA	>SCV_BUF
		STA	<SCCV3
		LDA	>HD42C_BUF
		STA	!HD420C
		LDA	>NUK_BUF
		STA	!NUKCOL
;
		M8			; memory 8bit mode
		LDA	>NMITYP_BUF
		STA	!NMITYP
		LDA	>MOZNO_BUF
		STA	!MOZNO
		M16			; memory 16bit mode
		RTS
;
;++++++++++++++++++++++++++++++++++++++++++++++++
;+	その他の データ 退避			+
;++++++++++++++++++++++++++++++++++++++++++++++++
GMPASUB_720	EQU	$
		LDA	<SCCH3
		STA	>SCH_BUF
		LDA	<SCCV3
		STA	>SCV_BUF
		LDA	!HD420C
		STA	>HD42C_BUF
		LDA	!NUKCOL
		STA	>NUK_BUF
;
		M8			; memory 8bit mode
		LDA	!NMITYP
		STA	>NMITYP_BUF
		LDA	!MOZNO
		STA	>MOZNO_BUF
		STZ	!MOZNO
		M16			; memory 16bit mode
;
		PHY
		LDA	#BANK CHR74	;スコア キャラクターセット
		STA	<WORK1		;bank NO. set
		LDY	#02800H		;(Y) <-- VRAM address
		LDX	#CHR74		;(X) <-- A bus address
		LDA	#0800H		;(A) <-- number byte
		JSL	>VRAMDX_ST
		PLY
		RTS
;
		IDX8
;
;++++++++++++++++++++++++++++++++++++++++++++++++
;+		フェード アウト			+
;++++++++++++++++++++++++++++++++++++++++++++++++
GMPS_COL_OUT	EQU	$
		LDX	#000
GMPS_COL_OUT_LP EQU	$
		LDA	>COL_BUF+000H,X
		STA	>DATACOL+000H,X
		LDA	>COL_BUF+100H,X
		STA	>DATACOL+100H,X
		INX
		INX
		BNE	GMPS_COL_OUT_LP
;
		PLB
		RTS
;
;++++++++++++++++++++++++++++++++++++++++++++++++
;+		フェード イン			+
;++++++++++++++++++++++++++++++++++++++++++++++++
GMPS_COL_IN	EQU	$
		LDA	#00000H
		STA	<SCCH3
		STA	<SCCV3
		STA	!NUKCOL
		TAX
		STX	!HD420C
		LDY	#BANK DATACOL
		PHY
		PLB
;
GMPS_COL_IN_00	EQU	$		; カラーデータの退避
		LDA	!DATACOL+000H,X
		STA	>COL_BUF+000H,X
		LDA	!DATACOL+100H,X
		STA	>COL_BUF+100H,X
		INX
		INX
		BNE	GMPS_COL_IN_00
;
		LDA	#00000H
		TAX
		TXY
GMPS_COL_IN_10	EQU	$		; カラーデータのゼロクリア
		STA	!DATACOL+000H,X
		STA	!DATACOL+100H,X
		INX
		INX
		BNE	GMPS_COL_IN_10
;
		TYX
GMPS_COL_IN_20	EQU	$		;ポリゴンとスコアのカラーセット
		LDA	>COL_ADDRESS+METER_COL+2,X
		STA	!DATACOL+((16*2)*0)+2,X
		LDA	>COL_ADDRESS+METER_COL+(16*2)+2,X
		STA	!DATACOL+((16*2)*1)+2,X
		LDA	>COL_ADDRESS+OBJ_MAIN_COL+(15*2*0),X
		STA	!DATACOL+((16*2)*8)+2,X
		LDA	>COL_ADDRESS+OBJ_MAIN_COL+(15*2*1),X
		STA	!DATACOL+((16*2)*9)+2,X
		LDA	>COL_ADDRESS+OBJ_MAIN_COL+(15*2*2),X
		STA	!DATACOL+((16*2)*10)+2,X
		INX
		INX
		CPX	#015*2
		BCC	GMPS_COL_IN_20
;
		LDX	#BANK PAUSE_SCR
		PHX
		PLB
		LDX	#000
		LDA	#0217FH
GMPS_COL_IN_30	EQU	$		; スクリーン バッファ クリア
		STA	!PAUSE_SCR+000H,X
		STA	!PAUSE_SCR+100H,X
		STA	!PAUSE_SCR+200H,X
		STA	!PAUSE_SCR+300H,X
		STA	!PAUSE_SCR+400H,X
		STA	!PAUSE_SCR+500H,X
		STA	!PAUSE_SCR+600H,X
		INX
		INX
		BNE	GMPS_COL_IN_30
;
		LDX	#000
		STX	<WORK0
		TXY
GMPS_COL_IN_40	EQU	$		; 基本キャラクター セット
		LDA	<WORK0		; 点線
		ASL	A
		TAX
		LDA	>BG3LINEDAT1,X
		STA	!PAUSE_SCR+(20H*10H+04H)*2,Y
;
		LDX	<WORK0
		CPX	#GMGOAL_SCR5-GMGOAL_SCR4
		BCS	GMPS_COL_IN_46
		LDA	>GMGOAL_SCR4,X	; "ＴＯＴＡＬ ＰＯＩＮＴ"
		AND	#000FFH
		TAX
		LDA	>GMGOAL_MJ_DAT0,X
		STA	!PAUSE_SCR+(20H*11H+07H)*2,Y
		LDA	>GMGOAL_MJ_DAT1,X
		STA	!PAUSE_SCR+(20H*12H+07H)*2,Y
;
GMPS_COL_IN_46	EQU	$
		LDX	<WORK0
		CPX	#GMGOAL_SCR6-GMGOAL_SCR5
		BCS	GMPS_COL_IN_48
		LDA	>GMGOAL_SCR5,X	; "ＨＩＧＨ ＳＣＯＲＥ"
		AND	#000FFH
		TAX
		LDA	>GMGOAL_MJ_DAT0,X
		STA	!PAUSE_SCR+(20H*14H+07H)*2,Y
		LDA	>GMGOAL_MJ_DAT1,X
		STA	!PAUSE_SCR+(20H*15H+07H)*2,Y
;
GMPS_COL_IN_48	EQU	$
		INY
		INY
		INC	<WORK0
		LDX	<WORK0
		CPX	#GMGOAL_SCR2-GMGOAL_SCR1
		BCC	GMPS_COL_IN_40
;
GMPS_COL_IN_49	EQU	$
;
		JSR	GMPS_TIMER
;
		JSR	GMPS_COIN
;
		JSR	GMPS_FLOWER
;
		JSR	GMPS_TOTAL
;
		JSR	GMPS_HI_SCORE
;
		JSR	GMPS_MATER
;
		JSR	ITEM_INIT
;
		I16			; index 16bit mode
		LDY	#BANK PAUSE_SCR
		STY	<WORK1		;(WK1) <- 転送元バンク
		LDY	#03400H		; Y <---- ＶＲＡＭアドレス
		LDX	#PAUSE_SCR	; X <---- 転送元アドレス
		LDA	#(00020H*1CH)*2 ; A <---- 転送バイト数
		JSL	>VRAMDX_ST
		I8			; index 8bit mode
;
		PLB
;
		LDX	#009H
		STX	!BGMODE
		LDX	#034H
		STX	!BG3SCF
		LDX	#002H
		STX	!BG34CH
		STX	!NMITYP
		LDA	#00014H
		STA	!MANSEL
		RTS
;
;++++++++++++++++++++++++++++++++++++++++++++++++
;+		タイマー点数表示		+
;++++++++++++++++++++++++++++++++++++++++++++++++
GMPS_TIMER	EQU	$
		STZ	<WORK18
		LDY	#000
		STZ	<WORK0
		LDA	>TIMER
		BEQ	GMPS_TIMER_060
GMPS_TIMER_020	EQU	$
		CMP	#TIMER_DEC
		BCC	GMPS_TIMER_040
		SEC
		SBC	#TIMER_DEC
		INC	<WORK0
		BRA	GMPS_TIMER_020
;
GMPS_TIMER_040	EQU	$
		LDA	<WORK0
		CMP	#TIMER_MAX	; ＭＡＸ以上あるか ?
		BCC	GMPS_TIMER_060	;	NO -> GMPS_TIMER_060
		LDA	#00400H
		STA	<WORK18
		LDA	#TIMER_MAX
GMPS_TIMER_060	EQU	$
		STA	<WORK0
GMPS_TIMER_070	EQU	$
		CMP	#00010
		BCC	GMPS_TIMER_080
		SBC	#00010
		INY
		BRA	GMPS_TIMER_070
;
GMPS_TIMER_080	EQU	$
		ASL	A
		TAX
		PHX
		PHY
;
		LDX	#000
		TXY
GMPS_TIMER_085	EQU	$		; 基本キャラクター
		PHX
		LDA	>GMGOAL_SCR1,X
		AND	#000FFH
		TAX
		LDA	>GMGOAL_MJ_DAT0,X
		ORA	<WORK18
		STA	!PAUSE_SCR+(20H*07H+04H)*2,Y
		LDA	>GMGOAL_MJ_DAT1,X
		ORA	<WORK18
		STA	!PAUSE_SCR+(20H*08H+04H)*2,Y
		PLX
		INY
		INY
		INX
		CPX	#GMGOAL_SCR2-GMGOAL_SCR1
		BCC	GMPS_TIMER_085
;
		PLY
		PLX
		LDA	#PAUSE_SCR+(20H*07H+11H)*2
		STA	<WORK10
		LDA	#PAUSE_SCR+(20H*07H+18H)*2
		STA	<WORK12
		LDA	#PAUSE_SCR+(20H*08H+11H)*2
		STA	<WORK14
		LDA	#PAUSE_SCR+(20H*08H+18H)*2
		STA	<WORK16
		JSR	GMPS_COL_IN_SB
		RTS
;
;++++++++++++++++++++++++++++++++++++++++++++++++
;+		コイン点数表示			+
;++++++++++++++++++++++++++++++++++++++++++++++++
GMPS_COIN	EQU	$
		STZ	<WORK18
		LDY	#000
		LDA	>CORS_COIN
		CMP	#COIN_MAX	; ＭＡＸ以上あるか ?
		BCC	GMPS_CIN_020	;	NO -> GMPS_CIN_020
		LDA	#00400H
		STA	<WORK18
		LDA	#COIN_MAX
GMPS_CIN_020	EQU	$
		STA	<WORK2
GMPS_CIN_040	EQU	$
		CMP	#00010
		BCC	GMPS_CIN_060
		SBC	#00010
		INY
		BRA	GMPS_CIN_040
;
GMPS_CIN_060	EQU	$
		ASL	A
		TAX
		PHX
		PHY
;
		LDX	#000
		TXY
GMPS_CIN_085	EQU	$		; 基本キャラクター
		PHX
		LDA	>GMGOAL_SCR2,X
		AND	#000FFH
		TAX
		LDA	>GMGOAL_MJ_DAT0,X
		ORA	<WORK18
		STA	!PAUSE_SCR+(20H*0AH+04H)*2,Y
		LDA	>GMGOAL_MJ_DAT1,X
		ORA	<WORK18
		STA	!PAUSE_SCR+(20H*0BH+04H)*2,Y
		PLX
		INY
		INY
		INX
		CPX	#GMGOAL_SCR3-GMGOAL_SCR2
		BCC	GMPS_CIN_085
;
		PLY
		PLX
		LDA	#PAUSE_SCR+(20H*0AH+11H)*2
		STA	<WORK10
		LDA	#PAUSE_SCR+(20H*0AH+18H)*2
		STA	<WORK12
		LDA	#PAUSE_SCR+(20H*0BH+11H)*2
		STA	<WORK14
		LDA	#PAUSE_SCR+(20H*0BH+18H)*2
		STA	<WORK16
		JSR	GMPS_COL_IN_SB
		RTS
;
;++++++++++++++++++++++++++++++++++++++++++++++++
;+		フラワー点数表示		+
;++++++++++++++++++++++++++++++++++++++++++++++++
GMPS_FLOWER	EQU	$
		STZ	<WORK18
		LDA	>FRWR_P
		ASL	A
		TAX
		CPX	#005*2
		BCC	GMPS_FLWR_050
		LDA	#00400H
		STA	<WORK18
GMPS_FLWR_050	EQU	$
		PHX
;
		LDX	#000
		TXY
GMPS_FLWR_085	EQU	$		; 基本キャラクター
		PHX
		LDA	>GMGOAL_SCR3,X
		AND	#000FFH
		TAX
		LDA	>GMGOAL_MJ_DAT0,X
		ORA	<WORK18
		STA	!PAUSE_SCR+(20H*0DH+04H)*2,Y
		LDA	>GMGOAL_MJ_DAT1,X
		ORA	<WORK18
		STA	!PAUSE_SCR+(20H*0EH+04H)*2,Y
		PLX
		INY
		INY
		INX
		CPX	#GMGOAL_SCR4-GMGOAL_SCR3
		BCC	GMPS_FLWR_085
;
		PLX
		LDA	>GMGOAL_KAZ_DT0,X
		ORA	<WORK18
		STA	!PAUSE_SCR+(20H*0DH+13H)*2
		TXY
		BEQ	GMPS_FLWR_095
		STA	!PAUSE_SCR+(20H*0DH+18H)*2
GMPS_FLWR_095	EQU	$
		LDA	>GMGOAL_KAZ_DT1,X
		ORA	<WORK18
		STA	!PAUSE_SCR+(20H*0EH+13H)*2
		TXY
		BEQ	GMPS_FLWR_099
		STA	!PAUSE_SCR+(20H*0EH+18H)*2
GMPS_FLWR_099	EQU	$
		RTS
;
;++++++++++++++++++++++++++++++++++++++++++++++++
;+		合計点数表示			+
;++++++++++++++++++++++++++++++++++++++++++++++++
GMPS_TOTAL	EQU	$
		STZ	<WORK18
		LDY	#000
		LDA	>FRWR_P
		ASL	A
		STA	<WORKE
		ASL	A
		ASL	A
		ADC	<WORKE
		CLC
		ADC	<WORK0
		CLC
		ADC	<WORK2
		STA	<WORK0
		CMP	#00100		; １００点 ?
		BCC	GMPS_TTL_040	;	NO -> GMPS_TTL_040
;;;;K;;;;		LDA	#00400H
;;;;K;;;;		STA	<WORK18
		LDA	#(S100-S00)/2
		TAY
		INY
		BRA	GMPS_TTL_060
;
GMPS_TTL_040	EQU	$
		CMP	#00010
		BCC	GMPS_TTL_060
		SBC	#00010
		INY
		BRA	GMPS_TTL_040
;
GMPS_TTL_060	EQU	$
		ASL	A
		TAX
		LDA	#PAUSE_SCR+(20H*11H+18H)*2
		STA	<WORK10
		STA	<WORK12
		LDA	#PAUSE_SCR+(20H*12H+18H)*2
		STA	<WORK14
		STA	<WORK16
		JSR	GMPS_COL_IN_SB
		RTS
;
;++++++++++++++++++++++++++++++++++++++++++++++++
;+		ハイスコア点数表示		+
;++++++++++++++++++++++++++++++++++++++++++++++++
GMPS_HI_SCORE	EQU	$
		LDY	#000
		LDA	>MAPOINT
		TAX
		LDA	>HISCEBF,X
		AND	#000FFH
		CMP	<WORK0
		BCS	GMPS_HI_020
		LDA	<WORK0
GMPS_HI_020	EQU	$
		CMP	#00100		; １００点 ?
		BCC	GMPS_HI_040	;	NO -> GMPS_HI_040
		LDA	#(S100-S00)/2
		TAY
		INY
		BRA	GMPS_HI_060
GMPS_HI_040	EQU	$
		CMP	#00010
		BCC	GMPS_HI_060
		SBC	#00010
		INY
		BRA	GMPS_HI_040
;
GMPS_HI_060	EQU	$
		ASL	A
		TAX
		LDA	#PAUSE_SCR+(20H*14H+18H)*2
		STA	<WORK10
		STA	<WORK12
		LDA	#PAUSE_SCR+(20H*15H+18H)*2
		STA	<WORK14
		STA	<WORK16
		STZ	<WORK18
		JSR	GMPS_COL_IN_SB
		RTS
;
;++++++++++++++++++++++++++++++++++++++++++++++++
;+	アイテム セレクト イニシャルセット	+
;++++++++++++++++++++++++++++++++++++++++++++++++
ITEM_INIT	EQU	$
		PHB
		PHK
		PLB
		STZ	!ITEMDSP+0
		STZ	!ITEMDSP+1
		M8			; memory 8bit mode
		LDA	!ITEMBUF	; アイテム 持っているか ?
		BEQ	ITMINT_020	;	NO -> ITMINT_020
;
		LDY	#000H
		LDA	!ITEMPNT
		BNE	ITMINT_010
		STZ	!ITMBFPOS
		INC	!ITEMPNT
ITMINT_010	EQU	$		; アイテムＮＯ. セット
		LDX	!ITMBFPOS
;
ITMINT_015	EQU	$
		LDA	!ITEMBUF,X	; 表示用バッファ セット
		STA	!ITEMDSP,Y
		INX
		INY
		CPY	#003
		BCC	ITMINT_015
;
		M16			; memory 16bit mode
		JSR	ITEM_CORSL_SUB
;
ITMINT_020	EQU	$
		M16			; memory 16bit mode
		PLB
		RTS
;
;++++++++++++++++++++++++++++++++++++++++++++++++
;+		メーター			+
;++++++++++++++++++++++++++++++++++++++++++++++++
GMPS_TIM_DT_UP	EQU	$
		WORD	01DA8H,01D80H,01D82H,01D84H,01D86H
		WORD	01D88H,01DA0H,01DA2H,01DA4H,01DA6H
;
GMPS_TIM_DT_DWN EQU	$
		WORD	01DB8H,01D90H,01D92H,01D94H,01D96H
		WORD	01D98H,01DB0H,01DB2H,01DB4H,01DB6H
;
;
GMPS_MATER	EQU	$
		LDX	#000
GMPS_MTR_020	EQU	$
		LDA	#09D8BH
		STA	!PAUSE_SCR+(20H*17H+00H)*2,X
		LDA	#01D8BH
		STA	!PAUSE_SCR+(20H*1AH+00H)*2,X
		LDA	#009AFH
		STA	!PAUSE_SCR+(20H*18H+00H)*2,X
		STA	!PAUSE_SCR+(20H*19H+00H)*2,X
		INX
		INX
		CPX	#020H*2
		BCC	GMPS_MTR_020
;
		LDA	#0098CH			; " ヨッシー "
		STA	!PAUSE_SCR+(20H*18H+01H)*2
		INC	A
		STA	!PAUSE_SCR+(20H*18H+02H)*2
		INC	A
		STA	!PAUSE_SCR+(20H*19H+01H)*2
		INC	A
		STA	!PAUSE_SCR+(20H*19H+02H)*2
;
		LDX	#000
		TXY
		LDA	>PLCONT			; 残り人数
GMPS_MTR_040	EQU	$
		CMP	#00100		;１００以上 ?
		BCC	GMPS_MTR_043	;	NO -> GMPS_MTR_043
		SBC	#00100
		INY
		BRA	GMPS_MTR_040
GMPS_MTR_043	EQU	$
		CMP	#00010		;１０以上 ?
		BCC	GMPS_MTR_045	;	NO -> GMPS_MTR_045
		SBC	#00010
		INX
		BRA	GMPS_MTR_043
GMPS_MTR_045	EQU	$
		CPY	#000
		BNE	GMPS_MTR_049
		TXY
		TAX
		LDA	#010
		CPY	#000
		BNE	GMPS_MTR_049
		TXY
		TAX
		LDA	#010
GMPS_MTR_049	EQU	$
		ORA	#00DC0H
		STA	!PAUSE_SCR+(20H*19H+05H)*2
		TXA
		ORA	#00DC0H
		STA	!PAUSE_SCR+(20H*19H+04H)*2
		TYA
		ORA	#00DC0H
		STA	!PAUSE_SCR+(20H*19H+03H)*2
;
		LDA	#00DD2H			; " コイン "
		STA	!PAUSE_SCR+(20H*18H+06H)*2
		INC	A
		STA	!PAUSE_SCR+(20H*18H+07H)*2
		INC	A
		STA	!PAUSE_SCR+(20H*19H+06H)*2
		INC	A
		STA	!PAUSE_SCR+(20H*19H+07H)*2
;
		LDX	#000
		LDA	>COIN_CNT		; コイン枚数
GMPS_MTR_060	EQU	$
		CMP	#00010
		BCC	GMPS_MTR_065
		SBC	#00010
		INX
		BRA	GMPS_MTR_060
GMPS_MTR_065	EQU	$
		CPX	#000
		BNE	GMPS_MTR_069
		TAX
		LDA	#010
GMPS_MTR_069	EQU	$
		ORA	#00DC0H
		STA	!PAUSE_SCR+(20H*19H+09H)*2
		TXA
		ORA	#00DC0H
		STA	!PAUSE_SCR+(20H*19H+08H)*2
;
		LDA	#00DCBH			; " スター "
		STA	!PAUSE_SCR+(20H*18H+0BH)*2
		INC	A
		STA	!PAUSE_SCR+(20H*18H+0CH)*2
		INC	A
		STA	!PAUSE_SCR+(20H*19H+0BH)*2
		INC	A
		STA	!PAUSE_SCR+(20H*19H+0CH)*2
;
		LDA	>TIMER_HI		; タイマー 十の位
		ASL	A
		TAX
		LDA	>GMPS_TIM_DT_UP,X
		STA	!PAUSE_SCR+(20H*18H+0DH)*2
		INC	A
		STA	!PAUSE_SCR+(20H*18H+0EH)*2
		LDA	>GMPS_TIM_DT_DWN,X
		STA	!PAUSE_SCR+(20H*19H+0DH)*2
		INC	A
		STA	!PAUSE_SCR+(20H*19H+0EH)*2
;
		LDA	>TIMER_MID		; タイマー 一の位
		ASL	A
		TAX
		LDA	>GMPS_TIM_DT_UP,X
		STA	!PAUSE_SCR+(20H*18H+0FH)*2
		INC	A
		STA	!PAUSE_SCR+(20H*18H+10H)*2
		LDA	>GMPS_TIM_DT_DWN,X
		STA	!PAUSE_SCR+(20H*19H+0FH)*2
		INC	A
		STA	!PAUSE_SCR+(20H*19H+10H)*2
;
		JSR	ITEM_WAKU
;
		M8			; memory 8bit mode
		PHB
		PHK
		PLB
		JSR	LTRTARWST
		PLB
		M16			; memory 16bit mode
;
		RTS
;
;++++++++++++++++++++++++++++++++++++++++
;+		点数セット		+
;+		in			+
;+		X <- read data index	+
;+		Y <-	"       "	+
;+		wk10,11 : buffer address+
;+		  12,13 :	"       +
;+		  14,15 :	"       +
;+		  16,17 :	"       +
;+		  18,19 : アトリビュート+
;++++++++++++++++++++++++++++++++++++++++
GMPS_COL_IN_SB	EQU	$
		PHY
		LDY	#002
		LDA	>GMGOAL_KAZ_DT0,X
		ORA	<WORK18
		STA	(<WORK10),Y
		STA	(<WORK12),Y
		LDA	>GMGOAL_KAZ_DT1,X
		ORA	<WORK18
		STA	(<WORK14),Y
		STA	(<WORK16),Y
		PLY
		BEQ	GMPS_COL_IN_PS
		TYA
		ASL	A
		TAX
		LDA	>GMGOAL_KAZ_DT0,X
		ORA	<WORK18
		STA	(<WORK10)
		STA	(<WORK12)
		LDA	>GMGOAL_KAZ_DT1,X
		ORA	<WORK18
		STA	(<WORK14)
		STA	(<WORK16)
GMPS_COL_IN_PS	EQU	$
		RTS
;
;++++++++++++++++++++++++++++++++
;+	アイテム枠 セット	+
;++++++++++++++++++++++++++++++++
ITEM_WAKU	EQU	$
		LDA	#01DACH
		STA	!PAUSE_SCR+(20H*17H+14H)*2
		LDA	#01D9CH
		STA	!PAUSE_SCR+(20H*18H+14H)*2
		STA	!PAUSE_SCR+(20H*19H+14H)*2
		LDA	#09DACH
		STA	!PAUSE_SCR+(20H*1AH+14H)*2
		LDA	#01DADH
		STA	!PAUSE_SCR+(20H*17H+15H)*2
		STA	!PAUSE_SCR+(20H*17H+18H)*2
		STA	!PAUSE_SCR+(20H*17H+1BH)*2
		LDA	#05DADH
		STA	!PAUSE_SCR+(20H*17H+16H)*2
		STA	!PAUSE_SCR+(20H*17H+19H)*2
		STA	!PAUSE_SCR+(20H*17H+1CH)*2
		LDA	#09DADH
		STA	!PAUSE_SCR+(20H*1AH+15H)*2
		STA	!PAUSE_SCR+(20H*1AH+18H)*2
		STA	!PAUSE_SCR+(20H*1AH+1BH)*2
		LDA	#0DDADH
		STA	!PAUSE_SCR+(20H*1AH+16H)*2
		STA	!PAUSE_SCR+(20H*1AH+19H)*2
		STA	!PAUSE_SCR+(20H*1AH+1CH)*2
		LDA	#01DAEH
		STA	!PAUSE_SCR+(20H*17H+17H)*2
		STA	!PAUSE_SCR+(20H*17H+1AH)*2
		LDA	#09DAEH
		STA	!PAUSE_SCR+(20H*1AH+17H)*2
		STA	!PAUSE_SCR+(20H*1AH+1AH)*2
		LDA	#01D9EH
		STA	!PAUSE_SCR+(20H*18H+17H)*2
		STA	!PAUSE_SCR+(20H*18H+1AH)*2
		STA	!PAUSE_SCR+(20H*19H+17H)*2
		STA	!PAUSE_SCR+(20H*19H+1AH)*2
		LDA	#05DACH
		STA	!PAUSE_SCR+(20H*17H+1DH)*2
		LDA	#05D9CH
		STA	!PAUSE_SCR+(20H*18H+1DH)*2
		STA	!PAUSE_SCR+(20H*19H+1DH)*2
		LDA	#0DDACH
		STA	!PAUSE_SCR+(20H*1AH+1DH)*2
		LDA	#0117FH
		STA	!PAUSE_SCR+(20H*18H+15H)*2
		STA	!PAUSE_SCR+(20H*19H+15H)*2
		STA	!PAUSE_SCR+(20H*18H+16H)*2
		STA	!PAUSE_SCR+(20H*19H+16H)*2
		STA	!PAUSE_SCR+(20H*18H+18H)*2
		STA	!PAUSE_SCR+(20H*19H+18H)*2
		STA	!PAUSE_SCR+(20H*18H+19H)*2
		STA	!PAUSE_SCR+(20H*19H+19H)*2
		STA	!PAUSE_SCR+(20H*18H+1BH)*2
		STA	!PAUSE_SCR+(20H*19H+1BH)*2
		STA	!PAUSE_SCR+(20H*18H+1CH)*2
		STA	!PAUSE_SCR+(20H*19H+1CH)*2
		RTS
;
;
;************************************************************************
;*		VRAMDX set sub						*
;*			in  : (A) <-- VRAM address( <0:VRAM read )	*
;*			      (Y) <-- number of byte			*
;************************************************************************
;
		MEM16
		IDX16
;
VRMDXST		EQU	$
		PHB			;(DBR) save
		PEA	VRAMDX/100H
		PLB
		PLB			;(DBR) <-- VRAMDX(B)
;
		LDX	VRAMDX
		STA	0,X		;VRAM address set
		ASL	A		;(C) <-- VRAM read ?
		LDA	#10000000B
		STA	2,X		;inc mode set
		LDA	#BANK WORKBF
		STA	7,X		;A bus address(H,B) set
		TYA
		STA	8,X		;number of byte set
		LDA	#10000001B+(39H*100H)
		LDY	#WORKBF
		BCS	VRXS010		;VRAM read ? ( yes:VRXS010 )
;
		LDA	#00000001B+(18H*100H)
		INY
		INY
VRXS010		EQU	$
		STA	3,X		;inc mode & DMA parameter set
		TYA
		STA	5,X		;B bus address & A bus addres(L) set
;
		TXA
		CLC
		ADC	#12
		STA	10,X		;next data address set
		STA	VRAMDX		;end address set
;
		MI8
;
		PLB		;(DBR) load
		RTS
;
;************************************************************************
;*		initial H-DAM set					*
;************************************************************************
GRADATION_ADRS	EQU	$-(10H*4)			     ;[NUKINO]
		WORD	BANK COL_ADDRESS+GRADATION_COL_0 ;[10]
		WORD	     COL_ADDRESS+GRADATION_COL_0
		WORD	BANK COL_ADDRESS+GRADATION_COL_1 ;[11]
		WORD	     COL_ADDRESS+GRADATION_COL_1
		WORD	BANK COL_ADDRESS+GRADATION_COL_2 ;[12]
		WORD	     COL_ADDRESS+GRADATION_COL_2
		WORD	BANK COL_ADDRESS+GRADATION_COL_3 ;[13]
		WORD	     COL_ADDRESS+GRADATION_COL_3
		WORD	BANK COL_ADDRESS+GRADATION_COL_4 ;[14]
		WORD	     COL_ADDRESS+GRADATION_COL_4
		WORD	BANK COL_ADDRESS+GRADATION_COL_5 ;[15]
		WORD	     COL_ADDRESS+GRADATION_COL_5
		WORD	BANK COL_ADDRESS+GRADATION_COL_6 ;[16]
		WORD	     COL_ADDRESS+GRADATION_COL_6
		WORD	BANK COL_ADDRESS+GRADATION_COL_7 ;[17]
		WORD	     COL_ADDRESS+GRADATION_COL_7
		WORD	BANK COL_ADDRESS+GRADATION_COL_8 ;[18]
		WORD	     COL_ADDRESS+GRADATION_COL_8
		WORD	BANK COL_ADDRESS+GRADATION_COL_9 ;[19]
		WORD	     COL_ADDRESS+GRADATION_COL_9
		WORD	BANK COL_ADDRESS+GRADATION_COL_A ;[1A]
		WORD	     COL_ADDRESS+GRADATION_COL_A
		WORD	BANK COL_ADDRESS+GRADATION_COL_B ;[1B]
		WORD	     COL_ADDRESS+GRADATION_COL_B
		WORD	BANK COL_ADDRESS+GRADATION_COL_C ;[1C]
		WORD	     COL_ADDRESS+GRADATION_COL_C
		WORD	BANK COL_ADDRESS+GRADATION_COL_D ;[1D]
		WORD	     COL_ADDRESS+GRADATION_COL_D
		WORD	BANK COL_ADDRESS+GRADATION_COL_E ;[1E]
		WORD	     COL_ADDRESS+GRADATION_COL_E
		WORD	BANK COL_ADDRESS+GRADATION_COL_F ;[1F]
		WORD	     COL_ADDRESS+GRADATION_COL_F
;
INHDMA		EQU	$
;
		M16			; memory 16bit mode
		LDA	#HDMABUF
		STA	!HDMABFADR
		LDA	#HDMABF
		STA	!M_HDMADR
		LDA	#HDMAPR3
		STA	!PRMTRADR
		M8			; memory 8bit mode
;
		LDX	#04
IHD010		EQU	$
		LDA	!HDMAP0,X	;spacial window
		STA	4350H,X
		LDA	!HDMAP1,X	;グラデーションカラー
		STA	4320H,X
		LDA	!HDMAP2,X	;	  ”
		STA	4310H,X
;
		LDA	!HDMAP3,X	;H-DMA test
		STA	4340H,X
		LDA	!HDMAP4,X	;obake test
		STA	4330H,X
;
		LDA	HDMAPRMTR0,X	; test
		STA	4360H,X		; test
		LDA	HDMAPRMTR1,X	; test
		STA	4370H,X		; test
;
		DEX
		BPL	IHD010
;
		LDA	#BANK WINDBUF
		STA	4357H
;
		LDA	#BANK HDMABUF	; test
		STA	4337H		; test
		STA	4347H		; test
		STA	4367H		; test
		STA	4377H		; test
;
		LDA	#BANK NUKCOL_BF_RG
		STA	4327H
		STA	4317H
;
		LDX	#HDMAPD0E-HDMAPD0-1
IHD020		EQU	$
		LDA	!HDMAPD0,X
		STA	>HDMAPR0,X
		LDA	!HDMAPD1,X
		STA	>HDMAPR1,X
		LDA	!HDMAPD2,X
		STA	>HDMAPR2,X
		LDA	!HDMAPD3,X
		STA	>HDMAPR3,X
		LDA	!HDMAPD4,X
		STA	>HDMAPR4,X
		DEX
		BPL	IHD020
;
;-------------- グラデーションカラーセット ------------------------------
		LDX	#00		;(X) <-- H-DMA "ON" flag set data
		LDA	NUKINO
		CMP	#10H
		BCC	IHD030		;グラデーションカラーセット？ ( no:IHD030 )
;
		ASL	A
		ASL	A
		TAY
;
		M16
;
		LDA	!GRADATION_ADRS,Y
		STA	R0		;(R0) <-- カラーパターンアドレス(B)
		LDA	!GRADATION_ADRS+2,Y
		STA	R1		;(R1) <--	    ”		(L,H)
		M_CHIP	GRADATION_SET
;
		LDA	#NUKCOL_BF_B	;to memory address set
		STA	<WORK20
		LDY	#BANK NUKCOL_BF_B
		STY	<WORK22
		LDA	#WOB7CHR	;from memory address set
		STA	<WORK23
		LDY	#BANK WOB7CHR
		STY	<WORK25
		LDA	#NUKCOL_BF_NO*3 ;(A) <-- number of byte set
		JSL	>DMA_M_M	;DMA "ON"
;
		M8
;
		LDX	#00000110B	;グラデーションＨ−ＤＭＡ”ＯＮ”
IHD030		EQU	$
		STX	HD420C
		RTS
;
;-------------- spacial window H-DMA parameter data -------------
HDMAP0		EQU	$
		BYTE	01000100B	;DMA control parameter
		BYTE	26H		;    B bus address
		BYTE	LOW  HDMAPR0	;    A	    "     (L)
		BYTE	HIGH HDMAPR0	;	    "     (H)
		BYTE	BANK HDMAPR0	;	    "     (B)
;
HDMAPD0		EQU	$
		BYTE	69H+80H		;line no.
		WORD	WINDBUF
		BYTE	69H+80H		;line no.
		WORD	WINDBUF+(69H*4)
		HEX	00		;end code
HDMAPD0E	EQU	$
;
;-------------- グラデーションカラー H-DMA parameter data -------
HDMAP1		EQU	$
		BYTE	01000010B	;DMA control parameter
		BYTE	32H		;    B bus address
		BYTE	LOW  HDMAPR1	;    A	    "     (L)
		BYTE	HIGH HDMAPR1	;	    "     (H)
		BYTE	BANK HDMAPR1	;	    "     (B)
;
HDMAPD1		EQU	$
		BYTE	69H+80H		;line no.
		WORD	NUKCOL_BF_RG
		BYTE	69H+80H		;line no.
		WORD	NUKCOL_BF_RG+(69H*2)
		HEX	00		;end code
;
HDMAP2		EQU	$
		BYTE	01000000B	;DMA control parameter
		BYTE	32H		;    B bus address
		BYTE	LOW  HDMAPR2	;    A	    "     (L)
		BYTE	HIGH HDMAPR2	;	    "     (H)
		BYTE	BANK HDMAPR2	;	    "     (B)
;
HDMAPD2		EQU	$
		BYTE	69H+80H		;line no.
		WORD	NUKCOL_BF_B
		BYTE	69H+80H		;line no.
		WORD	NUKCOL_BF_B+(69H*2)
		HEX	00		;end code
;
;-------------- H-DMA test H-DMA parameter data -----------------
HDMAP3		EQU	$
		BYTE	01000010B	;DMA control parameter
		BYTE	12H		;	B bus address
		BYTE	LOW  HDMAPR3	;	A      "     (L)
		BYTE	HIGH HDMAPR3	;	       "     (H)
		BYTE	BANK HDMAPR3	;	       "     (B)
;
HDMAPD3		EQU	$
		BYTE	69H+80H		;line no.
		WORD	HDMABUF
		BYTE	69H+80H		;line no.
		WORD	HDMABUF+(69H*2)
		HEX	00		;end code
;
;-------------- H-DMA test H-DMA parameter data -----------------
HDMAP4		EQU	$
		BYTE	01000010B	;DMA control parameter
		BYTE	11H		;	B bus address
		BYTE	LOW  HDMAPR4	;	A      "     (L)
		BYTE	HIGH HDMAPR4	;	       "     (H)
		BYTE	BANK HDMAPR4	;	       "     (B)
;
HDMAPD4		EQU	$
		BYTE	69H+80H		;line no.
		WORD	HDMABUF2
		BYTE	69H+80H		;line no.
		WORD	HDMABUF2+(69H*2)
		HEX	00		;end code
;
;
;****************************************************************
;*								*
;*		特殊 ＨＤＭＡ パラメータ データ			*
;*								*
;****************************************************************
HDMAPRMTR	EQU	$
;
;-------------- H-DMA parameter data ( water ) ------------------
HDMAPRMTR0	EQU	$
		BYTE	00000001B	;DMA control parameter
		BYTE	2CH		;    B bus address
		BYTE	LOW  HDMABUF2	; Ａバス バンクアドレス (L)
		BYTE	HIGH HDMABUF2	;	"       "	(H)
		BYTE	BANK HDMABUF2	;	"       "	(B)
;
;-------------- ＢＧ３特殊スクロール ----------------------------
HDMAPRMTR1	EQU	$
		BYTE	00000011B	;DMA control parameter
		BYTE	11H		;    B bus address
		BYTE	LOW  HDMABUF0	; Ａバス バンクアドレス (L)
		BYTE	HIGH HDMABUF0	;	"       "	(H)
		BYTE	BANK HDMABUF0	;	"       "	(B)
;
;-------------- ＢＧ３縦のラスタースクロール --------------------
HDMAPRMTR2	EQU	$
		BYTE	01000010B	;DMA control parameter
		BYTE	12H		;    B bus address
		BYTE	BANK HDMAPR0	; Ａバス バンクアドレス
		BYTE	BANK HDMABUF	; Ｂバス バンクアドレス
		WORD	000D2H*2	; バッファ使用 バイト数
		BYTE	prmtr2_byte	; パラメータ使用 バイト数
		WORD	prmtr2
;
;-------------- ＢＧ３ラスター＆部分スクロール ------------------
HDMAPRMTR3	EQU	$
		BYTE	01000010B	;DMA control parameter
		BYTE	11H		;    B bus address
		BYTE	BANK HDMAPR0	; Ａバス バンクアドレス
		BYTE	BANK HDMABUF	; Ｂバス バンクアドレス
		WORD	000D2H*2	; バッファ使用 バイト数
		BYTE	prmtr2_byte	; パラメータ使用 バイト数
		WORD	prmtr2
;
;-------------- ＢＧ２ラスター＆部分スクロール ------------------
HDMAPRMTR4	EQU	$
		BYTE	01000010B	;DMA control parameter
		BYTE	0FH		;    B bus address
		BYTE	BANK HDMAPR2	; Ａバス バンクアドレス
		BYTE	BANK HDMABUF2	; Ｂバス バンクアドレス
		WORD	000D2H*2	; バッファ使用 バイト数
		BYTE	prmtr2_byte	; パラメータ使用 バイト数
		WORD	prmtr2
;
;-------------- ＢＧ２縦のラスタースクロール --------------------
HDMAPRMTR5	EQU	$
		BYTE	01000010B	;DMA control parameter
		BYTE	10H		;    B bus address
		BYTE	BANK HDMAPR1	; Ａバス バンクアドレス
		BYTE	BANK HDMABUF	; Ｂバス バンクアドレス
		WORD	000D2H*2	; バッファ使用 バイト数
		BYTE	prmtr2_byte	; パラメータ使用 バイト数
		WORD	prmtr2
;
;-------------- 画面指定の制御 ----------------------------------
HDMAPRMTR6	EQU	$
		BYTE	01000001B	;DMA control parameter
		BYTE	2CH		;    B bus address
		BYTE	BANK HDMAPR1	; Ａバス バンクアドレス
		BYTE	BANK HDMABUF	; Ｂバス バンクアドレス
		WORD	000D2H*2	; バッファ使用 バイト数
		BYTE	prmtr2_byte	; パラメータ使用 バイト数
		WORD	prmtr2
;
;-------------- 画面の加算の制御 --------------------------------
HDMAPRMTR7	EQU	$
		BYTE	01000001B	;DMA control parameter
		BYTE	30H		;    B bus address
		BYTE	BANK HDMAPR1	; Ａバス バンクアドレス
		BYTE	BANK HDMABUF	; Ｂバス バンクアドレス
		WORD	000D2H*2	; バッファ使用 バイト数
		BYTE	prmtr2_byte	; パラメータ使用 バイト数
		WORD	prmtr2
;
;-------------- 間接方式のパラメータ ----------------------------
prmtr0		EQU	$
;
prmtr1		EQU	$
		BYTE	69H+80H
		WORD	00000H
		BYTE	69H+80H
		WORD	00000H+(69H*4)
		HEX	000		; エンド コード
;
prmtr2		EQU	$
		BYTE	69H+80H
		WORD	00000H
		BYTE	69H+80H
		WORD	00000H+(69H*2)
		HEX	000		; エンド コード
;
prmtr3		EQU	$
;
prmtr0_byte	EQU	prmtr1-prmtr0
prmtr1_byte	EQU	prmtr2-prmtr1
prmtr2_byte	EQU	prmtr3-prmtr2
;
;
PRMTR0		EQU	HDMAPRMTR0-HDMAPRMTR
PRMTR1		EQU	HDMAPRMTR1-HDMAPRMTR
PRMTR2		EQU	HDMAPRMTR2-HDMAPRMTR
PRMTR3		EQU	HDMAPRMTR3-HDMAPRMTR
PRMTR4		EQU	HDMAPRMTR4-HDMAPRMTR
PRMTR5		EQU	HDMAPRMTR5-HDMAPRMTR
PRMTR6		EQU	HDMAPRMTR6-HDMAPRMTR
PRMTR7		EQU	HDMAPRMTR7-HDMAPRMTR
;
;
;****************************************************************
;*								*
;*		ＨＤＭＡ イニシャル セット			*
;*				in				*
;*				X <- data read index		*
;*				out				*
;*				A <- 使用チャンネル ＮＯ.４〜７ *
;****************************************************************
		MEM16
		IDX16
HDMA_INIT	EQU	$
		PHY
		PHB
		PHK
		PLB
;
		LDA	#00008H
		STA	<WORK0
		LDY	#00000H
HDMA_INIT_000	EQU	$		; チャンネル サーチ !!
		LDA	!HDMACHNL,Y	;
		BEQ	HDMA_INIT_010	;
		ASL	<WORK0		;
		INY			;
		INY			;
		CPY	#00004*2	;
		BCC	HDMA_INIT_000	;
;
HDMA_INIT_LOP	EQU	$
		BRA	HDMA_INIT_LOP
;
HDMA_INIT_010	EQU	$
		LDA	<WORK0
		STA	!HDMACHNL,Y
		STY	<WORK0
		TYA
		ASL	A
		ASL	A
		ASL	A
		TAY
;
		LDA	HDMAPRMTR,X
		STA	4330H,Y
		M8			; memory 8bit mode
		LDA	HDMAPRMTR+2,X	; Ａバス
		STA	4334H,Y		;   バンク セット
		STA	<WORK7
		LDA	HDMAPRMTR+3,X	; Ｂバス
		STA	4337H,Y		;   バンク セット
		M16			; memory 16bit mode
;
		LDA	HDMAPRMTR+4,X
		STA	<WORKE		; バッファ使用 バイト数
		LDA	HDMAPRMTR+6,X
		AND	#000FFH
		STA	<WORKA		; パラメータ使用 バイト数
		LDA	HDMAPRMTR+7,X
		STA	<WORK8
;
		LDA	HDMAPRMTR,X
		AND	#00040H
		ASL	A
		ASL	A
		ASL	A
		XBA
		TAX
		JSR	(HDMA_INIT_SET,X)
;
		CPX	#00007*2	; ラスト チャンネル セット ?
		BCS	HDMA_INIT_900	;	YES -> HDMA_INIT_900
;
		LDA	!M_HDMADR,X	; ＮＥＸＴ
		CLC			;  Ｍ＿ＣＨＩＰ
		ADC	<WORKE		;   ＨＤＭＡバッファ
		STA	!M_HDMADR+2,X	;    アドレス テーブル セット
;
		LDA	!HDMABFADR,X	; ＮＥＸＴ
		STA	<WORK2		;  ＳＦＣ ＨＤＭＡバッファ
		CLC			;   アドレス テーブル セット
		ADC	<WORKE		;
		STA	!HDMABFADR+2,X	;
;
		LDA	!PRMTRADR,X	; ＮＥＸＴ
		STA	<WORK5		;  ＳＦＣ パラメータバッファ
		CLC			;   アドレス テーブル セット
		ADC	<WORKA		;
		STA	!PRMTRADR+2,X	;
;
		LDA	<WORKA
		BEQ	HDMA_INIT_060
		LDY	#00000H
		DEC	<WORKA
HDMA_INIT_050	EQU	$		; パラメータバッファ セット !!
		LDA	(<WORK8),Y
		STA	[<WORK5],Y
		INY
		LDA	(<WORK8),Y
		CLC
		ADC	<WORK2
		STA	[<WORK5],Y
		INY
		INY
		DEC	<WORKA
		DEC	<WORKA
		DEC	<WORKA
		BNE	HDMA_INIT_050
		M8			; memory 8bit mode
		LDA	(<WORK8),Y
		STA	[<WORK5],Y
		M16			; memory 16bit mode
;
HDMA_INIT_060	EQU	$
;
HDMA_INIT_900	EQU	$
		LDA	<WORK0
		PLB
		PLY
		RTL
;
;
HDMA_INIT_SET	EQU	$
		WORD	HDMA_INIT_100
		WORD	HDMA_INIT_200
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+		絶対アドレス				+
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
HDMA_INIT_100	EQU	$
		LDX	<WORK0
		LDA	!HDMABFADR,X
		STA	4332H,Y
		RTS
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+		間接アドレス				+
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
HDMA_INIT_200	EQU	$
		LDX	<WORK0
		LDA	!PRMTRADR,X
		STA	4332H,Y
		RTS
		MEM8
		IDX8
;
;
;************************************************************************
;*		ＢＧ３特殊スクロールセット				*
;************************************************************************
;
SPACIAL		EQU	$
		M16			; memory 16bit mode
		LDA	!DSPCNTRLFG
		AND	#000FFH
		TAX
		BEQ	SPACIAL_000
		JSR	DISP_SET
;
;-------------- BG2 spacial screen set --------------------------
SPACIAL_000	EQU	$
		LDA	!BG2SPFV
		BEQ	BGP0FD_100
;
		AND	#00002H
		STA	R1
		LDA	!ESCCV2
		STA	R2
		LDA	!BG2SPV_CT
		STA	R3		; 幅 セット
		LDA	!BG2SPFV_ADR
		STA	R7
		LDA	#BANK BG2_SCR_DATA
		STA	R8
		LDY	!BG2SPVON
		LDA	!M_HDMADR,Y
		STA	R10
		LDA	!ENSTFG
		AND	#000FFH
		STA	R11		; アニメーション ストップ フラグ
		LDX	#BANK BG2VSCSP
		LDA	#BG2VSCSP
		JSL	>CHIPON
;
		LDY	!BG2SPVON
		LDX	#BANK HDMABUF
		STX	<WORK2
		LDA	!HDMABFADR,Y
		STA	<WORK0		; 転送先アドレス
		LDX	#BANK HDMABF
		STX	<WORK5
		LDA	!M_HDMADR,Y
		STA	<WORK3		; 転送元アドレス
		LDA	#000D2H*2	; 転送バイト数
		JSL	>M_DMA_BFST_K
;
		M8			; memory 8bit mode
		LDA	!HDMACHNL,Y
		TSB	HD420C
		M16			; memory 16bit mode
;
BGP0FD_100	EQU	$
		LDA	!BG2SPF
		BEQ	BGP0FD_500
		AND	#00002
		STA	R1
		LDA	!BG2SPH_CT
		STA	CCWORK0		; 幅 セット
		LDA	!ESCCV2
		STA	R2		;(R2) <-- スクロールカウンターＶ
		LDA	!BG2SPF_ADR
		STA	R3
		LDA	#BANK BG2_SCR_DATA
		STA	R4
		LDY	!BG2SPHON
		LDA	!M_HDMADR,Y
		STA	R10
		LDA	!ENSTFG
		AND	#000FFH
		STA	R11		; アニメーション ストップ フラグ
		LDX	#BANK BG2SCSP
		LDA	#BG2SCSP
		JSL	>CHIPON
;
		LDY	!BG2SPHON
		LDX	#BANK HDMABUF
		STX	<WORK2
		LDA	!HDMABFADR,Y
		STA	<WORK0		; 転送先アドレス
		LDX	#BANK HDMABF
		STX	<WORK5
		LDA	!M_HDMADR,Y
		STA	<WORK3		; 転送元アドレス
		LDA	#000D2H*2	; 転送バイト数
		JSL	>M_DMA_BFST_K
;
		M8			; memory 8bit mode
		LDA	!HDMACHNL,Y
		TSB	HD420C
;
;-------------- BG3 spacial screen set --------------------------
BGP0FD_500	EQU	$
		M8			; memory 8bit mode
		LDX	BG3SPF
		BNE	BGP0FD		;ＢＧ３特殊スクロール？ ( yes:BGP0FD )
;
		LDA	!BG3SPFH
		ORA	!BG3SPFV
		BEQ	BGP0FD_590
		JMP	BG3_PART_SCRL
;
BGP0FD_590	EQU	$
		RTS
;;;;;-------------- spacial window test -----------------------------
;;;;		    JMP	    SPWINDST
;;;;;----------------------------------------------------------------
;
BGP0FD		EQU	$
		M16			; memory 16bit mode
;
		LDA	ESCCV1-2,X
		STA	R2		;(R2) <-- スクロールカウンターＶ
		LDX	#BANK BG3SCSP
		LDA	#BG3SCSP
		JSL	>CHIPON
;
		LDA	R1		;(A) <-- 転送バイト数
		SEC
		SBC	#HDMABF0
		JSL	>M_DMA_BFST_N
		LWORD	HDMABUF0	;転送先アドレス
		LWORD	HDMABF0		;転送元アドレス
;
		LDA	BG3TYP
		CMP	#01H
		BEQ	BGP0FD2		;水中？ ( yes:BGP0FD2 )
;
		M8
;
		LDA	#10000000B	;H-DMA "ON"
		BRA	BGP040
;
;-------------- H-DMA data set ----------------------------------
;
		MEM16
;
BGP0FD2		EQU	$
		LDA	#0707H-8
		SEC
		SBC	<SCCV1
		BCS	BGP0FE		;all add ? ( no:BGP0FE )
;
		SEP	#00100000B	;memory 8 bit mode
		LDA	MANSEL
		BRA	BGP0FF
;
BGP0FE		EQU	$
		CMP	#00D2H
;
		M8
;
		BCC	BGP000		;add "ON" area nothing ? ( no:BGP000 )
		LDA	#00010111B	;[ main select BG3 "ON" ]
BGP0FF		EQU	$
		STA	>HDMABUF2+1	;not add set
		EOR	#00000100B
		AND	#00000100B
		STA	>HDMABUF2+2	;not add set
		LDA	#01H
		STA	>HDMABUF2	;line no.
		LDA	#00
		STA	>HDMABUF2+3	;end code
		BRA	BGP030
;
BGP000		EQU	$
		LDX	#00
		CMP	#80H
		BCC	BGP010		;data size over ? ( no:BGP010 )
;;;;		SEC
		SBC	#7FH
		PHA
		LDA	#7FH
		STA	>HDMABUF2,X	;line no.
		LDA	#00010111B	;[ main select BG3 "ON" ]
		STA	>HDMABUF2+1,X	;not add set
		LDA	#00
		STA	>HDMABUF2+2,X
		PLA
		INX
		INX
		INX
BGP010		EQU	$
		STA	>HDMABUF2,X	;line no.
		LDA	#01
		STA	>HDMABUF2+3,X	;add area set
		LDA	MANSEL
		STA	>HDMABUF2+4,X	;add set
		LDA	#00000100B
		STA	>HDMABUF2+5,X	;add set
		LDA	#00010111B	;[ main select BG3 "ON" ]
		STA	>HDMABUF2+1,X	;not add set
		LDA	#00
		STA	>HDMABUF2+2,X
		LDA	#00
		STA	>HDMABUF2+6,X	;end code
;
BGP030		EQU	$
		LDA	#11000000B	;H-DMA "ON"
BGP040		EQU	$
		TSB	HD420C
		RTS
;
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+		画面指定の制御 (ＨＤＭＡバッファセット)		+
;+				in				+
;+				X : スクロール値 read index	+
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
		MEM16
DISP_SET	EQU	$
		DEX
		LDA	<SCCV1,X
		STA	R2		; スクロール値
		LDA	#BANK DP_INT_DAT
		STA	R0		; バンク
		LDA	!DISP_ADR
		STA	R9		; データアドレス
		LDY	!DISP_ON
		LDA	!M_HDMADR,Y
		STA	R10		; バッファ アドレス
		LDX	#BANK DISP_CNTRL
		LDA	#DISP_CNTRL
		JSL	>CHIPON
;
		LDY	!DISP_ON
		LDX	#BANK HDMABUF
		STX	<WORK2
		LDA	!HDMABFADR,Y
		STA	<WORK0		; 転送先アドレス
		LDX	#BANK HDMABF
		STX	<WORK5
		LDA	!M_HDMADR,Y
		STA	<WORK3		; 転送元アドレス
		LDA	#000D2H*2	; 転送バイト数
		JSL	>M_DMA_BFST_K
;
		M8			; memory 8bit mode
		LDA	!HDMACHNL,Y
		TSB	HD420C
		M16			; memory 16bit mode
		RTS
		MEM8
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+		ＢＧ３部分スクロール				+
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
BG3_PART_SCRL	EQU	$
		LDA	!BG3SPFH
		BEQ	B3_PT_SL_500
		M16			; memory 16bit mode
		AND	#00002
		STA	R1
		LDA	!BG3SPH_CT
		STA	CCWORK0		; 幅 セット
		LDA	!ESCCV3
		STA	R2		;(R2) <-- スクロールカウンターＶ
		LDA	!BG3SPFH_ADR
		STA	R3
		LDA	#BANK BG3_SCR_DAT_ADR
		STA	R4
		LDY	!BG3SPHON
		LDA	!M_HDMADR,Y
		STA	R10
		LDA	!ENSTFG
		AND	#000FFH
		STA	R11		; アニメーション ストップ フラグ
		LDX	#BANK BG2SCSP
		LDA	#BG2SCSP
		JSL	>CHIPON
;
		LDY	!BG3SPHON
		LDX	#BANK HDMABUF
		STX	<WORK2
		LDA	!HDMABFADR,Y
		STA	<WORK0		; 転送先アドレス
		LDX	#BANK HDMABF
		STX	<WORK5
		LDA	!M_HDMADR,Y
		STA	<WORK3		; 転送元アドレス
;
		LDA	[<WORK3]
		STA	!ESCCH3
		STA	<SCCH3
;
		LDA	#000D2H*2	; 転送バイト数
		JSL	>M_DMA_BFST_K
;
		M8			; memory 8bit mode
		LDA	!HDMACHNL,Y
		TSB	HD420C
;
B3_PT_SL_500	EQU	$
		M16			; memory 16bit mode
		LDA	!BG3SPFV
		BEQ	B3_PT_SL_990
;
		AND	#00002H
		STA	R1
		LDA	!ESCCV3
		STA	R2
		LDA	!BG3SPV_CT
		STA	R3		; 幅 セット
		LDA	!BG3SPFV_ADR
		STA	R7
		LDA	#BANK BG3_SCR_DAT_ADR
		STA	R8
		LDY	!BG3SPVON
		LDA	!M_HDMADR,Y
		STA	R10
		LDA	!ENSTFG
		AND	#000FFH
		STA	R11		; アニメーション ストップ フラグ
		LDX	#BANK BG2VSCSP
		LDA	#BG2VSCSP
		JSL	>CHIPON
;
		LDY	!BG3SPVON
		LDX	#BANK HDMABUF
		STX	<WORK2
		LDA	!HDMABFADR,Y
		STA	<WORK0		; 転送先アドレス
		LDX	#BANK HDMABF
		STX	<WORK5
		LDA	!M_HDMADR,Y
		STA	<WORK3		; 転送元アドレス
		LDA	#000D2H*2	; 転送バイト数
		JSL	>M_DMA_BFST_K
;
		M8			; memory 8bit mode
		LDA	!HDMACHNL,Y
		TSB	HD420C
;
B3_PT_SL_990	EQU	$
		M8			; memory 8bit mode
		RTS
;
;************************************************************************
;*		オフセットモードタイプテーブル				*
;************************************************************************
BG2OFST_TBL	EQU	$-1
		WORD	BGOFST		;[1] 溶岩の波
		WORD	BGOFST_FURA	;[3] ”フラフラ”
;
;************************************************************************
;*		オフセットモード（”フラフラ”）			*
;************************************************************************
FURA_COLOR	EQU	$
		WORD	1402H,2000H,00E0H,00C3H,00A5H,0008H,0804H,1004H
;
BGOFST_FURA	EQU	$
		STZ	MANSEL
		LDA	#00010011B
		STA	SUBSEL
;
		M16
;
		LDA	ENSTFG
		BNE	BGOFST_FURA_FFF ;ＳＴＯＰ？ ( yes:BGOFST_FURA_FFF )
		LDA	FURA_FG
		BNE	BGOFST_FURA_000 ;”フラフラ”中？ ( yes:BGOFST_FURA_000 )
BGOFST_FURA_FFF EQU	$
		JMP	BGOFST_FURA_110
;
BGOFST_FURA_000 EQU	$
		DEC	A		;[ CMP #01H ]
		BNE	BGOFST_FURA_050 ;”フラフラ”終了？ ( no:BGOFST_FURA_050 )
;
;-------------- ”フラフラ”終了セット ----------------------------------
		LDA	MD2_FURA_CNT
		BEQ	BGOFST_FURA_010 ;床止まった？ ( yes:BGOFST_FURA_010 )
;
		SEC
		SBC	#0100H
		STA	MD2_FURA_CNT
		BPL	BGOFST_FURA_010
;
		STZ	MD2_FURA_CNT
BGOFST_FURA_010 EQU	$
		LDA	MD2_FURA_COL
		AND	#00FFH		;次のカラーセット？
		BEQ	BGOFST_FURA_013 ;	YES -> BGOFST_FURA_013
		JMP	BGOFST_FURA_090 ;	NO --> BGOFST_FURA_090
;
BGOFST_FURA_013 EQU	$
		LDA	>CHNGCOL
		BNE	BGOFST_FURA_020 ;カラー元に戻った？ ( no:BGOFST_FURA_020 )
;
		LDA	MD2_FURA_CNT	;”フラフラ”終了？
		BNE	BGOFST_FURA_015 ;	NO -> BGOFST_FURA_019
		STZ	FURA_FG
		STZ	!BG2SPH_CT
		STZ	!BG2SPV_CT
;
BGOFST_FURA_015 EQU	$
		AND	#00100H
		BNE	BGOFST_FURA_019
		DEC	!BG2SPH_CT
		BPL	BGOFST_FURA_018
		STZ	!BG2SPH_CT
BGOFST_FURA_018 EQU	$
		DEC	!BG2SPV_CT
		BPL	BGOFST_FURA_019
		STZ	!BG2SPV_CT
BGOFST_FURA_019 EQU	$
		JMP	BGOFST_FURA_100
;
BGOFST_FURA_020 EQU	$
		LDA	#00		;カラー元に戻す
		STA	>CHNGCOL
		BRA	BGOFST_FURA_080
;
;-------------- ”フラフラ”中 ------------------------------------------
BGOFST_FURA_050 EQU	$
		DEC	FURA_FG
;
		LDA	MD2_FURA_CNT
		CLC
		ADC	#080H
		CMP	#06000H
		BCC	BGOFST_FURA_060
;
		LDA	#06000H
BGOFST_FURA_060 EQU	$
		STA	MD2_FURA_CNT
;
		AND	#00380H
		BNE	BGOFST_FURA_065
		LDA	!BG2SPH_CT
		INC	A
		CMP	#00018H
		BCS	BGOFST_FURA_063
		STA	!BG2SPH_CT
BGOFST_FURA_063 EQU	$
		LDA	!BG2SPV_CT
		INC	A
		CMP	#0000CH
		BCS	BGOFST_FURA_065
		STA	!BG2SPV_CT
BGOFST_FURA_065 EQU	$
;
;-------------- ”フラフラ”カラーセット --------------------------------
BGOFST_FURA_070 EQU	$
		LDA	MD2_FURA_COL
		AND	#00FFH
		BNE	BGOFST_FURA_090 ;次のカラーセット？ ( no:BGOFST_FURA_090 )
;
		LDA	RANDM0
		AND	#07H*2
		TAX
		LDA	!FURA_COLOR,X
		STA	>CHNGCOL
BGOFST_FURA_080 EQU	$
		STZ	MD2_FURA_COL
		LDA	>DATACOL
		STA	>MOTOCOL
;
BGOFST_FURA_090 EQU	$
		LDA	MD2_FURA_COL
		CLC
		ADC	#08H
		STA	MD2_FURA_COL
		STA	R6		;(R6) <-- モーフィングカラー倍率
		LDA	>MOTOCOL
		STA	R1		;(R1) <-- 元カラー
		LDA	>CHNGCOL
		STA	R2		;(R2) <-- 先カラー
		M_CHIP	COL_MORF
;
		LDA	R3
		STA	>DATACOL	;モーフィングカラーセット
;
;-------------- オフセットデータセット ----------------------------------
BGOFST_FURA_100 EQU	$
		LDA	MD2_FURA_WAV
		CLC
		ADC	#020H
		STA	MD2_FURA_WAV
;
BGOFST_FURA_110 EQU	$
		LDA	MD2_FURA_CNT
		STA	R1		;(R1) <-- 振幅の幅
		LDA	MD2_FURA_WAV
		STA	R2		;(R2) <-- 波カウンター
		M_CHIP	BG2OFST_FURA
;
BGOFST_FURA_150 EQU	$
;
		M8
;
		RTS
;
;************************************************************************
;*		BG mode 2 offset set					*
;************************************************************************
BGOFST		EQU	$
;
;-------------- 溶岩の波 ------------------------------------------------
;
		M16			; memory 16bit mode
;
		LDA	ENSTFG
		BNE	BGOFST_010	;ＳＴＯＰ？ ( yes:BGOFST_010 )
;
		DEC	BG2SPD		;wave speed set
		DEC	BG2SPD
;
BGOFST_010	EQU	$
		LDA	!BG2SPD
		STA	R7
		LDA	<SCCH1
		STA	BG2OFH
		STA	R8
		LDA	<SCCV1
		STA	R9
;
		M_CHIP	YGNSUING
;
		M8			; memory 8bit mode
;
		RTS
;
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;x		meter initial set program				x
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
METERIT		EQU	$
		LDA	#00001
		STA	!TIMCNT
		RTS
;
		MEM16
;
;****************************************************************
;*								*
;*	タイマー １０ イニシャル パラメータ セツト		*
;*								*
;****************************************************************
TIME10_PRMT	EQU	$
		LDA	#100
TIME10_PRMT_050 EQU	$
		LDY	ITEM_WK
		BNE	TIME10_PRMT_100 ;初期セット？ ( no:TIME10_PRMT_050 )
;
		CLC
		ADC	!TIMCNT_UP
		STA	!TIMCNT_UP
		CLC
		ADC	#60*2		;強制ＯＢＪタイマー表示！！
		STA	OBJ_TIMER_DISP
		INC	ITEM_WK
		RTS
;
TIME10_PRMT_100 EQU	$
		LDA	TIMCNT_UP
		BNE	TIME10_PRMT_150 ;タイマーｕｐ終了？ ( no:TIME10_PRMT_150 )
;
		STZ	ITEMNO
TIME10_PRMT_150 EQU	$
		RTS
;
;****************************************************************
;*								*
;*	タイマー ２０ イニシャル パラメータ セツト		*
;*								*
;****************************************************************
TIME20_PRMT	EQU	$
		LDA	#200
		BRA	TIME10_PRMT_050
;
;****************************************************************
;*								*
;*		どこでもＰＯＷ パラメータ セツト		*
;*								*
;****************************************************************
POW_PRMT	EQU	$
		JSL	>TO_COIN_CHANGE
;
		LDA	#0020H
		STA	TILTCT
;
		STZ	ITEMNO
		RTS
;
;****************************************************************
;*								*
;*	虫めがね イニシャル パラメータ セツト			*
;*								*
;****************************************************************
GARASU_PRMT	EQU	$
		INC	GRASS_ON
;
		STZ	ITEMNO
		RTS
;
;****************************************************************
;*								*
;*		いつでもタマゴ パラメータ セツト		*
;*								*
;****************************************************************
EGG_PRMT	EQU	$
		RTS
;
;****************************************************************
;*								*
;*		敵みんなハテナ雲 パラメータ セツト		*
;*								*
;****************************************************************
ALLHTN_PRMT	EQU	$
		LDX	#(ENNO-1)*4
ALLHTN_PRMT_050 EQU	$
		LDA	ENMODE,X
		CMP	#EFAIL
		BCC	ALLHTN_PRMT_100 ;敵モードＯＫ？ ( no:ALLHTN_PRMT_100 )
		LDA	ENMOD1,X
		AND	#0110000000000000B
		BNE	ALLHTN_PRMT_100 ;敵？ ( no:ALLHTN_PRMT_100 )
;
		CPX	PONLFFG
		BNE	ALLHTN_PRMT_080

		STZ	PONLFFG

ALLHTN_PRMT_080 EQU	$
		LDA	#ECHNG		;変わるモードセット
		STA	ENMODE,X
		LDA	#QKM16		;変わる敵Ｎｏ．セット
		STA	EN_SP_WRK0,X
ALLHTN_PRMT_100 EQU	$
		DEX
		DEX
		DEX
		DEX
		BPL	ALLHTN_PRMT_050
;
		LDA	#032H		;[♪]
		JSL	>SOUND_3_ON
;
		STZ	ITEMNO
		RTS
;
;****************************************************************
;*								*
;*		スイカの種 パラメータ セツト			*
;*								*
;****************************************************************
SUIKA_PRMT	EQU	$
		LDA	#3
SUIKA_PRMT_0050 EQU	$
		STA	EATSPF		;スペシャルショットフラグセット
		INC	EATFLG
		INC	EATSTP
		LDA	#30*3		;スイカの種数セット
		STA	SUIKA_NO
;
		STZ	ITEMNO
		RTS
;
;****************************************************************
;*								*
;*		氷 パラメータ セツト				*
;*								*
;****************************************************************
COLD0_PRMT	EQU	$
		LDA	#4
		BRA	SUIKA_PRMT_0050
;
;****************************************************************
;*								*
;*		火 パラメータ セツト				*
;*								*
;****************************************************************
FIRE0_PRMT	EQU	$
		LDA	#1
		BRA	SUIKA_PRMT_0050
;
		MEM8
;
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+	アイテム バッファ つめる			+
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ITMBF_SFT	EQU	$
		LDA	!ITEMPNT
		CLC
		ADC	!ITMBFPOS
		TAX
		BEQ	ITMBF_SFT_END
		STA	<WORK0
		STZ	!ITEMBUF-1,X
		LDA	#027
		SEC
		SBC	<WORK0
		STA	<WORK0
		TXY
		DEY
ITMBF_SFT_LOP	EQU	$
		LDA	!ITEMBUF,X	; アイテム あるか ?
		BEQ	ITMBF_SFT_PAS	;	NO -> ITMBF_SFT_PAS
		STA	!ITEMBUF,Y
		STZ	!ITEMBUF,X
		INY
ITMBF_SFT_PAS	EQU	$
		INX
		DEC	<WORK0
		BNE	ITMBF_SFT_LOP
		LDA	!ITMBFPOS
		BEQ	ITMBF_SFT_PAS_5
		DEC	!ITMBFPOS
		BRA	ITMBF_SFT_END
ITMBF_SFT_PAS_5 EQU	$
		DEC	!ITEMPNT
		BNE	ITMBF_SFT_END
		INC	!ITEMPNT
ITMBF_SFT_END	EQU	$
		RTS
;
;
;****************************************************************
;*								*
;*		アイテム セレクト				*
;*								*
;****************************************************************
ITM_INT_SET	EQU	$-2
		WORD	TIME10_INT	; 1 タイマー １０
		WORD	TIME20_INT	; 2 タイマー ２０
		WORD	POW_INT		; 3 どこでもＰＯＷ
		WORD	EGG_INT		; 4 いつでもタマゴ
		WORD	GARASU_INT	; 5 虫めがね
		WORD	ALLHTN_INT	; 6 敵みんなハテナ雲
		WORD	SUIKA_INT	; 7 スイカの種アイテム
		WORD	COLD0_INT	; 8 氷アイテム
		WORD	FIRE0_INT	; 9 火アイテム
;
ITMPTADD	EQU	$-1
		HEX	01,FF,FF
;
ITMPTCMP	EQU	$-1
		HEX	03,FF,FF
;
ITMBFCMP	EQU	$-1
		HEX	1B,FF,FF
;
;
ITMSEL		EQU	$
		LDA	<KEYC2
		AND	#00000011B	; 左右 キー ＯＮ ?
		BEQ	ITMSEL_500	;	NO -> ITMSEL_500
;
;------------------------------- カーソル 移動
		TAX
		LDA	!ITEMPNT
		BNE	ITMSEL_000
		JMP	ITMSEL_900
ITMSEL_000	EQU	$
		DEC	A
		STA	<WORK0		;wrk0 <- カーソル ポインター
		CLC
		ADC	ITMPTADD,X	; カーソルが 左右どちらか
		CMP	ITMPTCMP,X	;  いっぱいに いっているか ?
		BEQ	ITMSEL_005	;	YES -> ITMSEL_005
		INC	A
		STA	!ITEMPNT
		LDA	#05CH
		STA	<SOUND_3	; sound set !!
		BRA	ITMSEL_020
;
ITMSEL_005	EQU	$
		LDA	<WORK0
		CLC
		ADC	!ITMBFPOS
		CLC
		ADC	ITMPTADD,X
		CMP	ITMBFCMP,X	; バッファのサイズを越えたか ?
		BNE	ITMSEL_010	;	YES -> ITMSEL_010
		LDA	!ITMBFPOS
		BRA	ITMSEL_020
;
ITMSEL_010	EQU	$
		LDA	#05CH
		STA	<SOUND_3	; sound set !!
		LDA	!ITMBFPOS
		CLC
		ADC	ITMPTADD,X
		STA	!ITMBFPOS
ITMSEL_020	EQU	$
		JSR	ITMSEL_SUB	; ITEMDSP セット
;
		JSR	ITEM_CORSL
;
		JSR	LTRTARWST	; 左向き矢印 セット
;
ITMSEL_500	EQU	$
		LDA	!ITEMBUF	; アイテム持っているか ?
		BEQ	ITMSEL_900	;	NO -> ITMSEL_900
		LDA	!ITEMNO
		BNE	ITMSEL_900
		LDA	<KEYC2L
		AND	#10000000B	; "Ａ" キー ＯＮ ?
		BEQ	ITMSEL_900	;	NO -> ITMSEL_900
		LDA	!ITEM_STOP	; ボス対戦中 ?
		BNE	ITMSEL_550	;	YES -> ITMSEL_550
		LDA	!ITMBFPOS
		CLC
		ADC	!ITEMPNT
		TAX
		LDA	!ITEMBUF-1,X
		STA	!ITEMNO		;アイテムＮｏ. セット!!
		BEQ	ITMSEL_550
		ASL	A
		TAX
;
		M16
;
		JSR	(ITM_INT_SET,X)
;
		M8
;
ITMSEL_550	EQU	$
		LDA	!ITEMNO
		BEQ	ITMSEL_600	;アイテムエラー？ ( yes:ITMSEL_600 )
;
		LDA	#032H		;[♪]
		STA	SOUND_3
;
		STZ	!ITEM_WK
		STZ	!ITEM_WK+1
		JMP	ITMBF_SFT
;
;-------------- アイテムエラー ----------------------------------
ITMSEL_600	EQU	$
		LDA	#03FH		;[♪]
		STA	SOUND_3
;
ITMSEL_900	EQU	$
		RTS
;
;
		MEM16
;
;****************************************************************
;*								*
;*	タイマー １０ チェック					*
;*								*
;****************************************************************
TIME10_INT	EQU	$
;
;****************************************************************
;*								*
;*	タイマー ２０ チェック					*
;*								*
;****************************************************************
TIME20_INT	EQU	$
		LDA	TIMER
		CMP	#300
		BCC	TIME20_INT_0050 ;タイマーＭＡＸ？ ( no:TIME20_INT_0050 )
;
		STZ	ITEMNO
TIME20_INT_0050 EQU	$
		RTS
;
;****************************************************************
;*								*
;*	虫めがね チェック					*
;*								*
;****************************************************************
GARASU_INT	EQU	$
		LDA	GRASS_ON
		BEQ	GARASU_INT_0050 ;虫眼鏡使用中？ ( no:GARASU_INT_0050 )
;
		STZ	ITEMNO
GARASU_INT_0050 EQU	$
		RTS
;
;****************************************************************
;*								*
;*	どこでもＰＯＷ チェック					*
;*								*
;****************************************************************
POW_INT		EQU	$
;****************************************************************
;*								*
;*	敵みんなハテナ雲 チェック				*
;*								*
;****************************************************************
ALLHTN_INT	EQU	$
		RTS
;
;****************************************************************
;*								*
;*	いつでもタマゴ チェック					*
;*								*
;****************************************************************
EGG_INT		EQU	$
		LDA	EGGPNT
		CMP	#6*2
		BCS	EGG_INT_0050	;タマゴいっぱい？ ( yes:EGG_INT_0050 )
;
		LDA	#ITEGG		;(A) <-- 敵Ｎｏ．
		JSL	>ENINSR		;敵エリア確保
		BCC	EGG_INT_0050	;      ”    ？ ( no:EGG_PRMT_0050 )
;
;-------------- いつでもタマゴデモ用タマゴセット ----------------
		TYX
		JSL	>ITEGG_INIT
		RTS
;
EGG_INT_0050	EQU	$
		STZ	ITEMNO
		RTS
;
;****************************************************************
;*								*
;*	スイカの種 チェック					*
;*								*
;****************************************************************
SUIKA_INT	EQU	$
;****************************************************************
;*								*
;*	氷 チェック						*
;*								*
;****************************************************************
COLD0_INT	EQU	$
;****************************************************************
;*								*
;*	火 チェック						*
;*								*
;****************************************************************
FIRE0_INT	EQU	$
		LDA	PLTYPE
		ORA	EATFLG
		BEQ	FIRE0_INT_0050	;ＯＫ？ ( no:FIRE0_INT_0050 )
;
		STZ	ITEMNO
		RTS
;
FIRE0_INT_0050	EQU	$
		JSL	>BERO_CANCEL
		RTS
;
		MEM8
;
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+							+
;+		ＩＴＥＭＤＳＰ セット			+
;+							+
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ITMSEL_SUB	EQU	$
		LDX	#000H
		LDY	!ITMBFPOS
ITMSEL_SUB_LOP	EQU	$
		LDA	!ITEMBUF,Y
		STA	!ITEMDSP,X
		INY
		INX
		CPX	#003
		BCC	ITMSEL_SUB_LOP
		RTS
;
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+							+
;+		左右向き矢印 セット			+
;+							+
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
LT_ARW_DAT	EQU	$
		WORD	009AFH,0499DH
;
RT_ARW_DAT	EQU	$
		WORD	009AFH,0099DH
;
;
LTRTARWST	EQU	$
;
;------------------------------- 左側 チェック ＆ セット
		LDX	#000
		LDA	!ITMBFPOS
		BEQ	LTRTARWST_100
		INX
		INX
LTRTARWST_100	EQU	$
		M16			; memory 16bit mode
		LDA	LT_ARW_DAT,X
		STA	>PAUSE_SCR+(20H*18H+13H)*2
		ORA	#08000H
		STA	>PAUSE_SCR+(20H*19H+13H)*2
		M8			; memory 8bit mode
;
;------------------------------- 右側 チェック ＆ セット
		LDX	#000
		LDA	!ITMBFPOS
		CLC
		ADC	#003
		CMP	#027
		BCS	LTRTARWST_200
		TAY
		LDA	ITEMBUF,Y
		BEQ	LTRTARWST_200
		INX
		INX
LTRTARWST_200	EQU	$
		M16			; memory 16bit mode
		LDA	RT_ARW_DAT,X
		STA	>PAUSE_SCR+(20H*18H+1EH)*2
		ORA	#08000H
		STA	>PAUSE_SCR+(20H*19H+1EH)*2
		M8			; memory 8bit mode
;
		RTS
;
;----------------------------------------------------------------
;-		item screen write set				-
;-			   <WORK0 <-- cursol index		-
;-			      (Y) <-- cursol clear		-
;----------------------------------------------------------------
CRSL_DAT_00	EQU	$
		WORD	01DBBH,01DBCH,01DBCH,01DBEH
		WORD	01DD1H,0417FH,0417FH,01DBFH
		WORD	01DD1H,0417FH,0417FH,01DBFH
		WORD	09DBBH,09DBCH,09DBCH,09DBEH
;
CRSL_DAT_01	EQU	$
		WORD	05DBEH,01DBCH,01DBCH,01DBEH
		WORD	05DBFH,0417FH,0417FH,01DBFH
		WORD	05DBFH,0417FH,0417FH,01DBFH
		WORD	0DDBEH,09DBCH,09DBCH,09DBEH
;
CRSL_DAT_02	EQU	$
		WORD	05DBEH,01DBCH,01DBCH,05DBBH
		WORD	05DBFH,0417FH,0417FH,05DD1H
		WORD	05DBFH,0417FH,0417FH,05DD1H
		WORD	0DDBEH,09DBCH,09DBCH,0DDBBH
;
CRSL_DAT	EQU	$-2
		WORD	CRSL_DAT_00,CRSL_DAT_01,CRSL_DAT_02
;
CRSL_POS	EQU	$-1
		HEX	000,006,00C
;
;
ITEM_CORSL	EQU	$
		M16			; memory 16bit mode
		PHB
		LDX	#BANK PAUSE_SCR
		PHX
		PLB
		JSR	ITEM_WAKU
		PLB
;
		JSR	ITEM_CORSL_SUB
;
		I16			; index 16bit mode
		LDY	#BANK PAUSE_SCR
		STY	<WORK1
		LDY	#03400H+00020H*17H
		LDX	#PAUSE_SCR+(00020H*17H)*2
		LDA	#(00020H*04H)*2
		JSL	>VRAMDX_ST
;
		MI8			; memory ,index 8bit mode
		RTS
;
;++++++++++++++++++++++++++++++++++++++++++++++++
;+		カーソル ワク セット		+
;++++++++++++++++++++++++++++++++++++++++++++++++
		MEM16
ITEM_CORSL_SUB	EQU	$
		LDA	!ITEMPNT
		AND	#000FFH
		TAY
		ASL	A
		TAX
		LDA	CRSL_POS,Y
		TAY
		LDA	CRSL_DAT,X
		STA	<WORK0
		CLC
		ADC	#00004*2
		STA	<WORK2
		CLC
		ADC	#00004*2
		STA	<WORK4
		CLC
		ADC	#00004*2
		STA	<WORK6
;
		TYX
		LDY	#000
ITEM_CRSL_050	EQU	$
		LDA	(<WORK0),Y
		STA	>PAUSE_SCR+(20H*17H+14H)*2,X
		LDA	(<WORK2),Y
		STA	>PAUSE_SCR+(20H*18H+14H)*2,X
		LDA	(<WORK4),Y
		STA	>PAUSE_SCR+(20H*19H+14H)*2,X
		LDA	(<WORK6),Y
		STA	>PAUSE_SCR+(20H*1AH+14H)*2,X
		INX
		INX
		INY
		INY
		CPY	#(CRSL_DAT_02-CRSL_DAT_01)/4
		BCC	ITEM_CRSL_050
		RTS
		MEM8
;
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+							+
;+		アイテム オブジェ セット		+
;+							+
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ITMOAM_DAT	EQU	$-2
		WORD	03540H,03542H,03144H,03146H,03148H
		WORD	0314AH,0314CH,0314EH,0334CH
;
;
ITEMOBJST	EQU	$
		M16			; memory 16bit mode
		LDA	#0BFA8H
		STA	<WORK0		; アイテムの アドレス
		LDX	#000H
		TXY
;
ITMEGGOAM_200	EQU	$
		LDA	!ITEMDSP,Y
		AND	#000FFH
		BEQ	ITMEGGOAM_800
		PHY
		ASL	A
		TAY
		LDA	ITMOAM_DAT,Y
		STA	>OAM+82H,X	;アイテムＮＯ. セット
		PLY
		LDA	<WORK0
		STA	>OAM+80H,X	;アイテム アドレスセット
		CLC
		ADC	#00018H
		STA	<WORK0		; 次のアイテムの アドレス
		INX
		INX
		INX
		INX
		INY
		CPY	#003
		BCC	ITMEGGOAM_200
;
ITMEGGOAM_800	EQU	$
		LDA	#0AAAAH
		STA	>OAMSUB+8
		M8			; memory 8bit mode
		RTS
;
;
;************************************************************************
;*		massage display						*
;************************************************************************
MSGDSP_WD24	EQU	$
; MSGMOD ->		   [1]	     [3]       [5]	 [7]	   [9]	     [B]       [D]
		BYTE	00000000B,00000010B,00000010B,00001011B,00001011B,00001011B,00000010B
MSGDSP_WD23_25	EQU	$
		BYTE	00000000B,00100010B,00100010B,10001000B,10001000B,10001000B,00100010B
;
MSGDSP		EQU	$
		LDA	#01H
		STA	PLSTFG		;player stop !!
		STA	ENSTFG		;enemy stop !!
;
		LDX	MSGMOD
		TXA
		LSR	A
		TAY
		LDA	!MSGDSP_WD24,Y
		STA	WIND24
		LDA	!MSGDSP_WD23_25,Y
		STA	WIND23
		STA	WIND25
		AND	#11110000B
;
		JMP	(MSGSUB,X)
;
;------------------------------------------------------------------------
;-		massage display mode table				-
;------------------------------------------------------------------------
MSGSUB		EQU	$-1		;[MSGMOD]
		WORD	MSG_INT		;[1] massage display initial set
		WORD	MSG_WON		;[3]	"   window open
		WORD	MSG_SET		;[5]	"   set
		WORD	MSG_WON		;[7]	"   window open
		WORD	MSG_MOV		;[9]	"   move
		WORD	MSG_WOF		;[B]	"   window close
		WORD	MSG_WOF		;[D]	"   window close
;
;------------------------------------------------------------------------
;-		massage display initial set				-
;------------------------------------------------------------------------
MSG_INT		EQU	$
		STZ	MSGWK0		;massage work RAM clear
		STZ	MSGWK1
		STZ	MSGWK2
;
;-------------- go to next mode !! --------------------------------------
MSMDINC		EQU	$
		INC	MSGMOD
		INC	MSGMOD
		RTS
;
;------------------------------------------------------------------------
;-		massage window open					-
;------------------------------------------------------------------------
MSG_WON		EQU	$
		LDY	#00		;(Y) <-- window muki [ open ]
MSG_WIN		EQU	$
		LDX	MSGTYP
		JMP	(MSWSUB,X)
;
;------------------------------------------------------------------------
;-		massage window close					-
;------------------------------------------------------------------------
MSG_WOF		EQU	$
;;;;		    LDY	    #01		    ;(Y) <-- window muki [ close ]
		LDY	#02		;(Y) <-- window muki [ close ]
		BRA	MSG_WIN
;
;------------------------------------------------------------------------
;-		massage set						-
;------------------------------------------------------------------------
MSG_SET		EQU	$
;
		M16
;
		LDA	#00
		STA	>MSG_RAM	;message mode initial set
;
		M8
;
		JSR	MSG_CALL
		BRA	MSMDINC
;
;------------------------------------------------------------------------
;-		massage move						-
;------------------------------------------------------------------------
MSG_MOV		EQU	$
		JSR	MSG_CALL
;
		LDA	>MSG_RAM
		CMP	#002
		BCC	MSM_010
;
		JSR	MSMDINC		;go to next mode !!
;
;-------------- message process -----------------------------------------
MSM_010		EQU	$
		RTS
;
;----------------------------------------------------------------
;-		message window type table			-
;----------------------------------------------------------------
MSWSUB		EQU	$
		WORD	MSW_POLY	;polygon window
;;;;		    WORD    MSW_CHNG	    ;change window
;
;----------------------------------------------------------------
;-		polygon window open & close			-
;-			(MSGWK0) : rotation angle		-
;----------------------------------------------------------------
MSWZOMCP	EQU	$
; window muki ->	  0	 2
		WORD	00100H,00000H
MSWZOMAD	EQU	$
		WORD	00010H,0FFF0H
;
MSW_POLY	EQU	$
;
		M16
;
		LDA	MSGWK0
		CLC
		ADC	!MSWZOMAD,Y
		STA	MSGWK0
		STA	R4		;(R4) <-- zoom size
		CMP	!MSWZOMCP,Y
;
		M8
;
		BEQ	MSW_POLY_0050	;window open & close end ? ( yes:MSW_POLY_0050 )
;
;;;;		    LDA	    #00000010B	    ;(A) <-- BG3 window mask
		JMP	MSW_POLY_0350
;
MSW_POLY_0050	EQU	$
;;;;		    TYA
;;;;		    BEQ	    MSW_POLY_0200   ;return to game play ? ( no:MSW_POLY_0200 )
		JSR	MSMDINC		;go to next mode !!
;
		LDA	MSGMOD
		CMP	#0DH+2
		BNE	MSW_POLY_0200	;return to game play ? ( no:MSW_POLY_0200 )
;
;-------------- return to game play !! --------------------------
		STZ	MSGMOD
		STZ	WIND23		;window disable
		STZ	WIND24
		STZ	WIND25
		STZ	ENSTFG		;enemy stop cancel !!
;
		LDA	NEXTGOTO
		BEQ	MSW_POLY_0100	;door in ? ( no:MSW_POLY_0100 )
;
		BIT	<KEYC1L
		BVS	MSW_POLY_0150	;"YES" ? ( yes:MSW_POLY_0150 )
;
		STZ	NEXTGOTO
MSW_POLY_0100	EQU	$
		STZ	PLSTFG		;player stop cancel !!
MSW_POLY_0150	EQU	$
		RTS
;
MSW_POLY_0200	EQU	$
		CMP	#0BH+2
		BNE	MSW_POLY_0220	;screen data load ? ( no:MSW_POLY_0220 )
;
;-------------- BG3 screen data load ------------------------------------
;
		MI16
;
		LDA	#0100H		;next window again close set
		STA	MSGWK0
;
		LDA	MSGSAV		;(A) <-- VRAM address
		LDY	#(20H*6)*2	;(Y) <-- number of byte
		JSR	VRMDXST
;
		MEM8
		IDX8
;
MSW_POLY_0210	EQU	$
		JMP	MSW_POLY_0350
;
MSW_POLY_0220	EQU	$
		CMP	#03H+2
		BNE	MSW_POLY_0210	;message screen set ? ( no:MSW_POLY_0210 )

;-------------- massage screen set ------------------------------
;
		MI16
;
		STZ	MSGWK0		;next window again open set
;
;-------------- BG3 screen data save --------------------
		LDA	<SCCV3
		CLC
		ADC	#010H+8		;[ +8:hosei ]
		AND	#01F0H
		ASL	A
		ORA	#3400H		;[ BG3 screen base add ]
		STA	MSGSAV		;(A) <-- VRAM address
		ORA	#8000H		;VRAM read set
		LDY	#(20H*6)*2+2	;(Y) <-- number of byte
		JSR	VRMDXST
;
		MEM8
		IDX8
;
;-------------- BG3 massage sccreen write ---------------
		PHB			;(DBR) save
		LDA	#BANK VRAMD
		PHA
		PLB			;(DBR) <-- VRAMD(B)
;
		MI16			; memory , index 16bit mode
		LDA	<SCCH3
		CLC
		ADC	#030H+8		;[ +8:hosei ]
		AND	#01F0H
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		STA	<WORK2
;
		EOR	#0001FH		; セット キャラクターの個数
		INC	A		;
		CMP	#0000AH		;
		BCC	MSW_POLY_0250	;
		LDA	#0000AH		;
MSW_POLY_0250	EQU	$
		STA	<WORK4		;
;
		STZ	<WORK8
		LDA	#2000H|(02H*400H)|200H
		STA	<WORK6		; set chara NO. [ 200H-27FH ]
		LDA	MSGSAV
		CLC
		ADC	<WORK2
		STA	<WORK2		; VRAM address
		JSR	MSW_NOML
		INC	<WORK8
;
		LDA	<WORK4
		CMP	#0000AH
		BCS	MSW_POLY_0300
		DEC	A
		ASL	A
		CLC
		ADC	#2000H|(02H*400H)|200H
		STA	<WORK6		; set chara NO. [ 200H-27FH ]
		LDA	#0000AH
		SEC
		SBC	<WORK4
		STA	<WORK4
		LDA	<WORK2
		AND	#0FFE0H
		STA	<WORK2		; VRAM address
		JSR	MSW_NOML
;
MSW_POLY_0300	EQU	$
		LDA	#0FFFFH
		STA	VRAMD+2,X	;end code set
;
		MI8
;
		PLB
;
;;;;;-------------- message display initial set ---------------------
;;;;;
;;;;		    M16
;;;;;
;;;;		    LDA	    #00
;;;;		    STA	    >MSG_RAM	    ;message mode initial set
;;;;;
;;;;		    M8
;;;;;
;;;;		    JSR	    MSG_CALL
;;;;;
;;;;		    LDA	    #00001010B	    ;(A) <-- BG3 window mask
;-------------- window data set ---------------------------------
MSW_POLY_0350	EQU	$
;
		M16
;
		STZ	R1		;(R1) <-- X rotation angle
		STZ	R2		;(R2) <-- Y rotation angle
		STZ	R3		;(R3) <-- Z rotation angle
		LDA	<SCCH3
		AND	#0FH
		CMP	#08H
		BCS	MSW_POLY_0400
		ORA	#010H		[ +10H ]
MSW_POLY_0400	EQU	$
		EOR	#0FFFFH
		INC	A
		CLC
		ADC	#090H
		STA	R5		;(R5) <-- center X pos
		LDA	<SCCV3
		AND	#0FH
		CMP	#08H
		BCS	MSW_POLY_0450
		ORA	#010H		[ +10H ]
MSW_POLY_0450	EQU	$
		EOR	#0FFFFH
		INC	A
		CLC
		ADC	#050H-1-8
		STA	R6		;(R6) <-- center Y pos
		M_CHIP	MSWINPOLY
;
		JSL	>M_DMA_BFST
		LWORD	WINDBUF		;転送先アドレス
		LWORD	WINDBF		;転送元アドレス
		WORD	(0D2H*4)	;転送バイト数
;
		M8
;
;-------------- window PPU set ----------------------------------
		LDA	MANSEL
		STA	WMANSL
		LDA	SUBSEL
		STA	WSUBSL
		LDA	#00110000B	;window logic set
		STA	212AH
		STZ	212BH
		LDA	#00100000B
		TSB	HD420C		;H-DMA "ON" !!
		RTS
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+		メッセージ文字セット			+
;+			in				+
;+			wrk0,1 <- VRAMDセット count	+
;+			   2,3 <- VRAM address		+
;+			   4,5 <- 個数			+
;+			   6,7 <- set chara NO.		+
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
		MEM16
		IDX16
MSW_NOML	EQU	$
		LDA	#006
		STA	<WORK		;(WK0,1) <-- V loop no.
		LDX	!VRAMD		;(X) <-- VRAMD set pointer
		LDA	<WORK2
MSW_NOML_000	EQU	$
		STA	!VRAMD+2,X	;VRAM address set
		PHA			;(A) save
		LDA	<WORK4
		ASL	A
		DEC	A
		STA	!VRAMD+4,X	;number of byte set
;
		LDA	<WORK0
		DEC	A
		BEQ	MSW_NOML_025
		CMP	#00005H
		BCS	MSW_NOML_025
MSW_NOML_020	EQU	$
		JSR	MSW_NOML_100	;文字セット
		LDA	<WORK6
		CLC
		ADC	#20H
		STA	<WORK6
		BRA	MSW_NOML_040
MSW_NOML_025	EQU	$
		JSR	MSW_NOML_200	;上下ワクセット
;
MSW_NOML_040	EQU	$
;
		TXA
		CLC
		ADC	#4
		TAX
;
		PLA			;(A) load
		CLC
		ADC	#20H		;VRAM address up !
		DEC	<WORK
		BNE	MSW_NOML_000
		STX	!VRAMD		;next pointer set
		RTS
;
;++++++++++++++++++++++++++++++++++++++++++++++++
;+		文字セット			+
;++++++++++++++++++++++++++++++++++++++++++++++++
MSW_NOML_100	EQU	$
		LDY	<WORK4		; 横一列セット
		LDA	<WORK8
		BNE	MSW_NOML_110
		LDA	#02DC3H		;左側ワク
		STA	!VRAMD+6,X
		INX
		INX
		DEY
;
MSW_NOML_110	EQU	$
		LDA	<WORK6
MSW_NOML_115	EQU	$
		STA	!VRAMD+6,X
		INC	A		;set chara no. up !
		INC	A		;
		INX
		INX
		DEY
		BNE	MSW_NOML_115
;
		LDA	<WORK8
		BNE	MSW_NOML_125
		LDA	<WORK4
		CMP	#0000AH
		BCC	MSW_NOML_150
MSW_NOML_125	EQU	$
		LDA	#06DC3H		;右側ワク
		STA	!VRAMD+4,X
MSW_NOML_150	EQU	$
		RTS
;
;++++++++++++++++++++++++++++++++++++++++++++++++
;+		上下ワクセット			+
;++++++++++++++++++++++++++++++++++++++++++++++++
MSW_NOML_200	EQU	$
		LDY	<WORK4		; 横一列セット
		LDA	<WORK8
		BNE	MSW_NOML_210
		LDA	<WORK0
		DEC	A		; 上のワク ?
		BNE	MSW_NOML_205	;	YES -> MSW_NOML_205
		LDA	#0ADC0H
		BRA	MSW_NOML_208
MSW_NOML_205	EQU	$
		LDA	#02DC0H
MSW_NOML_208	EQU	$
		STA	!VRAMD+6,X
		INX
		INX
		DEY
		BEQ	MSW_NOML_250
;
MSW_NOML_210	EQU	$
		LDA	<WORK0
		DEC	A		; 上のワク ?
		BNE	MSW_NOML_215	;	YES -> MSW_NOML_215
		LDA	#0ADC1H
		BRA	MSW_NOML_218
MSW_NOML_215	EQU	$
		LDA	#02DC1H
MSW_NOML_218	EQU	$
		STA	!VRAMD+6,X
		INX
		INX
		DEY
		BNE	MSW_NOML_218
;
		LDA	<WORK8
		BNE	MSW_NOML_225
		LDA	<WORK4
		CMP	#0000AH
		BCC	MSW_NOML_250
MSW_NOML_225	EQU	$
		LDA	#06DC0H
		LDY	<WORK0
		DEY
		BNE	MSW_NOML_228
		LDA	#0EDC0H
MSW_NOML_228	EQU	$
		STA	!VRAMD+4,X
MSW_NOML_250	EQU	$
		RTS
		MEM8
		IDX8
;
;;;;;----------------------------------------------------------------
;;;;;-		    change window open & close			    -
;;;;;-			    (MSGWK0) : change size		    -
;;;;;----------------------------------------------------------------
;;;;MSW_CHNG_DT_0   EQU	    $
;;;;		    HEX	    01
;;;;		    HEX	    3F,00, 00,C0
;;;;;
;;;;MSW_CHNG_DT_1   EQU	    $
;;;;		    HEX	    40
;;;;		    HEX	    3F,00, 00,C0, 3F,00, 00,C0, 3F,00, 00,C0, 3F,00, 00,C0
;;;;		    HEX	    3F,00, 00,C0, 3F,00, 00,C0, 3F,00, 00,C0, 3F,00, 00,C0
;;;;		    HEX	    3F,00, 00,C0, 3F,00, 00,C0, 3F,00, 00,C0, 3F,00, 00,C0
;;;;		    HEX	    3F,00, 00,C0, 3F,00, 00,C0, 3F,00, 00,C0, 3F,00, 00,C0
;;;;		    HEX	    3F,00, 00,C0, 3F,00, 00,C0, 3F,00, 00,C0, 3F,00, 00,C0
;;;;		    HEX	    3F,00, 00,C0, 3F,00, 00,C0, 3F,00, 00,C0, 3F,00, 00,C0
;;;;		    HEX	    3F,00, 00,C0, 3F,00, 00,C0, 3F,00, 00,C0, 3F,00, 00,C0
;;;;		    HEX	    3F,00, 00,C0, 3F,00, 00,C0, 3F,00, 00,C0, 3F,00, 00,C0
;;;;		    HEX	    3F,00, 00,C0, 3F,00, 00,C0, 3F,00, 00,C0, 3F,00, 00,C0
;;;;		    HEX	    3F,00, 00,C0, 3F,00, 00,C0, 3F,00, 00,C0, 3F,00, 00,C0
;;;;		    HEX	    3F,00, 00,C0, 3F,00, 00,C0, 3F,00, 00,C0, 3F,00, 00,C0
;;;;		    HEX	    3F,00, 00,C0, 3F,00, 00,C0, 3F,00, 00,C0, 3F,00, 00,C0
;;;;		    HEX	    3F,00, 00,C0, 3F,00, 00,C0, 3F,00, 00,C0, 3F,00, 00,C0
;;;;		    HEX	    3F,00, 00,C0, 3F,00, 00,C0, 3F,00, 00,C0, 3F,00, 00,C0
;;;;		    HEX	    3F,00, 00,C0, 3F,00, 00,C0, 3F,00, 00,C0, 3F,00, 00,C0
;;;;		    HEX	    3F,00, 00,C0, 3F,00, 00,C0, 3F,00, 00,C0, 3F,00, 00,C0
;;;;;
;;;;MSWCHGCP	    EQU	    $
;;;;; window muki ->	       0     2
;;;;		    WORD    00100H,00000H
;;;;MSWCHGAD	    EQU	    $
;;;;		    WORD    00008H,0FFF8H
;;;;;
;;;;MSW_CHNG	    EQU	    $
;;;;;
;;;;		    M16
;;;;;
;;;;		    LDA	    MSGWK0
;;;;		    CLC
;;;;		    ADC	    !MSWCHGAD,Y
;;;;		    STA	    MSGWK0
;;;;		    CMP	    !MSWCHGCP,Y
;;;;;
;;;;		    M8
;;;;;
;;;;		    BEQ	    MSW_CHNG_0050   ;window open & close end ? ( yes:MSW_CHNG_0050 )
;;;;;
;;;;		    LDA	    #00001010B	    ;(A) <-- BG3 window mask
;;;;		    JMP	    MSW_CHNG_0350
;;;;;
;;;;MSW_CHNG_0050   EQU	    $
;;;;		    TYA
;;;;		    BEQ	    MSW_CHNG_0200   ;return to game play ? ( no:MSW_CHNG_0200 )
;;;;;
;;;;;-------------- return to game play !! --------------------------
;;;;		    STZ	    MSGMOD
;;;;		    STZ	    WIND23	    ;window disable
;;;;		    STZ	    WIND24
;;;;		    STZ	    WIND25
;;;;		    STZ	    ENSTFG	    ;enemy stop cancel !!
;;;;;
;;;;		    LDA	    NEXTGOTO
;;;;		    BEQ	    MSW_CHNG_0100   ;door in ? ( no:MSW_CHNG_0100 )
;;;;;
;;;;		    BIT	    <KEYC1L
;;;;		    BVS	    MSW_CHNG_0150   ;"YES" ? ( yes:MSW_CHNG_0150 )
;;;;;
;;;;		    STZ	    NEXTGOTO
;;;;MSW_CHNG_0100   EQU	    $
;;;;		    STZ	    PLSTFG	    ;player stop cancel !!
;;;;MSW_CHNG_0150   EQU	    $
;;;;		    RTS
;;;;;
;;;;;-------------- massage set -------------------------------------
;;;;MSW_CHNG_0200   EQU	    $
;;;;		    JSR	    MSMDINC	    ;go to next mode !!
;;;;;
;;;;;-------------- BG3 screen data save --------------------
;;;;;
;;;;		    MI16
;;;;;
;;;;		    LDA	    <SCCV3
;;;;		    CLC
;;;;		    ADC	    #030H+8	    ;[ +8:hosei ]
;;;;		    AND	    #01F0H
;;;;		    ASL	    A
;;;;		    ORA	    #03400H	    ;[ BG3 screen base add ]
;;;;		    STA	    MSGSAV	    ;(A) <-- VRAM address
;;;;		    ORA	    #8000H	    ;VRAM read set
;;;;		    LDY	    #(20H*4)*2+2    ;(Y) <-- number of byte
;;;;		    JSR	    VRMDXST
;;;;;
;;;;		    MEM8
;;;;		    IDX8
;;;;;
;;;;;-------------- BG3 massage sccreen write ---------------
;;;;		    PHB			    ;(DBR) save
;;;;		    LDA	    #BANK VRAMD
;;;;		    PHA
;;;;		    PLB			    ;(DBR) <-- VRAMD(B)
;;;;;
;;;;		    MI16
;;;;		    LDA	    <SCCH3
;;;;		    CLC
;;;;		    ADC	    #040H+8	    ;[ +8:hosei ]
;;;;		    AND	    #01F0H
;;;;		    LSR	    A
;;;;		    LSR	    A
;;;;		    LSR	    A
;;;;		    LSR	    A
;;;;		    STA	    <WORK2
;;;;;
;;;;		    EOR	    #0001FH	    ; セット キャラクターの個数
;;;;		    INC	    A		    ;
;;;;		    CMP	    #00008H	    ;
;;;;		    BCC	    MSW_CHNG_0250   ;
;;;;		    LDA	    #00008H	    ;
;;;;MSW_CHNG_0250   EQU	    $
;;;;		    STA	    <WORK4	    ;
;;;;;
;;;;		    LDA	    #2000H|(06H*400H)|200H
;;;;		    STA	    <WORK6	    ; set chara NO. [ 200H-27FH ]
;;;;		    LDA	    MSGSAV
;;;;		    CLC
;;;;		    ADC	    <WORK2
;;;;		    STA	    <WORK2	    ; VRAM address
;;;;		    JSR	    MSW_NOML
;;;;;
;;;;		    LDA	    <WORK4
;;;;		    CMP	    #00008H
;;;;		    BCS	    MSW_CHNG_0300
;;;;		    PHA
;;;;		    ASL	    A
;;;;		    CLC
;;;;		    ADC	    #2000H|(06H*400H)|200H
;;;;		    STA	    <WORK6	    ; set chara NO. [ 200H-27FH ]
;;;;		    PLA
;;;;		    EOR	    #00007H
;;;;		    INC	    A
;;;;		    STA	    <WORK4
;;;;		    LDA	    <WORK2
;;;;		    AND	    #0FFE0H
;;;;		    STA	    <WORK2	    ; VRAM address
;;;;		    JSR	    MSW_NOML
;;;;;
;;;;MSW_CHNG_0300   EQU	    $
;;;;		    LDA	    #0FFFFH
;;;;		    STA	    VRAMD+2,X	    ;end code set
;;;;;
;;;;		    MI8
;;;;;
;;;;		    PLB
;;;;;
;;;;;-------------- message display initial set ---------------------
;;;;;
;;;;		    M16
;;;;;
;;;;		    LDA	    #00
;;;;		    STA	    >MSG_RAM	    ;message mode initial set
;;;;;
;;;;		    M8
;;;;;
;;;;		    JSR	    MSG_CALL
;;;;;
;;;;		    LDA	    #00000000B	    ;(A) <-- BG3 window mask
;;;;;-------------- window data set ---------------------------------
;;;;MSW_CHNG_0350   EQU	    $
;;;;		    STA	    WIND24
;;;;		    LDA	    #10101010B	    ;window mask set
;;;;		    STA	    WIND23
;;;;		    STA	    WIND25
;;;;;
;;;;		    M16
;;;;;
;;;;		    LDA	    #BANK MSW_CHNG_DT_0
;;;;		    STA	    R0		    ;(R0) <-- chnage data bank
;;;;		    LDA	    #MSW_CHNG_DT_0
;;;;		    STA	    R1		    ;(R1) <-- from change data
;;;;		    LDA	    #MSW_CHNG_DT_1
;;;;		    STA	    R2		    ;(R2) <-- to	"
;;;;		    LDA	    MSGWK0
;;;;		    STA	    R3		    ;(R3) <-- change size
;;;;		    LDA	    <SCCH3
;;;;		    AND	    #0FH
;;;;		    CMP	    #08H
;;;;		    BCS	    MSW_CHNG_0400
;;;;		    ORA	    #010H	    [ +10H ]
;;;;MSW_CHNG_0400   EQU	    $
;;;;		    EOR	    #0FFFFH
;;;;		    INC	    A
;;;;		    CLC
;;;;		    ADC	    #090H
;;;;		    STA	    R8		    ;(R8) <-- center X pos
;;;;		    LDA	    <SCCV3
;;;;		    AND	    #0FH
;;;;		    CMP	    #08H
;;;;		    BCS	    MSW_CHNG_0450
;;;;		    ORA	    #010H	    [ +10H ]
;;;;MSW_CHNG_0450   EQU	    $
;;;;		    EOR	    #0FFFFH
;;;;		    INC	    A
;;;;		    CLC
;;;;;;;;		ADC	#(060H-1)
;;;;		    ADC	    #077H
;;;;		    STA	    R9		    ;(R9) <-- center Y pos
;;;;		    M_CHIP  CHANGE
;;;;;
;;;;		    JSL	    >M_DMA_BFST
;;;;		    LWORD   WINDBUF	    ;転送先アドレス
;;;;		    LWORD   WINDBF	    ;転送元アドレス
;;;;		    WORD    (0D2H*4)	    ;転送バイト数
;;;;;
;;;;		    M8
;;;;;
;;;;;-------------- window PPU set ----------------------------------
;;;;		    LDA	    MANSEL
;;;;		    STA	    WMANSL
;;;;		    LDA	    SUBSEL
;;;;		    STA	    WSUBSL
;;;;		    LDA	    #00100000B	    ;window logic set
;;;;		    STA	    212AH
;;;;		    STZ	    212BH
;;;;		    LDA	    #00100000B
;;;;		    TSB	    HD420C	    ;H-DMA "ON" !!
;;;;		    RTS
;;;;;
;;;;;
;;;;;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;;;;;+		メッセージ文字セット			+
;;;;;+			in				+
;;;;;+			wrk0,1 <- VRAMDセット count	+
;;;;;+			   2,3 <- VRAM address		+
;;;;;+			   4,5 <- 個数			+
;;;;;+			   6,7 <- set chara NO.		+
;;;;;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;;;;		MEM16
;;;;		IDX16
;;;;MSW_NOML	EQU	$
;;;;		LDA	#4
;;;;		STA	<WORK		;(WK0,1) <-- V loop no.
;;;;		STZ	<WORK8
;;;;		LDX	!VRAMD		;(X) <-- VRAMD set pointer
;;;;		LDA	<WORK2
;;;;MSW_NOML_000	EQU	$
;;;;		STA	VRAMD+2,X	;VRAM address set
;;;;		PHA			;(A) save
;;;;		LDA	<WORK4
;;;;		ASL	A
;;;;		DEC	A
;;;;		STA	VRAMD+4,X	;number of byte set
;;;;;
;;;;		LDA	<WORK6
;;;;		LDY	<WORK4		; 横一列セット
;;;;MSW_NOML_010	EQU	$
;;;;		STA	VRAMD+6,X
;;;;		INC	A		;set chara no. up !
;;;;		INC	A		;
;;;;		INX
;;;;		INX
;;;;		DEY
;;;;		BNE	MSW_NOML_010
;;;;;
;;;;		LDA	<WORK6
;;;;		CLC
;;;;		ADC	#20H
;;;;		STA	<WORK6
;;;;;
;;;;		INC	<WORK8
;;;;		TXA
;;;;		CLC
;;;;		ADC	#4
;;;;		TAX
;;;;;
;;;;		PLA			;(A) load
;;;;		CLC
;;;;		ADC	#20H		;VRAM address up !
;;;;		DEC	<WORK
;;;;		BNE	MSW_NOML_000
;;;;		STX	!VRAMD		;next pointer set
;;;;		RTS
;;;;		MEM8
;;;;		IDX8
;
;
;
;------------------------------------------------------------------------
;-		message program call					-
;------------------------------------------------------------------------
;
		MEM8
		IDX8
;
MSG_CALL	EQU	$
		LDA	#000H		; メッセージデータ
		STA	>MSG_RAM+2	;   リード インデックス セット
		LDA	CIPSCB		;M-chip screen base address save
		PHA
		LDA	CIPSCR		;M-chip status data save
		PHA
;
		LDA	#014H
		STA	CIPSCB		;message screen base addrees set
		LDA	#00111100B
		STA	CIPSCR		;message status data save
;
		M16
;
		LDA	KEYA1L		;key data set
		ORA	KEYB1L
		STA	>MSG_RAM+6
		LDA	KEYA2L
		ORA	KEYB2L
		STA	>MSG_RAM+8
;
		M_CHIP	MSG_CORE
;
		M8
;
		PLA
		STA	CIPSCR
		PLA
		STA	CIPSCB
;
		INC	MSGTRF		;massage bitmap transfer "ON"
;
		JSR	NXTMARK
;
		RTS
;
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+							+
;+		キー入力待ち カーソル点滅		+
;+							+
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
NXTMARK		EQU	$
		PHB
		LDA	#BANK VRAMD
		PHA
		PLB
		MI16			; memory , index 16bit mode
;
		LDX	!VRAMD
;
		LDA	<SCCV3
		CLC
		ADC	#00060H+8
		AND	#001F0H
		ASL	A
		ORA	#03400H
		STA	<WORK0
;
		LDA	<SCCH3
		CLC
		ADC	#000B0H+8	;[ +8:hosei ]
		AND	#001F0H
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		ADC	<WORK0
		STA	!VRAMD+2,X	; アドレス
;
		LDA	#00001H
		STA	!VRAMD+4,X	; 個数
;
		LDA	>MSG_RAM+5
		AND	#000FFH
		CMP	#0000FH		; データ終了でのキー入力待ち ?
		BEQ	NXTMARK_050	;	YES -> NXTMARK_050
		CMP	#00051H		; カーソル上下選択
		BEQ	NXTMARK_050	;	YES -> NXTMARK_050
		CMP	#000FFH		; データ終了 ?
		BEQ	NXTMARK_050	;	YES -> NXTMARK_050
		LDA	>MSG_RAM
		CMP	#002
		BCS	NXTMARK_050
		LDA	<FRCNT
		AND	#00010H
		BEQ	NXTMARK_060
NXTMARK_050	EQU	$
		LDA	#0ADC1H
		BRA	NXTMARK_070
NXTMARK_060	EQU	$
		LDA	#02DC5H
NXTMARK_070	EQU	$
		STA	!VRAMD+6,X	; キャラクター
;
		LDA	#0FFFFH
		STA	!VRAMD+8,X
		TXA
		CLC
		ADC	#00006
		STA	!VRAMD
;
		MI8			; memory , index 8bit mode
		PLB
		RTS
;
;;;;;************************************************************************
;;;;;*		    spacial window set					    *
;;;;;************************************************************************
;;;;;
;;;;;		    spacial window data
;;;;;
;;;;;		    HEX	    (Y size)
;;;;;		    HEX	    (window.1 left X),(window.1 right X),(window.2 left X),(window.2 right X)
;;;;;
;;;;SPWIND0	    EQU	    $
;;;;		    HEX	    20
;;;;		    HEX	    00,06,0A,0F	 ;[00]
;;;;		    HEX	    00,06,0A,0F	 ;[01]
;;;;		    HEX	    00,06,0A,0F	 ;[02]
;;;;		    HEX	    00,06,0A,0F	 ;[03]
;;;;		    HEX	    00,06,0A,0F	 ;[04]
;;;;		    HEX	    00,06,0A,0F	 ;[05]
;;;;		    HEX	    00,06,0A,0F	 ;[06]
;;;;		    HEX	    00,06,0A,0F	 ;[07]
;;;;		    HEX	    00,06,0A,0F	 ;[08]
;;;;		    HEX	    00,06,0A,0F	 ;[09]
;;;;		    HEX	    00,06,0A,0F	 ;[0A]
;;;;		    HEX	    00,06,0A,0F	 ;[0B]
;;;;		    HEX	    00,06,0A,0F	 ;[0C]
;;;;		    HEX	    00,06,0A,0F	 ;[0D]
;;;;		    HEX	    00,06,0A,0F	 ;[0E]
;;;;		    HEX	    00,06,0A,0F	 ;[0F]
;;;;		    HEX	    00,06,0A,0F	 ;[10]
;;;;		    HEX	    00,06,0A,0F	 ;[11]
;;;;		    HEX	    00,06,0A,0F	 ;[12]
;;;;		    HEX	    00,06,0A,0F	 ;[13]
;;;;		    HEX	    00,06,0A,0F	 ;[14]
;;;;		    HEX	    00,06,0A,0F	 ;[15]
;;;;		    HEX	    00,06,0A,0F	 ;[16]
;;;;		    HEX	    00,06,0A,0F	 ;[17]
;;;;		    HEX	    00,06,0A,0F	 ;[18]
;;;;		    HEX	    00,06,0A,0F	 ;[19]
;;;;		    HEX	    00,06,0A,0F	 ;[1A]
;;;;		    HEX	    00,06,0A,0F	 ;[1B]
;;;;		    HEX	    00,06,0A,0F	 ;[1C]
;;;;		    HEX	    00,06,0A,0F	 ;[1D]
;;;;		    HEX	    00,06,0A,0F	 ;[1E]
;;;;		    HEX	    00,06,0A,0F	 ;[1F]
;;;;;
;;;;ZOMADD	    EQU	    $
;;;;		    WORD    00000H,0FFF0H,00010H,0FFF0H
;;;;ZOMCMP	    EQU	    $
;;;;		    WORD    00000H,00010H,02000H,00010H
;;;;;
;;;;SPWINDST	    EQU	    $
;;;;		    JMP	    KAGE
;;;;;
;;;;		    I16
;;;;;
;;;;;-------------- spacial window switch change --------------------
;;;;		    LDA	    KEYB2
;;;;		    AND	    #00100000B
;;;;		    BEQ	    SPWS020	    ;spacial window switch change ? ( no:SPWS020 )
;;;;
;;;;		    LDY	    #0100H
;;;;		    LDX	    SPWINF
;;;;		    BEQ	    SPWS010
;;;;;
;;;;;-------------- window PPU reset --------------------------------
;;;;		    STZ	    WIND23
;;;;		    STZ	    WIND24
;;;;		    STZ	    WIND25
;;;;		    LDA	    #00000010B
;;;;		    STA	    WIND30
;;;;		    LDA	    HD420C
;;;;		    AND	    #11011111B
;;;;		    STA	    HD420C
;;;;;
;;;;		    LDY	    #0000H
;;;;SPWS010	    EQU	    $
;;;;		    STY	    SPWINF
;;;;;
;;;;SPWS020	    EQU	    $
;;;;		    LDX	    SPWINF
;;;;		    BNE	    SPWS022	    ;spacial window "ON" ? ( yes:SPWS022 )
;;;;;
;;;;		    SEP	    #00010000B	    ;index 8 bit mode set
;;;;		    RTS
;;;;;
;;;;;-------------- zoom flag set -----------------------------------
;;;;SPWS022	    EQU	    $
;;;;;
;;;;		    M16
;;;;		    I8
;;;;;
;;;;		    LDA	    KEYB1
;;;;		    AND	    #00001100B
;;;;		    LSR	    A
;;;;		    TAY
;;;;		    LDA	    SPWINF
;;;;		    CMP	    !ZOMCMP,Y
;;;;		    BEQ	    SPWS030
;;;;		    CLC
;;;;		    ADC	    !ZOMADD,Y
;;;;		    STA	    SPWINF
;;;;;
;;;;;-------------- spacial window data set -------------------------
;;;;SPWS030	    EQU	    $
;;;;		    LDA	    #BANK SPWIND0
;;;;		    STA	    >R0		    ;(R0) <-- window data address(B)
;;;;		    LDA	    #SPWIND0
;;;;		    STA	    >R5		    ;(R5) <--	       "         (L,H)
;;;;		    LDA	    #008H
;;;;		    STA	    >R1		    ;(R1) <--	   "      center X pos
;;;;		    LDA	    #010H
;;;;		    STA	    >R2		    ;(R2) <--	      "          Y  "
;;;;		    LDA	    #0080H
;;;;		    STA	    >R3		    ;(R3) <--	 "   display center X pos
;;;;		    LDA	    #0070H
;;;;		    STA	    >R4		    ;(R4) <--		"           Y  "
;;;;		    LDA	    SPWINF
;;;;		    STA	    >R6		    ;(R6) <-- zoom flag
;;;;;
;;;;		    LDX	    #BANK SPWINDOW
;;;;		    LDA	    #SPWINDOW
;;;;		    JSL	    >CHIPON
;;;;;
;;;;SPWD040	    EQU	    $
;;;;		    JSL	    >M_DMA_BFST
;;;;		    LWORD   HDMABUF2	    ;転送先アドレス
;;;;		    LWORD   HDMABF	    ;転送元アドレス
;;;;		    WORD    (0D2H*4)	    ;転送バイト数
;;;;;
;;;;		    M8
;;;;;
;;;;;-------------- window PPU set ----------------------------------
;;;;		    LDA	    MANSEL
;;;;		    STA	    212EH
;;;;		    LDA	    SUBSEL
;;;;		    STA	    212FH
;;;;		    LDA	    #10101010B
;;;;		    STA	    WIND23
;;;;		    LDA	    #00001010B
;;;;		    STA	    WIND24
;;;;		    LDA	    #10101010B
;;;;		    STA	    WIND25
;;;;		    LDA	    WIND30
;;;;		    ORA	    #00100000B
;;;;		    STA	    WIND30
;;;;		    LDA	    HD420C	    ;H-DMA "ON" !!
;;;;		    ORA	    #00100000B
;;;;		    STA	    HD420C
;;;;		    RTS
;;;;;
;;;;;
;;;;;
;;;;;
;;;;;
;;;;;
;;;;;
;;;;;
;;;;;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;;;;;!		    kage						    !
;;;;;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;;;;CHGDT0  EQU	    $
;;;;	    HEX	    10
;;;;	    HEX	    BB,BC, C5,C6, BA,BD, C2,C7, BA,C0, C0,C7, BA,C0, C0,C7
;;;;	    HEX	    BA,C0, C0,C6, BA,C0, C0,C6, BA,C0, C0,C6, B9,C0, C0,C6
;;;;	    HEX	    B8,C0, C0,C7, B8,C0, C0,C7, B8,B9, BB,C7, BB,C0, C0,C7
;;;;	    HEX	    BB,C4, C6,C6, BB,C0, C0,C4, BB,BD, C2,C4, BC,BC, C3,C3
;;;;CHGDT1  EQU	    $
;;;;	    HEX	    10
;;;;	    HEX	    BE,C0, C0,C1, BE,C0, C0,C4, BE,C0, C0,C4, BE,C0, C0,C4
;;;;	    HEX	    BE,C0, C0,C4, BE,C0, C0,C1, BE,C0, C0,C1, BC,C0, C0,C3
;;;;	    HEX	    BB,C0, C0,C4, BA,C0, C0,C5, B9,C0, C0,C6, B9,BE, C1,C6
;;;;	    HEX	    B9,BE, C1,C6, B9,C0, C0,C6, BA,C0, C0,C5, BB,C0, C0,C4
;;;;CHGDT2  EQU	    $
;;;;	    HEX	    20
;;;;	    HEX	    B9,C0, C0,C2, B9,C2, C5,CD, BA,C0, C0,CD, BB,C0, C0,CC
;;;;	    HEX	    BC,C0, C0,CB, BB,C0, C0,CB, BB,C0, C0,CD, BB,C0, C0,CE
;;;;	    HEX	    B9,CB, CD,CE, B8,CA, CD,CE, B8,CA, CC,CD, B9,C9, CC,CD
;;;;	    HEX	    BA,C8, CC,CC, BA,C7, CC,CD, B9,C6, CD,CE, B8,C7, CF,CF
;;;;	    HEX	    B8,C0, C0,C8, B8,C0, C0,C8, BB,C0, C0,C8, BC,C0, C0,C8
;;;;	    HEX	    BB,C0, C0,CB, BB,C0, C0,CC, BD,C0, C0,CD, BB,C0, C0,CE
;;;;	    HEX	    BA,C0, C0,CE, B9,C0, C0,CE, B9,C0, C0,CE, B9,C0, C0,CD
;;;;	    HEX	    BA,C2, C4,CC, BB,C1, C5,CB, BD,C0, C6,CA, C1,C0, C1,C0
;;;;CHGDT3  EQU	    $
;;;;	    HEX	    1E
;;;;	    HEX	    B5,C0, C0,C2, B5,C0, C0,C2, B5,C0, C0,C2, B6,C0, C0,C1
;;;;	    HEX	    B6,C0, C0,C0, B6,C0, C0,C2, B5,C0, C0,C3, B5,C0, C0,C3
;;;;	    HEX	    B4,C0, C0,C3, B4,C0, C0,C2, B4,C0, C0,C3, B4,C0, C0,C3
;;;;	    HEX	    B6,C0, C0,C3, B8,C0, C0,C3, B9,C0, C0,C8, BC,C0, C0,CA
;;;;	    HEX	    BC,C0, C0,CB, BB,C0, C0,CC, BB,C0, C0,CC, BA,C0, C0,CC
;;;;	    HEX	    B9,C0, C0,CC, B9,C0, C0,CB, BA,C0, C0,CB, BB,C0, C0,CA
;;;;	    HEX	    BB,C0, C0,C9, BB,C0, C0,C7, BC,C0, C0,C7, BF,C0, C0,C7
;;;;	    HEX	    C0,C0, C0,C6, C1,C2, C4,C5
;;;;CHGDT4  EQU	    $
;;;;	    HEX	    36
;;;;	    HEX	    B6,C0, C0,C2, B2,C0, C0,C6, AE,C0, C0,C8, AA,C0, C0,C9
;;;;	    HEX	    A8,C0, C0,CB, A6,C0, C0,CD, A5,C0, C0,CF, A4,C0, C0,D0
;;;;	    HEX	    A5,C0, C0,D1, A9,C0, C0,D2, A8,C0, C0,D2, A8,C0, C0,D3
;;;;	    HEX	    A7,C0, C0,D3, A7,C0, C0,D4, A6,C0, C0,D5, A6,C0, C0,D5
;;;;	    HEX	    A5,C0, C4,D6, A5,BF, C5,D6, A5,BD, C6,D7, A4,B8, C6,D9
;;;;	    HEX	    A4,B8, C7,DA, A4,B7, C7,DC, A4,B7, C7,DD, A3,B7, C7,DE
;;;;	    HEX	    A3,B7, C5,DF, A3,B8, C2,DF, A3,B8, C2,DF, A3,BA, BF,DE
;;;;	    HEX	    A3,C0, C0,D8, A3,C0, C0,D8, A3,C7, CC,D8, A3,C6, CD,D8
;;;;	    HEX	    A3,C6, CD,D8, A4,C6, CD,D8, A4,C6, CD,D7, A4,C7, CC,D7
;;;;	    HEX	    A3,BC, C1,D7, A3,BB, C2,D6, A3,BB, C2,D6, A2,BB, C2,D6
;;;;	    HEX	    A2,BB, C2,D5, A1,BC, C1,D5, A1,C0, C0,D4, A0,C0, C0,D3
;;;;	    HEX	    A0,A8, AA,D3, A0,A5, AB,D2, A1,A2, AC,D1, AD,C0, C0,D0
;;;;	    HEX	    AF,C0, C0,CF, B1,C0, C0,CD, B2,C0, C0,CC, B5,C0, C0,CA
;;;;	    HEX	    B8,C0, C0,C7, BA,C0, C0,C4
;;;;CHGDT5  EQU	    $
;;;;	    HEX	    7F
;;;;	    HEX	    C0,C0, C0,C0, C0,C0, C0,C0, C0,C0, C0,C0, C0,C0, C0,C0
;;;;	    HEX	    BF,C0, C0,C1, BF,C0, C0,C1, BF,C0, C0,C1, BF,C0, C0,C1
;;;;	    HEX	    BE,C0, C0,C2, BE,C0, C0,C2, BE,C0, C0,C2, BE,C0, C0,C2
;;;;	    HEX	    BD,C0, C0,C3, BD,C0, C0,C3, BD,C0, C0,C3, BD,C0, C0,C3
;;;;	    HEX	    BC,C0, C0,C4, BC,C0, C0,C4, BC,C0, C0,C4, BC,C0, C0,C4
;;;;	    HEX	    BB,C0, C0,C5, BB,C0, C0,C5, BB,C0, C0,C5, BB,C0, C0,C5
;;;;	    HEX	    BA,C0, C0,C6, BA,C0, C0,C6, BA,C0, C0,C6, BA,C0, C0,C6
;;;;	    HEX	    B9,C0, C0,C7, B9,C0, C0,C7, B9,C0, C0,C7, B9,C0, C0,C7
;;;;	    HEX	    B8,C0, C0,C8, B8,C0, C0,C8, B8,C0, C0,C8, B8,C0, C0,C8
;;;;	    HEX	    B7,C0, C0,C9, B7,C0, C0,C9, B7,C0, C0,C9, B7,C0, C0,C9
;;;;	    HEX	    B6,C0, C0,CA, B6,C0, C0,CA, B6,C0, C0,CA, B6,C0, C0,CA
;;;;	    HEX	    B5,C0, C0,CB, B5,C0, C0,CB, B5,C0, C0,CB, B5,C0, C0,CB
;;;;	    HEX	    B4,C0, C0,CC, B4,C0, C0,CC, B4,C0, C0,CC, B4,C0, C0,CC
;;;;	    HEX	    B3,C0, C0,CD, B3,C0, C0,CD, B3,C0, C0,CD, B3,C0, C0,CD
;;;;	    HEX	    B2,C0, C0,CE, B2,C0, C0,CE, B2,C0, C0,CE, B2,C0, C0,CE
;;;;	    HEX	    B1,C0, C0,CF, B1,C0, C0,CF, B1,C0, C0,CF, B1,C0, C0,CF
;;;;	    HEX	    B0,C0, C0,D0, B0,C0, C0,D0, B0,C0, C0,D0, B0,C0, C0,D0
;;;;	    HEX	    AF,C0, C0,D1, AF,C0, C0,D1, AF,C0, C0,D1, AF,C0, C0,D1
;;;;	    HEX	    AE,C0, C0,D2, AE,C0, C0,D2, AE,C0, C0,D2, AE,C0, C0,D2
;;;;	    HEX	    AD,C0, C0,D3, AD,C0, C0,D3, AD,C0, C0,D3, AD,C0, C0,D3
;;;;	    HEX	    AC,C0, C0,D4, AC,C0, C0,D4, AC,C0, C0,D4, AC,C0, C0,D4
;;;;	    HEX	    AB,C0, C0,D5, AB,C0, C0,D5, AB,C0, C0,D5, AB,C0, C0,D5
;;;;	    HEX	    AA,C0, C0,D6, AA,C0, C0,D6, AA,C0, C0,D6, AA,C0, C0,D6
;;;;	    HEX	    A9,C0, C0,D7, A9,C0, C0,D7, A9,C0, C0,D7, A9,C0, C0,D7
;;;;	    HEX	    A8,C0, C0,D8, A8,C0, C0,D8, A8,C0, C0,D8, A8,C0, C0,D8
;;;;	    HEX	    A7,C0, C0,D9, A7,C0, C0,D9, A7,C0, C0,D9, A7,C0, C0,D9
;;;;	    HEX	    A6,C0, C0,DA, A6,C0, C0,DA, A6,C0, C0,DA, A6,C0, C0,DA
;;;;	    HEX	    A5,C0, C0,DB, A5,C0, C0,DB, A5,C0, C0,DB, A5,C0, C0,DB
;;;;	    HEX	    A4,C0, C0,DC, A4,C0, C0,DC, A4,C0, C0,DC, A4,C0, C0,DC
;;;;	    HEX	    A3,C0, C0,DD, A3,C0, C0,DD, A3,C0, C0,DD, A3,C0, C0,DD
;;;;	    HEX	    A2,C0, C0,DE, A2,C0, C0,DE, A2,C0, C0,DE, A2,C0, C0,DE
;;;;	    HEX	    A1,C0, C0,DF, A1,C0, C0,DF, A1,C0, C0,DF
;;;;CHGDT6  EQU	    $
;;;;	    HEX	    20
;;;;	    HEX	    BB,BF, BF,C4, B9,BF, BF,C6, B8,BF, BF,C7, B7,BF, BF,C8
;;;;	    HEX	    B6,BF, BF,C9, B6,BF, BF,C9, B5,BF, BF,CA, B5,BF, BF,CA
;;;;	    HEX	    B4,B9, BB,CB, B4,B8, BC,CB, B4,B7, BD,CB, B4,B6, BE,CB
;;;;	    HEX	    B4,B7, BD,CB, B4,B8, BC,CB, B4,B9, BB,CB, B4,BF, BF,CB
;;;;	    HEX	    B4,BF, BF,CB, B4,C1, C5,CB, B5,C0, C6,CA, B5,BF, C7,CA
;;;;	    HEX	    B5,BE, C8,CA, B6,BE, C8,C9, B6,BE, C8,C9, B7,BF, C7,C8
;;;;	    HEX	    B7,C0, C6,C8, B8,C1, C5,C7, B8,BF, BF,C7, B9,BF, BF,C6
;;;;	    HEX	    BA,BF, BF,C5, BB,BF, BF,C4, BC,BF, BF,C3, BE,BF, BF,C1
;;;;CHGDT7  EQU	    $
;;;;	    HEX	    40
;;;;	    HEX	    B4,D3, D8,E7, B1,D3, D8,E7, AE,D3, D8,E7, AB,D3, D8,E7
;;;;	    HEX	    A9,D3, D3,E7, A7,D1, D1,E7, A5,D0, D0,E7, A5,CE, CE,E7
;;;;	    HEX	    A7,CC, CC,E7, A9,CB, CB,E7, AB,C9, C9,E7, AD,C8, C8,E7
;;;;	    HEX	    AF,C6, C6,E7, AF,C4, C4,E7, B0,C3, C3,E7, B0,C1, C1,E7
;;;;	    HEX	    B0,C0, C0,E7, 9C,BE, BE,E7, 9B,BC, BC,E7, 9B,BB, BB,E7
;;;;	    HEX	    9A,B9, B9,E7, 9A,B8, B8,E7, 9A,B6, B6,E7, 99,B4, B4,E7
;;;;	    HEX	    99,B3, B3,E7, 99,B1, B1,E7, 99,B0, B0,E7, 98,AE, AE,E7
;;;;	    HEX	    98,AC, AC,E7, 98,AB, AB,E7, 98,A9, A9,E7, 98,A8, A8,E7
;;;;	    HEX	    98,A2, A8,E7, 98,A1, AB,E7, 98,A0, AC,E7, 98,9F, AD,E7
;;;;	    HEX	    98,A1, AF,E7, 99,A2, AF,E7, 99,A3, AF,E7, 99,A4, B0,E7
;;;;	    HEX	    99,A5, B0,E7, 9A,A6, B0,E7, 9A,A7, B0,E7, 9A,A8, B0,E7
;;;;	    HEX	    9B,A9, B0,E7, 9B,AA, B0,E7, 9C,AB, AF,E7, 9C,AC, AE,E7
;;;;	    HEX	    9D,AE, AE,E7, 9D,B1, B1,E7, 9E,B5, B5,E7, 9F,B8, B8,E7
;;;;	    HEX	    A0,BC, BC,E7, A1,BF, BF,E7, A2,C2, C2,E7, A3,C6, C6,E7
;;;;	    HEX	    A4,C9, C9,E7, A5,CC, CC,E7, A7,D0, D0,E7, A9,D3, D3,E7
;;;;	    HEX	    AB,D3, D8,E7, AE,D3, D8,E7, B1,D3, D8,E7, B4,D3, D8,E7
;;;;CHGDT8  EQU	    $
;;;;	    HEX	    3E
;;;;	    HEX	    B4,B5, BE,CF, B4,B5, BE,CF, B4,B5, C1,CC, B4,B5, C1,CC
;;;;	    HEX	    B2,B7, C1,CC, B2,B7, C0,CD, B2,B7, C0,CD, B2,B7, C0,CD
;;;;	    HEX	    B2,B7, BE,CF, B2,B7, BE,CF, B0,B9, BE,CF, B0,B9, BE,CF
;;;;	    HEX	    B0,B9, BE,D1, B0,B9, BE,D1, B0,B9, BC,D1, B0,B9, BC,D1
;;;;	    HEX	    AE,C0, C0,D3, AE,C0, C0,D3, AE,C0, C0,D3, AE,C0, C0,D3
;;;;	    HEX	    AE,C0, C0,D5, AE,C0, C0,D5, AC,C0, C0,D5, AC,C0, C0,D5
;;;;	    HEX	    AC,C0, C0,D7, AC,C0, C0,D7, AC,C0, C0,D7, AC,C0, C0,D7
;;;;	    HEX	    B2,C4, C4,D7, B2,C4, C4,D7, B2,C4, C4,D7, B2,C4, C4,D7
;;;;	    HEX	    B4,B5, B8,D7, B4,B5, BA,D7, B4,B5, BA,D5, B4,B5, BA,D5
;;;;	    HEX	    B0,B3, BC,D1, B0,B3, BC,D1, C2,C7, C7,CB, C2,C7, C7,CB
;;;;	    HEX	    C0,C7, C7,CD, C0,C7, C7,CD, BE,C7, C7,CF, BE,C7, C7,CF
;;;;	    HEX	    BC,C7, C7,D1, BC,C7, C7,D1, BA,C7, C7,D3, BA,C7, C7,D3
;;;;	    HEX	    B8,C7, C7,D5, B8,C7, C7,D5, B8,C7, C7,D5, B8,C7, C7,D5
;;;;	    HEX	    B8,C7, C7,D5, B8,C7, C7,D5, B8,C7, C7,D5, B8,C7, C7,D5
;;;;	    HEX	    BA,C7, C7,D3, BA,C7, C7,D3, BC,C7, C7,D1, BC,C7, C7,D1
;;;;	    HEX	    C0,C5, C8,CD, C0,C5, C8,CD
;;;;CHGDT9  EQU	    $
;;;;	    HEX	    4F
;;;;	    HEX	    B5,B9, BE,C2, B6,B9, BE,C1, B8,B9, BE,BF, B8,B9, BE,BF
;;;;	    HEX	    B7,BA, BD,C0, B7,BA, BD,C0, B7,BA, BD,C0, B7,BA, BD,C0
;;;;	    HEX	    B7,BA, BD,C0, B7,BA, BD,C0, B7,BA, BD,C0, B7,BA, BD,C0
;;;;	    HEX	    B7,BA, BD,C0, B7,BA, BD,C0, B7,BA, BD,C0, B7,BA, BD,C0
;;;;	    HEX	    B7,C0, C2,C2, B7,BD, BD,C2, B7,C0, C2,C2, B7,BD, BD,C3
;;;;	    HEX	    B7,BD, BD,C3, B7,BD, BD,C3, B7,BD, BD,C3, B0,B4, B7,C3
;;;;	    HEX	    AF,B4, B7,C3, AE,B2, B7,C3, AD,B1, B7,C3, AC,B0, B7,C3
;;;;	    HEX	    AB,AF, B7,C3, AA,BB, BB,C3, A9,BB, BB,C3, A8,BB, BB,C3
;;;;	    HEX	    A8,BB, BB,C3, BA,BB, BB,BD, BA,BB, BB,BD, BA,BB, BB,BD
;;;;	    HEX	    BA,BB, BB,BD, BA,BB, BB,BD, B9,BB, BB,BE, B7,BB, BB,C0
;;;;	    HEX	    B5,BB, BB,C2, B3,BB, BB,C4, B2,BB, BB,C5, B0,BB, BB,C7
;;;;	    HEX	    AF,BB, BB,C8, AE,BB, BB,C9, AD,BB, BB,CA, AC,BB, BB,CB
;;;;	    HEX	    AC,BB, BB,CB, AC,BB, BB,CB, AA,BB, BB,CD, A9,BB, BB,CE
;;;;	    HEX	    A9,BB, BB,CE, A7,BB, BB,D0, A7,BB, BB,D0, A7,BB, BB,D0
;;;;	    HEX	    A7,BB, BB,D0, A7,BB, BB,D0, A7,BB, BB,D0, A7,BB, BB,D0
;;;;	    HEX	    A7,BB, BB,D0, A7,BB, BB,D0, A7,BB, BB,D0, A7,BB, BB,D0
;;;;	    HEX	    A7,BB, BB,D0, A7,BB, BB,CF, A8,BB, BB,CF, A8,BB, BB,CF
;;;;	    HEX	    A9,BB, BB,CE, A9,BB, BB,CE, AA,BB, BB,CD, AB,BB, BB,CC
;;;;	    HEX	    AD,BB, BB,CA, AF,BB, BB,C8, B0,BB, BB,C7, B3,BB, BB,C4
;;;;	    HEX	    BB,BC, BC,BC, BA,BA, BD,BD, B9,B9, BE,BE
;;;;CHGDTA  EQU	    $
;;;;	    HEX	    38
;;;;	    HEX	    A3,C0, C0,DC, A3,C0, C0,DC, A4,C0, C0,DB, A4,C0, C0,DB
;;;;	    HEX	    A4,C0, C0,DB, A5,C0, C0,DA, A5,C0, C0,DA, A5,C0, C0,DA
;;;;	    HEX	    A6,C0, C0,D9, A6,C0, C0,D9, A6,C0, C0,D9, A7,C0, C0,D8
;;;;	    HEX	    A7,C0, C0,D8, A7,C0, C0,D8, A8,C0, C0,D7, A8,C0, C0,D7
;;;;	    HEX	    B0,C0, C0,CF, B0,C0, C0,CF, B0,C0, C0,CF, B0,C0, C0,CF
;;;;	    HEX	    B0,C0, C0,CF, B0,C0, C0,CF, B0,C0, C0,CF, B0,C0, C0,CF
;;;;	    HEX	    B0,C0, C0,CF, B0,C0, C0,CF, B0,C0, C0,CF, B0,C2, CD,CF
;;;;	    HEX	    B0,C0, C0,CF, B0,C0, C0,CF, B0,C0, C0,CF, B0,C0, C0,CF
;;;;	    HEX	    B0,C0, C0,CF, B0,C0, C0,CF, B0,C0, C0,CF, B0,C0, C0,CF
;;;;	    HEX	    B0,B2, CD,CF, B0,B2, CD,CF, B0,B2, CD,CF, B0,B2, CD,CF
;;;;	    HEX	    B0,B2, CD,CF, B0,B2, CD,CF, B0,B2, CD,CF, B0,B2, CD,CF
;;;;	    HEX	    B0,B2, CD,CF, B0,B2, CD,CF, B0,B2, CD,CF, B0,B2, CD,CF
;;;;	    HEX	    B0,B2, CD,CF, B0,B2, CD,CF, B0,B2, CD,CF, B0,B2, CD,CF
;;;;	    HEX	    B0,C0, C0,CF, B0,C0, C0,CF, B0,C0, C0,CF, B0,C0, C0,CF
;;;;;
;;;;;
;;;;KAGADR	    EQU	    $-2
;;;;		    WORD    CHGDT0,CHGDT1,CHGDT2,CHGDT3,CHGDT4,CHGDT5,CHGDT6,CHGDT7
;;;;		    WORD    CHGDT8,CHGDT9,CHGDTA
;;;;KAGADD	    EQU	    $
;;;;		    BYTE    000H,0FEH,002H
;;;;KAGCMP	    EQU	    $
;;;;		    BYTE    000H,002H,KAGADD-KAGADR-2
;;;;;
;;;;KAGCAD	    EQU	    $
;;;;		    WORD    00000H,0FFF8H,00008H
;;;;KAGCPD	    EQU	    $
;;;;		    WORD    00000H,00000H,00100H
;;;;;
;;;;KAGE	    EQU	    $
;;;;		    LDA	    KEYB2
;;;;		    AND	    #00100000B
;;;;		    BEQ	    KAG020
;;;;		    LDY	    #00H
;;;;		    LDA	    SPWINF
;;;;		    BNE	    KAG010
;;;;		    LDY	    #02H
;;;;KAG010	    EQU	    $
;;;;		    STY	    SPWINF
;;;;		    STY	    SPWINF+1
;;;;KAG020	    EQU	    $
;;;;		    LDA	    SPWINF
;;;;		    BEQ	    KAG090
;;;;;
;;;;		    LDA	    KEYB2
;;;;		    AND	    #00001100B
;;;;		    LSR	    A
;;;;		    LSR	    A
;;;;		    TAY
;;;;		    LDA	    SPWINF
;;;;		    CMP	    !KAGCMP,Y
;;;;		    BEQ	    KAG030
;;;;		    CLC
;;;;		    ADC	    !KAGADD,Y
;;;;		    STA	    SPWINF
;;;;KAG030	    EQU	    $
;;;;		    LDA	    KEYB2
;;;;		    AND	    #00000011B
;;;;		    TAY
;;;;		    LDA	    SPWINF+1
;;;;		    CMP	    !KAGCMP,Y
;;;;		    BEQ	    KAG040
;;;;		    CLC
;;;;		    ADC	    !KAGADD,Y
;;;;		    STA	    SPWINF+1
;;;;KAG040	    EQU	    $
;;;;		    LDA	    KEYB1L
;;;;		    AND	    #00110000B
;;;;		    LSR	    A
;;;;		    LSR	    A
;;;;		    LSR	    A
;;;;		    TAY
;;;;;
;;;;		    M16
;;;;;
;;;;		    LDA	    SPWINC
;;;;		    CMP	    !KAGCPD,Y
;;;;		    BEQ	    KAG050
;;;;		    CLC
;;;;		    ADC	    !KAGCAD,Y
;;;;		    STA	    SPWINC
;;;;KAG050	    EQU	    $
;;;;		    STA	    >R3
;;;;		    LDY	    SPWINF
;;;;		    LDA	    !KAGADR,Y
;;;;		    STA	    >R1
;;;;		    LDY	    SPWINF+1
;;;;		    LDA	    !KAGADR,Y
;;;;		    STA	    >R2
;;;;		    LDA	    #BANK CHGDT0
;;;;		    STA	    >R0
;;;;;
;;;;		    LDX	    #BANK CHANGE
;;;;		    LDA	    #CHANGE
;;;;		    JSL	    >CHIPON
;;;;;
;;;;		    JMP	    SPWD040
;;;;;
;;;;		    MEM8
;;;;;
;;;;KAG090	    EQU	    $
;;;;		    RTS
;;;;;
;;;;		    MEM8
;;;;		    IDX8
;
;********************************************************
;*							*
;*		ＢＧコイン セット チェック		*
;*				in			*
;*				X : data set index	*
;********************************************************
BGCIN_STCHK_ADR EQU	$
		WORD	SV_COIN_BF0,SV_COIN_BF1
		WORD	SV_COIN_BF2,SV_COIN_BF3
;
BGCIN_STCHK_DAT EQU	$
		WORD	1000000000000000B
		WORD	0100000000000000B
		WORD	0010000000000000B
		WORD	0001000000000000B
		WORD	0000100000000000B
		WORD	0000010000000000B
		WORD	0000001000000000B
		WORD	0000000100000000B
		WORD	0000000010000000B
		WORD	0000000001000000B
		WORD	0000000000100000B
		WORD	0000000000010000B
		WORD	0000000000001000B
		WORD	0000000000000100B
		WORD	0000000000000010B
		WORD	0000000000000001B
;
		MEM16
		IDX16
BGCOIN_SETCHK	EQU	$
		LDA	#08000H
		STA	<WORK2
		TXA
		LSR	A
		AND	#0000FH
BGCIN_STCHK_00	EQU	$
		LSR	<WORK2
		DEC	A
		BPL	BGCIN_STCHK_00
;
		PHX
		LDA	<CORSNO
		ASL	A
		TAX
		LDA	>BGCIN_STCHK_ADR,X
		STA	<WORK0
		PLX
;
		LDA	<XYPOINT
		XBA
		AND	#000FFH
		TAY
		LDA	!UNBUFAD,Y
		AND	#0003FH
		ASL	A
		TAY
		LDA	(<WORK0),Y
		AND	<WORK2
;
;----------------------------------------------- ＴＯＯＬのみ !!
		LDA	#00000
;----------------------------------------------- ＴＯＯＬのみ !!
;
		RTL
		MEM8
		IDX8
;
;
;************************************************************************
;*									*
;*		ＢＧ２スクリーン初期セット				*
;*									*
;************************************************************************
;
;------------------------------------------------------------------------
;-		ＢＧ２スクリーンデータテーブル				-
;------------------------------------------------------------------------
BG2_SCR_TBL	EQU	$			;[BG2TYP]
		WORD	BG2_SCR_00-BG2_SCR_DATA ;[ 0]
		WORD	BG2_SCR_01-BG2_SCR_DATA ;[ 1]
		WORD	BG2_SCR_02-BG2_SCR_DATA ;[ 2]
		WORD	BG2_SCR_03-BG2_SCR_DATA ;[ 3]
		WORD	BG2_SCR_04-BG2_SCR_DATA ;[ 4]
		WORD	BG2_SCR_05-BG2_SCR_DATA ;[ 5]
		WORD	BG2_SCR_06-BG2_SCR_DATA ;[ 6]
		WORD	BG2_SCR_07-BG2_SCR_DATA ;[ 7]
		WORD	BG2_SCR_08-BG2_SCR_DATA ;[ 8]
		WORD	BG2_SCR_09-BG2_SCR_DATA ;[ 9]
		WORD	BG2_SCR_0A-BG2_SCR_DATA ;[ A]
		WORD	BG2_SCR_0B-BG2_SCR_DATA ;[ B]
		WORD	BG2_SCR_0C-BG2_SCR_DATA ;[ C]
		WORD	BG2_SCR_0D-BG2_SCR_DATA ;[ D]
		WORD	BG2_SCR_0E-BG2_SCR_DATA ;[ E]
		WORD	BG2_SCR_0F-BG2_SCR_DATA ;[ F]
		WORD	BG2_SCR_10-BG2_SCR_DATA ;[10]
		WORD	BG2_SCR_11-BG2_SCR_DATA ;[11]
		WORD	BG2_SCR_12-BG2_SCR_DATA ;[12]
		WORD	BG2_SCR_13-BG2_SCR_DATA ;[13]
		WORD	BG2_SCR_14-BG2_SCR_DATA ;[14]
		WORD	BG2_SCR_15-BG2_SCR_DATA ;[15]
		WORD	BG2_SCR_16-BG2_SCR_DATA ;[16]
		WORD	BG2_SCR_17-BG2_SCR_DATA ;[17]
		WORD	BG2_SCR_18-BG2_SCR_DATA ;[18]
		WORD	BG2_SCR_19-BG2_SCR_DATA ;[19]
		WORD	BG2_SCR_1A-BG2_SCR_DATA ;[1A]
		WORD	BG2_SCR_1B-BG2_SCR_DATA ;[1B]
		WORD	BG2_SCR_1C-BG2_SCR_DATA ;[1C]
		WORD	BG2_SCR_1D-BG2_SCR_DATA ;[1D]
		WORD	BG2_SCR_1E-BG2_SCR_DATA ;[1E]
		WORD	BG2_SCR_1F-BG2_SCR_DATA ;[1F]
;
;------------------------------------------------------------------------
;-		ＢＧ２背景スクリーンデータ				-
;------------------------------------------------------------------------
BG2_SCR_DATA	EQU	$
;
;----------------------------------------------------------------
;-		地下滝						-
;----------------------------------------------------------------
BG2_SCR_00	EQU	$
		HEX	0		;ＢＧ２ループ背景スクリーンタイプ
		BYTE	B2CHIKA
;
;----------------------------------------------------------------
;-		月						-
;----------------------------------------------------------------
BG2_SCR_01	EQU	$
		HEX	0		;ＢＧ２ループ背景スクリーンタイプ
		BYTE	B2HATITUKI
;
;;;;K;;;;		HEX	001H		; 部分スクロール
;;;;K;;;;		HEX	000H
;;;;K;;;;;
;;;;K;;;;		WORD	BG2_SCR_01_0
;;;;K;;;;;
;;;;K;;;;BG2_SCR_01_0	EQU	$
;;;;K;;;;		BYTE	000H
;;;;K;;;;		WORD	00080H
;;;;K;;;;		WORD	00100H*2+(10H*1CH)+7
;;;;K;;;;		BYTE	000H
;;;;K;;;;		WORD	00140H
;;;;K;;;;		WORD	00100H*8	;end line
;
;----------------------------------------------------------------
;-		水中						-
;----------------------------------------------------------------
BG2_SCR_02	EQU	$
		HEX	0		;ＢＧ２ループ背景スクリーンタイプ
		BYTE	B2MIZU
;
;----------------------------------------------------------------
;-		溶岩						-
;----------------------------------------------------------------
BG2_SCR_03	EQU	$
		HEX	0		;ＢＧ２ループ背景スクリーンタイプ
		BYTE	B2NAMI
;
;----------------------------------------------------------------
;-		雪						-
;----------------------------------------------------------------
BG2_SCR_04	EQU	$
		HEX	0		;ＢＧ２ループ背景スクリーンタイプ
		BYTE	B2YAMA
;
;----------------------------------------------------------------
;-		ＲＥＤ ＷＯＯＤＳ				-
;----------------------------------------------------------------
BG2_SCR_05	EQU	$
		HEX	4		;ＢＧ２ループ背景スクリーンタイプ
		BYTE	B2RDWOD
;
		HEX	001H		; 部分スクロール
		HEX	000H
;
		WORD	BG2_SCR_05_0
;
BG2_SCR_05_0	EQU	$
		BYTE	000H
		WORD	000B0H
		WORD	00100H*2+(10H*0FH)+7
		BYTE	000H
		WORD	000A0H
		WORD	00100H*2+(10H*10H)+7
		BYTE	000H
		WORD	00090H
		WORD	00100H*2+(10H*11H)+7
		BYTE	000H
		WORD	00080H
		WORD	00100H*2+(10H*12H)+7
		BYTE	000H
		WORD	00070H
		WORD	00100H*2+(10H*13H)+7
		BYTE	000H
		WORD	00060H
		WORD	00100H*2+(10H*14H)+7
		BYTE	000H
		WORD	00050H
		WORD	00100H*2+(10H*15H)+7
		BYTE	000H
		WORD	00040H
		WORD	00100H*2+(10H*16H)+7
		BYTE	000H
		WORD	000C0H
		WORD	00100H*8	;end line
;
;----------------------------------------------------------------
;-		カベ						-
;----------------------------------------------------------------
BG2_SCR_06	EQU	$
		HEX	0		;ＢＧ２ループ背景スクリーンタイプ
		BYTE	B2KABE
;
;----------------------------------------------------------------
;-		パステル（雲無し）				-
;----------------------------------------------------------------
BG2_SCR_07	EQU	$
		HEX	0		;ＢＧ２ループ背景スクリーンタイプ
		BYTE	B2PAST2
;
;----------------------------------------------------------------
;-		森						-
;----------------------------------------------------------------
BG2_SCR_08	EQU	$
		HEX	0		;ＢＧ２ループ背景スクリーンタイプ
		BYTE	B2MORI
;
;----------------------------------------------------------------
;-		パステル（雲付き）				-
;----------------------------------------------------------------
BG2_SCR_09	EQU	$
		HEX	2		;ＢＧ２書き換え背景スクリーンタイプ
;
		BYTE	B2ENKIN2
;
;----------------------------------------------------------------
;-		ハチ滝						-
;----------------------------------------------------------------
BG2_SCR_0A	EQU	$
		HEX	0		;ＢＧ２ループ背景スクリーンタイプ
		BYTE	B2HTTAKI
;
;----------------------------------------------------------------
;-		ワンワンドスン					-
;----------------------------------------------------------------
BG2_SCR_0B	EQU	$
		HEX	0		;ＢＧ２ループ背景スクリーンタイプ
		BYTE	B2YUKA
;
;----------------------------------------------------------------
;-		スター						-
;----------------------------------------------------------------
BG2_SCR_0C	EQU	$
		HEX	0		;ＢＧ２ループ背景スクリーンタイプ
		BYTE	B2JUNGLE
;
;----------------------------------------------------------------
;-		マルペケ					-
;----------------------------------------------------------------
BG2_SCR_0D	EQU	$
		HEX	0		;ＢＧ２ループ背景スクリーンタイプ
		BYTE	B2STAR
;
;----------------------------------------------------------------
;-		グルグル					-
;----------------------------------------------------------------
BG2_SCR_0E	EQU	$
		HEX	0		;ＢＧ２ループ背景スクリーンタイプ
		BYTE	B2GULGUL
;
;----------------------------------------------------------------
;-		フジ山						-
;----------------------------------------------------------------
BG2_SCR_0F	EQU	$
		HEX	4		;ＢＧ２ループ背景スクリーンタイプ
		BYTE	B2FUJI
;
		HEX	001H		; 部分スクロール
		HEX	000H
;
		WORD	BG2_SCR_0F_0
;
BG2_SCR_0F_0	EQU	$
		BYTE	000H
		WORD	00028H
		WORD	00100H*0+(10H*19H)+7
		BYTE	000H
		WORD	00016H
		WORD	00100H*0+(10H*1BH)+7
		BYTE	000H
		WORD	00028H
		WORD	00100H*0+(10H*1DH)+7
		BYTE	000H
		WORD	00016H
		WORD	00100H*0+(10H*1FH)+7
		BYTE	000H
		WORD	00028H
		WORD	00100H*2+(10H*01H)+7
		BYTE	000H
		WORD	00016H
		WORD	00100H*2+(10H*03H)+7
		BYTE	000H
		WORD	00028H
		WORD	00100H*2+(10H*05H)+7
		BYTE	000H
		WORD	00028H
		WORD	00100H*2+(10H*07H)+7
		BYTE	000H
		WORD	00040H
		WORD	00100H*2+(10H*0BH)+7
		BYTE	000H
		WORD	00080H
		WORD	00100H*4	;end line
;
;----------------------------------------------------------------
;-		遠近両用の遠景					-
;----------------------------------------------------------------
BG2_SCR_10	EQU	$
		HEX	0		;ＢＧ２ループ背景スクリーンタイプ
		BYTE	B2ENKIN2
;
;----------------------------------------------------------------
;-								-
;----------------------------------------------------------------
BG2_SCR_11	EQU	$
		HEX	0		;ＢＧ２ループ背景スクリーンタイプ
		BYTE	B2FUJI
;
;----------------------------------------------------------------
;-		空						-
;----------------------------------------------------------------
BG2_SCR_12	EQU	$
		HEX	0		;ＢＧ２ループ背景スクリーンタイプ
		BYTE	B2SORA
;
;----------------------------------------------------------------
;-		地下いわ					-
;----------------------------------------------------------------
BG2_SCR_13	EQU	$
		HEX	0		;ＢＧ２ループ背景スクリーンタイプ
		BYTE	B2IWA
;
;----------------------------------------------------------------
;-		万次郎						-
;----------------------------------------------------------------
BG2_SCR_14	EQU	$
		HEX	0		;ＢＧ２ループ背景スクリーンタイプ
		BYTE	B2WODKB
;
;----------------------------------------------------------------
;-		岩山						-
;----------------------------------------------------------------
BG2_SCR_15	EQU	$
		HEX	0		;ＢＧ２ループ背景スクリーンタイプ
		BYTE	B2IWAYAM
;
;----------------------------------------------------------------
;-		ＢＧ２敵					-
;----------------------------------------------------------------
BG2_SCR_16	EQU	$
		HEX	0		;ＢＧ２ループ背景スクリーンタイプ
		BYTE	B2TEKI
;
;----------------------------------------------------------------
;-								-
;----------------------------------------------------------------
BG2_SCR_17	EQU	$
;
;----------------------------------------------------------------
;-		ＮＩＧＨＴ					-
;----------------------------------------------------------------
BG2_SCR_18	EQU	$
		HEX	0		;ＢＧ２ループ背景スクリーンタイプ
		BYTE	B2NIGHT
;
;----------------------------------------------------------------
;-		ハチ城						-
;----------------------------------------------------------------
BG2_SCR_19	EQU	$
		HEX	0		;ＢＧ２ループ背景スクリーンタイプ
		BYTE	B2SHIRO
;
;----------------------------------------------------------------
;-		岩山２						-
;----------------------------------------------------------------
BG2_SCR_1A	EQU	$
		HEX	0		;ＢＧ２ループ背景スクリーンタイプ
		BYTE	B2IWA2
;
;----------------------------------------------------------------
;-		黒ベタ						-
;----------------------------------------------------------------
BG2_SCR_1B	EQU	$
		HEX	0		;ＢＧ２ループ背景スクリーンタイプ
		BYTE	B2BETA
;
;----------------------------------------------------------------
;-		ハチパステル					-
;----------------------------------------------------------------
BG2_SCR_1C	EQU	$
		HEX	4		;ＢＧ２ループ背景スクリーンタイプ
		BYTE	B2HCHPSTL
;
		BYTE	000H		;ラスター＆部分スクロール フラグ
		BYTE	000H		;縦ラスタースクロール フラグ
;
;;;;K;;;;		WORD	BG2_SCR_1C_0	;ラスター＆部分スクロール データアドレス
;;;;K;;;;		WORD	BG2_SCR_1C_1	;縦ラスタースクロール データアドレス
;
;;;;K;;;;BG2_SCR_1C_0	EQU	$		;部分スクロール データ
;;;;K;;;;		BYTE	000H		;ラスター＆部分スクロール 切り換えフラグ
;;;;K;;;;		WORD	0001AH
;;;;K;;;;		WORD	00100H*6+(10H*01H)+7
;;;;K;;;;		BYTE	000H
;;;;K;;;;		WORD	0002EH
;;;;K;;;;		WORD	00100H*6+(10H*05H)+7
;;;;K;;;;		BYTE	000H
;;;;K;;;;		WORD	00019H
;;;;K;;;;		WORD	00100H*6+(10H*07H)+7
;;;;K;;;;		BYTE	000H
;;;;K;;;;		WORD	0002CH
;;;;K;;;;		WORD	00100H*6+(10H*0BH)+7
;;;;K;;;;		BYTE	000H
;;;;K;;;;		WORD	00018H
;;;;K;;;;		WORD	00100H*6+(10H*0DH)+7
;;;;K;;;;		BYTE	000H
;;;;K;;;;		WORD	0002AH
;;;;K;;;;		WORD	00100H*6+(10H*10H)+7
;;;;K;;;;		BYTE	000H
;;;;K;;;;		WORD	00017H
;;;;K;;;;		WORD	00100H*6+(10H*11H)+7
;;;;K;;;;		BYTE	000H
;;;;K;;;;		WORD	00028H
;;;;K;;;;		WORD	00100H*6+(10H*14H)+7
;;;;K;;;;		BYTE	000H
;;;;K;;;;		WORD	00016H
;;;;K;;;;		WORD	00100H*6+(10H*15H)+7
;;;;K;;;;		BYTE	000H
;;;;K;;;;		WORD	00024H
;;;;K;;;;		WORD	00100H*6+(10H*18H)+7
;;;;K;;;;		BYTE	000H
;;;;K;;;;		WORD	00140H
;;;;K;;;;		WORD	00100H*8	;end line
;
;;;;K;;;;BG2_SCR_1C_1	EQU	$		; 縦ラスタースクロール
;;;;K;;;;		HEX	008H		; スピード
;;;;K;;;;		HEX	080H		; 最小値
;;;;K;;;;		WORD	00716H		; スタート ライン
;;;;K;;;;		WORD	00780H		; エンド ライン
;;;;K;;;;		WORD	0FFFFH		; end code
;
;----------------------------------------------------------------
;-		たこやき山					-
;----------------------------------------------------------------
BG2_SCR_1D	EQU	$
		HEX	0		;ＢＧ２ループ背景スクリーンタイプ
		BYTE	B2TAKOYAKI
;
;----------------------------------------------------------------
;-		杉林						-
;----------------------------------------------------------------
BG2_SCR_1E	EQU	$
		HEX	0		;ＢＧ２ループ背景スクリーンタイプ
		BYTE	B2SUGI
;
;----------------------------------------------------------------
;-		杉林						-
;----------------------------------------------------------------
BG2_SCR_1F	EQU	$
		HEX	0		;ＢＧ２ループ背景スクリーンタイプ
		BYTE	B2KOPROM
;
;------------------------------------------------------------------------
;-		ＢＧ２書き換え背景スクリーンバッファポインター		-
;------------------------------------------------------------------------
BG2_SCR_BFP	EQU	$
		WORD	BG2_SCRBUF+1800H
		WORD	BG2_SCRBUF+1000H
		WORD	BG2_SCRBUF+0800H
		WORD	BG2_SCRBUF
;
BG2_SCR_INIT	EQU	$
		LDA	!DSPMOD
		CMP	#00AH
		BNE	BG2_SCR_INT_PAS
		JMP	DBL_TELE_SCR
;
BG2_SCR_INT_PAS EQU	$
		LDA	BG2TYP
		ASL	A
		TAX
;
		MI16
;
		LDY	!BG2_SCR_TBL,X
		LDA	!BG2_SCR_DATA,Y
		AND	#00FFH
		TAX
		JMP	(!BG2_SCR_TYPE,X)
;
		MEM8
		IDX8
;
;------------------------------------------------------------------------
;-		ＢＧ２スクリーンタイプテーブル				-
;------------------------------------------------------------------------
BG2_SCR_TYPE	EQU	$
		WORD	BG2_SCR_TYPE_0	;[0] ＢＧ２ループ背景スクリーン
		WORD	00000H		;
		WORD	BG2_SCR_TYPE_2	;[2] ＢＧ２ループ背景＆特殊スクロール
;
;------------------------------------------------------------------------
;-		ＢＧ２ループ背景＆特殊スクロール			-
;------------------------------------------------------------------------
		MEM16
		IDX16
BG2_SCR_TYPE_2	EQU	$
		M8			; memory 8bit mode
		LDA	BG2_SCR_DATA+2,Y
		AND	#000FFH
		STA	!BG2SPF
		LDA	BG2_SCR_DATA+3,Y
		AND	#000FFH
		STA	!BG2SPFV
		M16			; memory 16bit mode
		LDA	BG2_SCR_DATA+4,Y
		STA	!BG2SPF_ADR
		LDA	BG2_SCR_DATA+6,Y
		STA	!BG2SPFV_ADR
;
		LDA	!BG2SPF		;ラスター＆部分スクロール セット ?
		BEQ	BG2_TYPE_2_20	;	NO -> BG2_TYPE_2_20
		LDX	#PRMTR4
		JSL	>HDMA_INIT
		STA	!BG2SPHON
		STZ	!BG2SPH_CT
;
BG2_TYPE_2_20	EQU	$
		LDA	!BG2SPFV	;縦ラスタースクロール セット ?
		BEQ	BG2_SCR_TYPE_0	;	NO -> BG2_SCR_TYPE_0
		LDX	#PRMTR5
		JSL	>HDMA_INIT
		STA	!BG2SPVON
		STZ	!BG2SPV_CT
;
;------------------------------------------------------------------------
;-		ＢＧ２ループ背景スクリーンセット			-
;------------------------------------------------------------------------
;
		MEM16
		IDX16
;
BG2_SCR_TYPE_0	EQU	$
		LDA	!BG2_SCR_DATA+1,Y	;(A) <-- 圧縮データＮｏ．
		AND	#00FFH
		LDX	#WOB7CHR		;(X) <-- 解凍先アドレス
		JSL	>UNCOMPRES
;
		STA	4305H			;number of byte set
;
		I8
;
		LDX	#10000000B		;inc mode set
		STX	2115H
		LDA	#3800H			;VRAM address set
		STA	2116H
		LDA	#00000001B+(18H*100H)	;parameter & A bus address set
		STA	4300H
		LDA	#WOB7CHR		;(A) bus address(L,H)
		STA	4302H
		LDX	#BANK WOB7CHR		;	"       (B)
		STX	4304H
		LDX	#00000001B
		STX	420BH			;DMA "ON"
;
		M8
;
		LDA	!DSPMOD
		CMP	#003		; モード２ ?
		BNE	PPPAAASSS	;	NO -> PPPAAASSS
		JSR	FRHDMA_SET
PPPAAASSS	EQU	$
		RTS
;
;------------------------------------------------------------------------
;-		ダブルテレサ用スクリーンセット				-
;------------------------------------------------------------------------
DBL_TELE_SCR	EQU	$
		MI16			; memory , index 16bit mode
		LDA	#B3SHIRO	;(A) <-- 圧縮データＮｏ．
		AND	#000FFH
		LDX	#WOB7CHR	;(X) <-- 解凍先アドレス
		JSL	>UNCOMPRES
;
		STA	4305H		;number of byte set
;
		I8			; index 8bit mode
;
		LDX	#10000000B
		STX	2115H		;inc mode set
		LDA	#3800H
		STA	2116H		;VRAM address set
		LDA	#00000001B+(18H*100H)
		STA	4300H		;parameter & A bus address set
		LDA	#WOB7CHR
		STA	4302H		;(A) bus address(L,H)
		LDX	#BANK WOB7CHR
		STX	4304H		;	"       (B)
		LDX	#00000001B
		STX	420BH		;DMA "ON"
;
		M8			; memory 8bit mode
		RTS
;
;------------------------------------------------------------------------
;-		よっぱらい ＨＤＭＡ セット				-
;------------------------------------------------------------------------
FRHDMA_prmtr0	EQU	$		; ラスタースクロール
		BYTE	000H
		WORD	00080H
		WORD	00100H*8
		BYTE	002H		; 周期
;
FRHDMA_prmtr1	EQU	$		; 縦ラスタースクロール
		HEX	001H		; ラスター ＯＮ
		WORD	00100H*8	;end line
		HEX	0FFH		; end code
;
;
FRHDMA_SET	EQU	$
		INC	!BG2SPF
		INC	!BG2SPF
		INC	!BG2SPFV
;
		M16			; memory 16bit mode
		LDA	#FRHDMA_prmtr0
		STA	!BG2SPF_ADR
		LDA	#FRHDMA_prmtr1
		STA	!BG2SPFV_ADR
;
		I16			; index 16bit mode
		LDA	!BG2SPF		;ラスター＆部分スクロール セット ?
		BEQ	FRHDMA_SET_050	;	NO -> FRHDMA_SET_050
		LDX	#PRMTR4
		JSL	>HDMA_INIT
		STA	!BG2SPHON
		STZ	!BG2SPH_CT
;
FRHDMA_SET_050	EQU	$
		LDA	!BG2SPFV	;縦ラスタースクロール セット ?
		BEQ	FRHDMA_SET_090	;	NO -> FRHDMA_SET_090
		LDX	#PRMTR5
		JSL	>HDMA_INIT
		STA	!BG2SPVON
		STZ	!BG2SPV_CT
;
FRHDMA_SET_090	EQU	$
		MI8			; memory , index 8bit mode
		RTS
;
;
;************************************************************************
;*									*
;*		ＢＧ３スクリーン初期セット				*
;*									*
;************************************************************************
;
;------------------------------------------------------------------------
;-		ＢＧ３スクリーンクリアーデータ				-
;------------------------------------------------------------------------
BG3SCRCLR	EQU	$
		WORD	3400H,4000H+(800H-1)
		WORD		01CEH
		WORD	0FFFFH
;
;------------------------------------------------------------------------
;-		ＢＧ３スクリーンクリアーデータ（ＢＧ３ワンワン）	-
;------------------------------------------------------------------------
BG3WANCLR	EQU	$
		WORD	3400H,4000H+(800H-1)
		WORD		0111H
		WORD	0FFFFH
;
;------------------------------------------------------------------------
;-		ＢＧ３スクリーンクリアーデータ（ＢＧ３水上アスレチック）-
;------------------------------------------------------------------------
BG3WTRCLR	EQU	$
		WORD	3400H,4000H+(800H-1)
		WORD		01CEH
		WORD	0FFFFH
;
;------------------------------------------------------------------------
;-		ＢＧ３スクリーンデータテーブル				-
;------------------------------------------------------------------------
BG3_SCR_TBL	EQU	$-3					;[BG3TYP]
		WORD	B3MIZU
		BYTE	BG3_SP_SCR_00-BG3_SP_SCR_DATA	;[ 1:水中（部分スクロール）]
		WORD	B3TEKI0
		BYTE	0FFH				;[ 2:ＢＧ３敵（カベ、オバケｅｔｃ）]
		WORD	B3PAST1
		BYTE	0				;[ 3:パステル]
		WORD	B3PAST1
		BYTE	0				;[ 4:	”   ２]
		WORD	B3TEKI1
		BYTE	0FFH				;[ 5:ＢＧ３敵（横回転ポリゴン）]
		WORD	B3TEKI2
		BYTE	0FFH				;[ 6:	”   （ボルト）]
		WORD	B3TEKI3
		BYTE	0FFH				;[ 7:竜巻]
		WORD	B3TEKI7
		BYTE	0FFH				;[ 8:砂嵐]
		WORD	00
		BYTE	0				;[ 9:バブル]
		WORD	00
		BYTE	0				;[ A:モグラ]
		WORD	B3TEKI4
		BYTE	0FFH				;[ B:eleveter test]
		WORD	B3MORI
		BYTE	0				;[ C:森]
		WORD	B3KUMO
		BYTE	0				;[ D:雪山]
		WORD	B3JUNGLE
		BYTE	BG3_SP_SCR_01-BG3_SP_SCR_DATA	;[ E:ジャングル]
		WORD	B3FUJI
		BYTE	BG3_SP_SCR_02-BG3_SP_SCR_DATA	;[ F:フジ山]
		WORD	B3KUMO2
		BYTE	0				;[10:雲その２]
		WORD	B3KMBOSS
		BYTE	0FFH				;[11:カメボス]
		WORD	B3NIGHT
		BYTE	0				;[12:ＮＩＧＨＴ]
		WORD	B3KSMZ
		BYTE	080H+B3_SPL_NO_00		;[13:水上アスレチック]
		WORD	B3KNH
		BYTE	BG3_SP_SCR_03-BG3_SP_SCR_DATA	;[14:木の葉]
		WORD	B3CHIKA
		BYTE	0				;[15:地下]
		WORD	B3WANWAN
		BYTE	0				;[16:ＢＧ３ワンワン]
		WORD	B3KABE2
		BYTE	0				;[17:万次郎のカベ]
		WORD	B3SHIRO
		BYTE	0				;[18:ハチ城]
		WORD	B3YUKI
		BYTE	0				;[19:雪]
		WORD	B3AHODR
		BYTE	0				;[1A:阿呆鳥の群れ]
		WORD	B3FLWR
		BYTE	0				;[1B:ＦＬＯＷＥＲ]
		WORD	bg3mask
		BYTE	0				;[1C:マスクウィンドゥ]
		WORD	B3KSMZ
		BYTE	BG3_SP_SCR_04-BG3_SP_SCR_DATA	;[1D:水上アスレチック]
		WORD	B3HATITUKI
		BYTE	080H+B3_SPL_NO_01		;[1E:月]
		WORD	B3MAGIC
		BYTE	0				;[1F:カメックの魔法]
		WORD	B3HCHPSTL
		BYTE	080H+B3_SPL_NO_02		;[20:ハチパステル]
		WORD	B3STOMACH
		BYTE	0				;[21:胃壁]
		WORD	B3HTTAKI
		BYTE	080H+B3_SPL_NO_03		;[22:ハチ滝]
		WORD	B3HTYUHI
		BYTE	080H+B3_SPL_NO_04		;[23:ハチ夕日]
		WORD	B3GOGH
		BYTE	080H+B3_SPL_NO_05		;[24:ゴッホ星空]
		WORD	B3BOSROM
		BYTE	0				;[25:ボス部屋]
		WORD	B3BOSFLSH
		BYTE	0				;[26:ボスフラッシュ効果]
		WORD	B3MORI2
		BYTE	0				;[27:森その２]
		WORD	B3STAR
		BYTE	0				;[28:スター]
		WORD	B3NOGKUMO
		BYTE	0				;[29:万次郎の雲]
		WORD	B3HTTK_K
		BYTE	080H+B3_SPL_NO_06		;[2A:固定月]
		WORD	B3NOGKUMO2
		BYTE	0				;[2B:万次郎の雲その２]
		WORD	B3KIRI
		BYTE	080H+B3_SPL_NO_07		;[2C:霧]
		WORD	B3KIRI
		BYTE	0				;[2D:霧ラスターなし]
		WORD	B3NOGKUMO3
		BYTE	0				;[2E:万次郎の雲その３]
		WORD	B3FUJI2
		BYTE	0				;[2F:ハチフジ]
		WORD	00
		BYTE	0				;[30]
		WORD	00
		BYTE	0				;[31]
		WORD	00
		BYTE	0				;[32]
		WORD	00
		BYTE	0				;[33]
		WORD	00
		BYTE	0				;[34]
		WORD	00
		BYTE	0				;[35]
		WORD	00
		BYTE	0				;[36]
		WORD	00
		BYTE	0				;[37]
		WORD	00
		BYTE	0				;[38]
		WORD	00
		BYTE	0				;[39]
		WORD	00
		BYTE	0				;[3A]
		WORD	00
		BYTE	0				;[3B]
		WORD	00
		BYTE	0				;[3C]
		WORD	00
		BYTE	0				;[3D]
		WORD	00
		BYTE	0				;[3E]
		WORD	00
		BYTE	0				;[3F]
;
;------------------------------------------------------------------------
;-		ＢＧ３特殊スクリーンデータ				-
;------------------------------------------------------------------------
BG3_SP_SCR_DATA EQU	$-1
;			 +---------------- number of block [ 01-40 ( 00:end code,+80H:constant mode ) ]
;			 |	 +-------- 転送元のスクリーンのスタートＶポジション [ 00-1F ]
;			 |	 |    +---- scrooll type [ 0:SCCH1 2:SCCH2 4:SCCH3 6:SCCH4 ]
;			 V	 V    V
BG3_SP_SCR_00	EQU	$
		BYTE	(ESCCV1-ESCCV1)+2	;V scroll flag( BG1 )
		BYTE	10H+00H,000H,004H
		BYTE	10H+00H,000H,004H
		BYTE	10H+00H,000H,004H
		BYTE	10H+00H,000H,004H
		BYTE	10H+00H,000H,004H
		BYTE	10H+00H,000H,004H
		BYTE	10H+00H,000H,004H
		BYTE	12H+00H,010H,000H
		HEX	00		;end code
;
BG3_SP_SCR_01	EQU	$		;ジャングル
		BYTE	(ESCCV3-ESCCV1)+2	;V scroll flag( BG3 )
		BYTE	0AH+80H,000H,004H
		BYTE	0AH+00H,000H,004H
		BYTE	16H+00H,00AH,006H
		HEX	00		;end code
;
BG3_SP_SCR_02	EQU	$		;フジ山
		BYTE	(ESCCV3-ESCCV1)+2	;V scroll flag( BG3 )
		BYTE	0AH+80H,000H,004H
		BYTE	09H+00H,000H,004H
		BYTE	17H+00H,009H,006H
		HEX	00		;end code
;
BG3_SP_SCR_03	EQU	$		;木の葉
		BYTE	(ESCCV3-ESCCV1)+2	;V scroll flag( BG3 )
		BYTE	10H+80H,000H,004H
		BYTE	06H+00H,00DH,004H
		BYTE	0CH+00H,013H,006H
		HEX	00		;end code
;
BG3_SP_SCR_04	EQU	$		; 水上アスレチック
		BYTE	(ESCCV3-ESCCV1)+2	;V scroll flag( BG3 )
		BYTE	75H+80H,000H,004H
		BYTE	01H+80H,001H,004H
		BYTE	09H+80H,002H,004H
		HEX	00		;end code
;
;
		MEM8
		IDX8
;
BG3_SCR_INIT	EQU	$
		LDY	#B3CL		;(Y) <-- ＢＧ３スクリーンクリアーデータＮｏ．
		LDA	BG3TYP
		BEQ	BG3_SCR_INIT_11 ;ＢＧ３スクリーン無し？ ( yes:BG3_SCR_INIT_11 )
;
;-------------- ＢＧ３スクリーンデータセット ----------------------------
		ASL	A
		ADC	!BG3TYP
		TAY
		M16				; memory 16bit mode
		LDA	!BG3_SCR_TBL,Y
		BEQ	BG3_SCR_INIT_12 ;スクリーンデータセット？ ( no:BG3_SCR_INIT_12 )
;
		I16				; index 16bit mode
;;;;K;;;;		AND	#00FFH			;(A) <-- 圧縮データＮｏ．
		LDX	#WOB7CHR		;(X) <-- 解凍先アドレス
		PHY				;(Y) save
		JSL	>UNCOMPRES
		PLY				;(Y) load
;
		LDX	BG3TYP
		CPX	#16H			; ＢＧ３ワンワン？
		BNE	BG3_SCR_INIT_13		;	NO -> BG3_SCR_INIT_13
;
;-------------- ＢＧ３ワンワンスクリーンＳＡＶＥ ----------------
		LDX	#CHRSVBF	;to memory address set
		STX	<WORK20
		LDX	#BANK CHRSVBF
		STX	<WORK22
		LDX	#WOB7CHR	;from memory address set
		STX	<WORK23
		LDX	#BANK WOB7CHR
		STX	<WORK25
;
		I8
;
		JSL	>DMA_M_M	;DMA "ON"
;
		M8
;
		LDY	#WNCL		;(Y) <-- ＢＧ３スクリーンクリアーデータＮｏ．
;
;-------------- ＢＧ３スクリーンクリアー --------------------------------
BG3_SCR_INIT_11 EQU	$
		STY	VRFLG
		JSL	>VMADSPL
BG3_SCR_INIT_12 EQU	$
		M8			; memory 8bit mode
		RTS
;
		MEM16
;
BG3_SCR_INIT_13 EQU	$
;
		I8
;
		STA	<WORK0
		STA	4305H			;number of byte set
		LDX	#10000000B		;inc mode set
		STX	2115H
		LDA	#3400H			;VRAM address set
		STA	2116H
		LDA	#00000001B+(18H*100H)	;DMA parameter & B bus address set
		STA	4300H
		LDA	#WOB7CHR		;A bus address(L,H) set
		STA	4302H
		LDX	#BANK WOB7CHR		;      "      (B) set
		STX	4304H
		LDX	#00000001B
		STX	420BH			;DMA "ON" !!
;
		LDA	!DSPMOD
		CMP	#0000AH		;ダブルテレサ用 スクリーンセット ?
		BNE	DBL_TELE_PASS	;	NO -> DBL_TELE_PASS
;
		LDA	<WORK0
		STA	4305H			;number of byte set
		LDA	#0000H			;VRAM address set
		STA	2116H
		LDA	#WOB7CHR		;A bus address(L,H) set
		STA	4302H
		STX	420BH			;DMA "ON" !!
;
DBL_TELE_PASS	EQU	$
		M8
;
;-------------- BG3 spacial screen data set ---------------------
		LDX	!BG3_SCR_TBL+2,Y	; 特殊スクリーンデータセット？
		BEQ	BG3_SCR_INIT_12		;	NO -> BG3_SCR_INIT_12
;
		CPX	#0FFH		; ＢＧ３敵？
		BEQ	BG3_SCR_INIT_14 ;	YES -> BG3_SCR_INIT_14
		TXA
		BPL	BG3_SCR_INIT_16
		ASL	A
		CMP	#BG3_SPECIAL
		BCS	BG3_SCR_INIT_14
		TAX
		JSR	(BG3_SPL_ADR,X)
		BRA	BG3_SCR_INIT_12
;
BG3_SCR_INIT_14 EQU	$
		LDA	#00000100B	;ＢＧ３表示”ＯＦＦ”
		TRB	MANSEL
		TRB	SUBSEL
		RTS
;
BG3_SCR_INIT_16 EQU	$
		LDA	>BG3_SP_SCR_DATA,X
		STA	BG3SPF		;BG3 spacial screen flag set !!
;
		PHB			;(DBR) save
		LDA	#BANK BG3SCBF	;(DBR) set
		PHA
		PLB
;
		I16
;
		LDY	#00		;(Y)	 <-- BG3 spacial screen buffer index
		STZ	<WORK8		;(WK8,9) <--	      "         counter
BG3_SCR_INIT_20 EQU	$
		LDA	>BG3_SP_SCR_DATA+1,X
		BEQ	BG3_SCR_INIT_50 ;data end ? ( yes:BG3_SCR_INIT_50 )
;
		STA	<WORK1		;(WK1) <-- number mode [ +80H:constant ]
;
		M16
;
		AND	#007FH
		ASL	A
		ASL	A
		ASL	A
		ASL	A
		STA	<WORK2		;(WK2,3) <-- number of block
		LDA	>BG3_SP_SCR_DATA+2,X
		AND	#00FFH
		ASL	A
		ASL	A
		ASL	A
		ASL	A
		STA	<WORK4		;(WK4,5) <-- start V pos
		LDA	>BG3_SP_SCR_DATA+3,X
		AND	#00FFH
		STA	<WORK6		;(WK6,7) <-- scrooll type
BG3_SCR_INIT_30 EQU	$
		LDA	<WORK4		;V pos data set
		SEC
		SBC	<WORK8
		STA	BG3SCBF+2,Y
		LDA	#010H		;(A) <-- number of V counter
		BIT	<WORK1-1
		BMI	BG3_SCR_INIT_40 ;constant number mode ? ( yes:BG3_SCR_INIT_40 )
		LDA	<WORK4
		CLC
		ADC	#0010H
		STA	<WORK4
		LDA	<WORK2		;(A) <-- number of V counter
BG3_SCR_INIT_40 EQU	$
		STA	BG3SCBF,Y
		LDA	<WORK8
		CLC
		ADC	#0010H
		STA	<WORK8
		LDA	<WORK6		;scroll type set
		STA	BG3SCBF+4,Y
		TYA
		CLC
		ADC	#6
		TAY
		LDA	<WORK2		;number of V counter
		SEC
		SBC	#0010H
		STA	<WORK2
		BNE	BG3_SCR_INIT_30 ;V counter end ? ( no:BG3_SCR_INIT_30 )
;
		M8
;
		INX
		INX
		INX
		BRA	BG3_SCR_INIT_20
;
BG3_SCR_INIT_50 EQU	$
		PLB			;(DBR) load
;
		I8
;
BG3_SCR_INIT_60 EQU	$
		RTS
;
;
BG3_SPL_ADR	EQU	$
		WORD	B3_WTRASLE,POINT_SCRL00,POINT_SCRL10
		WORD	DISP_COL_SET,POINT_SCRL20,DISP_COL_00
		WORD	POINT_SCRL00,POINT_SCRL30
;
BG3_SPECIAL	EQU	$-BG3_SPL_ADR
;
B3_SPL_NO_00	EQU	000
B3_SPL_NO_01	EQU	B3_SPL_NO_00+1
B3_SPL_NO_02	EQU	B3_SPL_NO_01+1
B3_SPL_NO_03	EQU	B3_SPL_NO_02+1
B3_SPL_NO_04	EQU	B3_SPL_NO_03+1
B3_SPL_NO_05	EQU	B3_SPL_NO_04+1
B3_SPL_NO_06	EQU	B3_SPL_NO_05+1
B3_SPL_NO_07	EQU	B3_SPL_NO_06+1
;
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+								+
;+		ＷＡＴＥＲ アスレチック専用			+
;+					in			+
;+					X <- インデックス	+
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
B3_WTRASL_ADR	EQU	$
		WORD	03740H
;
B3_WTRASL_SUB	EQU	$
		WORD	00680H
;
;
B3_WTRASLE	EQU	$
		PHX
		LDY	#B3WRCL		; ＢＧ３スクリーン
		STY	!VRFLG		;		クリアー
		JSL	>VMADSPL
;
		PLA
		M16			; memory 16bit mode
		AND	#000FFH
		ASL	A
		TAX
;
		LDA	B3_WTRASL_ADR,X
		STA	2116H		;VRAM address set
		LDA	#00800H
		SEC
		SBC	B3_WTRASL_SUB,X
		STA	4305H		;number of byte set
		LDX	#10000000B
		STX	2115H		;inc mode set
		LDA	#00000001B+(18H*100H)
		STA	4300H		;DMA parameter & B bus address set
		LDX	#BANK WOB7CHR
		STX	4304H		;	"       (B) set
		LDA	#WOB7CHR
		STA	4302H		;A bus address(L,H) set
		LDX	#00000001B
		STX	420BH		;DMA "ON" !!
;
		M8			; memory 8bit mode
		RTS
;
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+								+
;+		ＢＧ３部分スクロール				+
;+								+
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
BG3_SCR_DAT00	EQU	$			; 月
		BYTE	000H
		WORD	00020H
		WORD	00100H*0+(10H*00H)+7
		BYTE	000H
		WORD	00030H
		WORD	00100H*0+(10H*02H)+7
		BYTE	000H
		WORD	00020H
		WORD	00100H*0+(10H*03H)+7
		BYTE	000H
		WORD	0002EH
		WORD	00100H*0+(10H*05H)+7
		BYTE	000H
		WORD	00020H
		WORD	00100H*0+(10H*06H)+7
		BYTE	000H
		WORD	0002CH
		WORD	00100H*0+(10H*08H)+7
		BYTE	000H
		WORD	00020H
		WORD	00100H*0+(10H*09H)+7
		BYTE	000H
		WORD	0002AH
		WORD	00100H*0+(10H*0BH)+7
		BYTE	000H
		WORD	00010H
		WORD	00100H*0+(10H*13H)+7
		BYTE	000H
		WORD	00028H
		WORD	00100H*0+(10H*15H)+7
		BYTE	000H
		WORD	00020H
		WORD	00100H*0+(10H*16H)+7
		BYTE	000H
		WORD	00040H
		WORD	00100H*8	;end line
;
BG3_SCR_DAT01	EQU	$		;部分スクロール データ
		BYTE	000H
		WORD	0001AH
		WORD	00100H*6+(10H*01H)+7
		BYTE	000H
		WORD	0002EH
		WORD	00100H*6+(10H*05H)+7
		BYTE	000H
		WORD	00019H
		WORD	00100H*6+(10H*07H)+7
		BYTE	000H
		WORD	0002CH
		WORD	00100H*6+(10H*0AH)+7
		BYTE	000H
		WORD	00018H
		WORD	00100H*6+(10H*0BH)+7
		BYTE	000H
		WORD	0002AH
		WORD	00100H*6+(10H*0EH)+7
		BYTE	000H
		WORD	00017H
		WORD	00100H*6+(10H*0FH)+7
		BYTE	000H
		WORD	00028H
		WORD	00100H*6+(10H*13H)+7
		BYTE	000H
		WORD	00016H
		WORD	00100H*6+(10H*14H)+7
		BYTE	000H
		WORD	00080H
		WORD	00100H*6+(10H*19H)+7
		BYTE	000H
		WORD	00140H
		WORD	00100H*8	;end line
;
BG3_SCR_DAT02	EQU	$
		BYTE	000H
		WORD	00016H
		WORD	00100H*6+(10H*17H)+7
;
		BYTE	002H+080H	; ラスタースクロール
		BYTE	000H
		WORD	00090H
		WORD	00100H*8
		BYTE	0A0H		; 周期
;
BG3_SCR_DAT03	EQU	$
		BYTE	000H
		WORD	0002AH
		WORD	00100H*0+(10H*02H)+7
		BYTE	000H
		WORD	0001AH
		WORD	00100H*0+(10H*05H)+7
		BYTE	000H
		WORD	00028H
		WORD	00100H*0+(10H*08H)+7
		BYTE	000H
		WORD	00018H
		WORD	00100H*0+(10H*0BH)+7
		BYTE	000H
		WORD	00026H
		WORD	00100H*0+(10H*0EH)+7
		BYTE	000H
		WORD	00016H
		WORD	00100H*0+(10H*10H)+7
		BYTE	000H
		WORD	00012H
		WORD	00100H*0+(10H*12H)+7
;
		BYTE	002H+080H	; ラスタースクロール
		BYTE	000H
		WORD	00010H
		WORD	00100H*0+(10H*16H)+7
		BYTE	010H		; 周期
;
		BYTE	080H
		BYTE	000H
		WORD	00012H
		WORD	00100H*0+(10H*18H)+7
;
		BYTE	000H
		WORD	00030H
		WORD	00100H*8	;end line
;
BG3_SCR_DAT06	EQU	$			; 固定月
		BYTE	000H
		WORD	00000H
		WORD	00100H*0+(10H*01H)+7
		BYTE	000H
		WORD	00020H
		WORD	00100H*0+(10H*03H)+7
		BYTE	000H
		WORD	00000H
		WORD	00100H*0+(10H*04H)+7
		BYTE	000H
		WORD	00000H
		WORD	00100H*0+(10H*06H)+7
		BYTE	000H
		WORD	0001CH
		WORD	00100H*0+(10H*09H)+7
		BYTE	000H
		WORD	0001AH
		WORD	00100H*0+(10H*0CH)+7
		BYTE	000H
		WORD	00000H
		WORD	00100H*0+(10H*0CH)+7
		BYTE	000H
		WORD	00018H
		WORD	00100H*0+(10H*0EH)+7
		BYTE	000H
		WORD	00000H
		WORD	00100H*0+(10H*16H)+7
		BYTE	000H
		WORD	00040H
		WORD	00100H*8	;end line
;
BG3_SCR_DAT07	EQU	$		; 霧
		BYTE	002H+080H	; ラスタースクロール
		BYTE	000H
		WORD	00010H
		WORD	00100H*8
		BYTE	008H		; 周期
;
BG3_SCR_DAT_ADR EQU	$-2
		WORD	BG3_SCR_DAT00,BG3_SCR_DAT01
		WORD	BG3_SCR_DAT02,BG3_SCR_DAT03
		WORD	00000H				;dumy
		WORD	BG3_SCR_DAT06,BG3_SCR_DAT07
;
;
		MEM8
		IDX8
POINT_SCRL30	EQU	$
		JSR	POINT_SCRL00
		LDA	#004
		STA	!BG3SPH_CT
		RTS
;
POINT_SCRL10	EQU	$
		PHX
		LDX	#DP_DT_00
		JSR	DISP_INIT_SET
		PLX
;
POINT_SCRL00	EQU	$
		LDA	#001H
		STA	!BG3SPFH
		M16			; memory 16bit mode
		LDA	BG3_SCR_DAT_ADR,X
		STA	!BG3SPFH_ADR
;
		I16			; index 16bit mode
		LDX	#PRMTR3
		JSL	>HDMA_INIT
		STA	!BG3SPHON
		STZ	!BG3SPH_CT
		MI8			; memory , index 8bit mode
		RTS
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+								+
;+	ＢＧ３縦 ラスタースクロール イニシャル セット		+
;+								+
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
BG3_V_rster_00	EQU	$		; 縦ラスタースクロール
		HEX	000H		; ラスター ＯＮ
		WORD	00100H*6+(10H*12H)+7+2
		HEX	001H		; ラスター ＯＮ
		WORD	00100H*6+(10H*16H)+7-2
		HEX	000H
		WORD	00100H*8	;end line
		HEX	0FFH		; end code
;
NUKI_GRDTN_DT00 EQU	$
		WORD	0000CH		; 元カラー
		WORD	0000CH		; 先カラー
		WORD	000E0H
		WORD	00019H
		WORD	0121FH
		WORD	00040H
		WORD	0121FH
		WORD	00019H
		WORD	00040H
		WORD	0000CH
		WORD	0000CH
		WORD	00050H
		WORD	0FFFFH	; end code
;
NUKI_GRDTN_DT01 EQU	$
		WORD	05E2CH		; 元カラー
		WORD	05E2CH		; 先カラー
		WORD	000E0H
		WORD	06EEEH
		WORD	06EF8H
		WORD	00040H
		WORD	06EF8H
		WORD	06EEEH
		WORD	00040H
		WORD	05E2CH
		WORD	05E2CH
		WORD	00030H
		WORD	00882H
		WORD	00882H
		WORD	00020H
		WORD	0FFFFH	; end code
;
NUKI_GRDTN_DT02 EQU	$
		WORD	00000H		; 元カラー
		WORD	00421H		; 先カラー
		WORD	001B0H
		WORD	0FFFFH	; end code
;
NUKI_GRDTN_DAT	EQU	$
		WORD	NUKI_GRDTN_DT00,NUKI_GRDTN_DT01
		WORD	NUKI_GRDTN_DT02
;
NK_GRDTN_00	EQU	000
NK_GRDTN_01	EQU	NK_GRDTN_00+2
NK_GRDTN_02	EQU	NK_GRDTN_01+2
;
;
POINT_SCRL20	EQU	$
		JSR	POINT_SCRL00
;
		LDY	#NK_GRDTN_00
		LDA	!BG3COL
		AND	#001		; 夕日グラデーション ?
		BEQ	POINT_SCRL20_05 ;	YES -> POINT_SCRL20_05
		LDY	#NK_GRDTN_01
POINT_SCRL20_05 EQU	$
		JSR	SPL_GRDTN_INT
;
		INC	!GRDTN_FLG
		LDA	!HD420C
		ORA	#00000110B
		STA	!HD420C
;
		INC	!BG3SPFV
;
		M16			; memory 16bit mode
		LDA	#BG3_V_rster_00
		STA	!BG3SPFV_ADR
;
		I16			; index 16bit mode
		LDX	#PRMTR2
		JSL	>HDMA_INIT
		STA	!BG3SPVON
		STZ	!BG3SPV_CT
;
		MI8			; memory , index 8bit mode
		RTS
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+		特殊グラデーション			+
;+				in			+
;+				Y <- data read index	+
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SPL_GRDTN_INT	EQU	$
		M16			; memory 16bit mode
		LDA	#BANK NUKI_GRDTN_DAT
		STA	R0
		LDA	NUKI_GRDTN_DAT,Y
		STA	R9
		M_CHIP	SPL_GRDTN
;
		LDA	#NUKCOL_BF_B	;to memory address set
		STA	<WORK20
		LDY	#BANK NUKCOL_BF_B
		STY	<WORK22
		LDA	#WOB7CHR	;from memory address set
		STA	<WORK23
		LDY	#BANK WOB7CHR
		STY	<WORK25
		LDA	#NUKCOL_BF_NO*3 ;(A) <-- number of byte set
		JSL	>DMA_M_M	;DMA "ON"
		M8			; memory 8bit mode
		RTS
;
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+								+
;+		画面の制御	(イニシャル セット)		+
;+				in				+
;+				X : data read index		+
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DP_DATA_00	EQU	$
		HEX	011H,006H	; main , sub
		WORD	00100H*6+(10H*19H)+7
		HEX	015H,002H
		WORD	00100H*8	; エンドライン
;
DP_DATA_01	EQU	$
		HEX	022H,020H
		WORD	00100H*6+(10H*18H)+7
		HEX	022H,062H
		WORD	00100H*8	; エンドライン
;
DP_DATA_02	EQU	$
;
DP_INT_SCRL	EQU	$
		BYTE	SCCV3-SCCV1
		BYTE	SCCV3-SCCV1
;
DP_HDMA_PRMTR	EQU	$
		BYTE	PRMTR6,PRMTR7
;
DP_DT_00	EQU	00000
DP_DT_01	EQU	DP_DT_00+1
DP_DT_02	EQU	DP_DT_01+1
;
DP_INT_DAT	EQU	$
		WORD	DP_DATA_00,DP_DATA_01
;
;
DISP_INIT_SET	EQU	$
		LDA	DP_INT_SCRL,X
		INC	A
		STA	!DSPCNTRLFG
		MI16			; memory , index 16bit mode
		TXA
		AND	#000FFH
		TAY
		ASL	A
		TAX
		LDA	DP_INT_DAT,X
		STA	!DISP_ADR
;
		LDA	DP_HDMA_PRMTR,Y
		AND	#000FFH
		TAX
		JSL	>HDMA_INIT
		MI8			; memory , index 8bit mode
		STA	!DISP_ON
		RTS
;
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+								+
;+		画面の加算の制御 (イニシャル セット)		+
;+								+
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DISP_COL_SET	EQU	$
		LDA	#017H
		STA	!MANSEL
		LDA	#004H
		STA	!SUBSEL
		LDX	#DP_DT_01
		JSR	DISP_INIT_SET
;
		LDX	#006H
		JSR	POINT_SCRL00
		RTS
;
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+								+
;+		画面の加算					+
;+								+
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DISP_COL_00	EQU	$
		LDA	#0A0H
		STA	!WIND30
		LDA	#064H
		STA	!SUBADF
;
;;;;K;;;;		LDY	#NK_GRDTN_02
;;;;K;;;;		JSR	SPL_GRDTN_INT
		RTS
;
;
;
;
;
;
		END

