Dark Ages Map Format
This format is used by Dark Ages to store game levels. It is stored as file05.da.
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.
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 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|
|107||198||from right||spikes (ceiling)|
|108||200||from above||red dude|
|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|
|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|
|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.
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!)