njReadBinary
NJ、NJM等のバイナリーファイルからデータを読み込みます。

書 式

#include <Ninja.h>
void *njReadBinary(wbuff, fpos, ptype)
Sint8 *wbuff
Uint32 *fpos
Uint32 *ptype

引 数

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

返 値

void *
読み込んだデータのポインタ。
未知のデータタイプを読み込んだ場合は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