# nd関数群リファレンス

## ndGenInstance

関数名
  ndGenInstance
構文
  NDD_INSTANCE *ndGenInstance(NDD_INSTANCE *parent, u16 type, u16 prio, int gid);
説明
  インスタンス構造体を作成して、リンクをつなぐ。
パラメータ
  NDD_INSTANCE *parent;
    親インスタンスのポインタ
  u16 type;
    インスタンスタイプ。
  u16 prio;
    プライオリティコード。表示インスタンスの評価順に影響します。
    type によって指定出来る範囲が決まっています。
  int gid;
    インスタンスのグループＩＤ。
戻り値
  NDD_INSTANCE *;
    生成したインスタンスポインタ。
注意
  インスタンスを作成します。タイプによって特性が決定されます。

## ndChangePriority

関数名
  ndChangePriority
構文
  u16 ndChangePriority(NDD_INSTANCE *isp, u16 newprio);
説明
  インスタンス一つのプライオリティを変更します。
パラメータ
  NDD_INSTANCE *isp;
    インスタンスポインタ。
  u16 newprio;
    新しいプライオリティ値。
戻り値
  u16;
    古いプライオリティ値
注意
  指定したプライオリティの最上位にリンクします。

## ndChangeParent

関数名
  ndChangeParent
構文
  NDD_INSTANCE ndChangeParent(NDD_INSTANCE *isp, NDD_INSTANCE *newparent);
説明
  インスタンスの親を変更します。
パラメータ
  NDD_INSTANCE *isp;
    対象のインスタンスポインタ。
  NDD_INSTANCE *newparent;
    新しい親インスタンスのポインタ。
戻り値
  NDD_INSTANCE *;
    直前まで親だったインスタンス。
注意
  newparent は、NULL であってはいけません。

## ndDeleteInstanceGID

関数名
  ndDeleteInstanceGID
構文
  void ndDeleteInstanceGID(NDD_INSTANCE *isp, int type, int gid, int mask);
説明
  type と gid と mask によって指定された、パラメータに一致するインスタンスを削除します。

  実際には、[TYPE] == type で [GID] & mask == gid にヒットするものが削除 の対象になります。ただし、type に -1 を指定すると type のチェックは 行ないません。

  isp の子、全てに対して評価を行ないます。また、親が検索にヒットした場合、以下の子は、無条件で削除します。

パラメータ
  NDD_INSTANCE *isp;
  int type;
  int gid;
  int mask;
注意
  注意）インスタンスコールバック内では、使用できません。

## ndInit

関数名
  ndInit
構文
  void ndInit(void);
説明
  モジュールの初期化
注意
  'nd' 全般のＡＰＩの使用を始める前に必ず呼ぶ必要があります。 カレントのシーンを用意します。シーンの設定がなくても、オブジェクトを 表示する土台は用意されます。

## ndEntryAnimation

関数名
  ndEntryAnimation
構文
  NDD_INSTANCE *ndEntryAnimation(NDD_INSTANCE *parent, int animno, int id, NDD_INSTANCE *tarinst);
説明
  アニメーション参照テーブルからタイムキーパーインスタンスを一つと チャンネル数分のアニメーションインスタンスを作成する。
パラメータ
  NDD_INSTANCE *parent;
    親インスタンスのポインタ
  int animno;
    アニメーション番号
  int id;
    インスタンスＩＤ
  NDD_INSTANCE *tarinst;
    アニメーションをアタッチするインスタンスポインタ
戻り値
  NDD_INSTANCE *;
  アニメーションタイムキーパーインスタンスのポインタ
注意
  注意）インスタンスコールバック内では、使用できません。

## ndEntryAnimationRaw

関数名
  ndEntryAnimationRaw
構文
  NDD_INSTANCE *ndEntryAnimationRaw(NDD_INSTANCE *parent, NDR_ANIM *anp, int gid, NDD_INSTANCE *tarinst);
説明
  アニメーション参照テーブルからタイムキーパーインスタンスを一つとチャンネル数分のアニメーションインスタンスを作成する。
