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.

The Legend of Zelda: Oracle of Seasons/RAM map: Difference between revisions

From Data Crystal
Jump to navigation Jump to search
m (New addresses + Keeping track of how many byte each unmapped chunk occupies got old quickly.)
m ("start of game" -> power-on + mapped C627 + note columns + better (yet still only partially) explained C63B)
Line 6: Line 6:


==TBD==
==TBD==
{| border="3" cellpadding="7"
{| border="3" cellpadding="7" style="max-width: 75%;"
! style="text-align: center;" | '''RAM'''
! style="text-align: center;" | '''RAM'''
! '''Size'''
! '''Size'''
! '''Purpose'''
! '''Purpose'''
! '''Note'''
|-
|-
|C5C0 - C5FF ||  || Unappraised rings carried
|C5C0 - C5FF ||  || Unappraised rings carried ||
|-
|-
|C602 - C606 ||  || Player name
|C602 - C606 ||  || Player name ||
|-
|-
|C616 - C61D ||  || Rings owned
|C616 - C61D ||  || Rings owned ||
|-
|-
|C61E - C61F || 2 Bytes || Deaths
|C61E - C61F || 2 Bytes || Deaths ||
|-
|-
|C622 - C625 || 4 Bytes || Time passed since start of game
|C622 - C625 || 4 Bytes || Time passed since power-on ||
|-
|-
|C63A || 1 Byte || Current level bank
|C627 || 2 Bytes || Rupees earned since file creation || Value is represented in decimal
|-
|-
|C63B || 1 Byte || Current ''Absolute'' Overworld Screen<br />'''OR'''<br />Current ''Relative'' Dungeon Screen
|C63A || 1 Byte || Current level bank ||
|-
|-
|C63C || 1 Byte || Current ''Absolute'' Dungeon Screen
|C63B || 1 Byte || Current ''Absolute'' Overworld Screen<br />'''OR'''<br />Current ''Relative'' Dungeon Screen || On the overworld, all 256 screens are represented in order; left to right, top to bottom, 0x00 - 0xFF.<br /><br />Inside a dungeon, only screens that are valid rooms are represented while empty squares are not counted.
|-
|C63C || 1 Byte || Current ''Absolute'' Dungeon Screen ||
|}
|}


<br />
<br />
==Enemies killed since...==
==Enemies killed since...==
{| border="3" cellpadding="7"
{| border="3" cellpadding="7" style="max-width: 75%;"
! style="text-align: center;" | '''RAM'''
! style="text-align: center;" | '''RAM'''
! '''Size'''
! '''Size'''
! '''Purpose'''
! '''Purpose'''
! '''Note'''
|-
|-
|C63E || 1 Byte || Enemies killed since last Maple encounter
|C63E || 1 Byte || Enemies killed since last Maple encounter ||
|-
|-
|C64C || 1 Byte || Enemies killed since Gasha Seed planted at ??
|C64C || 1 Byte || Enemies killed since Gasha Seed planted at ?? ||
|-
|-
|C64D || 1 Byte || Enemies killed since Gasha Seed planted at ??
|C64D || 1 Byte || Enemies killed since Gasha Seed planted at ?? ||
|-
|-
|C64E || 1 Byte || Enemies killed since Gasha Seed planted at ??
|C64E || 1 Byte || Enemies killed since Gasha Seed planted at ?? ||
|-
|-
|C64F || 1 Byte || Enemies killed since Gasha Seed planted at ??
|C64F || 1 Byte || Enemies killed since Gasha Seed planted at ?? ||
|-
|-
|C650 || 1 Byte || Enemies killed since Gasha Seed planted at ??
|C650 || 1 Byte || Enemies killed since Gasha Seed planted at ?? ||
|-
|-
|C651 || 1 Byte || Enemies killed since Gasha Seed planted at ??
|C651 || 1 Byte || Enemies killed since Gasha Seed planted at ?? ||
|-
|-
|C652 || 1 Byte || Enemies killed since Gasha Seed planted at ??
|C652 || 1 Byte || Enemies killed since Gasha Seed planted at ?? ||
|-
|-
|C653 || 1 Byte || Enemies killed since Gasha Seed planted at ??
|C653 || 1 Byte || Enemies killed since Gasha Seed planted at ?? ||
|-
|-
|C654 || 1 Byte || Enemies killed since Gasha Seed planted at ??
|C654 || 1 Byte || Enemies killed since Gasha Seed planted at ?? ||
|-
|-
|C655 || 1 Byte || Enemies killed since Gasha Seed planted at ??
|C655 || 1 Byte || Enemies killed since Gasha Seed planted at ?? ||
|-
|-
|C656 || 1 Byte || Enemies killed since Gasha Seed planted at K7
|C656 || 1 Byte || Enemies killed since Gasha Seed planted at K7 ||
|-
|-
|C657 || 1 Byte || Enemies killed since Gasha Seed planted at ??
|C657 || 1 Byte || Enemies killed since Gasha Seed planted at ?? ||
|-
|-
|C658 || 1 Byte || Enemies killed since Gasha Seed planted at ??
|C658 || 1 Byte || Enemies killed since Gasha Seed planted at ?? ||
|-
|-
|C659 || 1 Byte || Enemies killed since Gasha Seed planted at ??
|C659 || 1 Byte || Enemies killed since Gasha Seed planted at ?? ||
|-
|-
|C65A || 1 Byte || Enemies killed since Gasha Seed planted at ??
|C65A || 1 Byte || Enemies killed since Gasha Seed planted at ?? ||
|-
|-
|C65B || 1 Byte || Enemies killed since Gasha Seed planted at M9
|C65B || 1 Byte || Enemies killed since Gasha Seed planted at M9 ||
|}
|}


