diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c index c08a05de..30b04658 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c @@ -438,7 +438,8 @@ static TitleProperty *SYSMi_CheckShortcutBoot1( void ) // 量産工程用ショートカットキー or // 検査カード起動 //----------------------------------------------------- - if( SYSM_IsInspectCard() || + if( LCFG_THW_IsForceLogoDemoSkip() || + SYSM_IsInspectCard() || ( ( PAD_Read() == SYSM_PAD_PRODUCTION_SHORTCUT_CARD_BOOT ) && ( !LCFG_TSD_IsFinishedBrokenTWLSettings() || !LCFG_TSD_IsFinishedInitialSetting() || !LCFG_TSD_IsFinishedInitialSetting_Launcher() ) ) ){ diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c index b319ae54..75e20751 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c @@ -105,7 +105,9 @@ static OSThread s_thread; static OSThread s_auth_thread; static TWLBannerFile s_card_bannerBuf; -static MbAuthCode s_authcode; +static u8 s_authcode[MATH_ROUNDUP32(sizeof(MbAuthCode))] ATTRIBUTE_ALIGN(32); +static MbAuthCode *sp_authcode = (MbAuthCode *)s_authcode; +static MbAuthCode bup_num; static BOOL s_loadstart = FALSE; @@ -820,10 +822,10 @@ OS_TPrintf("RebootSystem failed: cant seek file(0)\n"); UTL_SetFatalError(FATAL_ERROR_LOAD_SEEKFILE_FAILED); goto ERROR; } - readLen = FS_ReadFile(file, &s_authcode, (s32)sizeof(s_authcode)); - if( readLen != (s32)sizeof(s_authcode) ) + readLen = FS_ReadFile(file, sp_authcode, (s32)sizeof(MbAuthCode)); + if( readLen != (s32)sizeof(MbAuthCode) ) { -OS_TPrintf("RebootSystem failed: cant read file(%p, %d, %d, %d)\n", &s_authcode, 0, sizeof(s_authcode), readLen); +OS_TPrintf("RebootSystem failed: cant read file(%p, %d, %d, %d)\n", sp_authcode, 0, sizeof(MbAuthCode), readLen); UTL_SetFatalError(FATAL_ERROR_LOAD_READDLSIGN_FAILED); goto ERROR; } @@ -1457,7 +1459,7 @@ static BOOL SYSMi_AuthenticateNTRDownloadTitle( TitleProperty *pBootTitle) u8 final_hash[SVC_SHA1_DIGEST_SIZE]; // NTRダウンロードアプリ署名のマジックコードチェック - if( s_authcode.magic_code[0] != 'a' || s_authcode.magic_code[1] != 'c' ) { + if( sp_authcode->magic_code[0] != 'a' || sp_authcode->magic_code[1] != 'c' ) { OS_TPrintf("Authenticate failed: Invalid AuthCode.\n"); UTL_SetFatalError(FATAL_ERROR_DL_MAGICCODE_CHECK_FAILED); return FALSE; @@ -1466,18 +1468,18 @@ static BOOL SYSMi_AuthenticateNTRDownloadTitle( TitleProperty *pBootTitle) // NTRダウンロードアプリ署名(DERフォーマット)の計算、ハッシュの取得。 MI_CpuClear8( buf, 0x80 ); SVC_InitSignHeap( &con, (void *)SIGN_HEAP_ADDR, SIGN_HEAP_SIZE );// ヒープの初期化 - if( !SVC_DecryptSignDER( &con, buf, s_authcode.sign, nitro_dl_sign_key )) + if( !SVC_DecryptSignDER( &con, buf, sp_authcode->sign, nitro_dl_sign_key )) { OS_TPrintf("Authenticate failed: Sign decryption failed.\n"); UTL_SetFatalError(FATAL_ERROR_DL_SIGN_DECRYPTION_FAILED); return FALSE; } - + // それぞれheader,ARM9FLX,ARM7FLXについてハッシュを計算して、それら3つを並べたものに対してまたハッシュをとる if(s_calc_hash) { // シリアルナンバー付加 - *(u32 *)(&(s_calc_hash[SVC_SHA1_DIGEST_SIZE * 3])) = s_authcode.serial_number; + *(u32 *)(&(s_calc_hash[SVC_SHA1_DIGEST_SIZE * 3])) = sp_authcode->serial_number; // 最終ハッシュ計算 SVC_CalcSHA1( final_hash, s_calc_hash, SVC_SHA1_DIGEST_SIZE * 3 + sizeof(u32)); }else @@ -1486,7 +1488,7 @@ static BOOL SYSMi_AuthenticateNTRDownloadTitle( TitleProperty *pBootTitle) UTL_SetFatalError(FATAL_ERROR_DL_HASH_CALC_FAILED); return FALSE; } - + // 計算した最終ハッシュと、署名から得たハッシュとを比較 if(!SVC_CompareSHA1((const void *)buf, (const void *)final_hash)) { @@ -1499,7 +1501,7 @@ static BOOL SYSMi_AuthenticateNTRDownloadTitle( TitleProperty *pBootTitle) } } OS_TPrintf("Authenticate : total %d ms.\n", OS_TicksToMilliSeconds(OS_GetTick() - start) ); - + return TRUE; } diff --git a/build/systemMenu_tools/HWInfoWriter/ARM9/src/HWInfoWriter.c b/build/systemMenu_tools/HWInfoWriter/ARM9/src/HWInfoWriter.c index a6dbafec..c4b2aadd 100644 --- a/build/systemMenu_tools/HWInfoWriter/ARM9/src/HWInfoWriter.c +++ b/build/systemMenu_tools/HWInfoWriter/ARM9/src/HWInfoWriter.c @@ -204,7 +204,7 @@ static void WriteHWInfoFile( u8 region, BOOL isDisableWireless ) // ------------------------------------- (void)PutStringUTF16( MSG_X * 8, ( MSG_Y + 2 ) * 8, TXT_COLOR_BLACK, pMsgSecureWriting ); - if( HWI_WriteHWSecureInfoFile( region, NULL, isDisableWireless ) ) { + if( HWI_WriteHWSecureInfoFile( region, NULL, isDisableWireless, FALSE ) ) { (void)PutStringUTF16( ( MSG_X + 20 ) * 8, ( MSG_Y + 2 ) * 8, TXT_COLOR_BLUE, pMsgSucceeded ); }else { (void)PutStringUTF16( ( MSG_X + 20 ) * 8, ( MSG_Y + 2 ) * 8, TXT_COLOR_RED, pMsgFailed ); diff --git a/build/systemMenu_tools/HWInfoWriter/ARM9/src/hwi.c b/build/systemMenu_tools/HWInfoWriter/ARM9/src/hwi.c index a3cdc72a..80325139 100644 --- a/build/systemMenu_tools/HWInfoWriter/ARM9/src/hwi.c +++ b/build/systemMenu_tools/HWInfoWriter/ARM9/src/hwi.c @@ -417,7 +417,7 @@ BOOL HWI_WriteHWNormalInfoFile( void ) Returns: None. *---------------------------------------------------------------------------*/ -BOOL HWI_WriteHWSecureInfoFile( u8 region, const u8 *pSerialNo, BOOL isDisableWireless ) +BOOL HWI_WriteHWSecureInfoFile( u8 region, const u8 *pSerialNo, BOOL isDisableWireless, BOOL logoDemoSkipForce ) { BOOL isWrite = TRUE; LCFGReadResult result; @@ -435,6 +435,7 @@ BOOL HWI_WriteHWSecureInfoFile( u8 region, const u8 *pSerialNo, BOOL isDisableWi } LCFG_THW_SetFlagForceDisableWireless( isDisableWireless ); + LCFG_THW_SetFlagForceLogoDemoSkip( logoDemoSkipForce ); // 旧リージョンを保存 old_region = OS_GetRegion(); diff --git a/build/systemMenu_tools/HWInfoWriter/ARM9/src/hwi.h b/build/systemMenu_tools/HWInfoWriter/ARM9/src/hwi.h index 71e526cf..b5ab0192 100644 --- a/build/systemMenu_tools/HWInfoWriter/ARM9/src/hwi.h +++ b/build/systemMenu_tools/HWInfoWriter/ARM9/src/hwi.h @@ -39,7 +39,7 @@ HwiInitResult; HwiInitResult HWI_Init( void *(*pAlloc)( u32 ), void (*pFree)( void * ) ); BOOL HWI_ModifyLanguage( u8 region ); BOOL HWI_WriteHWNormalInfoFile( void ); -BOOL HWI_WriteHWSecureInfoFile( u8 region, const u8 *pSerialNo, BOOL isDisableWireless ); +BOOL HWI_WriteHWSecureInfoFile( u8 region, const u8 *pSerialNo, BOOL isDisableWireless, BOOL logoDemoSkipForce ); BOOL HWI_WriteHWIDSignFile( void ); BOOL HWI_DeleteHWNormalInfoFile( void ); BOOL HWI_DeleteHWSecureInfoFile( void ); diff --git a/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/include/process_hw_info.h b/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/include/process_hw_info.h index ea3508d4..82a20abb 100644 --- a/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/include/process_hw_info.h +++ b/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/include/process_hw_info.h @@ -52,7 +52,7 @@ void* HWInfoProcess4(void); Returns: None. *---------------------------------------------------------------------------*/ -BOOL WriteHWInfoFile( u8 region, BOOL wirelessForceOff ); +BOOL WriteHWInfoFile( u8 region, BOOL wirelessForceOff, BOOL logoDemoSkipForce ); /*===========================================================================*/ diff --git a/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/src/process_hw_info.c b/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/src/process_hw_info.c index 38020c37..bf893363 100644 --- a/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/src/process_hw_info.c +++ b/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/src/process_hw_info.c @@ -71,6 +71,7 @@ enum { static s8 sMenuSelectNo; static BOOL sWirelessForceOff; +static BOOL sLogoDemoSkipForce; /*---------------------------------------------------------------------------* 内部関数宣言 @@ -79,7 +80,7 @@ static BOOL sWirelessForceOff; static BOOL WriteHWNormalInfoFile( void ); static BOOL WriteHWSecureInfoFile( u8 region ); //static BOOL DeleteHWInfoFile( void ); -static BOOL GetNandInitializerSetting(u8* region, u8* wireless); +static BOOL GetNandInitializerSetting(u8* region, u8* wireless, u8* logodemoskip); /*---------------------------------------------------------------------------* プロセス関数定義 @@ -210,11 +211,12 @@ void* HWInfoProcess2(void) if (gAutoFlag) { // SDカードのnandinitializer.iniより設定を取得 - if (!GetNandInitializerSetting((u8 *)&sMenuSelectNo, (u8 *)&sWirelessForceOff)) + if (!GetNandInitializerSetting((u8 *)&sMenuSelectNo, (u8 *)&sWirelessForceOff, (u8 *)&sLogoDemoSkipForce)) { // 設定の取得に失敗した場合はデフォルト設定(REGION_JAPAN/WIRELESS_ENABLE) sMenuSelectNo = 0; sWirelessForceOff = FALSE; + sLogoDemoSkipForce = FALSE; } } else @@ -232,7 +234,7 @@ void* HWInfoProcess2(void) case MENU_REGION_CHINA: case MENU_REGION_KOREA: - result = WriteHWInfoFile( (u8)sMenuSelectNo, sWirelessForceOff ); + result = WriteHWInfoFile( (u8)sMenuSelectNo, sWirelessForceOff, sLogoDemoSkipForce ); // 全リージョンの結果をクリア for (i=0;i