吸出しバイナリへROMヘッダを追加。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2917 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
N1277 2010-02-03 11:17:40 +00:00
parent a764b2c2f5
commit 6d24607229
3 changed files with 22 additions and 3 deletions

View File

@ -23,6 +23,7 @@ extern "C" {
#include <nitro.h>
#define CARD_SECURE_AREA_OFFSET 0x4000 // 16KB
#define CARD_GAME_AREA_OFFSET 0x8000 // 32KB

View File

@ -1,6 +1,6 @@
【card_copy操作手順】
1. TWL 開発機へ NMenu または NandInitializer で card_copy.tad をインポート(インポート済みなら不要)
1. TWL 開発機へ NMenu または NandInitializer で card_copy_*.tad をインポート(インポート済みなら不要)
2. TWL メニューから「カードコピーマルチブート」 NAND アプリを起動
3. NTR へ吸い出したい DS カードを差す
4. NTR の DS ダウンロードメニューを起動

View File

@ -207,14 +207,32 @@ void MpSendCallback(BOOL result)
{
#pragma unused( result )
CARDRomHeader* rh = (void*)CARD_GetRomHeader();
u32 rh_size = sizeof(CARDRomHeaderNTR);
u32 limit = rh->rom_size + CARD_ROM_PAGE_SIZE;
u32 offset = CARD_GAME_AREA_OFFSET + WH_CHILD_SIZE * send_counter[0];
u32 offset = WH_CHILD_SIZE * send_counter[0];
BgSetMessage(PLTT_YELLOW, " Sending: ROM addr=0x%x", offset);
if ( offset < limit )
{
CARD_ReadRom( MI_DMA_NOT_USE, (void*)offset, gSendBuf, WH_CHILD_SIZE );
if ( offset < rh_size )
{
u32 rem = rh_size%WH_CHILD_SIZE;
MI_CpuCopy8( &((u8*)rh)[offset], gSendBuf, WH_CHILD_SIZE );
if ( offset >= MATH_ROUNDDOWN(rh_size, WH_CHILD_SIZE) )
{
MI_CpuFill8( &gSendBuf[rem], 0, WH_CHILD_SIZE - rem );
}
}
else
if ( offset < CARD_GAME_AREA_OFFSET )
{
MI_CpuFill8(gSendBuf, 0, WH_CHILD_SIZE);
}
else
{
CARD_ReadRom( MI_DMA_NOT_USE, (void*)offset, gSendBuf, WH_CHILD_SIZE );
}
gSendBuf[WH_CHILD_SIZE] = FALSE;
if ( (offset + WH_CHILD_SIZE) >= limit )
{