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

以上。