Skip to content

Commit b52d7e8

Browse files
committed
Add support for 32KB DLDI drivers outside of B4DS mode
Does not work in DSi mode yet
1 parent 2d736dd commit b52d7e8

File tree

24 files changed

+88
-468
lines changed

24 files changed

+88
-468
lines changed

retail/Makefile

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ endif
7272
export GAME_ICON := $(CURDIR)/$(ASSETS)/icon.bmp
7373

7474
#.PHONY: cardengine_arm7 cardengine_arm9 bootloader BootStrap clean
75-
.PHONY: all dist release nightly bootloader bootloader1 bootloader2 bootloaderi bootloaderi1 bootloaderi2 cardengine_arm7 cardengine_arm7_music cardengine_arm9_igm cardengine_arm9_igm_extmem cardengine_arm9 cardengine_arm9_32 cardengine_arm9_start cardengine_arm9_start_foto cardengine_arm9_alt cardengine_arm9_alt_gsdd cardengine_arm9_alt2 cardengine_arm9_alt3 cardengine_arm9_extmem cardengine_arm9_extmem_gsdd cardengine_arm9_extmem_start cardengine_arm9_extmem_foto cardenginei_arm7 cardenginei_arm7_alt cardenginei_arm7_twlsdk cardenginei_arm7_twlsdk3 cardenginei_arm7_dsiware cardenginei_arm7_dsiware3 cardenginei_arm7_cheat cardenginei_arm9_igm cardenginei_arm9 cardenginei_arm9_alt cardenginei_arm9_alt2 cardenginei_arm9_dlp cardenginei_arm9_gsdd cardenginei_arm9_gsdd_alt cardenginei_arm9_dldi cardenginei_arm9_gsdd_dldi cardenginei_arm9_twlsdk cardenginei_arm9_twlsdk3 cardenginei_arm9_twlsdk_dldi cardenginei_arm9_twlsdk3_dldi cardenginei_arm9_dsiware cardenginei_arm9_dsiware3 preLoadSettings apfix libnds32 arm7/$(TARGET).elf arm9/$(TARGET).elf clean
75+
.PHONY: all dist release nightly bootloader bootloader1 bootloader2 bootloaderi bootloaderi1 bootloaderi2 cardengine_arm7 cardengine_arm7_music cardengine_arm9_igm cardengine_arm9_igm_extmem cardengine_arm9 cardengine_arm9_32 cardengine_arm9_start cardengine_arm9_start_foto cardengine_arm9_alt cardengine_arm9_alt_gsdd cardengine_arm9_alt2 cardengine_arm9_alt3 cardengine_arm9_extmem cardengine_arm9_extmem_gsdd cardengine_arm9_extmem_start cardengine_arm9_extmem_foto cardenginei_arm7 cardenginei_arm7_alt cardenginei_arm7_twlsdk cardenginei_arm7_twlsdk3 cardenginei_arm7_dsiware cardenginei_arm7_dsiware3 cardenginei_arm7_cheat cardenginei_arm9_igm cardenginei_arm9 cardenginei_arm9_sdk20 cardenginei_arm9_dlp cardenginei_arm9_gsdd cardenginei_arm9_dldi cardenginei_arm9_sdk20_dldi cardenginei_arm9_gsdd_dldi cardenginei_arm9_twlsdk cardenginei_arm9_twlsdk3 cardenginei_arm9_twlsdk_dldi cardenginei_arm9_twlsdk3_dldi cardenginei_arm9_dsiware cardenginei_arm9_dsiware3 preLoadSettings apfix libnds32 arm7/$(TARGET).elf arm9/$(TARGET).elf clean
7676

7777
all: $(OUTPUT)
7878

@@ -121,7 +121,7 @@ bootloader2:
121121
@$(MAKE) -C bootloader2
122122

