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,1999