Python library for analysing .bsp files
| BspClass | Bsp version | Game | Branch script | Supported lumps | Unused lumps | Coverage |
|---|---|---|---|---|---|---|
RespawnBsp |
29 | Titanfall | respawn.titanfall |
67 / 72 | 56 | 92.36% |
RespawnBsp |
29 | Titanfall: Online | respawn.titanfall |
67 / 72 | 56 | 92.36% |
RespawnBsp |
36 | Titanfall 2 Tech Test | respawn.titanfall2 |
69 / 76 | 52 | 88.91% |
RespawnBsp |
37 | Titanfall 2 | respawn.titanfall2 |
69 / 76 | 52 | 88.91% |
.bspsTitanfall Engine .bsp, .bsp_lump & .ent are stored in .vpk files.
Extracting these files to work on them requires Titanfall Engine specific tools:
Once you have chosen your extraction tool:
.vpks for the game you want to work with (game must be installed)
Titanfall/vpk/Titanfall2/vpk/Apex Legends/vpk/*.bsp.pak000_dir.vpk for the map you want to load
mp_common.bsp.pak000_dir.vpk.bsp, .ents & .bsp_lumps from the maps/ folder to someplace you'll remember
.vpk holds assets for one .bsp (textures and models are stored elsewhere)Cra0kalo (currently Closed Source) recommendedP0358MrSteyk's ToolUnordinalNOTE: Apex's
GAME_LUMPlump version should be the same as the version of the.bspit is in
| Lump index | Hex index | Bsp version | Lump name | Lump version | LumpClass | Coverage |
|---|---|---|---|---|---|---|
| 0 | 0000 | 29 | ENTITIES |
0 | shared.Entities |
100% |
| 1 | 0001 | 29 | PLANES |
1 | id_software.quake3.Plane |
100% |
| 2 | 0002 | 29 | TEXTURE_DATA |
1 | respawn.titanfall.TextureData |
100% |
| 3 | 0003 | 29 | VERTICES |
0 | id_software.quake.Vertex |
100% |
| 4 | 0004 | 29 | UNUSED_4 |
0 | 0% | |
| 4 | 0004 | 37 | LIGHTPROBE_PARENT_INFOS |
0 | 0% | |
| 5 | 0005 | 29 | UNUSED_5 |
0 | 0% | |
| 5 | 0005 | 37 | SHADOW_ENVIRONMENTS |
0 | respawn.titanfall2.ShadowEnvironment |
100% |
| 6 | 0006 | 29 | UNUSED_6 |
0 | 0% | |
| 6 | 0006 | 37 | LIGHTPROBE_BSP_NODES |
0 | respawn.titanfall2.LightProbeBSPNode |
100% |
| 7 | 0007 | 29 | UNUSED_7 |
0 | 0% | |
| 7 | 0007 | 37 | LIGHTPROBE_BSP_REF_IDS |
0 | 0% | |
| 8 | 0008 | 29 | UNUSED_8 |
0 | 0% | |
| 9 | 0009 | 29 | UNUSED_9 |
0 | 0% | |
| 10 | 000A | 29 | UNUSED_10 |
0 | 0% | |
| 11 | 000B | 29 | UNUSED_11 |
0 | 0% | |
| 12 | 000C | 29 | UNUSED_12 |
0 | 0% | |
| 13 | 000D | 29 | UNUSED_13 |
0 | 0% | |
| 14 | 000E | 29 | MODELS |
0 | respawn.titanfall.Model |
100% |
| 15 | 000F | 29 | UNUSED_15 |
0 | 0% | |
| 16 | 0010 | 29 | UNUSED_16 |
0 | 0% | |
| 17 | 0011 | 29 | UNUSED_17 |
0 | 0% | |
| 18 | 0012 | 29 | UNUSED_18 |
0 | 0% | |
| 19 | 0013 | 29 | UNUSED_19 |
0 | 0% | |
| 20 | 0014 | 29 | UNUSED_20 |
0 | 0% | |
| 21 | 0015 | 29 | UNUSED_21 |
0 | 0% | |
| 22 | 0016 | 29 | UNUSED_22 |
0 | 0% | |
| 23 | 0017 | 29 | UNUSED_23 |
0 | 0% | |
| 24 | 0018 | 29 | ENTITY_PARTITIONS |
0 | respawn.titanfall.EntityPartitions |
100% |
| 25 | 0019 | 29 | UNUSED_25 |
0 | 0% | |
| 26 | 001A | 29 | UNUSED_26 |
0 | 0% | |
| 27 | 001B | 29 | UNUSED_27 |
0 | 0% | |
| 28 | 001C | 29 | UNUSED_28 |
0 | 0% | |
| 29 | 001D | 29 | PHYSICS_COLLIDE |
0 | 0% | |
| 30 | 001E | 29 | VERTEX_NORMALS |
0 | id_software.quake.Vertex |
100% |
| 31 | 001F | 29 | UNUSED_31 |
0 | 0% | |
| 32 | 0020 | 29 | UNUSED_32 |
0 | 0% | |
| 33 | 0021 | 29 | UNUSED_33 |
0 | 0% | |
| 34 | 0022 | 29 | UNUSED_34 |
0 | 0% | |
| 35 | 0023 | 29 | GAME_LUMP |
- | lumps.GameLump |
90% |
| 35 | 0023 | 29 | GAME_LUMP.sprp |
12 | respawn.titanfall.GameLump_SPRPv12 |
60% |
| 35 | 0023 | 29 | GAME_LUMP.sprp.leaves |
12 | shared.UnsignedShorts |
100% |
| 35 | 0023 | 29 | GAME_LUMP.sprp.props |
12 | respawn.titanfall.StaticPropv12 |
94% |
| 35 | 0023 | 37 | GAME_LUMP.sprp |
13 | respawn.titanfall2.GameLump_SPRPv13 |
40% |
| 35 | 0023 | 37 | GAME_LUMP.sprp.props |
13 | respawn.titanfall2.StaticPropv13 |
92% |
| 35 | 0023 | 37 | GAME_LUMP.sprp.unknown_3 |
13 | respawn.titanfall2.Unknown3 |
10% |
| 36 | 0024 | 29 | LEAF_WATER_DATA |
1 | valve.source.LeafWaterData |
100% |
| 37 | 0025 | 29 | UNUSED_37 |
0 | 0% | |
| 38 | 0026 | 29 | UNUSED_38 |
0 | 0% | |
| 39 | 0027 | 29 | UNUSED_39 |
0 | 0% | |
| 40 | 0028 | 29 | PAKFILE |
0 | valve.source.PakFile |
100% |
| 41 | 0029 | 29 | UNUSED_41 |
0 | 0% | |
| 42 | 002A | 29 | CUBEMAPS |
0 | respawn.titanfall.Cubemap |
50% |
| 43 | 002B | 29 | TEXTURE_DATA_STRING_DATA |
0 | valve.source.TextureDataStringData |
100% |
| 44 | 002C | 29 | TEXTURE_DATA_STRING_TABLE |
0 | shared.UnsignedInts |
100% |
| 45 | 002D | 29 | UNUSED_45 |
0 | 0% | |
| 46 | 002E | 29 | UNUSED_46 |
0 | 0% | |
| 47 | 002F | 29 | UNUSED_47 |
0 | 0% | |
| 48 | 0030 | 29 | UNUSED_48 |
0 | 0% | |
| 49 | 0031 | 29 | UNUSED_49 |
0 | 0% | |
| 50 | 0032 | 29 | UNUSED_50 |
0 | 0% | |
| 51 | 0033 | 29 | UNUSED_51 |
0 | 0% | |
| 52 | 0034 | 29 | UNUSED_52 |
0 | 0% | |
| 53 | 0035 | 29 | UNUSED_53 |
0 | 0% | |
| 54 | 0036 | 29 | WORLD_LIGHTS |
1 | respawn.titanfall.WorldLight |
100% |
| 54 | 0036 | 37 | WORLD_LIGHTS |
2 | respawn.titanfall2.WorldLightv2 |
89% |
| 54 | 0036 | 37 | WORLD_LIGHTS |
3 | respawn.titanfall2.WorldLightv3 |
85% |
| 55 | 0037 | 29 | UNUSED_55 |
0 | 0% | |
| 55 | 0037 | 37 | WORLD_LIGHT_PARENT_INFOS |
0 | 0% | |
| 56 | 0038 | 29 | UNUSED_56 |
0 | 0% | |
| 57 | 0039 | 29 | UNUSED_57 |
0 | 0% | |
| 58 | 003A | 29 | UNUSED_58 |
0 | 0% | |
| 59 | 003B | 29 | UNUSED_59 |
0 | 0% | |
| 60 | 003C | 29 | UNUSED_60 |
0 | 0% | |
| 61 | 003D | 29 | UNUSED_61 |
0 | 0% | |
| 62 | 003E | 29 | PHYSICS_LEVEL |
0 | 0% | |
| 63 | 003F | 29 | UNUSED_63 |
0 | 0% | |
| 64 | 0040 | 29 | UNUSED_64 |
0 | 0% | |
| 65 | 0041 | 29 | UNUSED_65 |
0 | 0% | |
| 66 | 0042 | 29 | TRICOLL_TRIANGLES |
2 | respawn.titanfall.TricollTriangle |
100% |
| 67 | 0043 | 29 | UNUSED_67 |
0 | 0% | |
| 68 | 0044 | 29 | TRICOLL_NODES |
1 | respawn.titanfall.TricollNode |
100% |
| 69 | 0045 | 29 | TRICOLL_HEADERS |
1 | respawn.titanfall.TricollHeader |
100% |
| 70 | 0046 | 29 | PHYSICS_TRIANGLES |
0 | 0% | |
| 71 | 0047 | 29 | VERTEX_UNLIT |
0 | respawn.titanfall.VertexUnlit |
100% |
| 72 | 0048 | 29 | VERTEX_LIT_FLAT |
1 | respawn.titanfall.VertexLitFlat |
100% |
| 73 | 0049 | 29 | VERTEX_LIT_BUMP |
1 | respawn.titanfall.VertexLitBump |
100% |
| 74 | 004A | 29 | VERTEX_UNLIT_TS |
0 | respawn.titanfall.VertexUnlitTS |
100% |
| 75 | 004B | 29 | VERTEX_BLINN_PHONG |
0 | respawn.titanfall.VertexBlinnPhong |
100% |
| 76 | 004C | 29 | VERTEX_RESERVED_5 |
0 | 0% | |
| 77 | 004D | 29 | VERTEX_RESERVED_6 |
0 | 0% | |
| 78 | 004E | 29 | VERTEX_RESERVED_7 |
0 | 0% | |
| 79 | 004F | 29 | MESH_INDICES |
0 | shared.UnsignedShorts |
100% |
| 80 | 0050 | 29 | MESHES |
0 | respawn.titanfall.Mesh |
100% |
| 80 | 0050 | 37 | MESHES |
0 | respawn.titanfall2.Mesh |
100% |
| 81 | 0051 | 29 | MESH_BOUNDS |
0 | respawn.titanfall.MeshBounds |
100% |
| 82 | 0052 | 29 | MATERIAL_SORTS |
0 | respawn.titanfall.MaterialSort |
100% |
| 83 | 0053 | 29 | LIGHTMAP_HEADERS |
1 | respawn.titanfall.LightmapHeader |
100% |
| 84 | 0054 | 29 | UNUSED_84 |
0 | 0% | |
| 85 | 0055 | 29 | CM_GRID |
0 | respawn.titanfall.Grid |
100% |
| 86 | 0056 | 29 | CM_GRID_CELLS |
0 | respawn.titanfall.GridCell |
100% |
| 87 | 0057 | 29 | CM_GEO_SETS |
0 | respawn.titanfall.GeoSet |
100% |
| 87 | 0057 | 37 | CM_GEO_SETS |
0 | respawn.titanfall2.GeoSet |
50% |
| 88 | 0058 | 29 | CM_GEO_SET_BOUNDS |
0 | respawn.titanfall.Bounds |
100% |
| 89 | 0059 | 29 | CM_PRIMITIVES |
0 | respawn.titanfall.Primitive |
100% |
| 89 | 0059 | 37 | CM_PRIMITIVES |
0 | respawn.titanfall2.Primitive |
100% |
| 90 | 005A | 29 | CM_PRIMITIVE_BOUNDS |
0 | respawn.titanfall.Bounds |
100% |
| 91 | 005B | 29 | CM_UNIQUE_CONTENTS |
0 | shared.UnsignedInts |
100% |
| 92 | 005C | 29 | CM_BRUSHES |
0 | respawn.titanfall.Brush |
100% |
| 93 | 005D | 29 | CM_BRUSH_SIDE_PLANE_OFFSETS |
0 | shared.UnsignedShorts |
100% |
| 94 | 005E | 29 | CM_BRUSH_SIDE_PROPERTIES |
0 | respawn.titanfall.BrushSideProperty |
100% |
| 95 | 005F | 29 | CM_BRUSH_SIDE_TEXTURE_VECTORS |
0 | respawn.titanfall.TextureVector |
100% |
| 96 | 0060 | 29 | TRICOLL_BEVEL_STARTS |
0 | shared.UnsignedShorts |
100% |
| 97 | 0061 | 29 | TRICOLL_BEVEL_INDICES |
0 | shared.UnsignedInts |
100% |
| 98 | 0062 | 29 | LIGHTMAP_DATA_SKY |
0 | extensions.lightmaps.extract |
100% |
| 98 | 0062 | 37 | LIGHTMAP_DATA_SKY |
0 | extensions.lightmaps.extract |
100% |
| 99 | 0063 | 29 | CSM_AABB_NODES |
0 | respawn.titanfall.CSMAABBNode |
100% |
| 100 | 0064 | 29 | CSM_OBJ_REFERENCES |
0 | shared.UnsignedShorts |
100% |
| 101 | 0065 | 29 | LIGHTPROBES |
0 | respawn.titanfall.LightProbe |
100% |
| 102 | 0066 | 29 | STATIC_PROP_LIGHTPROBE_INDICES |
0 | 0% | |
| 103 | 0067 | 29 | LIGHTPROBE_TREE |
0 | respawn.titanfall.LightProbeTree |
100% |
| 104 | 0068 | 29 | LIGHTPROBE_REFERENCES |
0 | respawn.titanfall.LightProbeRef |
100% |
| 104 | 0068 | 37 | LIGHTPROBE_REFERENCES |
0 | respawn.titanfall2.LightProbeRef |
66% |
| 105 | 0069 | 29 | LIGHTMAP_DATA_REAL_TIME_LIGHTS |
0 | extensions.lightmaps.extract |
100% |
| 105 | 0069 | 37 | LIGHTMAP_DATA_REAL_TIME_LIGHTS |
0 | extensions.lightmaps.extract |
100% |
| 106 | 006A | 29 | CELL_BSP_NODES |
0 | respawn.titanfall.CellBSPNode |
100% |
| 107 | 006B | 29 | CELLS |
0 | respawn.titanfall.Cell |
100% |
| 108 | 006C | 29 | PORTALS |
0 | respawn.titanfall.Portal |
100% |
| 109 | 006D | 29 | PORTAL_VERTICES |
0 | id_software.quake.Vertex |
100% |
| 110 | 006E | 29 | PORTAL_EDGES |
0 | shared.UnsignedShorts |
100% |
| 111 | 006F | 29 | PORTAL_VERTEX_EDGES |
0 | respawn.titanfall.PortalIndexSet |
100% |
| 112 | 0070 | 29 | PORTAL_VERTEX_REFERENCES |
0 | shared.UnsignedShorts |
100% |
| 113 | 0071 | 29 | PORTAL_EDGE_REFERENCES |
0 | shared.UnsignedShorts |
100% |
| 114 | 0072 | 29 | PORTAL_EDGE_INTERSECT_AT_EDGE |
0 | respawn.titanfall.PortalIndexSet |
100% |
| 115 | 0073 | 29 | PORTAL_EDGE_INTERSECT_AT_VERTEX |
0 | respawn.titanfall.PortalIndexSet |
100% |
| 116 | 0074 | 29 | PORTAL_EDGE_INTERSECT_HEADER |
0 | respawn.titanfall.PortalEdgeIntersectHeader |
100% |
| 117 | 0075 | 29 | OCCLUSION_MESH_VERTICES |
0 | id_software.quake.Vertex |
100% |
| 118 | 0076 | 29 | OCCLUSION_MESH_INDICES |
0 | shared.Shorts |
100% |
| 119 | 0077 | 29 | CELL_AABB_NODES |
0 | respawn.titanfall.CellAABBNode |
100% |
| 120 | 0078 | 29 | OBJ_REFERENCES |
0 | shared.UnsignedShorts |
100% |
| 121 | 0079 | 29 | OBJ_REFERENCE_BOUNDS |
0 | respawn.titanfall.ObjRefBounds |
100% |
| 122 | 007A | 29 | UNUSED_122 |
0 | 0% | |
| 122 | 007A | 37 | LIGHTMAP_DATA_RTL_PAGE |
0 | 0% | |
| 123 | 007B | 29 | LEVEL_INFO |
0 | respawn.titanfall.LevelInfo |
100% |
| 124 | 007C | 29 | SHADOW_MESH_OPAQUE_VERTICES |
0 | id_software.quake.Vertex |
100% |
| 125 | 007D | 29 | SHADOW_MESH_ALPHA_VERTICES |
0 | respawn.titanfall.ShadowMeshAlphaVertex |
100% |
| 126 | 007E | 29 | SHADOW_MESH_INDICES |
0 | shared.UnsignedShorts |
100% |
| 127 | 007F | 29 | SHADOW_MESHES |
0 | respawn.titanfall.ShadowMesh |
100% |