NINJA変更履歴

■現在までにわかっている不具合

●	チャンクモデル形式の
	NJD_CV_SH
	NJD_CV_VN_SH
	のVertexは仕様から削除

●      njCnkSimpleDraw の描画において、njSetConstantMaterial 関数による
        マテリアルの変更ができない。

/*****************************************************************************
更新（９月３０日）
/*****************************************************************************
■Ver 0x00060060での変更
＊＊バグ修正情報＊＊
●njWaitVSync関数内でレンダリングタイムが短い場合又は、njSetVSyncFunction関数で
登録している処理が重たい場合にレンダリング終了フラグのクリアのタイミングにバグが
あったのを修正

●RGBケーブルに対応していなかったバグを修正

●0x00060059でnjCnkDrawObject,njCnkPreLightObject類でサポートされていないライトを
使用すると不正なアドレスにアクセスする（フリーズする場合があります）バグを修正。

＊＊追加情報＊＊
●njTextureShadingMode関数にNJD_TEX_SHADING_MODE_DECALモードを追加

●njControl3DにNJD_CONTROL_3D_SHADOW_OPAQUEを追加
　半透明ポリゴンには影がかからないようになります。
　注）半透明に影をかけると、描画が遅いので、このモードを追加


●4光源（専用）付きチャンクモデル関数（SimpleMulti）の追加
void	njCnkSimpleMultiDrawModel( NJS_CNK_MODEL *model );
void	njCnkSimpleMultiDrawObject( NJS_CNK_OBJECT *model );

●SimpleMulti用ライト設定関数の追加
void	njCnkSetSimpleMultiLight(Int num);
void	njCnkSetSimpleMultiLightSwitch(Int light, Int flag);
void	njCnkSetSimpleMultiAmbient(Float ar, Float ag, Float ab);
void	njCnkSetSimpleMultiLightColor(Int light, Float lr, Float lg, Float lb);
void	njCnkSetSimpleMultiLightVector(Float vx, Float vy, Float vz);
void	njCnkSetSimpleMultiLightPoint(Int light, Float px, Float py, Float pz);
void	njCnkSetSimpleMultiLightRange(Int light, Float nrange, Float frange);
void	njCnkSetSimpleMultiLightMatrices(void);

/*****************************************************************************
更新（９月１８日）
/*****************************************************************************
■Ver 0x00060059での変更
＊＊バグ修正情報＊＊
●njRotateViewXYZAbsolute関数のバグを修正

●カメラモーションのロールのバグを修正

●モーションリンク関係関数のバグを修正
（バグの影響は確認していません）

●ユーザークリップのバグを修正

＊＊追加情報＊＊
●njLoadTexturePvmFile、njLoadTexturePvmMemory関数を
パレットテクスチャ対応にした

●YUV420ロード用関数を追加した
void njSetSizeYUV420(Uint32 nWidth,Uint32 nHeight);
Sint32 njLoadTextureYUV420Num(Uint32 n,Uint32 *data);
Sint32 njLoadTextureYUV420NumG(Uint32 globalIndex,Uint32 *data);

＊＊仕様変更情報＊＊
●モディファイアを半透明オブジェクトにも影響するようにした

●チャンクでアトリビュートを設定できるようにした
	NJD_CONTROL_3D_CNK_CONSTANT_ATTR
	を、設定するとチャンクのアトリビュートが変更できる
	変更できるフラグは、
	NJD_FST_IL
	NJD_FST_IS
	NJD_FST_IA
	NJD_FST_UA
	NJD_FST_DB
	NJD_FST_FL
	NJD_FST_ENV

/*****************************************************************************
更新（９月０４日）
/*****************************************************************************
■Ver 0x00060058での変更

＊＊バグ修正情報＊＊
●modeがONの場合GREATEREQUALになっていなかったバグを修正
void  njZBufferMode( Int mode )

＊＊仕様変更情報＊＊
●ユーザークリップ仕様変更
njUserClippingMode、njUserClipping関数を1つにまとめた
void	njUserClipping(Int mode ,NJS_POINT2 *p);

●バーテックスバッファのアドレスを内部でP2領域に変更
void	njSetVertexBuffer(Uint32 *buffer,Sint32 size);

●njCnkEasyDraw..()
	・フラット対応。
	・頂点チャンクＶＮ＿Ｄ８に対応
	・頂点カラー時のニアクリップ対応

●njCnkEasyMultiDraw..()
	・フラット対応（ハードフラット）

●njLoadTexture系関数でSmall VQに対応

＊＊追加情報＊＊
●デバッグ文字の初期化終了関数の追加
void 	njInitPrint(Uint32 *texture,Uint32 size,Uint32 attr);
void 	njExitPrint(void);

●エラーコールバック変数の追加
システムのエラーの時、_nj_fatal_err_callback_変数にエラー情報が
戻ります。また、NJD_FATAL_ERR_OVERFLW_VTXBUFの時システムを
ストールしないように変更しました。
（バッファオーバーによりメモリが壊れ、動かなくなる可能性はあります）

<Ninjadef.h>
#define NJD_FATAL_ERR_NOQEUE_INTR	(1) 割り込みハンドラ内からDMAを起動しようとしたがQUEUEに空きがなかった
#define NJD_FATAL_ERR_OVERFLW_VTXBUF	(2) 登録した頂点数がバッファをオーバーフローしていた
#define NJD_FATAL_ERR_TOO_MANY_VTX	(3) NativeBufferが根本的に足りない。
		（登録ISP/TSPバッファがアロケートされたNativeBufferより大きい)
#define NJD_FATAL_ERR_V_NOT_RESPOND	(4) VSYNCウェイト内でシーケンスがまったく進まなくなっている。

●モデル関係関数の追加
チャンク用のプレライト付きモデル関数を追加
void	njCnkPreLightModel( NJS_CNK_MODEL *model );
void	njCnkPreLightObject( NJS_CNK_OBJECT *object );

●モーション関係関数の追加
チャンク用のモーション（シェープ）リンク関数を追加
void	njCnkDrawMotionLink( NJS_CNK_OBJECT *object, NJS_MOTION_LINK *motionlink, Float frame );
void	njCnkDrawShapeMotionLink( NJS_CNK_OBJECT *object, NJS_MOTION_LINK *motionlink, NJS_MOTION_LINK *shapelink, Float frame );
void	njCnkSimpleDrawMotionLink( NJS_CNK_OBJECT *object, NJS_MOTION_LINK *motionlink, Float frame );
void	njCnkSimpleDrawShapeMotionLink( NJS_CNK_OBJECT *object, NJS_MOTION_LINK *motionlink, NJS_MOTION_LINK *shapelink, Float frame );
void	njCnkEasyMutliDrawMotionLink( NJS_CNK_OBJECT *object, NJS_MOTION_LINK *motionlink, Float frame );
void	njCnkEasyMutliDrawShapeMotionLink( NJS_CNK_OBJECT *object, NJS_MOTION_LINK *motionlink, NJS_MOTION_LINK *shapelink, Float frame );
void	njCnkEasyDrawMotionLink( NJS_CNK_OBJECT *object, NJS_MOTION_LINK *motionlink, Float frame );
void	njCnkEasyDrawShapeMotionLink( NJS_CNK_OBJECT *object, NJS_MOTION_LINK *motionlink, NJS_MOTION_LINK *shapelink, Float frame );

チャンク用のノード・シェープ関数を追加
Int		njCnkGetShape(NJS_CNK_OBJECT *cnkobj, Float *buffer, Int spline_flag);
void	njCnkSetCurrentShape(NJS_MOTION *shape, Int type, Float frame );

●テクスチャ系関数の追加
矩形テクスチャリロード関数
Sint32 ReLoadRectangleTexturePartNum(Uint32 n,void *texaddr,Uint32 attr,Uint32 *p);
Sint32 ReLoadRectangleTexturePartNumG(Uint32 globalIndex,void *texaddr,Uint32 attr,Uint32 *p);

即時復帰テクスチャロード関数
Sint32 njLoadTextureReq(NJS_TEXLIST *texlist);


/*****************************************************************************
更新（８月２８日）
/*****************************************************************************
■Ver 0x00060057での変更

＊＊バグ修正情報＊＊
●SET5.05用のワークアラウンドが外れていたのを修正

●モデル関連定義を修正
<Ninjadef.h>
#define NJD_SA_ZERO	(0)  /* 0 zero   */

●njUserClippingMode関数のNJD_CLIP_DISABLEが効かないバグを修正

●レンダーテクスチャのARGB1555のときレンダリングできなかったバグを修正

●レンダーテクスチャでディザがかからなかったバグを修正

●ファーストシェープ・モーション・リンク類関数でシェープアニメーションから
アニメーションの無いデータ（NULL）へのリンクさせるとフリーズするバグを修正。

●（シェープ）モーション・リンク類関数でモーション用ポインタをカレントポインタに修正。
（このポインタは使用されておりませんので通常の使用方法では問題ありませんが、例えば、
モーション関数を使用しないでリンク関数のみを使用すると不具合が置きます。このバグを修正。）

●njCnkSimpleDrawModelで
	以下のモデルのニアクリップ時に色がおかしくなるバグを修正
	CV_D8,CV_IN,CV_S5,CV_S4,CV_VN_D8,CV_VN_IN,CV_VN_S5,CV_VN_S4,CV_VNX_D8

＊＊追加情報＊＊
●TYPE_Aのフリッカーフリーをサポート

●バーテックスバッファ領域のユーザー指定関数を追加
void	njSetVertexBuffer(Uint32 *buffer,Sint32 size);
●レンダリング終了コールバック関数の追加
void 	njSetEORFunction( void (*func)() );
●チャンクモデル用モーションコールバック関数の追加
void	njCnkSetMotionCallback( void (*func)(NJS_CNK_OBJECT *cnkobj) );

