ntr_bootrom/trunk/IrisMainp/include/IrisMemoryMap.h

705 lines
36 KiB
C
Raw 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.

//======================================================================
// IrisMemoryMap.h
// IRIS メモリマップ定数
//
// Copyright (C) 2002-2003 NINTENDO Co.,Ltd.
//======================================================================
#ifndef _IRIS_MEMORY_MAP_H
#define _IRIS_MEMORY_MAP_H
#ifdef __cplusplus
extern "C" {
#endif
#include <IrisTarget.h>
//----------------------------------------------------------------------
// メモリ・マップ
//----------------------------------------------------------------------
#define SHARED_WORK 0x027ff000 // CPU間共有ワーク領域
#define SHARED_WORK_END 0x02800000
#if defined(NDEBUG)
#define SUBP_PRV 0x02380000 // サブプロセッサ専有領域(リリースバージョン)
#elif defined(MMEM_4M)
#define SUBP_PRV 0x02300000 // (デバッグバージョン<メインメモリ4M本体>)
#else
#define SUBP_PRV 0x02600000 // (デバッグバージョン<メインメモリ8M本体>)
#endif
#define SUBP_PRV_END SHARED_WORK
#if defined(IRIS_TEG) | defined(IRIS_TS)
#define ITCM 0x01ff8000 // 命令TCM
#define ITCM_END (ITCM + 0x8000)
#define DTCM SUBP_PRV // データTCM(TEGボード以降)
#else
#define DTCM 0x8000 // (ブレッドボード専用)
#endif
#define DTCM_END (DTCM + 0x4000)
#define INTR_VECTOR_BUF (DTCM_END - 0x4) // 割り込み分岐アドレス
#define INTR_CHECK_BUF (DTCM_END - 0x8) // 割り込みチェック
#define SEND_FIFO_LOCK_BUF (DTCM_END - 0x10) // CPU間送信FIFO・ロックバッファ
#define TIMER3_LOCK_BUF (DTCM_END - 0x12) // タイマー3・ロックバッファ
#define TIMER2_LOCK_BUF (DTCM_END - 0x14) // タイマー2
#define TIMER1_LOCK_BUF (DTCM_END - 0x16) // タイマー1
#define TIMER0_LOCK_BUF (DTCM_END - 0x18) // タイマー0
#define DMA3_LOCK_BUF (DTCM_END - 0x1a) // DMA3・ロックバッファ
#define DMA2_LOCK_BUF (DTCM_END - 0x1c) //
#define DMA1_LOCK_BUF (DTCM_END - 0x1e) //
#define DMA0_LOCK_BUF (DTCM_END - 0x20) //
#define MAIN_MEM 0x02000000 // メインメモリ
#define MAIN_MEM_END (MAIN_MEM + 0x400000)
#define MAIN_MEM_EX_END (MAIN_MEM + 0x800000) //(拡張時の最終アドレス)
#define MAIN_MEM_CMD_AREA (MAIN_MEM_EX_END - 0x2) // メインメモリコマンド発行エリア(使用禁止エリア)
#define SHARED_LOCK_BUF (MAIN_MEM_EX_END - 0x40) // 共有リソース・ロックバッファ
#define SHARED_LOCK_BUF_END (MAIN_MEM_EX_END - 0x10)
#define INIT_LOCK_BUF (MAIN_MEM_EX_END - 0x10) // 初期化ロックバッファ
#define CARTRIDGE_LOCK_BUF (MAIN_MEM_EX_END - 0x18) // カートリッジ・ロックバッファ
#define CARD_LOCK_BUF (MAIN_MEM_EX_END - 0x20) // カード・ロックバッファ
#define WRAM_BLOCK1_LOCK_BUF (MAIN_MEM_EX_END - 0x28) // CPU内部ワークRAM・ブロック1・ロックバッファ
#define WRAM_BLOCK0_LOCK_BUF (MAIN_MEM_EX_END - 0x30) // ブロック0・ロックバッファ
#define VRAM_D_LOCK_BUF (MAIN_MEM_EX_END - 0x38) // VRAM-D・ロックバッファ
#define VRAM_C_LOCK_BUF (MAIN_MEM_EX_END - 0x40) // C・ロックバッファ
#define FROM_SUBP_IF_BUF (MAIN_MEM_EX_END - 0x50) // サブ→メインプロセッサ割り込み要求フラグ(2Byte×8)
#define WM_FROM_SUBP_IF_BUF (MAIN_MEM_EX_END - 0x50) // ワイヤレスマネージャ予約
#define TO_SUBP_IF_BUF (MAIN_MEM_EX_END - 0x60) // メイン→サブプロセッサ割り込み要求フラグ(2Byte×8)
#define WM_TO_SUBP_IF_BUF (MAIN_MEM_EX_END - 0x60) // ワイヤレスマネージャ予約
#define ROM_HEADER_BUF (MAIN_MEM_EX_END - 0x200)// ROM内登録エリアデータ・バッファ
#define DMA_CLEAR_DATA_BUF (MAIN_MEM_EX_END - 0x210)// DMAクリアデータ・バッファ(暫定対応、廃止予定)
#define CPU_WRAM 0x037f8000 // CPU内部ワークRAM
#define CPU_WRAM_END (CPU_WRAM + 0x8000)
#define CPU_WRAM_BLOCK0 0x037f8000 // ブロック0
#define CPU_WRAM_BLOCK0_END (CPU_WRAM_BLOCK0 + 0x4000)
#define CPU_WRAM_BLOCK1 0x037fc000 // ブロック1
#define CPU_WRAM_BLOCK1_END (CPU_WRAM_BLOCK1 + 0x4000)
#define REG_BASE 0x04000000 // レジスタ群
#define PLTT 0x05000000 // パレットRAM
#define PLTT_END (PLTT + 0x400)
#define BG_PLTT (PLTT + 0x0) // BGパレットRAM
#define BG_PLTT_END (PLTT + 0x200)
#define OBJ_PLTT (PLTT + 0x200) // OBJパレットRAM
#define OBJ_PLTT_END (PLTT + 0x400)
#define VRAM 0x06000000 //
#define BG_VRAM (VRAM + 0x0) // BGキャラクタ/スクリーンRAM
#define BG_VRAM_END (VRAM + 0x80000)
#define OBJ_VRAM (VRAM + 0x400000) // OBJキャラクタRAM
#define OBJ_VRAM_END (VRAM + 0x440000)
#define LCDC_VRAM (VRAM + 0x800000) //
#define LCDC_VRAM_A (VRAM + 0x800000)
#define LCDC_VRAM_B (VRAM + 0x820000)
#define LCDC_VRAM_C (VRAM + 0x840000)
#define LCDC_VRAM_D (VRAM + 0x860000)
#define LCDC_VRAM_E (VRAM + 0x880000)
#define LCDC_VRAM_F (VRAM + 0x890000)
#define LCDC_VRAM_G (VRAM + 0x894000)
#define LCDC_VRAM_END (VRAM + 0x898000)
#define OAM 0x07000000 //
#define OAM_END (OAM + 0x400)
#define CARTRIDGE 0x08000000 // カートリッジ
#define CTRDG_AD16_BANK0 0x08000000 // カートリッジ AD16バス バンク0
#define CTRDG_AD16_BANK0_END 0x0a000000
#define CTRDG_AD16_BANK1 0x0a000000 // バンク1
#define CTRDG_AD16_BANK1_END 0x0c000000
#define CTRDG_AD16_BANK2 0x0c000000 // バンク2
#define CTRDG_AD16_BANK2_END 0x0e000000
#define CTRDG_DT8 0x0e000000 // カートリッジ 8bitデータバス
#define CTRDG_DT8_END 0x10000000
#define BIOS 0xffff0000 //
#define BIOS_END (BIOS + 0x8000)
//----------------------------------------------------------------------
// メモリ・サイズ
//----------------------------------------------------------------------
#define SHARED_WORK_SIZE (SHARED_WORK_END - SHARED_WORK) // CPU間共有ワーク領域(4KB以上、2のべき乗サイズ)
#define SUBP_PRV_SIZE (SUBP_PRV_END - SUBP_PRV) // サブプロセッサ専有領域(32KB以上、2のべき乗サイズ)
#define SHARED_LOCK_BUF_SIZE (SHARED_LOCK_BUF_END - SHARED_LOCK_BUF) // 共有リソース・ロックバッファ
#define ITCM_SIZE 0x8000 // 命令TCM
#define DTCM_SIZE 0x4000 // データTCM
#define ICACHE_SIZE 0x2000 // 命令キャッシュ
#define DCACHE_SIZE 0x1000 // データキャッシュ
#define CACHE_LINE_SIZE 32 // キャッシュライン
#define MAIN_MEM_SIZE 0x400000 // メインメモリ
#define MAIN_MEM_EX_SIZE 0x800000 // (拡張時)
#define CPU_WRAM_SIZE 0x8000 // CPU内部ワークRAM 合計
#define CPU_WRAM_BLOCK0_SIZE 0x4000 // ブロック0
#define CPU_WRAM_BLOCK1_SIZE 0x4000 // ブロック1
#define MROM_PAGE_SIZE 512 // マスクROM・ページ
#define PLTT_SIZE (2*256*2) // パレットRAM
#define BG_PLTT_SIZE (2*256) // BGパレットRAM
#define OBJ_PLTT_SIZE (2*256) // OBJパレットRAM
#define BG_VRAM_SIZE 0x80000 //
#define OBJ_VRAM_SIZE 0x40000 //
#define LCDC_VRAM_SIZE 0x98000 //
#define VRAM_A_SIZE 0x20000 //
#define VRAM_B_SIZE 0x20000 //
#define VRAM_C_SIZE 0x20000 //
#define VRAM_D_SIZE 0x20000 //
#define VRAM_E_SIZE 0x10000 //
#define VRAM_F_SIZE 0x4000 //
#define VRAM_G_SIZE 0x4000 //
#define OAM_SIZE (8*128) //
#define CARTRIDGE_SIZE 0x02000000 // カートリッジ
#define CTRDG_AD16_BANK_SIZE 0x02000000 // カートリッジ AD16バス バンク
#define CTRDG_AD16_BANK0_SIZE 0x02000000 // バンク0
#define CTRDG_AD16_BANK1_SIZE 0x02000000 // バンク1
#define CTRDG_AD16_BANK2_SIZE 0x02000000 // バンク2
#define CTRDG_DT8_SIZE 0x02000000 // カートリッジ 8bitデータバス
#define BIOS_SIZE 0x8000 //
//----------------------------------------------------------------------
// レジスタ・アドレス
//----------------------------------------------------------------------
#define REG_IME (REG_BASE + 0x208) // 割り込みマスタイネーブル
#define REG_IE (REG_BASE + 0x210) // 割り込み許可
#define REG_IF (REG_BASE + 0x214) // 割り込み要求
#define REG_SUBPINTF (REG_BASE + 0x180) // サブプロセッサインタフェース
#define REG_SUBP_FIFO_CNT (REG_BASE + 0x184) // CPU間FIFOコントロール
#define REG_SEND_FIFO (REG_BASE + 0x188) // 送信FIFO
#define REG_RECV_FIFO (REG_BASE + 0x100000) // 受信FIFO
#define REG_EXMEMCNT (REG_BASE + 0x204) // 外部メモリコントロール
#define REG_POWCNT (REG_BASE + 0x304) // パワーコントロール
#define REG_DIVCNT (REG_BASE + 0x280) // 除算器 コントロール
#define REG_DIV_NUMER (REG_BASE + 0x290) // 被除数
#define REG_DIV_DENOM (REG_BASE + 0x298) // 除数
#define REG_DIV_RESULT (REG_BASE + 0x2a0) // 商
#define REG_DIVREM_RESULT (REG_BASE + 0x2a8) // 余り
#define REG_SQRTCNT (REG_BASE + 0x2b0) // 平方根演算器 コントロール
#define REG_SQRT_RESULT (REG_BASE + 0x2b4) // 結果
#define REG_SQRT_PARAM (REG_BASE + 0x2b8) // パラメータ
#define REG_DISPCNT (REG_BASE + 0x0) // 表示コントロール
#define REG_DISPCNT_L (REG_BASE + 0x0)
#define REG_DISPCNT_H (REG_BASE + 0x2)
#define REG_DISP2DCNT (REG_BASE + 0x0) // 2D表示コントロール
#define REG_DISP3DCNT (REG_BASE + 0x60) // 3D表示コントロール
#define REG_DISPSTAT (REG_BASE + 0x4) // 表示ステータス
#define REG_VCOUNT (REG_BASE + 0x6) // Vカウンタ
#define REG_GXSTAT (REG_BASE + 0x600) // ジオメトリエンジンステータス
#define REG_VRAMCNT (REG_BASE + 0x240) // VRAMコントロール
#define REG_WRAMCNT (REG_BASE + 0x247) // 内部ワークRAMコントロール
#define REG_WVRAMCNT (REG_BASE + 0x244) // 内部ワークRAM コントロール
#define REG_VRAM_A_CNT (REG_BASE + 0x240) //
#define REG_VRAM_B_CNT (REG_BASE + 0x241) //
#define REG_VRAM_C_CNT (REG_BASE + 0x242) //
#define REG_VRAM_D_CNT (REG_BASE + 0x243) //
#define REG_VRAM_E_CNT (REG_BASE + 0x244) //
#define REG_VRAM_F_CNT (REG_BASE + 0x245) //
#define REG_VRAM_G_CNT (REG_BASE + 0x246) //
#define REG_VRAM_H_CNT (REG_BASE + 0x248) //
#define REG_VRAM_I_CNT (REG_BASE + 0x249) //
#define REG_VRAM_AB_CNT (REG_BASE + 0x240) //
#define REG_VRAM_CD_CNT (REG_BASE + 0x242) //
#define REG_VRAM_EF_CNT (REG_BASE + 0x244) //
#define REG_VRAM_G_W_CNT (REG_BASE + 0x246) // 内部ワークRAM
#define REG_VRAM_ABCD_CNT (REG_BASE + 0x240) //
#define REG_VRAM_EFG_W_CNT (REG_BASE + 0x244) // 内部ワークRAM
#define REG_VRAM_HI_CNT (REG_BASE + 0x248) //
#define REG_MASTER_BRIGHT (REG_BASE + 0x6c) // マスター輝度 コントロール
#define REG_DISPCAPCNT (REG_BASE + 0x64) // 表示キャプチャ コントロール
#define REG_DISP_MMEM_FIFO (REG_BASE + 0x68) // メインメモリ表示FIFO
#define REG_MOSAIC (REG_BASE + 0x4c) // モザイク サイズ
#define REG_BLDCNT (REG_BASE + 0x50) // ブレンドモード コントロール
#define REG_BLDALPHA (REG_BASE + 0x52) // 半透明 パラメータ
#define REG_BLDY (REG_BASE + 0x54) // 輝度変更 パラメータ
#define REG_WINCNT (REG_BASE + 0x40) // ウインドウ コントロール
#define REG_WIN0H (REG_BASE + 0x40) // ウインドウ0水平領域
#define REG_WIN1H (REG_BASE + 0x42) // ウインドウ1水平領域
#define REG_WIN0V (REG_BASE + 0x44) // ウインドウ0垂直領域
#define REG_WIN1V (REG_BASE + 0x46) // ウインドウ1垂直領域
#define REG_WININ (REG_BASE + 0x48) // ウインドウ内コントロール
#define REG_WIN0 (REG_BASE + 0x48) // ウインドウ0コントロール
#define REG_WIN1 (REG_BASE + 0x49) // ウインドウ1コントロール
#define REG_WIN01 (REG_BASE + 0x48) // ウインドウ0・1コントロール
#define REG_WINOUT (REG_BASE + 0x4a) // ウインドウ外コントロール
#define REG_OBJWIN (REG_BASE + 0x4b) // OBJウインドウコントロール
#define REG_WINOUTOBJ (REG_BASE + 0x4a) // ウインドウ外・OBJウインドウコントロール
#define REG_BGCNT (REG_BASE + 0x8) // BGコントロール
#define REG_BG0CNT (REG_BASE + 0x8) // BG0コントロール
#define REG_BG1CNT (REG_BASE + 0xa) // BG1コントロール
#define REG_BG2CNT (REG_BASE + 0xc) // BG2コントロール
#define REG_BG3CNT (REG_BASE + 0xe) // BG3コントロール
#define REG_BGOFS (REG_BASE + 0x10) // BGオフセット
#define REG_BG0HOFS (REG_BASE + 0x10) // BG0Hオフセット
#define REG_BG0VOFS (REG_BASE + 0x12) // BG0Vオフセット
#define REG_BG1HOFS (REG_BASE + 0x14) // BG1Hオフセット
#define REG_BG1VOFS (REG_BASE + 0x16) // BG1Vオフセット
#define REG_BG2HOFS (REG_BASE + 0x18) // BG2Hオフセット
#define REG_BG2VOFS (REG_BASE + 0x1a) // BG2Vオフセット
#define REG_BG3HOFS (REG_BASE + 0x1c) // BG3Hオフセット
#define REG_BG3VOFS (REG_BASE + 0x1e) // BG3Vオフセット
#define REG_BG2AFFINE (REG_BASE + 0x20) // BG2アフィン変換パラメータ群
#define REG_BG2PA (REG_BASE + 0x20) // BG2ライン方向X座標差分
#define REG_BG2PB (REG_BASE + 0x22) // 垂直方向X座標差分
#define REG_BG2PC (REG_BASE + 0x24) // BG2ライン方向Y座標差分
#define REG_BG2PD (REG_BASE + 0x26) // 垂直方向Y座標差分
#define REG_BG2X (REG_BASE + 0x28) // BG2スタートX座標
#define REG_BG2Y (REG_BASE + 0x2c) // BG2スタートY座標
#define REG_BG3AFFINE (REG_BASE + 0x30) // BG3アフィン変換パラメータ群
#define REG_BG3PA (REG_BASE + 0x30) // BG3ライン方向X座標差分
#define REG_BG3PB (REG_BASE + 0x32) // 垂直方向X座標差分
#define REG_BG3PC (REG_BASE + 0x34) // BG3ライン方向Y座標差分
#define REG_BG3PD (REG_BASE + 0x36) // 垂直方向Y座標差分
#define REG_BG3X (REG_BASE + 0x38) // BG3スタートX座標
#define REG_BG3Y (REG_BASE + 0x3c) // BG3スタートY座標
#define REG_GXFIFO (REG_BASE + 0x400) // ジオメトリFIFO
#define REG_LISTRAM_COUNT (REG_BASE + 0x604) // ポリゴンリストRAMカウンタ
#define REG_VTXRAM_COUNT (REG_BASE + 0x606) // 頂点RAMカウンタ
#define REG_RDLINES_COUNT (REG_BASE + 0x320) // レンダリング済みライン数カウンタ
#define REG_SWAP_BUFFERS (REG_BASE + 0x540) // レンダリングエンジン参照データ群のスワップ
#define REG_VIEWPORT (REG_BASE + 0x580) // 視界
#define REG_MTX_MODE (REG_BASE + 0x440) // 行列モード
#define REG_MTX_PUSH (REG_BASE + 0x444) // 行列プッシュ
#define REG_MTX_POP (REG_BASE + 0x448) // 行列ポップ
#define REG_MTX_STORE (REG_BASE + 0x44c) // 行列ストア
#define REG_MTX_RESTORE (REG_BASE + 0x450) // 行列リストア
#define REG_MTX_IDENTITY (REG_BASE + 0x454) // 単位行列 初期化
#define REG_MTX_LOAD_4x4 (REG_BASE + 0x458) // 行列ロード(4x4)
#define REG_MTX_LOAD_4x3 (REG_BASE + 0x45c) //
#define REG_MTX_MULT_4x4 (REG_BASE + 0x460) // 行列乗算
#define REG_MTX_MULT_4x3 (REG_BASE + 0x464) //
#define REG_MTX_MULT_3x3 (REG_BASE + 0x468) //
#define REG_MTX_SCALE (REG_BASE + 0x46c) // スケール行列乗算(1x3)
#define REG_MTX_TRANS (REG_BASE + 0x470) // 移動行列乗算(1x3)
#define REG_CLIPMTX_RESULT (REG_BASE + 0x640) // カレントクリップ座標行列 読み込み
#define REG_VECMTX_RESULT (REG_BASE + 0x680) // カレントベクトル行列 読み込み
#define REG_LIGHT_VECTOR (REG_BASE + 0x4c8) // ライトベクトル
#define REG_LIGHT_COLOR (REG_BASE + 0x4cc) // ライトカラー
#define REG_MATERIAL_COLOR (REG_BASE + 0x4c0) // マテリアルカラー
#define REG_DIF_AMB (REG_BASE + 0x4c0) // 拡散光 環境光成分
#define REG_SPE_EMI (REG_BASE + 0x4c4) // 反射光 放射光成分
#define REG_SHININESS (REG_BASE + 0x4d0) // 鏡面反射輝度
#define REG_POLYGON_ATTR (REG_BASE + 0x4a4) // ポリゴン属性
#define REG_TEX_PARAM (REG_BASE + 0x4a8) // テクスチャパラメータ
#define REG_TEXIMAGE_PARAM (REG_BASE + 0x4a8)
#define REG_TEXPLTT_BASE (REG_BASE + 0x4ac)
#define REG_BEGIN_VTXS (REG_BASE + 0x500) // 頂点リスト スタート
#define REG_END_VTXS (REG_BASE + 0x504) // 頂点リスト エンド
#define REG_COLOR (REG_BASE + 0x480) // 頂点カラー
#define REG_NORMAL (REG_BASE + 0x484) // 頂点法線
#define REG_TEXCOORD (REG_BASE + 0x488) // 頂点テクスチャ座標
#define REG_VTX_16 (REG_BASE + 0x48c) // 頂点16bit座標
#define REG_VTX_10 (REG_BASE + 0x490) // 頂点10bit座標
#define REG_VTX_XY (REG_BASE + 0x494) // 頂点16bitXY座標
#define REG_VTX_XZ (REG_BASE + 0x498) // 頂点16bitXZ座標
#define REG_VTX_YZ (REG_BASE + 0x49c) // 頂点16bitYZ座標
#define REG_VTX_DIFF (REG_BASE + 0x4a0) // 頂点16bit座標差分値
#define REG_BOX_TEST (REG_BASE + 0x5c0) // ボックステスト
#define REG_POS_TEST (REG_BASE + 0x5c4) // 位置テスト
#define REG_VEC_TEST (REG_BASE + 0x5c8) // ベクトルテスト
#define REG_POS_RESULT (REG_BASE + 0x620) // 位置テスト結果
#define REG_VEC_RESULT (REG_BASE + 0x630) // ベクトルテスト結果
#define REG_CLEAR_COLOR_ATTR (REG_BASE +0x350) // カラー&属性バッファ クリア値
#define REG_CLEAR_DEPTH (REG_BASE + 0x354) // Zバッファ クリア値
#define REG_CLRIMAGE_OFFSET (REG_BASE + 0x356) // クリアイメージ オフセット
#define REG_EDGE_COLOR (REG_BASE + 0x330) // エッジカラー
#define REG_FOG_COLOR (REG_BASE + 0x358) // フォグ カラー
#define REG_FOG_OFFSET (REG_BASE + 0x35c) // フォグ オフセット
#define REG_FOG_TABLE (REG_BASE + 0x360) // フォグ濃度テーブル
#define REG_TOON_TABLE (REG_BASE + 0x380) // トゥーンシェーディング・テーブル
#define REG_ALPHA_TEST_REF (REG_BASE + 0x340) // アルファテスト参照値
#define REG_DISP_1DOT_DEPTH (REG_BASE + 0x610) // 1ドットポリゴン描画開始Z値
#define REG_DMA0 (REG_BASE + 0xb0) //
#define REG_DMA0SAD (REG_BASE + 0xb0)
#define REG_DMA0DAD (REG_BASE + 0xb4)
#define REG_DMA0CNT (REG_BASE + 0xb8)
#define REG_DMA0CNT_L (REG_BASE + 0xb8)
#define REG_DMA0CNT_H (REG_BASE + 0xba)
#define REG_DMA1 (REG_BASE + 0xbc) //
#define REG_DMA1SAD (REG_BASE + 0xbc)
#define REG_DMA1DAD (REG_BASE + 0xc0)
#define REG_DMA1CNT (REG_BASE + 0xc4)
#define REG_DMA1CNT_L (REG_BASE + 0xc4)
#define REG_DMA1CNT_H (REG_BASE + 0xc6)
#define REG_DMA2 (REG_BASE + 0xc8) //
#define REG_DMA2SAD (REG_BASE + 0xc8)
#define REG_DMA2DAD (REG_BASE + 0xcc)
#define REG_DMA2CNT (REG_BASE + 0xd0)
#define REG_DMA2CNT_L (REG_BASE + 0xd0)
#define REG_DMA2CNT_H (REG_BASE + 0xd2)
#define REG_DMA3 (REG_BASE + 0xd4) //
#define REG_DMA3SAD (REG_BASE + 0xd4)
#define REG_DMA3DAD (REG_BASE + 0xd8)
#define REG_DMA3CNT (REG_BASE + 0xdc)
#define REG_DMA3CNT_L (REG_BASE + 0xdc)
#define REG_DMA3CNT_H (REG_BASE + 0xde)
#define REG_DMA3CNT_L (REG_BASE + 0xdc)
#ifdef IRIS_TS
#define REG_DMA0_CLR_DATA (REG_BASE + 0xe0) // クリアデータ
#define REG_DMA1_CLR_DATA (REG_BASE + 0xe4)
#define REG_DMA2_CLR_DATA (REG_BASE + 0xe8)
#define REG_DMA3_CLR_DATA (REG_BASE + 0xec)
#else
#define REG_DMA0_CLR_DATA (DMA_CLEAR_DATA_BUF + 0x0)
#define REG_DMA1_CLR_DATA (DMA_CLEAR_DATA_BUF + 0x4)
#define REG_DMA2_CLR_DATA (DMA_CLEAR_DATA_BUF + 0x8)
#define REG_DMA3_CLR_DATA (DMA_CLEAR_DATA_BUF + 0xc)
#endif
#define REG_TM0CNT (REG_BASE + 0x100) // タイマー0
#define REG_TM0CNT_L (REG_BASE + 0x100)
#define REG_TM0CNT_H (REG_BASE + 0x102)
#define REG_TM1CNT (REG_BASE + 0x104) // タイマー1
#define REG_TM1CNT_L (REG_BASE + 0x104)
#define REG_TM1CNT_H (REG_BASE + 0x106)
#define REG_TM2CNT (REG_BASE + 0x108) // タイマー2
#define REG_TM2CNT_L (REG_BASE + 0x108)
#define REG_TM2CNT_H (REG_BASE + 0x10a)
#define REG_TM3CNT (REG_BASE + 0x10c) // タイマー3
#define REG_TM3CNT_L (REG_BASE + 0x10c)
#define REG_TM3CNT_H (REG_BASE + 0x10e)
#define REG_KEYINPUT (REG_BASE + 0x130) // キー入力
#define REG_KEYCNT (REG_BASE + 0x132) // キーコントロール
#define REG_R0CNT (REG_BASE + 0x134) // 汎用ポート0
#define REG_R1CNT (REG_BASE + 0x138) //
//----------------------------------------------------------------------
// レジスタ・オフセット
//----------------------------------------------------------------------
#define OFFSET_REG_IME 0x208 // 割り込みマスタイネーブル
#define OFFSET_REG_IE 0x210 // 割り込み許可
#define OFFSET_REG_IF 0x214 // 割り込み要求
#define OFFSET_REG_SUBPINTF 0x180 // サブプロセッサインタフェース
#define OFFSET_REG_SUBP_FIFO_CNT 0x184 // CPU間FIFOコントロール
#define OFFSET_REG_SEND_FIFO 0x188 // 送信FIFO
#define OFFSET_REG_RECV_FIFO 0x100000 // 受信FIFO
#define OFFSET_REG_EXMEMCNT 0x204 // 外部メモリコントロール
#define OFFSET_REG_POWCNT 0x304 // パワーコントロール
#define OFFSET_REG_DIVCNT 0x280 // 除算器 コントロール
#define OFFSET_REG_DIV_NUMER 0x290 // 被除数
#define OFFSET_REG_DIV_DENOM 0x298 // 除数
#define OFFSET_REG_DIV_RESULT 0x2a0 // 商
#define OFFSET_REG_DIVREM_RESULT 0x2a8 // 余り
#define OFFSET_REG_SQRTCNT 0x2b0 // 平方根演算器 コントロール
#define OFFSET_REG_SQRT_RESULT 0x2b4 // 結果
#define OFFSET_REG_SQRT_PARAM 0x2b8 // パラメータ
#define OFFSET_REG_DISPCNT 0x0 // 表示コントロール
#define OFFSET_REG_DISPCNT_L 0x0
#define OFFSET_REG_DISPCNT_H 0x2
#define OFFSET_REG_DISP2DCNT 0x0 // 2D表示コントロール
#define OFFSET_REG_DISP3DCNT 0x60 // 3D表示コントロール
#define OFFSET_REG_DISPSTAT 0x4 // 表示ステータス
#define OFFSET_REG_VCOUNT 0x6 // Vカウンタ
#define OFFSET_REG_GXSTAT 0x600 // ジオメトリエンジンステータス
#define OFFSET_REG_VRAMCNT 0x240 // VRAMコントロール
#define OFFSET_REG_WRAMCNT 0x247 // 内部ワークRAMコントロール
#define OFFSET_REG_WVRAMCNT 0x244 // 内部ワークRAM コントロール
#define OFFSET_REG_VRAM_A_CNT 0x240 //
#define OFFSET_REG_VRAM_B_CNT 0x241 //
#define OFFSET_REG_VRAM_C_CNT 0x242 //
#define OFFSET_REG_VRAM_D_CNT 0x243 //
#define OFFSET_REG_VRAM_E_CNT 0x244 //
#define OFFSET_REG_VRAM_F_CNT 0x245 //
#define OFFSET_REG_VRAM_G_CNT 0x246 //
#define OFFSET_REG_VRAM_H_CNT 0x248 //
#define OFFSET_REG_VRAM_I_CNT 0x249 //
#define OFFSET_REG_VRAM_AB_CNT 0x240 //
#define OFFSET_REG_VRAM_CD_CNT 0x242 //
#define OFFSET_REG_VRAM_EF_CNT 0x244 //
#define OFFSET_REG_VRAM_G_W_CNT 0x246 // 内部ワークRAM
#define OFFSET_REG_VRAM_ABCD_CNT 0x240 //
#define OFFSET_REG_VRAM_EFG_W_CNT 0x244 // 内部ワークRAM
#define OFFSET_REG_VRAM_HI_CNT 0x248 //
#define OFFSET_REG_MASTER_BRIGHT 0x6c // マスター輝度 コントロール
#define OFFSET_REG_DISPCAPCNT 0x64 // 表示キャプチャ コントロール
#define OFFSET_REG_DISP_MMEM_FIFO 0x68 // メインメモリ表示FIFO
#define OFFSET_REG_TVOUTCNT 0x70 // テレビ出力コントロール
#define OFFSET_REG_MOSAIC 0x4c // モザイク サイズ
#define OFFSET_REG_BLDCNT 0x50 // ブレンドモード コントロール
#define OFFSET_REG_BLDALPHA 0x52 // 半透明 パラメータ
#define OFFSET_REG_BLDY 0x54 // 輝度変更 パラメータ
#define OFFSET_REG_WINCNT 0x40 // ウインドウ コントロール
#define OFFSET_REG_WIN0H 0x40 // ウインドウ0水平領域
#define OFFSET_REG_WIN1H 0x42 // ウインドウ1水平領域
#define OFFSET_REG_WIN0V 0x44 // ウインドウ0垂直領域
#define OFFSET_REG_WIN1V 0x46 // ウインドウ1垂直領域
#define OFFSET_REG_WININ 0x48 // ウインドウ内コントロール
#define OFFSET_REG_WIN0 0x48 // ウインドウ0コントロール
#define OFFSET_REG_WIN1 0x49 // ウインドウ1コントロール
#define OFFSET_REG_WIN01 0x48 // ウインドウ0・1コントロール
#define OFFSET_REG_WINOUT 0x4a // ウインドウ外コントロール
#define OFFSET_REG_OBJWIN 0x4b // OBJウインドウコントロール
#define OFFSET_REG_WINOUTOBJ 0x4a // ウインドウ外・OBJウインドウコントロール
#define OFFSET_REG_BGCNT 0x8 // BGコントロール
#define OFFSET_REG_BG0CNT 0x8 // BG0コントロール
#define OFFSET_REG_BG1CNT 0xa // BG1コントロール
#define OFFSET_REG_BG2CNT 0xc // BG2コントロール
#define OFFSET_REG_BG3CNT 0xe // BG3コントロール
#define OFFSET_REG_BGOFS 0x10 // BGオフセット
#define OFFSET_REG_BG0HOFS 0x10 // BG0Hオフセット
#define OFFSET_REG_BG0VOFS 0x12 // BG0Vオフセット
#define OFFSET_REG_BG1HOFS 0x14 // BG1Hオフセット
#define OFFSET_REG_BG1VOFS 0x16 // BG1Vオフセット
#define OFFSET_REG_BG2HOFS 0x18 // BG2Hオフセット
#define OFFSET_REG_BG2VOFS 0x1a // BG2Vオフセット
#define OFFSET_REG_BG3HOFS 0x1c // BG3Hオフセット
#define OFFSET_REG_BG3VOFS 0x1e // BG3Vオフセット
#define OFFSET_REG_BG2AFFINE 0x20 // BG2アフィン変換パラメータ群
#define OFFSET_REG_BG2PA 0x20 // BG2ライン方向X座標差分
#define OFFSET_REG_BG2PB 0x22 // 垂直方向X座標差分
#define OFFSET_REG_BG2PC 0x24 // BG2ライン方向Y座標差分
#define OFFSET_REG_BG2PD 0x26 // 垂直方向Y座標差分
#define OFFSET_REG_BG2X 0x28 // BG2スタートX座標
#define OFFSET_REG_BG2Y 0x2c // BG2スタートY座標
#define OFFSET_REG_BG3AFFINE 0x30 // BG3アフィン変換パラメータ群
#define OFFSET_REG_BG3PA 0x30 // BG3ライン方向X座標差分
#define OFFSET_REG_BG3PB 0x32 // 垂直方向X座標差分
#define OFFSET_REG_BG3PC 0x34 // BG3ライン方向Y座標差分
#define OFFSET_REG_BG3PD 0x36 // 垂直方向Y座標差分
#define OFFSET_REG_BG3X 0x38 // BG3スタートX座標
#define OFFSET_REG_BG3Y 0x3c // BG3スタートY座標
#define OFFSET_REG_GXFIFO 0x400 // ジオメトリFIFO
#define OFFSET_REG_LISTRAM_COUNT 0x604 // ポリゴンリストRAMカウンタ
#define OFFSET_REG_VTXRAM_COUNT 0x606 // 頂点RAMカウンタ
#define OFFSET_REG_RDLINES_COUNT 0x320 // レンダリング済みライン数カウンタ
#define OFFSET_REG_SWAP_BUFFERS 0x540 // レンダリングエンジン参照データ群のスワップ
#define OFFSET_REG_VIEWPORT 0x580 // 視界
#define OFFSET_REG_MTX_MODE 0x440 // 行列モード
#define OFFSET_REG_MTX_PUSH 0x444 // 行列プッシュ
#define OFFSET_REG_MTX_POP 0x448 // 行列ポップ
#define OFFSET_REG_MTX_STORE 0x44c // 行列ストア
#define OFFSET_REG_MTX_RESTORE 0x450 // 行列リストア
#define OFFSET_REG_MTX_IDENTITY 0x454 // 単位行列 初期化
#define OFFSET_REG_MTX_LOAD_4x4 0x458 // 行列ロード(4x4)
#define OFFSET_REG_MTX_LOAD_4x3 0x45c //
#define OFFSET_REG_MTX_MULT_4x4 0x460 // 行列乗算
#define OFFSET_REG_MTX_MULT_4x3 0x464 //
#define OFFSET_REG_MTX_MULT_3x3 0x468 //
#define OFFSET_REG_MTX_SCALE 0x46c // スケール行列乗算(1x3)
#define OFFSET_REG_MTX_TRANS 0x470 // 移動行列乗算(1x3)
#define OFFSET_REG_CLIPMTX_RESULT 0x640 // カレントクリップ座標行列 読み込み
#define OFFSET_REG_VECMTX_RESULT 0x680 // カレントベクトル行列 読み込み
#define OFFSET_REG_LIGHT_VECTOR 0x4c8 // ライトベクトル
#define OFFSET_REG_LIGHT_COLOR 0x4cc // ライトカラー
#define OFFSET_REG_MATERIAL_COLOR 0x4c0 // マテリアルカラー
#define OFFSET_REG_DIF_AMB 0x4c0 // 拡散光 環境光成分
#define OFFSET_REG_SPE_EMI 0x4c4 // 反射光 放射光成分
#define OFFSET_REG_SHININESS 0x4d0 // 鏡面反射輝度
#define OFFSET_REG_POLYGON_ATTR 0x4a4 // ポリゴン属性
#define OFFSET_REG_TEX_PARAM 0x4a8 // テクスチャパラメータ
#define OFFSET_REG_TEXIMAGE_PARAM 0x4a8
#define OFFSET_REG_TEXPLTT_BASE 0x4ac
#define OFFSET_REG_BEGIN_VTXS 0x500 // 頂点リスト スタート
#define OFFSET_REG_END_VTXS 0x504 // 頂点リスト エンド
#define OFFSET_REG_COLOR 0x480 // 頂点カラー
#define OFFSET_REG_NORMAL 0x484 // 頂点法線
#define OFFSET_REG_TEXCOORD 0x488 // 頂点テクスチャ座標
#define OFFSET_REG_VTX_16 0x48c // 頂点16bit座標
#define OFFSET_REG_VTX_10 0x490 // 頂点10bit座標
#define OFFSET_REG_VTX_XY 0x494 // 頂点16bitXY座標
#define OFFSET_REG_VTX_XZ 0x498 // 頂点16bitXZ座標
#define OFFSET_REG_VTX_YZ 0x49c // 頂点16bitYZ座標
#define OFFSET_REG_VTX_DIFF 0x4a0 // 頂点16bit座標差分値
#define OFFSET_REG_BOX_TEST 0x5c0 // ボックステスト
#define OFFSET_REG_POS_TEST 0x5c4 // 位置テスト
#define OFFSET_REG_VEC_TEST 0x5c8 // ベクトルテスト
#define OFFSET_REG_POS_RESULT 0x620 // 位置テスト結果
#define OFFSET_REG_VEC_RESULT 0x630 // ベクトルテスト結果
#define OFFSET_REG_CLEAR_COLOR_ATTR 0x350 // カラー&属性バッファ クリア値
#define OFFSET_REG_CLEAR_DEPTH 0x354 // Zバッファ クリア値
#define OFFSET_REG_CLRIMAGE_OFFSET 0x356 // クリアイメージ オフセット
#define OFFSET_REG_EDGE_COLOR 0x330 // エッジカラー
#define OFFSET_REG_FOG_COLOR 0x358 // フォグ カラー
#define OFFSET_REG_FOG_OFFSET 0x35c // フォグ オフセット
#define OFFSET_REG_FOG_TABLE 0x360 // フォグ濃度テーブル
#define OFFSET_REG_TOON_TABLE 0x380 // トゥーンシェーディング・テーブル
#define OFFSET_REG_ALPHA_TEST_REF 0x340 // アルファテスト参照値
#define OFFSET_REG_DISP_1DOT_DEPTH 0x610 // 1ドットポリゴン描画開始Z値
#define OFFSET_REG_DMA0 0xb0 //
#define OFFSET_REG_DMA0SAD 0xb0
#define OFFSET_REG_DMA0DAD 0xb4
#define OFFSET_REG_DMA0CNT 0xb8
#define OFFSET_REG_DMA0CNT_L 0xb8
#define OFFSET_REG_DMA0CNT_H 0xba
#define OFFSET_REG_DMA1 0xbc //
#define OFFSET_REG_DMA1SAD 0xbc
#define OFFSET_REG_DMA1DAD 0xc0
#define OFFSET_REG_DMA1CNT 0xc4
#define OFFSET_REG_DMA1CNT_L 0xc4
#define OFFSET_REG_DMA1CNT_H 0xc6
#define OFFSET_REG_DMA2 0xc8 //
#define OFFSET_REG_DMA2SAD 0xc8
#define OFFSET_REG_DMA2DAD 0xcc
#define OFFSET_REG_DMA2CNT 0xd0
#define OFFSET_REG_DMA2CNT_L 0xd0
#define OFFSET_REG_DMA2CNT_H 0xd2
#define OFFSET_REG_DMA3 0xd4 //
#define OFFSET_REG_DMA3SAD 0xd4
#define OFFSET_REG_DMA3DAD 0xd8
#define OFFSET_REG_DMA3CNT 0xdc
#define OFFSET_REG_DMA3CNT_L 0xdc
#ifdef IRIS_TS
#define OFFSET_REG_DMA0_CLR_DATA 0xe0 // クリアデータ
#define OFFSET_REG_DMA1_CLR_DATA 0xe4
#define OFFSET_REG_DMA2_CLR_DATA 0xe8
#define OFFSET_REG_DMA3_CLR_DATA 0xec
#endif
#define OFFSET_REG_TM0CNT 0x100 // タイマー0
#define OFFSET_REG_TM0CNT_L 0x100
#define OFFSET_REG_TM0CNT_H 0x102
#define OFFSET_REG_TM1CNT 0x104 // タイマー1
#define OFFSET_REG_TM1CNT_L 0x104
#define OFFSET_REG_TM1CNT_H 0x106
#define OFFSET_REG_TM2CNT 0x108 // タイマー2
#define OFFSET_REG_TM2CNT_L 0x108
#define OFFSET_REG_TM2CNT_H 0x10a
#define OFFSET_REG_TM3CNT 0x10c // タイマー3
#define OFFSET_REG_TM3CNT_L 0x10c
#define OFFSET_REG_TM3CNT_H 0x10e
#define OFFSET_REG_KEYINPUT 0x130 // キー入力
#define OFFSET_REG_KEYCNT 0x132 // キーコントロール
#define OFFSET_REG_R0CNT 0x134 // 汎用ポート0
#define OFFSET_REG_R1CNT 0x138 //
#ifdef __cplusplus
} // extern "C"
#endif
#endif // _IRIS_MEMORY_MAP_H