Saints Row Formats Overview

Discussion in 'Guides and Tutorials' started by Yepoleb, Nov 29, 2017.

  1. 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/
    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: Jan 8, 2018
  2. Quantum

    Quantum Administrator Staff Member

    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. :)
  3. 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.
    Quantum likes this.
  4. 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
  5. 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.
  6. 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.
  7. The matlib contains some shader information, but the mesh file does too. Most of the relevant information is stored in the Material class.
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice