/

Login

Username:

Password:

Register

Username:

Password:

Password confirm:

Email:

rom map notes
$7E:0000 2 bytes Sound

SPC transaction id, incremented after every SPC transfer. The high byte is never written or read from and can be effectively used as free RAM.

$7E:001C 2 bytes Sound

Song for the current level

$7E:001E 2 bytes Sound

Toggle for stereo and mono. Mono is 1, Stereo is zero.

$7E:0020 2 bytes Pointer

Points to the current NMI routine.

$7E:0024 2 bytes Pointer

Points to the current game loop entry.

$7E:002A 2 bytes Misc.

Active frame counter (Doesn't run when paused)

$7E:002C 2 bytes Misc.

Global frame counter

$7E:002E 4 bytes Misc.

This is the state for the random number generator. $2E is the value returned from the three RNG routines.

$7E:0032 30 bytes Misc.

Scratch RAM used throughout DKC2.

$7E:0056 2 bytes Sprites

Index into the OAM size mirror

$7E:005E 2 bytes Palette

Index into the sprite palette slot ($0B64).

$7E:0064 2 bytes Sprites

Index to the sprite currently being processed.

$7E:0066 2 bytes Sprites

Pointer to kong control variables for kong currently being processed.

$7E:0068 2 bytes Sprites

Alternate sprite index, often used during sprite spawning or when there is a need to reference another sprite. (child sprite)

$7E:006A 2 bytes Sprites

Alternate sprite index, used during collision with the current sprite.

$7E:006C 2 bytes Sprites

Holds the address of the animal that the player is mounted on in the sprite table, or zero if the player isn't mounted.

$7E:006E 2 bytes Player

What type of animal sprite the player is/is riding.

Possible animal sprite numbers:
0190 - Squitter
0194 - Rattly
0198 - Squawks
019C - Rambi
01A0 - Enguarde

$7E:0070 2 bytes Sprites

Index into the next available OAM mirror slot.

$7E:007A 2 bytes Engine

Mode 7 vertical scale #$0100 is the default.

$7E:007C 2 bytes Engine

Mode 7 horizontal scale #$0100 is the default.

$7E:007E 2 bytes Mirror

Mode 7 parameter D hardware mirror.

$7E:0080 2 bytes Mirror

Mode 7 parameter C hardware mirror.

$7E:0082 2 bytes Mirror

Mode 7 parameter B hardware mirror.

$7E:0084 2 bytes Engine

Mode 7 rotation factor.

$7E:0086 2 bytes Mirror

Mode 7 parameter A hardware mirror.

$7E:0088 2 bytes Terrain

Specifies the slope steepness threshold for if kongs are able to traverse them or not.

$7E:0092 1 bytes Player

This address contains the current action that the player is preforming. Current known values include:
00- Player is on the ground
01- Player has jumped
02- Lose a player?
03- Cartwheel
04- Lose a life
05- Ducking
07- Player is riding Rambi/Rattly
08- Player jumped with Rambi/Rattly
09- Holding a barrel
0A- Throwing a barrel
0C- Used in stun like states(hit by Klobber, monkey thrown in air, charging with Rambi, etc)
0D- Used in directional blast barrels
0E- In a barrel (Transformation barrel, blast barrel, cannon etc)
0F- Stacked monkeys
10- Jump with stacked monkeys
11- Throw a monkey
12- Used when starting a throw
13- Climbing on a rope
14- Holding two ropes
15- Hanging down from a rope
16- Hanging from a hook
17- Swimming in water
18- On a honey wall
19- Standing in honey
1A- Held by a purple squawks
1B- Held by a green(normal) squawks
1D- Being spun by cat `o nine tails
1E- Riding Enguarde
1F- Stunned and can't move (Such as from Klubba or K. Rool gas)
20- On a Skull cart
21- Being blown up by wind
23- Waiting for co-op player
24- Carrying an object while stuck on honey
25- Charging with Rambi

$7E:0094 2 bytes Index

This is used to index a pointer table for the NMI routines to run in the main game loop.

$7E:0096 2 bytes Index

This is used to index a pointer table for the game logic routines to run in the main game loop.

$7E:0098 3 bytes Pointer

Used as an indirect pointer for the layer 1 tilemap.

$7E:009C 3 bytes Pointer

Pointer to the collision tilemap for the current level.

$7E:00A0 2 bytes Terrain

Number of collision tiles in the collision tilemap for the current level.

$7E:00D3 2 bytes Level

Hold the current level.

$7E:00D5 4 bytes Misc.

This is the timer of active game play frames.

$7E:00EB 1 bytes Controller

This is a flag that has to do with Y button functions.

$7E:00EF 2 bytes Palette

Index to the last ring buffer palette uploaded.

$7E:00F1 2 bytes Palette

Current index to the palette ring buffer. Range: 00 to 0F.

$7E:00F3 2 bytes Sprites

Sprite parameter from the sprite level data. Typically control the spawn routine used.

$7E:00F5 2 bytes Sprites

Sprite X position from the sprite level data.

$7E:00F7 2 bytes Sprites

Sprite Y position from the sprite level data.

$7E:00F9 2 bytes Sprites

Sprite config number from the sprite level data. This controls sprite number to load and copies in all required initialization for the given sprite.

$7E:00FB 2 bytes Sprites

Index into the sprite status table, this is stored to sprite offset 0x56 for each sprite.

$7E:0100 256 bytes Misc.

This is the stack for DKC2, usually not all of it is used, but $0100 to $01FF are reserved for potential use.

$7E:0200 544 bytes Mirror

This is a mirror of OAM, the first 512 bytes are the 128 OAM tiles, the latter 32 bytes are the size and most significant bit of X.

$7E:0500 2 bytes Misc.

Firework background flicker flag. Only the first bit appears to be set when the background should brighten from a firework in fairground levels.

$7E:0502 1 bytes Controller

Player One
$1, $2, $4, $8 = None; $10 = R; $20 = L; $40 = X; $80 = A

$7E:0503 1 bytes Controller

Player One
$1 = Right; $2 = Left; $4 = Down; $8 = Up; $10 = Start; $20 = Select; $40 = Y; $80 = B

$7E:0504 1 bytes Controller

Player Two
$1, $2, $4, $8 = None; $10 = R; $20 = L; $40 = X; $80 = A

$7E:0505 1 bytes Controller

Player Two
$1 = Right; $2 = Left; $4 = Down; $8 = Up; $10 = Start; $20 = Select; $40 = Y; $80 = B

$7E:0506 1 bytes Controller

Player One(1 frame press)
$1, $2, $4, $8 = None; $10 = R; $20 = L; $40 = X; $80 = A

$7E:0507 1 bytes Controller

Player One(1 frame press)
$1 = Right; $2 = Left; $4 = Down; $8 = Up; $10 = Start; $20 = Select; $40 = Y; $80 = B

$7E:0508 1 bytes Controller

Player Two(1 frame press)
$1, $2, $4, $8 = None; $10 = R; $20 = L; $40 = X; $80 = A

$7E:0509 1 bytes Controller

Player Two(1 frame press)
$1 = Right; $2 = Left; $4 = Down; $8 = Up; $10 = Start; $20 = Select; $40 = Y; $80 = B

$7E:050A 1 bytes Controller

Player One(1 frame release)
$1, $2, $4, $8 = None; $10 = R; $20 = L; $40 = X; $80 = A

$7E:050B 1 bytes Controller

Player One(1 frame release)
$1 = Right; $2 = Left; $4 = Down; $8 = Up; $10 = Start; $20 = Select; $40 = Y; $80 = B

$7E:050C 1 bytes Controller

Player Two(1 frame release)
$1, $2, $4, $8 = None; $10 = R; $20 = L; $40 = X; $80 = A

$7E:050D 1 bytes Controller

Player Two(1 frame release)
$1 = Right; $2 = Left; $4 = Down; $8 = Up; $10 = Start; $20 = Select; $40 = Y; $80 = B

$7E:050E 1 bytes Controller

Current Player
$1, $2, $4, $8 = None; $10 = R; $20 = L; $40 = X; $80 = A

$7E:050F 1 bytes Controller

Current Player
$1 = Right; $2 = Left; $4 = Down; $8 = Up; $10 = Start; $20 = Select; $40 = Y; $80 = B

$7E:0510 1 bytes Controller

Current Player(1 frame press)
$1, $2, $4, $8 = None; $10 = R; $20 = L; $40 = X; $80 = A

$7E:0511 1 bytes Controller

Current Player(1 frame press)
$1 = Right; $2 = Left; $4 = Down; $8 = Up; $10 = Start; $20 = Select; $40 = Y; $80 = B

$7E:0512 1 bytes Mirror

This address is a mirror of $2100/Screen brightness

$7E:0513 1 bytes Engine

Screen fade speed

$7E:0514 1 bytes Engine

Screen fade timer

$7E:0515 62 bytes Level

Main level config table.
This contains various attributes about the current level. There are 2 of these tables stored directly next to each other ($0515 and $0553).

Main address is the true address in RAM if the main table ($0515) is used.
Alt address is the true address in RAM if the alternate table ($0553) is used.
Index is the index into the table in RAM. Some routines access data this way while others may use the address directly.
Source is where the data is copied from in ROM (if applicable). Note that not all level configs in ROM are the same size so these are just generalizations.

main/alt address index source description
$0515/$0553 $00,x config+$00 level type
$0517/$0555 $02,x theme+$00 graphics init routine index
$0519/$0557 $04,x theme+$02 HDMA init routine index
$051B/$0559 $06,x theme+$04 music track index
$051D/$055B $08,x theme+$0A level init routine pointer (bank BB)
$051F/$055D $0A,x theme+$08 terrain slope init routine pointer (bank BB)
$0521/$055F $0C,x config+$07 start level with animal
$0523/$0561 $0E,x theme+$12 32x32 tilemap index
$0525/$0563 $10,x config+$04 level map number (tilemap layout)
$0527/$0565 $12,x theme+$0E level nmi routine index
$0529/$0567 $14,x theme+$10 level logic routine index
$052B/$0569 $16,x theme+$13 level effect flags
$052D/$056B $18,x config+$01 bonus type (does not exist in level config if normal level)
$052F/$056D $1A,x config unlocks additional map unlock temp id (level id to unlock)
$0531/$056F $1C,x config entrances entrances address (offset in level config varies)
$0533/$0571 $1E,x config entrances entrance x position
$0535/$0573 $20,x config entrances entrance y position
$0537/$0575 $22,x theme+$0C ppu setting script index
$0539/$0577 $24,x theme+$0D vram upload script index
$053B/$0579 $26,x calculated destination count
$053D/$057B $28,x config destinations+$00 level destination 1
$053F/$057D $2A,x config destinations+$02 level destination 2
$0541/$057F $2C,x config destinations+$04 level destination 3
$0543/$0581 $2E,x config destinations+$06 level destination 4
$0545/$0583 $30,x config destinations+$08 level destination 5
$0547/$0585 $32,x config destinations+$0A level destination 6
$0549/$0587 $34,x config destinations+$0C level destination 7
$054B/$0589 $36,x config destinations+$0E level destination 8
$054D/$058B $38,x config+$08 camera positioning (unknown)
$054F/$058D $3A,x config+$0A camera control
$0550/$058E $3B,x config+$0B entrance first byte (unknown)
$0551/$058F $3C,x config unlocks additional map unlocks data address (offset in level config varies)

$7E:0553 62 bytes Level

Alternate level config table.
This contains various attributes about the current level. There are 2 of these tables stored directly next to each other ($0515 and $0553). See $0515 above for further details.

$7E:0591 2 bytes Player

Similar to $595/$599, maybe for currently processed kong.

$7E:0593 2 bytes Player

Index of the current kong in the sprite table.
0x0DE2 = Diddy
0x0E40 = Dixie

$7E:0595 2 bytes Player

Pointer to kong control variables for active kong.

$7E:0597 2 bytes Sprites

Index of the inactive kong in the sprite table.
0x0DE2 = Diddy
0x0E40 = Dixie

$7E:0599 2 bytes Sprites

Pointer to kong control variables for inactive kong.

$7E:059B 1 bytes Mirror

Used to enable DMA and HDMA at the during v-blank. Typically this will be OAM DMA accompanied by any HDMA.

$7E:059D 2 bytes Level

Destination number (index into list of possible destination level numbers for the level). Dictates which level to go to when entering a level entrance/bonus.

$7E:059F 2 bytes Level

Destination level entrance number. Dictates which entrance number will be used when entering the destination level.

$7E:05A1 2 bytes Level

X position where the kong triggers a level fade out if passed.

$7E:05A3 2 bytes Level

Level number the player should return to when exiting the sub level/bonus.

$7E:05A5 2 bytes Level

Entrance number the player should return to when exiting the sub level/bonus.

$7E:05A7 2 bytes Palette

Pointer to the currently selected palette data.

$7E:05A9 4 bytes Pointer

Sprite handler return address, last byte is unused, always points into bank B3.

$7E:05BB 2 bytes Misc.

Referenced when disabling the debug fly kong state. (Setting to 0040 causes enemies to pause). Bit 0 could have also been set during debug fly. This doesn't appear to have a use during normal gameplay.

$7E:05BD 2 bytes Misc.

Set to 0003 (Pirate Panic's level number) on file load. This doesn't appear to have a use during normal gameplay and is never read or written again.

$7E:05C3 2 bytes Pointer

Would have contained some sort of sprite pointer but is never used.

$7E:05F3 2 bytes Engine

When an exception is thrown the exception id would have probably been stored here.

$7E:05F5 2 bytes Engine

When an exception is thrown the game would have probably written 0xB4 here.

$7E:05F7 2 bytes Pointer

Pointer to the selected palette data that caused a CGRAM overflow exception.

$7E:05FB 2 bytes Misc.

Appears to be some sort of status for when demo sequences play after the title screen. Is set to 1 when demos play. The code checks for 2 but that value never appears to be set in the final game.

$7E:05FD 2 bytes Misc.

Holds the current index/offset into the demo sequence data.

$7E:05FF 2 bytes Misc.

Timer that determines the length/delay of current demo command/input.

$7E:0601 2 bytes Pointer

Pointer to the start of the current demo sequence data.

$7E:0603 2 bytes Misc.

Appears to be related to the size of the current demo sequence in some way.

$7E:0605 2 bytes Misc.

Which demo sequence is currently playing.

$7E:060B 2 bytes Misc.

Cheat enable flags (BARRALAX = 0000 0001 | YASADLAD = 0000 0010)

$7E:060D 2 bytes Misc.

Current game type:
0 = one player
1 = two player team
2 = two player contest

$7E:060F 2 bytes Engine

Index to the active player in cooperative and competitive modes.
0 = Controller 1
1 = Controller 2

$7E:0611 2 bytes Misc.

Currently selected option on the main menu.

$7E:0613 2 bytes Menus

Current menu action (This is actually a bitmask, subactions toggle additional bits):
0000 - Default/null
0001 (bit 0) - Save game
0002 (bit 1) - Erase game
0004 (bit 2) - Erase game confirmed (sub action)
0008 (bit 3) - Copy game
0010 (bit 4) - Copy game file selected (sub action)
0020 (bit 5) - Copy game confirm slot (sub action)
0040 (bit 6) - Copy game finished (sub action)
0080 (bit 7) - Toggle language option
0100 (bit 8) - Toggle channel count option

$7E:0615 2 bytes Misc.

File to copy on the file select screen.

$7E:0617 2 bytes Misc.

Which language is currently in use.

$7E:0619 8 bytes Sound

Sound effect buffer. 1 byte per channel.

$7E:0621 1 bytes Sound

Which sound effect channels are currently in use (1 bit per channel).

$7E:0622 16 bytes Sound

SPC command buffer, one word is transfered per frame. The word low byte tends to be a sound effect.

$7E:0632 2 bytes Sound

Current index into the SPC command table. Values should always be even numbers less than #$10.

$7E:0634 2 bytes Sound

Index to where the next sound should be placed in the buffer.

$7E:0636 2 bytes Sound

Last frame of a SPC command transfer.

$7E:0638 2 bytes Sprites

Index into the next available firework sprite buffer slot.

$7E:063A 16 bytes Sprites

Firework sprite buffer.

$7E:0654 1 bytes Misc.

Current cursor position in the Monkey Museum, Kong Kollege, Funky's Flights II, Kluba's Koisk and Swanky's Bonus Bonanza

Also serves a currently unknown purpose on the overworld.

$7E:066E 1 bytes Map

This contains the number of the level you are standing on. If the value is 00, then you are standing on a "special" level(college, cranky, funky, and swanky bonus).

$7E:06A9 2 bytes Map

World map overworld exit location (which world you spawn at when going to overworld)

$7E:06AB 2 bytes Map

Map node number.

$7E:06B1 2 bytes Map

World map number.

$7E:08A2 2 bytes Controller

Current controller number (kong number + 1). Can be either 1 or 2. Updated with $08A4 but is probably only used in two player modes.

$7E:08A4 2 bytes Player

Current kong number
0 = Diddy
1 = Dixie

$7E:08A6 2 bytes Level

Level entrance number. This determines which entrance to use when entering the level.

$7E:08A8 2 bytes Level

Main/parent level number (only updated when entering a level from the map screen)

$7E:08AA 2 bytes Level

Set to 1 when a checkpoint barrel is broken.

$7E:08AC 2 bytes Level

Level number that the last checkpoint was obtained in.

$7E:08AE 2 bytes Level

What type of animal sprite the player was/was riding when obtaining the last level checkpoint.

Possible animal sprite numbers:
0190 - Squitter
0194 - Rattly
0198 - Squawks
019C - Rambi
01A0 - Enguarde

$7E:08B0 2 bytes Level

Main/parent level number that the last checkpoint was obtained in. This doesn't appear to be used for anything but is still preserved when getting a checkpoint.

$7E:08B2 2 bytes Level

Kong letters that were collected when obtaining the last level checkpoint. (first 4 bits correspond to each letter, 1 per letter)

$7E:08B6 2 bytes Player

The last state that the animal buddy was in when the kong dismounted them.

$7E:08B8 2 bytes Player

Number of tokens that the current player has, due to the 75 Kremkoins cheat.

$7E:08BA 1 bytes Misc

Number of bananas before starting krem coin cheat. (used to check if bananas were collected during cheat)

$7E:08BB 1 bytes Misc.

What step the krem coin cheat is currently on.

$7E:08BC 1 bytes Player

The number of bananas to display for the current player. The value of this address is in a BCD format.

$7E:08BE 2 bytes Player

Number of lives the current player has. Negative values will cause a game over.

$7E:08C0 2 bytes Player

Number of lives to display for the current player. A mirror of $7E:08BE.

$7E:08C2 2 bytes Engine

Game state flags:
0001 (bit 0) - Supress update kong follow waypoints
0002 (bit 1) - Is level transition/fadeout happening
0004 (bit 2) - Is kong underwater
0008 (bit 3) - Force update kong follow waypoints
0010 (bit 4) -
0020 (bit 5) -
0040 (bit 6) - Is game paused
0080 (bit 7) - Returning from sub level
0100 (bit 8) - Supress some graphical scroll effects
0200 (bit 9) - Unknown (Almost always enabled)
0400 (bit 10) -
0800 (bit 11) -
1000 (bit 12) -
2000 (bit 13) - Is player dying
4000 (bit 14) - Has both kongs
8000 (bit 15) -

$7E:08C4 2 bytes Engine

Appears to be more game state flags:
0001 (bit 0) - Set when jumping off of honey walls, horizontal ropes, hooks, and when switching control of player
0002 (bit 1) - Disables team up and swapping kongs
0004 (bit 2) -
0008 (bit 3) -
0010 (bit 4) - Triggers the game to pause
0020 (bit 5) -
0040 (bit 6) -
0080 (bit 7) -
0100 (bit 8) -
0200 (bit 9) -
0400 (bit 10) -
0800 (bit 11) -
1000 (bit 12) -
2000 (bit 13) -
4000 (bit 14) -
8000 (bit 15) -

$7E:08C8 2 bytes Level

Appears to be temporary storage for level numbers when transitioning.

$7E:08CA 1 bytes Player

Number of banana coins that the current player has.

$7E:08CC 1 bytes Player

Number of tokens that the current player has.

$7E:08CE 1 bytes Player

Number of DK coins the current player has.

$7E:08D0 2 bytes Misc.

Number of DK coins required to overtake the next competitor on the Video Game Heroes screen.

$7E:08D2 9 bytes Misc.

Cranky dialogue flags. (1 bit per option) (1 byte per world)

$7E:08DB 5 bytes Misc.

Cranky lost world dialogue flags. (1 bit per option) (1 byte per world)

$7E:08E0 7 bytes Misc.

Wrinkly dialogue flags. (1 bit per option) (1 byte per world)

$7E:08E7 9 bytes Misc.

Funky dialogue flags. (1 bit per option) (1 byte per world)

$7E:08F0 9 bytes Misc.

Swanky dialogue flags. (1 bit per option) (1 byte per world)

$7E:08F9 1 bytes Map

How many lost levels have been completed (how many steps to draw in the lost world)

$7E:08FA 1 bytes Map

Klubba payment flags. (1 bit per world)

$7E:08FB 2 bytes Misc.

Which NPC screens have been visited:
0001 (bit 0) - Cranky (+1% completion)
0002 (bit 1) - Funky (+1% completion)
0004 (bit 2) - Swanky (+1% completion)
0008 (bit 3) - Wrinkly (+1% completion)
0010 (bit 4) - Klubba
0020 (bit 5) -
0040 (bit 6) - Video Game Heroes (if enabled player can enter screen with L+R)
0080 (bit 7) -

$7E:08FC 1 bytes Map

Appears to contain flags related to one time events having triggered on things like the main map.

$7E:08FE 2 bytes Map

Some sort of world map event step counter. It increases progressively during K. Rool's falling into water and Krocodile Kore mouth opening cutscenes.

$7E:0900 2 bytes Map

Which world to send player to when exiting lost world. (Doesn't affect actual path)

$7E:0902 2 bytes Player

Kong letters collected. (first 4 bits correspond to each letter, 1 per letter)
The 5th bit is used specifically for the balloon in K. Rool's Cabin. Once collected this bit is set preventing the balloon from spawning multiple times.

$7E:0904 2 bytes Misc.

Percentage completion of the game, which varies from 0 to 102.

$7E:0907 8 bytes Misc.

This is used in the anti piracy routine. It can either contain the phrase "Rareware" or "A thief!"

$7E:090F 2 bytes Menu

Setting this address allows button presses to skip the intro. This address is set after the first time the intro plays on boot.

$7E:0911 2 bytes Misc.

Used by sunset effect in Gangplank Galley to record the furthest distance the level has scrolled to calculate sun height and palette brightness.

$7E:0913 2 bytes Misc.

This is the color to store to CGRAM($2122), first $0913 is written then $0914. This primarily seems to be used in level to change the background color.

$7E:0915 4 bytes Timer

These are a series of timers used for seals when they make the water safe.

$7E:0919 2 bytes Player

What type of K. Rool gas effect the player currently has.

0x01 (bit 0) - purple
0x02 (bit 1) - red

Only handled when K. Rool exists.

$7E:091B 2 bytes Player

Used for applying an alternate palette to the kongs when they're flashing from invincibility barrels. Setting this value to 0x80 will make the main kong's palette brighter. This is also used in some unknown way to initialize gas effects on the kong.

Setting the high byte applies an alternate palette to the kongs when they're affected by K. Rool gas clouds. Values are:
0000 - No effect
0100 - Blue Gas
0200 - Red Gas
0300 - Purple Gas

$7E:091D 2 bytes Misc.

Index into color value table for Swanky's blinking lights. Also used to index a table for the fire graphics in castle levels.

$7E:091F 2 bytes Player

Number of button presses needed to be freed from blue K. Rool gas effect.

$7E:0921 2 bytes Sprites

Sprite OAM properties for bubbles.

$7E:0923 2 bytes Misc.

Flag set if krem coin cheat was activated successfully.

$7E:0935 2 bytes Player

Highest Y position of player before touching ground. Used for the level targets to determine if kongs should get a prize.

$7E:096B 1 bytes Player

The number of bananas that the current player has, used for banana display counting. The value of this address is in a BCD format.

$7E:096D 2 bytes Player

The number of bananas that the current player has, used as the final count when calculating for the banana display. The value of this address is in a BCD format.

$7E:096F 2 bytes Timer

How long to display the banana counter.

$7E:0971 1 bytes Player

Sets how many lives to gain.

$7E:0972 1 bytes Player

Sets how many lives to lose. However setting it to a value other than one causes the life display to glitch and not update properly.

$7E:0973 2 bytes Timer

How long to display the life counter.

$7E:0975 2 bytes Misc.

Sprite graphic number of Diddy HUD Icon.

$7E:0977 2 bytes Misc.

Copy of sprite graphic number of Diddy HUD Icon.

$7E:0979 2 bytes Misc.

Related to the Y position of the Diddy HUD Icon.

$7E:097B 2 bytes Sprites

Index to collected KONG letter sprite.

$7E:097D 2 bytes Sprites

Index to collected coin sprite.

$7E:097F 2 bytes Sprites

Index to bonus timer handler sprite.

$7E:0981 2 bytes Player

Controller input used to determine correct kong action routine set. This address can also be used to remap buttons. For example, the purple gas in the K. Rool fight will use this address to swap left and right controls with this address.

$7E:0983 2 bytes Player

Controller input used to determine correct kong action routine set. (1 frame press)

$7E:0989 2 bytes Sprites

Index to glimmer sprite.

$7E:098D 2 bytes Engine

A random position offset that gets added to the nintendo presents sparkle positions.

$7E:098F 2 bytes Engine

x position of the nintendo presents sparkles.

$7E:0991 2 bytes Engine

y position of the nintendo presents sparkles.

$7E:0993 2 bytes Sprites

Timer for the nintendo presents sparkles.

$7E:099B 2 bytes Menu

When set, after fade out on the title screen, the file select menu will be run. If the address is clear the demo sequence is run.

$7E:099D 2 bytes Misc.

Record index in the kong follower waypoint buffers.

$7E:099F 2 bytes Misc.

Playback index in the kong follower waypoint buffers.

$7E:09A3 24 bytes Player

A table that holds the coordinates of the current player clipping for collision check:
00: leftmost X Position;
02: top Y position;
04: rightmost X position;
06: bottom Y position;
08-0F: like 00-07, but used when the player stomped an enemy and is spinning in the air;
10-13: mirror of 00-07.

$7E:09BB 24 bytes Player

Similar to $7E:09A3, but used when the second kong is active and can hit sprites or get hurt.

$7E:09D3 24 bytes Sprites

Similar to $7E:09A3, but is used for each sprite before collision check. The range 08-0F seems to be unused though.

$7E:09F5 2 bytes Sprites

Sprite collision result. Various bits are set depending on which clipping slots collide.

$7E:09F7 2 bytes Sprites

Flags for how the currently colliding sprites can defeat/interact with each other.

$7E:09F9 3 bytes Pointer

Pointer to the routine that sprites will use to check for sprite collisions.

$7E:09FC 2 bytes Sprites

Index into the next available platform sprite table slot.

$7E:09FE 40 bytes Sprites

A table with platform sprite data. There are 8 entries, each 5 bytes in size making the total table size 40 bytes. The first 3 bytes are a pointer to the sprite's special platform code that runs once all other sprites are processed. The last 2 bytes are a pointer to the sprite itself in the sprite table.

$7E:0A26 2 bytes Sprites

Left edge position of the platform sprite the player is currently standing on.

$7E:0A28 2 bytes Sprites

Right edge position of the platform sprite the player is currently standing on.

$7E:0A2A 2 bytes Misc.

Last recorded x position of follower kong waypoints.

$7E:0A2C 2 bytes Misc.

Last recorded y position of follower kong waypoints.

$7E:0A2E 2 bytes Misc.

Last recorded animation of follower kong waypoints.

$7E:0A30 2 bytes Misc.

Last recorded x speed of follower kong waypoints.

$7E:0A32 2 bytes Misc.

Last recorded max x speed of follower kong waypoints.

$7E:0A34 2 bytes Misc.

Last recorded ground distance of follower kong waypoints.

$7E:0A36 2 bytes Sprites

Sprite time stop flags. Determines which types of sprites can process during the active time stop:
bit 0 (0x0001) -
bit 1 (0x0002) -
bit 2 (0x0004) - if set then all non-kong sprites won't process
bit 3 (0x0008) - if set then the active kong won't process
bit 4 (0x0010) - if set then the inactive kong won't process
bit 5 (0x0020) -
bit 6 (0x0040) -
bit 7 (0x0080) - if set then don't process any sprites
bit 8 (0x0100) -
bit 9 (0x0200) -
bit 10 (0x0400) -
bit 11 (0x0800) -
bit 12 (0x1000) -
bit 13 (0x2000) -
bit 14 (0x4000) -
bit 15 (0x8000) -

$7E:0A38 2 bytes Sprites

Sprite time stop timer. Decrements every frame that time stop flags are active. Once it hits 0 it clears all time stop flags.

$7E:0A42 64 bytes Sprites

A table that holds a pointer to any spawn group manager sprites that are currently spawned. Each sprite group has its own slot. Whenever a group is spawned a pointer to its manager sprite will be stored in this table. Indexed using spawn group number. There are 32 possible sprite spawn groups.

$7E:0A82 2 bytes Sprite

Player-Object interaction number. Used to index a table at $B88004 to handle various interactions between the player and other objects.

$7E:0A84 2 bytes Sprite

Index of the sprite the player is currently interacting with.

$7E:0A86 2 bytes Sprite

Multi purpose Kong-Sprite interaction variable.

$7E:0A88 2 bytes Sprite

Multi purpose Kong-Sprite interaction variable.

$7E:0A8A 2 bytes Sprite

Multi purpose Kong-Sprite interaction variable.

$7E:0A8C 2 bytes Sprite

Multi purpose Kong-Sprite interaction variable.

$7E:0A8E 2 bytes Palette

Level palette address (if 0 use default tilemap palette)

$7E:0A98 2 bytes Camera

Which sprite the camera should follow, usually the active kong.

$7E:0AA2 2 bytes Camera

Horizontal screen number, left is lower and right is higher.

$7E:0AA6 2 bytes Camera

Vertical screen number, up is lower and down is higher.

$7E:0AB2 2 bytes Misc.

Working copy of checksum for the anti piracy routine. (if this value doesn't match the one stored in ROM by the end of the check the boot code was tampered)

$7E:0AD7 2 bytes Camera

Camera X position

$7E:0B04 32 bytes Sprites

Sprite VRAM slot allocation table. Contains a pointer to the sprite that is currently using the VRAM slot.

$7E:0B24 64 bytes Palette

This is a palette upload ring buffer, entries are four bytes each. Despite entries being 4 bytes, The first three bytes are the pointer to the palette data, the last byte is the CGRAM destination.

$7E:0B64 16 bytes Palette

Pointers to active sprite palettes.

$7E:0B74 16 bytes Palette

Count of how many many references there are to a given palette. If this value is negative the game won't allow other sprites to share the palette slot.

$7E:0B84 2 bytes Level

Pointer to the level theme's 32x32 tile map dimensions/info.

$7E:0BA0 2 bytes Sprites

Index of rope sprite the kong is currently holding onto. Used for ghost ropes and swamp cat tails.

$7E:0BA2 2 bytes Sprites

Temporary mirror index of rope sprite at $0BA0. Appears to be used when transitioning between grabbing the rope sprite.

$7E:0BA4 2 bytes Terrain

Specifies the slope steepness threshold for if kongs are able to traverse them or not. Similar to $88 but appears to affect walking more than jumping.

$7E:0BA6 384 bytes Sprites

A table that contains an index to each sprite spawn list that is stored in the data at $5A12. This table is indexed using the level scroll position to determine which sprite spawns the game needs to check for.

$7E:0D4A 2 bytes Level

Current Y velocity of water. (used when water height is transitioning)

$7E:0D4C 2 bytes Level

Y sub-pixel position of the water in aquatic levels and Toxic Tower. (low byte used but overwritten)

$7E:0D4E 2 bytes Level

Y position of the water in aquatic levels and Toxic Tower.

$7E:0D50 2 bytes Level

Target Y velocity of water. (used when water height is transitioning)

$7E:0D52 2 bytes Level

Target Y position of water. (used when water height is transitioning)

$7E:0D54 2 bytes Level

Current Y position of Castle Crush floor.

$7E:0D5A 2 bytes Sprites

Index of Kackle sprite.

$7E:0D5E 2 bytes Sprites

Index of Skull Cart sprite the player is riding.

$7E:0D60 2 bytes Player

X distance between both kongs multiplied by 8 (for swapping between kongs when underwater)

$7E:0D62 2 bytes Player

Y distance between both kongs multiplied by 8 (for swapping between kongs when underwater)

$7E:0D66 2 bytes Player

X position of active kong during kong swap.

$7E:0D68 2 bytes Player

X position of inactive kong during kong swap.

$7E:0D6A 2 bytes Player

Y position of active kong during kong swap.

$7E:0D6C 2 bytes Player

Y position of inactive kong during kong swap.

$7E:0D72 2 bytes Player

X offset of kong when riding an animal (where to draw kong relative to animal buddy)

$7E:0D74 2 bytes Player

Y offset of kong when riding an animal (where to draw kong relative to animal buddy)

$7E:0D76 2 bytes Player

Actual X offset of kong when riding an animal (Similar to $0D72 but used to shake kong left/right slightly when moving on an animal)

$7E:0D78 2 bytes Player

Actual Y offset of kong when riding an animal (Similar to $0D74 but used to shake kong up/down slightly when moving on an animal)

$7E:0D7A 2 bytes Sprites

Index of the currently held sprite (used for animation purposes)

$7E:0D7C 2 bytes Sprites

X offset of held sprite (where to draw sprite relative to kong)

$7E:0D7E 2 bytes Sprites

Y offset of held sprite (where to draw sprite relative to kong)

$7E:0D82 2 bytes Sprites

Index of hook sprite the kong is currently holding onto.

$7E:0DE2 2350 bytes Sprites

This table is a list of sprite tables, each sprite table is 0x5E bytes long and there are 24 tables.

The sprite table format is as follows:

index - size - description
$00,x - word - sprite type
$02,x - word - render order
$04,x - byte - unused
$05,x - byte - x position sub-pixel
$06,x - byte - x position pixel
$07,x - byte - x position screen
$08,x - byte - unused
$09,x - byte - y position sub-pixel
$0A,x - byte - y position pixel
$0B,x - byte - y position screen
$0C,x - word - y position of potential terrain tile
$0E,x - word - y distance from potential terrain tile
$10,x - word - terrain tile attributes (slope steepness, flipped, semi-solid, damage player, etc)
$12,x - word - oam render properties (flip, palette, tile)
$14,x - word - mirror of render order (02,x)
$16,x - word - last rendered sprite graphic
$18,x - word - current sprite graphic mirror
$1A,x - word - current sprite graphic
$1C,x - word - visibility
$1E,x - word - terrain tile interaction flags (flags for if object is touching sides or top of tile)
$20,x - word - current x velocity
$22,x - word - x position mirror (only on platform sprites)
$24,x - word - current y velocity
$26,x - word - target x velocity
$28,x - word - y position mirror (only on platform sprites)
$2A,x - word - target y velocity
$2C,x - word - slip velocity
$2D,x - byte - sprite state related?
$2E,x - byte - sprite state
$2F,x - byte - sprite sub state (passed into the routine called by $2E,x via A register)
$30,x - word - sprite interaction flags
$32,x - word - sprite carry flags/defeated flag (0x0100)
$34,x - word - (unknown)
$36,x - word - animation number
$38,x - word - animation frame draw time
$3A,x - word - animation speed
$3C,x - word - animation script pointer
$3E,x - word - animation subroutine pointer
$40,x - word - animation format (unknown)
$42,x - word - general purpose
$44,x - word - general purpose
$46,x - word - general purpose
$48,x - word - general purpose
$4A,x - word - general purpose
$4C,x - word - general purpose
$4E,x - word - general purpose
$50,x - word - general purpose
$52,x - byte - movement state
$53,x - byte - movement sub state
$54,x - word - sprite constants pointer
$56,x - word - number in level's sprite list
$58,x - word - spawn parameter (set in level's sprite list)
$5A,x - word - offscreen despawn timer
$5C,x - word - hud despawn timer/snapjaw chase related (unknown)

$7E:16B2 38 bytes Player

Diddy control variable table (used for handling various movements for Diddy)
Table variables:
animation number (no kong offset) (0x00)
copy of $983 active player input (1 frame press) (0x02)
copy of $981 active player input (0x04)
set to 0004 if direction was held when rolling (0x06)
gravity force (0x08)
max fall y velocity (0x0A)
unknown (0x0C)
roll x velocity (0x0E)
last roll time (copied from frame timer when roll starts) (0x10)
last jump time (copied from frame timer when jump starts) (0x12)
unknown (0x14)
Invincibility timer (0x16)
copy of button input when y button was pressed (0x18)
glide start time? (0x1A)
unknown (0x1C)
unknown (0x1E)
unknown (0x20)
last b press time (copied from frame timer when b is pressed) (0x22)
roll coyote time (0x24)

$7E:16D8 38 bytes Player

Dixie control variable table (used for handling various movements for Dixie)
Table variables:
animation number (no kong offset) (0x00)
copy of $983 active player input (1 frame press) (0x02)
copy of $981 active player input (0x04)
set to 0004 if direction was held when rolling (0x06)
gravity force (0x08)
max fall y velocity (0x0A)
unknown (0x0C)
roll x velocity (0x0E)
last roll time (copied from frame timer when roll starts) (0x10)
last jump time (copied from frame timer when jump starts) (0x12)
unknown (0x14)
Invincibility timer (0x16)
copy of button input when y button was pressed (0x18)
glide start time? (0x1A)
unknown (0x1C)
unknown (0x1E)
unknown (0x20)
last b press time (copied from frame timer when b is pressed) (0x22)
roll coyote time (0x24)

$7E:16FE 50 bytes Sprites

Render order of sprite slots. This controls the order sprites are written into OAM.

$7E:1730 2 bytes Sprites

This is the index into the next DMA slot for sprite graphics. The table starts at $1732.

$7E:1732 128 bytes Sprites

This is the sprite DMA settings buffer, each entry is 8 bytes long.
The table layout is as follows:

$1738,x - DMA bank and table termination if the high byte is positive
$1732,x - DMA transfer size
$1734,x - VRAM destination address
$1736,x - DMA transfer source address

$7E:17B2 2 bytes Pointer

Pointer to code in bank B5, responsible for taking a sprite's position and finding what level tile it's standing on. This will change depending on what shape the level is. This is used for terrain interactions/collision.

$7E:17BA 2 bytes Camera

Controls the X position of the camera.

$7E:17C0 2 bytes Camera

Controls the Y position of the camera.

$7E:195A 64 bytes VRAM

This buffer prepares rows and columns that will be used in the next VRAM transfer. This buffer is temporary and later copied to a designated horizontal or vertical buffer.

$7E:199A 8 bytes VRAM

Appears to be a smaller separate buffer related to the one directly above it which prepares row and column tile transfers for VRAM. Maybe a temporary working location for it.

$7E:19A2 2 bytes Player

Records the last time that Squitter shot a web projectile.

$7E:19A4 2 bytes Player

Records the last time that Squitter shot a web platform.

$7E:19A6 2 bytes Player

Number of Squitter web projectiles that currently exist.

$7E:19A8 2 bytes Sprites

When an invincibility barrel is broken its old sprite pointer gets written here despite the fact it will no longer exist.

$7E:19AA 1 bytes Sound

Zinger looping sound effect enabler. When a zinger is making its buzzing sound it increments this address to tell the game to play the zinger sound continuously.

$7E:19AB 1 bytes Sound

Flitter looping sound effect enabler. When a flitter is making its buzzing sound it increments this address to tell the game to play the flitter sound continuously.

$7E:19AC 1 bytes Sound

Wind looping sound effect enabler. When wind is blowing it increments this address to tell the game to play the wind sound continuously.

$7E:19AE 1 bytes Sound

Invincibility looping sound effect enabler. When an invincibility controller sprite is present it increments this address to tell the game to play the invincibility sound continuously.

$7E:19AF 1 bytes Sound

Barrel rolling sound effect enabler. When a barrel is playing its rolling sound it increments this address to tell the game to play the sound continuously.

$7E:19B4 6 bytes Sprites

Table that holds the location in VRAM of the 3 giant tire frames. All 3 frames remain continously in VRAM during the duration of Jungle Jinx. There are 3 entries each 16 bits in size. If bit 15 of an entry is set then it indicates that the graphics data for that frame is already in VRAM. If bit 15 isn't set then the game will upload it. The low byte contains the VRAM address.

$7E:19BA 2 bytes Misc.

Number of enemies to defeat for destroy them all bonus. Decrements when killing an enemy. This also decrements into the negatives during normal levels but doesn't get checked against anything.

$7E:19BE 2 bytes Misc.

Visual speed of the leaves/debris from the wind blowing in Gusty Glade/Windy Well. (This might have other uses in levels with different effects.) In Gusty Glade this is the horizontal scroll velocity of the leaf layer, in Windy Well this is the vertical scroll velocity of the debris layer.

In roller coaster levels this is the timer for how long to wait between firework shot sequences.

$7E:19C0 2 bytes Misc.

What direction the wind is blowing in Gusty Glade. (This might have other uses in levels with different effects.) $FFFF = Left, $0001 = Right, $0000 = None.

In roller coaster levels this is how many fireworks to shoot in the current sequence.

$7E:19CE 2 bytes Sprites

Pointer to the kong invincibility controller sprite. This doesn't technically need to be a valid sprite. The kong can kill anything they touch if the value is non zero but during normal gameplay it points to the sprite responsible for playing the invincibility sound and flashing the kong.

$7E:19D0 2 bytes Misc.

This is a cutscene id. Used for when the kongs have an automated scripted sequence of actions to perform like walking on screen and being scared of a boss. This id detemines which sequence should be played.

$7E:19D2 2 bytes Misc.

Cutscene script index. This keeps track of where in the cutscene is currently being played. Increments by 4 because the cutscene script data contains a 16 bit timer and a 16 bit code pointer telling the game what code to run for the cutscene and for how long.

$7E:19D4 2 bytes Misc.

Cutscene command timer. Decrements by 1 every frame until it hits 0. Once this happens it tells the game to increment the cutscene script index at $7E19D2.

$7E:19D6 2 bytes Misc.

Used to index a table of button combinations at $808B7C. This is used to handle what buttons to check for when paused to see if the Right+Y, Left+A, Up+B, Down+X level exit cheat is being entered. Increments by 4 for every successful button entered for the cheat.

$7E:19D8 2 bytes Misc.

Preserves the banana count during collect the stars bonuses. If bit 15 is set the game will copy the low byte to the banana counter when exiting a level. The low byte is in BCD format. This effectively restores the banana count to whatever was previously stored in this address.

$7E:2000 256 bytes Look up table

This is a table used by the decompression routine. It allows directly indexing bytes to read their low nibble without masking. Thus: index >> 4 is the value contained at any given byte of the table.

$7E:2100 256 bytes Look up table

This is a table used by the decompression routine. It allows directly indexing bytes to read their high nibble without masking. Thus: (index & 0x0F) << 4 is the value contained at any given byte of the table.

$7E:3E00 1664 bytes Buffer

A buffer used to store text tile data/tile maps that will be uploaded to VRAM. The largest observed size is 1664 (0x680) but allocated space for it may technically be larger. All of the known uses of this buffer are: level name tile data on map screens, text tile map in NPC screens, text tile map in ship cabin, bonus intro text tile data.

$7E:4A00 384 bytes Buffer

Another text VRAM buffer. Used for the text then appears when the player is walking through the kiosk to the lost world and while getting into the funky barrel. This may be a part of the previous buffer.

$7E:5000 869 bytes Buffer

Copy of player specific RAM ($064A-$0906) for player 1. This is used in two player contest to swap between the game states of both players.

$7E:5365 869 bytes Buffer

Copy of player specific RAM ($064A-$0906) for player 2. This is used in two player contest to swap between the game states of both players.

$7E:56CA 680 bytes Buffer

This is the buffer for the active save file. Copied to SRAM during the file save screen.

$7E:5972 32 bytes Save

Array of bits used to store map icons for the current file. Responsible for the visual appearance of icons on the map screens. 2 bits per icon.

$7E:5992 32 bytes Save

Array of bits used to store map path unlocks for the current file. Used to determine which routes on the map screens can be taken by the player.

$7E:59B2 32 bytes Save

Array of bits used to store which bonuses have been completed/krem coins obtained for the current file.

$7E:59D2 32 bytes Save

Array of bits used to store which DK coins have been collected for the current file.

$7E:59F2 32 bytes Save

Array of bits used to store which levels have been completed for the current file.

$7E:5A12 2174 bytes Sprites

Appears to contain several variable length arrays of sprite placement numbers. Each array in this structure contains a list of level sprites that should all be checked for spawning if the player is within their "zone". Each list is terminated with 0000. The first word appears to be the size of the structure. The largest observed size is 2174 bytes (0x87E) but this structure might be as large as 8192 bytes.

$7E:7A12 1024 bytes Sprites

Level sprite tracking array. Indexed using a sprite's placement number to keep track of what slot it's in. If the sprite is spawned its pointer is stored here to prevent it from spawning multiple times. The sprite pointer is set negative if the sprite dies or should no longer spawn and is reset back to 0 if it unloads and will be allowed to respawn.

$7E:7E12 512 bytes Buffer

Temporary location used to store grouped sprites as they're found on level load. Each group id is reserved 8 slots each (16 bytes) for a total of 512 bytes (32 groups).

$7E:8928 512 bytes Palettes

This is a basic palette loaded into CGRAM at various points in the game.

$7E:8D28 256 bytes Camera

Left border of the camera objects that limit the vision of the level.
Each word is the coordinate of one object, for a maximum possible of 128.

$7E:8E28 256 bytes Camera

Top border of the camera objects that limit the vision of the level.
Each word is the coordinate of one object, for a maximum possible of 128.

$7E:8F28 256 bytes Camera

Right border of the camera objects that limit the vision of the level.
Each word is the coordinate of one object, for a maximum possible of 128.

$7E:9028 256 bytes Camera

Bottom border of the camera objects that limit the vision of the level.
Each word is the coordinate of one object, for a maximum possible of 128.

$7F:0000 6706 bytes Tilemap

Layer 1 level data tilemap.

$7F:9600 16 bytes Sprites

Bubble sprite OAM table, that has 8 slots.

$7F:9610 16 bytes Sprites

Bubble sprite X position table, that has 8 slots. The actual position in pixels is one-fourth of this value.

$7F:9620 16 bytes Sprites

Bubble sprite Y position table, that has 8 slots. The actual position in pixels is one-fourth of this value.

$7F:9630 16 bytes Sprites

Bubble sprite X speed table, that has 8 slots. TODO: write how the actual computation happens.

$7F:9640 16 bytes Sprites

Bubble sprite Y speed table, that has 8 slots. The value is always subtracted from the Y position.

$7F:9650 3752 bytes Palettes

This is an inverted copy of the sprite palettes from ROM address FD62DC-FD7184. It is used in Glimmer's Galleon for the flashlight effect so sprites don't appear inverted from the color math effect.

$7F:A532 64 bytes Misc.

A ring buffer that stores the x positions for the follower kong's waypoints.

$7F:A572 64 bytes Misc.

A ring buffer that stores the y positions for the follower kong's waypoints.

$7F:A5B2 64 bytes Misc.

A ring buffer that stores the facing directions for the follower kong's waypoints.

$7F:A5F2 64 bytes Misc.

A ring buffer that stores the animations for the follower kong's waypoints.

$7F:A632 3072 bytes Sprites

Banana sets within the level. This table is divided in blocks of 8 words, for a maximum possible of 192 sets.
The table format is as follows (incomplete):
X position of the set (0x00)
Y position of the set (0x02)
Number of banana columns (0x04)
Pointer to banana column (0x0A)

See also $7F:B232.

$7F:B232 9216 bytes Sprites

Banana set data. Each word describes a column of bananas in a banana set. Each set bit is a banana and higher bits are in higher Y positions.

Those words are pointed from the tables at $7F:A632. The original game never uses more than 510 bytes for this purpose.


There are currently 38328 bytes in the ram map