RAM: Bank 0x7E: Pages 0x08, 0x09 and 0x0A

From TLoZ: ALTTP Hacking Resources
Revision as of 23:29, 20 December 2016 by Superskuj (talk | contribs) (Superskuj moved page Rom/Pages 0x08, 0x09 and 0x0A to RAM: Bank 0x7E: Pages 0x08, 0x09 and 0x0A)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

OAM Basic 512 byte table:

  • $0800[0x200] = OAM data. This is blitted to VRAM every frame via DMA.

How OAM works: 568Byte1: X coordinate on screen in pixels. This is the lower 8 bits. See Extended OAM table below Byte2: Y coordinate on screen in pixels. Byte3: Character number to use. This is the lower 8 bits. See Byte 4 Byte4: vhoopppc (source: Qwertie's guide) v - vertical flip h - horizontal flip p - priority bits c - the 9th (and most significant) bit of the character number for this sprite. Extended OAM 32 byte table:

  • $0A00[0x20] = Each byte contains information for 4 sprites (in the same order as the normal OAM table. For each

sprite: bit0 : size toggle bit. (this can mean 8x8 or 16x16, or 8x8 or 32x32, etc. bit1 : 9th (and most significant) bit of the X coordinate.

  • $0A20[0x80] = Apparently contains bits of data to combine and write to $0A00 to $0A1F later. Thus the individual

properties are stored in this array, and ORed in later to form the data that will get blitted to VRAM. Apparently Palette Related, but details lacking:

  • ${{{1}}}[0x01] = Set to zero when an event is initialized, and will be set to 1 the next time a change of overworld

area occurs. This is used to trigger the magic powder showing up in the Witch's hut, as well as the finishing of your sword being tempered. Also used to make sure you didn't cheat during the heart piece maze game in Kakkariko. DMA Variables: To see these in action, look up routine $9E0 in the banks files. These are all Word values.

  • $0AC0[0x02] = ROM Address for certain DMA transfers from Bank $7E.

The value stored here is grabbed from a table indexed by address $0107.

  • $0AC2[0x02] = Also a ROM Address for DMA transfers, usually is 0x180 higher than $0AC0
  • $0AC4[0x02] = ROM Address for certain DMA transfers from Bank $7E.

The value stored here is grabbed from a table indexed by address $0108.

  • $0AC6[0x02] = Also a ROM Address for DMA transfers, usually is 0xC0 higher than $0AC4
  • $0AC8[0x02] = ROM Address for certain DMA transfers from Bank $7E.

The value stored here is grabbed from a table indexed by address $0109.

  • $0ACA[0x02] = Also a ROM Address for DMA transfers, is a fixed distance from $0AC8 which is also

determined using a table indexed by $0109.

  • $0ACC[0x02] = ROM Address for certain DMA transfers from Bank $10.

The value stored here is grabbed from a table indexed by address $0100

  • $0ACE[0x02] = Also a ROM Address for DMA transfers, usually is 0x200 higher than $0ACC
  • $0AD0[0x02] = ROM Address for certain DMA transfers from Bank $10.

The value stored here is grabbed from a table indexed by address $0100

  • $0AD2[0x02] = Also a ROM Address for DMA transfers, usually is 0x200 higher than $0AD0
  • $0AD4[0x02] = ROM Address for certain DMA transfers from Bank $10.

The value stored here is grabbed from a table indexed by address $0102

  • $0AD6[0x02] = ROM Address for certain DMA transfers from Bank $10.

The value stored here is grabbed from a table indexed by address $0104

  • $0AD8[0x02] = ROM Address for certain DMA transfers from Bank $7E.

The value stored here is grabbed from a table indexed by address $02C3

  • $0ADA[0x02] = Also a ROM Address for DMA transfers, usually is 0x100 higher than $0AD0
  • $0ADC[0x01] = ROM Address for certain DMA transfers from Bank $7E.

The value stored here is determined like this: the value at $7EC00F + the fixed value 0xA680.

  • $0ADE[0x02] = free ram
  • $0AE0[0x02] = ROM Address for certain DMA transfers from Bank $7E.

The value stored here is determined like this: the value in the table at $0085DE indexed by $7EC015 + the fixed value 0xB280.

  • $0AE2[0x02] = Also a ROM Address for DMA transfers, usually is 0x100 higher than $0AE0
  • $0AE4[0x04] = free ram
  • $0AE8[0x02] = Used as an offset for $0AEC.

571$0AEA}}[0x02] = Used as an offset for $0AF0

  • $0AEC[0x02] = ROM Address for certain DMA transfers from Bank $7E.

The value stored is determined like this: the value at $0AE8 + the fixed value 0xB940

  • $0AEE[0x02] = Also a ROM Address for DMA transfers, usually is 0x200 higher than $0AEC
  • $0AF0[0x02] = ROM Address for certain DMA transfers from Bank $7E.

The value stored is determined like this: the value at $0AEA + the fixed value 0xB940

  • $0AF2[0x02] = Also a ROM Address for DMA transfers, usually is 0x200 higher than $0AF0
  • $0AF4[0x02] = Used as an offset for $0AF0
  • $0AF6[0x02] = ROM Address for certain DMA transfers from Bank $7E.

The value stored is determined like this: the value at $0AF4 + the fixed value 0xB540

  • $0AF8[0x02] = Also a ROM Address for DMA transfers, usually is 0x200 higher than $0AF6
  • $0AFA[0x06] = free ram