mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
複数TitleIDチェックでも時間がかからないように修正、他見た目修正
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1064 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
301228f70f
commit
b3dc21b388
@ -85,7 +85,6 @@ static u8 version = 0;
|
||||
***************************************************************/
|
||||
static void PreInit(void)
|
||||
{
|
||||
GCDHeader* const gh = &OSi_GetFromBromAddr()->header.gcd;
|
||||
/*
|
||||
バッテリー残量チェック
|
||||
*/
|
||||
@ -100,8 +99,8 @@ static void PreInit(void)
|
||||
#endif
|
||||
}
|
||||
}
|
||||
MI_CpuCopyFast( gh, (void*)HW_ROM_HEADER_BUF, HW_ROM_HEADER_BUF_END - HW_ROM_HEADER_BUF );
|
||||
// MI_CpuCopyFast( gh, (void*)HW_CARD_ROM_HEADER, HW_CARD_ROM_HEADER_SIZE );
|
||||
// GCDヘッダコピー
|
||||
MI_CpuCopyFast( OSi_GetFromBromAddr(), (void*)HW_ROM_HEADER_BUF, HW_ROM_HEADER_BUF_END - HW_ROM_HEADER_BUF );
|
||||
// FromBrom全消去
|
||||
MIi_CpuClearFast( 0, (void*)OSi_GetFromBromAddr(), sizeof(OSFromBromBuf) );
|
||||
}
|
||||
@ -153,7 +152,7 @@ static void PostInit(void)
|
||||
***************************************************************/
|
||||
static void EraseAll(void)
|
||||
{
|
||||
GCDHeader* const gh = &OSi_GetFromBromAddr()->header.gcd;
|
||||
GCDHeader* const gh = (GCDHeader*)HW_ROM_HEADER_BUF;
|
||||
AESi_ResetAesKeyA();
|
||||
AESi_ResetAesKeyB();
|
||||
AESi_ResetAesKeyC();
|
||||
@ -161,6 +160,7 @@ static void EraseAll(void)
|
||||
}
|
||||
|
||||
extern SDMC_ERR_CODE FATFSi_sdmcGoIdle(u16 ports, void (*func1)(),void (*func2)());
|
||||
|
||||
void TwlSpMain( void )
|
||||
{
|
||||
GCDHeader* const gh = &OSi_GetFromBromAddr()->header.gcd;
|
||||
|
||||
@ -193,6 +193,39 @@ BOOL FS_ResolveSrl( OSTitleId titleId )
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: FS_ResolveSrlList
|
||||
|
||||
Description: resolve srl filename with list and store to
|
||||
HW_TWL_FS_BOOT_SRL_PATH_BUF
|
||||
|
||||
Arguments: titleIdList pointer to title id array for srl file
|
||||
nums number of title id
|
||||
|
||||
Returns: -1 if failed, otherwise succeeded titile id number
|
||||
*---------------------------------------------------------------------------*/
|
||||
int FS_ResolveSrlList( const OSTitleId* titleIdList, u32 nums )
|
||||
{
|
||||
int i;
|
||||
MI_CpuClearFast( (char*)HW_TWL_FS_BOOT_SRL_PATH_BUF, HW_FIRM_FS_BOOT_SRL_PATH_BUF_SIZE );
|
||||
if ( !titleIdList || !nums || ES_ERR_OK != ES_InitLib() )
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
for ( i = 0; i < nums; i++ )
|
||||
{
|
||||
if ( ES_ERR_OK == ES_GetContentPath(titleIdList[i], CONTENT_INDEX_BOOT, (char*)HW_TWL_FS_BOOT_SRL_PATH_BUF) )
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ( ES_ERR_OK != ES_CloseLib() )
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
return (i == nums ? -1 : i);
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: FS_ResolveSrlUnsecured
|
||||
|
||||
|
||||
@ -21,10 +21,6 @@
|
||||
|
||||
#define FS_HEADER_AUTH_SIZE 0xe00
|
||||
|
||||
#define MODULE_ALIGNMENT 0x10 // 16バイト単位で読み込む
|
||||
//#define MODULE_ALIGNMENT 0x200 // 512バイト単位で読み込む
|
||||
#define RoundUpModuleSize(value) (((value) + MODULE_ALIGNMENT - 1) & -MODULE_ALIGNMENT)
|
||||
|
||||
#define HASH_UNIT 0x1000
|
||||
|
||||
static ROM_Header* const rh = (ROM_Header*)HW_TWL_ROM_HEADER_BUF;
|
||||
@ -198,11 +194,11 @@ static u32 GetTransferSize( u32 offset, u32 size )
|
||||
{
|
||||
if ( rh->s.enable_aes )
|
||||
{
|
||||
u32 end = offset + RoundUpModuleSize(size);
|
||||
u32 end = offset + size;
|
||||
u32 aes_offset = rh->s.aes_target_rom_offset;
|
||||
u32 aes_end = aes_offset + RoundUpModuleSize(rh->s.aes_target_size);
|
||||
u32 aes_end = aes_offset + rh->s.aes_target_size;
|
||||
u32 aes_offset2 = rh->s.aes_target2_rom_offset;
|
||||
u32 aes_end2 = aes_offset2 + RoundUpModuleSize(rh->s.aes_target2_size);
|
||||
u32 aes_end2 = aes_offset2 + rh->s.aes_target2_size;
|
||||
|
||||
if ( offset >= aes_offset && offset < aes_end )
|
||||
{
|
||||
|
||||
@ -33,7 +33,7 @@
|
||||
PRINT_MEMORY_ADDR を定義すると、そのアドレスからSPrintfを行います(このファイルのみ)
|
||||
FINALROM版でもコードが残るので注意してください。
|
||||
*/
|
||||
//#define PRINT_MEMORY_ADDR 0x02FFC800
|
||||
#define PRINT_MEMORY_ADDR 0x02FFC800
|
||||
|
||||
|
||||
#ifdef PROFILE_ENABLE
|
||||
|
||||
@ -54,7 +54,7 @@ static SVCSignHeapContext acPool;
|
||||
PRINT_MEMORY_ADDR を定義すると、そのアドレスからSPrintfを行います(このファイルのみ)
|
||||
FINALROM版でもコードが残るので注意してください。
|
||||
*/
|
||||
//#define PRINT_MEMORY_ADDR 0x02FFC200
|
||||
#define PRINT_MEMORY_ADDR 0x02FFC200
|
||||
|
||||
//#ifdef SDK_FINALROM // FINALROMで無効化
|
||||
//#undef PROFILE_ENABLE
|
||||
@ -115,41 +115,32 @@ static void PostInit(void)
|
||||
/***************************************************************
|
||||
TryResolveSrl
|
||||
|
||||
NANDに格納された情報からランチャーSRLを解決する
|
||||
リストからランチャーSRLを解決する
|
||||
***************************************************************/
|
||||
static BOOL TryResolveSrl(void)
|
||||
{
|
||||
OSTitleId titleId = MENU_TITLE_ID_HI << 32;
|
||||
OSTitleId titleIdList[] =
|
||||
{
|
||||
MENU_TITLE_ID_HI << 32, // titleId_Lo is resolved by HWSecureInfo
|
||||
MENU_TITLE_ID
|
||||
};
|
||||
int num;
|
||||
if ( !LCFG_ReadHWSecureInfo() )
|
||||
{
|
||||
OS_TPrintf("Failed to load HWSecureInfo.\n");
|
||||
return FALSE;
|
||||
}
|
||||
LCFG_THW_GetLauncherTitleID_Lo( (u8*)&titleId );
|
||||
LCFG_THW_GetLauncherTitleID_Lo( (u8*)&titleIdList[0] );
|
||||
// 4: after LCFG_ReadHWSecureInfo
|
||||
PUSH_PROFILE();
|
||||
|
||||
if ( !FS_ResolveSrl( titleId ) )
|
||||
num = FS_ResolveSrlList( titleIdList, sizeof(titleIdList)/sizeof(titleIdList[0]) );
|
||||
if ( num < 0 )
|
||||
{
|
||||
OS_TPrintf("Failed to call FS_ResolveSrl( 0x%016llx ).\n", titleId);
|
||||
OS_TPrintf("Failed to call FS_ResolveSrlList().\n");
|
||||
return FALSE;
|
||||
}
|
||||
OS_TPrintf("Launcher Title ID: 0x%016llx\n", titleId);
|
||||
return TRUE;
|
||||
}
|
||||
/***************************************************************
|
||||
RetryResolveSrl
|
||||
|
||||
デフォルト設定からランチャーSRLを解決する
|
||||
***************************************************************/
|
||||
static BOOL RetryResolveSrl(void)
|
||||
{
|
||||
if ( !FS_ResolveSrl( MENU_TITLE_ID ) )
|
||||
{
|
||||
OS_TPrintf("Failed to call FS_ResolveSrl( 0x%016llx ).\n", MENU_TITLE_ID);
|
||||
return FALSE;
|
||||
}
|
||||
OS_TPrintf("Launcher Title ID: 0x%016llx\n", MENU_TITLE_ID);
|
||||
OS_TPrintf("Launcher Title ID: 0x%016llx\n", titleIdList[num]);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -170,6 +161,16 @@ static BOOL CheckHeader(void)
|
||||
if ( rhs->enable_aes )
|
||||
{
|
||||
OS_TPrintf("AES Key Type : %s\n", rhs->developer_encrypt ? "FOR DEVELOPMENT" : "FOR PRODUCT");
|
||||
if ( rhs->aes_target_size )
|
||||
{
|
||||
OS_TPrintf("AES address : %08X\n", rhs->aes_target_rom_offset);
|
||||
OS_TPrintf("AES size : %08X\n", rhs->aes_target_size);
|
||||
}
|
||||
if ( rhs->aes_target2_size )
|
||||
{
|
||||
OS_TPrintf("AES2 address : %08X\n", rhs->aes_target2_rom_offset);
|
||||
OS_TPrintf("AES2 size : %08X\n", rhs->aes_target2_size);
|
||||
}
|
||||
}
|
||||
// エントリポイント
|
||||
OS_TPrintf("ARM9 Entry point : %08X\n", rhs->main_entry_address);
|
||||
@ -259,7 +260,7 @@ void TwlMain( void )
|
||||
// 3: after PostInit
|
||||
PUSH_PROFILE();
|
||||
|
||||
if ( !TryResolveSrl() && !RetryResolveSrl() )
|
||||
if ( !TryResolveSrl() )
|
||||
{
|
||||
goto end;
|
||||
}
|
||||
|
||||
@ -62,6 +62,19 @@ BOOL FS_GetTitleBootContentPathFast(char* buf, OSTitleId titleId);
|
||||
*---------------------------------------------------------------------------*/
|
||||
BOOL FS_ResolveSrl( OSTitleId titleId );
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: FS_ResolveSrlList
|
||||
|
||||
Description: resolve srl filename with list and store to
|
||||
HW_TWL_FS_BOOT_SRL_PATH_BUF
|
||||
|
||||
Arguments: titleIdList pointer to title id array for srl file
|
||||
nums number of title id
|
||||
|
||||
Returns: -1 if failed, otherwise succeeded titile id number
|
||||
*---------------------------------------------------------------------------*/
|
||||
int FS_ResolveSrlList( const OSTitleId* titleIdList, u32 nums );
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: FS_ResolveSrlUnsecured
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user