タイトルIDリストフラグとメニューバージョンはCTRモードで設定。

本体設定をNORへ書かない。
SYSM_NO_WLFIRMを有効にすれば無線ファームをロードしないように
(ESも呼ばなくなる)。


git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/branches/20100611_RedLauncher_Remodel@2955 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
N1277 2010-08-18 02:55:02 +00:00
parent 12d689a5a5
commit 6076b6ac7b
6 changed files with 60 additions and 1 deletions

View File

@ -26,6 +26,9 @@ endif
ifdef SYSM_NO_ES ifdef SYSM_NO_ES
MACRO_FLAGS += -DSYSM_NO_ES MACRO_FLAGS += -DSYSM_NO_ES
endif endif
ifdef SYSM_NO_WLFIRM
MACRO_FLAGS += -DSYSM_NO_WLFIRM
endif
endif endif
NITRO_NO_STD_PCHDR = TRUE # プリコンパイルヘッダ抑止 NITRO_NO_STD_PCHDR = TRUE # プリコンパイルヘッダ抑止

View File

@ -220,6 +220,7 @@ TitleProperty *SYSM_ReadParameters( void )
// NANDからTWL本体設定データをリード // NANDからTWL本体設定データをリード
BOOL isRead = LCFG_ReadTWLSettings( (u8 (*)[LCFG_READ_TEMP])pBuffer ); BOOL isRead = LCFG_ReadTWLSettings( (u8 (*)[LCFG_READ_TEMP])pBuffer );
#ifndef SYSM_NO_LOAD
// リード失敗ファイルが存在する場合は、ファイルをリカバリ // リード失敗ファイルが存在する場合は、ファイルをリカバリ
if( LCFG_RecoveryTWLSettings() ) { if( LCFG_RecoveryTWLSettings() ) {
if( !isRead ) { if( !isRead ) {
@ -231,12 +232,15 @@ TitleProperty *SYSM_ReadParameters( void )
// リカバリ失敗時は、FALTALエラー // リカバリ失敗時は、FALTALエラー
UTL_SetFatalError( FATAL_ERROR_TWLSETTINGS ); UTL_SetFatalError( FATAL_ERROR_TWLSETTINGS );
} }
#endif // SYSM_NO_LOAD
SYSM_Free( pBuffer ); SYSM_Free( pBuffer );
}else { }else {
// メモリ確保ができなかった時は、FATALエラー // メモリ確保ができなかった時は、FATALエラー
UTL_SetFatalError( FATAL_ERROR_TWLSETTINGS ); UTL_SetFatalError( FATAL_ERROR_TWLSETTINGS );
} }
#ifndef SYSM_NO_LOAD
LCFG_VerifyAndRecoveryNTRSettings(); // NTR設定データを読み出して、TWL設定データとベリファイし、必要ならリカバリ LCFG_VerifyAndRecoveryNTRSettings(); // NTR設定データを読み出して、TWL設定データとベリファイし、必要ならリカバリ
#endif // SYSM_NO_LOAD
} }
//----------------------------------------------------- //-----------------------------------------------------
@ -277,11 +281,15 @@ TitleProperty *SYSM_ReadParameters( void )
} }
#endif // SDK_SUPPORT_PMIC_2 #endif // SDK_SUPPORT_PMIC_2
#ifndef SYSM_NO_LOAD
// RTC補正 // RTC補正
SYSMi_WriteAdjustRTC(); SYSMi_WriteAdjustRTC();
// RTC値のチェック // RTC値のチェック
SYSMi_CheckRTC(); SYSMi_CheckRTC();
#endif // SYSM_NO_LOAD
//----------------------------------------------------- //-----------------------------------------------------
// ARM7の処理待ち // ARM7の処理待ち
//----------------------------------------------------- //-----------------------------------------------------
@ -562,6 +570,8 @@ static TitleProperty *SYSMi_CheckShortcutBoot2( void )
OS_EncodeDeliverArg(); OS_EncodeDeliverArg();
} }
#ifndef SYSM_NO_ES
// 「本体設定ブート」有効時は、本体設定プート決定 // 「本体設定ブート」有効時は、本体設定プート決定
if( isBootMSET ) { if( isBootMSET ) {
s_bootTitleBuf.titleID = SYSMi_getTitleIdOfMachineSettings(); s_bootTitleBuf.titleID = SYSMi_getTitleIdOfMachineSettings();
@ -576,6 +586,8 @@ static TitleProperty *SYSMi_CheckShortcutBoot2( void )
return &s_bootTitleBuf; return &s_bootTitleBuf;
} }
#endif // SYSM_NO_ES
return NULL; // 「ブート内容未定」でリターン return NULL; // 「ブート内容未定」でリターン
} }
@ -585,6 +597,9 @@ static TitleProperty *SYSMi_CheckShortcutBoot2( void )
static OSTitleId SYSMi_getTitleIdOfMachineSettings( void ) static OSTitleId SYSMi_getTitleIdOfMachineSettings( void )
{ {
OSTitleId ret = NULL; OSTitleId ret = NULL;
#ifndef SYSM_NO_ES
int l; int l;
int getNum; int getNum;
int validNum = 0; int validNum = 0;
@ -611,6 +626,8 @@ static OSTitleId SYSMi_getTitleIdOfMachineSettings( void )
} }
SYSM_Free( pTitleIDList ); SYSM_Free( pTitleIDList );
#endif // SYSM_NO_ES
return ret; return ret;
} }

