misc/fullpatfnc.txt
fullpatfnc.txt

■基本情報
----------------------------------------------------------------
タイトル
	フルパターンメモリ外部関数
プログラム名
	fullpat.fnc
バージョン
	version 1.00
機能
	X-BASICでフルパターンメモリを使えるようにする外部関数です。
	SPRITE.FNCの上位互換となっており、いくつかの機能が追加されています。
----------------------------------------------------------------

■使用法
----------------------------------------------------------------
ドライバ
	fullpat.xが必要です。fullpat.txtを参照してください。
BASIC.CNF
	SPRITE.FNCをコメントアウトします。
		# FUNC = SPRITE
	fullpat.fncを追加します。
		FUNC = fullpat
----------------------------------------------------------------

■キャラクタとプライオリティ
----------------------------------------------------------------
VH__BBBBNNNNNNNN	キャラクタ
_____________nPP	プライオリティ
	V		0~1		上下反転。0=しない,1=する
	H		0~1		左右反転。0=しない,1=する
	BBBB		0~15		パレットブロック
	nNNNNNNNN	0~511		パターン番号
	PP		0~3		優先順位
					0=表示しない
					1=バックグラウンド0>バックグラウンド1>スプライト
					2=バックグラウンド0>スプライト>バックグラウンド1
					3=スプライト>バックグラウンド0>バックグラウンド1
----------------------------------------------------------------

■カラーコード
----------------------------------------------------------------
GGGGGRRRRRBBBBBI	カラーコード
	GGGGGI		0~63		緑
	RRRRRI		0~63		赤
	BBBBBI		0~63		青
----------------------------------------------------------------

■外部関数リファレンス
----------------------------------------------------------------
int bg_fill(char t,int c)
	バックグラウンドテキストをキャラクタで埋め尽くします。
	t	テキスト番号。0~3
	c	キャラクタ。0~65535
----------------------------------------------------------------
int bg_get(char t,char x,char y)
	バックグラウンドテキストからキャラクタを読み出します。
	t	テキスト番号。0~3
	x	X座標。0~63
	y	Y座標。0~63
	戻り値	キャラクタ。0~65535
----------------------------------------------------------------
int bg_put(char t,char x,char y,int c)
	バックグラウンドテキストにキャラクタを書き込みます。
	t	テキスト番号。0~3
	x	X座標。0~63
	y	Y座標。0~63
	c	キャラクタ。0~65535
----------------------------------------------------------------
int bg_scroll(char b,[int x],[int y],[char v])
	バックグラウンドスクロールレジスタを設定します。
	b	バックグラウンド番号。0~1
	x	X座標。0~1023。省略すると変更しない
	y	Y座標。0~1023。省略すると変更しない
	v	VDISPの立ち下がり。0=待つ,1=待たない。省略すると1
----------------------------------------------------------------
int bg_set(char b[,char t,char d])
	バックグラウンド制御レジスタを設定します。
	b	バックグラウンド番号。0~1
	t	テキスト番号。0~3。省略すると変更しない
	d	表示の有無。0~1。省略すると変更しない
----------------------------------------------------------------
int bg_stat(char b,char m)
	バックグラウンドスクロールレジスタまたはバックグラウンド制御レジスタを取得します。
	b	バックグラウンド番号。0~1
	m	モード。0~3
		0	X座標。0~1023
		1	Y座標。0~1023
		2	テキスト番号。0~3
		3	表示の有無。0~1
	戻り値	取得した値
----------------------------------------------------------------
int sp_clr([int p1],[int p2])
	パターンをゼロクリアします。
	p1	開始パターン番号。0~511。省略すると0から
	p2	終了パターン番号。0~511。省略するとp1のみ、両方省略すると511まで
----------------------------------------------------------------
int sp_color(char p,[int c],[char b],[char v])
	スプライトパレットを設定または取得します。
	p	パレットコード。0~15
	c	カラーコード。0~65535。省略すると取得のみ
	b	パレットブロック。1~15。省略すると1
	v	VDISPの立ち下がり。0=待つ,1=待たない。省略すると1
	戻り値	設定前のカラーコード
