Fix CakeBrah error displaying the .dat file

This commit is contained in:
Aurora 2016-09-26 21:42:27 +02:00
parent d010038228
commit b3e3a2937a

View File

@ -1,6 +1,6 @@
diff -uNr a/include/brahma.h b/include/brahma.h diff -uNr a/include/brahma.h b/include/brahma.h
--- a/include/brahma.h 2016-09-21 16:18:56.246840000 +0200 --- a/include/brahma.h 2016-09-26 16:05:36.363067000 +0200
+++ b/include/brahma.h 2016-09-21 16:20:28.975957322 +0200 +++ b/include/brahma.h 2016-09-26 21:35:14.800519000 +0200
@@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
u32 brahma_init (void); u32 brahma_init (void);
@ -20,9 +20,9 @@ diff -uNr a/include/brahma.h b/include/brahma.h
#define ARM_JUMPOUT 0xE51FF004 // LDR PC, [PC, -#04] #define ARM_JUMPOUT 0xE51FF004 // LDR PC, [PC, -#04]
diff -uNr a/source/brahma.c b/source/brahma.c diff -uNr a/source/brahma.c b/source/brahma.c
--- a/source/brahma.c 2016-09-21 16:18:56.246840000 +0200 --- a/source/brahma.c 2016-09-26 16:05:36.363067000 +0200
+++ b/source/brahma.c 2016-09-21 16:21:33.240730777 +0200 +++ b/source/brahma.c 2016-09-26 21:37:58.660516468 +0200
@@ -179,39 +179,56 @@ @@ -179,39 +179,54 @@
return g_ext_arm9_loaded; return g_ext_arm9_loaded;
} }
@ -61,7 +61,7 @@ diff -uNr a/source/brahma.c b/source/brahma.c
+ if (psize > 5 && psize < 56 && path[0] == '/' && memcmp(&path[psize - 4], ".bin", 4)) { + if (psize > 5 && psize < 56 && path[0] == '/' && memcmp(&path[psize - 4], ".bin", 4)) {
+ path[psize] = 0; + path[psize] = 0;
+ f = fopen(path, "rb"); + f = fopen(path, "rb");
+ use_default = false; + if (f) use_default = false;
+ } + }
+ } + }
+ } + }
@ -69,8 +69,6 @@ diff -uNr a/source/brahma.c b/source/brahma.c
+ } + }
+ +
+ if (use_default) f = fopen("/arm9loaderhax.bin", "rb"); + if (use_default) f = fopen("/arm9loaderhax.bin", "rb");
+
+ u32 max_size = ARM9_PAYLOAD_MAX_SIZE;
- FILE *f = fopen(filename, "rb"); - FILE *f = fopen(filename, "rb");
if (f) { if (f) {
@ -90,8 +88,8 @@ diff -uNr a/source/brahma.c b/source/brahma.c
- u32 bytes_read = fread(g_ext_arm9_buf, 1, psize, f); - u32 bytes_read = fread(g_ext_arm9_buf, 1, psize, f);
- result = (g_ext_arm9_loaded = (bytes_read == psize)); - result = (g_ext_arm9_loaded = (bytes_read == psize));
- } - }
+ if (fsize > max_size) + if (fsize > ARM9_PAYLOAD_MAX_SIZE)
+ fsize = max_size; + fsize = ARM9_PAYLOAD_MAX_SIZE;
+ +
+ g_ext_arm9_size = fsize; + g_ext_arm9_size = fsize;
+ +
@ -103,8 +101,8 @@ diff -uNr a/source/brahma.c b/source/brahma.c
fclose(f); fclose(f);
} }
diff -uNr a/source/main.c b/source/main.c diff -uNr a/source/main.c b/source/main.c
--- a/source/main.c 2016-09-21 16:18:56.246840000 +0200 --- a/source/main.c 2016-09-26 16:05:36.363067000 +0200
+++ b/source/main.c 2016-09-21 16:20:28.979957377 +0200 +++ b/source/main.c 2016-09-26 21:40:35.202513018 +0200
@@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
int main (void) { int main (void) {
@ -114,3 +112,12 @@ diff -uNr a/source/main.c b/source/main.c
goto error; goto error;
firm_reboot(); firm_reboot();
brahma_exit(); brahma_exit();
@@ -22,7 +22,7 @@
error:
gfxInitDefault();
consoleInit(GFX_BOTTOM, NULL);
- printf("An error occurred while loading the payload.\nMake sure your launcher is located at:\n/" LAUNCHER_PATH);
+ printf("An error occurred while loading the payload.");
wait_any_key();
gfxExit();