Mario Kart 64
Loading...
Searching...
No Matches
memory.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  MainPoolBlock
 
struct  MainPoolState
 
struct  UnkStruct802AF7B4
 
struct  UnkStruct_802B8CD4
 
struct  AllocOnlyPool
 

Macros

#define MEMORY_POOL_LEFT   0
 
#define MEMORY_POOL_RIGHT   1
 
#define ALIGN4(val)   (((val) + 0x3) & ~0x3)
 

Functions

void * get_next_available_memory_addr (uintptr_t)
 Returns the address of the next available memory location and updates the memory pointer to reference the next location of available memory based provided size to allocate.
 
uintptr_t set_segment_base_addr (s32, void *)
 Stores the physical memory addr for segmented memory in gSegmentTable using the segment number as an index.
 
void * get_segment_base_addr (s32)
 Returns the physical memory location of a segment.
 
void * segmented_to_virtual (const void *)
 converts an RSP segment + offset address to a normal memory address
 
void move_segment_table_to_dmem (void)
 
void initialize_memory_pool (uintptr_t, uintptr_t)
 Sets the starting location for allocating memory and calculates pool size.
 
void * decompress_segments (u8 *, u8 *)
 
void * allocate_memory (size_t)
 Allocates memory and adjusts gFreeMemorySize.
 
void * load_data (uintptr_t, uintptr_t)
 Allocate and DMA.
 
void func_802A7D54 (s32, s32)
 
void main_pool_init (uintptr_t, uintptr_t)
 
void * main_pool_alloc (uintptr_t, uintptr_t)
 
uintptr_t main_pool_free (void *)
 
void * main_pool_realloc (void *, uintptr_t)
 
uintptr_t main_pool_available (void)
 
uintptr_t main_pool_push_state (void)
 
uintptr_t main_pool_pop_state (void)
 
void * func_802A80B0 (u8 *, u8 *, u8 *)
 
void func_802A81EC (void)
 
struct AllocOnlyPoolalloc_only_pool_init (uintptr_t, uintptr_t)
 
uintptr_t func_802A82AC (s32)
 
uintptr_t func_802A8348 (s32, s32, s32)
 
u8dma_textures (u8 *, u32, u32)
 
uintptr_t MIO0_0F (u8 *, uintptr_t, uintptr_t)
 
void func_802A8844 (void)
 
void unpack_lights (Gfx *, u8 *, s8)
 
void unpack_displaylist (Gfx *, u8 *, s8)
 
void unpack_end_displaylist (Gfx *, u8 *, s8)
 
void unpack_set_geometry_mode (Gfx *, u8 *, s8)
 
void unpack_clear_geometry_mode (Gfx *, u8 *, s8)
 
void unpack_cull_displaylist (Gfx *, u8 *, s8)
 
void unpack_combine_mode1 (Gfx *, u8 *, uintptr_t)
 
void unpack_combine_mode2 (Gfx *, u8 *, uintptr_t)
 
void unpack_combine_mode_shade (Gfx *, u8 *, uintptr_t)
 
void unpack_combine_mode4 (Gfx *, u8 *, uintptr_t)
 
void unpack_combine_mode5 (Gfx *, u8 *, uintptr_t)
 
void unpack_render_mode_opaque (Gfx *, u8 *, uintptr_t)
 
void unpack_render_mode_tex_edge (Gfx *, u8 *, uintptr_t)
 
void unpack_render_mode_translucent (Gfx *, u8 *, uintptr_t)
 
void unpack_render_mode_opaque_decal (Gfx *, u8 *, uintptr_t)
 
void unpack_render_mode_translucent_decal (Gfx *, u8 *, uintptr_t)
 
void unpack_tile_sync (Gfx *, u8 *, s8)
 
void unpack_tile_load_sync (Gfx *, u8 *, s8)
 
void unpack_texture_on (Gfx *, u8 *, s8)
 
void unpack_texture_off (Gfx *, u8 *, s8)
 
