Dragon Warrior IV:ROM map

From Data Crystal
Jump to: navigation, search

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 $9E14), choose either Rom Bank 0C or 0D. That gives the source address of the tile graphics.

Bank 09: (24000)

Note: The pointers for maps are stored on Bank 17

Bank 09 contains Map Data for these locations:

00 Keeleon                  8000 8085 812B 81AE 81C1
01 Santeem                  8206 82DD 8344
02 Burland                  8398 850C 85DE 865D
03 Dire Palace              869B 87B5 8834 88CF
04 Endor                    88E7 8A45 8AAB 8B7D 8B96 8BB5 8C04 8C77 8DD6 8DF4 8E0F 8E2C 8E5A 8E92 8EC9
05 Bonmalmo                 8F28 8F62
06 Branca                   9063 9171 91C3 91D5
07 Soretta                  91ED 92CB
08 Gardenbur                9313 93C9 9492 9506 9544
09 Stancia                  9563 963A 9728 97A8 984B 98B4 98D8 9931
0A Aktemto                  997D
0B Riverton                 9A67 9B5B
0C Bazaar                   9BA8
0D Mintos                   9C47 9D2A 9D86
0E Tempe                    9DD2
0F Frenor                   9EE9 9FEA
10 Aneaux                   A02F A113 A136 A154
11 Haville                  A179 A2CB A321 A348 A3EA A43A
12 Izmit                    A45E A548 A597
13 Surene                   A5BB A6E6 A73A A774 A7B3
14 Hometown                 A7D1 A873 A89C
15 Monbaraba                A97F AA95 AAE2 AB8A
16 Lakanaba                 AC9D ADC1 AE03
17 Kievs                    AE2E AF1C
18 Foxville                 AF51 AFE8
19 Seaside Village          B013 B0DA B194
1A Gottside                 B1B6 B369
1B Rosaville                B3AA B4A4 B505 B528 B56B
1C Secret Playground        B570 B5CD
1D House of Prophecy        B5E6
1E Shrine to Endor          B604
1F Inn Shrine               B62F
20 Woodsman's Shack         B672
21 Desert Inn               B6BE
22 Small Medal King         B738 B78D
23 Soretta Shrine           B7CA
24 Small Island             B81F
25 Royal Crypt              B854 B88C
26 Last Refuge              B8D3
27 Gigademon Shrine         B947 B9AB B9E5
28 Anderoug Shrine          BA1D BA34 BA4C
29 Infurnus Shadow Shrine   BAAA BADA
2A Final Cave               BB11
2B Riverton Travel Door     BB41
2C Shrine of Colossus       BB4D
2D Aktemto Mine             BC25 BCBF BD80 BDA1 BE5E BEF7 BF68 BFBB (Remaining two submaps are on Bank 0A)

Bank 0A: (28000)

Note: The pointers for maps are stored on Bank 17

Bank 0A contains Map Data for these locations:

2D Aktemto Mine             803E 82EF (Previous eight submaps are on Bank 09)
2E Shrine of Breaking Waves 830C 847D
2F Padaquea Cave            84B9 84F1 8616
30 Bakor's Hideout          86C8 86F0 88D4
31 Sphere Of Silence Cave   8B0C 8B7E 8C06 8C39 8CB7
32 Golden Bracelet Cave     8CF0 8DBB
33 Secret Playground        8E5C 8EE9 8F33 8F53 8FBF 900C 902A
34 Cascade Cave             9044 9133 9311 93EB 940C
35 Final Cave               9705 978D 984E 98FB 9988 99CE 99E9 9A0B 9A59 9A80
36 Iron Safe Cave           9AA0 9AD2 9B2D 9B86 9BB0 9C4B 9C6A
37 Cave of Betrayal         9C9D 9D02 9D59
38 Silver Statuette Cave    9DAB 9DE1 9E5C 9EC0 9F95 A026
39 Branca-Izmit tunnel      A070
3A Branca-Endor tunnel      A0DF A111
3B Royal Crypt Dungeon      A15A A1E1 A269
3C Necrosaro's Lair         A2F4
3D Zenethian Tower          A507 A6EA A79C A7C6 A7F6 A814 A83D A856 A88D A8D5 A904 A94A A979 A9A6 A9CC
3E Outside Zenethia         AB0F
3F Birdsong Tower           ABE1 AC2D AC99 ACEA AD52 AD6C
40 World Tree               AD92 AE4E AF97 B0D8 B212 B327
41 Loch Tower               B40A B439 B497 B4F7 B577 B5CF
42 Lighthouse               B611 B681 B6B2 B71B B784
43 Konenber                 B7D6 B898 B8DD B904 B91C B953 B96A BAA7 BB3A BB8A BBAE
44 Radimvice Shrine         BBE4 BBFB BC1B BC59
45 Necrosaro's Palace       BCA5 BE6C BF10 BF6A BFA1   (Remaining three submaps are on Bank 0B)

Bank 0B: (2C000)

Note: The pointers for maps are stored on Bank 17

Bank 0B contains Map Data for these locations:

45 Necrosaro's Palace       8075 80C1 8158 (Previous five submaps are on Bank 0A)
46 Zenethia                 81A8 8313 834D 83B9
47 Shrine of the Horn       84C1 857A
48 Shrine of Colossus       85A8 8618 875B 8848 8945 89AF 8A5B 8B46 8BDC 8C49

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)

Maps 0x00-0x48 are defined. See Map List

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-$B4AE: Map Information data. There is one entry per submap, and after the last entry, there is an FF byte separator.
    • Byte 0: Tileset Number
    • Byte 1,2: Map Data Address (low byte then high byte)

Note: Bank number for the map is not stored in any table. There is a function at Bank 0F, Address 3E9AD that returns the bank number for a given map and submap number.