●チャンクで使用するワークバッファを公開しました
<NinjaCnk.h>
/** Vertex Buffer	**/
typedef	struct	{
	Sint32	clip;		/* clip flag  00:04*/
	Float	sx;		/* Screen X   04:08*/
	Float	sy;		/* Screen Y   08:12*/
	Float	ooz;		/* One over Z 12:16*/
	NJS_POINT3	p;	/* 3D Point   16:28*/
	Uint32	dmy1;		/* dummy      28:32*/
	Sint32	vtype;		/* vetex type 32:36*/
	NJS_VECTOR	v;	/* Normal vector 36:48*/
	union  {		/* 48:56 */
		Uint32	argb[2];	/* Packed Color	48:56*/
		Float	inten[2];	/* intensity	48:56*/
	} col;			/* color		48:56*/
	Sint32	NinjaFlag;	/* Ninja Flag	56:60*/
	Sint32	UserFlag;	/* User Flag	60:64*/
} NJS_CNK_VERTEX_BUF;

typedef	struct	{
	Float	x;	/* Screen X	*/
	Float	y;	/* Screen Y	*/
	Float	ooz;	/* One over Z	*/
	Float	inten;	/* intensity	*/
} NJS_CNK_EASY_BUF;

typedef	struct	{
	Float	z;	/* 3D Z		*/
	Float	spec;	/* Specular	*/
	Float	x;	/* Screen X	*/
	Float	y;	/* Screen Y	*/
	Float	ooz;	/* One over Z	*/
	Float	inten;	/* Intensity	*/
	Float	nx;	/* Normal X	*/
	Float	ny;	/* Normal Y	*/
} NJS_CNK_SIMPLE_BUF;

typedef	struct	{
	Float	z;	/* 3D Z		*/
	Float	x;	/* Screen X	*/
	Float	y;	/* Screen Y	*/
	Float	ooz;	/* One over Z	*/
	Float	r;	/* Red		*/
	Float	g;	/* Green	*/
	Float	b;	/* Blue		*/
	Float	a;	/* Alpha 	*/
} NJS_CNK_EASYMULTI_BUF;

■Ver 0x00060056での変更
＊＊バグ修正情報＊＊
●Chunkノーマル用のライトで、平行光源が光源の到達距離によってクリップされる。
（平行光源は距離によりません）

●njCnkDrawModelで

NJD_CS_D8のChunk Stripのモデルの一部のパターンのニアクリップ時に色がおかしくなるバグを修正
NJD_CS_D8のChunk Stripのモデルの一部のパターンのニアクリップ時が行われないバグを修正

＊＊追加情報＊＊
<Ninjadef.h>