----------------------------------------------------------------
int sp_def(int p,char/int(a),[char s],[int o])
	パターンを設定します。
	p	パターン番号。0~511
	a	データの配列
	s	サイズ。0=8x8,1=16x16。省略すると1
	o	オフセット。省略すると0
----------------------------------------------------------------
int sp_disp(char m)
	スプライト・バックグラウンド画面を表示するか選択します。
	m	モード。0~1
		0	表示しない
		1	表示する
----------------------------------------------------------------
int sp_init()
	スプライト・バックグラウンドを初期化します。
----------------------------------------------------------------
int sp_move(char s,[int x],[int y],[int p])
	スプライトスクロールレジスタを設定します。
	s	スプライト番号。0~127
	x	X座標。-16~1007。省略すると変更しない
	y	Y座標。-16~1007。省略すると変更しない
	p	パターン番号。0~511。省略すると変更しない
----------------------------------------------------------------
int sp_off([char s1],[char s2])
	スプライトを表示しません。
	s1	開始スプライト番号。0~127。省略すると0から
	s2	終了スプライト番号。0~127。省略するとs1のみ、両方省略すると127まで
----------------------------------------------------------------
int sp_on([char s1],[char s2])
	スプライトを表示します。
	s1	開始スプライト番号。0~127。省略すると0から
	s2	終了スプライト番号。0~127。省略するとs1のみ、両方省略すると127まで
----------------------------------------------------------------
int sp_pat(int p,char/int(a),[char s],[int o])
	パターンを取得します。
	p	パターン番号。0~511
	a	データの配列
	s	サイズ。0=8x8,1=16x16。省略すると1
	o	オフセット。省略すると0
----------------------------------------------------------------
int sp_set(char s,[int x],[int y],[int c],[char p],[char v])
	スプライトスクロールレジスタを設定します。
	s	スプライト番号。0~127
	x	X座標。-16~1007。省略すると変更しない
	y	Y座標。-16~1007。省略すると変更しない
	c	キャラクタ。0~65535。省略すると変更しない
	p	プライオリティ。0~7。省略すると変更しない
	v	VDISPの立ち下がり。0=待つ,1=待たない。省略すると1
----------------------------------------------------------------
int sp_stat(char s,char m)
	スプライトスクロールレジスタを取得します。
	s	スプライト番号。0~127
	m	モード。0~3
		0	X座標。0~1023
		1	Y座標。0~1023
		2	キャラクタ。0~65535
		3	プライオリティ。0~7
	戻り値	取得した値
----------------------------------------------------------------
int sp_wait([char n])
	VDISPの立ち下がりを待ちます。
	n	回数。省略すると1
----------------------------------------------------------------

■エラーコード
----------------------------------------------------------------
	1	配列のサイズが範囲外です
	2	現在の画面モードではバックグラウンド1を表示できません
	3	バックグラウンド番号が0~1の範囲外です
	4	キャラクタが0~65535の範囲外です
	5	カラーコードが0~65535の範囲外です
	6	表示の有無が0~1の範囲外です
	7	fullpat.xが組み込まれていません
	8	モードが0~1の範囲外です
	9	モードが0~3の範囲外です
	10	配列のオフセットが範囲外です
	11	パレットブロックが1~15の範囲外です
	12	パレットコードが0~15の範囲外です
	13	パターン番号が0~511の範囲外です
	14	パターンサイズが0~1の範囲外です
	15	プライオリティが0~7の範囲外です
	16	現在の画面モードではスプライト画面を使用できません
	17	スプライト番号が0~127の範囲外です
	18	テキスト番号が0~3の範囲外です
	19	VDISPの立ち下がりが0~1の範囲外です
	20	X座標が0~63の範囲外です
	21	X座標が0~511の範囲外です
	22	X座標が-16~1007の範囲外です
	23	X座標が0~1023の範囲外です
	24	Y座標が0~63の範囲外です
	25	Y座標が0~511の範囲外です
	26	Y座標が-16~1007の範囲外です
	27	Y座標が0~511の範囲外です
----------------------------------------------------------------

■更新履歴
----------------------------------------------------------------
2026-03-23	version 1.00
	初版。
----------------------------------------------------------------