From b61a8af6b1bfdace3a62fcd45c1f347a400374c2 Mon Sep 17 00:00:00 2001 From: yoshida_teruhisa Date: Fri, 23 May 2008 08:42:42 +0000 Subject: [PATCH] =?UTF-8?q?Shared2=E3=81=AE=E5=85=B1=E6=9C=89=E3=83=95?= =?UTF-8?q?=E3=82=A1=E3=82=A4=E3=83=AB=E3=82=92=E3=83=98=E3=83=83=E3=83=80?= =?UTF-8?q?=E6=83=85=E5=A0=B1=E3=81=AB=E5=BE=93=E3=81=A3=E3=81=A6=E3=83=9E?= =?UTF-8?q?=E3=82=A6=E3=83=B3=E3=83=88=E3=81=99=E3=82=8B=E3=82=88=E3=81=86?= =?UTF-8?q?=E5=A4=89=E6=9B=B4=20=E3=83=9C=E3=83=B3=E3=83=87=E3=82=A3?= =?UTF-8?q?=E3=83=B3=E3=82=B0=E3=82=AA=E3=83=97=E3=82=B7=E3=83=A7=E3=83=B3?= =?UTF-8?q?00=E3=81=AE=E3=81=BF=E3=83=9B=E3=83=AF=E3=82=A4=E3=83=88?= =?UTF-8?q?=E3=83=AA=E3=82=B9=E3=83=88=E3=83=81=E3=82=A7=E3=83=83=E3=82=AF?= =?UTF-8?q?=E3=82=92=E3=81=8B=E3=81=91=E3=82=8B=E3=82=88=E3=81=86=E5=A4=89?= =?UTF-8?q?=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1496 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../sysmenu/ARM9/src/title.c | 8 +-- .../sysmenu/common/src/mountInfo.c | 72 ++++++++++++++++++- 2 files changed, 73 insertions(+), 7 deletions(-) diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c index 7ec4e61c..3a353c9b 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c @@ -1211,8 +1211,8 @@ static AuthResult SYSMi_AuthenticateNTRCardAppHeader( TitleProperty *pBootTitle, { AuthResult ret = AUTH_RESULT_SUCCEEDED; - // デバッガで読み込むROMには適用しない - if( SYSM_IsRunOnDebugger() ) + // ボンディングオプション00にだけ適用 + if( !SCFG_GetBondingOption() == 0 ) { return AUTH_RESULT_SUCCEEDED; } @@ -1258,8 +1258,8 @@ static AuthResult SYSMi_AuthenticateNTRCardTitle( TitleProperty *pBootTitle) SVCHMACSHA1Context ctx; ROM_Header_Short *hs = ( ROM_Header_Short *)SYSM_APP_ROM_HEADER_BUF; - // デバッガで読み込むROMには適用しない - if( SYSM_IsRunOnDebugger() ) + // ボンディングオプション00にだけ適用 + if( !SCFG_GetBondingOption() == 0 ) { return AUTH_RESULT_SUCCEEDED; } diff --git a/build/libraries_sysmenu/sysmenu/common/src/mountInfo.c b/build/libraries_sysmenu/sysmenu/common/src/mountInfo.c index 45d2cb4f..db320edb 100644 --- a/build/libraries_sysmenu/sysmenu/common/src/mountInfo.c +++ b/build/libraries_sysmenu/sysmenu/common/src/mountInfo.c @@ -29,6 +29,7 @@ #define NAND2_MOUNT_INDEX 1 #define CONTENT_MOUNT_INDEX 2 #define SHARED1_MOUNT_INDEX 3 +#define SHARED2_MOUNT_INDEX 4 #define PRV_SAVE_DATA_MOUNT_INDEX 6 // プライベートセーブデータの s_defaultMountInfo リストインデックス #define PUB_SAVE_DATA_MOUNT_INDEX 7 // パブリック セーブデータの s_defaultMountInfo リストインデックス #define SDMC_MOUNT_INDEX 8 @@ -46,6 +47,7 @@ static void SYSMi_SetBootSRLPath( LauncherBootType bootType, NAMTitleId titleID static void SYSMi_SetMountInfoCore( LauncherBootType bootType, NAMTitleId titleID, OSMountInfo *pSrc, OSMountInfo *pDst ); static void SYSMi_ModifySaveDataMount( LauncherBootType bootType, NAMTitleId titleID, OSMountInfo *pMountTgt ); static void SYSMi_ModifySaveDataMountForLauncher( LauncherBootType bootType, NAMTitleId titleID, OSMountInfo *pMountTgt ); +static void SYSMi_ModifyShared2FileMount( LauncherBootType bootType, NAMTitleId titleID, OSMountInfo *pMountTgt ); // global variable------------------------------------------------------------- // static variable------------------------------------------------------------- @@ -58,7 +60,7 @@ OSMountInfo s_defaultMountList[ DEFAULT_MOUNT_LIST_NUM ] ATTRIBUTE_ALIGN(4) = { { 'B', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_ROOT, 1, OS_MOUNT_RSC_WRAM, (OS_MOUNT_USR_R|OS_MOUNT_USR_W), 0, 0, "nand2", "/" }, // ユーザーアプリはこのアーカイブではR/W不可 { 'C', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_DIR, 0, OS_MOUNT_RSC_MMEM, (OS_MOUNT_USR_R), 0, 0, "content", NULL }, // Write不可 { 'D', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_DIR, 0, OS_MOUNT_RSC_MMEM, (OS_MOUNT_USR_R), 0, 0, "shared1", "nand:/shared1" }, // Write不可 - { 'E', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_DIR, 0, OS_MOUNT_RSC_MMEM, (OS_MOUNT_USR_R|OS_MOUNT_USR_W), 0, 0, "shared2", "nand:/shared2" }, + { 'E', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_FILE, 0, OS_MOUNT_RSC_MMEM, (OS_MOUNT_USR_R|OS_MOUNT_USR_W), 0, 0, "shared2", NULL }, // アプリ間共有ファイル { 'F', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_DIR, 1, OS_MOUNT_RSC_MMEM, (OS_MOUNT_USR_R|OS_MOUNT_USR_W), 0, 0, "photo", "nand2:/photo" }, { 'G', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_FILE, 0, OS_MOUNT_RSC_MMEM, (OS_MOUNT_USR_R|OS_MOUNT_USR_W), 0, 0, "dataPrv", NULL }, // NANDにセーブデータがないアプリの場合は、マウントされない。 { 'H', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_FILE, 0, OS_MOUNT_RSC_MMEM, (OS_MOUNT_USR_R|OS_MOUNT_USR_W), 0, 0, "dataPub", NULL }, // NANDにセーブデータがないアプリの場合は、マウントされない。 @@ -93,6 +95,11 @@ void SYSMi_SetLauncherMountInfo( void ) titleID, &mountListBuffer[ PRV_SAVE_DATA_MOUNT_INDEX ] ); + // Shared2のアプリ間共有ファイルセット(LAUNCHERで使うかどうかは微妙) + SYSMi_ModifyShared2FileMount( LAUNCHER_BOOTTYPE_NAND, + titleID, + &mountListBuffer[ SHARED2_MOUNT_INDEX ] ); + // マウント情報のセット SYSMi_SetMountInfoCore( LAUNCHER_BOOTTYPE_NAND, titleID, @@ -150,6 +157,12 @@ void SYSMi_SetBootAppMountInfo( TitleProperty *pBootTitle ) } } + // TMPジャンプ時のcontentはマウントしない + if( (LauncherBootType)pBootTitle->flags.bootType == LAUNCHER_BOOTTYPE_TEMP ) + { + mountListBuffer[CONTENT_MOUNT_INDEX].drive[ 0 ] = 0; + } + // セーブデータ有無によるマウント情報の編集 // ※ARM7ではNAMは動かせないので、NAMを使わないバージョンで対応。 SYSMi_ModifySaveDataMountForLauncher( LAUNCHER_BOOTTYPE_NAND, @@ -161,6 +174,12 @@ void SYSMi_SetBootAppMountInfo( TitleProperty *pBootTitle ) pBootTitle->titleID, &mountListBuffer[ PRV_SAVE_DATA_MOUNT_INDEX ] ); */ + + // Shared2のアプリ間共有ファイルセット + SYSMi_ModifyShared2FileMount( LAUNCHER_BOOTTYPE_NAND, + pBootTitle->titleID, + &mountListBuffer[ SHARED2_MOUNT_INDEX ] ); + // マウント情報のセット SYSMi_SetMountInfoCore( (LauncherBootType)pBootTitle->flags.bootType, pBootTitle->titleID, @@ -183,8 +202,6 @@ static void SYSMi_SetMountInfoCore( LauncherBootType bootType, NAMTitleId titleI int i; char contentpath[ FS_ENTRY_LONGNAME_MAX ]; - // [TODO]TMPジャンプ時のcontentパス指定がうまくいっていない。マウントしないようにしたら良い。 - // タイトルIDからcontentのファイルパスをセット STD_TSNPrintf( contentpath, FS_ENTRY_LONGNAME_MAX, "nand:/title/%08x/%08x/content", (u32)( titleID >> 32 ), titleID ); @@ -210,6 +227,53 @@ static void SYSMi_SetMountInfoCore( LauncherBootType bootType, NAMTitleId titleI #endif } +#define KB ( 1024 ) +#define MB ( 1024 * 1024 ) +#define SHARED2FILE_SIZE_VALUE_TABLE_LENGTH 9 +static u32 shared2FileSizeValueTable[] = { + 16 * KB, 32 * KB, 64 * KB, 128 * KB, 256 * KB, 512 * KB, + 1 * MB, 2 * MB, 4 * MB +}; + +// shared2ファイルのマウント情報を編集する。 +static void SYSMi_ModifyShared2FileMount( LauncherBootType bootType, NAMTitleId titleID, OSMountInfo *pMountTgt ) +{ +#pragma unused(bootType,titleID) + int l; + BOOL sizeok = FALSE; + + // NANDアクセス可能でshared2_fileビットが立っていればマウント + if( (( ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF)->access_control.nand_access && + (( ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF)->access_control.shared2_file ) { + char shared2FilePath[ FS_ENTRY_LONGNAME_MAX ]; + u32 shared2DataSize = (( ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF)->shared2_file_size; + + // ファイルパスを取得 + STD_TSNPrintf( shared2FilePath, FS_ENTRY_LONGNAME_MAX, + "nand:/shared2/%04X", (( ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF)->shared2_file_index); + + //[TODO:]実際にファイルのサイズを見て同じかどうかもチェック + // サイズチェックしてマウント情報登録 + for(l=0; lpath, shared2FilePath, OS_MOUNT_PATH_LEN ); + }else { + pMountTgt->drive[ 0 ] = 0; + } + + }else { + // 可能でなければshared2マウント無効 + pMountTgt->drive[ 0 ] = 0; + } +} + // タイトルIDをもとにセーブデータ有無を判定して、マウント情報を編集する。 static void SYSMi_ModifySaveDataMount( LauncherBootType bootType, NAMTitleId titleID, OSMountInfo *pMountTgt ) @@ -280,6 +344,8 @@ static void SYSMi_ModifySaveDataMountForLauncher( LauncherBootType bootType, NAM STD_TSNPrintf( saveFilePath[ 1 ], FS_ENTRY_LONGNAME_MAX, "nand:/title/%08x/%08x/data/public.sav", (u32)( titleID >> 32 ), titleID ); + //[TODO:]実際にファイルを開いてみて、開けるかどうかチェック + // "ROMヘッダのNANDセーブファイルサイズ > 0" かつ そのファイルを開ける場合のみマウント情報を登録 for( i = 0; i < 2; i++ ) { if( saveDataSize[ i ] ) {