User Tools

Site Tools


en:games:star_trek_armada_1:zone_file_system

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
en:games:star_trek_armada_1:zone_file_system [2025-05-05-00-12] – [ODF Files] 7saturnen:games:star_trek_armada_1:zone_file_system [2025-05-05-00-25] (current) – [Zone File System] 7saturn
Line 1: Line 1:
 ====== Zone File System ====== ====== Zone File System ======
-The //Zone File System// is a method used by //Star Trek: Armada// to store game assets in archive-like files, namely the //objtxt.zfs// and //assets.zfs//. Especially the latter contains most of the [[en:games:star_trek_armada_1:modding:ODF files]] as well as the [[en:games:star_trek_armada_1:modding:tech_tree_file|tech tree files]]. The contents are not stored in their plain format, so the whole storage method may be considered kind of a method of obfuscation of actual game assets. The format is, however not very complicated to decipher/unpack.+The //Zone File System// is a method used by //Star Trek: Armada// to store game assets in archive-like files, namely the //objtxt.zfs// and //assets.zfs//. Especially the latter contains most of the [[en:games:star_trek_armada_1:modding:ODF files]] as well as the [[en:games:star_trek_armada_1:modding:tech_tree_file|tech tree files]]. The contents are not stored in their plain format, so the whole storage method may be considered kind of a method of obfuscation of actual game assets. The format is, however not very complicated to decipher/unpack. [[en:games:star_trek_-_armada_2|Star Trek: Armada II]] did not use this method of delivering game contents any more.
 ===== ZFS File Format ===== ===== ZFS File Format =====
 A ZFS has a header as well as directory-like sections and actual file content sections. A ZFS has a header as well as directory-like sections and actual file content sections.
Line 6: Line 6:
 The header has a length of 28 byte, consisting of the following information: The header has a length of 28 byte, consisting of the following information:
 ^  Start Offset  ^  Data Type  ^  Meaning  ^ ^  Start Offset  ^  Data Type  ^  Meaning  ^