パラメータ
  NDD_INSTANCE *parent;
    親インスタンスのポインタ
  NDR_ANIM *anp;
    アニメーション参照テーブルへのポインタ
  int gid;
    インスタンスグループＩＤ
  NDD_INSTANCE *tarinst;
    アニメーションをアタッチするインスタンスポインタ
戻り値
  NDD_INSTANCE *;
  アニメーションタイムキーパーインスタンスのポインタ
注意
  注意）インスタンスコールバック内では、使用できません。

## ndEntryObject

関数名
  ndEntryObject
構文
  NDD_INSTANCE *ndEntryObject(NDD_INSTANCE *parent, int objno, int shapeno, int animno, int gid, int flag);
説明
  オブジェクト参照テーブルからインスタンスを一つ作成する。
パラメータ
  NDD_INSTANCE *parent;
    親インスタンスのポインタ。NULL なら、オブジェクトのルートにぶら下がります。
  int objno;
    オブジェクト参照テーブルのインデックス。
  int shapeno;
    シェープ参照テーブルのオフセット。オブジェクトの保持するシェープは、オブジェクト参照テーブルの shape と、この指定する数値を足した位置のリストのものが登録される。
  int animno;
    アニメーション参照テーブルのオフセット。アニメーションを同時にエントリーする場合、NDR_OBJ.geom_animの値にこの値を加えたテーブルのアニメーションをエントリーする。
  int gid;
    インスタンスＩＤのベース値。この値に、NDR_OBJ で指定される、gid を足したものが作成されるオブジェクトインスタンス構造体に登録される。
  int flag;
    ビットアサインされた生成フラグ。ビットが１の時有効になります
    bit 0 ... 一緒にNDR_OBJ のアニメーションリンクを設定する。
    bit 1 ... リンクを辿って親子関係の端に向かって評価する。
戻り値
  NDD_INSTANCE *;
  作成されたインスタンスの内、一番親のポインタ
注意
  内部では、ndEntryObjectRaw を呼び出しています。
  注意）インスタンスコールバック内では、使用できません。

## ndEntryObjectRaw

関数名
  ndEntryObjectRaw
構文
  NDD_INSTANCE *ndEntryObjectRaw(NDD_INSTANCE *parent, NDR_OBJ *rop, int gid);
説明
  オブジェクト参照テーブルからインスタンスを一つ作成する。 リンクは辿らず、アニメーションインスタンスも生成しない。
パラメータ
  NDD_INSTANCE *parent;
    親インスタンスのポインタ。NULL なら、オブジェクトのルートにぶら下がります。
  NDR_OBJ *rop;
    オブジェクト参照テーブルへのポインタ
  int gid;
    インスタンスＩＤのベース値。この値に、NDR_OBJ で指定される、gid を足したものが作成されるオブジェクトインスタンス構造体に登録される。
戻り値
  NDD_INSTANCE *;
  作成されたインスタンスのポインタ
注意
  注意）インスタンスコールバック内では、使用できません。

## ndAttachAnimation

関数名
  ndAttachAnimation
構文
  void ndAttachAnimation(NDD_INSTANCE *parent, NDD_INSTANCE *isp, int objno, int animno, int gid, int flag)
説明
  オブジェクト参照テーブルのアニメーションリンクを参照し、既存のオブジェクトインスタンスにアニメーションをアタッチする。
パラメータ
  NDD_INSTANCE *parent;
    親インスタンスのポインタ。NULL なら、アニメーションルートにぶら下がります。
  NDD_INSTANCE *isp;
    アニメーションをアタッチするオブジェクトインスタンスのポインタ。
  int objno;
    グローバルリソースリスト上でのオブジェクト番号。
  int animno;
    アニメーション参照テーブルのオフセット。アニメーションを同時にエントリーする場合、NDR_OBJ.geom_animの値にこの値を加えたテーブルのアニメーションをエントリーする。
  int gid;
    インスタンスグループＩＤのベース値。この値に、NDR_OBJ で指定される、gid を足したものが作成されるオブジェクトインスタンス構造体に登録される。
  int flag;
    ビットアサインされた生成フラグ。ビットが１の時有効になります
    bit 0 ... 未使用
    bit 1 ... リンクを辿って親子関係の端に向かって評価する。
