diff --git a/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c b/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c index 170ca663..4fc95c73 100644 --- a/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c +++ b/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c @@ -27,6 +27,7 @@ #include #include "reboot.h" #include "internal_api.h" +#include "../../../hotsw/ARM7/include/hotswTypes.h" extern void SPI_Lock(u32 id); extern void SPI_Unlock(u32 id); @@ -136,12 +137,14 @@ BOOL BOOT_WaitStart( void ) return FALSE; } +// SDKのFinalize処理後に呼び出される static void BOOTi_RebootCallback( void** entryp, void* mem_list_v, REBOOTTarget* target ) { #pragma unused(entryp) u32* mem_list = mem_list_v; ROM_Header *th = (void*)REBOOTi_GetTwlRomHeaderAddr(); ROM_Header *dh = (void*)REBOOTi_GetRomHeaderAddr(); + ROM_Header *ch = (void*)HW_CARD_ROM_HEADER; BOOL isNtrMode; u32 spiLockId; @@ -153,15 +156,25 @@ static void BOOTi_RebootCallback( void** entryp, void* mem_list_v, REBOOTTarget* MI_CpuCopyFast( th, dh, HW_CARD_ROM_HEADER_SIZE ); // カードNTR-ROMヘッダをNANDアプリやDSダウンロードプレイのためコピー - MI_CpuCopyFast( (void*)SYSM_CARD_ROM_HEADER_BAK, (void*)HW_CARD_ROM_HEADER, HW_CARD_ROM_HEADER_SIZE ); + MI_CpuCopyFast( (void*)SYSM_CARD_ROM_HEADER_BAK, ch, HW_CARD_ROM_HEADER_SIZE ); if ( (((ROM_Header *)SYSM_CARD_ROM_HEADER_BAK)->s.platform_code & PLATFORM_CODE_FLAG_TWL) && (dh->s.platform_code & PLATFORM_CODE_FLAG_TWL) ){ // カードTWL-ROMヘッダをHW_TWL_CARD_ROM_HEADER_BUFにコピー MI_CpuCopyFast( (void*)SYSM_CARD_ROM_HEADER_BAK, (void*)HW_TWL_CARD_ROM_HEADER_BUF, HW_TWL_CARD_ROM_HEADER_BUF_SIZE ); } + // デバッガによるROMエミュレーション時はNTR-ROMヘッダバッファの + // ゲームコマンドパラメータをスクランブルOFF設定に書き換える + if ( SYSM_IsRunOnDebugger() ) + { + // NitroSDKバグ対策でブートメディア種別に関わらずROMヘッダを常時書き換え + dh->s.game_cmd_param &= ~SCRAMBLE_MASK; + } + // カードROMヘッダ(非キャッシュ領域)は常時設定 + ch->s.game_cmd_param = SYSMi_GetWork()->gameCommondParam; + // この処理は、DSダウンロードプレイ側で行う。 - // MI_CpuCopyFast ( (void *)HW_CARD_ROM_HEADER, (void *)MB_CARD_ROM_HEADER_ADDRESS, 0x160); + // MI_CpuCopyFast ( ch, (void *)MB_CARD_ROM_HEADER_ADDRESS, 0x160); // ブラックリストをチェックし、起動制限をかける BOOTi_CheckTitleBlackList( (void*)th ); diff --git a/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c b/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c index 4b4d0384..d1df29df 100644 --- a/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c +++ b/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c @@ -91,6 +91,7 @@ void BOOT_Ready( void ) } // ブート準備をして、ARM7からの通知を待つ。 +// SDKのFinalize処理後に呼び出される static void BOOTi_RebootCallback( void** entryp, void* mem_list_v, REBOOTTarget* target ) { #pragma unused(entryp) @@ -199,19 +200,6 @@ static void BOOTi_RebootCallback( void** entryp, void* mem_list_v, REBOOTTarget* *target = REBOOT_TARGET_DS_APP; } - // デバッガによるROMエミュレーション時はNTR-ROMヘッダバッファの - // ゲームコマンドパラメータをスクランブルOFF設定に書き換える - if ( SYSM_IsRunOnDebugger() ) - { - // NitroSDKバグ対策でブートメディア種別に関わらずROMヘッダを常時書き換え - dh->s.game_cmd_param &= ~SCRAMBLE_MASK; - } - { - // カードROMヘッダ(非キャッシュ領域)は常時設定 - ROM_Header *ch = (void*)HW_CARD_ROM_HEADER; - ch->s.game_cmd_param = SYSMi_GetWork()->gameCommondParam; - } - // 鍵は不要になるので、消しておく { OSFromFirmBuf* fromFirm = (void*)HW_FIRM_FROM_FIRM_BUF;