UnOfficial gpSP kai
-- gameplaySP Gameboy Advance emulator for Playstation Portable --

PSP-2000における画像外部出力の技術資料
以下は全て、Dark_Alex氏のdvemgr.prxを使用する時の情報です
また、すべてWEB上の情報及び独自に調査した内容ですので、Dark_Alex氏にこの文書についての質問はしない様お願いします
情報の全てが正しい保証はありません

dvemgr.prxに含まれる関数について

int pspDveMgrCheckVideoOut(void)
	画像出力ケーブルのチェックを行う
	返値
		0	ケーブル未接続
		1	S端子ケーブル/AV(コンポジット)ケーブル
		2	D端子ケーブル/コンポーネントケーブル
	※D1(480i)出力/D2(480p)出力の判別は出来ないので、ソフト側で制御する必要がある

int pspDveMgrSetVideoOut(int u, int displaymode, int width, int height, int x, int y, int z)
	外部出力の設定を行う
	引数
		u		詳細不明
		displaymode	ディスプレイモード？ 詳細不明
		width		横ドット数？ 詳細不明
		height		縦ドット数？ 詳細不明
		x		詳細不明
		y		詳細不明
		z		詳細不明
	返値
		正の数	正常終了
		負の数	エラー

	ほとんど詳細不明だが、以下の設定値にてそれぞれ設定できる
		PSP本体出力						pspDveMgrSetVideoOut(0,     0, 480, 272, 1, 15, 0);
		S端子ケーブル/AV(コンポジット)ケーブルD1(480i)出力	pspDveMgrSetVideoOut(2, 0x1D1, 720, 503, 1, 15, 0);
		D端子ケーブル/コンポーネントケーブル D1(480i)出力	pspDveMgrSetVideoOut(0, 0x1D1, 720, 503, 1, 15, 0);
		D端子ケーブル/コンポーネントケーブル D2(480p)出力	pspDveMgrSetVideoOut(0, 0x1D2, 720, 480, 1, 15, 0);

	480x272をそのまま外部出力する設定は現在の所は不明

フレームバッファについて
	PSP本体出力と同様に、sceDisplaySetFrameBuf()にて設定したアドレス以降を外部出力する
	ただし、一般的に使用されているラインサイズは512だが、720x480の出力に合わせてラインサイズを768(もしくは1024など) にする必要がある
	例	sceDisplaySetFrameBuf(0x44000000, 768, PSP_DISPLAY_PIXEL_FORMAT_5551, PSP_DISPLAY_SETBUF_NEXTFRAME);

インタレース出力時のフレームバッファについて
	インタレース時の奇数フレームのフレームバッファはフレームバッファ先頭から+262ライン下から開始する
	ラインサイズが768、16ビットモードの場合はフレームバッファ＋768*262*2バイトから開始

有効画素について(調査中)
	720x480のうち中央部分の以下の画素が有効となっている
	上下20ドット、左右30ドットは表示されない(安全範囲約90%)

		S端子ケーブル/AV(コンポジット)ケーブル D1(480i)出力	660x220(奇数フレーム利用で440)
		S端子ケーブル/AV(コンポジット)ケーブル D2(480p)出力	660x440
		D端子ケーブル/コンポーネントケーブル D1(480i)出力	660x220(奇数フレーム利用で440)
		D端子ケーブル/コンポーネントケーブル D2(480p)出力	660x440
		※D端子接続はLCD-TV241XBR-2にて確認
		※TV/モニタの機種により変動すると思われる

gpSPでの画面出力について
	gpSPではVRAM上に768x512 16bitのフレームバッファ1枚と、240x160 16bitのテクスチャバッファを2枚使用している
	一般(液晶)表示時はフレームバッファに1枚のテクスチャを貼付けたスプライトを表示し、2枚のテクスチャバッファを交互に書換えている
		(ポリゴンの大きさを変化させることで、フル画面やオリジナル画面に対応している。パラメータを調整すればどのようなサイズにも対応できる)
	480pでの表示も同様に、スプライトを大きくするだけで対応できた

	480i時には、スプライトをさらにもう一枚262ライン下に表示させ、インタレース出力に対応している

	メニュー画面はどちらもフレームバッファに直接書き込んでいる
	※3.2 test06以降はメニュー用テクスチャバッファを使用する