戻り値
  NDD_INSTANCE *;
  作成されたインスタンスの内、一番親のポインタ
注意
  isp で渡されるオブジェクトインスタンスは、objno で指定された NDR_OBJ 構造体リストによって生成されたものとして扱います。
  注意）インスタンスコールバック内では、使用できません。

## ndEntryDeformVtx

関数名
  ndEntryDeformVtx
構文
  NDD_INSTANCE *ndEntryDeformVtx(NDD_INSTANCE *isp, NDR_DEFORM *dmfp, int ofs, int gid);
説明
  頂点デフォームインスタンスをエントリーする
パラメータ
  NDD_INSTANCE *isp;
    活性頂点インスタンスへのポインタ
  NDR_DEFORM *dmfp;
    頂点デフォーム構造体へのポインタ
  int ofs;
    生頂点データリストを参照するときのオフセット
  int gid;
    インスタンスグループＩＤ
戻り値
  NDD_INSTANCE *;
  作成した、頂点デフォームインスタンスのポインタ。
注意
  このインスタンスは、専用の親(deform_root_instp)にぶら下がります。

## ndEntryDeformVtxcol

関数名
  ndEntryDeformVtxcol
構文
  NDD_INSTANCE *ndEntryDeformVtxcol(NDD_INSTANCE *isp, NDR_DEFORM *dmfp, int ofs, int gid);
説明
  頂点カラーデフォームインスタンスをエントリーする
パラメータ
  NDD_INSTANCE *isp;
    活性頂点インスタンスへのポインタ
  NDR_DEFORM *dmfp;
    頂点カラーデフォーム構造体へのポインタ
  int ofs;
    生頂点カラーデータリストを参照するときのオフセット
  int gid;
    インスタンスグループＩＤ
戻り値
  NDD_INSTANCE *;
  作成した、頂点カラーデフォームインスタンスのポインタ。
注意
  このインスタンスは、専用の親(deform_root_instp)にぶら下がります。 内部では３つのメモリを、システム関数の malloc()を使用して確保しています。 また、終了時のコールバックを設定しており、コールバックルーチン内にて malloc() で確保したメモリの解放を行ないます。

## ndEntryDeformVtxnv

関数名
  ndEntryDeformVtxnv
構文
  NDD_INSTANCE *ndEntryDeformVtxnv(NDD_INSTANCE *isp, NDR_DEFORM *dmfp, int ofs, int gid);
説明
  頂点法線デフォームインスタンスをエントリーする
パラメータ
  NDD_INSTANCE *isp;
    活性頂点インスタンスへのポインタ
  NDR_DEFORM *dmfp;
    頂点法線デフォーム構造体へのポインタ
  int ofs;
    生頂点法線データリストを参照するときのオフセット
  int gid;
    インスタンスグループＩＤ
戻り値
  NDD_INSTANCE *;
  作成した、頂点法線デフォームインスタンスのポインタ。
注意
  このインスタンスは、専用の親(deform_root_instp)にぶら下がります。 内部では３つのメモリを、システム関数の malloc()を使用して確保しています。 また、終了時のコールバックを設定しており、コールバックルーチン内にて malloc() で確保したメモリの解放を行ないます。

## ndEntryDeformVtxst

Function name
  ndEntryDeformVtxst
Syntax
  NDD_INSTANCE *ndEntryDeformVtxst(NDD_INSTANCE *isp, NDR_DEFORM *dmfp, int ofs, int gid);
Explanation
  Make an entry of vertex texture coordinate deform instance.
Parameter
  NDD_INSTANCE *isp;
    Pointer for active vertex instance
  NDR_DEFORM *dmfp;
    Pointer for vertex texture coordinate deform structure
  int ofs;
    Offset when referring raw vertex texture coordinate data list
  int gid;
    Instance group ＩＤ
Return value
  NDD_INSTANCE *;
  Pointer for the created vertex texture coordinate deform instance
Note
  This instance is linked to the exclusive parent(deform_root_instp). 3 memories are reserved inside using the system function, malloc(). Also, a call back for terminating is set, and the memory reserved by malloc() is released inside the call back routine.

