;************************************************************************
;*									*
;*	title name	: "yossy"					*
;*	proccess	: initial					*
;*	file name	: ys_init					*
;*									*
;************************************************************************
;
;
		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
;
		XALL
;
;
;------------------------------------------------------------------------
;-		global symbol						-
;------------------------------------------------------------------------
		GLB	GMCHRST,GMCOLST,GMMDST
		GLB	DBLTELESA,DBLCOLST
		GLB	DIVDTST,M_DMA_BFST,M_DMA_BFST_N,UNCOMPRES,UNCOMPRES_X
		GLB	VRAMDX_ST,VRAMDX_C_ST,VRAMDX_L_ST,VRAMDX_L_C_ST
		GLB	VRAMDX_H_ST,VRAMDX_H_C_ST
		GLB	M_DMA_BFST_K
;
		GLB	MPCHR
		GLB	MP00,GM00,GM01,GM02,GM03,GM04,GM05,GM06,GM07,GM08
		GLB	GM09,GM0A,GM0B,GM0C,GM0D,GM0E,GM0F,GM10
		GLB	BTMP
		GLB	CHR50,CHR28,CHR34,CHR3F
;
		GLB	BG1CHRBK,BG1COLBK
		GLB	PL_COLBK
;
;------------------------------------------------------------------------
;-		extern symbol						-
;------------------------------------------------------------------------
;
;-------------< ys_rpro >------------------------------------------------
		EXT	CHIPON
;
;-------------< ys_unit >------------------------------------------------
		EXT	UNDTADD,UNDATA
;
;-------------< ys_data >------------------------------------------------
		EXT	DIVDAT
;
;-------------< ys_chr >-------------------------------------------------
		EXT	ADDSTART
;
;------------------------------------------------------------------------
;-		define symbol						-
;------------------------------------------------------------------------
;;;;		EQU
;
;
;
;************************************************************************
;*									*
;*		program start						*
;*									*
;************************************************************************
;
;
		EXTEND
;
;
		MEM8
		IDX8
;
Group_1	       GROUP   ys_Init_pro
ys_Init_pro	   SECT	   REL
;
;
;************************************************************************
;*		キャラクターセットデータ				*
;************************************************************************
;
		MEM8
		IDX8
