このディレクトリでは、グラフィックの初期化のカスタマイズの方法をサンプルソースで説明します。 例として、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); を追加します。 以上。
Name |
Last commit
|
History
|
Last Update |
---|---|---|
.. | ||
CVS | ||
Makefile | ||
Makefile.dos | ||
Makefile.irix | ||
appgfxinit.c | ||
gfxinit.c | ||
graphic.c | ||
graphic.h | ||
main.c | ||
main.h | ||
readme.txt | ||
spec | ||
stage00.c |