Difference between revisions of "Eldos Solid File System ST XFS"

From XentaxWiki
Jump to: navigation, search
(Format Specifications)
(Attributes)
 
(6 intermediate revisions by the same user not shown)
Line 8: Line 8:
 
=== Format Specifications ===  
 
=== Format Specifications ===  
  
<div class="toccolours mw-collapsible" id="mw-customcollapsible-myDivision" style="width:800px; overflow:auto;">
+
<div class="toccolours mw-collapsible" id="mw-customcollapsible-myDivision" style="width:900px; overflow:auto;">
 
<pre>
 
<pre>
 
// Eldos Solid File System  
 
// Eldos Solid File System  
Line 16: Line 16:
 
2 bytes (uint16) - unknown // 12
 
2 bytes (uint16) - unknown // 12
 
2 bytes (char) - magic  // NW
 
2 bytes (char) - magic  // NW
num_of_values *
+
num_of_entries *
 
{
 
{
   2 bytes (uint16) - entry type  // 33 - root info structure or directory info structure
+
   2 bytes (uint16) - entry type  // 33 - directory info structure
 
                                 // 32 - any other structure with data?
 
                                 // 32 - any other structure with data?
 
                                 // 0 - end structure or nothing
 
                                 // 0 - end structure or nothing
Line 43: Line 43:
  
 
// unknown structure   
 
// unknown structure   
4 bytes (uint32) - type1 // 32
+
4 bytes (uint32) - entry type // 32
4 bytes (uint32) - type2 // 2
+
4 bytes (uint32) - entry ID // e.g. 2
 
68-102 bytes - unknown
 
68-102 bytes - unknown
 
x bytes - padding
 
x bytes - padding
Line 53: Line 53:
  
  
 
// root info structure
 
4 bytes (uint32) - type1  // 33
 
4 bytes (uint32) - type2  // 3
 
4 bytes - nulls
 
4 bytes (uint32) - unknown  // 2
 
16 bytes - unknown
 
num_of_directories *
 
{
 
    // root entry (64 bytes per entry)
 
    4 bytes (uint32) - ID_1?
 
    4 bytes (uint32) - ID_2? 
 
    4 bytes (uint32) - entry type?  // 1 - file
 
                                    // 2 - directory
 
    4 bytes (uint32) - unknown  // 8, 9 or 13
 
    4 bytes - nulls
 
    44 bytes (char) - directory name or file name // e.g. "Text files" or "text1.txt"
 
}
 
x bytes - padding
 
 
 
// root file data structures
 
num_of_root_files *
 
{
 
  x bytes - file data structure  // see explanation below
 
  x bytes - padding
 
}
 
  
  
 +
// Note: First directory is always root,
 +
// then there are sructures for all sub-directories in the filesystem.
  
 
num_of_directories *
 
num_of_directories *
Line 133: Line 108:
  
 
Not written yet.
 
Not written yet.
 +
 +
 +
=== Attributes ===
 +
This file format supports storing informmation about directory and file attributes.<br>Below tables lists all attributes names and values.
 +
 +
 +
{| class="wikitable sortable"
 +
|-
 +
!    Attribute name              !!    Value (Hex)      !! Value (Dec)
 +
|-
 +
 +
|    File                        ||    0x01              || 1
 +
|-
 +
 +
|    Directory                    ||    0x02              || 2
 +
|-
 +
 +
|    Compressed                  ||    0x08              || 8
 +
|-
 +
 +
|    Encrypted                    ||    0x10              || 16
 +
|-
 +
 +
|    SymLink                      ||    0x20              || 32
 +
|-
 +
 +
|    ReadOnly                    ||    0x40              || 64
 +
|-
 +
 +
|    Archive                      ||    0x80              || 128
 +
|-
 +
 +
|    Hidden                      ||    0x100            || 256
 +
|-
 +
 +
|    System                      ||    0x200            || 512
 +
|-
 +
 +
|    Temporary                    ||    0x400            || 1024
 +
|-
 +
 +
|    DeleteOnClose                ||    0x800            || 2048
 +
|-
 +
 +
|    Reserved0                    ||    0x1000            || 4096
 +
|-
 +
 +
|    Reserved1                    ||    0x2000            || 8192
 +
|-
 +
 +
|    Reserved2                    ||    0x4000            || 16384
 +
|-
 +
 +
|    Reserved3                    ||    0x8000            || 32768
 +
|-
 +
 +
|    UserDefined                  ||    0xFFFF0000        || 4294901760
 +
|-
 +
 +
|    AnyFile                      ||    0xFFFFFFFF        || 4294967295
 +
|-
 +
 +
 +
 +
|}
  
 
=== Notes and Comments ===  
 
=== Notes and Comments ===  

Latest revision as of 16:01, 28 February 2021

Back to index | Edit this page

ST, XFS


Format Specifications

// Eldos Solid File System 
// ST, XFS file format

// header
2 bytes (uint16) - unknown // 12
2 bytes (char) - magic  // NW
num_of_entries *
{
  2 bytes (uint16) - entry type  // 33 - directory info structure
                                 // 32 - any other structure with data?
                                 // 0 - end structure or nothing
}
x bytes - padding


// file system info?
2 bytes (char) - magic  // NW
2 bytes - nulls
2 bytes - unknown // 1
8 bytes - nulls
4 bytes - next line characters // \x0D\x00\x0A\x00
124 bytes (char) - storage logo name // default is "SolFS for Windows (c) EldoS Corporation\n"
5 bytes - nulls
4 bytes (uint32) - unknown // 4
4 bytes (uint32) - unknown // 260, 516, 1028, 1540 or 2308
4 bytes (uint32) - unknown // 256, 1792, 4608, 12288 or 12800
93 bytes - unknown
4 bytes (uint32) - some CRC value  // e.g. \x95\xAF\x25\x3B
x bytes - padding



// unknown structure  
4 bytes (uint32) - entry type // 32
4 bytes (uint32) - entry ID // e.g. 2
68-102 bytes - unknown
x bytes - padding


// Note: data ends right after this structure 
// when there are no files and no directories in the XFS/ST file.




// Note: First directory is always root,
// then there are sructures for all sub-directories in the filesystem.

num_of_directories *
{
   // directory info structure
   4 bytes (uint32) - entry type  // 33
   4 bytes (uint32) - entry ID  // e.g. 7
   24 bytes - unknown
   num_of_files_in_directory *
   {
      8 bytes - unknown
      4 bytes (uint32) - directory or file attributes  // e.g. 257 - file + hidden
                                                       // e.g. 2 - directory
      4 bytes (uint32) - directory or file name length
      4 bytes - nulls
      44 bytes (char) - directory or file name // e.g. "DIR_2" or "text3.txt"
   }



   num_of_files_in_directory *
   {
      // file data structure
      4 bytes (uint32) - entry type  // 32
      4 bytes (uint32) - entry ID  // e.g. 8
      44 bytes - unknown
      8 bytes (double) - creation time
      8 bytes (double) - modification time
      8 bytes (double) - last access time
      4 bytes (uint32) - file size
      16 bytes - unknown
      x bytes - file data
      x bytes - padding
   }

}



num_of_directories *
{
   // end structure
   4 bytes (uint32) - entry type  // 0
   4 bytes (uint32) - entry ID  // e.g. 17
   x bytes - padding
}

MultiEx BMS Script

Not written yet.


Attributes

This file format supports storing informmation about directory and file attributes.
Below tables lists all attributes names and values.


Attribute name Value (Hex) Value (Dec)
File 0x01 1
Directory 0x02 2
Compressed 0x08 8
Encrypted 0x10 16
SymLink 0x20 32
ReadOnly 0x40 64
Archive 0x80 128
Hidden 0x100 256
System 0x200 512
Temporary 0x400 1024
DeleteOnClose 0x800 2048
Reserved0 0x1000 4096
Reserved1 0x2000 8192
Reserved2 0x4000 16384
Reserved3 0x8000 32768
UserDefined 0xFFFF0000 4294901760
AnyFile 0xFFFFFFFF 4294967295

Notes and Comments

  • This is format used by Eldos Solid File System.
  • Files can be encrypted with AES and compressed with ZLIB. Whole archive may be encrypted with AES. Custom encryption is also supported.
  • Padding size depends on page size which can be set to 256, 512, 1024, 2048, 4096, 8192, 16384, 32768 or 65536 bytes.

Games

List of games using this file format:

  • Rakion
  • Rakion Chaos Force

Compatible Programs

See Also