RAM map
Describes the data in the WRAM area used by Donkey Kong Country 2 and Diddy’s Kong Quest.
Legend
Sizes are in bytes. A size of “-” means the size is not known.
Entries whose contents are “(unknown)” are areas known to be used but whose purpose is not known.
For flags and structures that take multiple values, the Contents column lists the meaning of each value or offset.
Low RAM ($7E:0000 - $7E:1FFF; 8192 bytes)
SDK2
| Address | Size | Contents |
|---|---|---|
| $001C | 2 | Current BGM |
| $001E | 2 | Stereo/mono switch |
| $0020 | 2 | Function pointer of the current NMI handler function |
| $0022 | - | (unknown) |
| $0024 | 2 | Address of the game loop |
| $0026 | - | (unknown) |
| $0028 | - | (unknown) |
| $002A | 2 | Active frame counter |
| $002C | 2 | Global frame counter |
| $002E | 1 | Pseudo-random number |
| $002F | 3 | Pseudo-random number work area |
| $0032 | 30 | Scratch RAM |
| $005E | 2 | Currently selected sprite palette slot |
| $0060 | 2 | Kong 1P/2P color selection 0: 1P 3C: 2P |
| $0062 | - | (unknown) |
| $0064 | 2 | Sprite currently being processed |
| $0066 | 2 | Address of the player control structure |
| $0068 | 2 | Sprite currently being processed (sub; mainly for child sprites) |
| $006A | 2 | Sprite in contact with the sprite currently being processed |
| $006C | 2 | Sprite being ridden. 0 if not riding anything |
| $006E | 2 | Control code of the Animal Buddy currently being ridden or transformed into 0190: Squitter 0194: Rattly 0198: Squawks 019C: Rambi 01A0: Enguarde |
| $0070 | 2 | Next available OAM mirror slot |
| $0072 | - | (unknown) |
| $0074 | - | (unknown) |
| $0076 | - | (unknown) |
| $0078 | - | (unknown) |
| $007A | 2 | Mode 7 vertical scaling (8.8 fixed-point) |
| $007C | 2 | Mode 7 horizontal scaling (8.8 fixed-point) |
| $007E | 2 | Mode 7 scaling/rotation matrix D (8.8 fixed-point) |
| $0080 | 2 | Mode 7 scaling/rotation matrix C (8.8 fixed-point) |
| $0082 | 2 | Mode 7 scaling/rotation matrix B (8.8 fixed-point) |
| $0084 | 2 | Mode 7 rotation angle |
| $0086 | 2 | Mode 7 scaling/rotation matrix A (8.8 fixed-point) |
| $0088 | 2 | Slope tolerance threshold |
| $008A | - | (unknown) |
| $008C | - | (unknown) |
| $008E | - | (unknown) |
| $0090 | - | (unknown) |
| $0092 | 1 | Current action of the player character |
| $0094 | 2 | Index into the NMI table |
| $0096 | 2 | Index of the game logic |
| $0098 | 3 | Tilemap address (from the tilemap settings) |
| $009B | 1 | Bank address of the map chips |
| $009C | 3 | Terrain collision address (from the tilemap settings) |
| $009F | 1 | (unknown) |
| $00A0 | 2 | Number of collision definitions (from the tilemap settings) |
| $00A2 | - | (unknown) |
| $00C8 | 3 | Address of the buffer for building text tilemaps |
| $00CE | 3 | Text read address |
| $00D3 | 2 | Current level number |
| $00D5 | 4 | 32-bit frame counter (in-game time) |
| $00F1 | 2 | Index into the palette ring buffer (00-0F) |
| $00F3 | 2 | Parameter of the sprite currently being spawned |
| $00F5 | 2 | Placement X position of the sprite currently being spawned |
| $00F7 | 2 | Placement Y position of the sprite currently being spawned |
| $00F9 | 2 | Type of the sprite currently being spawned |
| $00FB | 2 | Serial number of the sprite currently being spawned |
| $00FD | - | (unknown) |
| $0100 | 256 | Stack |
| $0200 | 512 | Mirror of the OAM low table |
| $0400 | 32 | Mirror of the OAM high table |
| $0502 | 2 | 1P controller input (BYsS^v<>AXLR3210) |
| $0504 | 2 | 2P controller input |
| $0506 | 2 | 1P controller input (newly pressed) |
| $0508 | 2 | 2P controller input (newly pressed) |
| $050A | 2 | 1P controller input (released) |
| $050C | 2 | 2P controller input (released) |
| $050E | 2 | Active player controller input |
| $0510 | 2 | Active player controller input (newly pressed) |
| $0512 | 1 | Screen brightness (mirror of INIDISP) |
| $0513 | 1 | Screen fade speed |
| $0514 | 1 | Screen fade timer |
| $0515 | 2 | Level type (from the level settings) |
| $0517 | 2 | DMA control settings (from the ISD) |
| $0519 | 2 | HDMA control settings (from the ISD) |
| $051B | 2 | BGM number (from the ISD) |
| $051D | 2 | Entry settings (from the ISD) |
| $051F | 2 | Slope threshold setting (from the ISD) |
| $0521 | 2 | Flag allowing animals to be brought in (from the level settings) |
| $0523 | 2 | Tilemap ID (from the ISD) |
| $0525 | 2 | Submap ID (from the level settings) |
| $0527 | 2 | NMI control settings (from the ISD) |
| $0529 | 2 | Map control settings (from the ISD) |
| $052B | 2 | Level special effects (from the ISD) |
| $052D | 2 | Bonus level type (from the level settings) |
| $052F | 2 | (unknown) |
| $0531 | 2 | Address of the entrance table |
| $0533 | 2 | Entrance X position |
| $0535 | 2 | Entrance Y position |
| $0537 | 2 | PPU control settings (from the ISD) |
| $0539 | 2 | Tileset (from the ISD) |
| $053B | 2 | ID of the entrance actually used |
| $053D | 16 | Destination level table (2 bytes per element, up to 8 elements; from the level settings) |
| $054D | 1 | Camera angle (from the level settings) |
| $054E | 1 | Camera angle while riding an animal (from the level settings) |
| $054F | 1 | Camera control settings (from the level settings) |
| $0550 | 1 | Entrance type |
| $0551 | 2 | Address of the world map connection settings (from the level settings) |
| $0553 | 62 | Same as $0515-0552. A sub expansion area for temporarily loading other settings. |
| $0593 | 2 | Sprite memory address of the character currently being controlled |
| $05A7 | 2 | $0DE2: Diddy $0E40: Dixie |
| $05F7 | 2 | Address of a palette that could not be transferred because there was no free sprite palette |
| $060D | 2 | Game mode 0: 1 Player 1: 2 Player Team 2: 2 Player Contest |
| $060F | 2 | ID of the currently active pad 0: 1P 1: 2P |
| $0617 | 2 | Language selection |
| $064A | 2 | (unknown) |
| $064C | - | (unknown) |
| $064E | 2 | Remaining message display time (F) |
| $0650 | 2 | Tile index resolved from the character code |
| $0652 | 2 | Number of menu items |
| $0654 | 2 | Currently selected menu item |
| $0658 | 2 | Size of the tilemap reserved by the menu text |
| $065A | 2 | Number of menu items - 2 |
| $065E | 2 | (unknown) |
| $0660 | 2 | Paid flag mask |
| $0662 | 2 | Menu text VRAM transfer address |
| $0664 | 2 | Hint text VRAM transfer address |
| $0666 | 2 | Temporary variable for calculating the hint data address |
| $0672 | 2 | Paid flags of the current menu |
| $067F | 2 | Event handler |
| $0681 | 2 | Number of lines of text to display |
| $0683 | 2 | (unknown) |
| $0685 | 2 | Number of characters still writable on the line currently being written |
| $0689 | 2 | Facility currently in 0: Cranky’s Cabin 2: Funky’s Flights 4: Swanky’s Bonus Bonanza 6: Wrinkly’s Kong Kollege 8: Klubba’s Kiosk |
| $069B | 2 | World map camera X position |
| $069D | 2 | World map camera Y position |
| $06A1 | 2 | Message display control / world map control flags 0: 1: advanced to the next segment of the path 2: moving backward along the path 3: message scrolling 4: 5: 6: drawing the node name 7: 8: node name update requested 9: message transfer complete 10: 11: 12: message being displayed 13: 14: 15: |
| $06A3 | 2 | World map control flags (known ones only) 5: switching between the first and second half maps of Krazy Kremland 6: set by $B4:B2CE (related to path opening; meaning not confirmed) 15: set by $B4:BE61 and cleared by $B4:BEA0 |
| $06A5 | 2 | (unknown) |
| $06A7 | 2 | (unknown) |
| $06A9 | 2 | Node to go to when returning to the overall map |
| $06AB | 2 | Current world map node ID |
| $06AD | 2 | Destination node while moving. 0 when stopped |
| $06AF | 2 | Address (bank $B4) of the current segment of the path data being traveled. +/-4 for each segment advanced. 0 when stopped |
| $06B1 | 2 | Current world map ID |
| $06B5 | 2 | Kong X position on the world map |
| $06B7 | 2 | Kong Y position on the world map |
| $06B9 | 2 | X direction of path movement (+1/-1) |
| $06BB | 2 | Y direction of path movement (+1/-1) |
| $06BD | 2 | Bresenham error of path movement |
| $06BF | 2 | Bresenham minor-axis increment of path movement |
| $06C1 | 2 | |dx| of the path segment |
| $06C3 | 2 | |dy| of the path segment |
| $06C5 | 2 | Number of remaining path segments |
| $06C7 | 2 | World map camera X lower limit |
| $06C9 | 2 | World map camera X upper limit |
| $06CB | 2 | World map camera Y lower limit |
| $06CD | 2 | World map camera Y upper limit |
| $06CF | - | (unknown) |
| $06D7 | 2 | Number of entries in the world map path-opening queue (pushed when a level is cleared, consumed by $B4:B12B) |
| $06D9 | - | World map path-opening queue (4 bytes per element: destination level number, source level number). Capacity unconfirmed |
| $06DC | 1 | Scanline counter for the HDMA used by the text wipe (not used, since the feature itself is disabled) |
| $0787 | 1 | (unknown) |
| $0790 | 2 | OAM attributes applied to the Kong while moving along a path (priority taken from path data +$03-04) |
| $0792 | 2 | Number of the path most recently opened |
| $079C | 2 | Write-only dead variable. Bank $B4 writes code addresses (16 kinds) to it in 19 places, but no reader exists in any bank |
| $07A5 | 1 | Ones digit of money held |
| $07A6 | 1 | Tens digit of money held |
| $07A7 | 1 | Hundreds digit of money held |
| $07B0 | 2 | (unknown) |
| $08A4 | 2 | Character currently being controlled 0: Diddy 1: Dixie |
| $08A6 | 2 | Entrance ID |
| $08A8 | 2 | Number of the parent level |
| $08AA | 2 | Checkpoint passed flag |
| $08AC | 2 | Level number when the last checkpoint was passed |
| $08AE | 2 | Control code of the Animal Buddy obtained or transformed into when the last checkpoint was passed 0190: Squitter 0194: Rattly 0198: Squawks 019C: Rambi 01A0: Enguarde |
| $08CA | 2 | Current number of Banana Coins held |
| $08CC | 2 | Current number of Kremcoins held |
| $08CE | 2 | Current number of DK Coins held |
| $08D0 | 2 | Number of DK Coins needed to rise to the next rank in Video Game Heroes |
| $08D2 | 14 | Cranky’s Cabin paid flags (1 byte per world) |
| $08E0 | 7 | Wrinkly’s Kong Kollege paid flags (1 byte per world) |
| $08E7 | 9 | Funky’s Flights paid flags (1 byte per world) |
| $08F0 | 9 | Swanky’s Bonus Bonanza paid flags (1 byte per world) |
| $08F9 | 1 | Number of cleared levels in The Lost World |
| $08FA | 1 | Klubba’s Kiosk paid flags (1 bit per world) |
| $08FB | 1 | Kong Family visited flags 0: Cranky 1: Funky 2: Swanky 3: Wrinkly 4: Klubba 6: Video Game Heroes |
| $08FC | 1 | Flags related to map events |
| $08FD | - | (unknown) |
| $08FE | 2 | World map event work area |
| $0900 | 2 | World map to move to when leaving The Lost World |
| $0902 | 2 | KONG letter collected flags 0: K 1: O 2: N 3: G 4: Extra Life Balloon in K. Rool’s letter room collected |
| $0904 | 2 | Completion percentage |
| $0906 | 1 | (unknown) |
| $0907 | 8 | String indicating the result of the boot check Pass: Rareware Fail: A thief! |
| $090F | 2 | (unknown) |
| $0911 | - | (unknown) |
| $091A | 1 | Invincibility palette selection 0: normal palette 80: invincibility palette |
| $091C | 1 | Selection of K. Rool’s gas shot effect 0: none 1: stop gas 2: slow gas 3: confusion gas |
| $09A3 | 24 | Player collision (3 entries) 0-1: left edge 2-3: top edge 4-5: right edge 6-7: bottom edge |
| $09BB | 24 | Collision of the standby character (3 entries) |
| $09D3 | 24 | Collision of general sprites (3 entries) |
| $09EB | 8 | Animal collision (1 entry) |
| $09F3 | - | (unknown) |
| $09F5 | 2 | Result of the sprite collision check |
| $09F7 | 2 | Collision interpretation flags between sprites |
| $09F9 | 3 | Address of the sprite collision checker to use |
| $09FC | 2 | Next available platform sprite slot |
| $09FE | 40 | Platform sprite table (5 bytes x 8 entries) 0-2: address of the special handling routine for the platform sprite 3-4: instance address of the platform sprite |
| $0A26 | 2 | Left edge of the platform sprite currently stood on |
| $0A28 | 2 | Right edge of the platform sprite currently stood on |
| $0A2A | 2 | Last recorded X position of the standby Kong |
| $0A2C | 2 | Last recorded Y position of the standby Kong |
| $0A2E | 2 | Last recorded animation of the standby Kong |
| $0A30 | 2 | Last recorded X velocity of the standby Kong |
| $0A32 | 2 | Last recorded maximum X velocity of the standby Kong |
| $0A34 | 2 | Last recorded height above the ground of the standby Kong |
| $0A36 | 2 | Sprite execution stop flags 2: stop processing of everything except the Kongs 3: stop processing of the player character 4: stop processing of the standby character 7: stop all processing |
| $0A38 | 2 | Sprite execution stop timer |
| $0A3A | - | (unknown) |
| $0A3C | - | (unknown) |
| $0A3E | - | (unknown) |
| $0A40 | - | (unknown) |
| $0A42 | 64 | Instance address table of the sprite group management sprites (32 slots) Nonzero slot IDs correspond to the IDs of groups that are currently instantiated |
| $0A82 | 2 | ID of the interaction type between the player and a sprite |
| $0A84 | 2 | Index of the sprite currently interacting |
| $0A86 | 8 | Interaction work area |
| $0A8E | 2 | Palette override (from the ISD) |
| $0A98 | 2 | Sprite instance tracked by the camera |
| $0AA2 | 2 | Horizontal screen number |
| $0AA4 | - | (unknown) |
| $0AA6 | 2 | Vertical screen number |
| $0AB2 | 2 | Memory for calculating the checksum of the anti-piracy verification code |
| $0AD7 | 2 | Camera X position |
| $0B04 | 32 | VRAM slot allocation table for sprites (32 slots) Each entry holds the address of the sprite instance occupying that slot |
| $0B24 | 64 | Ring buffer for palette transfers (16 entries) 0-2: source address 3: destination CGRAM address |
| $0B64 | 16 | Addresses of the palettes transferred to each sprite palette (8 slots) 0: free slot nonzero: in use |
| $0B74 | 16 | Reference counter of each sprite palette (8 slots) |
| $0B84 | 2 | Address of the submap list (from the tilemap settings) |
| $0B86 | 2 | Tilemap flags (from the tilemap settings) |
| $0BA0 | 2 | Index of the rope sprite currently being held |
| $0BA4 | 2 | Slope threshold setting (from the ISD) |
| $0BA6 | 384 | (unknown) |
| $0D26 | - | (unknown) |
| $0D4A | 2 | Current water level rise speed |
| $0D4C | 2 | Current water level (subpixel) |
| $0D4E | 2 | Current water level |
| $0D50 | 2 | Target water level rise speed |
| $0D52 | 2 | Target water level change |
| $0D54 | 2 | Current elevator height |
| $0D56 | 2 | (unknown) |
| $0D58 | 2 | (unknown) |
| $0D5A | 2 | Instance address of the currently active Kackle |
| $0D5C | 2 | (unknown) |
| $0D5E | 2 | Instance address of the coaster being ridden |
| $0D60 | 2 | 8 times the X distance between the two Kongs (for tagging underwater) |
| $0D62 | 2 | 8 times the Y distance between the two Kongs (for tagging underwater) |
| $0D64 | 2 | Remaining time of the tag animation |
| $0D66 | 2 | X position of the player character during a tag |
| $0D68 | 2 | X position of the standby character during a tag |
| $0D6A | 2 | Y position of the player character during a tag |
| $0D6C | 2 | Y position of the standby character during a tag |
| $0D6E | 2 | (unknown) |
| $0D70 | 2 | ID of the PPU control setting currently being decoded |
| $0D72 | 2 | Relative X position of the Kong while riding an animal (base value) |
| $0D74 | 2 | Relative Y position of the Kong while riding an animal (base value) |
| $0D76 | 2 | Relative X position of the Kong while riding an animal (adjusted value) |
| $0D78 | 2 | Relative Y position of the Kong while riding an animal (adjusted value) |
| $0D7A | 2 | Instance address of the sprite currently being held |
| $0D7C | 2 | Relative X position of the sprite currently being held |
| $0D7E | 2 | Relative Y position of the sprite currently being held |
| $0D80 | 2 | (unknown) |
| $0D82 | 2 | Instance address of the hook currently being hung from |
| $0D84 | 94 | Sprite state data (used only on the overall map; elsewhere various global variables are allocated here) |
| $0D84 | 2 | Control code Outside the overall map, 0 must always be written here to make it explicit that this area is not a sprite instance. |
| $0DE2 | 94 | State data of sprite #0 (mainly Diddy) |
| $0E40 | 94 | State data of sprite #1 (mainly Dixie) |
| $0E9E | 94 | State data of sprite #2 |
| $0EFC | 94 | State data of sprite #3 |
| $0F5A | 94 | State data of sprite #4 |
| $0FB8 | 94 | State data of sprite #5 |
| $1016 | 94 | State data of sprite #6 |
| $1074 | 94 | State data of sprite #7 |
| $10D2 | 94 | State data of sprite #8 |
| $1130 | 94 | State data of sprite #9 |
| $118E | 94 | State data of sprite #10 |
| $11EC | 94 | State data of sprite #11 |
| $124A | 94 | State data of sprite #12 |
| $12A8 | 94 | State data of sprite #13 |
| $1306 | 94 | State data of sprite #14 |
| $1364 | 94 | State data of sprite #15 |
| $13C2 | 94 | State data of sprite #16 |
| $1420 | 94 | State data of sprite #17 |
| $147E | 94 | State data of sprite #18 |
| $14DC | 94 | State data of sprite #19 |
| $153A | 94 | State data of sprite #20 |
| $1598 | 94 | State data of sprite #21 |
| $15F6 | 94 | State data of sprite #22 |
| $1654 | 94 | State data of sprite #23 |
| $16B2 | 38 | Diddy’s control variables 0: animation ID 2: copy of $983 4: copy of $981 6: flag holding the D-pad state during a roll 8: gravitational acceleration A: terminal falling velocity C: E: roll X velocity 10: frame the most recent roll started 12: frame the most recent jump started 14: 16: invincibility time 18: copy of the input state when the Y button was pressed 1A: 1C: 1E: 20: 22: frame the B button was most recently pressed 24: |
| $16D8 | 38 | Dixie’s control variables |
| $16FE | 50 | OAM write order table for sprites |
| $1730 | 2 | Next available DMA slot for sprite graphics transfer |
| $1732 | 128 | Sprite DMA settings buffer (16 entries) 0-1: DMA transfer size 2-3: VRAM address 4-6: DMA source address 7: end-of-table flag |
| $17B2 | 2 | Collision update code (from the tilemap settings) |
| $17B4 | 2 | Map chip address (from the tilemap settings) |
| $17B6 | 2 | VRAM transfer address of the terrain tilemap (from the tilemap settings) |
| $17BA | 2 | Camera X position |
| $17C0 | 2 | Camera Y position |
| $195A | 64 | Tilemap buffer for transferring the terrain tilemap (32 tiles) Whether it is interpreted as a row or a column depends on the tilemap type |
| $199A | 8 | Tilemap building auxiliary area |
| $19A2 | 2 | Frame an attack web was last fired |
| $19A4 | 2 | Frame a platform web was last fired |
| $19A6 | 2 | Number of Squitter attack webs currently existing |
| $19A8 | 2 | Instance address of the most recently broken Invincibility Barrel |
| $19AA | 6 | Six communication ports that signal that a sustained sound effect is active (the corresponding port keeps being incremented while the sound effect continues) 0: Zinger 1: Flitter 2: wind 3: 4: invincibility 5: rolling barrel |
| $19B0 | - | (unknown) |
| $19B4 | 6 | VRAM addresses of the graphics data for each of the 3 animation frames of the giant tire Bit 15 is the VRAM uploaded flag (if 0, the transfer is performed again) |
| $19BA | 2 | Quota counter for “Destroy Them All!”. It always runs, even outside bonus levels, but it is not checked unless the corresponding timer sprite is placed. |
| $19BC | - | (unknown) |
| $19BE | 2 | Work memory for level special effects - In coaster levels: wait time until the next firework is launched - In windy levels: BG3 scroll speed |
| $19C0 | 2 | Work memory for level special effects - In coaster levels: number of fireworks currently launched - In windy levels: wind direction |
| $19C6 | 2 | X position where an object was put down or thrown |
| $19C8 | 2 | Y position where an object was put down or thrown |
| $19CA | - | (unknown) |
| $19CE | 2 | Address of the invincibility management sprite. Zero when not invincible. |
| $19D0 | 2 | Cutscene ID |
| $19D2 | 2 | Cutscene script execution address |
| $19D4 | 2 | Cutscene command timer |
| $19D6 | 2 | Matching data for the level exit command input Incremented by 4 each time a correct command is entered, and reset to 0 if a mistake is made partway. |
| $19D8 | 2 | Save area for the banana counter during “Collect the Stars!” (binary-coded decimal) |
| $19DA | 1574 | Free area |
DKC2
currently not available.
High RAM ($7E:2000 - $7E:7FFF; 24576 bytes)
SDK2
| Address | Size | Contents |
|---|---|---|
| $7E:2000 | 256 | Lookup table for speeding up decompression (high nibble conversion table) |
| $7E:2100 | 256 | Lookup table for speeding up decompression (low nibble conversion table) |
| $7E:2200 | 2048 | World map path entity array (in 4-byte units) 0-1: opened flag 2-3: address |
| $7E:2A00 | 2048 | World map path entity array (4 bytes x 108 = 432 bytes used) 0-1: opened flag (0/1) 2-3: address of the path data (bank $B4) |
| $7E:3200 | 2048 | World map node entity array (4 bytes x 120 = 480 bytes used) 0: state 0: not opened 1: opened 2/3: current Kong location (Diddy/Dixie in front) 1: icon type (value from the node table; in state 2/3 overwritten with $00/$02 = Diddy/Dixie) 2-3: address of the node data (bank $B4) |
| $7E:3A00 | 1024? | (unknown) |
| $7E:3E00 | 3072 | Buffer for building text tilemaps |
| $7E:4A00 | 384 | Buffer for building text tilemaps (sub) |
| $7E:5000 | 869 | Buffer for saving the 1P game state (from $064A-0906) |
| $7E:5365 | 869 | Buffer for saving the 2P game state (from $064A-0906) |
| $7E:56CA | 680 | Copy of the currently open save data (from SRAM) |
| $7E:5972 | 32 | Bit array of map icons. 2 bits per element. |
| $7E:5992 | 32 | Bit array of world map path opening status. 1 bit per element. |
| $7E:59B2 | 32 | Bit array of bonus level clear status. 1 bit per element, in level-number order from the low bit. |
| $7E:59D2 | 32 | Bit array of DK Coin collection status. 1 bit per element, in level-number order from the low bit. |
| $7E:59F2 | 32 | Bit array of level clear status. 1 bit per element, in level-number order from the low bit. |
| $7E:5A12 | 8192 | (unknown) |
| $7E:7E12 | 512 | Sprite group configuration area (8 entries x 32 groups) |
DKC2
| Address | Size | Contents |
|---|---|---|
| $7E:2000 | 256 | Lookup table for speeding up decompression (high nibble conversion table) |
| $7E:2100 | 256 | Lookup table for speeding up decompression (low nibble conversion table) |
| $7E:2200 | 2048 | World map path entity array (in 4-byte units) 0-1: opened flag 2-3: address |
| $7E:2A00 | 2048 | World map path entity array (4 bytes x 108 = 432 bytes used) 0-1: opened flag (0/1) 2-3: address of the path data (bank $B4) |
| $7E:3200 | 2048 | World map node entity array (4 bytes x 120 = 480 bytes used) 0: state 0: not opened 1: opened 2/3: current Kong location (Diddy/Dixie in front) 1: icon type (value from the node table; in state 2/3 overwritten with $00/$02 = Diddy/Dixie) 2-3: address of the node data (bank $B4) |
| $7E:3A00 | 1024? | (unknown) |
| $7E:3E00 | 3072 | Buffer for building text tilemaps |
| $7E:4A00 | 384 | Buffer for building text tilemaps (sub) |
| $7E:5000 | 869 | Buffer for saving the 1P game state (from $064A-0906) |
| $7E:5365 | 869 | Buffer for saving the 2P game state (from $064A-0906) |
| $7E:56CA | 680 | Copy of the currently open save data (from SRAM) |
| $7E:5972 | 32 | Bit array of map icons. 2 bits per element. |
| $7E:5992 | 32 | Bit array of world map path opening status. 1 bit per element. |
| $7E:59B2 | 32 | Bit array of bonus level clear status. 1 bit per element, in level-number order from the low bit. |
| $7E:59D2 | 32 | Bit array of DK Coin collection status. 1 bit per element, in level-number order from the low bit. |
| $7E:59F2 | 32 | Bit array of level clear status. 1 bit per element, in level-number order from the low bit. |
| $7E:5A12 | 8192 | (unknown) |
| $7E:7E12 | 512 | Sprite group configuration area (8 entries x 32 groups) |
Extended RAM ($7E:8000 - $7F:FFFF; 98304 bytes)
SDK2
| Address | Size | Contents |
|---|---|---|
| $7E:8012 | - | (unknown) |
| $7E:8928 | 512 | General palette staging area |
| $7E:8B28 | - | (unknown) |
| $7E:8D28 | 256 | Camera data expansion area (left edge) |
| $7E:8E28 | 256 | Camera data expansion area (right edge) |
| $7E:8F28 | 256 | Camera data expansion area (top edge) |
| $7E:9028 | 256 | Camera data expansion area (bottom edge) |
| $7E:9128 | 256 | Camera data expansion area |
| $7E:9228 | 256 | Camera data expansion area |
| $7E:9328 | 256 | Camera data expansion area |
| $7E:9428 | 256 | Camera data expansion area |
| $7E:9528 | - | (unknown) |
| $7F:0000 | - | Decompression buffer for compressed data |
| $7F:9600 | 16 | Bubble sprite OAM table (8 slots) |
| $7F:9610 | 16 | Bubble sprite X position table |
| $7F:9620 | 16 | Bubble sprite Y position table |
| $7F:9630 | 16 | Bubble sprite X velocity table |
| $7F:9640 | 16 | Bubble sprite Y velocity table |
| $7F:9650 | 3752 | Work area for sprite palette inversion |
| $7F:A4F8 | - | (unknown) |
| $7F:A532 | 64 | Ring buffer of checkpoint X positions for the standby Kong to follow |
| $7F:A572 | 64 | Ring buffer of checkpoint Y positions for the standby Kong to follow |
| $7F:A5B2 | 64 | Ring buffer of checkpoint passing directions for the standby Kong to follow (Kong facing) |
| $7F:A5F2 | 64 | Ring buffer of animations at checkpoint passing for the standby Kong to follow |
| $7F:A632 | 3072 | Banana placement data expansion area (16-byte units, 192 entries) 0-1: X position 2-3: Y position 4-5: number of columns in the banana set 6-7: number of columns in the banana set x4 (if too small, the set is not displayed when partly off-screen) 8-9: banana display layer selection 10-11: address of the banana set 12-13: 14-15: |
| $7F:B232 | 9216 | Banana set area Sliced by column, and each column is represented as a bit array. Higher bits are bananas higher up in the set. |
DKC2
| Address | Size | Contents |
|---|---|---|
| $7E:8012 | - | (unknown) |
| $7E:8928 | 512 | General palette staging area |
| $7E:8B28 | - | (unknown) |
| $7E:8D28 | 256 | Camera data expansion area (left edge) |
| $7E:8E28 | 256 | Camera data expansion area (right edge) |
| $7E:8F28 | 256 | Camera data expansion area (top edge) |
| $7E:9028 | 256 | Camera data expansion area (bottom edge) |
| $7E:9128 | 256 | Camera data expansion area |
| $7E:9228 | 256 | Camera data expansion area |
| $7E:9328 | 256 | Camera data expansion area |
| $7E:9428 | 256 | Camera data expansion area |
| $7E:9528 | - | (unknown) |
| $7F:0000 | - | Decompression buffer for compressed data |
| $7F:9600 | 16 | Bubble sprite OAM table (8 slots) |
| $7F:9610 | 16 | Bubble sprite X position table |
| $7F:9620 | 16 | Bubble sprite Y position table |
| $7F:9630 | 16 | Bubble sprite X velocity table |
| $7F:9640 | 16 | Bubble sprite Y velocity table |
| $7F:9650 | 3752 | Work area for sprite palette inversion |
| $7F:A4F8 | - | (unknown) |
| $7F:A532 | 64 | Ring buffer of checkpoint X positions for the standby Kong to follow |
| $7F:A572 | 64 | Ring buffer of checkpoint Y positions for the standby Kong to follow |
| $7F:A5B2 | 64 | Ring buffer of checkpoint passing directions for the standby Kong to follow (Kong facing) |
| $7F:A5F2 | 64 | Ring buffer of animations at checkpoint passing for the standby Kong to follow |
| $7F:A632 | 3072 | Banana placement data expansion area (16-byte units, 192 entries) 0-1: X position 2-3: Y position 4-5: number of columns in the banana set 6-7: number of columns in the banana set x4 (if too small, the set is not displayed when partly off-screen) 8-9: banana display layer selection 10-11: address of the banana set 12-13: 14-15: |
| $7F:B232 | 9216 | Banana set area Sliced by column, and each column is represented as a bit array. Higher bits are bananas higher up in the set. |