diff --git a/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c b/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c index d327d719..562434ad 100644 --- a/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c +++ b/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c @@ -53,7 +53,7 @@ typedef struct TitleBlackList { static void BOOTi_ClearREG_RAM( void ); static void BOOTi_CutAwayRegionList( u32 *regionlist, u32 start, u32 end ); -static void BOOTi_CheckTitleBlackList( void ); +static void BOOTi_CheckTitleBlackList( ROM_Header_Short *pROMH ); // global variables-------------------------------------------------- @@ -100,7 +100,7 @@ BOOL BOOT_WaitStart( void ) { if( (reg_PXI_MAINPINTF & 0x000f ) == 0x000f ) { // 最適化されるとポインタを初期化しただけでは何もコードは生成されません - ROM_Header *th = (ROM_Header *)SYSM_CARD_ROM_HEADER_BUF; // TWL拡張ROMヘッダ(DSアプリには無い) + ROM_Header *th = (ROM_Header *)SYSM_APP_ROM_HEADER_BUF; // TWL拡張ROMヘッダ(DSアプリには無い) ROM_Header *dh = (ROM_Header *)(SYSMi_GetWork()->romHeaderNTR); // DS互換ROMヘッダ BOOL isNtrMode; @@ -109,13 +109,13 @@ BOOL BOOT_WaitStart( void ) (void)OS_SetIrqMaskEx(0); // NTR-ROMヘッダへのパッチ処理のためコピー - MI_CpuCopyFast( (void *)SYSM_CARD_ROM_HEADER_BUF, dh, HW_CARD_ROM_HEADER_SIZE ); + MI_CpuCopyFast( th, dh, HW_CARD_ROM_HEADER_SIZE ); // ブラックリストをチェックし、起動制限をかける - BOOTi_CheckTitleBlackList(); + BOOTi_CheckTitleBlackList( (void*)th ); // マウント情報を一時的にSYSM_TWL_MOUNT_INFO_TMP_BUFFERに登録 - // ここまでにSYSM_CARD_ROM_HEADER_BUFのキャッシュがライトバックされている必要あり + // ここまでにSYSM_APP_ROM_HEADER_BUFのキャッシュがライトバックされている必要あり SYSMi_SetBootAppMountInfo( &SYSMi_GetWork2()->bootTitleProperty ); // FSによってshared領域にコピーされたランチャー自身のマウントパスのクリア @@ -397,10 +397,9 @@ static void BOOTi_CutAwayRegionList( u32 *regionlist, u32 start, u32 end ) } // 起動制限をかけるブラックリストTITLEのチェック -static void BOOTi_CheckTitleBlackList( void ) +static void BOOTi_CheckTitleBlackList( ROM_Header_Short *pROMH ) { const TitleBlackList *pBlackList = &s_blackList[ 0 ]; - ROM_Header_Short *pROMH = (ROM_Header_Short *)SYSM_CARD_ROM_HEADER_BUF; while( pBlackList->rom_version >= 0 ) { if( ( pBlackList->titleID == pROMH->titleID ) && diff --git a/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c b/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c index b0ada1da..510b678d 100644 --- a/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c +++ b/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c @@ -56,7 +56,7 @@ static void ie_subphandler( void ) void BOOT_Ready( void ) { // 最適化されるとポインタを初期化しただけでは何もコードは生成されません - ROM_Header *th = (ROM_Header *)SYSM_CARD_ROM_HEADER_BUF; // TWL拡張ROMヘッダ(DSアプリには無い) + ROM_Header *th = (ROM_Header *)SYSM_APP_ROM_HEADER_BUF; // TWL拡張ROMヘッダ(DSアプリには無い) ROM_Header *dh = (ROM_Header *)(SYSMi_GetWork()->romHeaderNTR); // DS互換ROMヘッダ BOOL isNtrMode; int i; diff --git a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c index 5c5ed835..e48d0a91 100644 --- a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c +++ b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c @@ -297,7 +297,7 @@ void HOTSW_Init(u32 threadPrio) OS_WakeupThreadDirect(&HotSwThreadData.monitorThread); // バッファの設定 - HOTSW_SetBootSegmentBuffer((void *)SYSM_CARD_ROM_HEADER_BAK, SYSM_CARD_ROM_HEADER_SIZE ); + HOTSW_SetBootSegmentBuffer((void *)SYSM_CARD_ROM_HEADER_BAK, SYSM_APP_ROM_HEADER_SIZE ); HOTSW_SetSecureSegmentBuffer(HOTSW_MODE1, (void *)SYSM_CARD_NTR_SECURE_BUF, SECURE_AREA_SIZE ); HOTSW_SetSecureSegmentBuffer(HOTSW_MODE2, (void *)SYSM_CARD_TWL_SECURE_BUF, SECURE_AREA_SIZE ); @@ -458,7 +458,7 @@ static HotSwState LoadCardData(void) if ( !s_cbData.pBootSegBuf->rh.s.enable_nitro_whitelist_signature ) #endif // NTRカードの場合はRomHeaderバッファの1ページ目以降をクリアしておく。 - MI_CpuClearFast((void *)(SYSM_CARD_ROM_HEADER_BAK + PAGE_SIZE), SYSM_CARD_ROM_HEADER_SIZE - PAGE_SIZE); + MI_CpuClearFast((void *)(SYSM_CARD_ROM_HEADER_BAK + PAGE_SIZE), SYSM_APP_ROM_HEADER_SIZE - PAGE_SIZE); } // SecureコマンドのPNG_ONコマンドetc用のレイテンシを求める(Latency1とLatency2を足す) @@ -1945,7 +1945,7 @@ static void FinalizeHotSw(HotSwApliType type) } // NANDアプリヘッダはコピー済み - if(((ROM_Header*)SYSM_CARD_ROM_HEADER_BUF)->s.game_card_on){ + if(((ROM_Header*)SYSM_APP_ROM_HEADER_BUF)->s.game_card_on){ McPowerOn(); s_cbData.modeType = HOTSW_MODE2; diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c index 84aec2c4..c43f5e06 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c @@ -220,8 +220,8 @@ BOOL SYSMi_CopyCardRomHeader( void ) if( SYSM_IsExistCard() ) { // ROMヘッダのリード - DC_InvalidateRange( (void *)SYSM_CARD_ROM_HEADER_BAK, SYSM_CARD_ROM_HEADER_SIZE ); // キャッシュケア - MI_CpuCopyFast( (void *)SYSM_CARD_ROM_HEADER_BAK, (void *)SYSM_CARD_ROM_HEADER_BUF, SYSM_CARD_ROM_HEADER_SIZE ); // ROMヘッダコピー + DC_InvalidateRange( (void *)SYSM_CARD_ROM_HEADER_BAK, SYSM_APP_ROM_HEADER_SIZE ); // キャッシュケア + MI_CpuCopyFast( (void *)SYSM_CARD_ROM_HEADER_BAK, (void *)SYSM_APP_ROM_HEADER_BUF, SYSM_APP_ROM_HEADER_SIZE ); // ROMヘッダコピー SYSMi_GetWork()->cardHeaderCrc16 = SYSMi_GetWork()->cardHeaderCrc16_bak; // ROMヘッダCRCコピー retval = TRUE; @@ -577,7 +577,7 @@ OS_TPrintf("RebootSystem failed: cant read file(%p, %d, %d, %d)\n", &s_authcode, // 各領域を読み込む source [region_header ] = 0x00000000; length [region_header ] = HW_TWL_ROM_HEADER_BUF_SIZE; - destaddr[region_header ] = SYSM_CARD_ROM_HEADER_BUF; + destaddr[region_header ] = SYSM_APP_ROM_HEADER_BUF; source [region_arm9_ntr] = head->s.main_rom_offset; length [region_arm9_ntr] = head->s.main_size; @@ -774,7 +774,7 @@ void SYSM_StartLoadTitle( TitleProperty *pBootTitle ) static void SYSMi_AppendRelocateInfoCardSecureArea( void ) { u32 size; - u32 *dest ; + u32 *dest; // NTRセキュア領域の再配置は後でbootAPIおよびrebootライブラリにて行う if( SYSM_GetCardRomHeader()->platform_code & PLATFORM_CODE_FLAG_TWL ) { // TWLモード @@ -826,7 +826,7 @@ static AuthResult SYSMi_AuthenticateTWLHeader( TitleProperty *pBootTitle ) OSTick start,prev; start = OS_GetTick(); - head = ( ROM_Header *)SYSM_CARD_ROM_HEADER_BUF; + head = ( ROM_Header *)SYSM_APP_ROM_HEADER_BUF; // NANDアプリの場合、NAM_CheckTitleLaunchRights()を呼んでチェック if( pBootTitle->flags.bootType == LAUNCHER_BOOTTYPE_NAND ) @@ -1017,7 +1017,7 @@ static AuthResult SYSMi_AuthenticateNTRDownloadAppHeader( TitleProperty *pBootTi OSTick start; start = OS_GetTick(); - head = ( ROM_Header *)SYSM_CARD_ROM_HEADER_BUF; + head = ( ROM_Header *)SYSM_APP_ROM_HEADER_BUF; // 署名処理 { @@ -1093,7 +1093,7 @@ static AuthResult SYSMi_AuthenticateNTRCardAppHeader( TitleProperty *pBootTitle) // ヘッダ認証 static AuthResult SYSMi_AuthenticateHeader( TitleProperty *pBootTitle) { - ROM_Header_Short *hs = ( ROM_Header_Short *)SYSM_CARD_ROM_HEADER_BUF; + ROM_Header_Short *hs = ( ROM_Header_Short *)SYSM_APP_ROM_HEADER_BUF; // [TODO:]認証結果はどこかワークに保存しておく // [TODO:]ヘッダに署名ビットがあるはずなので、それを確認して署名チェックを行う if( hs->platform_code & PLATFORM_CODE_FLAG_TWL ) @@ -1181,8 +1181,8 @@ static void SYSMi_AuthenticateTitleThreadFunc( TitleProperty *pBootTitle ) // BOOTTYPE_MEMORYでNTRモードのFSありでブートすると、旧NitroSDKでビルドされたアプリの場合、 // ROMアーカイブにカードが割り当てられて、FSで関係ないカードにアクセスにいってしまうので、それを防止する。 if( ( pBootTitle->flags.bootType == LAUNCHER_BOOTTYPE_MEMORY ) && - ( ( (( ROM_Header_Short *)SYSM_CARD_ROM_HEADER_BUF)->platform_code ) == 0 ) && - ( ( (( ROM_Header_Short *)SYSM_CARD_ROM_HEADER_BUF)->fat_size ) > 0 ) + ( ( (( ROM_Header_Short *)SYSM_APP_ROM_HEADER_BUF)->platform_code ) == 0 ) && + ( ( (( ROM_Header_Short *)SYSM_APP_ROM_HEADER_BUF)->fat_size ) > 0 ) ) { s_authResult = AUTH_RESULT_TITLE_BOOTTYPE_ERROR; return; @@ -1233,7 +1233,7 @@ AuthResult SYSM_TryToBootTitle( TitleProperty *pBootTitle ) u8 *pBuffer = SYSM_Alloc( LCFG_WRITE_TEMP ); if( pBuffer != NULL ) { LCFG_TSD_SetLastTimeBootSoftTitleID ( pBootTitle->titleID ); - LCFG_TSD_SetLastTimeBootSoftPlatform( (u8)SYSM_GetCardRomHeader()->platform_code ); + LCFG_TSD_SetLastTimeBootSoftPlatform( (u8)SYSM_GetAppRomHeader()->platform_code ); (void)LCFG_WriteTWLSettings( (u8 (*)[ LCFG_WRITE_TEMP ] )pBuffer ); SYSM_Free( pBuffer ); } @@ -1261,7 +1261,7 @@ static void SYSMi_makeTitleIdList( void ) // [TODO:]現在ブート不可タイトルについても入れるようにしているが // これで良いのか? OSTitleIDList *list = ( OSTitleIDList * )HW_OS_TITLE_ID_LIST; - ROM_Header_Short *hs = ( ROM_Header_Short *)SYSM_CARD_ROM_HEADER_BUF; + ROM_Header_Short *hs = ( ROM_Header_Short *)SYSM_APP_ROM_HEADER_BUF; int l; u8 count = 0; diff --git a/build/libraries_sysmenu/sysmenu/common/src/mountInfo.c b/build/libraries_sysmenu/sysmenu/common/src/mountInfo.c index d9b06807..36f402ed 100644 --- a/build/libraries_sysmenu/sysmenu/common/src/mountInfo.c +++ b/build/libraries_sysmenu/sysmenu/common/src/mountInfo.c @@ -105,7 +105,7 @@ void SYSMi_SetLauncherMountInfo( void ) void SYSMi_SetBootAppMountInfo( TitleProperty *pBootTitle ) { OSMountInfo mountListBuffer[ DEFAULT_MOUNT_LIST_NUM ] ATTRIBUTE_ALIGN(4); - ROM_Header_Short *pROMH = ( ROM_Header_Short *)SYSM_CARD_ROM_HEADER_BUF; + ROM_Header_Short *pROMH = ( ROM_Header_Short *)SYSM_APP_ROM_HEADER_BUF; // アプリがTWL対応でない場合は、何もセットせずにリターン if( ( pROMH->platform_code ) == 0 ) { return; @@ -225,8 +225,8 @@ static void SYSMi_ModifySaveDataMount( LauncherBootType bootType, NAMTitleId tit ) { char saveFilePath[ 2 ][ FS_ENTRY_LONGNAME_MAX ]; u32 saveDataSize[ 2 ]; - saveDataSize[ 0 ] = (( ROM_Header_Short *)SYSM_CARD_ROM_HEADER_BUF)->private_save_data_size; - saveDataSize[ 1 ] = (( ROM_Header_Short *)SYSM_CARD_ROM_HEADER_BUF)->public_save_data_size; + saveDataSize[ 0 ] = (( ROM_Header_Short *)SYSM_APP_ROM_HEADER_BUF)->private_save_data_size; + saveDataSize[ 1 ] = (( ROM_Header_Short *)SYSM_APP_ROM_HEADER_BUF)->public_save_data_size; // セーブデータのファイルパスを取得 NAM_GetTitleSaveFilePath( saveFilePath[ 1 ], saveFilePath[ 0 ], titleID ); diff --git a/docs/繝。繝「繝ェ繝槭ャ繝誉繝ゥ繝ウ繝√Ε繝シ.vsd b/docs/繝。繝「繝ェ繝槭ャ繝誉繝ゥ繝ウ繝√Ε繝シ.vsd index 0a972c8c..79482883 100644 Binary files a/docs/繝。繝「繝ェ繝槭ャ繝誉繝ゥ繝ウ繝√Ε繝シ.vsd and b/docs/繝。繝「繝ェ繝槭ャ繝誉繝ゥ繝ウ繝√Ε繝シ.vsd differ diff --git a/include/sysmenu/hw/common/mmap.h b/include/sysmenu/hw/common/mmap.h index 1d848ae3..e7ae5186 100644 --- a/include/sysmenu/hw/common/mmap.h +++ b/include/sysmenu/hw/common/mmap.h @@ -52,19 +52,19 @@ extern u32 SDK_AUTOLOAD_WRAM_START[]; #define SYSM_DMA_BUFOVER_BARRIER_SIZE 0x0200 -// カードアプリ格納バッファ -#define SYSM_CARD_ROM_HEADER_SIZE 0x1000 +// カードアプリ格納バッファ(ROMヘッダバッファはNANDアプリでも使用) +#define SYSM_APP_ROM_HEADER_SIZE 0x1000 //#ifdef DEBUG_USED_CARD_SLOT_B_ #define SYSM_CARD_BANNER_BUF ( SYSM_OWN_ARM9_MMEM_ADDR_END ) #define SYSM_CARD_BANNER_BUF_END ( SYSM_CARD_BANNER_BUF + 0x3000 ) -#define SYSM_CARD_ROM_HEADER_BUF ( SYSM_CARD_BANNER_BUF_END ) +#define SYSM_APP_ROM_HEADER_BUF ( SYSM_CARD_BANNER_BUF_END ) #if 0 -#define SYSM_CARD_ROM_HEADER_BUF ( SYSM_OWN_ARM9_MMEM_ADDR_END ) +#define SYSM_APP_ROM_HEADER_BUF ( SYSM_OWN_ARM9_MMEM_ADDR_END ) #endif -#define SYSM_CARD_ROM_HEADER_BUF_END ( SYSM_CARD_ROM_HEADER_BUF + SYSM_CARD_ROM_HEADER_SIZE ) -#define SYSM_CARD_ROM_HEADER_BAK ( SYSM_CARD_ROM_HEADER_BUF_END ) -#define SYSM_CARD_ROM_HEADER_BAK_END ( SYSM_CARD_ROM_HEADER_BAK + SYSM_CARD_ROM_HEADER_SIZE ) +#define SYSM_APP_ROM_HEADER_BUF_END ( SYSM_APP_ROM_HEADER_BUF + SYSM_APP_ROM_HEADER_SIZE ) +#define SYSM_CARD_ROM_HEADER_BAK ( SYSM_APP_ROM_HEADER_BUF_END ) +#define SYSM_CARD_ROM_HEADER_BAK_END ( SYSM_CARD_ROM_HEADER_BAK + SYSM_APP_ROM_HEADER_SIZE ) #define SYSM_CARD_NTR_SECURE_BUF ( SYSM_CARD_ROM_HEADER_BAK_END ) #define SYSM_CARD_NTR_SECURE_BUF_END ( SYSM_CARD_NTR_SECURE_BUF + SECURE_AREA_SIZE ) #define SYSM_CARD_TWL_SECURE_BUF ( SYSM_CARD_NTR_SECURE_BUF_END ) diff --git a/include/sysmenu/sysmenu_lib/common/sysmenu_work.h b/include/sysmenu/sysmenu_lib/common/sysmenu_work.h index 6dc7c7b3..5cf47dfa 100644 --- a/include/sysmenu/sysmenu_lib/common/sysmenu_work.h +++ b/include/sysmenu/sysmenu_lib/common/sysmenu_work.h @@ -200,8 +200,9 @@ typedef struct SDKBootCheckInfo{ // NANDファームがロードしてくれているマイコンフリーレジスタ値の取得 #define SYSMi_GetMCUFreeRegisterValue() ( *(vu8 *)HW_RESET_PARAMETER_BUF ) -// カードROMヘッダワークの取得 -#define SYSM_GetCardRomHeader() ( (ROM_Header_Short *)SYSM_CARD_ROM_HEADER_BUF ) +// ROMヘッダワークの取得 +#define SYSM_GetAppRomHeader() ( (ROM_Header_Short *)SYSM_APP_ROM_HEADER_BUF ) +#define SYSM_GetCardRomHeader() SYSM_GetAppRomHeader() #ifdef __cplusplus }