## ndEntryDeformShape

関数名
  ndEntryDeformShape
構文
  NDD_INSTANCE *ndEntryDeformShape(NDD_INSTANCE *isp, int ofs_rawvtx, int ofs_rawvtxcol, int ofs_rawvtxnv, int ofs_rawvtxst, int gid, int flag);
説明
  オブジェクトインスタンスの参照するシェープを乗っとり、変調した頂点情報 にすり替えます。
パラメータ
  NDD_INSTANCE *isp;
    変調対象のオブジェクトインスタンスへのポインタ
  int ofs_rawvtx;
    int ofs_rawvtxcol;
  int ofs_rawvtxnv;
  int ofs_rawvtxst;
    Offset when referring each data list
  int gid;
    インスタンスグループＩＤ
  int flag;
    ビットアサインされた生成フラグ。ビットが１の時有効になります
    bit 0 ... 頂点デフォームをエントリーする
    bit 1 ... 頂点カラーデフォームをエントリーする
    bit 2 ... 頂点法線デフォームをエントリーする
    bit 3 ... Make an entry of vertex texture coordinate doform.
戻り値
  NDD_INSTANCE *;
  生成した、活性頂点インスタンスのポインタ
注意
  The upper instance of ndEntryDeformVtx(), ndEntryDeformVtxnv(), ndEntryDeformVtxcol(), and ndEntryDeformVtxst() are created. 関数内で、各デフォームインスタンスの生成を、パラメータの flag を 見ながら評価します。 Gfx の構築の非同期性に整合させる為、Vtx バッファは２つ持っています。 内部では３つのメモリを、システム関数の malloc()を使用して確保しています。
  また、終了時のコールバックを設定しており、コールバックルーチン内にて malloc() で確保したメモリの解放を行ないます。

## ndAttachDeform

関数名
  ndAttachDeform
構文
  void ndAttachDeform(NDD_INSTANCE *isp, int rawvtxno, int rawvtxcolno, int rawvtxnvno, int rawvtxstno, int gid, int flag);
説明
  階層化されているオブジェクトインスタンスについて、デフォームが用意されて いる場合、エントリーする。
パラメータ
  NDD_INSTANCE *isp;
    活性頂点インスタンスの生成対象戸なるオブジェクトインスタンスのポインタ
  int rawvtxno;
  int rawvtxcolno;
  int rawvtxnvno;
  int rawvtxstno;
    Offset when referring each data list.
  int gid;
    インスタンスグループＩＤ
  int flag;
    ビットアサインされた生成フラグ。ビットが１の時有効になります
    bit 0 ... 未使用。
    bit 1 ... リンクを辿って親子関係の端に向かって評価する。
    bit 2 ... 頂点デフォームをエントリーする
    bit 3 ... 頂点カラーデフォームをエントリーする
    bit 4 ... 頂点法線デフォームをエントリーする
    bit 5 ... Make an entry of vertex texture coordinate deform.
戻り値
注意

## ndSetupScene

関数名
  ndSetupScene
構文
  void ndSetupScene(NDD_RESINFO *rip, int gid, int flag);
説明
  シーンの参照テーブルからシーンを構築する。
パラメータ
  NDD_RESINFO *rip;
    リソースインフォメーション
  int gid;
    オブジェクトインスタンス登録時のグループＩＤ。
  int flag;
    生成状況設定フラグ作成フラグ。それぞれのビットが１の時、有効になるものは以下の通りです。
    bit 0 ... 一緒にNDR_OBJ のアニメーションリンクを設定する。
    bit 1 ... リンクを辿って親子関係の端に向かって評価する。
    bit 2 ... 頂点デフォームをエントリーする
    bit 3 ... 頂点カラーデフォームをエントリーする
    bit 4 ... 頂点法線デフォームをエントリーする
    bit 5 ... Make an entry of vertex texture coordinate deform.
注意
  設定に使用するシーンデータ構造体は、rip->resinfo->scene を参照します。

## ndSetScreen

関数名
  ndSetScreen
構文
  void ndSetScreen(int top, int bottom, int left, int right);
説明
  スクリーン表示領域の画面幅と高さを設定する。
