Dark Ages Map Format

From ModdingWiki
Jump to navigation Jump to search
Dark Ages Map Format
Dark Ages Map Format.png
Format typeMap/level
Map type2D tile-based
Layer count1
Tile size (pixels)16×16
Viewport (pixels)240×144
Games

This format is used by Dark Ages to store game levels. It is stored as file05.da[123].

Signature

There is no header or signature in the file. Each level is 1152 bytes long, so the file must be a multiple of this size. Since the game has 10 levels, all the files are 11,520 bytes long.

Format

All levels in the episode are stored in the same file, one after the other. Each level is 128 cells wide and 9 cells high. Each cell occupies one byte in the map file, so each level takes up 1152 bytes (128 × 9).

Map codes

Map code 0 maps to the first image in the first tileset, 1 maps to the second image in the first tileset. Map code 50 maps to the first image in the second tileset, etc. This is true for all 256 map codes, except for map codes 100 through 143 inclusive. Those map codes must be mapped back to images manually, via a lookup table. Lookup tables are available in those level editors/viewers that include source code.

Tile code Suggested icon Background Description
100 150 from right green gem (increases firepower)
101 158 from right gold coin
102 168 from right green monster
103 174 from right fly/moth
104 184 from above lava
105 188 from above slime
106 192 from right stalagtite
107 198 from right spikes (ceiling)
108 200 from above red dude
109 230 from right boulder
110 234 from above door
111 236 from right spider (ceiling)
112 239 from right spider (ground)
113 242 from right frog (jumps left)
114 246 from right frog (jumps right)
115 250 from below cobwebs (top-left corner)
116 251 from below cobwebs (top-right corner)
117 252 from above cobwebs (bottom-left corner)
118 253 from above cobwebs (bottom-right corner)
119 254 from right wizard
(this also replaces the tile below it with the tile to the right of that one, probably a bug)
120 154 from left item: key
121 155 from left item: ankh
122 156 from left item: shield
123 157 from left item: apple
124 262 29 falling brick
125 264 from below leaky pipe
126 258 from above handrail, left
127 259 from above handrail, middle
128 260 from above handrail, right
129 273 from left large column, bottom
130 274 from left large colump, middle
131 275 from left large column, top
132 10 81 hidden passage
133 280 from right hand with scroll 1
134 281 from left hand with scroll 2
135 282 from left power up statue 1
136 283 from left power up statue 2
137 285 from right small column (2 tiles high)
(also replaces tile above it with the tile to the right of that one)
138 286 from right water fountain (middle)
139 290 from right water fountain (top, moving up & down)
140 182 from left shootable button
141 296 from above bone claw
142 180 from right heart (full heal)
143 300 from above Garth (boss monster)

These tile numbers are to be applied to the combined tileset loaded from the files FILE06.DA? to FILE12.DA?. Tiles 0 to 49 are loaded from FILE06.DA?, tiles 50 to 99 from FILE07.DA? and so on. The final tileset file, FILE12.DA?, only contains 2 full tiles, leadin to a total of 302 tiles. The game tries tries to load 400 image bytes (the equvalent of 2.5 tiles) from the final tileset file for some reason. That file is only 384 bytes in size.

Tile attributes are hard-coded as well:

  • Tiles 0 to 39 are fully blocking for all game objects.
  • Tiles 30 to 49 are fully blocking for the enemies, but the player can stand on (or in) them and can also walk and shoot through these tiles.
  • Tile 29 hurts the player when the player jumps into it from below.
  • Tiles 50 and above don't block anything.
  • Tiles 50 to 80 are animated in three frames, consisting of the base tile and the two following tiles.

Credits

This file format was reverse engineered by Frenkel. The tile mapping table and tile attributes were reverse engineered by K1n9_Duk3 If you find this information helpful in a project you're working on, please give credit where credit is due. (A link back to this wiki would be nice too!)