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.
 
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