diff options
| author | Derek Hensley <hensley.derek58@gmail.com> | 2024-01-30 16:30:27 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-01-30 19:30:27 -0500 |
| commit | 77c9c97ff9c1ca822e8f72575cd6a02eabc1b716 (patch) | |
| tree | e8db8d33d973203f3f8b33203e5214eb4ca91441 /src/code/load.c | |
| parent | 2beff8cbf4ec619fd25d8c4fa2678bfd88a2e4c4 (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.c | 17 |
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; } |
