mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
タイトルIDによるブートターゲット選択を追加。
未使用配列のクリアコード削除。 git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@816 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
a65faaf95c
commit
a363914ca5
@ -166,7 +166,21 @@ BOOL BOOT_WaitStart( void )
|
|||||||
// アプリケーション選択
|
// アプリケーション選択
|
||||||
if ( dh->s.platform_code )
|
if ( dh->s.platform_code )
|
||||||
{
|
{
|
||||||
// target = REBOOT_TARGET_TWL_APP;
|
if ( th->s.titleID_Hi & TITLE_ID_HI_APP_TYPE_MASK )
|
||||||
|
{
|
||||||
|
if ( th->s.titleID_Hi & TITLE_ID_HI_SECURE_FLAG_MASK )
|
||||||
|
{
|
||||||
|
target = REBOOT_TARGET_TWL_SECURE_SYSTEM;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
target = REBOOT_TARGET_TWL_SYSTEM;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
target = REBOOT_TARGET_TWL_APP;
|
||||||
|
}
|
||||||
#ifdef SYSMENU_DISABLE_TWL_BOOT
|
#ifdef SYSMENU_DISABLE_TWL_BOOT
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -120,12 +120,27 @@ void BOOT_Ready( void )
|
|||||||
|
|
||||||
REBOOTTarget target = REBOOT_TARGET_TWL_SYSTEM;
|
REBOOTTarget target = REBOOT_TARGET_TWL_SYSTEM;
|
||||||
BOOL ds = FALSE;
|
BOOL ds = FALSE;
|
||||||
|
ROM_Header *th = (ROM_Header *)HW_TWL_ROM_HEADER_BUF; // TWL拡張ROMヘッダ(DSアプリには無い)
|
||||||
ROM_Header *dh = (ROM_Header *)HW_ROM_HEADER_BUF; // DS互換ROMヘッダ
|
ROM_Header *dh = (ROM_Header *)HW_ROM_HEADER_BUF; // DS互換ROMヘッダ
|
||||||
|
|
||||||
// アプリケーション選択
|
// アプリケーション選択
|
||||||
if ( dh->s.platform_code )
|
if ( dh->s.platform_code )
|
||||||
{
|
{
|
||||||
// target = REBOOT_TARGET_TWL_APP;
|
if ( th->s.titleID_Hi & TITLE_ID_HI_APP_TYPE_MASK )
|
||||||
|
{
|
||||||
|
if ( th->s.titleID_Hi & TITLE_ID_HI_SECURE_FLAG_MASK )
|
||||||
|
{
|
||||||
|
target = REBOOT_TARGET_TWL_SECURE_SYSTEM;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
target = REBOOT_TARGET_TWL_SYSTEM;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
target = REBOOT_TARGET_TWL_APP;
|
||||||
|
}
|
||||||
#ifdef SYSMENU_DISABLE_TWL_BOOT
|
#ifdef SYSMENU_DISABLE_TWL_BOOT
|
||||||
OS_Terminate();
|
OS_Terminate();
|
||||||
#endif // SYSMENU_DISABLE_TWL_BOOT
|
#endif // SYSMENU_DISABLE_TWL_BOOT
|
||||||
|
|||||||
@ -24,16 +24,18 @@ extern "C" {
|
|||||||
|
|
||||||
// ROM memory map
|
// ROM memory map
|
||||||
|
|
||||||
|
#define HOTSW_PAGE_SIZE 0x200 // 512B
|
||||||
|
#define HOTSW_BOOT_SEG_SIZE 0x1000 // 4KB
|
||||||
#define HOTSW_LOAD_TABLE_SIZE 0x2000 // 8KB
|
#define HOTSW_LOAD_TABLE_SIZE 0x2000 // 8KB
|
||||||
#define HOTSW_DS_ROM_HEADER_SIZE 0x200 // 512B
|
|
||||||
#define HOTSW_ROM_HEADER_SIZE 0x1000 // 4KB
|
|
||||||
#define HOTSW_SECURE_AREA_SIZE 0x4000 // 16KB
|
#define HOTSW_SECURE_AREA_SIZE 0x4000 // 16KB
|
||||||
#define HOTSW_SECURE2_AREA_SIZE 0x4000 // 16KB
|
#define HOTSW_SECURE2_AREA_SIZE 0x4000 // 16KB
|
||||||
|
#define HOTSW_EMU_INFO_SIZE 0x20
|
||||||
|
|
||||||
#define HOTSW_SECURE_AREA_OFS 0x4000 // 16KB
|
#define HOTSW_SECURE_AREA_OFS 0x4000 // 16KB
|
||||||
#define HOTSW_GAME_AREA_OFS 0x8000 // 32KB
|
#define HOTSW_GAME_AREA_OFS 0x8000 // 32KB
|
||||||
#define HOTSW_SECURE2_AREA_OFS 0x3000 // 12KB
|
#define HOTSW_SECURE2_AREA_OFS 0x3000 // 12KB
|
||||||
#define HOTSW_GAME2_AREA_OFS 0x7000 // 28KB
|
#define HOTSW_GAME2_AREA_OFS 0x7000 // 28KB
|
||||||
|
#define HOTSW_EMU_INFO_OFS (HOTSW_SECURE_AREA_OFS - HOTSW_PAGE_SIZE + 0x160)
|
||||||
|
|
||||||
|
|
||||||
// ROM ID
|
// ROM ID
|
||||||
|
|||||||
@ -504,13 +504,11 @@ static HotSwState LoadBannerData(void)
|
|||||||
state = (retval == HOTSW_SUCCESS) ? TRUE : FALSE;
|
state = (retval == HOTSW_SUCCESS) ? TRUE : FALSE;
|
||||||
SYSMi_GetWork()->flags.hotsw.isValidCardBanner = state;
|
SYSMi_GetWork()->flags.hotsw.isValidCardBanner = state;
|
||||||
SYSMi_GetWork()->flags.hotsw.isExistCard = state;
|
SYSMi_GetWork()->flags.hotsw.isExistCard = state;
|
||||||
SYSMi_GetWork()->flags.hotsw.isCardStateChanged = TRUE;
|
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
// バナーデータが登録されていない場合 (この関数の外で排他制御されているからここでは排他制御しないでOK)
|
// バナーデータが登録されていない場合 (この関数の外で排他制御されているからここでは排他制御しないでOK)
|
||||||
SYSMi_GetWork()->flags.hotsw.isValidCardBanner = FALSE;
|
SYSMi_GetWork()->flags.hotsw.isValidCardBanner = FALSE;
|
||||||
SYSMi_GetWork()->flags.hotsw.isExistCard = TRUE;
|
SYSMi_GetWork()->flags.hotsw.isExistCard = TRUE;
|
||||||
SYSMi_GetWork()->flags.hotsw.isCardStateChanged = TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( SYSMi_GetWork()->flags.hotsw.isExistCard )
|
if ( SYSMi_GetWork()->flags.hotsw.isExistCard )
|
||||||
@ -522,6 +520,7 @@ static HotSwState LoadBannerData(void)
|
|||||||
SYSMi_GetWork()->flags.hotsw.isInspectCard = FALSE;
|
SYSMi_GetWork()->flags.hotsw.isInspectCard = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SYSMi_GetWork()->flags.hotsw.isCardStateChanged = TRUE;
|
||||||
SYSMi_GetWork()->flags.hotsw.is1stCardChecked = TRUE;
|
SYSMi_GetWork()->flags.hotsw.is1stCardChecked = TRUE;
|
||||||
|
|
||||||
return retval;
|
return retval;
|
||||||
@ -593,12 +592,8 @@ static HotSwState LoadStaticModule(void)
|
|||||||
|
|
||||||
// セキュア領域先頭2K分のハッシュ値を求めて、Work領域にコピー
|
// セキュア領域先頭2K分のハッシュ値を求めて、Work領域にコピー
|
||||||
{
|
{
|
||||||
u8 sha1data[DIGEST_SIZE_SHA1];
|
|
||||||
SVCHMACSHA1Context hash;
|
SVCHMACSHA1Context hash;
|
||||||
|
|
||||||
// クリア
|
|
||||||
MI_CpuClear8(sha1data, sizeof(sha1data));
|
|
||||||
|
|
||||||
// ハッシュ初期化
|
// ハッシュ初期化
|
||||||
SVC_HMACSHA1Init( &hash, s_digestDefaultKey, sizeof(s_digestDefaultKey) );
|
SVC_HMACSHA1Init( &hash, s_digestDefaultKey, sizeof(s_digestDefaultKey) );
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user