the cutting room mirror

Donkey Kong Land III

This article has a talk page!
view on tcrf.net

Donkey Kong Land III is the final game in the Donkey Kong Land series. This game is based upon Donkey Kong Country 3, just as the preceding Land games were based on their Country equivalents.

The game was first released in English for the (Super) Game Boy, then released in Japan on Game Boy Color with upgraded graphics and no export (though an English fan-translation patch exists).

Everything mentioned here is assumed to apply to both the Game Boy (International) and Game Boy Color (Japanese) versions, unless stated otherwise.

Glitched Rattly#

Rattly the Rattlesnake (from Donkey Kong Country 2 and Donkey Kong Land 2) is partially playable in this game by hacking, though he is glitched. He is playable by using GameShark code 010600DF. If both Kongs are present, a Rattly icon, left over from Donkey Kong Land 2, will appear on the bottom-right of the screen just like any other animal friend would. When first entering the level, the code doesn't completely refresh the sprite (until a bonus stage is entered or exited), which means that Dixie or Kiddy will still be playable instead of Rattly. However, some of Rattly's functionality is still here, such as:

  • Being able to safely jump on enemies that the Kongs can't jump on, such as Buzzes or Bristles
  • Bouncing higher than the Kongs do when jumping on enemies
  • Being unable to climb or swim

DKL3_Glitched_Rattly_2.png

When entering a bonus stage with this GameShark code, the sprite refreshes to Rattly, who is glitched. Rattly doesn't actually appear as there are no such sprites here; instead, he is replaced by an immobile purple puff ball sprite that is used for other things in the game, such as explosions or when the Kongs get hit by enemies. The only way out is to wait until the bonus stage runs of time, then press Start + Select to exit the level.

It is likely that Rattly is only present as leftover code from Donkey Kong Land 2, since both games run off the same engine. It is unlikely that Rareware ever intended for Rattly to be playable in this game, since Rattly isn't playable in Donkey Kong Country 3 either (and likely isn't even programmed in the game).

In the prototype International ROM, the Kongs will not turn into an immobile puff ball; instead, the game will lock up, and the only way to fix it is to turn the game off.

Unused/Leftover Graphics#

Sprites#

To do:
Document ROM offsets for these graphics.

