ntr_bootrom/trunk/IrisMainp/include/IrisDefineArm.s

1608 lines
74 KiB
ArmAsm
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.

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