Dragon Warrior IV:ROM map

From Data Crystal
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Bank 08: (20000)

  • $8229 = Table with three possible base addresses for graphics tile data
    • Value 0x8000 (used with ROM bank 0C)
    • Value 0x7F01 (used with ROM bank 0D)
    • Value 0x9E14 (used with ROM bank 0D)
  • Memory around $8B9B (find this): Tile Numbers (TODO)
  • Tile Numbers:
    • Byte 0: yyyAAXXX
    • Byte 1: xxxxxxxx
      • yyy = Smoothing flags for front-facing tiles
      • AA = Attribute data (which Color palette to use)
      • XXXxxxxxxxx Tile number (Used as index into table $A80D)
  • $A80D = Table of tiles, three bytes per entry
    • Byte 0: Low byte of physical tile number
    • Byte 1: AAAABBCC
      • AAAA = ??? Flags for which VRAM tiles are unique or duplicated
      • BB = Which graphics page to read the tile graphics from
      • CC = High two bits of physical tile number
    • Byte 2: Tile Behavior (empty space, walls, water, stairs, etc...) See: Tile Behavior

Multiply Physical Tile Number by 16, add Base Address from table $8229 depending on graphic page value. ($8000, $7F01, or $8E14), choose either Rom Bank 0C or 0D. That gives the source address of the tile graphics.

Bank 0C: (30000)

  • $8000: Map Tile Graphics. Used when the game wants the tile graphics from page 0

Bank 0D: (34000)

  • $8001: Map Tile graphics. Used when the game wants tile graphics from page 1
  • $9F14: Map Tile graphics. Used when the game wants tile graphics from page 2
  • $B304: Character sprite graphics
  • $BE44: Empty space
  • $BFD4: End of empty space, some other code or data

Bank 0E: (38000)

  • $8097: Character sprite graphics
  • $BAD7: end of character sprite graphics, some other code or data

Bank 17: (5C000)

There are 0x49 maps defined. There are two variables used to look up map numbers: Main Map Number ($63), and Submap Number ($64). Submaps include upstairs areas or different floors of a dungeon.

  • $B08D-$B11F: Pointer Table for Map Information. Points to a 3-byte Map Information Data entry. Add 3 * Submap Number to the address to select a Submap instead.
  • $B121-$B490+: Map Information data
    • Byte 0: Tileset Number
    • Byte 1,2: Map Data Address (low byte then high byte)