mirror of
https://github.com/rvtr/ntr_bootrom.git
synced 2025-10-31 07:11:11 -04:00
221 lines
10 KiB
C
221 lines
10 KiB
C
//*******************************************************************
|
||
// TEG限定ルーチン
|
||
//*******************************************************************
|
||
#include "IrisMon.h"
|
||
|
||
|
||
#if defined(DISP_BIOS_VERSION) || defined(DISP_READY_CARD_4_IPL2)
|
||
|
||
//---------------------- パレットデータ -------------------------------
|
||
|
||
const u16 samplePlttData[16][16] = {
|
||
{RGB555(31,31,31), RGB555(0, 0, 0 ), RGB555(0, 0, 0 ), RGB555(0, 0, 0 ),}, // Black
|
||
{RGB555(31,31,31), RGB555(31,0, 0 ), RGB555(31,0, 0 ), RGB555(31,0, 0 ),}, // Red
|
||
{RGB555(31,31,31), RGB555(0, 31,0 ), RGB555(0, 31,0 ), RGB555(0, 31,0 ),}, // Green
|
||
{RGB555(31,31,31), RGB555(0, 0, 31), RGB555(0, 0, 31), RGB555(0, 0, 31),}, // Blue
|
||
{RGB555(31,31,31), RGB555(31,31,0 ), RGB555(31,31,0 ), RGB555(31,31,0 ),}, // Yellow
|
||
{RGB555(31,31,31), RGB555(0, 31,31), RGB555(0, 31,31), RGB555(0, 31,31),}, // Cyan
|
||
{RGB555(31,31,31), RGB555(31,0, 31), RGB555(31,0, 31), RGB555(31,0, 31),}, // Purple
|
||
};
|
||
|
||
|
||
//---------------------- キャラクタデータ -----------------------------
|
||
|
||
const u32 sampleCharData[8*0x30] = {
|
||
0x00011100,0x00110010,0x01100011,0x01100011, //0030 0
|
||
0x01100011,0x00100110,0x00011100,0x00000000,
|
||
0x00011000,0x00011100,0x00011110,0x00011000, //0031 1
|
||
0x00011000,0x00011000,0x00011000,0x00000000,
|
||
0x00111110,0x01100011,0x01100011,0x00111000, //0032 2
|
||
0x00001110,0x00000011,0x01111111,0x00000000,
|
||
0x01111110,0x00110000,0x00011000,0x00111100, //0033 3
|
||
0x01100000,0x01100011,0x00111110,0x00000000,
|
||
0x00110000,0x00111000,0x00111100,0x00110110, //0034 4
|
||
0x00110011,0x01111111,0x00110000,0x00000000,
|
||
0x00111111,0x00000011,0x00000011,0x00111111, //0035 5
|
||
0x01100000,0x01100011,0x00111110,0x00000000,
|
||
0x00111100,0x00000110,0x00000011,0x00111111, //0036 6
|
||
0x01100011,0x01100011,0x00111110,0x00000000,
|
||
0x01111111,0x01110000,0x00111000,0x00011100, //0037 7
|
||
0x00001100,0x00001100,0x00001100,0x00000000,
|
||
0x00111110,0x01100011,0x01100011,0x00111110, //0038 8
|
||
0x01100011,0x01100011,0x00111110,0x00000000,
|
||
0x00111110,0x01100011,0x01100011,0x01111110, //0039 9
|
||
0x01100000,0x00110000,0x00011110,0x00000000,
|
||
0x00000000,0x00011000,0x00011000,0x00000000, //003A :
|
||
0x00000000,0x00011000,0x00011000,0x00000000,
|
||
0x00000000,0x00011000,0x00011000,0x00000000, //003B ;
|
||
0x00000000,0x00011000,0x00011000,0x00010000,
|
||
0x01100000,0x00111000,0x00001110,0x00000011, //003C <
|
||
0x00001110,0x00111000,0x01100000,0x00000000,
|
||
0x00000000,0x00000000,0x00111110,0x00000000, //003D =
|
||
0x00000000,0x00111110,0x00000000,0x00000000,
|
||
0x00000011,0x00001110,0x00111000,0x01100000, //003E >
|
||
0x00111000,0x00001110,0x00000011,0x00000000,
|
||
0x01111110,0x11000011,0x11000011,0x01111000, //003F ?
|
||
0x00011000,0x00000000,0x00011000,0x00000000,
|
||
0x00111110,0x01100011,0x01011001,0x01010101, //0040 @
|
||
0x01011101,0x01110011,0x00011110,0x00000000,
|
||
0x00111110,0x01100011,0x01100011,0x01111111, //0041 A
|
||
0x01100011,0x01100011,0x01100011,0x00000000,
|
||
0x00111111,0x01100011,0x01100011,0x00111111, //0042 B
|
||
0x01100011,0x01100011,0x00111111,0x00000000,
|
||
0x00111110,0x01100011,0x01100011,0x00000011, //0043 C
|
||
0x01100011,0x01100011,0x00111110,0x00000000,
|
||
0x00111111,0x01100011,0x01100011,0x01100011, //0044 D
|
||
0x01100011,0x01100011,0x00111111,0x00000000,
|
||
0x01111111,0x00000011,0x00000011,0x00111111, //0045 E
|
||
0x00000011,0x00000011,0x01111111,0x00000000,
|
||
0x01111111,0x00000011,0x00000011,0x00111111, //0046 F
|
||
0x00000011,0x00000011,0x00000011,0x00000000,
|
||
0x00111110,0x01100011,0x00000011,0x01111011, //0047 G
|
||
0x01100011,0x01100011,0x00111110,0x00000000,
|
||
0x01100011,0x01100011,0x01100011,0x01111111, //0048 H
|
||
0x01100011,0x01100011,0x01100011,0x00000000,
|
||
0x00011000,0x00011000,0x00011000,0x00011000, //0049 I
|
||
0x00011000,0x00011000,0x00011000,0x00000000,
|
||
0x01100000,0x01100000,0x01100000,0x01100000, //004A J
|
||
0x01100000,0x01100011,0x00111110,0x00000000,
|
||
0x01100011,0x01110011,0x00111011,0x00011111, //004B K
|
||
0x00111011,0x01110011,0x01100011,0x00000000,
|
||
0x00000011,0x00000011,0x00000011,0x00000011, //004C L
|
||
0x00000011,0x00000011,0x01111111,0x00000000,
|
||
0x01100011,0x01100011,0x01110111,0x01110111, //004D M
|
||
0x01111111,0x01101011,0x01101011,0x00000000,
|
||
0x01100011,0x01100111,0x01101111,0x01111111, //004E N
|
||
0x01111011,0x01110011,0x01100011,0x00000000,
|
||
0x00111110,0x01100011,0x01100011,0x01100011, //004F O
|
||
0x01100011,0x01100011,0x00111110,0x00000000,
|
||
0x00111111,0x01100011,0x01100011,0x00111111, //0050 P
|
||
0x00000011,0x00000011,0x00000011,0x00000000,
|
||
0x00111110,0x01100011,0x01100011,0x01100011, //0051 Q
|
||
0x01100011,0x00111110,0x01110000,0x00000000,
|
||
0x00111111,0x01100011,0x01100011,0x00111111, //0052 R
|
||
0x01100011,0x01100011,0x01100011,0x00000000,
|
||
0x00111110,0x01100011,0x00000011,0x00111110, //0053 S
|
||
0x01100000,0x01100011,0x00111110,0x00000000,
|
||
0x11111111,0x00011000,0x00011000,0x00011000, //0054 T
|
||
0x00011000,0x00011000,0x00011000,0x00000000,
|
||
0x01100011,0x01100011,0x01100011,0x01100011, //0055 U
|
||
0x01100011,0x01100011,0x00111110,0x00000000,
|
||
0x01100011,0x01100011,0x00110110,0x00110110, //0056 V
|
||
0x00011100,0x00011100,0x00001000,0x00000000,
|
||
0x11011011,0x11011011,0x11011011,0x11011011, //0057 W
|
||
0x11011011,0x01111110,0x01100110,0x00000000,
|
||
0x01000001,0x01100011,0x00110110,0x00011100, //0058 X
|
||
0x00011100,0x00110110,0x01100011,0x00000000,
|
||
0x11000011,0x11000011,0x11100111,0x01111110, //0059 Y
|
||
0x00011000,0x00011000,0x00011000,0x00000000,
|
||
0x01111111,0x00110000,0x00011000,0x00001100, //005A Z
|
||
0x00000110,0x00000011,0x01111111,0x00000000,
|
||
0x00001111,0x00000011,0x00000011,0x00000011, //005B [
|
||
0x00000011,0x00000011,0x00001111,0x00000000,
|
||
0x01100110,0x01100110,0x11111111,0x00011000, //005C \.
|
||
0x11111111,0x00011000,0x00011000,0x00000000,
|
||
0x01111000,0x01100000,0x01100000,0x01100000, //005D ]
|
||
0x01100000,0x01100000,0x01111000,0x00000000,
|
||
0x00011100,0x00110110,0x00100010,0x00000000, //005E ^
|
||
0x00000000,0x00000000,0x00000000,0x00000000,
|
||
0x00000000,0x00000000,0x00000000,0x00000000, //005F _
|
||
0x00000000,0x00000000,0x01111111,0x00000000,
|
||
};
|
||
|
||
|
||
//----------------------------------------------------------------------
|
||
// TEG専用バージョンチェック表示
|
||
//----------------------------------------------------------------------
|
||
void BG_SetScreen(const char *srcp, u16 *destp, u32 plttNo);
|
||
|
||
void DispTegCheck(char *str0, char *str1)
|
||
{
|
||
s32 i;
|
||
|
||
*(vu16 *)REG_POWCNT = POW_LCDC_ON | POW_2D_ON; // 各ロジック パワーON
|
||
// OAMとパレットRAMへアクセスする場合は
|
||
// 2DエンジンをONにして下さい
|
||
|
||
*(vu32 *)REG_DISPCNT = DISP_GFX_MODE | DISP_LCDC_OFF; // LCDC OFF
|
||
// VRAM設定
|
||
*(vu32 *)REG_VRAM_ABCD_CNT = (VRAM_LCDC_MODE | VRAM_DISABLE) <<VRAM_A_CNT_SHIFT
|
||
| (VRAM_LCDC_MODE | VRAM_DISABLE) <<VRAM_B_CNT_SHIFT
|
||
| (VRAM_LCDC_MODE | VRAM_DISABLE) <<VRAM_C_CNT_SHIFT
|
||
| (VRAM_LCDC_MODE | VRAM_DISABLE) <<VRAM_D_CNT_SHIFT;
|
||
*(vu32 *)REG_VRAM_EFG_W_CNT = (VRAM_BG_MODE | 0 <<VRAM_OFFSET_SHIFT | VRAM_ENABLE) <<VRAM_E_CNT_SHIFT
|
||
| (VRAM_OBJ_MODE | 0 <<VRAM_OFFSET_SHIFT | VRAM_ENABLE) <<VRAM_F_CNT_SHIFT
|
||
| (VRAM_OBJ_MODE | 1 <<VRAM_OFFSET_SHIFT | VRAM_ENABLE) <<VRAM_G_CNT_SHIFT
|
||
| WRAM_SUBP_ALL <<WRAM_CNT_SHIFT;
|
||
|
||
CpuClearFast32(0, BG_VRAM, VRAM_E_SIZE ); // BG-VRAM クリア
|
||
CpuClearFast32(0, PLTT, PLTT_SIZE ); // パレット クリア
|
||
|
||
CpuCopyArrayFast32(sampleCharData, BG_VRAM+0x8020); // BGキャラクタ セット
|
||
CpuCopyArrayFast32(samplePlttData, BG_PLTT ); // BGパレット セット
|
||
|
||
BG_SetScreen(str0, &((u16 *)BG_VRAM)[32*11+9], 0); // バージョン表示
|
||
BG_SetScreen(str1, &((u16 *)BG_VRAM)[32*13+9], 1); // キー押し指示
|
||
|
||
*(vu16 *)REG_BG1CNT = // BGコントロール セット
|
||
BG_COLOR_16 | BG_SCREEN_SIZE_0 | BG_PRIORITY_0
|
||
| 0 <<BG_SCREEN_BASE_SHIFT | 2 <<BG_CHAR_BASE_SHIFT ;
|
||
|
||
|
||
*(vu32 *)REG_DISPCNT = DISP_GFX_MODE | DISP_BG_MODE_N2A1E1
|
||
| DISP_BG1_ON; // LCDC ON
|
||
|
||
}
|
||
|
||
//----------------------------------------------------------------------
|
||
// BGスクリーン セット
|
||
//----------------------------------------------------------------------
|
||
|
||
void BG_SetScreen(const char *srcp, u16 *destp, u32 plttNo)
|
||
{
|
||
while (*srcp != '\0')
|
||
*destp++ = (u16 )plttNo <<BG_SC_PLTT_SHIFT | (*srcp++ - '0' + 1);
|
||
}
|
||
|
||
#endif
|
||
|
||
|
||
//----------------------------------------------------------------------
|
||
// AGBモード遷移
|
||
//----------------------------------------------------------------------
|
||
void Halt(void);
|
||
|
||
#ifdef TEST_AGB_MODE
|
||
|
||
void Iris2Agb(void)
|
||
{
|
||
int i;
|
||
|
||
*(vu32 *)REG_IME = 0;
|
||
|
||
while (((vDispStat *)REG_DISPSTAT)->blankingV == 1) ;
|
||
while (((vDispStat *)REG_DISPSTAT)->blankingV != 1) ; // 表示期間待ち
|
||
|
||
*(vu16 *)REG_POWCNT = POW_LCDC_ON | POW_2D_ON;
|
||
|
||
// +LCD切り換え処理
|
||
|
||
*(vu32 *)REG_VRAM_ABCD_CNT = (VRAM_LCDC_MODE | VRAM_ENABLE) <<VRAM_A_CNT_SHIFT
|
||
| (VRAM_LCDC_MODE | VRAM_ENABLE) <<VRAM_B_CNT_SHIFT;
|
||
// | (VRAM_SUBP_MODE | VRAM_ENABLE) <<VRAM_C_CNT_SHIFT
|
||
// | (VRAM_SUBP_MODE | VRAM_ENABLE) <<VRAM_D_CNT_SHIFT;
|
||
|
||
// *(vu32 *)REG_VRAM_EFG_W_CNT = 0;
|
||
#if 0
|
||
*(vu32 *)REG_VRAM_EFG_W_CNT = (VRAM_BG_MODE | 0 <<VRAM_OFFSET_SHIFT | VRAM_ENABLE) <<VRAM_E_CNT_SHIFT
|
||
| (VRAM_OBJ_MODE | 0 <<VRAM_OFFSET_SHIFT | VRAM_ENABLE) <<VRAM_F_CNT_SHIFT
|
||
| (VRAM_OBJ_MODE | 1 <<VRAM_OFFSET_SHIFT | VRAM_ENABLE) <<VRAM_G_CNT_SHIFT
|
||
| WRAM_SUBP_ALL <<WRAM_CNT_SHIFT;
|
||
#endif
|
||
CpuClear16_32(RGB555(0,0,0), LCDC_VRAM_A, VRAM_A_SIZE * 2, 16); // VRAM-AB クリア
|
||
|
||
WaitSubpIntf(7); // モード遷移通知待ち
|
||
NotifySubpIntf(7);
|
||
|
||
Halt(); // ホールト
|
||
}
|
||
|
||
#endif // TEST_AGB_MODE
|