パラメータ
  int top;
  int bottom;
  int left;
  int right;
    ピクセル単位の表示範囲。
注意

## ndResInit

関数名
  ndResInit
構文
  void ndResInit(int olplim, int slplim, int alplim, int rvlplim, int rvclplim, int rvnlplim, int rvslplim);
説明
  リソースモジュールの初期化
パラメータ
  int olplim;
  int slplim;
  int alplim;
  int rvlplim;
  int rvclplim;
  int rvnlplim;
  int rvslplim;
    List managing pointer of each data class and the maximum number
注意 ポインタリストは、システム関数の、malloc() を通して確保されます。

## ndResEntry

関数名
  ndResEntry
構文
  NDD_RESINFO *ndResEntry(NDR_RESINFO *rrp, int usemask);
説明
  指定リソースをグローバルリソースリストに追加する。
パラメータ
  NDR_RESINFO *rrp;
    参照用リソースインフォメーション構造体へのポインタ。
  int usemask;
    rrp の内容から、エントリーの対象になるデータの種類をビットで指定する。
戻り値
  NDR_RESINFO *drp;
  リソースインフォメーション構造体へのポインタ。
注意

## ndResRelease

関数名
  ndResRelease
構文
  void ndResRelease(NDD_RESINFO *drp);
説明
  指定リソースをグローバルリストから切り離します。
パラメータ
  NDD_RESINFO *drp;
    リソースインフォメーション構造体へのポインタ。
戻り値
注意
  引数の、drp は解放されます。
  直前にエントリーしたリソースのみ、解放可能です。

## ndDeleteInstance

関数名
  ndDeleteInstance
構文
  void ndDeleteInstance(NDD_INSTANCE *isp);
説明
  インスタンスを削除します。所有する子も削除します。
注意
  インスタンスコールバック内では、使用できません。

## ndGetInstanceTRXPointer

関数名
  ndGetInstanceTRXPointer
構文
  TRX *ndGetInstanceTRXPointer(NDD_INSTANCE *isp);
説明
  インスタンスのポインタからトランスフォームバッファのポインタを返す。
パラメータ
  NDD_INSTANCE *isp;
    インスタンスポインタ。
注意
  なぜこのような関数があるかというと、インスタンス構造体が、データタイプに よって TRX の位置が違うためです。

## ndSetupIdentTRX

関数名
  ndSetupIdentTRX
構文
  void ndSetupIdentTRX(TRX *p)
説明
  単位行列を返す。
パラメータ

TRX *p;
トランスフォームマトリクスのポインタ。

注意
  並行移動、回転、拡大縮小の計９個のパラメータに単位行列に当たる、 0,0,0, 0,0,0, 1,1,1 を代入します。

## ndProgressAnimTime

関数名
  ndProgressAnimTime
構文
  int ndProgressAnimTime(NDD_INST_ANIMTK *ntkp);
説明
  タイムキーパーの時間進行処理
パラメータ

NDD_INST_ANIMTK *ntkp
  アニメーションタイムキーパーインスタンスのポインタ。

戻り値
  int;
  実行結果。現在は必ず１が返ります。
注意
  ndEvalInstance より呼ばれます。

## ndSetAnimChannel

関数名
  ndSetAnimChannel
構文
  int ndSetAnimChannel(NDD_INST_ANIM *niap);
説明
  キーフレームアニメーションチャンネル処理
パラメータ

NDD_INST_ANIM *niap;
  アニメーションインスタンスのポインタ。

戻り値
  int;
  実行結果。
注意
  ndEvalInstance より呼ばれます。

## ndReloadDynamicVertex

関数名
  ndReloadDynamicVertex
構文
  void ndReloadDynamicVertex(NDD_INST_DYNAMICVTX *nidp);
説明
  各種デフォームインスタンスの変調テーブルを参照し、Vtx を組み立てる。
パラメータ

NDD_INST_DYNAMICVTX *nidp;
  活性頂点インスタンスの内部構造体のポインタ

戻り値
注意
  描画ドライバに一部依存しており、設定する Vtx テーブルは２つ用意して います。

## ndDeformVertex

