Table of Contents

Banjo-Kazooie RAM Map

All RAM address below are for the NTSC-U 1.0 version of the game as it is the most commonly used version.


RAM Map Segments

Address Type Description
USA 1.0 USA 1.1 PAL JP
0x80000400 Static Bootloader
0x8002D500 Dynamic Heap
0x8023DA20 0x8023d680 0x8023E620 0x8023D680 Static Basic C Libraries Functions
0x80275610 0x80274570 0x80275470 0x80274570 Static Basic C Libraries Variables
0x80286F90 0x80285DD0 0x80286DB0 0x80285DD0 Static Game Engine Functions
0x80363590 0x80362790 0x80363A00 0x80363AD0 Static Game Engine Variables
0x803863F0 Static per Level Level Specific Code
Dynamic Stack
0x80400000 Free Expansion Pak

Static Variables

Bootloader

Address Type Description

C Libraries

Address Type Description

Game Engine

Address Type Description
0x8037C0E0 model* Player model pointer
0x8037C0E4 u16 modelFileIndex Player model file index
0x8037C0E6 u8 Player model opacity
0x8037C0E7 u8 Player facing banjo or kazooie; 1=Banjo, 2=Kazooie
0x8037C0E8 u8 bool Player visible flag
0x8037C0EC float Player model scale
0x8037C0E0 float Player model rotation X
0x8037C0EC float Player model rotation Z
0x8037C0EC float Player model rotation Y

—-

Static Functions

Bootloader

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

C Libraries

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
0x80255358 expandArray void* $a0 srcPtr void* expands exisitng dynamic array
uint $a1 size
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 = abs(src1)+abs(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

Game Engine

Address Name Inputs Output Description
0x8028DE0C spawn_CarriedObject $a0 objectSpawnIndex void spawns object relative to banjo, sets it as carried object, and puts banjo in carrying movement state
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
0x802C4140 spawnObject u32 $a0 objectSpawnIndex void spawns object at position with 0 rotation
float $a1 XPos
float $a2 YPos
float $a3 ZPos
0x802C4158 spawn_Object $a0 objectSpawnIndex void spawns object at position with 0 rotation
float $a1 XPos
float $a2 YPos
float $a3 ZPos
0x803056FC spawn_Object $a0 objectSpawnIndex void spawns object at position and rotation
vec3_f $a1 posPtr
float $a2 YRotation
0x8032811C spawn_Object $a0 objectSpawnIndex void spawns object at position and rotation
vec3_f $a1 posPtr
float $a2 YRotation
0x8032813C spawn_Object $a0 objectSpawnIndex void spawns object at position and rotation
vec3_f $a1 posPtr
float $a2 YRotation
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