SXC PACKER
A Companion Tool for SXC Extractor
 

Prologue

Most mod files for Euro Truck Simulator 2 and American Truck Simulator today are compressed and distributed using a standard ZIP file format. However, the game themselves pack their assets and data using SCS proprietary compressed package format called HashFS (Hash File Format). SCS—fortunately, support and allows mod file to be packed using this proprietary file format. There are known a small amount of modders packing their mod using this format. In fact, SCS Software as the game developer does not provides official tool to pack mod file into HashFS format. Came from that reason, the SXC Packer was written and the HashFS formatted mod file should no longer exclusive to a particular modder or group.

SXC Packer (can be pronounced as Sexy Packer) intended to compress and pack Euro Truck Simulator 2 and American Truck Simulator mod file in a new way. It allows to compress whole sub-items within a folder, exclude certain folders and files, hide folders and files from HashFS directory structures, and encrypt certain unit (*.sii) files. SXC Packer however does not provide ability to extract or decompress. As its name says it just a packer tool.



Visit SXC discussion thread at SCS Forum and drop a comment there
if you have problem, find bug, or just want to say hi.
Basic Usage Extended Usage
About the Program Exclude Files and Folders
Working with Input Folder Hide Files and Folders
Compressed Result File Encrypt Unit Files
Default Compression Behaviour Non-Compressed Files and Folders

Basic Usage

 

About the Program

SXC Packer is a console program runs under Microsoft Windows. It is a simple text based application. No fancy GUI and no bullsh*t. It comes without installer. SXC Packer is shipped together as addons with SXC Extractor. Extract the SXC Extractor package using any ZIP Archiver program onto a destination folder of your choice. SXC Packer is stored under addonspacker sub-folder. From Windows Explorer, press Shift + Right Click on the SXC Packer folder then choose a menu item labeled as "Open Command Prompt from here" or "Open Power Shell from here" depending on your Windows version. Running SXC Packer can be done by typing:
sxcpack
Or under Power Shell console:
.\sxcpack.exe
After typing, press the Enter key on the keyboard to actually execute the application. Running SXC Packer without any parameter will just display a usage tips of parameter description, which will described more details below.
 

Working with Input Folder

SXC Packer requires at least input folder in order to function. Items (files and folders) under this input folder will be processed, but the input folder itself will be excluded from the generated HashFS output file.

To understand it, let's take a look at the following example image:
Mod Folder Example
Here, we have a base folder D:\ETS2\Projects\sxc\test where contains 9 sub-items: consist of 3 files and 6 folders. If we use this base folder as SXC Packer input folder, only those 3 files with 6 folders and all their beneath sub-items will be processed.

To select input folder from a dialog window, run SXC Packer with -i switch as parameter like this:
sxcpack -i
Or:
.\sxcpack.exe -i
It will open a folder selection dialog window, for example:
Open Folder dialog
Select a folder of your choice then press OK button. If you press the Cancel button, SXC Packer will abort any further operation and display the usage text. The folder selection dialog by default will highlighted to the current folder where you run SXC Packer.

To specify an input folder without opening dialog window, you can specify the folder path as a second argument after the -i switch, as follow:
sxcpack -i D:\ETS2\Projects\sxc\test
Note the second argument is preceding with a space character. Each argument must be separated with at least one space character. If an argument contains spaces, you should enclose it with double-quotes. Take a look at this example for input folder that containing spaces:
sxcpack -i "C:\My Mods\Trucks\Tic Tac Truck\"
In the case you specify root drive as input folder, SXC Packer will reject it and informing an invalid operation error. There is no good reason why you should packing the whole drive content (try backup tool for such purpose). Here's the bad example:
sxcpack -i C:\
 

Compressed Result File

To save the compressed result file into a choosen name, specify the -o switch into the arguments. For example:
sxcpack -i C:\temp -o
Supplying the -o switch will bring a Save File dialog window:
Save File dialog
Type the output file name in edit box and click Save button. It is advisable to always use .scs extention following the file name. Pressing Cancel button will discard file name selection and the output file name will be taken from input folder name. For example:
sxcpack -i "C:\My Best Mod" -o
If you press Cancel button on File Save dialog, the result of compressed output file will be My Best Mod.scs and stored in SXC Packer folder.

To specify an output file without opening dialog window, you can specify the file name (with optional folder path) as a second argument after the -o switch, as follow:
sxcpack -i C:\ETS2\mod\firstmod\ -o C:\ETS2\mod\myfirstmod.scs
Please keep in mind that SXC Packer will overwrite existing output file, if exists.
 

Default Compression Behaviour

