mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
ROMデータロードを別スレッド化
ロード中に画面白フェードアウトするよう実装 git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@190 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
0d5ce3f4a5
commit
91b99f71a7
@ -342,8 +342,8 @@ BOOL SYSM_IsTPReadable( void )
|
|||||||
//
|
//
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
|
|
||||||
// 指定タイトルの認証&ロード ※1フレームじゃ終わらん。
|
// 指定タイトルをロードするだけ
|
||||||
AuthResult SYSM_LoadAndAuthenticateTitle( TitleProperty *pBootTitle )
|
AuthResult SYSM_LoadTitle( TitleProperty *pBootTitle )
|
||||||
{
|
{
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
@ -470,6 +470,12 @@ OS_TPrintf("RebootSystem failed: cant read file(%d, %d)\n", source[i], len);
|
|||||||
// ROMヘッダバッファをコピー
|
// ROMヘッダバッファをコピー
|
||||||
MI_CpuCopy32( (void *)HW_TWL_ROM_HEADER_BUF, (void *)HW_ROM_HEADER_BUF, HW_ROM_HEADER_BUF_END - HW_ROM_HEADER_BUF );
|
MI_CpuCopy32( (void *)HW_TWL_ROM_HEADER_BUF, (void *)HW_ROM_HEADER_BUF, HW_ROM_HEADER_BUF_END - HW_ROM_HEADER_BUF );
|
||||||
|
|
||||||
|
return AUTH_RESULT_SUCCEEDED;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ロード済みの指定タイトルの認証とブートを行う
|
||||||
|
AuthResult SYSM_AuthenticateTitle( TitleProperty *pBootTitle )
|
||||||
|
{
|
||||||
// パラメータチェック
|
// パラメータチェック
|
||||||
if( !SYSMi_CheckTitlePointer( pBootTitle ) ) {
|
if( !SYSMi_CheckTitlePointer( pBootTitle ) ) {
|
||||||
return AUTH_RESULT_TITLE_POINTER_ERROR;
|
return AUTH_RESULT_TITLE_POINTER_ERROR;
|
||||||
@ -485,12 +491,25 @@ OS_TPrintf("RebootSystem failed: cant read file(%d, %d)\n", source[i], len);
|
|||||||
SYSM_SetMountInfo ( pBootTitle->titleID );
|
SYSM_SetMountInfo ( pBootTitle->titleID );
|
||||||
SYSM_SetBootSRLPath( pBootTitle->titleID );
|
SYSM_SetBootSRLPath( pBootTitle->titleID );
|
||||||
|
|
||||||
// 起動。
|
BOOT_Ready(); // never return.
|
||||||
BOOT_Ready(); // never return;
|
|
||||||
|
|
||||||
return AUTH_RESULT_SUCCEEDED;
|
return AUTH_RESULT_SUCCEEDED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 指定タイトルの認証&ロード ※1フレームじゃ終わらん。
|
||||||
|
// もしかすると使わないかも
|
||||||
|
AuthResult SYSM_LoadAndAuthenticateTitle( TitleProperty *pBootTitle )
|
||||||
|
{
|
||||||
|
AuthResult result;
|
||||||
|
// 指定タイトルのロード
|
||||||
|
result = SYSM_LoadTitle( pBootTitle );
|
||||||
|
|
||||||
|
if (result != AUTH_RESULT_SUCCEEDED) return result;
|
||||||
|
|
||||||
|
// 認証
|
||||||
|
return SYSM_AuthenticateTitle( pBootTitle );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
//
|
//
|
||||||
|
|||||||
@ -35,6 +35,7 @@
|
|||||||
|
|
||||||
extern u32 bg_char_data[16 * 3];
|
extern u32 bg_char_data[16 * 3];
|
||||||
extern u16 bg_scr_data[32 * 32];
|
extern u16 bg_scr_data[32 * 32];
|
||||||
|
extern u16 bg_scr_data2[32 * 32];
|
||||||
|
|
||||||
// function's prototype declaration---------------------
|
// function's prototype declaration---------------------
|
||||||
static void DrawBackLightSwitch(void);
|
static void DrawBackLightSwitch(void);
|
||||||
@ -96,8 +97,7 @@ static void NTRBannerInit()
|
|||||||
MI_CpuClearFast(old_titleIdArray, sizeof(old_titleIdArray) );
|
MI_CpuClearFast(old_titleIdArray, sizeof(old_titleIdArray) );
|
||||||
MI_DmaFill32(3, banner_oam_attr, 192, sizeof(banner_oam_attr)); // let out of the screen if not display
|
MI_DmaFill32(3, banner_oam_attr, 192, sizeof(banner_oam_attr)); // let out of the screen if not display
|
||||||
|
|
||||||
// ここでやるべきじゃない気がするBGとOBJの設定
|
// ここでやるべきじゃない気がするOBJの設定
|
||||||
GX_SetVisiblePlane(GX_PLANEMASK_OBJ | GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1); // display only OBJ&BG0
|
|
||||||
GX_SetOBJVRamModeChar(GX_OBJVRAMMODE_CHAR_1D_128K); // 2D mapping mode
|
GX_SetOBJVRamModeChar(GX_OBJVRAMMODE_CHAR_1D_128K); // 2D mapping mode
|
||||||
|
|
||||||
// パレット読み込み
|
// パレット読み込み
|
||||||
@ -111,7 +111,7 @@ static void NTRBannerInit()
|
|||||||
G2_SetOBJAttr( &banner_oam_attr[l], // OAM pointer
|
G2_SetOBJAttr( &banner_oam_attr[l], // OAM pointer
|
||||||
128, // X position
|
128, // X position
|
||||||
96, // Y position
|
96, // Y position
|
||||||
0, // Priority
|
1, // Priority
|
||||||
GX_OAM_MODE_NORMAL, // Bitmap mode
|
GX_OAM_MODE_NORMAL, // Bitmap mode
|
||||||
FALSE, // mosaic off
|
FALSE, // mosaic off
|
||||||
GX_OAM_EFFECT_NONE, // affine off
|
GX_OAM_EFFECT_NONE, // affine off
|
||||||
@ -268,6 +268,12 @@ void LauncherInit( TitleProperty *pTitleList )
|
|||||||
GX_LoadBG1Char(bg_char_data, 0, sizeof(bg_char_data));
|
GX_LoadBG1Char(bg_char_data, 0, sizeof(bg_char_data));
|
||||||
GX_LoadBG1Scr(bg_scr_data, 0, sizeof(bg_scr_data));
|
GX_LoadBG1Scr(bg_scr_data, 0, sizeof(bg_scr_data));
|
||||||
|
|
||||||
|
// フェードアウト用BGデータ作成とロード
|
||||||
|
SVC_CpuClear( 0x0004, &bg_scr_data2, sizeof(bg_scr_data2), 16 );
|
||||||
|
DC_FlushRange(&bg_scr_data2, sizeof(bg_scr_data2));
|
||||||
|
GX_LoadBG2Char(bg_char_data, 0, sizeof(bg_char_data));
|
||||||
|
GX_LoadBG2Scr(bg_scr_data2, 0, sizeof(bg_scr_data2));
|
||||||
|
|
||||||
DrawBackLightSwitch();
|
DrawBackLightSwitch();
|
||||||
|
|
||||||
PrintfSJIS( 0, 0, TXT_COLOR_BLUE, "TWL-SYSTEM MENU ver.", SYSMENU_VER );
|
PrintfSJIS( 0, 0, TXT_COLOR_BLUE, "TWL-SYSTEM MENU ver.", SYSMENU_VER );
|
||||||
@ -276,7 +282,10 @@ void LauncherInit( TitleProperty *pTitleList )
|
|||||||
|
|
||||||
GetAndDrawRTCData( &g_rtcDraw, TRUE );
|
GetAndDrawRTCData( &g_rtcDraw, TRUE );
|
||||||
|
|
||||||
GX_SetVisiblePlane( GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1 );
|
GX_SetVisiblePlane( GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1 | GX_PLANEMASK_BG2 | GX_PLANEMASK_OBJ );
|
||||||
|
G2_SetBlendAlpha(GX_BLEND_PLANEMASK_BG2,
|
||||||
|
GX_BLEND_PLANEMASK_BG0 | GX_BLEND_PLANEMASK_BG1 | GX_BLEND_PLANEMASK_OBJ, 0,31);
|
||||||
|
|
||||||
GX_DispOn();
|
GX_DispOn();
|
||||||
GXS_DispOn();
|
GXS_DispOn();
|
||||||
|
|
||||||
@ -294,6 +303,8 @@ TitleProperty *LauncherMain( TitleProperty *pTitleList )
|
|||||||
BOOL tp_select = FALSE;
|
BOOL tp_select = FALSE;
|
||||||
static int csr_v = 0;
|
static int csr_v = 0;
|
||||||
static int selected = 0;
|
static int selected = 0;
|
||||||
|
static int fadecount = 0;
|
||||||
|
TitleProperty *ret = NULL;
|
||||||
|
|
||||||
// RTC情報の取得&表示
|
// RTC情報の取得&表示
|
||||||
GetAndDrawRTCData( &g_rtcDraw, FALSE );
|
GetAndDrawRTCData( &g_rtcDraw, FALSE );
|
||||||
@ -317,6 +328,8 @@ TitleProperty *LauncherMain( TitleProperty *pTitleList )
|
|||||||
//--------------------------------------
|
//--------------------------------------
|
||||||
// キー入力処理
|
// キー入力処理
|
||||||
//--------------------------------------
|
//--------------------------------------
|
||||||
|
if(fadecount == 0)
|
||||||
|
{
|
||||||
if(pad.cont & PAD_KEY_RIGHT){ // バナー選択
|
if(pad.cont & PAD_KEY_RIGHT){ // バナー選択
|
||||||
if(csr_v == 0) csr_v = 1;
|
if(csr_v == 0) csr_v = 1;
|
||||||
}
|
}
|
||||||
@ -331,9 +344,17 @@ TitleProperty *LauncherMain( TitleProperty *pTitleList )
|
|||||||
selected = s_csr/CURSOR_PER_SELECT;
|
selected = s_csr/CURSOR_PER_SELECT;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 文字描画クリア
|
if( ( pad.trg & PAD_BUTTON_A ) || ( tp_select ) ) { // メニュー項目への分岐
|
||||||
NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_NULL );
|
if(pTitleList[selected].titleID != 0)
|
||||||
|
{
|
||||||
|
fadecount = 1;
|
||||||
|
ret = &pTitleList[selected];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 描画関係
|
||||||
|
NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_NULL );
|
||||||
PrintfSJIS( 0, 0, TXT_COLOR_BLUE, "TWL-SYSTEM MENU ver.%06x", SYSMENU_VER );
|
PrintfSJIS( 0, 0, TXT_COLOR_BLUE, "TWL-SYSTEM MENU ver.%06x", SYSMENU_VER );
|
||||||
DrawBackLightSwitch();
|
DrawBackLightSwitch();
|
||||||
|
|
||||||
@ -341,16 +362,14 @@ TitleProperty *LauncherMain( TitleProperty *pTitleList )
|
|||||||
NTRBannerDraw( s_csr, selected, pTitleList );
|
NTRBannerDraw( s_csr, selected, pTitleList );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if( ( pad.trg & PAD_BUTTON_A ) || ( tp_select ) ) { // メニュー項目への分岐
|
if(fadecount>0)
|
||||||
if(pTitleList[selected].titleID != 0)
|
|
||||||
{
|
{
|
||||||
NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_NULL );
|
// これだと93フレームでフェードアウト終わる
|
||||||
return &pTitleList[selected];
|
G2_ChangeBlendAlpha( fadecount/3, 31-(fadecount/3) );
|
||||||
//return NULL;
|
if(fadecount < 93) fadecount++;
|
||||||
}
|
};// ロード開始&フェードアウト用描画
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
|
|||||||
@ -25,6 +25,7 @@
|
|||||||
// define data-----------------------------------------------------------------
|
// define data-----------------------------------------------------------------
|
||||||
|
|
||||||
// function's prototype-------------------------------------------------------
|
// function's prototype-------------------------------------------------------
|
||||||
|
static BOOL CheckBootStatus( void );
|
||||||
static void INTR_VBlank( void );
|
static void INTR_VBlank( void );
|
||||||
|
|
||||||
// global variable-------------------------------------------------------------
|
// global variable-------------------------------------------------------------
|
||||||
@ -33,6 +34,14 @@ static void INTR_VBlank( void );
|
|||||||
|
|
||||||
// const data------------------------------------------------------------------
|
// const data------------------------------------------------------------------
|
||||||
|
|
||||||
|
// スタック用
|
||||||
|
#define THREAD_PRIO 17
|
||||||
|
#define STACK_SIZE 5120 // 適当
|
||||||
|
static OSThread thread;
|
||||||
|
static u64 stack[ STACK_SIZE / sizeof(u64) ];
|
||||||
|
|
||||||
|
#define COUNT_JOIN_START 32 //2秒ぐらい?
|
||||||
|
static BOOL s_loading = FALSE;
|
||||||
|
|
||||||
// メイン
|
// メイン
|
||||||
void TwlMain( void )
|
void TwlMain( void )
|
||||||
@ -48,6 +57,7 @@ void TwlMain( void )
|
|||||||
};
|
};
|
||||||
u32 state = START;
|
u32 state = START;
|
||||||
TitleProperty *pBootTitle = NULL;
|
TitleProperty *pBootTitle = NULL;
|
||||||
|
TitleProperty *pLoadTitle = NULL;
|
||||||
TitleProperty pTitleList[ LAUNCHER_TITLE_LIST_NUM ];
|
TitleProperty pTitleList[ LAUNCHER_TITLE_LIST_NUM ];
|
||||||
|
|
||||||
// システムメニュー初期化----------
|
// システムメニュー初期化----------
|
||||||
@ -55,6 +65,7 @@ void TwlMain( void )
|
|||||||
|
|
||||||
// OS初期化------------------------
|
// OS初期化------------------------
|
||||||
OS_Init();
|
OS_Init();
|
||||||
|
PM_Init();
|
||||||
|
|
||||||
(void)OS_EnableIrq();
|
(void)OS_EnableIrq();
|
||||||
(void)OS_EnableInterrupts();
|
(void)OS_EnableInterrupts();
|
||||||
@ -115,13 +126,28 @@ void TwlMain( void )
|
|||||||
state = LAUNCHER;
|
state = LAUNCHER;
|
||||||
break;
|
break;
|
||||||
case LAUNCHER:
|
case LAUNCHER:
|
||||||
pBootTitle = LauncherMain( pTitleList );
|
pLoadTitle = LauncherMain( pTitleList );
|
||||||
if( pBootTitle ) {
|
if(!s_loading){
|
||||||
|
if( pLoadTitle ) {
|
||||||
|
void (*func)(void*);
|
||||||
|
func = (void (*)(void *))SYSM_LoadTitle;
|
||||||
|
OS_InitThread();
|
||||||
|
OS_CreateThread( &thread, func, (void*)pLoadTitle, stack+STACK_SIZE/sizeof(u64), STACK_SIZE,THREAD_PRIO );
|
||||||
|
OS_WakeupThreadDirect( &thread );
|
||||||
|
s_loading = TRUE;
|
||||||
|
pBootTitle = pLoadTitle;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(OS_IsThreadTerminated( &thread ))
|
||||||
|
{
|
||||||
|
GX_DispOff();
|
||||||
|
GXS_DispOff();
|
||||||
state = AUTHENTICATE;
|
state = AUTHENTICATE;
|
||||||
|
s_loading = FALSE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case AUTHENTICATE:
|
case AUTHENTICATE:
|
||||||
switch ( SYSM_LoadAndAuthenticateTitle( pBootTitle ) ) { // アプリロード&認証 成功時:never return
|
switch ( SYSM_AuthenticateTitle( pBootTitle ) ) { // アプリ認証&ブート 成功時:never return
|
||||||
case AUTH_PROCESSING:
|
case AUTH_PROCESSING:
|
||||||
break;
|
break;
|
||||||
case AUTH_RESULT_TITLE_POINTER_ERROR:
|
case AUTH_RESULT_TITLE_POINTER_ERROR:
|
||||||
@ -138,6 +164,86 @@ void TwlMain( void )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ブート状態を確認し、ロゴ表示有無を判断する-------
|
||||||
|
static BOOL CheckBootStatus(void)
|
||||||
|
{
|
||||||
|
#if 0
|
||||||
|
BOOL boot_decision = FALSE; // 「ブート内容未定」に
|
||||||
|
BOOL other_shortcut_off = FALSE;
|
||||||
|
|
||||||
|
//-----------------------------------------------------
|
||||||
|
// デバッグ用コンパイルスイッチによる挙動
|
||||||
|
//-----------------------------------------------------
|
||||||
|
{
|
||||||
|
|
||||||
|
#ifdef __LOGO_SKIP // ※デバッグ用ロゴスキップ
|
||||||
|
SetLogoEnable( FALSE ); // ロゴ表示スキップ
|
||||||
|
#endif /* __LOGO_SKIP */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-----------------------------------------------------
|
||||||
|
// NITRO設定データ未入力時の設定メニューショートカット起動
|
||||||
|
//-----------------------------------------------------
|
||||||
|
#ifdef __DIRECT_BOOT_BMENU_ENABLE // ※NITRO設定データ未入力時のブートメニュー直接起動スイッチがONか?
|
||||||
|
if( !TSD_IsSetTP() ||
|
||||||
|
!TSD_IsSetLanguage() ||
|
||||||
|
!TSD_IsSetDateTime() ||
|
||||||
|
!TSD_IsSetUserColor() ||
|
||||||
|
!TSD_IsSetNickname() ) { // TP,言語,RTC,ニックネームがセットされていなければ、ロゴ表示もゲームロードも行わず、ブートメニューをショートカット起動。
|
||||||
|
|
||||||
|
if( ( pad.cont & PAD_PRODUCTION_NITRO_SHORTCUT ) == PAD_PRODUCTION_NITRO_SHORTCUT ) {
|
||||||
|
other_shortcut_off = TRUE; // 量産工程用のキーショートカットが押されていたら、設定メニュー起動はなし。
|
||||||
|
}else if( !SYSM_IsInspectNITROCard() ) { // 但し、量産用のキーショートカットが押されている時か、NITRO検査カードがささっている時は、ブートメニューへのショートカット起動は行わない。
|
||||||
|
SYSM_SetBootFlag( BFLG_BOOT_BMENU );
|
||||||
|
SetLogoEnable( FALSE );
|
||||||
|
return TRUE; // 「ブート内容決定」でリターン
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* __DIRECT_BOOT_BMENU_ENABLE */
|
||||||
|
|
||||||
|
|
||||||
|
//-----------------------------------------------------
|
||||||
|
// キーショートカット起動
|
||||||
|
//-----------------------------------------------------
|
||||||
|
if( !other_shortcut_off
|
||||||
|
// && !TSD_IsAutoBoot()
|
||||||
|
) {
|
||||||
|
// 他ショートカットONかつオート起動OFFの時
|
||||||
|
u32 nowBootFlag = 0;
|
||||||
|
|
||||||
|
if(pad.cont & PAD_BUTTON_R){ // Rボタン押下起動なら、ロゴ表示なしでAGBゲームへ
|
||||||
|
SetLogoEnable( FALSE );
|
||||||
|
nowBootFlag = BFLG_BOOT_AGB;
|
||||||
|
}else if(pad.cont & PAD_BUTTON_L){ // Lボタン押下起動なら、ロゴ表示後にNITROゲームへ
|
||||||
|
nowBootFlag = BFLG_BOOT_NITRO;
|
||||||
|
}else if(pad.cont & PAD_BUTTON_B){ // Bボタン押下起動なら、ロゴ表示後にブートメニューへ
|
||||||
|
nowBootFlag = BFLG_BOOT_BMENU;
|
||||||
|
}
|
||||||
|
if( nowBootFlag ) {
|
||||||
|
SYSM_SetBootFlag( nowBootFlag );
|
||||||
|
return TRUE; // 「ブート内容決定」でリターン
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-----------------------------------------------------
|
||||||
|
// 自動起動オプション有効時の挙動
|
||||||
|
//-----------------------------------------------------
|
||||||
|
#ifndef __SYSM_DEBUG
|
||||||
|
// if( TSD_IsAutoBoot() ) {
|
||||||
|
if( 0 ) {
|
||||||
|
if ( SYSM_IsExistCard() ) { // NITROカードのみの時はNITRO起動
|
||||||
|
SYSM_SetBootFlag( BFLG_BOOT_NITRO );
|
||||||
|
return TRUE; // 「ブート内容決定」でリターン
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* __SYSM_DEBUG */
|
||||||
|
#endif
|
||||||
|
return FALSE; // 「ブート内容未定」でリターン
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
// 割り込み処理
|
// 割り込み処理
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
|
|||||||
@ -442,7 +442,7 @@ static BOOL SelectSoftwareKeyFunc( u16 *csr, TPData *tgt )
|
|||||||
s[0] = code;
|
s[0] = code;
|
||||||
s[1] = 0;
|
s[1] = 0;
|
||||||
// rect = NNS_G2dTextCanvasGetTextRect( &gTextCanvas, s );
|
// rect = NNS_G2dTextCanvasGetTextRect( &gTextCanvas, s );
|
||||||
// 文字幅じゃ判定が厳しい
|
// 文字幅じゃかなり判定が厳しい……ギリギリまでとってみる
|
||||||
rect.width = CLIST_MARGIN;
|
rect.width = CLIST_MARGIN;
|
||||||
rect.height = CLIST_MARGIN;
|
rect.height = CLIST_MARGIN;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,6 +8,8 @@ u32 bg_char_data[16 * 3] = {
|
|||||||
0xeeeeeeee, 0xeeeeeeee, 0xeeeeeeee, 0xeeeeeeee,
|
0xeeeeeeee, 0xeeeeeeee, 0xeeeeeeee, 0xeeeeeeee,
|
||||||
0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,// 0003h
|
0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,// 0003h
|
||||||
0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
|
0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
|
||||||
|
0x11111111, 0x11111111, 0x11111111, 0x11111111,// 0004h
|
||||||
|
0x11111111, 0x11111111, 0x11111111, 0x11111111,
|
||||||
};
|
};
|
||||||
|
|
||||||
// BGスクリーンデータ1
|
// BGスクリーンデータ1
|
||||||
@ -62,3 +64,5 @@ u16 bg_scr_data[32 * 32]=
|
|||||||
0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,//23
|
0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,//23
|
||||||
0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,
|
0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,
|
||||||
};// Buffer for screen data(背景の枠)
|
};// Buffer for screen data(背景の枠)
|
||||||
|
|
||||||
|
u16 bg_scr_data2[32 * 32];//スクリーンデータ2
|
||||||
@ -256,13 +256,20 @@ static void InitScreen( void )
|
|||||||
G2_SetBG1Control(
|
G2_SetBG1Control(
|
||||||
GX_BG_SCRSIZE_TEXT_256x256, // 256pix x 256pix text
|
GX_BG_SCRSIZE_TEXT_256x256, // 256pix x 256pix text
|
||||||
GX_BG_COLORMODE_16, // use 16 colors mode
|
GX_BG_COLORMODE_16, // use 16 colors mode
|
||||||
GX_BG_SCRBASE_0xf000, // screen base offset + 0x0000 is the address for BG #1 screen
|
GX_BG_SCRBASE_0xe800, // screen base offset + 0x0000 is the address for BG #1 screen
|
||||||
GX_BG_CHARBASE_0x10000, // character base offset + 0x04000 is the address for BG #0 characters
|
GX_BG_CHARBASE_0x10000, // character base offset + 0x04000 is the address for BG #0 characters
|
||||||
GX_BG_EXTPLTT_01 // use BGExtPltt slot #0 if BGExtPltt is enabled
|
GX_BG_EXTPLTT_01 // use BGExtPltt slot #0 if BGExtPltt is enabled
|
||||||
);
|
);
|
||||||
|
G2_SetBG2ControlText(
|
||||||
|
GX_BG_SCRSIZE_TEXT_256x256, // 256pix x 256pix text
|
||||||
|
GX_BG_COLORMODE_16, // use 16 colors mode
|
||||||
|
GX_BG_SCRBASE_0xd800, // screen base offset + 0x0000 is the address for BG #1 screen
|
||||||
|
GX_BG_CHARBASE_0x14000 // character base offset + 0x04000 is the address for BG #0 characters
|
||||||
|
);
|
||||||
GX_SetVisiblePlane( GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1);
|
GX_SetVisiblePlane( GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1);
|
||||||
G2_SetBG0Priority(0);
|
G2_SetBG2Priority(0);
|
||||||
G2_SetBG1Priority(1);
|
G2_SetBG0Priority(1);
|
||||||
|
G2_SetBG1Priority(2);
|
||||||
|
|
||||||
// サブ画面 BG 0 を設定
|
// サブ画面 BG 0 を設定
|
||||||
G2S_SetBG0Control(
|
G2S_SetBG0Control(
|
||||||
|
|||||||
@ -83,6 +83,8 @@ extern int SYSM_GetCardTitleList( TitleProperty *pTitleList_Card ); //
|
|||||||
extern int SYSM_GetNandTitleList( TitleProperty *pTitleList_Nand, int size ); // NAND アプリタイトルリストの取得
|
extern int SYSM_GetNandTitleList( TitleProperty *pTitleList_Nand, int size ); // NAND アプリタイトルリストの取得
|
||||||
|
|
||||||
// アプリ起動
|
// アプリ起動
|
||||||
|
extern AuthResult SYSM_LoadTitle( TitleProperty *pBootTitle ); // 指定したTitlePropertyをロード
|
||||||
|
extern AuthResult SYSM_AuthenticateTitle( TitleProperty *pBootTitle ); // 指定したTitlePropertyを認証してブート
|
||||||
extern AuthResult SYSM_LoadAndAuthenticateTitle( TitleProperty *pBootTitle ); // 指定したTitlePropertyをロード&認証してブート
|
extern AuthResult SYSM_LoadAndAuthenticateTitle( TitleProperty *pBootTitle ); // 指定したTitlePropertyをロード&認証してブート
|
||||||
// 成功時は、never return.
|
// 成功時は、never return.
|
||||||
// デバイス制御
|
// デバイス制御
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user