タイトル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
MACRO_FLAGS += -DSYSM_NO_ES
endif
ifdef SYSM_NO_WLFIRM
MACRO_FLAGS += -DSYSM_NO_WLFIRM
endif
endif
NITRO_NO_STD_PCHDR = TRUE # プリコンパイルヘッダ抑止

View File

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

View File

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

View File

@ -342,6 +342,7 @@ static void SYSMi_ModifySaveDataMount( LauncherBootType bootType, NAMTitleId tit
void SYSMi_SetBootSRLPathToWork2( TitleProperty *pBootTitle )
{
#ifndef SYSM_NO_LOAD
static char path[ FS_ENTRY_LONGNAME_MAX ];
switch( pBootTitle->flags.bootType )
@ -365,6 +366,12 @@ void SYSMi_SetBootSRLPathToWork2( TitleProperty *pBootTitle )
}else {
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できないので注意。
}

View File

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

View File

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