{"id":31849200,"url":"https://github.com/esno/rda","last_synced_at":"2025-10-12T11:01:35.126Z","repository":{"id":313381099,"uuid":"1050608054","full_name":"esno/rda","owner":"esno","description":"extractor for rda file archives used in anno games","archived":false,"fork":false,"pushed_at":"2025-09-05T17:41:08.000Z","size":250,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-09-17T01:16:08.827Z","etag":null,"topics":["anno","anno-117","anno-1404","anno-1800","anno-2070","anno-2205","gamemodding","modding-games","modding-tools","rda"],"latest_commit_sha":null,"homepage":"https://en.wikipedia.org/wiki/Anno_(video_game_series)","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/esno.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-04T17:11:37.000Z","updated_at":"2025-09-05T17:47:44.000Z","dependencies_parsed_at":"2025-09-05T18:34:31.072Z","dependency_job_id":"a965d840-d870-4d8e-a19d-aa3ffb7d2390","html_url":"https://github.com/esno/rda","commit_stats":null,"previous_names":["esno/rda"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/esno/rda","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esno%2Frda","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esno%2Frda/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esno%2Frda/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esno%2Frda/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/esno","download_url":"https://codeload.github.com/esno/rda/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esno%2Frda/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279011048,"owners_count":26084865,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-12T02:00:06.719Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anno","anno-117","anno-1404","anno-1800","anno-2070","anno-2205","gamemodding","modding-games","modding-tools","rda"],"created_at":"2025-10-12T11:00:17.861Z","updated_at":"2025-10-12T11:01:35.113Z","avatar_url":"https://github.com/esno.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Anno Resource Files (.rda)\n\nAnno is one of the greatest city builder and economy simulators out there.\nthis tool shall extract its game data to allow game modifications\non linux-based systems.\n\n\u003e be aware that it is in a very early stage\n\n## compile from source\n\n    make\n\n## usage\n\n![console](./assets/console.png \"console\")\n\n## format\n\nthere are two known versions out there\n\n| Version | Used in         |\n| ------- | --------------- |\n| 2.0     | 1404, 2070      |\n| 2.2     | 117, 1800, 2205 |\n\nthe file structure is as follow\n\n| Section    | Fields        |\n| ---------- | ------------- |\n| rda header | magic         |\n|            | reserved      |\n|            | block pointer |\n| rda data   | file data     |\n|            | file data     |\n|            | file data     |\n|            | ...           |\n|            | file header   |\n|            | file header   |\n|            | file header   |\n|            | ...           |\n|            | block header  |\n|            | file data     |\n|            | file data     |\n|            | ...           |\n|            | file header   |\n|            | file header   |\n|            | ...           |\n|            | block header  |\n|            | ...           |\n\nthe `magic` field describes the archive version.\n\nthe `block pointer` locates the first block header and works as entrypoint\nto a linked list of block headers to access the block data.\n\n### rda header\n\n| Field         | Version | Offset | Size |\n| ------------- | ------- | ------ | ---- |\n| magic         | 2.0     | 0      | 36   |\n|               | 2.2     | 0      | 18   |\n| reserved      | 2.0     | 36     | 1008 |\n|               | 2.2     | 18     | 766  |\n| block pointer | 2.0     | 1008   | 4    |\n|               | 2.2     | 784    | 8    |\n\n#### magic\n\n* UTF-16 representation of the string `Resource File V2.0`\n* UTF-8 representation of the string `Resource File V2.2`\n\n### block header\n\n| Field             | Version | Offset | Size |\n| ----------------- | ------- | ------ | ---- |\n| flags             |         | 0      | 4    |\n| files             |         | 4      | 4    |\n| size compressed   | 2.0     | 8      | 4    |\n|                   | 2.2     | 8      | 8    |\n| size uncompressed | 2.0     | 12     | 4    |\n|                   | 2.2     | 16     | 8    |\n| block pointer     | 2.0     | 16     | 4    |\n|                   | 2.2     | 24     | 8    |\n\n#### flags\n\n| Flag     | Description     |\n| -------- | --------------- |\n| `0x0001` | compressed      |\n| `0x0010` | encrypted       |\n| `0x0100` | memory-resident |\n| `0x1000` | deleted         |\n\n#### block pointer\n\nthe end of the linked list is indicated by an empty block with pointer value of `0`.\n\n### file header\n\n| Field             | Version | Offset | Size |\n| ----------------- | ------- | ------ | ---- |\n| path              |         | 0      | 520  |\n| data pointer      | 2.0     | 520    | 4    |\n|                   | 2.2     | 520    | 8    |\n| size compressed   | 2.0     | 524    | 4    |\n|                   | 2.2     | 528    | 8    |\n| size uncompressed | 2.0     | 528    | 4    |\n|                   | 2.2     | 536    | 8    |\n| mtime             | 2.0     | 532    | 4    |\n|                   | 2.2     | 544    | 8    |\n| reserved          | 2.0     | 536    | 4    |\n|                   | 2.2     | 552    | 8    |\n\nthe location of the first `file header` is right before the `block header`.\n\u003e file header offset = block header offset - size compressed\n\nsince one block can contain many files one has to traverse all `file header`\nstarting from the first.\n\u003e file header offset = block header offset - size compressed + (file header size * n)\n\n### path\n\nthe file path and name (e.g. `data/fonts/31df-udmarugothic-w4.ttc`).\nit is an array of null-terminated characters (`d\\0a\\0t\\0`...).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fesno%2Frda","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fesno%2Frda","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fesno%2Frda/lists"}