Hack64 Wiki
Other Titles
Hack64 Wiki
Other Titles
This is an old revision of the document!
All RAM address below are for the NTSC-U 1.0 version of the game as it is the most commonly used version.
| Address | Type | Description | 
|---|---|---|
| 0x80000400 | Static | Bootloader | 
| 0x8002D500 | Dynamic | Heap | 
| 0x8023DA20 | Static | Basic C Libraries Functions | 
| 0x80275610 | Static | Basic C Libraries Variables | 
| 0x80286F90 | Static | Game Engine Functions | 
| 0x80363590 | Static | Game Engine Variables | 
| 0x803863F0 | Static per Level | Level Specific Code | 
| Dynamic | Stack | |
| 0x80400000 | Free | Expansion Pak | 
| Address | Type | Description | 
|---|
| Address | Type | Description | 
|---|
| Address | Type | Description | 
|---|
| Address | Name | Inputs | Output | Description | 
|---|---|---|---|---|
| 0x80002000 | DMA_transfer | bool $a0 direction | performs DMA transfer, ROM to RAM (0) or RAM to ROM (1) | |
| u32* $a1 ROM_Addr | ||||
| u32* $a2 RAM_Addr | ||||
| u32 $a3 size | ||||
| 0x800020E0 | get_DMA_SR | void | u32 | returns DMA status register | 
| Address | Name | Inputs | Output | Description | ||||
|---|---|---|---|---|---|---|---|---|
| ox8024F764 | loadMusicFile | u32 $z0 musicFIleIndex | void | loads music file into RAM | ||||
| 0x80254608 | memcpy | u8* $a0 dest | void | bitwise copy of memory for source to destination | ||||
| u8* $a1 src | ||||||||
| u32 $a2 size | ||||||||
| 0x80254630 | memcpy_fast | u32* $a0 dest | void | wordwise copy of memory for source to destination | ||||
| u32* $a1 src | ||||||||
| u32 $a2 size | ||||||||
| 0x80254710 | heap_init | void | void | initialize heap | ||||
| 0x80254CA8 | malloc | u32 $a0 size | void* | returns address of heap segment of specified size | ||||
| 0x802550F0 | free | void* $a0 ptr | void | frees heap segment | ||||
| 0x802588DC | max | float $f12 f1 | float | returns maximum of 2 floats | ||||
| float $f14 f2 | ||||||||
| 0x80258904 | min | float $f12 f1 | float | returns minimum of 2 floats | ||||
| float $f14 f2 | ||||||||
| 0x8025892C | max | u32 $a0 int1 | u32 | returns maximum of 2 ints | ||||
| u32 $a1 int2 | ||||||||
| 0x80258948 | min | u32 $a0 int1 | u32 | returns minimum of 2 ints | ||||
| u32 $a1 int2 | ||||||||
| 0x80258964 | abs | float $f12 input | float | returns absolute value of float | ||||
| 0x802589CC | abs | S32 $a0 input | u32 | returns absolute value of int | ||||
| 0x80258B8C | zero_Vec3 | vec3_f* $a0 XYZ | void | clears 3D float vector | ||||
| 0x80258BA4 | copy_Vec3 | vec3_f* $a0 dest | void | copies 3D float vector from source to destination | ||||
| vec3_f* $a1 src | ||||||||
| 0x80258BC0 | diff_Vec3 | vec3_f* $a0 dest | void | dest = (src1 - src2) | ||||
| vec3_f* $a1 src1 | ||||||||
| vec3_f* $a2 src2 | ||||||||
| 0x80258BF4 | diff_Vec3 | vec3_f* $a0 src1 | void | src1 = (src1 - src2) | ||||
| vec3_f* $a1 src2 | ||||||||
| 0x80258C28 | set_Vec3 | vec3_f* $a0 dest | void | sets xyz vector | ||||
| float $a1 X | ||||||||
| float $a2 Y | ||||||||
| float $a3 Z | ||||||||
| 0x80258C48 | add_Vec3 | vec3_f* $a0 dest | void | dest = (src1 + src2) | ||||
| vec3_f* $a1 src1 | ||||||||
| vec3_f* $a2 src2 | ||||||||
| 0x80258C7C | scale_Vec3 | vec3_f* $a0 src | void | scales src by scaler | ||||
| float $a1 scaler | ||||||||
| 0x80258CB0 | scale_Vec3 | vec3_f* $a0 dest | void | sets destination vector to src scaled by scaler | ||||
| vec3_f* $a1 src | ||||||||
| float $a2 scaler | ||||||||
| 0x80258CDC | addAbs_Vec3 | vec3_f* $a0 src1 | void | src1 = | src1 | + | Src2 | |
| vec3_f* $a1 src2 | ||||||||
| 0x80258D68 | cnvtFToW_Vec3 | vec3_w* $a0 dest | void | converts float vector to word vector | ||||
| vec3_f* $a1 src | ||||||||
| 0x80258DA8 | cnvtFToH_Vec3 | vec3_h* $a0 dest | void | converts float vector to half vector | ||||
| vec3_f* $a1 src | ||||||||
| 0x80258DE8 | tuncFToW_Vec3 | vec3_w* $a0 dest | void | truncates float vector to word vector | ||||
| vec3_f* $a1 src | ||||||||
| 0x80258E24 | tuncFToH_Vec3 | vec3_h* $a0 dest | void | truncates float vector to half vector | ||||
| vec3_f* $a1 src | ||||||||
| Address | Name | Inputs | Output | Description | 
|---|---|---|---|---|
| 0x8028F3B8 | unlockMove | $a0 moveIndex | void | unlocks specific move | 
| 0x80291E88 | freePlayerModel | void | void | frees the player's model from memory | 
| 0x80291FA0 | get_PlayerModel | void | model* | returns pointer to player's model in RAM | 
| 0x80291FAC | get_PlayerModelFileIndex | void | modelFileIndex | returns index to player's model | 
| 0x80291FB8 | set_PlayerModelOpacity | u8 $a0 opacity | void | sets player's opacity | 
| 0x80291FC4 | set_PlayerModel | model* $a0 modelPtr | void | sets player's model | 
| 0x80292194 | set_PlayerModelScale | float $f12 scale | void | sets player's model scale | 
| 0x80292194 | set_PlayerModelXYZDisjoint | vec3* $a0 disjointXYZ | void | sets player's model position disjoint amount | 
| 0x802921BC | set_PlayerModelYDisjoint | float $f12 disjointY | void | sets player's model Y position disjoint amount | 
| 0x802921C8 | set_PlayerModelVisibe | bool $a0 visibleFlag | void | sets player's model visible flag | 
| 0x80292548 | is_PlayerModelVisibe | void | bool | returns player's model visible flag | 
| 0x802957D8 | is_moveUnlocked | $a0 moveIndex | bool | checks if specific move is unlocked | 
| 0x802957F0 | get_unlockedMovesBitfield | void | u32 | returns bitfield of unlocked moves | 
| 0x80295804 | lockAllMoves | void | void | locks all moves | 
| 0x8029AF50 | normalizeFloat | float $f12 input | float | returns float normalized to range | 
| float $f14 lowerLimit | ||||
| float $a2 upperLimit | ||||
| 0x8029B62C | deathWarp | void | void | Causes Deathwarp | 
| 0x8029B6F0 | voidOut | void | void | Causes void out | 
| 0x8033D5D0 | strcat | char* $a0 dest | void | concatenates source string to destination string | 
| char* $a1 scr | ||||
| 0x8033D6A8 | strcat | char* $a0 dest | void | concatenates character to destination string | 
| char $a1 scr | ||||
| 0x8033D6E0 | FToA | char* $a0 dest | void | concatenates float to destination string (2 decimal places) | 
| float $a1 scr | ||||
| 0x8033D7B0 | FToA | char* $a0 dest | void | concatenates float to destination string | 
| float $a1 scr | ||||
| u32 $a2 deciPlace | ||||
| 0x8033D884 | IToA | char* $a0 dest | void | concatenates int to destination string (base 10) | 
| s32 $a1 scr | ||||
| 0x8033D8A4 | IToA | char* $a0 dest | void | concatenates float to destination string | 
| s32 $a1 scr | ||||
| u32 $a2 base | ||||
| 0x8033D9D4 | strcmp | char* $a0 str1 | u32 | compares 2 strings | 
| char* $a1 str2 | ||||
| 0x8033DA54 | strcpy | char* $a0 dest | void | copies source string to destination string | 
| char* $a1 src | ||||
| 0x8033DA80 | strlen | char* $a0 str | u32 | returns string length | 
| 0x8033DAB0 | strcmp2tok | char* $a0 str1 | u32 | compares 2 strings up to delimiter | 
| char* $a1 str2 | ||||
| char* $a2 delim | ||||
| 0x8033DB18 | strtok | char* $a0 str | char* | returns location of first delimiter in string | 
| char* $a1 delim | ||||
| 0x8033DB60 | strcpy2tok | char* $a0 dest | void | copies source string to destination string up to delimiter | 
| char* $a1 src | ||||
| char* $a2 delim | ||||
| 0x8033DBA4 | toupper | char* $a0 str | void | converts string to uppercase |