Donkey Kong Land 2/RAM map: Difference between revisions

From Data Crystal
Jump to navigation Jump to search
m (Xkeeper moved page Donkey Kong Land 2:RAM map to Donkey Kong Land 2/RAM map: normalize subpages and titles)
 
(11 intermediate revisions by one other user not shown)
Line 1: Line 1:
{{rammap|game=Donkey Kong Land 2}}
{{rammap|game=Donkey Kong Land 2}}
* <tt>0xDED3</tt> - Bananas
* <tt>DED3</tt> = Bananas
* <tt>0xDED4</tt> - Lives
* <tt>DED4</tt> = Lives
* <tt>0xDF00</tt> - Current Character
* <tt>DF00</tt> = Current Character
** <tt>00</tt> - Diddy Kong
** <tt>00</tt> = Diddy Kong
** <tt>01</tt> - Dixie Kong
** <tt>01</tt> = Dixie Kong
** <tt>02</tt> - Rambi
** <tt>02</tt> = Rambi
** <tt>03</tt> - Squawks
** <tt>03</tt> = Squawks
** <tt>04</tt> - Enguarde
** <tt>04</tt> = Enguarde
** <tt>05</tt> - Squitter
** <tt>05</tt> = Squitter
** <tt>06</tt> - Rattly
** <tt>06</tt> = Rattly
** <tt>07</tt> - Roller Coaster
** <tt>07</tt> = Roller Coaster
* <tt>0xDF2D</tt> - Traction
* <tt>DF2D</tt> = Traction
** <tt>03</tt> - Non-ice levels
** <tt>03</tt> = Non-ice levels
** <tt>34</tt> - Ice levels
** <tt>34</tt> = Ice levels
* <tt>0xDE80-0xDE81</tt> - Horizontal scroll offset in level
* <tt>DE80-DE81</tt> = Horizontal scroll offset in level
* <tt>0xDE82-0xDE83</tt> - Vertical scroll offset in level
* <tt>DE82-DE83</tt> = Vertical scroll offset in level
* <tt>0xDF10</tt> - Horizontal velocity
* <tt>DF10</tt> = Horizontal velocity
* <tt>0xDF11</tt> - Vertical velocity
* <tt>DF11</tt> = Vertical velocity
* <tt>C5F7</tt> = Current stage type
** <tt>00</tt> = Find the Token!
** <tt>01</tt> = Collect the Stars!
** <tt>02</tt> = Destroy them All!
** <tt>03</tt> = Warp
** <tt>FE</tt> = Regular stage (after exiting bonus stage)
** <tt>FF</tt> = Regular stage (from world map screen)
* <tt>C5F8</tt> = Bonus stage timer counter (remaining seconds)
* <tt>C5F9</tt> = Bonus stage counter (remaining stars/Kremlings)
* <tt>C5AA</tt> = Bonus/Warp Stage 1
* <tt>C5AB</tt> = Bonus/Warp Stage 2
* <tt>C5AC</tt> = Bonus/Warp Stage 3 (Always FF in this game, but used for warps in DKL3)
* <tt>DAF7</tt> = Current music tempo
* <tt>D100-D10A</tt> = Button presses for cheat codes
* <tt>DEA1</tt> = Current buttons pressed (Down, Up, Left, Right, Start, Select, B, A)
* <tt>DEA2</tt> = Most recent buttons pressed


== Saved data ==
== Saved data ==
Line 31: Line 47:
| <tt>A0A0-A0A1</tt>
| <tt>A0A0-A0A1</tt>
| 16-bit big endian checksum of <tt>4E</tt> bytes afterwards (e.g. <tt>A002-A04F</tt> for File 1)
| 16-bit big endian checksum of <tt>4E</tt> bytes afterwards (e.g. <tt>A002-A04F</tt> for File 1)
|-
| <tt>A002</tt>
| <tt>A052</tt>
| <tt>A0A2</tt>
| Current Kong (00=Diddy, 01=Dixie)
|-
| <tt>A003</tt>
| <tt>A053</tt>
| <tt>A0A3</tt>
| Number of hits remaining
|-
| <tt>A004</tt>
| <tt>A054</tt>
| <tt>A0A4</tt>
| Last world visited
|-
| <tt>A005</tt>
| <tt>A055</tt>
| <tt>A0A5</tt>
| Last submap location visited (typically Kong Kollege)<br /><small>(Unused, because the game always starts you on the overworld map when loading a saved game.)</small>
|-
|-
| <tt>A006-A008</tt>  
| <tt>A006-A008</tt>  
Line 51: Line 87:
| <tt>A0AB</tt>
| <tt>A0AB</tt>
| DK Coins collected
| DK Coins collected
|-
| <tt>A00E-A014</tt>
| <tt>A05E-A064</tt>
| <tt>A0AE-A0B4</tt>
| World data
* Bit 7: Supposed to be used to indicate the world was finished with Diddy or Dixie. Due to a bug that skips a check to determine who beats a world, this is always 0 (Diddy). Changing this bit to 1 will display that Dixie finished a world.
* Bit 6: 0 if missing at least one Kremkoin, 1 if all Kremkoins have been found
* Bit 5: ???
* Bit 4: ???
* Bit 3: Saved at Kong Kollege at least once
* Bit 2: Used Funky's Flights at least once
* 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>A015-A042</tt>
| <tt>A065-A092</tt>
| <tt>A0B5-A0E2</tt>
| Level data
* Bit 7: 0 if cleared with Diddy the first time, 1 if cleared with Dixie for the first time
* Bit 6: 0 if missing at least one Kremkoin, 1 if all Kremkoins 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
|-
|-
| <tt>A100-A14F</tt><br /><tt>A200-A24F</tt>
| <tt>A100-A14F</tt><br /><tt>A200-A24F</tt>
Line 60: Line 122:
==== Checksum ====
==== Checksum ====
For each <tt>50</tt>-byte block, a 16-bit, big endian checksum is stored in the first two bytes. This is a sum of each 8-bit value in the rest of the <tt>4E</tt> bytes. If the checksum fails, the checksum in the file's first backup copy is checked. If this also fails, the checksum in the file's second and final backup copy is checked. If they all fail, the file is erased. If any of them pass, the game always uses the data in the first block. This occurs even if the checksum failed in this block, but passed in either of the two backup blocks. This is a bug; the intended behavior is that the game would copy a valid backup block to the first block in this situation. Since the game always uses the data in the first block, this can cause glitches if the first block is corrupted, but the other two are intact.
For each <tt>50</tt>-byte block, a 16-bit, big endian checksum is stored in the first two bytes. This is a sum of each 8-bit value in the rest of the <tt>4E</tt> bytes. If the checksum fails, the checksum in the file's first backup copy is checked. If this also fails, the checksum in the file's second and final backup copy is checked. If they all fail, the file is erased. If any of them pass, the game always uses the data in the first block. This occurs even if the checksum failed in this block, but passed in either of the two backup blocks. This is a bug; the intended behavior is that the game would copy a valid backup block to the first block in this situation. Since the game always uses the data in the first block, this can cause glitches if the first block is corrupted, but the other two are intact.
{{Internal Data|game=Donkey Kong Land 2}}

