RAM: Bank 0x7E: Page 0x00
This is a subpage of ROM
Note that these addresses are only one byte and you can assume that they are $7E00XX where XX are the byte addresses you see below.
- $00[0x10] = Mainly used as work registers. Storage of addresses and values.
- $10[0x01] = Main Module index
- $11[0x01] = Submodule Index (See $B0)
- $12[0x01] = NMI Boolean.
- If set to zero, the game will wait at a certain loop until NMI executes. The NMI interrupt generally sets
it to one after it's done so that the game can continue doing things other than updating the screen.
- $13[0x01] = Screen settings
- $14[{{0x|01] = Graphics Flag
- Value based flag, that if nonzero, causes the tile map to update
- $15[{{0x|01] = Graphics Flag
- update CGRAM (0x200 bytes)
- $16[{{0x|01] = Graphics Flag
- update HUD portion of BG3 tile map from $7EC700 (0x14A bytes)
- $17[{{0x|01] = Graphics Flag
- $18[0x{{{1}}}[0x01] = set to 0x80 during preoverworld
- $45[0x01] = "
- $46[0x01] = A countdown timer that incapacitates Link when damaged or in recoil state.
If nonzero, no movement input is recorded for Link.
- $47[0x01] = Set when damaging enemies, unsure of exact usage yet.
- $48[0x01] = If set, when you push A Link will grab at the air.
- $49[0x01] = This address is written to make Link move in any given direction. Indoors it is cleared every frame.
Outdoors it is not cleared every frame so watch out.
- $4B[0x01] = Link's visibility status. If set to 0xC, Link will disappear.
- $4C[0x01] = Counter that decreases every frame when the Cape is in used. Starts at 4 and counts down to 0.
When it reaches 0, your magic meter is decremented based on whether you have full or 1/2 magic. There's a table in Bank 07 that determines this
- $4D[0x01] = An Auxiliary Link handler.
As far as I know:
- 0x00 - ground state (normal)
- 0x01 - the recoil status
- 0x02 - jumping in and out of water?
- 0x04 - swimming state.
- $4E[0x01] = ????
- $4F[0x01] = Index for creating the dashing sound effect. If frozen to a single value, no sound occurs.
- $50[0x01] = A flag indicating whether a change of the direction Link is facing is possible.For example, when the B button is held down with a sword.
- 0 - can change,
- on zero - can't change.
- $51[0x01] = ????
- $53[0x01] = ????
- $55[0x01] = Cape flag, when set, makes you invisible and invincible. You can also go through objects such as bungies.
- $56[0x01] = Link's graphic status:
- 1 = bunny link,
- 0 = real link.
- $57[0x01] = Modifier for Link's movement speed.
- 0x00 to 0x-- = normal
- 0x01 to 0x0F = slow
- 0x10 to 0xFF = fast
Negative values actually reverse your direction!
- $58[0x01] = Bitfield describing interactions with stairs tiles. uuuussss
- s - Stair tiles
- u - free ram
If this masked with 0x07 equals 0x07, Link moves slowly, like he's on a small staircase
- ${{{1}}}[{{0x|01] would have.
- $6E[0x01] = (archiving but not sure if this is correct) Related to certain tile behaviours (see tile type 2 I think) nearby
- moving against a \ wall from below: 0
- moving against a \ wall from above: 2
- moving against a / wall from below: 4
- moving against a / wall from above: 6
- $6F[0x03] = As of now, I consider this to be free ram
- $72[0x01] = ????
- $73[0x01] = has value 0x02 when master sword beam is active...
- $74[0x02] = ??? Related to moving water?
- $76[0x02] = When link interacts with certain tile types, the index of that tile gets stored here.
- $78[0x01] = possibly used in the context of chests.
- $79[0x01] = Controls whether to do a spin attack or not (Found by PARCCC from gshi)
- ${{{1}}}[0x01] = free ram?
- $A0[0x02] = The index used for loading a dungeon room. There are 296 rooms all in all. (mirrored in other variables).
- $A2[0x02] = Points to the previous dungeon room.
- $A4[0x02] = Indicates the current floor Link is on in a dungeon.
- $A6[0x01] = Set to 0 or 2, but it depends upon the dungeon room's layout and the quadrant it was entered from.
- $A7[0x01] = ""
- $A8[0x01] = Composite of dungeon room layout info and quadrant info that gets updated periodically 000cccba
- ccc - layout that the room uses (0 to 7 obviously)
- b - ORed in value of $AA
- a - ORed in value of $A9
- $A9[0x01] = 0 if you are on the left half of the room.
- 1 if you are on the right half.
- $AA[0x01] = 2 if you are the lower half of the room.
- 0 if you are on the upper half.
- $AB[0x02] = free ram?
- $AD[0x01] = ??? collision?
- $AE[0x01] = In dungeons, holds the Tag1 Value. (see Hyrule Magic)
- $AF[0x01] = In dungeons, holds the Tag2 Value. (see Hyrule Magic)
- $B0[0x01] = Sub-submodule index. (Submodules of the $11 submodule index.)
- $B1[0x01] = free ram?
- $B2[0x02] = Width indicator for drawing dungeon objects
- $B4[0x02] = Height indicator for drawing dungeon objects
- $B7[0x03] = Used as storage during dungeon loading for a 3-bit pointer to be indirectly accessed.
- $BA[0x02] = Often used as a position into a buffer of data during dungeon loading.
- $BD[0x0?] = ??? height for initializing sprites?
Address recorded during tile interactions? (Bank 07)
- $BF[0x??] = Used during the dungeon
- $C8[0x01] = (in menus) keeps track of what part of a menu you are in.
For example, 0 - 4 on the select game screen, 0 - 2 for each save game, 3 & 4 are copy and erase game. 541(in ending module) 16 bit timer used for stepping through each ending sequence.
- $E0[0x02] = BG1 horizontal scroll register ($210F)
- $E2[0x02] = BG2 horizontal scroll register ($210D)
- $E4[0x02] = BG3 Horizontal Scroll Register ($2111)
- $E6[0x02] = BG1 Vertical scroll register ($2110)
- $E8[0x02] = BG2 Vertical scroll register ($210E)
- $EA[0x02] = BG3 Vertical Scroll Register ($2112)
- $EC[0x02] = Tilemap location calculation mask. Is only ever set to 0xFFF8 or 0x01F8
- $EE[0x01] = In dungeons, 0 Means you’re on the upper level.
1 Means you’re on a lower level. Important for interaction with different tile types.
- $EF[0x01] = Room Transitioning Value (bitwise)
bit 0 - Toggles between BG0 and BG1. One example: Sanctuary and Hyrule Castle. (see door type up-11) bit 1 - Transition between Sewer and Hyrule Castle. Xors the dungeon index by 0x02.
- $F0[0x01] = Unfiltered Joypad 1 Register: Same as $F4, except it preserves buttons that were being
pressed in the previous frame.
- $F1[0x01] = Unfiltered Joypad 2 Register: Same as $F5, except it preserves buttons that were being
pressed in the previous frame. Note: Input from joypad 2 is not read unless you do some ASM hacking.
- $F2[0x01] = Unfiltered Joypad 1 Register: Same as $F6, except it preserves buttons that were being
pressed in the previous frame.
- $F3[0x01] = Unfiltered Joypad 2 Register: Same as $F7, except it preserves buttons that were being
pressed in the previous frame. Note: Input from joypad 2 is not read unless you do some asm hacking
- $F4[0x01] = Filtered Joypad 1 Register: [BYST | udlr].
Lower case represents the cardinal directions, T = start. S = select.
- $F5[0x01] = Filtered Joypad 2 Register: [BYST | udlr].
Lower case represents the cardinal directions, T = start. S = select. Note: Input from joypad 2 is not read unless you do some asm hacking
- $F6[0x01] = Filtered Joypad Register [AXLR | ????]
LR: The shoulder buttons. ? = unknown inputs
- $F7[0x01] = Filtered Joypad Register [AXLR | ????]
LR: The shoulder buttons. ? = unknown inputs. Note: input from joypad 2 is not read unless you do some asm hacking.
- $F8[0x01] = ???
- $FC[0x02] = .... Overrides for dungeon room transitions? (Seen used with big bombable walls)
- $FF[0x01] = Vertical IRQ Trigger (this is the vertical scanline that will trigger the IRQ)
Table of Contents |
---|