Welcome to Open Carnage

A resource for Halo Custom Edition and MCC modding, with unique means of rewarding content creation and support. Have a wander to see why we're worth the time! - EST. 2012


The s3dpak format - complete

edited for completeness


in order to see the contents of the file, you're going to have to decompress the file. I used CEAFlate for this:


I believe the file is compressed using the zlib library. The endianess of the file is little.


The s3dpak format

.S3dpak is an archive style format, similar to a zip, or rar file; however, it is specialized for use in the saber3d engine.

The header

The header consists of only 4 bytes, and It tells us how many child files are in the parent.
After that we have (What I call) the glossary which contains all the the files, and where to find them. Similar to what we’re used to in a book.

The glossary

The glossary consists of entry points for data. Each entry consists of:

4 bytes: offset

4 bytes: size

4 bytes: string length

String (string length bytes): name

4 bytes: type of data stored

8 bytes: pad


The offset is simply the pointer to the beginning of the data segment in the file. In combination With the size variable, we can know where the data is located, and how much data to look for.

 The string length is important, because the strings are NOT null terminate. This means we read the string length, and then directly after we read that many bytes to get the name of the data segment. This alone is enough to extract the data from the file; although, in order to put new data in we need to tell the engine how to interpret the data.

 This is done with “type”. The type is an enumeration linking a number, to a data type. The values are as follows:

    0 : "Scene Data",
    1 : "Data",
    2 : "Single Player Lines",
    3 : "Shader (.fx, .psh, .vsh)",
    5 : "Textures Info",
    8 : "Sound Data",
    10 : "Memory",
    11 : "Skull data?",
    12 : "Template",
    14 : "String List",
    16 : "Game Logic (.lg)",
    17 : "Breakable glass",
    18 : "effects (.gfx)",
    22 : "(.grs)",
    25 : "rain",
    26 : "(.cdt)",
    27 : "(.sm)",
    29 : "(.vis)"


Some numbers aren’t used in CEA. Looking through all the s3dpaks provided with CEA these are the only ones seen throughout. Currently the definitions of these files are unknown to me. I will work towards figuring them out, but for now it goes beyond the scope of this specification.


Tucker933 and Kavawuvi like this


S3dpak - format - Imeta/ipak - format - Fmeta - format


H2a-inflate - SuP

Share this post

Link to post
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.