/*----------------------------------------------------------------------------
  Shinobi2 Sample
  COPYRIGHT (C) SEGA ENTERPRISES, LTD.
----------------------------------------------------------------------------*/

#ifndef _NJ_H_
#define	_NJ_H_

#ifdef __cplusplus
extern "C" {
#endif

#include	<Ninja.h>
#include	<NjUtil.h>

/* メイン関数のプロトタイプ宣言です。C++でコンパイルした場合これがないと	*/
/* リンク時にエラーになります。												*/
void main( void );

/*--------------------------------------------------------------------------*/

/* このシンボルにTRUEを設定するとデバッグ機能が利用できるようになります。	*/
/* ここでいうデバッグ機能とは、njPrint等の文字出力とNindows2です。			*/
#define DEBUG (TRUE)

/* 初期化が終わってユーザープログラムが走る前にNowLoadingを表示します。		*/
#define NOWLOADING (TRUE)


/* VRAMをテクスチャに割り当てる容量。一切テクスチャを使用しない場合			*/
/*（デバッグ文字も含む）は０にしても構いません。テクスチャに多く割り当て	*/
/* 過ぎると同時に表示できるポリゴン数に制限ができます。ここで指定した容量の	*/
/* 残りをフレームバッファとネイティブバッファへ割り当てます。				*/
#define TEXTURE_MEMORY_SIZE		(0x380000)

/* 確保するマトリックススタックの数。PushMatrixやPopMatrixを使用する場合や	*/
/* モデル描画系関数を使用する場合はそれらを含めた最大数を指定してください。	*/
/* ファイバーを使用する場合、マトリックススタックは各ファイバー個別に確保	*/
/* できます。各ファイバーの先頭でnjInitMatrixを呼んで初期化してください。	*/
#define MATRIX_SIZE				(32)

/* 確保する中間バッファの数。モデル&3D描画系関数がワークとして使用します。	*/
/* それらの関数を使用しない場合は確保する必要はありません。					*/
#define VTXBUF_SIZE				(4096)

/* 確保する通常テクスチャの枚数。デバッグ文字を含めたテクスチャの総枚数を	*/
/* 指定します。グローバルインデックスが重複する場合でもそれぞれの枚数を		*/
/* カウントしてください。													*/
#define TEX_NORMAL_NUM			(128)

/* 確保するSMALLVQテクスチャの枚数。SMALLVQはグルーピングして登録されるので	*/
/* 実際に使用できる枚数はここで指定した枚数とは異なります。					*/
#define TEX_SMALLVQ_NUM			(128)

/* 確保するテクスチャ読み込みバッファの容量。GDからテクスチャを読み込む場合	*/
/* ここで指定した容量分ずつ読み出します。あまり小さくするとGDからの読み込み	*/
/* に時間がかかってしまいます。理想は最大テクスチャサイズです。メモリから	*/
/* テクスチャをロードする場合は確保する必要はありません。					*/
#define TEXBUF_SIZE				(256*2048)


/* UserInit,UserMain,UserExitの返り値に使用しています。						*/
#define USER_CONTINUE			(0)
#define USER_EXIT				(-1)

/* システムやライブラリの初期化が終わったあとに呼ばれます。ユーザーで使用	*/
/* するライブラリやプログラムを初期化するコードを記述します。				*/
extern Sint32 UserInit(void);

/* システムやライブラリの終了処理が行われる前に呼ばれます。ユーザーで使用	*/
/* したライブラリやメモリを終了、開放してください。							*/
extern Sint32 UserExit(void);

/* 通常のメインループです。													*/
extern Sint32 UserMain(void);

/* NowLoadingを表示する関数です。サンプルはNowLoading.cに入っていますが、	*/
/* 最終的にはユーザー作成のものと入れ替えてください。						*/
extern void DisplayNowLoading( void );

/* グローバル変数															*/
extern NJS_VERTEXBUFFER_INFO	gVbinfo;
extern NJS_MATRIX				*pMatrix;
extern NJS_VERTEX_BUF			*pVtxBuf;
extern NJS_TEXMANAGE			*pTexMng;
extern NJS_TEXSYSTEM			*pTexSys;
extern Sint8					*pTexBuf;
extern const PDS_PERIPHERAL		*Per;

/* bExitFlagはパッドリセットやトレイオープンのようにメイン処理を終了したい	*/
/* ときにTRUEにします。このフラグを立ててもすぐに終了するとは限りません。	*/
extern Bool						bExitFlag;

/* bExitEnableはメインループを抜けて終了していいかどうかを表すフラグです。	*/
/* VMへのセーブ中等、終了できない期間はこのフラグをFALSEにしておきます。	*/
extern Bool						bExitEnable;

/*--------------------------------------------------------------------------*/
#ifdef __cplusplus
}
#endif

#endif
