mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
ダイレクトブート時、アプリに引き渡すタイトルリストがおかしくなっていたのを修正
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1632 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
9e169f7548
commit
633e5602b3
@ -111,6 +111,8 @@ static u8 *s_calc_hash = NULL;
|
|||||||
static BOOL s_b_dev = FALSE;
|
static BOOL s_b_dev = FALSE;
|
||||||
static BOOL s_result_phase1 = FALSE;
|
static BOOL s_result_phase1 = FALSE;
|
||||||
|
|
||||||
|
static BOOL s_nand_title_list_maker_info_enabled = FALSE;
|
||||||
|
|
||||||
static u8 dht_buffer[DS_HASH_TABLE_SIZE] ATTRIBUTE_ALIGN(256);
|
static u8 dht_buffer[DS_HASH_TABLE_SIZE] ATTRIBUTE_ALIGN(256);
|
||||||
static DHTFile *const dht = (DHTFile*)dht_buffer;
|
static DHTFile *const dht = (DHTFile*)dht_buffer;
|
||||||
static const u8* hash0;
|
static const u8* hash0;
|
||||||
@ -359,7 +361,7 @@ BOOL SYSMi_CopyCardBanner( void )
|
|||||||
|
|
||||||
|
|
||||||
// インポートされているすべてのNANDアプリを列挙したリストの準備
|
// インポートされているすべてのNANDアプリを列挙したリストの準備
|
||||||
// SYSM_GetNandTitleListおよびSYSM_TryToBootTitle前に呼ぶ必要あり
|
// SYSM_GetNandTitleListおよびSYSM_GetNandTitleListMakerInfo前に呼ぶ必要あり
|
||||||
BOOL SYSM_InitNandTitleList( void )
|
BOOL SYSM_InitNandTitleList( void )
|
||||||
{
|
{
|
||||||
OSTick start;
|
OSTick start;
|
||||||
@ -481,9 +483,30 @@ static BOOL MakeTitleListMakerInfoFromTitleID( TitleListMakerInfo *info, OSTitle
|
|||||||
return SYSM_MakeTitleListMakerInfoFromHeader( info, &e_hs);
|
return SYSM_MakeTitleListMakerInfoFromHeader( info, &e_hs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SYSM_InitNandTitleListを事前に呼ぶ必要あり
|
||||||
|
// この関数か、SYSM_GetNandTitleListのどちらかをSYSM_TryToBootTitle前に呼ぶ必要あり
|
||||||
|
void SYSM_GetNandTitleListMakerInfo( void )
|
||||||
|
{
|
||||||
|
int l;
|
||||||
|
|
||||||
|
if( s_pTitleIDList == NULL || s_pTitleListMakerInfo == NULL )
|
||||||
|
{
|
||||||
|
OS_TPrintf("SYSM_GetNandTitleListMakerInfo failed : SYSM_InitNandTitleList() is not called.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for( l = 0; l < s_listLength; l++ ) {
|
||||||
|
MakeTitleListMakerInfoFromTitleID( &s_pTitleListMakerInfo[l], s_pTitleIDList[ l ] );
|
||||||
|
}
|
||||||
|
|
||||||
|
s_nand_title_list_maker_info_enabled = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
// ローンチ対象となるNANDタイトルリストの取得
|
// ローンチ対象となるNANDタイトルリストの取得
|
||||||
// listNumには、pTitleList_Nandの長さを与える
|
// listNumには、pTitleList_Nandの長さを与える
|
||||||
// 得られる最大のタイトル数は、(LAUNCHER_TITLE_LIST_NUM - 1)に制限される(ランチャーが表示できる最大数からカードぶんを引いた数)
|
// 得られる最大のタイトル数は、(LAUNCHER_TITLE_LIST_NUM - 1)に制限される(ランチャーが表示できる最大数からカードぶんを引いた数)
|
||||||
|
// SYSM_InitNandTitleListを事前に呼ぶ必要あり
|
||||||
|
// この関数か、SYSM_GetNandTitleListMakerInfoのどちらかをSYSM_TryToBootTitle前に呼ぶ必要あり
|
||||||
// return:取得したNANDタイトルの数
|
// return:取得したNANDタイトルの数
|
||||||
int SYSM_GetNandTitleList( TitleProperty *pTitleList_Nand, int listNum )
|
int SYSM_GetNandTitleList( TitleProperty *pTitleList_Nand, int listNum )
|
||||||
{
|
{
|
||||||
@ -493,7 +516,11 @@ int SYSM_GetNandTitleList( TitleProperty *pTitleList_Nand, int listNum )
|
|||||||
int validNum = 0;
|
int validNum = 0;
|
||||||
NAMTitleId titleIDArray[ LAUNCHER_TITLE_LIST_NUM - 1 ];// ローンチ可能なタイトルリストの一時置き場
|
NAMTitleId titleIDArray[ LAUNCHER_TITLE_LIST_NUM - 1 ];// ローンチ可能なタイトルリストの一時置き場
|
||||||
|
|
||||||
if( s_pTitleIDList == NULL || s_pTitleListMakerInfo == NULL ) return -1;
|
if( s_pTitleIDList == NULL || s_pTitleListMakerInfo == NULL )
|
||||||
|
{
|
||||||
|
OS_TPrintf("SYSM_GetNandTitleList failed : SYSM_InitNandTitleList() is not called.");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
// 取得したタイトルがローンチ対象かどうかをチェック
|
// 取得したタイトルがローンチ対象かどうかをチェック
|
||||||
for( l = 0; l < s_listLength; l++ ) {
|
for( l = 0; l < s_listLength; l++ ) {
|
||||||
@ -516,6 +543,7 @@ int SYSM_GetNandTitleList( TitleProperty *pTitleList_Nand, int listNum )
|
|||||||
{
|
{
|
||||||
MakeTitleListMakerInfoFromTitleID( &s_pTitleListMakerInfo[l], s_pTitleIDList[ l ] );
|
MakeTitleListMakerInfoFromTitleID( &s_pTitleListMakerInfo[l], s_pTitleIDList[ l ] );
|
||||||
}
|
}
|
||||||
|
s_nand_title_list_maker_info_enabled = TRUE;
|
||||||
|
|
||||||
// 念のため残り領域を0クリア
|
// 念のため残り領域を0クリア
|
||||||
for( l = validNum; l < LAUNCHER_TITLE_LIST_NUM - 1; l++ ) {
|
for( l = validNum; l < LAUNCHER_TITLE_LIST_NUM - 1; l++ ) {
|
||||||
@ -1676,6 +1704,7 @@ BOOL SYSM_IsAuthenticateTitleFinished( void )
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ロード済みの指定タイトルの認証とブートを行う
|
// ロード済みの指定タイトルの認証とブートを行う
|
||||||
|
// SYSM_GetNandTitleListまたはSYSM_GetNandTitleListMakerInfoのどちらかをSYSM_TryToBootTitle前に呼ぶ必要あり
|
||||||
AuthResult SYSM_TryToBootTitle( TitleProperty *pBootTitle )
|
AuthResult SYSM_TryToBootTitle( TitleProperty *pBootTitle )
|
||||||
{
|
{
|
||||||
if(s_authResult != AUTH_RESULT_SUCCEEDED)
|
if(s_authResult != AUTH_RESULT_SUCCEEDED)
|
||||||
@ -1737,6 +1766,11 @@ static void SYSMi_makeTitleIdList( void )
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( !s_nand_title_list_maker_info_enabled )
|
||||||
|
{
|
||||||
|
OS_TPrintf("SYSMi_makeTitleIdList failed: SYSM_GetNandTitleList or SYSM_GetNandTitleListMakerInfo is not called.\n");
|
||||||
|
}
|
||||||
|
|
||||||
// とりあえずゼロクリア
|
// とりあえずゼロクリア
|
||||||
MI_CpuClear8( (void *)HW_OS_TITLE_ID_LIST, HW_OS_TITLE_ID_LIST_SIZE );
|
MI_CpuClear8( (void *)HW_OS_TITLE_ID_LIST, HW_OS_TITLE_ID_LIST_SIZE );
|
||||||
|
|
||||||
|
|||||||
@ -303,6 +303,9 @@ void TwlMain( void )
|
|||||||
if( !pBootTitle ) {
|
if( !pBootTitle ) {
|
||||||
// NAND & カードアプリリスト取得
|
// NAND & カードアプリリスト取得
|
||||||
(void)SYSM_GetNandTitleList( s_titleList, LAUNCHER_TITLE_LIST_NUM ); // NANDアプリリストの取得(内蔵アプリはs_titleList[1]から格納される)
|
(void)SYSM_GetNandTitleList( s_titleList, LAUNCHER_TITLE_LIST_NUM ); // NANDアプリリストの取得(内蔵アプリはs_titleList[1]から格納される)
|
||||||
|
}else
|
||||||
|
{
|
||||||
|
SYSM_GetNandTitleListMakerInfo(); // アプリに引き渡すタイトルリスト作成用情報の取得
|
||||||
}
|
}
|
||||||
// end時間計測5
|
// end時間計測5
|
||||||
#if (MEASURE_TIME == 1)
|
#if (MEASURE_TIME == 1)
|
||||||
|
|||||||
@ -127,6 +127,7 @@ extern int SYSM_GetCardTitleList( TitleProperty *pTitleList_Card ); //
|
|||||||
extern BOOL SYSM_InitNandTitleList( void ); // NANDアプリタイトルリスト取得準備
|
extern BOOL SYSM_InitNandTitleList( void ); // NANDアプリタイトルリスト取得準備
|
||||||
extern void SYSM_FreeNandTitleList( void ); // NANDアプリタイトルリスト
|
extern void SYSM_FreeNandTitleList( void ); // NANDアプリタイトルリスト
|
||||||
extern int SYSM_GetNandTitleList( TitleProperty *pTitleList_Nand, int size ); // NAND アプリタイトルリストの取得
|
extern int SYSM_GetNandTitleList( TitleProperty *pTitleList_Nand, int size ); // NAND アプリタイトルリストの取得
|
||||||
|
extern void SYSM_GetNandTitleListMakerInfo( void ); // アプリ引き渡しタイトルリスト作成用情報の取得(ダイレクトブート用)
|
||||||
|
|
||||||
// アプリ起動
|
// アプリ起動
|
||||||
extern void SYSM_StartLoadTitle( TitleProperty *pBootTitle ); // 指定したTitlePropertyを別スレッドでロード開始
|
extern void SYSM_StartLoadTitle( TitleProperty *pBootTitle ); // 指定したTitlePropertyを別スレッドでロード開始
|
||||||
@ -151,7 +152,7 @@ extern BOOL SYSM_IsLoadTitlePaused(void); //
|
|||||||
extern void SYSM_ResumeLoadingThread( BOOL force ); // ローディングスレッドが一時停止していたら再開
|
extern void SYSM_ResumeLoadingThread( BOOL force ); // ローディングスレッドが一時停止していたら再開
|
||||||
|
|
||||||
extern BOOL SYSM_MakeTitleListMakerInfoFromHeader( TitleListMakerInfo *info, ROM_Header_Short *hs);
|
extern BOOL SYSM_MakeTitleListMakerInfoFromHeader( TitleListMakerInfo *info, ROM_Header_Short *hs);
|
||||||
// タイトルリスト作成用情報をヘッダ情報から作成
|
// アプリ引き渡しタイトルリスト作成用情報をヘッダ情報から作成
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user