LST: Difference between revisions
No edit summary |
No edit summary |
||
(5 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
[[Category:Archives]] | [[Category:Archives]] | ||
This is a [[LC-ScriptEngine]] format. | |||
Common File names: | Common File names: | ||
* lcsebody.lst | * lcsebody.lst | ||
* SoundPackSE.lst | * SoundPackSE.lst | ||
Note: This file is just the index for | Note: This file is just the index for a separate file by the same name, excluding extensions, that has the file data. | ||
== Structure == | == Structure == | ||
Line 49: | Line 34: | ||
Each element in index is XOR'd with 0x01010101 so it is applied to 4bytes for int's and 1 byte for char's with the exception of the last element in an index entry which is a 4 byte number. | Each element in index is XOR'd with 0x01010101 so it is applied to 4bytes for int's and 1 byte for char's with the exception of the last element in an index entry which is a 4 byte number. | ||
Need to run more tests to check if decoding is working properly. Last few index entries look off. Need to make memory dump of index list after game decodes it in memory and compare with my results. | Need to run more tests to check if decoding is working properly. Last few index entries look off. Need to make memory dump of index list after game decodes it in memory and compare with my results. However... Seems like I could just subtract 0x01 from each byte and that'll work too...Well, for one way decoding. | ||
Update: Extracting data from memory shows a 1:1 match for index data after it is processed. Seems the last few entries are encoded in shift-JIS which will make things a little bit annoying since to extract, first convert to something the OS understands and then when building it, convert that to shift-jis. I may create a temp measure by just making the name be in hex format by testing if char is between 0x81 and 0xFC (Shift-jis takes up 2 bytes per character) |
Latest revision as of 08:13, 2 August 2014
This is a LC-ScriptEngine format.
Common File names:
- lcsebody.lst
- SoundPackSE.lst
Note: This file is just the index for a separate file by the same name, excluding extensions, that has the file data.
Structure
Header | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Size | Content | Description | ||||||||||||
4Bytes | Number of Files | |||||||||||||
Index | ||||||||||||||
Size | Content | Description | ||||||||||||
4Bytes | Offset | |||||||||||||
4bytes | File size | |||||||||||||
64Bytes | Filename | Some may be padding. | ||||||||||||
4Bytes | Unknown |
Research
Before window title is updated, it is set to 'LC-ScriptEngine ver1.0'.
Each element in index is XOR'd with 0x01010101 so it is applied to 4bytes for int's and 1 byte for char's with the exception of the last element in an index entry which is a 4 byte number.
Need to run more tests to check if decoding is working properly. Last few index entries look off. Need to make memory dump of index list after game decodes it in memory and compare with my results. However... Seems like I could just subtract 0x01 from each byte and that'll work too...Well, for one way decoding.
Update: Extracting data from memory shows a 1:1 match for index data after it is processed. Seems the last few entries are encoded in shift-JIS which will make things a little bit annoying since to extract, first convert to something the OS understands and then when building it, convert that to shift-jis. I may create a temp measure by just making the name be in hex format by testing if char is between 0x81 and 0xFC (Shift-jis takes up 2 bytes per character)