RAM: Bank 0x7E: Pages 0x0D, 0x0E and 0x0F

From TLoZ: ALTTP Hacking Resources
Jump to: navigation, search
  • $0D00[{{0x|10]
  • $0D10[{{0x|10]
  • $0D20[0x{{{1}}}[0x10] = Auxiliary delay timer 4 (may be more proprietary than the others)
  • $0F20[0x10] = Floor selector. Tells us which floor each sprite is on (in multilevel rooms)
  • $0F30[0x10] = Seen in some code as a flip flop that gets multiplied by -1 (XOR 0xFF then adding 1)
  • $0F40[0x10] = Same as $0F30
  • $0F50[0x10] = Controls palette, tile flipping, and apparently tile set?
  • $0F60[0x10] = bits 7-5: ????

bits 0-4: hit box settings (uses a table to load offsets and form a hit box)

  • $0F70[0x10] = Height value (how far the enemy is from its shadow)
  • $0F80[0x10] = Auxiliary Timer 4
  • $0F90[0x10] = ???
  • $0FA0[0x01] = When a special effect is executing, its index is stored here (0 to 0x0D)

Also applies to sprites and perhaps other similar types of objects. Would require more research to verify.

  • $0FA1[0x01] = Accumulator for generating random numbers. Each time a ranom number is generated,

the current low byte of the h count (ppu) plus the frame index ($1a) is added to this variable and then stored back to this variable. The resultant value of this variable is the random number that ultimately gets returned.

  • $0FA2[0x03] = free ram
  • $0FA5[0x01] = Tile type for sprite/tile interactions (used on a temporary basis for special effects)
  • $0FA6[0x02] = free ram
  • $0FA8[0x01] = Screen relative X coordinate of a sprite (only lowest 8 bits)
  • $0FA9[0x01] = Screen relative Y coordinate of a sprite (only lowest 8 bits)
  • ${{{1}}}[0x01] = ????
  • $0FB5[0x01] = used in constructing special designation $0E30[]. Two most significant bits of the value.

also used in calculating sprite damage. $0DD0[] is stored here on a temporary basis.

  • $0FB6[0x01] = used in construction of special designation $0E30[]. Three least significant bits of the value.
  • $0FB8[0x02] = ????
  • $0FBA[0x02] = ????
  • $0FBF[0x01] = Holds base upper byte of current overworld area's coordinates
  • $0FC1[0x01] = Set to one during Desert Palace / Book of Mudora sequence. Maybe has uses in other sequences

Seems to freeze sprites. Could have uses in making a scripting system.

  • $0FC2[0x02] = Link's X-Coordinate (See $22)
  • $0FC4[0x02] = Link's Y-Coordinate (See $20)
  • $0FC6[0x01] = Only time this ever gets written with a nontrivial value is from $0AAA, which is also a

poorly understood variable.

  • $0FC7[0x01] = ?????
  • $0FCD[0x01] = Alert flag that activates "searching" enemies like soldiers. usually in response to a sound effect.
  • $0FCE[{{0x|??] -
  • $0FD7[0x01] = The code that writes and reads this variable is not enabled. For this reason it is considered

a debug or "cheat" variable. When the value is odd, the game is frozen. The sprites that are on screen will stay on screen.

  • $0FD8[{{0x|02] -
  • $0FDA[{{0x|02] -
  • $0FDC[{{0x|01] -
  • $0FDD[{{0x|01] -

Cached 16-bit version of Link's X coordinate used in sprite logic calculations. Cached 16-bit version of Link's Y coordinate used in sprite logic calculations. 0 or 3, when 3 counts down to zero. This is nonzero when a projectile hits a wall. ????

  • $0FE0[0x0C] = current position in each of the 6 different reserved areas of the OAM table
  • {{$|0FE2 - occurs specifically in module 1A.
  • $0FEC[{{0x|0C] -
  • ${{{1}}}[0x02] = ????
  • $0FFF[0x01] = Indicates whether you are in the light world or dark world (0,1 respectively)