関数名
  ndDeformVertex
構文
  void ndDeformVertex(NDD_INST_DEFORM_VTX *nidvp);
説明
  頂点デフォームを行なう
パラメータ

NDD_INST_DEFORM_VTX *nidvp;
  頂点デフォームインスタンスの内部構造体のポインタ

戻り値
注意

## ndDeformVertexNv

関数名
  ndDeformVertexNv
構文
  void ndDeformVertexNv(NDD_INST_DEFORM_VTXNV *nidcp);
説明
  頂点法線デフォームを行なう
パラメータ

NDD_INST_DEFORM_VTXNV *nidcp;
  頂点法線デフォームインスタンスの内部構造体のポインタ

戻り値
注意

## ndDeformVertexColor

関数名
  ndDeformVertexColor
構文
  void ndDeformVertexColor(NDD_INST_DEFORM_VTXCOL *nidcp);
説明
  頂点カラーデフォームを行なう
パラメータ

NDD_INST_DEFORM_VTXCOL *nidcp;
  頂点カラーデフォームインスタンスの内部構造体のポインタ

戻り値
注意

## ndDeformVertexSt

Function name
  ndDeformVertexSt
Syntax
  void ndDeformVertexSt(NDD_INST_DEFORM_VTXST *nidcp);
Explanation
  Perform vertex normal deform.
Parameter

NDD_INST_DEFORM_VTXNV *nidcp;
  Pointer of inside structure for vertex texture coordinate deform instance.

Return value
Note

## ndMakeCameraMatrix

関数名
  ndMakeCameraMatrix
構文
  void ndMakeCameraMatrix(float mf[4][4])
説明
  カメラの情報から、カメラマトリクス(LookAt)を作成します。
注意
  Perspective 等、PROJECTION_VIEW に関係するマトリクスではないので、注意 して下さい。

## ndMultiTrx

関数名
  ndMultiTrx
構文
  void ndMultiTrx(float mf[4][4], TRX *trxp, u32 order);
説明
  TRX 構造体を評価し、４x４のマトリクスを作成する
パラメータ

float mf[4][4];
  作成するべきマトリクスを格納するバッファ
TRX *trxp;
  マトリクスの元になるトランスフォームデータ構造体
u32 order;
  回転成分の評価順。

注意
  生成された４x４マトリクスは、インスタンスワーク内のバッファに置かれ、 表示の際に使用されます。

## ndEvalInstanceOne

関数名
  ndEvalInstanceOne
構文
  int ndEvalInstanceOne(NDD_INSTANCE *isp, float mf[4][4], float cmf[4][4], int forceupd);
説明
  isp によって指定されたインスタンスについて、フレーム評価を行なう。
パラメータ

NDD_INSTANCE *isp;
  インスタンスのポインタ。
float mf[4][4];
  モデルビューマトリクス。
float cmf[4][4];
  インスタンスによって更新されたモデルビューマトリクス。
int forceupd;
  強制的にマトリクスを生成するためのフラグ。１で強制。

戻り値
  int;
  マトリクス更新フラグ。 引数の forceudp の値と、自分のマトリクスが更新された場合、１を、or した値が返る。
注意
  mf は、基本モデルビューマトリクスとして使用されます。 マトリクス評価が入らなかった場合でも、cmf には、 mf が返ります。

## ndEvalInstance

関数名
  ndEvalInstance
構文
  void ndEvalInstance(NDD_INSTANCE *isp, float mf[4][4], int forceupd);
説明
  isp によって指定されたインスタンスの下にぶら下がる全てのインスタンス について、フレーム評価を行なう。
パラメータ

NDD_INSTANCE *isp;
  インスタンスのポインタ。
float mf[4][4];
  モデルビューマトリクス。
int forceupd;
  強制的にマトリクスを生成するためのフラグ。１で強制。
注意
  mfは、基本モデルビューマトリクスとして使用されます。
  再帰する上、ローカルに６４byte のバッファを用意しているので、 結構スタックを消費する筈です。

## ndClearFB

関数名
  ndClearFB
構文
  Gfx *ndClearFB(Gfx *gp, u16 fill_depth, u16 fill_col);
