From e18627491da81db2b70e11581dd8224f8faa8b26 Mon Sep 17 00:00:00 2001 From: yoshida_teruhisa Date: Wed, 26 Mar 2008 06:54:41 +0000 Subject: [PATCH] =?UTF-8?q?=E3=83=BBLauncher=E8=B5=B7=E5=8B=95=E6=99=82?= =?UTF-8?q?=E7=89=B9=E5=AE=9A=E6=9D=A1=E4=BB=B6=E5=8C=96=E3=81=A7=E8=B5=B7?= =?UTF-8?q?=E5=8B=95=E3=81=99=E3=82=8B=E6=9C=AC=E4=BD=93=E8=A8=AD=E5=AE=9A?= =?UTF-8?q?=E3=81=AE=E3=82=BF=E3=82=A4=E3=83=88=E3=83=ABID=E3=82=92NAM?= =?UTF-8?q?=E3=82=92=E5=88=A9=E7=94=A8=E3=81=97=E3=81=A6=E3=83=AA=E3=82=B9?= =?UTF-8?q?=E3=83=88=E3=81=8B=E3=82=89=E5=8F=96=E5=BE=97=E3=81=99=E3=82=8B?= =?UTF-8?q?=E3=82=88=E3=81=86=E3=81=AB=E5=A4=89=E6=9B=B4=20=E3=83=BB?= =?UTF-8?q?=E7=84=A1=E9=A7=84=E3=81=AA=E3=82=B3=E3=83=BC=E3=83=89=E3=82=92?= =?UTF-8?q?=E7=99=BA=E8=A6=8B=E3=81=97=E3=81=9F=E3=81=AE=E3=81=A7=E5=87=A6?= =?UTF-8?q?=E5=88=86?= 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@955 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../libraries_sysmenu/boot/ARM9/src/bootAPI.c | 6 --- .../sysmenu/ARM9/src/sysmenu_lib.c | 49 +++++++++++++++++-- 2 files changed, 44 insertions(+), 11 deletions(-) diff --git a/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c b/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c index d32ece4e..57cf9a0f 100644 --- a/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c +++ b/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c @@ -140,12 +140,6 @@ void BOOT_Ready( void ) NULL, }; - // 再配置リストの作成と設定(ほぼARM7側でやるのでこちらは空) - static u32 relocate_list[] = - { - NULL - }; - REBOOTTarget target = REBOOT_TARGET_TWL_SYSTEM; // アプリケーション選択 diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c index a8a5fce5..17200160 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c @@ -30,6 +30,7 @@ extern void LCFG_VerifyAndRecoveryNTRSettings( void ); static TitleProperty *SYSMi_CheckShortcutBoot( void ); static void SYSMi_CheckCardCloneBoot( void ); void SYSMi_SendKeysToARM7( void ); +static OSTitleId SYSMi_getTitleIdOfMachineSettings( void ); // global variable------------------------------------------------------------- void *(*SYSMi_Alloc)( u32 size ); @@ -310,8 +311,11 @@ static TitleProperty *SYSMi_CheckShortcutBoot( void ) if( ( PAD_Read() & SYSM_PAD_SHORTCUT_MACHINE_SETTINGS ) == SYSM_PAD_SHORTCUT_MACHINE_SETTINGS ) { - s_bootTitle.flags.isLogoSkip = TRUE; // ロゴデモを飛ばす - s_bootTitle.titleID = TITLE_ID_MACHINE_SETTINGS; + s_bootTitle.titleID = SYSMi_getTitleIdOfMachineSettings(); + if(s_bootTitle.titleID != 0) + { + s_bootTitle.flags.isLogoSkip = TRUE; // 本体設定を起動できる時だけロゴデモを飛ばす + } s_bootTitle.flags.bootType = LAUNCHER_BOOTTYPE_NAND; s_bootTitle.flags.isValid = TRUE; s_bootTitle.flags.isAppRelocate = FALSE; @@ -346,7 +350,7 @@ static TitleProperty *SYSMi_CheckShortcutBoot( void ) }else { s_bootTitle.flags.isLogoSkip = TRUE; // ロゴデモを飛ばす - s_bootTitle.titleID = TITLE_ID_MACHINE_SETTINGS; + s_bootTitle.titleID = SYSMi_getTitleIdOfMachineSettings(); s_bootTitle.flags.bootType = LAUNCHER_BOOTTYPE_NAND; s_bootTitle.flags.isValid = TRUE; s_bootTitle.flags.isAppRelocate = FALSE; @@ -361,8 +365,11 @@ static TitleProperty *SYSMi_CheckShortcutBoot( void ) #if 0 #ifdef ENABLE_INITIAL_SETTINGS_ if( !LCFG_TSD_IsFinishedInitialSetting() ) { - s_bootTitle.flags.isLogoSkip = TRUE; // ロゴデモを飛ばす - s_bootTitle.titleID = TITLE_ID_MACHINE_SETTINGS; + s_bootTitle.titleID = SYSMi_getTitleIdOfMachineSettings(); + if(s_bootTitle.titleID != 0) + { + s_bootTitle.flags.isLogoSkip = TRUE; // 本体設定を起動できる時だけロゴデモを飛ばす + } s_bootTitle.flags.bootType = LAUNCHER_BOOTTYPE_NAND; s_bootTitle.flags.isValid = TRUE; s_bootTitle.flags.isAppRelocate = FALSE; @@ -396,6 +403,38 @@ static void SYSMi_CheckCardCloneBoot( void ) #endif } +// NAM_Initされるようになったので、NAMで本体設定のID取得 +// それらしきものがインストールされていない場合は0(NULL)をリターン +static OSTitleId SYSMi_getTitleIdOfMachineSettings( void ) +{ + OSTitleId ret = NULL; + int l; + int getNum; + int validNum = 0; + NAMTitleId *pTitleIDList = NULL; + + // インストールされているタイトルの取得 + getNum = NAM_GetNumTitles(); + pTitleIDList = SYSM_Alloc( sizeof(NAMTitleId) * getNum ); + if( pTitleIDList == NULL ) { + OS_TPrintf( "%s: alloc error.\n", __FUNCTION__ ); + return 0; + } + (void)NAM_GetTitleList( pTitleIDList, (u32)getNum ); + + // 取得したタイトルに本体情報のIDがあるかチェック + for( l = 0; l < getNum; l++ ) { + char *code = ((char *)&pTitleIDList[l]) + 1; + if( 0 == STD_CompareNString( code, "ESM", 3 ) ) + { + ret = (OSTitleId)pTitleIDList[l]; + break; + } + } + SYSM_Free( pTitleIDList ); + + return ret; +} //====================================================================== // デバッグ