readme.txt 2.25 KB
このディレクトリでは、グラフィックの初期化のカスタマイズの方法をサンプルソースで説明します。
例として、nu1 を F3DEX2マイクロコードの F3DEX2 と S2DEX2 のみを使用するように変更します。

以下、変更点を列記します。
詳細は NuSystem マニュアルのinsideNuSystem の 「4.2 グラフィックのカスタマイズ」を参照してください。

1.makefile
F3DEX2マイクロコードを使用するので、ソースのコンパイル時に F3DEX_GBI_2 が定義されるように変更します。

LCDEFS = -DF3DEX_GBI_2

CODEFILES の定義に3で作成する appgfxinit.c を追加します。

2.spec
codeセグメントのincludeを、使用するマイクロコードのみに変更する。
(実際にはnu1ではS2DEX2 は使用していません。説明のため使用していることにします。)


	include "codesegment.o"
	include "$(ROOT)/usr/lib/PR/rspboot.o"
	include "$(ROOT)/usr/lib/PR/gspF3DEX2.fifo.o"
	include "$(ROOT)/usr/lib/PR/gspS2DEX2.fifo.o"
endseg


3.appgfxinit.c
関数nuGfxInit()のカスタマイズ版appGfxInit()を作成します。
nugfxinit.cをNuSystemのsrcディレクトリからコピーし、
appgfxinit.cとリネームして、以下の変更をします。

#include "graphic.h"



static NUUcode nugfx_ucode[] = {
    {(u64*)gspF3DEX2_fifoTextStart, (u64*)gspF3DEX2_fifoDataStart}, /*0*/
    {(u64*)gspS2DEX2_fifoTextStart, (u64*)gspS2DEX2_fifoDataStart}, /*1*/
};



    nuGfxTaskStart(gfxList,
		   (s32)(gfxList_ptr - gfxList) * sizeof (Gfx),
		   APP_GFX_UCODE_F3DEX2 , 0);
	:

(注)NuSystem の デバッグ関数 nuDebXXXX() を使用される場合は、
nugfx_ucode[]の先頭のマイクロコードは必ず F3DEX(あるいはF3DEX2)系のものにしてください。
デバッグ関数は、配列nugfx_ucode先頭のマイクロコードがF3DEX系であると仮定しているため、S2DEX系を先頭にもってくると正しく動作しません。

4.マイクロコード名の定義

次に、graphic.h の中で、appgfxinit.c の nugfx_ucode[] の順番に対応させて
マイクロコード名を定義します。これは、nuGfxTaskStart 関数の3つの目の引数に
使用されます。
名前は任意ですが、自分で定義したものなので、頭にAPP_を付けてnusys.h で定義されている物と区別しました。

#define	APP_GFX_UCODE_F3DEX2	0		/* F3DEX2 マイクロコード  */
#define	APP_GFX_UCODE_S2DEX2	1		/* S2DEX2 マイクロコード  */


5.その他のソースの変更

nuGfxTaskStart 関数の3つ目の引数を、3で定義したマイクロコード名に変更します。

最後に、グラフィック初期化nuGfxInit() を appGfxInit() に変更します。プロトタイプ宣言の void  appGfxInit(void);  を追加します。

以上。