//====================================================================== // IrisDefine.h // IRIS 標準定数 // // Copyright (C) 2002-2004 NINTENDO Co.,Ltd. //====================================================================== #ifndef _IRIS_DEFINE_H #define _IRIS_DEFINE_H #ifdef __cplusplus extern "C" { #endif #include //---------------------------------------------------------------------- // 各固定小数点位置 //---------------------------------------------------------------------- #define G_SFT 12 // ジオメトリエンジン(変更不可) #define GS_SFT 6 // VertexShort用( 〃 ) // V_SFT、SIN_SFT、ACOS_SFT は 12〜14 の範囲で変更可能 //(但し、SIN_SFT >= V_SFT) #define V_SFT 12 // 標準ベクトル等の変数 #define M_SFT V_SFT // 行列 #define N_SFT 9 // 法線ベクトル (変更不可) #define L_SFT 9 // ライトベクトル( 〃 ) #define T_SFT 4 // テクスチャ座標(変更不可) #define TEXMTX_SFT (T_SFT + M_SFT) // テクスチャ行列 #define SIN_SFT 12 // Sinテーブル(V_SFT 以上に設定) #define ACOS_SFT 15 // ArcCosテーブル #define VG_SFT_DF (V_SFT - G_SFT) // ベクトル小数点位置 − ジオメトリエンジン小数点位置 #define MG_SFT_DF (M_SFT - G_SFT) // 行列小数点位置 − ジオメトリエンジン小数点位置 #define GN_SFT_DF (G_SFT - N_SFT) // ジオメトリエンジン小数点位置 − 法線ベクトル小数点位置 #define GL_SFT_DF (G_SFT - L_SFT) // ジオメトリエンジン小数点位置 − ライトベクトル小数点位置 #define SIN_SFT_CT (SIN_SFT_MAX - SIN_SFT) // Sinテーブル小数点位置補正 #define ACOS_SFT_CT (ACOS_SFT_MAX - ACOS_SFT)// ArcCosテーブル小数点位置補正 // 設定範囲エラー検出 #define V_SFT_MAX 14 // V_SFT 最大値(変更不可) #define V_SFT_MIN 12 // 最小値( 〃 ) #if (V_SFT < V_SFT_MIN) || (V_SFT > V_SFT_MAX) #error V_SFT is out of range. #endif #define SIN_SFT_MAX 14 // SIN_SFT 最大値(変更不可) #define SIN_SFT_MIN 12 // 最小値( 〃 ) #define ACOS_SFT_MAX 15 // ACOS_SFT 最大値( 〃 ) #define ACOS_SFT_MIN 12 // 最小値( 〃 ) #if (SIN_SFT < SIN_SFT_MIN) || (SIN_SFT > SIN_SFT_MAX) || (SIN_SFT < V_SFT) #error SIN_SFT is out of range. #endif #if (ACOS_SFT < ACOS_SFT_MIN) || (ACOS_SFT > ACOS_SFT_MAX) #error ACOS_SFT is out of range. #endif // 整数 1 #define G_ONE (1<