mirror of
https://github.com/zeldaret/mm.git
synced 2026-06-27 01:55:07 -04:00
Load Docs (#1222)
* Sync with OoT * Macro cleanup * Some cleanup/rename load system name to Fragment * Format * bss * Some clarifying comments regarding fragments * PR suggestions * size_t and numRelocations
This commit is contained in:
@@ -73,4 +73,8 @@ typedef union{
|
||||
|
||||
#define RGBA8(r, g, b, a) ((((r) & 0xFF) << 24) | (((g) & 0xFF) << 16) | (((b) & 0xFF) << 8) | (((a) & 0xFF) << 0))
|
||||
|
||||
#define RGBA16_GET_R(pixel) (((pixel) >> 11) & 0x1F)
|
||||
#define RGBA16_GET_G(pixel) (((pixel) >> 6) & 0x1F)
|
||||
#define RGBA16_GET_B(pixel) (((pixel) >> 1) & 0x1F)
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
#ifndef LOADFRAGMENT_H
|
||||
#define LOADFRAGMENT_H
|
||||
|
||||
#include "PR/ultratypes.h"
|
||||
#include "libc/stdint.h"
|
||||
#include "libc/stddef.h"
|
||||
|
||||
extern s32 gOverlayLogSeverity;
|
||||
|
||||
#define RELOC_SECTION(reloc) ((reloc) >> 30)
|
||||
#define RELOC_OFFSET(reloc) ((reloc) & 0xFFFFFF)
|
||||
#define RELOC_TYPE_MASK(reloc) ((reloc) & 0x3F000000)
|
||||
#define RELOC_TYPE_SHIFT 24
|
||||
|
||||
/* MIPS Relocation Types */
|
||||
#define R_MIPS_32 2
|
||||
#define R_MIPS_26 4
|
||||
#define R_MIPS_HI16 5
|
||||
#define R_MIPS_LO16 6
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ RELOC_SECTION_NULL,
|
||||
/* 1 */ RELOC_SECTION_TEXT,
|
||||
/* 2 */ RELOC_SECTION_DATA,
|
||||
/* 3 */ RELOC_SECTION_RODATA,
|
||||
/* 4 */ RELOC_SECTION_MAX
|
||||
} RelocSectionId;
|
||||
|
||||
typedef struct OverlayRelocationSection {
|
||||
/* 0x00 */ size_t textSize;
|
||||
/* 0x04 */ size_t dataSize;
|
||||
/* 0x08 */ size_t rodataSize;
|
||||
/* 0x0C */ size_t bssSize;
|
||||
/* 0x10 */ u32 numRelocations;
|
||||
/* 0x14 */ u32 relocations[1]; // array count is numRelocations
|
||||
} OverlayRelocationSection; // size >= 0x18
|
||||
|
||||
// Fragment overlay load functions
|
||||
size_t Overlay_Load(uintptr_t vromStart, uintptr_t vromEnd, uintptr_t vramStart, uintptr_t vramEnd, void* allocatedRamAddr);
|
||||
void* Overlay_AllocateAndLoad(uintptr_t vromStart, uintptr_t vromEnd, uintptr_t vramStart, uintptr_t vramEnd);
|
||||
|
||||
#endif
|
||||
@@ -104,10 +104,6 @@
|
||||
#define CLAMP_MAX(x, max) ((x) > (max) ? (max) : (x))
|
||||
#define CLAMP_MIN(x, min) ((x) < (min) ? (min) : (x))
|
||||
|
||||
#define RGBA16_GET_R(pixel) (((pixel) >> 11) & 0x1F)
|
||||
#define RGBA16_GET_G(pixel) (((pixel) >> 6) & 0x1F)
|
||||
#define RGBA16_GET_B(pixel) (((pixel) >> 1) & 0x1F)
|
||||
|
||||
#define ROUND(x) (s32)(((x) >= 0.0) ? ((x) + 0.5) : ((x) - 0.5))
|
||||
|
||||
#define SWAP(type, a, b) \
|
||||
@@ -118,7 +114,4 @@
|
||||
} \
|
||||
(void)0
|
||||
|
||||
#define OVERLAY_RELOCATION_OFFSET(overlayEntry) ((uintptr_t)((overlayEntry)->vramStart) - (uintptr_t)((overlayEntry)->loadedRamAddr))
|
||||
#define VRAM_PTR_SIZE(entry) ((uintptr_t)((entry)->vramEnd) - (uintptr_t)((entry)->vramStart))
|
||||
|
||||
#endif // MACROS_H
|
||||
|
||||
@@ -35,9 +35,6 @@ extern const char* sCpuExceptions[18];
|
||||
extern const char* sFpuExceptions[6];
|
||||
extern FaultDrawer* sFaultDrawContext;
|
||||
extern FaultDrawer sFaultDrawerDefault;
|
||||
extern s32 gLoadLogSeverity;
|
||||
extern s32 gLoad2LogSeverity;
|
||||
|
||||
// extern UNK_TYPE1 sGfxPrintFontTLUT;
|
||||
// extern UNK_TYPE1 sGfxPrintRainbowTLUT;
|
||||
// extern UNK_TYPE1 sGfxPrintRainbowData;
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
#ifndef Z64LOAD_H
|
||||
#define Z64LOAD_H
|
||||
|
||||
#include "PR/ultratypes.h"
|
||||
|
||||
#define RELOCATE_ADDR(addr, vRamStart, allocu32) ((addr) - (vRamStart) + (allocu32))
|
||||
|
||||
#define RELOC_SECTION(reloc) ((reloc) >> 30)
|
||||
#define RELOC_OFFSET(reloc) ((reloc) & 0xFFFFFF)
|
||||
#define RELOC_TYPE_MASK(reloc) ((reloc) & 0x3F000000)
|
||||
#define RELOC_TYPE_SHIFT 24
|
||||
|
||||
/* MIPS Relocation Types */
|
||||
#define R_MIPS_32 2
|
||||
#define R_MIPS_26 4
|
||||
#define R_MIPS_HI16 5
|
||||
#define R_MIPS_LO16 6
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 textSize;
|
||||
/* 0x04 */ u32 dataSize;
|
||||
/* 0x08 */ u32 rodataSize;
|
||||
/* 0x0C */ u32 bssSize;
|
||||
/* 0x10 */ u32 nRelocations;
|
||||
/* 0x14 */ u32 relocations[1];
|
||||
} OverlayRelocationSection; // size >= 0x18
|
||||
|
||||
size_t Load2_LoadOverlay(uintptr_t vRomStart, uintptr_t vRomEnd, uintptr_t vRamStart, uintptr_t vRamEnd, void* allocatedVRamAddr);
|
||||
void* Load2_AllocateAndLoad(uintptr_t vRomStart, uintptr_t vRomEnd, uintptr_t vRamStart, uintptr_t vRamEnd);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user