Skip to content

Commit 7f3ce6d

Browse files
committed
Fix private header dumping take #2
1 parent 2c40911 commit 7f3ce6d

File tree

1 file changed

+6
-8
lines changed

1 file changed

+6
-8
lines changed

source/gamecart/gamecart.c

+6-8
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,12 @@
1111

1212
typedef struct {
1313
NcsdHeader ncsd;
14-
u8 cinfo[0x800];
15-
NcchHeader ncch;
1614
u32 card2_offset;
17-
u8 dinfo[0x300 - 0x4];
18-
u8 padding[0x3000 - (0x200 + 0x300)];
15+
u8 cinfo[0x1000 - (0x200 + sizeof(u32))];
16+
NcchHeader ncch;
17+
u8 padding[0x3000 - 0x200];
1918
u8 private[PRIV_HDR_SIZE];
20-
u8 unused[0xC000 - PRIV_HDR_SIZE]; // 0xFF
19+
u8 unused[0x4000 + 0x8000 - PRIV_HDR_SIZE]; // 0xFF
2120
u32 cart_type;
2221
u32 cart_id;
2322
u64 cart_size;
@@ -67,7 +66,7 @@ u32 InitCardRead(CartData* cdata) {
6766
cdata->cart_id = Cart_GetID();
6867
cdata->cart_type = (cdata->cart_id & 0x10000000) ? CART_CTR : CART_NTR;
6968
if (cdata->cart_type & CART_CTR) {
70-
memset(cdata, 0xFF, 0x4000); // switch the padding to 0xFF
69+
memset(cdata, 0xFF, 0x8000); // switch the padding to 0xFF
7170

7271
// init, NCCH header
7372
static u32 sec_keys[4];
@@ -201,8 +200,7 @@ u32 ReadCartBytes(u8* buffer, u32 offset, u32 count, CartData* cdata) {
201200
u32 ReadCartPrivateHeader(u8* buffer, u32 offset, u32 count, CartData* cdata) {
202201
if (!(cdata->cart_type & CART_CTR)) return 1;
203202
if (offset < PRIV_HDR_SIZE) {
204-
CartDataCtr* cdata_i = (CartDataCtr*)(void*) cdata;
205-
u8* priv_hdr = cdata_i->private;
203+
u8* priv_hdr = cdata->header + 0x4000;
206204
if (offset + count > PRIV_HDR_SIZE) count = PRIV_HDR_SIZE - offset;
207205
memcpy(buffer, priv_hdr + offset, count);
208206
}

0 commit comments

Comments
 (0)