Much like in Donkey Kong Land 2, several unused sprites exist in this game, most of which were leftover from DKL2. These sprites can be viewed by using any of the following GameShark codes:

  • 01xx0FC1 (Current sprite #1)
  • 01xx2FC1 (Current sprite #2)
  • 01xx4FC1 (Current sprite #3)
  • 01xx6FC1 (Current sprite #4)
  • 01xx8FC1 (Current sprite #5)
  • 01xxAFC1 (Current sprite #6)
  • 01xxCFC1 (Current sprite #7)
  • 01xxEFC1 (Current sprite #8)
  • 01xx0BDF (Player sprite)

The xx should be replaced with the unused sprite's ID. Note that by using these codes, the animation cycle will be based on the sprite that is being replaced.

Rattly Barrel#

Sprite ID: 73
Frame: 04

DKL3_Rattly_Barrel.png

A barrel for Rattly exists in the game! This sprite is unique in that there is actually coding for it. To see it, go to ROM offsets 42018-4201F (in the retail English ROM), 41FE8-41FEF (in the prototype International ROM), or 42068-4206F (in the Japanese ROM) and change this to 1D 77 06 00 00 00 00 00. This will turn all Enguarde Barrels into Rattly Barrels. Upon entering the barrel, the Kongs will turn into the glitched Rattly.

Cursor#

Sprite ID: 30

DKL3_cursor_sprite.png

A yellow cursor sprite. This may have been intended for selecting the level on the Time Attack screen, as well as yes/no or save/leave answers to Wrinkly's and Bear's questions. While all of these screens have a cursor, they do not use this sprite; instead, the cursor in these cases is actually a background tile.

TNT Barrel#

Sprite ID: 3E

DKL3_TNT_Barrel_frame_01.png‎ DKL3_TNT_Barrel_frame_02.png‎ DKL3_TNT_Barrel_frame_03.png‎ DKL3_TNT_Barrel_frame_04.png‎ DKL3_TNT_Barrel_frame_05.png‎

A sprite for a TNT Barrel. This sprite is leftover from Donkey Kong Land 2, where it was used. Donkey Kong Land III is Rareware's only Donkey Kong game which never uses this barrel.

Miscellaneous Barrels#

Sprite ID: 70

DKL3_X_Barrel.png DKL3_Check_Barrel.png DKL3_Minus_Barrel.png DKL3_Light_Barrel.png DKL3_Invincibility_Barrel.png DKL3_Krockhead_Barrel.png

Several barrels were leftover from Donkey Kong Land 2, but are unused in this game. The X and Check Barrels were used in Target Terror in Donkey Kong Land 2 and Donkey Kong Country 2, but have no use in this game. The Minus Barrel was, curiously, unused in Donkey Kong Land 2; its only use was in Donkey Kong Country 2, in Haunted Hall. The Light Barrel was used in Glimmer's Galleon in Donkey Kong Land 2. The Invincibility Barrel was used in several levels in Donkey Kong Country 2, Donkey Kong Land 2, and even Donkey Kong Country 3, but strangely went unused in this game. Finally, the Krockhead Barrel was used in Krockhead Klamber in Donkey Kong Country 2, as well as in Krockhead Klamber and Fiery Furnace in Donkey Kong Land 2, but has no use in this game.

Rambi Charging Animation#

Sprite ID: 87

DKL3_Rambi_charging_frame_01.png DKL3_Rambi_charging_frame_02.png DKL3_Rambi_charging_frame_03.png DKL3_Rambi_charging_frame_04.png DKL3_Rambi_charging_frame_05.png DKL3_Rambi_charging_frame_06.png

A sprite for Rambi's charging animation. This was naturally used in Donkey Kong Land 2, but went unused in this game, as Rambi doesn't appear at all. None of Rambi's other animations are known to be present.

Screech#

Sprite ID: 83

DKL3_Screech_frame_01.png DKL3_Screech_frame_02.png DKL3_Screech_frame_03.png DKL3_Screech_frame_04.png DKL3_Screech_frame_05.png DKL3_Screech_frame_06.png

A sprite for Screech. This sprite is leftover from Donkey Kong Land 2, where he appeared in Screech's Sprint. Screech naturally doesn't appear in this game, so his sprites went unused here. Oddly, he is colored purple in the GBC version, despite being colored closer to red in Donkey Kong Country 2.

Diddy Carrying Sprite#

Sprite ID: 5A

DKL3_Diddy_carrying.png

A sprite of Diddy carrying an object, such as a barrel. Again, this was used in Donkey Kong Land 2, but is unused here, seeing as Diddy doesn't appear in DKL3. This is the only known sprite of Diddy in the entire game.

Early Kremkoin Sprite#

Sprite ID: 39

DKL3_early_Kremkoin_frame_01.png DKL3_early_Kremkoin_frame_02.png DKL3_early_Kremkoin_frame_03.png DKL3_early_Kremkoin_frame_04.png DKL3_early_Kremkoin_frame_05.png DKL3_early_Kremkoin_frame_06.png DKL3_early_Kremkoin_frame_07.png DKL3_early_Kremkoin_frame_08.png

An odd sprite, this appears to be an early design for a Kremkoin in Donkey Kong Land 2, where it was unused even in that game. For reasons unknown, it was given a blue palette in the GBC version.

Flame#

Sprite ID: 7C

DKL3_flame_frame_01.png DKL3_flame_frame_02.png DKL3_flame_frame_03.png DKL3_flame_frame_04.png

An odd flame sprite; its purpose is unknown. It first showed up in Donkey Kong Land 2, where it was unused from the beginning and was never removed in this game. Unlike some of the other sprites, this sprite was given an appropriate red palette in the GBC version.

Leftover Background Tiles from DKL2#

Leftover tiles from DKL2. The tiles highlighted in green are unused, while the tiles highlighted in gray are new to DKL3 and are used.

DKL3 has some leftover graphics from DKL2, which consists of animated tiles for certain stages, including the ship hold, ice, lava, ship deck, dungeon, and roller coaster stages. The leftover tiles start at 7C30C in all versions of DKL3. These tiles have no use in DKL3, and are thus unused.

Unused Barrel Cannon Behaviors#

To do:
Explain how to enable these features. Also, look into more unused behaviors, if there are any.

Barrel Cannons have a few behaviors that were used in previous Donkey Kong games, but go unused in Donkey Kong Land III.

  • Auto-rotation (upon entering a Barrel Cannon)
  • Moving up and down vertically
  • Moving left and right horizontally

Unused Music#

Rocket Run#

Among the unused tracks is an 8-bit version of the song Rocket Run from Donkey Kong Country 3. It is not known what this music would have been used for, however, since the Rocket Barrel does not appear in Donkey Kong Land 3.

Though no known GameShark code exists to change the music, it is possible to hear it by hacking one of the bytes in the level headers – for example, changing offset 40118 (4011A in the Japanese version) from 0B to 14 will change Red Wharf's music to Rocket Run. More information can be found here (International version) or here (Japanese version), as well as here (International versions).

Leftover Tracks from DKL2#

To do:
Find a less confusing way to explain this.

There are also five leftover tracks from Donkey Kong Land 2: Token Tango, Boss Bossanova (unused the first time!), Klubba's Reveille, Donkey Kong Rescued, and Titular Tableau. Unlike Rocket Run, these five do not contain pointers, so pointers must be hacked in.

These songs still exist due to the way that DKL2 handled the memory for all of the music. In DKL2, most of the songs resided in ROM bank 1 (offsets 4000-7FFF), but not all songs could fit into this bank due to the amount of space that they took up. Due to the way that the Game Boy's memory works, when these songs were copied into RAM, they would end up at 4000-7FFF in RAM.

The other five songs: Token Tango, Boss Bossanova, Klubba's Reveille, Donkey Kong Rescued, and Titular Tableau, needed to be placed in another part of DKL2's ROM -- 7F54E-7FFCD in the International version; 7F54F-7FFCE in the Japanese version (in all versions of DKL3, the data is located at 70000-70A7F). In order to load this into RAM, a function is called at 3747 (in English DKL2), 3778 (in Japanese DKL2), 378A (in International DKL3), or 3619 (in Japanese DKL3) to load the songs when necessary. In both DKL2 and DKL3, the five songs exist at D000-DA7F in RAM.

The function is only called on specific screens, such as boss stages, whenever the songs needed to be used in DKL2. The reason why the function is not always called is because this same area of memory is often used for other things as well -- for example, in non-boss stages, the memory is used to store decompressed map data (which starts at C600 in RAM), and the map data is almost always large enough -- if not always -- to reach D000 in RAM and beyond.

In DKL3, while the songs in bank 1 (ROM offsets 4000-7FFF) were all replaced with new songs, the other five songs were left intact, and the code to load them still exists, and is still called on certain screens, despite it being completely unnecessary in this game.

Here is a table of RAM-based pointers that each song uses. The endianness in this table is adjusted for readability, but note that unlike most of the game, these pointers are little endian, so you have to switch the two bytes when using a hex editor.

Song

Channel 1 pointer

Channel 2 pointer

Channel 3 pointer

Channel 4 pointer

Token Tango

D000

D13C

D197

D1F8

Boss Bossanova

D240

D2FE

D379

D40B

Klubba's Reveille

D497

D517

D59A

D612

Donkey Kong Rescued

D649

D741

D7CE

D82B

Titular Tableau

D864

D8F4

D962

DA07

In the music pointer table of DKL3, some songs have "blank" pointers; that is, they point to data that results in silence. Therefore, by going to the following addresses, the pointers above can be added back in (note that only five of these need to be edited):

Music ID

Starting address of pointers

01

4DA4

0A

4DEC

17

4E54

18

4E5C

2B

4EF4

2C

4EFC

2D

4F04

2E

4F0C

After adding the pointers back in, going to ROM offset 401F9 (or 401FB in the Japanese version) and changing the value to one of the values in the table above will change Barbos Bastion's music to one of the leftover songs from DKL2.

The song tempos still need to be fixed, though. The tempos can be found starting at address 4D71 and adding the appropriate music ID (e.g. for song 01, its tempo is found at 4D72). Here is a list of the correct tempos that each song uses:

  • Token Tango: 70
  • Boss Bossanova: E0
  • Klubba's Reveille: E0
  • Donkey Kong Rescued: A5
  • Titular Tableau: B0

Keep in mind that when hearing these songs, after going to one level, the game will add 14 to the music index value until the game is turned off, so these songs can only be heard if you go to the level with the hacked music when you first turn the game on.

This patch (which should be applied to the Japanese version) restores all the leftover songs from DKL2, and assigns a different one to each of the boss levels (except K. Rool's Last Stand, since there are six boss levels but only five leftover songs). It also disables the functionality to add 14 to the music ID number, so you don't have to keep turning the game off to hear each song.

Unused Sound Effects#

By going to ROM offset 2172 in the International version (alternately, 216C in the prototype English version, or 215F in the Japanese version) and changing its value, the sound effect that is heard from collecting all the stars in any Collect the Stars bonus stage is changed. Depending on the value changed, various unused sound effects can be heard:

  • 02: The Kong Token sound effect from Donkey Kong Land. This was also unused in Donkey Kong Land 2.
  • 05: The tire sound effect from Donkey Kong Land, as well as certain barrels in Donkey Kong Land 2, such as the ones in Krockhead Klamber.
  • 08: The KONG letter sound effect from Donkey Kong Land, as well as the banana bunch sound effect from Donkey Kong Land 2 and Donkey Kong Country (Game Boy Color).

Unused Text#

There are a few unused strings related to Bear. These strings exist in both the International and Japanese versions of the game.

International

Japanese

  KEEPING A TIGHT
 GRIP ON THE WALLET
  HUH? NO PROBLEM.
さいふのひもが
かたいやつだな
べつにかまわないけどさ

Addresses: B45D (International), 7DC5F (Japanese)

This text string takes place right after the string where Bear asks the Kongs if they want to play the card game, so this text presumably would have appeared if the Kongs said no to his question. In the final game, Bear doesn't say this and instead skips to the next question (where he offers the Kongs hints on certain levels).

International

Japanese

 GREAT! HOP IN AND
  WAVE YOUR HAIRY
  ATOMS GOODBYE!
よっしゃ!さあのった!
けぶかいアトムにさようならした!

Addresses: B915 (International), 7E103 (Japanese)

This appears right after the string where Bear asks the Kongs if they want to teleport to another world. Presumably, he would have said this if they said yes. In the final game, he says nothing before the Kongs use the teleport.

International

Japanese

 SORRY KONGS. IT'S
  STOPPED WORKING.
  TRY AGAIN LATER.
ごめん、コングたち
こいつうごかなくなっちゃった
あとでトライして

Addresses: B94C (International), 7E13D (Japanese)

This appears just after the unused string above. Presumably, Bear would have said this if the Kongs tried to use the teleport before defeating the first boss (since teleporting would be useless). In the final game, Bear doesn't even offer the teleport before defeating the first boss.

Unused Save Data#

Unused Level Bit#

Each level contains flags to determine whether a level is cleared, secrets have been found, etc., which is stored in A01C-A03F in RAM for File 1, A06C-A08F for File 2, and A0BC-A0DF for File 3. The most significant bit stores whether Dixie or Kiddy completed a level for the first time (0=Kiddy; 1=Dixie), similar to some other Donkey Kong games. However, in this game, this information is never used, and is likely a leftover from DKL2 where Diddy's and Dixie's icons would show up on the map, depending on who beat the level first.

Bear Coins#

In a similar manner to Donkey Kong Country 3, this game saves the player's current Bear Coins whenever the game is saved. However, unlike in Donkey Kong Country 3, this data is not actually used in Donkey Kong Land III. Upon loading a save file, the Bear Coin count is read from SRAM address A009 (File 1), A059 (File 2), or A0A9 (File 3), and then stored to HRAM address FFB3 (international versions) or FFB2 (Japanese version)... however, when entering the world map screen, this byte (FFB2 or FFB3) is set to 0, which causes the player to lose all their Bear Coins each time a save file is loaded.

This unused feature first appeared in Donkey Kong Land 2, and remains unused in this game, due to both games sharing similar game engines.

To prevent the Bear Coin count from being reset to 0, go to ROM offset 16A25 (Japanese version), 16404 (international retail versions), or 163DC (international prototype version), and change the two bytes to 00 00. This will prevent the value 00 from being written to FFB2 or FFB3 (depending on the version), and will allow the player to keep their Bear Coins across play sessions.

Last Saved Location#

Donkey Kong Land III keeps track of the location where the player last saved, including both the world and location on the submap. The game keeps track of the world at SRAM offset A004 (File 1), A054 (File 2), and A0A4 (File 3). In addition, the game keeps track of the submap location (Wrinkly Refuge) at SRAM offset A005 (File 1), A055 (File 2), and A0A5 (File 3). This is consistent with the Donkey Kong Country games. Eventually after loading a file and selecting it, the world location is loaded into HRAM offset FFAE (international) or FFAD (Japanese), and the submap location into HRAM offset FFAF (international) or FFAE (Japanese).

However, after loading the data into HRAM, the submap location ends up unused, and the player always starts on the main Northern Kremisphere map when loading a saved file!

The HRAM byte for the world location is read, and is copied to the HRAM byte for the submap location. Afterwards, the world location is overwritten with the value 06 (the main Northern Kremisphere map).

For example, if the player saves in the Wrinkly Refuge location in Cape Codswallop, initially when loading the save, the world map location is 00 (Cape Codswallop) and the submap location is 02 (Wrinkly Refuge). However, afterwards, the world map location is 06 (Northern Kremisphere) and the submap location is 00 (Cape Codswallop). In this example, instead of placing the Kongs in Wrinkly Refuge within Cape Codswallop, they start out on the main Northern Kremisphere map, placed on Cape Codswallop.

ASM code for this behavior exists in the following locations:

  • International versions: 2:7E77-7E7E and 5:63F8-63FB (The latter location sets the world map location to 06 a second time for some reason)
  • Japanese version: 2:747F-7486 and 5:6A16-6A19

Filling these regions with zeros makes the behavior match the DKC games.

Inaccessible Blast Barrel#

DKL3_GBC_Whiplash_Dash_map_end.png

In the screenshot to the right, there are various barrels at the end of Whiplash Dash. The Bonus Barrel to the right (inside the wall) is invisible, as well as three of the Blast Barrels: The one that points down, towards the invisible Bonus Barrel; the one below the Bonus Barrel (pointing diagonally, up and to the left), and the one to the left of that one, pointing left.

The downward-pointing Blast Barrel above the invisible Bonus Barrel in the wall is used to reach the barrel pointing up and to the left. Since Bonus Barrels do not appear in Time Attack mode, the Blast Barrel was added below it -- if the Kongs attempt to access this bonus in Time Attack mode, this barrel is used to prevent the Kongs from falling to their death by launching them up and left, back to the floor above and into the exit. However, the Blast Barrel to the left of the one pointing up-left is not accessible at all. It appears as though the diagonal Blast Barrel was originally going to launch left instead of up-left, but this may have been changed at the last minute. It is also worth noting that these bottom two Blast Barrels in the wall did not exist in the prototype ROM.

To access this invisible Blast Barrel, use a hex editor and go to ROM offsets 40454-40455 (or 40456-40457 in the Japanese version). Change this to BF 08. Now, when starting Whiplash Dash, the Kongs will be placed just above this otherwise inaccessible Blast Barrel -- just move a little to see it.

Sheepy Shop Card Game Record#

Prior to displaying the file select screen, the game calculates the percentage of each file, based on the progress made. At one point, the game reads the record for the card game in Sheepy Shop, and checks if it is 31 (the default on a new save file) or lower. However, the game does not actually do anything with this information, since the program jumps to the same location regardless of the player's card game record. The code for this is located at F8A0 in the Japanese version, and FA15 in the international versions.

ROM3:78A0 2A        ldi  a,(hl)    ;hl = C615 for file 1, C665 for file 2, C6B5 for file 3.
                                   ;These addresses contain the card game records for each file,
                                   ; and this instruction reads that data.
                                   ; Records are set to 31 seconds at the start of a file.
ROM3:78A1 FE 31     cp   a,31      ;Does current record = 31 seconds? (Note: This game often uses
                                   ; binary-coded decimals for storing values.)
ROM3:78A3 20 00     jr   nz,78A5   ;If not equal, branch to 78A5. If equal, go to the next
                                   ; instruction, 78A5.
ROM3:78A5 0E 06     ld   c,06      ;Program counter always ends up here! So reading the record
                                   ; and comparing to 31 was unnecessary.

It is possible that the developers once considered making it mandatory for the player to get 30 seconds or better in the card game. In the final game, the only thing that happens when beating the record for a given file is that Bear congratulates the player, gives the Kongs 5 extra Bear Coins, and tells them how to play the card game on the title screen.

References#


  1. ="Nintendo Brasil Wiki">1↩︎