mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
ブート直前のROMヘッダ処理をARM7へまとめて可読性を向上。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2159 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
bf5fec7c5c
commit
0d02bf8b67
@ -27,6 +27,7 @@
|
|||||||
#include <firm/aes/ARM7/aes_init.h>
|
#include <firm/aes/ARM7/aes_init.h>
|
||||||
#include "reboot.h"
|
#include "reboot.h"
|
||||||
#include "internal_api.h"
|
#include "internal_api.h"
|
||||||
|
#include "../../../hotsw/ARM7/include/hotswTypes.h"
|
||||||
|
|
||||||
extern void SPI_Lock(u32 id);
|
extern void SPI_Lock(u32 id);
|
||||||
extern void SPI_Unlock(u32 id);
|
extern void SPI_Unlock(u32 id);
|
||||||
@ -136,12 +137,14 @@ BOOL BOOT_WaitStart( void )
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SDKのFinalize処理後に呼び出される
|
||||||
static void BOOTi_RebootCallback( void** entryp, void* mem_list_v, REBOOTTarget* target )
|
static void BOOTi_RebootCallback( void** entryp, void* mem_list_v, REBOOTTarget* target )
|
||||||
{
|
{
|
||||||
#pragma unused(entryp)
|
#pragma unused(entryp)
|
||||||
u32* mem_list = mem_list_v;
|
u32* mem_list = mem_list_v;
|
||||||
ROM_Header *th = (void*)REBOOTi_GetTwlRomHeaderAddr();
|
ROM_Header *th = (void*)REBOOTi_GetTwlRomHeaderAddr();
|
||||||
ROM_Header *dh = (void*)REBOOTi_GetRomHeaderAddr();
|
ROM_Header *dh = (void*)REBOOTi_GetRomHeaderAddr();
|
||||||
|
ROM_Header *ch = (void*)HW_CARD_ROM_HEADER;
|
||||||
BOOL isNtrMode;
|
BOOL isNtrMode;
|
||||||
u32 spiLockId;
|
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 );
|
MI_CpuCopyFast( th, dh, HW_CARD_ROM_HEADER_SIZE );
|
||||||
|
|
||||||
// カードNTR-ROMヘッダをNANDアプリやDSダウンロードプレイのためコピー
|
// カード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) ){
|
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にコピー
|
// カード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 );
|
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ダウンロードプレイ側で行う。
|
// この処理は、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 );
|
BOOTi_CheckTitleBlackList( (void*)th );
|
||||||
|
|||||||
@ -91,6 +91,7 @@ void BOOT_Ready( void )
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ブート準備をして、ARM7からの通知を待つ。
|
// ブート準備をして、ARM7からの通知を待つ。
|
||||||
|
// SDKのFinalize処理後に呼び出される
|
||||||
static void BOOTi_RebootCallback( void** entryp, void* mem_list_v, REBOOTTarget* target )
|
static void BOOTi_RebootCallback( void** entryp, void* mem_list_v, REBOOTTarget* target )
|
||||||
{
|
{
|
||||||
#pragma unused(entryp)
|
#pragma unused(entryp)
|
||||||
@ -199,19 +200,6 @@ static void BOOTi_RebootCallback( void** entryp, void* mem_list_v, REBOOTTarget*
|
|||||||
*target = REBOOT_TARGET_DS_APP;
|
*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;
|
OSFromFirmBuf* fromFirm = (void*)HW_FIRM_FROM_FIRM_BUF;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user