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;