●スクリーンレゾリューションモードの定義を追加
#define	NJD_RESOLUTION_320x480_NTSCNI_FF 	(NJD_DSP_NTSC|NJD_DSP_NONINTER|NJD_DSP_320x480)
#define	NJD_RESOLUTION_320x480_PALNI_FF		(NJD_DSP_PAL |NJD_DSP_NONINTER|NJD_DSP_320x480)
#define	NJD_RESOLUTION_320x480_NTSCNI_FF_ANTI 	(NJD_RESOLUTION_320x480_NTSCNI_FF|NJD_DSP_ANTI)
#define	NJD_RESOLUTION_320x480_PALNI_FF_ANTI	(NJD_RESOLUTION_320x480_PALNI_FF |NJD_DSP_ANTI)

●4光源（専用）付きチャンクモデル関数（EasyMulti）の追加
void	njCnkEasyMultiDrawModel( NJS_CNK_MODEL *model );
void	njCnkEasyMultiDrawObject( NJS_CNK_OBJECT *model );

●EasyMulti用ライト設定関数の追加
void	njCnkSetEasyMultiLight(Int num);
void	njCnkSetEasyMultiLightSwitch(Int light, Int flag);
void	njCnkSetEasyMultiAmbient(Float ar, Float ag, Float ab);
void	njCnkSetEasyMultiLightColor(Int light, Float lr, Float lg, Float lb);
void	njCnkSetEasyMultiLightVector(Float vx, Float vy, Float vz);
void	njCnkSetEasyMultiLightPoint(Int light, Float px, Float py, Float pz);
void	njCnkSetEasyMultiLightRange(Int light, Float nrange, Float frange);
void	njCnkSetEasyMultiLightMatrices(void);

/*****************************************************************************
更新（８月２３日）
/*****************************************************************************
■Ver 0x00060055での変更
＊＊バグ修正情報＊＊
●Ver0x00060053,0x00060054でnjChangeSystemにバグがあり描画できなかったのを修正
●njInitVertexBufferで2Vレイテンシモードから3Vレイテンシモードへの変更が出来
  なかったのを修正

＊＊追加情報＊＊
●画面表示位置の調整関数の追加
void njAdjustDisplay(Sint32 xadjust,Sint32 yadjust );
●ボーダーカラーの設定関数の追加
void njSetBorderColor(Uint32 color );
●テクスチャの新関数追加
Sint32 	njReLoadVQCodebookNum(Uint32 n,void *texaddr,Uint32 attr);
Sint32 	njReLoadVQCodebookNumG(Uint32 globalIndex,void *texaddr,Uint32 attr);
void 	njTwiddledTexture(Sint16 *dst,Sint16* src,Sint32 size);

■Ver 0x00060054での変更
＊＊バグ修正情報＊＊
●njCnkDrawModelで

NJD_CS_VNのChunk Stripのモデルのフラット両面ポリゴンの法線がおかしくなるバグを修正。
NJD_CS_D8のChunk Stripのモデルのニアクリップ時に色がおかしくなるバグを修正。
CS_VN_INのカラーの計算がきちんとされていなかったバグを修正。
ニアクリップ時にカラーの計算がきちんとされていなかったバグを修正。

/*****************************************************************************
更新（８月１９日）
/*****************************************************************************

■Ver 0x00060053での変更
＊＊バグ修正情報＊＊
●リロードテクスチャでファイルからロードしたとき一部テクスチャが壊れるバグを修正

●2Vレイテンシモード時のnjDrawSprite2Dのバグを修正

■Ver 0x00060052での変更
＊＊バグ修正情報＊＊
●njCnkSimpleDrawObjectでテクスチャなしポリゴンの表示にバグがあったのを修正

●モディファイアでユーザクリップが効かなかったバグを修正

●レンダテクスチャでディザがかからなかったのを修正

＊＊追加情報＊＊
●PVM形式のメモリテクスチャロード関数を追加
Sint32 njLoadTexturePvmMemory(Uint8 *addr,NJS_TEXLIST *texlist)


■Ver 0x00060051での変更
＊＊バグ修正情報＊＊
●njDrawSprite2Dで１頂点がすっ飛んでいたのを修正

/*****************************************************************************
更新（８月１１日）
/*****************************************************************************

■Ver 0x00060050での変更
＊＊修正情報＊＊
●チャンクモデルのテクスチャ無がSET5.2用になっていなかったのを修正

■Ver 0x00060049での変更
＊＊バグ修正情報＊＊
●njSetPaletteDataでパレットが0からしかセットできなかったバグを修正

＊＊追加情報＊＊
●njSetTextxureMemorySizeを追加し、テクスチャメモリをユーザ設定できるようにした
void	njSetTextxureMemorySize(Uint32 size );

■Ver 0x00060048での変更
＊＊仕様変更情報＊＊
●njInitVertexBufferを2Vレーテンシモードに対応

■Ver 0x00050047での変更
＊＊バグ修正情報＊＊
●njSetBackColorが640x480の画面サイズ固定になっていたバグを修正

●njSimpleDrawShapeMotionでモデルが描画されないバグを修正

●njCnkDrawModelで

	NJD_CV_D8
	NJD_CV_IN
	NJD_CV_S5
	NJD_CV_S4

	NJD_CV_VN_D8
	NJD_CV_VN_IN
	NJD_CV_VN_S5
	NJD_CV_VN_S4

	NJD_CV_VNX_D8

   の頂点カラーが正常に表示されなかったのを修正

●njCnkDrawSimpleModelで

	NJD_CV_S4
	NJD_CV_S5
	NJD_CV_VN_D8
	NJD_CV_VN_S4
	NJD_CV_VN_S5
	NJD_CV_VN_IN
	NJD_CV_VNX_D8

   の頂点カラーが正常に表示されなかったのを修正。

＊＊仕様変更情報＊＊
●テクスチャ関数をパレットテクスチャ対応に修正

<NinjaStr.h>
●テクスチャメモリリスト構造体を変更
typedef struct {
	Uint32			globalIndex;/* global unique texture ID     */
	Uint32			bank;		/* palette bank 				*/
	Uint32			tspparambuffer;/* TSPParambuffer			*/
	Uint32			texparambuffer;/* TextureParambuffer		*/
	Uint32			texaddr;	/* texture flag					*/
	NJS_TEXINFO		texinfo;	/* texinfo						*/
	Uint16			count;		/* texture count  				*/
	Uint16			dummy;
} NJS_TEXMEMLIST;

