複数TitleIDチェックでも時間がかからないように修正、他見た目修正

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1064 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
yutaka 2008-04-04 02:39:37 +00:00
parent 301228f70f
commit b3dc21b388
6 changed files with 78 additions and 35 deletions

View File

@ -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;

View File

@ -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

View File

@ -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 )
{

View File

@ -33,7 +33,7 @@
PRINT_MEMORY_ADDR SPrintfを行います()
FINALROM版でもコードが残るので注意してください
*/
//#define PRINT_MEMORY_ADDR 0x02FFC800
#define PRINT_MEMORY_ADDR 0x02FFC800
#ifdef PROFILE_ENABLE

View File

@ -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;
}

View File

@ -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