123123
#---------------------------------------------------------------------------------
124-
bootloaderi: cardenginei_arm7 cardenginei_arm7_alt cardenginei_arm7_twlsdk cardenginei_arm7_twlsdk3 cardenginei_arm7_dsiware cardenginei_arm7_dsiware3 cardenginei_arm7_cheat cardenginei_arm9_igm cardenginei_arm9 cardenginei_arm9_alt cardenginei_arm9_alt2 cardenginei_arm9_dlp cardenginei_arm9_gsdd cardenginei_arm9_gsdd_alt cardenginei_arm9_dldi cardenginei_arm9_gsdd_dldi cardenginei_arm9_twlsdk cardenginei_arm9_twlsdk3 cardenginei_arm9_twlsdk_dldi cardenginei_arm9_twlsdk3_dldi cardenginei_arm9_dsiware cardenginei_arm9_dsiware3
124+
bootloaderi: cardenginei_arm7 cardenginei_arm7_alt cardenginei_arm7_twlsdk cardenginei_arm7_twlsdk3 cardenginei_arm7_dsiware cardenginei_arm7_dsiware3 cardenginei_arm7_cheat cardenginei_arm9_igm cardenginei_arm9 cardenginei_arm9_sdk20 cardenginei_arm9_dlp cardenginei_arm9_gsdd cardenginei_arm9_dldi cardenginei_arm9_sdk20_dldi cardenginei_arm9_gsdd_dldi cardenginei_arm9_twlsdk cardenginei_arm9_twlsdk3 cardenginei_arm9_twlsdk_dldi cardenginei_arm9_twlsdk3_dldi cardenginei_arm9_dsiware cardenginei_arm9_dsiware3
125125
@$(MAKE) -C bootloaderi
126126

127127
#---------------------------------------------------------------------------------
@@ -233,12 +233,8 @@ cardenginei_arm9:
233233
@$(MAKE) -C cardenginei/arm9
234234

235235
#---------------------------------------------------------------------------------
236-
cardenginei_arm9_alt:
237-
@$(MAKE) -C cardenginei/arm9_alt
238-
239-
#---------------------------------------------------------------------------------
240-
cardenginei_arm9_alt2:
241-
@$(MAKE) -C cardenginei/arm9_alt2
236+
cardenginei_arm9_sdk20:
237+
@$(MAKE) -C cardenginei/arm9_sdk20
242238

243239
#---------------------------------------------------------------------------------
244240
cardenginei_arm9_dlp:
@@ -248,14 +244,14 @@ cardenginei_arm9_dlp:
248244
cardenginei_arm9_gsdd:
249245
@$(MAKE) -C cardenginei/arm9_gsdd
250246

251-
#---------------------------------------------------------------------------------
252-
cardenginei_arm9_gsdd_alt:
253-
@$(MAKE) -C cardenginei/arm9_gsdd_alt
254-
255247
#---------------------------------------------------------------------------------
256248
cardenginei_arm9_dldi:
257249
@$(MAKE) -C cardenginei/arm9_dldi
258250

251+
#---------------------------------------------------------------------------------
252+
cardenginei_arm9_sdk20_dldi:
253+
@$(MAKE) -C cardenginei/arm9_sdk20_dldi
254+
259255
#---------------------------------------------------------------------------------
260256
cardenginei_arm9_gsdd_dldi:
261257
@$(MAKE) -C cardenginei/arm9_gsdd_dldi
@@ -329,12 +325,11 @@ clean:
329325
@$(MAKE) -C cardenginei/arm7_cheatonly clean
330326
@$(MAKE) -C cardenginei/arm9_igm clean
331327
@$(MAKE) -C cardenginei/arm9 clean
332-
@$(MAKE) -C cardenginei/arm9_alt clean
333-
@$(MAKE) -C cardenginei/arm9_alt2 clean
328+
@$(MAKE) -C cardenginei/arm9_sdk20 clean
334329
@$(MAKE) -C cardenginei/arm9_dlp clean
335330
@$(MAKE) -C cardenginei/arm9_gsdd clean
336-
@$(MAKE) -C cardenginei/arm9_gsdd_alt clean
337331
@$(MAKE) -C cardenginei/arm9_dldi clean
332+
@$(MAKE) -C cardenginei/arm9_sdk20_dldi clean
338333
@$(MAKE) -C cardenginei/arm9_gsdd_dldi clean
339334
@$(MAKE) -C cardenginei/arm9_twlsdk clean
340335
@$(MAKE) -C cardenginei/arm9_twlsdk_dldi clean

