User:Cassidymoen!2979/SRAM Map: Difference between revisions
(Keys stuff) |
(Some formatting and copy editing, starting entrances value) |
||
Line 14: | Line 14: | ||
== SRAM Map == | == SRAM Map == | ||
=== ''' | === '''Room Data''': {{MemoryAddress/PC|000}} to {{MemoryAddress/PC|24F}} === | ||
There are 296 ( | There are 296 ({{MemoryValue/Generic|128}}) rooms in in the ROM. Each room's data occupies one word, or two bytes. | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 43: | Line 43: | ||
The quadrant bits corresponds to quadrants <code>4</code>, <code>3</code>, <code>2</code>, and <code>1</code> in that order which is also how the quadrants are laid out on a tile from left to right (upper left, upper right, lower left, lower right), so if quadrants <code>4</code> and <code>1</code> have been "seen" by Link, then <code>qqqq</code> will look like <code>1001</code>. | The quadrant bits corresponds to quadrants <code>4</code>, <code>3</code>, <code>2</code>, and <code>1</code> in that order which is also how the quadrants are laid out on a tile from left to right (upper left, upper right, lower left, lower right), so if quadrants <code>4</code> and <code>1</code> have been "seen" by Link, then <code>qqqq</code> will look like <code>1001</code>. | ||
=== ''' | === '''Unused''': {{MemoryAddress/PC|250}} to {{MemoryAddress/PC|27F}} === | ||
=== ''' | * Presumed unused in both vanilla and randomizer. | ||
=== '''Overworld Event Information''': {{MemoryAddress/PC|280}} to {{MemoryAddress/PC|2FF}} === | |||
Each area occupies one byte. | Each area occupies one byte. | ||
Line 51: | Line 53: | ||
<code>? h o ? ? ? s ?</code> | <code>? h o ? ? ? s ?</code> | ||
* <code>o</code> - If set, the area will draw its designated overlay when you enter it. e.g. If you're triggered misery mire then the entrance shows up there the next time you enter that area. You can view overlays in the latest release of Hyrule Magic | * <code>o</code> - If set, the area will draw its designated overlay when you enter it. e.g. If you're triggered misery mire then the entrance shows up there the next time you enter that area. You can view overlays in the latest release of Hyrule Magic. Other overlays include stairs leading underground, and the removal of the weather vane after it has exploded. | ||
* <code>s</code> - If set, the area will draw its secondary overlay when you enter it. | * <code>s</code> - If set, the area will draw its secondary overlay when you enter it. | ||
* <code>h</code> - If set, heart piece has been collected in this area already. Also used for a handful of other sprites. | * <code>h</code> - If set, heart piece has been collected in this area already. Also used for a handful of other sprites. | ||
* <code>?</code> - Unknown, possibly unused. | * <code>?</code> - Unknown, possibly unused. | ||
=== ''' | === '''Shop Purchase Counts''': {{MemoryAddress/PC|300}} to {{MemoryAddress/PC|33F}} === | ||
The randomizer ROM uses new shop code to handle loading and configuration of shops which allows the higher-level item and entrance randomizers to use clean, convenient abstractions for changing them. | The randomizer ROM uses new shop code to handle loading and configuration of shops which allows the higher-level item and entrance randomizers to use clean, convenient abstractions for changing them. The higher-level randomizers can dictate a certain number of times that a shop item can be re-purchased (e.g. you can only buy capacity upgrades seven times.) The bytes here (except for '''$300''' which is currently unknown) are used to count how many times a single item in a shop has been purchased. They are dynamically assigned at generation time, which is to say that any single byte should not be considered statically bound to a certain item in a shop. Take-Any caves as well as the old man with the sword in Retro world state are considered shops in this context. | ||
'''Note 1:''' This is noted as a "temporary home" for the shop purchase counts in the base rom's source code | '''Note 1:''' This is noted as a "temporary home" for the shop purchase counts in the base rom's source code | ||
'''Note 2:''' Jumping into deep water without flippers and being placed back on land on the Hobo and Zora's Domain maps are known to overwrite | '''Note 2:''' Jumping into deep water without flippers and being placed back on land on the Hobo and Zora's Domain maps are known to overwrite {{MemoryAddress/PC|302}} and {{MemoryAddress/PC|304}} respectively. This has no effect if a shop item can always be repurchased, but will lead to unintended behavior if the item can only be purchased a limited amount of times. | ||
=== ''' | === '''Items & Equipment''': {{MemoryAddress/PC|340}} to {{MemoryAddress/PC|38B}} === | ||
{| border="1" align="center" cellpadding="4" cellspacing="0" style="margin: 0 0 1em 1em; background: #f7f8ff; border: 1px #8888cc solid; border-collapse: collapse; font-size: 95%" | {| border="1" align="center" cellpadding="4" cellspacing="0" style="margin: 0 0 1em 1em; background: #f7f8ff; border: 1px #8888cc solid; border-collapse: collapse; font-size: 95%" | ||
Line 73: | Line 75: | ||
!style="width:15%"|Notes | !style="width:15%"|Notes | ||
|- | |- | ||
| | |{{MemoryAddress/PC|340}} | ||
|[[Bow]] | |[[Bow]] | ||
|{{MemoryValue|00}} - Nothing | |{{MemoryValue|00}} - Nothing | ||
Line 82: | Line 84: | ||
|- | |- | ||
|- | |- | ||
| | |{{MemoryAddress/PC|341}} | ||
|[[Boomerang]] | |[[Boomerang]] | ||
|{{MemoryValue|00}} - Nothing | |{{MemoryValue|00}} - Nothing | ||
Line 88: | Line 90: | ||
|{{MemoryValue|02}} - Red | |{{MemoryValue|02}} - Red | ||
|- | |- | ||
| | |{{MemoryAddress/PC|342}} | ||
|[[Hookshot]] || {{MemoryValue|00}} - No || {{MemoryValue|01}} - Yes | |[[Hookshot]] || {{MemoryValue|00}} - No || {{MemoryValue|01}} - Yes | ||
|- | |- | ||
| | |{{MemoryAddress/PC|343}} | ||
|[[Bomb]]s | |[[Bomb]]s | ||
|How many bombs you have | |How many bombs you have | ||
Line 97: | Line 99: | ||
|Can exceed {{MemoryValue|32}}, up to {{MemoryValue|FF}}. | |Can exceed {{MemoryValue|32}}, up to {{MemoryValue|FF}}. | ||
|- | |- | ||
| | |{{MemoryAddress/PC|344}} | ||
|[[Magic Powder]] | |[[Magic Powder]] | ||
|{{MemoryValue|00}} - Nothing | |{{MemoryValue|00}} - Nothing | ||
Line 103: | Line 105: | ||
|{{MemoryValue|02}} - [[Magic Powder]] | |{{MemoryValue|02}} - [[Magic Powder]] | ||
|- | |- | ||
| | |{{MemoryAddress/PC|345}} | ||
|[[Fire Rod]] || {{MemoryValue|00}} - No || {{MemoryValue|01}} - Yes | |[[Fire Rod]] || {{MemoryValue|00}} - No || {{MemoryValue|01}} - Yes | ||
|- | |- | ||
| | |{{MemoryAddress/PC|346}} | ||
|[[Ice Rod]] || {{MemoryValue|00}} - No || {{MemoryValue|01}} - Yes | |[[Ice Rod]] || {{MemoryValue|00}} - No || {{MemoryValue|01}} - Yes | ||
|- | |- | ||
| | |{{MemoryAddress/PC|347}} | ||
|[[Bombos Medallion]] || {{MemoryValue|00}} - No || {{MemoryValue|01}} - Yes | |[[Bombos Medallion]] || {{MemoryValue|00}} - No || {{MemoryValue|01}} - Yes | ||
|- | |- | ||
| | |{{MemoryAddress/PC|348}} | ||
|[[Ether Medallion]] || {{MemoryValue|00}} - No || {{MemoryValue|01}} - Yes | |[[Ether Medallion]] || {{MemoryValue|00}} - No || {{MemoryValue|01}} - Yes | ||
|- | |- | ||
| | |{{MemoryAddress/PC|349}} | ||
|[[Quake Medallion]] || {{MemoryValue|00}} - No || {{MemoryValue|01}} - Yes | |[[Quake Medallion]] || {{MemoryValue|00}} - No || {{MemoryValue|01}} - Yes | ||
|- | |- | ||
| | |{{MemoryAddress/PC|34A}} | ||
|[[Lamp]] ||{{MemoryValue|00}} - No || {{MemoryValue|01}} - Yes | |[[Lamp]] ||{{MemoryValue|00}} - No || {{MemoryValue|01}} - Yes | ||
|- | |- | ||
| | |{{MemoryAddress/PC|34B}} | ||
|[[Magic Hammer]] || {{MemoryValue|00}} - No || {{MemoryValue|01}} - Yes | |[[Magic Hammer]] || {{MemoryValue|00}} - No || {{MemoryValue|01}} - Yes | ||
|- | |- | ||
| | |{{MemoryAddress/PC|34C}} | ||
|[[Flute]] | |[[Flute]] | ||
|{{MemoryValue|00}} - Nothing | |{{MemoryValue|00}} - Nothing | ||
Line 131: | Line 133: | ||
|{{MemoryValue|03}} - [[Flute]] & [[Bird]] | |{{MemoryValue|03}} - [[Flute]] & [[Bird]] | ||
|- | |- | ||
| | |{{MemoryAddress/PC|34D}} | ||
|[[Bug-Catching Net]] || {{MemoryValue|00}} - No || {{MemoryValue|01}} - Yes | |[[Bug-Catching Net]] || {{MemoryValue|00}} - No || {{MemoryValue|01}} - Yes | ||
|- | |- | ||
| | |{{MemoryAddress/PC|34E}} | ||
|[[Book of Mudora]] || {{MemoryValue|00}} - No || {{MemoryValue|01}} - Yes | |[[Book of Mudora]] || {{MemoryValue|00}} - No || {{MemoryValue|01}} - Yes | ||
|- | |- | ||
| | |{{MemoryAddress/PC|34F}} | ||
|Bottle Index | |Bottle Index | ||
|{{MemoryValue|00}} - Nothing | |{{MemoryValue|00}} - Nothing | ||
Line 145: | Line 147: | ||
|{{MemoryValue|04}} - Bottle 4 ({{MemoryAddress/PC|7EF35F}}) | |{{MemoryValue|04}} - Bottle 4 ({{MemoryAddress/PC|7EF35F}}) | ||
|- | |- | ||
| | |{{MemoryAddress/PC|350}} | ||
|[[Cane of Somaria]] || {{MemoryValue|00}} - No || {{MemoryValue|01}} - Yes | |[[Cane of Somaria]] || {{MemoryValue|00}} - No || {{MemoryValue|01}} - Yes | ||
|- | |- | ||
| | |{{MemoryAddress/PC|351}} | ||
|[[Cane of Byrna]] || {{MemoryValue|00}} - No || {{MemoryValue|01}} - Yes | |[[Cane of Byrna]] || {{MemoryValue|00}} - No || {{MemoryValue|01}} - Yes | ||
|- | |- | ||
| | |{{MemoryAddress/PC|352}} | ||
|[[Magic Cape]] || {{MemoryValue|00}} - No || {{MemoryValue|01}} - Yes | |[[Magic Cape]] || {{MemoryValue|00}} - No || {{MemoryValue|01}} - Yes | ||
|- | |- | ||
| | |{{MemoryAddress/PC|353}} | ||
|[[Magic Mirror]] | |[[Magic Mirror]] | ||
|{{MemoryValue|00}} - Nothing | |{{MemoryValue|00}} - Nothing | ||
Line 160: | Line 162: | ||
|{{MemoryValue|02}} - [[Magic Mirror]] | |{{MemoryValue|02}} - [[Magic Mirror]] | ||
|- | |- | ||
| | |{{MemoryAddress/PC|354}}| | ||
|Gloves | |Gloves | ||
|{{MemoryValue|00}} - Nothing | |{{MemoryValue|00}} - Nothing | ||
Line 166: | Line 168: | ||
|{{MemoryValue|02}} - [[Titan's Mitt]] | |{{MemoryValue|02}} - [[Titan's Mitt]] | ||
|- | |- | ||
| | |{{MemoryAddress/PC|355}} | ||
|[[Pegasus Boots]] || {{MemoryValue|00}} - No || {{MemoryValue|01}} - Yes || colspan="3"| ||See '''$379'''. | |[[Pegasus Boots]] || {{MemoryValue|00}} - No || {{MemoryValue|01}} - Yes || colspan="3"| ||See '''$379'''. | ||
|- | |- | ||
| | |{{MemoryAddress/PC|356}} | ||
|[[Zora's Flippers]] || {{MemoryValue|00}} - No || {{MemoryValue|01}} - Yes || colspan="3" | ||See '''$379'''. | |[[Zora's Flippers]] || {{MemoryValue|00}} - No || {{MemoryValue|01}} - Yes || colspan="3" | ||See '''$379'''. | ||
|- | |- | ||
| | |{{MemoryAddress/PC|357}} | ||
|[[Moon Pearl]] || {{MemoryValue|00}} - No || {{MemoryValue|01}} - Yes | |[[Moon Pearl]] || {{MemoryValue|00}} - No || {{MemoryValue|01}} - Yes | ||
|- | |- | ||
| | |{{MemoryAddress/PC|358}}||Presumed Unused | ||
|- | |- | ||
| | |{{MemoryAddress/PC|359}} | ||
|[[Sword]] | |[[Sword]] | ||
|{{MemoryValue|00}} - No Sword | |{{MemoryValue|00}} - No Sword | ||
Line 185: | Line 187: | ||
|{{MemoryValue|04}} - [[Golden Sword]] | |{{MemoryValue|04}} - [[Golden Sword]] | ||
|- | |- | ||
| | |{{MemoryAddress/PC|35A}} | ||
|[[Shield]] || {{MemoryValue|00}} - No Shield | |[[Shield]] || {{MemoryValue|00}} - No Shield | ||
|{{MemoryValue|01}} - [[Fighters' Shield]] | |{{MemoryValue|01}} - [[Fighters' Shield]] | ||
Line 191: | Line 193: | ||
|{{MemoryValue|03}} - [[Mirror Shield]] | |{{MemoryValue|03}} - [[Mirror Shield]] | ||
|- | |- | ||
| | |{{MemoryAddress/PC|35B}} | ||
|[[Armor]] | |[[Armor]] | ||
|{{MemoryValue|00}} - [[Green Mail]] | |{{MemoryValue|00}} - [[Green Mail]] | ||
Line 197: | Line 199: | ||
|{{MemoryValue|02}} - [[Red Mail]] | |{{MemoryValue|02}} - [[Red Mail]] | ||
|- | |- | ||
|rowspan="2"| | |rowspan="2"|{{MemoryAddress/PC|35C}} to {{MemoryAddress/PC|35F}}||rowspan="2"|Bottle Contents | ||
|{{MemoryValue|00}} - No Bottle | |{{MemoryValue|00}} - No Bottle | ||
|{{MemoryValue|01}} - [[Mushroom]] | |{{MemoryValue|01}} - [[Mushroom]] | ||
Line 209: | Line 211: | ||
|{{MemoryValue|08}} - [[Good Bee]] | |{{MemoryValue|08}} - [[Good Bee]] | ||
|- | |- | ||
| | |{{MemoryAddress/PC|360}} to {{MemoryAddress/PC|361}}||Wallet Capacity||colspan="5"| ||rowspan="2"| | ||
|- | |- | ||
| | |{{MemoryAddress/PC|362}} to {{MemoryAddress/PC|363}}||[[Rupee]] Count | ||
|} | |} | ||
Line 228: | Line 230: | ||
|- | |- | ||
|[[Compass]]1 | |[[Compass]]1 | ||
| | |{{MemoryAddress/PC|364}} | ||
|rowspan="3"|Unused | |rowspan="3"|Unused | ||
|rowspan="3"|Unused | |rowspan="3"|Unused | ||
Line 239: | Line 241: | ||
|- | |- | ||
|[[Big Key|BigKey]]1 | |[[Big Key|BigKey]]1 | ||
| | |{{MemoryAddress/PC|366}} | ||
|- | |- | ||
|[[Dungeon Map]]1 | |[[Dungeon Map]]1 | ||
| | |{{MemoryAddress/PC|368}} | ||
|- | |- | ||
|[[Compass]]2 | |[[Compass]]2 | ||
| | |{{MemoryAddress/PC|365}} | ||
|rowspan="3"|[[Misery Mire]] | |rowspan="3"|[[Misery Mire]] | ||
|rowspan="3"|[[Palace of Darkness]] | |rowspan="3"|[[Palace of Darkness]] | ||
Line 256: | Line 258: | ||
|- | |- | ||
|[[Big Key|BigKey]]2 | |[[Big Key|BigKey]]2 | ||
| | |{{MemoryAddress/PC|367}} | ||
|- | |- | ||
|[[Dungeon Map]]2 | |[[Dungeon Map]]2 | ||
| | |{{MemoryAddress/PC|369}} | ||
|} | |} | ||
Wishing Pond Rupee ''' | '''Wishing Pond Rupee''': {{MemoryAddress/PC|36A}} | ||
* | * Presumed unused | ||
[[Heart Piece]]s collected | '''[[Heart Piece]]s collected''':{{MemoryAddress/PC|36B}} | ||
* Number of heart pieces (out of four) you have earned | |||
'''Health''': {{MemoryAddress/PC|36C}} | |||
* Health Capacity. Each increment of {{MemoryValue|08}} is worth one heart. | * Health Capacity. Each increment of {{MemoryValue|08}} is worth one heart. | ||
* {{MemoryValue|04}} is a half heart. The max is generally {{MemoryValue|A0}}. The game is coded to not accept health values beyond this. | * {{MemoryValue|04}} is a half heart. The max is generally {{MemoryValue|A0}}. The game is coded to not accept health values beyond this. | ||
*'''$36D'''. Actual Health. Same as above, but this reflects your current health status rather than potential. | *'''$36D'''. Actual Health. Same as above, but this reflects your current health status rather than potential. | ||
Magic Power | '''Magic Power''': {{MemoryAddress/PC|36E}} | ||
* Magic power ranges from {{MemoryValue|00}} to {{MemoryValue|80}}. Each small bottle refills {{MemoryValue|10}}. Setting Magic above {{MemoryValue|80}} causes the magic meter to glitch and you can't use special items. | * Magic power ranges from {{MemoryValue|00}} to {{MemoryValue|80}}. Each small bottle refills {{MemoryValue|10}}. Setting Magic above {{MemoryValue|80}} causes the magic meter to glitch and you can't use special items. | ||
[[Small Key]]s | '''[[Small Key]]s''': {{MemoryAddress/PC|36F}} | ||
* Number of Keys you have in the dungeon you are currently in. If you're in a non-keyed dungeon it will generally read {{MemoryValue|FF}}. | * Number of Keys you have in the dungeon you are currently in. If you're in a non-keyed dungeon it will generally read {{MemoryValue|FF}}. | ||
[[Bomb Capacity Upgrade]]s | '''[[Bomb Capacity Upgrade]]s''': {{MemoryAddress/PC|370}} | ||
* Number of bombs you can hold above the default value (10). | * Number of bombs you can hold above the default value (10). | ||
[[Arrow Capacity Upgrade]]s | '''[[Arrow Capacity Upgrade]]s''': {{MemoryAddress/PC|371}} | ||
* Number of arrows you can hold above the default value (30) | * Number of arrows you can hold above the default value (30) | ||
'''Hearts Filler''': {{MemoryAddress/PC|372}} | |||
* Write to this location to fill in a set number of hearts. Make sure to write in a multiple of {{MemoryValue|08}} Otherwise, you will end up filling the whole life meter. | * Write to this location to fill in a set number of hearts. Make sure to write in a multiple of {{MemoryValue|08}} Otherwise, you will end up filling the whole life meter. | ||
'''Magic Filler''': {{MemoryAddress/PC|373}} | |||
* Write to this location how much magic power you want filled up. The maximum effective value is {{MemoryValue|80}}. | * Write to this location how much magic power you want filled up. The maximum effective value is {{MemoryValue|80}}. | ||
[[Pendant]]s | '''[[Pendant]]s''': {{MemoryAddress/PC|374}} | ||
* | <code>- - - - - g b r</code> | ||
* | * <code>r</code> - Red Pendant | ||
* | * <code>b</code> - Blue Pendant | ||
* <code>g</code> - Green Pendant | |||
Bomb filler: | Bomb filler: {{MemoryAddress/PC|375}} | ||
* | * Number of bombs to be "filled" or added to the current bomb count. It will not exceed your maximum, defined at {{MemoryAddress/PC|370}}. | ||
Arrow filler | '''Arrow filler''': {{MemoryAddress/PC|376}} | ||
* | * Number of arrows to be "filled" or added to the current arrow count. It will not exceed your maximum, defined at MemoryAddress/PC|371}}. | ||
'''Arrows''': {{MemoryAddress/PC|377}} | |||
'''Unknown''': {{MemoryAddress/PC|378}} | |||
* | * Presumed unused. | ||
Ability Flags | '''Ability Flags''': {{MemoryAddress/PC|379}} | ||
<code>- r t - p d s -</code> | |||
* | * <code>s</code> - Swim | ||
* | * <code>d</code> - Run / Dash | ||
* | * <code>p</code> - Pull | ||
* | * <code>t</code> - Talk | ||
* <code>r</code> - Read | |||
* | |||
[[Crystal]]s: {{MemoryAddress/PC|37A}} | '''[[Crystal]]s''': {{MemoryAddress/PC|37A}} | ||
<code>- 3 4 2 7 5 1 6</code> | |||
Magic Consumption | '''Magic Consumption''': {{MemoryAddress/PC|37B}} | ||
* {{MemoryValue|00}}: Normal Consumption | * {{MemoryValue|00}}: Normal Consumption | ||
* {{MemoryValue|01}}: 1/2 Consumption ([[1/2 Magic]]) | * {{MemoryValue|01}}: 1/2 Consumption ([[1/2 Magic]]) | ||
* {{MemoryValue|02}}: 1/4 Consumption ([[1/4 Magic]]) | * {{MemoryValue|02}}: 1/4 Consumption ([[1/4 Magic]]) | ||
Keys earned per dungeon: | '''Keys earned per dungeon''': | ||
* '''Sewer Passage''': {{MemoryAddress/PC|37C}} | * '''Sewer Passage''': {{MemoryAddress/PC|37C}} | ||
* [[Hyrule Castle]]: {{MemoryAddress/PC|37D}} | * [[Hyrule Castle]]: {{MemoryAddress/PC|37D}} | ||
Line 383: | Line 378: | ||
Progress Indicator ''' | '''Progress Indicator''': {{MemoryAddress/PC|3C5}}: (TODO: Check these for rando) | ||
* {{MemoryValue|00}} = Unset, Will put Link in his bed state at the beginning of the game. (Also can't use sword or shield) | * {{MemoryValue|00}} = Unset, Will put Link in his bed state at the beginning of the game. (Also can't use sword or shield) | ||
* {{MemoryValue|01}} = You have a sword and start in the castle on start up. | * {{MemoryValue|01}} = You have a sword and start in the castle on start up. | ||
Line 390: | Line 385: | ||
* {{MemoryValue|04}} and above = meaningless. Though, you could write code using them to expand the event system perhaps. | * {{MemoryValue|04}} and above = meaningless. Though, you could write code using them to expand the event system perhaps. | ||
Progress Flags ''' | '''Progress Flags''': {{MemoryAddress/PC|3C6}} (TODO) | ||
* Progress flags in the vanilla game. Usually set to {{MemoryValue|18}} or {{MemoryValue|20}} in randomizer. | * Progress bit flags in the vanilla game. Usually set to {{MemoryValue|18}} or {{MemoryValue|20}} in randomizer. | ||
Map Icons Indicator 2 ''' | '''Map Icons Indicator 2''': {{MemoryAddress/PC|3C7}} | ||
* Presumed | * Presumed unused in randomizer. | ||
Starting Entrance to use | '''Starting Entrance to use''': {{MemoryAddress/PC|3C8}} | ||
* {{MemoryValue|00}} = Start the game in [[Link's House]] always. | * {{MemoryValue|00}} = Start the game in [[Link's House]] always. | ||
* {{MemoryValue|01}} = [[ | * {{MemoryValue|01}} = Staring location menu or [[Pyramid of Power]] if Aga has been killed and the player has the Mirror. | ||
* {{MemoryValue|02}} = Start in {{Dungeon Location|Hyrule Castle|Zelda's Cell}} | * {{MemoryValue|02}} = Start in {{Dungeon Location|Hyrule Castle|Zelda's Cell}}. | ||
* {{MemoryValue|03}} = [[Secret Passage]] | * {{MemoryValue|03}} = [[Secret Passage]] or [[Hyrule Castle]] front entrance if you've entered the castle. | ||
* {{MemoryValue| | * {{MemoryValue|04}} = Castle Throne Room in [[Standard State|Standard mode]]. Set when you touch the mantle. | ||
* {{MemoryValue|05}} = Start in the Old Man Cave with the Old Man. | |||
Progress Indicator 3 (bitwise) ''' | '''Progress Indicator 3 (bitwise)''': {{MemoryAddress/PC|3C9}}: (TODO) | ||
* {{MemoryValue|00}} = [[Hobo]] gave you his item. | * {{MemoryValue|00}} = [[Hobo]] gave you his item. | ||
* {{MemoryValue|01}} = [[Bottle Merchant]] gave you his item. | * {{MemoryValue|01}} = [[Bottle Merchant]] gave you his item. | ||
Line 421: | Line 411: | ||
* {{MemoryValue|07}} = [[Blacksmith]]s have your sword (unset when sword returned) | * {{MemoryValue|07}} = [[Blacksmith]]s have your sword (unset when sword returned) | ||
Lightworld / Darkworld ''' | '''Lightworld / Darkworld''': {{MemoryAddress/PC|3CA}} | ||
* {{MemoryValue|00}} | * {{MemoryValue|00}} | ||
* {{MemoryValue|01}} | * {{MemoryValue|01}} | ||
Line 431: | Line 421: | ||
* {{MemoryValue|07}} | * {{MemoryValue|07}} | ||
'''Unused''': {{MemoryAddress/PC|3CB}} | |||
* | * Presumed unused. | ||
''' | '''Follower''': {{MemoryAddress/PC|3CC}} (TODO) | ||
* Tagalong Indicator (who is following you, if anyone?) (value based) | * Tagalong Indicator (who is following you, if anyone?) (value based) | ||
Line 461: | Line 451: | ||
* Cached X coordinate of Tagalong after it has been lost by the player. Applies to the old man and to the super bomb, at the very least. This is intended to be used not as a save game variable, but rather as a means of picking the Tagalong back up by getting in contact with it. | * Cached X coordinate of Tagalong after it has been lost by the player. Applies to the old man and to the super bomb, at the very least. This is intended to be used not as a save game variable, but rather as a means of picking the Tagalong back up by getting in contact with it. | ||
''' | '''Unknown''': {{MemoryAddress/PC|3D1}} - {{MemoryAddress/PC|3D2}} | ||
* | * Presumed unused | ||
''' | '''Big Bomb''': {{MemoryAddress/PC|3D3}} | ||
* Set to {{MemoryValue|00}} normally. Set to {{MemoryValue|80}} if a | * Set to {{MemoryValue|00}} normally. Set to {{MemoryValue|80}} if a Big Bomb is going off. | ||
''' | '''Unknown''': {{MemoryAddress/PC|3D4}} to {{MemoryAddress/PC|3D8}} | ||
* | * Presumed unused. | ||
Player's Name (first four characters) | '''Player's Name''' (first four characters): {{MemoryAddress/PC|3D9}} to {{MemoryAddress/PC|3E4}} | ||
* The randomizer base ROM does not use the 2nd and 3rd save files, so the player can use all 12 characters for their name. The first four are here. The remaining characters can be found in two locations: immediately after the following checksum validity value and at {{MemoryValue|500}} - {{MemoryValue|50F}} | * The randomizer base ROM does not use the 2nd and 3rd save files, so the player can use all 12 characters for their name. The first four are here. The remaining characters can be found in two locations: immediately after the following checksum validity value and at {{MemoryValue|500}} - {{MemoryValue|50F}} | ||
* Note each of the six letters is represented by a 16-bit number. | * Note each of the six letters is represented by a 16-bit number. | ||
Validity (Checksum) of the File | ''Validity (Checksum) of the File''': {{MemoryAddress/PC|3E5}} to {{MemoryAddress/PC|3E6}} | ||
''' | |||
* There is a subroutine in the ROM that checks to make sure this word value is {{MemoryValue|55AA}}. If changed, the save file will be deleted when the game boots. | * There is a subroutine in the ROM that checks to make sure this word value is {{MemoryValue|55AA}}. If changed, the save file will be deleted when the game boots. | ||
''' | '''Player's Name''' (characters 6-12) {{MemoryAddress/PC|3E7}} to {{MemoryAddress/PC|3F0}} | ||
* Characters 6-12 of the file name. Note that the above validity value occupies the space where the | * Characters 6-12 of the file name. Note that the above validity value occupies the space where the 5th character would be if the full name were present here. | ||
=== ''' | === '''Game Stats''': {{MemoryAddress/PC|3F1}} to {{MemoryAddress/PC|467}} === | ||
{{MemoryAddress/PC|3F1}} to {{MemoryAddress/PC|402}} | {{MemoryAddress/PC|3F1}} to {{MemoryAddress/PC|402}} |
Revision as of 14:09, 3 April 2020
Overview
This document is intended to be an SRAM reference for the randomizer base ROM. The base ROM expands the SRAM size to 32k and removes the last two save files. Credit to MathOnNapkins, the editors of the vanilla ALttP wiki, and the randomizer ROM developers who have documented nearly all of this information elsewhere.
Notes
- Offsets on this page start from
0x7EF000*
in RAM and at0x00*
in an .sram file.
- When bytes are laid out as individual bits, this represents either individual bit flags within the byte or densely packed integers (i.e., smaller than one byte.)
- Values bigger than one byte are little-endian (e.g. a 16-bit number that is
#$55
#$AA
in a hex editor or debugger is actually#$AA55
.)
SRAM Map
Room Data: 0x000*
to 0x24F*
There are 296 (#$128
) rooms in in the ROM. Each room's data occupies one word, or two bytes.
High Byte | |||||||
---|---|---|---|---|---|---|---|
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
d |
d |
d |
d |
b |
k |
c/k |
c/r
|
Low Byte | |||||||
---|---|---|---|---|---|---|---|
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
c |
c |
c |
c |
q |
q |
q |
q
|
d
- door opened (either unlocked, bombed or other means)b
- boss battle wonk
- key or item (such as a 300 rupee gift)c
- chest, big key chest, or big key lock. Any combination of them totaling to 6 is valid.r
- special rupee tiles, whether they've been obtained or not.q
- quadrants visited:
The quadrant bits corresponds to quadrants 4
, 3
, 2
, and 1
in that order which is also how the quadrants are laid out on a tile from left to right (upper left, upper right, lower left, lower right), so if quadrants 4
and 1
have been "seen" by Link, then qqqq
will look like 1001
.
Unused: 0x250*
to 0x27F*
- Presumed unused in both vanilla and randomizer.
Overworld Event Information: 0x280*
to 0x2FF*
Each area occupies one byte.
? h o ? ? ? s ?
o
- If set, the area will draw its designated overlay when you enter it. e.g. If you're triggered misery mire then the entrance shows up there the next time you enter that area. You can view overlays in the latest release of Hyrule Magic. Other overlays include stairs leading underground, and the removal of the weather vane after it has exploded.s
- If set, the area will draw its secondary overlay when you enter it.h
- If set, heart piece has been collected in this area already. Also used for a handful of other sprites.?
- Unknown, possibly unused.
Shop Purchase Counts: 0x300*
to 0x33F*
The randomizer ROM uses new shop code to handle loading and configuration of shops which allows the higher-level item and entrance randomizers to use clean, convenient abstractions for changing them. The higher-level randomizers can dictate a certain number of times that a shop item can be re-purchased (e.g. you can only buy capacity upgrades seven times.) The bytes here (except for $300 which is currently unknown) are used to count how many times a single item in a shop has been purchased. They are dynamically assigned at generation time, which is to say that any single byte should not be considered statically bound to a certain item in a shop. Take-Any caves as well as the old man with the sword in Retro world state are considered shops in this context.
Note 1: This is noted as a "temporary home" for the shop purchase counts in the base rom's source code
Note 2: Jumping into deep water without flippers and being placed back on land on the Hobo and Zora's Domain maps are known to overwrite 0x302*
and 0x304*
respectively. This has no effect if a shop item can always be repurchased, but will lead to unintended behavior if the item can only be purchased a limited amount of times.
Items & Equipment: 0x340*
to 0x38B*
Address | Item | Values | Notes | ||||
---|---|---|---|---|---|---|---|
0x340*
|
Bow | 0x00* - Nothing
|
0x01* - Bow
|
0x02* - Bow & Arrows
|
0x03* - Silver Arrow Bow
|
0x04* - Bow & Silver Arrows
| |
0x341*
|
Boomerang | 0x00* - Nothing
|
0x01* - Blue
|
0x02* - Red
| |||
0x342*
|
Hookshot | 0x00* - No |
0x01* - Yes
| ||||
0x343*
|
Bombs | How many bombs you have | Can exceed 0x32* , up to 0xFF* .
| ||||
0x344*
|
Magic Powder | 0x00* - Nothing
|
0x01* - Mushroom
|
0x02* - Magic Powder
| |||
0x345*
|
Fire Rod | 0x00* - No |
0x01* - Yes
| ||||
0x346*
|
Ice Rod | 0x00* - No |
0x01* - Yes
| ||||
0x347*
|
Bombos Medallion | 0x00* - No |
0x01* - Yes
| ||||
0x348*
|
Ether Medallion | 0x00* - No |
0x01* - Yes
| ||||
0x349*
|
Quake Medallion | 0x00* - No |
0x01* - Yes
| ||||
0x34A*
|
Lamp | 0x00* - No |
0x01* - Yes
| ||||
0x34B*
|
Magic Hammer | 0x00* - No |
0x01* - Yes
| ||||
0x34C*
|
Flute | 0x00* - Nothing
|
0x01* - Shovel
|
0x02* - Flute
|
0x03* - Flute & Bird
| ||
0x34D*
|
Bug-Catching Net | 0x00* - No |
0x01* - Yes
| ||||
0x34E*
|
Book of Mudora | 0x00* - No |
0x01* - Yes
| ||||
0x34F*
|
Bottle Index | 0x00* - Nothing
|
0x01* - Bottle 1 (0x7EF35C* )
|
0x02* - Bottle 2 (0x7EF35D* )
|
0x03* - Bottle 3 (0x7EF35E* )
|
0x04* - Bottle 4 (0x7EF35F* )
| |
0x350*
|
Cane of Somaria | 0x00* - No |
0x01* - Yes
| ||||
0x351*
|
Cane of Byrna | 0x00* - No |
0x01* - Yes
| ||||
0x352*
|
Magic Cape | 0x00* - No |
0x01* - Yes
| ||||
0x353*
|
Magic Mirror | 0x00* - Nothing
|
0x01* - Magic Scroll
|
0x02* - Magic Mirror
| |||
Gloves | 0x00* - Nothing
|
0x01* - Power Glove
|
0x02* - Titan's Mitt
| ||||
0x355*
|
Pegasus Boots | 0x00* - No |
0x01* - Yes |
See $379. | |||
0x356*
|
Zora's Flippers | 0x00* - No |
0x01* - Yes |
See $379. | |||
0x357*
|
Moon Pearl | 0x00* - No |
0x01* - Yes
| ||||
0x358* |
Presumed Unused | ||||||
0x359*
|
Sword | 0x00* - No Sword
|
0x01* - Fighters' Sword
|
0x02* - Master Sword
|
0x03* - Tempered Sword
|
0x04* - Golden Sword
| |
0x35A*
|
Shield | 0x00* - No Shield
|
0x01* - Fighters' Shield
|
0x02* - Fire Shield
|
0x03* - Mirror Shield
| ||
0x35B*
|
Armor | 0x00* - Green Mail
|
0x01* - Blue Mail
|
0x02* - Red Mail
| |||
0x35C* to 0x35F* |
Bottle Contents | 0x00* - No Bottle
|
0x01* - Mushroom
|
0x02* - Empty Bottle
|
0x03* - Red Potion
|
0x04* - Green Potion
| |
0x05* - Blue Potion
|
0x06* - Fairy
|
0x07* - Bee
|
0x08* - Good Bee
| ||||
0x360* to 0x361* |
Wallet Capacity | ||||||
0x362* to 0x363* |
Rupee Count |
Item | Address | Bit 0 | Bit 1 | Bit 2 | Bit 3 | Bit 4 | Bit 5 | Bit 6 | Bit 7 |
---|---|---|---|---|---|---|---|---|---|
Compass1 | 0x364*
|
Unused | Unused | Ganon's Tower | Turtle Rock | Thieves' Town | Tower of Hera | Ice Palace | Skull Woods |
BigKey1 | 0x366*
| ||||||||
Dungeon Map1 | 0x368*
| ||||||||
Compass2 | 0x365*
|
Misery Mire | Palace of Darkness | Swamp Palace | Hyrule Castle Tower | Desert Palace | Eastern Palace | Hyrule Castle | Sewer Passage |
BigKey2 | 0x367*
| ||||||||
Dungeon Map2 | 0x369*
|
Wishing Pond Rupee: 0x36A*
- Presumed unused
Heart Pieces collected:0x36B*
- Number of heart pieces (out of four) you have earned
Health: 0x36C*
- Health Capacity. Each increment of
0x08*
is worth one heart. 0x04*
is a half heart. The max is generally0xA0*
. The game is coded to not accept health values beyond this.- $36D. Actual Health. Same as above, but this reflects your current health status rather than potential.
Magic Power: 0x36E*
- Magic power ranges from
0x00*
to0x80*
. Each small bottle refills0x10*
. Setting Magic above0x80*
causes the magic meter to glitch and you can't use special items.
Small Keys: 0x36F*
- Number of Keys you have in the dungeon you are currently in. If you're in a non-keyed dungeon it will generally read
0xFF*
.
Bomb Capacity Upgrades: 0x370*
- Number of bombs you can hold above the default value (10).
Arrow Capacity Upgrades: 0x371*
- Number of arrows you can hold above the default value (30)
Hearts Filler: 0x372*
- Write to this location to fill in a set number of hearts. Make sure to write in a multiple of
0x08*
Otherwise, you will end up filling the whole life meter.
Magic Filler: 0x373*
- Write to this location how much magic power you want filled up. The maximum effective value is
0x80*
.
Pendants: 0x374*
- - - - - g b r
r
- Red Pendantb
- Blue Pendantg
- Green Pendant
Bomb filler: 0x375*
- Number of bombs to be "filled" or added to the current bomb count. It will not exceed your maximum, defined at
0x370*
.
Arrow filler: 0x376*
- Number of arrows to be "filled" or added to the current arrow count. It will not exceed your maximum, defined at MemoryAddress/PC|371}}.
Arrows: 0x377*
Unknown: 0x378*
- Presumed unused.
Ability Flags: 0x379*
- r t - p d s -
s
- Swimd
- Run / Dashp
- Pullt
- Talkr
- Read
Crystals: 0x37A*
- 3 4 2 7 5 1 6
Magic Consumption: 0x37B*
Keys earned per dungeon:
- Sewer Passage:
0x37C*
- Hyrule Castle:
0x37D*
- Note: The Sewers and Hyrule Castle addresses will generally hold the same value and increment/decrement together in randomizer.
- Eastern Palace:
0x37E*
- Desert Palace:
0x37F*
- Hyrule Castle Tower:
0x380*
- Swamp Palace:
0x381*
- Palace of Darkness:
0x382*
- Misery Mire:
0x383*
} - Skull Woods:
0x384*
- Ice Palace:
0x385*
- Tower of Hera:
0x386*
- Thieves' Town:
0x387*
- Turtle Rock:
0x388*
- Ganon's Tower:
0x389*
- Unused:
0x38A*
- Unused:
0x38B*
Inventory Item Tracking: 0x38C*
b r m p n s k f
b
- Blue Boomerang
r
- Red Boomerang
m
- Mushroom Current
p
- Magic Powder
n
- Mushroom Past (turned in to the Witch)
s
- Shovel
k
- Inactive Flute
f
- Active Flute
Inventory Bow Tracking: 0x38E*
b s p - - - - -
b
- Bow
s
- Silver Arrow Bow
p
- Second Progressive Bow
- There are two Progressive Bow items in the game. The
p
bit represents whether the player has collected the "second" Progressive Bow independent of the "first." It does not indicate whether the player has silver arrows or not.
Progress Indicator: 0x3C5*
: (TODO: Check these for rando)
0x00*
= Unset, Will put Link in his bed state at the beginning of the game. (Also can't use sword or shield)0x01*
= You have a sword and start in the castle on start up.0x02*
= Indicates you have completed Hyrule Castle Escape.0x03*
= Indicates you have beaten Agahnim in Hyrule Castle Tower and are now searching for crystals.0x04*
and above = meaningless. Though, you could write code using them to expand the event system perhaps.
Progress Flags: 0x3C6*
(TODO)
- Progress bit flags in the vanilla game. Usually set to
0x18*
or0x20*
in randomizer.
Map Icons Indicator 2: 0x3C7*
- Presumed unused in randomizer.
Starting Entrance to use: 0x3C8*
0x00*
= Start the game in Link's House always.0x01*
= Staring location menu or Pyramid of Power if Aga has been killed and the player has the Mirror.0x02*
= Start in Zelda's Cell.0x03*
= Secret Passage or Hyrule Castle front entrance if you've entered the castle.0x04*
= Castle Throne Room in Standard mode. Set when you touch the mantle.0x05*
= Start in the Old Man Cave with the Old Man.
Progress Indicator 3 (bitwise): 0x3C9*
: (TODO)
0x00*
= Hobo gave you his item.0x01*
= Bottle Merchant gave you his item.0x02*
=0x03*
= Stumpy (DW) has been arborated0x04*
= Purple Chest has been opened0x05*
= Blacksmith's partner saved0x06*
0x07*
= Blacksmiths have your sword (unset when sword returned)
Lightworld / Darkworld: 0x3CA*
0x00*
0x01*
0x02*
0x03*
0x04*
0x05*
0x06*
= In Dark World, unset is in Light World0x07*
Unused: 0x3CB*
- Presumed unused.
Follower: 0x3CC*
(TODO)
- Tagalong Indicator (who is following you, if anyone?) (value based)
Note: Don't use a value of 0x0F*
or larger here, as it will likely crash the game.
0x00*
= Tagalong disabled0x01*
= Princess Zelda0x02*
= ???0x03*
= ???0x04*
= Old Man?0x05*
= Zelda (invisible) bitching at you about coming to rescue her.0x06*
= Blind Maiden0x07*
= Blacksmith Frog (smithyfrog as I call him) in DW0x08*
= Blacksmith Dwarf in LW0x09*
= Middle Aged Guy w/ Sign0x0A*
= Kiki0x0B*
= ???0x0C*
= Purple Chest0x0D*
= Super Bomb0x0E*
= Activated in reaction to acquiring the Master Sword. Used to trigger a telepathic message from Zelda indicating that Agahnim's goons have come for her at Sanctuary.
$03CD[0x02] -
- Cached Y coordinate of Tagalong after it has been lost by the player. Applies to the old man and to the super bomb, at the very least. This is intended to be used not as a save game variable, but rather as a means of picking the Tagalong back up by getting in contact with it.
$03CF[0x02] -
- Cached X coordinate of Tagalong after it has been lost by the player. Applies to the old man and to the super bomb, at the very least. This is intended to be used not as a save game variable, but rather as a means of picking the Tagalong back up by getting in contact with it.
Unknown: 0x3D1*
- 0x3D2*
- Presumed unused
Big Bomb: 0x3D3*
- Set to
0x00*
normally. Set to0x80*
if a Big Bomb is going off.
Unknown: 0x3D4*
to 0x3D8*
- Presumed unused.
Player's Name (first four characters): 0x3D9*
to 0x3E4*
- The randomizer base ROM does not use the 2nd and 3rd save files, so the player can use all 12 characters for their name. The first four are here. The remaining characters can be found in two locations: immediately after the following checksum validity value and at
0x500*
-0x50F*
- Note each of the six letters is represented by a 16-bit number.
Validity (Checksum) of the File': 0x3E5*
to 0x3E6*
- There is a subroutine in the ROM that checks to make sure this word value is
0x55AA*
. If changed, the save file will be deleted when the game boots.
Player's Name (characters 6-12) 0x3E7*
to 0x3F0*
- Characters 6-12 of the file name. Note that the above validity value occupies the space where the 5th character would be if the full name were present here.
Game Stats: 0x3F1*
to 0x467*
0x3F1*
to 0x402*
- Presumed unused
Life/Save Counter: 0x403*
to 0x404*
- Counts the number of times your saved or died in the game before you beat it.
Post-Game Death Counter: 0x405*
to 0x406*
- When you start the game this is written to with the value -1 (
0xFFFF*
). On the game select screen, it will only display a number if this is not0xFFFF*
. The max displayable number is 999.
When you beat the game, the number of times you died gets recorded here.
Bonk Counter: 0x420*
- Counts a maximum of 99 bonks
A/Y Items: 0x421*
y y y y y a a a
y
- Y item count represented as five bit integer. There are a total of 27 Y items.
a
- A item count represented as a three bit integer. Five in total.
Swords & Shields: 0x422*
w w w h h - - -
- Number of swords and shields collected represented as three and two bit integers respectively.
w
- Swords
h
- Shields
Total Items Collected: 0x423*
Mails & Small Keys: 0x424*
m m k k k k k k
- Number of mails and small keys collected represented as two and six bit integers respectively.
m
- Mails
k
- Small Keys
Tempered & Gold Sword Boss Kills: 0x425*
t t t t g g g g
Fighter & Master Sword Boss Kills: 0x426*
f f f f m m m m
- Number of bosses killed with each sword represented as four byte integers.
t
- Tempered Sword
g
- Gold Sword
f
- Fighter Sword
m
- Master Sword
Big Keys & Big Chests: 0x427*
k k k k c c c c
- Number of big keys collected and big chests opened represented as four bit integers.
k
- Big Keys
c
- Big Chests
Maps & Compasses: 0x428*
m m m m c c c c
- Number of maps and compasses collected represented as four bit integers.
m
- Maps
c
- Compasses
Heart Pieces & Pendants: 0x429*
h h h h - - p p
- Number of heart pieces and pendants collected represented as four and two bit integers respectively.
h
- Heart Pieces
c
- Pendants
Ganon's Tower Big Key: 0x42A*
- - - l l l l l
- Locations checked in Ganon's Tower up to and including the Big Key represented as a five bit integer.
Rupees Spent: 0x42B*
- 0x42C*
- Number of rupees spent in game.
Save and Quits: 0x42D*
- Number of times the player has saved and quit.
Loop Time: 0x42E*
- 0x431*
- Total loop time (?) measured in frames.
- Used in calculating the lag time.
Locations Pre-Boots: 0x432*
- Number of locations checked before the Pegasus Boots are found.
Locations Pre-Mirror: 0x433*
- Number of locations checked before the Magic Mirror is found.
Hyrule Castle & Palace of Darkness: 0x434*
h h h h p p p p
- Locations checked in Hyrule Castle and Palace of Darkness represented as four bit integers.
h
- Hyrule Castle
p
- Palace of Darkness
Desert Palace, Tower of Hera, and Agahnim's Tower: 0x435*
d d h h a a a a
- Locations checked in Desert Palace, Tower of Hera, and Agahnim's Tower represented as two, two, and four bit integers respectively.
d
- Desert Palace
h
- Tower of Hera
a
- Agahnim's Tower
Ganon's Tower & Eastern Palace: 0x436*
g g g g g e e e
- Locations checked in Ganon's Tower and Eastern Palace represented as five and three bit integers respectively.
g
- Ganon's Tower
e
- Eastern Palace
Skull Woods & Thieves' Town: 0x437*
s s s s t t t t
- Locations checked in Skull Woods & Thieves' Town represented as four bit intgers.
s
- Skull Woods
t
- Thieves' Town
Ice Palace & Misery Mire: 0x438*
i i i i m m m m
- Locations checked in Ice Palace and Misery Mire represented as four bit intgers.
i
- Ice Palace
m
- Misery Mire
Turtle Rock & Swamp Palace: 0x439*
t t t t s s s s
- Locations checked in Turtle Rock and Swamp Palace represented as four bit intgers.
t
- Turtle Rock
s
- Swamp Palace
Overworld Mirrors: 0x43A*
- Number of times the Magic Mirror is used on the overworld.
Underworld Mirrors: 0x43B*
- Number of times the Magic Mirror is used in dungeons.
Screen Transitions: 0x43C*
- 0x43D*
- Number of screen transitions.
Total Time: 0x43E*
- 0x441*
- Total amount of time played measured in frames.
Chests Opened: 0x442*
- Number of chests opened. Does not count NPC and free standing items.
Menu Time: 0x444*
- 0x447*
- Total amount of time spent in the item menu measured in frames.
Heart Pieces: 0x448*
- Total number of Heart Pieces collected.
Deaths: 0x449*
- Total deaths.
Times Flutes: 0x44B*
- Number of times the active Flute was used.
Swordless Bosses & Capacity Upgrades: 0x452*
b b b b c c c c
- Number of bosses defeated without a sword and number of capacity upgrades purchased represented as four bit integers.
b
- Bosses killed without a sword
c
- Capacity upgrades purchased
Faerie Revivals: 0x453*
- Number of times the player has been revived by a faerie.
First Sword Found: 0x458*
- 0x45B*
- Time when the player collected their first sword, measured in frames.
Boots Found: 0x45C*
- 0x45F*
- Time when the player collected the Pegasus Boots, measured in frames.
Flute Found: 0x460*
- 0x463*
- Time when the player collected the Flute, measured in frames.
Mirror Found: 0x464*
- 0x467*
- Time when the player collected the Magic Mirror, measured in frames.
0x468*
- 0x4FD*
- Unknown, presumed unused except for a rando-specific file marker at
0x4F0*
, which will always be0xFF*
on an active save file.
Checksum
Inverse Checksum: 0x4FE*
to 0x4FF*
The SRAM save loading routine relies upon an "inverse" checksum. Changes to any byte in the SRAM between 0x00*
and 0x4FE*
must be added or subtracted to this checksum or the save file will be deleted. The checksum can be computed by adding every word between the beginning of the file and 0x4FE*
and subtracting the sum from 0x5A5A*
, using overflowing arithmetic for both operations.
Appendices
Appendix 1: Character Codes
TODO: These character values are very different in JP1.0
Alpha-numeric
00 = A 01 = B 02 = C 03 = D 04 = E 05 = F 06 = G 07 = H 08 = I^ 09 = J 0A = K 0B = L 0C = M 0D = N OE = O OF = P 10 = ?? 20 = Q 21 = R 22 = S 23 = T 24 = U 25 = V 26 = W 27 = X 28 = Y 29 = Z |
2A = a 2B = b 2C = c 2D = d 2E = e 2F = f 40 = g 41 = h 42 = k 43 = j 44 = i 45 = l 46 = m 47 = n 48 = o 49 = p 4A = q 4B = r 4C = s 4D = t 4E = u 4F = v 60 = w 61 = x 62 = y 63 = z |
64 = 0 65 = 1 66 = 2 67 = 3 68 = 4 69 = 5 6A = 6 6B = 7 6C = 8 6D = 9 6E = "?" 6F = "!" 80 = " = " 81 = "." 82 = "," 85 = "(" 86 = ")" |
Special characters (not normally accessible. This is by far an incomplete listing)
0xA0*
|
small right Arrow |
0xA1*
|
"'" (apostrophe) |
0xA2*
|
HPiece Again |
0xA3*
|
"empty right hand heart cont." |
0xA4*
|
see |
0xA7*
| |
0xA5*
|
Same As |
0xA7*
| |
0xA6*
|
"Quarter Heart piece, top right corner." |
0xA7*
|
"Heart piece,left half" |
0xA8*
|
"Heart piece, right half" |
0xA9*
|
blank |
0xAA*
|
"left Arrow" |
Appendix 2: SNES Button Alphabet
0xAB*
|
A |
0xAC*
|
B |
0xAD*
|
X |
0xAE*
|
Y |
0xAF*
|
I |
0xB1*
|
blank^ |
^This code is not the canon encoding of this character. ex. 0xAF*
is the proper "I". 0x08*
is not.