Latest revision as of 02:41, 24 January 2024

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

  • DED3 = Bananas
  • DED4 = Lives
  • DF00 = Current Character
    • 00 = Diddy Kong
    • 01 = Dixie Kong
    • 02 = Rambi
    • 03 = Squawks
    • 04 = Enguarde
    • 05 = Squitter
    • 06 = Rattly
    • 07 = Roller Coaster
  • DF2D = Traction
    • 03 = Non-ice levels
    • 34 = Ice levels
  • DE80-DE81 = Horizontal scroll offset in level
  • DE82-DE83 = Vertical scroll offset in level
  • DF10 = Horizontal velocity
  • DF11 = Vertical velocity
  • C5F7 = Current stage type
    • 00 = Find the Token!
    • 01 = Collect the Stars!
    • 02 = Destroy them All!
    • 03 = Warp
    • FE = Regular stage (after exiting bonus stage)
    • FF = Regular stage (from world map screen)
  • C5F8 = Bonus stage timer counter (remaining seconds)
  • C5F9 = Bonus stage counter (remaining stars/Kremlings)
  • C5AA = Bonus/Warp Stage 1
  • C5AB = Bonus/Warp Stage 2
  • C5AC = Bonus/Warp Stage 3 (Always FF in this game, but used for warps in DKL3)
  • DAF7 = Current music tempo
  • D100-D10A = Button presses for cheat codes
  • DEA1 = Current buttons pressed (Down, Up, Left, Right, Start, Select, B, A)
  • DEA2 = Most recent buttons pressed

Saved data

  • A000-A04F = File 1
  • A050-A0BF = File 2
  • A0A0-A0EF = File 3
File 1 File 2 File 3 Description
A000-A001 A050-A051 A0A0-A0A1 16-bit big endian checksum of 4E bytes afterwards (e.g. A002-A04F for File 1)
A002 A052 A0A2 Current Kong (00=Diddy, 01=Dixie)
A003 A053 A0A3 Number of hits remaining
A004 A054 A0A4 Last world visited
A005 A055 A0A5 Last submap location visited (typically Kong Kollege)
(Unused, because the game always starts you on the overworld map when loading a saved game.)
A006-A008 A056-A058 A0A6-A0A8 Total time (hours, minutes, seconds)
A009 A059 A0A9 Banana Coins collected
(This data is not used. Upon loading a save file, after the game reads the Banana Coin count and stores it into RAM, it is then reset to 0. It is unclear whether or not this is a bug.)
A00A A05A A0AA Kremkoins collected
A00B A05B A0AB DK Coins collected
A00E-A014 A05E-A064 A0AE-A0B4 World data
  • Bit 7: Supposed to be used to indicate the world was finished with Diddy or Dixie. Due to a bug that skips a check to determine who beats a world, this is always 0 (Diddy). Changing this bit to 1 will display that Dixie finished a world.
  • Bit 6: 0 if missing at least one Kremkoin, 1 if all Kremkoins have been found
  • Bit 5: ???
  • Bit 4: ???
  • Bit 3: Saved at Kong Kollege at least once
  • Bit 2: Used Funky's Flights at least once
  • Bit 1: 0 if DK Coin is not collected, 1 if DK Coin is collected
  • Bit 0: 0 if not cleared; 1 if cleared
A015-A042 A065-A092 A0B5-A0E2 Level data
  • Bit 7: 0 if cleared with Diddy the first time, 1 if cleared with Dixie for the first time
  • Bit 6: 0 if missing at least one Kremkoin, 1 if all Kremkoins 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
A200-A24F
A150-A19F
A250-A29F
A1A0-A1EF
A2A0-A2EF
Backup copies of given file, used if previous checksum fails

Checksum

For each 50-byte block, a 16-bit, big endian checksum is stored in the first two bytes. This is a sum of each 8-bit value in the rest of the 4E bytes. If the checksum fails, the checksum in the file's first backup copy is checked. If this also fails, the checksum in the file's second and final backup copy is checked. If they all fail, the file is erased. If any of them pass, the game always uses the data in the first block. This occurs even if the checksum failed in this block, but passed in either of the two backup blocks. This is a bug; the intended behavior is that the game would copy a valid backup block to the first block in this situation. Since the game always uses the data in the first block, this can cause glitches if the first block is corrupted, but the other two are intact.