mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
・MountInfoのバグ修正。
・ISデバッガv0.40で、エミュレーションROM情報がデバッガで起動したアプリでも読めてしまうため、 SYSMi_CheckShortcutBoot関数でのISデバッガ判定に「JTAG有効か?」の条件を復活させる。 git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@499 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
1761c262d0
commit
08e5305a93
@ -41,6 +41,7 @@ void SYSM_SetBootAppMountInfo( TitleProperty *pBootTitle );
|
||||
static void SYSMi_SetBootSRLPath( OSBootType bootType, NAMTitleId titleID );
|
||||
static void SYSMi_SetMountInfoCore( OSBootType bootType, NAMTitleId titleID, OSMountInfo *pSrc );
|
||||
static void SYSMi_ModifySaveDataMount( OSBootType bootType, NAMTitleId titleID, OSMountInfo *pMountTgt );
|
||||
static void SYSMi_ModifySaveDataMountForLauncher( OSBootType bootType, NAMTitleId titleID, OSMountInfo *pMountTgt );
|
||||
|
||||
// global variable-------------------------------------------------------------
|
||||
|
||||
@ -84,9 +85,10 @@ void SYSMi_SetLauncherMountInfo( void )
|
||||
// SYSMi_SetBootSRLPath( OS_BOOTTYPE_NAND, titleID ); // ※SDK2623では、BootSRLPathを"rom:"としたらFSi_InitRomArchiveでNANDアプリ扱いされてアクセス例外で落ちる。
|
||||
|
||||
// セーブデータ有無によるマウント情報の編集
|
||||
SYSMi_ModifySaveDataMount( OS_BOOTTYPE_NAND,
|
||||
titleID,
|
||||
&s_defaultMountList[ PRV_SAVE_DATA_MOUNT_INDEX ] );
|
||||
// ※このタイミングではFSは動かせないので、FSを使わない特別版で対応。
|
||||
SYSMi_ModifySaveDataMountForLauncher( OS_BOOTTYPE_NAND,
|
||||
titleID,
|
||||
&s_defaultMountList[ PRV_SAVE_DATA_MOUNT_INDEX ] );
|
||||
|
||||
// マウント情報のセット
|
||||
SYSMi_SetMountInfoCore( OS_BOOTTYPE_NAND,
|
||||
@ -233,3 +235,47 @@ static void SYSMi_ModifySaveDataMount( OSBootType bootType, NAMTitleId titleID,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// タイトルIDをもとにセーブデータ有無を判定して、マウント情報を編集する。
|
||||
static void SYSMi_ModifySaveDataMountForLauncher( OSBootType bootType, NAMTitleId titleID, OSMountInfo *pMountTgt )
|
||||
{
|
||||
int i;
|
||||
u32 titleID_Hi = (u32)( titleID >> 32 ); // u64で論理演算はできない?
|
||||
|
||||
// ※カードからブートされた場合でも、titleIDが"NANDアプリ"の場合は、セーブデータをマウントするようにしている。
|
||||
|
||||
// セーブデータ有無を判定して、パスをセット
|
||||
if( ( ( bootType == OS_BOOTTYPE_NAND ) && // NANDアプリがNANDからブートされた時
|
||||
( titleID_Hi & TITLEID_HI_MEDIA_NAND_FLAG ) ) ||
|
||||
( ( bootType == OS_BOOTTYPE_ROM ) && // ISデバッガ上で、NANDアプリがROM からブートされた時
|
||||
( titleID_Hi & TITLEID_HI_MEDIA_NAND_FLAG ) &&
|
||||
( SYSMi_GetWork()->isOnDebugger ) )
|
||||
) {
|
||||
char saveFilePath[ 2 ][ FS_ENTRY_LONGNAME_MAX ];
|
||||
u32 saveDataSize[ 2 ];
|
||||
saveDataSize[ 0 ] = (( ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF)->private_save_data_size;
|
||||
saveDataSize[ 1 ] = (( ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF)->public_save_data_size;
|
||||
|
||||
// セーブデータのファイルパスを取得
|
||||
STD_TSNPrintf( saveFilePath[ 0 ], FS_ENTRY_LONGNAME_MAX,
|
||||
"nand:/title/%08x/%08x/data/private.sav", (u32)( titleID >> 32 ), titleID );
|
||||
STD_TSNPrintf( saveFilePath[ 1 ], FS_ENTRY_LONGNAME_MAX,
|
||||
"nand:/title/%08x/%08x/data/public.sav", (u32)( titleID >> 32 ), titleID );
|
||||
|
||||
// "ROMヘッダのNANDセーブファイルサイズ > 0" かつ そのファイルを開ける場合のみマウント情報を登録
|
||||
for( i = 0; i < 2; i++ ) {
|
||||
if( saveDataSize[ i ] ) {
|
||||
STD_CopyLStringZeroFill( pMountTgt->path, saveFilePath[ i ], OS_MOUNT_PATH_LEN );
|
||||
}else {
|
||||
pMountTgt->drive[ 0 ] = 0;
|
||||
}
|
||||
pMountTgt++;
|
||||
}
|
||||
}else {
|
||||
// タイトルID指定なしのカードアプリの場合は、セーブデータ無効
|
||||
for( i = 0; i < 2; i++ ) {
|
||||
pMountTgt->drive[ 0 ] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -218,7 +218,8 @@ static TitleProperty *SYSMi_CheckShortcutBoot( void )
|
||||
// 検査カード起動
|
||||
//-----------------------------------------------------
|
||||
if( SYSM_IsExistCard() ) {
|
||||
if( SYSMi_GetWork()->isOnDebugger ||
|
||||
if( ( SYSMi_GetWork()->isOnDebugger && // ISデバッガが有効かつJTAGがまだ有効でない時
|
||||
!( *(u8 *)( HW_SYS_CONF_BUF + HWi_WSYS09_OFFSET ) & HWi_WSYS09_JTAG_CPUJE_MASK ) ) ||
|
||||
SYSM_IsInspectCard() ||
|
||||
( ( PAD_Read() & PAD_PRODUCTION_SHORTCUT_CARD_BOOT ) ==
|
||||
PAD_PRODUCTION_SHORTCUT_CARD_BOOT )
|
||||
@ -724,6 +725,7 @@ void SYSM_StartLoadTitle( TitleProperty *pBootTitle )
|
||||
// TWL-ROMヘッダ情報の再配置
|
||||
MI_CpuCopyFast( (void *)(OS_TWL_HEADER_PRELOAD_MMEM), (void *)HW_TWL_ROM_HEADER_BUF, HW_ROM_HEADER_BUF_END - HW_ROM_HEADER_BUF );
|
||||
MI_CpuCopyFast( (void *)(OS_TWL_HEADER_PRELOAD_MMEM), (void *)HW_ROM_HEADER_BUF, HW_ROM_HEADER_BUF_END - HW_ROM_HEADER_BUF );
|
||||
// NTR-ROMヘッダ情報の再配置は、rebootライブラリで行う。
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -75,10 +75,10 @@ void TwlMain( void )
|
||||
OSTick start, end = 0;
|
||||
BOOL direct_boot = FALSE;
|
||||
|
||||
OS_Init();
|
||||
// システムメニュー初期化----------
|
||||
SYSM_SetArena();
|
||||
SYSM_Init( Alloc, Free ); // OS_Initは、本関数内でコールしているので、コールする必要なし。
|
||||
SYSM_Init( Alloc, Free ); // OS_Initの前でコールする必要あり。
|
||||
OS_Init();
|
||||
SYSM_SetArena(); // OS_Initの後でコールする必要あり。
|
||||
|
||||
// OS初期化------------------------
|
||||
OS_InitTick();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user