Line 93: Line 97:


==Items/Collectables==
==Items/Collectables==
{| border="3" cellpadding="7"
{| border="3" cellpadding="7" style="max-width: 75%;"
! style="text-align: center;" | '''RAM'''
! style="text-align: center;" | '''RAM'''
! '''Size'''
! '''Size'''
! '''Purpose'''
! '''Purpose'''
! '''Note'''
|-
|-
|C66F || 1 Byte || Small Keys
|C66F || 1 Byte || Small Keys ||
|-
|-
|C67A || 1 Byte || Has Boss Key<br />(if value ends in '''2''', '''3''', '''6''', '''7''', '''A''', '''B''', '''E''', or '''F''')
|C67A || 1 Byte || Has Boss Key<br />(if value ends in '''2''', '''3''', '''6''', '''7''', '''A''', '''B''', '''E''', or '''F''') ||
|-
|-
|C67C || 1 Byte || Has Compass<br />(if value ends in '''2''', '''3''', '''6''', '''7''', '''A''', '''B''', '''E''', or '''F''')
|C67C || 1 Byte || Has Compass<br />(if value ends in '''2''', '''3''', '''6''', '''7''', '''A''', '''B''', '''E''', or '''F''') ||
|-
|-
|C67E || 1 Byte || Has Dungeon Map<br />(if value ends in '''2''', '''3''', '''6''', '''7''', '''A''', '''B''', '''E''', or '''F''')
|C67E || 1 Byte || Has Dungeon Map<br />(if value ends in '''2''', '''3''', '''6''', '''7''', '''A''', '''B''', '''E''', or '''F''') ||
|-
|-
|C680 - C691 ||  || Items
|C680 - C691 ||  || Items ||
|-
|-
|C6A2 || 1 Byte || Current Hearts
|C6A2 || 1 Byte || Current Hearts ||
|-
|-
|C6A3 || 1 Byte || Max Hearts
|C6A3 || 1 Byte || Max Hearts ||
|-
|-
|C6A5 - C6A6 || 2 Bytes || Rupees
|C6A5 - C6A6 || 2 Bytes || Rupees ||
|-
|-
|C6A7 - C6A8 || 2 Bytes || Ore Chunks
|C6A7 - C6A8 || 2 Bytes || Ore Chunks ||
|-
|-
|C6A9 || 1 Byte || Shield level
|C6A9 || 1 Byte || Shield level ||
|-
|-
|C6AA || 1 Byte || Current Bombs
|C6AA || 1 Byte || Current Bombs ||
|-
|-
|C6AC || 1 Byte || Sword level
|C6AC || 1 Byte || Sword level ||
|-
|-
|C6B1 || 1 Byte || Boomerang level
|C6B1 || 1 Byte || Boomerang level ||
|-
|-
|C6B3 || 1 Byte || Slingshot level
|C6B3 || 1 Byte || Slingshot level ||
|-
|-
|C6B4 || 1 Byte || Roc's feather level
|C6B4 || 1 Byte || Roc's feather level ||
|-
|-
|C6B5 || 1 Byte || Ember Seeds
|C6B5 || 1 Byte || Ember Seeds ||
|-
|-
|C6B6 || 1 Byte || Scent Seeds
|C6B6 || 1 Byte || Scent Seeds ||
|-
|-
|C6B7 || 1 Byte || Pegasus Seeds
|C6B7 || 1 Byte || Pegasus Seeds ||
|-
|-
|C6B8 || 1 Byte || Gale Seeds
|C6B8 || 1 Byte || Gale Seeds ||
|-
|-
|C6B9 || 1 Byte || Mystery Seeds
|C6B9 || 1 Byte || Mystery Seeds ||
|-
|-
|C6BA || 1 Byte || Gasha Seeds
|C6BA || 1 Byte || Gasha Seeds ||
|-
|-
|C6BB || 1 Byte || Essences
|C6BB || 1 Byte || Essences ||
|-
|-
|C6C6 || 1 Byte || Ring Box level
|C6C6 || 1 Byte || Ring Box level ||
|}
|}
<br />
<br />


