readme.txt
2.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
このディレクトリでは、グラフィックの初期化のカスタマイズの方法をサンプルソースで説明します。
例として、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); を追加します。
以上。