Changes

1,042 bytes added ,  05:39, 31 October 2018
no edit summary
Line 87: Line 87:     
==== Header ====
 
==== Header ====
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 104: Line 103:  
|  0x8
 
|  0x8
 
|  0x4
 
|  0x4
Version? (always 0x2400)
+
String table type magic (always 0x2400)
 
|-
 
|-
 
|  0xC
 
|  0xC
 
|  0x4
 
|  0x4
Offset to root node (always 0x10)
+
This + 8 points to the string table (always 0x10)
 
|-
 
|-
 
|  0x10
 
|  0x10
 
|  0x4
 
|  0x4
Root node type (always 0x2401)
+
String table lookup type magic (always 0x2401)
 
|-
 
|-
 
|  0x14
 
|  0x14
 
|  0x4
 
|  0x4
|  This + 8 points to some kind of descriptor table
+
|  This + 8 points to the string lookup table
 
|-
 
|-
 
|  0x18
 
|  0x18
 
|  0x4
 
|  0x4
Count of audio names (since each file should have a name you could also say this is essentially a file count)
+
Filename count
 +
|-
 +
|  0x1C
 +
|  0xC * count
 +
|  String offset table
 
|-
 
|-
 
|}
 
|}
   −
==== Node struct ====
+
==== String offset table entry ====
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 134: Line 137:  
|  0x0
 
|  0x0
 
|  0x4
 
|  0x4
|  Type of the node?
+
|  Type of the node (should be 0x1F01)
 
|-
 
|-
 
|  0x4
 
|  0x4
 
|  0x4
 
|  0x4
|  Offset to node data?
+
|  Offset to data from the end of the STRG header (sizeof 0x18)
 
|-
 
|-
 
|  0x8
 
|  0x8
 
|  0x4
 
|  0x4
|  Length of some data based on node type
+
|  Length of the data buffer (includes NUL terminator)
 
|-
 
|-
 
|}
 
|}
   −
==== Nodes ====
+
Then every filename is rawly setted. You can set up a dictionary that contains, using a simple counter, the size of every filename in order. Then, using the same type of counter, get the values of the size of the filename in a correct order.
   −
===== Root node (0x2401) =====
+
==== String lookup table ====
* Offset + 8 points to some unknown data.
  −
* Length specifies how many nodes after this node belong to this node.
     −
===== File node(?) (0x1F01) =====
+
===== Header =====
* Offset + 0x18 points to the file's name
+
 
* Length specifies the file name buffer size, including the NUL terminator.
+
{| class="wikitable" border="1"
 +
|-
 +
!  OFFSET
 +
!  SIZE
 +
!  DESCRIPTION
 +
|-
 +
|  0x0
 +
|  0x4
 +
|  Index of the root entry
 +
|-
 +
|  0x4
 +
|  0x4
 +
|  Entry count
 +
|-
 +
|  0x8
 +
|  0x14 * count
 +
|  Lookup entry
 +
|-
 +
|}
    +
===== Entry =====
   −
Then every filename is rawly setted. You can set up a dictionary that contains, using a simple counter, the size of every filename in order. Then, using the same type of counter, get the values of the size of the filename in a correct order.
+
{| class="wikitable" border="1"
 +
|-
 +
!  OFFSET
 +
!  SIZE
 +
!  DESCRIPTION
 +
|-
 +
|  0x0
 +
|  0x2
 +
|  Is 1 if contains data
 +
|-
 +
|  0x2
 +
|  0x2
 +
|  Unknown
 +
|-
 +
|  0x4
 +
|  0x4
 +
|  Next index? (-1 if invalid)
 +
|-
 +
|  0x8
 +
|  0x4
 +
|  Data index? (-1 if invalid)
 +
|-
 +
|  0xC
 +
|  0x8
 +
|  Unknown data, -1 if contains no data
 +
|-
 +
|}
    
=== INFO ===
 
=== INFO ===
Line 178: Line 224:  
|  0x4
 
|  0x4
 
|  Length of INFO partition (also in CSAR header)
 
|  Length of INFO partition (also in CSAR header)
 +
|-
 +
|  0x8
 +
|  0x4
 +
|  Unknown magic 0x2100
 +
|-
 +
|  0xC
 +
|  0x4
 +
|  This + 8 points to unknown
 +
|-
 +
|  0x10
 +
|  0x4
 +
|  Unknown magic 0x2104
 +
|-
 +
|  0x14
 +
|  0x4
 +
|  This + 8 points to unknown
 +
|-
 +
|  0x18
 +
|  0x4
 +
|  Unknown magic 0x2101
 +
|-
 +
|  0x1C
 +
|  0x4
 +
|  This + 8 points to unknown
 +
|-
 +
|  0x20
 +
|  0x4
 +
|  Unknown magic 0x2103
 +
|-
 +
|  0x24
 +
|  0x4
 +
|  This + 8 points to unknown
 +
|-
 +
|  0x28
 +
|  0x4
 +
|  Unknown magic 0x2105
 +
|-
 +
|  0x2C
 +
|  0x4
 +
|  This + 8 points to unknown
 +
|-
 +
|  0x30
 +
|  0x4
 +
|  Unknown magic 0x2102
 +
|-
 +
|  0x34
 +
|  0x4
 +
|  This + 8 points to unknown
 +
|-
 +
|  0x38
 +
|  0x4
 +
|  Unknown magic 0x2106
 +
|-
 +
|  0x3C
 +
|  0x4
 +
|  This + 8 points to unknown
 +
|-
 +
|  0x40
 +
|  0x4
 +
|  Unknown magic 0x220B
 +
|-
 +
|  0x44
 +
|  0x4
 +
|  This + 8 points to unknown
 
|-
 
|-
 
|}
 
|}
215

edits