説明
パラメータ

Gfx *gp;
  ディスプレイリストポインタ。
u16 fill_depth;
  Ｚバッファをフィルする値
u16 fill_col;
  カラー値をフィルする値

戻り値
  Gfx *gp;
  ディスプレイリストポインタ。
注意

## ndEvalLight

関数名
  ndEvalLight
構文
  int ndEvalLight(float *tarpos, NDD_LIGHT *lp, RGBAQUAD *color, s8 *nv);
説明
パラメータ

float *tarpos;
  ライトが当てられるターゲットのポジション。x,y,z の３値。 NULL なら、原点(0,0,0)として計算する。
NDD_LIGHT *lp;
  ライト構造体へのポインタ。
RGBQUAD *color;
  カラー値を格納する、RGBAQUAD構造体へのポインタ。
s8 *nv;
  ライトベクトルを格納するポインタ。S0.7形式の x,y,z ３値(3 byte)。

戻り値
  int;
  ライトの評価で、ライトが無効である場合、0 が返ります。
注意
  NDD_LIGHT 構造体には次の制限があります。 ・fnv で与えられる法線は正規化されていること。 ・flag に、NDC_LFLAG_ATTENUATION が設定されている場合、start, end に 有効な値を代入しておく必要がある。 ・NDC_LFLAG_CUTOFF は、NDC_LFLAG_HAVEPOS 時のみ有効。 これらは実行スピードを義性にチェック可能ですが、ゲーム用マネージャー ということで、無視しています。 返り値に0 が返った場合、color, nv は不定です。

## ndReloadLightReg

関数名
  ndReloadLightReg
構文
  Gfx *ndReloadLightReg(Gfx *gp, NDD_LIGHT *lp, u32 newcolor, s8 *newlvec);
説明
パラメータ

Gfx *gp;
  ディスプレイリストポインタ。
NDD_LIGHT *lp;
  ライト構造体へのポインタ。
u32 newcolor;
  新たに設定するカラー値。上位ビットより、0xRRGGBB00 の形式で格納 されていること。下位８ビットは、内部で 0x00 にして扱う。
s8 *newlvec;
  新たに設定するベクトルへのポインタ。S0.7 形式の、x,y,z ３値(3 byte) を見る。NULL は受け付けません。

戻り値
  Gfx *gp;
  ディスプレイリストポインタ。
注意
  NDD_LIGHT 構造体のうち、color, power, stored_nv の３つを参照し、 必要部分のヒープを定義、ＲＳＰコマンドをバッファに積みます。 この関数は、内部使用に対し最適化されているため、ユーザーの任意にて コールする場合は、内容をよく理解した上で使用して下さい。

## ndSetupLightset

関数名
  ndSetupLightset
構文
  Gfx *ndSetupLightset(Gfx *gp, float *tarpos, NDD_LIGHTSET *lightset);
説明
  初期化済みの、lightset で渡されたライトセットを、対象になるオブジェクト と共に評価し、変更のある部分に限りディスプレイリストに積む。
パラメータ

Gfx *gp;
  ディスプレイリストポインタ。
float *tarpos;
  ライトが当てられるターゲットのポジション。x,y,z の３値。
  NULL なら、原点(0,0,0)として計算する。
NDD_LIGHTSET *lightset;
  ライトセット構造体へのポインタ。

戻り値
  Gfx *gp;
  ディスプレイリストポインタ。
注意
  引数のtarposは、そのまま、ndEvalLight() に渡され評価されます。その結果、 NULL の場合、原点〜に置き換えられて評価されます。

## ndInitLights

関数名
  ndInitLights
構文
  int ndInitLights( NDD_LIGHTSET *lightset );
説明
  ＲＤＰのライト設定をリセットし、ライト数を決定し、ライト構造体毎に ライト番号を割り付ける。
パラメータ

NDD_LIGHTSET *lightset;
  ライトセット構造体へのポインタ。

戻り値
  int;
  有効なライト数
注意
  各ライト構造体のflag の、_ENABLE ビットを参照して、必要となるライト数を 計上し、各々のライト番号を割り付けます。 この番号は、ＲＳＰで実際に評価されるライト番号ですが、ユーザーは特に 意識する必要はなく、ＡＰＩ関数によって再設定を行なう場合に参照、使用 されます。