;
;------------------------------------------------------------------------
;-		キャラクター ＶＲＡＭ 配置データ			-
;------------------------------------------------------------------------
CHRTBL		EQU	$
;
;-------------- ゲームプレイ−１ ----------------------------------------
GMCHAR		EQU	$
		BYTE	CHR3E-CHR10		  ;[ BG1,2 main character    ( 7800-7FFF ) ]
		WORD	7800H+8000H,1000H
		BYTE	CHR32M-CHR10		  ;[		 "           ( 1200-13FF ) ]
		WORD	1200H+8000H,0400H
		BYTE	CHR5BB-CHR10		  ;[		 "           ( 1500-17FF ) ]
		WORD	1500H+8000H,0600H
		BYTE	CHR58-CHR10		  ;[ OBJ main character	     ( 4000-4FFF ) ]
		WORD	4000H+8000H,2000H
		BYTE	CHRE9A			  ;[ meter character set     ( 6000-63FF ) ]
		WORD	6000H
;
		BYTE	(WORK13-WORK10)+0F0H	  ;[ BG2 change character set( 1800-1FFF ) ]
		WORD	1800H+8000H,1000H
		BYTE	(WORK14-WORK10)+0F0H	  ;[		 "           ( 2000-27FF ) ]
		WORD	2000H+8000H,1000H
;
		BYTE	(WORK10-WORK10)+0F0H	  ;[ BG1 change character set( 0000-07FF ) ]
		WORD	0000H
		BYTE	(WORK11-WORK10)+0F0H	  ;[		 "           ( 0800-0FFF ) ]
		WORD	0800H
		BYTE	(WORK12-WORK10)+0F0H	  ;[		 "           ( 7000-77FF ) ]
		WORD	7000H
;
		BYTE	(WORK17-WORK10)+0F0H	  ;[ OBJ change character set( 5000-51FF ) ]
		WORD	5000H+8000H,0400H
		BYTE	(WORK18-WORK10)+0F0H	  ;[		 "           ( 5200-53FF ) ]
		WORD	5200H+8000H,0400H
		BYTE	(WORK19-WORK10)+0F0H	  ;[		 "           ( 5400-55FF ) ]
		WORD	5400H+8000H,0400H
		BYTE	(WORK1A-WORK10)+0F0H	  ;[		 "           ( 5600-57FF ) ]
		WORD	5600H+8000H,0400H
		BYTE	(WORK1B-WORK10)+0F0H	  ;[		 "           ( 5800-59FF ) ]
		WORD	5800H+8000H,0400H
		BYTE	(WORK1C-WORK10)+0F0H	  ;[		 "           ( 5A00-5BFF ) ]
		WORD	5A00H+8000H,0400H
;
		BYTE	(WORK15-WORK10)+0F0H	  ;[ BG3 change character set( 28
		WORD	2800H
		BYTE	(WORK16-WORK10)+0F0H	  ;[		 "           ( 2C
		WORD	2C00H
;
		HEX	FF	;end code
;
;-------------- マップ --------------------------------------------------
MPCHAR		EQU	$
		BYTE	CHR27B			  ;[ ＢＧ３背景キャラクター  ( 5C00-5FFF ) ]
		WORD	3400H
		BYTE	CHR26B			  ;[ タイトルロゴキャラクター( 3800-3BFF ) ]
		WORD	3800H
		BYTE	CHR5AA-CHR10		  ;[ カーソルキャラクター    ( 5C00-5FFF ) ]
		WORD	5C00H+8000H,0800H
		BYTE	CHR5AA-CHR10		  ;[ カーソルキャラクター    ( 7C00-7FFF ) ]
		WORD	7C00H+8000H,0800H
;
		BYTE	CHR5AB-CHR10		  ;[ ホルダーキャラクター    ( 3C00-3FFF ) ]
		WORD	3C00H+8000H,0800H	  ;[ 入れ替え用 ]
;
		BYTE	(WORK10-WORK10)+0F0H	  ;[ モード７キャラクター    ( 0000-1FFF ) ]
		WORD	0000H
;
		HEX	FF	;end code
;
;-------------- ダブルテレサ用 ------------------------------------------
DBLTLCHAR	EQU	$
		BYTE	CHR25B			;[ BG1 character	   ( 7800-7FFF ) ]
		WORD	7000H
		BYTE	CHR27A
		WORD	7400H
		BYTE	CHR27A
		WORD	7800H
		BYTE	CHR58-CHR10		;[ OBJ main character	   ( 4000-4FFF ) ]
		WORD	4000H+8000H,2000H
		BYTE	CHRE9A			;[ meter character set	   ( 6000-63FF ) ]
		WORD	6000H
;
		BYTE	MODE0
		WORD	2800H			;[ BG2 screen ]
		BYTE	MODE0
		WORD	3000H			;[ BG3 screen ]
		BYTE	MODE0
		WORD	3800H			;[ BG4 screen ]
;
		BYTE	CHRE7B-CHR10		;[ OBJ change character set( 5000-51FF ) ]
		WORD	5000H+8000H,0400H
		BYTE	CHR48C-CHR10		;[		 "           ( 5200-53FF ) ]
		WORD	5200H+8000H,0400H
		BYTE	CHR4ED-CHR10		;[		 "           ( 5400-55FF ) ]
		WORD	5400H+8000H,0400H
		BYTE	CHR40A-CHR10		;[		 "           ( 5600-57FF ) ]
		WORD	5600H+8000H,0400H
		BYTE	CHR40A-CHR10		;[		 "           ( 5800-59FF ) ]
		WORD	5800H+8000H,0400H
		BYTE	CHR43D-CHR10		;[		 "           ( 5A00-5BFF ) ]
		WORD	5A00H+8000H,0400H
;
		HEX	FF	;end code
;
;
GMCHR		EQU	GMCHAR-CHRTBL
MPCHR		EQU	MPCHAR-CHRTBL
DBLTL		EQU	DBLTLCHAR-CHRTBL
;
;------------------------------------------------------------------------
;-		ゲームプレイキャラクターセット				-
;------------------------------------------------------------------------
;
;
;****************************************************************
;*		ＯＢＪタイプ 圧縮データＮｏ.			*
;*					(敵ツールのみ使用)	*
;****************************************************************
CHRNODAT	EQU	$
		BYTE	CHR40A-CHR10,CHR40B-CHR10,CHR40C-CHR10,CHR40D-CHR10
		BYTE	CHR41A-CHR10,CHR41B-CHR10,CHR41C-CHR10,CHR41D-CHR10
		BYTE	CHR42A-CHR10,CHR42B-CHR10,CHR42C-CHR10,CHR42D-CHR10
		BYTE	CHR43A-CHR10,CHR43B-CHR10,CHR43C-CHR10,CHR43D-CHR10
		BYTE	CHR44A-CHR10,CHR44B-CHR10,CHR44C-CHR10,CHR44D-CHR10
		BYTE	CHR45A-CHR10,CHR45B-CHR10,CHR45C-CHR10,CHR45D-CHR10
		BYTE	CHR46A-CHR10,CHR46B-CHR10,CHR46C-CHR10,CHR46D-CHR10
		BYTE	CHR47A-CHR10,CHR47B-CHR10,CHR47C-CHR10,CHR47D-CHR10
		BYTE	CHR48A-CHR10,CHR48B-CHR10,CHR48C-CHR10,CHR48D-CHR10
		BYTE	CHR49A-CHR10,CHR49B-CHR10,CHR49C-CHR10,CHR49D-CHR10
		BYTE	CHR4AA-CHR10,CHR4AB-CHR10,CHR4AC-CHR10,CHR4AD-CHR10
		BYTE	CHR4BA-CHR10,CHR4BB-CHR10,CHR4BC-CHR10,CHR4BD-CHR10
		BYTE	CHR4CA-CHR10,CHR4CB-CHR10,CHR4CC-CHR10,CHR4CD-CHR10
		BYTE	CHR4DA-CHR10,CHR4DB-CHR10,CHR4DC-CHR10,CHR4DD-CHR10
		BYTE	CHR4EA-CHR10,CHR4EB-CHR10,CHR4EC-CHR10,CHR4ED-CHR10
		BYTE	CHR4FA-CHR10,CHR4FB-CHR10,CHR4FC-CHR10,CHR4FD-CHR10
		BYTE	CHRE4A-CHR10,CHRE4B-CHR10,CHRE4C-CHR10,CHRE4D-CHR10
		BYTE	CHRE5A-CHR10,CHRE5B-CHR10,CHRE5C-CHR10,CHRE5D-CHR10
		BYTE	CHRE6A-CHR10,CHRE6B-CHR10,CHRE6C-CHR10,CHRE6D-CHR10
		BYTE	CHRE7A-CHR10,CHRE7B-CHR10,CHRE7C-CHR10,CHRE7D-CHR10
		BYTE	CHR8EA-CHR10,CHR8EB-CHR10,CHR8EC-CHR10,CHR8ED-CHR10
		BYTE	CHR8FA-CHR10,CHR8FB-CHR10,CHR8FC-CHR10,CHR8FD-CHR10
		BYTE	CHR110A-CHR10,CHR110B-CHR10,CHR110C-CHR10,CHR110D-CHR10
		BYTE	CHR111A-CHR10,CHR111B-CHR10,CHR111C-CHR10,CHR111D-CHR10
;
;----------------------------------------------------------------
;-		ゲームプレイ キャラクターバンクデータ		-
;----------------------------------------------------------------
BG1CHRBK	EQU	$
;			 [0]   [1]   [2]
		BYTE	CHR00,CHR01,CHRC0	  ;[0:地下]
		BYTE	CHR02,CHR03,CHRC1	  ;[1:草]
		BYTE	CHR08,CHR09,CHRC4	  ;[2:水中]
		BYTE	CHR0A,CHR0B,CHRC5	  ;[3:溶岩]
		BYTE	CHR04,CHR05,CHRC2	  ;[4:雪]
		BYTE	CHR06,CHR07,CHRC3	  ;[5:ジャングル]
		BYTE	CHR0C,CHR0D,CHRC6	  ;[6:カベ]
		BYTE	CHR0E,CHR0F,CHRC7	  ;[7:花]
		BYTE	CHRA0,CHRA1,CHRC0	  ;[8:地下’]
		BYTE	CHRA2,CHRA3,CHRC1	  ;[9:草’]
		BYTE	CHRA8,CHRA9,CHRC6	  ;[A:水中’]
		BYTE	CHRAA,CHRAB,CHRC5	  ;[B:溶岩’ドカン]
		BYTE	CHRA4,CHRA5,CHRC2	  ;[C:フラワー]
		BYTE	CHRA6,CHRA7,CHRC7	  ;[D:バブル’空]
		BYTE	CHRAC,CHRAD,CHRC6	  ;[E:カベ’]
		BYTE	CHRAE,CHRAF,CHRC7	  ;[F:花’]
BG2CHRBK	EQU	$
;			    [0]		[1]
		BYTE	CHR3C-CHR10,CHR3D-CHR10	  ;[ 0:地下滝]
		BYTE	CHR18-CHR10,CHR10A-CHR10  ;[ 1:月]
		BYTE	CHR12-CHR10,CHR13-CHR10	  ;[ 2:水中]
		BYTE	CHR10-CHR10,CHR11-CHR10	  ;[ 3:溶岩]
		BYTE	CHR10-CHR10,CHR11-CHR10	  ;[ 4:雪]
		BYTE	CHRB0-CHR10,CHRB7-CHR10	  ;[ 5:ＲＥＤ ＷＯＯＤＳ]
;;;;K;;;;		BYTE	CHR1C-CHR10,CHR10B-CHR10  ;[ 6:カベ]
		BYTE	CHR1C-CHR10,CHRF4-CHR10	  ;[ 6:カベ]
		BYTE	CHR1A-CHR10,CHR1B-CHR10	  ;[ 7:パステル２]
		BYTE	CHR16-CHR10,CHR17-CHR10	  ;[ 8:森]
		BYTE	CHRB0-CHR10,CHRB1-CHR10	  ;[ 9:遠近両用]
		BYTE	CHRB2-CHR10,CHR1E-CHR10	  ;[ A:ハチ滝]
		BYTE	CHR14-CHR10,CHRB3-CHR10	  ;[ B:ワンワンドスン]
		BYTE	CHRB4-CHR10,CHRB5-CHR10	  ;[ C:ジャングル]
		BYTE	CHRB6-CHR10,CHR10B-CHR10  ;[ D:スター]
		BYTE	CHRB8-CHR10,CHRB7-CHR10	  ;[ E:グルグル]
		BYTE	CHRBA-CHR10,CHRBB-CHR10	  ;[ F:フジ山]
		BYTE	CHRB0-CHR10,CHRB1-CHR10	  ;[10:遠近両用の遠景]
		BYTE	CHR10-CHR10,CHR15-CHR10	  ;[11:]
		BYTE	CHR10-CHR10,CHR15-CHR10	  ;[12:空]
		BYTE	CHRBC-CHR10,CHRBD-CHR10	  ;[13:地下いわ]
		BYTE	CHRB9-CHR10,CHRBA-CHR10	  ;[14:万次郎]
		BYTE	CHRBE-CHR10,CHRBF-CHR10	  ;[15:岩山]
		BYTE	CHR108-CHR10,CHR109-CHR10 ;[16:ＢＧ２敵]
		BYTE	CHR18-CHR10,CHR19-CHR10	  ;[17:モード２画面切り替えコース]
		BYTE	CHR1D-CHR10,CHRB7-CHR10	  ;[18:ＮＩＧＨＴ]
;;;;K;;;;		BYTE	CHR1E-CHR10,CHR10B-CHR10  ;[19:ハチ城]
		BYTE	CHR1E-CHR10,CHRF4-CHR10	  ;[19:ハチ城]
		BYTE	CHRBE-CHR10,CHRBF-CHR10	  ;[1A:岩山２]
		BYTE	CHRBE-CHR10,CHRBF-CHR10	  ;[1B:黒ベタ]
		BYTE	CHR19-CHR10,CHR19-CHR10	  ;[1C:ハチパステル]
		BYTE	CHR10C-CHR10,CHR10D-CHR10 ;[1D:たこやき山]
		BYTE	CHRB3-CHR10,CHRB4-CHR10	  ;[1E:杉林]
		BYTE	CHR10E-CHR10,CHR10F-CHR10 ;[1F:クッパの部屋]
BG3CHRBK	EQU	$
;			 [0]	[1]
		BYTE	CHRE8A,CHRE8B		;[ 0:無し]
		BYTE	CHR22A,CHR22B		;[ 1:水中（部分スクロール）]
		BYTE	CHR23A,CHR22B		;[ 2:ＢＧ３敵（カベ、オバケｅｔｃ）]
		BYTE	CHR24A,CHR24A		;[ 3:パステル]
		BYTE	CHREAA,CHREAB		;[ 4:ＢＧ３雲]
		BYTE	CHR23A,CHR22B		;[ 5:ＢＧ３敵（横回転ポリゴン）]
		BYTE	CHR23A,CHR22B		;[ 6:	 ”   （ボルト）]
		BYTE	CHR23A,CHR22B		;[ 7:竜巻]
		BYTE	CHR23A,CHR22B		;[ 8:砂嵐]
		BYTE	CHR21B,CHR21B		;[ 9:バブル]
		BYTE	CHR21A,CHRE8B		;[ A:モグラ]
		BYTE	CHR23A,CHR22B		;[ B:eleveter test]
		BYTE	CHR25A,CHR20B		;[ C:森]
		BYTE	CHR20A,CHR20B		;[ D:雪山]
		BYTE	CHR76A,CHR76B		;[ E:ジャングル]
		BYTE	CHR77A,CHR77B		;[ F:フジ山]
		BYTE	CHRE8A,CHRE8B		;[10:雲その２]
		BYTE	CHR20A,CHR20B		;[11:カメボス]
		BYTE	CHR22B,CHR23B		;[12:ＮＩＧＨＴ]
		BYTE	CHRE8B,CHRE8B		;[13:水上アスレチック]
		BYTE	CHREAA,CHREAB		;[14:木の葉]
		BYTE	CHREBA,CHREAB		;[15:地下]
		BYTE	CHREFA,CHREFB		;[16:ＢＧ３ワンワン]
		BYTE	CHREBB,CHREBB		;[17:万次郎のカベ]
		BYTE	CHR25B,CHREBB		;[18:ハチ城]
		BYTE	CHR25B,CHREBB		;[19:雪]
		BYTE	CHREAA,CHREAB		;[1A:阿呆鳥の群れ]
		BYTE	CHR24A,CHR23B		;[1B:ＦＬＯＷＥＲ]
		BYTE	CHR22A,CHR22A		;[1C:マスクウィンドゥ]
		BYTE	CHRE8B,CHRE8B		;[1D:水上アスレチック]
		BYTE	CHR24B,CHR24B		;[1E:月]
		BYTE	CHRE8A,CHRE8B		;[1F:カメックの魔法]
		BYTE	CHR100A,CHR24A		;[20:ハチパステル]
		BYTE	CHREAA,CHREAB		;[21:胃壁]
		BYTE	CHR100B,CHRE8B		;[22:ハチ滝]
		BYTE	CHR24B,CHR101A		;[23:ハチ夕日]
		BYTE	CHR101B,CHRE8B		;[24:ゴッホ星空]
		BYTE	CHR102A,CHR102A		;[25:ボス部屋]
		BYTE	CHR102B,CHR23B		;[26:ボスフラッシュ効果]
		BYTE	CHR103A,CHREAB		;[27:森その２]
		BYTE	CHR100B,CHR100B		;[28:スター]
		BYTE	CHREDA,CHREDB		;[29:万次郎の雲]
		BYTE	CHR24B,CHR24B		;[2A:固定月]
		BYTE	CHREDA,CHREDB		;[2B:万次郎の雲その２]
		BYTE	CHR103B,CHR100B		;[2C:霧]
		BYTE	CHR103B,CHR100B		;[2D:霧ラスターなし]
		BYTE	CHREDA,CHREDB		;[2E:万次郎の雲その３]
		BYTE	CHREEA,CHREDB		;[2F:ハチフジ]
;
OBJCHRBK	EQU	$
;			     [0]	  [1]	       [2]	    [3]		 [4]	      [5]
		BYTE	CHR41A-CHR10,CHR41B-CHR10,CHR43A-CHR10,CHR43D-CHR10,CHR4BA-CHR10,CHR4BB-CHR10 ;[00]
		BYTE	CHR41B-CHR10,CHR43A-CHR10,CHR43B-CHR10,CHR43C-CHR10,CHR43D-CHR10,CHR41B-CHR10 ;[01]
		BYTE	CHR41B-CHR10,CHR43D-CHR10,CHR49C-CHR10,CHR49D-CHR10,CHR41A-CHR10,CHR41B-CHR10 ;[02]
		BYTE	CHR41B-CHR10,CHR43A-CHR10,CHR43D-CHR10,CHR4BD-CHR10,CHR41A-CHR10,CHR41B-CHR10 ;[03]
		BYTE	CHR4BC-CHR10,CHR40B-CHR10,CHR40C-CHR10,CHR40D-CHR10,CHR41A-CHR10,CHR41B-CHR10 ;[04]
		BYTE	CHR41A-CHR10,CHR41B-CHR10,CHR43A-CHR10,CHR43B-CHR10,CHR43D-CHR10,CHR41B-CHR10 ;[05]
		BYTE	CHR41B-CHR10,CHR46A-CHR10,CHR46B-CHR10,CHR46C-CHR10,CHR46D-CHR10,CHR41B-CHR10 ;[06]
		BYTE	CHR41A-CHR10,CHR41B-CHR10,CHR4AD-CHR10,CHR42D-CHR10,CHR41A-CHR10,CHR41B-CHR10 ;[07]
		BYTE	CHR41B-CHR10,CHR43A-CHR10,CHR43D-CHR10,CHR42D-CHR10,CHR41A-CHR10,CHR41B-CHR10 ;[08]
		BYTE	CHR4AA-CHR10,CHR4AB-CHR10,CHR4AC-CHR10,CHR4AD-CHR10,CHR4BA-CHR10,CHR4BB-CHR10 ;[09]
		BYTE	CHR40A-CHR10,CHR40B-CHR10,CHR41B-CHR10,CHR42D-CHR10,CHR41A-CHR10,CHR41B-CHR10 ;[0A]
		BYTE	CHR4CD-CHR10,CHR43A-CHR10,CHR43D-CHR10,CHR42D-CHR10,CHR41A-CHR10,CHR41B-CHR10 ;[0B]
		BYTE	CHR40A-CHR10,CHR40A-CHR10,CHR40A-CHR10,CHR40A-CHR10,CHR40A-CHR10,CHR40A-CHR10 ;[0C]
		BYTE	CHR40A-CHR10,CHR40A-CHR10,CHR40A-CHR10,CHR40A-CHR10,CHR40A-CHR10,CHR40A-CHR10 ;[0D]
		BYTE	CHR40A-CHR10,CHR40A-CHR10,CHR40A-CHR10,CHR40A-CHR10,CHR40A-CHR10,CHR40A-CHR10 ;[0E]
		BYTE	CHR40A-CHR10,CHR40A-CHR10,CHR40A-CHR10,CHR40A-CHR10,CHR40A-CHR10,CHR40A-CHR10 ;[0F]
;
GMCHRST		EQU	$
		PHB			;(DBR) save
		PHK			;(DBR) <-- (PBR)
		PLB
;
		MI16
;
;-------------- ＢＧ１キャラクターセット --------------------------------
		LDA	BG1TYP		;x3
		ASL	A
;;;;		CLC
		ADC	BG1TYP
		TAY
		LDA	!BG1CHRBK,Y
		STA	<WORK10
		LDA	!BG1CHRBK+1,Y
		STA	<WORK11
;
;-------------- ＢＧ２キャラクターセット --------------------------------
		LDA	BG2TYP		;x2
		ASL	A
		TAY
		LDA	!BG2CHRBK,Y
		STA	<WORK13
;
;-------------- ＢＧ３キャラクターセット --------------------------------
		LDA	BG3TYP		;x2
		ASL	A
		TAY
		LDA	!BG3CHRBK,Y
		STA	<WORK15
;
;-------------- ＯＢＪキャラクターセット --------------------------------
		LDA	OBJTYP		;x6
		ASL	A
;;;;		    CLC
		ADC	OBJTYP
		ASL	A
		TAY
;
		LDA	!ENBGFLG	; ツール のみ
		JSR	OBJTPRD		;
;
GMCS030_050	EQU	$
		M8
;
		LDY	#GMCHR		;(Y) <-- character index
;
;-------------- キャラクターセット --------------------------------------
GMCS030		EQU	$
		LDA	#WOB7CHR/400H
		STA	CIPSCB		;bitmap screen address set
;
GMCS032		EQU	$
		LDA	!CHRTBL,Y	;(A) <-- chara bank
		CMP	#0F0H
		BCC	GMCS040		;direct set ? ( yes:GMCS040 )
;
		CMP	#0FFH
		BEQ	GMCS050		;end ? ( yes:GMCS050 )
;
		SEC
		SBC	#0F0H
;
		M16
;
		AND	#00FFH
		TAX
;
		M8
;
		LDA	<WORK10,X	;(A) <-- chara bank
GMCS040		EQU	$
		LDX	!CHRTBL+1,Y	;(X) <-- VRAM address
		JSR	CHRSUB
		INY
		INY
		INY
		BRA	GMCS032
;
GMCS050		EQU	$
;
		I8
;
		PLB
		RTL
;
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+	オブジェ タイプ データ 読み込み (敵ツールのみ)	+
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++
		MEM16
		IDX16
OBJTPRD		EQU	$
		PHX
		TYX
		STZ	<WORKE
OBJTPRD_LOP	EQU	$
		LDA	>CHRDTBF,X
		AND	#000FFH
		TAY
		LDA	CHRNODAT,Y
		AND	#000FFH
		LDY	<WORKE
		STA	!OBJCHR_BNK,Y	;敵キャラクターバンク１セット
		STA	!WORK17,Y
		INX
		INC	<WORKE
		CPY	#00005H
		BCC	OBJTPRD_LOP
		PLX
		RTS
		MEM8
		IDX8
;
;------------------------------------------------------------------------
;-		ダブルテレサ キャラクターセット				-
;------------------------------------------------------------------------
DBLTELESA	EQU	$
		PHB			;(DBR) save
		PHK			;(DBR) <-- (PBR)
		PLB
;
		LDX	#GM0B
		JSL	>GMMDST
		LDA	#038H
		STA	210AH
;
		LDA	#CHRE7B-CHR10
		STA	!OBJCHR_BNK+0
		LDA	#CHR48C-CHR10
		STA	!OBJCHR_BNK+1
		LDA	#CHR4ED-CHR10
		STA	!OBJCHR_BNK+2
		LDA	#CHR40A-CHR10
		STA	!OBJCHR_BNK+3
		LDA	#CHR40A-CHR10
		STA	!OBJCHR_BNK+4
		LDA	#CHR43D-CHR10
		STA	!OBJCHR_BNK+5
;
		I16			; index 16bit mode
		LDY	#DBLTL		;(Y) <-- character index
		JMP	GMCS030
;
;------------------------------------------------------------------------
;-		マップキャラクターセット				-
;------------------------------------------------------------------------
;
;----------------------------------------------------------------
;-		マップキャラクターバンクデータ			-
;----------------------------------------------------------------
MP_M7_CHRBK	EQU	$
;;;;K;;;;		BYTE	CHR78	;[0:地上]
;;;;K;;;;		BYTE	CHR79	;[1:地下]
;;;;K;;;;		BYTE	CHR7A	;[2:]
;;;;K;;;;		BYTE	CHR7B	;[3:]
;;;;K;;;;		BYTE	CHR7C	;[4:]
;;;;K;;;;		BYTE	CHR7D	;[5:]
;;;;K;;;;		BYTE	CHR7E	;[6:]
;;;;K;;;;		BYTE	CHR7F	;[7:]
;
MPCHRST		EQU	$
;;;;K;;;;		PHB			;(DBR) save
;;;;K;;;;		PHK			;(DBR) <-- (PBR)
;;;;K;;;;		PLB
;;;;K;;;;;
;;;;K;;;;;-------------- モード７キャラクターセット ------------------------------
;;;;K;;;;		LDX	MPTYPE
;;;;K;;;;		LDA	!MP_M7_CHRBK,X
;;;;K;;;;		STA	<WORK10
;;;;K;;;;;
;;;;K;;;;		I16
;;;;K;;;;;
;;;;K;;;;		LDY	#MPCHR		;(Y) <-- character index
;;;;K;;;;		JMP	GMCS030
;
;****************************************************************
;*		character buffer set & DMA			*
;*			in  : (A) <-- chara bank		*
;*			      (X) <-- VRAM address		*
;*			[ from memory-8,index-16 bit mode !! ]	*
;****************************************************************
;
		MEM8
		IDX16
;
CHRSUB		EQU	$
		STX	<WORKE		;(WKE,F) <-- VRAM address set
;
		M16
;
		AND	#00FFH		;x3
		STA	<WORKC		;(WKC,D) <-- chara bank
		ASL	A
;;;;		CLC
		ADC	<WORKC
		TAX
;
;-------------- press data convert ----------------------
		LDA	<WORKE
		BPL	CHRSB000	;画像圧縮？ ( no:CHRSB000 )
;
;-------------- 画像圧縮データ解凍 ----------------------
		LDA	!CHRTBL+3,Y
		STA	<WORKA		;(WKA,B) <-- number of byte
		INY
		INY
		PHY			;(Y) save
;
		ASL	A		;x4
		ASL	A		;
		XBA
		AND	#00FFH
		STA	R3		;(R3) <-- pless data line
;
		LDA	>ADDSTART+((NO_PRES+CHR10)*3),X
		STA	R1		;(R1)  <-- pless data address(L,H)
		LDA	>ADDSTART+((NO_PRES+CHR10)*3)+2,X
		AND	#00FFH
		STA	R0		;(R0)  <--	    "        (B)
;
		I8
;
		M_CHIP	DEF_CHR
;
		I16
;
		LDY	<WORKA		;(Y) <-- number of byte
;
		M8
;
		BRA	CHRSB002
;
		MEM16
;
;-------------- どろぼう圧縮データ解凍 ------------------
CHRSB000	EQU	$
		PHY			;(Y) save
;
		LDA	>ADDSTART+(NO_PRES*3),X
		STA	R9		;(R9)  <-- pless data address(L,H)
		LDA	>ADDSTART+(NO_PRES*3)+2,X
		AND	#00FFH
		STA	R4		;(R4)  <--	    "        (B)
		LDA	#WOB7CHR
		STA	R10		;(R10) <-- data store address
;
		I8
;
		M_CHIP	DT_UNCOMPRESS
;
		I16
;
		LDA	R10
		SEC
		SBC	#WOB7CHR
		TAY			;(Y) <-- number of byte
;
		M8
;
		LDA	<WORKC
		CMP	#CHR78
		BCS	CHRSB010	;mode 7 chara ? ( yes:CHRSB010 )
;
;-------------- character DMA set -----------------------
CHRSB002	EQU	$
		LDA	#10000000B	;inc mode set
		STA	2115H
		LDX	<WORKE		;VRAM address set
		STX	2116H
;
		LDX	#00000001B+(18H*100H)	;DMA paramer & B bus address set
		STX	4300H
		LDX	#WOB7CHR		;A bus address(L,H) set
		STX	4302H
		LDA	#BANK WOB7CHR		;	"     (B) set
		STA	4304H
		STY	4305H			;number of byte set
		LDA	#00000001B
		STA	420BH			;DMA "ON" !!
;
		PLY			;(X) load
		RTS
;
;-------------- mode 7 character DMA set ----------------
CHRSB010	EQU	$
		PHB			;(DBR) save
		LDA	#BANK WORKBF
		PHA
		PLB
;
		M16
;
		TYA
		STA	<WORK		;loop no
		ASL	A
		PHA			;number of byte save
;
		LDX	#00		;(X) <-- from data pointer
		LDY	#00		;(Y) <-- to	    "
CHRSB020	EQU	$
		LDA	>WOB7CHR,X
		PHA
		AND	#0FH
		STA	WORKBF,Y
		INY
		PLA
		AND	#0F0H
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		STA	WORKBF,Y
		INX
		INY
		DEC	<WORK
		BNE	CHRSB020
;
		M8
;
		PLY
		PLB
;
		LDA	#10000000B	;inc mode set
		STA	2115H
		LDX	<WORKE		;VRAM address set
		STX	2116H
;
		LDX	#00000000B+(19H*100H)	;DMA paramer & B bus address set
		STX	4300H
		LDX	#WORKBF			;A bus address(L,H) set
		STX	4302H
		LDA	#BANK WORKBF		;	"     (B) set
		STA	4304H
		STY	4305H			;number of byte set
		LDA	#00000001B
		STA	420BH			;DMA "ON" !!
;
		PLY			;(X) load
		RTS
;
;****************************************************************
;*								*
;*		圧縮データ解凍					*
;*			入力：					*
;*				(A) <-- データＮｏ．		*
;*				(X) <-- 解凍先アドレス		*
;*								*
;*			出力：					*
;*				(A) <-- 解凍データバイト数	*
;*								*
;*			使用ＲＡＭ：（ＣＣＷＯＲＫ０）		*
;*								*
;****************************************************************
;
		MEM16
		IDX16
;
UNCOMPRES_X	EQU	$
		LDX	#WOB7CHR+1000H	;(X) <-- 解凍先アドレス
;
UNCOMPRES	EQU	$
		STA	CCWORK0
		ASL	A
;;;;		CLC
		ADC	CCWORK0
;
		STX	CCWORK0		;(CWK0) <-- 解凍先アドレス
		STX	R10		;(R10)	<--	  ”
;
		TAX
;
;-------------- press data convert ----------------------
		LDA	>ADDSTART+(NO_PRES*3),X
		STA	R9		;(R9)  <-- pless data address(L,H)
		LDA	>ADDSTART+(NO_PRES*3)+2,X
		AND	#00FFH
		STA	R4		;(R4)  <--	    "        (B)
;
		I8
;
		M_CHIP	DT_UNCOMPRESS
;
		I16
;
		LDA	R10
		SEC
		SBC	CCWORK0		;(A) <-- number of byte
		RTL
;
;************************************************************************
;*		カラーセット						*
;************************************************************************
;
		MEM8
		IDX8
;
;------------------------------------------------------------------------
;-		ゲームプレイ カラーバンクデータ				-
;------------------------------------------------------------------------
BG1COLBK	EQU	$
		WORD	BG1_SUB_0_COL	;[0:地下]
		WORD	BG1_SUB_1_COL	;[1:草]
		WORD	BG1_SUB_2_COL	;[2:水中]
		WORD	BG1_SUB_3_COL	;[3:溶岩]
		WORD	BG1_SUB_4_COL	;[4:雪]
		WORD	BG1_SUB_5_COL	;[5:ジャングル]
		WORD	BG1_SUB_6_COL	;[6:カベ]
		WORD	BG1_SUB_7_COL	;[7:花]
		WORD	BG1_SUB_8_COL	;[8:]
		WORD	BG1_SUB_9_COL	;[9:フラワー]
		WORD	BG1_SUB_A_COL	;[A:]
		WORD	BG1_SUB_B_COL	;[B:ドカン]
		WORD	BG1_SUB_C_COL	;[C:]
		WORD	BG1_SUB_D_COL	;[D:空]
		WORD	BG1_SUB_E_COL	;[E:]
		WORD	BG1_SUB_F_COL	;[F:]
		WORD	BG1_SUB_10_COL	;[10:]
		WORD	BG1_SUB_11_COL	;[11:]
		WORD	BG1_SUB_12_COL	;[12:]
		WORD	BG1_SUB_13_COL	;[13:]
		WORD	BG1_SUB_14_COL	;[14:]
		WORD	BG1_SUB_15_COL	;[15:]
		WORD	BG1_SUB_16_COL	;[16:]
		WORD	BG1_SUB_17_COL	;[17:]
		WORD	BG1_SUB_18_COL	;[18:]
		WORD	BG1_SUB_19_COL	;[19:]
		WORD	BG1_SUB_1A_COL	;[1A:]
		WORD	BG1_SUB_1B_COL	;[1B:]
		WORD	BG1_SUB_1C_COL	;[1C:]
		WORD	BG1_SUB_1D_COL	;[1D:]
		WORD	BG1_SUB_1E_COL	;[1E:]
		WORD	BG1_SUB_1F_COL	;[1F:]
BG2COLBK	EQU	$
		WORD	BG2_SUB_7_COL	;[ 0:ハチ城];;;;;地下]
		WORD	BG2_SUB_4_COL	;[ 1:草]
		WORD	BG2_SUB_1_COL	;[ 2:水中]
		WORD	BG2_SUB_0_COL	;[ 3:溶岩]
		WORD	BG2_SUB_3_COL	;[ 4:雪]
		WORD	BG2_SUB_2_COL	;[ 5:ＲＥＤ ＷＯＯＤＳ]
		WORD	BG2_SUB_6_COL	;[ 6:カベ]
		WORD	BG2_SUB_5_COL	;[ 7:パステル２]
		WORD	BG2_SUB_8_COL	;[ 8:森]
		WORD	BG2_SUB_A_COL	;[ 9:遠近両用]
		WORD	BG2_SUB_B_COL	;[ A:ハチ滝]
		WORD	BG2_SUB_C_COL	;[ B:ワンワンドスン]
		WORD	BG2_SUB_D_COL	;[ C:ジャングル]
		WORD	BG2_SUB_E_COL	;[ D:マルペケ]
		WORD	BG2_SUB_F_COL	;[ E:グルグル]
		WORD	BG2_SUB_10_COL	;[ F:フジ山]
		WORD	BG2_SUB_A_COL	;[10:]
		WORD	BG2_SUB_0_COL	;[11:雪山カラー違い]
		WORD	BG2_SUB_2_COL	;[12:空]
		WORD	BG2_SUB_11_COL	;[13:地下いわ]
		WORD	BG2_SUB_12_COL	;[14:万次郎]
		WORD	BG2_SUB_13_COL	;[15:岩山]
		WORD	BG2_SUB_17_COL	;[16:特殊コース（ひみつ）]
		WORD	BG2_SUB_17_COL	;[17:モード２画面切り替えコース , 月その２]
		WORD	BG2_SUB_14_COL	;[18:ＮＩＧＨＴ]
		WORD	BG2_SUB_15_COL	;[19:ドカン]
		WORD	BG2_SUB_16_COL	;[1A:ハチパステル]
		WORD	BG2_SUB_19_COL	;[1B:たこやき山]
		WORD	BG2_SUB_18_COL	;[1C:ハチ朝日]
		WORD	BG2_SUB_1A_COL	;[1D:杉林]
		WORD	BG2_SUB_1B_COL	;[1E:グルグル２]
		WORD	BG2_SUB_1C_COL	;[1F:クッパの部屋]
		WORD	BG2_SUB_20_COL	;[20:地下滝 水]
		WORD	BG2_SUB_21_COL	;[21:地下滝 溶岩]
		WORD	BG2_SUB_22_COL	;[22:]
		WORD	BG2_SUB_23_COL	;[23:]
		WORD	BG2_SUB_24_COL	;[24:]
		WORD	BG2_SUB_25_COL	;[25:]
		WORD	BG2_SUB_26_COL	;[26:]
		WORD	BG2_SUB_27_COL	;[27:]
		WORD	BG2_SUB_28_COL	;[28:]
		WORD	BG2_SUB_29_COL	;[29:]
		WORD	BG2_SUB_2A_COL	;[2A:]
		WORD	BG2_SUB_2B_COL	;[2B:]
		WORD	BG2_SUB_2C_COL	;[2C:]
		WORD	BG2_SUB_2D_COL	;[2D:]
		WORD	BG2_SUB_2E_COL	;[2E:]
		WORD	BG2_SUB_2F_COL	;[2F:]
		WORD	BG2_SUB_30_COL	;[30:]
		WORD	BG2_SUB_31_COL	;[31:]
		WORD	BG2_SUB_32_COL	;[32:]
		WORD	BG2_SUB_33_COL	;[33:]
		WORD	BG2_SUB_34_COL	;[34:]
		WORD	BG2_SUB_35_COL	;[35:]
		WORD	BG2_SUB_36_COL	;[36:]
		WORD	BG2_SUB_37_COL	;[37:]
		WORD	BG2_SUB_38_COL	;[38:]
		WORD	BG2_SUB_39_COL	;[39:]
		WORD	BG2_SUB_3A_COL	;[3A:]
		WORD	BG2_SUB_3B_COL	;[3B:]
		WORD	BG2_SUB_3C_COL	;[3C:]
		WORD	BG2_SUB_3D_COL	;[3D:]
		WORD	BG2_SUB_3E_COL	;[3E:]
		WORD	BG2_SUB_3F_COL	;[3F:]
BG3COLBK	EQU	$
		WORD	BG3_SUB_0_COL	;[00:雪山]
		WORD	BG3_SUB_1_COL	;[01:草トンネルマスク]
		WORD	BG3_SUB_2_COL	;[02:水中]
		WORD	BG3_SUB_3_COL	;[03:スライム]
		WORD	BG3_SUB_4_COL	;[04:カベ，万次郎のカベ,胃壁]
		WORD	BG3_SUB_5_COL	;[05:バブル泡]
		WORD	BG3_SUB_6_COL	;[06:パステル]
		WORD	BG3_SUB_7_COL	;[07:パステゾ２,ジャングル,森その２]
		WORD	BG3_SUB_C_COL	;[08:木の葉]
		WORD	BG3_SUB_9_COL	;[09:フジ山]
		WORD	BG3_SUB_A_COL	;[0A:雲その２]
		WORD	BG3_SUB_B_COL	;[0B:ＮＩＧＨＴ]
		WORD	BG3_SUB_8_COL	;[0C:森]
		WORD	BG3_SUB_D_COL	;[0D:]
		WORD	BG3_SUB_E_COL	;[0E:ＢＧ３ワンワン]
		WORD	BG3_SUB_F_COL	;[0F:水上アスレチック]
		WORD	BG3_SUB_10_COL	;[10]
		WORD	BG3_SUB_11_COL	;[11:ハチ城]
		WORD	BG3_SUB_12_COL	;[12]
		WORD	BG3_SUB_13_COL	;[13:ＦＬＯＷＥＲ]
		WORD	BG3_SUB_14_COL	;[14:雪降り始め用]
		WORD	BG3_SUB_15_COL	;[15]
		WORD	BG3_SUB_16_COL	;[16]
		WORD	BG3_SUB_17_COL	;[17]
		WORD	BG3_SUB_18_COL	;[18:枯れ木]
		WORD	BG3_SUB_19_COL	;[19:ハチパステル]
		WORD	BG3_SUB_1A_COL	;[1A]
		WORD	BG3_SUB_1B_COL	;[1B:ハチ滝]
		WORD	BG3_SUB_1C_COL	;[1C:ハチ夕日]
		WORD	BG3_SUB_1D_COL	;[1D:ハチ朝日]
		WORD	BG3_SUB_1E_COL	;[1E:ゴッホ星空]
		WORD	BG3_SUB_1F_COL	;[1F:ボス部屋]
		WORD	BG3_SUB_20_COL	;[20]
		WORD	BG3_SUB_21_COL	;[21:万次郎の雲(上密)]
		WORD	BG3_SUB_22_COL	;[22:万次郎の雲(下密)]
		WORD	BG3_SUB_23_COL	;[23:]
		WORD	BG3_SUB_24_COL	;[24:]
		WORD	BG3_SUB_25_COL	;[25:]
		WORD	BG3_SUB_26_COL	;[26:]
		WORD	BG3_SUB_27_COL	;[27:]
		WORD	BG3_SUB_2C_COL	;[28:]
		WORD	BG3_SUB_29_COL	;[29:]
		WORD	BG3_SUB_2A_COL	;[2A:]
		WORD	BG3_SUB_2B_COL	;[2B:霧 普通]
		WORD	BG3_SUB_28_COL	;[2C:霧 出てくる]
		WORD	BG3_SUB_2D_COL	;[2D:霧 黄色]
		WORD	BG3_SUB_2E_COL	;[2E:]
		WORD	BG3_SUB_2F_COL	;[2F:]
		WORD	BG3_SUB_30_COL	;[30:]
		WORD	BG3_SUB_31_COL	;[31:]
		WORD	BG3_SUB_32_COL	;[32:ハチフジ]
		WORD	BG3_SUB_33_COL	;[33:]
		WORD	BG3_SUB_34_COL	;[34:]
		WORD	BG3_SUB_35_COL	;[35:]
		WORD	BG3_SUB_36_COL	;[36:]
		WORD	BG3_SUB_37_COL	;[37:]
		WORD	BG3_SUB_38_COL	;[38:]
		WORD	BG3_SUB_39_COL	;[39:]
		WORD	BG3_SUB_3A_COL	;[3A:]
		WORD	BG3_SUB_3B_COL	;[3B:]
		WORD	BG3_SUB_3C_COL	;[3C:]
		WORD	BG3_SUB_3D_COL	;[3D:]
		WORD	BG3_SUB_3E_COL	;[3E:]
		WORD	BG3_SUB_3F_COL	;[3F:]
OBJCOLBK	EQU	$
		WORD	OBJ_SUB_0_COL  ;[0]
		WORD	OBJ_SUB_1_COL  ;[1]
		WORD	OBJ_SUB_2_COL  ;[2]
		WORD	OBJ_SUB_3_COL  ;[3]
		WORD	OBJ_SUB_4_COL  ;[4]
		WORD	OBJ_SUB_5_COL  ;[5]
		WORD	OBJ_SUB_6_COL  ;[6]
		WORD	OBJ_SUB_7_COL  ;[7]
		WORD	OBJ_SUB_8_COL  ;[8]
		WORD	OBJ_SUB_9_COL  ;[9]
		WORD	OBJ_SUB_A_COL  ;[A]
		WORD	OBJ_SUB_B_COL  ;[B]
		WORD	OBJ_SUB_C_COL  ;[C]
		WORD	OBJ_SUB_D_COL  ;[D]
		WORD	OBJ_SUB_E_COL  ;[E]
		WORD	OBJ_SUB_F_COL  ;[F]
;
;;;;K;;;;		WORD	OBJ_SUB_1_COL  ;[0:地下]
;;;;K;;;;		WORD	OBJ_SUB_1_COL  ;[1:草]
;;;;K;;;;		WORD	OBJ_SUB_2_COL  ;[2:水中]
;;;;K;;;;		WORD	OBJ_SUB_3_COL  ;[3:溶岩]
;;;;K;;;;		WORD	OBJ_SUB_6_COL  ;[4:雪]
;;;;K;;;;		WORD	OBJ_SUB_6_COL  ;[5:バブル]
;;;;K;;;;		WORD	OBJ_SUB_0_COL  ;[6:カベ]
;;;;K;;;;		WORD	OBJ_SUB_8_COL  ;[7:花]
;
PL_COLBK	EQU	$
		WORD	PLAY_0_COL	;[0]
		WORD	PLAY_1_COL	;[1]
		WORD	PLAY_2_COL	;[2]
		WORD	PLAY_3_COL	;[3]
		WORD	PLAY_4_COL	;[4]
		WORD	PLAY_5_COL	;[5]
		WORD	PLAY_6_COL	;[6]
		WORD	PLAY_7_COL	;[7]
;
;------------------------------------------------------------------------
;-		カラー配置 データ					-
;------------------------------------------------------------------------
COLTBL		EQU	$
;		WORD	(color data pointer)
;		BYTE	(start pos),(X wide)+(Y wide*10H)
;
;-------------- ゲームプレイ --------------------------------------------
GMCOLR		EQU	$
		WORD	BG1_MAIN_COL		;BG1 main color
		BYTE	011H,0BH+(03H*10H)
		WORD	OBJ_MAIN_COL		;OBJ main color
		BYTE	081H,0FH+(06H*10H)
;
		WORD	(WORK10-WORK10)+8000H	;nuki color
		BYTE	000H,01H+(01H*10H)
		WORD	(WORK16-WORK10)+8000H	;BG3 sub color
		BYTE	001H,0FH+(01H*10H)
		WORD	(WORK12-WORK10)+8000H	;BG1 sub color
		BYTE	041H,0FH+(02H*10H)
		WORD	(WORK1A-WORK10)+8000H	;      "
		BYTE	01CH,04H+(03H*10H)
		WORD	(WORK14-WORK10)+8000H	;BG2 sub color
		BYTE	061H,0FH+(02H*10H)
		WORD	(WORK18-WORK10)+8000H	;OBJ sub color
		BYTE	0E1H,0FH+(02H*10H)
		WORD	(WORK1C-WORK10)+8000H	;プレイヤーカラー
		BYTE	0D1H,0FH+(01H*10H)
;
		WORD	0FFFFH	;end code
;
;-------------- マップ --------------------------------------------------
MPCOLR		EQU	$
		WORD	0FFFFH	;end code
;
;-------------- ダブルテレサ用 ------------------------------------------
DBLTLCOL	EQU	$
		WORD	DBLTELE_COL
		BYTE	001H,0FH+(08H*10H)
;
		WORD	OBJ_MAIN_COL		;OBJ main color
		BYTE	081H,0FH+(05H*10H)	;
;
		WORD	(WORK10-WORK10)+8000H	;プレイヤーカラー
		BYTE	0D1H,0FH+(01H*10H)
;
		WORD	(WORK12-WORK10)+8000H	;OBJ sub color
		BYTE	0E1H,0FH+(02H*10H)
;
		WORD	0FFFFH	;end code
;
GMCOL		EQU	GMCOLR-COLTBL
MPCOL		EQU	MPCOLR-COLTBL
DBLTLCL		EQU	DBLTLCOL-COLTBL
;
;------------------------------------------------------------------------
;-		カラーセット						-
;------------------------------------------------------------------------
GMCOLST		EQU	$
		PHB			;(DBR) save
		PHK			;(DBR) <-- (PBR)
		PLB
;
		MI16
;
;-------------- ヌキカラーセット ----------------------------------------
		LDA	NUKINO		;nuki color x2
		ASL	A
;;;;		CLC
		ADC	#NUKI_COL
		STA	<WORK10
;
;-------------- ＢＧ１カラーセット --------------------------------------
		LDA	BG1COL		;x2
		ASL	A
		TAY
		LDA	!BG1COLBK,Y
		STA	<WORK12
		CLC
		ADC	#(0FH*2)*2
		STA	<WORK1A
;
;-------------- ＢＧ２カラーセット --------------------------------------
		LDA	BG2COL		;x2
		ASL	A
		TAY
		LDA	!BG2COLBK,Y
		STA	<WORK14
;
;-------------- ＢＧ３カラーセット --------------------------------------
		LDA	BG3COL		;x2
		ASL	A
		TAY
		LDA	!BG3COLBK,Y
		STA	<WORK16
;
;-------------- ＯＢＪカラーセット --------------------------------------
		LDA	OBJCOL		;x2
		ASL	A
		TAY
		LDA	!OBJCOLBK,Y
		STA	<WORK18
;
;-------------- プレイヤーカラーセット ----------------------------------
		LDA	P_COLOR		;x2
		ASL	A
		TAY
		LDA	!PL_COLBK,Y
		STA	<WORK1C
;
		LDX	#GMCOL		;(X) <-- color index
;
;-------------- カラーセット --------------------------------------------
GMCOL020	EQU	$
		LDA	#COL_ADDRESS
		STA	<WORK0
		LDA	#COL_ADDRESS/100H
		STA	<WORK1		;(WK0,1,3) <-- color data address
;
GMCOL030	EQU	$
		LDA	!COLTBL,X
		BPL	GMCOL040	;direct set ? ( yes:GMCS040 )
;
		CMP	#0FFFFH
		BEQ	GMCOL070	;end ? ( yes:GMCOL070 )
;
		AND	#7FFFH
		TAY
		LDA	WORK10,Y
GMCOL040	EQU	$
		TAY			;(Y) <-- color data pointer
		LDA	!COLTBL+3,X
		AND	#0FH
		STA	<WORK3		;(WK3,4) <-- X wide
		LDA	!COLTBL+3,X
		AND	#0F0H
		LSR	A
		LSR	A
		LSR	A
		LSR	A
		STA	<WORK5		;(WK5,6) <-- Y wide
		LDA	!COLTBL+2,X
		AND	#00FFH
		ASL	A
		STA	<WORK7		;(WK7,8) <-- color buffer start pos
;
		PHX			;(X) save
;
GMCOL050	EQU	$
		TAX			;(X) <-- color buffer start pos
		LDA	<WORK3
		STA	<WORK9		;(WK9,A) <-- X wide
GMCOL060	EQU	$
		LDA	[<WORK0],Y
		STA	>DATACOL,X
		STA	>MOTOCOL,X
		STA	>WORKCOL,X
;;;;K;;;;		STA	>BASECOL,X
		INY
		INY
		INX
		INX
		DEC	<WORK9
		BNE	GMCOL060
;
		LDA	<WORK7
		CLC
		ADC	#020H
		STA	<WORK7
		DEC	<WORK5
		BNE	GMCOL050
;
		PLX			;(X) load
;
		INX
		INX
		INX
		INX
		BRA	GMCOL030
;
GMCOL070	EQU	$
;
		MI8
;
		PLB
		RTL
;
;------------------------------------------------------------------------
;-		ダブルテレサ用カラーセット				-
;------------------------------------------------------------------------
DBLCOLST	EQU	$
		PHB		;(DBR) save
		PHK		;(DBR) <-- (PBR)
		PLB
;
		MI16		; memory , index 16bit mode
;
;-------------- プレイヤーカラーセット ----------------------------------
		LDA	!P_COLOR
		ASL	A
		TAY
		LDA	PL_COLBK,Y
		STA	<WORK10
;
;-------------- ＯＢＪカラーセット --------------------------------------
		LDA	OBJCOL		;x2
		ASL	A
		TAY
		LDA	!OBJCOLBK,Y
		STA	<WORK12
;
		LDX	#DBLTLCL
		JMP	GMCOL020
		MEM8
		IDX8
;
;
;************************************************************************
;*									*
;*		画面モードセット					*
;*			入力：						*
;*				(X) <-- 画面モードタイプＮｏ．		*
;*									*
;************************************************************************
GMMDIN		EQU	$
MPD00		WORD	MPMD00-GMMDDT	;[map]
GMD00		WORD	GMMD00-GMMDDT	;[00]
GMD01		WORD	GMMD01-GMMDDT	;[01]
GMD02		WORD	GMMD02-GMMDDT	;[02]
GMD03		WORD	GMMD03-GMMDDT	;[03]
GMD04		WORD	GMMD04-GMMDDT	;[04]
GMD05		WORD	GMMD05-GMMDDT	;[05]
GMD06		WORD	GMMD06-GMMDDT	;[06]
GMD07		WORD	GMMD07-GMMDDT	;[07]
GMD08		WORD	GMMD08-GMMDDT	;[08]
GMD09		WORD	GMMD09-GMMDDT	;[雪降りコース]
GMD0A		WORD	GMMD0A-GMMDDT	;[ボス　モード７用]
GMD0B		WORD	GMMD0B-GMMDDT	;[モード０  ダブル テレサ用]
GMD0C		WORD	GMMD0C-GMMDDT	;[ドカン]
GMD0D		WORD	GMMD0D-GMMDDT	;[ＢＧ２敵]
GMD0E		WORD	GMMD0E-GMMDDT	;[ＢＧ２敵ゲロゲーロの胃袋]
GMD0F		WORD	GMMD0F-GMMDDT	;[ＢＧ３マスク]
GMD10		WORD	GMMD10-GMMDDT	;[雪だんだんやむコース]
;
BTMPM		WORD	BTMPMD-GMMDDT	;[bitmap( 256 color )]
;
MP00		EQU	MPD00-GMMDIN
GM00		EQU	GMD00-GMMDIN
GM01		EQU	GMD01-GMMDIN
GM02		EQU	GMD02-GMMDIN
GM03		EQU	GMD03-GMMDIN
GM04		EQU	GMD04-GMMDIN
GM05		EQU	GMD05-GMMDIN
GM06		EQU	GMD06-GMMDIN
GM07		EQU	GMD07-GMMDIN
GM08		EQU	GMD08-GMMDIN
GM09		EQU	GMD09-GMMDIN
GM0A		EQU	GMD0A-GMMDIN
GM0B		EQU	GMD0B-GMMDIN
GM0C		EQU	GMD0C-GMMDIN
GM0D		EQU	GMD0D-GMMDIN
GM0E		EQU	GMD0E-GMMDIN
GM0F		EQU	GMD0F-GMMDIN
GM10		EQU	GMD10-GMMDIN
;
BTMP		EQU	BTMPM-GMMDIN
;
PPUREG		EQU	$	;[21??H]
;			[BGMODE]  [BG1SCF]  [BG2SCF]  [BG3SCF]	[BG12CH]  [BG34CH]  [WIND23]  [WIND24]
;			[WIND25]  [MANSEL]  [SUBSEL]  [WMANSL]	[WSUBSL]  [WIND30]  [SUBADF]
		BYTE	05H,	  07H,	    08H,      09H,	0BH,	  0CH,	    23H,      24H
		BYTE	25H,	  2CH,	    2DH,      2EH,	2FH,	  30H,	    31H
;
GMMDDT		EQU	$
;
;------------------------------------------------------------------------
;-		マップ							-
;------------------------------------------------------------------------
;			[NMITYP]  [IRQTYP]  [CIPSCB]  [CIPSCR]	[nuki change]
;			[BGMODE]  [BG1SCF]  [BG2SCF]  [BG3SCF]	[BG12CH]  [BG34CH]  [WIND23]  [WIND24]
;			[WIND25]  [MANSEL]  [SUBSEL]  [WMANSL]	[WSUBSL]  [WIND30]  [SUBADF]
;
MPMD00		BYTE	006H,	  000H,	    009H,     00011101B,0
		BYTE	00010000B,03CH,	    03CH,     03CH,	00100010B,00100010B,00110010B,00000000B
		BYTE	00000000B,00010011B,00000000B,00000000B,00000000B,00000000B,00111111B
;
;------------------------------------------------------------------------
;-		汎用タイプ						-
;------------------------------------------------------------------------
;			[NMITYP]  [IRQTYP]  [CIPSCB]  [CIPSCR]	[nuki change]
;			[BGMODE]  [BG1SCF]  [BG2SCF]  [BG3SCF]	[BG12CH]  [BG34CH]  [WIND23]  [WIND24]
;			[WIND25]  [MANSEL]  [SUBSEL]  [WMANSL]	[WSUBSL]  [WIND30]  [SUBADF]
;
GMMD00		BYTE	000H,	  000H,	    016H,     00111101B,0
		BYTE	00000001B,070H,	    074H,     078H,	00000000B,00000110B,00000000B,00000000B
		BYTE	00000000B,00010011B,00000000B,00000000B,00000000B,00000000B,00000000B
;
;------------------------------------------------------------------------
;-		地下、雪コースなど（基本タイプ）			-
;------------------------------------------------------------------------
;			[NMITYP]  [IRQTYP]  [CIPSCB]  [CIPSCR]	[nuki change]
;			[BGMODE]  [BG1SCF]  [BG2SCF]  [BG3SCF]	[BG12CH]  [BG34CH]  [WIND23]  [WIND24]
;			[WIND25]  [MANSEL]  [SUBSEL]  [WMANSL]	[WSUBSL]  [WIND30]  [SUBADF]
;
GMMD01		BYTE	002H,	  000H,	    016H,     00111101B,1
		BYTE	01101001B,069H,	    03AH,     034H,	01110111B,00000010B,00000000B,00000000B
		BYTE	00000000B,00010111B,00000000B,00000000B,00000000B,00100010B,00100000B
;
;------------------------------------------------------------------------
;-		モグラＢＧ３マスクコース				-
;------------------------------------------------------------------------
;			[NMITYP]  [IRQTYP]  [CIPSCB]  [CIPSCR]	[nuki change]
;			[BGMODE]  [BG1SCF]  [BG2SCF]  [BG3SCF]	[BG12CH]  [BG34CH]  [WIND23]  [WIND24]
;			[WIND25]  [MANSEL]  [SUBSEL]  [WMANSL]	[WSUBSL]  [WIND30]  [SUBADF]
;
GMMD02		BYTE	002H,	  000H,	    016H,     00111101B,1
		BYTE	01101001B,069H,	    03AH,     034H,	01110111B,00000010B,00000000B,00000000B
		BYTE	00000000B,00010100B,00000011B,00000000B,00000000B,00100010B,00100000B
;
;------------------------------------------------------------------------
;-		水中コース						-
;------------------------------------------------------------------------
;			[NMITYP]  [IRQTYP]  [CIPSCB]  [CIPSCR]	[nuki change]
;			[BGMODE]  [BG1SCF]  [BG2SCF]  [BG3SCF]	[BG12CH]  [BG34CH]  [WIND23]  [WIND24]
;			[WIND25]  [MANSEL]  [SUBSEL]  [WMANSL]	[WSUBSL]  [WIND30]  [SUBADF]
;
GMMD03		BYTE	002H,	  000H,	    016H,     00111101B,1
		BYTE	01101001B,069H,	    03AH,     034H,	01110111B,00000010B,00000000B,00000000B
		BYTE	00000000B,00010011B,00000100B,00000000B,00000000B,00100010B,10110011B
;
;------------------------------------------------------------------------
;-		溶岩コース						-
;------------------------------------------------------------------------
;			[NMITYP]  [IRQTYP]  [CIPSCB]  [CIPSCR]	[nuki change]
;			[BGMODE]  [BG1SCF]  [BG2SCF]  [BG3SCF]	[BG12CH]  [BG34CH]  [WIND23]  [WIND24]
;			[WIND25]  [MANSEL]  [SUBSEL]  [WMANSL]	[WSUBSL]  [WIND30]  [SUBADF]
;
GMMD04		BYTE	004H,	  000H,	    016H,     00111101B,1
		BYTE	00100010B,069H,	    03AH,     034H,	01110111B,00000010B,00000000B,00000000B
		BYTE	00000000B,00010001B,00000010B,00000000B,00000000B,00100010B,00100000B
;
;------------------------------------------------------------------------
;-		バブルコース						-
;------------------------------------------------------------------------
;			[NMITYP]  [IRQTYP]  [CIPSCB]  [CIPSCR]	[nuki change]
;			[BGMODE]  [BG1SCF]  [BG2SCF]  [BG3SCF]	[BG12CH]  [BG34CH]  [WIND23]  [WIND24]
;			[WIND25]  [MANSEL]  [SUBSEL]  [WMANSL]	[WSUBSL]  [WIND30]  [SUBADF]
;
GMMD05		BYTE	002H,	  000H,	    016H,     00111101B,1
		BYTE	01101001B,069H,	    03AH,     034H,	01110111B,00000010B,00000000B,00000000B
		BYTE	00000000B,00010011B,00010100B,00000000B,00000000B,00100010B,01110010B
;
;------------------------------------------------------------------------
;-		カベコース						-
;------------------------------------------------------------------------
;			[NMITYP]  [IRQTYP]  [CIPSCB]  [CIPSCR]	[nuki change]
;			[BGMODE]  [BG1SCF]  [BG2SCF]  [BG3SCF]	[BG12CH]  [BG34CH]  [WIND23]  [WIND24]
;			[WIND25]  [MANSEL]  [SUBSEL]  [WMANSL]	[WSUBSL]  [WIND30]  [SUBADF]
;
GMMD06		BYTE	002H,	  000H,	    016H,     00111101B,1
		BYTE	01101001B,069H,	    03AH,     034H,	01110111B,00000010B,00000000B,00000000B
		BYTE	00000000B,00010101B,00000010B,00000000B,00000000B,00100010B,00100000B
;
;
;------------------------------------------------------------------------
;-		森のこもれびコース					-
;------------------------------------------------------------------------
;			[NMITYP]  [IRQTYP]  [CIPSCB]  [CIPSCR]	[nuki change]
;			[BGMODE]  [BG1SCF]  [BG2SCF]  [BG3SCF]	[BG12CH]  [BG34CH]  [WIND23]  [WIND24]
;			[WIND25]  [MANSEL]  [SUBSEL]  [WMANSL]	[WSUBSL]  [WIND30]  [SUBADF]
;
GMMD07		BYTE	002H,	  000H,	    016H,     00111101B,1
		BYTE	01101001B,069H,	    03AH,     034H,	01110111B,00000010B,00000000B,00000000B
		BYTE	00000000B,00010101B,00000010B,00000000B,00000000B,00100010B,00100100B
;
;------------------------------------------------------------------------
;-		穴ジュゲム、アホー鳥ＢＧ３コース			-
;------------------------------------------------------------------------
;			[NMITYP]  [IRQTYP]  [CIPSCB]  [CIPSCR]	[nuki change]
;			[BGMODE]  [BG1SCF]  [BG2SCF]  [BG3SCF]	[BG12CH]  [BG34CH]  [WIND23]  [WIND24]
;			[WIND25]  [MANSEL]  [SUBSEL]  [WMANSL]	[WSUBSL]  [WIND30]  [SUBADF]
;
GMMD08		BYTE	002H,	  000H,	    016H,     00111101B,1
		BYTE	01101001B,069H,	    03AH,     034H,	01110111B,00000010B,00000000B,00000000B
		BYTE	00000000B,00010001B,00000110B,00000000B,00000000B,00100010B,00100000B
;
;------------------------------------------------------------------------
;-		雪降りコース						-
;------------------------------------------------------------------------
;			[NMITYP]  [IRQTYP]  [CIPSCB]  [CIPSCR]	[nuki change]
;			[BGMODE]  [BG1SCF]  [BG2SCF]  [BG3SCF]	[BG12CH]  [BG34CH]  [WIND23]  [WIND24]
;			[WIND25]  [MANSEL]  [SUBSEL]  [WMANSL]	[WSUBSL]  [WIND30]  [SUBADF]
;
GMMD09		BYTE	002H,	  000H,	    016H,     00111101B,1
		BYTE	01101001B,069H,	    03AH,     034H,	01110111B,00000010B,00000000B,00000000B
		BYTE	00000000B,00010011B,00000000B,00000000B,00000000B,00100010B,00100000B
;
;------------------------------------------------------------------------
;-		ボス　モード７用					-
;------------------------------------------------------------------------
;			[NMITYP]  [IRQTYP]  [CIPSCB]  [CIPSCR]	[nuki change]
;			[BGMODE]  [BG1SCF]  [BG2SCF]  [BG3SCF]	[BG12CH]  [BG34CH]  [WIND23]  [WIND24]
;			[WIND25]  [MANSEL]  [SUBSEL]  [WMANSL]	[WSUBSL]  [WIND30]  [SUBADF]
GMMD0A		BYTE	00AH,	  000H,	    016H,     00111101B,1
		BYTE	00000111B,000H,	    000H,     000H,	00000000B,00000000B,00000000B,00000000B
		BYTE	00000000B,00010001B,00000000B,00000000B,00000000B,00100010B,00100000B
;
;------------------------------------------------------------------------
;-		モード０  ダブル テレサ用				-
;------------------------------------------------------------------------
;			[NMITYP]  [IRQTYP]  [CIPSCB]  [CIPSCR]	[nuki change]
;			[BGMODE]  [BG1SCF]  [BG2SCF]  [BG3SCF]	[BG12CH]  [BG34CH]  [WIND23]  [WIND24]
;			[WIND25]  [MANSEL]  [SUBSEL]  [WMANSL]	[WSUBSL]  [WIND30]  [SUBADF]
GMMD0B		BYTE	002H,	  000H,	    016H,     00111101B,1
		BYTE	00000000B,069H,	    028H,     030H,	01110111B,01110111B,00000000B,00000000B
		BYTE	00000000B,00011111B,00000000B,00000000B,00000000B,00000010B,00100000B
;
;------------------------------------------------------------------------
;-		ドカン							-
;------------------------------------------------------------------------
;			[NMITYP]  [IRQTYP]  [CIPSCB]  [CIPSCR]	[nuki change]
;			[BGMODE]  [BG1SCF]  [BG2SCF]  [BG3SCF]	[BG12CH]  [BG34CH]  [WIND23]  [WIND24]
;			[WIND25]  [MANSEL]  [SUBSEL]  [WMANSL]	[WSUBSL]  [WIND30]  [SUBADF]
;
GMMD0C		BYTE	002H,	  000H,	    016H,     00111101B,1
		BYTE	01101001B,069H,	    03AH,     034H,	01110111B,00000010B,00000000B,00000000B
		BYTE	00000000B,00010001B,00000110B,00000000B,00000000B,00100010B,00100000B
;
;
;------------------------------------------------------------------------
;-		ＢＧ２敵						-
;------------------------------------------------------------------------
;			[NMITYP]  [IRQTYP]  [CIPSCB]  [CIPSCR]	[nuki change]
;			[BGMODE]  [BG1SCF]  [BG2SCF]  [BG3SCF]	[BG12CH]  [BG34CH]  [WIND23]  [WIND24]
;			[WIND25]  [MANSEL]  [SUBSEL]  [WMANSL]	[WSUBSL]  [WIND30]  [SUBADF]
;
GMMD0D		BYTE	002H,	  000H,	    016H,     00111101B,1
		BYTE	01101001B,069H,	    03AH,     034H,	01110111B,00000010B,00000000B,00000000B
		BYTE	00000000B,00010101B,00000000B,00000000B,00000000B,00100010B,00100000B
;
;------------------------------------------------------------------------
;-		ＢＧ２敵ゲロゲーロの胃袋				-
;------------------------------------------------------------------------
;			[NMITYP]  [IRQTYP]  [CIPSCB]  [CIPSCR]	[nuki change]
;			[BGMODE]  [BG1SCF]  [BG2SCF]  [BG3SCF]	[BG12CH]  [BG34CH]  [WIND23]  [WIND24]
;			[WIND25]  [MANSEL]  [SUBSEL]  [WMANSL]	[WSUBSL]  [WIND30]  [SUBADF]
;
GMMD0E		BYTE	002H,	  000H,	    016H,     00111101B,1
		BYTE	01011001B,03AH,	    069H,     034H,	01110111B,00000010B,00000000B,00000000B
		BYTE	00000000B,00000101B,00010010B,00000000B,00000000B,00100010B,01000101B
;
;------------------------------------------------------------------------
;-		ＢＧ３マスク						-
;------------------------------------------------------------------------
;			[NMITYP]  [IRQTYP]  [CIPSCB]  [CIPSCR]	[nuki change]
;			[BGMODE]  [BG1SCF]  [BG2SCF]  [BG3SCF]	[BG12CH]  [BG34CH]  [WIND23]  [WIND24]
;			[WIND25]  [MANSEL]  [SUBSEL]  [WMANSL]	[WSUBSL]  [WIND30]  [SUBADF]
;
GMMD0F		BYTE	002H,	  000H,	    016H,     00111101B,1
		BYTE	01101001B,069H,	    03AH,     034H,	01110111B,00000010B,00000000B,00000000B
		BYTE	00000000B,00010011B,00000100B,00000000B,00000000B,00100010B,10110011B
;
;------------------------------------------------------------------------
;-		雪だんだんやむコース					-
;------------------------------------------------------------------------
;			[NMITYP]  [IRQTYP]  [CIPSCB]  [CIPSCR]	[nuki change]
;			[BGMODE]  [BG1SCF]  [BG2SCF]  [BG3SCF]	[BG12CH]  [BG34CH]  [WIND23]  [WIND24]
;			[WIND25]  [MANSEL]  [SUBSEL]  [WMANSL]	[WSUBSL]  [WIND30]  [SUBADF]
;
GMMD10		BYTE	002H,	  000H,	    016H,     00111101B,1
		BYTE	01101001B,069H,	    03AH,     034H,	01110111B,00000010B,00000000B,00000000B
		BYTE	00000000B,00000100B,00010011B,00000000B,00000000B,00100010B,00100100B
;
;------------------------------------------------------------------------
;-		ビットマップテスト					-
;------------------------------------------------------------------------
;			[NMITYP]  [IRQTYP]  [CIPSCB]  [CIPSCR]	[nuki change]
;			[BGMODE]  [BG1SCF]  [BG2SCF]  [BG3SCF]	[BG12CH]  [BG34CH]  [WIND23]  [WIND24]
;			[WIND25]  [MANSEL]  [SUBSEL]  [WMANSL]	[WSUBSL]  [WIND30]  [SUBADF]
;
BTMPMD		BYTE	008H,	  002H,	    002H,     00011111B,0
		BYTE	00000011B,03CH,	    000H,     000H,	00000000B,00000000B,00000000B,00000000B
		BYTE	00000000B,00000001B,00000000B,00000000B,00000000B,00000000B,00000000B
;
;
;
;
		MEM8
		IDX8
;
GMMDST		EQU	$
		PHB			;(DBR) save
		PHK			;(DBR) <-- (PBR)
		PLB
;
		I16
;
		LDY	!GMMDIN,X	;(Y) <-- game mode data pointer
;
;-------------- game mode RAM set ---------------------------------------
		LDA	!GMMDDT,Y	;NMI type no. set
		STA	NMITYP
		LDA	!GMMDDT+1,Y	;IRQ type no. set
		STA	IRQTYP
		LDA	!GMMDDT+2,Y	;chip screen base set
		STA	CIPSCB
		LDA	!GMMDDT+3,Y	;     "      size mode set
		STA	CIPSCR
		LDA	!GMMDDT+4,Y
		BEQ	GMDS000		;nuki color change ? ( no:GMDS000 )
;
;-------------- nuki color change -------------------------------
;
		M16
;
		LDA	>DATACOL
		STA	NUKCOL
		STA	>DATACOL+(10H*2)	;nuki color back_up
		STA	>MOTOCOL+(10H*2)
		STA	>WORKCOL+(10H*2)
;;;;K;;;;		STA	>BASECOL+(10H*2)
		LDA	#00
		STA	>DATACOL
		STA	>MOTOCOL
		STA	>WORKCOL
;;;;K;;;;		STA	>BASECOL
;
		M8
;
GMDS000		EQU	$
		LDX	#00
GMDS010		EQU	$
		LDA	!GMMDDT+5,Y
		STA	GMMDRM,X
		INY
		INX
		CPX	#GMMDNO
		BCC	GMDS010
;
		STZ	HD420C		;H-DMA "OFF"
		STZ	210AH
;
;-------------- PPU Reg. set --------------------------------------------
		LDY	#2100H		;(WK0,1) <-- PPU Reg. address
		STY	<WORK
;
		I8
;
		LDX	#GMMDNO-1
GMDS020		EQU	$
		LDY	!PPUREG,X
		LDA	GMMDRM,X
		STA	(<WORK),Y
		DEX
		BPL	GMDS020
;
		LDA	#00000010B	;OBJ intial set
		STA	2101H
		STZ	2133H		;display intial set
		STZ	212AH		;window logic
		STZ	212BH		;     "
;
		PLB
		RTL
;
;************************************************************************
;*		warizan data set					*
;************************************************************************
DIVDTST		EQU	$
;
		MI16			; memory 16bit mode !!
;
		PHB
		LDY	#DIVBUF
		LDX	#DIVDAT
		LDA	#0200H*2-1
		MVN	#BANK DIVDAT,#BANK DIVBUF
		PLB
;
		MI8			; memory 8bit mode !!
;
		RTL
;
;************************************************************************
;*									*
;*		メモリ転送バッファセット				*
;*									*
;*			呼出し方法：					*
;*					JSL	>M_DMA_BFST		*
;*					LWORD	(転送先アドレス)	*
;*					LWORD	(転送元アドレス)	*
;*					WORD	(転送バイト数)		*
;*									*
;*			注） ＤＢＲは呼出し側のバンクであること。	*
;*									*
;************************************************************************
;
M_DMA_BFST	EQU	$
		PHP			;(P) save
;
		MI16
;
		LDX	M_DMA_BUF	;(X) <-- メモリ転送バッファポインター
		LDA	2,S		;(Y) <-- パラメータアドレス
		TAY
		LDA	7,Y		;転送バイト数セット
		STA	M_DMA_BUF+2,X
		LDA	1,Y		;転送先、元アドレスセット
		STA	M_DMA_BUF+4,X
		LDA	3,Y
		STA	M_DMA_BUF+6,X
		LDA	5,Y
		STA	M_DMA_BUF+8,X
		LDA	#00
		STA	M_DMA_BUF+10,X	;終了コードセット
		TXA
		CLC
		ADC	#8
		STA	M_DMA_BUF
		TYA
		CLC
		ADC	#8
		STA	2,S
;
		PLP			;(P) load
		RTL
;
;************************************************************************
;*									*
;*		メモリ転送バッファセット（転送バイト数可変）		*
;*									*
;*			呼出し方法：   （Ａ）← 転送バイト数		*
;*					JSL	>M_DMA_BFST		*
;*					LWORD	(転送先アドレス)	*
;*					LWORD	(転送元アドレス)	*
;*									*
;*			注） ＤＢＲは呼出し側のバンクであること。	*
;*									*
;************************************************************************
;
		MEM16
;
M_DMA_BFST_N	EQU	$
		PHP			;(P) save
;
		I16
;
		LDX	M_DMA_BUF	;(X) <-- メモリ転送バッファポインター
		STA	M_DMA_BUF+2,X	;転送バイト数セット
		LDA	2,S		;(Y) <-- パラメータアドレス
		TAY
		LDA	1,Y		;転送先、元アドレスセット
		STA	M_DMA_BUF+4,X
		LDA	3,Y
		STA	M_DMA_BUF+6,X
		LDA	5,Y
		STA	M_DMA_BUF+8,X
		LDA	#00
		STA	M_DMA_BUF+10,X	;終了コードセット
		TXA
		CLC
		ADC	#8
		STA	M_DMA_BUF
		TYA
		CLC
		ADC	#6
		STA	2,S
;
		PLP			;(P) load
		RTL
;
;************************************************************************
;*									*
;*		メモリ転送バッファセット（転送バイト数可変）		*
;*									*
;*			呼出し方法：	wk0,1,2 ← 転送先アドレス	*
;*					wk3,4,5 ← 転送元アドレス	*
;*					（Ａ）←-- 転送バイト数		*
;*					JSL	>M_DMA_BFST		*
;*									*
;************************************************************************
;
		MEM16
;
M_DMA_BFST_K	EQU	$
		PHP			;(P) save
;
		I16
;
		LDX	M_DMA_BUF	;(X) <-- メモリ転送バッファポインター
		STA	M_DMA_BUF+2,X	;転送バイト数セット
		LDA	<WORK0		;転送先、元アドレスセット
		STA	M_DMA_BUF+4,X
		LDA	<WORK2
		STA	M_DMA_BUF+6,X
		LDA	<WORK4
		STA	M_DMA_BUF+8,X
		LDA	#00
		STA	M_DMA_BUF+10,X	;終了コードセット
		TXA
		CLC
		ADC	#8
		STA	M_DMA_BUF
;
		PLP			;(P) load
		RTL
;
;************************************************************************
;*									*
;*		ＶＲＡＭＤＸセット（Ｌ，Ｈ）				*
;*									*
;*			呼出し方法：					*
;*			       （Ｙ）	     ← ＶＲＡＭアドレス	*
;*			       （Ａ）	     ← 転送バイト数		*
;*			       （Ｘ）	     ← 転送元アドレス（Ｌ，Ｈ）*
;*			       （ＷＫ１、２）←	      ”      （Ｂ）	*
;*									*
;************************************************************************
;
		MEM16
		IDX16
;
VRAMDX_ST	EQU	$
		PHB			;(DBR) save
		PEA	VRAMDX/100H	;(DBR) <-- VRAMDX(B)
		PLB
		PLB
;
		PHX
;
		LDX	VRAMDX		;(X) <-- VRAMDX set pointer
		STA	8,X		;number of byte set
		TYA
		STA	0,X		;VRAM address set
		LDA	#10000000B+(00000001B*100H)
		STA	2,X		;VRAM address inc mode & DMA parameter set
		LDA	#18H
		STA	4,X		;B bus address set
		LDA	WORK1-1
		STA	6,X		;A bus address(B) set
		PLA
		STA	5,X		;      "      (L,H) set
		TXA
		CLC
		ADC	#12
		STA	10,X		;next data address set
		STA	VRAMDX		;end address set
;
		PLB
		RTL
;
;************************************************************************
;*									*
;*		ＶＲＡＭＤＸ固定データセット（Ｌ，Ｈ）			*
;*									*
;*			呼出し方法：					*
;*			       （Ｙ）	     ← ＶＲＡＭアドレス	*
;*			       （Ａ）	     ← 転送バイト数		*
;*			       （Ｘ）	     ← 転送データ		*
;*									*
;************************************************************************
;
		MEM16
		IDX16
;
VRAMDX_C_ST	EQU	$
		PHB			;(DBR) save
		PEA	VRAMDX/100H	;(DBR) <-- VRAMDX(B)
		PLB
		PLB
;
		PHX			;set data save
;
		LDX	VRAMDX		;(X) <-- VRAMDX set pointer
		STA	8,X		;number of byte set
		TYA
		STA	0,X		;VRAM address set
		LDA	#10000000B+(00001001B*100H)
		STA	2,X		;VRAM address inc mode & DMA parameter set
		LDA	#18H
		STA	4,X		;B bus address set
		LDA	#VRAMDX/100H
		STA	6,X		;A bus address(B) set
		TXA
		CLC
		ADC	#12
		STA	5,X		;A bus address(L,H) set
		TXA
		CLC
		ADC	#13
		STA	10,X		;next data address set
		STA	VRAMDX		;end address set
		PLA
		STA	12,X		;set data set
;
		PLB
		RTL
;
;************************************************************************
;*									*
;*		ＶＲＡＭＤＸセット（Ｌ）				*
;*									*
;*			呼出し方法：					*
;*			       （Ｙ）	     ← ＶＲＡＭアドレス	*
;*			       （Ａ）	     ← 転送バイト数		*
;*			       （Ｘ）	     ← 転送元アドレス（Ｌ，Ｈ）*
;*			       （ＷＫ１、２）←	      ”      （Ｂ）	*
;*									*
;************************************************************************
;
		MEM16
		IDX16
;
VRAMDX_L_ST	EQU	$
		PHB			;(DBR) save
		PEA	VRAMDX/100H	;(DBR) <-- VRAMDX(B)
		PLB
		PLB
;
		PHX
;
		LDX	VRAMDX		;(X) <-- VRAMDX set pointer
		STA	8,X		;number of byte set
		TYA
		STA	0,X		;VRAM address set
		LDA	#00000000B+(00000000B*100H)
		STA	2,X		;VRAM address inc mode & DMA parameter set
		LDA	#18H
		STA	4,X		;B bus address set
		LDA	WORK1-1
		STA	6,X		;A bus address(B) set
		PLA
		STA	5,X		;      "      (L,H) set
		TXA
		CLC
		ADC	#12
		STA	10,X		;next data address set
		STA	VRAMDX		;end address set
;
		PLB
		RTL
;
;************************************************************************
;*									*
;*		ＶＲＡＭＤＸ固定データセット（Ｌ）			*
;*									*
;*			呼出し方法：					*
;*			       （Ｙ）	     ← ＶＲＡＭアドレス	*
;*			       （Ａ）	     ← 転送バイト数		*
;*			       （Ｘ）	     ← 転送データ		*
;*									*
;************************************************************************
;
		MEM16
		IDX16
;
VRAMDX_L_C_ST	EQU	$
		PHB			;(DBR) save
		PEA	VRAMDX/100H	;(DBR) <-- VRAMDX(B)
		PLB
		PLB
;
		PHX			;set data save
;
		LDX	VRAMDX		;(X) <-- VRAMDX set pointer
		STA	8,X		;number of byte set
		TYA
		STA	0,X		;VRAM address set
		LDA	#00000000B+(00001000B*100H)
		STA	2,X		;VRAM address inc mode & DMA parameter set
		LDA	#18H
		STA	4,X		;B bus address set
		LDA	#VRAMDX/100H
		STA	6,X		;A bus address(B) set
		TXA
		CLC
		ADC	#12
		STA	5,X		;A bus address(L,H) set
		TXA
		CLC
		ADC	#13
		STA	10,X		;next data address set
		STA	VRAMDX		;end address set
		PLA
		STA	12,X		;set data set
;
		PLB
		RTL
;
;************************************************************************
;*									*
;*		ＶＲＡＭＤＸセット（Ｈ）				*
;*									*
;*			呼出し方法：					*
;*			       （Ｙ）	     ← ＶＲＡＭアドレス	*
;*			       （Ａ）	     ← 転送バイト数		*
;*			       （Ｘ）	     ← 転送元アドレス（Ｌ，Ｈ）*
;*			       （ＷＫ１、２）←	      ”      （Ｂ）	*
;*									*
;************************************************************************
;
		MEM16
		IDX16
;
VRAMDX_H_ST	EQU	$
		PHB			;(DBR) save
		PEA	VRAMDX/100H	;(DBR) <-- VRAMDX(B)
		PLB
		PLB
;
		PHX
;
		LDX	VRAMDX		;(X) <-- VRAMDX set pointer
		STA	8,X		;number of byte set
		TYA
		STA	0,X		;VRAM address set
		LDA	#10000000B+(00000000B*100H)
		STA	2,X		;VRAM address inc mode & DMA parameter set
		LDA	#19H
		STA	4,X		;B bus address set
		LDA	WORK1-1
		STA	6,X		;A bus address(B) set
		PLA
		STA	5,X		;      "      (L,H) set
		TXA
		CLC
		ADC	#12
		STA	10,X		;next data address set
		STA	VRAMDX		;end address set
;
		PLB
		RTL
;
;************************************************************************
;*									*
;*		ＶＲＡＭＤＸ固定データセット（Ｈ）			*
;*									*
;*			呼出し方法：					*
;*			       （Ｙ）	     ← ＶＲＡＭアドレス	*
;*			       （Ａ）	     ← 転送バイト数		*
;*			       （Ｘ）	     ← 転送データ		*
;*									*
;************************************************************************
;
		MEM16
		IDX16
;
VRAMDX_H_C_ST	EQU	$
		PHB			;(DBR) save
		PEA	VRAMDX/100H	;(DBR) <-- VRAMDX(B)
		PLB
		PLB
;
		PHX			;set data save
;
		LDX	VRAMDX		;(X) <-- VRAMDX set pointer
		STA	8,X		;number of byte set
		TYA
		STA	0,X		;VRAM address set
		LDA	#10000000B+(00001000B*100H)
		STA	2,X		;VRAM address inc mode & DMA parameter set
		LDA	#19H
		STA	4,X		;B bus address set
		LDA	#VRAMDX/100H
		STA	6,X		;A bus address(B) set
		TXA
		CLC
		ADC	#12
		STA	5,X		;A bus address(L,H) set
		TXA
		CLC
		ADC	#13
		STA	10,X		;next data address set
		STA	VRAMDX		;end address set
		PLA
		STA	12,X		;set data set
;
		PLB
		RTL
;
		MEM8
		IDX8
;
;
;
;
;
		END

