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
(Made all addresses bold + fixed unmapped addresses + (mostly) confirmed and added row-spanning explanations to $C67A, $C67B, and $C67C + row-spanning note for $C662, $C663, $C664, $C665, $C666, $C667, $C668, $C669, & $C66A) |
m (→Dungeon Things: This is just wrong. Brain mush. Need to come back to this.) |
||
Line 153: | Line 153: | ||
{| 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 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 6: Ancient Ruins<br />'''<code> | | 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 /> | 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 /> | 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>. | '''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) | | '''$C67C''' || 1 Byte || Has Compass(s) |
Revision as of 00:40, 27 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 |
---|---|---|
Collect a Heart Piece | 0x64 |
|
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 | Exiting a sublevel or using a mini-boss warp in the corresponding level will also set these flags (though redundant). |
$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 | |
$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 - $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 |