Saints Row Formats Overview

Official Documentation

vpp - Packfile format for SR4
asm - Asm file format
vpp, asm - asm and vpp file formats
peg - Peg file format
czh, czn - SR3 zone file format
grid - grid_pc file format
vpp, v_file_header, czh, czn - Kinzies-Toy-Box/file_formats.md
smesh, cmesh, lmesh, matlib - Crunched Mesh Formats
anim, sim, morph - Crunched Animation Formats

Open Implementations

vpp, asm, le_strings, bnk, peg, cmesh, sim, sr3s - Minimaul - ThomasJepp.SaintsRow
cmeshx, rigx, matlibx - Volition - Saints Row FBX Converter
czn, czh - Quantum - SRZoneTools
cmesh - MissingLink - SR4 Character Mesh Viewer
peg - Yepoleb - SR Textool
vpp, asm, peg - gibbed - Gibbed.Volition
sr3s - Corrodias - SR3 Save Editor C
peg - scanti - SR3 Texture Utilities
matlib - Yepoleb - saintsrow-python

Formats Overview

Containers: asm (streaming index), vpp (container), str2 (streaming container)
Models: ccmesh/gcmesh (character mesh), clmesh/glmesh (level mesh), csmesh/gsmesh (static mesh), matlib (material), rig (bones), cmorph, sim (clothes simulation), anim (animation)
Graphics: cefct/gefct (effect), fxo (shaders), lightmult_pc (lights)
Cutscenes: csc (camera script), ctdg (conversations), cte_xtbl (scenes)
Cars: ccar/gcar (car models), cvtf (vehicle customization properties)
Audio: lm (persona voice line mapping), bnk (sound bank), vad (Wwise soundbank lookup)
Missions: lua (scripting), todx (environment)
Interface: lua (scripting), vint_doc (?), vint_proj (interface project)
Map: vpm_pc (map file), czh (zone header), czn/gzn (zone file), grid (map streaming), csrt/gsrt (tree model)
Textures: cvbm/gvbm (single texture), cpeg/gpeg (multi texture)
Strings: le_strings (strings)
Various: xtbl (configuration)
Saves: sr3d (save directory), srgd (?), sr3s (save file), srgs (?), sr3DEF_PROFILE (?)
 
Last edited:
Nice job! Although I love the free format of this forum, it is sometimes very difficult to find information on the various file formats, especially when the search doesn't work with 3-letter words like "vpp" or "asm". I started to set up a wiki, but then got distracted with other things. This is really useful. :)
 
Updated the post a few days ago to include the mesh and anim formats posted by Rob Rypka and now added my matlib parser example.
 
It is possible to parse matlib and find applied shader? As I understad Yepoleb - saintsrow-python is only libs for implementation parsing for some tool

I'm not sure how to interpret the question. I think the shader_handle should tell you about the shader used. If you're looking for the shader binary structure I may be able to find some information on that.
 
I'm not sure how to interpret the question. I think the shader_handle should tell you about the shader used. If you're looking for the shader binary structure I may be able to find some information on that.
I stuck with one problem, characters have separated mesh for head and body, when I replace body I need to to set same shader as for head and this is big problem because when I apply extracted textures they looks very different. My idea was to find data, at least via hex-editor that shows which shader was applied and after this continue experimenting with shader settings. But before this i should know where it stored. First I thought about matlib.
 
The matlib contains some shader information, but the mesh file does too. Most of the relevant information is stored in the Material class.
 
Back
Top