mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
SDK3790に対応中。
BOOTTYPEの仕様変更に対応。 git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@508 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
301b8c21f9
commit
90d2377e65
@ -35,10 +35,10 @@
|
|||||||
|
|
||||||
// extern data-----------------------------------------------------------------
|
// extern data-----------------------------------------------------------------
|
||||||
// function's prototype--------------------------------------------------------
|
// function's prototype--------------------------------------------------------
|
||||||
static void SYSMi_SetBootSRLPath( OSBootType bootType, NAMTitleId titleID );
|
static void SYSMi_SetBootSRLPath( LauncherBootType bootType, NAMTitleId titleID );
|
||||||
static void SYSMi_SetMountInfoCore( OSBootType bootType, NAMTitleId titleID, OSMountInfo *pSrc );
|
static void SYSMi_SetMountInfoCore( LauncherBootType bootType, NAMTitleId titleID, OSMountInfo *pSrc );
|
||||||
static void SYSMi_ModifySaveDataMount( OSBootType bootType, NAMTitleId titleID, OSMountInfo *pMountTgt );
|
static void SYSMi_ModifySaveDataMount( LauncherBootType bootType, NAMTitleId titleID, OSMountInfo *pMountTgt );
|
||||||
static void SYSMi_ModifySaveDataMountForLauncher( OSBootType bootType, NAMTitleId titleID, OSMountInfo *pMountTgt );
|
static void SYSMi_ModifySaveDataMountForLauncher( LauncherBootType bootType, NAMTitleId titleID, OSMountInfo *pMountTgt );
|
||||||
|
|
||||||
// global variable-------------------------------------------------------------
|
// global variable-------------------------------------------------------------
|
||||||
// static variable-------------------------------------------------------------
|
// static variable-------------------------------------------------------------
|
||||||
@ -74,16 +74,16 @@ void SYSMi_SetLauncherMountInfo( void )
|
|||||||
NAMTitleId titleID = TITLE_ID_LAUNCHER;
|
NAMTitleId titleID = TITLE_ID_LAUNCHER;
|
||||||
|
|
||||||
// ※とりあえず自身はROMブートで。[TODO:]後で修正
|
// ※とりあえず自身はROMブートで。[TODO:]後で修正
|
||||||
// SYSMi_SetBootSRLPath( OS_BOOTTYPE_NAND, titleID ); // ※SDK2623では、BootSRLPathを"rom:"としたらFSi_InitRomArchiveでNANDアプリ扱いされてアクセス例外で落ちる。
|
// SYSMi_SetBootSRLPath( LAUNCHER_BOOTTYPE_NAND, titleID ); // ※SDK2623では、BootSRLPathを"rom:"としたらFSi_InitRomArchiveでNANDアプリ扱いされてアクセス例外で落ちる。
|
||||||
|
|
||||||
// セーブデータ有無によるマウント情報の編集
|
// セーブデータ有無によるマウント情報の編集
|
||||||
// ※このタイミングではFSは動かせないので、FSを使わない特別版で対応。
|
// ※このタイミングではFSは動かせないので、FSを使わない特別版で対応。
|
||||||
SYSMi_ModifySaveDataMountForLauncher( OS_BOOTTYPE_NAND,
|
SYSMi_ModifySaveDataMountForLauncher( LAUNCHER_BOOTTYPE_NAND,
|
||||||
titleID,
|
titleID,
|
||||||
&s_defaultMountList[ PRV_SAVE_DATA_MOUNT_INDEX ] );
|
&s_defaultMountList[ PRV_SAVE_DATA_MOUNT_INDEX ] );
|
||||||
|
|
||||||
// マウント情報のセット
|
// マウント情報のセット
|
||||||
SYSMi_SetMountInfoCore( OS_BOOTTYPE_NAND,
|
SYSMi_SetMountInfoCore( LAUNCHER_BOOTTYPE_NAND,
|
||||||
titleID,
|
titleID,
|
||||||
&s_defaultMountList[0] );
|
&s_defaultMountList[0] );
|
||||||
}
|
}
|
||||||
@ -98,16 +98,16 @@ void SYSMi_SetBootAppMountInfo( TitleProperty *pBootTitle )
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 起動アプリのSRLパスをセット
|
// 起動アプリのSRLパスをセット
|
||||||
SYSMi_SetBootSRLPath( (OSBootType)pBootTitle->flags.bootType,
|
SYSMi_SetBootSRLPath( (LauncherBootType)pBootTitle->flags.bootType,
|
||||||
pBootTitle->titleID );
|
pBootTitle->titleID );
|
||||||
|
|
||||||
// セーブデータ有無によるマウント情報の編集
|
// セーブデータ有無によるマウント情報の編集
|
||||||
SYSMi_ModifySaveDataMount( (OSBootType)pBootTitle->flags.bootType,
|
SYSMi_ModifySaveDataMount( (LauncherBootType)pBootTitle->flags.bootType,
|
||||||
pBootTitle->titleID,
|
pBootTitle->titleID,
|
||||||
&s_defaultMountList[ PRV_SAVE_DATA_MOUNT_INDEX ] );
|
&s_defaultMountList[ PRV_SAVE_DATA_MOUNT_INDEX ] );
|
||||||
|
|
||||||
// マウント情報のセット
|
// マウント情報のセット
|
||||||
SYSMi_SetMountInfoCore( (OSBootType)pBootTitle->flags.bootType,
|
SYSMi_SetMountInfoCore( (LauncherBootType)pBootTitle->flags.bootType,
|
||||||
pBootTitle->titleID,
|
pBootTitle->titleID,
|
||||||
&s_defaultMountList[0] );
|
&s_defaultMountList[0] );
|
||||||
|
|
||||||
@ -121,18 +121,18 @@ void SYSMi_SetBootAppMountInfo( TitleProperty *pBootTitle )
|
|||||||
|
|
||||||
|
|
||||||
// 起動SRLパスをシステム領域にセット
|
// 起動SRLパスをシステム領域にセット
|
||||||
static void SYSMi_SetBootSRLPath( OSBootType bootType, NAMTitleId titleID )
|
static void SYSMi_SetBootSRLPath( LauncherBootType bootType, NAMTitleId titleID )
|
||||||
{
|
{
|
||||||
static char path[ FS_ENTRY_LONGNAME_MAX ];
|
static char path[ FS_ENTRY_LONGNAME_MAX ];
|
||||||
|
|
||||||
switch( bootType )
|
switch( bootType )
|
||||||
{
|
{
|
||||||
case OS_BOOTTYPE_NAND:
|
case LAUNCHER_BOOTTYPE_NAND:
|
||||||
if( NAM_GetTitleBootContentPathFast( path, titleID ) != NAM_OK ) {
|
if( NAM_GetTitleBootContentPathFast( path, titleID ) != NAM_OK ) {
|
||||||
OS_TPrintf( "ERROR: BootContentPath Get failed.\n" );
|
OS_TPrintf( "ERROR: BootContentPath Get failed.\n" );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case OS_BOOTTYPE_TEMP:
|
case LAUNCHER_BOOTTYPE_TEMP:
|
||||||
STD_TSNPrintf( path, 31, "nand:/tmp/%.16llx.srl", titleID );
|
STD_TSNPrintf( path, 31, "nand:/tmp/%.16llx.srl", titleID );
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -151,7 +151,7 @@ static void SYSMi_SetBootSRLPath( OSBootType bootType, NAMTitleId titleID )
|
|||||||
|
|
||||||
|
|
||||||
// マウント情報をシステム領域に書き込み
|
// マウント情報をシステム領域に書き込み
|
||||||
static void SYSMi_SetMountInfoCore( OSBootType bootType, NAMTitleId titleID, OSMountInfo *pSrc )
|
static void SYSMi_SetMountInfoCore( LauncherBootType bootType, NAMTitleId titleID, OSMountInfo *pSrc )
|
||||||
{
|
{
|
||||||
#pragma unused(bootType)
|
#pragma unused(bootType)
|
||||||
|
|
||||||
@ -185,16 +185,16 @@ static void SYSMi_SetMountInfoCore( OSBootType bootType, NAMTitleId titleID, OSM
|
|||||||
|
|
||||||
|
|
||||||
// タイトルIDをもとにセーブデータ有無を判定して、マウント情報を編集する。
|
// タイトルIDをもとにセーブデータ有無を判定して、マウント情報を編集する。
|
||||||
static void SYSMi_ModifySaveDataMount( OSBootType bootType, NAMTitleId titleID, OSMountInfo *pMountTgt )
|
static void SYSMi_ModifySaveDataMount( LauncherBootType bootType, NAMTitleId titleID, OSMountInfo *pMountTgt )
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
// ※カードからブートされた場合でも、titleIDが"NANDアプリ"の場合は、セーブデータをマウントするようにしている。
|
// ※カードからブートされた場合でも、titleIDが"NANDアプリ"の場合は、セーブデータをマウントするようにしている。
|
||||||
|
|
||||||
// セーブデータ有無を判定して、パスをセット
|
// セーブデータ有無を判定して、パスをセット
|
||||||
if( ( ( bootType == OS_BOOTTYPE_NAND ) && // NANDアプリがNANDからブートされた時
|
if( ( ( bootType == LAUNCHER_BOOTTYPE_NAND ) && // NANDアプリがNANDからブートされた時
|
||||||
( titleID & TITLEID_MEDIA_NAND_FLAG ) ) ||
|
( titleID & TITLEID_MEDIA_NAND_FLAG ) ) ||
|
||||||
( ( bootType == OS_BOOTTYPE_ROM ) && // ISデバッガ上で、NANDアプリがROM からブートされた時
|
( ( bootType == LAUNCHER_BOOTTYPE_ROM ) && // ISデバッガ上で、NANDアプリがROM からブートされた時
|
||||||
( titleID & TITLEID_MEDIA_NAND_FLAG ) &&
|
( titleID & TITLEID_MEDIA_NAND_FLAG ) &&
|
||||||
( SYSMi_GetWork()->isOnDebugger ) )
|
( SYSMi_GetWork()->isOnDebugger ) )
|
||||||
) {
|
) {
|
||||||
@ -229,16 +229,16 @@ static void SYSMi_ModifySaveDataMount( OSBootType bootType, NAMTitleId titleID,
|
|||||||
|
|
||||||
|
|
||||||
// タイトルIDをもとにセーブデータ有無を判定して、マウント情報を編集する。
|
// タイトルIDをもとにセーブデータ有無を判定して、マウント情報を編集する。
|
||||||
static void SYSMi_ModifySaveDataMountForLauncher( OSBootType bootType, NAMTitleId titleID, OSMountInfo *pMountTgt )
|
static void SYSMi_ModifySaveDataMountForLauncher( LauncherBootType bootType, NAMTitleId titleID, OSMountInfo *pMountTgt )
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
// ※カードからブートされた場合でも、titleIDが"NANDアプリ"の場合は、セーブデータをマウントするようにしている。
|
// ※カードからブートされた場合でも、titleIDが"NANDアプリ"の場合は、セーブデータをマウントするようにしている。
|
||||||
|
|
||||||
// セーブデータ有無を判定して、パスをセット
|
// セーブデータ有無を判定して、パスをセット
|
||||||
if( ( ( bootType == OS_BOOTTYPE_NAND ) && // NANDアプリがNANDからブートされた時
|
if( ( ( bootType == LAUNCHER_BOOTTYPE_NAND ) && // NANDアプリがNANDからブートされた時
|
||||||
( titleID & TITLEID_MEDIA_NAND_FLAG ) ) ||
|
( titleID & TITLEID_MEDIA_NAND_FLAG ) ) ||
|
||||||
( ( bootType == OS_BOOTTYPE_ROM ) && // ISデバッガ上で、NANDアプリがROM からブートされた時
|
( ( bootType == LAUNCHER_BOOTTYPE_ROM ) && // ISデバッガ上で、NANDアプリがROM からブートされた時
|
||||||
( titleID & TITLEID_MEDIA_NAND_FLAG ) &&
|
( titleID & TITLEID_MEDIA_NAND_FLAG ) &&
|
||||||
( SYSMi_GetWork()->isOnDebugger ) )
|
( SYSMi_GetWork()->isOnDebugger ) )
|
||||||
) {
|
) {
|
||||||
|
|||||||
@ -157,6 +157,7 @@ TitleProperty *SYSM_ReadParameters( void )
|
|||||||
if( !LCFG_ReadHWSecureInfo() ) {
|
if( !LCFG_ReadHWSecureInfo() ) {
|
||||||
OS_TPrintf( "HW Secure Info Broken!\n" );
|
OS_TPrintf( "HW Secure Info Broken!\n" );
|
||||||
SYSMi_GetWork()->isBrokenHWSecureInfo = TRUE;
|
SYSMi_GetWork()->isBrokenHWSecureInfo = TRUE;
|
||||||
|
SYSMi_GetWork()->isFatalError = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------
|
//-----------------------------------------------------
|
||||||
@ -209,7 +210,7 @@ static TitleProperty *SYSMi_CheckShortcutBoot( void )
|
|||||||
s_bootTitle.flags.isAppLoadCompleted = TRUE;
|
s_bootTitle.flags.isAppLoadCompleted = TRUE;
|
||||||
s_bootTitle.flags.isInitialShortcutSkip = TRUE; // 初回起動シーケンスを飛ばす
|
s_bootTitle.flags.isInitialShortcutSkip = TRUE; // 初回起動シーケンスを飛ばす
|
||||||
s_bootTitle.flags.isLogoSkip = TRUE; // ロゴデモを飛ばす
|
s_bootTitle.flags.isLogoSkip = TRUE; // ロゴデモを飛ばす
|
||||||
s_bootTitle.flags.bootType = OS_BOOTTYPE_ROM;
|
s_bootTitle.flags.bootType = LAUNCHER_BOOTTYPE_ROM;
|
||||||
s_bootTitle.flags.isValid = TRUE;
|
s_bootTitle.flags.isValid = TRUE;
|
||||||
s_bootTitle.titleID = *(u64 *)( &SYSM_GetCardRomHeader()->titleID_Lo );
|
s_bootTitle.titleID = *(u64 *)( &SYSM_GetCardRomHeader()->titleID_Lo );
|
||||||
SYSM_SetLogoDemoSkip( s_bootTitle.flags.isLogoSkip );
|
SYSM_SetLogoDemoSkip( s_bootTitle.flags.isLogoSkip );
|
||||||
@ -228,7 +229,7 @@ static TitleProperty *SYSMi_CheckShortcutBoot( void )
|
|||||||
!LCFG_TSD_IsSetUserColor() ||
|
!LCFG_TSD_IsSetUserColor() ||
|
||||||
!LCFG_TSD_IsSetNickname() ) {
|
!LCFG_TSD_IsSetNickname() ) {
|
||||||
s_bootTitle.titleID = TITLE_ID_MACHINE_SETTINGS;
|
s_bootTitle.titleID = TITLE_ID_MACHINE_SETTINGS;
|
||||||
s_bootTitle.flags.bootType = OS_BOOTTYPE_NAND;
|
s_bootTitle.flags.bootType = LAUNCHER_BOOTTYPE_NAND;
|
||||||
s_bootTitle.flags.isValid = TRUE;
|
s_bootTitle.flags.isValid = TRUE;
|
||||||
return &s_bootTitle;
|
return &s_bootTitle;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -36,6 +36,13 @@ static OSThread s_thread;
|
|||||||
static TWLBannerFile s_bannerBuf[ LAUNCHER_TITLE_LIST_NUM ] ATTRIBUTE_ALIGN(32);
|
static TWLBannerFile s_bannerBuf[ LAUNCHER_TITLE_LIST_NUM ] ATTRIBUTE_ALIGN(32);
|
||||||
|
|
||||||
// const data------------------------------------------------------------------
|
// const data------------------------------------------------------------------
|
||||||
|
static const OSBootType s_launcherToOSBootType[ LAUNCHER_BOOTTYPE_MAX ] = {
|
||||||
|
OS_BOOTTYPE_ILLEGAL, // ILLEGAL
|
||||||
|
OS_BOOTTYPE_ROM, // ROM
|
||||||
|
OS_BOOTTYPE_NAND, // TEMP
|
||||||
|
OS_BOOTTYPE_NAND, // NAND
|
||||||
|
OS_BOOTTYPE_MEMORY, // MEMORY
|
||||||
|
};
|
||||||
|
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
//
|
//
|
||||||
@ -81,41 +88,13 @@ BOOL SYSM_GetCardTitleList( TitleProperty *pTitleList_Card )
|
|||||||
}
|
}
|
||||||
|
|
||||||
// タイトル情報フラグのセット
|
// タイトル情報フラグのセット
|
||||||
pTitleList_Card->flags.bootType = OS_BOOTTYPE_ROM;
|
pTitleList_Card->flags.bootType = LAUNCHER_BOOTTYPE_ROM;
|
||||||
pTitleList_Card->titleID = *(u64 *)( &SYSM_GetCardRomHeader()->titleID_Lo );
|
pTitleList_Card->titleID = *(u64 *)( &SYSM_GetCardRomHeader()->titleID_Lo );
|
||||||
|
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Žw’èƒtƒ@ƒCƒ‹ƒŠ<C692>[ƒh
|
|
||||||
static s32 ReadFile(FSFile* pf, void* buffer, s32 size)
|
|
||||||
{
|
|
||||||
u8* p = (u8*)buffer;
|
|
||||||
s32 remain = size;
|
|
||||||
|
|
||||||
while( remain > 0 )
|
|
||||||
{
|
|
||||||
const s32 len = MATH_IMin(1024, remain);
|
|
||||||
const s32 readLen = FS_ReadFile(pf, p, len);
|
|
||||||
|
|
||||||
if( readLen < 0 )
|
|
||||||
{
|
|
||||||
return readLen;
|
|
||||||
}
|
|
||||||
if( readLen != len )
|
|
||||||
{
|
|
||||||
return size - remain + readLen;
|
|
||||||
}
|
|
||||||
|
|
||||||
remain -= readLen;
|
|
||||||
p += readLen;
|
|
||||||
}
|
|
||||||
|
|
||||||
return size;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// NANDタイトルリストの取得
|
// NANDタイトルリストの取得
|
||||||
int SYSM_GetNandTitleList( TitleProperty *pTitleList_Nand, int listNum )
|
int SYSM_GetNandTitleList( TitleProperty *pTitleList_Nand, int listNum )
|
||||||
{
|
{
|
||||||
@ -214,7 +193,7 @@ int SYSM_GetNandTitleList( TitleProperty *pTitleList_Nand, int listNum )
|
|||||||
pTitleList_Nand[l+1].pBanner = &s_bannerBuf[l];
|
pTitleList_Nand[l+1].pBanner = &s_bannerBuf[l];
|
||||||
if( titleIdArray[l] ) {
|
if( titleIdArray[l] ) {
|
||||||
pTitleList_Nand[l+1].flags.isValid = TRUE;
|
pTitleList_Nand[l+1].flags.isValid = TRUE;
|
||||||
pTitleList_Nand[l+1].flags.bootType = OS_BOOTTYPE_NAND;
|
pTitleList_Nand[l+1].flags.bootType = LAUNCHER_BOOTTYPE_NAND;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// return : *TitleProperty Array
|
// return : *TitleProperty Array
|
||||||
@ -222,6 +201,34 @@ int SYSM_GetNandTitleList( TitleProperty *pTitleList_Nand, int listNum )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 指定ファイルリード
|
||||||
|
static s32 ReadFile(FSFile* pf, void* buffer, s32 size)
|
||||||
|
{
|
||||||
|
u8* p = (u8*)buffer;
|
||||||
|
s32 remain = size;
|
||||||
|
|
||||||
|
while( remain > 0 )
|
||||||
|
{
|
||||||
|
const s32 len = MATH_IMin(1024, remain);
|
||||||
|
const s32 readLen = FS_ReadFile(pf, p, len);
|
||||||
|
|
||||||
|
if( readLen < 0 )
|
||||||
|
{
|
||||||
|
return readLen;
|
||||||
|
}
|
||||||
|
if( readLen != len )
|
||||||
|
{
|
||||||
|
return size - remain + readLen;
|
||||||
|
}
|
||||||
|
|
||||||
|
remain -= readLen;
|
||||||
|
p += readLen;
|
||||||
|
}
|
||||||
|
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
//
|
//
|
||||||
// アプリ起動
|
// アプリ起動
|
||||||
@ -250,22 +257,21 @@ static void SYSMi_LoadTitleThreadFunc( TitleProperty *pBootTitle )
|
|||||||
FSFile file[1];
|
FSFile file[1];
|
||||||
BOOL bSuccess;
|
BOOL bSuccess;
|
||||||
BOOL isTwlApp = TRUE;
|
BOOL isTwlApp = TRUE;
|
||||||
if(pBootTitle->flags.bootType == OS_BOOTTYPE_NAND)
|
|
||||||
|
switch( pBootTitle->flags.bootType )
|
||||||
{
|
{
|
||||||
|
case LAUNCHER_BOOTTYPE_NAND:
|
||||||
// NAND
|
// NAND
|
||||||
NAM_GetTitleBootContentPathFast(path, pBootTitle->titleID);
|
NAM_GetTitleBootContentPathFast(path, pBootTitle->titleID);
|
||||||
}
|
break;
|
||||||
else if(pBootTitle->flags.bootType == OS_BOOTTYPE_ROM)
|
case LAUNCHER_BOOTTYPE_ROM:
|
||||||
{
|
|
||||||
// TODO:CARD未読の場合の処理
|
// TODO:CARD未読の場合の処理
|
||||||
}
|
break;
|
||||||
else if(pBootTitle->flags.bootType == OS_BOOTTYPE_TEMP)
|
case LAUNCHER_BOOTTYPE_TEMP:
|
||||||
{
|
|
||||||
// tmpフォルダ
|
// tmpフォルダ
|
||||||
STD_TSNPrintf( path, 31, "nand:/tmp/%.16llx.srl", pBootTitle->titleID );
|
STD_TSNPrintf( path, 31, "nand:/tmp/%.16llx.srl", pBootTitle->titleID );
|
||||||
}
|
break;
|
||||||
else
|
default:
|
||||||
{
|
|
||||||
// unknown
|
// unknown
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -394,7 +400,7 @@ OS_TPrintf("RebootSystem failed: cant read file(%d, %d)\n", source[i], len);
|
|||||||
|
|
||||||
(void)FS_CloseFile(file);
|
(void)FS_CloseFile(file);
|
||||||
|
|
||||||
if(pBootTitle->flags.bootType == OS_BOOTTYPE_TEMP)
|
if(pBootTitle->flags.bootType == LAUNCHER_BOOTTYPE_TEMP)
|
||||||
{
|
{
|
||||||
// tmpアプリの場合はファイル削除
|
// tmpアプリの場合はファイル削除
|
||||||
// TODO:その他読み込み等の失敗時にもDeleteする必要あり?
|
// TODO:その他読み込み等の失敗時にもDeleteする必要あり?
|
||||||
@ -432,7 +438,7 @@ void SYSM_StartLoadTitle( TitleProperty *pBootTitle )
|
|||||||
SYSMi_GetWork()->isLoadSucceeded = TRUE;
|
SYSMi_GetWork()->isLoadSucceeded = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( pBootTitle->flags.bootType == OS_BOOTTYPE_ROM ) {
|
if( pBootTitle->flags.bootType == LAUNCHER_BOOTTYPE_ROM ) {
|
||||||
SYSMi_GetWork()->isCardBoot = TRUE;
|
SYSMi_GetWork()->isCardBoot = TRUE;
|
||||||
}else if(pBootTitle->flags.isAppLoadCompleted)
|
}else if(pBootTitle->flags.isAppLoadCompleted)
|
||||||
{
|
{
|
||||||
@ -525,6 +531,14 @@ AuthResult SYSM_AuthenticateTitle( TitleProperty *pBootTitle )
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// BOOTTYPE_MEMORYでNTRモードのFSありでブートすると、旧NitroSDKでビルドされたアプリの場合、
|
||||||
|
// ROMアーカイブにカードが割り当てられて、FSで関係ないカードにアクセスにいってしまうので、それを防止する。
|
||||||
|
if( ( pBootTitle->flags.bootType == LAUNCHER_BOOTTYPE_MEMORY ) &&
|
||||||
|
( ( (( ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF)->platform_code ) == 0 ) &&
|
||||||
|
( ( (( ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF)->fat_size ) > 0 )
|
||||||
|
) {
|
||||||
|
return AUTH_RESULT_TITLE_BOOTTYPE_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
// ※ROMヘッダ認証
|
// ※ROMヘッダ認証
|
||||||
|
|
||||||
@ -533,16 +547,14 @@ AuthResult SYSM_AuthenticateTitle( TitleProperty *pBootTitle )
|
|||||||
SYSMi_SetBootAppMountInfo( pBootTitle );
|
SYSMi_SetBootAppMountInfo( pBootTitle );
|
||||||
|
|
||||||
// HW_WM_BOOT_BUFへのブート情報セット
|
// HW_WM_BOOT_BUFへのブート情報セット
|
||||||
{
|
( (OSBootInfo *)OS_GetBootInfo() )->boot_type = s_launcherToOSBootType[ pBootTitle->flags.bootType ];
|
||||||
OSBootInfo *pBootInfo = (OSBootInfo *)OS_GetBootInfo();
|
|
||||||
pBootInfo->boot_type = (OSBootType)pBootTitle->flags.bootType;
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOT_Ready(); // never return.
|
BOOT_Ready(); // never return.
|
||||||
|
|
||||||
return AUTH_RESULT_SUCCEEDED;
|
return AUTH_RESULT_SUCCEEDED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
// 指定タイトルの認証&ロード ※1フレームじゃ終わらん。
|
// 指定タイトルの認証&ロード ※1フレームじゃ終わらん。
|
||||||
// もしかすると使わないかも
|
// もしかすると使わないかも
|
||||||
|
|||||||
@ -509,7 +509,7 @@ static TitleProperty *ProcessPads( TitleProperty *pTitleList )
|
|||||||
u16 dummy;
|
u16 dummy;
|
||||||
u16 tp_lr = 3;
|
u16 tp_lr = 3;
|
||||||
TitleProperty *ret = NULL;
|
TitleProperty *ret = NULL;
|
||||||
LauncherBootFlags tempflag = {TRUE, OS_BOOTTYPE_NAND, TRUE, FALSE, FALSE, FALSE, 0};
|
LauncherBootFlags tempflag = {TRUE, LAUNCHER_BOOTTYPE_NAND, TRUE, FALSE, FALSE, FALSE, 0};
|
||||||
|
|
||||||
// バックライト関係のキー処理
|
// バックライト関係のキー処理
|
||||||
ProcessBackLightPads();
|
ProcessBackLightPads();
|
||||||
|
|||||||
@ -188,7 +188,7 @@ int MachineSettingMain( void )
|
|||||||
{
|
{
|
||||||
BOOL tp_select;
|
BOOL tp_select;
|
||||||
|
|
||||||
LauncherBootFlags tempflag = {TRUE, OS_BOOTTYPE_NAND, TRUE, FALSE, FALSE, FALSE, 0};
|
LauncherBootFlags tempflag = {TRUE, LAUNCHER_BOOTTYPE_NAND, TRUE, FALSE, FALSE, FALSE, 0};
|
||||||
|
|
||||||
ReadTP();
|
ReadTP();
|
||||||
|
|
||||||
|
|||||||
@ -439,7 +439,7 @@ static void MenuScene(void)
|
|||||||
{
|
{
|
||||||
BOOL tp_select = FALSE;
|
BOOL tp_select = FALSE;
|
||||||
static TPData tgt = (TPData){0,0,0,0};
|
static TPData tgt = (TPData){0,0,0,0};
|
||||||
LauncherBootFlags tempflag = {TRUE, OS_BOOTTYPE_NAND, TRUE, FALSE, FALSE, FALSE, 0};
|
LauncherBootFlags tempflag = {TRUE, LAUNCHER_BOOTTYPE_NAND, TRUE, FALSE, FALSE, FALSE, 0};
|
||||||
|
|
||||||
ReadTP();
|
ReadTP();
|
||||||
|
|
||||||
|
|||||||
@ -124,7 +124,7 @@ static void MenuInit( void )
|
|||||||
static void MenuScene(void)
|
static void MenuScene(void)
|
||||||
{
|
{
|
||||||
BOOL tp_select = FALSE;
|
BOOL tp_select = FALSE;
|
||||||
LauncherBootFlags tempflag = {TRUE, OS_BOOTTYPE_NAND, TRUE, FALSE, FALSE, FALSE, 0};
|
LauncherBootFlags tempflag = {TRUE, LAUNCHER_BOOTTYPE_NAND, TRUE, FALSE, FALSE, FALSE, 0};
|
||||||
|
|
||||||
ReadTP();
|
ReadTP();
|
||||||
|
|
||||||
|
|||||||
@ -439,7 +439,7 @@ static void MenuScene(void)
|
|||||||
{
|
{
|
||||||
BOOL tp_select = FALSE;
|
BOOL tp_select = FALSE;
|
||||||
static TPData tgt = (TPData){0,0,0,0};
|
static TPData tgt = (TPData){0,0,0,0};
|
||||||
LauncherBootFlags tempflag = {TRUE, OS_BOOTTYPE_NAND, TRUE, FALSE, FALSE, FALSE, 0};
|
LauncherBootFlags tempflag = {TRUE, LAUNCHER_BOOTTYPE_NAND, TRUE, FALSE, FALSE, FALSE, 0};
|
||||||
|
|
||||||
ReadTP();
|
ReadTP();
|
||||||
|
|
||||||
|
|||||||
@ -134,7 +134,7 @@ static BOOL LoadTitle( NAMTitleId bootTitleID )
|
|||||||
static void MenuScene(void)
|
static void MenuScene(void)
|
||||||
{
|
{
|
||||||
BOOL tp_select = FALSE;
|
BOOL tp_select = FALSE;
|
||||||
LauncherBootFlags tempflag = {TRUE, OS_BOOTTYPE_NAND, TRUE, FALSE, TRUE, FALSE, 0};
|
LauncherBootFlags tempflag = {TRUE, LAUNCHER_BOOTTYPE_NAND, TRUE, FALSE, TRUE, FALSE, 0};
|
||||||
|
|
||||||
ReadTP();
|
ReadTP();
|
||||||
|
|
||||||
|
|||||||
@ -65,7 +65,8 @@ typedef enum AuthResult {
|
|||||||
AUTH_RESULT_TITLE_LOAD_FAILED = 2,
|
AUTH_RESULT_TITLE_LOAD_FAILED = 2,
|
||||||
AUTH_RESULT_TITLE_POINTER_ERROR = 3,
|
AUTH_RESULT_TITLE_POINTER_ERROR = 3,
|
||||||
AUTH_RESULT_AUTHENTICATE_FAILED = 4,
|
AUTH_RESULT_AUTHENTICATE_FAILED = 4,
|
||||||
AUTH_RESULT_ENTRY_ADDRESS_ERROR = 5
|
AUTH_RESULT_ENTRY_ADDRESS_ERROR = 5,
|
||||||
|
AUTH_RESULT_TITLE_BOOTTYPE_ERROR = 6
|
||||||
}AuthResult;
|
}AuthResult;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -70,6 +70,7 @@ typedef struct ISD_RomEmuInfo {
|
|||||||
// SYSM共有ワーク構造体
|
// SYSM共有ワーク構造体
|
||||||
typedef struct SYSM_work {
|
typedef struct SYSM_work {
|
||||||
Relocate_Info romRelocateInfo[RELOCATE_INFO_NUM]; // ROM再配置情報(arm9,arm7それぞれltdとflxで最大4つ)
|
Relocate_Info romRelocateInfo[RELOCATE_INFO_NUM]; // ROM再配置情報(arm9,arm7それぞれltdとflxで最大4つ)
|
||||||
|
vu32 isFatalError :1; // FATALエラー
|
||||||
vu32 isARM9Start :1; // ARM9スタートフラグ
|
vu32 isARM9Start :1; // ARM9スタートフラグ
|
||||||
vu32 isHotStart :1; // Hot/Coldスタート判定
|
vu32 isHotStart :1; // Hot/Coldスタート判定
|
||||||
vu32 isValidLauncherParam :1; // リセットパラメータ有効
|
vu32 isValidLauncherParam :1; // リセットパラメータ有効
|
||||||
@ -86,9 +87,9 @@ typedef struct SYSM_work {
|
|||||||
#ifdef DEBUG_USED_CARD_SLOT_B_
|
#ifdef DEBUG_USED_CARD_SLOT_B_
|
||||||
vu32 isValidCardBanner :1;
|
vu32 isValidCardBanner :1;
|
||||||
vu32 is1stCardChecked :1;
|
vu32 is1stCardChecked :1;
|
||||||
vu32 rsv :18;
|
vu32 rsv :17;
|
||||||
#else
|
#else
|
||||||
vu32 rsv :20;
|
vu32 rsv :19;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
u16 cardHeaderCrc16; // カード検出時に算出したROMヘッダCRC16(ARM9側でコピーして使用する側)
|
u16 cardHeaderCrc16; // カード検出時に算出したROMヘッダCRC16(ARM9側でコピーして使用する側)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user