Welcome to Data Crystal's new home! Data Crystal is now part of the TCRF family (sort of).
The wiki has recently moved; please report any issues in Discord. Pardon the dust.

Donkey Kong Land III/Notes

From Data Crystal
Jump to navigation Jump to search

Chip tiny.png The following article is a Notes Page for Donkey Kong Land III.

Japanese Version

All color palettes, such as the sprite color palettes (0x0001BE60-0x0001BE67) and the level color palettes (0x00084FFB-0x000852FA) have four different colors (eight bytes) each and each color is a 15-bit value: 5 bits for blue, 5 bits for green, and 5 for red, in that order. Since each color has two bytes and there are 16 bits in two bytes, the first bit is unused. The bits for each color are then translated into a four-digit hex value, and the first two hex digits and the last two are switched because all Game Boy variants are little endian. Sprite palettes are constant and never change at all in the game, so each sprite can have one of eight different color palettes.

All sprite color values, from 0x0001BEA0-0x0001BF1E (?), is assigned a 3-bit value from 00-07. This number corresponds to the palette defined in the Sprite Color Palettes section (from 0x0001BE60-0x0001BE9F). Any number 08 or higher will cause the sprite to be invisible, which isn't used at all.

Most playable characters have different colors for various animations (such as jumping or swimming), especially Dixie and Kiddy (however, Ellie also has three and Squitter has two). Therefore, if you change the color of a character, it is important to change the color for every byte that relates to that character, otherwise a character can change color depending on his/her action.

When Kobble is defeated, his color becomes that of Skidda's. Therefore, if you make Skidda a different color from Kobble (Kobble's color is located in 0x0001BEA1, Skidda's is 0x0001BEA4), Kobble will turn into a different color when he is defeated.

For some reason, when trying to edit the color palette for cave levels (0x000851FB-0x0008523A), it completely screws up when playing the level Haunted Hollows (except the bonus stages in that level). It is likely because it is the only cave level with water in it. The same problem occurs with Ugly Ducting when trying to edit the color palette for tube levels.

(todo: add screenshots)

Level Header Data

This is the level header data, which controls different aspects of each level.
In the English version, this data is located in 0x40065-0x4047E, and in the
Japanese version, this data is located in 0x40067-0x40480. 

In both versions, level headers have an array of $19 (25) bytes and is as
follows:

aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss tt uu vv ww xx yy

aa = Determines the level map that is used.
bb = Tileset pointer?
cc = Sprite pointer?
dd = Level properties. This determines water visibility, starting direction, and
     traction.
     Only bits 6, 3, and 0 have properties.
     Bit 6 = Water visibility. If this bit is 1, then water will be darkened. If
             this bit is 0, then it will be clear.
             Note: In the Game Boy Color version, this bit only has an effect on
               Tube and Cave stages, where it uses a raster effect to darken the
               palette during the middle of a frame using scanlines. Even if
               this bit is set as 1 on any other type of stage, the water will
               still be clear.
     Bit 3 = Starting direction. If this bit is 0, then Dixie/Kiddy will start
             the level facing right. If this bit is 1, then Dixie/Kiddy will
             face left at the beginning of the level.
     Bit 0 = Traction. If this bit is 0, then the level will not be slippery. If
             it is 1, then it will be slippery (like in snow stages).
ee = The music used in the level. See this for index numbers. After entering a
     level at least once, a flag is set so that when entering a level again
     (this affects bonus levels as well), the music played will be this value
     added by $14. This makes it so that you will hear slightly shortened music
     after this. For example, if this byte is $0B (Stilt Village) and you have
     been to at least one level, you will hear $1F (the same music, but shorter)
     instead. This flag resets when turning the game off.
ff = Water level. A lower value means the water will be higher up. If this value
     is 00, then the whole level will be submerged. Increasing the value by 01
     will lower the water by 32 pixels.
gg = This determines the precipitation.
     00 = Snow
     01 = Rain
     FF = Nothing
     Note: If a level has water in it, the bubbles floating from the water will
     cause sprite overload and cause precipitation to not show up properly, even
     if the bubbles are offscreen.
hh = X position from start, in increments of 32 pixels.
ii = Y position from start, in increments of 32 pixels.
jj = X position from Star Barrel, in increments of 32 pixels.
kk = Y position from Star Barrel, in increments of 32 pixels.
ll = X position from Bonus Barrel #1, in increments of 32 pixels.
mm = Y position from Bonus Barrel #1, in increments of 32 pixels.
nn = X position from Bonus Barrel #2, in increments of 32 pixels.
oo = Y position from Bonus Barrel #2, in increments of 32 pixels.
pp = X position from Warp Barrel, in increments of 32 pixels.
qq = Y position from Warp Barrel, in increments of 32 pixels.
rr = Bonus #1 map.
ss = Bonus #2 map.
tt = Warp map.
uu = ??? (This is either 00 or 01)
vv = ??? (This is either 00 or 01)
ww = ??? (This is either 00 or 01)
xx = If both this and byte yy is 00, then you will get an instant death upon
     entering the level. The purpose of this byte besides this is unknown.
yy = If both this and byte xx is 00, then you will get an instant death upon
     entering the level. The purpose of this byte besides this is unknown.

The levels in this group of data are ordered as follows:

Total Rekoil
Liftshaft Lottery
Miller Instinct
Black Ice Blitz
Polar Pitfalls
Tundra Blunda
Bleak Magic
Red Wharf
Ford Knocks
Jetty Jitters
Koco Channel
Riverbank Riot
Surface Tension
Seabed Shanty
Coral Quarrel
Deep Reef Grief
Barbos Bastion
Minky Mischief
Redwood Rampage
Simian Shimmy
Arich Attack
Vertigo Verge
Rockface Chase
Clifftop Critters
Rocketeer Rally
Footloose Falls
Rickety Rapids
Stalagmite Frights
Haunted Hollows
Ghoulish Grotto
K. Rool's Last Stand
Jungle Jeopardy
Tropical Tightropes
Rainforest Rumble
Karbine Kaos
Bazuka Bombard
Kuchuka Karnage
Barrel Boulevard
Krazy Kaos
Ugly Ducting
Whiplash Dash
K. Rool Duel

Music Index Numbers

Here are index numbers for the music in the game.

00 - (Silence)
01 - (Silence)
02 - Dixie Beat
03 - Crazy Calypso
04 - Northern Kremisphere
05 - Brothers Bear
06 - Bonus Time (screen)
07 - Bonus Time (stage)
08 - Bonus Win
09 - Bonus Lose
0A - (Silence)
0B - Stilt Village
0C - Enchanted Riverbank
0D - Nuts & Bolts
0E - Treetop Tumble
0F - Rockface Rumble
10 - Water World
11 - Mill Fever
12 - Hot Pursuit
13 - Jungle Jitter
14 - Rocket Run (Unused theme!)
15 - Cascade Capers
16 - Cavern Caprice
17 - (Silence)
18 - (Silence)
19 - Death
1A - Level Complete
1B - Big Boss Blues
1C - Wrinkly Refuge
1D - Baddies on Parade
1E - Game Over

1F-2A is the same as 0B-16, but with shorter beginnings.
2F is the same as 1B.