SYSM_DeleteTmpDirectory() から呼び出すディレクトリの削除用の関数を

NAMUT_DeleteNandTmpDirectory() に変更

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2262 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
(no author) 2008-08-25 09:35:35 +00:00
parent 17aa454428
commit efb026dc9d

View File

@ -46,9 +46,9 @@ SYSM_work *pSysm; //
ROM_Header_Short *pRomHeader; ROM_Header_Short *pRomHeader;
#endif #endif
// static variable------------------------------------------------------------- // static variable-------------------------------------------------------------
static u8 s_lcfgBuffer[ HW_PARAM_TWL_SETTINGS_DATA_SIZE // 0x01fc static u8 s_lcfgBuffer[ HW_PARAM_TWL_SETTINGS_DATA_SIZE // 0x01fc
+ HW_PARAM_WIRELESS_FIRMWARE_DATA_SIZE // 0x0004 + HW_PARAM_WIRELESS_FIRMWARE_DATA_SIZE // 0x0004
+ HW_PARAM_TWL_HW_NORMAL_INFO_SIZE ] ATTRIBUTE_ALIGN(32); // 0x1000 + HW_PARAM_TWL_HW_NORMAL_INFO_SIZE ] ATTRIBUTE_ALIGN(32); // 0x1000
static TitleProperty s_bootTitleBuf; static TitleProperty s_bootTitleBuf;
@ -155,13 +155,13 @@ void SYSMi_SendKeysToARM7( void )
void SYSM_DeleteTmpDirectory( TitleProperty *pBootTitle ) void SYSM_DeleteTmpDirectory( TitleProperty *pBootTitle )
{ {
// bootTypeがLAUNCHER_BOOTTYPE_TEMPでない場合、tmpフォルダ内のデータを消す // bootTypeがLAUNCHER_BOOTTYPE_TEMPでない場合、tmpフォルダ内のデータを消す
if( !pBootTitle || pBootTitle->flags.bootType != LAUNCHER_BOOTTYPE_TEMP ) { if( !pBootTitle || pBootTitle->flags.bootType != LAUNCHER_BOOTTYPE_TEMP ) {
if( NAMUT_DeleteNandDirectory( "nand:/tmp" ) ) { if( NAMUT_DeleteNandTmpDirectory() ) {
OS_TPrintf( "\"nand:/tmp\" delete succeeded.\n" ); OS_TPrintf( "\"nand:/tmp\" delete succeeded.\n" );
}else { }else {
OS_TPrintf( "\"nand:/tmp\" delete failed.\n" ); OS_TPrintf( "\"nand:/tmp\" delete failed.\n" );
} }
} }
} }
// ============================================================================ // ============================================================================
@ -174,13 +174,13 @@ void SYSM_DeleteTmpDirectory( TitleProperty *pBootTitle )
TitleProperty *SYSM_ReadParameters( void ) TitleProperty *SYSM_ReadParameters( void )
{ {
TitleProperty *pBootTitle = NULL; TitleProperty *pBootTitle = NULL;
//----------------------------------------------------- //-----------------------------------------------------
// FATALエラーチェック // FATALエラーチェック
//----------------------------------------------------- //-----------------------------------------------------
if( SYSMi_GetWork()->flags.common.isNANDFatalError ) { if( SYSMi_GetWork()->flags.common.isNANDFatalError ) {
UTL_SetFatalError( FATAL_ERROR_NAND ); UTL_SetFatalError( FATAL_ERROR_NAND );
} }
//----------------------------------------------------- //-----------------------------------------------------
// HW情報のリード // HW情報のリード
@ -200,63 +200,63 @@ TitleProperty *SYSM_ReadParameters( void )
#endif // SYSM_BUILD_FOR_PRODUCTION_TEST #endif // SYSM_BUILD_FOR_PRODUCTION_TEST
} }
//----------------------------------------------------- //-----------------------------------------------------
// システム領域にHWInfoをコピー // システム領域にHWInfoをコピー
//----------------------------------------------------- //-----------------------------------------------------
// NTRカードアプリARM9コードのロード領域とメモリがかち合うが、先頭0x4000はセキュア領域で別バッファに格納されるので、 // NTRカードアプリARM9コードのロード領域とメモリがかち合うが、先頭0x4000はセキュア領域で別バッファに格納されるので、
// ここでこれらのパラメータをロードしても大丈夫。 // ここでこれらのパラメータをロードしても大丈夫。
SYSMi_CopyLCFGDataHWInfo( (u32)s_lcfgBuffer ); SYSMi_CopyLCFGDataHWInfo( (u32)s_lcfgBuffer );
//----------------------------------------------------- //-----------------------------------------------------
// 本体設定データのリード※必ずHWSecureInforリード後に実行すること。LanguageBitmapを判定に使うため // 本体設定データのリード※必ずHWSecureInforリード後に実行すること。LanguageBitmapを判定に使うため
//----------------------------------------------------- //-----------------------------------------------------
{ {
u8 *pBuffer = SYSM_Alloc( LCFG_READ_TEMP ); u8 *pBuffer = SYSM_Alloc( LCFG_READ_TEMP );
if( pBuffer ) { if( pBuffer ) {
// NANDからTWL本体設定データをリード // NANDからTWL本体設定データをリード
BOOL isRead = LCFG_ReadTWLSettings( (u8 (*)[LCFG_READ_TEMP])pBuffer ); BOOL isRead = LCFG_ReadTWLSettings( (u8 (*)[LCFG_READ_TEMP])pBuffer );
// リード失敗ファイルが存在する場合は、ファイルをリカバリ // リード失敗ファイルが存在する場合は、ファイルをリカバリ
if( LCFG_RecoveryTWLSettings() ) { if( LCFG_RecoveryTWLSettings() ) {
if( isRead ) { if( isRead ) {
// ミラーデータのうち、一方がリードできていたなら何もしない。 // ミラーデータのうち、一方がリードできていたなら何もしない。
}else { }else {
// リードに完全に失敗していた場合は、フラッシュ壊れシーケンスへ。 // リードに完全に失敗していた場合は、フラッシュ壊れシーケンスへ。
LCFG_TSD_SetFlagFinishedBrokenTWLSettings( FALSE ); LCFG_TSD_SetFlagFinishedBrokenTWLSettings( FALSE );
(void)LCFG_WriteTWLSettings( (u8 (*)[ LCFG_WRITE_TEMP ] )pBuffer ); // LCFG_READ_TEMP > LCFG_WRITE_TEMP なので、pBufferをそのまま流用 (void)LCFG_WriteTWLSettings( (u8 (*)[ LCFG_WRITE_TEMP ] )pBuffer ); // LCFG_READ_TEMP > LCFG_WRITE_TEMP なので、pBufferをそのまま流用
} }
}else { }else {
// リカバリ失敗時は、FALTALエラー // リカバリ失敗時は、FALTALエラー
UTL_SetFatalError( FATAL_ERROR_TWLSETTINGS ); UTL_SetFatalError( FATAL_ERROR_TWLSETTINGS );
} }
SYSM_Free( pBuffer ); SYSM_Free( pBuffer );
}else { }else {
// メモリ確保ができなかった時は、FATALエラー // メモリ確保ができなかった時は、FATALエラー
UTL_SetFatalError( FATAL_ERROR_TWLSETTINGS ); UTL_SetFatalError( FATAL_ERROR_TWLSETTINGS );
} }
LCFG_VerifyAndRecoveryNTRSettings(); // NTR設定データを読み出して、TWL設定データとベリファイし、必要ならリカバリ LCFG_VerifyAndRecoveryNTRSettings(); // NTR設定データを読み出して、TWL設定データとベリファイし、必要ならリカバリ
} }
//----------------------------------------------------- //-----------------------------------------------------
// システム領域に本体設定をコピー // システム領域に本体設定をコピー
//----------------------------------------------------- //-----------------------------------------------------
// NTRカードアプリARM9コードのロード領域とメモリがかち合うが、先頭0x4000はセキュア領域で別バッファに格納されるので、 // NTRカードアプリARM9コードのロード領域とメモリがかち合うが、先頭0x4000はセキュア領域で別バッファに格納されるので、
// ここでこれらのパラメータをロードしても大丈夫。 // ここでこれらのパラメータをロードしても大丈夫。
SYSMi_CopyLCFGDataSettings(); SYSMi_CopyLCFGDataSettings();
//----------------------------------------------------- //-----------------------------------------------------
// 無線ON/OFFフラグをもとに、LEDを設定する。 // 無線ON/OFFフラグをもとに、LEDを設定する。
//----------------------------------------------------- //-----------------------------------------------------
{ {
PMWirelessLEDStatus enable; PMWirelessLEDStatus enable;
if( LCFG_THW_IsForceDisableWireless() ) { if( LCFG_THW_IsForceDisableWireless() ) {
enable = PM_WIRELESS_LED_OFF; enable = PM_WIRELESS_LED_OFF;
}else { }else {
enable = LCFG_TSD_IsAvailableWireless() ? PM_WIRELESS_LED_ON : PM_WIRELESS_LED_OFF; enable = LCFG_TSD_IsAvailableWireless() ? PM_WIRELESS_LED_ON : PM_WIRELESS_LED_OFF;
} }
PMi_SetWirelessLED( enable ); PMi_SetWirelessLED( enable );
} }
//----------------------------------------------------- //-----------------------------------------------------
// 各種デバイス設定 // 各種デバイス設定
//----------------------------------------------------- //-----------------------------------------------------
@ -268,16 +268,16 @@ TitleProperty *SYSM_ReadParameters( void )
SYSM_SetBackLightBrightness( LCFG_TWL_BACKLIGHT_LEVEL_MAX ); SYSM_SetBackLightBrightness( LCFG_TWL_BACKLIGHT_LEVEL_MAX );
} }
#endif // SDK_SUPPORT_PMIC_2 #endif // SDK_SUPPORT_PMIC_2
// RTC補正 // RTC補正
SYSMi_WriteAdjustRTC(); SYSMi_WriteAdjustRTC();
// RTC値のチェック // RTC値のチェック
SYSMi_CheckRTC(); SYSMi_CheckRTC();
//----------------------------------------------------- //-----------------------------------------------------
// ARM7の処理待ち // ARM7の処理待ち
//----------------------------------------------------- //-----------------------------------------------------
// ARM7のランチャーパラメータ取得が完了するのを待つ // ARM7のランチャーパラメータ取得が完了するのを待つ
while( !SYSMi_GetWork()->flags.common.isARM9Start ) { while( !SYSMi_GetWork()->flags.common.isARM9Start ) {
SVC_WaitByLoop( 0x1000 ); SVC_WaitByLoop( 0x1000 );
@ -290,47 +290,47 @@ TitleProperty *SYSM_ReadParameters( void )
//#endif //#endif
//----------------------------------------------------- //-----------------------------------------------------
// ランチャーパラメータの判定 // ランチャーパラメータの判定
//----------------------------------------------------- //-----------------------------------------------------
if( SYSM_IsHotStart() ) { if( SYSM_IsHotStart() ) {
// ホットスタート時は、基本ロゴデモスキップ // ホットスタート時は、基本ロゴデモスキップ
SYSM_SetLogoDemoSkip( TRUE ); SYSM_SetLogoDemoSkip( TRUE );
if( !SYSM_IsRunOnDebugger() && LCFG_TSD_GetLastTimeBootSoftPlatform() == PLATFORM_CODE_NTR ) { if( !SYSM_IsRunOnDebugger() && LCFG_TSD_GetLastTimeBootSoftPlatform() == PLATFORM_CODE_NTR ) {
// 前回ブートがNTRなら、ランチャーパラメータ無効 // 前回ブートがNTRなら、ランチャーパラメータ無効
SYSMi_GetWork()->flags.common.isValidLauncherParam = 0; SYSMi_GetWork()->flags.common.isValidLauncherParam = 0;
MI_CpuClear32( &SYSMi_GetWork()->launcherParam, sizeof(LauncherParam) ); MI_CpuClear32( &SYSMi_GetWork()->launcherParam, sizeof(LauncherParam) );
} }
if( SYSMi_GetWork()->flags.common.isValidLauncherParam ) { if( SYSMi_GetWork()->flags.common.isValidLauncherParam ) {
// ロゴデモスキップ無効? // ロゴデモスキップ無効?
if( !SYSM_GetLauncherParamBody()->v1.flags.isLogoSkip ) { if( !SYSM_GetLauncherParamBody()->v1.flags.isLogoSkip ) {
SYSM_SetLogoDemoSkip( FALSE ); SYSM_SetLogoDemoSkip( FALSE );
} }
// アプリ直接起動の指定があったらロゴデモを飛ばして指定アプリ起動 // アプリ直接起動の指定があったらロゴデモを飛ばして指定アプリ起動
if( SYSM_GetLauncherParamBody()->v1.bootTitleID ) { if( SYSM_GetLauncherParamBody()->v1.bootTitleID ) {
s_bootTitleBuf.titleID = SYSM_GetLauncherParamBody()->v1.bootTitleID; s_bootTitleBuf.titleID = SYSM_GetLauncherParamBody()->v1.bootTitleID;
s_bootTitleBuf.flags = SYSM_GetLauncherParamBody()->v1.flags; s_bootTitleBuf.flags = SYSM_GetLauncherParamBody()->v1.flags;
s_bootTitleBuf.pBanner = (TWLBannerFile *)(*(TWLBannerFile **)(SYSM_GetLauncherParamBody()->v1.rsv)); s_bootTitleBuf.pBanner = (TWLBannerFile *)(*(TWLBannerFile **)(SYSM_GetLauncherParamBody()->v1.rsv));
pBootTitle = &s_bootTitleBuf; pBootTitle = &s_bootTitleBuf;
} }
} }
} }
// アプリジャンプでないときには、アプリ間パラメタをクリア // アプリジャンプでないときには、アプリ間パラメタをクリア
// ※あらかじめNTRカードのセキュア領域を退避せずに直接0x2000000からロードしている場合も容赦なく消すので注意 // ※あらかじめNTRカードのセキュア領域を退避せずに直接0x2000000からロードしている場合も容赦なく消すので注意
if( !pBootTitle ) if( !pBootTitle )
{ {
MI_CpuClearFast((void *)HW_PARAM_DELIVER_ARG, HW_PARAM_DELIVER_ARG_SIZE); MI_CpuClearFast((void *)HW_PARAM_DELIVER_ARG, HW_PARAM_DELIVER_ARG_SIZE);
} }
//----------------------------------------------------- //-----------------------------------------------------
// ISデバッガバナーViewモード起動 // ISデバッガバナーViewモード起動
//----------------------------------------------------- //-----------------------------------------------------
if( pBootTitle == NULL ) { if( pBootTitle == NULL ) {
// ランチャーパラメータによるダイレクトブートがない場合のみ判定 // ランチャーパラメータによるダイレクトブートがない場合のみ判定
pBootTitle = SYSMi_CheckDebuggerBannerViewModeBoot(); pBootTitle = SYSMi_CheckDebuggerBannerViewModeBoot();
} }
@ -339,7 +339,7 @@ TitleProperty *SYSM_ReadParameters( void )
// 検査カード起動 // 検査カード起動
//----------------------------------------------------- //-----------------------------------------------------
if( pBootTitle == NULL ) { if( pBootTitle == NULL ) {
// ココまでダイレクトブートが設定されていない場合のみ判定 // ココまでダイレクトブートが設定されていない場合のみ判定
pBootTitle = SYSMi_CheckShortcutBoot1(); pBootTitle = SYSMi_CheckShortcutBoot1();
} }
@ -347,7 +347,7 @@ TitleProperty *SYSM_ReadParameters( void )
// その他のショートカット起動 // その他のショートカット起動
//----------------------------------------------------- //-----------------------------------------------------
if( pBootTitle == NULL ) { if( pBootTitle == NULL ) {
// ココまでダイレクトブートが設定されていない場合のみ判定 // ココまでダイレクトブートが設定されていない場合のみ判定
pBootTitle = SYSMi_CheckShortcutBoot2(); pBootTitle = SYSMi_CheckShortcutBoot2();
} }
@ -358,36 +358,36 @@ TitleProperty *SYSM_ReadParameters( void )
// HWInfoのメモリ展開。 // HWInfoのメモリ展開。
static void SYSMi_CopyLCFGDataHWInfo( u32 dst_addr ) static void SYSMi_CopyLCFGDataHWInfo( u32 dst_addr )
{ {
// HotStart時にも保持する必要のあるデータをランチャー用に移動するプリロードパラメータバッファにコピー。 // HotStart時にも保持する必要のあるデータをランチャー用に移動するプリロードパラメータバッファにコピー。
MI_CpuCopy8( (void *)HW_PARAM_WIRELESS_FIRMWARE_DATA, (void *)(dst_addr + HW_PARAM_TWL_SETTINGS_DATA_SIZE), MI_CpuCopy8( (void *)HW_PARAM_WIRELESS_FIRMWARE_DATA, (void *)(dst_addr + HW_PARAM_TWL_SETTINGS_DATA_SIZE),
HW_PARAM_WIRELESS_FIRMWARE_DATA_SIZE ); // 無線ファーム用 HW_PARAM_WIRELESS_FIRMWARE_DATA_SIZE ); // 無線ファーム用
// プリロードパラメータアドレスをランチャー向けに変更。 // プリロードパラメータアドレスをランチャー向けに変更。
*(u32 *)HW_PRELOAD_PARAMETER_ADDR = dst_addr; *(u32 *)HW_PRELOAD_PARAMETER_ADDR = dst_addr;
// HWーマル情報、HWセキュア情報をメモリに展開しておく // HWーマル情報、HWセキュア情報をメモリに展開しておく
MI_CpuCopyFast( LCFGi_GetHWN(), (void *)HW_PARAM_TWL_HW_NORMAL_INFO, sizeof(LCFGTWLHWNormalInfo) ); MI_CpuCopyFast( LCFGi_GetHWN(), (void *)HW_PARAM_TWL_HW_NORMAL_INFO, sizeof(LCFGTWLHWNormalInfo) );
MI_CpuCopyFast( LCFGi_GetHWS(), (void *)HW_HW_SECURE_INFO, HW_HW_SECURE_INFO_END - HW_HW_SECURE_INFO ); MI_CpuCopyFast( LCFGi_GetHWS(), (void *)HW_HW_SECURE_INFO, HW_HW_SECURE_INFO_END - HW_HW_SECURE_INFO );
} }
// 本体設定データのメモリ展開。 // 本体設定データのメモリ展開。
static void SYSMi_CopyLCFGDataSettings( void ) static void SYSMi_CopyLCFGDataSettings( void )
{ {
// 本体設定データ // 本体設定データ
MI_CpuCopyFast( LCFGi_GetTSD(), (void *)HW_PARAM_TWL_SETTINGS_DATA, sizeof(LCFGTWLSettingsData) ); MI_CpuCopyFast( LCFGi_GetTSD(), (void *)HW_PARAM_TWL_SETTINGS_DATA, sizeof(LCFGTWLSettingsData) );
// 本体設定データのLauncherStatus部分をクリアしておく // 本体設定データのLauncherStatus部分をクリアしておく
{ {
LCFGTWLSettingsData *pSettings = (LCFGTWLSettingsData *)HW_PARAM_TWL_SETTINGS_DATA; LCFGTWLSettingsData *pSettings = (LCFGTWLSettingsData *)HW_PARAM_TWL_SETTINGS_DATA;
MI_CpuClear32( &pSettings->launcherStatus, sizeof(LCFGTWLLauncherStatus) ); MI_CpuClear32( &pSettings->launcherStatus, sizeof(LCFGTWLLauncherStatus) );
} }
// NTR本体設定データをメモリに展開しておく // NTR本体設定データをメモリに展開しておく
{ {
LCFG_NSD_SetLanguage( LCFG_NSD_GetLanguageEx() ); LCFG_NSD_SetLanguage( LCFG_NSD_GetLanguageEx() );
MI_CpuCopy8( LCFGi_GetNSD(), OS_GetSystemWork()->nvramUserInfo, sizeof(LCFGNTRSettingsData) ); MI_CpuCopy8( LCFGi_GetNSD(), OS_GetSystemWork()->nvramUserInfo, sizeof(LCFGNTRSettingsData) );
} }
} }
@ -395,9 +395,9 @@ static void SYSMi_CopyLCFGDataSettings( void )
BOOL SYSM_IsLauncherHidden( void ) BOOL SYSM_IsLauncherHidden( void )
{ {
#ifdef SYSM_DO_NOT_SHOW_LAUNCHER #ifdef SYSM_DO_NOT_SHOW_LAUNCHER
return TRUE; return TRUE;
#else #else
return FALSE; return FALSE;
#endif #endif
} }
@ -409,21 +409,21 @@ static TitleProperty *SYSMi_CheckDebuggerBannerViewModeBoot( void )
//----------------------------------------------------- //-----------------------------------------------------
// ISデバッガバナーViewモード起動 // ISデバッガバナーViewモード起動
//----------------------------------------------------- //-----------------------------------------------------
//[TODO]未実装 //[TODO]未実装
#if 0 #if 0
if( SYSMi_IsDebuggerBannerViewMode() ) { if( SYSMi_IsDebuggerBannerViewMode() ) {
return NULL; return NULL;
} }
#endif #endif
return NULL; return NULL;
} }
// ショートカット起動のチェックその1 // ショートカット起動のチェックその1
static TitleProperty *SYSMi_CheckShortcutBoot1( void ) static TitleProperty *SYSMi_CheckShortcutBoot1( void )
{ {
MI_CpuClear8( &s_bootTitleBuf, sizeof(TitleProperty) ); MI_CpuClear8( &s_bootTitleBuf, sizeof(TitleProperty) );
//----------------------------------------------------- //-----------------------------------------------------
// ISデバッガ起動 or // ISデバッガ起動 or
// 量産工程用ショートカットキー or // 量産工程用ショートカットキー or
@ -462,50 +462,50 @@ static TitleProperty *SYSMi_CheckShortcutBoot1( void )
// ショートカット起動のチェックその2 // ショートカット起動のチェックその2
static TitleProperty *SYSMi_CheckShortcutBoot2( void ) static TitleProperty *SYSMi_CheckShortcutBoot2( void )
{ {
BOOL isSetArgument = FALSE; BOOL isSetArgument = FALSE;
BOOL isBootMSET = FALSE; BOOL isBootMSET = FALSE;
u16 argument = 0; u16 argument = 0;
MI_CpuClear8( &s_bootTitleBuf, sizeof(TitleProperty) ); MI_CpuClear8( &s_bootTitleBuf, sizeof(TitleProperty) );
#ifndef SYSM_DISABLE_INITIAL_SETTINGS #ifndef SYSM_DISABLE_INITIAL_SETTINGS
//----------------------------------------------------- //-----------------------------------------------------
// TWL設定データ破損時のフラッシュ壊れシーケンス起動 // TWL設定データ破損時のフラッシュ壊れシーケンス起動
//----------------------------------------------------- //-----------------------------------------------------
if( !LCFG_TSD_IsFinishedBrokenTWLSettings() ) { if( !LCFG_TSD_IsFinishedBrokenTWLSettings() ) {
argument = 100; // フラッシュ壊れシーケンス起動 argument = 100; // フラッシュ壊れシーケンス起動
isSetArgument = TRUE; isSetArgument = TRUE;
isBootMSET = TRUE; isBootMSET = TRUE;
}else }else
#endif #endif
//----------------------------------------------------- //-----------------------------------------------------
// L+R+Startボタン押下起動で、本体設定のタッチパネル設定を起動 // L+R+Startボタン押下起動で、本体設定のタッチパネル設定を起動
//----------------------------------------------------- //-----------------------------------------------------
if( ( PAD_Read() & SYSM_PAD_SHORTCUT_TP_CALIBRATION ) == if( ( PAD_Read() & SYSM_PAD_SHORTCUT_TP_CALIBRATION ) ==
SYSM_PAD_SHORTCUT_TP_CALIBRATION ) { SYSM_PAD_SHORTCUT_TP_CALIBRATION ) {
argument = 101; argument = 101;
isSetArgument = TRUE; isSetArgument = TRUE;
isBootMSET = TRUE; isBootMSET = TRUE;
} }
#ifndef SYSM_DISABLE_INITIAL_SETTINGS #ifndef SYSM_DISABLE_INITIAL_SETTINGS
//----------------------------------------------------- //-----------------------------------------------------
// TWL設定データ未設定時の初回起動シーケンス起動 // TWL設定データ未設定時の初回起動シーケンス起動
//----------------------------------------------------- //-----------------------------------------------------
else if( !LCFG_TSD_IsFinishedInitialSetting() ) { else if( !LCFG_TSD_IsFinishedInitialSetting() ) {
argument = 0; argument = 0;
isSetArgument = FALSE; isSetArgument = FALSE;
isBootMSET = TRUE; isBootMSET = TRUE;
} }
#endif #endif
//----------------------------------------------------- //-----------------------------------------------------
// ランチャー画面を表示しないバージョンの場合 // ランチャー画面を表示しないバージョンの場合
// カードがささっていたらカードを起動する // カードがささっていたらカードを起動する
// ささっていない場合は本体設定を起動 // ささっていない場合は本体設定を起動
//----------------------------------------------------- //-----------------------------------------------------
#ifdef SYSM_DO_NOT_SHOW_LAUNCHER #ifdef SYSM_DO_NOT_SHOW_LAUNCHER
else if( SYSM_IsExistCard() ) else if( SYSM_IsExistCard() )
{ {
s_bootTitleBuf.flags.isAppRelocate = TRUE; s_bootTitleBuf.flags.isAppRelocate = TRUE;
s_bootTitleBuf.flags.isAppLoadCompleted = FALSE; s_bootTitleBuf.flags.isAppLoadCompleted = FALSE;
s_bootTitleBuf.flags.isInitialShortcutSkip = TRUE; // 初回起動シーケンスを飛ばす s_bootTitleBuf.flags.isInitialShortcutSkip = TRUE; // 初回起動シーケンスを飛ばす
@ -523,19 +523,19 @@ static TitleProperty *SYSMi_CheckShortcutBoot2( void )
s_bootTitleBuf.titleID = *(u64 *)( &SYSM_GetCardRomHeader()->titleID_Lo ); s_bootTitleBuf.titleID = *(u64 *)( &SYSM_GetCardRomHeader()->titleID_Lo );
SYSM_SetLogoDemoSkip( s_bootTitleBuf.flags.isLogoSkip ); SYSM_SetLogoDemoSkip( s_bootTitleBuf.flags.isLogoSkip );
return &s_bootTitleBuf; return &s_bootTitleBuf;
}else }else
{ {
argument = 0; argument = 0;
isSetArgument = FALSE; isSetArgument = FALSE;
isBootMSET = TRUE; isBootMSET = TRUE;
} }
#endif #endif
// 「アプリ間パラメータセット」有効時は、パラメータをセット // 「アプリ間パラメータセット」有効時は、パラメータをセット
if( isSetArgument ) { if( isSetArgument ) {
OSDeliverArgInfo argInfo; OSDeliverArgInfo argInfo;
int result; int result;
OS_InitDeliverArgInfo(&argInfo, 0); OS_InitDeliverArgInfo(&argInfo, 0);
OS_DecodeDeliverArg(); OS_DecodeDeliverArg();
OSi_SetDeliverArgState( OS_DELIVER_ARG_BUF_ACCESSIBLE | OS_DELIVER_ARG_BUF_WRITABLE ); OSi_SetDeliverArgState( OS_DELIVER_ARG_BUF_ACCESSIBLE | OS_DELIVER_ARG_BUF_WRITABLE );
@ -548,21 +548,21 @@ static TitleProperty *SYSMi_CheckShortcutBoot2( void )
} }
OS_EncodeDeliverArg(); OS_EncodeDeliverArg();
} }
// 「本体設定ブート」有効時は、本体設定プート決定 // 「本体設定ブート」有効時は、本体設定プート決定
if( isBootMSET ) { if( isBootMSET ) {
s_bootTitleBuf.titleID = SYSMi_getTitleIdOfMachineSettings(); s_bootTitleBuf.titleID = SYSMi_getTitleIdOfMachineSettings();
if(s_bootTitleBuf.titleID != 0) if(s_bootTitleBuf.titleID != 0)
{ {
s_bootTitleBuf.flags.isLogoSkip = TRUE; // 本体設定を起動できる時だけロゴデモを飛ばす s_bootTitleBuf.flags.isLogoSkip = TRUE; // 本体設定を起動できる時だけロゴデモを飛ばす
} }
s_bootTitleBuf.flags.bootType = LAUNCHER_BOOTTYPE_NAND; s_bootTitleBuf.flags.bootType = LAUNCHER_BOOTTYPE_NAND;
s_bootTitleBuf.flags.isValid = TRUE; s_bootTitleBuf.flags.isValid = TRUE;
s_bootTitleBuf.flags.isAppRelocate = FALSE; s_bootTitleBuf.flags.isAppRelocate = FALSE;
s_bootTitleBuf.flags.isAppLoadCompleted = FALSE; s_bootTitleBuf.flags.isAppLoadCompleted = FALSE;
return &s_bootTitleBuf; return &s_bootTitleBuf;
} }
return NULL; // 「ブート内容未定」でリターン return NULL; // 「ブート内容未定」でリターン
} }
@ -571,34 +571,34 @@ static TitleProperty *SYSMi_CheckShortcutBoot2( void )
// それらしきものがインストールされていない場合は0NULLをリターン // それらしきものがインストールされていない場合は0NULLをリターン
static OSTitleId SYSMi_getTitleIdOfMachineSettings( void ) static OSTitleId SYSMi_getTitleIdOfMachineSettings( void )
{ {
OSTitleId ret = NULL; OSTitleId ret = NULL;
int l; int l;
int getNum; int getNum;
int validNum = 0; int validNum = 0;
NAMTitleId *pTitleIDList = NULL; NAMTitleId *pTitleIDList = NULL;
ROM_Header_Short *header = ( ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF; ROM_Header_Short *header = ( ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF;
// インストールされているタイトルの取得 // インストールされているタイトルの取得
getNum = NAM_GetNumTitles(); getNum = NAM_GetNumTitles();
pTitleIDList = SYSM_Alloc( sizeof(NAMTitleId) * getNum ); pTitleIDList = SYSM_Alloc( sizeof(NAMTitleId) * getNum );
if( pTitleIDList == NULL ) { if( pTitleIDList == NULL ) {
OS_TPrintf( "%s: alloc error.\n", __FUNCTION__ ); OS_TPrintf( "%s: alloc error.\n", __FUNCTION__ );
return 0; return 0;
} }
(void)NAM_GetTitleList( pTitleIDList, (u32)getNum ); (void)NAM_GetTitleList( pTitleIDList, (u32)getNum );
// 取得したタイトルに本体情報のIDがあるかチェック // 取得したタイトルに本体情報のIDがあるかチェック
for( l = 0; l < getNum; l++ ) { for( l = 0; l < getNum; l++ ) {
char *code = ((char *)&pTitleIDList[l]) + 1; char *code = ((char *)&pTitleIDList[l]) + 1;
if( 0 == STD_CompareNString( code, "BNH", 3 ) ) if( 0 == STD_CompareNString( code, "BNH", 3 ) )
{ {
ret = (OSTitleId)pTitleIDList[l]; ret = (OSTitleId)pTitleIDList[l];
break; break;
} }
} }
SYSM_Free( pTitleIDList ); SYSM_Free( pTitleIDList );
return ret; return ret;
} }
//====================================================================== //======================================================================