Mario Kart 64
Loading...
Searching...
No Matches
memory.h
Go to the documentation of this file.
1#ifndef MEMORY_H
2#define MEMORY_H
3
4#include "common_structs.h"
5#include "course_offsets.h"
6
10};
11
18
20 s32 unk0;
21 s32 unk4;
22};
23
25 s16 unk0;
26 s16 unk2;
27 s32 unk4;
28 s32 unk8;
29 s32 fill;
30};
31
38
39#define MEMORY_POOL_LEFT 0
40#define MEMORY_POOL_RIGHT 1
41
42#define ALIGN4(val) (((val) + 0x3) & ~0x3)
43
44u8* load_lakitu_tlut_x64(const char** textureList, size_t length);
45void* get_next_available_memory_addr(uintptr_t);
46uintptr_t set_segment_base_addr(s32, void*);
47void* get_segment_base_addr(s32);
48void* segmented_to_virtual(const void*);
49void* segment_offset_to_virtual(uint32_t, uint32_t);
50void* segment_vtx_to_virtual(size_t offset);
51void* segmented_texture_to_virtual(uintptr_t addr);
52void* segmented_uintptr_t_to_virtual(uintptr_t);
53Gfx* segmented_gfx_to_virtual(const void*);
56void initialize_memory_pool(void);
57void* decompress_segments(u8*, u8*);
58void* allocate_memory(size_t);
59void* load_data(uintptr_t, uintptr_t);
60void func_802A7D54(s32, s32);
61
62void func_802A86A8(CourseVtx* data, Vtx* vtx, size_t arg1);
63void displaylist_unpack(uintptr_t* data, uintptr_t finalDisplaylistOffset, u32 arg2);
64
65void main_pool_init(uintptr_t, uintptr_t);
66void* main_pool_alloc(uintptr_t, uintptr_t);
67uintptr_t main_pool_free(void*);
68void* main_pool_realloc(void*, uintptr_t);
69uintptr_t main_pool_available(void);
70uintptr_t main_pool_push_state(void);
71uintptr_t main_pool_pop_state(void);
72void* func_802A80B0(u8*, u8*, u8*);
73void func_802A81EC(void);
74struct AllocOnlyPool* alloc_only_pool_init(uintptr_t, uintptr_t);
75uintptr_t func_802A82AC(s32);
76uintptr_t func_802A8348(s32, s32, s32);
77u8* dma_textures(const char* texture, size_t arg1, size_t arg2);
78uintptr_t MIO0_0F(u8*, uintptr_t, uintptr_t);
79void func_802A8844(void);
80void unpack_lights(Gfx*, u8*, s8);
81void unpack_displaylist(Gfx*, u8*, s8);
82void unpack_end_displaylist(Gfx*, u8*, s8);
83void unpack_set_geometry_mode(Gfx*, u8*, s8);
84void unpack_clear_geometry_mode(Gfx*, u8*, s8);
85void unpack_cull_displaylist(Gfx*, u8*, s8);
86void unpack_combine_mode1(Gfx*, u8*, uintptr_t);
87void unpack_combine_mode2(Gfx*, u8*, uintptr_t);
88void unpack_combine_mode_shade(Gfx*, u8*, uintptr_t);
89void unpack_combine_mode4(Gfx*, u8*, uintptr_t);
90void unpack_combine_mode5(Gfx*, u8*, uintptr_t);
91void unpack_render_mode_opaque(Gfx*, u8*, uintptr_t);
92void unpack_render_mode_tex_edge(Gfx*, u8*, uintptr_t);
93void unpack_render_mode_translucent(Gfx*, u8*, uintptr_t);
94void unpack_render_mode_opaque_decal(Gfx*, u8*, uintptr_t);
95void unpack_render_mode_translucent_decal(Gfx*, u8*, uintptr_t);
96void unpack_tile_sync(Gfx*, u8*, s8);
97void unpack_tile_load_sync(Gfx*, u8*, s8);
98void unpack_texture_on(Gfx*, u8*, s8);
99void unpack_texture_off(Gfx*, u8*, s8);
100void load_course(s32);
101uintptr_t set_segment_base_addr_x64(s32, void*);
102
104
105#endif // MEMORY_H
void unpack_render_mode_translucent(Gfx *, u8 *, uintptr_t)
void * get_segment_base_addr(s32)
Returns the physical memory location of a segment.
Definition memory.c:95
void unpack_lights(Gfx *, u8 *, s8)
void unpack_combine_mode1(Gfx *, u8 *, uintptr_t)
void main_pool_init(uintptr_t, uintptr_t)
Definition memory.c:299
void initialize_memory_pool(void)
Sets the starting location for allocating memory and calculates pool size.
Definition memory.c:237
void func_802A8844(void)
Definition memory.c:663
void unpack_combine_mode4(Gfx *, u8 *, uintptr_t)
void * segment_offset_to_virtual(uint32_t, uint32_t)
Definition memory.c:110
void func_802A86A8(CourseVtx *data, Vtx *vtx, size_t arg1)
Definition memory.c:599
uintptr_t MIO0_0F(u8 *, uintptr_t, uintptr_t)
Definition memory.c:579
void * func_802A80B0(u8 *, u8 *, u8 *)
Definition memory.c:410
u8 * load_lakitu_tlut_x64(const char **textureList, size_t length)
Definition memory.c:1552
uintptr_t main_pool_pop_state(void)
Definition memory.c:402
uintptr_t set_segment_base_addr(s32, void *)
Stores the physical memory addr for segmented memory in gSegmentTable using the segment number as an ...
Definition memory.c:81
void unpack_texture_on(Gfx *, u8 *, s8)
void func_802A81EC(void)
Definition memory.c:451
u8 _other_texturesSegmentRomStart[]
struct AllocOnlyPool * alloc_only_pool_init(uintptr_t, uintptr_t)
Definition memory.c:468
void load_course(s32)
Loads & DMAs course data. Vtx, textures, displaylists, etc.
Definition memory.c:1576
u8 * dma_textures(const char *texture, size_t arg1, size_t arg2)
Definition memory.c:553
void unpack_render_mode_opaque_decal(Gfx *, u8 *, uintptr_t)
void unpack_render_mode_translucent_decal(Gfx *, u8 *, uintptr_t)
void * decompress_segments(u8 *, u8 *)
Definition memory.c:1524
void * main_pool_alloc(uintptr_t, uintptr_t)
Definition memory.c:318
void * load_data(uintptr_t, uintptr_t)
Allocate and DMA.
Definition memory.c:288
uintptr_t main_pool_push_state(void)
Definition memory.c:384
void unpack_tile_sync(Gfx *, u8 *, s8)
Definition memory.c:794
void unpack_combine_mode5(Gfx *, u8 *, uintptr_t)
void displaylist_unpack(uintptr_t *data, uintptr_t finalDisplaylistOffset, u32 arg2)
Definition memory.c:1169
void unpack_set_geometry_mode(Gfx *, u8 *, s8)
void move_segment_table_to_dmem(void)
Definition memory.c:224
void unpack_clear_geometry_mode(Gfx *, u8 *, s8)
uintptr_t func_802A82AC(s32)
Definition memory.c:484
void * segmented_to_virtual(const void *)
converts an RSP segment + offset address to a normal memory address
Definition memory.c:102
void * get_next_available_memory_addr(uintptr_t)
Returns the address of the next available memory location and updates the memory pointer to reference...
Definition memory.c:57
void unpack_combine_mode_shade(Gfx *, u8 *, uintptr_t)
void unpack_texture_off(Gfx *, u8 *, s8)
void unpack_combine_mode2(Gfx *, u8 *, uintptr_t)
Gfx * segmented_gfx_to_virtual(const void *)
Definition memory.c:145
void unpack_render_mode_tex_edge(Gfx *, u8 *, uintptr_t)
void * main_pool_realloc(void *, uintptr_t)
Definition memory.c:369
void * segment_vtx_to_virtual(size_t offset)
Definition memory.c:114
void unpack_end_displaylist(Gfx *, u8 *, s8)
uintptr_t main_pool_free(void *)
Definition memory.c:347
uintptr_t func_802A8348(s32, s32, s32)
Definition memory.c:512
uintptr_t set_segment_base_addr_x64(s32, void *)
Definition memory.c:86
void unpack_cull_displaylist(Gfx *, u8 *, s8)
void * allocate_memory(size_t)
Allocates memory and adjusts gFreeMemorySize.
Definition memory.c:257
void * segmented_uintptr_t_to_virtual(uintptr_t)
Definition memory.c:132
void func_802A7D54(s32, s32)
Definition memory.c:280
void unpack_tile_load_sync(Gfx *, u8 *, s8)
Definition memory.c:908
void unpack_displaylist(Gfx *, u8 *, s8)
void * segmented_texture_to_virtual(uintptr_t addr)
Definition memory.c:125
void unpack_render_mode_opaque(Gfx *, u8 *, uintptr_t)
void replace_segmented_textures_with_o2r_textures(Gfx *gfx, const course_texture *textures)
Definition memory.c:177
uintptr_t main_pool_available(void)
Definition memory.c:380
Definition memory.h:32
u8 * startPtr
Definition memory.h:35
s32 usedSpace
Definition memory.h:34
s32 totalSpace
Definition memory.h:33
u8 * freePtr
Definition memory.h:36
Definition common_structs.h:193
Definition memory.h:7
struct MainPoolBlock * prev
Definition memory.h:8
struct MainPoolBlock * next
Definition memory.h:9
Definition memory.h:12
struct MainPoolState * prev
Definition memory.h:16
uintptr_t freeSpace
Definition memory.h:13
struct MainPoolBlock * listHeadL
Definition memory.h:14
struct MainPoolBlock * listHeadR
Definition memory.h:15
Definition memory.h:19
s32 unk0
Definition memory.h:20
s32 unk4
Definition memory.h:21
Definition memory.h:24
s32 fill
Definition memory.h:29
s16 unk2
Definition memory.h:26
s32 unk8
Definition memory.h:28
s32 unk4
Definition memory.h:27
s16 unk0
Definition memory.h:25
Definition course_offsets.h:10