ntr_bootrom/trunk/IrisMainp/IrisMon/IrisTegOnlySub.c

221 lines
10 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.

//*******************************************************************
// 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