mirror of
https://github.com/rvtr/GodMode9i.git
synced 2025-11-02 00:11:07 -04:00
Alternate way of reading DSi extended header
This commit is contained in:
parent
af637ad935
commit
d1757a95f4
@ -117,7 +117,7 @@ typedef struct {
|
|||||||
|
|
||||||
// 0x200
|
// 0x200
|
||||||
// TODO: More DSi-specific fields.
|
// TODO: More DSi-specific fields.
|
||||||
u8 dsi1[0x10];
|
u32 dsi1[0x10/4];
|
||||||
u32 twlRomSize;
|
u32 twlRomSize;
|
||||||
u32 dsi_unk3;
|
u32 dsi_unk3;
|
||||||
u32 dsi_unk4;
|
u32 dsi_unk4;
|
||||||
|
|||||||
@ -290,23 +290,24 @@ int cardInit (sNDSHeaderExt* ndsHeader)
|
|||||||
|
|
||||||
u32 iCardId=cardReadID(CARD_CLK_SLOW);
|
u32 iCardId=cardReadID(CARD_CLK_SLOW);
|
||||||
while(REG_ROMCTRL & CARD_BUSY);
|
while(REG_ROMCTRL & CARD_BUSY);
|
||||||
u32 iCheapCard=iCardId&0x80000000;
|
//u32 iCheapCard=iCardId&0x80000000;
|
||||||
|
|
||||||
// Read the header
|
// Read the header
|
||||||
if(iCheapCard)
|
cardParamCommand (CARD_CMD_HEADER_READ, 0,
|
||||||
{
|
CARD_ACTIVATE | CARD_nRESET | CARD_CLK_SLOW | CARD_BLK_SIZE(1) | CARD_DELAY1(0x1FFF) | CARD_DELAY2(0x3F),
|
||||||
//this is magic of wood goblins
|
(void*)ndsHeader, 0x200/sizeof(u32));
|
||||||
for(size_t ii=0;ii<8;++ii) {
|
|
||||||
cardParamCommand (CARD_CMD_HEADER_READ, ii*0x200,
|
if ((ndsHeader->unitCode != 0) || (ndsHeader->dsi_flags != 0))
|
||||||
CARD_ACTIVATE | CARD_nRESET | CARD_CLK_SLOW | CARD_BLK_SIZE(1) | CARD_DELAY1(0x1FFF) | CARD_DELAY2(0x3F),
|
|
||||||
(u32*)(void*)(ndsHeader+ii*0x200), 0x200/sizeof(u32));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
|
// Extended header found
|
||||||
cardParamCommand (CARD_CMD_HEADER_READ, 0,
|
cardParamCommand (CARD_CMD_HEADER_READ, 0,
|
||||||
CARD_ACTIVATE | CARD_nRESET | CARD_CLK_SLOW | CARD_BLK_SIZE(4) | CARD_DELAY1(0x1FFF) | CARD_DELAY2(0x3F),
|
CARD_ACTIVATE | CARD_nRESET | CARD_CLK_SLOW | CARD_BLK_SIZE(4) | CARD_DELAY1(0x1FFF) | CARD_DELAY2(0x3F),
|
||||||
(u32*)(void*)ndsHeader, 0x1000/sizeof(u32));
|
(void*)ndsHeader, 0x1000/sizeof(u32));
|
||||||
|
if (ndsHeader->dsi1[0]==0xFFFFFFFF && ndsHeader->dsi1[1]==0xFFFFFFFF
|
||||||
|
&& ndsHeader->dsi1[2]==0xFFFFFFFF && ndsHeader->dsi1[3]==0xFFFFFFFF)
|
||||||
|
{
|
||||||
|
toncset((u8*)ndsHeader+0x200, 0, 0xE00);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check header CRC
|
// Check header CRC
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user