u8load_course (s32)
 Loads & DMAs course data. Vtx, textures, displaylists, etc.
 

Variables

f32 vtxStretchY
 
u8 _other_texturesSegmentRomStart []
 

Macro Definition Documentation

◆ ALIGN4

#define ALIGN4 ( val)    (((val) + 0x3) & ~0x3)

◆ MEMORY_POOL_LEFT

#define MEMORY_POOL_LEFT   0

◆ MEMORY_POOL_RIGHT

#define MEMORY_POOL_RIGHT   1

Function Documentation

◆ alloc_only_pool_init()

struct AllocOnlyPool * alloc_only_pool_init ( uintptr_t size,
uintptr_t side )
Here is the call graph for this function:

◆ allocate_memory()

void * allocate_memory ( size_t size)

Allocates memory and adjusts gFreeMemorySize.

Here is the caller graph for this function:

◆ decompress_segments()

void * decompress_segments ( u8 * start,
u8 * end )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ dma_textures()

u8 * dma_textures ( u8 * ,
u32 ,
u32  )

◆ func_802A7D54()

void func_802A7D54 ( s32 arg0,
s32 arg1 )

◆ func_802A80B0()

void * func_802A80B0 ( u8 * dest,
u8 * srcStart,
u8 * srcEnd )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ func_802A81EC()

void func_802A81EC ( void )
Here is the call graph for this function:

◆ func_802A82AC()

uintptr_t func_802A82AC ( s32 arg0)

◆ func_802A8348()

uintptr_t func_802A8348 ( s32 arg0,
s32 arg1,
s32 arg2 )
Here is the call graph for this function:

◆ func_802A8844()

void func_802A8844 ( void )

◆ get_next_available_memory_addr()

void * get_next_available_memory_addr ( uintptr_t size)

Returns the address of the next available memory location and updates the memory pointer to reference the next location of available memory based provided size to allocate.

Parameters
sizeof memory to allocate.
Returns
Address of free memory
Here is the caller graph for this function:

◆ get_segment_base_addr()

void * get_segment_base_addr ( s32 segment)

Returns the physical memory location of a segment.

Parameters
permitssegment numbers from 0x0 to 0xF.

◆ initialize_memory_pool()

void initialize_memory_pool ( uintptr_t poolStart,
uintptr_t poolEnd )

Sets the starting location for allocating memory and calculates pool size.

Default memory size, 701.984 Kilobytes.

Here is the caller graph for this function:

◆ load_course()

u8 * load_course ( s32 courseId)

Loads & DMAs course data. Vtx, textures, displaylists, etc.

Parameters
courseId
Here is the call graph for this function:
Here is the caller graph for this function:

◆ load_data()

void * load_data ( uintptr_t startAddr,
uintptr_t endAddr )

Allocate and DMA.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ main_pool_alloc()

void * main_pool_alloc ( uintptr_t size,
uintptr_t side )

Allocate a block of memory from the pool of given size, and from the specified side of the pool (MEMORY_POOL_LEFT or MEMORY_POOL_RIGHT). If there is not enough space, return NULL.

Here is the caller graph for this function:

◆ main_pool_available()

uintptr_t main_pool_available ( void )

◆ main_pool_free()

uintptr_t main_pool_free ( void * addr)

Free a block of memory that was allocated from the pool. The block must be the most recently allocated block from its end of the pool, otherwise all newer blocks are freed as well. Return the amount of free space left in the pool.

Here is the caller graph for this function:

◆ main_pool_init()

void main_pool_init ( uintptr_t start,
uintptr_t end )

◆ main_pool_pop_state()

uintptr_t main_pool_pop_state ( void )

Restore pool state from a previous call to main_pool_push_state. Return the amount of free space left in the pool.

◆ main_pool_push_state()

uintptr_t main_pool_push_state ( void )
Here is the call graph for this function:

◆ main_pool_realloc()

void * main_pool_realloc ( void * addr,
uintptr_t size )
Here is the call graph for this function:

