diff --git a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c index 5df571cf..a4b4d227 100644 --- a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c +++ b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c @@ -1957,6 +1957,26 @@ static BOOL ChangeGameMode(void) SetMCSCR(); state = s_funcTable[s_isRomEmu].ChangeMode_S(&s_cbData); + if(s_cbData.pBootSegBuf->rh.s.platform_code & PLATFORM_CODE_FLAG_TWL) + { + s_cbData.modeType = HOTSW_MODE2; + + McPowerOff(); + McPowerOn(); + + state = ReadBootSegNormal(&s_cbData); + + MakeBlowfishTableTWL(&s_cbData, 8, s_bondingOp); + GenVA_VB_VD(); + + state = ChangeModeNormal2(&s_cbData); + + // ---------------------- Secure2 Mode ---------------------- + state = s_funcTable[s_isRomEmu].SetPNG_S(&s_cbData); + SetMCSCR(); + state = s_funcTable[s_isRomEmu].ChangeMode_S(&s_cbData); + } + // ---------------------- Game Mode ---------------------- state = ReadIDGame(&s_cbData); diff --git a/build/libraries_sysmenu/hotsw/ARM7/src/hotswBlowfish.c b/build/libraries_sysmenu/hotsw/ARM7/src/hotswBlowfish.c index 317c57f7..6cfc67c6 100644 --- a/build/libraries_sysmenu/hotsw/ARM7/src/hotswBlowfish.c +++ b/build/libraries_sysmenu/hotsw/ARM7/src/hotswBlowfish.c @@ -17,6 +17,7 @@ // Function Prototype ------------------------------------------------------- +static BLOWFISH_CTX keytable2; /*---------------------------------------------------------------------------* Name: MakeBlowfishTableDSForNAND @@ -66,10 +67,21 @@ void MakeBlowfishTableTWL(CardBootData *cbd, s32 keyLen, u16 bondingOp) BLOWFISH_CTX *ctx = &cbd->keyTable2; void *tempCTX; + static BOOL isFirst = TRUE; // 製品機の場合 if(bondingOp == SCFG_OP_PRODUCT){ - MI_CpuCopyFast((void *)((OSFromFirm7Buf *)HW_FIRM_FROM_FIRM_BUF)->twl_blowfish, (void *)ctx, sizeof(BLOWFISH_CTX)); + if( isFirst ) + { + MI_CpuCopyFast((void *)((OSFromFirm7Buf *)HW_FIRM_FROM_FIRM_BUF)->twl_blowfish, (void *)ctx, sizeof(BLOWFISH_CTX)); + + MI_CpuCopy8((void *)ctx, (void *)&keytable2, sizeof(BLOWFISH_CTX)); + isFirst = FALSE; + } + else + { + MI_CpuCopyFast((void *)&keytable2, (void *)ctx, sizeof(BLOWFISH_CTX)); + } } // 開発機の場合 else{