diff --git a/build/buildtools/commondefs.firm b/build/buildtools/commondefs.firm index b6ec6aae..894e01db 100644 --- a/build/buildtools/commondefs.firm +++ b/build/buildtools/commondefs.firm @@ -28,6 +28,7 @@ TARGET_BIN ?= $(TARGET_FIRM_BIN) # override TARGET_PLATFORM := TWL override TWL_ARCHGEN := LIMITED +override TWL_CODEGEN := ARM override TWL_MEMSIZE := 16M #---------------------------------------------------------------------------- diff --git a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c index 7f9645ae..fd8c885d 100644 --- a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c +++ b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c @@ -433,16 +433,6 @@ static HotSwState LoadCardData(void) } if(s_cbData.pBootSegBuf->rh.s.platform_code & PLATFORM_CODE_FLAG_TWL){ - // デバッガでリージョン違いのアプリを読んだ場合、正常に動作しなくなるのを回避するため - u64 card_title_id = s_cbData.pBootSegBuf->rh.s.titleID; - u64 my_title_id = ((ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF)->titleID; - if(!s_debuggerFlg || card_title_id != my_title_id){ - // リージョンチェック - if( !UTL_CheckAppRegion( s_cbData.pBootSegBuf->rh.s.card_region_bitmap ) ) { - retval = (retval == HOTSW_SUCCESS) ? HOWSW_REGION_CHECK_ERROR : retval; - } - } - s_cbData.twlFlg = TRUE; } diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c index 0bbac236..4f160b0e 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c @@ -288,6 +288,7 @@ TitleProperty *SYSM_GetCardTitleList( BOOL *changed ) if( SYSMi_GetWork()->flags.hotsw.isCardStateChanged ) { u16 id = (u16)OS_GetLockID(); + const ROM_Header_Short *pROMH_bak = (ROM_Header_Short *)SYSM_CARD_ROM_HEADER_BAK; MI_CpuClear32( pTitleList_Card, sizeof(TitleProperty) ); @@ -295,23 +296,27 @@ TitleProperty *SYSM_GetCardTitleList( BOOL *changed ) // ROMヘッダバッファのコピー if( SYSM_IsExistCard() ) { - - // ROMヘッダのリード - (void)SYSMi_CopyCardRomHeader(); - // バナーデータのリード - (void)SYSMi_CopyCardBanner(); - - pTitleList_Card->pBanner = &s_card_bannerBuf; - AMN_stepBannerAnime(0, TRUE); // バナーカウンタセットしなおし - pTitleList_Card->flags.isValid = TRUE; - pTitleList_Card->flags.isAppLoadCompleted = FALSE; - pTitleList_Card->flags.isAppRelocate = TRUE; - MI_CpuCopy8( SYSM_GetCardRomHeader(), AMN_getRomHeaderList(), sizeof(ROM_Header_Short) ); + if( ( pROMH_bak->platform_code & PLATFORM_CODE_FLAG_TWL ) && !UTL_CheckAppRegion( pROMH_bak->card_region_bitmap ) ) { + // TWLアプリでカードリージョンが本体と一致しないものは、カードを認識しない。 + OS_TPrintf( "Region Check NG : %llx\n", pROMH_bak->titleID ); + MI_CpuClearFast( (void *)SYSM_APP_ROM_HEADER_BUF, SYSM_APP_ROM_HEADER_SIZE ); // ROMヘッダのクリア + MI_CpuClearFast( &s_card_bannerBuf, sizeof(TWLBannerFile) ); // バナーデータのクリア + }else { + // ROMヘッダのリード + (void)SYSMi_CopyCardRomHeader(); + // バナーデータのリード + (void)SYSMi_CopyCardBanner(); + + pTitleList_Card->pBanner = &s_card_bannerBuf; + AMN_stepBannerAnime(0, TRUE); // バナーカウンタセットしなおし + pTitleList_Card->flags.isValid = TRUE; + pTitleList_Card->flags.isAppLoadCompleted = FALSE; + pTitleList_Card->flags.isAppRelocate = TRUE; + MI_CpuCopy8( SYSM_GetCardRomHeader(), AMN_getRomHeaderList(), sizeof(ROM_Header_Short) ); + } }else { - // ROMヘッダのクリア - MI_CpuClearFast( (void *)SYSM_APP_ROM_HEADER_BUF, SYSM_APP_ROM_HEADER_SIZE ); - // バナーデータのクリア - MI_CpuClearFast( &s_card_bannerBuf, sizeof(TWLBannerFile) ); + MI_CpuClearFast( (void *)SYSM_APP_ROM_HEADER_BUF, SYSM_APP_ROM_HEADER_SIZE ); // ROMヘッダのクリア + MI_CpuClearFast( &s_card_bannerBuf, sizeof(TWLBannerFile) ); // バナーデータのクリア } SYSMi_GetWork()->flags.hotsw.isCardStateChanged = FALSE; // カード情報更新フラグを落とす