◆ MIO0_0F()

uintptr_t MIO0_0F ( u8 * arg0,
uintptr_t arg1,
uintptr_t arg2 )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ move_segment_table_to_dmem()

void move_segment_table_to_dmem ( void )
Here is the caller graph for this function:

◆ segmented_to_virtual()

void * segmented_to_virtual ( const void * addr)

converts an RSP segment + offset address to a normal memory address

Here is the caller graph for this function:

◆ set_segment_base_addr()

uintptr_t set_segment_base_addr ( s32 segment,
void * addr )

Stores the physical memory addr for segmented memory in gSegmentTable using the segment number as an index.

This function takes a segment number and a pointer to a memory address, and stores the address in the gSegmentTable array at the specified segment index. The stored address is truncated to a 29-bit value to ensure that it fits within the memory address. This allows converting between segmented memory and physical memory.

Parameters
segmentA segment number from 0x0 to 0xF to set the base address.
addrA pointer containing the physical memory address of the data.
Returns
The stored base address, truncated to a 29-bit value.
Here is the caller graph for this function:

◆ unpack_clear_geometry_mode()

void unpack_clear_geometry_mode ( Gfx * ,
u8 * ,
s8  )

◆ unpack_combine_mode1()

void unpack_combine_mode1 ( Gfx * ,
u8 * ,
uintptr_t  )

◆ unpack_combine_mode2()

void unpack_combine_mode2 ( Gfx * ,
u8 * ,
uintptr_t  )

◆ unpack_combine_mode4()

void unpack_combine_mode4 ( Gfx * ,
u8 * ,
uintptr_t  )

◆ unpack_combine_mode5()

void unpack_combine_mode5 ( Gfx * ,
u8 * ,
uintptr_t  )

◆ unpack_combine_mode_shade()

void unpack_combine_mode_shade ( Gfx * ,
u8 * ,
uintptr_t  )

◆ unpack_cull_displaylist()

void unpack_cull_displaylist ( Gfx * ,
u8 * ,
s8  )

◆ unpack_displaylist()

void unpack_displaylist ( Gfx * ,
u8 * ,
s8  )

◆ unpack_end_displaylist()

void unpack_end_displaylist ( Gfx * ,
u8 * ,
s8  )

◆ unpack_lights()

void unpack_lights ( Gfx * ,
u8 * ,
s8  )

◆ unpack_render_mode_opaque()

void unpack_render_mode_opaque ( Gfx * ,
u8 * ,
uintptr_t  )

◆ unpack_render_mode_opaque_decal()

void unpack_render_mode_opaque_decal ( Gfx * ,
u8 * ,
uintptr_t  )

◆ unpack_render_mode_tex_edge()

void unpack_render_mode_tex_edge ( Gfx * ,
u8 * ,
uintptr_t  )

◆ unpack_render_mode_translucent()

void unpack_render_mode_translucent ( Gfx * ,
u8 * ,
uintptr_t  )

◆ unpack_render_mode_translucent_decal()

void unpack_render_mode_translucent_decal ( Gfx * ,
u8 * ,
uintptr_t  )

◆ unpack_set_geometry_mode()

void unpack_set_geometry_mode ( Gfx * ,
u8 * ,
s8  )

◆ unpack_texture_off()

void unpack_texture_off ( Gfx * ,
u8 * ,
s8  )

◆ unpack_texture_on()

void unpack_texture_on ( Gfx * ,
u8 * ,
s8  )

◆ unpack_tile_load_sync()

void unpack_tile_load_sync ( Gfx * gfx,
u8 * args,
s8 opcode )
Here is the caller graph for this function:

◆ unpack_tile_sync()

void unpack_tile_sync ( Gfx * gfx,
u8 * args,
s8 opcode )
Here is the caller graph for this function:

Variable Documentation

◆ _other_texturesSegmentRomStart

u8 _other_texturesSegmentRomStart[]
extern

◆ vtxStretchY

f32 vtxStretchY
extern