ntr_bootrom/trunk/IrisMainp/include/IrisDefine.h

1626 lines
80 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//======================================================================
// IrisDefine.h
// IRIS 標準定数
//
// Copyright (C) 2002-2004 NINTENDO Co.,Ltd.
//======================================================================
#ifndef _IRIS_DEFINE_H
#define _IRIS_DEFINE_H
#ifdef __cplusplus
extern "C" {
#endif
#include <IrisTarget.h>
//----------------------------------------------------------------------
// 各固定小数点位置
//----------------------------------------------------------------------
#define G_SFT 12 // ジオメトリエンジン(変更不可)
#define GS_SFT 6 // VertexShort用
// V_SFT、SIN_SFT、ACOS_SFT は 1214 の範囲で変更可能
//但し、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<<G_SFT)
#define GS_ONE (1<<GS_SFT)
#define V_ONE (1<<V_SFT)
#define M_ONE (1<<M_SFT)
#define N_ONE (1<<N_SFT)
#define L_ONE (1<<L_SFT)
#define SIN_ONE (1<<SIN_SFT)
#define ACOS_ONE (1<<ACOS_SFT)
#define T_ONE (1<<T_SFT)
#define TEXMTX_ONE (1<<TEXMTX_SFT)
// 最大小数
#define G_DECI_MAX (G_ONE - 1)
#define GS_DECI_MAX (GS_ONE - 1)
#define V_DECI_MAX (V_ONE - 1)
#define M_DECI_MAX (M_ONE - 1)
#define N_DECI_MAX (N_ONE - 1)
#define L_DECI_MAX (L_ONE - 1)
#define SIN_DECI_MAX (SIN_ONE - 1)
#define ACOS_DECI_MAX (ACOS_ONE - 1)
#define T_DECI_MAX (T_ONE - 1)
#define TEXMTX_DECI_MAX (TEXMTX_ONE - 1)
//----------------------------------------------------------------------
// 定数
//----------------------------------------------------------------------
#define SYSTEM_CLOCK 33513982 // システムクロック
#define MAINP 0 // メインプロセッサ
#define SUBP 1 // サブプロセッサ
#define ON 1
#define OFF 0
#define ENABLE 1
#define DISABLE 0
#define TRUE 1
#define FALSE 0
#define LCD_WIDTH 256 // 画面幅
#define LCD_HEIGHT 192 // 画面高さ
#define POLYGON_ID_MAX 63 // ポリゴンID最大値
//----------------------------------------------------------------------
// カラーデータ
//----------------------------------------------------------------------
#define RED5_MASK 0x001f // 赤
#define GREEN5_MASK 0x03e0 // 緑
#define BLUE5_MASK 0x7c00 // 青
#define ALPHA1_MASK 0x8000 // 不透明度
#define ALPHA5_MASK 0x001f0000
#define RED5_SHIFT 0
#define GREEN5_SHIFT 5
#define BLUE5_SHIFT 10
#define ALPHA1_SHIFT 15
#define ALPHA5_SHIFT 16
#define RED8_MASK 0x000000ff // 赤
#define GREEN8_MASK 0x0000ff00 // 緑
#define BLUE8_MASK 0x00ff0000 // 青
#define ALPHA8_MASK 0xff000000 // 不透明度
#define RED8_SHIFT 0
#define GREEN8_SHIFT 8
#define BLUE8_SHIFT 16
#define ALPHA8_SHIFT 24
//----------------------------------------------------------------------
// 座標
//----------------------------------------------------------------------
#define X16_MASK 0x0000ffff // X成分
#define Y16_MASK 0xffff0000 // Y成分
#define Z16_MASK 0x0000ffff // Z成分
#define X16_SHIFT 0
#define Y16_SHIFT 16
#define Z16_SHIFT 0
#define X10_MASK 0x000003ff // X成分
#define Y10_MASK 0x000ffc00 // Y成分
#define Z10_MASK 0x3ff00000 // Z成分
#define X10_SHIFT 0
#define Y10_SHIFT 10
#define Z10_SHIFT 20
//----------------------------------------------------------------------
// テクスチャ座標
//----------------------------------------------------------------------
#define TEX_S_MASK 0x0000ffff // S成分
#define TEX_T_MASK 0xffff0000 // T成分
#define TEX_S_SHIFT 0
#define TEX_T_SHIFT 16
//----------------------------------------------------------------------
// アフィン変換
//----------------------------------------------------------------------
#define AFFINE_REG_SHIFT 8
//----------------------------------------------------------------------
// BGスクリーンデータ
//----------------------------------------------------------------------
#define BG_SC_CHAR_NO_MASK 0x03ff // キャラクタNo
#define BG_SC_FLIP_MASK 0x0c00 // フリップ
#define BG_SC_PLTT_MASK 0xf000 // カラーパレットNo
#define BG_SC_CHAR_NO_SHIFT 0
#define BG_SC_FLIP_SHIFT 10
#define BG_SC_PLTT_SHIFT 12
#define BG_SC_H_FLIP 0x0400 // Hフリップ
#define BG_SC_V_FLIP 0x0800 // Vフリップ
//----------------------------------------------------------------------
// OAMデータ
//----------------------------------------------------------------------
#define OAM_V_POS_MASK 0x000000ff // Y座標
#define OAM_H_POS_MASK 0x01ff0000 // X座標
#define OAM_SHAPE_MASK 0x0000c000 // OBJ形状
#define OAM_SIZE_MASK 0xc0000000 // OBJサイズ
#define OAM_OBJ_MODE_MASK 0x00000c00 // OBJモード
#define OAM_AFFINE_MODE_MASK 0x00000300 // アフィンモード
#define OAM_AFFINE_NO_MASK 0x3e000000 // アフィン パラメータNo
#define OAM_FLIP_MASK 0x30000000 // フリップ
#define OAM_CHAR_NO_MASK 0x000003ff // キャラクタNo
#define OAM_PRIORITY_MASK 0x00000c00 // BG相対優先順位
#define OAM_PLTT_MASK 0x0000f000 // カラーパレットNo
#define OAM_ALPHA_MASK 0x0000f000 // OBJアルファ値
#define OAM_AFFINE_PARAM_MASK 0xffff0000 // アフィン パラメータ
#define OAM_V_POS_SHIFT 0
#define OAM_H_POS_SHIFT 16
#define OAM_SHAPE_SHIFT 14
#define OAM_SIZE_SHIFT 30
#define OAM_AFFINE_MODE_SHIFT 8
#define OAM_OBJ_MODE_SHIFT 10
#define OAM_AFFINE_NO_SHIFT 25
#define OAM_FLIP_SHIFT 28
#define OAM_CHAR_NO_SHIFT 0
#define OAM_PRIORITY_SHIFT 10
#define OAM_PLTT_SHIFT 12
#define OAM_ALPHA_SHIFT 12
#define OAM_AFFINE_PARAM_SHIFT 16
#define OAM_OBJ_ON 0x00000000 //
#define OAM_OBJ_OFF 0x00000200 //
#define OAM_OBJ_NORMAL 0x00000000 // OBJノーマルモード
#define OAM_OBJ_BLEND 0x00000400 // OBJ半透明モード
#define OAM_OBJ_WINDOW 0x00000800 // OBJウインドウモード
#define OAM_OBJ_BMP 0x00000c00 // OBJビットマップモード
#define OAM_AFFINE_NONE 0x00000000 // アフィン無効モード
#define OAM_AFFINE_NORMAL 0x00000100 // アフィンノーマルモード
#define OAM_AFFINE_TWICE 0x00000300 // アフィン2倍角モード
#define OAM_AFFINE_ERASE 0x00000200 // アフィン非表示モード
#define OAM_MOS_ON 0x00001000 // モザイク
#define OAM_MOS_OFF 0x00000000 // モザイク
#define OAM_COLOR_16 0x00000000 // 選択
#define OAM_COLOR_256 0x00002000 // 256色 選択
#define OAM_H_FLIP 0x10000000 // Hフリップ
#define OAM_V_FLIP 0x20000000 // Vフリップ
#define OAM_SQUARE 0x00000000 // 正方形OBJ
#define OAM_H_RECTANGLE 0x00004000 // 横長方形OBJ
#define OAM_V_RECTANGLE 0x00008000 // 縦長方形OBJ
#define OAM_SIZE_NO_0 0x00000000 // サイズNo
#define OAM_SIZE_NO_1 0x40000000 // サイズNo
#define OAM_SIZE_NO_2 0x80000000 // サイズNo
#define OAM_SIZE_NO_3 0xc0000000 // サイズNo
#define OAM_SIZE_8x8 0x00000000 // 8ドット
#define OAM_SIZE_16x16 0x40000000 // 16x16ドット
#define OAM_SIZE_32x32 0x80000000 // 32x32ドット
#define OAM_SIZE_64x64 0xc0000000 // 64x64ドット
#define OAM_SIZE_16x8 0x00004000 // 8ドット
#define OAM_SIZE_32x8 0x40004000 // 8ドット
#define OAM_SIZE_32x16 0x80004000 // 32x16ドット
#define OAM_SIZE_64x32 0xc0004000 // 64x32ドット
#define OAM_SIZE_8x16 0x00008000 // 8x16ドット
#define OAM_SIZE_8x32 0x40008000 // 8x32ドット
#define OAM_SIZE_16x32 0x80008000 // 16x32ドット
#define OAM_SIZE_32x64 0xc0008000 // 32x64ドット
// 構造体メンバ用定数
#define ST_OAM_OBJ_NORMAL 0 // OBJノーマルモード
#define ST_OAM_OBJ_BLEND 1 // OBJ半透明モード
#define ST_OAM_OBJ_WINDOW 2 // OBJウインドウモード
#define ST_OAM_AFFINE_NONE 0 // アフィン無効モード
#define ST_OAM_AFFINE_NORMAL 1 // アフィンノーマルモード
#define ST_OAM_AFFINE_TWICE 3 // アフィン2倍角モード
#define ST_OAM_AFFINE_ERASE 2 // アフィン非表示モード
#define ST_OAM_COLOR_16 0 // 選択
#define ST_OAM_COLOR_256 1 // 256色 選択
#define ST_OAM_SQUARE 0 // 正方形OBJ
#define ST_OAM_H_RECTANGLE 1 // 横長方形OBJ
#define ST_OAM_V_RECTANGLE 2 // 縦長方形OBJ
//**********************************************************************
// IRISレジスタ・コントロールビット
//**********************************************************************
//----------------------------------------------------------------------
// プログラムステータスレジスタ
//----------------------------------------------------------------------
#define PSR_CPU_MODE_MASK 0x1f // CPUモード
#define PSR_USER_MODE 0x10 // ユーザ
#define PSR_FIQ_MODE 0x11 //
#define PSR_IRQ_MODE 0x12 //
#define PSR_SVC_MODE 0x13 // スーパバイザ
#define PSR_ABORT_MODE 0x17 // アボート(プリフェッチ/データ)
#define PSR_UNDEF_MODE 0x1b // 未定義命令
#define PSR_SYS_MODE 0x1f // システム
#define PSR_THUMB_STATE 0x20 // THUMBステート
#define PSR_FIQ_DISABLE 0x40 // FIQ不許可
#define PSR_IRQ_DISABLE 0x80 // IRQ不許可
#define PSR_IRQ_FIQ_DISABLE 0xc0 // IRQ&FIQ不許可
#define PSR_Q_FLAG 0x08000000 // スティッキーオーバーフロー
#define PSR_V_FLAG 0x10000000 // オーバーフロー
#define PSR_C_FLAG 0x20000000 // キャリー/ボロー/拡張
#define PSR_Z_FLAG 0x40000000 // ゼロ
#define PSR_N_FLAG 0x80000000 // 負/未満
// 構造体メンバ用定数
#define ST_PSR_USER_MODE 0x10 // ユーザ
#define ST_PSR_FIQ_MODE 0x11 //
#define ST_PSR_IRQ_MODE 0x12 //
#define ST_PSR_SVC_MODE 0x13 // スーパバイザ
#define ST_PSR_ABORT_MODE 0x17 // アボート(プリフェッチ/データ)
#define ST_PSR_UNDEF_MODE 0x1b // 未定義命令
#define ST_PSR_SYS_MODE 0x1f // システム
//----------------------------------------------------------------------
// システムコントロールコプロセッサ
//----------------------------------------------------------------------
// レジスタ1(マスタコントロール)
#define C1_SB1_BITSET 0x00000078 // レジスタ1用1固定ビット列
#define C1_ITCM_LOAD_MODE 0x00080000 // 命令TCM ロードモード
#define C1_DTCM_LOAD_MODE 0x00020000 // データTCM ロードモード
#define C1_ITCM_ENABLE 0x00040000 // 命令TCM イネーブル
#define C1_DTCM_ENABLE 0x00010000 // データTCM イネーブル
#define C1_LD_INTERWORK_DISABLE 0x00008000 // ロード命令によるインターワーキング ディセーブル
#define C1_CACHE_ROUND_ROBIN 0x00004000 // キャッシュ置換アルゴリズム ラウンドロビン(最悪時のヒット率が安定)
#define C1_CACHE_PSEUDO_RANDOM 0x00000000 // 擬似ランダム
#define C1_EXCEPT_VEC_UPPER 0x00002000 // 例外ベクタ 上位アドレス(こちらに設定して下さい)
#define C1_EXCEPT_VEC_LOWER 0x00000000 // 下位アドレス
#define C1_ICACHE_ENABLE 0x00001000 // 命令キャッシュ イネーブル
#define C1_DCACHE_ENABLE 0x00000004 // データキャッシュ イネーブル
#define C1_LITTLE_ENDIAN 0x00000000 // リトルエンディアン
#define C1_BIG_ENDIAN 0x00000080 // ビッグエンディアン
#define C1_PROTECT_UNIT_ENABLE 0x00000001 // プロテクションユニット イネーブル
// レジスタ2(プロテクションリージョン・キャッシュ設定)
#define C2_PR0_SFT 0 // プロテクションリージョン0
#define C2_PR1_SFT 1 //
#define C2_PR2_SFT 2 //
#define C2_PR3_SFT 3 //
#define C2_PR4_SFT 4 //
#define C2_PR5_SFT 5 //
#define C2_PR6_SFT 6 //
#define C2_PR7_SFT 7 //
// レジスタ3(プロテクションリージョン・ライトバッファ設定)
#define C3_PR0_SFT 0 // プロテクションリージョン0
#define C3_PR1_SFT 1 //
#define C3_PR2_SFT 2 //
#define C3_PR3_SFT 3 //
#define C3_PR4_SFT 4 //
#define C3_PR5_SFT 5 //
#define C3_PR6_SFT 6 //
#define C3_PR7_SFT 7 //
// レジスタ5(プロテクションリージョン・アクセス許可)
#define C5_PERMIT_MASK 0xf // プロテクションリージョン アクセス許可マスク
#define C5_PERMIT_NA 0 // アクセス不許可
#define C5_PERMIT_RW 1 // リードライト許可
#define C5_PERMIT_RO 5 // リードオンリー許可
#define C5_PR0_SFT 0 // プロテクションリージョン0
#define C5_PR1_SFT 4 //
#define C5_PR2_SFT 8 //
#define C5_PR3_SFT 12 //
#define C5_PR4_SFT 16 //
#define C5_PR5_SFT 20 //
#define C5_PR6_SFT 24 //
#define C5_PR7_SFT 28 //
// レジスタ6(プロテクションリージョン・ベースアドレス/サイズ)
#define C6_PR_SIZE_MASK 0x0000003e // プロテクションリージョン サイズ
#define C6_PR_BASE_MASK 0xfffff000 // ベースアドレス
#define C6_PR_SIZE_SHIFT 1
#define C6_PR_BASE_SHIFT 12
#define C6_PR_ENABLE 1 // プロテクションリージョン イネーブル
#define C6_PR_DISABLE 0 // ディセーブル
#define C6_PR_4KB 0x16 // リージョンサイズ
#define C6_PR_8KB 0x18 //
#define C6_PR_16KB 0x1a //
#define C6_PR_32KB 0x1c //
#define C6_PR_64KB 0x1e //
#define C6_PR_128KB 0x20 //
#define C6_PR_256KB 0x22 //
#define C6_PR_512KB 0x24 //
#define C6_PR_1MB 0x26 //
#define C6_PR_2MB 0x28 //
#define C6_PR_4MB 0x2a //
#define C6_PR_8MB 0x2c //
#define C6_PR_16MB 0x2e //
#define C6_PR_32MB 0x30 //
#define C6_PR_64MB 0x32 //
#define C6_PR_128MB 0x34 //
#define C6_PR_256MB 0x36 //
#define C6_PR_512MB 0x38 //
#define C6_PR_1GB 0x3a //
#define C6_PR_2GB 0x3c //
#define C6_PR_4GB 0x3e //
// レジスタ7.13(命令キャッシュ・プリフェッチ)
#define C7_ICACHE_PREFCHP_MASK 0xffffffe0 // 命令キャッシュ プリフェッチアドレス
// レジスタ7.10、7.14(キャッシュインデックス操作)
#define C7_ICACHE_INDEX_MASK 0x00000fe0 // 命令キャッシュ インデックス
#define C7_DCACHE_INDEX_MASK 0x000003e0 // データキャッシュ インデックス
#define C7_CACHE_SET_NO_MASK 0xc0000000 // キャッシュ セットNo
#define C7_CACHE_INDEX_SHIFT 5
#define C7_CACHE_SET_NO_SHIFT 30
// レジスタ9.0(キャッシュロックダウン)
#define C9_LOCKDOWN_SET_NO_MASK 0x00000003 // キャッシュロックダウン セットNo
#define C9_LOCKDOWN_SET_NO_SHIFT 0
#define C9_LOCKDOWN_LOAD_MODE 0x80000000 // キャッシュロックダウン ロードモード
// レジスタ9.1(TCMベースアドレス/サイズ)
#define C9_TCMR_SIZE_MASK 0x0000003e // TCMリージョン サイズ
#define C9_TCMR_BASE_MASK 0xfffff000 // ベースアドレス
#define C9_TCMR_SIZE_SHIFT 1
#define C9_TCMR_BASE_SHIFT 12
#define C9_TCMR_4KB 0x06 // リージョンサイズ
#define C9_TCMR_8KB 0x08 //
#define C9_TCMR_16KB 0x0a //
#define C9_TCMR_32KB 0x0c //
#define C9_TCMR_64KB 0x0e //
#define C9_TCMR_128KB 0x10 //
#define C9_TCMR_256KB 0x12 //
#define C9_TCMR_512KB 0x14 //
#define C9_TCMR_1MB 0x16 //
#define C9_TCMR_2MB 0x18 //
#define C9_TCMR_4MB 0x1a //
#define C9_TCMR_8MB 0x1c //
#define C9_TCMR_16MB 0x1e //
#define C9_TCMR_32MB 0x20 //
#define C9_TCMR_64MB 0x22 //
#define C9_TCMR_128MB 0x24 //
#define C9_TCMR_256MB 0x26 //
#define C9_TCMR_512MB 0x28 //
#define C9_TCMR_1GB 0x2a //
#define C9_TCMR_2GB 0x2c //
#define C9_TCMR_4GB 0x2e //
//----------------------------------------------------------------------
// 割り込み要求/許可フラグ
//----------------------------------------------------------------------
#define V_BLANK_INTR_FLAG 0x00000001 // Vブランク割り込み
#define H_BLANK_INTR_FLAG 0x00000002 // Hブランク割り込み
#define V_COUNT_INTR_FLAG 0x00000004 // Vカウンタ一致割り込み
#define TIMER0_INTR_FLAG 0x00000008 // タイマー0割り込み
#define TIMER1_INTR_FLAG 0x00000010 // タイマー1割り込み
#define TIMER2_INTR_FLAG 0x00000020 // タイマー2割り込み
#define TIMER3_INTR_FLAG 0x00000040 // タイマー3割り込み
#define SIO_INTR_FLAG 0x00000080 // シリアル通信割り込み
#define DMA0_INTR_FLAG 0x00000100 // DMA0割り込み
#define DMA1_INTR_FLAG 0x00000200 // DMA1割り込み
#define DMA2_INTR_FLAG 0x00000400 // DMA2割り込み
#define DMA3_INTR_FLAG 0x00000800 // DMA3割り込み
#define KEY_INTR_FLAG 0x00001000 // キー割り込み
#define CARTRIDGE_INTR_FLAG 0x00002000 // カートリッジ割り込み
#define SUBP_INTR_FLAG 0x00010000 // サブプロセッサ割り込み
#define SPFIFO_SEND_INTR_FLAG 0x00020000 // サブプロセッサ間送信FIFOエンプティ割り込み
#define SPFIFO_RECV_INTR_FLAG 0x00040000 // サブプロセッサ間受信FIFOノットエンプティ割り込み
#define CARD_DATA_INTR_FLAG 0x00080000 // カードデータ転送終了割り込み
#define CARD_IREQ_INTR_FLAG 0x00100000 // カードIREQ割り込み
#define GXFIFO_INTR_FLAG 0x00200000 // ジオメトリコマンドFIFO割り込み
//----------------------------------------------------------------------
// サブプロセッサ インタフェース
//----------------------------------------------------------------------
#define SUBP_RECV_STATUS_MASK 0x000f // 受信ステータス
#define SUBP_SEND_STATUS_MASK 0x0f00 // 送信ステータス
#define SUBP_RECV_STATUS_SHIFT 0
#define SUBP_SEND_STATUS_SHIFT 8
#define SUBP_SEND_IF 0x2000 // 割り込み要求送信
#define SUBP_RECV_IF_ENABLE 0x4000 // 割り込み要求受信 許可
#define SUBP_ENABLE 0x8000 // サブプロセッサ イネーブル(削除予定)
//----------------------------------------------------------------------
// サブプロセッサ通信FIFO コントロール
//----------------------------------------------------------------------
#define SPFIFO_SEND_EMPTY 0x0001 // 送信FIFO エンプティ
#define SPFIFO_SEND_FULL 0x0002 // フル
#define SPFIFO_SEND_IF_ENABLE 0x0004 // 割り込み要求 許可
#define SPFIFO_SEND_CLEAR 0x0008 // クリア
#define SPFIFO_RECV_EMPTY 0x0100 // 受信FIFO エンプティ
#define SPFIFO_RECV_FULL 0x0200 // フル
#define SPFIFO_RECV_IF_ENABLE 0x0400 // 割り込み要求 許可
#define SPFIFO_ENABLE 0x8000 // FIFOイネーブル
//----------------------------------------------------------------------
// パワーコントロール
//----------------------------------------------------------------------
#define POW_LCDC_ON 0x0001 // LCDコントローラ
#ifdef IRIS_TS
#define POW_2D_ON 0x0202 // 2DエンジンAB
#define POW_2D_A_ON 0x0002 // 2DエンジンA
#define POW_2D_B_ON 0x0200 // 2DエンジンB
#define POW_EXCHANGE_LCD 0x8000 // 表示液晶の交換
#else
#define POW_2D_ON 0x0002 // 2Dエンジン
#endif
#define POW_RENDER_ON 0x0004 // レンダリングエンジン
#define POW_GEOMETRY_ON 0x0008 // ジオメトリエンジン
#define POW_ALL_ON 0x000f // 全部
//----------------------------------------------------------------------
// 除算
//----------------------------------------------------------------------
#define DIV_MODE_MASK 0x0003 // 除算モード
#define DIV_MODE_SHIFT 0
#define DIV_32_32BIT_MODE 0x0000 // モード
#define DIV_64_32BIT_MODE 0x0001 // モード
#define DIV_64_64BIT_MODE 0x0002 // モード
#define DIV_ERROR 0x4000 // 0割りエラー
#define DIV_BUSY 0x8000 // ビジー
//----------------------------------------------------------------------
// 平方根
//----------------------------------------------------------------------
#define SQRT_32BIT_MODE 0x0000 // モード
#define SQRT_64BIT_MODE 0x0001 // モード
#define SQRT_BUSY 0x8000 // ビジー
//----------------------------------------------------------------------
// VRAM&内部ワークRAM コントロール
//----------------------------------------------------------------------
#define VRAM_MODE_MASK 0x07 // VRAMモード
#define VRAM_OFFSET_MASK 0x18 // オフセット
#define VRAM_MODE_SHIFT 0
#define VRAM_OFFSET_SHIFT 3
#define VRAM_LCDC_MODE 0x00 // モード
#define VRAM_BG_MODE 0x01 // モード
#define VRAM_OBJ_MODE 0x02 // モード(A,B,E~Gのみ可)
#define VRAM_SUBP_MODE 0x02 // サブプロセッサ モード(C,Dのみ可)
#define VRAM_TEX_MODE 0x03 // テクスチャ モード(A~Dのみ可)
#define VRAM_TEXPLTT_MODE 0x03 // テクスチャパレット モード(E~Gのみ可)
#define VRAM_BGPLTT_MODE 0x04 // BGパレット モード(E~Gのみ可)
#define VRAM_OBJPLTT_MODE 0x05 // OBJパレット モード(F,Gのみ可)
#define VRAM_TEX_SLOT_0 0x00 // テクスチャ スロット0
#define VRAM_TEX_SLOT_1 0x08 //
#define VRAM_TEX_SLOT_2 0x10 //
#define VRAM_TEX_SLOT_3 0x18 //
#define VRAM_TEXPLTT_SLOT_0_3 0x00 // テクスチャパレット スロット0-3
#define VRAM_TEXPLTT_SLOT_0 0x00 //
#define VRAM_TEXPLTT_SLOT_1 0x08 //
#define VRAM_TEXPLTT_SLOT_4 0x10 //
#define VRAM_TEXPLTT_SLOT_5 0x18 //
#define VRAM_BGPLTT_SLOT_0_3 0x00 // BGパレット スロット0-3
#define VRAM_BGPLTT_SLOT_0_1 0x00 //
#define VRAM_BGPLTT_SLOT_2_3 0x08 //
#define VRAM_DISABLE 0x00 // VRAMディセーブル
#define VRAM_ENABLE 0x80U // イネーブル
#define WRAM_MAINP_ALL 0x00 // 共有内部ワークRAMブロック0・1 → メインプロセッサ
#define WRAM_MAINP_B1_SUBP_B0 0x01 // ブロック1 → メインプロセッサ
// ブロック0 → サブプロセッサ
#define WRAM_MAINP_B0_SUBP_B1 0x02 // ブロック0 → メインプロセッサ
// ブロック1 → サブプロセッサ
#define WRAM_SUBP_ALL 0x03 // ブロック0・1 → サブプロセッサ
#define VRAM_A_CNT_SHIFT 0 // コントロール
#define VRAM_B_CNT_SHIFT 8 //
#define VRAM_C_CNT_SHIFT 16 //
#define VRAM_D_CNT_SHIFT 24 //
#define VRAM_E_CNT_SHIFT 0 //
#define VRAM_F_CNT_SHIFT 8 //
#define VRAM_G_CNT_SHIFT 16 //
#define VRAM_H_CNT_SHIFT 0 //
#define VRAM_I_CNT_SHIFT 8 //
#define WRAM_CNT_SHIFT 24 // 内部ワークRAM
#define VRAM_AB_CNT_SHIFT 0 //
#define VRAM_CD_CNT_SHIFT 16 //
#define VRAM_EF_CNT_SHIFT 0 //
#define VRAM_G_W_CNT_SHIFT 16 // 内部ワークRAM
#define VRAM_HI_CNT_SHIFT 0 //
// 構造体メンバ用定数
#define ST_VRAM_LCDC_MODE 0 // モード
#define ST_VRAM_BG_MODE 1 // モード
#define ST_VRAM_OBJ_MODE 2 // モード(A,B,E~Gのみ可)
#define ST_VRAM_SUBP_MODE 2 // サブプロセッサ モード(C,Dのみ可)
#define ST_VRAM_TEX_MODE 3 // テクスチャ モード(A~Dのみ可)
#define ST_VRAM_TEXPLTT_MODE 3 // テクスチャパレット モード(E~Gのみ可)
#define ST_VRAM_BGPLTT_MODE 4 // BGパレット モード(E~Gのみ可)
#define ST_VRAM_OBJPLTT_MODE 5 // OBJパレット モード(F,Gのみ可)
#define ST_VRAM_TEX_SLOT_0 0 // テクスチャ スロット0
#define ST_VRAM_TEX_SLOT_1 1 //
#define ST_VRAM_TEX_SLOT_2 2 //
#define ST_VRAM_TEX_SLOT_3 3 //
#define ST_VRAM_TEXPLTT_SLOT_0_3 0 // テクスチャパレット スロット0-3
#define ST_VRAM_TEXPLTT_SLOT_0 0 //
#define ST_VRAM_TEXPLTT_SLOT_1 1 //
#define ST_VRAM_TEXPLTT_SLOT_4 2 //
#define ST_VRAM_TEXPLTT_SLOT_5 3 //
#define ST_VRAM_BGPLTT_SLOT_0_3 0 // BGパレット スロット0-3
#define ST_VRAM_BGPLTT_SLOT_0_1 0 //
#define ST_VRAM_BGPLTT_SLOT_2_3 1 //
#define ST_WRAM_MAINP_ALL 0 // 共有内部ワークRAMブロック0・1 → メインプロセッサ
#define ST_WRAM_MAINP_B1_SUBP_B0 1 // ブロック1 → メインプロセッサ
// ブロック0 → サブプロセッサ
#define ST_WRAM_MAINP_B0_SUBP_B1 2 // ブロック0 → メインプロセッサ
// ブロック1 → サブプロセッサ
#define ST_WRAM_SUBP_ALL 3 // ブロック0・1 → サブプロセッサ
//----------------------------------------------------------------------
// 表示コントロール
//----------------------------------------------------------------------
#define DISP_BG_MODE_MASK 0x00000007 // BGモード
#define DISP_ON_MASK 0x00001f00 // OBJ・BG
#define DISP_WIN_MASK 0x00006000 // ウインドウ
#define DISP_OBJ_BMP_MAP_MASK 0x00000060 // OBJビットマップデータ マッピングタイプ
#define DISP_MODE_MASK 0x00030000 // 表示モード
#define DISP_VRAM_MASK 0x000c0000 // 表示VRAM選択
#define DISP_OBJ_VRAM_SIZE_MASK 0x00700000 // OBJ用VRAMサイズ
#define DISP_BGCHBASE_OFS_MASK 0x07000000 // BGキャラクタデータベースアドレス・オフセット
#define DISP_BGSCBASE_OFS_MASK 0x38000000 // BGスクリーンデータベースアドレス・オフセット
#define DISP_BG_MODE_SHIFT 0
#define DISP_ON_SHIFT 8
#define DISP_WIN_SHIFT 13
#define DISP_MODE_SHIFT 16
#define DISP_OBJ_BMP_MAP_SHIFT 5
#define DISP_VRAM_SHIFT 18
#define DISP_OBJ_VRAM_SIZE_SHIFT 20
#define DISP_BGCHBASE_OFS_SHIFT 24
#define DISP_BGSCBASE_OFS_SHIFT 27
#define DISP_BG_MODE_0 0x00000000 // BGモード0(ノーマルx4)
#define DISP_BG_MODE_N4 0x00000000
#define DISP_BG_MODE_1 0x00000001 // BGモード1(ノーマルx3、アフィンx1)
#define DISP_BG_MODE_N3A1 0x00000001
#define DISP_BG_MODE_2 0x00000002 // BGモード2(ノーマルx2、アフィンx2)
#define DISP_BG_MODE_N2A2 0x00000002
#define DISP_BG_MODE_3 0x00000003 // BGモード3(ノーマルx3、アフィン拡張x1)
#define DISP_BG_MODE_N3E1 0x00000003
#define DISP_BG_MODE_4 0x00000004 // BGモード4(ノーマルx2、アフィンx1、アフィン拡張x1)
#define DISP_BG_MODE_N2A1E1 0x00000004
#define DISP_BG_MODE_5 0x00000005 // BGモード5(ノーマルx2、アフィン拡張x2)
#define DISP_BG_MODE_N2E2 0x00000005
#define DISP_BG_MODE_6 0x00000006 // BGモード6(3D固定x1、大画面ビットマップx1)
#define DISP_BG_MODE_3D1W1 0x00000006
#define DISP_BG0_3D_ON 0x00000008 // BG0へ3Dを表示
#define DISP_OBJ_CHAR_2D_MAP 0x00000000 // OBJキャラクタデータ 2Dマッピング
#define DISP_OBJ_CHAR_1D_MAP 0x00000010 // OBJキャラクタデータ 1Dマッピング
#define DISP_OBJ_BMP_H128_MAP 0x00000000 // OBJビットマップデータ 横128ドット2Dマッピング
#define DISP_OBJ_BMP_H256_MAP 0x00000020 // OBJビットマップデータ 横256ドット2Dマッピング
#define DISP_OBJ_BMP_1D_MAP 0x00000040 // OBJビットマップデータ 1Dマッピング
#define DISP_OBJ_BMP_VRAM_128KB 0x00000000 // OBJビットマップデータVRAM128KByte
#define DISP_OBJ_BMP_VRAM_256KB 0x00400000 //
#define DISP_OBJ_HOFF 0x00800000 // Hブランク中OBJ処理
#define DISP_LCDC_OFF 0x00000080 //
#define DISP_BG0_ON 0x00000100 //
#define DISP_BG1_ON 0x00000200 //
#define DISP_BG2_ON 0x00000400 //
#define DISP_BG3_ON 0x00000800 //
#define DISP_BG_ALL_ON 0x00000f00 // BG全部
#define DISP_OBJ_ON 0x00001000 //
#define DISP_OBJ_BG_ALL_ON 0x00001f00 // OBJ・BG全部
#define DISP_WIN0_ON 0x00002000 // ウインドウ0
#define DISP_WIN1_ON 0x00004000 // ウインドウ1
#define DISP_WIN01_ON 0x00006000 // ウインドウ0・1
#define DISP_OBJWIN_ON 0x00008000 // OBJウインドウ
#define DISP_WIN_ALL_ON 0x0000e000 // ウインドウ全部
#define DISP_ALL_ON 0x00007f00 // 全部
#define DISP_OFF_MODE 0x00000000 // 表示OFF
#define DISP_GFX_MODE 0x00010000 // グラフィックス表示モード
#define DISP_VRAM_MODE 0x00020000 // VRAM表示モード
#define DISP_MMEM_MODE 0x00030000 // メインメモリ表示モード
#define DISP_VRAM_A 0x00000000 // VRAM-A表示
#define DISP_VRAM_B 0x00040000 // VRAM-B表示
#define DISP_VRAM_C 0x00080000 // VRAM-C表示
#define DISP_VRAM_D 0x000c0000 // VRAM-D表示
#define DISP_OBJ_CHAR_VRAM_32KB 0x00000000 // OBJ用VRAM32KByte
#define DISP_OBJ_CHAR_VRAM_64KB 0x00100000 //
#define DISP_OBJ_CHAR_VRAM_128KB 0x00200000 //
#define DISP_OBJ_CHAR_VRAM_256KB 0x00300000 //
#define DISP_BGPLTT_EX 0x40000000 // BGパレット拡張
#define DISP_OBJPLTT_EX 0x80000000 // OBJパレット拡張
// 構造体メンバ用定数
#define ST_DISP_OBJ_CHAR_2D_MAP 0 // OBJキャラクタデータ 2Dマッピング
#define ST_DISP_OBJ_CHAR_1D_MAP 1 // OBJキャラクタデータ 1Dマッピング
#define ST_DISP_OBJ_BMP_H128_MAP 0 // OBJビットマップデータ 横128ドット2Dマッピング
#define ST_DISP_OBJ_BMP_H256_MAP 1 // OBJビットマップデータ 横256ドット2Dマッピング
#define ST_DISP_OBJ_BMP_1D_MAP 2 // OBJビットマップデータ 1Dマッピング
#define ST_DISP_OFF_MODE 0 // 表示OFF
#define ST_DISP_GFX_MODE 1 // グラフィックス表示モード
#define ST_DISP_VRAM_MODE 2 // VRAM表示モード
#define ST_DISP_MMEM_MODE 3 // メインメモリ表示モード
#define ST_DISP_VRAM_A 0 // VRAM-A表示
#define ST_DISP_VRAM_B 1 // VRAM-B表示
#define ST_DISP_VRAM_C 2 // VRAM-C表示
#define ST_DISP_VRAM_D 3 // VRAM-D表示
//----------------------------------------------------------------------
// 表示ステータス
//----------------------------------------------------------------------
#define DPSTAT_V_SET_LO_MASK 0xff00 // Vカウンタ比較値設定
#define DPSTAT_V_SET_D8 0x0080 // Vカウンタ比較値設定8ビット目
#define DPSTAT_V_SET_LO_SHIFT 8
#define DPSTAT_V_BLANK 0x0001 // Vブランク期間中
#define DPSTAT_H_BLANK 0x0002 // Hブランク期間中
#define DPSTAT_V_COUNT 0x0004 // Vカウンタ一致中
#define DPSTAT_V_BLANK_IF_ENABLE 0x0008 // Vブランク割り込み要求 許可
#define DPSTAT_H_BLANK_IF_ENABLE 0x0010 // Hブランク割り込み要求 許可
#define DPSTAT_V_COUNT_IF_ENABLE 0x0020 // Vカウンタ一致割り込み要求 許可
//----------------------------------------------------------------------
// 3D表示コントロール
//----------------------------------------------------------------------
#define DISP3D_FOG_INDEX_MASK 0x00000f00 // フォグ インデックス範囲
#define DISP3D_FOG_INDEX_SHIFT 8
#define DISP3D_TEX_MASTER_ON 0x00000001 // テクスチャマスタ
#define DISP3D_SHADING_EX 0x00000002 // 拡張シェーディングモード設定
#define DISP3D_TOON_MODE 0x00000000 // トゥーンシェーディングモード
#define DISP3D_HIGHLIGHT_MODE 0x00000002 // ハイライトシェーディングモード
#define DISP3D_ALPHA_TEST_ON 0x00000004 // アルファテスト
#define DISP3D_ALPHA_BLEND_ON 0x00000008 // アルファブレンド
#define DISP3D_ANTI_ALIASING_ON 0x00000010 // アンチエリアシング
#define DISP3D_EDGE_MARKING_ON 0x00000020 // エッジマーキング
#define DISP3D_FOG_MODE 0x00000040 // フォグモード
#define DISP3D_RGBA_FOG_MODE 0x00000000 // RGBAフォグモード
#define DISP3D_ALPHA_FOG_MODE 0x00000040 // αフォグモード
#define DISP3D_FOG_MASTER_ON 0x00000080 // フォグマスタ
#define DISP3D_CLEAR_IMAGE_ON 0x00004000 // クリアイメージ
#define DISP3D_RENDER_OVER 0x00001000 // レンダリング オーバーフロー
#define DISP3D_GEOMETRY_OVER 0x00002000 // ジオメトリ オーバーフロー
// 構造体メンバ用定数
#define ST_DISP3D_TOON_MODE 0 // トゥーンシェーディングモード
#define ST_DISP3D_HIGHLIGHT_MODE 1 // ハイライトシェーディングモード
#define ST_DISP3D_RGBA_FOG_MODE 0 // RGBAフォグモード
#define ST_DISP3D_ALPHA_FOG_MODE 1 // αフォグモード
//----------------------------------------------------------------------
// 表示キャプチャ
//----------------------------------------------------------------------
#define DPCAP_GFX_WEIGHT_MASK 0x0000001f // グラフィックス側のブレンド係数
#define DPCAP_RAM_WEIGHT_MASK 0x00001f00 // RAM側のブレンド係数
#define DPCAP_DEST_OFFSET_MASK 0x000c0000 // 書き込みVRAMアドレス・オフセット
#define DPCAP_SIZE_MASK 0x00300000 // キャプチャサイズ
#define DPCAP_SRC_OFFSET_MASK 0x0c000000 // 読み込みVRAMアドレス・オフセット
#define DPCAP_BLEND_MODE_MASK 0x60000000 // ブレンドモード
#define DPCAP_GFX_WEIGHT_SHIFT 0
#define DPCAP_RAM_WEIGHT_SHIFT 8
#define DPCAP_DEST_OFFSET_SHIFT 18
#define DPCAP_SIZE_SHIFT 20
#define DPCAP_SRC_OFFSET_SHIFT 26
#define DPCAP_BLEND_MODE_SHIFT 29
#define DPCAP_DEST_VRAM_MASK 0x00030000 // キャプチャデータ書き込みVRAM選択
#define DPCAP_DEST_VRAM_SHIFT 16
#define DPCAP_DEST_VRAM_A 0x00000000 // VRAM-A書き込み
#define DPCAP_DEST_VRAM_B 0x00010000 // VRAM-B書き込み
#define DPCAP_DEST_VRAM_C 0x00020000 // VRAM-C書き込み
#define DPCAP_DEST_VRAM_D 0x00030000 // VRAM-D書き込み
#define DPCAP_SIZE_128x128 0x00000000 // 128x128ドット
#define DPCAP_SIZE_256x64 0x00100000 // 64ドット
#define DPCAP_SIZE_256x128 0x00200000 // 256x128ドット
#define DPCAP_SIZE_256x192 0x00300000 // 256x256ドット
#define DPCAP_GFXSRC_FULL 0x00000000 // 2D&3Dグラフィックス読み込み
#define DPCAP_GFXSRC_3D 0x01000000 // 3Dグラフィックスのみ読み込み
#define DPCAP_RAMSRC_VRAM 0x00000000 // VRAM読み込み
#define DPCAP_RAMSRC_MMEM 0x02000000 // メインメモリ読み込み
#define DPCAP_BLEND_GFX 0x00000000 // グラフィックス側のみキャプチャ
#define DPCAP_BLEND_RAM 0x20000000 // RAM側のみキャプチャ
#define DPCAP_BLEND_GFX_RAM 0x40000000 // グラフィックス側とRAM側をブレンディングしてキャプチャ
#define DPCAP_ENABLE 0x80000000 // 表示キャプチャ イネーブル
//----------------------------------------------------------------------
// マスター輝度 コントロール
//----------------------------------------------------------------------
#define MSBRT_VALUE_MASK 0x001f // 輝度係数
#define MSBRT_MODE_MASK 0xc000 // 輝度モード
#define MSBRT_VALUE_SHIFT 0
#define MSBRT_MODE_SHIFT 14
#define MSBRT_NORMAL_MODE 0x0000 // ノーマルモード
#define MSBRT_UP_MODE 0x4000 // 輝度UPモード
#define MSBRT_DOWN_MODE 0x8000 // 輝度DOWNモード
//----------------------------------------------------------------------
// ブレンド コントロール
//----------------------------------------------------------------------
#define BLD_PIXEL_MASK 0x003f // ピクセル選択
#define BLD_1ST_PIXEL_MASK 0x003f // 1stピクセル選択
#define BLD_MODE_MASK 0x00c0 // ブレンドモード
#define BLD_2ND_PIXEL_MASK 0x3f00 // 2ndピクセル選択
#define BLD_1ST_PIXEL_SHIFT 0
#define BLD_MODE_SHIFT 6
#define BLD_2ND_PIXEL_SHIFT 8
#define BLD_BG0 0x0001 // ピクセル選択
#define BLD_BG1 0x0002 // ピクセル選択
#define BLD_BG2 0x0004 // ピクセル選択
#define BLD_BG3 0x0008 // ピクセル選択
#define BLD_OBJ 0x0010 // ピクセル選択
#define BLD_BD 0x0020 // 背景色 ピクセル選択
#define BLD_ALL 0x003f // ピクセル全選択
#define BLD_BG0_1ST 0x0001 // 1stピクセル選択
#define BLD_BG1_1ST 0x0002 // 1stピクセル選択
#define BLD_BG2_1ST 0x0004 // 1stピクセル選択
#define BLD_BG3_1ST 0x0008 // 1stピクセル選択
#define BLD_OBJ_1ST 0x0010 // 1stピクセル選択
#define BLD_BD_1ST 0x0020 // 背景色 1stピクセル選択
#define BLD_1ST_ALL 0x003f // 1stピクセル全選択
#define BLD_NORMAL_MODE 0x0000 // ノーマルモード
#define BLD_A_BLEND_MODE 0x0040 // 半透明モード
#define BLD_UP_MODE 0x0080 // 輝度UPモード
#define BLD_DOWN_MODE 0x00c0 // 輝度DOWNモード
#define BLD_BG0_2ND 0x0100 // 2ndピクセル選択
#define BLD_BG1_2ND 0x0200 // 2ndピクセル選択
#define BLD_BG2_2ND 0x0400 // 2ndピクセル選択
#define BLD_BG3_2ND 0x0800 // 2ndピクセル選択
#define BLD_OBJ_2ND 0x1000 // 2ndピクセル選択
#define BLD_BD_2ND 0x2000 // 背景色 2ndピクセル選択
#define BLD_2ND_ALL 0x3f00 // 2ndピクセル全選択
#define BLD_A_MASK 0x001f // ブレンド係数
#define BLD_B_MASK 0x1f00 // ブレンド係数
#define BLD_Y_MASK 0x001f // ブレンド係数
#define BLD_A_SHIFT 16
#define BLD_B_SHIFT 24
#define BLD_Y_SHIFT 0
// 構造体メンバ用定数
#define ST_BLD_NORMAL_MODE 0 // ノーマルモード
#define ST_BLD_A_BLEND_MODE 1 // 半透明モード
#define ST_BLD_UP_MODE 2 // 輝度UPモード
#define ST_BLD_DOWN_MODE 3 // 輝度DOWNモード
//----------------------------------------------------------------------
// ウインドウ コントロール
//----------------------------------------------------------------------
#define WIN_END_POS_MASK 0x00ff // ウインドウ終了点
#define WIN_START_POS_MASK 0xff00 // ウインドウ開始点
#define WIN_END_POS_SHIFT 0
#define WIN_START_POS_SHIFT 8
#define WIN_BG0_ON 0x0001 //
#define WIN_BG1_ON 0x0002 //
#define WIN_BG2_ON 0x0004 //
#define WIN_BG3_ON 0x0008 //
#define WIN_OBJ_ON 0x0010 //
#define WIN_BLEND_ON 0x0020 // ブレンド
#define WIN_ALL_ON 0x003f // 全部
//----------------------------------------------------------------------
// モザイク コントロール
//----------------------------------------------------------------------
#define MOS_H_SIZE_MASK 0x000f // モザイク高さ
#define MOS_V_SIZE_MASK 0x00f0 // モザイク幅
#define MOS_BG_H_SIZE_MASK 0x000f // BGモザイク高さ
#define MOS_BG_V_SIZE_MASK 0x00f0 // BGモザイク幅
#define MOS_OBJ_H_SIZE_MASK 0x000f // OBJモザイク高さ
#define MOS_OBJ_V_SIZE_MASK 0x00f0 // OBJモザイク幅
#define MOS_H_SIZE_SHIFT 0
#define MOS_V_SIZE_SHIFT 4
#define MOS_BG_H_SIZE_SHIFT 0
#define MOS_BG_V_SIZE_SHIFT 4
#define MOS_OBJ_H_SIZE_SHIFT 8
#define MOS_OBJ_V_SIZE_SHIFT 12
//----------------------------------------------------------------------
// BGコントロール
//----------------------------------------------------------------------
#define BG_PRIORITY_MASK 0x0003 // BG間優先順位
#define BG_CHAR_BASE_MASK 0x003c // キャラクタ ベースアドレス
#define BG_SCREEN_BASE_MASK 0x1f00 // スクリーン ベースアドレス
#define BG_SCREEN_SIZE_MASK 0xc000 // スクリーンサイズ(256/512)
#define BG_PRIORITY_SHIFT 0
#define BG_CHAR_BASE_SHIFT 2
#define BG_SCREEN_BASE_SHIFT 8
#define BG_SCREEN_SIZE_SHIFT 14
#define BG_PRIORITY_0 0x0000 // BG第0優先
#define BG_PRIORITY_1 0x0001 // BG第1優先
#define BG_PRIORITY_2 0x0002 // BG第2優先
#define BG_PRIORITY_3 0x0003 // BG第3優先
#define BG_MOS_ON 0x0040 // モザイク
#define BG_MOS_OFF 0x0000 // モザイク
#define BG_COLOR_16 0x0000 // 16色 選択
#define BG_COLOR_256 0x0080 // 256色 選択
#define BG_CHAR_16 0x0000 // 16色キャラクタBG
#define BG_CHAR_256 0x0080 // 256色キャラクタBG
#define BGE_CHAR_256x16 0x0000 // 256色x16パレットキャラクタBG
#define BGE_BMP_256 0x0080 // 256色ビットマップBG
#define BGE_BMP_DIRECT 0x0084 // ダイレクトカラービットマップBG
#define BG_LOOP_ON 0x2000 // ループ
#define BG_LOOP_OFF 0x0000 // ループ
#define BG_EXPLTT_SLOT_0 0x0000 // 拡張パレットスロット0へ割り当て
#define BG_EXPLTT_SLOT_1 0x0000 // スロット1
#define BG_EXPLTT_SLOT_2 0x2000 // スロット2
#define BG_EXPLTT_SLOT_3 0x2000 // スロット3
#define BG_SCREEN_SIZE_0 0x0000 // スクリーンサイズ(256x256)
#define BG_SCREEN_SIZE_1 0x4000 // スクリーンサイズ(512x256)
#define BG_SCREEN_SIZE_2 0x8000 // スクリーンサイズ(256x512)
#define BG_SCREEN_SIZE_3 0xc000 // スクリーンサイズ(512x512)
// 構造体メンバ用定数
#define ST_BG_COLOR_16 0 // 16色 選択
#define ST_BG_COLOR_256 1 // 256色 選択
//----------------------------------------------------------------------
// ビューポート
//----------------------------------------------------------------------
#define VIEWPORT_START_X_MASK 0x000000ff // スタート X座標
#define VIEWPORT_START_Y_MASK 0x0000ff00 // Y座標
#define VIEWPORT_END_X_MASK 0x00ff0000 // エンド X座標
#define VIEWPORT_END_Y_MASK 0xff000000 // Y座標
#define VIEWPORT_START_X_SHIFT 0
#define VIEWPORT_START_Y_SHIFT 8
#define VIEWPORT_END_X_SHIFT 16
#define VIEWPORT_END_Y_SHIFT 24
//----------------------------------------------------------------------
// ラインバッファ クリア
//----------------------------------------------------------------------
#define CLR_ID_MASK 0x3f000000 //
#define CLR_ID_SHIFT 24
#define CLR_FOG_ON 0x00008000 // フォグフラグ
#define CLR_FOG_OFF 0x00000000 // フォグフラグ
//----------------------------------------------------------------------
// ジオメトリコマンド
//----------------------------------------------------------------------
#define GXOP_NOP 0x00 //
#define GXOP_MTX_MODE 0x10 // 行列モード
#define GXOP_MTX_PUSH 0x11 // 行列プッシュ
#define GXOP_MTX_POP 0x12 // 行列ポップ
#define GXOP_MTX_STORE 0x13 // 行列ストア
#define GXOP_MTX_RESTORE 0x14 // 行列リストア
#define GXOP_MTX_IDENTITY 0x15 // 単位行列 初期化
#define GXOP_MTX_LOAD_4x4 0x16 // 行列ロード(4x4)
#define GXOP_MTX_LOAD_4x3 0x17 //
#define GXOP_MTX_MULT_4x4 0x18 // 行列乗算
#define GXOP_MTX_MULT_4x3 0x19 //
#define GXOP_MTX_MULT_3x3 0x1a //
#define GXOP_MTX_SCALE 0x1b // スケール行列乗算(1x3)
#define GXOP_MTX_TRANS 0x1c // 移動行列乗算(1x3)
#define GXOP_POLYGON_ATTR 0x29 // ポリゴン属性
#define GXOP_COLOR 0x20 // 頂点カラー
#define GXOP_NORMAL 0x21 // 頂点法線
#define GXOP_TEXCOORD 0x22 // 頂点テクスチャ座標
#define GXOP_VTX_16 0x23 // 頂点16bit座標
#define GXOP_VTX_10 0x24 // 頂点10bit座標
#define GXOP_VTX_XY 0x25 // 頂点16bitXY座標
#define GXOP_VTX_XZ 0x26 // 頂点16bitXZ座標
#define GXOP_VTX_YZ 0x27 // 頂点16bitYZ座標
#define GXOP_VTX_DIFF 0x28 // 頂点16bit座標差分値
#define GXOP_TEX_PARAM 0x2a // テクスチャパラメータ
#define GXOP_TEXIMAGE_PARAM 0x2a
#define GXOP_TEXPLTT_BASE 0x2b
#define GXOP_BOX_TEST 0x70 // ボックステスト
#define GXOP_POS_TEST 0x71 // 位置テスト
#define GXOP_VEC_TEST 0x72 // ベクトルテスト
#define GXOP_MATERIAL_COLOR_0 0x30 // マテリアルカラー
#define GXOP_MATERIAL_COLOR_1 0x31
#define GXOP_DIF_AMB 0x30 // 拡散光 環境光成分
#define GXOP_SPE_EMI 0x31 // 反射光 放射光成分
#define GXOP_LIGHT_VECTOR 0x32 // ライトベクトル
#define GXOP_LIGHT_COLOR 0x33 // ライトカラー
#define GXOP_SHININESS 0x34 // 鏡面反射輝度
#define GXOP_BEGIN 0x40 // ジオメトリ スタート
#define GXOP_END 0x41 // ジオメトリ エンド
#define GXOP_SWAP_BUFFERS 0x50 // レンダリングエンジン参照データ群のスワップ
#define GXOP_VIEWPORT 0x60 // ビューポート
//----------------------------------------------------------------------
// ジオメトリコマンド パラメータ数
//----------------------------------------------------------------------
#define GXOP_NPARAMS_MAX 32 // 最大数
#define GXOP_NOP_NPARAMS 0 //
#define GXOP_MTX_MODE_NPARAMS 1 // 行列モード
#define GXOP_MTX_PUSH_NPARAMS 0 // 行列プッシュ
#define GXOP_MTX_POP_NPARAMS 1 // 行列ポップ
#define GXOP_MTX_STORE_NPARAMS 1 // 行列ストア
#define GXOP_MTX_RESTORE_NPARAMS 1 // 行列リストア
#define GXOP_MTX_IDENTITY_NPARAMS 0 // 単位行列 初期化
#define GXOP_MTX_LOAD_4x4_NPARAMS 16 // 行列ロード(4x4)
#define GXOP_MTX_LOAD_4x3_NPARAMS 12 //
#define GXOP_MTX_MULT_4x4_NPARAMS 16 // 行列乗算
#define GXOP_MTX_MULT_4x3_NPARAMS 12 //
#define GXOP_MTX_MULT_3x3_NPARAMS 9 //
#define GXOP_MTX_SCALE_NPARAMS 3 // スケール行列乗算(1x3)
#define GXOP_MTX_TRANS_NPARAMS 3 // 移動行列乗算(1x3)
#define GXOP_POLYGON_ATTR_NPARAMS 1 // ポリゴン属性
#define GXOP_COLOR_NPARAMS 1 // 頂点カラー
#define GXOP_NORMAL_NPARAMS 1 // 頂点法線
#define GXOP_TEXCOORD_NPARAMS 1 // 頂点テクスチャ座標
#define GXOP_VTX_16_NPARAMS 2 // 頂点16bit座標
#define GXOP_VTX_10_NPARAMS 1 // 頂点10bit座標
#define GXOP_VTX_XY_NPARAMS 1 // 頂点16bitXY座標
#define GXOP_VTX_XZ_NPARAMS 1 // 頂点16bitXZ座標
#define GXOP_VTX_YZ_NPARAMS 1 // 頂点16bitYZ座標
#define GXOP_VTX_DIFF_NPARAMS 1 // 頂点16bit座標差分値
#define GXOP_TEX_PARAM_NPARAMS 1 // テクスチャパラメータ
#define GXOP_TEXIMAGE_PARAM_NPARAMS 1
#define GXOP_TEXPLTT_BASE_NPARAMS 1
#define GXOP_BOX_TEST_NPARAMS 3 // ボックステスト
#define GXOP_POS_TEST_NPARAMS 2 // 位置テスト
#define GXOP_VEC_TEST_NPARAMS 1 // ベクトルテスト
#define GXOP_MATERIAL_COLOR_0_NPARAMS 1 // マテリアルカラー
#define GXOP_MATERIAL_COLOR_1_NPARAMS 1
#define GXOP_DIF_AMB_NPARAMS 1 // 拡散光 環境光成分
#define GXOP_SPE_EMI_NPARAMS 1 // 反射光 放射光成分
#define GXOP_LIGHT_VECTOR_NPARAMS 1 // ライトベクトル
#define GXOP_LIGHT_COLOR_NPARAMS 1 // ライトカラー
#define GXOP_SHININESS_NPARAMS 32 // 鏡面反射輝度
#define GXOP_BEGIN_NPARAMS 1 // ジオメトリ スタート
#define GXOP_END_NPARAMS 0 // ジオメトリ エンド
#define GXOP_SWAP_BUFFERS_NPARAMS 1 // レンダリングエンジン参照データ群のスワップ
#define GXOP_VIEWPORT_NPARAMS 1 // ビューポート
//----------------------------------------------------------------------
// ジオメトリステータス コントロール
//----------------------------------------------------------------------
#define GXSTAT_POSVEC_STACK_MASK 0x00001f00 // 位置&ベクトルマトリックス スタックレベル
#define GXSTAT_FIFO_COUNT_MASK 0x00ff0000 // コマンドFIFO 残量
#define GXSTAT_FIFO_INTR_MASK 0xc0000000 // 割り込みタイプ
#define GXSTAT_POSVEC_STACK_SHIFT 8
#define GXSTAT_FIFO_COUNT_SHIFT 16
#define GXSTAT_FIFO_INTR_SHIFT 30
#define GXSTAT_TEST_BUSY 0x00000001 // BOX/頂点/ベクタテスト ビジー
#define GXSTAT_BOX_IN_VIEW 0x00000002 // BOXの一部が視体積内
#define GXSTAT_PROJ_STACK_LEVEL 0x00002000 // プロジェクションマトリックス スタックレベル
#define GXSTAT_MTX_STACK_BUSY 0x00004000 // マトリックススタック ビジー
#define GXSTAT_MTX_STACK_ERROR 0x00008000 // マトリックススタック エラー
#define GXSTAT_GEOMETRY_BUSY 0x08000000 // ジオメトリエンジン ビジー
#define GXSTAT_FIFO_FULL 0x01000000 // コマンドFIFO フル
#define GXSTAT_FIFO_UNDER_HALF 0x02000000 // ハーフ以下
#define GXSTAT_FIFO_EMPTY 0x04000000 // エンプティ
#define GXSTAT_FIFO_FULL_INTR 0x00000000 // フルで割り込み
#define GXSTAT_FIFO_HALF_INTR 0x40000000 // ハーフ以下で割り込み
#define GXSTAT_FIFO_EMPTY_INTR 0x80000000 // エンプティで割り込み
//----------------------------------------------------------------------
// ジオメトリRAMスワップ コントロール
//----------------------------------------------------------------------
#define SWPBF_XLU_AUTO_YSORT 0x00000000 // 半透明ポリゴン オートYソート
#define SWPBF_XLU_MANUAL_SORT 0x00000001 // マニュアルソート
#define SWPBF_Z_BUFFERING 0x00000000 // Zバッファリング
#define SWPBF_W_BUFFERING 0x00000002 // Wバッファリング
//----------------------------------------------------------------------
// 行列モード コントロール
//----------------------------------------------------------------------
#define MTX_MODE_MASK 0x00000003 // 行列モード
#define MTX_MODE_SHIFT 0
#define MTX_PROJECTION_MODE 0x00000000 // プロジェクション行列
#define MTX_POSITION_MODE 0x00000001 // 位置座標行列
#define MTX_POSITION_VECTOR_MODE 0x00000002 // 位置座標&方向ベクトル行列 同時設定
#define MTX_TEXTURE_MODE 0x00000003 // テクスチャ行列
// 構造体メンバ用定数
#define ST_MTX_PROJECTION_MODE 0 // プロジェクション行列
#define ST_MTX_POSITION_MODE 1 // 位置座標行列
#define ST_MTX_POSITION_VECTOR_MODE 2 // 位置座標&方向ベクトル行列 同時設定
#define ST_MTX_TEXTURE_MODE 3 // テクスチャ行列
//----------------------------------------------------------------------
// ライト
//----------------------------------------------------------------------
#define LIGHT_ID_MASK 0xc0000000 //
#define LIGHT_ID_SHIFT 30
//----------------------------------------------------------------------
// マテリアルカラー
//----------------------------------------------------------------------
#define DIFFUSE_SET_COLOR_OFF 0x0000 // ディフューズカラーの頂点カラーへのセット
#define DIFFUSE_SET_COLOR_ON 0x8000 //
#define DIFFUSE_SET_COLOR_SHIFT 15
#define SHININESS_TABLE_OFF 0x0000 // 鏡面反射輝度テーブル
#define SHININESS_TABLE_ON 0x8000 //
#define SHININESS_TABLE_SHIFT 15
//----------------------------------------------------------------------
// ポリゴン属性
//----------------------------------------------------------------------
#define POLYATTR_LIGHT_ON_MASK 0x0000000f // ライトON
#define POLYATTR_RD_MODE_MASK 0x00000030 // レンダリングモード
#define POLYATTR_ALPHA_MASK 0x001f0000 // α値
#define POLYATTR_ID_MASK 0x3f000000 //
#define POLYATTR_LIGHT_ON_SHIFT 0
#define POLYATTR_RD_MODE_SHIFT 4
#define POLYATTR_ALPHA_SHIFT 16
#define POLYATTR_ID_SHIFT 24
#define POLYATTR_LIGHT0_ON 0x00000001 // ライト0
#define POLYATTR_LIGHT1_ON 0x00000002 // ライト1
#define POLYATTR_LIGHT2_ON 0x00000004 // ライト2
#define POLYATTR_LIGHT3_ON 0x00000008 // ライト3
#define POLYATTR_LIGHT_ALL_ON 0x0000000f // 全ライト
#define POLYATTR_MODULATE 0x00000000 // モジュレーションモード
#define POLYATTR_DECAL 0x00000010 // デカールモード
#define POLYATTR_TOON 0x00000020 // トゥーン/ハイライトシェーディングモード
#define POLYATTR_HIGHLIGHT 0x00000020
#define POLYATTR_SHADOW 0x00000030 // シャドウポリゴンモード
#define POLYATTR_BACK_OFF 0x00000000 // 裏面
#define POLYATTR_BACK_ON 0x00000040 //
#define POLYATTR_FRONT_OFF 0x00000000 // 表面
#define POLYATTR_FRONT_ON 0x00000080 //
#define POLYATTR_XLU_DEPTH_OFF 0x00000000 // 半透明ポリゴンのデプスバッファ更新
#define POLYATTR_XLU_DEPTH_ON 0x00000800 //
#define POLYATTR_FAR_REJECT 0x00000000 // FARリジェクト
#define POLYATTR_FAR_CLIPPING 0x00001000 // FARクリッピング
#define POLYATTR_DISP_1DOT 0x00002000 // 1ドット時表示
#define POLYATTR_DEPTH_LESS 0x00000000 // デプスバッファ値より小さい時描画
#define POLYATTR_DEPTH_EQUAL 0x00004000 // デプスバッファ値と等しい時描画
#define POLYATTR_FOG_OFF 0x00000000 // フォグ
#define POLYATTR_FOG_ON 0x00008000 //
// 構造体メンバ用定数
#define ST_POLYATTR_MODULATE 0 // モジュレーションモード
#define ST_POLYATTR_DECAL 1 // デカールモード
#define ST_POLYATTR_TOON 2 // トゥーン/ハイライトモード
#define ST_POLYATTR_HIGHLIGHT 2
#define ST_POLYATTR_SHADOW 3 // シャドウポリゴンモード
#define ST_POLYATTR_DEPTH_LESS 0 // デプスバッファ値より小さい時描画
#define ST_POLYATTR_DEPTH_EQUAL 1 // デプスバッファ値と等しい時描画
//----------------------------------------------------------------------
// コントロール
//----------------------------------------------------------------------
#define BEGIN_PRIM_TYPE_MASK 0x00000003 // プリミティブタイプ
#define BEGIN_PRIM_TYPE_SHIFT 0
#define BEGIN_TRIANGLES 0x00000000 // 三角形ポリゴン
#define BEGIN_QUADS 0x00000001 // 四角形ポリゴン
#define BEGIN_TRIANGLE_STRIP 0x00000002 // 連結三角形ポリゴン
#define BEGIN_QUAD_STRIP 0x00000003 // 連結四角形ポリゴン
// 構造体メンバ用定数
#define ST_BEGIN_TRIANGLES 0 // 三角形ポリゴン
#define ST_BEGIN_QUADS 1 // 四角形ポリゴン
#define ST_BEGIN_TRIANGLE_STRIP 2 // 連結三角形ポリゴン
#define ST_BEGIN_QUAD_STRIP 3 // 連結四角形ポリゴン
//----------------------------------------------------------------------
// テクスチャ パラメータ
//----------------------------------------------------------------------
#define TEX_IMAGE_BASE_MASK 0x0000ffff // イメージベースアドレス
#define TEX_S_SIZE_MASK 0x00700000 // Sサイズ
#define TEX_T_SIZE_MASK 0x03800000 // Tサイズ
#define TEX_FORMAT_MASK 0x1c000000 // フォーマット
#define TEX_GEN_MODE_MASK 0xc0000000 // テクスチャ座標変換モード
#define TEX_ADDR_SHIFT 0
#define TEX_S_SIZE_SHIFT 20
#define TEX_T_SIZE_SHIFT 23
#define TEX_FORMAT_SHIFT 26
#define TEX_GEN_MODE_SHIFT 30
#define TEX_IMAGE_BASE_SHIFT 3
#define TEX_ST_REPEAT_ON 0x00030000 // STリピート
#define TEX_ST_REPEAT_OFF 0x00000000 //
#define TEX_S_REPEAT_ON 0x00010000 // Sリピート
#define TEX_S_REPEAT_OFF 0x00000000 //
#define TEX_T_REPEAT_ON 0x00020000 // Tリピート
#define TEX_T_REPEAT_OFF 0x00000000 //
#define TEX_ST_FLIP_ON 0x000c0000 // STフリップ
#define TEX_ST_FLIP_OFF 0x00000000 //
#define TEX_S_FLIP_ON 0x00040000 // Sフリップ
#define TEX_S_FLIP_OFF 0x00000000 //
#define TEX_T_FLIP_ON 0x00080000 // Tフリップ
#define TEX_T_FLIP_OFF 0x00000000 //
#define TEX_S_SIZE_8 0x00000000 // Sサイズ 8テクセル
#define TEX_S_SIZE_16 0x00100000 // 16テクセル
#define TEX_S_SIZE_32 0x00200000 // 32テクセル
#define TEX_S_SIZE_64 0x00300000 // 64テクセル
#define TEX_S_SIZE_128 0x00400000 // 128テクセル
#define TEX_S_SIZE_256 0x00500000 // 256テクセル
#define TEX_S_SIZE_512 0x00600000 // 512テクセル
#define TEX_S_SIZE_1024 0x00700000 // 1024テクセル
#define TEX_T_SIZE_8 0x00000000 // Tサイズ 8テクセル
#define TEX_T_SIZE_16 0x00800000 // 16テクセル
#define TEX_T_SIZE_32 0x01000000 // 32テクセル
#define TEX_T_SIZE_64 0x01800000 // 64テクセル
#define TEX_T_SIZE_128 0x02000000 // 128テクセル
#define TEX_T_SIZE_256 0x02800000 // 256テクセル
#define TEX_T_SIZE_512 0x03000000 // 512テクセル
#define TEX_T_SIZE_1024 0x03800000 // 1024テクセル
#define TEX_FORMAT_NONE 0x00000000 // テクスチャ無し
#define TEX_FORMAT_4PLTT 0x08000000 // 4色パレットテクスチャ
#define TEX_FORMAT_16PLTT 0x0c000000 // 16色パレットテクスチャ
#define TEX_FORMAT_256PLTT 0x10000000 // 256色パレットテクスチャ
#define TEX_FORMAT_4x4COMP 0x14000000 // 4x4圧縮テクスチャ
#ifdef IRIS_TS
#define TEX_FORMAT_ALPHA3 0x04000000 // 3bitαテクスチャ
#endif
#define TEX_FORMAT_ALPHA5 0x18000000 // 5bitαテクスチャ
#define TEX_FORMAT_DIRECT 0x1c000000 // カラーダイレクトテクスチャ
#define TEX_PLTT0_OFF 0x20000000 // カラーパレット0
#define TEX_PLTT0_ON 0x00000000 //
#define TEX_PLTT0_XLU 0x20000000 // 透明(α=0)
#define TEX_GEN_DIRECT 0x00000000 // 座標変換無し
#define TEX_GENSRC_TEXCOORD 0x40000000 // 座標変換ソース
#define TEX_GENSRC_NORMAL 0x80000000 //
#define TEX_GENSRC_VERTEX 0xc0000000 //
// 構造体メンバ用定数
#define ST_TEX_SIZE_8 0 // テクスチャサイズ 8テクセル
#define ST_TEX_SIZE_16 1 // 16テクセル
#define ST_TEX_SIZE_32 2 // 32テクセル
#define ST_TEX_SIZE_64 3 // 64テクセル
#define ST_TEX_SIZE_128 4 // 128テクセル
#define ST_TEX_SIZE_256 5 // 256テクセル
#define ST_TEX_SIZE_512 6 // 512テクセル
#define ST_TEX_SIZE_1024 7 // 1024テクセル
#define ST_TEX_FORMAT_NONE 0 // テクスチャ無し
#define ST_TEX_FORMAT_4PLTT 2 // 4色パレットテクスチャ
#define ST_TEX_FORMAT_16PLTT 3 // 16色パレットテクスチャ
#define ST_TEX_FORMAT_256PLTT 4 // 256色パレットテクスチャ
#define ST_TEX_FORMAT_4x4COMP 5 // 4x4圧縮テクスチャ
#ifdef IRIS_TS
#define ST_TEX_FORMAT_ALPHA3 1 // 3bitαテクスチャ
#endif
#define ST_TEX_FORMAT_ALPHA5 6 // 5bitαテクスチャ
#define ST_TEX_FORMAT_DIRECT 7 // カラーダイレクトテクスチャ
#define ST_TEX_GEN_DIRECT 0 // 座標変換無し
#define ST_TEX_GENSRC_TEXCOORD 1 // 座標変換ソース
#define ST_TEX_GENSRC_NORMAL 2 //
#define ST_TEX_GENSRC_VERTEX 3 //
//----------------------------------------------------------------------
// テクスチャパレットベース
//----------------------------------------------------------------------
#define TEX_PLTT_BASE_MASK 0x00001fff // パレットベースアドレス
#define TEXPLT_BASE_MASK TEX_PLTT_BASE_MASK
#define TEXPLT_FORMAT_NONE 0 // テクスチャパレット無し
#define TEXPLT_FORMAT_4PLTT 2 // 4色パレットテクスチャ
#define TEXPLT_FORMAT_16PLTT 3 // 16色パレットテクスチャ
#define TEXPLT_FORMAT_256PLTT 4 // 256色パレットテクスチャ
#define TEXPLT_FORMAT_4x4COMP 5 // 4x4圧縮テクスチャ
#ifdef IRIS_TS
#define TEXPLT_FORMAT_ALPHA3 1 // 3bitαテクスチャ
#endif
#define TEXPLT_FORMAT_ALPHA5 6 // 5bitαテクスチャ
#define TEXPLT_FORMAT_NONE_SHIFT 0
#define TEXPLT_FORMAT_4PLTT_SHIFT 3
#define TEXPLT_FORMAT_16PLTT_SHIFT 4
#define TEXPLT_FORMAT_256PLTT_SHIFT 4
#define TEXPLT_FORMAT_4x4COMP_SHIFT 4
#ifdef IRIS_TS
#define TEXPLT_FORMAT_ALPHA3_SHIFT 4
#endif
#define TEXPLT_FORMAT_ALPHA5_SHIFT 4
//----------------------------------------------------------------------
// 圧縮テクスチャ パレットインデックス
//----------------------------------------------------------------------
#define TEX4X4_PLTT_INDEX_MASK 0x00003fff // パレットインデックス
#define TEX4X4_PLTT_INDEX_SHIFT 0
#define TEX4X4_DIRECT_PLTT 0x00000000 // 4パレット
#define TEX4X4_LINER_PLTT 0x00008000 // 2パレット→4補間パレット
#define TEX4X4_INDEX_3 0x00000000 // 3インデックス+
#define TEX4X4_INDEX_4 0x00004000 // 4インデックス
//----------------------------------------------------------------------
// DMAコントロール
//----------------------------------------------------------------------
#define DMA_ENABLE 0x80000000 // DMA許可
#define DMA_IF_ENABLE 0x40000000 // 割り込み要求 許可
#define DMA_TIMMING_MASK 0x38000000 // 開始タイミング
#define DMA_COUNT_MASK 0x001fffff // 転送数
#define DMA_TIMMING_SHIFT 27
#define DMA_COUNT_SHIFT 0
#define DMA_TIMMING_IMM 0x00000000 // 直ちに起動
#define DMA_TIMMING_V_BLANK 0x08000000 // Vブランク起動
#define DMA_TIMMING_H_BLANK 0x10000000 // Hブランク起動
#define DMA_TIMMING_DISP 0x18000000 // 表示同期
#define DMA_TIMMING_DISP_MMEM 0x20000000 // メインメモリ表示
#define DMA_TIMMING_CARD 0x28000000 // カード
#define DMA_TIMMING_CARTRIDGE 0x30000000 // カートリッジ
#define DMA_TIMMING_GXFIFO 0x38000000 // ジオメトリFIFO
#define DMA_16BIT_BUS 0x00000000 // バスサイズ16Bit選択
#define DMA_32BIT_BUS 0x04000000 // バスサイズ32Bit選択
#define DMA_CONTINUOUS_ON 0x02000000 // コンティニュアスモード
#define DMA_SRC_INC 0x00000000 // 転送元 インクリメント 選択
#define DMA_SRC_DEC 0x00800000 // 転送元 デクリメント 選択
#define DMA_SRC_FIX 0x01000000 // 転送元 固定 選択
#define DMA_DEST_INC 0x00000000 // 転送先 インクリメント 選択
#define DMA_DEST_DEC 0x00200000 // 転送先 デクリメント 選択
#define DMA_DEST_FIX 0x00400000 // 転送先 固定 選択
#define DMA_DEST_RELOAD 0x00600000 // 転送先 インクリメント/リロード 選択
// 構造体メンバ用定数
#define ST_DMA_TIMMING_IMM 0 // 直ちに起動
#define ST_DMA_TIMMING_V_BLANK 1 // Vブランク起動
#define ST_DMA_TIMMING_H_BLANK 2 // Hブランク起動
#define ST_DMA_TIMMING_DISP 3 // 表示起動
#define ST_DMA_TIMMING_DISP_MMEM 4 // メインメモリ表示
#define ST_DMA_TIMMING_CARD 5 // カード
#define ST_DMA_TIMMING_CARTRIDGE 6 // カートリッジ
#define ST_DMA_TIMMING_GXFIFO 7 // ジオメトリFIFO
#define ST_DMA_16BIT_BUS 0 // バスサイズ16Bit選択
#define ST_DMA_32BIT_BUS 1 // バスサイズ32Bit選択
#define ST_DMA_INC 0 // アドレス・インクリメント 選択
#define ST_DMA_DEC 1 // アドレス・デクリメント 選択
#define ST_DMA_FIX 2 // アドレス固定 選択
#define ST_DMA_RELOAD 3 // アドレス・インクリメント/リロード 選択
//----------------------------------------------------------------------
// タイマー コントロール
//----------------------------------------------------------------------
#define TMR_PRESCALER_MASK 0x00030000 // プリスケーラ クロック
#define TMR_PRESCALER_SHIFT 16
#define TMR_PRESCALER_1CK 0x00000000 // プリスケーラ 1分周
#define TMR_PRESCALER_64CK 0x00010000 // 64分周
#define TMR_PRESCALER_256CK 0x00020000 // 256分周
#define TMR_PRESCALER_1024CK 0x00030000 // 1024分周
#define TMR_CONNECT 0x00040000 // 下位タイマー接続
#define TMR_IF_ENABLE 0x00400000 // 割り込み要求 許可
#define TMR_ENABLE 0x00800000 // タイマー起動
// 構造体メンバ用定数
#define ST_TMR_PRESCALER_1CK 0 // プリスケーラ 1分周
#define ST_TMR_PRESCALER_64CK 1 // 64分周
#define ST_TMR_PRESCALER_256CK 2 // 256分周
#define ST_TMR_PRESCALER_1024CK 3 // 1024分周
//----------------------------------------------------------------------
// キー
//----------------------------------------------------------------------
#define BUTTON_MASK 0x030f // ボタン
#define PLUS_KEY_MASK 0x00f0 // 十字キー
#define ALL_KEY_MASK 0x03ff // 全てのキー
#define A_BUTTON 0x0001 // Aボタン
#define B_BUTTON 0x0002 // Bボタン
#define SELECT_BUTTON 0x0004 // セレクトボタン
#define START_BUTTON 0x0008 // スタートボタン
#define R_KEY 0x0010 // 右ボタン
#define L_KEY 0x0020 // 左ボタン
#define U_KEY 0x0040 // 上ボタン
#define D_KEY 0x0080 // 下ボタン
#define R_BUTTON 0x0100 // Rボタン
#define L_BUTTON 0x0200 // Lボタン
#define KEY_IF_ENABLE 0x4000 // 割り込み要求 許可
#define KEY_OR_INTR 0x0000 // 通常キー割り込み
#define KEY_AND_INTR 0x8000 // ANDキー割り込み
// 構造体メンバ用定数
#define ST_KEY_OR_INTR 0 // 通常キー割り込み
#define ST_KEY_AND_INTR 1 // ANDキー割り込み
//----------------------------------------------------------------------
// 外部メモリ コントロール
//----------------------------------------------------------------------
#define CTRDG_DT8_10CYC 0x0000 // カートリッジ 8bitデータバス 10サイクル
#define CTRDG_DT8_8CYC 0x0001 // 8サイクル
#define CTRDG_DT8_6CYC 0x0002 // 6サイクル
#define CTRDG_DT8_18CYC 0x0003 // 18サイクル
#define CTRDG_AD16_1ST_10CYC 0x0000 // カートリッジ AD16バス 10サイクル
#define CTRDG_AD16_1ST_8CYC 0x0004 // 8サイクル
#define CTRDG_AD16_1ST_6CYC 0x0008 // 6サイクル
#define CTRDG_AD16_1ST_18CYC 0x000c // 18サイクル
#define CTRDG_AD16_2ND_6CYC 0x0000 // 6サイクル
#define CTRDG_AD16_2ND_4CYC 0x0010 // 4サイクル
#define CTRDG_PHI_OUT_NONE 0x0000 // φ端子出力クロック Lo固定
#define CTRDG_PHI_OUT_4MCK 0x0020 //
#define CTRDG_PHI_OUT_8MCK 0x0040 //
#define CTRDG_PHI_OUT_16MCK 0x0060 //
#define CTRDG_ACCESS 0x0080 // カートリッジアクセス権選択
#define CTRDG_ACCESS_MAINP 0x0000 // メインプロセッサ
#define CTRDG_ACCESS_SUBP 0x0080 // サブプロセッサ
#define CARD_ACCESS 0x0800 // カードアクセス権選択
#define CARD_ACCESS_MAINP 0x0000 // メインプロセッサ
#define CARD_ACCESS_SUBP 0x0800 // サブプロセッサ
#define MMEM_CE2_OUT 0x2000 // CE2信号出力
#define MMEM_INTF 0x4000 // メインメモリインタフェース(TEGでは常にセットして同期モードにする)
#define MMEM_INTF_ASYNC 0x0000 // 非同期モード
#define MMEM_INTF_SYNC 0x4000 // 同期モード
#define MMEM_PRIORITY 0x8000 // メインメモリ優先権選択
#define MMEM_PRIORITY_MAINP 0x0000 // メインプロセッサ
#define MMEM_PRIORITY_SUBP 0x8000 // サブプロセッサ
// 構造体メンバ用定数
#define ST_CTRDG_DT8_10CYC 0 // カートリッジ 8bitデータバス 10サイクル
#define ST_CTRDG_DT8_8CYC 1 // 8サイクル
#define ST_CTRDG_DT8_6CYC 2 // 6サイクル
#define ST_CTRDG_DT8_18CYC 3 // 18サイクル
#define ST_CTRDG_AD16_1ST_10CYC 0 // カートリッジ AD16バス 10サイクル
#define ST_CTRDG_AD16_1ST_8CYC 1 // 8サイクル
#define ST_CTRDG_AD16_1ST_6CYC 2 // 6サイクル
#define ST_CTRDG_AD16_1ST_18CYC 3 // 18サイクル
#define ST_CTRDG_AD16_2ND_6CYC 0 // 6サイクル
#define ST_CTRDG_AD16_2ND_4CYC 1 // 4サイクル
#define ST_CTRDG_PHI_OUT_NONE 0 // φ端子出力クロック Lo固定
#define ST_CTRDG_PHI_OUT_4MCK 1 //
#define ST_CTRDG_PHI_OUT_8MCK 2 //
#define ST_CTRDG_PHI_OUT_16MCK 3 //
#ifdef __cplusplus
} // extern "C"
#endif
#endif // _IRIS_DEFINE_H