diff --git a/build/buildtools/commondefs b/build/buildtools/commondefs index 3211e8c4..aea88310 100644 --- a/build/buildtools/commondefs +++ b/build/buildtools/commondefs @@ -19,6 +19,7 @@ ifndef TWL_IPL_COMMONDEFS_ TWL_IPL_COMMONDEFS_ = TRUE #FIRM_USE_PRODUCT_KEYS = TRUE +#SYSMENU_DEBUGGER_BUILD = TRUE ifeq ($(TARGET_FIRM),SYSTEMMENU) include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs.sysmenu diff --git a/build/buildtools/commondefs.sysmenu b/build/buildtools/commondefs.sysmenu index 9bb9616e..d9750c80 100644 --- a/build/buildtools/commondefs.sysmenu +++ b/build/buildtools/commondefs.sysmenu @@ -18,9 +18,6 @@ ifndef TWL_SYSMENU_COMMONDEFS_ TWL_SYSMENU_COMMONDEFS_ = TRUE -#SYSMENU_DISABLE_TWL_BOOT = TRUE -#SYSMENU_DISABLE_RETAIL_BOOT = TRUE - NITRO_NO_STD_PCHDR = TRUE # プリコンパイルヘッダ抑止 EMPTY ?= @@ -100,12 +97,8 @@ SDK_NMENU_DATADIR = $(ROOT)/build/tools/TwlNMenu/data #---------------------------------------------------------------------------- -ifdef SYSMENU_DISABLE_TWL_BOOT -MACRO_FLAGS += -DSYSMENU_DISABLE_TWL_BOOT=$(SYSMENU_DISABLE_TWL_BOOT) -endif - -ifdef SYSMENU_DISABLE_RETAIL_BOOT -MACRO_FLAGS += -DSYSMENU_DISABLE_RETAIL_BOOT=$(SYSMENU_DISABLE_RETAIL_BOOT) +ifeq ($(SYSMENU_DEBUGGER_BUILD),TRUE) +MACRO_FLAGS += -DSYSMENU_DEBUGGER_BUILD endif #---------------------------------------------------------------------------- diff --git a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c index c6117902..7c837b03 100644 --- a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c +++ b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c @@ -375,7 +375,7 @@ static HotSwState LoadCardData(void) } MCU_EnableDeepSleepToPowerLine( MCU_PWR_LINE_33, enableDeepSleep ); - // ARM9/7で不整合が発生しないようにRomエミュレーション情報ロードは初回のみ + // ARM9/7で不整合が発生しないようにRomエミュレーション情報ロードは初回のみ if ( ! SYSMi_GetWork()->flags.hotsw.is1stCardChecked ) { // Romエミュレーション情報を取得 @@ -389,6 +389,8 @@ static HotSwState LoadCardData(void) s_debuggerFlg = FALSE; } } + // ※ROMエミュレーション情報を読まなければ、デバッガ上でカードアクセスができなくなるため、ランチャー自身をデバッグできなくなる。 + // よって、ROMエミュレーション情報リード部分をデバッガビルド時以外に切ることはできない。 // 初回のRomエミュレーション情報を使用 if(HOTSWi_IsRomEmulation()){ @@ -698,17 +700,6 @@ HotSwState HOTSWi_RefreshBadBlock(u32 romMode) } -/*---------------------------------------------------------------------------* - Name: HOTSWi_IsRunOnDebugger - - Description: ISデバッガ上で動作しているか? - *---------------------------------------------------------------------------*/ -BOOL HOTSWi_IsRunOnDebugger(void) -{ - return s_debuggerFlg; -} - - /*---------------------------------------------------------------------------* Name: HOTSWi_IsRomEmulation diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c index 2984ab6c..aaa184f5 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c @@ -471,6 +471,7 @@ static void SYSMi_FinalizeHotSWAsync( TitleProperty *pBootTitle, ROM_Header *hea { case LAUNCHER_BOOTTYPE_NAND: case LAUNCHER_BOOTTYPE_TEMP: + // ROMヘッダのアクセスコントロール情報をもとにカード状態を制御するのは "NAND/TMPブートのTWL-LTD" アプリのみ if ( ( head->s.platform_code & PLATFORM_CODE_TWL_LIMITED ) == PLATFORM_CODE_TWL_LIMITED ) { if(rh->s.access_control.game_card_nitro_mode){ @@ -483,6 +484,7 @@ static void SYSMi_FinalizeHotSWAsync( TitleProperty *pBootTitle, ROM_Header *hea card_state = HOTSW_CARD_STATE_POWER_OFF; } } + // それ以外は強制的にNTR互換Game領域にアクセス可能な状態となる(DSダウンロードプレイも含む) else { card_state = HOTSW_CARD_STATE_GAME_MODE; @@ -953,7 +955,7 @@ static BOOL SYSMi_AuthenticateHeaderWithSign( TitleProperty *pBootTitle, ROM_Hea key = ((OSFromFirm9Buf *)HW_FIRM_FROM_FIRM_BUF)->rsa_pubkey[keynum]; } // デバッガが有効でTLF読み込みならば、ハッシュチェックスルーフラグを立てる - if(SYSMi_GetWork()->flags.hotsw.isOnDebugger && SYSMi_GetWork()->romEmuInfo.isTlfRom ) + if( SYSM_IsRunOnDebugger() && SYSMi_GetWork()->romEmuInfo.isTlfRom ) { s_b_dev = TRUE; } @@ -966,7 +968,7 @@ static BOOL SYSMi_AuthenticateHeaderWithSign( TitleProperty *pBootTitle, ROM_Hea // 開発版 key = g_devPubKey[keynum]; // デバッガが有効でTLF読み込みならば、ハッシュチェックスルーフラグを立てる - if(SYSMi_GetWork()->flags.hotsw.isOnDebugger && SYSMi_GetWork()->romEmuInfo.isTlfRom ) + if( SYSM_IsRunOnDebugger() && SYSMi_GetWork()->romEmuInfo.isTlfRom ) { s_b_dev = TRUE; } @@ -1028,7 +1030,7 @@ static BOOL SYSMi_AuthenticateTWLHeader( TitleProperty *pBootTitle, ROM_Header * OS_TPrintf( "Authenticate_Header : header TitleID check succeed.\n" ); } - if( head->s.enable_signature || (SYSMi_GetWork()->flags.hotsw.isOnDebugger && SYSMi_GetWork()->romEmuInfo.isTlfRom)) + if( head->s.enable_signature || ( SYSM_IsRunOnDebugger() && SYSMi_GetWork()->romEmuInfo.isTlfRom)) { return SYSMi_AuthenticateHeaderWithSign( pBootTitle, head ); }else diff --git a/build/libraries_sysmenu/sysmenu/common/src/mountInfo.c b/build/libraries_sysmenu/sysmenu/common/src/mountInfo.c index cadcc98e..3f8b2b11 100644 --- a/build/libraries_sysmenu/sysmenu/common/src/mountInfo.c +++ b/build/libraries_sysmenu/sysmenu/common/src/mountInfo.c @@ -309,7 +309,7 @@ static void SYSMi_ModifySaveDataMount( LauncherBootType bootType, NAMTitleId tit ( titleID & TITLEID_MEDIA_NAND_FLAG ) ) || ( ( bootType == LAUNCHER_BOOTTYPE_ROM ) && // ISデバッガ上で、NANDアプリがROM からブートされた時 ( titleID & TITLEID_MEDIA_NAND_FLAG ) && - ( SYSMi_GetWork()->flags.hotsw.isOnDebugger ) ) + SYSM_IsRunOnDebugger() ) ) { char saveFilePath[ 2 ][ FS_ENTRY_LONGNAME_MAX ]; u32 saveDataSize[ 2 ]; @@ -353,7 +353,7 @@ static void SYSMi_ModifySaveDataMountForLauncher( LauncherBootType bootType, NAM ( titleID & TITLEID_MEDIA_NAND_FLAG ) ) || ( ( bootType == LAUNCHER_BOOTTYPE_ROM ) && // ISデバッガ上で、NANDアプリがROM からブートされた時 ( titleID & TITLEID_MEDIA_NAND_FLAG ) && - ( SYSMi_GetWork()->flags.hotsw.isOnDebugger ) ) + SYSM_IsRunOnDebugger() ) ) { char saveFilePath[ 2 ][ FS_ENTRY_LONGNAME_MAX ]; u32 saveDataSize[ 2 ]; diff --git a/build/libraries_sysmenu/sysmenu/common/src/status.c b/build/libraries_sysmenu/sysmenu/common/src/status.c index 17a48c24..3cbed69f 100644 --- a/build/libraries_sysmenu/sysmenu/common/src/status.c +++ b/build/libraries_sysmenu/sysmenu/common/src/status.c @@ -55,13 +55,6 @@ BOOL SYSM_IsLogoDemoSkip( void ) } -// ISデバッガ上で動作しているか? -BOOL SYSM_IsRunOnDebugger( void ) -{ - return SYSMi_GetWork()->flags.hotsw.isOnDebugger; -} - - // ISデバッガのバナービューモード起動かどうか? BOOL SYSMi_IsDebuggerBannerViewMode( void ) { diff --git a/docs/繝輔Ο繝シ_繝ゥ繝ウ繝√Ε繝シ.vsd b/docs/繝輔Ο繝シ_繝ゥ繝ウ繝√Ε繝シ.vsd index a09f9986..229d5540 100644 Binary files a/docs/繝輔Ο繝シ_繝ゥ繝ウ繝√Ε繝シ.vsd and b/docs/繝輔Ο繝シ_繝ゥ繝ウ繝√Ε繝シ.vsd differ diff --git a/docs/繝ェ繝ェ繝シ繧ケ_SDK_5_0_RC/TwlSDK 5.0 rc 繧ソ繧ケ繧ッ.mmap b/docs/繝ェ繝ェ繝シ繧ケ_SDK_5_0_RC/TwlSDK 5.0 rc 繧ソ繧ケ繧ッ.mmap index 8cc0c64d..8a171854 100644 Binary files a/docs/繝ェ繝ェ繝シ繧ケ_SDK_5_0_RC/TwlSDK 5.0 rc 繧ソ繧ケ繧ッ.mmap and b/docs/繝ェ繝ェ繝シ繧ケ_SDK_5_0_RC/TwlSDK 5.0 rc 繧ソ繧ケ繧ッ.mmap differ diff --git a/include/sysmenu/hotsw/common/hotsw.h b/include/sysmenu/hotsw/common/hotsw.h index 49e35423..abdb9654 100644 --- a/include/sysmenu/hotsw/common/hotsw.h +++ b/include/sysmenu/hotsw/common/hotsw.h @@ -180,9 +180,6 @@ void HOTSW_SetSecureSegmentBuffer(ModeType type ,void* buf, u32 size); // 上記のバッファ非クリアバージョン void HOTSWi_SetSecureSegmentBuffer(ModeType type ,void* buf, u32 size); -// ISデバッガ上で動作しているか? -BOOL HOTSWi_IsRunOnDebugger(void); - // ROMをエミュレーションしているか? BOOL HOTSWi_IsRomEmulation(void); diff --git a/include/sysmenu/sysmenu_lib/common/sysmenu_api.h b/include/sysmenu/sysmenu_lib/common/sysmenu_api.h index e16b01e0..b704dc25 100644 --- a/include/sysmenu/sysmenu_lib/common/sysmenu_api.h +++ b/include/sysmenu/sysmenu_lib/common/sysmenu_api.h @@ -132,7 +132,6 @@ extern void SYSM_SetLogoDemoSkip( BOOL skip ); // extern BOOL SYSM_IsValidTSD( void ); // TWL設定データは有効か? extern void SYSM_SetValidTSD( BOOL valid ); // TWL設定データの有効/無効フラグを設定する。 extern const LauncherParamBody *SYSM_GetLauncherParamBody( void ); // ランチャーパラメータの取得 -extern BOOL SYSM_IsRunOnDebugger( void ); // ISデバッガ上で動作しているか? extern BOOL SYSM_IsLauncherHidden( void ); // ランチャーの画面を表示しないバージョンか? diff --git a/include/sysmenu/sysmenu_lib/common/sysmenu_work.h b/include/sysmenu/sysmenu_lib/common/sysmenu_work.h index 8d25f32b..23f09727 100644 --- a/include/sysmenu/sysmenu_lib/common/sysmenu_work.h +++ b/include/sysmenu/sysmenu_lib/common/sysmenu_work.h @@ -208,6 +208,18 @@ typedef struct DeliverBROM9Key { #define GetDeliverBROM9KeyAddr() ( (DeliverBROM9Key *)HW_WRAM_0_LTD ) #endif +// ISデバッガ上で動作しているか? +static inline BOOL SYSM_IsRunOnDebugger( void ) +{ +#ifdef SYSMENU_DEBUGGER_BUILD + return SYSMi_GetWork()->flags.hotsw.isOnDebugger; +#else + return FALSE; +#endif +} + + + #ifdef __cplusplus } #endif