diff --git a/build/buildtools/commondefs.sysmenu b/build/buildtools/commondefs.sysmenu index bb0a1f46..feda6a62 100644 --- a/build/buildtools/commondefs.sysmenu +++ b/build/buildtools/commondefs.sysmenu @@ -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 diff --git a/build/components/hyena.TWL/src/main.c b/build/components/hyena.TWL/src/main.c index ecb21024..bff1e733 100644 --- a/build/components/hyena.TWL/src/main.c +++ b/build/components/hyena.TWL/src/main.c @@ -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 初期化 @@ -253,6 +255,8 @@ TwlSpMain(void) BOOT_Init(); +#ifndef SYSM_NO_LOAD + // 活栓挿抜機能初期化 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(); diff --git a/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c b/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c index 6f22c844..db4d3807 100644 --- a/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c +++ b/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c @@ -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; } diff --git a/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c b/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c index eddb17aa..966b0ca8 100644 --- a/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c +++ b/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c @@ -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; } diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/fs_wram.c b/build/libraries_sysmenu/sysmenu/ARM9/src/fs_wram.c index d2934ddf..7f6493ac 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/fs_wram.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/fs_wram.c @@ -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: // カードリード 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())); diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c index 843ccf64..f8171212 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c @@ -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 //----------------------------------------------------- // ランチャーパラメータの判定 diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c index a66f8b4c..3d9cca3b 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c @@ -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 ) { diff --git a/build/libraries_sysmenu/sysmenu/common/src/status.c b/build/libraries_sysmenu/sysmenu/common/src/status.c index cd1e377c..df10106f 100644 --- a/build/libraries_sysmenu/sysmenu/common/src/status.c +++ b/build/libraries_sysmenu/sysmenu/common/src/status.c @@ -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 } diff --git a/build/systemMenu_RED/Launcher/ARM9/Makefile b/build/systemMenu_RED/Launcher/ARM9/Makefile index 0da71295..c3d3bfd8 100644 --- a/build/systemMenu_RED/Launcher/ARM9/Makefile +++ b/build/systemMenu_RED/Launcher/ARM9/Makefile @@ -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 \ diff --git a/build/systemMenu_RED/Launcher/ARM9/commondefs.launcher b/build/systemMenu_RED/Launcher/ARM9/commondefs.launcher index 71bc1d9f..15ce030c 100644 --- a/build/systemMenu_RED/Launcher/ARM9/commondefs.launcher +++ b/build/systemMenu_RED/Launcher/ARM9/commondefs.launcher @@ -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 diff --git a/build/systemMenu_RED/Launcher/ARM9/src/launcher.c b/build/systemMenu_RED/Launcher/ARM9/src/launcher.c index 29ca2e37..e746d955 100644 --- a/build/systemMenu_RED/Launcher/ARM9/src/launcher.c +++ b/build/systemMenu_RED/Launcher/ARM9/src/launcher.c @@ -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; } diff --git a/build/systemMenu_RED/Launcher/ARM9/src/main.c b/build/systemMenu_RED/Launcher/ARM9/src/main.c index 611d10c3..2d642b21 100644 --- a/build/systemMenu_RED/Launcher/ARM9/src/main.c +++ b/build/systemMenu_RED/Launcher/ARM9/src/main.c @@ -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の初期化