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 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
Jump to navigation
Jump to search
m (→Dungeon Things: Assumed until confirmed.) |
($C620 + $) |
||
Line 2: | Line 2: | ||
{{rammap|game=The Legend of Zelda: Oracle of Seasons}} | {{rammap|game=The Legend of Zelda: Oracle of Seasons}} | ||
=Bank 0 (C000 - CFFF)= | =Bank 0 ($C000 - $CFFF)= | ||
<br /> | <br /> | ||
Line 8: | Line 8: | ||
{| border="3" cellpadding="7" style="width: 75%;" | {| border="3" cellpadding="7" style="width: 75%;" | ||
! style="text-align: center; width: 100px;" | '''RAM''' | ! style="text-align: center; width: 100px;" | '''RAM''' | ||
! style="width: 75px;" | ''' | ! style="width: 75px;" | '''Length''' | ||
! style="width: 300px;" | '''Purpose''' | ! style="width: 300px;" | '''Purpose''' | ||
! '''Note''' | ! '''Note''' | ||
|- | |- | ||
|C5C0 - C5FF || || Unappraised rings carried || | |$C5C0 - $C5FF || || Unappraised rings carried || | ||
|- | |- | ||
|C602 - C606 || 5 Bytes || Player name || | |$C602 - $C606 || 5 Bytes || Player name || | ||
|- | |- | ||
|C616 - C61D || 8 Bytes || Rings owned || | |$C616 - $C61D || 8 Bytes || Rings owned || | ||
|- | |- | ||
|C61E - C61F || 2 Bytes || Deaths || | |$C61E - $C61F || 2 Bytes || Deaths || | ||
|- | |- | ||
| | |$C620 || 1 Byte || Enemies killed since file creation || When total killed enemies reaches <code>0x3E8</code>, <code>0x01</code> is added to <code>$C6CA</code> to set a flag for Vasu to give the Slayer's Ring, and this no longer increments when killing enemies. | ||
|- | |- | ||
| | |$C622 - $C625 || 4 Bytes || Time passed since power-on || | ||
|- | |- | ||
| | |$C627 - $C628 || 2 Bytes || Rupees earned since file creation || Value is represented in decimal.<br /><br />'''Example''': If the total earned rupee count is 8,473, the hexadecimal representation will be <code>0x8473</code>.<br /><br />When a rupee gain pushes the value over <code>0x9999</code>, the value is then set to 0x6363, the value will no longer change, and <code>$C6CA</code> is then incremented by <code>0x01</code> so that Vasu will give the Rupee Ring the next time he is spoken with. | ||
|- | |- | ||
| | |$C629 || 1 Byte || Message Speed || <code>0x00 - 0x04</code><br /><br />Some higher values yield hilarious results such as a letter appearing once per few seconds. | ||
|- | |- | ||
| | |$C63A || 1 Byte || Current level bank || | ||
|- | |- | ||
|C63C || 1 Byte || Current ''Absolute'' Dungeon Screen || Unlike with <code>C63B</code>, all tiles on the dungeon map, including ones that do not represent a valid room, are counted in order; left to right, top to bottom, <code>0x00 - 0xFF</code>.<span style="float: right;">[[File:Zelda OoS RAM C63C 01.png|200px]]</span> | |$C63B || 1 Byte || Current ''Absolute'' Overworld Screen<br /><br /><center>'''OR'''</center><br />Current ''Relative'' Dungeon Screen || On the overworld, all 256 map tiles are represented in order; left to right, top to bottom, <code>0x00 - 0xFF</code>.<br /><br /><br />Inside a dungeon, only map tiles that are valid rooms are represented while empty map tiles are not counted; the only empty map tiles that are counted are the ones leading up to the first valid room in order, then from there, the value only increases with each valid room. <span style="float: right;">[[File:Zelda OoS RAM C63B 01.png|200px]]</span> | ||
|- | |||
|$C63C || 1 Byte || Current ''Absolute'' Dungeon Screen || Unlike with <code>$C63B</code>, all tiles on the dungeon map, including ones that do not represent a valid room, are counted in order; left to right, top to bottom, <code>0x00 - 0xFF</code>.<span style="float: right;">[[File:Zelda OoS RAM C63C 01.png|200px]]</span> | |||
|} | |} | ||
Line 38: | Line 40: | ||
{| border="3" cellpadding="7" style="width: 75%;" | {| border="3" cellpadding="7" style="width: 75%;" | ||
! style="text-align: center; width: 100px;" | '''RAM''' | ! style="text-align: center; width: 100px;" | '''RAM''' | ||
! style="width: 75px;" | ''' | ! style="width: 75px;" | '''Length''' | ||
! style="width: 300px;" | '''Purpose''' | ! style="width: 300px;" | '''Purpose''' | ||
! '''Note''' | ! '''Note''' | ||
|- | |- | ||
|C63E || 1 Byte || Last Maple encounter || | |$C63E || 1 Byte || Last Maple encounter || | ||
|- | |- | ||
|C64C || 1 Byte || Gasha Seed planted at ?? || | |$C64C || 1 Byte || Gasha Seed planted at ?? || | ||
|- | |- | ||
|C64D || 1 Byte || Gasha Seed planted at ?? || | |$C64D || 1 Byte || Gasha Seed planted at ?? || | ||
|- | |- | ||
|C64E || 1 Byte || Gasha Seed planted at ?? || | |$C64E || 1 Byte || Gasha Seed planted at ?? || | ||
|- | |- | ||
|C64F || 1 Byte || Gasha Seed planted at ?? || | |$C64F || 1 Byte || Gasha Seed planted at ?? || | ||
|- | |- | ||
|C650 || 1 Byte || Gasha Seed planted at ?? || | |$C650 || 1 Byte || Gasha Seed planted at ?? || | ||
|- | |- | ||
|C651 || 1 Byte || Gasha Seed planted at ?? || | |$C651 || 1 Byte || Gasha Seed planted at ?? || | ||
|- | |- | ||
|C652 || 1 Byte || Gasha Seed planted at ?? || | |$C652 || 1 Byte || Gasha Seed planted at ?? || | ||
|- | |- | ||
|C653 || 1 Byte || Gasha Seed planted at ?? || | |$C653 || 1 Byte || Gasha Seed planted at ?? || | ||
|- | |- | ||
|C654 || 1 Byte || Gasha Seed planted at ?? || | |$C654 || 1 Byte || Gasha Seed planted at ?? || | ||
|- | |- | ||
|C655 || 1 Byte || Gasha Seed planted at ?? || | |$C655 || 1 Byte || Gasha Seed planted at ?? || | ||
|- | |- | ||
|C656 || 1 Byte || Gasha Seed planted at K7 || | |$C656 || 1 Byte || Gasha Seed planted at K7 || | ||
|- | |- | ||
|C657 || 1 Byte || Gasha Seed planted at ?? || | |$C657 || 1 Byte || Gasha Seed planted at ?? || | ||
|- | |- | ||
|C658 || 1 Byte || Gasha Seed planted at ?? || | |$C658 || 1 Byte || Gasha Seed planted at ?? || | ||
|- | |- | ||
|C659 || 1 Byte || Gasha Seed planted at ?? || | |$C659 || 1 Byte || Gasha Seed planted at ?? || | ||
|- | |- | ||
|C65A || 1 Byte || Gasha Seed planted at ?? || | |$C65A || 1 Byte || Gasha Seed planted at ?? || | ||
|- | |- | ||
|C65B || 1 Byte || Gasha Seed planted at M9 || | |$C65B || 1 Byte || Gasha Seed planted at M9 || | ||
|} | |} | ||
Line 81: | Line 83: | ||
==Mysterious Counter== | ==Mysterious Counter== | ||
{| border="3" cellpadding="4" | {| border="3" cellpadding="4" | ||
|+'''C65C - C65D''' | |+'''$C65C - $C65D''' | ||
|+'''A counter for ??? for which various actions increment''' | |+'''A counter for ??? for which various actions increment''' | ||
! style="text-align: center;" | '''Action''' | ! style="text-align: center;" | '''Action''' | ||
Line 105: | Line 107: | ||
{| border="3" cellpadding="7" style="width: 75%;" | {| border="3" cellpadding="7" style="width: 75%;" | ||
! style="text-align: center; width: 100px;" | '''RAM''' | ! style="text-align: center; width: 100px;" | '''RAM''' | ||
! style="width: 75px;" | ''' | ! style="width: 75px;" | '''Length''' | ||
! style="width: 300px;" | '''Purpose''' | ! style="width: 300px;" | '''Purpose''' | ||
! '''Note''' | ! '''Note''' | ||
|- | |- | ||
|C662 || 1 Byte || Has entered Hero's Cave || | |$C662 || 1 Byte || Has entered Hero's Cave || | ||
|- | |- | ||
|C663 || 1 Byte || Has entered Level 1: Gnarled Root Dungeon || Exiting a sublevel or using a mini-boss warp will also set this flag (though redundant). | |$C663 || 1 Byte || Has entered Level 1: Gnarled Root Dungeon || Exiting a sublevel or using a mini-boss warp will also set this flag (though redundant). | ||
|- | |- | ||
|C664 || 1 Byte || Has entered Level 2: Snake's Remains (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | |$C664 || 1 Byte || Has entered Level 2: Snake's Remains (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | ||
|- | |- | ||
|C665 || 1 Byte || Has entered Level 3: Poison Moth's Lair (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | |$C665 || 1 Byte || Has entered Level 3: Poison Moth's Lair (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | ||
|- | |- | ||
|C666 || 1 Byte || Has entered Moblin's Keep (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | |$C666 || 1 Byte || Has entered Moblin's Keep (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | ||
|- | |- | ||
|C667 || 1 Byte || Has entered Level 4: Dancing Dragon Dungeon (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | |$C667 || 1 Byte || Has entered Level 4: Dancing Dragon Dungeon (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | ||
|- | |- | ||
|C668 || 1 Byte || Has entered Level 5: Unicorn's Cave (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | |$C668 || 1 Byte || Has entered Level 5: Unicorn's Cave (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | ||
|- | |- | ||
|C669 || 1 Byte || Has entered Level 6: Ancient Ruins (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | |$C669 || 1 Byte || Has entered Level 6: Ancient Ruins (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | ||
|- | |- | ||
|C66A || 1 Byte || Has entered Level 7: Explorer's Crypt (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | |$C66A || 1 Byte || Has entered Level 7: Explorer's Crypt (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | ||
|- | |- | ||
|C66B || 1 Byte || Has entered Level 8: Sword & Shield Maze (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | |$C66B || 1 Byte || Has entered Level 8: Sword & Shield Maze (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | ||
|- | |- | ||
|C66C || 1 Byte || Has entered Onox's Castle (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | |$C66C || 1 Byte || Has entered Onox's Castle (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | ||
|} | |} | ||
{| border="3" cellpadding="7" style="width: 75%;" | {| border="3" cellpadding="7" style="width: 75%;" | ||
Line 135: | Line 137: | ||
| style="width: 100px;" | C66E || style="width: 75px;" | 1 Byte || style="width: 300px;" | Small Keys — Hero's Cave || | | style="width: 100px;" | C66E || style="width: 75px;" | 1 Byte || style="width: 300px;" | Small Keys — Hero's Cave || | ||
|- | |- | ||
| C66F || 1 Byte || Small Keys — Level 1: Gnarled Root Dungeon || | | $C66F || 1 Byte || Small Keys — Level 1: Gnarled Root Dungeon || | ||
|- | |- | ||
| C670 || 1 Byte || Small Keys — Level 2: Snake's Remains (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | | $C670 || 1 Byte || Small Keys — Level 2: Snake's Remains (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | ||
|- | |- | ||
| C671 || 1 Byte || Small Keys — Level 3: Poison Moth's Lair (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | | $C671 || 1 Byte || Small Keys — Level 3: Poison Moth's Lair (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | ||
|- | |- | ||
| C672 || 1 Byte || Small Keys — Moblin's Keep (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | | $C672 || 1 Byte || Small Keys — Moblin's Keep (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | ||
|- | |- | ||
| C673 || 1 Byte || Small Keys — Level 4: Dancing Dragon Dungeon (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | | $C673 || 1 Byte || Small Keys — Level 4: Dancing Dragon Dungeon (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | ||
|- | |- | ||
| C674 || 1 Byte || Small Keys — Level 5: Unicorn's Cave (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | | $C674 || 1 Byte || Small Keys — Level 5: Unicorn's Cave (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | ||
|- | |- | ||
| C675 || 1 Byte || Small Keys — Level 6: Ancient Ruins (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | | $C675 || 1 Byte || Small Keys — Level 6: Ancient Ruins (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | ||
|- | |- | ||
| C676 || 1 Byte || Small Keys — Level 7: Explorer's Crypt (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | | $C676 || 1 Byte || Small Keys — Level 7: Explorer's Crypt (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | ||
|- | |- | ||
| C677 || 1 Byte || Small Keys — Level 8: Sword & Shield Maze (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | | $C677 || 1 Byte || Small Keys — Level 8: Sword & Shield Maze (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | ||
|- | |- | ||
| C678 || 1 Byte || Small Keys — Onox's Castle (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | | $C678 || 1 Byte || Small Keys — Onox's Castle (?) || Assumed based on context of other RAM addresses. TODO: Confirm. | ||
|} | |} | ||
{| border="3" cellpadding="7" style="width: 75%;" | {| border="3" cellpadding="7" style="width: 75%;" | ||
|- | |- | ||
| style="width: 100px;" | C67A || style="width: 75px;" | 1 Byte || style="width: 300px;" | Has Boss Key || True if value ends in '''2''', '''3''', '''6''', '''7''', '''A''', '''B''', '''E''', or '''F'''<br />(TODO: Determine why multiple values evaluate to True) | | style="width: 100px;" | $C67A || style="width: 75px;" | 1 Byte || style="width: 300px;" | Has Boss Key || True if value ends in '''2''', '''3''', '''6''', '''7''', '''A''', '''B''', '''E''', or '''F'''<br />(TODO: Determine why multiple values evaluate to True) | ||
|- | |- | ||
| C67C || 1 Byte || Has Compass || True if value ends in '''2''', '''3''', '''6''', '''7''', '''A''', '''B''', '''E''', or '''F'''<br />(TODO: Determine why multiple values evaluate to True) | | $C67C || 1 Byte || Has Compass || True if value ends in '''2''', '''3''', '''6''', '''7''', '''A''', '''B''', '''E''', or '''F'''<br />(TODO: Determine why multiple values evaluate to True) | ||
|- | |- | ||
| C67E || 1 Byte || Has Dungeon Map || True if value ends in '''2''', '''3''', '''6''', '''7''', '''A''', '''B''', '''E''', or '''F'''<br />(TODO: Determine why multiple values evaluate to True) | | $C67E || 1 Byte || Has Dungeon Map || True if value ends in '''2''', '''3''', '''6''', '''7''', '''A''', '''B''', '''E''', or '''F'''<br />(TODO: Determine why multiple values evaluate to True) | ||
|} | |} | ||
Line 169: | Line 171: | ||
{| border="3" cellpadding="7" style="width: 75%;" | {| border="3" cellpadding="7" style="width: 75%;" | ||
! style="text-align: center; width: 100px;" | '''RAM''' | ! style="text-align: center; width: 100px;" | '''RAM''' | ||
! style="width: 75px;" | ''' | ! style="width: 75px;" | '''Length''' | ||
! style="width: 300px;" | '''Purpose''' | ! style="width: 300px;" | '''Purpose''' | ||
! '''Note''' | ! '''Note''' | ||
|- | |- | ||
|C680 || 1 Byte || Item on '''B''' Button || | |$C680 || 1 Byte || Item on '''B''' Button || | ||
|- | |- | ||
|C681 || 1 Byte || Item on '''A''' Button || | |$C681 || 1 Byte || Item on '''A''' Button || | ||
|- | |- | ||
|C682 || 1 Byte || Inventory Slot 1 || | |$C682 || 1 Byte || Inventory Slot 1 || | ||
|- | |- | ||
|C683 || 1 Byte || Inventory Slot 2 || | |$C683 || 1 Byte || Inventory Slot 2 || | ||
|- | |- | ||
|C684 || 1 Byte || Inventory Slot 3 || | |$C684 || 1 Byte || Inventory Slot 3 || | ||
|- | |- | ||
|C685 || 1 Byte || Inventory Slot 4 || | |$C685 || 1 Byte || Inventory Slot 4 || | ||
|- | |- | ||
|C686 || 1 Byte || Inventory Slot 5 || | |$C686 || 1 Byte || Inventory Slot 5 || | ||
|- | |- | ||
|C687 || 1 Byte || Inventory Slot 6 || | |$C687 || 1 Byte || Inventory Slot 6 || | ||
|- | |- | ||
|C688 || 1 Byte || Inventory Slot 7 || | |$C688 || 1 Byte || Inventory Slot 7 || | ||
|- | |- | ||
|C689 || 1 Byte || Inventory Slot 8 || | |$C689 || 1 Byte || Inventory Slot 8 || | ||
|- | |- | ||
|C68A || 1 Byte || Inventory Slot 9 || | |$C68A || 1 Byte || Inventory Slot 9 || | ||
|- | |- | ||
|C68B || 1 Byte || Inventory Slot 10 || | |$C68B || 1 Byte || Inventory Slot 10 || | ||
|- | |- | ||
|C68C || 1 Byte || Inventory Slot 11 || | |$C68C || 1 Byte || Inventory Slot 11 || | ||
|- | |- | ||
|C68D || 1 Byte || Inventory Slot 12 || | |$C68D || 1 Byte || Inventory Slot 12 || | ||
|- | |- | ||
|C68E || 1 Byte || Inventory Slot 13 || | |$C68E || 1 Byte || Inventory Slot 13 || | ||
|- | |- | ||
|C68F || 1 Byte || Inventory Slot 14 || | |$C68F || 1 Byte || Inventory Slot 14 || | ||
|- | |- | ||
|C690 || 1 Byte || Inventory Slot 15 || | |$C690 || 1 Byte || Inventory Slot 15 || | ||
|- | |- | ||
|C691 || 1 Byte || Inventory Slot 16 || | |$C691 || 1 Byte || Inventory Slot 16 || | ||
|} | |} | ||
<br /><br /> | <br /><br /> | ||
Line 213: | Line 215: | ||
{| border="3" cellpadding="7" style="width: 75%;" | {| border="3" cellpadding="7" style="width: 75%;" | ||
! style="text-align: center; width: 100px;" | '''RAM''' | ! style="text-align: center; width: 100px;" | '''RAM''' | ||
! style="width: 75px;" | ''' | ! style="width: 75px;" | '''Length''' | ||
! style="width: 300px;" | '''Purpose''' | ! style="width: 300px;" | '''Purpose''' | ||
! '''Note''' | ! '''Note''' | ||
|- | |- | ||
|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 || Value is represented in decimal.<br /><br />'''Example''': If the total rupee count is 639, the hexadecimal representation will be <code>0x0639</code>. | |$C6A5 - $C6A6 || 2 Bytes || Rupees || Value is represented in decimal.<br /><br />'''Example''': If the total rupee count is 639, the hexadecimal representation will be <code>0x0639</code>. | ||
|- | |- | ||
|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 || | ||
|- | |- | ||
|C6CA || 1 Byte || Vasu Ring Flags || <big>'''<code>0x01</code>'''</big>: Slayed 1,000 Monsters — <u>Slayer's Ring</u><br /><big>'''<code>0x02</code>'''</big>: Collected 10,000 Rupees — <u>Rupee Ring</u><br /><big>'''<code>0x04</code>'''</big>: Saved the World — <u>Victory Ring</u><br /><br /> | |$C6CA || 1 Byte || Vasu Ring Flags || <big>'''<code>0x01</code>'''</big>: Slayed 1,000 Monsters — <u>Slayer's Ring</u><br /><big>'''<code>0x02</code>'''</big>: Collected 10,000 Rupees — <u>Rupee Ring</u><br /><big>'''<code>0x04</code>'''</big>: Saved the World — <u>Victory Ring</u><br /><br /> | ||
Based on what events have occurred, the above values get added to this address. Collecting each corresponding ring then adds the corresponding value multiplied by 0x10 to this address.<br /><br /> | Based on what events have occurred, the above values get added to this address. Collecting each corresponding ring then adds the corresponding value multiplied by 0x10 to this address.<br /><br /> | ||
'''Example''': If the value is <code>0x03</code>, the player has collected 10,000 rupees and slayed 1,000 Monsters <code>[0x02 + 0x01]</code>. After the Rupee Ring is received, the value is then <code>0x23</code> <code>[0x03 + (0x03 * 0x10)]</code>, and then when the Slayers Ring is received, the value is <code>0x33</code> <code>[0x23 + (0x01 * 0x10)]</code>. | '''Example''': If the value is <code>0x03</code>, the player has collected 10,000 rupees and slayed 1,000 Monsters <code>[0x02 + 0x01]</code>. After the Rupee Ring is received, the value is then <code>0x23</code> <code>[0x03 + (0x03 * 0x10)]</code>, and then when the Slayers Ring is received, the value is <code>0x33</code> <code>[0x23 + (0x01 * 0x10)]</code>. | ||
|- | |- | ||
|C6C6 || 1 Byte || Ring Box level || | |$C6C6 || 1 Byte || Ring Box level || | ||
|} | |} | ||
Line 264: | Line 266: | ||
{| border="3" cellpadding="7" style="max-width: 75%;" | {| border="3" cellpadding="7" style="max-width: 75%;" | ||
! style="text-align: center; min-width: 100px;" | '''RAM''' | ! style="text-align: center; min-width: 100px;" | '''RAM''' | ||
! style="min-width: 75px;" | ''' | ! style="min-width: 75px;" | '''Length''' | ||
! style="min-width: 300px;" | '''Purpose''' | ! style="min-width: 300px;" | '''Purpose''' | ||
! '''Note''' | ! '''Note''' | ||
|- | |- | ||
|C700 - C7FF || 256 Bytes || Overworld Screen Flags (used to track events and map exploration) || | |$C700 - $C7FF || 256 Bytes || 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 || | ||
|} | |} | ||
Line 284: | Line 286: | ||
! '''Note''' | ! '''Note''' | ||
|- | |- | ||
|C000 - C5BF || | |$C000 - $C5BF || | ||
|- | |- | ||
|C600 - C601 || | |$C600 - $C601 || | ||
|- | |- | ||
|C607 - C615 || | |$C607 - $C615 || | ||
|- | |- | ||
|C620 - C621 || | |$C620 - $C621 || | ||
|- | |- | ||
|C626 || | |$C626 || | ||
|- | |- | ||
|C628- C639 || | |$C628- $C639 || | ||
|- | |- | ||
|C63D || | |$C63D || | ||
|- | |- | ||
|C63F - C64B || | |$C63F - $C64B || | ||
|- | |- | ||
|C65E - C66C || | |$C65E - $C66C || | ||
|- | |- | ||
|C679 || | |$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 06:46, 25 April 2023
NOTE: All values in Tables are Hexadecimal unless noted otherwise.
The following article is a RAM map for The Legend of Zelda: Oracle of Seasons.
Bank 0 ($C000 - $CFFF)
TBD
Enemies killed since...
RAM | Length | Purpose | Note |
---|---|---|---|
$C63E | 1 Byte | Last Maple encounter | |
$C64C | 1 Byte | Gasha Seed planted at ?? | |
$C64D | 1 Byte | Gasha Seed planted at ?? | |
$C64E | 1 Byte | Gasha Seed planted at ?? | |
$C64F | 1 Byte | Gasha Seed planted at ?? | |
$C650 | 1 Byte | Gasha Seed planted at ?? | |
$C651 | 1 Byte | Gasha Seed planted at ?? | |
$C652 | 1 Byte | Gasha Seed planted at ?? | |
$C653 | 1 Byte | Gasha Seed planted at ?? | |
$C654 | 1 Byte | Gasha Seed planted at ?? | |
$C655 | 1 Byte | Gasha Seed planted at ?? | |
$C656 | 1 Byte | Gasha Seed planted at K7 | |
$C657 | 1 Byte | Gasha Seed planted at ?? | |
$C658 | 1 Byte | Gasha Seed planted at ?? | |
$C659 | 1 Byte | Gasha Seed planted at ?? | |
$C65A | 1 Byte | Gasha Seed planted at ?? | |
$C65B | 1 Byte | Gasha Seed planted at M9 |
Mysterious Counter
Action | Incrementation | Note |
---|---|---|
Great Fairy Heal | 0x40 |
|
Bomb a Wall | 0x32 |
|
Collect a Fairy | 0x18 |
|
Screen Transition | 0x05 |
This excludes entering/exiting structures, or taking mini-boss warps in dungeons. (TODO: Test Gale seeds) |
Collect a Heart | 0x04 |
|
Slay an Enemy | 0x03 |
Dungeon Things
RAM | Length | Purpose | Note |
---|---|---|---|
$C662 | 1 Byte | Has entered Hero's Cave | |
$C663 | 1 Byte | Has entered Level 1: Gnarled Root Dungeon | Exiting a sublevel or using a mini-boss warp will also set this flag (though redundant). |
$C664 | 1 Byte | Has entered Level 2: Snake's Remains (?) | Assumed based on context of other RAM addresses. TODO: Confirm. |
$C665 | 1 Byte | Has entered Level 3: Poison Moth's Lair (?) | Assumed based on context of other RAM addresses. TODO: Confirm. |
$C666 | 1 Byte | Has entered Moblin's Keep (?) | Assumed based on context of other RAM addresses. TODO: Confirm. |
$C667 | 1 Byte | Has entered Level 4: Dancing Dragon Dungeon (?) | Assumed based on context of other RAM addresses. TODO: Confirm. |
$C668 | 1 Byte | Has entered Level 5: Unicorn's Cave (?) | Assumed based on context of other RAM addresses. TODO: Confirm. |
$C669 | 1 Byte | Has entered Level 6: Ancient Ruins (?) | Assumed based on context of other RAM addresses. TODO: Confirm. |
$C66A | 1 Byte | Has entered Level 7: Explorer's Crypt (?) | Assumed based on context of other RAM addresses. TODO: Confirm. |
$C66B | 1 Byte | Has entered Level 8: Sword & Shield Maze (?) | Assumed based on context of other RAM addresses. TODO: Confirm. |
$C66C | 1 Byte | Has entered Onox's Castle (?) | Assumed based on context of other RAM addresses. TODO: Confirm. |
C66E | 1 Byte | Small Keys — Hero's Cave | |
$C66F | 1 Byte | Small Keys — Level 1: Gnarled Root Dungeon | |
$C670 | 1 Byte | Small Keys — Level 2: Snake's Remains (?) | Assumed based on context of other RAM addresses. TODO: Confirm. |
$C671 | 1 Byte | Small Keys — Level 3: Poison Moth's Lair (?) | Assumed based on context of other RAM addresses. TODO: Confirm. |
$C672 | 1 Byte | Small Keys — Moblin's Keep (?) | Assumed based on context of other RAM addresses. TODO: Confirm. |
$C673 | 1 Byte | Small Keys — Level 4: Dancing Dragon Dungeon (?) | Assumed based on context of other RAM addresses. TODO: Confirm. |
$C674 | 1 Byte | Small Keys — Level 5: Unicorn's Cave (?) | Assumed based on context of other RAM addresses. TODO: Confirm. |
$C675 | 1 Byte | Small Keys — Level 6: Ancient Ruins (?) | Assumed based on context of other RAM addresses. TODO: Confirm. |
$C676 | 1 Byte | Small Keys — Level 7: Explorer's Crypt (?) | Assumed based on context of other RAM addresses. TODO: Confirm. |
$C677 | 1 Byte | Small Keys — Level 8: Sword & Shield Maze (?) | Assumed based on context of other RAM addresses. TODO: Confirm. |
$C678 | 1 Byte | Small Keys — Onox's Castle (?) | Assumed based on context of other RAM addresses. TODO: Confirm. |
$C67A | 1 Byte | Has Boss Key | True if value ends in 2, 3, 6, 7, A, B, E, or F (TODO: Determine why multiple values evaluate to True) |
$C67C | 1 Byte | Has Compass | True if value ends in 2, 3, 6, 7, A, B, E, or F (TODO: Determine why multiple values evaluate to True) |
$C67E | 1 Byte | Has Dungeon Map | True if value ends in 2, 3, 6, 7, A, B, E, or F (TODO: Determine why multiple values evaluate to True) |
Items
RAM | Length | Purpose | Note |
---|---|---|---|
$C680 | 1 Byte | Item on B Button | |
$C681 | 1 Byte | Item on A Button | |
$C682 | 1 Byte | Inventory Slot 1 | |
$C683 | 1 Byte | Inventory Slot 2 | |
$C684 | 1 Byte | Inventory Slot 3 | |
$C685 | 1 Byte | Inventory Slot 4 | |
$C686 | 1 Byte | Inventory Slot 5 | |
$C687 | 1 Byte | Inventory Slot 6 | |
$C688 | 1 Byte | Inventory Slot 7 | |
$C689 | 1 Byte | Inventory Slot 8 | |
$C68A | 1 Byte | Inventory Slot 9 | |
$C68B | 1 Byte | Inventory Slot 10 | |
$C68C | 1 Byte | Inventory Slot 11 | |
$C68D | 1 Byte | Inventory Slot 12 | |
$C68E | 1 Byte | Inventory Slot 13 | |
$C68F | 1 Byte | Inventory Slot 14 | |
$C690 | 1 Byte | Inventory Slot 15 | |
$C691 | 1 Byte | Inventory Slot 16 |
RAM | Length | Purpose | Note |
---|---|---|---|
$C6A2 | 1 Byte | Current Hearts | |
$C6A3 | 1 Byte | Max Hearts | |
$C6A5 - $C6A6 | 2 Bytes | Rupees | Value is represented in decimal. Example: If the total rupee count is 639, the hexadecimal representation will be 0x0639 .
|
$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 | |
$C6CA | 1 Byte | Vasu Ring Flags | 0x01 : Slayed 1,000 Monsters — Slayer's Ring0x02 : Collected 10,000 Rupees — Rupee Ring0x04 : Saved the World — Victory RingBased on what events have occurred, the above values get added to this address. Collecting each corresponding ring then adds the corresponding value multiplied by 0x10 to this address. Example: If the value is |
$C6C6 | 1 Byte | Ring Box level |
TBD
RAM | Length | Purpose | Note |
---|---|---|---|
$C700 - $C7FF | 256 Bytes | 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 - $C66C | |
$C679 | |
$C67B | |
$C67D | |
$C67F | |
$C692 - $C6A1 | |
$C6A4 | |
$C6AB | |
$C6AD - $C6B0 | |
$C6B2 | |
$C6BC - $C6C5 | |
$C6C7 - $C6FF | |
$C800 - $CC2F | |
$CC31 - $CDFF | |
$CEB0 - $CEFF | |
$CFB0 - $CFFF |