Final Fantasy IV (SNES)/RAM map

From Data Crystal
< Final Fantasy IV (SNES)
Revision as of 08:36, 9 October 2017 by Bovius (talk | contribs) (Added key for battle inventory)
Jump to navigation Jump to search

Chip tiny.png The following article is a RAM map for Final Fantasy IV (SNES).

General State

  • 7E06B1 - 1 if currently in a cutscene, 0 otherwise.
  • 7E06D5 - 0 party is moving (walking/riding/flying between squares on current map), 1 when stationary. Possibly delayed by a frame or two.
  • 7E06D9 - 1 when transitioning between maps, 0 otherwise.
  • 7E0650 - nonzero if we're currently looking at the in-game menu (also possibly shop menus?)
  • 7E02E3 - 1 when viewing the window that says what we got from a treasure chest, 0 otherwise (changes values/goes nuts during battles and screen transitions)
  • 7E08FB - item ID of the last item found in a treasure chest/pot.

Battle

  • 7E0140 - 1 if in a battle, 0 otherwise (doesn't include battle transitions)
  • 7E0685 - 1 when blurring into battle, in battle, or in post-battle transition, 0 otherwise
  • 7E26BB - battle autopilot flag. 1 when in a cutscene battle, 16 when in a non-cutscene battle, 0 when entering a battle.
  • 7E00A8 - battle results. 128 when TPK, 64 when ran away, 48 when victory, 32 when cutscene victory, 8 when cutscene defeat, 4 when fight is interrupted, 0 when in battle. Stays on last result when not in battle.
  • 7EEF8D - Current target of cursor. Possible values:
    • 0 through 7: One of the 8 possible enemy targets.
    • 8 through 12: One of the 5 possible ally targets.
    • 13: All allies
    • 255 / -1: All enemies
  • 7E000E - bit flags for which of 8 possible enemies are being targeted. 255 (all flags set) for targeting all enemies.
  • 7E00D0 - slot of party member that currently has their battle menu open (0 through 4), or 255 / -1 if nobody does.
  • 7E1822 - same as above, but does not switch to 255 after the character had chosen their action; stays on the last character to have their battle menu optin.
  • 7E00D7 - 1 when a party member's battle menu is open, 0 otherwise.
  • 7E1820 - 1 when a battle menu is in the middle of opening/closing, 0 otherwise.
  • 7E1823 - battle cursor state. Known values are:
    • 0 - no cursor
    • 1 - base menu
    • 2 - right-side Defend menu
    • 3 - left-side Change menu
    • 4 - choosing a target for an Attack command
    • 5 - Item menu
    • 6 - Spell menu
    • 7 - Choosing a target for a Skill (Aim, Kick, Jump, etc.)
    • 8 - Base menu closing after an action has been chosen
    • 9 - Spell menu opening
    • 10 - Spell menu closing
    • 11 - Equipment menu above the item menu
    • 12 - Choosing a target for an item or spell
    • 13,14 - ???
    • 15 - Closing item menu
  • 7E0060 - Cursor position in battle base menu. Can be 0 through 4.
  • 7E0063 - Cursor position in item/spell menu. Can be 0 through 23 for spell menu, 0 through 47 for item menu.
  • 7E321B - Battle item inventory. 48 items * 4 bytes per item. For each item:
    • Byte 0: item ID
    • Byte 1: Item quantity
    • Byte 2-3: unused?
  • 7E38D8 - 128 when surprised or back attack, 1 when first strike, 0 for a regular battle.
  • 7E030B - 113 when in back attack, 49 when party is oriented normally. Flickers onto 240 at start of a fight.
  • 7E00CE - Slot number of ally targeted by most recent enemy attack. Can be 0 through 4.
  • 7E2307-8 - Enemy's current HP - Slot 01
  • 7E2309-A - Enemy's max HP - Slot 01
  • 7E230B-C - Enemy's current MP - Slot 01
  • 7E230D-E - Enemy's max MP - Slot 01
  • 7E2387-E - Repeat of 7E2307-7E230E - Slot 02
  • 7E29CD - Current enemy count. Updates as enemies are killed.
  • 7E29CA - 3 bytes, one for how many enemies of the 3 possible enemy types are left in the fight. Updates as enemies are killed.
  • 7E29AD - 3 bytes, each representing the ID of one of the enemy types in the current fight. 255 for no enemy type. Values change to 255 if all enemies of that type have been killed.
  • 7E29B5 - 8 bytes, can be 0, 1, or 2, representing which enemy group from 7E29AD this enemy is. Value is 255 if no enemy is in that slot or if the enemy has been killed.
  • 7E29BD - same as 7E29B5, but retains the values from the start of the fight.
  • 7E29A3 - value that represents how the enemies are arranged; this is independent of which enemies you're actually fighting. For example, 0 is just one enemy in the middle - used for most boss fights.
  • 7EEF8E - Ability to Target single and multiple targets (00 for no)
  • 7EEF8F - Enemy target
  • 7EEF90 - Playable Character target
  • 7EF0C2 - Hit effect (graphic animation) for Fight

Map Data

  • 7E0CDD - overworld flag. Nonzero when on an overworld map.
  • 7E1701 - current plane. 0 in overworld (and some cutscenes), 1 in underworld and some moon maps, 2 for the moon. This is set for overworld and local maps.
  • 7E1702 - current local map. Does not update when exiting to overworld.
  • 7E16D2 - player's current map traversal layer (local maps). Can be 0, 1, 2, or 3.
    • Possible values:
      • 0 is always an obstacle.
      • If 1, can move to neighboring positions that have layer 1 or 3.
      • If 2, can move to neighboring positions that have layer 2 or 3.
      • If 3, can move to any non-zero neighboring layer.
    • This is part of how the game handles things like bridges and underpasses. Usually, when walking onto a bridge, the player switches from traversal layers 1 -> 3 -> 2, and then 2 -> 3 -> 1 when walking back off, but stays on layer 1 if walking underneath a bridge.
  • 7E06A1 - current map square type.
    • On local maps, this is 5 bits of flags:
      • Bits 1-0: transition layer 0, 1, 2, or 3 (see above)
      • Bit 2: Position has a bridge
      • Bit 3: Position has a save point
      • Bit 4: Position transitions to another map
    • On overworld maps, this represents the type of terrain in the current square. Known values:
      • 183: Grass/desert
      • 175: Forest
      • 167: Forest edge
      • 161,165,173: Town/cave/forest entrance
      • 180: Shoal
      • 182: River
      • 164: Ocean
      • 181: Foothills
      • 160,170,234: Mountain
      • 134: Lava
      • 0: Underworld walls
      • 133: Lunar plains (walking layer 1)
      • 200: Lunar mesa (walking layer 2)
      • 136: Lunar obstacles
      • 132: Lunar crystal palace
      • 201: Lunar ramp (walking layer 3)
  • 7E06A3 - current map square type 1 square north of player
  • 7E06A5 - current map square type 1 square east of player
  • 7E06A7 - current map square type 1 square south of player
  • 7E06A9 - current map square type 1 square west of player
  • 7E06A2 - current map square landability. Seems to be a bitmask for whether various vehicle can land in this position.
  • 7E1705 - player's facing direction. 0 = north, 1 = east, 2 = south, 3 = west
  • 7E1706 - player's current map x coordinate. Updates at start of move when moving left, updates after move is finished when moving right.
  • 7E1707 - player's current map y coordinate. Updates at start of move when moving up, updates after move is finished when moving down.
  • 7E1704 - player's current vehicle. 0 = walking, 1 = chocobo, 2 = black chocobo, 3 = hovercraft, 4 = Enterprise, 5 = Falcon, 6 = Whale.
  • 7E06A2 - Makes screen flash when walking, like damage
  • 7E06C2 - Makes screen pixelate when walking, like poison
  • 7E06C4 - Makes location's colors inverted (not sprites)
  • 7E06C9 - Layer 2's scrolling method
  • 7E06E3 - change this for screen shake
  • 7E0EDB - Tile properties for town (solid, non-solid, exit, harmful,etc...)
  • 7E1A02 - Can you save and use a tent here? (00 - no, 01 - yes)
  • 7E1E00 - Music data (instruments and the likes)
  • 7E09CF - Event for location?
  • 7E09D1 - Storyline point for location?
  • 7E1703 - Current location map
  • 7E0649 - Location name displayed (00-not currently displaying, 01-currently displaying)
  • 7E08F0 - Location NPC sprite data, palette, location, movement, etc..
  • 7F5000 - Location MAP data in RAM
  • 7E172C - Location Exit destination
  • 7E0FDE - Location NPC Layout
  • 7E0FDD - Location tileset
  • 7E0FD6 - Location Name displayed upon entering
  • 7E0FD4 - Layer 1 visibility, On/Off
  • 7E0FD3 - Layer 1 tileset (Whole maps, used for water and the likes)
  • 7E0FE0 - Layer 1 palette for locations
  • 7F4480 - Town Baron Level Data

Game/Menu Settings

  • 7E16A3 - Menu 'Time' counter (always counting up)
  • 7E1440 - Begining of Items
  • 7E16AD - Menu customize settings - Battle Speed
  • 7E16AE - Menu customize settings - Battle Message
  • 7E16B6 - Menu customize settings - Sound (Stereo/Mono)
  • 7E16AA - Menu customize settings - Window Color
  • 7E16AB - Menu customize settings - Window Color
  • 7E16A8 - Menu customize settings - Change (Front/Back)
  • 7E1500 - 7E1553 - Character Names

(Cecil/Kain/Rydia/Tellah/Edward/Rosa/Yang/Palom/Porom/Cid/Edge/FuSoYa/Golbez/Anna)

  • 7EC6B0 - Menu string "Item"
  • 7EC730 - Menu string "Magic"
  • 7EC7B0 - Menu string "Equip"
  • 7EC830 - Menu string "Status"
  • 7EC8B0 - Menu string "Form"
  • 7EC930 - Menu string "Change"
  • 7EC9B0 - Menu string "Custom"
  • 7ECA30 - Menu string "Save"
  • 7E0774 -7E0877 Popup window text (found so and so, people's text, etc.)
  • 7E8CBC - Character command strings - character slot #1
  • 7E8D20 - Character command strings - character slot #2
  • 7E8D84 - Character command strings - character slot #3
  • 7E8DE8 - Character command strings - character slot #4
  • 7E8E4C - Character command strings - character slot #5
  • 7E8EC0 -7E97A4 - Battle Item menu strings and numbers (example - Cure1: 01)
  • 7EBEEA - Enemy Names and number of (Imp 4)
  • 7EBF02 - In-battle character name (Slot #1)
  • 7EBF12 - In-battle character Current/Max HP (Slot #1)
  • 7EBF82 - In-battle character name (Slot #1)
  • 7EBF92 - In-battle character Current/Max HP (Slot #1)
  • 7E0302 - Item menu hand graphic (top menu)
  • 7E0303 - Item menu hand graphic (attribute top menu)
  • 7E0312 - Item menu hand graphic (bottom menu)
  • 7E0313 - Item menu hand graphic attribute (bottom menu)
  • 7E0300 - X coordinate of graphic hand pointer for Main Menu
  • 7E0301 - Y coordinate of graphic hand pointer for Main Menu
  • 7E0302 - Graphic for hand pointer for Main Menu
  • 7E0301 - Y coordinate of graphic hand pointer for Equip Menu (choosing which area of equipment you are changing in top menu)
  • 7E0300 - X coordinate of graphic hand pointer for Equip Menu (choosing which area of equipment you are changing in top menu)
  • 7E0301 - Y coordinate of graphic hand pointer for Equip Menu (choosing which area of equipment you are changing in top menu)
  • 7E0310 - X coordinate of graphic hand pointer for Equip Menu (choosing which area of equipment you are changing in bottom menu
  • 7E0311 - Y coordinate of graphic hand pointer for Equip Menu (choosing which area of equipment you are changing in bottom menu)

Characters

The following 64-byte memory blocks contain out-of-battle character data:

  • 7E1000: Center Character
  • 7E1040: Upper Character
  • 7E1080: Lower Character
  • 7E10C0: Center-up Character
  • 7E1100: Center-low Character

The following 128-byte memory blocks contain in-battle character data:

  • 7E2000: Center Character
  • 7E2080: Upper Character
  • 7E2100: Lower Character
  • 7E2180: Center-up Character
  • 7E2200: Center-low Character

Use the following offsets to gather information about each character:

  • +0: Character identifier. Read this modulo 64 - the 2 most significant bits appear to be flags. Known values are:
    • 1: Cecil (Dark Knight)
    • 2: Kain (beginning of game)
    • 3: Young Rydia
    • 4: Tellah (pre-Damycam)
    • 5: Gilbert
    • 6: Rosa (pre-Fabul)
    • 7: Yang (pre-Baron)
    • 8: Palom
    • 9: Porom
    • 10: Tellah (pre-Paladin)
    • 11: Cecil (Paladin)
    • 12: Tellah (post-Paladin)
    • 13: Yang (post-Baron)
    • 14: Cid
    • 15: Kain (pre-Sealed Cave)
    • 16: Rosa (final)
    • 17: Rydia (final)
    • 18: Edge
    • 19: FuSoYa
    • 20: Kain (final)
  • +2: Level.
  • +3: Status flags. (4 bytes)
  • +7: Current HP. (2 bytes)
  • +9: Max HP. (2 bytes)
  • +11: Current MP. (2 bytes)
  • +13: Max MP. (2 bytes)
  • +16 through +47: Various stats (Strength, Agility, etc.)
  • +48: Head equipment slot
  • +49: Body equipment slot
  • +50: Arms equipment slot
  • +51: Right hand equipment slot
  • +52: ???
  • +53: Left hand equipment slot

Miscellaneous