misc/fullpat.txt
fullpat.txt

■基本情報
----------------------------------------------------------------
タイトル
	フルパターンメモリドライバ
プログラム名
	fullpat.x
バージョン
	version 1.00
機能
	スプライト関連のIOCSコールをフルパターンメモリに対応させるドライバです。
	増えるもの
		スプライトから参照できるパターン 256個 → 512個
		テキストから参照できるパターン 192個 → 256個
		テキスト 2ページ → 4ページ
	増えないもの
		スプライト 128枚
		バックグラウンド 2面
----------------------------------------------------------------

■補足情報
----------------------------------------------------------------
解説
	X68000のスプライトコントローラCYNTHIAには512個のパターンを扱う能力があります。
	しかし、実際にX68000/X68030に搭載されたパターンメモリは256個分(32KB)だけでした。
	CYNTHIAがパターンメモリを選択するチップセレクト信号はXPC0/PCS0とXPC1/PCS1です。
	XPC0/PCS0にはメモリが接続されていますがXPC1/PCS1には何も接続されていません。
	そのまま256~511番のパターンを表示すると豆腐になります。
	XPC1/PCS1にメモリを接続すると512個のパターンを定義できるようになります。
	2026年2月、紅茶羊羹さんによって実験基板が作成され動作が確認されました。
	XEiJでは改造メニューのフルパターンメモリをONにすることで利用できます。
関連サイト
	https://x.com/youkan700/status/2018337038811164994
	https://x.com/youkan700/status/2018670570163077315
	https://x.com/youkan700/status/2032042838180184383
----------------------------------------------------------------

■使用法
----------------------------------------------------------------
CONFIG.SYS
	device=fullpat.x オプション
コマンドライン
	A>fullpat.x オプション
オプション
	-c	常駐確認
		常駐確認を行い、結果をメッセージと終了コードで返します。
	-h/-?	使用法表示
		使用法を表示して正常終了します。
	-k	常駐
		ベクタを変更して常駐終了します。
	-q	メッセージ非表示
		オプションが違うとき以外、メッセージを表示しません。
	-r	常駐解除
		ベクタを復元して常駐を解除して正常終了します。
		常駐部分がデバイスドライバのとき、デバイスドライバを切り離します。
		常駐部分がメモリブロックのとき、メモリブロックを開放します。
		常駐後にベクタが変更されて常駐部分を指していないときは解除できません。
		常駐部分のバージョンが違うときは解除できません。
	-v	バージョン確認
		タイトルとバージョンを表示して正常終了します。
	CONFIG.SYSで指定できるオプションは-qだけです。
----------------------------------------------------------------

■終了コード
----------------------------------------------------------------
	0	正常終了
	1	オプションが違います
	2	常駐しています
	3	常駐していません
	4	ベクタが変更されています。解除できません
	5	常駐部分のバージョンが違います。解除できません
	65536	常駐終了
----------------------------------------------------------------

■キャラクタとプライオリティ
----------------------------------------------------------------
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		青
----------------------------------------------------------------

■IOCSコールリファレンス
----------------------------------------------------------------
番号	$C0
名前	SP_INIT
機能	スプライト・バックグラウンドを初期化します。
入力	なし
出力	d0.l		-1		スプライト画面を使用できない
			0		正常終了
----------------------------------------------------------------
番号	$C1
名前	SP_ON
機能	スプライト・バックグラウンド画面を表示します。
入力	なし
出力	d0.l		-1		スプライト画面を使用できない
			0		正常終了
----------------------------------------------------------------
番号	$C2
名前	SP_OFF
機能	スプライト・バックグラウンド画面を表示しません。
入力	なし
出力	d0.l		0		正常終了
----------------------------------------------------------------
番号	$C3
名前	SP_CGCLR
機能	パターンをゼロクリアします。
入力	d1.w		0~511		パターン番号
出力	d0.l		-1		スプライト画面を使用できない
			0		正常終了
----------------------------------------------------------------
番号	$C4
名前	SP_DEFCG
機能	パターンを設定します。
入力	d1.w		0~511		パターン番号
	d2.b		0~1		サイズ。0=8x8,1=16x16
	a1.l		偶数		バッファのアドレス
出力	d0.l		-1		スプライト画面を使用できない
			0		正常終了
----------------------------------------------------------------
番号	$C5
名前	SP_GTPCG
機能	パターンを取得します。
入力	d1.w		0~511		パターン番号
	d2.b		0~1		サイズ。0=8x8,1=16x16
	a1.l		偶数		バッファのアドレス
出力	d0.l		-1		スプライト画面を使用できない
			0		正常終了