View File

@ -2125,11 +2125,14 @@ void SYSM_TryToBootTitle( TitleProperty *pBootTitle )
} }
// ダイレクトブート時など、まだSystemMenuVersionのデータがセットされていない場合は、ここでセットする。 // ダイレクトブート時など、まだSystemMenuVersionのデータがセットされていない場合は、ここでセットする。
#ifndef SYSM_NO_ES
if( *(u8 *)HW_SYSM_VER_INFO_CONTENT_LAST_INITIAL_CODE == 0 ) { if( *(u8 *)HW_SYSM_VER_INFO_CONTENT_LAST_INITIAL_CODE == 0 ) {
SYSM_SetSystemMenuVersionControlData(); SYSM_SetSystemMenuVersionControlData();
} }
#endif // SYSM_NO_ES
// デバッガ接続中以外の時のみTWL設定データにブートするタイトルのTitleIDとplatformCodeを保存。 // デバッガ接続中以外の時のみTWL設定データにブートするタイトルのTitleIDとplatformCodeを保存。
#ifndef SYSM_NO_LOAD
if( !SYSM_IsRunOnDebugger() || // スタンドアロン if( !SYSM_IsRunOnDebugger() || // スタンドアロン
(OSi_DetectDebugger() & OS_CONSOLE_TWLDEBUGGER) ) // デバッグ時 (OSi_DetectDebugger() & OS_CONSOLE_TWLDEBUGGER) ) // デバッグ時
{ {
@ -2140,6 +2143,7 @@ void SYSM_TryToBootTitle( TitleProperty *pBootTitle )
SYSM_Free( pBuffer ); SYSM_Free( pBuffer );
} }
} }
#endif // SYSM_NO_LOAD
// マウント情報の登録 // マウント情報の登録
SYSMi_GetWork2()->bootTitleProperty = *pBootTitle; SYSMi_GetWork2()->bootTitleProperty = *pBootTitle;
@ -2154,7 +2158,9 @@ void SYSM_TryToBootTitle( TitleProperty *pBootTitle )
#endif #endif
// タイトルIDリストの作成 // タイトルIDリストの作成
#ifndef SYSM_NO_ES
SYSMi_makeTitleIdList(); SYSMi_makeTitleIdList();
#endif // SYSM_NO_ES
// バンブラパッチ // バンブラパッチ
SYSMi_applyPatchToBandBrothers(); SYSMi_applyPatchToBandBrothers();

View File

@ -342,6 +342,7 @@ static void SYSMi_ModifySaveDataMount( LauncherBootType bootType, NAMTitleId tit
void SYSMi_SetBootSRLPathToWork2( TitleProperty *pBootTitle ) void SYSMi_SetBootSRLPathToWork2( TitleProperty *pBootTitle )
{ {
#ifndef SYSM_NO_LOAD
static char path[ FS_ENTRY_LONGNAME_MAX ]; static char path[ FS_ENTRY_LONGNAME_MAX ];
switch( pBootTitle->flags.bootType ) switch( pBootTitle->flags.bootType )
@ -365,6 +366,12 @@ void SYSMi_SetBootSRLPathToWork2( TitleProperty *pBootTitle )
}else { }else {
MI_CpuClearFast( SYSMi_GetWork2()->bootContentPath, OS_MOUNT_PATH_LEN ); MI_CpuClearFast( SYSMi_GetWork2()->bootContentPath, OS_MOUNT_PATH_LEN );
} }
#else // SYSM_NO_LOAD
STD_CopyLStringZeroFill( SYSMi_GetWork2()->bootContentPath, (char*)(HW_TWL_SHARED_RESERVED_END - OS_MOUNT_PATH_LEN), OS_MOUNT_PATH_LEN );
#endif // SYSM_NO_LOAD
OS_TPrintf( "boot SRL path : %s\n", SYSMi_GetWork2()->bootContentPath ); // ※OS_Init前で呼ぶとPrintfできないので注意。 OS_TPrintf( "boot SRL path : %s\n", SYSMi_GetWork2()->bootContentPath ); // ※OS_Init前で呼ぶとPrintfできないので注意。
} }