By default, all packed files will be compressed using the optimal compression ratios. However, starting at version 1.0.20.508, SXC Packer will automatically packing sound files in "store" (non-compressed) mode. These sound files are OggVorbis (*.ogg), FMOD Sound Bank (*.bank), and FMOD Sound Event Reference (*.soundref). To accomplish this feature, make sure to keep the file extension to allow SXC Packer recognize any presence of sound file format.

If you want to customize certain files to be packed in "store" (non-compressed) mode, SXC Packer version 1.0.20.508 also introduce a new -s switch. The usage of this switch has been described in details at "Non-Compressed Files and Folders" section.

Extended Usage

 

Exclude Files and Folders

SXC Packer provides ability to exclude certain files and/or folders so they will not included when generating output packed file. To understand how this function works, assuming we have a mod project located in D:\ETS2\Projects\sxc\test contains 3 files and 6 folders:
Mod Folder Example
Let say we want to exclude the unit folder, as well as manifest.sii file so they will not included in generated output file. To do this, create a blank ASCII text file (you can do this with Windows Notepad application) and put the files and folders we want to exclude:
unit/
manifest.sii
To define a folder, make sure to append a / (slash) or \ (backslash) character after the folder name to distinguish them with file type. Please note that SXC Packer will always ignore folder that defines the root of your mod folder. For example:
/
unit/
manifest.sii
The first line of the example above always ignored, because it doesn't make sense to exclude the mod's root folder (whole mod file structures) which mean you actually not creating a mod at all!

Excluding folder always affect to it's childs (sub-items) as they are also excluded entirely. You don't need to redefine sub-items to be excluded if their parent folder already there. From the following example, the last two lines is not actually neccessary (though it is possible) since their parent folder is defined already:
def/
def/company/
def/company/quarry/out/
Exclude list definition allow defining items deep to the lower hierarchy. Here an example of various file and folder hierarchy:
def/company/cont_port/out/
def/sign/atlas/
model/sign/misc/
model/sign/navigation/uk/

def/sign/boards.sii
def/game_data.sii
model/sign/security.dds
model/sign/security.tobj
manifest.sii
From the above example, it is possible to put blank lines as they will be ignored. If defining exclude items is done, save the text document to a name of your choice.
SXC Packer only accept pure ASCII text file. If you are using WIndows Notepad, make sure to select ANSI encoding within Save File dialog window. Do not use foreign character set in defined file and folder names.
If—for example, you save the text file as C:\temp\list_exclude.txt, put it as SXC Packer argument after the -x switch. For example:
sxcpack -i D:\ETS2\Projects\sxc\test -o C:\temp\mymod.scs -x C:\temp\list_exclude.txt
You can also provide the -x switch without specifying file name, for example:
sxcpack -i D:\ETS2\Projects\sxc\test\ -o C:\temp\mymod.scs -x
In this case, an Open File dialog window will show up. Browse and select the text file created previously then press Open button. To distinguished from opening file for exclude, hidden, and encrypt text file, look at the file type drop-down list next to file name edit box in Open File dialog (see below image marked with red down arrow). If you press Cancel button, exclude list will ignored during output file creation.
Mod Folder Example
 

Hide Files and Folders

SXC Packer provides ability to hide certain files and/or folders so they will not included in the directory structure of the output file. Hiding files and folders comes useful if you want to 'obfuscate' them against normal extraction. Be careful that NOT all files and folders can be hidden. You need to test your mod file first in the case certain files indicated 'missing' in the game's log file.

Assuming we have a mod project located in D:\ETS2\Projects\sxc\test contains 3 files and 6 folders:
Mod Folder Example
Let say we want to hide the model and vehicle folder, as well as manifest.sii, mod_desc.txt, and icon.jpg files so they will not included in directory structure of the generated output file. To do this, create a blank ASCII text file (you can do this with Windows Notepad application) and put the files and folders we want to hide:
model/
vehicle/
manifest.sii
mod_desc.txt
icon.jpg
To define a folder, make sure to append a / (slash) or \ (backslash) character after the folder name to distinguish them with file type. Hiding folder always affect to it's childs (sub-items) as they are also hide entirely. You don't need to redefine sub-items to be hide if their parent folder already there. From the following example, the last two lines is not actually neccessary (though it is possible) since their parent folder is defined already:
model/
model/building/
model/building/administration/car_dealer.dds
It is possible to hide your entire mod file structure, by defining just your mod's root folder like this:
/
If defining hidden items is done, save the text document to a name of your choice.
SXC Packer only accept pure ASCII text file. If you are using WIndows Notepad, make sure to select ANSI encoding within Save File dialog window. Do not use foreign character set in defined file and folder names.
If—for example, you save the text file as C:\temp\list_hidden.txt, put it as SXC Packer argument after the -h switch. For example:
sxcpack -i D:\ETS2\Projects\sxc\test\ -o C:\temp\mymod.scs -h C:\temp\list_hidden.txt
You can also provide the -h switch without specifying file name, for example:
sxcpack -i D:\ETS2\Projects\sxc\test -o C:\temp\mymod.scs -h
In this case, an Open File dialog window will show up. Browse and select the text file created previously then press Open button. If you press Cancel button, hidden list will ignored during output file creation.
 

