====== 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. ==== $0000-$00FF: Field Direct Page ==== +$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) ==== $0100-$01FF: Battle RAM ==== See [[ff3:ff3us:doc:asm:ram:battle_ram| Battle RAM]]. ==== $0200-$02FF: Menu RAM ==== See [[ff3:ff3us:doc:asm:ram:menu_ram| Menu RAM]]. ==== $0300-$051F: Sprite Data ==== 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-$119F: Field RAM ==== $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: (copied to $0592) e: (copied to $0592) f: (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) ==== $11A0-$11FF: Shared RAM ==== Shared between Field, [[ff3:ff3us:doc:asm:ram:battle_ram| Battle]], and [[ff3:ff3us:doc:asm:ram:world_ram| 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 ==== $1200-$12FF: Copy of Direct Page ==== The field direct page ($0000-$00FF) gets copied here during battle and when on the world world map. ==== $1300-$14FF: Sound/Music RAM ==== See [[ff3:ff3us:doc:asm:ram:sound_music_ram| Sound/Music RAM]]. ==== $1500-$15FF: Interrupt Code and CPU Stack ==== $1500-$1503 NMI Jump Code $1504-$1507 IRQ Jump Code $1508-$15FF CPU Stack ==== $1600-$1FFF: Save RAM ==== This data (0x0A00 bytes) is saved to SRAM when the game is saved. Also see [[ff3:ff3us:doc:asm:ram:sram| 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) ==== $7E/2000-$7F/FFFF Field WRAM ==== $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 ===== Field VRAM ===== $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