diff --git a/build/buildtools/commondefs b/build/buildtools/commondefs index bea7622e..ed6186e4 100644 --- a/build/buildtools/commondefs +++ b/build/buildtools/commondefs @@ -19,7 +19,7 @@ ifndef TWL_IPL_COMMONDEFS_ TWL_IPL_COMMONDEFS_ = TRUE #FIRM_USE_PRODUCT_KEYS = TRUE -#SYSM_BUILD_FOR_DEBUGGER = TRUE +SYSM_BUILD_FOR_DEBUGGER = TRUE ifeq ($(TARGET_FIRM),SYSTEMMENU) include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs.sysmenu diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c index 620145e0..86c40cae 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c @@ -428,6 +428,35 @@ static TitleProperty *SYSMi_CheckDebuggerBannerViewModeBoot( void ) return NULL; } +static TitleProperty * SYSMi_ShortcutCardBootSub( void ) +{ + s_bootTitleBuf.flags.isAppRelocate = TRUE; + s_bootTitleBuf.flags.isAppLoadCompleted = FALSE; + s_bootTitleBuf.flags.isInitialShortcutSkip = TRUE; // 初回起動シーケンスを飛ばす + s_bootTitleBuf.flags.isLogoSkip = TRUE; // ロゴデモを飛ばす + s_bootTitleBuf.flags.bootType = LAUNCHER_BOOTTYPE_ROM; + s_bootTitleBuf.flags.isValid = TRUE; + // ROMヘッダバッファのコピー + { + u16 id = (u16)OS_GetLockID(); + (void)OS_LockByWord( id, &SYSMi_GetWork()->lockCardRsc, NULL ); // ARM7と排他制御する + (void)SYSMi_CopyCardRomHeader(); + (void)OS_UnlockByWord( id, &SYSMi_GetWork()->lockCardRsc, NULL ); // ARM7と排他制御する + OS_ReleaseLockID( id ); + } + if( SYSM_GetCardRomHeader()->platform_code & PLATFORM_CODE_FLAG_TWL ) { + s_bootTitleBuf.titleID = *(u64 *)( &SYSM_GetCardRomHeader()->titleID_Lo ); + }else{ + // NTRアプリの時は、TitleIDがないので、GameCodeをいじって擬似的にTitleIDとする。 + s_bootTitleBuf.titleID = (u64)( ( SYSM_GetCardRomHeader()->game_code[ 3 ] << 0 ) | + ( SYSM_GetCardRomHeader()->game_code[ 2 ] << 8 ) | + ( SYSM_GetCardRomHeader()->game_code[ 1 ] << 16 ) | + ( SYSM_GetCardRomHeader()->game_code[ 0 ] << 24 ) ); + } + SYSM_SetLogoDemoSkip( s_bootTitleBuf.flags.isLogoSkip ); + return &s_bootTitleBuf; +} + // ショートカット起動のチェックその1 static TitleProperty *SYSMi_CheckShortcutBoot1( void ) { @@ -445,31 +474,7 @@ static TitleProperty *SYSMi_CheckShortcutBoot1( void ) ( ( PAD_Read() == SYSM_PAD_PRODUCTION_SHORTCUT_CARD_BOOT ) && ( !LCFG_TSD_IsFinishedBrokenTWLSettings() || !LCFG_TSD_IsFinishedInitialSetting() || !LCFG_TSD_IsFinishedInitialSetting_Launcher() ) ) ){ - s_bootTitleBuf.flags.isAppRelocate = TRUE; - s_bootTitleBuf.flags.isAppLoadCompleted = FALSE; - s_bootTitleBuf.flags.isInitialShortcutSkip = TRUE; // 初回起動シーケンスを飛ばす - s_bootTitleBuf.flags.isLogoSkip = TRUE; // ロゴデモを飛ばす - s_bootTitleBuf.flags.bootType = LAUNCHER_BOOTTYPE_ROM; - s_bootTitleBuf.flags.isValid = TRUE; - // ROMヘッダバッファのコピー - { - u16 id = (u16)OS_GetLockID(); - (void)OS_LockByWord( id, &SYSMi_GetWork()->lockCardRsc, NULL ); // ARM7と排他制御する - (void)SYSMi_CopyCardRomHeader(); - (void)OS_UnlockByWord( id, &SYSMi_GetWork()->lockCardRsc, NULL ); // ARM7と排他制御する - OS_ReleaseLockID( id ); - } - if( SYSM_GetCardRomHeader()->platform_code & PLATFORM_CODE_FLAG_TWL ) { - s_bootTitleBuf.titleID = *(u64 *)( &SYSM_GetCardRomHeader()->titleID_Lo ); - }else{ - // NTRアプリの時は、TitleIDがないので、GameCodeをいじって擬似的にTitleIDとする。 - s_bootTitleBuf.titleID = (u64)( ( SYSM_GetCardRomHeader()->game_code[ 3 ] << 0 ) | - ( SYSM_GetCardRomHeader()->game_code[ 2 ] << 8 ) | - ( SYSM_GetCardRomHeader()->game_code[ 1 ] << 16 ) | - ( SYSM_GetCardRomHeader()->game_code[ 0 ] << 24 ) ); - } - SYSM_SetLogoDemoSkip( s_bootTitleBuf.flags.isLogoSkip ); - return &s_bootTitleBuf; + return SYSMi_ShortcutCardBootSub(); } } @@ -523,31 +528,7 @@ static TitleProperty *SYSMi_CheckShortcutBoot2( void ) #ifdef SYSM_DO_NOT_SHOW_LAUNCHER else if( SYSM_IsExistCard() ) { - s_bootTitleBuf.flags.isAppRelocate = TRUE; - s_bootTitleBuf.flags.isAppLoadCompleted = FALSE; - s_bootTitleBuf.flags.isInitialShortcutSkip = TRUE; // 初回起動シーケンスを飛ばす - s_bootTitleBuf.flags.isLogoSkip = TRUE; // ロゴデモを飛ばす - s_bootTitleBuf.flags.bootType = LAUNCHER_BOOTTYPE_ROM; - s_bootTitleBuf.flags.isValid = TRUE; - // ROMヘッダバッファのコピー - { - u16 id = (u16)OS_GetLockID(); - (void)OS_LockByWord( id, &SYSMi_GetWork()->lockCardRsc, NULL ); // ARM7と排他制御する - (void)SYSMi_CopyCardRomHeader(); - (void)OS_UnlockByWord( id, &SYSMi_GetWork()->lockCardRsc, NULL ); // ARM7と排他制御する - OS_ReleaseLockID( id ); - } - if( SYSM_GetCardRomHeader()->platform_code & PLATFORM_CODE_FLAG_TWL ) { - s_bootTitleBuf.titleID = *(u64 *)( &SYSM_GetCardRomHeader()->titleID_Lo ); - }else{ - // NTRアプリの時は、TitleIDがないので、GameCodeをいじって擬似的にTitleIDとする。 - s_bootTitleBuf.titleID = (u64)( ( SYSM_GetCardRomHeader()->game_code[ 3 ] << 0 ) | - ( SYSM_GetCardRomHeader()->game_code[ 2 ] << 8 ) | - ( SYSM_GetCardRomHeader()->game_code[ 1 ] << 16 ) | - ( SYSM_GetCardRomHeader()->game_code[ 0 ] << 24 ) ); - } - SYSM_SetLogoDemoSkip( s_bootTitleBuf.flags.isLogoSkip ); - return &s_bootTitleBuf; + return SYSMi_ShortcutCardBootSub(); }else { argument = 0;