mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
CTRモードで初期化したDSカードI/FをリセットしないようにしてTWLカードを起動可能に。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/branches/20100611_RedLauncher_Remodel@2942 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
c03ff6828e
commit
27454334d1
@ -18,9 +18,6 @@
|
||||
ifndef TWL_SYSMENU_COMMONDEFS_
|
||||
TWL_SYSMENU_COMMONDEFS_ = TRUE
|
||||
|
||||
SYSM_FOR_CTR = TRUE
|
||||
SYSM_NO_LOAD = TRUE
|
||||
|
||||
ifdef SYSM_FOR_CTR
|
||||
MACRO_FLAGS += -DSYSM_FOR_CTR
|
||||
ifdef SYSM_NO_LOAD
|
||||
|
||||
@ -134,8 +134,10 @@ TwlSpMain(void)
|
||||
}
|
||||
PMi_SetControl( PMIC_CTL_BKLT1 | PMIC_CTL_BKLT2 );
|
||||
|
||||
#ifndef SYSM_NO_LOAD
|
||||
#ifdef INITIAL_KEYTABLE_PRELOAD
|
||||
HOTSW_CopyInitialKeyTable();
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// OS <20>‰Šú‰»
|
||||
@ -253,6 +255,8 @@ TwlSpMain(void)
|
||||
|
||||
BOOT_Init();
|
||||
|
||||
#ifndef SYSM_NO_LOAD
|
||||
|
||||
// Šˆ<C5A0>ð‘}”²‹@”\<5C>‰Šú‰»
|
||||
if( ( SYSM_GetLauncherParamBody()->v1.flags.isValid ) &&
|
||||
( SYSM_GetLauncherParamBody()->v1.flags.bootType != LAUNCHER_BOOTTYPE_ROM ) &&
|
||||
@ -279,6 +283,8 @@ TwlSpMain(void)
|
||||
|
||||
HOTSW_Init(THREAD_PRIO_HOTSW);
|
||||
|
||||
#endif // SYSM_NO_LOAD
|
||||
|
||||
while (TRUE)
|
||||
{
|
||||
OS_Halt();
|
||||
|
||||
@ -191,6 +191,7 @@ static void BOOTi_RebootCallback( void** entryp, void* mem_list_v, REBOOTTarget*
|
||||
// FSによってshared領域にコピーされたランチャー自身のマウントパスのクリア
|
||||
MI_CpuClearFast((char *)HW_TWL_FS_BOOT_SRL_PATH_BUF, OS_MOUNT_PATH_LEN);
|
||||
|
||||
#ifndef SYSM_NO_LOAD
|
||||
// NAND/TMPアプリ用KeyTableの生成
|
||||
if( ! SYSMi_GetWork()->flags.arm9.isCardBoot )
|
||||
{
|
||||
@ -203,10 +204,14 @@ static void BOOTi_RebootCallback( void** entryp, void* mem_list_v, REBOOTTarget*
|
||||
HOTSWi_SetSecureSegmentBuffer(HOTSW_MODE1, addr, SECURE_AREA_SIZE);
|
||||
HOTSW_DecryptObjectFile( addr );
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
// TWL/NTRモード判定
|
||||
if ( ! dh->s.platform_code ||
|
||||
(SYSM_IsRunOnDebugger() && ((SYSMRomEmuInfo*)HOTSW_GetRomEmulationBuffer())->isForceNTRMode) )
|
||||
if ( ! dh->s.platform_code
|
||||
#ifndef SYSM_NO_LOAD
|
||||
|| (SYSM_IsRunOnDebugger() && ((SYSMRomEmuInfo*)HOTSW_GetRomEmulationBuffer())->isForceNTRMode)
|
||||
#endif
|
||||
)
|
||||
{
|
||||
isNtrMode = TRUE;
|
||||
}
|
||||
|
||||
@ -79,9 +79,11 @@ void BOOT_Ready( void )
|
||||
ROM_Header *dh = (ROM_Header *)(SYSMi_GetWork()->romHeaderNTR); // DS互換ROMヘッダ(非キャッシュ領域)
|
||||
|
||||
// HOTSW終了処理待ち
|
||||
#ifndef SYSM_NO_LOAD
|
||||
while( ! HOTSW_isFinalized() ) {
|
||||
OS_Sleep( 1 );
|
||||
}
|
||||
#endif
|
||||
|
||||
// リブート
|
||||
REBOOTi_SetTwlRomHeaderAddr( th );
|
||||
@ -133,8 +135,11 @@ static void BOOTi_RebootCallback( void** entryp, void* mem_list_v, REBOOTTarget*
|
||||
(void)OS_ResetRequestIrqMask( (u32)~0 );
|
||||
|
||||
// TWL/NTRモード判定
|
||||
if ( ! dh->s.platform_code ||
|
||||
(SYSM_IsRunOnDebugger() && ((SYSMRomEmuInfo*)HOTSW_GetRomEmulationBuffer())->isForceNTRMode) )
|
||||
if ( ! dh->s.platform_code
|
||||
#ifndef SYSM_NO_LOAD
|
||||
|| (SYSM_IsRunOnDebugger() && ((SYSMRomEmuInfo*)HOTSW_GetRomEmulationBuffer())->isForceNTRMode)
|
||||
#endif
|
||||
)
|
||||
{
|
||||
isNtrMode = TRUE;
|
||||
}
|
||||
|
||||
@ -190,6 +190,8 @@ static void FSi_WramThread(void* arg)
|
||||
result = FS_ReadFile( FSiWramWork.p_file, cmd->addr, cmd->length );
|
||||
//OS_TPrintf("%s: (0x%08X) %d msec\n", __func__, cmd->addr, (int)OS_TicksToMilliSeconds(OS_GetTick()));
|
||||
break;
|
||||
|
||||
#ifndef SYSM_NO_LOAD
|
||||
case FS_WRAM_COMMAND_READ_CARD:
|
||||
// <20>J<EFBFBD>[<5B>h<EFBFBD>Š<EFBFBD>[<5B>h
|
||||
if(!FSi_IsValidAddressForARM7(cmd->addr, (u32)cmd->length))
|
||||
@ -202,6 +204,8 @@ static void FSi_WramThread(void* arg)
|
||||
result = (card_read_state == CARD_READ_SUCCESS) ? cmd->length : 0;
|
||||
if((card_read_state != CARD_READ_SUCCESS)) ERRORLOG_Printf( "FSi_WramThread: read-card error:%d\n", card_read_state );
|
||||
break;
|
||||
#endif // SYSM_NO_LOAD
|
||||
|
||||
case FS_WRAM_COMMAND_WRITE:
|
||||
result = FS_WriteFile( FSiWramWork.p_file, cmd->addr, cmd->length );
|
||||
//OS_TPrintf("%s: (0x%08X) %d msec\n", __func__, cmd->addr, (int)OS_TicksToMilliSeconds(OS_GetTick()));
|
||||
|
||||
@ -147,9 +147,11 @@ void SYSMi_SendKeysToARM7( void )
|
||||
DC_FlushRange( (void *)HW_WRAM_0, sizeof(DeliverBROM9Key) );
|
||||
MI_SetWramBank(MI_WRAM_ARM7_ALL);
|
||||
|
||||
#ifndef SYSM_NO_LOAD
|
||||
#ifdef INITIAL_KEYTABLE_PRELOAD
|
||||
SYSMi_GetWork()->flags.hotsw.isKeyTableLoadReady = TRUE;
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@ -288,13 +290,15 @@ TitleProperty *SYSM_ReadParameters( void )
|
||||
while( !SYSMi_GetWork()->flags.arm7.isARM9Start ) {
|
||||
SVC_WaitByLoop( 0x1000 );
|
||||
}
|
||||
|
||||
#ifndef SYSM_NO_LOAD
|
||||
//#ifdef DEBUG_USED_CARD_SLOT_B_
|
||||
// ARM7のカードチェック完了を待つ
|
||||
while( !SYSMi_GetWork()->flags.hotsw.is1stCardChecked ) {
|
||||
SVC_WaitByLoop( 0x1000 );
|
||||
}
|
||||
//#endif
|
||||
|
||||
#endif // SYSM_NO_LOAD
|
||||
|
||||
//-----------------------------------------------------
|
||||
// ランチャーパラメータの判定
|
||||
|
||||
@ -377,11 +377,16 @@ static BOOL PrepareDHTDatabase(void)
|
||||
static BOOL WrapperFunc_ReadCardData(void* dest, s32 offset, s32 length, void* arg)
|
||||
{
|
||||
#pragma unused(arg)
|
||||
|
||||
#ifndef SYSM_NO_LOAD
|
||||
|
||||
HOTSW_ReadCardData( (void *)offset, dest, (u32)length);
|
||||
|
||||
#endif // SYSM_NO_LOAD
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
//================================================================================
|
||||
// for register SCFG_OP
|
||||
//================================================================================
|
||||
@ -611,6 +616,8 @@ static void SYSMi_DHTPhase1Callback(const void* addr, const void* orig_addr, u32
|
||||
DHT_CheckHashPhase1Update( &cba->ctx, addr, (s32)calc_len );
|
||||
}
|
||||
|
||||
#ifndef SYSM_NO_LOAD
|
||||
|
||||
static void SYSMi_FinalizeHotSWAsync( TitleProperty *pBootTitle, ROM_Header *head )
|
||||
{
|
||||
HotSwCardState card_state;
|
||||
@ -650,6 +657,8 @@ static void SYSMi_FinalizeHotSWAsync( TitleProperty *pBootTitle, ROM_Header *hea
|
||||
HOTSW_FinalizeHotSWAsync( card_state );
|
||||
}
|
||||
|
||||
#endif // SYSM_NO_LOAD
|
||||
|
||||
static void SYSMi_LoadTitleThreadFunc( TitleProperty *pBootTitle )
|
||||
{
|
||||
enum
|
||||
@ -865,9 +874,13 @@ OS_TPrintf("RebootSystem failed: cant read file(%p, %d, %d, %d)\n", sp_authcode,
|
||||
// ヘッダ読み込み完了フラグを立てる
|
||||
SYSM_SetHeaderLoadCompleted(TRUE);
|
||||
|
||||
#ifndef SYSM_NO_LOAD
|
||||
|
||||
// HOTSW終了処理有効化
|
||||
SYSMi_FinalizeHotSWAsync( pBootTitle, (void*)SYSM_APP_ROM_HEADER_BUF );
|
||||
|
||||
#endif // SYSM_NO_LOAD
|
||||
|
||||
// 各領域を読み込む
|
||||
source [region_arm9_ntr] = head->s.main_rom_offset;
|
||||
length [region_arm9_ntr] = head->s.main_size;
|
||||
@ -1126,12 +1139,16 @@ void SYSM_StartLoadTitle( TitleProperty *pBootTitle )
|
||||
#define STACK_SIZE 0xc00
|
||||
static u64 stack[ STACK_SIZE / sizeof(u64) ];
|
||||
|
||||
#ifndef SYSM_NO_LOAD
|
||||
|
||||
HOTSW_InvalidHotSWAsync();
|
||||
// 値が変化するまでスリープして待つ。
|
||||
while( HOTSW_isEnableHotSW() != FALSE ) {
|
||||
OS_Sleep( 2 );
|
||||
}
|
||||
|
||||
#endif // SYSM_NO_LOAD
|
||||
|
||||
// DataOnlyなアプリはロードも起動もしない
|
||||
if( pBootTitle->titleID & TITLE_ID_DATA_ONLY_FLAG_MASK )
|
||||
{
|
||||
|
||||
@ -148,14 +148,22 @@ BOOL SYSM_IsValidTSD( void )
|
||||
// 有効なTWL/NTRカードが差さっているか?
|
||||
BOOL SYSM_IsExistCard( void )
|
||||
{
|
||||
#ifdef SYSM_NO_LOAD
|
||||
return TRUE;
|
||||
#else // SYSM_NO_LOAD
|
||||
return (BOOL)SYSMi_GetWork()->flags.hotsw.isExistCard;
|
||||
#endif SYSM_NO_LOAD
|
||||
}
|
||||
|
||||
|
||||
// 検査用カードが差さっているか?
|
||||
BOOL SYSM_IsInspectCard( void )
|
||||
{
|
||||
#ifdef SYSM_NO_LOAD
|
||||
return FALSE;
|
||||
#else // SYSM_NO_LOAD
|
||||
return ( SYSM_IsExistCard() && SYSMi_GetWork()->flags.hotsw.isInspectCard );
|
||||
#endif SYSM_NO_LOAD
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -99,13 +99,17 @@ SYSMENU_LIBS = \
|
||||
libboot$(TWL_LIBSUFFIX).a \
|
||||
liberrorlog$(TWL_LIBSUFFIX).a \
|
||||
libds$(TWL_LIBSUFFIX).a \
|
||||
libhotsw$(TWL_LIBSUFFIX).a \
|
||||
libdht$(TWL_LIBSUFFIX).a \
|
||||
libreloc_info$(TWL_LIBSUFFIX).a \
|
||||
libnamut$(TWL_LIBSUFFIX).a \
|
||||
libsharedfont_launcher$(TWL_LIBSUFFIX).a \
|
||||
WDS$(TWL_LIBSUFFIX).a
|
||||
|
||||
ifneq ($(SYSM_NO_LOAD),TRUE)
|
||||
SYSMENU_LIBS += \
|
||||
libhotsw$(TWL_LIBSUFFIX).a
|
||||
endif
|
||||
|
||||
SDK_APPEND_LIBS = \
|
||||
libes$(TWL_LIBSUFFIX).a \
|
||||
libboc$(TWL_LIBSUFFIX).a \
|
||||
|
||||
@ -18,6 +18,10 @@
|
||||
|
||||
ifneq ($(SYSM_UPDATER_RELEASE),TRUE)
|
||||
|
||||
# for CTR
|
||||
export SYSM_FOR_CTR = TRUE
|
||||
export SYSM_NO_LOAD = TRUE
|
||||
|
||||
# COMPILE SWITCH ※最終ROM作成時は、全てFALSEにセットする。SUBDIRのビルド時にも影響するようexportで環境変数設定する。
|
||||
export SYSM_DO_NOT_SHOW_LAUNCHER = FALSE
|
||||
export SYSM_DISABLE_WDS_SCAN = TRUE
|
||||
|
||||
@ -595,6 +595,8 @@ static TitleProperty *ProcessPads( TitleProperty *pTitleList )
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef SYSM_NO_LOAD
|
||||
|
||||
// HOTSW許可・抑制テスト
|
||||
{
|
||||
static BOOL hotswEnable = TRUE;
|
||||
@ -619,7 +621,9 @@ static TitleProperty *ProcessPads( TitleProperty *pTitleList )
|
||||
PutStringUTF16( 0, 175, TXT_COLOR_RED, L"HotSw Disable" );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#endif // SYSM_NO_LOAD
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@ -232,8 +232,10 @@ void TwlMain( void )
|
||||
TP_Init();
|
||||
RTC_Init();
|
||||
SND_Init();// sound init
|
||||
#ifndef SYSM_NO_LOAD
|
||||
#ifdef USE_WRAM_LOAD
|
||||
HOTSW_Init();
|
||||
#endif
|
||||
#endif
|
||||
|
||||
//NAMの初期化
|
||||
|
||||
Loading…
Reference in New Issue
Block a user