==TBD==
==TBD==
{| border="3" cellpadding="7"
{| border="3" cellpadding="7" style="max-width: 75%;"
! style="text-align: center;" | '''RAM'''
! style="text-align: center;" | '''RAM'''
! '''Size'''
! '''Size'''
! '''Purpose'''
! '''Purpose'''
! '''Note'''
|-
|-
|C700 - C7FF ||  || Overworld Screen Flags (used to track events and map exploration)
|C700 - C7FF ||  || Overworld Screen Flags (used to track events and map exploration) ||
|-
|-
|CC30 || 1 Byte || Enemies left on screen
|CC30 || 1 Byte || Enemies left on screen ||
|-
|-
|CE00 - CEAF ||  || Current Screen Collision Data (dynamically generated from the screen tile data. this space is also used as a temporary store for compressed level data read from ROM)
|CE00 - CEAF ||  || Current Screen Collision Data (dynamically generated from the screen tile data. this space is also used as a temporary store for compressed level data read from ROM) ||
|-
|-
|CF00 - CFAF ||  || Current Screen Tile Data
|CF00 - CFAF ||  || Current Screen Tile Data ||
|}
|}
<br />
<br />


==Unmapped==
==Unmapped==
{| border="3" cellpadding="7"
{| border="3" cellpadding="7" style="max-width: 75%;"
! style="text-align: center;" | '''RAM'''
! style="text-align: center;" | '''RAM'''
! '''Note'''
|-
|C000 - C5BF ||
|-
|-
|C000 - C5BF
|C600 - C601 ||
|-
|-
|C600 - C601
|C607 - C615 ||
|-
|-
|C607 - C615
|C620 - C621 ||
|-
|-
|C620 - C621
|C626 ||
|-
|-
|C626 - C639
|C628- C639 ||
|-
|-
|C63D
|C63D ||
|-
|-
|C63F - C64B
|C63F - C64B ||
|-
|-
|C65E - C66E
|C65E - C66E ||
|-
|-
|C670 - C679
|C670 - C679 ||
|-
|-
|C67B
|C67B ||
|-
|-
|C67D
|C67D ||
|-
|-
|C67F
|C67F ||
|-
|-
|C692 - C6A1
|C692 - C6A1 ||
|-
|-
|C6A4
|C6A4 ||
|-
|-
|C6AB
|C6AB ||
|-
|-
|C6AD - C6B0
|C6AD - C6B0 ||
|-
|-
|C6B2
|C6B2 ||
|-
|-
|C6BC - C6C5
|C6BC - C6C5 ||
|-
|-
|C6C7 - C6FF
|C6C7 - C6FF ||
|-
|-
|C800 - CC2F
|C800 - CC2F ||
|-
|-
|CC31 - CDFF
|CC31 - CDFF ||
|-
|-
|CEB0 - CEFF
|CEB0 - CEFF ||
|-
|-
|CFB0 - CFFF
|CFB0 - CFFF ||
|}
|}

Revision as of 04:23, 24 April 2023

NOTE: All values in Tables are Hexadecimal unless noted otherwise.

Chip tiny.png The following article is a RAM map for The Legend of Zelda: Oracle of Seasons.

Bank 0 (C000 - CFFF)


TBD

