From 96de8ec173d5df2b4cfcfc94de78d065c82bb160 Mon Sep 17 00:00:00 2001 From: yoshida_teruhisa Date: Fri, 16 Nov 2007 02:54:54 +0000 Subject: [PATCH] =?UTF-8?q?ROM=E3=83=AD=E3=83=BC=E3=83=87=E3=82=A3?= =?UTF-8?q?=E3=83=B3=E3=82=B0=E3=81=AE=E3=82=B9=E3=83=AC=E3=83=83=E3=83=89?= =?UTF-8?q?=E5=8C=96=E3=82=92=E3=83=A9=E3=82=A4=E3=83=96=E3=83=A9=E3=83=AA?= =?UTF-8?q?=E5=86=85=E3=81=A7=E8=A1=8C=E3=81=86=E3=82=88=E3=81=86=E3=81=AB?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3=20ROM=E3=83=AD=E3=83=BC=E3=83=87=E3=82=A3?= =?UTF-8?q?=E3=83=B3=E3=82=B0=E3=82=B9=E3=83=AC=E3=83=83=E3=83=89=E7=B5=82?= =?UTF-8?q?=E4=BA=86=E5=BE=85=E3=81=A1=E3=81=AE=E3=83=9D=E3=83=BC=E3=83=AA?= =?UTF-8?q?=E3=83=B3=E3=82=B0=E4=B8=AD=E5=87=A6=E7=90=86=E3=82=92=E8=8B=A5?= =?UTF-8?q?=E5=B9=B2=E5=8D=98=E7=B4=94=E5=8C=96=20NAND=E3=82=A2=E3=83=97?= =?UTF-8?q?=E3=83=AA=E3=81=AF=E3=83=AA=E3=82=B9=E3=83=88=E3=81=AE2?= =?UTF-8?q?=E7=95=AA=E7=9B=AE=E3=81=8B=E3=82=89=E5=A7=8B=E3=81=BE=E3=82=8B?= =?UTF-8?q?=E3=82=88=E3=81=86=E3=81=AB=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@191 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../sysmenu/ARM9/src/sysmenu_lib.c | 179 ++++++++++-------- .../Launcher/ARM9/src/launcher.c | 75 ++++---- .../Launcher/ARM9/src/launcher.h | 2 + build/systemMenu_RED/Launcher/ARM9/src/main.c | 39 ++-- .../sysmenu/sysmenu_lib/ARM9/sysmenu_api.h | 2 +- 5 files changed, 154 insertions(+), 143 deletions(-) diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c index e20ee757..0089898b 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c @@ -55,7 +55,6 @@ SYSM_work *pSysm; // // static variable------------------------------------------------------------- static BOOL s_isBanner = FALSE; static NTRBannerFile s_bannerBuf; -static NAMTitleId old_titleIdArray[ LAUNCHER_TITLE_LIST_NUM ]; // const data------------------------------------------------------------------ @@ -132,8 +131,7 @@ void SYSM_ReadParameters( void ) //NAMの初期化 //NAM_Init(AllocForNAM,FreeForNAM); - - MI_CpuClearFast(old_titleIdArray, sizeof(old_titleIdArray) ); + } @@ -182,82 +180,73 @@ int SYSM_GetNandTitleList( TitleProperty *pTitleList_Nand, int size) // とりあえずALL int l; int gotten; - NAMTitleId titleIdArray[ LAUNCHER_TITLE_LIST_NUM ]; + NAMTitleId titleIdArray[ LAUNCHER_TITLE_LIST_NUM - 1 ]; static TWLBannerFile bannerBuf[ LAUNCHER_TITLE_LIST_NUM ]; - gotten = NAM_GetTitleList(titleIdArray, LAUNCHER_TITLE_LIST_NUM ); + gotten = NAM_GetTitleList( titleIdArray, LAUNCHER_TITLE_LIST_NUM-1 ); - // バナーの読み込み……別の関数に移すべきかも。 - // 毎フレーム変化を見る必要がある。 - // 前のフレームのNAMTitleIdの配列を残しておき、比較。 - // IDが変化していたら問答無用でバナーを読み込む。 for(l=0;l0) - { - // これだと93フレームでフェードアウト終わる - G2_ChangeBlendAlpha( fadecount/3, 31-(fadecount/3) ); - if(fadecount < 93) fadecount++; - };// ロード開始&フェードアウト用描画 - return ret; } diff --git a/build/systemMenu_RED/Launcher/ARM9/src/launcher.h b/build/systemMenu_RED/Launcher/ARM9/src/launcher.h index 353622ef..4b9d2719 100644 --- a/build/systemMenu_RED/Launcher/ARM9/src/launcher.h +++ b/build/systemMenu_RED/Launcher/ARM9/src/launcher.h @@ -32,6 +32,8 @@ extern "C" { // function---------------------------------------------------------- void LauncherInit( TitleProperty *pTitleList ); + +void LauncherLoading( TitleProperty *pTitleList ); TitleProperty *LauncherMain( TitleProperty *pTitleList ); diff --git a/build/systemMenu_RED/Launcher/ARM9/src/main.c b/build/systemMenu_RED/Launcher/ARM9/src/main.c index 8b2f271d..f433fbfa 100644 --- a/build/systemMenu_RED/Launcher/ARM9/src/main.c +++ b/build/systemMenu_RED/Launcher/ARM9/src/main.c @@ -34,15 +34,6 @@ static void INTR_VBlank( void ); // 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 ) { @@ -51,14 +42,15 @@ void TwlMain( void ) LOGODEMO = 1, LAUNCHER_INIT = 2, LAUNCHER = 3, - AUTHENTICATE = 4, - BOOT = 5, - STOP = 6 + LOADING = 4, + AUTHENTICATE = 5, + BOOT = 6, + STOP = 7 }; u32 state = START; TitleProperty *pBootTitle = NULL; - TitleProperty *pLoadTitle = NULL; TitleProperty pTitleList[ LAUNCHER_TITLE_LIST_NUM ]; + OSThread *thread; // システムメニュー初期化---------- SYSM_Init( Alloc, Free ); // OS_Initの前でコール。 @@ -126,24 +118,19 @@ void TwlMain( void ) state = LAUNCHER; break; case LAUNCHER: - pLoadTitle = LauncherMain( pTitleList ); - 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; - } + pBootTitle = LauncherMain( pTitleList ); + if( pBootTitle ) { + thread = SYSM_LoadTitle( pBootTitle ); + state = LOADING; } - else if(OS_IsThreadTerminated( &thread )) + break; + case LOADING: + LauncherLoading( pTitleList ); + if(OS_IsThreadTerminated( thread )) { GX_DispOff(); GXS_DispOff(); state = AUTHENTICATE; - s_loading = FALSE; } break; case AUTHENTICATE: diff --git a/include/sysmenu/sysmenu_lib/ARM9/sysmenu_api.h b/include/sysmenu/sysmenu_lib/ARM9/sysmenu_api.h index 005a9e73..8dec7b0c 100644 --- a/include/sysmenu/sysmenu_lib/ARM9/sysmenu_api.h +++ b/include/sysmenu/sysmenu_lib/ARM9/sysmenu_api.h @@ -83,7 +83,7 @@ extern int SYSM_GetCardTitleList( TitleProperty *pTitleList_Card ); // extern int SYSM_GetNandTitleList( TitleProperty *pTitleList_Nand, int size ); // NAND アプリタイトルリストの取得 // アプリ起動 -extern AuthResult SYSM_LoadTitle( TitleProperty *pBootTitle ); // 指定したTitlePropertyをロード +extern OSThread* SYSM_LoadTitle( TitleProperty *pBootTitle ); // 指定したTitlePropertyを別スレッドでロード extern AuthResult SYSM_AuthenticateTitle( TitleProperty *pBootTitle ); // 指定したTitlePropertyを認証してブート extern AuthResult SYSM_LoadAndAuthenticateTitle( TitleProperty *pBootTitle ); // 指定したTitlePropertyをロード&認証してブート // 成功時は、never return.