mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
・SDK5.0FCplus4用IPLブランチのマージ
・時間計測処理の追加 git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1597 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
a0145ed624
commit
f99d45cd2f
@ -201,6 +201,17 @@ Autoload WRAM
|
|||||||
|
|
||||||
Library libathdrv_sp$(LIBSUFFIX).a (.bss)
|
Library libathdrv_sp$(LIBSUFFIX).a (.bss)
|
||||||
Library libathdrv_sp$(LIBSUFFIX).a (.data)
|
Library libathdrv_sp$(LIBSUFFIX).a (.data)
|
||||||
|
|
||||||
|
# FATFS core symbols
|
||||||
|
Object OBJECT(FATFSi_lfi2text, libfatfs_sp$(LIBSUFFIX).a) (.text) # 360 BYTEs
|
||||||
|
Object OBJECT(FATFSi_pc_findin, libfatfs_sp$(LIBSUFFIX).a) (.text) # 904 BYTEs
|
||||||
|
Object OBJECT(FATFSi_pc_patcmp_vfat, libfatfs_sp$(LIBSUFFIX).a) (.text) # 436 BYTEs
|
||||||
|
Object OBJECT(FATFSi_pc_ascii_mfile, libfatfs_sp$(LIBSUFFIX).a) (.text) # 160 BYTEs
|
||||||
|
Object OBJECT(FATFSi_map_ascii_to_unicode, libfatfs_sp$(LIBSUFFIX).a) (.text) # 48 BYTEs
|
||||||
|
Object OBJECT(SDCARD_Intr_Thread, libfatfs_sp$(LIBSUFFIX).a) (.text) # 520 BYTEs
|
||||||
|
Object OBJECT(FATFSi_unicode_cmp_to_ascii_char, libfatfs_sp$(LIBSUFFIX).a) (.text) # 40 BYTEs
|
||||||
|
Object OBJECT(FATFSi_pc_read_blk, libfatfs_sp$(LIBSUFFIX).a) (.text) # 352 BYTEs
|
||||||
|
|
||||||
Object * (.rsvwram)
|
Object * (.rsvwram)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -25,6 +25,8 @@ typedef struct BannerCheckParam {
|
|||||||
u32 size;
|
u32 size;
|
||||||
}BannerCheckParam;
|
}BannerCheckParam;
|
||||||
|
|
||||||
|
#define MEASURE_BANNER_LOAD_TIME 0
|
||||||
|
|
||||||
// extern data-----------------------------------------------------------------
|
// extern data-----------------------------------------------------------------
|
||||||
// function's prototype-------------------------------------------------------
|
// function's prototype-------------------------------------------------------
|
||||||
|
|
||||||
@ -66,7 +68,11 @@ BOOL BANNER_ReadBannerFromCARD( u32 bannerOffset, TWLBannerFile *pBanner )
|
|||||||
BOOL BANNER_ReadBannerFromNAND( OSTitleId titleID, TWLBannerFile *pDst )
|
BOOL BANNER_ReadBannerFromNAND( OSTitleId titleID, TWLBannerFile *pDst )
|
||||||
{
|
{
|
||||||
#define PATH_LENGTH 1024
|
#define PATH_LENGTH 1024
|
||||||
|
|
||||||
|
#if (MEASURE_BANNER_LOAD_TIME == 1)
|
||||||
OSTick start;
|
OSTick start;
|
||||||
|
#endif
|
||||||
|
|
||||||
FSFile file[1];
|
FSFile file[1];
|
||||||
BOOL bSuccess;
|
BOOL bSuccess;
|
||||||
char path[PATH_LENGTH];
|
char path[PATH_LENGTH];
|
||||||
@ -75,9 +81,15 @@ BOOL BANNER_ReadBannerFromNAND( OSTitleId titleID, TWLBannerFile *pDst )
|
|||||||
|
|
||||||
FS_InitFile(file);
|
FS_InitFile(file);
|
||||||
|
|
||||||
|
#if (MEASURE_BANNER_LOAD_TIME == 1)
|
||||||
start = OS_GetTick();
|
start = OS_GetTick();
|
||||||
|
#endif
|
||||||
|
|
||||||
readLen = NAM_GetTitleBootContentPathFast( path, titleID );
|
readLen = NAM_GetTitleBootContentPathFast( path, titleID );
|
||||||
|
|
||||||
|
#if (MEASURE_BANNER_LOAD_TIME == 1)
|
||||||
OS_TPrintf( "NAM_GetTitleBootContentPath : %dus\n", OS_TicksToMicroSeconds( OS_GetTick() - start ) );
|
OS_TPrintf( "NAM_GetTitleBootContentPath : %dus\n", OS_TicksToMicroSeconds( OS_GetTick() - start ) );
|
||||||
|
#endif
|
||||||
|
|
||||||
// ファイルパスを取得
|
// ファイルパスを取得
|
||||||
if(readLen != NAM_OK){
|
if(readLen != NAM_OK){
|
||||||
@ -85,6 +97,10 @@ BOOL BANNER_ReadBannerFromNAND( OSTitleId titleID, TWLBannerFile *pDst )
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if (MEASURE_BANNER_LOAD_TIME == 1)
|
||||||
|
start = OS_GetTick();
|
||||||
|
#endif
|
||||||
|
|
||||||
// ファイルオープン
|
// ファイルオープン
|
||||||
bSuccess = FS_OpenFileEx(file, path, FS_FILEMODE_R);
|
bSuccess = FS_OpenFileEx(file, path, FS_FILEMODE_R);
|
||||||
if( ! bSuccess )
|
if( ! bSuccess )
|
||||||
@ -93,6 +109,11 @@ BOOL BANNER_ReadBannerFromNAND( OSTitleId titleID, TWLBannerFile *pDst )
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if (MEASURE_BANNER_LOAD_TIME == 1)
|
||||||
|
OS_TPrintf( "OpenFileEX : %dus\n", OS_TicksToMicroSeconds( OS_GetTick() - start ) );
|
||||||
|
start = OS_GetTick();
|
||||||
|
#endif
|
||||||
|
|
||||||
// ROMヘッダのバナーデータオフセットを読み込む
|
// ROMヘッダのバナーデータオフセットを読み込む
|
||||||
bSuccess = FS_SeekFile(file, 0x68, FS_SEEK_SET);
|
bSuccess = FS_SeekFile(file, 0x68, FS_SEEK_SET);
|
||||||
if( ! bSuccess )
|
if( ! bSuccess )
|
||||||
@ -101,6 +122,12 @@ BOOL BANNER_ReadBannerFromNAND( OSTitleId titleID, TWLBannerFile *pDst )
|
|||||||
FS_CloseFile(file);
|
FS_CloseFile(file);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if (MEASURE_BANNER_LOAD_TIME == 1)
|
||||||
|
OS_TPrintf( "FS_SeekFile offset: %dus\n", OS_TicksToMicroSeconds( OS_GetTick() - start ) );
|
||||||
|
start = OS_GetTick();
|
||||||
|
#endif
|
||||||
|
|
||||||
readLen = FS_ReadFile(file, &offset, sizeof(offset));
|
readLen = FS_ReadFile(file, &offset, sizeof(offset));
|
||||||
if( readLen != sizeof(offset) )
|
if( readLen != sizeof(offset) )
|
||||||
{
|
{
|
||||||
@ -108,9 +135,18 @@ BOOL BANNER_ReadBannerFromNAND( OSTitleId titleID, TWLBannerFile *pDst )
|
|||||||
FS_CloseFile(file);
|
FS_CloseFile(file);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if (MEASURE_BANNER_LOAD_TIME == 1)
|
||||||
|
OS_TPrintf( "FS_ReadFile offset : %dus\n", OS_TicksToMicroSeconds( OS_GetTick() - start ) );
|
||||||
|
#endif
|
||||||
|
|
||||||
// バナーが存在する場合のみリード
|
// バナーが存在する場合のみリード
|
||||||
if( offset ) {
|
if( offset ) {
|
||||||
|
|
||||||
|
#if (MEASURE_BANNER_LOAD_TIME == 1)
|
||||||
|
start = OS_GetTick();
|
||||||
|
#endif
|
||||||
|
|
||||||
bSuccess = FS_SeekFile(file, offset, FS_SEEK_SET);
|
bSuccess = FS_SeekFile(file, offset, FS_SEEK_SET);
|
||||||
if( ! bSuccess )
|
if( ! bSuccess )
|
||||||
{
|
{
|
||||||
@ -118,6 +154,12 @@ BOOL BANNER_ReadBannerFromNAND( OSTitleId titleID, TWLBannerFile *pDst )
|
|||||||
FS_CloseFile(file);
|
FS_CloseFile(file);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if (MEASURE_BANNER_LOAD_TIME == 1)
|
||||||
|
OS_TPrintf( "FS_SeekFile banner: %dus\n", OS_TicksToMicroSeconds( OS_GetTick() - start ) );
|
||||||
|
start = OS_GetTick();
|
||||||
|
#endif
|
||||||
|
|
||||||
readLen = FS_ReadFile( file, pDst, (s32)sizeof(TWLBannerFile) );
|
readLen = FS_ReadFile( file, pDst, (s32)sizeof(TWLBannerFile) );
|
||||||
if( readLen != (s32)sizeof(TWLBannerFile) )
|
if( readLen != (s32)sizeof(TWLBannerFile) )
|
||||||
{
|
{
|
||||||
@ -125,21 +167,46 @@ BOOL BANNER_ReadBannerFromNAND( OSTitleId titleID, TWLBannerFile *pDst )
|
|||||||
FS_CloseFile(file);
|
FS_CloseFile(file);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if (MEASURE_BANNER_LOAD_TIME == 1)
|
||||||
|
OS_TPrintf( "FS_ReadFile banner: %dus\n", OS_TicksToMicroSeconds( OS_GetTick() - start ) );
|
||||||
|
start = OS_GetTick();
|
||||||
|
#endif
|
||||||
|
|
||||||
if( !BANNER_CheckBanner( pDst ) )
|
if( !BANNER_CheckBanner( pDst ) )
|
||||||
{
|
{
|
||||||
// 正当性チェック失敗の場合はバッファクリア
|
// 正当性チェック失敗の場合はバッファクリア
|
||||||
MI_CpuClearFast( pDst, sizeof(TWLBannerFile) );
|
MI_CpuClearFast( pDst, sizeof(TWLBannerFile) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if (MEASURE_BANNER_LOAD_TIME == 1)
|
||||||
|
OS_TPrintf( "check banner: %dus\n", OS_TicksToMicroSeconds( OS_GetTick() - start ) );
|
||||||
|
#endif
|
||||||
|
|
||||||
}else {
|
}else {
|
||||||
// バナーが存在しない場合はバッファクリア
|
// バナーが存在しない場合はバッファクリア
|
||||||
MI_CpuClearFast( pDst, sizeof(TWLBannerFile) );
|
MI_CpuClearFast( pDst, sizeof(TWLBannerFile) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if (MEASURE_BANNER_LOAD_TIME == 1)
|
||||||
|
start = OS_GetTick();
|
||||||
|
#endif
|
||||||
|
|
||||||
FS_CloseFile(file);
|
FS_CloseFile(file);
|
||||||
|
|
||||||
|
#if (MEASURE_BANNER_LOAD_TIME == 1)
|
||||||
|
OS_TPrintf( "close file : %dus\n", OS_TicksToMicroSeconds( OS_GetTick() - start ) );
|
||||||
|
start = OS_GetTick();
|
||||||
|
#endif
|
||||||
|
|
||||||
// サブバナーファイルを読み込んでみる
|
// サブバナーファイルを読み込んでみる
|
||||||
if(NAM_OK == NAM_GetTitleBannerFilePath( path, titleID ))
|
if(NAM_OK == NAM_GetTitleBannerFilePath( path, titleID ))
|
||||||
{
|
{
|
||||||
|
|
||||||
|
#if (MEASURE_BANNER_LOAD_TIME == 1)
|
||||||
|
OS_TPrintf( "NAM_GetTitleBannerFilePath : %dus\n", OS_TicksToMicroSeconds( OS_GetTick() - start ) );
|
||||||
|
start = OS_GetTick();
|
||||||
|
#endif
|
||||||
if( FS_OpenFileEx(file, path, FS_FILEMODE_R) )
|
if( FS_OpenFileEx(file, path, FS_FILEMODE_R) )
|
||||||
{
|
{
|
||||||
TWLSubBannerFile subBanner;
|
TWLSubBannerFile subBanner;
|
||||||
@ -153,16 +220,21 @@ BOOL BANNER_ReadBannerFromNAND( OSTitleId titleID, TWLBannerFile *pDst )
|
|||||||
// 成功したのでコピーする
|
// 成功したのでコピーする
|
||||||
pDst->h = subBanner.h;
|
pDst->h = subBanner.h;
|
||||||
pDst->anime = subBanner.anime;
|
pDst->anime = subBanner.anime;
|
||||||
OS_TPrintf("BANNER_ReadBanner_NAND : subbanner check succeed. id=%.16x\n", titleID);
|
// OS_TPrintf("BANNER_ReadBanner_NAND : subbanner check succeed. id=%.16x\n", titleID);
|
||||||
}else
|
}else
|
||||||
{
|
{
|
||||||
OS_TPrintf("BANNER_ReadBanner_NAND : subbanner check failed. id=%.16x\n", titleID);
|
// OS_TPrintf("BANNER_ReadBanner_NAND : subbanner check failed. id=%.16x\n", titleID);
|
||||||
}
|
}
|
||||||
}else
|
}else
|
||||||
{
|
{
|
||||||
OS_TPrintf("BANNER_ReadBanner_NAND : subbanner read failed. id=%.16x\n", titleID);
|
OS_TPrintf("BANNER_ReadBanner_NAND : subbanner read failed. id=%.16x\n", titleID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if (MEASURE_BANNER_LOAD_TIME == 1)
|
||||||
|
OS_TPrintf( "open-read-close-check subbanner : %dus\n", OS_TicksToMicroSeconds( OS_GetTick() - start ) );
|
||||||
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|||||||
@ -784,6 +784,9 @@ static void NAMUTi_ClearWiFiSettings( void )
|
|||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static void PrintDirectory(s32 depth, const char* path)
|
static void PrintDirectory(s32 depth, const char* path)
|
||||||
{
|
{
|
||||||
|
#ifdef SDK_FINALROM
|
||||||
|
#pragma unused(path)
|
||||||
|
#endif
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i=0; i<depth; i++)
|
for (i=0; i<depth; i++)
|
||||||
@ -805,6 +808,9 @@ static void PrintDirectory(s32 depth, const char* path)
|
|||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static void PrintFile(s32 depth, const char* filename)
|
static void PrintFile(s32 depth, const char* filename)
|
||||||
{
|
{
|
||||||
|
#ifdef SDK_FINALROM
|
||||||
|
#pragma unused(filename)
|
||||||
|
#endif
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i=0; i<depth+1; i++)
|
for (i=0; i<depth+1; i++)
|
||||||
|
|||||||
@ -23,6 +23,9 @@
|
|||||||
#include "fs_wram.h"
|
#include "fs_wram.h"
|
||||||
|
|
||||||
// define data-----------------------------------------------------------------
|
// define data-----------------------------------------------------------------
|
||||||
|
|
||||||
|
#define MEASURE_MAKELIST_TIME 0
|
||||||
|
|
||||||
#define CARD_BANNER_INDEX ( LAUNCHER_TITLE_LIST_NUM - 1 )
|
#define CARD_BANNER_INDEX ( LAUNCHER_TITLE_LIST_NUM - 1 )
|
||||||
|
|
||||||
#define LAUNCHER_KEY_INDEX 0 // ファームから送られてくる鍵のうちLauncherキーのインデックス
|
#define LAUNCHER_KEY_INDEX 0 // ファームから送られてくる鍵のうちLauncherキーのインデックス
|
||||||
@ -1627,7 +1630,13 @@ static void SYSMi_makeTitleIdList( void )
|
|||||||
int l;
|
int l;
|
||||||
u8 count = 0;
|
u8 count = 0;
|
||||||
int max = ( s_listLength < OS_TITLEIDLIST_MAX ) ? s_listLength : OS_TITLEIDLIST_MAX;
|
int max = ( s_listLength < OS_TITLEIDLIST_MAX ) ? s_listLength : OS_TITLEIDLIST_MAX;
|
||||||
|
OSTick start;
|
||||||
|
#if (MEASURE_MAKELIST_TIME == 1)
|
||||||
|
OSTick prev;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ŽžŠÔŒv‘ª‘<C2AA><E28098>‡
|
||||||
|
start = OS_GetTick();
|
||||||
if( s_pTitleIDList == NULL )
|
if( s_pTitleIDList == NULL )
|
||||||
{
|
{
|
||||||
OS_TPrintf("SYSMi_makeTitleIdList failed: SYSM_InitNandTitleList() is not called.\n");
|
OS_TPrintf("SYSMi_makeTitleIdList failed: SYSM_InitNandTitleList() is not called.\n");
|
||||||
@ -1672,7 +1681,22 @@ static void SYSMi_makeTitleIdList( void )
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// romヘッダ読み込み
|
// romヘッダ読み込み
|
||||||
|
|
||||||
|
#if (MEASURE_MAKELIST_TIME == 1)
|
||||||
|
// ŽžŠÔŒv‘ª‚P
|
||||||
|
prev = OS_GetTick();
|
||||||
|
#endif
|
||||||
|
|
||||||
NAM_GetTitleBootContentPathFast(path, s_pTitleIDList[l]);
|
NAM_GetTitleBootContentPathFast(path, s_pTitleIDList[l]);
|
||||||
|
|
||||||
|
#if (MEASURE_MAKELIST_TIME == 1)
|
||||||
|
OS_TPrintf("SYSMi_makeTitleIdList : NAM_GetTitleBootContentPathFast %dms\n",OS_TicksToMilliSeconds(OS_GetTick() - prev));
|
||||||
|
// endŽžŠÔŒv‘ª‚P
|
||||||
|
|
||||||
|
// ŽžŠÔŒv‘ª‚Q
|
||||||
|
prev = OS_GetTick();
|
||||||
|
#endif
|
||||||
|
|
||||||
FS_InitFile( file );
|
FS_InitFile( file );
|
||||||
bSuccess = FS_OpenFileEx(file, path, FS_FILEMODE_R);
|
bSuccess = FS_OpenFileEx(file, path, FS_FILEMODE_R);
|
||||||
if( ! bSuccess )
|
if( ! bSuccess )
|
||||||
@ -1697,6 +1721,10 @@ static void SYSMi_makeTitleIdList( void )
|
|||||||
}
|
}
|
||||||
FS_CloseFile(file);
|
FS_CloseFile(file);
|
||||||
pe_hs = (ROM_Header_Short *)&e_hs;
|
pe_hs = (ROM_Header_Short *)&e_hs;
|
||||||
|
// endŽžŠÔŒv‘ª‚Q
|
||||||
|
#if (MEASURE_MAKELIST_TIME == 1)
|
||||||
|
OS_TPrintf("SYSMi_makeTitleIdList : read header. %dms\n",OS_TicksToMilliSeconds(OS_GetTick() - prev));
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
for(m=0;m<MAKER_CODE_MAX;m++)
|
for(m=0;m<MAKER_CODE_MAX;m++)
|
||||||
@ -1756,6 +1784,8 @@ static void SYSMi_makeTitleIdList( void )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
list->num = count;
|
list->num = count;
|
||||||
|
// endŽžŠÔŒv‘ª‘<C2AA><E28098>‡
|
||||||
|
OS_TPrintf("SYSMi_makeTitleIdList : total %dms\n",OS_TicksToMilliSeconds(OS_GetTick() - start));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -16,6 +16,7 @@
|
|||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#include <twl.h>
|
#include <twl.h>
|
||||||
|
#include <twl/nam.h>
|
||||||
#include <sysmenu.h>
|
#include <sysmenu.h>
|
||||||
|
|
||||||
// define data------------------------------------------
|
// define data------------------------------------------
|
||||||
@ -246,3 +247,31 @@ BOOL UTL_CheckRTCTime( RTCTime *timep )
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//======================================================================
|
||||||
|
// タイトル数取得
|
||||||
|
//======================================================================
|
||||||
|
|
||||||
|
// ローンチ対象のアプリ数カウント
|
||||||
|
int UTL_GetInstalledSoftBoxCount( void )
|
||||||
|
{
|
||||||
|
int l;
|
||||||
|
int listNum;
|
||||||
|
int validNum = 0;
|
||||||
|
OSTitleId titleIDArray[ LCFG_TWL_FREE_SOFT_BOX_COUNT_MAX ];
|
||||||
|
|
||||||
|
MI_CpuClear32( titleIDArray, sizeof(titleIDArray) );
|
||||||
|
|
||||||
|
// インストールされているNANDアプリ全タイトルのTitleID取得
|
||||||
|
listNum = NAM_GetNumTitles();
|
||||||
|
(void)NAM_GetTitleList( titleIDArray, (u32)listNum );
|
||||||
|
|
||||||
|
// 取得したタイトルがローンチ対象かどうかをチェック
|
||||||
|
for( l = 0; l < listNum; l++ ) {
|
||||||
|
// "Not Launch"でない かつ "Data Only"でない なら有効なタイトルとしてリストに追加
|
||||||
|
if( ( titleIDArray[ l ] & ( TITLE_ID_NOT_LAUNCH_FLAG_MASK | TITLE_ID_DATA_ONLY_FLAG_MASK ) ) == 0 ) {
|
||||||
|
validNum++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return validNum;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@ -7,7 +7,7 @@ OUT_KEY : rsa_public.sbin
|
|||||||
|
|
||||||
WRAM_RBIN: ./wram_regs/wram_regs.rbin
|
WRAM_RBIN: ./wram_regs/wram_regs.rbin
|
||||||
|
|
||||||
MIRROR_OFS: 0x100000
|
MIRROR_OFS: 0x80000
|
||||||
|
|
||||||
DECOMP_PROC : ARM9 # ARM9 or ARM7
|
DECOMP_PROC : ARM9 # ARM9 or ARM7
|
||||||
|
|
||||||
|
|||||||
@ -7,7 +7,7 @@ OUT_KEY : rsa_public.sbin
|
|||||||
|
|
||||||
WRAM_RBIN: ../../norfirm/norfirm-print/wram_regs/wram_regs.rbin
|
WRAM_RBIN: ../../norfirm/norfirm-print/wram_regs/wram_regs.rbin
|
||||||
|
|
||||||
MIRROR_OFS: 0x100000
|
MIRROR_OFS: 0x80000
|
||||||
|
|
||||||
DECOMP_PROC : ARM9 # ARM9 or ARM7
|
DECOMP_PROC : ARM9 # ARM9 or ARM7
|
||||||
|
|
||||||
|
|||||||
@ -7,7 +7,7 @@ OUT_KEY : rsa_public.sbin
|
|||||||
|
|
||||||
WRAM_RBIN: ./wram_regs/wram_regs.rbin
|
WRAM_RBIN: ./wram_regs/wram_regs.rbin
|
||||||
|
|
||||||
MIRROR_OFS: 0x100000
|
MIRROR_OFS: 0x80000
|
||||||
|
|
||||||
DECOMP_PROC : ARM9 # ARM9 or ARM7
|
DECOMP_PROC : ARM9 # ARM9 or ARM7
|
||||||
|
|
||||||
|
|||||||
@ -32,6 +32,8 @@
|
|||||||
|
|
||||||
#define INIT_DEVICES_LIKE_UIG_LAUNCHER
|
#define INIT_DEVICES_LIKE_UIG_LAUNCHER
|
||||||
|
|
||||||
|
#define MEASURE_TIME 1
|
||||||
|
|
||||||
// function's prototype-------------------------------------------------------
|
// function's prototype-------------------------------------------------------
|
||||||
static void INTR_VBlank( void );
|
static void INTR_VBlank( void );
|
||||||
static void deleteTmp();
|
static void deleteTmp();
|
||||||
@ -134,7 +136,7 @@ void TwlMain( void )
|
|||||||
};
|
};
|
||||||
u32 state = LOGODEMO_INIT;
|
u32 state = LOGODEMO_INIT;
|
||||||
TitleProperty *pBootTitle = NULL;
|
TitleProperty *pBootTitle = NULL;
|
||||||
OSTick start, end = 0;
|
OSTick allstart, start, end = 0;
|
||||||
BOOL direct_boot = FALSE;
|
BOOL direct_boot = FALSE;
|
||||||
|
|
||||||
#ifdef DEBUG_LAUNCHER_DUMP
|
#ifdef DEBUG_LAUNCHER_DUMP
|
||||||
@ -149,6 +151,17 @@ void TwlMain( void )
|
|||||||
|
|
||||||
// OS初期化------------------------
|
// OS初期化------------------------
|
||||||
OS_InitTick();
|
OS_InitTick();
|
||||||
|
|
||||||
|
// start 時間計測total
|
||||||
|
#if (MEASURE_TIME == 1)
|
||||||
|
allstart = OS_GetTick();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// start時間計測1
|
||||||
|
#if (MEASURE_TIME == 1)
|
||||||
|
start = OS_GetTick();
|
||||||
|
#endif
|
||||||
|
|
||||||
PM_Init();
|
PM_Init();
|
||||||
|
|
||||||
(void)OS_EnableIrq();
|
(void)OS_EnableIrq();
|
||||||
@ -171,24 +184,39 @@ void TwlMain( void )
|
|||||||
#ifdef USE_WRAM_LOAD
|
#ifdef USE_WRAM_LOAD
|
||||||
HOTSW_Init();
|
HOTSW_Init();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//NAMの初期化
|
//NAMの初期化
|
||||||
NAM_Init( Alloc, Free );
|
NAM_Init( Alloc, Free );
|
||||||
|
|
||||||
OS_TPrintf( "SYSM_work size = 0x%x\n", sizeof(SYSM_work) );
|
OS_TPrintf( "SYSM_work size = 0x%x\n", sizeof(SYSM_work) );
|
||||||
|
|
||||||
// 割り込み許可--------------------
|
// 割り込み許可--------------------
|
||||||
(void)OS_SetIrqFunction(OS_IE_V_BLANK, INTR_VBlank);
|
(void)OS_SetIrqFunction(OS_IE_V_BLANK, INTR_VBlank);
|
||||||
(void)OS_EnableIrqMask(OS_IE_V_BLANK);
|
(void)OS_EnableIrqMask(OS_IE_V_BLANK);
|
||||||
(void)GX_VBlankIntr(TRUE);
|
(void)GX_VBlankIntr(TRUE);
|
||||||
|
|
||||||
// システムの初期化----------------
|
// システムの初期化----------------
|
||||||
InitAllocator(); // ※SYSM_Init以外のSYSMライブラリ関数を呼ぶ前に
|
InitAllocator(); // ※SYSM_Init以外のSYSMライブラリ関数を呼ぶ前に
|
||||||
// Alloc, Freeで登録したメモリアロケータを初期化してください。
|
|
||||||
|
// end時間計測1
|
||||||
|
#if (MEASURE_TIME == 1)
|
||||||
|
OS_TPrintf( "System Init Time 1: %dms\n", OS_TicksToMilliSeconds( OS_GetTick() - start ) );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// start時間計測1-b
|
||||||
|
#if (MEASURE_TIME == 1)
|
||||||
|
start = OS_GetTick();
|
||||||
|
#endif
|
||||||
|
// Alloc, Freeで登録したメモリアロケータを初期化してください。
|
||||||
#ifdef INIT_DEVICES_LIKE_UIG_LAUNCHER
|
#ifdef INIT_DEVICES_LIKE_UIG_LAUNCHER
|
||||||
// カメラ初期化
|
// カメラ初期化
|
||||||
CAMERA_Init();
|
CAMERA_Init();
|
||||||
|
|
||||||
|
// end時間計測1-b
|
||||||
|
#if (MEASURE_TIME == 1)
|
||||||
|
OS_TPrintf( "Camera Init: %dms\n", OS_TicksToMilliSeconds( OS_GetTick() - start ) );
|
||||||
|
#endif
|
||||||
|
|
||||||
// DSP初期化
|
// DSP初期化
|
||||||
#if 0
|
#if 0
|
||||||
{
|
{
|
||||||
@ -211,11 +239,27 @@ void TwlMain( void )
|
|||||||
DSP_UnloadJpegDecoder();
|
DSP_UnloadJpegDecoder();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif // INIT_DEVICES_LIKE_UIG_LAUNCHER
|
#endif // INIT_DEVICES_LIKE_UIG_LAUNCHER
|
||||||
|
|
||||||
|
// start時間計測1-c
|
||||||
|
#if (MEASURE_TIME == 1)
|
||||||
|
start = OS_GetTick();
|
||||||
|
#endif
|
||||||
|
|
||||||
// 各種パラメータの取得------------
|
// 各種パラメータの取得------------
|
||||||
pBootTitle = SYSM_ReadParameters(); // 本体設定データ、リセットパラメータのリード、検査用オート起動カード判定、量産ライン用キーショートカット起動判定等のリード
|
pBootTitle = SYSM_ReadParameters(); // 本体設定データ、リセットパラメータのリード、検査用オート起動カード判定、量産ライン用キーショートカット起動判定等のリード
|
||||||
|
|
||||||
|
// end時間計測1-c
|
||||||
|
#if (MEASURE_TIME == 1)
|
||||||
|
OS_TPrintf( "SYSM_ReadParameters: %dms\n", OS_TicksToMilliSeconds( OS_GetTick() - start ) );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// start時間計測2
|
||||||
|
#if (MEASURE_TIME == 1)
|
||||||
|
start = OS_GetTick();
|
||||||
|
#endif
|
||||||
|
|
||||||
// TPキャリブレーション
|
// TPキャリブレーション
|
||||||
UTL_CaribrateTP( LCFG_TSD_GetTPCalibrationPtr() );
|
UTL_CaribrateTP( LCFG_TSD_GetTPCalibrationPtr() );
|
||||||
|
|
||||||
@ -225,21 +269,53 @@ void TwlMain( void )
|
|||||||
if( !LCFG_TSD_IsFinishedInitialSetting() ) {
|
if( !LCFG_TSD_IsFinishedInitialSetting() ) {
|
||||||
// 初回起動シーケンス判定
|
// 初回起動シーケンス判定
|
||||||
}
|
}
|
||||||
|
|
||||||
(void)SYSM_GetCardTitleList( s_titleList ); // カードアプリリストの取得(カードアプリはs_titleList[0]に格納される)
|
(void)SYSM_GetCardTitleList( s_titleList ); // カードアプリリストの取得(カードアプリはs_titleList[0]に格納される)
|
||||||
|
// end時間計測2
|
||||||
|
#if (MEASURE_TIME == 1)
|
||||||
|
OS_TPrintf( "GetCardTitleList Time : %dms\n", OS_TicksToMilliSeconds( OS_GetTick() - start ) );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// start時間計測3
|
||||||
|
#if (MEASURE_TIME == 1)
|
||||||
|
start = OS_GetTick();
|
||||||
|
#endif
|
||||||
// TMPフォルダのクリーン
|
// TMPフォルダのクリーン
|
||||||
SYSM_DeleteTmpDirectory( pBootTitle );
|
SYSM_DeleteTmpDirectory( pBootTitle );
|
||||||
|
// end時間計測3
|
||||||
|
#if (MEASURE_TIME == 1)
|
||||||
|
OS_TPrintf( "TmpClean : %dms\n", OS_TicksToMilliSeconds( OS_GetTick() - start ) );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// start時間計測4
|
||||||
|
#if (MEASURE_TIME == 1)
|
||||||
|
start = OS_GetTick();
|
||||||
|
#endif
|
||||||
// NANDタイトルリストの準備
|
// NANDタイトルリストの準備
|
||||||
SYSM_InitNandTitleList();
|
SYSM_InitNandTitleList();
|
||||||
|
// end時間計測4
|
||||||
|
#if (MEASURE_TIME == 1)
|
||||||
|
OS_TPrintf( "InitNandTitleList : %dms\n", OS_TicksToMilliSeconds( OS_GetTick() - start ) );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// start時間計測5
|
||||||
|
#if (MEASURE_TIME == 1)
|
||||||
|
start = OS_GetTick();
|
||||||
|
#endif
|
||||||
// 「ダイレクトブートでない」なら
|
// 「ダイレクトブートでない」なら
|
||||||
if( !pBootTitle ) {
|
if( !pBootTitle ) {
|
||||||
// NAND & カードアプリリスト取得
|
// NAND & カードアプリリスト取得
|
||||||
(void)SYSM_GetNandTitleList( s_titleList, LAUNCHER_TITLE_LIST_NUM ); // NANDアプリリストの取得(内蔵アプリはs_titleList[1]から格納される)
|
(void)SYSM_GetNandTitleList( s_titleList, LAUNCHER_TITLE_LIST_NUM ); // NANDアプリリストの取得(内蔵アプリはs_titleList[1]から格納される)
|
||||||
}
|
}
|
||||||
|
// end時間計測5
|
||||||
|
#if (MEASURE_TIME == 1)
|
||||||
|
OS_TPrintf( "GetNandTitleList : %dms\n", OS_TicksToMilliSeconds( OS_GetTick() - start ) );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// start時間計測6
|
||||||
|
#if (MEASURE_TIME == 1)
|
||||||
|
start = OS_GetTick();
|
||||||
|
#endif
|
||||||
// 「ダイレクトブートでない」もしくは
|
// 「ダイレクトブートでない」もしくは
|
||||||
// 「ダイレクトブートだが、ロゴデモ表示」の時、各種リソースのロード------------
|
// 「ダイレクトブートだが、ロゴデモ表示」の時、各種リソースのロード------------
|
||||||
if( !pBootTitle ||
|
if( !pBootTitle ||
|
||||||
@ -251,9 +327,17 @@ void TwlMain( void )
|
|||||||
timestamp = OS_GetSharedFontTimestamp();
|
timestamp = OS_GetSharedFontTimestamp();
|
||||||
if( timestamp > 0 ) OS_TPrintf( "SharedFont timestamp : %08x\n", timestamp );
|
if( timestamp > 0 ) OS_TPrintf( "SharedFont timestamp : %08x\n", timestamp );
|
||||||
}
|
}
|
||||||
|
// end時間計測6
|
||||||
|
#if (MEASURE_TIME == 1)
|
||||||
|
OS_TPrintf( "GetSharedFont : %dms\n", OS_TicksToMilliSeconds( OS_GetTick() - start ) );
|
||||||
|
#endif
|
||||||
|
|
||||||
// 開始ステートの判定--------------
|
// 開始ステートの判定--------------
|
||||||
|
|
||||||
|
// start時間計測7
|
||||||
|
#if (MEASURE_TIME == 1)
|
||||||
|
start = OS_GetTick();
|
||||||
|
#endif
|
||||||
if( pBootTitle ) {
|
if( pBootTitle ) {
|
||||||
// ダイレクトブートなら、ロゴ、ランチャーを飛ばしてロード開始
|
// ダイレクトブートなら、ロゴ、ランチャーを飛ばしてロード開始
|
||||||
if( pBootTitle->flags.isLogoSkip ) {
|
if( pBootTitle->flags.isLogoSkip ) {
|
||||||
@ -292,19 +376,36 @@ void TwlMain( void )
|
|||||||
s_strmThreadStack + THREAD_STACK_SIZE / sizeof(u64),
|
s_strmThreadStack + THREAD_STACK_SIZE / sizeof(u64),
|
||||||
THREAD_STACK_SIZE, STREAM_THREAD_PRIO);
|
THREAD_STACK_SIZE, STREAM_THREAD_PRIO);
|
||||||
OS_WakeupThreadDirect(&s_strmThread);
|
OS_WakeupThreadDirect(&s_strmThread);
|
||||||
|
// end時間計測7
|
||||||
|
#if (MEASURE_TIME == 1)
|
||||||
|
OS_TPrintf( "time 7 (etc...) : %dms\n", OS_TicksToMilliSeconds( OS_GetTick() - start ) );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
// start時間計測8
|
||||||
|
#if (MEASURE_TIME == 1)
|
||||||
|
start = OS_GetTick();
|
||||||
|
#endif
|
||||||
// 無線ファームウェアを無線モジュールにダウンロードする。
|
// 無線ファームウェアを無線モジュールにダウンロードする。
|
||||||
#ifndef DISABLE_WLFIRM_LOAD
|
#ifndef DISABLE_WLFIRM_LOAD
|
||||||
if( FALSE == InstallWlanFirmware( SYSM_IsHotStart() ) ) {
|
if( FALSE == InstallWlanFirmware( SYSM_IsHotStart() ) ) {
|
||||||
OS_TPrintf( "ERROR: Wireless firmware download failed!\n" );
|
OS_TPrintf( "ERROR: Wireless firmware download failed!\n" );
|
||||||
}
|
}
|
||||||
#endif // DISABLE_WLFIRM_LOAD
|
#endif // DISABLE_WLFIRM_LOAD
|
||||||
|
// end時間計測8
|
||||||
|
#if (MEASURE_TIME == 1)
|
||||||
|
OS_TPrintf( "Load WlanFirm Time : %dms\n", OS_TicksToMilliSeconds( OS_GetTick() - start ) );
|
||||||
|
#endif
|
||||||
|
|
||||||
if( SYSM_IsFatalError() ) {
|
if( SYSM_IsFatalError() ) {
|
||||||
// FATALエラー処理
|
// FATALエラー処理
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// end 時間計測total
|
||||||
|
#if (MEASURE_TIME == 1)
|
||||||
|
OS_TPrintf( "Total Time : %dms\n", OS_TicksToMilliSeconds( OS_GetTick() - allstart ) );
|
||||||
|
#endif
|
||||||
|
|
||||||
// メインループ--------------------
|
// メインループ--------------------
|
||||||
while( 1 ) {
|
while( 1 ) {
|
||||||
OS_WaitIrq(1, OS_IE_V_BLANK); // Vブランク割り込み待ち
|
OS_WaitIrq(1, OS_IE_V_BLANK); // Vブランク割り込み待ち
|
||||||
|
|||||||
Binary file not shown.
@ -19,6 +19,7 @@
|
|||||||
#define __SYSM_UTIL_H__
|
#define __SYSM_UTIL_H__
|
||||||
|
|
||||||
#include <twl.h>
|
#include <twl.h>
|
||||||
|
#include <sysmenu.h>
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@ -53,6 +54,16 @@ extern BOOL UTL_IsLeapYear100( u32 year ); //
|
|||||||
extern u32 UTL_CalcPCTLInquiryCode( void ); // 問い合わせコード(10進8桁)算出
|
extern u32 UTL_CalcPCTLInquiryCode( void ); // 問い合わせコード(10進8桁)算出
|
||||||
extern u32 UTL_CalcPCTLMasterKey( void ); // マスターキー (10進5桁)算出(※内部でRTC_GetDateを使用します。)
|
extern u32 UTL_CalcPCTLMasterKey( void ); // マスターキー (10進5桁)算出(※内部でRTC_GetDateを使用します。)
|
||||||
|
|
||||||
|
// タイトル数取得(内部でNAMを使用するので、NAM_Initが事前に呼ばれている必要あり)
|
||||||
|
extern int UTL_GetInstalledSoftBoxCount( void );
|
||||||
|
|
||||||
|
// アプリROMヘッダの要EULAフラグ取得
|
||||||
|
static inline BOOL UTL_IsROMHeaderEULARequired( void )
|
||||||
|
{
|
||||||
|
return (BOOL)SYSM_GetAppRomHeader()->agree_EULA;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user