View File

@ -22,6 +22,7 @@ ifneq ($(SYSM_UPDATER_RELEASE),TRUE)
export SYSM_FOR_CTR = TRUE export SYSM_FOR_CTR = TRUE
export SYSM_NO_LOAD = TRUE export SYSM_NO_LOAD = TRUE
export SYSM_NO_ES = TRUE export SYSM_NO_ES = TRUE
# export SYSM_NO_WLFIRM = TRUE
# COMPILE SWITCH ※最終ROM作成時は、全てFALSEにセットする。SUBDIRのビルド時にも影響するようexportで環境変数設定する。 # COMPILE SWITCH ※最終ROM作成時は、全てFALSEにセットする。SUBDIRのビルド時にも影響するようexportで環境変数設定する。
export SYSM_DO_NOT_SHOW_LAUNCHER = FALSE export SYSM_DO_NOT_SHOW_LAUNCHER = FALSE

View File

@ -240,7 +240,9 @@ void TwlMain( void )
#endif #endif
//NAMの初期化 //NAMの初期化
#if !defined(SYSM_NO_ES) || !defined(SYSM_NO_WLFIRM)
NAM_Init( Alloc, Free ); NAM_Init( Alloc, Free );
#endif // ! SYSM_NO_ES || ! SYSM_NO_WLFIRM
OS_TPrintf( "SYSM_work size = 0x%x\n", sizeof(SYSM_work) ); OS_TPrintf( "SYSM_work size = 0x%x\n", sizeof(SYSM_work) );
@ -317,6 +319,8 @@ void TwlMain( void )
// end時間計測-c // end時間計測-c
MEASURE_RESULT( start, "SYSM_ReadParameters: %dms\n" ); MEASURE_RESULT( start, "SYSM_ReadParameters: %dms\n" );
#ifndef SYSM_NO_ES
// start時間計測4 // start時間計測4
MEASURE_START(start); MEASURE_START(start);
@ -372,6 +376,8 @@ void TwlMain( void )
// end時間計測5 // end時間計測5
MEASURE_RESULT( start, "GetNandTitleList : %dms\n" ); MEASURE_RESULT( start, "GetNandTitleList : %dms\n" );
#endif // SYSM_NO_ES
// start時間計測6 // start時間計測6
MEASURE_START(start); MEASURE_START(start);
@ -451,9 +457,11 @@ void TwlMain( void )
MEASURE_START(start); MEASURE_START(start);
// 無線ファームウェアを無線モジュールにダウンロードする。 // 無線ファームウェアを無線モジュールにダウンロードする。
#ifndef SYSM_NO_WLFIRM
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 // SYSM_NO_WLFIRM
// end時間計測8 // end時間計測8
MEASURE_RESULT( start, "Load WlanFirm Time : %dms\n" ); MEASURE_RESULT( start, "Load WlanFirm Time : %dms\n" );
@ -483,6 +491,7 @@ MAIN_LOOP_START:
ReadTP(); // TP入力の取得 ReadTP(); // TP入力の取得
switch( state ) { switch( state ) {
#ifndef SYSM_NO_ES
case LOGODEMO_INIT: case LOGODEMO_INIT:
LogoInit(); LogoInit();
// 音鳴らすテスト // 音鳴らすテスト
@ -525,9 +534,12 @@ MAIN_LOOP_START:
state = LOAD_START; state = LOAD_START;
} }
break; break;
#endif // SYSM_NO_ES
case LOAD_START: case LOAD_START:
if( IsFinishedLoadSharedFont() // ダイレクトブートの時は、フォントロード終了をここでチェック if( IsFinishedLoadSharedFont() // ダイレクトブートの時は、フォントロード終了をここでチェック
#ifndef SYSM_NO_WLFIRM
&& PollingInstallWlanFirmware() && PollingInstallWlanFirmware()
#endif// SYSM_NO_WLFIRM
#ifndef SYSM_DISABLE_WDS_SCAN // アプリブート前にWDSスキャンは終了しておく必要がある #ifndef SYSM_DISABLE_WDS_SCAN // アプリブート前にWDSスキャンは終了しておく必要がある
&& ( WDS_WrapperStopScan() != WDSWRAPPER_ERRCODE_OPERATING ) && ( WDS_WrapperStopScan() != WDSWRAPPER_ERRCODE_OPERATING )
#endif // SYSM_DISABLE_WDS_SCAN #endif // SYSM_DISABLE_WDS_SCAN
@ -554,10 +566,12 @@ MAIN_LOOP_START:
state = AUTHENTICATE; state = AUTHENTICATE;
#endif // SYSM_NO_LOAD #endif // SYSM_NO_LOAD
} }
#ifndef SYSM_NO_LOAD
if( !direct_boot ) if( !direct_boot )
{ {
(void)LauncherFadeout( sp_titleList ); // ダイレクトブートでないときはフェードアウトも行う (void)LauncherFadeout( sp_titleList ); // ダイレクトブートでないときはフェードアウトも行う
} }
#endif // SYSM_NO_LOAD
if( ( end == 0 ) && if( ( end == 0 ) &&
SYSM_IsLoadTitleFinished() ) { SYSM_IsLoadTitleFinished() ) {
end = OS_GetTick(); end = OS_GetTick();
@ -573,9 +587,14 @@ MAIN_LOOP_START:
} }
break; break;
case AUTHENTICATE: case AUTHENTICATE:
#ifdef SYSM_NO_LOAD
if( direct_boot )
#else // SYSM_NO_LOAD
if( ( direct_boot || ( !direct_boot && LauncherFadeout( sp_titleList ) ) ) && if( ( direct_boot || ( !direct_boot && LauncherFadeout( sp_titleList ) ) ) &&
SYSM_IsAuthenticateTitleFinished() SYSM_IsAuthenticateTitleFinished()
) { )
#endif // SYSM_NO_LOAD
{
// メインループ開始から検証終了までの間に起きたFATALの処理 // メインループ開始から検証終了までの間に起きたFATALの処理
if( UTL_IsFatalError() ) { if( UTL_IsFatalError() ) {
// FATALエラー処理 // FATALエラー処理
@ -612,6 +631,7 @@ MAIN_LOOP_START:
} }
// カードアプリリストの取得(スレッドで随時カード挿抜を通知されるものをメインループで取得) // カードアプリリストの取得(スレッドで随時カード挿抜を通知されるものをメインループで取得)
#ifndef SYSM_NO_ES
{ {
BOOL changed; BOOL changed;
sp_titleList = SYSM_GetCardTitleList( &changed ); sp_titleList = SYSM_GetCardTitleList( &changed );
@ -620,8 +640,10 @@ MAIN_LOOP_START:
OS_TPrintf( "Change CARD status.\n" ); OS_TPrintf( "Change CARD status.\n" );
} }
} }
#endif // SYSM_NO_ES
// 無線ファームロードのポーリング // 無線ファームロードのポーリング
#ifndef SYSM_NO_WLFIRM
if( PollingInstallWlanFirmware() && if( PollingInstallWlanFirmware() &&
( GetWlanFirmwareInstallFinalResult() == WLANFIRM_RESULT_SUCCESS ) // ロード成功 ( GetWlanFirmwareInstallFinalResult() == WLANFIRM_RESULT_SUCCESS ) // ロード成功
) { ) {
@ -637,10 +659,12 @@ MAIN_LOOP_START:
} }
#endif // SYSM_DISABLE_WDS_SCAN #endif // SYSM_DISABLE_WDS_SCAN
} }
#endif // SYSM_NO_WLFIRM
// コマンドフラッシュ // コマンドフラッシュ
(void)SND_FlushCommand(SND_COMMAND_NOBLOCK); (void)SND_FlushCommand(SND_COMMAND_NOBLOCK);
#ifndef SYSM_NO_WLFIRM
#ifndef DISABLE_SLEEP #ifndef DISABLE_SLEEP
// スリープモードへの遷移 // スリープモードへの遷移
//(無線ファームのロード完了はアプリ側でチェックしてもらう方針) //(無線ファームのロード完了はアプリ側でチェックしてもらう方針)
@ -650,6 +674,7 @@ MAIN_LOOP_START:
UTL_GoSleepMode(); UTL_GoSleepMode();
} }
#endif // DISABLE_SLEEP #endif // DISABLE_SLEEP
#endif // SYSM_NO_WLFIRM
} }
} }