----------------------------------------------------------------
番号	$C6
名前	SP_REGST
機能	スプライトスクロールレジスタを設定します。
入力	d1.l	bit31	0~1		VDISPの立ち下がり。0=待つ,1=待たない
	d1.b		0~127		スプライト番号
	d2.l	bit31	0~1		X座標の設定。0=する,1=しない
	d2.w		0~1023		X座標
	d3.l	bit31	0~1		Y座標の設定。0=する,1=しない
	d3.w		0~1023		Y座標
	d4.l	bit31	0~1		キャラクタの設定。0=する,1=しない
	d4.w		0~65535	キャラクタ
	d5.l	bit31	0~1		プライオリティの設定。0=する,1=しない
	d5.w		0~7		プライオリティ
出力	d0.l		-1		スプライト画面を使用できない
			0		正常終了
----------------------------------------------------------------
番号	$C7
名前	SP_REGGT
機能	スプライトスクロールレジスタを取得します。
入力	d1.b		0~127		スプライト番号
出力	d0.l		-1		スプライト画面を使用できない
			0		正常終了
	d2.l		0~1023		X座標
	d3.l		0~1023		Y座標
	d4.l		0~65535	キャラクタ
	d5.l		0~7		プライオリティ
----------------------------------------------------------------
番号	$C8
名前	BGSCRLST
機能	バックグラウンドスクロールレジスタを設定します。
入力	d1.l	bit31	0~1		VDISPの立ち下がり。0=待つ,1=待たない
	d1.b		0~1		バックグラウンド番号
	d2.l	bit31	0~1		X座標の設定。0=する,1=しない
	d2.w		0~1023		X座標
	d3.l	bit31	0~1		Y座標の設定。0=する,1=しない
	d3.w		0~1023		Y座標
出力	d0.l		-1		スプライト画面を使用できない
			0		正常終了
----------------------------------------------------------------
番号	$C9
名前	BGSCRLGT
機能	バックグラウンドスクロールレジスタを取得します。
入力	d1.b		0~1		バックグラウンド番号
出力	d0.l		-1		スプライト画面を使用できない
			0		正常終了
	d2.l		0~1023		X座標
	d3.l		0~1023		Y座標
----------------------------------------------------------------
番号	$CA
名前	BGCTRLST
機能	バックグラウンド制御レジスタを設定します。
入力	d1.b		0~1		バックグラウンド番号
	d2.l	bit31	0~1		テキスト番号の設定。0=する,1=しない
	d2.b		0~3		テキスト番号
	d3.l	bit31	0~1		表示の有無の設定。0=する,1=しない
	d3.b		0~1		表示の有無
出力	d0.l		-1		スプライト画面を使用できない
			0		正常終了
----------------------------------------------------------------
番号	$CB
名前	BGCTRLGT
機能	バックグラウンド制御レジスタを取得します。
入力	d1.b		0~1		バックグラウンド番号
出力	d0.l		-1		スプライト画面を使用できない
			0~7		テキスト番号<<1|表示の有無
----------------------------------------------------------------
番号	$CC
名前	BGTEXTCL
機能	バックグラウンドテキストをキャラクタで埋め尽くします。
入力	d1.b		0~3		テキスト番号
	d2.w		0~65535	キャラクタ
出力	d0.l		-1		スプライト画面を使用できない
			0		正常終了
----------------------------------------------------------------
番号	$CD
名前	BGTEXTST
機能	バックグラウンドテキストにキャラクタを書き込みます。
入力	d1.b		0~3		テキスト番号
	d2.b		0~63		X座標
	d3.b		0~63		Y座標
	d4.w		0~65535	キャラクタ
出力	d0		-1		スプライト画面を使用できない
			0		正常終了
----------------------------------------------------------------
番号	$CE
名前	BGTEXTGT
機能	バックグラウンドテキストからキャラクタを読み出します。
入力	d1.b		0~3		テキスト番号
	d2.b		0~63		X座標
	d3.b		0~63		Y座標
出力	d0.l		-1		スプライト画面を使用できない
			0~65535	キャラクタ
----------------------------------------------------------------
番号	$CF
名前	SPALET
機能	スプライトパレットを設定または取得します。
	パレットブロック0は指定できません。
入力	d1.l	bit31	0~1		VDISPの立ち下がり。0=待つ,1=待たない
	d1.b		0~255		パレットブロック<<4|パレットコード
	d2.b		0~15		パレットブロック(優先)
	d3.l	bit31	0~15		モード。0=設定,1=取得
	d3.w		0~65535	カラーコード
出力	d0.l		-2		パレットブロック0が指定された
			0~65535	設定前のカラーコード
----------------------------------------------------------------

■チップセレクト
----------------------------------------------------------------
$00EB0000+8*n+6	bit2	SPCS	スプライトが使うパターンのチップセレクト
$00EB0808	bit10	MPUCS	MPUから見えるパターンとテキストのチップセレクト
		bit5	B1CS	バックグラウンド1が使うテキストのチップセレクト
		bit2	B0CS	バックグラウンド0が使うテキストのチップセレクト
----------------------------------------------------------------

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