summaryrefslogtreecommitdiff
path: root/src/code/load.c
diff options
context:
space:
mode:
authorDerek Hensley <hensley.derek58@gmail.com>2024-01-30 16:30:27 -0800
committerGitHub <noreply@github.com>2024-01-30 19:30:27 -0500
commit77c9c97ff9c1ca822e8f72575cd6a02eabc1b716 (patch)
treee8db8d33d973203f3f8b33203e5214eb4ca91441 /src/code/load.c
parent2beff8cbf4ec619fd25d8c4fa2678bfd88a2e4c4 (diff)
Overlay_Relocate and Overlay_Load retail OK (#1662)
* Overlay_Relocate OK * Overlay_Load * format * PR + better match for Overlay_Load
Diffstat (limited to 'src/code/load.c')
-rw-r--r--src/code/load.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/code/load.c b/src/code/load.c
index 183409505..27e687ff5 100644
--- a/src/code/load.c
+++ b/src/code/load.c
@@ -1,20 +1,20 @@
#include "global.h"
-s32 Overlay_Load(uintptr_t vromStart, uintptr_t vromEnd, void* vramStart, void* vramEnd, void* allocatedRamAddr) {
+size_t Overlay_Load(uintptr_t vromStart, uintptr_t vromEnd, void* vramStart, void* vramEnd, void* allocatedRamAddr) {
s32 pad[3];
uintptr_t end;
OverlayRelocationSection* ovlRelocs;
- u32 relocSectionOffset;
- size_t size;
-
- size = vromEnd - vromStart;
- end = (uintptr_t)allocatedRamAddr + size;
+ u32 relocSectionOffset = 0;
+ s32 size = vromEnd - vromStart;
if (gOverlayLogSeverity >= 3) {
// "Start loading dynamic link function"
PRINTF("\nダイナミックリンクファンクションのロードを開始します\n");
}
+ size = vromEnd - vromStart;
+ end = (uintptr_t)allocatedRamAddr + size;
+
if (gOverlayLogSeverity >= 3) {
// "DMA transfer of TEXT, DATA, RODATA + rel (%08x-%08x)"
PRINTF("TEXT,DATA,RODATA+relをDMA転送します(%08x-%08x)\n", allocatedRamAddr, end);
@@ -46,10 +46,10 @@ s32 Overlay_Load(uintptr_t vromStart, uintptr_t vromEnd, void* vramStart, void*
// "Clear BSS area (% 08x-% 08x)"
PRINTF("BSS領域をクリアします(%08x-%08x)\n", end, end + ovlRelocs->bssSize);
}
- bzero((void*)end, (s32)ovlRelocs->bssSize);
+ bzero((void*)end, ovlRelocs->bssSize);
}
- size = (uintptr_t)&ovlRelocs->relocations[ovlRelocs->nRelocations] - (uintptr_t)ovlRelocs;
+ size = (uintptr_t)(ovlRelocs->relocations + ovlRelocs->nRelocations) - (uintptr_t)ovlRelocs;
if (gOverlayLogSeverity >= 3) {
// "Clear REL area (%08x-%08x)"
@@ -68,5 +68,6 @@ s32 Overlay_Load(uintptr_t vromStart, uintptr_t vromEnd, void* vramStart, void*
// "Finish loading dynamic link function"
PRINTF("ダイナミックリンクファンクションのロードを終了します\n\n");
}
+
return size;
}