##### Ninjaライブラリ - バイナリ関数

# njReadBinary

バイナリファイルの読み込み

### 書式

  void *njReadBinary( *wbuff, *fpos, *ptype )
  Sint8 *wbuff
  Uint32 *fpos
  Uint32 *ptype

### 引数

  *wbuff | NJ/NJM等のバイナリファイルを読み込んだバッファへのポインタ
  *fpos | ファイルの読み込み開始バイト数
  *ptype | 読み込んだデータのタイプが返されます

### 戻値

  NULL | 未知のデータタイプを読み込んだ
  NULL以外 | 読み込んだデータのポインタ

### 解説

  GD-ROMよりバッファに読み込まれた NJ、NJM等のデータからテクスチャリストや モデルデータを取り出し、そのポインタを返します。 データの取り出し先は内部で確保されたバッファです。 バッファの開放はユーザーが syFree()関数を使用して行って下さい。

### 用例

      GD-ROM上のNJファイルを開きテクスチャリスト、モデルデータを読み込みます。
      GDFS fid;
      Sint32 sn;
      NJS_TEXLIST *tlist;
      NJS_OBJECT *obj;
      Sint8 *w_buff;
      Uint32 rtype, rpos = 0;
      /* バイナリファイルをオープンする */
      fid = gdFsOpen("sample.nj", NULL);
      /* セクタ単位のファイルサイズを調べて、読み込みに必要な大きさのバッファを確保する */
      gdFsGetFileSctSize(fid, &sn);
      w_buff = (Sint8 *)syMalloc(sn*2048+8);

      /* 確保したバッファにバイナリファイルを読み込み、ファイルをクローズする */
      gdFsRead(fid, sn, w_buff);
      gdFsClose(fid);

      /* 読み込んだバイナリデータから、テクスチャリストとオブジェクトを取りだす */
      tlist = (NJS_TEXLIST *)njReadBinary(w_buff, &rpos, &rtype);
      obj = (NJS_OBJECT *)njReadBinary(w_buff, &rpos, &rtype);
      	：
      	：
      /* バイナリデータが不要になった時の処理 */
      /* ( syMalloc の空き領域が分断しないように、逆順に開放) */
      syFree(obj);
      syFree(tlist);
      syFree(w_buff);

### 備考

  引数 fposの値はデータを読み込んだ後、次の読み出し開始位置に更新されます。 引数 ptypeには未知のデータを読み込んだ場合 '****' が返されます。 現在定義されているデータタイプは次の通りです。 (NjDef.hで定義されています) #define iff_NJINFO 'NJIN' /* data infomation */ #define iff_NJCM 'NJCM' /* ninja chunk model tree */ #define iff_NJBM 'NJBM' /* ninja basic model tree */ #define iff_NJTL 'NJTL' /* ninja texlist */ #define iff_NJLI 'NJLI' /* ninja light */ #define iff_NJCA 'NJCA' /* ninja camera */ #define iff_NMDM 'NMDM' /* ninja model motion */ #define iff_NLIM 'NLIM' /* ninja light motion */ #define iff_NCAM 'NCAM' /* ninja camera motion */ #define iff_NSSM 'NSSM' /* ninja simple shape motion */

### 参照

  njOpenBinary()
  njCloseBinary()

njReadBinary

COPYRIGHT © SEGA ENTERPRISES, LTD., 1998