Encrypt Unit Files

SXC Packer provides ability to encrypt certain files and/or folders. Encrypt files and folders comes useful if you want to 'obfuscate' their content against normal extraction. Please note that only Unit files (.sii) or folder containing unit files will be encrypted. Why only unit file? Because it's the game's limitation and SXC Packer can do nothing with that.

Let say we want to hide all *.sii files under the ui folder, as well as game_data.sii and economy_data.sii files under the def folder so their content will be encrypted in the generated output file. To do this, create a blank ASCII text file (you can do this with Windows Notepad application) and put the files and folders we want to encrypt:
ui/
def/game_data.sii
def/economy_data.sii
To define a folder, make sure to append a / (slash) or \ (backslash) character after the folder name to distinguish them with file type. Encrypting folder always affect to it's childs (sub-items) as they are also encrypted entirely. You don't need to redefine sub-items to be encrypted if their parent folder already there. From the following example, the last two lines is not actually neccessary (though it is possible) since their parent folder is defined already:
def/
def/world/
def/world/traffic_rules.sii
You can't—however, define mod's root folder in the purpose to encrypt whole *.sii files in your mod project. This is SXC Packer restriction. The first line in the following example will be ignored:
/
def/
def/world/
def/world/traffic_rules.sii
If defining encrypted items is done, save the text document to a name of your choice.
SXC Packer only accept pure ASCII text file. If you are using WIndows Notepad, make sure to select ANSI encoding within Save File dialog window. Do not use foreign character set in defined file and folder names.
If—for example, you save the text file as C:\temp\list_encrypt.txt, put it as SXC Packer argument after the -e switch. For example:
sxcpack -i D:\ETS2\Projects\sxc\test -o C:\temp\mymod.scs -e C:\temp\list_hidden.txt
You can also provide the -e switch without specifying file name, for example:
sxcpack -i D:\ETS2\Projects\sxc\test -o C:\temp\mymod.scs -e
In this case, an Open File dialog window will show up. Browse and select the text file created previously then press Open button. If you press Cancel button, encrypted list will ignored during output file creation.
 

Non-Compressed Files and Folders

Starting at version 1.0.20.508, SXC Packer provides ability to allow certain folders and files to be packed in "store" (non-compressed) mode. These non-compressed entries then read or streamed directly by the game without having to store them into uncompressed form in caches.
Sound files with *.ogg, *.bank, and *.soundref extension will be automatically packed in "store" (non-compressed) mode. No need to includes these kind of files into the definition file.
Assuming we have a mod project located in D:\ETS2\Projects\sxc\test contains 3 files and 6 folders:
Mod Folder Example
Let say we want all files under the def folder to be packed in non-compressed form, as well as icon.jpg file. To do this, create a blank ASCII text file (you can do this with Windows Notepad application) and put the files and folders to be packed in non-compressed form:
def/
icon.jpg
To define a folder, make sure to append a / (slash) or \ (backslash) character after the folder name to distinguish them with file type. Defined folder will also affect to it's childs (sub-items). You don't need to redefine sub-items if their parent folder already there. From the following example, the last 3 lines is not actually neccessary (though it is possible) since their parent folder is defined already:
def/
def/world/
def/sound_player.sii
def/world/sound_item_data.sii
It is possible to pack entire mod files in non-compressed form, by defining just your mod's root folder like this:
/
If defining non-compressed items is done, save the text document to a name of your choice.
SXC Packer only accept pure ASCII text file. If you are using WIndows Notepad, make sure to select ANSI encoding within Save File dialog window. Do not use foreign character set in defined file and folder names.
If—for example, you save the text file as C:\temp\list_stored.txt, put it as SXC Packer argument after the -s switch. For example:
sxcpack -i D:\ETS2\Projects\sxc\test\ -o C:\temp\mymod.scs -s C:\temp\list_stored.txt
You can also provide the -s switch without specifying file name, for example:
sxcpack -i D:\ETS2\Projects\sxc\test -o C:\temp\mymod.scs -s
In this case, an Open File dialog window will show up. Browse and select the text file created previously then press Open button. If you press Cancel button, hidden list will ignored during output file creation.
 

Epilogue

The author of SXC Packer has no relation and is not affiliated with SCS Software. SXC Packer is made by user for users, in the hope it comes useful and handy for modders. Have fun, keep trucking, and happy modding!

---ooOoo---