ff3:ff3us:doc:asm:ram:field_ram

Field RAM

This is a list of the RAM locations used by the field program (i.e. the main program that controls all non-world maps). The majority of the code that uses this data is in bank C0.

   +$00 Always #$0000
   +$02 Always #$FFFF
   +$04 Buttons Pressed this Frame (unmapped)
   +$06 Buttons Pressed this Frame (mapped based on button config)
   +$08 Buttons Pressed this Frame but not Last Frame
   +$0A Buttons in Repeat Mode
   +$0C Buttons Pressed Last Frame
        axlr----
        a: A button down
        x: X button down
        l: L button down
        r: R button down
        byetudlr
        b: B button down
        y: Y button down
        e: Select button down
        t: Start button down
        u: Up direction down
        d: Down direction down
        l: Left direction down
        r: Right direction down
$0E-$3F Scratchpad RAM
$40-$44 -
    $45 Frame Counter (gets incremented every NMI, never gets cleared)
    $46 VBlank Counter (gets incremented every NMI, can be cleared for frame counting)
    $47 Event Counter (gets incremented every VBlank, never gets cleared)
  + $48 Pointer to Current Location in Object Animation Queue (+$10F7)
    $4A i--fffff
        i: Fade In/Out Toggle (0 = fading out, 1 = fading in)
        f: Fade Speed
    $4B iccccccc
        i: Fixed Color In/Out Toggle (0 = fading out, 1 = fading in)
        c: Fixed Color Speed
    $4C Current Screen Brightness (upper 4 bits active)
    $4D Current Screen Fixed Color Intensity (upper 5 bits active, goes to $2132)
    $4E shbo4321 Current Color Add/Sub Designation (goes to $2131)
        s: enable color subtraction
        h: enable half color add/sub
        b: affect backdrop
        o: affect objects
        4: affect bg4
        3: affect bg3
        2: affect bg2
        1: affect bg1
    $4F Saved Color Add/Sub Designation (goes to $4E after color saturation is complete)
    $50 ccmm--sd Color Addition Select (goes to $2130, always #$22)
        c: Clip colors to black before math (00 = Never, 01 = Outside Color Window only, 10 = Inside Color Window only, 11 = Always)
        m: Prevent color math (00 = Never, 01 = Outside Color Window only, 10 = Inside Color Window only, 11 = Always)
        s: Add subscreen (instead of fixed color)
        d: Direct color mode for 256-color BGs
    $51 ---o4321 Main Screen Designation (goes to $212C)
        o: objects enabled in subscreen
        4: bg4 enabled
        3: bg3 enabled
        2: bg2 enabled
        1: bg1 enabled (always set for main screen)
    $52 ---o4321 Current Sub Screen Designation (goes to $212D)
    $53 Saved Sub Screen Designation (goes to $52 after color saturation is complete)
    $54 bgriiiii Fixed Color Add/Sub Data
        b: affect blue
        g: affect green
        r: affect red
        t: target color intensity (5 bits, low 2 bits always set)
    $55 VBlank Disable (gets set every VBlank)
    $56 Battle Enable
    $57 Random Battles Enabled
    $58 Re-load the same map
    $59 Open Menu
    $5A -----321
        3: bg3 map needs to be flipped
        2: bg2 map needs to be flipped
        1: bg1 map needs to be flipped
+++ $5B tttttttt ttttpppp xxxxxxxx
        t: BG1 Horizontal Scroll Position (in tiles)
        p: BG1 Horizontal Scroll Position (in pixels)
        x: BG1 Horizontal Scroll Position (in pixels/256)
+++ $5F tttttttt ttttpppp xxxxxxxx
        t: BG1 Vertical Scroll Position (in tiles)
        p: BG1 Vertical Scroll Position (in pixels)
        x: BG1 Vertical Scroll Position (in pixels/256)
+++ $63 tttttttt ttttpppp xxxxxxxx
        t: BG2 Horizontal Scroll Position (in tiles)
        p: BG2 Horizontal Scroll Position (in pixels)
        x: BG2 Horizontal Scroll Position (in pixels/256)
+++ $67 tttttttt ttttpppp xxxxxxxx
        t: BG2 Vertical Scroll Position (in tiles)
        p: BG2 Vertical Scroll Position (in pixels)
        x: BG2 Vertical Scroll Position (in pixels/256)
+++ $6B tttttttt ttttpppp xxxxxxxx
        t: BG3 Horizontal Scroll Position (in tiles)
        p: BG3 Horizontal Scroll Position (in pixels)
        x: BG3 Horizontal Scroll Position (in pixels/256)
+++ $6F tttttttt ttttpppp xxxxxxxx
        t: BG3 Vertical Scroll Position (in tiles)
        p: BG3 Vertical Scroll Position (in pixels)
        x: BG3 Vertical Scroll Position (in pixels/256)
  + $73 Movement BG1 X Scroll Speed (in pixels/frame/256, signed)
  + $75 Movement BG1 Y Scroll Speed
  + $77 Movement BG2 X Scroll Speed
  + $79 Movement BG2 Y Scroll Speed
  + $7B Movement BG3 X Scroll Speed
  + $7D Movement BG3 Y Scroll Speed
  + $7F Obj Vertical offset for Shake Screen
    $81 Set to zero and used to clear Sprite Graphics (fixed address DMA to VRAM)
  + $82 Current Map Index
    $84 Enable Map Load
    $85 Enable Entrance Triggers
    $86 BG1 Map Horizontal Clip ($0F, $1F, $3F, $7F, $FF)
    $87 BG1 Map Vertical Clip
    $88 BG2 Map Horizontal Clip
    $89 BG2 Map Vertical Clip
    $8A BG3 Map Horizontal Clip
    $8B BG3 Map Vertical Clip
 ++ $8C Source of BG chunk change data
  + $8F XY Position of BG chunk to change
  + $91 Pointer to BG1 Map Data in VRAM (for vertical scrolling and full updates)
  + $93 Pointer to BG1 Map Data in VRAM (for horizontal scrolling, first column)
  + $95 Pointer to BG1 Map Data in VRAM (for horizontal scrolling, second column)
  + $97 Pointer to BG2 Map Data in VRAM (for vertical scrolling and full updates)
  + $99 Pointer to BG2 Map Data in VRAM (for horizontal scrolling, first column)
  + $9B Pointer to BG2 Map Data in VRAM (for horizontal scrolling, second column)
  + $9D Pointer to BG3 Map Data in VRAM (for vertical scrolling and full updates)
  + $9F Pointer to BG3 Map Data in VRAM (for horizontal scrolling, first column)
  + $A1 Pointer to BG3 Map Data in VRAM (for horizontal scrolling, second column)

$A3-$B9 Tile Properties Stuff
-----------------------------
    +----+----+----+ adjacent tiles (bg1 tile index)
    | A3 | A4 | A5 |
    +----+----+----+
    | A6 | A7 | A8 |
    +----+----+----+
    | A9 |*AA*| AB | <-- object is at AA
    +----+----+----+
    | AC | AD | AE |
    +----+----+----+
  + $AF Party's XY Position (in tiles)
    $B1 ------lu Tile z-level passability (copied from $B8, never used)
    $B2 ------lu Party z-level
        l: Lower Z Level
        u: Upper Z Level
    $B3 movement direction (same as $087E)
  + $B4 pointer to party object data (+$0300, $00F8 for normal priority, $01B8 for low priority)
  + $B6 Tile properties from user top tile (from $A7)
  + $B8 Tile properties from user bottom tile (from $AA)
        lrdbtslu tile properties byte 1 ($F7 = always impassable, $07 = counter tile, can be talked over)
                 l: Tile uses up/left movement (stairs)
                 r: Tile uses up/right movement (stairs)
                 d: Door Tile
                 b: Bottom sprite shown above priority 1 bg (not active for bridge tiles, ZoneDoctor: "0.4")
                 t: Top sprite shown above priority 1 bg (not active for bridge tiles, ZoneDoctor: "0.3")
                 s: Bridge tile (ZoneDoctor: "solid tile, cannot be walked on")
                 l: Passable on lower z-level (ZoneDoctor: "Solid to tier 2", if both of these are set, this tile can be a transition between upper and lower)
                 u: Passable on upper z-level (ZoneDoctor: "Solid to tier 1")
        nu--btrl tile properties byte 2
                 n: NPC can randomly move here (ZoneDoctor: "Passable quadrants")
                 u: Always Face Up (ladder)
                 -: (ZoneDoctor: "1.5")
                 -: (ZoneDoctor: "1.4")
                 b: Passable through bottom
                 t: Passable through top
                 r: Passable through right
                 l: Passable through left

$BA-$BC Dialog Window
---------------------
    $BA Enable Dialog Window ($01 = open, $80 = close)
    $BB Dialog Window Size ($00: smallest, $05: fully open)
    $BC Dialog Window Top Y Position ($01: top, $12: bottom)

$BD-$D3 Dialog Text
-------------------
    $BD Current Dialog Character
    $BE Next Dialog Character
    $BF Text's Current X Position on Dialog Window ($04-$E0)
    $C0 Width of Current Word
  + $C1 Pointer to Next Tile in VRAM (+$3800)
  + $C3 Pointer to Current Tile in VRAM (+$3800)
    $C5 Text Graphics Needs to be Copied to VRAM
  + $C6 Unused (set to #$0700)
    $C8 Max X Position on Dialog Window (always $E0?)
 ++ $C9 Pointer to Current Dialog Character
    $CC current region of dialog window that needs to be cleared in VRAM (starts at 9, decrements once per frame)
        9 = none, waiting for keypress
        +-----------+-----------+
        |     8     |     7     |
        +-----------+-----------+
        |     6     |     5     |
        +-----------+-----------+
        |     4     |     3     |
        +-----------+-----------+
        |     2     |     1     |
        +-----------+-----------+
        0 = none, no text displayed (or map name displayed)
  + $CD Character to Display (top byte is for extra characters from FF6j)
    $CF eppppppp
        e: text buffer is empty
        p: dialog text buffer position (+$7E9183)
  + $D0 Dialog Index
    $D2 -
    $D3 Keypress State (decrements when button is pressed or released)
        0 = not waiting for keypress
        1 = waiting for keypress
        2 = waiting for key release

$D4-$DE Object Stuff
--------------------
  + $D4 pointer to sprite data at $0340 & $0400 (normal priority)
  + $D6 pointer to sprite data at $0300 & $0320 (high priority)
  + $D8 pointer to sprite data at $04C0 & $04E0 (low priority)
  + $DA Pointer to Current Object Data (+$0867)
    $DC Current Object (x2)
    $DD Total Number of Active Objects (x2)
    $DE Number of Objects Left

$DF-$EF Event Stuff
-------------------
    $DF BG fixed color math begin (x2)
    $E0 BG fixed color math end (x2)
    $E1 ofs-----
        o: waiting for an object script to finish
        f: waiting for fade to finish
        s: waiting for scroll to finish
    $E2 Object to Wait for
  + $E3 Event Pause Counter (frames)
 ++ $E5 Event PC
  + $E8 Event Stack Pointer
    $EA Event Op Code
$EB-$EF Event Code Data (up to 5)

$F3-$FF Decompression Stuff
---------------------------
 ++ $F3 Decompression Source
 ++ $F6 Decompression Destination
  + $F9 (used by decompression subroutine)
    $FB (used by decompression subroutine)
  + $FC Decompression Size Counter
    $FE (used by decompression subroutine)
    $FF (used by decompression subroutine)

See Menu RAM.

This data gets copied directly to the SNES OAM data every frame.

Format for sprites:
        $00 x position
        $01 y position
      + $02 vhoopppm mmmmmmmm
            v: vertical flip
            h: horizontal flip
            o: layer priority
            p: palette index
            m: graphic index

$0300-$033F High priority sprites
      $0300 object, top (8)
      $030C timer minute tens digit
      $0310 timer minute ones digit
      $0314 timer second tens digit
      $0318 timer second ones digit
      $031C timer colon
      $0320 object, bottom (8)

$0340-$047F Normal priority sprites
      $0340 object, top (40)
      $03E0 overlay (4)
      $03F0 unused (2)
      $03F8 party, top
      $03FC party, bottom
      $0400 object, bottom (40)

$04A0-$04FF Low priority sprites
      $04A0 overlay (4)
      $04B0 unused (2)
      $04B8 party, top
      $04BC party, bottom
      $04C0 object, top sprites (8)
      $04E0 object, bottom sprites (8)

$0500-$051F sxsxsxsx sprite high data (2 bits per sprite)
            s: large sprite flag (32x32)
            x: x position MSB
$0520-$0540 Map Properties
-----------
      $0520 Name Index
      $0521 t-s123wx
            t: load timer graphics (overwrites some chocobo graphics)
            s: enable spotlights
            1: wavy BG1
            2: wavy BG2
            3: wavy BG3
            w: enable Warp (spell and item)
            x: enable X-Zone (doesn't do anything)
      $0522 3bbbbbbb
            3: BG3 foreground (sets the priority bits for all bg3 tiles, doesn't affect $2105)
            b: battle background index
      $0523 --------
      $0524 Tile Properties Index
      $0525 b-------
            b: enable random battles
      $0526 ?-----mm
            ?: set for colosseum guy's house exterior (unused)
            m: Window Mask Settings (used if flashlight, spotlight, or pyramid is enabled)
+++++ $0527 aaaaaaab bbbbbbcc ccccdddd dddeeeee eeffffff fggggggg
            a: BG2 Tile Formation Index ($800 bytes -> $7FC800)
            b: BG1 Tile Formation Index ($800 bytes -> $7FC000)
            c: BG3 Graphics Index ($1000 bytes -> VRAM $3000)
            d: BG1/BG2 Tileset 4 ($1000 bytes -> VRAM $2000) doesn't get copied if tileset 3 = tileset 4
            e: BG1/BG2 Tileset 3 ($1000 bytes -> VRAM $1800) $2000 bytes if tileset 3 = tileset 4
            f: BG1/BG2 Tileset 2 ($1000 bytes -> VRAM $1000)
            g: BG1/BG2 Tileset 1 ($2000 bytes -> VRAM $0000)
  +++ $052D --cccccc ccccbbbb bbbbbbaa aaaaaaaa
            c: BG3 Map Data Index ($4000 bytes -> $7F8000)
            b: BG2 Map Data Index ($4000 bytes -> $7F4000)
            a: BG1 Map Data Index ($4000 bytes -> $7F0000)
      $0531 Sprite Overlay Index
      $0532 BG2 Horizontal Shift (positive values shift left, +/-)
      $0533 BG2 Vertical Shift (positive values shift up, +/-)
      $0534 BG3 Horizontal Shift
      $0535 BG3 Vertical Shift
      $0536 BG2/BG3 Scroll Mode
      $0537 aabbccdd
            a: BG1 Map Width Index
            b: BG1 Map Height Index
            c: BG2 Map Width Index
            d: BG2 Map Height Index
      $0538 aabb-def
            a: BG3 Map Width Index
            b: BG3 Map Height Index
            d: <unused> (copied to $0592)
            e: <unused> (copied to $0592)
            f: <unused> (copied to $0591)
      $0539 Palette Index
      $053A Palette Animation Index
      $053B aaabbbbb
            a: BG3 Animation Index ($1000 bytes -> VRAM $3000)
            b: BG1/BG2 Animation Index ($800 bytes -> VRAM $2800)
      $053C Song Index
      $053D -
      $053E Map Width ($00 for loop)
      $053F Map Height
      $0540 BG2/BG3 Color Math Mode
      $0541 BG1 X Center Coordinate (on screen, 16x16 tiles)
      $0542 BG1 Y Center Coordinate
      $0543 BG2 X Center Coordinate
      $0544 BG2 Y Center Coordinate
      $0545 BG3 X Center Coordinate
      $0546 BG3 Y Center Coordinate
    + $0547 Event BG1 Horizontal Scroll Speed ($0080 = 1 pixel/frame, +/-)
    + $0549 Event BG1 Vertical Scroll Speed
    + $054B Event BG2 Horizontal Scroll Speed
    + $054D Event BG2 Vertical Scroll Speed
    + $054F Event BG3 Horizontal Scroll Speed
    + $0551 Event BG3 Vertical Scroll Speed
      $0553 BG2 Horizontal Scroll Rate Multiplier (bg2 pixels/step)
      $0554 BG2 Vertical Scroll Rate Multiplier (bg2 pixels/step)
      $0555 BG3 Horizontal Scroll Rate Multiplier (bg3 pixels/step)
      $0556 BG3 Vertical Scroll Rate Multiplier (bg3 pixels/step)
      $0557 BG1 destination X center coordinate (when scrolling to a party after an object collision)
      $0558 BG1 destination Y center coordinate
      $0559 lock screen (Disable Screen Scroll With Character Movement)
      $055A BG1 Map Data Update Status (decrements every frame)
            05 = needs update, but waiting for event command $75
            04 = top->RAM
            03 = bottom->RAM
            02 = top->VRAM
            01 = bottom->VRAM
            00 = no changes
      $055B BG2 Map Data Update Status
      $055C BG3 Map Data Update Status
      $055D Default party
      $055E Object Collision Status
            00 = no collisions
            01 = collision occurred, waiting for party to stop moving
            02 = collision being processed
      $055F Object Collision Facing Direction
    + $0560 Pointer to Character Object Data for Collision
    + $0562 Pointer to NPC Object Data for Collision

$0564-$0584 Dialog Window Stuff
-------------------------------
      $0564 Show Text Only (no dialog window)
      $0565 Wallpaper Index
      $0566 Window 2 Frame Counter (for flashlight/pyramid/spotlights)
      $0567 Counter for map name dialog box (counts down from 100 every frame)
      $0568 e------d Dialog Flags
            e: dialog item is fully rendered
            d: enable dialog text
    + $0569 counter for dialog pause
    + $056B kccccccc cccccccc
            k: allow keypress
            c: counter for keypress
      $056D Multiple Choice Selection is Changing
      $056E Current Multiple Choice Selection
      $056F Maximum Multiple Choice Selection
$0570-$057F Multiple Choice XY Positions (8 items, 2 bytes each)
    + $0580 Current Multiple Choice Position (+$3800 in VRAM)
      $0582 Update Dialog Text (for multiple choice indicator movement)
      $0583 Item Index for Dialog Window Display
      $0584 Spell Index for Dialog Window Display (unused, this is from FF6j)

      $0585 BG1 Vertical Scroll Status
            0 = no update
            1 = update in RAM
            2 = update in VRAM
      $0586 BG1 Horizontal Scroll Status
      $0587 BG2 Vertical Scroll Status
      $0588 BG2 Horizontal Scroll Status
      $0589 BG3 Vertical Scroll Status
      $058A BG3 Horizontal Scroll Status
    + $058B BG1 VRAM Map Location ($4800 or $4C00)
    + $058D BG2 VRAM Map Location ($5000 or $5400)
    + $058F BG3 VRAM Map Location ($5800 or $5C00)
      $0591 -
      $0592 -
      $0593 -
$0594-$05C3 Event Stack for subroutines (up to 15 events)
$05C4-$05F3 Event Loop Count (3 bytes each)
$05F4-$0623 Event Stack for loops (up to 16 loops)

$0624-$062B Event Code for Map Startup
--------------------------------------
  +++ $0624 B2 xxxxxx Jump to xxxxxx
    + $0628 D3 CF     Clear event bit $1EB9.7 (enable user control of character)
      $062A FD        Add 1 to event PC (does nothing)
      $062B FE        Return

      $062C Minimum X Scroll Position (in pixels, $FF means no min or max)
      $062D Maximum X Scroll Position (in pixels)
      $062E Minimum Y Scroll Position (in pixels, $FF means no min or max)
      $062F Maximum Y Scroll Position (in pixels)
      $0630 Horizontal Scanline Position
      $0631 Vertical Scanline Position
      $0632 Max Vertical Scanline Position (can be used to watch CPU load)
      
$0633-$0742 Sprite Overlay Stuff
--------------------------------
$0633-$0642 Sprite Overlay Graphics Indexes (16 tiles)
$0643-$0742 yxo-ooo- Sprite Overlay Tile Formation (for each bg1 tile, $FF means no overlay tile)
            y: flip overlay graphics vertical
            x: flip overlay graphics horizontal
            o: overlay tile index
            
      $0743 x-----dd
            x: don't update facing direction (for party switch)
            d: party facing direction
      $0744 ------lu Saved/Destination Z Level
            l: Lower Z Level
            u: Upper Z Level
      $0745 Enable Map Name Dialog Box
$0746-$0749 -
      $074A o321ffaa
            o: shake obj layer
            3: shake BG3
            2: shake BG2
            1: shake BG1
            f: frequency
            a: amplitude
      $074B current shake screen amplitude
    + $074C BG1 vertical offset for shake screen
    + $074E BG2 vertical offset for shake screen
    + $0750 BG3 vertical offset for shake screen
      $0752 ??? Spotlight color add/sub (unused)
      $0753 ??? Spotlight color add/sub (unused)
$0754-$075B Decimal Number for Dialog Text Display
    + $075C ??? Pyramid
    + $075E ??? Pyramid
    + $0760 ??? Pyramid
      $0762 Enable Party Change

$0763-$077A Active Overlay Data (6 items, 4 bytes each, last two are unused)
-----------
      $0763 Overlay Tile X Position
      $0764 Overlay Tile Y Position
      $0765 Overlay Tile Graphic Index ($00 = no tile)
      $0766 vh-----f
            v: vertical flip
            h: horizontal flip
            f: 1 = upper z-level, 0 = lower z-level

      $077B f--sssss
            f: enable flashlight
            s: flashlight radius in pixels * 2 (target)
      $077C --ssssss
            s: flashlight radius in pixels (current)
    + $077D Pyamid/Flashlight XY Position
    + $077F Pointer to Pyramid Object Data (+0867)
      $0781 Enable Pyramid
      $0782 -
    + $0783 ??? (spotlights)
    + $0785 ??? (spotlights)
      $0787 -
      $0788 -
      $0789 "Monster-in-a-Box" Formation Index
      $078A bs------
            b: disable battle blur
            s: disable sound effect
      $078B Number of Random Battles on Map
    + $078C Number of Steps On Map For Random Battles
      $078E Party is on a trigger (disables random battles)
      $078F Number of active NPCs
$0790-$0794 Pyramid/Spotlights data
      $0795 Character Portrait Index
    + $0796 Screen Mosaic Counter
      $0798 Wait for character objects to get updated
$0799-$07FA Pointers to Object Data (multiples of $29, 2 bytes each)
$07FB-$0866 Pointers to Active Objects
    + $07FB Party Character 0
    + $07FD Party Character 1
    + $07FF Party Character 2
    + $0801 Party Character 3
    + $0803 Showing Character
$0867-$1068 Object Data (50 items, 41 bytes each, $00-$0F are characters, $10-$2F are NPC's, $30 is camera ($07B0), $31 is showing character or for unused objects ($07D9))
-----------
      $0867 verbbppp Object Settings
            v: Visible
            e: Enabled (active)
            r: Battle Row (back row if set) \
            b: Battle Order                 |--> characters only, though $1850 is "master" data
            p: Party                        /
      $0868 vvvddoom Sprite Settings
            v: Vehicle Index (or animation speed for special graphics, which is unusable)
               000 = character only, no vehicle
               001 = chocobo, character not shown
               010 = magitek, character not shown
               011 = raft, character not shown
               100 = special NPC graphics (ZoneDoctor: "4.7")
               101 = chocobo, character shown
               110 = magitek, character not shown
               111 = raft, character not shown
            d: saved facing direction for movement (while object is activated)
            o: layer priority (for layering wrt bg tiles, ZoneDoctor: "Can walk under/over")
               00 = default, based on bg tile properties
               01 = upper sprite above bg, lower sprite below bg
               02 = both sprites above bg
               03 = both sprites below bg
            m: Enable Walking Animation When Moving *OR* horizontal flip for special NPC graphics (copied from $0889.7)
   ++ $0869 tttttttt ttttpppp xxxxxxxx
            t: X Position (in tiles)
            p: X Position (in pixels)
            x: X Position (in pixels/4096)
   ++ $086C tttttttt ttttpppp yyyyyyyy
            t: Y Position (in tiles)
            p: Y Position (in pixels)
            y: Y Position (in pixels/4096)
    + $086F Y Shift for jumping (in pixels, high byte always 0)
    + $0871 Horizontal Movement Speed
    + $0873 Vertical Movement Speed
      $0875 Object Speed
      $0876 -hpppppp Current Graphic Position
            h: horizontal flip
            p: graphics position
      $0877 -hpppppp Next Graphic Position
            h: horizontal flip
            p: graphics position
      $0878 Actor Index
      $0879 Graphic Index
    + $087A Pointer to Location in Map Data (+$7E2000 or +$7F0000)
      $087C 2cxpmmmm Movement Type
            2: object scrolls with BG2 rather than BG1 (ZoneDoctor: "Solidify action path")
            c: object event activates on collision
            x: don't face target when activated *OR* 32x32 sprite size for special NPC graphics (ZoneDoctor: "No face on trigger")
            p: passability flag (0 = passable, 1 = not passable)
            m: object movement type
               0 = none
               1 = script-controlled
               2 = user-controlled
               3 = random
               4 = activated (facing something)
      $087D saved copy of $087C (during event execution)
      $087E ---ddddd
            d: moving direction
               $00 = not moving
               $01 = up
               $02 = right
               $03 = down
               $04 = left
               $05 = up/right
               $06 = down/right
               $07 = down/left
               $08 = up/left
               $09 = right/up 1x2
               $0A = right/up 2x1
               $0B = right/down 2x1
               $0C = right/down 1x2
               $0D = left/down 1x2
               $0E = left/down 2x1
               $0F = left/up 2x1
               $10 = left/up 1x2
      $087F ------dd
            d: facing direction
               00 = up
               01 = right
               10 = down
               11 = left
      $0880 vhooppp- (upper sprite)
      $0881 vhooppp- (lower sprite)
            v: Vertical Flip
            h: Horizontal Flip
            o: sprite layer priority (always 2 or 3)
            p: Palette Index
      $0882 Object script wait counter
   ++ $0883 Object script pointer
      $0886 Number of Steps to Take
      $0887 jjpppppp
            j: Jump Type (00 = low, 01 = high)
            p: Jump Counter (pointer to $C059AD, decrements every frame)
      $0888 -----blu (copied from tile properties)
            b: bridge tile
            l: lower Z level
            u: upper Z level
   ++ $0889 Pointer to Event Script (normal objects only)
      $0889 hvvvvvvv (special NPC graphics only)
            h: horizontal flip
            v: VRAM address (in tiles, +$7000)
      $088A sssmmmmm (special NPC graphics only)
            s: amount to shift (in pixels * 2 if there is no master object, in tiles if there is)
            m: master object number (NPC number)
      $088B ------md (special NPC graphics only)
            m: enable master/slave object (this object follows another NPC whenever it moves)
            d: direction to shift (0 = right, 1 = down)
      $088C ppannggg
            p: sprite priority (layering wrt other sprites, 0 = normal, 1 = high, 2,3 = low) (ZoneDoctor: "8.3", "8.4")
            a: enable special animation (set when g is not zero)
            n: special animation frame type (active when g is not zero)
               00 = 1 frame
               01 = 2 frames (one image flips horizontally)
               10 = 2 frames
               11 = 4 frames
            g: special animation offset (see C0/5831) (ZoneDoctor: "8.5", "8.6", "8.7")
    + $088D Object Map Index
      $088F Pointer to Animation Queue (+$10F7)

$1069-$10D0 BG1/BG2 Animation Data (8 items, 13 bytes each)
-----------
    + $1069 Animation Counter
    + $106B Animation Speed ($0400 = 1:1 @ 60Hz)
      $106D Graphic Bank Pointer
    + $106E Frame 1 Pointer
    + $1070 Frame 2 Pointer
    + $1072 Frame 3 Pointer
    + $1074 Frame 4 Pointer

$10D1-$10E6 BG3 Animation Data
-----------
    + $10D1 Animation Counter
    + $10D3 Animation Speed
    + $10D5 Size
    + $10D7 Frame 1 Pointer
    + $10D9 Frame 2 Pointer
    + $10DB Frame 3 Pointer
    + $10DD Frame 4 Pointer
    + $10DF Frame 5 Pointer
    + $10E1 Frame 6 Pointer
    + $10E3 Frame 7 Pointer
    + $10E5 Frame 8 Pointer

$10E7-$10F6 Palette Animation Data (2 items, 8 bytes each)
-----------
      $10E7 counter 1 (frames per palette update)
      $10E8 counter 1 reset value [byte 1]
      $10E9 counter 2 (palette updates per reset)
      $10EA ttttrrrr [byte 0]
            t: palette animation type (0 = none, 1 = cycle, 2 = ROM, 3 = subtract pulse)
            r: counter 2 reset value
      $10EB first color pointer (color index * 2) [byte 2]
      $10EC (number of affected colors - 1) * 2 (-1 only for type 2 and 3) [byte 3]
      $10ED color index in ROM (only used by type 2 [byte 4]
      $10EE unused [byte 5]

$10F7-$1126 Object Animation Data (24 items, 2 bytes each)
-----------
    + $10F7 pointer to object data, $07B0 if a slot is empty, only 6 get updated per frame

    + $1127 Open Door Count (x2)
$1129-$1158 Open Door XY positions
    + $1159 - (debug mode ???)
    + $115B Event Bits Being Displayed (debug mode)
$115C-$1187 -

$1188-$119F Timer Data (4 items, 6 bytes each)
-----------
      $1188 pfrm----
            p: Pause timer in menu and battle.
            f: Timer is visible on field (timer 0 only).
            r: End battle or exit menu if timer runs out.
            m: Timer is visible in menu and battle (timer 0 only).
    + $1189 counter (frames)
   ++ $118B pointer to event code (+CA0000)

Shared between Field, Battle, and World programs.

$11A0-$11E0 Character Stats ($40 bytes, shared with bank $C2)
-----------
     +$11A0 Mag. Power
     +$11A2 Stamina
     +$11A4 Speed
     +$11A6 Vigor
     +$11A8 Evade
     +$11AA MBlock
      $11AC Battle Power (main hand)
      $11AD Battle Power (off-hand)
      $11AE Weapon Hit Rate (main hand)
      $11AF Weapon Hit Rate (off-hand)
      $11B0 Weapon Element (main hand)
      $11B1 Weapon Element (off-hand)
     +$11B2 bbhhhhhh hhhhhhhh
            b: hp boost (0 = none, 1 = 25% boost, 2 = 50% boost, 3 = 12.5% boost)
            h: max hp
      $11B4 Weapon Spell Cast
      $11B5 -
      $11B6 Absorbed Elements
      $11B7 Nullified Elements
      $11B8 Weak Elements
      $11B9 Halved Elements
      $11BA Defense
      $11BB Magic Defense
      $11BC Status 2 Effects
      $11BD -
      $11BE ----mpbb
            m: can block magic attacks
            p: can block physical attacks
            b: block graphic (0 = Dagger, 1 = Sword, 2 = Shield, 3 = Zephyr Cape)
$11BF-$11C5 -
      $11C6 Weapon
      $11C7 Shield
      $11C8 Helmet
      $11C9 Armor
      $11CA Relic 1
      $11CB Relic 2
      $11CC -
      $11CD -
      $11CE ---4321-
            1: weapon in off-hand
            2: weapon in main hand
            3: unarmed in off-hand
            4: unarmed in main hand
      $11CF ---4----
            4: weapons in both hands.  will oddly clear Genji Glove effect in $11D8, for damage purposes.
      $11D0 ----zhsd Physical Block Graphic
      $11D1 ----zhsd Magical Block Graphic
            z: zephyr Cape
            h: shield
            s: sword
            d: dagger
      $11D2 Status 1 Immunity
      $11D3 Status 2 Immunity
      $11D4 Status 3 Effects
      $11D5 76543210
            7: MP +12.5% (bard's hat)
            6: MP +50% (crystal orb)
            5: MP +25% (minerva)
            4: HP +12.5% (green beret)
            3: HP +50% (muscle belt)
            2: HP +25% (red cap)
            1: raise magic damage (double earrings or hero ring)
            0: raise fight damage (atlas armlet, hero ring)
      $11D6 76543210
            7: jump continuously (dragon horn)
            6: steal -> capture (thief glove)
            5: slot -> gp rain (coin toss)
            4: sketch -> control (fakemustache)
            3: magic -> x-magic (gem box)
            2: fight -> jump (dragoonboots)
            1: prevent back/pincer attacks (back guard)
            0: increase pre-emptive attack rate (gale hairpin)
      $11D7 76543210
            7: raise vigor +50% (hyper wrist)
            6: MP cost = 1 (economizer)
            5: MP cost = 50% (gold hairpin)
            4: 100% Hit Rate, ignore target's MBlock (sniper sight)
            3: Increase Control Rate (coronet)
            2: Increase Sketch Rate (beret)
            1: raise magic damage (single earring or hero ring)
            0: Increase Steal Rate (sneak ring)
      $11D8 -thgaebo
            t: protects weak allies (true knight)
            h: can equip heavy items (merit award)
            g: can equip 2 weapons (genji glove)
            a: uses weapon 2-handed (gauntlet)
            e: randomly evade (beads)
            b: randomly counter (black belt)
            o: fight -> x-fight (offering)
      $11D9 7--43210
            7: make character undead (relic ring)
            4: double GP (cat hood)
            3: double experience (exp. egg)
            2: casts wall when HP is low
            1: casts safe when HP is low (mithril glove, czarina ring)
            0: casts shell when HP is low (barrier ring, czarina ring)
      $11DA 765---1- Weapon Effects (main hand)
      $11DB 765---1- Weapon Effects (off-hand)
            7: enable runic
            6: 2-hand
            5: no back row penalty
            1: swdtech
      $11DC Run Factor
      $11DD -
      $11DE -
      $11DF t-s---mc Field Equipment Effects
            t: tintina bar effect (doesn't work)
            s: sprint shoes effect (1.5x walk speed)
            m: moogle charm effect (no random battles)
            c: charm bangle effect (50% less random battles)
    + $11E0 r-----bb bbbbbbbb
            r: randomly pick this battle or one of the next 3 (see C2/30E8)
            b: battle index
    + $11E2 ???????? ??bbbbbb
            b: battle background index
      $11E4 ----3210
            3: continue current music (no battle music)
            2: on the veldt (enable leap in status menu)
            1: on the veldt (enable leap in battle)
            0: gau can appear after battle
$11E5-$11EF -
      $11F0 Screen Mosaic Speed
      $11F1 Enable Restore Saved Game
      $11F2 (shared with bank $EE)
      $11F3 (shared with bank $EE)
    + $11F4 (shared with bank $EE)
    + $11F6 (shared with bank $EE)
      $11F8 (shared with bank $EE)
      $11F9 World Map Battle BG index (table at C0/C27F)
            0: field (WoB)
            1: forest (WoR)
            2: desert (WoB or WoR)
            3: forest (WoB)
            4: building/field (WoB/WoR)
            5: field (WoR)
            6: the veldt
            7: falling through the clouds
      $11FA efs---vv Map Startup Flags
            e: enable map startup event
            f: disable map fade in when loading
            s: don't update map size when loading map
            v: world map vehicle
               0 = no vehicle
               1 = airship
               2 = chocobo
      $11FB Showing Character's Graphic Index
      $11FC Showing Character's Palette Index
   ++ $11FD World Map Event Pointer

The field direct page ($0000-$00FF) gets copied here during battle and when on the world world map.

$1500-$1503 NMI Jump Code
$1504-$1507 IRQ Jump Code
$1508-$15FF CPU Stack

This data (0x0A00 bytes) is saved to SRAM when the game is saved. Also see SRAM.

$1600-$184F Character Data (16 items, 37 bytes each)
      $1600 Actor Index
      $1601 Graphic Index
$1602-$1607 Name
      $1608 Level
    + $1609 Current HP
    + $160B bbhhhhhh hhhhhhhh
            b: hp boost (0 = none, 1 = 25% boost, 2 = 50% boost, 3 = 12.5% boost)
            h: max hp
    + $160D Current MP
    + $160F bbmmmmmm mmmmmmmm
            b: mp boost (0 = none, 1 = 25% boost, 2 = 50% boost, 3 = 12.5% boost)
            h: max mp
   ++ $1611 Experience Points
      $1614 weicmpzd Status 1
            w: wound
            e: petrify
            i: imp
            c: clear
            m: magitek
            p: poison
            z: zombie
            d: dark
      $1615 fihcmlzr Status 4
            f: float
            i: interceptor
            h: hide    (unused)
            c: control (unused)
            m: morph   (unused)
            l: life 3  (unused)
            z: freeze  (unused)
            r: rage    (unused)
$1616-$1619 Battle Commands
      $161A Vigor
      $161B Speed
      $161C Stamina
      $161D Mag. Power
      $161E Esper
      $161F Weapon
      $1620 Shield
      $1621 Helmet
      $1622 Armor
    + $1623 Relics
$1850-$185F verbbppp
            v: Visible
            e: Character is Enabled
            r: Battle Row (back row if set)
            b: Battle Order
            p: Party
   ++ $1860 Current GP
   ++ $1863 Current Game Time
   ++ $1866 Current Steps
$1869-$1968 Current Items
$1969-$1A68 Item Quantities
  +++ $1A69 Current Espers
      $1A6D Current Party

$1A6E-$1D4C Character Skill Data
-----------
$1A6E-$1CF4 Spells Known (12 characters, 54 spells each, 1 byte per spell)
      $1CF6 Morph Counter
      $1CF7 Known sword techs
$1CF8-$1D27 Sword tech names (from FF6j)
      $1D28 Known blitzes
$1D29-$1D2B Known lores
$1D2C-$1D4B Known rages
      $1D4C Known dances

$1D4D-$1DC8 Config Data
-----------
      $1D4D cmmmwbbb
            c: command set (window/short)
            m: message speed
            w: battle mode (active/wait)
            b: battle speed
      $1D4E gcsrwwww
            g: gauge
            c: cursor
            s: sound
            r: reequip
            w: wallpaper (values 0-7 valid)
      $1D4F ----4321
            4: player 2 control character 4
            3: player 2 control character 3
            2: player 2 control character 2
            1: player 2 control character 1
      $1D50 aaaabbbb
            a: A button mapping (0 = start, 1 = A, 2 = B, 3 = X, 4 = Y, 5 = top L, 6 = top R, 7 = select)
            b: B button mapping
      $1D51 xxxxyyyy
            x: X button mapping
            y: Y button mapping
      $1D52 llllrrrr
            l: top L button mapping
            r: top R button mapping
      $1D53 tttteeee
            t: Start button mapping
            e: Select button mapping
      $1D54 mbcccsss
            m: controller 2 enabled
            b: custom button config
            c: font/window palette color selection
            s: spell order index
    + $1D55 Font Color
$1D57-$1DC6 Window Palette (8 palettes, 7 colors each)
    + $1DC7 Number of times the game has been saved

$1DC9-$1DDC Battle Variables
----------------------------
      $1DC9 -
      $1DCA -
      $1DCB -
      $1DCC -
      $1DCD -
      $1DCE -
      $1DCF abcdefgh
            a: if set, program compares current monster index with
               monster index at CF3780,X. if equal, monster index
               is changed to monster index at CF3782,X.
            b-h: same as a
      $1DD0 -----mtf
            m: permanent morph (for Phunbaba battle)
            t: morph lasts twice as long (set after Phunbaba battle)
            f: magic only (fanatic's tower)
      $1DD1 ztrbemsg Battle End Event Flags
            z: zone eater engulfed the party
            t: timers are shown in menu and battle
            r: ran out of time (before emperor's banquet)
            b: ran away from previous battle
            e: gained AP is displayed (espers have been acquired)
            m: morph is available
            s: enables scene with LOCKE and EDGAR if TERRA uses magic
            g: game over after battle ends
      $1DD2 --ums-gd
            u: LOCKE is wearing soldier uniform
            m: LOCKE is wearing merchant clothes
            s: SHADOW won't leave after battle
            g: GAU has been obtained
            d: Doom Gaze has been defeated
    + $1DD3 Doom Gaze's HP
      $1DD5 Battles Fought with Cursed Shield
      $1DD6 -
      $1DD7 -
      $1DD8 -
      $1DD9 -
      $1DDA -
      $1DDB -
      $1DDC -
$1DDD-$1E1C Veldt Formations Available (64 bytes)
$1E1D-$1E3F -
$1E40-$1E7F Treasure Bits (indicates if chests have been collected)

$1E80-$1F5F Event Bits
-----------
      $1E80 1: first dialog with Arvis
            3: moogle battle at Narshe
            4: met Edgar
            5: learned about Sabin
            6: first dialog with Kefka at Figaro castle
            7: Sabin returned to Figaro castle
      $1E81 0: going to room at Figaro after first dialog with Kefka
            3: met Shadow
      $1E82 0: Sabin joined

      $1E84 4: Shadow's 1st dream
            6: Shadow's 2nd dream
            7: Shadow's 3rd dream
      $1E85 0: Shadow's 4th dream

      $1E93 ?f??????
            f: floating island has lifted off (not shown on mini map)
      
      $1EA5 76543210
            0: single dog attack, opening Narshe
            1: two guards attack, opening Narshe
            2: two dogs then two guards attack, opening Narshe
            3: dialog at mine entrance, opening Narshe
            4: gate open, opening Narshe
      $1EA6 76543210
            0: pincer attack, opening Narshe
            1: two guards + two mammths attack, opening Narshe
            3: save point explanation
            4: chocobo explanation
            5: whelk attack, opening Narshe

    + $1EB4 abcdefgh ijklmnop
            a: TERRA is available
      $1EB6 sotaldru
            s: serpent trench arrow direction (0: right, 1: left)
            o: map's object data needs to be loaded ???
            t: tile event bit (gets cleared when the party moves to a new tile)
            a: A button is down
            l: character is facing left
            d: character is facing down
            r: character is facing right
            u: character is facing up
      $1EB7 sg??va?m
            s: on a save point
            g: not enough gp (set by event command $85)
            v: on the veldt
            a: airship is grounded
            m: play alternative world map music
      $1EB8 ?p???ms?
            p: enable character portrait
            m: disable main menu
            s: sprint shoes effect is disabled
      $1EB9 upes????
            u: user does not have control of character
            p: enable party switching
            e: encounters disabled
            s: don't change song when loading map
   ++ $1EBA current rare items
      $1EBD sc--rrrr
            s: fighting SHADOW at the colosseum
            c: a valid item was selected for the colosseum
            r: more rare items (unused)
      $1EBE -
      $1EBF -
   
      $1ED7 ???m????
            m: continue current music during battle -> $11E4.3
      $1ED8 aaaa???f
            a: party 1 event bits (cleared every step)
            f: enable horizontal fade bars from ending
      $1ED9 ccccbbbb
            c: party 3 event bits (cleared every step)
            b: party 2 event bits (cleared every step)

     +$1EDC ??cccccc cccccccc
            c: initialized characters
     +$1EDE sncccccc cccccccc
            s: there is at least one saved game (go to load screen after title screen instead of playing intro)
            n: go to first Narshe scene after magitek march (instead of back to the title screen)
            c: available characters
$1EE0-$1F5F NPC Event Bits (to enable/disable NPC's, initialized for new game, all other event bits are cleared)

$1F60-$1FFF
-----------
    + $1F60 World XY Position
    + $1F62 Airship XY Position
    + $1F64 --ddnzpm mmmmmmmm Current Map Index
            d: facing direction
            n: show map name
            z: z-level
            p: set destination as parent map
            m: map number
    + $1F66 Field XY Scroll Position (BG1)
      $1F68 Facing Direction (parent facing direction if bit 7 set)
    + $1F69 Parent Map
    + $1F6B Parent XY Position
      $1F6D Random Number (RNG Seed for NPC walking direction.)
    + $1F6E Danger counter for random battles
$1F70-$1F7F Saved Character Palette Indexes (for world map)
      $1F80 Current Song
$1F81-$1FA0 Saved Object Map Indexes
      $1FA1 Step counter used as an RNG Seed in determining the next random encounter.
      $1FA2 Battle counter used as an RNG Seed in determining the monster formation.
      $1FA3 RNG salt for use with $1FA2 (increments +23 when $1FA2 goes over 255.)
      $1FA4 RNG salt for use with $1FA1 (increments +17 when $1FA1 goes over 255.)
      $1FA5 Veldt battle group number.
    + $1FA6 Pointer to Current Showing Character's Object Data
$1FA8-$1FBF Saved timer data (from $1188)
    + $1FC0 Party XY Position
$1FC2-$1FD1 Event Variables
    + $1FC2 Points from Narshe security checkpoint/Emperor's banquet
    + $1FC4 Narshe security checkpoint variable
    + $1FC6 -
    + $1FC8 -
    + $1FCA -
    + $1FCC -
    + $1FCE Number of Dragons Left
    + $1FD0 Cid's Health/Pieces of Coral
      $1FD2 parent facing direction
$1FD3-$1FF2 Character Saved XY Positions (2 bytes each)
$1FF3-$1FF6 Party Z Levels
$1FF7-$1FFD -
    + $1FFE Saved Game Data CheckSum ($1600-$1FFD)
$7E2000-$7E5FFF Object Map Data (object number x 2, $FF means no object)
$7E6000-$7E6BFF Terra Outline Graphics (not implemented)
$7E6C00-$7E71FF -
$7E7200-$7E73FF Color Palettes (unmodified)
        $7E7200 Dialog Text Palette (uses first four colors only)
        $7E7220 Map Palettes
        $7E72E0 Dialog Window Palette (last 8 colors only)
        $7E7300 Sprite Palettes
        $7E73E0 Vehicle Palette (overwritten for character portrait)
$7E7400-$7E75FF Color Palettes (active)
$7E7600-$7E76FF tile properties byte 1 ($F7 = always impassable, $07 = counter tile, can be talked over)
                lrdbtslu
                l: tile uses up/left movement (stairs)
                r: tile uses up/right movement (stairs)
                d: door tile
                b: bottom sprite shown above priority 1 bg (not active for bridge tiles, ZoneDoctor: "0.4")
                t: top sprite shown above priority 1 bg (not active for bridge tiles, ZoneDoctor: "0.3")
                s: bridge tile (ZoneDoctor: "solid tile, cannot be walked on")
                l: passable on lower z-level (ZoneDoctor: "Solid to tier 2", if both of these are set, this tile can be a transition between upper and lower)
                u: passable on upper z-level (ZoneDoctor: "Solid to tier 1")
$7E7700-$7E77FF tile properties byte 2
                nu--btrl
                n: npc can randomly move here (ZoneDoctor: "Passable quadrants")
                u: always face up (ladder)
                -: (ZoneDoctor: "1.5")
                -: (ZoneDoctor: "1.4")
                b: passable through bottom
                t: passable through top
                r: passable through right
                l: passable through left
$7E7800-$7E78FF Sprite High Data Pointers
$7E7900-$7E79FF Sprite High Data Inverse Bit Masks
$7E7A00-$7E7AFF Sprite High Data Bit Masks
$7E7B00-$7E7B3F Flashlight Data

$7E7B40-$7E7E72 HDMA Tables
---------------
$7B40-$7B9A Unused HDMA Table
$7B9B-$7BF5 Channel #7: Mosaic/BG Location HDMA Table (+++$2106)
$7BF6-$7C50 Channel #4: BG1 Scroll HDMA Table (+$210D)
$7C51-$7CAB Channel #0: BG2 Scroll HDMA Table (+$210F)
$7CAC-$7D06 Channel #3: BG3 Scroll HDMA Table (+$2111)
$7D07-$7D61 Channel #2: Fixed Color Add/Sub HDMA Table ($2132)
$7D62-$7DBC Channel #5: Window 2 Position HDMA Table (+$2128)
$7DBD-$7E17 Channel #6: Main/Sub Screen Designation HDMA Table (+212C)
$7E18-$7E72 Channel #1: Color Add/Sub Settings HDMA Table (+2130) ****
$7E73-$7ECC Saved Screen Pixelation/BG Location HDMA Table
$7ECD-$7F26 Saved BG1 Scroll HDMA Table (+$210D)
$7F27-$7F80 Saved BG2 Scroll HDMA Table (+$210F)
$7F81-$7FDA Saved BG3 Scroll HDMA Table (+$2111)
$7FDB-$8034 Saved Fixed Color HDMA Table ($2132)
$8035-$808E Saved Window 2 Position HDMA Table (+$2128)
$808F-$80E8 Saved Main/Sub Screen Designation HDMA Table (+212C)
$80E9-$8142 Saved Addition Subtraction HDMA Table (+2130) ****

$7E8143-$7EFFFF HDMA Data
---------------
$8143-$8162 Unused Data
$8163-$81B2 Main/Sub Screen Designation Data (+212C)
$81B3-$8272 Mosaic/BG Location Data (+++$2106)
$8273-$8292 BG1 Upper Scroll Data (4 bytes each, horizontal then vertical)
$8293-$82B2 BG1 Lower Scroll Data
$82B3-$82D2 BG2 Upper Scroll Data
$82D3-$82F2 BG2 Lower Scroll Data
$82F3-$8312 BG3 Scroll Data
$8313-$8532 BG1 Scroll Data for Dialog Window
$8533-$8572 BG1 Scroll Data for Map Name Dialog Window
$8573-$85F2 BG3 Scroll Data for Map Name Dialog Window
$85F3-$8712 BG3 Scroll Data for Dialog Window
$8713-$8732 BG3 Scroll Data (unused)
$8733-$8752 BG3 Scroll Data for Horizontal Fade Bars (from ending)
$8753-$8762 Fixed Color Add/Sub Data (default)
$8763-$87A2 Fixed Color Add/Sub Data for Spotlights (unused)
$87A3-$8902 Fixed Color Add/Sub Data (unused)
$8903-$8942 Fixed Color Add/Sub Data for Horizontal Fade Bars (from ending)
$8943-$8AD2 Fixed Color Add/Sub Data for Dialog Window
$8AD3-$8C62 Color Add/Sub Settings for Dialog Window
$8C63-$8C72 Color Add/Sub Settings (default)
$8C73-$8C82 Color Add/Sub Settings for Horizontal Fade Bars (from ending)
$8C93-$8CA2 Color Add/Sub Settings (unused)
$8CA3-$8CB2 Window 2 Position Data for Dialog Window
$8CB3-$8E53 Window 2 Position Data (odd frames)
$8E53-$8FF2 Window 2 Position Data (even frames)
$8FF3-$9002 Window 2 Position Data (first row)

$9003-$9182 Dialog Text Graphics Buffer
-----------
$9003-$9022 Current 16x16 Character Graphics, bpp 1-2 (main)
$9023-$9042 Next 16x16 Character Graphics, bpp 1-2 (main)
$9043-$9062 Current 16x16 Character Graphics, bpp 3-4 (shadow)
$9063-$9082 Next 16x16 Character Graphics, bpp 3-4 (shadow)
$9083-$90C2 Dialog Text Graphics VRAM Buffer ($40 bytes -> VRAM $3800)
$90C3-$9102 
$9103-$9122 Current 16x16 Text Graphics, bpp 1-2 (main)
$9123-$9142 Next 16x16 Text Graphics, bpp 1-2 (main)
$9143-$9162 Current 16x16 Text Graphics, bpp 3-4 (shadow)
$9163-$9182 Next 16x16 Text Graphics, bpp 3-4 (shadow)

$9183-$9DFF Dialog Text Buffer
$9E00-$9EFF VWF Widths
$9F00-$A6FF BG1/BG2 Animation Graphics

$BF00-$CEFF BG3 Animation Graphics

$F120-$F800 Saved $0520-$0C00

$7F0000-$7FBFFF Map Data
---------------
$0000-$3FFF BG1 Map Data
$4000-$7FFF BG2 Map Data
$8000-$BFFF BG3 Map Data xytttttt (x = x flip, y = y flip, t = tile index)
$C000-$C7FF BG1 Tile Formation
$C800-$CFFF BG2 Tile Formation
$D000-$D03F BG3 Tile Formation (palette only)
$D040-$D83F Used as a buffer for decompressing map data etc.
$D840-$D8BF Partial BG1 Map for Horizontal Scrolling (2 x 32 tiles, 2 bytes per 8x8 tile) (first column, second column)
$D8C0-$D93F Partial BG2 Map for Horizontal Scrolling (2 x 32 tiles, 2 bytes per 8x8 tile) (first column, second column)
$D940-$D9BF Partial BG3 Map for Horizontal Scrolling (2 x 32 tiles, 2 bytes per 8x8 tile) (first column, second column)
$D9C0-$DA3F Partial BG1 Map for Vertical Scrolling (2 x 32 tiles, 2 bytes per 8x8 tile)
$E1C0-$E23F Partial BG2 Map for Vertical Scrolling (2 x 32 tiles, 2 bytes per 8x8 tile)
$E9C0-$EA3F Partial BG3 Map for Vertical Scrolling (2 x 32 tiles, 2 bytes per 8x8 tile)
$D9C0-$E1BF BG1 Map for Full Updates (32 x 32 tiles, 2 bytes per 8x8 tile)
$E1C0-$E9BF BG2 Map for Full Updates (32 x 32 tiles, 2 bytes per 8x8 tile)
$E9C0-$F1BF BG3 Map for Full Updates (32 x 32 tiles, 2 bytes per 8x8 tile)
$F1C0-$F1CF Saved Actor Index
$F1D0-$F1DF Saved Level
$F1E0-$F20F Saved Experience

$F800-$FFFF Decompression Buffer
$0000-$2FFF BG1/BG2 Graphics
      $2800 BG1/BG2 Animation Graphics
      $2E00 Dialog Window Graphics (28 tiles)
$3000-$3FFF BG3 Graphics
      $3800 Dialog Text Graphics
$4000-$43FF Dialog Window Map Data
      $4020 Window at top of screen
      $4240 Window at bottom of screen
$4400-$47FF Dialog Text Map Data
      $4420 Window at top of screen
      $4640 Window at bottom of screen
$4800-$4FFF BG1 Map Data - 2 buffers that are swapped between during on-screen element updates (e.g. opening doors and chests.)
      $4800 - Start Buffer (4bbp, 32x32 map size, 8x8 tile size)
      $4C00 - Alternate Buffer (4bbp, 32x32 map size, 8x8 tile size)
$5000-$57FF BG2 Map Data - 2 buffers that are swapped between during on-screen element updates (e.g. in Narshe cave).
      $5000 - Start Buffer (4bbp, 32x32 map size, 8x8 tile size)
      $5400 - Alternate Buffer (4bbp, 32x32 map size, 8x8 tile size)
$5800-$5FFF BG3 Map Data - 2 buffers that are swapped between during on-screen element updates.
      $5800 - Start Buffer (4bbp, 32x32 map size, 8x8 tile size)
      $5c00 - Alternate Buffer (4bbp, 32x32 map size, 8x8 tile size)
$6000-$7FFF Sprite Graphics
      $6000 Object Graphics
      $6C00 Overlay Graphics
      $7000 Character Portrait Graphics
      $7200 Vehicle Graphics
  • ff3/ff3us/doc/asm/ram/field_ram.txt
  • Last modified: 3 years ago
  • by snaphat