From 085e06a113d066be30e07b89ec47cc7f1284fc00 Mon Sep 17 00:00:00 2001 From: kamikawa Date: Mon, 14 Jul 2008 07:42:09 +0000 Subject: [PATCH] =?UTF-8?q?NAMUT=5FFormat=20=E3=81=AB=E5=85=A8Share?= =?UTF-8?q?=E3=83=87=E3=83=BC=E3=82=BF(0000=EF=BD=9E0005=EF=BC=89=E3=81=AE?= =?UTF-8?q?=E5=88=9D=E6=9C=9F=E5=8C=96=E3=82=92=E8=A1=8C=E3=81=86=E5=87=A6?= =?UTF-8?q?=E7=90=86=E3=82=92=E8=BF=BD=E5=8A=A0=E3=80=82=20=E3=83=95?= =?UTF-8?q?=E3=82=A1=E3=82=A4=E3=83=AB=E3=82=AF=E3=83=AA=E3=82=A2=E5=87=A6?= =?UTF-8?q?=E7=90=86=E3=81=AE=E9=AB=98=E9=80=9F=E5=8C=96=E3=81=AE=E3=81=9F?= =?UTF-8?q?=E3=82=81=E3=81=AB=E3=82=AF=E3=83=AA=E3=82=A2=E3=83=90=E3=83=83?= =?UTF-8?q?=E3=83=95=E3=82=A1=E3=82=B5=E3=82=A4=E3=82=BA=E3=82=92256Byte->?= =?UTF-8?q?4096Byte=E3=81=B8?= 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@1872 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../libraries_sysmenu/namut/ARM9/src/namut.c | 146 ++++++++++++++++-- include/sysmenu/namut.h | 2 +- 2 files changed, 130 insertions(+), 18 deletions(-) diff --git a/build/libraries_sysmenu/namut/ARM9/src/namut.c b/build/libraries_sysmenu/namut/ARM9/src/namut.c index 4e92359d..d8b7b87e 100644 --- a/build/libraries_sysmenu/namut/ARM9/src/namut.c +++ b/build/libraries_sysmenu/namut/ARM9/src/namut.c @@ -41,7 +41,7 @@ #define DIRECTORY_DEPTH_MAX 16 // ディレクトリの深さの最大(NANDの正規構成としては最大6) #define TITLE_ID_HI_SIZE 8 #define TITLE_LIST_MAX 256 -#define CLEAR_DATA_SIZE 256 +#define CLEAR_DATA_SIZE 4096 // ファイル消去データ用(512の倍数で大きいほど処理が早い) // 本体初期化(NAND初期化)実行時に // 指定ディレクトリ以下は全て消去されます。 @@ -64,6 +64,7 @@ static const char* sFillFileList[] = #define VOLUME_INITIAL_VALUE 5 // 本体初期化時に設定する本体ボリューム値 #define BACKLIGHT_INITIAL_VALUE 3 // 本体初期化時に設定するバックライト輝度 +#define NAMUT_SHARE_ARCHIVE_MAX 6 // shareデータ個数 /*---------------------------------------------------------------------------* 内部変数定義 @@ -74,7 +75,6 @@ static NAMUTFree spFreeFunc; static FSDirectoryEntryInfo sEntryInfo; static NAMTitleId sTitleIdArray[TITLE_LIST_MAX]; static char sCurrentFullPath[FS_ENTRY_LONGNAME_MAX]; -static u8 sClearData[CLEAR_DATA_SIZE] ATTRIBUTE_ALIGN(32); static u32 sNCFGAddr; /*---------------------------------------------------------------------------* @@ -84,6 +84,7 @@ static u32 sNCFGAddr; static BOOL NAMUTi_DeleteNonprotectedTitle(void); static BOOL NAMUTi_DeleteNonprotectedTitleEntity(const char* path); static BOOL NAMUTi_ClearSavedataAll(void); +static BOOL NAMUTi_InitShareData(void); static BOOL NAMUTi_MountAndFormatOtherTitleSaveData(u64 titleID, const char *arcname); static void NAMUTi_DrawNandTree(s32 depth, const char *path); static BOOL NAMUTi_RandClearFile(const char* path); @@ -96,7 +97,7 @@ static void PrintFile(s32 depth, const char* path); Description: NAMUT ライブラリの初期化を行います。 - Arguments: allocFunc: メモリ確保関数へのポインタ。 + Arguments: allocFunc: メモリ確保関数へのポインタ。(要:32byteアライメント) freeFunc: メモリ解放関数へのポインタ。 Returns: なし。 @@ -134,13 +135,20 @@ BOOL NAMUT_Format(void) OS_TWarning("Fail! NAMUTi_DeleteNonprotectedTitle()\n"); } - // プロテクトタイトルのセーブデータをフォーマットします + // プロテクトタイトルのセーブデータを初期化します if (!NAMUTi_ClearSavedataAll()) { ret = FALSE; OS_TWarning("Fail! NAMUTi_ClearSavedataAll()\n"); } + // shareデータを初期化します + if (!NAMUTi_InitShareData()) + { + ret = FALSE; + OS_TWarning("Fail! NAMUTi_InitShareData()\n"); + } + // 指定ファイルを乱数でクリアします for (i=0; i CLEAR_DATA_SIZE; filesize -= CLEAR_DATA_SIZE) { - if( AES_Rand(sClearData, CLEAR_DATA_SIZE) != AES_RESULT_SUCCESS ) + if( AES_Rand(pClearData, CLEAR_DATA_SIZE) != AES_RESULT_SUCCESS ) { + spFreeFunc( pClearData ); return FALSE; } - FS_WriteFile(&file, sClearData, CLEAR_DATA_SIZE); + FS_WriteFile(&file, pClearData, CLEAR_DATA_SIZE); } - FS_WriteFile(&file, sClearData, (s32)filesize); + FS_WriteFile(&file, pClearData, (s32)filesize); FS_CloseFile(&file); + spFreeFunc( pClearData ); } else { @@ -796,8 +904,14 @@ static void NAMUTi_ClearWiFiSettings( void ) #define NCFG_ADDR 0x20 #define NTR_WIFI_DATA_SIZE 0x400 #define TWL_WIFI_DATA_SIZE 0x600 - int total_size = ( NTR_WIFI_DATA_SIZE + TWL_WIFI_DATA_SIZE ); - + u32 total_size = ( NTR_WIFI_DATA_SIZE + TWL_WIFI_DATA_SIZE ); + u8* pClearData = spAllocFunc( total_size ); + if (!pClearData) + { + OS_TWarning("Allocation failed. (%d)\n"); + return; + } + if (!NVRAMi_IsInitialized()) { NVRAMi_Init(); } @@ -806,13 +920,11 @@ static void NAMUTi_ClearWiFiSettings( void ) NVRAMi_Read( NCFG_ADDR, 2, (u8 *)&sNCFGAddr); sNCFGAddr = (u32)( ( sNCFGAddr << 3 ) - ( NTR_WIFI_DATA_SIZE + TWL_WIFI_DATA_SIZE ) ); - MI_CpuFillFast( sClearData, 0xffffffff, CLEAR_DATA_SIZE); - DC_FlushRange( sClearData, CLEAR_DATA_SIZE ); - while( total_size > 0 ) { - NVRAMi_Write( sNCFGAddr, CLEAR_DATA_SIZE , sClearData ); - sNCFGAddr += CLEAR_DATA_SIZE; - total_size -= CLEAR_DATA_SIZE; - } + MI_CpuFillFast( pClearData, 0xffffffff, total_size); + DC_FlushRange( pClearData, total_size ); + NVRAMi_Write( sNCFGAddr, total_size , pClearData ); + + spFreeFunc( pClearData ); } diff --git a/include/sysmenu/namut.h b/include/sysmenu/namut.h index e46bcfd9..4a830662 100644 --- a/include/sysmenu/namut.h +++ b/include/sysmenu/namut.h @@ -32,7 +32,7 @@ typedef void (*NAMUTFree)(void* ptr); Description: NAMUT ライブラリの初期化を行います。 - Arguments: allocFunc: メモリ確保関数へのポインタ。 + Arguments: allocFunc: メモリ確保関数へのポインタ。(要:32byteアライメント) freeFunc: メモリ解放関数へのポインタ。 Returns: なし。