retail/arm9/source/conf_sd.cpp

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1434,19 +1434,6 @@ int loadFromSD(configuration* conf, const char *bootstrapPath) {
14341434
} else {
14351435
conf->dsiWramAccess = true;
14361436
}
1437-
bool ce9Wram = conf->dsiWramAccess;
1438-
if (ce9Wram) {
1439-
if (strncmp(romTid, "HND", 3) == 0 // DS Download Play
1440-
|| strncmp(romTid, "ADA", 3) == 0 // Diamond
1441-
|| strncmp(romTid, "APA", 3) == 0 // Pearl
1442-
|| strncmp(romTid, "Y3E", 3) == 0 // 2006-Nen 10-Gatsu Taikenban Soft
1443-
|| strncmp(romTid, "CPU", 3) == 0 // Platinum
1444-
|| strncmp(romTid, "IPK", 3) == 0 // HG
1445-
|| strncmp(romTid, "IPG", 3) == 0 // SS
1446-
) {
1447-
ce9Wram = false;
1448-
}
1449-
}
14501437
if (conf->dsiWramAccess) {
14511438
conf->valueBits2 |= BIT(5);
14521439
u32 wordBak = *(vu32*)0x03700000;
@@ -1529,12 +1516,22 @@ int loadFromSD(configuration* conf, const char *bootstrapPath) {
15291516
LZ77_Decompress(lz77ImageBuffer, (u8*)CARDENGINEI_ARM9_BUFFERED_LOCATION);
15301517
}
15311518
fclose(cebin);
1519+
1520+
if (!dlp && !gsdd) {
1521+
// Load ce9 binary (SDK 2.0)
1522+
cebin = fopen("nitro:/cardenginei_arm9_sdk20_dldi.lz77", "rb");
1523+
if (cebin) {
1524+
fread(lz77ImageBuffer, 1, sizeof_lz77ImageBuffer, cebin);
1525+
LZ77_Decompress(lz77ImageBuffer, (u8*)CARDENGINEI_ARM9_BUFFERED_LOCATION2);
1526+
}
1527+
fclose(cebin);
1528+
}
15321529
} else {
1533-
const char* ce9Path = ce9Wram ? "nitro:/cardenginei_arm9.lz77" : "nitro:/cardenginei_arm9_alt.lz77";
1530+
const char* ce9Path = "nitro:/cardenginei_arm9.lz77";
15341531
if (dlp) {
15351532
ce9Path = "nitro:/cardenginei_arm9_dlp.lz77";
15361533
} else if (gsdd) {
1537-
ce9Path = ce9Wram ? "nitro:/cardenginei_arm9_gsdd.lz77" : "nitro:/cardenginei_arm9_gsdd_alt.lz77";
1534+
ce9Path = "nitro:/cardenginei_arm9_gsdd.lz77";
15381535
}
15391536

15401537
// Load ce9 binary
@@ -1545,9 +1542,9 @@ int loadFromSD(configuration* conf, const char *bootstrapPath) {
15451542
}
15461543
fclose(cebin);
15471544

1548-
if (!ce9Wram && !dlp && !gsdd) {
1549-
// Load ce9 binary (alt 2)
1550-
cebin = fopen("nitro:/cardenginei_arm9_alt2.lz77", "rb");
1545+
if (!dlp && !gsdd) {
1546+
// Load ce9 binary (SDK 2.0)
1547+
cebin = fopen("nitro:/cardenginei_arm9_sdk20.lz77", "rb");
15511548
if (cebin) {
15521549
fread(lz77ImageBuffer, 1, sizeof_lz77ImageBuffer, cebin);
15531550
LZ77_Decompress(lz77ImageBuffer, (u8*)CARDENGINEI_ARM9_BUFFERED_LOCATION2);

retail/bootloaderi/include/dldi_patcher.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,6 @@
2727

2828
typedef signed int addr_t;
2929
typedef unsigned char data_t;
30-
bool dldiPatchBinary (data_t *binData, u32 binSize);
30+
bool dldiPatchBinary (data_t *binData, u32 binSize, data_t *binDataWram);
3131

3232
#endif // DLDI_PATCHER_H

retail/bootloaderi/source/arm7/dldi_patcher.c

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ static const data_t dldiMagicString[] = "\xED\xA5\x8D\xBF Chishm"; // Normal DLD
9797

9898
extern const u32 __myio_dldi;
9999

100-
bool dldiPatchBinary (data_t *binData, u32 binSize) {
100+
bool dldiPatchBinary (data_t *binData, u32 binSize, data_t *binDataWram) {
101101

102102
addr_t memOffset; // Offset of DLDI after the file is loaded into memory
103103
addr_t patchOffset; // Position of patch destination in the file
@@ -133,9 +133,14 @@ bool dldiPatchBinary (data_t *binData, u32 binSize) {
133133

134134
dldiFileSize = 1 << pDH[DO_driverSize];
135135

136-
memOffset = readAddr (pAH, DO_text_start);
137-
if (memOffset == 0) {
138-
memOffset = readAddr (pAH, DO_startup) - DO_code;
136+
if (binDataWram) {
137+
pAH = binDataWram;
138+
memOffset = (addr_t)binDataWram;
139+
} else {
140+
memOffset = readAddr (pAH, DO_text_start);
141+
if (memOffset == 0) {
142+
memOffset = readAddr (pAH, DO_startup) - DO_code;
143+
}
139144
}
140145
ddmemOffset = readAddr (pDH, DO_text_start);
141146
relocationOffset = memOffset - ddmemOffset;
@@ -167,7 +172,7 @@ bool dldiPatchBinary (data_t *binData, u32 binSize) {
167172
writeAddr (pAH, DO_shutdown, readAddr (pAH, DO_shutdown) + relocationOffset);
168173

169174
// Put the correct DLDI magic string back into the DLDI header
170-
tonccpy (pAH, dldiMagicString, sizeof (dldiMagicString));
175+
// tonccpy (pAH, dldiMagicString, sizeof (dldiMagicString));
171176

172177
if (pDH[DO_fixSections] & FIX_ALL) {
173178
// Search through and fix pointers within the data section of the file
@@ -201,6 +206,11 @@ bool dldiPatchBinary (data_t *binData, u32 binSize) {
201206
toncset (&pAH[readAddr(pDH, DO_bss_start) - ddmemStart] , 0, readAddr(pDH, DO_bss_end) - readAddr(pDH, DO_bss_start));
202207
}*/
203208

209+
if (binDataWram) {
210+
data_t* pAH2 = &(binData[patchOffset]);
211+
tonccpy (pAH2, pAH, DO_code);
212+
}
213+
204214
return true;
205215
}
206216
#endif

retail/bootloaderi/source/arm7/main.arm7.c

Lines changed: 13 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,8 @@ extern u8 romRead_LED;
133133
extern u8 dmaRomRead_LED;
134134
extern u8 soundFreq;
135135

136+
extern u8 _io_dldi_size;
137+
136138
bool useTwlCfg = false;
137139
u8 twlCfgCountry = 0;
138140
int twlCfgLang = 0;
@@ -2096,9 +2098,9 @@ int arm7_main(void) {
20962098

20972099
// dbg_printf("Trying to patch the card...\n");
20982100

2099-
u16 ce9size = 0;
2101+
const u16 ce9size = 0x8000;
21002102
ce7Location = *(u32*)CARDENGINEI_ARM7_BUFFERED_LOCATION;
2101-
u32 ce7Size = 0x11C00;
2103+
u32 ce7Size = 0x13400;
21022104

21032105
const bool useSdk5ce7 = (isSdk5(moduleParams) && ROMsupportsDsiMode(&dsiHeaderTemp.ndshdr) && dsiModeConfirmed);
21042106
if (useSdk5ce7) {
@@ -2133,7 +2135,7 @@ int arm7_main(void) {
21332135

21342136
tonccpy((u32*)ce7Location, (u32*)CARDENGINEI_ARM7_BUFFERED_LOCATION, ce7Size);
21352137
if (gameOnFlashcard || saveOnFlashcard) {
2136-
if (!dldiPatchBinary((data_t*)ce7Location, ce7Size-0x400)) {
2138+
if (!dldiPatchBinary((data_t*)ce7Location, ce7Size-0x400, 0)) {
21372139
dbg_printf("ce7 DLDI patch failed\n");
21382140
errorOutput();
21392141
}
@@ -2149,33 +2151,22 @@ int arm7_main(void) {
21492151

21502152
if (ROMsupportsDsiMode(ndsHeader) && dsiModeConfirmed) {
21512153
ce9Location = *(u32*)CARDENGINEI_ARM9_SDK5_BUFFERED_LOCATION;
2152-
ce9size = 0x7800;
21532154
tonccpy((u32*)ce9Location, (u32*)CARDENGINEI_ARM9_SDK5_BUFFERED_LOCATION, ce9size);
2154-
if (gameOnFlashcard) {
2155-
if (!dldiPatchBinary((data_t*)ce9Location, ce9size)) {
2156-
dbg_printf("ce9 DLDI patch failed\n");
2157-
errorOutput();
2158-
}
2159-
}
2160-
} else if (gameOnFlashcard) {
2161-
ce9Location = CARDENGINEI_ARM9_LOCATION_DSI_WRAM;
2162-
ce9size = 0x7000;
2163-
tonccpy((u32*)CARDENGINEI_ARM9_LOCATION_DSI_WRAM, (u32*)CARDENGINEI_ARM9_BUFFERED_LOCATION, ce9size);
2164-
if (!dldiPatchBinary((data_t*)ce9Location, ce9size)) {
2165-
dbg_printf("ce9 DLDI patch failed\n");
2166-
errorOutput();
2167-
}
21682155
} else {
2169-
const bool ce9DsiWram = (*(u32*)CARDENGINEI_ARM9_BUFFERED_LOCATION == CARDENGINEI_ARM9_LOCATION_DSI_WRAM);
2170-
const u32* ce9Src = (u32*)((!ce9DsiWram && !laterSdk) ? CARDENGINEI_ARM9_BUFFERED_LOCATION2 : CARDENGINEI_ARM9_BUFFERED_LOCATION);
2156+
const u32* ce9Src = (u32*)(!laterSdk ? CARDENGINEI_ARM9_BUFFERED_LOCATION2 : CARDENGINEI_ARM9_BUFFERED_LOCATION);
21712157
ce9Location = *ce9Src;
2172-
ce9size = 0x5000;
21732158
tonccpy((u32*)ce9Location, ce9Src, ce9size);
21742159
}
2160+
if (gameOnFlashcard) {
2161+
if (!dldiPatchBinary((data_t*)ce9Location, ce9size, (data_t*)((ROMsupportsDsiMode(ndsHeader) && dsiModeConfirmed && _io_dldi_size < 0xF) ? ce9Location+0x3800 : CARDENGINEI_ARM9_LOCATION_DSI_WRAM))) {
2162+
dbg_printf("ce9 DLDI patch failed\n");
2163+
errorOutput();
2164+
}
2165+
}
21752166
patchHiHeapPointer(moduleParams, ndsHeader);
21762167

21772168
toncset((u32*)CARDENGINEI_ARM9_BUFFERED_LOCATION, 0, 0x10000);
2178-
toncset((u32*)CARDENGINEI_ARM7_BUFFERED_LOCATION, 0, 0x11C00);
2169+
toncset((u32*)CARDENGINEI_ARM7_BUFFERED_LOCATION, 0, 0x13400);
21792170

21802171
errorCode = patchCardNds(
21812172
(cardengineArm7*)ce7Location,

retail/bootloaderi/source/arm7/my_dldi.s

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
.arm
2525
.global __mydldi_start
2626
.global __myio_dldi
27+
.global _io_dldi_size
2728
@---------------------------------------------------------------------------------
2829
.equ FEATURE_MEDIUM_CANREAD, 0x00000001
2930
.equ FEATURE_MEDIUM_CANWRITE, 0x00000002
@@ -43,6 +44,7 @@ __mydldi_start:
4344
#endif
4445
.asciz " Chishm" @ Identifying Magic string (8 bytes with null terminator)
4546
.byte 0x01 @ Version number
47+
_io_dldi_size:
4648
.byte 0x0f @ 32KiB @ Log [base-2] of the size of this driver in bytes.
4749
.byte 0x00 @ Sections to fix
4850
.byte 0x0f @ 32KiB @ Log [base-2] of the allocated space in bytes.

retail/cardenginei/arm7/cardengine.ld.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ OUTPUT_ARCH(arm)
66

77
MEMORY {
88

9-
vram : ORIGIN = CARDENGINEI_ARM7_LOCATION, LENGTH = 70K /* WRAM A */
9+
vram : ORIGIN = CARDENGINEI_ARM7_LOCATION, LENGTH = 76K /* WRAM A */
1010
}
1111

1212
__vram_start = ORIGIN(vram);

retail/cardenginei/arm7/source/cardengine.c

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ static void unlaunchSetFilename(bool boot) {
224224
#ifdef TWLSDK
225225
*(u8*)(0x02000838+i2) = *(u8*)(ce7+0x8400+i); // Unlaunch Device:/Path/Filename.ext (16bit Unicode,end by 0000h)
226226
#else
227-
*(u8*)(0x02000838+i2) = *(u8*)(ce7+0x11800+i); // Unlaunch Device:/Path/Filename.ext (16bit Unicode,end by 0000h)
227+
*(u8*)(0x02000838+i2) = *(u8*)(ce7+0x13000+i); // Unlaunch Device:/Path/Filename.ext (16bit Unicode,end by 0000h)
228228
#endif
229229
i2 += 2;
230230
}
@@ -262,9 +262,9 @@ static void readSrBackendId(void) {
262262
*(u32*)(0x02000314) = *(u32*)(ce7+0x8504);
263263
*(u32*)(0x02000318) = /* *(u32*)(ce7+0x8504) == 0x00030000 ? 0x13 : */ 0x17;
264264
#else
265-
*(u32*)(0x02000310) = *(u32*)(ce7+0x11900);
266-
*(u32*)(0x02000314) = *(u32*)(ce7+0x11904);
267-
*(u32*)(0x02000318) = /* *(u32*)(ce7+0x11904) == 0x00030000 ? 0x13 : */ 0x17;
265+
*(u32*)(0x02000310) = *(u32*)(ce7+0x13100);
266+
*(u32*)(0x02000314) = *(u32*)(ce7+0x13104);
267+
*(u32*)(0x02000318) = /* *(u32*)(ce7+0x13104) == 0x00030000 ? 0x13 : */ 0x17;
268268
#endif
269269
*(u32*)(0x0200031C) = 0;
270270
*(u16*)(0x02000306) = swiCRC16(0xFFFF, (void*)0x02000308, 0x18);
@@ -466,9 +466,9 @@ void reset(void) {
466466
*(u32*)0x02000000 = BIT(3);
467467
*(u32*)0x02000004 = 0x54455352; // 'RSET'
468468
if (consoleModel < 2) {
469-
(*(u32*)(ce7+0x11900) == 0 && (valueBits & b_dsiSD)) ? unlaunchSetFilename(false) : unlaunchSetHiyaFilename();
469+
(*(u32*)(ce7+0x13100) == 0 && (valueBits & b_dsiSD)) ? unlaunchSetFilename(false) : unlaunchSetHiyaFilename();
470470
}
471-
if (*(u32*)(ce7+0x11900) == 0 && (valueBits & b_dsiSD)) {
471+
if (*(u32*)(ce7+0x13100) == 0 && (valueBits & b_dsiSD)) {
472472
tonccpy((u32*)0x02000300, sr_data_srloader, 0x20);
473473
} else {
474474
// Use different SR backend ID
@@ -768,7 +768,7 @@ void forceGameReboot(void) {
768768
#ifdef TWLSDK
769769
(*(u32*)(ce7+0x8500) == 0) ? unlaunchSetFilename(false) : unlaunchSetHiyaFilename();
770770
#else
771-
(*(u32*)(ce7+0x11900) == 0) ? unlaunchSetFilename(false) : unlaunchSetHiyaFilename();
771+
(*(u32*)(ce7+0x13100) == 0) ? unlaunchSetFilename(false) : unlaunchSetHiyaFilename();
772772
#endif
773773
}
774774
waitFrames(5); // Wait for DSi screens to stabilize
@@ -784,7 +784,7 @@ void forceGameReboot(void) {
784784
//if (doBak) restoreSdBakData();
785785
if (*(u32*)(ce7+0x8500) == 0 && (valueBits & b_dsiSD))
786786
#else
787-
if (*(u32*)(ce7+0x11900) == 0 && (valueBits & b_dsiSD))
787+
if (*(u32*)(ce7+0x13100) == 0 && (valueBits & b_dsiSD))
788788
#endif
789789
{
790790
tonccpy((u32*)0x02000300, sr_data_srloader, 0x20);
@@ -933,18 +933,18 @@ void returnToLoader(bool reboot) {
933933
#else
934934
IPC_SendSync(0x8);
935935
if (consoleModel >= 2) {
936-
if (*(u32*)(ce7+0x11900) == 0 && (valueBits & b_dsiSD))
936+
if (*(u32*)(ce7+0x13100) == 0 && (valueBits & b_dsiSD))
937937
{
938938
tonccpy((u32*)0x02000300, sr_data_srloader, 0x020);
939939
}
940-
else if (*(char*)(ce7+0x11903) == 'H' || *(char*)(ce7+0x11903) == 'K')
940+
else if (*(char*)(ce7+0x13103) == 'H' || *(char*)(ce7+0x13103) == 'K')
941941
{
942942
// Use different SR backend ID
943943
readSrBackendId();
944944
}
945945
waitFrames(1);
946946
} else {
947-
if (*(u32*)(ce7+0x11900) == 0 && (valueBits & b_dsiSD))
947+
if (*(u32*)(ce7+0x13100) == 0 && (valueBits & b_dsiSD))
948948
{
949949
unlaunchSetFilename(true);
950950
} else {

retail/cardenginei/arm7/source/my_dldi.s

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,13 @@ __mydldi_start:
4242
#ifdef TWLSDK
4343
.byte 0x0d @ 8KiB @ Log [base-2] of the size of this driver in bytes.
4444
#else
45-
.byte 0x0e @ 16KiB @ Log [base-2] of the size of this driver in bytes.
45+
.byte 0x0f @ 32KiB @ Log [base-2] of the size of this driver in bytes.
4646
#endif
4747
.byte 0x00 @ Sections to fix
4848
#ifdef TWLSDK
4949
.byte 0x0d @ 8KiB @ Log [base-2] of the allocated space in bytes.
5050
#else
51-
.byte 0x0e @ 16KiB @ Log [base-2] of the allocated space in bytes.
51+
.byte 0x0f @ 32KiB @ Log [base-2] of the allocated space in bytes.
5252
#endif
5353

5454
@---------------------------------------------------------------------------------
@@ -100,7 +100,7 @@ _DLDI_shutdown:
100100
#ifdef TWLSDK
101101
.space (__mydldi_start + 8192) - . @ Fill to 8KiB
102102
#else
103-
.space (__mydldi_start + 16384) - . @ Fill to 16KiB
103+
.space (__mydldi_start + 32768) - . @ Fill to 32KiB
104104
#endif
105105

106106
_dldi_end:

retail/cardenginei/arm7_alt/cardengine.ld.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ OUTPUT_ARCH(arm)
66

77
MEMORY {
88

9-
vram : ORIGIN = CARDENGINEI_ARM7_LOCATION_ALT, LENGTH = 70K /* WRAM A */
9+
vram : ORIGIN = CARDENGINEI_ARM7_LOCATION_ALT, LENGTH = 76K /* WRAM A */
1010
}
1111

1212
__vram_start = ORIGIN(vram);

0 commit comments

Comments
 (0)