From CloudModding OoT Wiki

DMA

DMA read function

80000DF0

  • A0 = Address to load into
  • A1 = Address to read from
  • A2 = Size
  • SP+00 returns the space loaded to?
  • SP+04 returns DMA location
  • SP+08 returns Size

Unsorted

800005A0

800005A0

Low level function, calls 800A1C50

Return Instruction Count

80004D50

  • V0 is assigned to the number of instructions executed

Copy RAM

80057030

  • A0 = Destination Address
  • A1 = Source Address
  • A2 = Length

Main Game Constructor Function

8009A750

  • A0 = Game Play

Quite massive. Performs various checks and calls to create the playable game world (non file select). Called once every time a new area is loaded (twice for Silver Gauntlet's chest though?)

If entrance index (u32, 0x0000 into the "SRAM" block) is -1, this seems to load ovl_opening

Main Boot Routine?

800A1C50

Seems to initialize mem/checks state of Disk Drive software

Disk Drive boot routine

800AD410

Writes to 80121211, which possibly stores whether info can be loaded from the Disk Drive


File Select

Create New File

80090C18

//0C4C sets start entrance index. Irrelevant due to save warp correction routine
//0C50 sets age
//0C54 sets time of day
//0C58 sets initial cutscene

Load Save File

800902AC Related to spawning Link from save. Execution branches based on a table located at 0xB7EA40 (80108AE0) within code.


Memory

Allocate Main Heap

800CD390

  • A0 = Block Start Address
  • A1 = Block Size

Allocates space for the main heap, and stores a reference to this heap at 8012BAA0

Allocate Memory on Main Heap

800CDA20

  • A0 = Space to allocate
  • V0 is assigned to the pointer to the heap node containing the allocated space

Allocates a block of space on the main heap.

Allocate Heap

800CDD90

  • A0 = Pointer to structure that will reference the heap
  • A1 = Block Start Address
  • A2 = Block Size
  • V0 is assigned to the address the heap is stored at.

Creates a heap space with an initial node, and attaches it to some structure. If the start address is not aligned to a 0x10 boundary, the space will be aligned to the next aligned address. Seems to only be called when allocating the main heap, and the "actor space" heap within the main heap.