From e0827cccc80f0eb6ed3d32ea62c95b51270bcde2 Mon Sep 17 00:00:00 2001 From: "(no author)" <(no author)@b08762b0-b915-fc4b-9d8c-17b2551a87ff> Date: Wed, 10 Sep 2008 10:10:07 +0000 Subject: [PATCH] =?UTF-8?q?ARM9=E3=81=8B=E3=82=89=E3=81=AE=E3=83=A1?= =?UTF-8?q?=E3=83=83=E3=82=BB=E3=83=BC=E3=82=B8=E3=81=A7ARM7=E3=81=A7?= =?UTF-8?q?=E3=82=AB=E3=83=BC=E3=83=89=E3=83=87=E3=83=BC=E3=82=BF=E3=82=92?= =?UTF-8?q?=E8=AA=AD=E3=81=BF=E5=87=BA=E3=81=99=E3=81=A8=E3=81=8D=E3=81=AB?= =?UTF-8?q?=E3=80=81Game=E3=83=A2=E3=83=BC=E3=83=89=E3=81=AEID=E3=83=81?= =?UTF-8?q?=E3=82=A7=E3=83=83=E3=82=AF=E3=82=92=E8=A1=8C=E3=81=86=E3=82=B3?= =?UTF-8?q?=E3=83=BC=E3=83=89=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/branches/20080910_debug_dht_phase1@2473 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../hotsw/ARM7/include/hotswTypes.h | 1 + .../libraries_sysmenu/hotsw/ARM7/src/hotsw.c | 21 +++++++++++++++++++ .../sysmenu/sysmenu_lib/common/sysmenu_work.h | 1 + 3 files changed, 23 insertions(+) diff --git a/build/libraries_sysmenu/hotsw/ARM7/include/hotswTypes.h b/build/libraries_sysmenu/hotsw/ARM7/include/hotswTypes.h index af8fd04d..d4aa97a8 100644 --- a/build/libraries_sysmenu/hotsw/ARM7/include/hotswTypes.h +++ b/build/libraries_sysmenu/hotsw/ARM7/include/hotswTypes.h @@ -237,6 +237,7 @@ typedef enum HotSwState{ HOTSW_BUFFER_OVERRUN_ERROR, HOTSW_MODE_ERROR, HOTSW_ILLEGAL_CARD_ERROR, + HOTSW_GAMEMODE_ID_CHECK_ERROR, HOTSW_UNEXPECTED_ERROR } HotSwState; diff --git a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c index aa923878..505a8d68 100644 --- a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c +++ b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c @@ -144,6 +144,8 @@ static u16 s_bondingOp; static u32 s_BootSegBufSize, s_SecureSegBufSize, s_Secure2SegBufSize; +static u32 s_gameID; + static BootSegmentData *s_pBootSegBuffer; static u32 *s_pSecureSegBuffer; static u32 *s_pSecure2SegBuffer; @@ -537,6 +539,9 @@ static HotSwState LoadCardData(void) goto finalize; } + else{ + s_gameID = s_cbData.id_gam; + } } // バナーファイルの読み込み @@ -916,6 +921,11 @@ static void ReadCardData(u32 src, u32 dest, u32 size) // カードのロック CARD_LockRom(s_CardLockID); + ReadIDGame(&s_cbData); + if(s_cbData.id_gam != s_gameID){ + state = HOTSW_GAMEMODE_ID_CHECK_ERROR; + } + while(size > 0 && state == HOTSW_SUCCESS){ // --- Boot Segment if(src >= HOTSW_BOOTSEGMENT_AREA_OFS && src < HOTSW_KEYTABLE_AREA_OFS){ @@ -974,6 +984,13 @@ static void ReadCardData(u32 src, u32 dest, u32 size) dest += sendSize; } + ReadIDGame(&s_cbData); + if(s_cbData.id_gam != s_gameID){ + if(state == HOTSW_SUCCESS){ + state = HOTSW_GAMEMODE_ID_CHECK_ERROR; + } + } + // カードのアンロック CARD_UnlockRom(s_CardLockID); @@ -1002,6 +1019,10 @@ static void ReadCardData(u32 src, u32 dest, u32 size) retval = CARD_READ_MODE_ERROR; break; + case HOTSW_GAMEMODE_ID_CHECK_ERROR: + retval = CARD_READ_ID_CHECK_ERROR; + break; + default: retval = CARD_READ_UNEXPECTED_ERROR; break; diff --git a/include/sysmenu/sysmenu_lib/common/sysmenu_work.h b/include/sysmenu/sysmenu_lib/common/sysmenu_work.h index 89761920..06de63a9 100644 --- a/include/sysmenu/sysmenu_lib/common/sysmenu_work.h +++ b/include/sysmenu/sysmenu_lib/common/sysmenu_work.h @@ -43,6 +43,7 @@ typedef enum CardDataReadState { CARD_READ_BUFFER_OVERRUN_ERROR, CARD_READ_MODE_ERROR, CARD_READ_BUSY, + CARD_READ_ID_CHECK_ERROR, CARD_READ_UNEXPECTED_ERROR } CardDataReadState;