Anno is one of the greatest city builder and economy simulators out there. this tool shall extract its game data to allow game modifications on linux-based systems.
be aware that it is in a very early stage
make
there are two known versions out there
| Version | Used in |
|---|---|
| 2.0 | 1404, 2070 |
| 2.2 | 117, 1800, 2205 |
the file structure is as follow
| Section | Fields |
|---|---|
| rda header | magic |
| reserved | |
| block pointer | |
| rda data | file data |
| file data | |
| file data | |
| ... | |
| file header | |
| file header | |
| file header | |
| ... | |
| block header | |
| file data | |
| file data | |
| ... | |
| file header | |
| file header | |
| ... | |
| block header | |
| ... |
the magic field describes the archive version.
the block pointer locates the first block header and works as entrypoint
to a linked list of block headers to access the block data.
| Field | Version | Offset | Size |
|---|---|---|---|
| magic | 2.0 | 0 | 36 |
| 2.2 | 0 | 18 | |
| reserved | 2.0 | 36 | 1008 |
| 2.2 | 18 | 766 | |
| block pointer | 2.0 | 1008 | 4 |
| 2.2 | 784 | 8 |
- UTF-16 representation of the string
Resource File V2.0 - UTF-8 representation of the string
Resource File V2.2
| Field | Version | Offset | Size |
|---|---|---|---|
| flags | 0 | 4 | |
| files | 4 | 4 | |
| size compressed | 2.0 | 8 | 4 |
| 2.2 | 8 | 8 | |
| size uncompressed | 2.0 | 12 | 4 |
| 2.2 | 16 | 8 | |
| block pointer | 2.0 | 16 | 4 |
| 2.2 | 24 | 8 |
| Flag | Description |
|---|---|
0x0001 |
compressed |
0x0010 |
encrypted |
0x0100 |
memory-resident |
0x1000 |
deleted |
the end of the linked list is indicated by an empty block with pointer value of 0.
| Field | Version | Offset | Size |
|---|---|---|---|
| path | 0 | 520 | |
| data pointer | 2.0 | 520 | 4 |
| 2.2 | 520 | 8 | |
| size compressed | 2.0 | 524 | 4 |
| 2.2 | 528 | 8 | |
| size uncompressed | 2.0 | 528 | 4 |
| 2.2 | 536 | 8 | |
| mtime | 2.0 | 532 | 4 |
| 2.2 | 544 | 8 | |
| reserved | 2.0 | 536 | 4 |
| 2.2 | 552 | 8 |
the location of the first file header is right before the block header.
file header offset = block header offset - size compressed
since one block can contain many files one has to traverse all file header
starting from the first.
file header offset = block header offset - size compressed + (file header size * n)
the file path and name (e.g. data/fonts/31df-udmarugothic-w4.ttc).
it is an array of null-terminated characters (d\0a\0t\0...).