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
m (New addresses + Keeping track of how many byte each unmapped chunk occupies got old quickly.) |
(Fully described $C6BB) |
||
(40 intermediate revisions by 4 users not shown) | |||
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 /> | ||
==TBD== | ==TBD== | ||
{| border="3" cellpadding="7" | {| border="3" cellpadding="7" style="width: 75%;" | ||
! style="text-align: center;" | '''RAM''' | ! style="text-align: center; width: 100px;" | '''RAM''' | ||
! ''' | ! style="width: 75px;" | '''Length''' | ||
! '''Purpose''' | ! style="width: 300px;" | '''Purpose''' | ||
! '''Note''' | |||
|- | |||
|'''$C5C0''' - '''$C5FF''' || 64 Bytes || Unappraised rings carried || | |||
|- | |||
|'''$C602''' - '''$C606''' || 5 Bytes || Player name || | |||
|- | |||
|'''$C616''' - '''$C61D''' || 8 Bytes || Rings owned || | |||
|- | |- | ||
| | |'''$C61E''' - '''$C61F''' || 2 Bytes || Deaths || | ||
|- | |- | ||
| | |'''$C620''' - '''$C621''' || 2 Bytes || 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 || <u>'''Value is represented in decimal'''</u>.<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>0x02</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 | |'''$C63A''' || 1 Byte || Current level bank || | ||
|- | |- | ||
|C63B || 1 Byte || Current ''Absolute'' Overworld Screen<br />'''OR'''<br />Current ''Relative'' Dungeon Screen | |'''$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 | |'''$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> | ||
|} | |} | ||
==Enemies killed since...== | ==Enemies killed since...== | ||
{| border="3" cellpadding="7" | {| border="3" cellpadding="7" style="width: 75%;" | ||
! style="text-align: center;" | '''RAM''' | ! style="text-align: center; width: 100px;" | '''RAM''' | ||
! ''' | ! style="width: 75px;" | '''Length''' | ||
! '''Purpose''' | ! style="width: 300px;" | '''Purpose''' | ||
! '''Note''' | |||
|- | |- | ||
|C63E || 1 Byte || | |'''$C63E''' || 1 Byte || Last Maple encounter || | ||
|- | |- | ||
|C64C || 1 Byte || | |'''$C64C''' || 1 Byte || Gasha Seed planted at ?? || | ||
|- | |- | ||
|C64D || 1 Byte || | |'''$C64D''' || 1 Byte || Gasha Seed planted at ?? || | ||
|- | |- | ||
|C64E || 1 Byte || | |'''$C64E''' || 1 Byte || Gasha Seed planted at ?? || | ||
|- | |- | ||
|C64F || 1 Byte || | |'''$C64F''' || 1 Byte || Gasha Seed planted at ?? || | ||
|- | |- | ||
|C650 || 1 Byte || | |'''$C650''' || 1 Byte || Gasha Seed planted at ?? || | ||
|- | |- | ||
|C651 || 1 Byte || | |'''$C651''' || 1 Byte || Gasha Seed planted at ?? || | ||
|- | |- | ||
|C652 || 1 Byte || | |'''$C652''' || 1 Byte || Gasha Seed planted at ?? || | ||
|- | |- | ||
|C653 || 1 Byte || | |'''$C653''' || 1 Byte || Gasha Seed planted at ?? || | ||
|- | |- | ||
|C654 || 1 Byte || | |'''$C654''' || 1 Byte || Gasha Seed planted at ?? || | ||
|- | |- | ||
|C655 || 1 Byte || | |'''$C655''' || 1 Byte || Gasha Seed planted at ?? || | ||
|- | |- | ||
|C656 || 1 Byte || | |'''$C656''' || 1 Byte || Gasha Seed planted at K7 || | ||
|- | |- | ||
|C657 || 1 Byte || | |'''$C657''' || 1 Byte || Gasha Seed planted at ?? || | ||
|- | |- | ||
|C658 || 1 Byte || | |'''$C658''' || 1 Byte || Gasha Seed planted at ?? || | ||
|- | |- | ||
|C659 || 1 Byte || | |'''$C659''' || 1 Byte || Gasha Seed planted at ?? || | ||
|- | |- | ||
|C65A || 1 Byte || | |'''$C65A''' || 1 Byte || Gasha Seed planted at ?? || | ||
|- | |- | ||
|C65B || 1 Byte || | |'''$C65B''' || 1 Byte || Gasha Seed planted at M9 || | ||
|} | |} | ||
==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''' | ||
! '''Incrementation''' | ! '''Incrementation''' | ||
! '''Note''' | |||
|- | |||
|Dig a Hole || <code>0x01</code> || | |||
|- | |||
|Slay an Enemy || <code>0x03</code> || This excludes using gale seeds on enemies, and knocking them into water/holes. | |||
|- | |- | ||
| | |Collect a Heart || <code>0x04</code> || | ||
|- | |- | ||
| | |Screen Transition || <code>0x05</code> || This excludes entering/exiting structures, or taking mini-boss warps in dungeons. | ||
|- | |- | ||
|Collect a Fairy || 0x18 | |Collect a Fairy || <code>0x18</code> || | ||
|- | |- | ||
| | |Bomb a Wall || <code>0x32</code> || | ||
|- | |- | ||
| | |Great Fairy Heal || <code>0x40</code> || | ||
|- | |- | ||
| | |Collect a Heart Piece || <code>0x64</code> || | ||
|} | |} | ||
==Items | |||
{| border="3" cellpadding="7" | |||
! style="text-align: center;" | '''RAM''' | |||
! ''' | |||
! '''Purpose''' | ==Dungeon Things== | ||
{| border="3" cellpadding="7" style="width: 75%;" | |||
! style="text-align: center; width: 100px;" | '''RAM''' | |||
! style="width: 75px;" | '''Length''' | |||
! style="width: 300px;" | '''Purpose''' | |||
! '''Note''' | |||
|- | |||
|'''$C662''' || 1 Byte || Has entered Hero's Cave || rowspan="9" | Exiting a sublevel or using a mini-boss warp in the corresponding level will also set these flags (though redundant).<br /><br /><sub>[There's more to these addresses than originally thought. More exploration needed.]</sub> | |||
|- | |||
|'''$C663''' || 1 Byte || Has entered Level 1: Gnarled Root Dungeon | |||
|- | |||
|'''$C664''' || 1 Byte || Has entered Level 2: Snake's Remains | |||
|- | |||
|'''$C665''' || 1 Byte || Has entered Level 3: Poison Moth's Lair (?) | |||
|- | |||
|'''$C666''' || 1 Byte || Has entered Level 4: Dancing Dragon Dungeon (?) | |||
|- | |||
|'''$C667''' || 1 Byte || Has entered Level 5: Unicorn's Cave (?) | |||
|- | |||
|'''$C668''' || 1 Byte || Has entered Level 6: Ancient Ruins (?) | |||
|- | |||
|'''$C669''' || 1 Byte || Has entered Level 7: Explorer's Crypt (?) | |||
|- | |||
|'''$C66A''' || 1 Byte || Has entered Level 8: Sword & Shield Maze (?) | |||
|} | |||
{| border="3" cellpadding="7" style="width: 75%;" | |||
|- | |||
| 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 || | |||
|- | |||
| '''$C670''' || 1 Byte || Small Keys — Level 2: Snake's Remains || | |||
|- | |||
| '''$C671''' || 1 Byte || Small Keys — Level 3: Poison Moth's Lair || | |||
|- | |||
| '''$C672''' || 1 Byte || Small Keys — Level 4: Dancing Dragon Dungeon || | |||
|- | |||
| '''$C673''' || 1 Byte || Small Keys — Level 5: Unicorn's Cave || | |||
|- | |||
| '''$C674''' || 1 Byte || Small Keys — Level 6: Ancient Ruins || | |||
|- | |||
| '''$C675''' || 1 Byte || Small Keys — Level 7: Explorer's Crypt || | |||
|- | |||
| '''$C676''' || 1 Byte || Small Keys — Level 8: Sword & Shield Maze || | |||
|} | |||
{| border="3" cellpadding="7" style="width: 75%;" | |||
|- | |||
| style="width: 100px;" | '''$C67A''' || style="width: 75px;" | 1 Byte || style="width: 300px;" | Has Big Key(s) ||rowspan="3"|<!--'''<code>0x01</code>''' — Hero's Cave<br />'''<code>0x02</code>''' — Level 1: Gnarled Root Dungeon<br />'''<code>0x04</code>''' — Level 2: Snake's Remains<br />'''<code>0x08</code>''' — Level 3: Poison Moth's Lair<br />'''<code>0x10</code>''' — Level 4: Dancing Dragon Dungeon<br />'''<code>0x20</code>''' — Level 5: Unicorn's Cave<br />'''<code>0x40</code>''' — Level 6: Ancient Ruins<br />'''<code>0x80</code>''' — Level 7: Explorer's Crypt<br /><br />'''<code>0xFF</code>''' — Level 8: Sword & Shield Maze<br /><br /> | |||
Different combinations of these values applied to one of these three addresses will result in having different combinations of <strong>Big Keys, Compasses, or Dungeon Maps</strong> respectively.<br /><br /> | |||
After each significant value, the amount of combinations of values until the next significant value are the amount of combinations before the last significant value multiplied by 2 and adding 1. There are therefore <code>0x7F</code> combinations after the value <code>0x80</code> which puts the byte's value at <code>0xFF</code> thus making it the perfect amount of space to describe 9 things and all their combinations including the possibility of nothing (<code>0x00</code>).<br /><br /> | |||
'''Example''': If you wanted to have one of these items in only Levels 1, 3, and 6, you would add the values for those levels together [<code>0x01 + 0x08 + 0x20</code>], the result of which is <code>0x29</code>, and apply that value to the corresponding address.<br />If you want one of these items in every level, that's [<code>0x01 + 0x02 + 0x04 + 0x08 + 0x10 + 0x20 + 0x40 + 0x80</code>] which is <code>0xFF</code>.--> | |||
|- | |||
| '''$C67C''' || 1 Byte || Has Compass(s) | |||
|- | |||
| '''$C67E''' || 1 Byte || Has Dungeon Map(s) | |||
|} | |||
==Items== | |||
{| border="3" cellpadding="7" style="width: 75%;" | |||
! style="text-align: center; width: 100px;" | '''RAM''' | |||
! style="width: 75px;" | '''Length''' | |||
! style="width: 300px;" | '''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 || | |||
|} | |||
{| border="3" cellpadding="7" style="width: 75%;" | |||
! style="text-align: center; width: 100px;" | '''RAM''' | |||
! style="width: 75px;" | '''Length''' | |||
! style="width: 300px;" | '''Purpose''' | |||
! '''Note''' | |||
|- | |||
|'''$C6A2''' || 1 Byte || Current Hearts || | |||
|- | |||
|'''$C6A3''' || 1 Byte || Max Hearts || | |||
|- | |||
|'''$C6A5''' - '''$C6A6''' || 2 Bytes || Rupees || <u>'''Value is represented in decimal'''</u>.<br /><br />'''Example''': If the total rupee count is 639, the hexadecimal representation will be <code>0x0639</code>. | |||
|- | |||
|'''$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 || | |||
* <big>'''<code>0x01</code>'''</big>: <u>Fertile Soil</u> | |||
* <big>'''<code>0x02</code>'''</big>: <u>Gift of Time</u> | |||
* <big>'''<code>0x04</code>'''</big>: <u>Bright Sun</u> | |||
* <big>'''<code>0x08</code>'''</big>: <u>Soothing Rain</u> | |||
* <big>'''<code>0x10</code>'''</big>: <u>Nurturing Warmth</u> | |||
* <big>'''<code>0x20</code>'''</big>: <u>Blowing Wind</u> | |||
* <big>'''<code>0x40</code>'''</big>: <u>Seed of Life</u> | |||
* <big>'''<code>0x80</code>'''</big>: <u>Changing Seasons</u><br /><br /> | |||
Each essence has a corresponding value associated with it, each value being double the value of the previous one, and the value of this address will be the sum of all the essences collected up to <code>0xFF</code>. | |||
'''Example''': If the value of this address is <code>0x1F</code>, the collected essences will be <u>Fertile Soil</u>, <u>Gift of Time</u>, <u>Bright Sun</u>, <u>Soothing Rain</u>, and <u>Nurturing Warmth</u> (5/8 essences in sequence). | |||
Any value in this address is valid, but many of them will not normally be used unless essences are collected out of sequence. Assuming all essences are collected in sequence, the value will progress as follows: | |||
<center><big>'''<code>0x00</code>'''</big> -> <big>'''<code>0x01</code>'''</big> -> <big>'''<code>0x03</code>'''</big> -> <big>'''<code>0x07</code>'''</big> -> <big>'''<code>0x0F</code>'''</big> -> <big>'''<code>0x1F</code>'''</big> -> <big>'''<code>0x3F</code>'''</big> -> <big>'''<code>0x7F</code>'''</big> -> <big>'''<code>0xFF</code>'''</big></center> | |||
|- | |||
|'''$C6CA''' || 1 Byte || Vasu Ring Flags || | |||
* <big>'''<code>0x01</code>'''</big>: Slayed 1,000 Monsters — <u>Slayer's Ring</u> | |||
* <big>'''<code>0x02</code>'''</big>: Collected 10,000 Rupees — <u>Rupee Ring</u> | |||
* <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. Obtaining each corresponding ring from Vasu then adds the corresponding value multiplied by 0x10 to this address. | |||
'''Example''': If the value is <code>0x03</code>, the player has collected 10,000 rupees and slayed 1,000 Monsters <code>[0x02 + 0x01]</code>. In this scenario, after the Rupee Ring is received, the value would then be <code>0x23</code> <code>[0x03 + (0x02 * 0x10)]</code>, and then when the Slayers Ring is received, the value is <code>0x33</code> <code>[0x23 + (0x01 * 0x10)]</code>.<br /><br /> | |||
<center> | |||
{| class="mw-collapsible mw-collapsed wikitable" style="width: 90%; text-align: center;" | |||
! colspan="8" style="height: 35px; font-size: 1.5em;" | Possible Values | |||
|- style="border-top: 2px solid black; border-bottom: 2px solid black; font-size: 1.2em;" | | |||
! style="border-right: 2px solid black;" | # | |||
! 1,000<br />Monsters<br />Slain | |||
! 10,000<br />Rupees<br />Collected | |||
! Saved<br />the<br />World | |||
! Slayer's<br />Ring<br />Obtained | |||
! Rupee<br />Ring<br />Obtained | |||
! Victory<br />Ring<br />Obtained | |||
! style="border-left: 2px solid black; font-weight: bold;" | VALUE | |||
|- | |||
| style="border-right: 2px solid black; font-weight: bold;" | 1 | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="border-left: 2px solid black; font-weight: bold;" | <code>0x00</code> | |||
|- | |||
| style="border-right: 2px solid black; font-weight: bold;" | 2 | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="border-left: 2px solid black; font-weight: bold;" | <code>0x01</code> | |||
|- | |||
| style="border-right: 2px solid black; font-weight: bold;" | 3 | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="border-left: 2px solid black; font-weight: bold;" | <code>0x02</code> | |||
|- | |||
| style="border-right: 2px solid black; font-weight: bold;" | 4 | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="border-left: 2px solid black; font-weight: bold;" | <code>0x03</code> | |||
|- | |- | ||
| | | style="border-right: 2px solid black; font-weight: bold;" | 5 | ||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="border-left: 2px solid black; font-weight: bold;" | <code>0x04</code> | |||
|- | |- | ||
| | | style="border-right: 2px solid black; font-weight: bold;" | 6 | ||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="border-left: 2px solid black; font-weight: bold;" | <code>0x05</code> | |||
|- | |- | ||
| | | style="border-right: 2px solid black; font-weight: bold;" | 7 | ||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="border-left: 2px solid black; font-weight: bold;" | <code>0x06</code> | |||
|- | |- | ||
| | | style="border-right: 2px solid black; font-weight: bold;" | 8 | ||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="border-left: 2px solid black; font-weight: bold;" | <code>0x07</code> | |||
|- | |- | ||
| | | style="border-right: 2px solid black; font-weight: bold;" | 9 | ||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="border-left: 2px solid black; font-weight: bold;" | <code>0x11</code> | |||
|- | |- | ||
| | | style="border-right: 2px solid black; font-weight: bold;" | 10 | ||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="border-left: 2px solid black; font-weight: bold;" | <code>0x13</code> | |||
|- | |- | ||
| | | style="border-right: 2px solid black; font-weight: bold;" | 11 | ||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="border-left: 2px solid black; font-weight: bold;" | <code>0x15</code> | |||
|- | |- | ||
| | | style="border-right: 2px solid black; font-weight: bold;" | 12 | ||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="border-left: 2px solid black; font-weight: bold;" | <code>0x17</code> | |||
|- | |- | ||
| | | style="border-right: 2px solid black; font-weight: bold;" | 13 | ||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="border-left: 2px solid black; font-weight: bold;" | <code>0x22</code> | |||
|- | |- | ||
| | | style="border-right: 2px solid black; font-weight: bold;" | 14 | ||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="border-left: 2px solid black; font-weight: bold;" | <code>0x23</code> | |||
|- | |- | ||
| | | style="border-right: 2px solid black; font-weight: bold;" | 15 | ||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="border-left: 2px solid black; font-weight: bold;" | <code>0x26</code> | |||
|- | |- | ||
| | | style="border-right: 2px solid black; font-weight: bold;" | 16 | ||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="border-left: 2px solid black; font-weight: bold;" | <code>0x27</code> | |||
|- | |- | ||
| | | style="border-right: 2px solid black; font-weight: bold;" | 17 | ||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="border-left: 2px solid black; font-weight: bold;" | <code>0x33</code> | |||
|- | |- | ||
| | | style="border-right: 2px solid black; font-weight: bold;" | 18 | ||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="border-left: 2px solid black; font-weight: bold;" | <code>0x37</code> | |||
|- | |- | ||
| | | style="border-right: 2px solid black; font-weight: bold;" | 19 | ||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="border-left: 2px solid black; font-weight: bold;" | <code>0x44</code> | |||
|- | |- | ||
| | | style="border-right: 2px solid black; font-weight: bold;" | 20 | ||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="border-left: 2px solid black; font-weight: bold;" | <code>0x45</code> | |||
|- | |- | ||
| | | style="border-right: 2px solid black; font-weight: bold;" | 21 | ||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="border-left: 2px solid black; font-weight: bold;" | <code>0x46</code> | |||
|- | |- | ||
| | | style="border-right: 2px solid black; font-weight: bold;" | 22 | ||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="border-left: 2px solid black; font-weight: bold;" | <code>0x47</code> | |||
|- | |- | ||
| | | style="border-right: 2px solid black; font-weight: bold;" | 23 | ||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="border-left: 2px solid black; font-weight: bold;" | <code>0x55</code> | |||
|- | |- | ||
| | | style="border-right: 2px solid black; font-weight: bold;" | 24 | ||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="border-left: 2px solid black; font-weight: bold;" | <code>0x57</code> | |||
|- | |- | ||
| | | style="border-right: 2px solid black; font-weight: bold;" | 25 | ||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="border-left: 2px solid black; font-weight: bold;" | <code>0x66</code> | |||
|- | |- | ||
| | | style="border-right: 2px solid black; font-weight: bold;" | 26 | ||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #E06666; color: white;" | FALSE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="border-left: 2px solid black; font-weight: bold;" | <code>0x67</code> | |||
|- | |- | ||
| | | style="border-right: 2px solid black; font-weight: bold;" | 27 | ||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="background-color: #6AA84F; color: white;" | TRUE | |||
| style="border-left: 2px solid black; font-weight: bold;" | <code>0x77</code> | |||
|} | |} | ||
< | </center> | ||
|- | |||
|'''$C6C6''' || 1 Byte || Ring Box level || | |||
|} | |||
==TBD== | ==TBD== | ||
{| border="3" cellpadding="7" | {| border="3" cellpadding="7" style="max-width: 75%;" | ||
! style="text-align: center;" | '''RAM''' | ! style="text-align: center; min-width: 100px;" | '''RAM''' | ||
! ''' | ! style="min-width: 75px;" | '''Length''' | ||
! '''Purpose''' | ! style="min-width: 300px;" | '''Purpose''' | ||
! '''Note''' | |||
|- | |- | ||
|C700 - C7FF || | |'''$C700''' - '''$C7FF''' || 256 Bytes || Overworld Screen Flags (used to track events and map exploration) || To do: Specify which each address tracks. | ||
|- | |- | ||
|CC30 || 1 Byte || Enemies left on screen | |'''$CC30''' || 1 Byte || Enemies left on screen || | ||
|- | |- | ||
|CE00 - CEAF || || Current Screen Collision Data | |'''$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 || | ||
|} | |} | ||
==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''' || | |||
|- | |||
|'''$C600''' - '''$C601''' || | |||
|- | |- | ||
| | |'''$C607''' - '''$C615''' || | ||
|- | |- | ||
| | |'''$C620''' - '''$C621''' || | ||
|- | |- | ||
| | |'''$C626''' || | ||
|- | |- | ||
| | |'''$C628''' - '''$C639''' || | ||
|- | |- | ||
| | |'''$C63D''' || | ||
|- | |- | ||
| | |'''$C63F''' - '''$C64B''' || | ||
|- | |- | ||
| | |'''$C65E''' - '''$C661''' || | ||
|- | |- | ||
| | |'''$C66B''' - '''$C66C''' || | ||
|- | |- | ||
| | |'''$C677''' - '''$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''' || | ||
|} | |} | ||
{{Internal Data}} |
Revision as of 20:12, 4 July 2024
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 |
---|---|---|
Dig a Hole | 0x01 |
|
Slay an Enemy | 0x03 |
This excludes using gale seeds on enemies, and knocking them into water/holes. |
Collect a Heart | 0x04 |
|
Screen Transition | 0x05 |
This excludes entering/exiting structures, or taking mini-boss warps in dungeons. |
Collect a Fairy | 0x18 |
|
Bomb a Wall | 0x32 |
|
Great Fairy Heal | 0x40 |
|
Collect a Heart Piece | 0x64 |
Dungeon Things
RAM | Length | Purpose | Note |
---|---|---|---|
$C662 | 1 Byte | Has entered Hero's Cave | Exiting a sublevel or using a mini-boss warp in the corresponding level will also set these flags (though redundant). [There's more to these addresses than originally thought. More exploration needed.] |
$C663 | 1 Byte | Has entered Level 1: Gnarled Root Dungeon | |
$C664 | 1 Byte | Has entered Level 2: Snake's Remains | |
$C665 | 1 Byte | Has entered Level 3: Poison Moth's Lair (?) | |
$C666 | 1 Byte | Has entered Level 4: Dancing Dragon Dungeon (?) | |
$C667 | 1 Byte | Has entered Level 5: Unicorn's Cave (?) | |
$C668 | 1 Byte | Has entered Level 6: Ancient Ruins (?) | |
$C669 | 1 Byte | Has entered Level 7: Explorer's Crypt (?) | |
$C66A | 1 Byte | Has entered Level 8: Sword & Shield Maze (?) |
$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 | |
$C671 | 1 Byte | Small Keys — Level 3: Poison Moth's Lair | |
$C672 | 1 Byte | Small Keys — Level 4: Dancing Dragon Dungeon | |
$C673 | 1 Byte | Small Keys — Level 5: Unicorn's Cave | |
$C674 | 1 Byte | Small Keys — Level 6: Ancient Ruins | |
$C675 | 1 Byte | Small Keys — Level 7: Explorer's Crypt | |
$C676 | 1 Byte | Small Keys — Level 8: Sword & Shield Maze |
$C67A | 1 Byte | Has Big Key(s) | |
$C67C | 1 Byte | Has Compass(s) | |
$C67E | 1 Byte | Has Dungeon Map(s) |
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 |
Each essence has a corresponding value associated with it, each value being double the value of the previous one, and the value of this address will be the sum of all the essences collected up to
Example: If the value of this address is
Any value in this address is valid, but many of them will not normally be used unless essences are collected out of sequence. Assuming all essences are collected in sequence, the value will progress as follows:
0x00 -> 0x01 -> 0x03 -> 0x07 -> 0x0F -> 0x1F -> 0x3F -> 0x7F -> 0xFF
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$C6CA | 1 Byte | Vasu Ring Flags |
Based on what events have occurred, the above values get added to this address. Obtaining each corresponding ring from Vasu 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) | To do: Specify which each address tracks. |
$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 - $C661 | |
$C66B - $C66C | |
$C677 - $C679 | |
$C67B | |
$C67D | |
$C67F | |
$C692 - $C6A1 | |
$C6A4 | |
$C6AB | |
$C6AD - $C6B0 | |
$C6B2 | |
$C6BC - $C6C5 | |
$C6C7 - $C6FF | |
$C800 - $CC2F | |
$CC31 - $CDFF | |
$CEB0 - $CEFF | |
$CFB0 - $CFFF |
Internal Data for The Legend of Zelda: Oracle of Seasons
| |
---|---|