＊＊追加情報＊＊
●パレット関係関数の追加
<NinjaApi.h>
void njSetPaletteBankNum(Uint32 n,Sint32 bank);
void njSetPaletteBankNumG(Uint32 globalIndex,Sint32 bank);
void njSetPaletteMode(Uint32 mode);
void njSetPaletteData(Sint32 offset,Sint32 count,void* data);
Sint32 njLoadPaletteFile(const char *filename,NJS_TEXPALETTE *pl);

●モーション関係関数の追加
void njEasyDrawShapeMotionLink( NJS_OBJECT *object, NJS_MOTION_LINK *motionlink, NJS_MOTION_LINK *shapelink, Float frame );
void njEasyDrawMotionLink( NJS_OBJECT *object, NJS_MOTION_LINK *motionlink, Float frame );
void njEasyActionLink( NJS_ACTION_LINK *actionlink, Float frame );


●カラークランプ関数の追加
void 	njColorClampMode( Int mode );
void 	njSetColorClamp(Uint32 MaxARGB,Uint32 MinARGB );

<NinjaDef.h>
●以下の定義を追加
#define NJD_TEXATTR_PALGLOBALINDEX		BIT_24
#define NJD_TEXATTR_TEXCONTINUE			BIT_16
#define NJD_TEXBANK_SHIFT			(26)
#define NJD_TEXBANK_MASK			(0xFC000000)
#define NJD_TEXPALGLOBAL_MASK		(0x03FFFFFF)
#define NJD_TEXFMT_ARGB_8888 			(0x06)

<NinjaStr.h>
●以下のパレット構造体を作成
typedef struct {
	void 			*palette;	/*	palette pointer				*/
	Uint16 			mode;		/*	color mode					*/
	Sint16 			bank;		/*	bank						*/
	Sint16 			offset;		/*	entry offset				*/
	Sint16 			count;		/*	entry count					*/
}NJS_TEXPALETTE;

	