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

From XentaxWiki
Jump to: navigation, search
(Format Specifications)
(Attributes)
 
(19 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 14: Line 14:
  
 
// header
 
// header
2 bytes - 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 - some value // 33 or 32
+
   2 bytes (uint16) - entry type // 33 - directory info structure
 +
                                // 32 - any other structure with data?
 +
                                // 0 - end structure or nothing
 
}
 
}
 
x bytes - padding
 
x bytes - padding
Line 35: Line 37:
 
4 bytes (uint32) - unknown // 256, 1792, 4608, 12288 or 12800
 
4 bytes (uint32) - unknown // 256, 1792, 4608, 12288 or 12800
 
93 bytes - unknown
 
93 bytes - unknown
4 bytes - some CRC value  // e.g. \x95\xAF\x25\x3B
+
4 bytes (uint32) - some CRC value  // e.g. \x95\xAF\x25\x3B
 
x bytes - padding
 
x bytes - padding
  
Line 41: 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 52: Line 54:
  
  
// root info structure
+
 
4 bytes (uint32) - type1  // 33
+
// Note: First directory is always root,
4 bytes (uint32) - type2  // 3
+
// then there are sructures for all sub-directories in the filesystem.
4 bytes - nulls
 
4 bytes (uint32) - unknown  // 2
 
16 bytes - unknown
 
  
 
num_of_directories *
 
num_of_directories *
 
{
 
{
    // root entry (64 bytes per entry)
+
  // directory info structure
    4 bytes (uint32) - ID_1?
+
  4 bytes (uint32) - entry type  // 33
    4 bytes (uint32) - ID_2?  
+
  4 bytes (uint32) - entry ID // e.g. 7
    4 bytes (uint32) - entry type? // 1 - file
+
  24 bytes - unknown
                                    // 2 - directory
+
  num_of_files_in_directory *
    4 bytes (uint32) - unknown  // 8, 9 or 13
+
  {
    4 bytes - nulls
+
      8 bytes - unknown
    44 bytes (char) - directory name or file name // e.g. "Text files" or "text1.txt"
+
      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
 +
  }
 +
 
 
}
 
}
x bytes - padding
 
  
  
  
// file info structure
+
num_of_directories *
number_of_files_in_directory *
 
 
{
 
{
   4 bytes (uint32) - type1 // 32
+
  // end structure
   4 bytes (uint32) - type2 // 4 or 5
+
   4 bytes (uint32) - entry type // 0
  88 bytes - unknown
+
   4 bytes (uint32) - entry ID // e.g. 17
   x bytes - file data
+
   x bytes - padding
 
}
 
}
x bytes - padding
+
</pre>
 +
</div>
 +
 
 +
=== MultiEx BMS Script ===
 +
 
 +
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
 +
|-
  
// unknown structure
+
|    Temporary                    ||    0x400            || 1024
4 bytes (uint32) - type1  // 32
+
|-
4 bytes (uint32) - type2  // 6
 
42 bytes - unknown
 
24 bytes - unknown  // "fJaR...@fJaR...@fJaR...@"
 
8 bytes - nulls
 
4 bytes (uint32) - some size?
 
4 bytes - nulls
 
4 bytes (uint32) - unknown // 7
 
x bytes - padding
 
  
 +
|    DeleteOnClose                ||    0x800            || 2048
 +
|-
  
 +
|    Reserved0                    ||    0x1000            || 4096
 +
|-
  
// filenames structure
+
|    Reserved1                    ||    0x2000            || 8192
4 bytes (uint32) - type1  // 33
+
|-
4 bytes (uint32) - type2  // 7
 
  
num_of_files *
+
|    Reserved2                    ||   0x4000            || 16384
{
+
|-
   44 bytes - some file attributes?
 
  44 bytes - file name  // e.g. "text1.txt"
 
}
 
x bytes - padding
 
  
 +
|    Reserved3                    ||    0x8000            || 32768
 +
|-
  
// file data structure
+
|    UserDefined                  ||    0xFFFF0000        || 4294901760
4 bytes (uint32) - type1  // 32
+
|-
4 bytes (uint32) - type2  // 4
 
88 bytes - unknown
 
x bytes - file data
 
x bytes - padding
 
  
 +
|    AnyFile                      ||    0xFFFFFFFF        || 4294967295
 +
|-
  
// unknown structure
 
4 bytes (uint32) - type1  // 0
 
4 bytes (uint32) - type2  // 5
 
x bytes - padding
 
</pre>
 
</div>
 
  
=== MultiEx BMS Script ===
 
  
Not written yet.
+
|}
  
 
=== 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