Donkey Kong Land III/RAM map: Difference between revisions

From Data Crystal
Jump to navigation Jump to search
No edit summary
Line 20: Line 20:
=== File 1 ===
=== File 1 ===
* <tt>A000-A04F</tt>: Miscellaneous data
* <tt>A000-A04F</tt>: Miscellaneous data
** <tt>A005</tt>: Last world visited
** <tt>A004</tt>: Last world visited
** <tt>A015</tt>: Card Game record
** <tt>A015</tt>: Card Game record
** <tt>A016-A01B</tt>: Bear data
*** Bit 6: 1 if DK Coin is collected, 0 if not
*** Bit 1: 1 if Watch is collected, 0 if not
*** Bit 0: 1 if attempted at least once, 0 if not
** <tt>A01C-A03F</tt>: Level data
** <tt>A01C-A03F</tt>: Level data
*** Bit 7: 0 if cleared with Kiddy the first time, 1 if cleared with Dixie for the first time
*** Bit 7: 0 if cleared with Kiddy the first time, 1 if cleared with Dixie for the first time
Line 29: Line 33:
*** Bit 3: 0 if Bonus Coin #1 is missing, 1 if Bonus Coin #1 is collected
*** Bit 3: 0 if Bonus Coin #1 is missing, 1 if Bonus Coin #1 is collected
*** Bit 2: Unused?
*** Bit 2: Unused?
*** Bit 1: 0 if not cleared, 1 if cleared
*** Bit 1: 0 if DK Coin is not collected, 1 if DK Coin is collected
*** Bit 0: 0 if not cleared, 1 if cleared
* <tt>A100-A14F</tt>: Copy of <tt>A000-A04F</tt> (backup?)
* <tt>A100-A14F</tt>: Copy of <tt>A000-A04F</tt> (backup?)
* <tt>A200-A24F</tt>: Copy of <tt>A000-A04F</tt> (backup?)
* <tt>A200-A24F</tt>: Copy of <tt>A000-A04F</tt> (backup?)
* <tt>A350-A373</tt>: Time Attack records
* <tt>A350-A382</tt>: Time Attack data
** Format: minutes, seconds, 1/100 seconds
** <tt>A350-A373</tt>: Time Attack level records
* <tt>A374-A37F</tt>: Time Attack clear flags
*** Format: minutes, seconds, 1/100 seconds
** <tt>01</tt> = Cleared; <tt>00</tt> = Not cleared
** <tt>A374-A37F</tt>: Time Attack clear flags
* <tt>A380</tt>: Seems to be number of Time Attack records completed
*** <tt>01</tt> = Cleared; <tt>00</tt> = Not cleared
* <tt>A381</tt>: ???
** <tt>A380</tt>: Seems to be number of Time Attack records completed
* <tt>A382</tt>: Time Attack checksum
** <tt>A381</tt>: Time Attack unlocked?
*** <tt>01</tt> = Unlocked; <tt>00</tt> = Not unlocked
** <tt>A382</tt>: Time Attack checksum
=== File 2 ===
=== File 2 ===
* <tt>A050-A09F</tt>: Miscellaneous data
* <tt>A050-A09F</tt>: Miscellaneous data
** <tt>A055</tt>: Last world visited
** <tt>A054</tt>: Last world visited
** <tt>A065</tt>: Card Game record
** <tt>A065</tt>: Card Game record
** <tt>A066-A06B</tt>: Bear data
*** Bit 6: 1 if DK Coin is collected, 0 if not
*** Bit 1: 1 if Watch is collected, 0 if not
*** Bit 0: 1 if attempted at least once, 0 if not
** <tt>A06C-A08F</tt>: Level data
** <tt>A06C-A08F</tt>: Level data
*** Bit 7: 0 if cleared with Kiddy the first time, 1 if cleared with Dixie for the first time
*** Bit 7: 0 if cleared with Kiddy the first time, 1 if cleared with Dixie for the first time
Line 50: Line 61:
*** Bit 3: 0 if Bonus Coin #1 is missing, 1 if Bonus Coin #1 is collected
*** Bit 3: 0 if Bonus Coin #1 is missing, 1 if Bonus Coin #1 is collected
*** Bit 2: Unused?
*** Bit 2: Unused?
*** Bit 1: 0 if not cleared, 1 if cleared
*** Bit 1: 0 if DK Coin is not collected, 1 if DK Coin is collected
*** Bit 0: 0 if not cleared, 1 if cleared
* <tt>A150-A19F</tt>: Copy of <tt>A050-A09F</tt> (backup?)
* <tt>A150-A19F</tt>: Copy of <tt>A050-A09F</tt> (backup?)
* <tt>A250-A29F</tt>: Copy of <tt>A050-A09F</tt> (backup?)
* <tt>A250-A29F</tt>: Copy of <tt>A050-A09F</tt> (backup?)
* <tt>A383-A3A6</tt>: Time Attack records
* <tt>A383-A3B5</tt>: Time Attack data
** Format: minutes, seconds, 1/100 seconds
** <tt>A383-A3A6</tt>: Time Attack level records
* <tt>A3A7-A3B2</tt>: Time Attack clear flags
*** Format: minutes, seconds, 1/100 seconds
** <tt>01</tt> = Cleared; <tt>00</tt> = Not cleared
** <tt>A3A7-A3B2</tt>: Time Attack clear flags
* <tt>A3B3</tt>: Seems to be number of Time Attack records completed
*** <tt>01</tt> = Cleared; <tt>00</tt> = Not cleared
* <tt>A3B4</tt>: ???
** <tt>A3B3</tt>: Seems to be number of Time Attack records completed
* <tt>A3B5</tt>: Time Attack checksum
** <tt>A3B4</tt>: Time Attack unlocked?
*** <tt>01</tt> = Unlocked; <tt>00</tt> = Not unlocked
** <tt>A3B5</tt>: Time Attack checksum
=== File 3 ===
=== File 3 ===
* <tt>A0A0-A0EF</tt>: Miscellaneous data
* <tt>A0A0-A0EF</tt>: Miscellaneous data
** <tt>A0A5</tt>: Last world visited
** <tt>A0A4</tt>: Last world visited
** <tt>A0B5</tt>: Card Game record
** <tt>A0B5</tt>: Card Game record
** <tt>A0B6-A0BB</tt>: Bear data
*** Bit 6: 1 if DK Coin is collected, 0 if not
*** Bit 1: 1 if Watch is collected, 0 if not
*** Bit 0: 1 if attempted at least once, 0 if not
** <tt>A0BC-A0DF</tt>: Level data
** <tt>A0BC-A0DF</tt>: Level data
*** Bit 7: 0 if cleared with Kiddy the first time, 1 if cleared with Dixie for the first time
*** Bit 7: 0 if cleared with Kiddy the first time, 1 if cleared with Dixie for the first time
Line 71: Line 89:
*** Bit 3: 0 if Bonus Coin #1 is missing, 1 if Bonus Coin #1 is collected
*** Bit 3: 0 if Bonus Coin #1 is missing, 1 if Bonus Coin #1 is collected
*** Bit 2: Unused?
*** Bit 2: Unused?
*** Bit 1: 0 if not cleared, 1 if cleared
*** Bit 1: 0 if DK Coin is not collected, 1 if DK Coin is collected
*** Bit 0: 0 if not cleared, 1 if cleared
* <tt>A1A0-A1EF</tt>: Copy of <tt>A0A0-A0EF</tt> (backup?)
* <tt>A1A0-A1EF</tt>: Copy of <tt>A0A0-A0EF</tt> (backup?)
* <tt>A2A0-A2EF</tt>: Copy of <tt>A0A0-A0EF</tt> (backup?)
* <tt>A2A0-A2EF</tt>: Copy of <tt>A0A0-A0EF</tt> (backup?)
* <tt>A3B6-A3D9</tt>: Time Attack records
* <tt>A3B6-A3E8</tt>: Time Attack data
** Format: minutes, seconds, 1/100 seconds
** <tt>A3B6-A3D9</tt>: Time Attack level records
* <tt>A3DA-A3E5</tt>: Time Attack clear flags
*** Format: minutes, seconds, 1/100 seconds
** <tt>01</tt> = Cleared; <tt>00</tt> = Not cleared
** <tt>A3DA-A3E5</tt>: Time Attack clear flags
* <tt>A3E6</tt>: Seems to be number of Time Attack records completed
*** <tt>01</tt> = Cleared; <tt>00</tt> = Not cleared
* <tt>A3E7</tt>: ???
** <tt>A3E6</tt>: Seems to be number of Time Attack records completed
* <tt>A3E8</tt>: Time Attack checksum
** <tt>A3E7</tt>: Time Attack unlocked?
*** <tt>01</tt> = Unlocked; <tt>00</tt> = Not unlocked
** <tt>A3E8</tt>: Time Attack checksum


