mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
本体設定データをCTRモードから受け取るように。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/branches/20100611_RedLauncher_Remodel@2958 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
9deba792f2
commit
082228592e
@ -29,6 +29,12 @@ endif
|
|||||||
ifdef SYSM_NO_WLFIRM
|
ifdef SYSM_NO_WLFIRM
|
||||||
MACRO_FLAGS += -DSYSM_NO_WLFIRM
|
MACRO_FLAGS += -DSYSM_NO_WLFIRM
|
||||||
endif
|
endif
|
||||||
|
ifdef SYSM_NO_SETTINGFILE
|
||||||
|
MACRO_FLAGS += -DSYSM_NO_SETTINGFILE
|
||||||
|
endif
|
||||||
|
ifdef SYSM_NO_HWINFO
|
||||||
|
MACRO_FLAGS += -DSYSM_NO_HWINFO
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
NITRO_NO_STD_PCHDR = TRUE # プリコンパイルヘッダ抑止
|
NITRO_NO_STD_PCHDR = TRUE # プリコンパイルヘッダ抑止
|
||||||
|
|||||||
@ -214,6 +214,9 @@ TitleProperty *SYSM_ReadParameters( void )
|
|||||||
//-----------------------------------------------------
|
//-----------------------------------------------------
|
||||||
// 本体設定データのリード(※必ずHWSecureInforリード後に実行すること。LanguageBitmapを判定に使うため)
|
// 本体設定データのリード(※必ずHWSecureInforリード後に実行すること。LanguageBitmapを判定に使うため)
|
||||||
//-----------------------------------------------------
|
//-----------------------------------------------------
|
||||||
|
#ifdef SYSM_NO_SETTINGFILE
|
||||||
|
MI_CpuCopy8( (void*)HW_PARAM_TWL_SETTINGS_DATA_DEFAULT, LCFGi_GetTSD(), sizeof(LCFGTWLSettingsData) );
|
||||||
|
#else // SYSM_NO_SETTINGFILE
|
||||||
{
|
{
|
||||||
u8 *pBuffer = SYSM_Alloc( LCFG_READ_TEMP );
|
u8 *pBuffer = SYSM_Alloc( LCFG_READ_TEMP );
|
||||||
if( pBuffer ) {
|
if( pBuffer ) {
|
||||||
@ -242,6 +245,7 @@ TitleProperty *SYSM_ReadParameters( void )
|
|||||||
LCFG_VerifyAndRecoveryNTRSettings(); // NTR設定データを読み出して、TWL設定データとベリファイし、必要ならリカバリ
|
LCFG_VerifyAndRecoveryNTRSettings(); // NTR設定データを読み出して、TWL設定データとベリファイし、必要ならリカバリ
|
||||||
#endif // SYSM_NO_LOAD
|
#endif // SYSM_NO_LOAD
|
||||||
}
|
}
|
||||||
|
#endif // SYSM_NO_SETTINGFILE
|
||||||
|
|
||||||
//-----------------------------------------------------
|
//-----------------------------------------------------
|
||||||
// システム領域に本体設定をコピー
|
// システム領域に本体設定をコピー
|
||||||
@ -386,8 +390,10 @@ static void SYSMi_CopyLCFGDataHWInfo( u32 dst_addr )
|
|||||||
*(u32 *)HW_PRELOAD_PARAMETER_ADDR = dst_addr;
|
*(u32 *)HW_PRELOAD_PARAMETER_ADDR = dst_addr;
|
||||||
|
|
||||||
// HWノーマル情報、HWセキュア情報をメモリに展開しておく
|
// HWノーマル情報、HWセキュア情報をメモリに展開しておく
|
||||||
|
#ifndef SYSM_NO_HWINFO
|
||||||
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 );
|
||||||
|
#endif // SYSM_NO_HWINFO
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1020,12 +1020,14 @@ OS_TPrintf("RebootSystem failed: cant read file(%d, %d)\n", source[i], len);
|
|||||||
SYSM_SetLoadSucceeded(TRUE);
|
SYSM_SetLoadSucceeded(TRUE);
|
||||||
|
|
||||||
// ここでスタック壊れていないかチェック
|
// ここでスタック壊れていないかチェック
|
||||||
|
#ifndef SYSM_NO_LOAD
|
||||||
if( OS_STACK_NO_ERROR != OS_GetStackStatus( &s_thread ) )
|
if( OS_STACK_NO_ERROR != OS_GetStackStatus( &s_thread ) )
|
||||||
{
|
{
|
||||||
OS_TPrintf("RebootSystem warning: stack was broken!\n");
|
OS_TPrintf("RebootSystem warning: stack was broken!\n");
|
||||||
// デバグ用。ERRORLOG_Init()がすでに呼ばれている事前提
|
// デバグ用。ERRORLOG_Init()がすでに呼ばれている事前提
|
||||||
ERRORLOG_Printf( "SYSMi_LoadTitleThreadFunc: stack was broken! %d\n", OS_GetStackStatus( &s_thread ) );
|
ERRORLOG_Printf( "SYSMi_LoadTitleThreadFunc: stack was broken! %d\n", OS_GetStackStatus( &s_thread ) );
|
||||||
}
|
}
|
||||||
|
#endif // SYSM_NO_LOAD
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -1143,8 +1145,6 @@ void SYSM_StartLoadTitle( TitleProperty *pBootTitle )
|
|||||||
OS_Sleep( 2 );
|
OS_Sleep( 2 );
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // SYSM_NO_LOAD
|
|
||||||
|
|
||||||
// DataOnlyなアプリはロードも起動もしない
|
// DataOnlyなアプリはロードも起動もしない
|
||||||
if( pBootTitle->titleID & TITLE_ID_DATA_ONLY_FLAG_MASK )
|
if( pBootTitle->titleID & TITLE_ID_DATA_ONLY_FLAG_MASK )
|
||||||
{
|
{
|
||||||
@ -1175,7 +1175,12 @@ void SYSM_StartLoadTitle( TitleProperty *pBootTitle )
|
|||||||
OS_CreateThread( &s_thread, (void (*)(void *))SYSMi_LoadTitleThreadFunc, (void*)pBootTitle, stack+STACK_SIZE/sizeof(u64), STACK_SIZE,THREAD_PRIO );
|
OS_CreateThread( &s_thread, (void (*)(void *))SYSMi_LoadTitleThreadFunc, (void*)pBootTitle, stack+STACK_SIZE/sizeof(u64), STACK_SIZE,THREAD_PRIO );
|
||||||
OS_WakeupThreadDirect( &s_thread );
|
OS_WakeupThreadDirect( &s_thread );
|
||||||
|
|
||||||
}else {
|
}
|
||||||
|
else
|
||||||
|
|
||||||
|
#endif // SYSM_NO_LOAD
|
||||||
|
|
||||||
|
{
|
||||||
// アプリロード済み
|
// アプリロード済み
|
||||||
SYSM_SetLoadSucceeded(TRUE);
|
SYSM_SetLoadSucceeded(TRUE);
|
||||||
SYSM_SetLoadFinished(TRUE);
|
SYSM_SetLoadFinished(TRUE);
|
||||||
@ -1192,12 +1197,16 @@ void SYSM_StartLoadTitle( TitleProperty *pBootTitle )
|
|||||||
// アプリロード済みかどうかをチェック
|
// アプリロード済みかどうかをチェック
|
||||||
BOOL SYSM_IsLoadTitleFinished( void )
|
BOOL SYSM_IsLoadTitleFinished( void )
|
||||||
{
|
{
|
||||||
|
#ifndef SYSM_NO_LOAD
|
||||||
|
return TRUE;
|
||||||
|
#else // SYSM_NO_LOAD
|
||||||
// ロード済みの時は、常にTRUE
|
// ロード済みの時は、常にTRUE
|
||||||
if( !SYSMi_GetWork()->flags.arm9.isLoadFinished ) {
|
if( !SYSMi_GetWork()->flags.arm9.isLoadFinished ) {
|
||||||
// ロードスレッドの完了をチェック。
|
// ロードスレッドの完了をチェック。
|
||||||
SYSM_SetLoadFinished(OS_IsThreadTerminated( &s_thread ));
|
SYSM_SetLoadFinished(OS_IsThreadTerminated( &s_thread ));
|
||||||
}
|
}
|
||||||
return SYSMi_GetWork()->flags.arm9.isLoadFinished ? TRUE : FALSE;
|
return SYSMi_GetWork()->flags.arm9.isLoadFinished ? TRUE : FALSE;
|
||||||
|
#endif // SYSM_NO_LOAD
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2236,9 +2245,7 @@ static void SYSMi_makeTitleIdList( void )
|
|||||||
start = OS_GetTick();
|
start = OS_GetTick();
|
||||||
|
|
||||||
// とりあえずゼロクリア
|
// とりあえずゼロクリア
|
||||||
#ifndef SYSM_NO_ES
|
|
||||||
MI_CpuClear8( (void *)HW_OS_TITLE_ID_LIST, HW_OS_TITLE_ID_LIST_SIZE );
|
MI_CpuClear8( (void *)HW_OS_TITLE_ID_LIST, HW_OS_TITLE_ID_LIST_SIZE );
|
||||||
#endif
|
|
||||||
|
|
||||||
// これから起動するアプリがTWLアプリでない
|
// これから起動するアプリがTWLアプリでない
|
||||||
if( !hs->platform_code )
|
if( !hs->platform_code )
|
||||||
@ -2286,9 +2293,8 @@ static void SYSMi_makeTitleIdList( void )
|
|||||||
if( same_maker_code )
|
if( same_maker_code )
|
||||||
{
|
{
|
||||||
// リストに追加
|
// リストに追加
|
||||||
#ifndef SYSM_NO_ES
|
|
||||||
list->TitleID[count] = id;
|
list->TitleID[count] = id;
|
||||||
#endif
|
|
||||||
// sameMakerFlagをON
|
// sameMakerFlagをON
|
||||||
list->sameMakerFlag[count/8] |= (u8)(0x1 << (count%8));
|
list->sameMakerFlag[count/8] |= (u8)(0x1 << (count%8));
|
||||||
}
|
}
|
||||||
@ -2299,9 +2305,8 @@ static void SYSMi_makeTitleIdList( void )
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
// リストに追加してジャンプ可能フラグON
|
// リストに追加してジャンプ可能フラグON
|
||||||
#ifndef SYSM_NO_ES
|
|
||||||
list->TitleID[count] = id;
|
list->TitleID[count] = id;
|
||||||
#endif
|
|
||||||
list->appJumpFlag[count/8] |= (u8)(0x1 << (count%8));
|
list->appJumpFlag[count/8] |= (u8)(0x1 << (count%8));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2318,9 +2323,7 @@ static void SYSMi_makeTitleIdList( void )
|
|||||||
list->privateFlag[count/8] |= (u8)(0x1 << (count%8));
|
list->privateFlag[count/8] |= (u8)(0x1 << (count%8));
|
||||||
}
|
}
|
||||||
// リストに強制追加
|
// リストに強制追加
|
||||||
#ifndef SYSM_NO_ES
|
|
||||||
list->TitleID[count] = id;
|
list->TitleID[count] = id;
|
||||||
#endif
|
|
||||||
}else
|
}else
|
||||||
{
|
{
|
||||||
// セキュアアプリでない && メーカーコードが同じ
|
// セキュアアプリでない && メーカーコードが同じ
|
||||||
@ -2331,17 +2334,13 @@ static void SYSMi_makeTitleIdList( void )
|
|||||||
{
|
{
|
||||||
list->publicFlag[count/8] |= (u8)(0x1 << (count%8));
|
list->publicFlag[count/8] |= (u8)(0x1 << (count%8));
|
||||||
// リストに追加
|
// リストに追加
|
||||||
#ifndef SYSM_NO_ES
|
|
||||||
list->TitleID[count] = id;
|
list->TitleID[count] = id;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
if(pe_hs->private_save_data_size != 0)
|
if(pe_hs->private_save_data_size != 0)
|
||||||
{
|
{
|
||||||
list->privateFlag[count/8] |= (u8)(0x1 << (count%8));
|
list->privateFlag[count/8] |= (u8)(0x1 << (count%8));
|
||||||
// リストに追加
|
// リストに追加
|
||||||
#ifndef SYSM_NO_ES
|
|
||||||
list->TitleID[count] = id;
|
list->TitleID[count] = id;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -23,6 +23,8 @@ 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
|
export SYSM_NO_WLFIRM = TRUE
|
||||||
|
export SYSM_NO_SETTINGFILE = TRUE
|
||||||
|
# export SYSM_NO_HWINFO = 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
|
||||||
|
|||||||
@ -443,12 +443,14 @@ void TwlMain( void )
|
|||||||
SND_LockChannel((1 << L_CHANNEL) | (1 << R_CHANNEL), 0);
|
SND_LockChannel((1 << L_CHANNEL) | (1 << R_CHANNEL), 0);
|
||||||
|
|
||||||
/* ストリームスレッドの起動 */
|
/* ストリームスレッドの起動 */
|
||||||
|
#ifndef SYSM_NO_ES
|
||||||
OS_CreateThread(&s_strmThread,
|
OS_CreateThread(&s_strmThread,
|
||||||
StrmThread,
|
StrmThread,
|
||||||
NULL,
|
NULL,
|
||||||
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);
|
||||||
|
#endif // SYSM_NO_ES
|
||||||
|
|
||||||
// end時間計測7
|
// end時間計測7
|
||||||
MEASURE_RESULT( start, "time 7 (etc...) : %dms\n" );
|
MEASURE_RESULT( start, "time 7 (etc...) : %dms\n" );
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user