+
Skip to content

esno/rda

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Anno Resource Files (.rda)

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

compile from source

make

usage

console

format

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.

rda header

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

magic

  • UTF-16 representation of the string Resource File V2.0
  • UTF-8 representation of the string Resource File V2.2

block header

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

flags

Flag Description
0x0001 compressed
0x0010 encrypted
0x0100 memory-resident
0x1000 deleted

block pointer

the end of the linked list is indicated by an empty block with pointer value of 0.

file header

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)

path

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

点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载