=== Time Attack checksum ===
=== Time Attack checksum ===

Revision as of 01:39, 30 January 2013

Chip tiny.png The following article is a RAM map for Donkey Kong Land III.

Some notes:

  • Most, if not all, of these addresses apply to both the English and Japanese versions.
  • Many (but not all) of these addresses may also apply to Donkey Kong Land 2, as they run off the same game engine.
  • C5EE = Bonus timer
  • DF00 = Current character
    • 00 = Kiddy Kong
    • 01 = Dixie Kong
    • 02 = Ellie
    • 03 = Squawks
    • 04 = Enguarde
    • 05 = Squitter
    • 06 = Rattly (glitched, simply leftover from DKL2)
    • 07 = Toboggan
  • DF30 = Invincibility timer

Saved data

File 1

  • A000-A04F: Miscellaneous data
    • A004: Last world visited
    • A015: Card Game record
    • A016-A01B: Bear data
      • Bit 6: 1 if DK Coin is collected, 0 if not
      • Bit 1: 1 if Watch is collected, 0 if not
      • Bit 0: 1 if attempted at least once, 0 if not
    • A01C-A03F: Level data
      • Bit 7: 0 if cleared with Kiddy the first time, 1 if cleared with Dixie for the first time
      • Bit 6: 0 if missing at least one Bonus Coin, 1 if both Bonus Coins have been found
      • Bit 5: Unused?
      • Bit 4: 0 if Bonus Coin #2 is missing, 1 if Bonus Coin #2 is collected
      • Bit 3: 0 if Bonus Coin #1 is missing, 1 if Bonus Coin #1 is collected
      • Bit 2: Unused?
      • Bit 1: 0 if DK Coin is not collected, 1 if DK Coin is collected
      • Bit 0: 0 if not cleared, 1 if cleared
  • A100-A14F: Copy of A000-A04F (backup?)
  • A200-A24F: Copy of A000-A04F (backup?)
  • A350-A382: Time Attack data
    • A350-A373: Time Attack level records
      • Format: minutes, seconds, 1/100 seconds
    • A374-A37F: Time Attack clear flags
      • 01 = Cleared; 00 = Not cleared
    • A380: Seems to be number of Time Attack records completed
    • A381: Time Attack unlocked?
      • 01 = Unlocked; 00 = Not unlocked
    • A382: Time Attack checksum

File 2

  • A050-A09F: Miscellaneous data
    • A054: Last world visited
    • A065: Card Game record
    • A066-A06B: Bear data
      • Bit 6: 1 if DK Coin is collected, 0 if not
      • Bit 1: 1 if Watch is collected, 0 if not
      • Bit 0: 1 if attempted at least once, 0 if not
    • A06C-A08F: Level data
      • Bit 7: 0 if cleared with Kiddy the first time, 1 if cleared with Dixie for the first time
      • Bit 6: 0 if missing at least one Bonus Coin, 1 if both Bonus Coins have been found
      • Bit 5: Unused?
      • Bit 4: 0 if Bonus Coin #2 is missing, 1 if Bonus Coin #2 is collected
      • Bit 3: 0 if Bonus Coin #1 is missing, 1 if Bonus Coin #1 is collected
      • Bit 2: Unused?
      • Bit 1: 0 if DK Coin is not collected, 1 if DK Coin is collected
      • Bit 0: 0 if not cleared, 1 if cleared
  • A150-A19F: Copy of A050-A09F (backup?)
  • A250-A29F: Copy of A050-A09F (backup?)
  • A383-A3B5: Time Attack data
    • A383-A3A6: Time Attack level records
      • Format: minutes, seconds, 1/100 seconds
    • A3A7-A3B2: Time Attack clear flags
      • 01 = Cleared; 00 = Not cleared
    • A3B3: Seems to be number of Time Attack records completed
    • A3B4: Time Attack unlocked?
      • 01 = Unlocked; 00 = Not unlocked
    • A3B5: Time Attack checksum