-| 0 | uint32 | ID of the File, usually ''ZFSF'' |+| 0 | uint32 | ID of the File, Usually ''ZFSF'' |
 | 4 | uint32 | Version of the Format of the File, for Armada That is 1. | | 4 | uint32 | Version of the Format of the File, for Armada That is 1. |
 | 8 | uint32 | Maximum length of a File Name in Directories (//max. file name length//). | | 8 | uint32 | Maximum length of a File Name in Directories (//max. file name length//). |
Line 40: Line 40:
  
 If the //Next Directory Block Offset// is zero it implies that no more directory blocks follow, marking the block the last one of the directory. If the //Next Directory Block Offset// is zero it implies that no more directory blocks follow, marking the block the last one of the directory.
-===== objtxt.zfs ===== 
-The stock game file //objtxt.zfs// contains mostly mission objective texts as well as one //testobjectives.t// file: 
  
-  * //b1ob1.txt//, +==== Encryption/File Contents ==== 
-  * //b1ob2.txt//, +The file content itself is not stored in plain in the ZFS fileswhile the file names and metadata of directories areThe >>encryption<< of the file contents is actually very simple: Each file is stored in chunks of 4 byteseach being xor-ed with the //Cypher Key// taken from the headerSo in essence the >>password<< is provided along with the encrypted file contentsThis is why this method of storage cannot seriously be considered proper encryptionNeither is the algorithm strongnor is an already provided password any serious blockage from reading the fileIt's at best a method of obfuscating things
-  * //b1ob3.txt//, + 
-  * //b1ob4.txt//+
-  * //b3ob1.txt//, +
-  * //b3ob2.txt//, +
-  * //b4ob1.txt//, +
-  * //b5ob1.txt//, +
-  * //f1ob1.txt//, +
-  * //f1ob2.txt//, +
-  * //f1ob3.txt//, +
-  * //f2ob1.txt//, +
-  * //f2ob2.txt//, +
-  * //f2ob3.txt//, +
-  * //f2ob4.txt//, +
-  * //f2ob5.txt//, +
-  * //f2ob6.txt//, +
-  * //f3ob1.txt//, +
-  * //f3ob2.txt//, +
-  * //f3ob3.txt//, +
-  * //f5ob1.txt//, +
-  * //f5ob2.txt//, +
-  * //f5ob3.txt//, +
-  * //f5ob4.txt//, +
-  * //f5ob5.txt//, +
-  * //fi1ob1.txt//, +
-  * //fi1ob2.txt//, +
-  * //fi4ob1.txt//, +
-  * //fi4ob2.txt//, +
-  * //fi5ob1.txt//, +
-  * //fi5ob2.txt//, +
-  * //fi5ob3.txt//, +
-  * //fi5ob4.txt//, +
-  * //fi5tm1.txt//, +
-  * //fi5tm2.txt//, +
-  * //fi5tm3.txt//, +
-  * //fi5tm4.txt//, +
-  * //fi5tm5.txt//, +
-  * //fi5tm6.txt//, +
-  * //fi5tm7.txt//, +
-  * //fi5tm8.txt//, +
-  * //fi5tm9.txt//, +
-  * //fi6ob1.txt//, +
-  * //fi6ob2.txt//, +
-  * //fi6ob3.txt//, +
-  * //fi6ob4.txt//, +
-  * //fi6ob5.txt//, +
-  * //fi6ob6.txt//, +
-  * //k1ob1.txt//, +
-  * //k1ob2.txt//, +
-  * //k1ob3.txt//, +
-  * //k3ob1.txt//, +
-  * //k4ob1.txt//, +
-  * //k5ob1.txt//, +
-  * //r2ob1.txt//, +
-  * //r2ob10.txt//, +
-  * //r2ob11.txt//, +
-  * //r2ob12.txt//, +
-  * //r2ob2.txt//, +
-  * //r2ob3.txt//, +
-  * //r2ob4.txt//, +
-  * //r2ob5.txt//, +
-  * //r2ob6.txt//, +
-  * //r2ob7.txt//, +
-  * //r2ob8.txt//, +
-  * //r2ob9.txt//, +
-  * //r2tm1.txt//, +
-  * //r2tm2.txt//, +
-  * //r2tm3.txt//, +
-  * //r2tm4.txt//, +
-  * //r3ob1.txt//, +
-  * //r3ob2.txt//, +
-  * //r3ob3.txt//, +
-  * //r3ob4.txt//, +
-  * //r4ob1.txt//, +
-  * //r4ob2.txt//, +
-  * //r5ob1.txt//, +
-  * //r5ob2.txt//, +
-  * //r5ob3.txt//, +
-  * //r5ob4.txt// and +
-  * //testobjectives.t//.+
  
 ===== assets.zfs ===== ===== assets.zfs =====
 This file contains almost all the [[.modding:ODF files]] as well as [[.modding:Tech Tree File|tech tree files]]: This file contains almost all the [[.modding:ODF files]] as well as [[.modding:Tech Tree File|tech tree files]]:
 ==== ODF Files ==== ==== ODF Files ====
 +This is the list of ODF files provided in the //assest.zfs// file:
 +++++ (click to expand) |
   * //alien.odf//,   * //alien.odf//,
   * //amine.odf//,   * //amine.odf//,
Line 617: Line 540:
   * //zsonbat.odf// and   * //zsonbat.odf// and
   * //zsondest.odf//.   * //zsondest.odf//.
 +
 +++++
  
 The following ODF files are replaced by stock patch files in the //addon// folder: The following ODF files are replaced by stock patch files in the //addon// folder:
Line 628: Line 553:
 This means, these particular files will (effectively) **not** be taken from the ZFS file but from the file placed by the 1.2 patch in folder //addon//. The unpatched files in the ZFS are still present, but the //addon// folder mechanism overriding them makes it possible to deliver only a few patched files, instead of re-distributing ~800 kB of ODF data and tech tree files. This means, these particular files will (effectively) **not** be taken from the ZFS file but from the file placed by the 1.2 patch in folder //addon//. The unpatched files in the ZFS are still present, but the //addon// folder mechanism overriding them makes it possible to deliver only a few patched files, instead of re-distributing ~800 kB of ODF data and tech tree files.
 ==== Tech Tree Files ==== ==== Tech Tree Files ====
 +This is the list of tech tree files provided in the //assest.zfs// file:
 +
 +++++ (click to expand) |
 +
   * //borg4.tt//,   * //borg4.tt//,
   * //borg5.tt//,   * //borg5.tt//,
Line 655: Line 584:
   * //supersid.tt// and   * //supersid.tt// and
   * //tech1.tt//.   * //tech1.tt//.
-==== Encryption/File Contents ==== + 
-The file content itself is not stored in plain in the ZFS files, while the file names and metadata of directories areThe >>encryption<< of the file contents is actually very simpleEach file is stored in chunks of 4 byteseach being xor-ed with the //Cypher Key// taken from the headerSo in essence the >>password<< is provided along with the encrypted file contentsThis is why this method of storage cannot seriously be considered proper encryptionNeither is the algorithm strongnor is an already provided password any serious blockage from reading the fileIt's at best a method of obfuscating things.+++++ 
 + 
 +===== objtxt.zfs ===== 
 +The stock game file //objtxt.zfs// contains mostly mission objective texts as well as one //testobjectives.t// file: 
 + 
 +++++ (click to expand) | 
 + 
 +  * //b1ob1.txt//, 
 +  * //b1ob2.txt//
 +  * //b1ob3.txt//, 
 +  * //b1ob4.txt//, 
 +  * //b3ob1.txt//, 
 +  * //b3ob2.txt//, 
 +  * //b4ob1.txt//, 
 +  * //b5ob1.txt//, 
 +  * //f1ob1.txt//, 
 +  * //f1ob2.txt//, 
 +  * //f1ob3.txt//, 
 +  * //f2ob1.txt//, 
 +  * //f2ob2.txt//, 
 +  * //f2ob3.txt//, 
 +  * //f2ob4.txt//, 
 +  * //f2ob5.txt//, 
 +  * //f2ob6.txt//, 
 +  * //f3ob1.txt//, 
 +  * //f3ob2.txt//, 
 +  * //f3ob3.txt//, 
 +  * //f5ob1.txt//, 
 +  * //f5ob2.txt//, 
 +  * //f5ob3.txt//, 
 +  * //f5ob4.txt//, 
 +  * //f5ob5.txt//, 
 +  * //fi1ob1.txt//, 
 +  * //fi1ob2.txt//, 
 +  * //fi4ob1.txt//, 
 +  * //fi4ob2.txt//, 
 +  * //fi5ob1.txt//, 
 +  * //fi5ob2.txt//, 
 +  * //fi5ob3.txt//, 
 +  * //fi5ob4.txt//, 
 +  * //fi5tm1.txt//, 
 +  * //fi5tm2.txt//, 
 +  * //fi5tm3.txt//, 
 +  * //fi5tm4.txt//, 
 +  * //fi5tm5.txt//, 
 +  * //fi5tm6.txt//, 
 +  * //fi5tm7.txt//, 
 +  * //fi5tm8.txt//, 
 +  * //fi5tm9.txt//, 
 +  * //fi6ob1.txt//, 
 +  * //fi6ob2.txt//, 
 +  * //fi6ob3.txt//, 
 +  * //fi6ob4.txt//, 
 +  * //fi6ob5.txt//, 
 +  * //fi6ob6.txt//, 
 +  * //k1ob1.txt//, 
 +  * //k1ob2.txt//, 
 +  * //k1ob3.txt//, 
 +  * //k3ob1.txt//, 
 +  * //k4ob1.txt//, 
 +  * //k5ob1.txt//, 
 +  * //r2ob1.txt//, 
 +  * //r2ob10.txt//, 
 +  * //r2ob11.txt//, 
 +  * //r2ob12.txt//, 
 +  * //r2ob2.txt//, 
 +  * //r2ob3.txt//, 
 +  * //r2ob4.txt//, 
 +  * //r2ob5.txt//, 
 +  * //r2ob6.txt//, 
 +  * //r2ob7.txt//, 
 +  * //r2ob8.txt//, 
 +  * //r2ob9.txt//, 
 +  * //r2tm1.txt//, 
 +  * //r2tm2.txt//, 
 +  * //r2tm3.txt//, 
 +  * //r2tm4.txt//, 
 +  * //r3ob1.txt//, 
 +  * //r3ob2.txt//, 
 +  * //r3ob3.txt//, 
 +  * //r3ob4.txt//, 
 +  * //r4ob1.txt//, 
 +  * //r4ob2.txt//, 
 +  * //r5ob1.txt//, 
 +  * //r5ob2.txt//, 
 +  * //r5ob3.txt//, 
 +  * //r5ob4.txt// and 
 +  * //testobjectives.t//
 + 
 +++++
  
 {{page>footer&nofooter}} {{page>footer&nofooter}}
en/games/star_trek_armada_1/zone_file_system.1746403968.txt.gz · Last modified: 2025-05-05-00-12 by 7saturn

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki