From 35152214c600586524e67ac1cb50fb0736339a60 Mon Sep 17 00:00:00 2001 From: "(no author)" <(no author)@b08762b0-b915-fc4b-9d8c-17b2551a87ff> Date: Wed, 19 Dec 2007 01:36:44 +0000 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0:Akabane=20Jumpei=20DS?= =?UTF-8?q?=E3=82=AB=E3=83=BC=E3=83=89Type2=E3=81=AEGame=E3=83=A2=E3=83=BC?= =?UTF-8?q?=E3=83=89=E3=81=AE=E3=83=9A=E3=83=BC=E3=82=B8=E3=83=AA=E3=83=BC?= =?UTF-8?q?=E3=83=89=E9=96=A2=E6=95=B0=E3=82=92=E4=BF=AE=E6=AD=A3=E3=80=82?= =?UTF-8?q?=E3=83=90=E3=83=8A=E3=83=BC=E3=81=AF=E6=AD=A3=E5=B8=B8=E3=81=AB?= =?UTF-8?q?=E8=A1=A8=E7=A4=BA=E3=81=95=E3=82=8C=E3=82=8B=E3=82=88=E3=81=86?= =?UTF-8?q?=E3=81=AB=E3=81=AA=E3=81=A3=E3=81=9F=E3=81=8C=E3=80=81=E3=82=B2?= =?UTF-8?q?=E3=83=BC=E3=83=A0=E8=B5=B7=E5=8B=95=E3=81=8C=E5=87=BA=E6=9D=A5?= =?UTF-8?q?=E3=81=A6=E3=81=84=E3=81=AA=E3=81=84=E3=80=82?= 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/trunk@374 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../hotsw/ARM7/include/dsCardType2.h | 5 +- .../hotsw/ARM7/src/dsCardType2.c | 103 ++++++++++++++---- .../libraries_sysmenu/hotsw/ARM7/src/hotsw.c | 2 +- 3 files changed, 83 insertions(+), 27 deletions(-) diff --git a/build/libraries_sysmenu/hotsw/ARM7/include/dsCardType2.h b/build/libraries_sysmenu/hotsw/ARM7/include/dsCardType2.h index 9d3cbc07..c953dcbd 100644 --- a/build/libraries_sysmenu/hotsw/ARM7/include/dsCardType2.h +++ b/build/libraries_sysmenu/hotsw/ARM7/include/dsCardType2.h @@ -47,8 +47,9 @@ void ChangeModeSecure_DSType2(CardBootData *cbd); // DSカードType2のゲームモードのID読み込み (Type1と同じ処理) #define ReadIDGame_DSType2 ReadIDGame_DSType1 -// DSカードType2のゲームモードの指定ページ読み込み (Type1と同じ処理) -#define ReadPageGame_DSType2 ReadPageGame_DSType1 +// DSカードType2のゲームモードの指定ページ読み込み +void ReadPageGame_DSType2(u32 start_addr, void* buf, u32 size); +//#define ReadPageGame_DSType2 ReadPageGame_DSType1 #ifdef __cplusplus } /* extern "C" */ diff --git a/build/libraries_sysmenu/hotsw/ARM7/src/dsCardType2.c b/build/libraries_sysmenu/hotsw/ARM7/src/dsCardType2.c index 8c8033b9..4cba1c1d 100644 --- a/build/libraries_sysmenu/hotsw/ARM7/src/dsCardType2.c +++ b/build/libraries_sysmenu/hotsw/ARM7/src/dsCardType2.c @@ -36,7 +36,7 @@ void ReadRomEmulationData_DSType2(CardBootData *cbd) { u32 count=0; u32 temp; - u32 *buf = cbd->romEmuBuf; + u32 *dst = cbd->romEmuBuf; // MCCMD レジスタ設定 reg_HOTSW_MCCMD0 = 0x3e000000; @@ -50,7 +50,7 @@ void ReadRomEmulationData_DSType2(CardBootData *cbd) while(reg_HOTSW_MCCNT1 & START_FLG_MASK){ while(!(reg_HOTSW_MCCNT1 & READY_FLG_MASK)){} if(count >= ROM_EMULATION_START_OFS && count < ROM_EMULATION_END_OFS){ - *buf++ = reg_HOTSW_MCD1; + *dst++ = reg_HOTSW_MCD1; } else{ temp = reg_HOTSW_MCD1; @@ -75,32 +75,32 @@ void ReadBootSegNormal_DSType2(CardBootData *cbd) { #pragma unused( cbd ) - u32 i = 0, j = 0; - GCDCmd64 tempCnd, cnd; - u64 page = 0; + u32 i = 0; + u32 *dst = cbd->pBootSegBuf->word; + u64 page = 0; + GCDCmd64 cndLE, cndBE; for(i=0; ipBootSegBuf->word + j++) = reg_HOTSW_MCD1; + *dst++ = reg_HOTSW_MCD1; } page++; @@ -229,7 +229,8 @@ void ReadIDSecure_DSType2(CardBootData *cbd) *---------------------------------------------------------------------------*/ void ReadSegSecure_DSType2(CardBootData *cbd) { - u32 i,j=0,k; + u32 i,j; + u32 *dst = cbd->pSecureSegBuf ; u64 segNum = 4; u64 vae = cbd->vae; GCDCmd64 cndLE, cndBE; @@ -273,7 +274,7 @@ void ReadSegSecure_DSType2(CardBootData *cbd) start = OS_GetTick(); while(OS_TicksToMilliSeconds(OS_GetTick()-start) < COMMAND_DECRYPTION_WAIT){} - for(k=0; kpSecureSegBuf + j++) = reg_HOTSW_MCD1; + *dst++ = reg_HOTSW_MCD1; } } @@ -418,4 +419,58 @@ void ChangeModeSecure_DSType2(CardBootData *cbd) Description: ゲームモードでIDを読み込む *---------------------------------------------------------------------------*/ -// Type1と同じ \ No newline at end of file +// Type1と同じ + + +/*---------------------------------------------------------------------------* + Name: ReadPageGame_DSType1 + + Description: ゲームモードで、指定されたページを指定バッファに指定サイズ分を読み込む + *---------------------------------------------------------------------------*/ +void ReadPageGame_DSType2(u32 start_addr, void* buf, u32 size) +{ + u32 loop; + u32 *b = (u32 *)buf; + u64 i, page; + GCDCmd64 cndLE, cndBE; + + page = (u32)(start_addr / PAGE_SIZE); + loop = (u32)(size / PAGE_SIZE); + loop = (size % PAGE_SIZE) ? loop + 1 : loop; + + OS_TPrintf("Src Addr : 0x%08x Dst Addr : 0x%08x\n", start_addr, buf); + OS_TPrintf("Read Game Segment Page Count : %d size : %x\n", loop, size); + + for(i=0; irh.s.banner_offset ) { OS_TPrintf(" - Banner Loading...\n"); - s_funcTable[s_cbData.cardType].ReadPage_G(s_cbData.pBootSegBuf->rh.s.banner_offset, + s_funcTable[s_cbData.cardType].ReadPage_G(s_cbData.pBootSegBuf->rh.s.banner_offset, (u32 *)SYSM_CARD_BANNER_BUF, sizeof(TWLBannerFile) ); SYSMi_GetWork()->isValidCardBanner = TRUE;