## ndSetupObjectRegister

関数名
  ndSetupObjectRegister
構文
  Gfx *ndSetupObjectRegister( Gfx *gp, NDD_INST_OBJ *niop );
説明
  オブジェクトインスタンス構造体を参照し、再設定の指定があるレジスタを 再設定する。
パラメータ

Gfx *gp;
  ディスプレイリストバッファへのポインタ。
NDD_INST_OBJ *niop;
  オブジェクトインスタンス構造体へのポインタ。

戻り値
  Gfx *;
  更新後のGfx バッファポインタ。
注意
  ndDrawObjectInstance から呼ばれます。

## ndDrawShape

関数名
  ndDrawShape
構文
  Gfx *ndDrawShape( Gfx *gp, NDR_SHAPE *shp );
説明
  シェープ構造体の内容に従って、Gfx 構造体を描画バッファに積む。
パラメータ

Gfx *gp;
  ディスプレイリストバッファへのポインタ。
NDR_SHAPE *shp;
  参照用シェープ構造体へのポインタ。

戻り値
  Gfx *;
  更新後のGfx バッファポインタ。
注意
  ndDrawObjectInstance から呼ばれます。

## ndDrawObjectInstance

関数名
  ndDrawObjectInstance
構文
  int ndDrawObjectInstance( NDD_INST_OBJ *niop );
説明
  １オブジェクトを表示する
パラメータ

Gfx *gp;
  ディスプレイリストバッファへのポインタ。
NDD_INST_OBJ *niop;
  オブジェクトインスタンス構造体へのポインタ。

戻り値
  Gfx *;
  更新後のGfx バッファポインタ。
注意
  ndBuildInstanceGfx から呼ばれます。

## ndBuildInstanceGfxAtPrio

関数名
  ndBuildInstanceGfxAtPrio
構文
  Gfx *ndBuildInstanceGfxAtPrio(Gfx *gp, NDD_INSTANCE *isp, u16 start, u16 end);
説明
  指定のインスタンスポインタ以降を対象に、特定のプライオリティの インスタンスを、描画する。
パラメータ

Gfx *gp;
  ディスプレイリストポインタ。
NDD_INSTANCE *isp;
  対象のインスタンスポインタ。NULLを与えると オブジェクトの ルート以下全てを評価します。
u16 start;
  描画対象のプライオリティ。start も描画対象として含まれます。
u16 end;
  描画対象外のプライオリティ。end は描画されません。ご注意下さい。

戻り値
  Gfx *;
  更新された、ディスプレイリストポインタ。
注意
  start, end の大小関係は、start の方が高い値（優先順位高い）にして下さい。

## ndBuildSceneGfx

関数名
  ndBuildSceneGfx
構文
  Gfx *ndBuildSceneGfx(Gfx *gp, float mul[4][4]);
説明
  カレントのシーン構造体からシーン部分のディスプレイリストを積みます。
パラメータ

Gfx *gp;
  ディスプレイリストポインタ。
float mul[4][4];
  カメラのマトリクス。

注意
  カメラのマトリクス、mul は、プロジェクションマトリクスに乗算されます。

## ndBuildInstanceGfx

関数名
  ndBuildInstanceGfx
構文
  Gfx *ndBuildInstanceGfx(Gfx *gp, NDD_INSTANCE *isp);
説明
  カレントのシーン構造体からシーン部分のディスプレイリストを積みます。
パラメータ

Gfx *gp;
  ディスプレイリストポインタ。
NDD_INSTANCE *isp;
  対象のインスタンスポインタ。NULLを与えると オブジェクトの ルート以下全てを評価します。

戻り値
  Gfx *;
  更新された、ディスプレイリストポインタ。
注意
  内部では、オブジェクトのプライオリティ全体を与える形で、 ndBuildInstanceGfxAtPrio() を呼び出しています。

Copyright 1997-1999 NINTENDO Co.,Ltd./1998-1999 MONEGI CORPORATION All rights reserved.

nd関数一覧へ