RAM Size Purpose Note
C5C0 - C5FF Unappraised rings carried
C602 - C606 Player name
C616 - C61D Rings owned
C61E - C61F 2 Bytes Deaths
C622 - C625 4 Bytes Time passed since power-on
C627 2 Bytes Rupees earned since file creation Value is represented in decimal
C63A 1 Byte Current level bank
C63B 1 Byte Current Absolute Overworld Screen
OR
Current Relative Dungeon Screen
On the overworld, all 256 screens are represented in order; left to right, top to bottom, 0x00 - 0xFF.

Inside a dungeon, only screens that are valid rooms are represented while empty squares are not counted.
C63C 1 Byte Current Absolute Dungeon Screen


Enemies killed since...

RAM Size Purpose Note
C63E 1 Byte Enemies killed since last Maple encounter
C64C 1 Byte Enemies killed since Gasha Seed planted at ??
C64D 1 Byte Enemies killed since Gasha Seed planted at ??
C64E 1 Byte Enemies killed since Gasha Seed planted at ??
C64F 1 Byte Enemies killed since Gasha Seed planted at ??
C650 1 Byte Enemies killed since Gasha Seed planted at ??
C651 1 Byte Enemies killed since Gasha Seed planted at ??
C652 1 Byte Enemies killed since Gasha Seed planted at ??
C653 1 Byte Enemies killed since Gasha Seed planted at ??
C654 1 Byte Enemies killed since Gasha Seed planted at ??
C655 1 Byte Enemies killed since Gasha Seed planted at ??
C656 1 Byte Enemies killed since Gasha Seed planted at K7
C657 1 Byte Enemies killed since Gasha Seed planted at ??
C658 1 Byte Enemies killed since Gasha Seed planted at ??
C659 1 Byte Enemies killed since Gasha Seed planted at ??
C65A 1 Byte Enemies killed since Gasha Seed planted at ??
C65B 1 Byte Enemies killed since Gasha Seed planted at M9


Mysterious Counter

C65C - C65D A counter for ??? for which various actions increment
Action Incrementation
Great Fairy Heal 0x40
Bomb a Wall 0x32
Collect a Fairy 0x18
Screen Transition (excluding entering and exiting structures) 0x05
Collecting a Heart 0x04
Slaying an Enemy 0x03


Items/Collectables

RAM Size Purpose Note
C66F 1 Byte Small Keys
C67A 1 Byte Has Boss Key
(if value ends in 2, 3, 6, 7, A, B, E, or F)
C67C 1 Byte Has Compass
(if value ends in 2, 3, 6, 7, A, B, E, or F)
C67E 1 Byte Has Dungeon Map
(if value ends in 2, 3, 6, 7, A, B, E, or F)
C680 - C691 Items
C6A2 1 Byte Current Hearts
C6A3 1 Byte Max Hearts
C6A5 - C6A6 2 Bytes Rupees
C6A7 - C6A8 2 Bytes Ore Chunks
C6A9 1 Byte Shield level
C6AA 1 Byte Current Bombs
C6AC 1 Byte Sword level
C6B1 1 Byte Boomerang level
C6B3 1 Byte Slingshot level
C6B4 1 Byte Roc's feather level
C6B5 1 Byte Ember Seeds
C6B6 1 Byte Scent Seeds
C6B7 1 Byte Pegasus Seeds
C6B8 1 Byte Gale Seeds
C6B9 1 Byte Mystery Seeds
C6BA 1 Byte Gasha Seeds
C6BB 1 Byte Essences
C6C6 1 Byte Ring Box level


TBD

RAM Size Purpose Note
C700 - C7FF Overworld Screen Flags (used to track events and map exploration)
CC30 1 Byte Enemies left on screen
CE00 - CEAF Current Screen Collision Data (dynamically generated from the screen tile data. this space is also used as a temporary store for compressed level data read from ROM)
CF00 - CFAF Current Screen Tile Data


Unmapped

RAM Note
C000 - C5BF
C600 - C601
C607 - C615
C620 - C621
C626
C628- C639
C63D
C63F - C64B
C65E - C66E
C670 - C679
C67B
C67D
C67F
C692 - C6A1
C6A4
C6AB
C6AD - C6B0
C6B2
C6BC - C6C5
C6C7 - C6FF
C800 - CC2F
CC31 - CDFF
CEB0 - CEFF
CFB0 - CFFF