diff --git a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c index 2532907e..4b3e60a7 100644 --- a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c +++ b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c @@ -59,6 +59,11 @@ #define HOTSW_EXMEMCNT_SELB_SHIFT 10 #endif +// 本体セキュア情報の手前 6byte 分を間借りしてCRC情報を入れておく。 +#define HOTSW_ROM_HEADER_CRC_BUFFER (HW_HW_SECURE_INFO - 0x6) +#define HOTSW_SECURE1_CRC_BUFFER (HW_HW_SECURE_INFO - 0x4) +#define HOTSW_SECURE2_CRC_BUFFER (HW_HW_SECURE_INFO - 0x2) + // enum --------------------------------------------------------------------- typedef enum HotSwCallBackType{ HOTSW_CHANGE_GAMEMODE = 0, @@ -1942,7 +1947,7 @@ static BOOL ChangeCardMode(BOOL forceNtrMode) state = ReadBootSegNormal(&s_cbData); // RomHeaderのCRC16の計算 - SYSMi_GetWork()->flags.hotsw.romHeaderCRC = SVC_GetCRC16( 65535, s_cbData.pBootSegBuf, BOOT_SEGMENT_SIZE ); + *(u16 *)HOTSW_ROM_HEADER_CRC_BUFFER = SVC_GetCRC16( 65535, s_cbData.pBootSegBuf, BOOT_SEGMENT_SIZE ); if(s_isRomEmu){ s_cbData.cardType = ROM_EMULATION; @@ -1965,8 +1970,8 @@ static BOOL ChangeCardMode(BOOL forceNtrMode) state = ReadSecureModeCardData(); // Secure SegmentのCRC16の計算と格納 - SYSMi_GetWork()->flags.hotsw.secure1CRC = SVC_GetCRC16( 65535, s_cbData.pSecureSegBuf, SECURE_SEGMENT_SIZE ); - + *(u16 *)HOTSW_SECURE1_CRC_BUFFER = SVC_GetCRC16( 65535, s_cbData.pSecureSegBuf, SECURE_SEGMENT_SIZE ); + // カード種別の判定 // TWLカード → Game2モード // NTRカード → Gameモード @@ -1993,7 +1998,7 @@ static BOOL ChangeCardMode(BOOL forceNtrMode) state = ReadSecureModeCardData(); // Secure SegmentのCRC16の計算と格納 - SYSMi_GetWork()->flags.hotsw.secure2CRC = SVC_GetCRC16( 65535, s_cbData.pSecure2SegBuf, SECURE_SEGMENT_SIZE ); + *(u16 *)HOTSW_SECURE2_CRC_BUFFER = SVC_GetCRC16( 65535, s_cbData.pSecure2SegBuf, SECURE_SEGMENT_SIZE ); } else{ OS_PutString("---------- Game Mode...\n"); diff --git a/include/sysmenu/sysmenu_lib/common/sysmenu_work.h b/include/sysmenu/sysmenu_lib/common/sysmenu_work.h index 551806a7..9c89c56c 100644 --- a/include/sysmenu/sysmenu_lib/common/sysmenu_work.h +++ b/include/sysmenu/sysmenu_lib/common/sysmenu_work.h @@ -127,12 +127,9 @@ typedef struct SYSM_work { vu8 isCardStateChanged; // カード状態更新フラグ vu8 isBusyHotSW; // 活線挿抜処理中? vu8 isKeyTableLoadReady; // Key Tableのロード準備完了? - vu16 romHeaderCRC; - vu16 secure1CRC; - vu16 secure2CRC; }hotsw; }flags; // 9B - + OSLockWord lockCardRsc ATTRIBUTE_ALIGN(8); // カードリソース排他制御用 OSLockWord lockHotSW; // カードリソース排他制御用 u32 appCardID; // カードID