File 3

  • A0A0-A0EF: Miscellaneous data
    • A0A4: Last world visited
    • A0B5: Card Game record
    • A0B6-A0BB: Bear data
      • Bit 6: 1 if DK Coin is collected, 0 if not
      • Bit 1: 1 if Watch is collected, 0 if not
      • Bit 0: 1 if attempted at least once, 0 if not
    • A0BC-A0DF: Level data
      • Bit 7: 0 if cleared with Kiddy the first time, 1 if cleared with Dixie for the first time
      • Bit 6: 0 if missing at least one Bonus Coin, 1 if both Bonus Coins have been found
      • Bit 5: Unused?
      • Bit 4: 0 if Bonus Coin #2 is missing, 1 if Bonus Coin #2 is collected
      • Bit 3: 0 if Bonus Coin #1 is missing, 1 if Bonus Coin #1 is collected
      • Bit 2: Unused?
      • Bit 1: 0 if DK Coin is not collected, 1 if DK Coin is collected
      • Bit 0: 0 if not cleared, 1 if cleared
  • A1A0-A1EF: Copy of A0A0-A0EF (backup?)
  • A2A0-A2EF: Copy of A0A0-A0EF (backup?)
  • A3B6-A3E8: Time Attack data
    • A3B6-A3D9: Time Attack level records
      • Format: minutes, seconds, 1/100 seconds
    • A3DA-A3E5: Time Attack clear flags
      • 01 = Cleared; 00 = Not cleared
    • A3E6: Seems to be number of Time Attack records completed
    • A3E7: Time Attack unlocked?
      • 01 = Unlocked; 00 = Not unlocked
    • A3E8: Time Attack checksum

Time Attack checksum

  • In the prototype, the Time Attack checksum works as follows:
    • Take the values from the following RAM offsets (depending on the file) and add them all up, one byte at a time. (These contain time records, flags to determine whether a level is passed, etc.)
      • File 1: A350-A381
      • File 2: A383-A3B4
      • File 3: A3B6-A3E7
    • Next, take only the last 8 bits of the sum.
    • Flip all the bits of this sum (essentially, the sum is subtracted from FF; alternately, the sum is XORed with FF.)
    • Add 58 to this result (Note: in the prototype, add 50 instead), and store it in one of these offsets depending on the file:
      • File 1: A382
      • File 2: A3B5
      • File 3: A3E8
    • If this checksum fails, all Time Attack data is erased.

Velocity

  • DF10 = Horizontal velocity
    • Some common values:
Action Value(s) Notes
Walking 19 E7
Running 23 DD This is also Squitter's walking speed.
Attacking (while standing still) 0F F1
Attacking (while walking or running) 23 DD
Jumping (while walking) 23 DD
Jumping (while running) 28 D8
Dixie's helicopter spin 23 DD
Jumping on enemy 1E E2 Holding B does not seem to affect speed.
Attacking an enemy 2D D3
37 C9 If attacking two or more enemies in a row.
Holding a barrel while moving 1E E2
Swimming (slow speed -- without holding B) 0F F1
15 EB If pressing A to ascend.
Swimming (fast speed -- while holding B) 14 EC
1A E6 If pressing A to ascend.
Swimming (with Enguarde) 1E E2
Stabbing (with Enguarde) 23 DD
Climbing 0F F1 When not holding B.
1E E2 When holding B.
Toboggan 32
Jumping on enemy in Toboggan 2B Does not decrease to 2B right away; gradually decreases. Afterwards, gradually increases back to 32.
  • DF11 = Vertical velocity
    • Some common values:
Action Value Notes
Gravity 46 This value remains at 46 even when standing on ground.
Jumping B3 After jumping, this value slowly increases (which causes downward acceleration) until it reaches the gravity value of 46. However, when this value reaches BB, it can remain at BB for up to 7 frames, depending on how long A is held down.
Dixie's helicopter spin 0A
Jumping on enemy 9F Like normal jumping, this value slowly increases (causing downward acceleration) until it reaches 46.
95 If A is held down while hitting the enemy.
Descending while swimming 0A
14 If Down is pressed.
Ascending while swimming F1 Every time A is pressed, this slowly decreases to F1, then slowly increases back to normal swimming speed
F7 If Down is pressed.
E8 If Up is pressed.
Swimming with Enguarde 1E While descending.
E2 While ascending.
Climbing 0F/F1 When not holding B.
19/E7 When holding B.
Toboggan 6E
Jumping in Toboggan C3 As is always the case with jumping, this value increases until it reaches gravity speed.
Jumping on enemy in Toboggan 9F

Note: For both vertical and horizontal velocity, both of these bytes are signed integers. Anything less than 00 (i.e. 80-FF) will be negative; for horizontal velocity, this will be to the left, and for vertical velocity, this will be up. Anything more than 00 (i.e. 01-7F) will be positive; for horizontal velocity, this will be to the right, and for vertical velocity, this will be down. 00 is stationary.

80 is the fastest speed for left or upward movement; 7F is the fastest speed for right or downward movement.