Difference between revisions of "RAM: Bank 0x7E: Page 0x00"

From TLoZ: ALTTP Hacking Resources
Jump to: navigation, search
(Created page with "{{subpage|ROM}} Note that these addresses are only one byte and you can assume that they are {{$|7E00XX}} where {{hex|XX}} are the byte addresses you see below. * {{$|00}}[{...")
 
Line 1: Line 1:
{{subpage|ROM}}
+
{{subpage|RAM}}
  
 
Note that these addresses are only one byte and you can assume that they are {{$|7E00XX}} where {{hex|XX}} are the byte addresses you see below.
 
Note that these addresses are only one byte and you can assume that they are {{$|7E00XX}} where {{hex|XX}} are the byte addresses you see below.

Revision as of 09:14, 20 December 2016

This is a subpage of RAM

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)

Navigate

Table of Contents
SpritesDungeonsOverworldUnderworldSRAM MapRAM MapROM MapMusicMonologueCreditsDumpsMiscellaneousTo-Do/Suggestions