User Tools


    Site Tools

    banjo_kazooie:ram_map

    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
    banjo_kazooie/ram_map.txt · Last modified: by mittenz