Welcome to Data Crystal's new home! Data Crystal is now part of the TCRF family (sort of).
The wiki has recently moved; please report any issues in Discord. Pardon the dust.

Ultima VI: The False Prophet/RAM map: Difference between revisions

From Data Crystal
Jump to navigation Jump to search
(Created page with "{{rammap|game=Ultima VI: The False Prophet}} ==Mobs== Mob data is split across 16 arrays in range {{hex|7e8000}}-{{hex|7e9fff}}, each holding 2 bytes per mob with room for...")
 
No edit summary
Line 44: Line 44:
  Address  Size    Description
  Address  Size    Description
  -------  ----    -----------
  -------  ----    -----------
       3c     1    Selected spell level in the Cast menu
       3C     1    Selected spell level in the Cast menu
     209    1    Index of currently selected menu item
     209    1    Index of currently selected menu item
     8a56   12    vtable for menu functions (Inventory is special-cased)
     17FF          Unpacked spellbook (8 bytes per level, populated with indexes of known spells)
    8A56   12    vtable for menu functions (Inventory is special-cased)
   038000          Talk function
   038000          Talk function
   038476          Look function
   038476          Look function
   0382bb         Attack function
   0382BB         Attack function
   038432          Cast function
   038432          Cast function
   01b64d         Camp function
   01B64D         Camp function
   03880e         Save function
   03880E         Save function


==Misc==
==Misc==
Line 68: Line 69:
     A00          Queue of DMA copies for this frame
     A00          Queue of DMA copies for this frame
     1300  1FF    Tile data copied to OAM each frame
     1300  1FF    Tile data copied to OAM each frame
    17FF          Spellbook (8 bytes per level, populated with spell indexes as they're learned)
     A3BA    1    Screen fadeout level - 0F for full vision, 00 for faded to black
     A3BA    1    Screen fadeout level - 0F for full vision, 00 for faded to black
   1014B    1    Amount of karma
   1014B    1    Amount of karma

Revision as of 23:07, 1 January 2021

Chip tiny.png The following article is a RAM map for Ultima VI: The False Prophet.

Mobs

Mob data is split across 16 arrays in range 7e8000-7e9fff, each holding 2 bytes per mob with room for 256 mobs.

Address     Description
-------    -----------
 7E8000    Byte 0: sprite ID
           Byte 1: ???
 7E8200    Byte 0: ???
           Byte 1: animation state (whether moving, facing direction, animation frame)
 7E8400
 7E8600
 7E8800
 7E8A00
 7E8C00
 7E8E00    X coordinate
 7E9000    Y coordinate
 7E9200    Strangely packed version of coordinates, only for visible mobs
 7E9400    AI data? Always 00 00 for NPCs in your party
 7E9600    Initial X coordinate
 7E9800    Initial Y coordinate
 7E9A00
 7E9C00
 7E9E00    Byte 0: ID of potential party member? NPCs that can be party members have the values 01-0d assigned in ascending order
                   Empty mob AB has the value 0E
                   Empty mob AE has the value 0F
                   All other mobs have the value 0
                   The memory immediately after, 7EA000, has a compacted version of this array using only 1 byte per mob.
                   This may be a mapping of mob IDs to inventory IDs or combat stats.

Mob indexes:

Mob index  Description
---------  -----------
00         Empty
01-A7      NPCs
A8-CB      Empty?
CC-FF      Dynamically allocated mobs, i.e. spawned monsters

Menu

Address  Size    Description
-------  ----    -----------
     3C     1    Selected spell level in the Cast menu
    209     1    Index of currently selected menu item
   17FF          Unpacked spellbook (8 bytes per level, populated with indexes of known spells)
   8A56    12    vtable for menu functions (Inventory is special-cased)
 038000          Talk function
 038476          Look function
 0382BB          Attack function
 038432          Cast function
 01B64D          Camp function
 03880E          Save function

Misc

Address  Size    Description
-------  ----    -----------
     49     2    Joy1 input state (whether a button is currently pressed)
     4B     2    Joy2 input state (whether a button is currently pressed)
     4D     2    Joy1 input state (whether a button started being pressed this frame)
     4F     2    Joy2 input state (whether a button started being pressed this frame)
     AB     2    Pointer to start of sprite data for visible mobs (always 0500)
     AD     2    Pointer to end of sprite data for visible mobs
     B5     2    Pointer to the next available slot for DMA copies
    500          Sprite data for visible mobs
    A00          Queue of DMA copies for this frame
   1300   1FF    Tile data copied to OAM each frame
   A3BA     1    Screen fadeout level - 0F for full vision, 00 for faded to black
  1014B     1    Amount of karma
  1014C     2    Amount of gold
 7N0151     1    Hour
 7E0152     1    Minute
 7F0000  FFFF    Temp space and output buffer for decompressed data