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
...).