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
9};
10
17
19 s32 unk0;
20 s32 unk4;
21};
22
24 s16 unk0;
25 s16 unk2;
26 s32 unk4;
27 s32 unk8;
28 s32 fill;
29};
30
37
38#define MEMORY_POOL_LEFT 0
39#define MEMORY_POOL_RIGHT 1
40
41#define ALIGN4(val) (((val) + 0x3) & ~0x3)
42
43extern f32 vtxStretchY;
44
45u8* load_lakitu_tlut_x64(const char** textureList, size_t length);
46void* get_next_available_memory_addr(uintptr_t);
47uintptr_t set_segment_base_addr(s32, void*);
48void* get_segment_base_addr(s32);
49void* segmented_to_virtual(const void*);
50void* segment_offset_to_virtual(uint32_t, uint32_t);
51void* segment_vtx_to_virtual(size_t offset);
52void* segmented_texture_to_virtual(uintptr_t addr);
53void* segmented_uintptr_t_to_virtual(uintptr_t);
54Gfx* 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*, size_t, size_t);
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
f32 vtxStretchY
Definition code_800029B0.c:68
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:232
void initialize_memory_pool(void)
Sets the starting location for allocating memory and calculates pool size.
Definition memory.c:170
void func_802A8844(void)
Definition memory.c:597
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:533
uintptr_t MIO0_0F(u8 *, uintptr_t, uintptr_t)
Definition memory.c:513
void * func_802A80B0(u8 *, u8 *, u8 *)
Definition memory.c:343
u8 * load_lakitu_tlut_x64(const char **textureList, size_t length)
Definition memory.c:1486
uintptr_t main_pool_pop_state(void)
Definition memory.c:335
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:384
u8 _other_texturesSegmentRomStart[]
struct AllocOnlyPool * alloc_only_pool_init(uintptr_t, uintptr_t)
Definition memory.c:401
void load_course(s32)
Loads & DMAs course data. Vtx, textures, displaylists, etc.
Definition memory.c:1510
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:1458
void * main_pool_alloc(uintptr_t, uintptr_t)
Definition memory.c:251
void * load_data(uintptr_t, uintptr_t)
Allocate and DMA.
Definition memory.c:221
uintptr_t main_pool_push_state(void)
Definition memory.c:317
void unpack_tile_sync(Gfx *, u8 *, s8)
Definition memory.c:728
void unpack_combine_mode5(Gfx *, u8 *, uintptr_t)
void displaylist_unpack(uintptr_t *data, uintptr_t finalDisplaylistOffset, u32 arg2)
Definition memory.c:1103
void unpack_set_geometry_mode(Gfx *, u8 *, s8)
void move_segment_table_to_dmem(void)
Definition memory.c:157
void unpack_clear_geometry_mode(Gfx *, u8 *, s8)
uintptr_t func_802A82AC(s32)
Definition memory.c:417
u8 * dma_textures(const char *, size_t, size_t)
Definition memory.c:486
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:302
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:280
uintptr_t func_802A8348(s32, s32, s32)
Definition memory.c:445
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:190
void * segmented_uintptr_t_to_virtual(uintptr_t)
Definition memory.c:132
void func_802A7D54(s32, s32)
Definition memory.c:213
void unpack_tile_load_sync(Gfx *, u8 *, s8)
Definition memory.c:842
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)
uintptr_t main_pool_available(void)
Definition memory.c:313
Definition memory.h:31
u8 * startPtr
Definition memory.h:34
s32 usedSpace
Definition memory.h:33
s32 totalSpace
Definition memory.h:32
u8 * freePtr
Definition memory.h:35
Definition common_structs.h:193
Definition memory.h:6
struct MainPoolBlock * prev
Definition memory.h:7
struct MainPoolBlock * next
Definition memory.h:8
Definition memory.h:11
struct MainPoolState * prev
Definition memory.h:15
uintptr_t freeSpace
Definition memory.h:12
struct MainPoolBlock * listHeadL
Definition memory.h:13
struct MainPoolBlock * listHeadR
Definition memory.h:14
Definition memory.h:18
s32 unk0
Definition memory.h:19
s32 unk4
Definition memory.h:20
Definition memory.h:23
s32 fill
Definition memory.h:28
s16 unk2
Definition memory.h:25
s32 unk8
Definition memory.h:27
s32 unk4
Definition memory.h:26
s16 unk0
Definition memory.h:24