

<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.zeroy.com/index.php?action=history&amp;feed=atom&amp;title=Call_of_Duty_2%3A_d3dbsp</id>
	<title>Call of Duty 2: d3dbsp - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.zeroy.com/index.php?action=history&amp;feed=atom&amp;title=Call_of_Duty_2%3A_d3dbsp"/>
	<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=Call_of_Duty_2:_d3dbsp&amp;action=history"/>
	<updated>2026-04-30T20:34:01Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.zeroy.com/index.php?title=Call_of_Duty_2:_d3dbsp&amp;diff=16622&amp;oldid=prev</id>
		<title>CoDEmanX: -spam</title>
		<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=Call_of_Duty_2:_d3dbsp&amp;diff=16622&amp;oldid=prev"/>
		<updated>2012-03-10T21:19:45Z</updated>

		<summary type="html">&lt;p&gt;-spam&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Note|Deciphering the Call of Duty 2 D3DBSP format}}&lt;br /&gt;
&lt;br /&gt;
The .d3dbsp structure, Call of Duty 2&amp;#039;s variant on the well-known BSP format, is rather difficult to decipher. Since it&amp;#039;s a binary file you can&amp;#039;t simply read it. A hexadecimal editor is the best tool in this case. I am still deciphering it myself, I will post anything I happen to get known of regarding the file format.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Be sure to read [http://www.geocities.com/cofrdrbob/bspformat.html here] and [http://en.wikipedia.org/wiki/BSP_(file_extension) here] before you even try to decipher it. Knowing what the technique is that BSP formatted maps use, could be handy as well. The Call of Duty 2 engine is based on its ancestor, so is the BSP: [[Call of Duty 1: d3dbsp]]&lt;br /&gt;
&lt;br /&gt;
Every number ending with an &amp;#039;h&amp;#039; indicates its a number using the hexadecimal count system. For other numbers one can assume the decimal count system is used.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Numbers are stored in little-endian.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
The endianness describes the order in which a sequence of bytes are stored in computer memory. Little-endian is an order in which the &amp;quot;little end&amp;quot; (least significant value in the sequence) is stored first.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An useful however not documented feature of the cod2map.exe is the &amp;lt;code&amp;gt;-info&amp;lt;/code&amp;gt; parameter. It analyzes the given BSP and prints the name, length and entry count of all lumps to console. One can use it for deductions regarding the lump and entry sizes and also to identify the kind of content.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Header=&lt;br /&gt;
The file starts with 2 DWORDS: the header &amp;#039;IBSP&amp;#039; indicating this is a BSP file originally designed by ID software and the version number 4 (4h).&lt;br /&gt;
&lt;br /&gt;
Then there is an array, filled with DWORD pairs, indicating the lump&amp;#039;s offset and length respectively. The array ends with 2 empty (zero) DWORDs. Each lump that has size 0 in the list is simply not filled / not used.&lt;br /&gt;
&lt;br /&gt;
 [[Image:Lightbulb.png]]&amp;#039;&amp;#039; Note: there can be a difference of number of lumps per map. If a map has a leak&lt;br /&gt;
 (no solid skybox or not everything is IN the skybox) the bsp only has 24 lumps (or even 23 if light is not&lt;br /&gt;
 compiled). The bsp description yet only supports the 37-lumps version (a valid map).&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Lumps=&lt;br /&gt;
A BSP is organized in several sections, called lumps. Each lump stores data with different functionality. It&amp;#039;s a data unit containing sub-sections, or better: entries. Every entry is a binary representations of something, a plane &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.surgepromotions.com/74/custom-shot-glasses/ &amp;lt;span style=&amp;quot;color:black;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;custom shot glasses&amp;lt;/span&amp;gt;] for instance. Such a plane is stored as a normal vector (3 floats) and a distance (1 float). The length of the datatype &amp;quot;float&amp;quot; is 4 byte (DWORD), so the size of one plane entry is 4 DWORDs (4*4 = 16 bytes).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[0] - Materials ==&lt;br /&gt;
&amp;#039;&amp;#039;former Textures&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Texture information is 72 bytes long per texture. The first 64 bytes are used for the texture name. Then we have an DWORD for flags, and another DWORD for content flags.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct Material&lt;br /&gt;
{&lt;br /&gt;
    char name[64];&lt;br /&gt;
    unsigned char flags[2][4];&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
d_beachpebble                                                   0x00b00000 0x00000004&lt;br /&gt;
stalingrad_ground_trench                                        0x00e00000 0x00000001&lt;br /&gt;
duhoc_dirt_ground1                                              0x00600000 0x00000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Flags:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Surface type:&lt;br /&gt;
-------------&lt;br /&gt;
         -          - &amp;lt;error&amp;gt; (asset manager will fail)&lt;br /&gt;
0x00000000 0x00000001 &amp;lt;none&amp;gt;&lt;br /&gt;
0x01600000 0x00000001 asphalt&lt;br /&gt;
0x00100000 0x00000001 bark&lt;br /&gt;
0x00200000 0x00000001 brick&lt;br /&gt;
0x00300000 0x00000001 carpet&lt;br /&gt;
0x00400000 0x00000001 cloth&lt;br /&gt;
0x00500000 0x00000001 concrete&lt;br /&gt;
0x00600000 0x00000001 dirt&lt;br /&gt;
0x00700000 0x00000001 flesh&lt;br /&gt;
0x00800000 0x00000002 foliage&lt;br /&gt;
0x00900000 0x00000010 glass&lt;br /&gt;
0x00a00000 0x00000001 grass&lt;br /&gt;
0x00b00000 0x00000001 gravel&lt;br /&gt;
0x00c00000 0x00000001 ice&lt;br /&gt;
0x00d00000 0x00000001 metal&lt;br /&gt;
0x00e00000 0x00000001 mud&lt;br /&gt;
0x00f00000 0x00000001 paper&lt;br /&gt;
0x01000000 0x00000001 plaster&lt;br /&gt;
0x01100000 0x00000001 rock&lt;br /&gt;
0x01200000 0x00000001 sand&lt;br /&gt;
0x01300000 0x00000001 snow&lt;br /&gt;
0x01400000 0x00000020 water&lt;br /&gt;
0x01500000 0x00000001 wood&lt;br /&gt;
&lt;br /&gt;
Surface properties:&lt;br /&gt;
-------------------&lt;br /&gt;
0x00000000 0x00000080 missileClip&lt;br /&gt;
0x00000000 0x00002000 bulletClip&lt;br /&gt;
0x00000000 0x00010000 playerClip&lt;br /&gt;
0x00000000 0x00000200 vehicleClip&lt;br /&gt;
0x00000000 0x00020000 aiClip&lt;br /&gt;
0x00000000 0x00000400 itemClip&lt;br /&gt;
0x00000000 0x00000041 canShootClip&lt;br /&gt;
0x00000000 0x00001000 aiSightClip&lt;br /&gt;
0x00000001 0x00000001 noFallDamage&lt;br /&gt;
0x00002000 0x00000001 noSteps&lt;br /&gt;
0x00000010 0x00000001 noImpact&lt;br /&gt;
0x00000020 0x00000001 noMarks&lt;br /&gt;
0x00000000 0x80000000 noDrop&lt;br /&gt;
0x00000002 0x00000001 slick&lt;br /&gt;
0x00000008 0x00000001 ladder&lt;br /&gt;
0x02000000 0x01000001 mantleOn&lt;br /&gt;
0x04000000 0x01000001 mantleOver&lt;br /&gt;
0x00000000 0x00000001 noLightmap&lt;br /&gt;
0x00020000 0x00000001 noDynamicLight&lt;br /&gt;
0x00040000 0x00000001 noCastShadow&lt;br /&gt;
0x00000080 0x00000001 noDraw&lt;br /&gt;
0x00000000 0x00000001 noFog&lt;br /&gt;
0x00000000 0x00000001 drawToggle&lt;br /&gt;
0x00000004 0x00000800 sky&lt;br /&gt;
0x00000000 0x00000001 radialNormals&lt;br /&gt;
0x00000000 0x00000004 nonColliding&lt;br /&gt;
0x00004000 0x00000000 nonSolid&lt;br /&gt;
0x00000000 0x20000001 transparent \__ (two entries&lt;br /&gt;
0x00000000 0x28000001 transparent /    added to lump)&lt;br /&gt;
0x00000000 0x08000001 detail&lt;br /&gt;
0x00000000 0x10000001 structural&lt;br /&gt;
0x80000000 0x00000000 portal&lt;br /&gt;
0x00000000 0x00000001 occluder&lt;br /&gt;
         -          - origin (no lump entry)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br id=&amp;quot;combinations&amp;quot;&amp;gt;&lt;br /&gt;
Combinations (examples):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x00000000 0x00002080 missleClip &amp;amp; bulletClip&lt;br /&gt;
0x00000000 0xb0000000 noDrop &amp;amp; transparent &amp;amp; structural&lt;br /&gt;
0x00000000 0x90000000 noDrop &amp;amp; structural&lt;br /&gt;
0x00000004 0x20000800 transparent &amp;amp; sky \__ (two entries&lt;br /&gt;
0x00000004 0x28000800 transparent &amp;amp; sky /    added to lump)&lt;br /&gt;
0x01400088 0x00000020 water &amp;amp; noFog &amp;amp; noDraw &amp;amp; ladder&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These flags can be set in AssMan, nonetheless some Radiant functions influence them as well, e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;Make Weapon Clip&amp;quot; on a wood-textured brush&lt;br /&gt;
&lt;br /&gt;
0x01500000 0x00000001 \__ usual wood flags&lt;br /&gt;
0x01500000 0x00002080 /   first flag like wood, second flag missleClip &amp;amp; bulletClip&lt;br /&gt;
&lt;br /&gt;
Note: the brush lost its collision (less planes in lump 4 etc.)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[1] - Lightmaps ==&lt;br /&gt;
&amp;#039;&amp;#039;former World Lightning&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Contains most of the pre-processed lightning. Not present if compiled without lightning, otherwise a multiple of 4.096 KB.&lt;br /&gt;
&lt;br /&gt;
Without: World geometry is rendered overbright&lt;br /&gt;
&lt;br /&gt;
[[Image:CoD2 Toujane Lump1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[2] - Light Grid Hash ==&lt;br /&gt;
former &amp;#039;&amp;#039;Light Volume&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Precalculated (sun)light in the 3d space of the playable area, also called light grid. Each entry is 8 bytes long.&lt;br /&gt;
&lt;br /&gt;
Without: a lot less light influence and a little rainbow colors on entities (e.g. player)&lt;br /&gt;
&lt;br /&gt;
[[Image:CoD2 Toujane Lump2.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[3] - Light Grid Values ==&lt;br /&gt;
&amp;#039;&amp;#039;former Model Lightning&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Base (sun)light for model entities (ground lighting for xmodels). 24 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
Without: models show up very dark&lt;br /&gt;
&lt;br /&gt;
[[Image:CoD2 Toujane Lump3.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[4] - Planes ==&lt;br /&gt;
Each plane is defined by 4 DWORDs (16 bytes), 3 for the normal vector and 1 for the offset of the origin. Planes are faces with infinite length, we suspect they have to do with the rendering system.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct Plane&lt;br /&gt;
{&lt;br /&gt;
    float normal[3];&lt;br /&gt;
    float distance;&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:CoD2_Planes.png|300px]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 0 |  0        0         1         128&lt;br /&gt;
 1 |  0        0         1         320&lt;br /&gt;
 2 |  0        1         0        -384&lt;br /&gt;
 3 |  1        0         0         384&lt;br /&gt;
 4 |  0        1         0        -128&lt;br /&gt;
 5 |  1        0         0         128&lt;br /&gt;
 6 |  0        0.707107  0.707107  90.5097&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[5] - Brushsides ==&lt;br /&gt;
Without: CMod_LoadBrushes: bad side count&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct Brushside&lt;br /&gt;
{&lt;br /&gt;
    union Column1 // first 6 entries indicated by an entry in lump 6 are distances, rest is plane ID&amp;#039;s&lt;br /&gt;
    {&lt;br /&gt;
        unsigned int plane;&lt;br /&gt;
        float distance;&lt;br /&gt;
    } column1;&lt;br /&gt;
&lt;br /&gt;
    unsigned int texture;&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lump 5 and 6 are used for the collision map, however the second column holds texture IDs. The ID is a reference to [[#Lump.5B0.5D_-_Materials|lump 0]] and can be used to look up the texture flags. These tell the game wether the brush is used for collision detection only, acts as ladder, player clip etc.&lt;br /&gt;
&lt;br /&gt;
Each entry has a length of 8 bytes. Two columns, first either distance or plane id:&lt;br /&gt;
*&amp;lt;code&amp;gt;float&amp;amp;nbsp; distance - plane parallel to x, y or z axis&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;ushort plane_id - slant plane reference to [[#Lump.5B4.5D_-_Planes|lump 4]] (#)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The first six entries per brush ([[#Lump.5B6.5D_-_Brushes|lump 6]]) are distances defining a bounding box, followed by optional plane IDs for more complex, but still convex brushes. Imagine a wooden cube (bounding box), where you cut off pieces with an axe. Note that the axe&amp;#039;s blade is infinite, you can&amp;#039;t do partial cuts.&lt;br /&gt;
&lt;br /&gt;
The normal vector&amp;#039;s direction represents the plane&amp;#039;s facing. The decision, which part will be kept of the volume (brush), is made here. The part the vector points is dropped. If you negate the normal vector, it points to the remaining volume.&lt;br /&gt;
&lt;br /&gt;
[[Image:CoD2_-_Cutting_Brush_with_Plane_2.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     128       20&lt;br /&gt;
     384       18&lt;br /&gt;
    -384       17&lt;br /&gt;
    -128       19&lt;br /&gt;
     128       15&lt;br /&gt;
     320       16&lt;br /&gt;
     13 #      21&lt;br /&gt;
     128       12&lt;br /&gt;
     384       14&lt;br /&gt;
     128       13&lt;br /&gt;
     384       14&lt;br /&gt;
     128       11&lt;br /&gt;
     320       14&lt;br /&gt;
     10 #      14&lt;br /&gt;
     12 #      14&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Image:CoD2_Brush_Bounding_Box.png|350px]]&lt;br /&gt;
|&amp;lt;div style=&amp;quot;margin-left:20px;margin-right:20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Order of the bounding box sides:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*1 - left&lt;br /&gt;
*2 - right&lt;br /&gt;
*3 - front&lt;br /&gt;
*4 - back&lt;br /&gt;
*5 - bottom&lt;br /&gt;
*6 - top&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Bounding Box:&lt;br /&gt;
&amp;lt;p&amp;gt;The minimum or smallest bounding or enclosing box&amp;lt;br&amp;gt;&lt;br /&gt;
that indicates the maximum extents of an object.&amp;lt;br&amp;gt;&lt;br /&gt;
In our case, each two sides are parallel to&amp;lt;br&amp;gt;&lt;br /&gt;
one of the axis (x/y/z) to shape an aligned cube.&amp;lt;br&amp;gt;&lt;br /&gt;
(technical term: AABB - axis-aligned bounding box)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Second column is a texture id, texture lump:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0 | dawnville2_wartorn_brick07                                      0x00200000 0x00000001&lt;br /&gt;
1 | dawnville2_wood_boards01                                        0x01500000 0x00000001&lt;br /&gt;
2 | dawnville2_wood_boards01                                        0x01500000 0x00002080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Lump[6] - Brushes ==&lt;br /&gt;
Without: no collision with brush geometry. [http://xfire.com/video/79c82/ Footage (Xfire)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct Brush&lt;br /&gt;
{&lt;br /&gt;
    unsigned short sides;&lt;br /&gt;
    unsigned short material_id;&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Brushside index, two ushorts per entry (2 byte unsigned integer, 4 bytes each row).&lt;br /&gt;
&lt;br /&gt;
*First column:&lt;br /&gt;
Amount of brushsides, start id can be calculated &amp;lt;code&amp;gt;(sum_of_previous_amounts - 1)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
For end id, add the entry value to the start id &amp;lt;code&amp;gt;(sum_of_previous_amounts - 1 + amount_of_brushsides)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   7   15&lt;br /&gt;
   8   11&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Second column:&lt;br /&gt;
Might be texture id, perhaps one of the applied textures as default.&amp;lt;br&amp;gt;&lt;br /&gt;
If more than one texture is mapped to the brush, it may get overwritten (brushsides lump texture id).&lt;br /&gt;
&lt;br /&gt;
New theory: the texture flags (properties) are actually referenced to set up the brush characteristic and the engine behaves accordingly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[7] - TriangleSoups ==&lt;br /&gt;
Without: LoadMap: funny lump size in (*.d3dbsp)&lt;br /&gt;
&lt;br /&gt;
It&amp;#039;s like the missing link between the triangles ([[#Lump.5B9.5D_-_Triangles|lump 9]]) and vertices ([[#Lump.5B8.5D_-_Vertices|lump 8]]). It refers to both of them defining the texture per triangle, giving the offset in the vertex lump to which the numbers in lump 9 point to (ID&amp;#039;s in lump 9 point to vertex as in: offset + ID, offset is given in this lump). Also offset in triangles lump is given.&lt;br /&gt;
&lt;br /&gt;
16 bytes per entry:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct TriangleSoup&lt;br /&gt;
{&lt;br /&gt;
    unsigned short material_id;&lt;br /&gt;
&lt;br /&gt;
    unsigned short draw_order;&lt;br /&gt;
&lt;br /&gt;
    unsigned int vertex_offset;&lt;br /&gt;
    unsigned short vertex_length;&lt;br /&gt;
&lt;br /&gt;
    unsigned short triangle_length;&lt;br /&gt;
    unsigned int triangle_offset;&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
       0        0        0   24   84        0&lt;br /&gt;
       1        0       24    8   24       84&lt;br /&gt;
       2        0       32   14   18      108&lt;br /&gt;
       3        0       46   40   66      126&lt;br /&gt;
       4        0       86   16   24      192&lt;br /&gt;
       5        0      102   78  144      216&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[8] - Vertices ==&lt;br /&gt;
&amp;#039;&amp;#039;or DrawVerts&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Every vertex entry is 17 DWORDs long (68 bytes).&lt;br /&gt;
First 3 DWORDs define the position (x y and z). Next 3 DWORDs define the normal vector of the vertex (x y and z) (WHY?!), then a DWORD which defines the colour (BGR) and the opacity (A). Then 2 DWORDs which have to do with texture shifting, and 2 more DWORDs for something yet unknown. At the end we have 6 DWORDs having to do with texture alignment (rotation?).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct DrawVertex&lt;br /&gt;
{&lt;br /&gt;
    float position[3];&lt;br /&gt;
    float normal[3];&lt;br /&gt;
    unsigned char rgba[4];&lt;br /&gt;
&lt;br /&gt;
    float uv[2];&lt;br /&gt;
    float st[2];&lt;br /&gt;
&lt;br /&gt;
    float unknown[6];&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
     256      256      -64  0.235702 0.235702 0.942809 0xff80a0c0  1.000000  1.000000  0.023438  0.001953  0.970143  0.000000 -0.242536 -0.057166  0.971825 -0.228665 &lt;br /&gt;
       0      256        0  0.119573 0.119573 0.985599 0xff80a0c0  0.000000  1.000000  0.007813  0.001953  0.992719  0.000117 -0.120451 -0.014518  0.992825 -0.118689 &lt;br /&gt;
       0        0        0  0        0        1        0xff80a0c0  0.000000  0.000000  0.007813  0.017578  1.000000  0.000000  0.000000  0.000000  1.000000  0.000000 &lt;br /&gt;
     256        0        0  0.119573 0.119573 0.985599 0xff80a0c0  1.000000  0.000000  0.023438  0.017578  0.992719  0.000117 -0.120451 -0.014518  0.992825 -0.118689 &lt;br /&gt;
    -100        0        0  0        0        1        0xffffffff  0.804688  0.000000  0.001709  0.017578  1.000000  0.000000  0.000000  0.000000 -1.000000  0.000000 &lt;br /&gt;
       0        0        0  0        0        1        0xffffffff  1.000000  0.000000  0.007813  0.017578  1.000000  0.000000  0.000000  0.000000 -1.000000  0.000000 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[9] - Triangles ==&lt;br /&gt;
&amp;#039;&amp;#039;or DrawIndexes&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
A face is made up of 3 vertexes, giving a triangle. One entry is actually 2 bytes long (ushort), but 3 sequently stored make up one triangle. So 3 entries can be treated as 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct DrawIndex&lt;br /&gt;
{&lt;br /&gt;
    unsigned short vertex[3];&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   8    9    6 &lt;br /&gt;
  12   13   10 &lt;br /&gt;
  22   23   20 &lt;br /&gt;
  20   21   22 &lt;br /&gt;
   2   19    0 &lt;br /&gt;
   0    5    2 &lt;br /&gt;
  18    3   16 &lt;br /&gt;
  16   17   18 &lt;br /&gt;
  10   14   12 &lt;br /&gt;
   6   15    8 &lt;br /&gt;
  11    7    4 &lt;br /&gt;
   4    1   11 &lt;br /&gt;
   6    7    4 &lt;br /&gt;
   4    5    6 &lt;br /&gt;
   2    3    0 &lt;br /&gt;
   0    1    2 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[10] - Cull Groups ==&lt;br /&gt;
32 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[11] - Cull Group Indexes ==&lt;br /&gt;
4 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[17] - Portal Verts ==&lt;br /&gt;
12 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct PortalVertex&lt;br /&gt;
{&lt;br /&gt;
    float unknown[3];&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Lump[18] - Occluder ==&lt;br /&gt;
20 bytes per entry. Fine portalling within a cell, [http://developer.valvesoftware.com/wiki/Func_occluder Valve Engine example]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[19] - Occluder Planes ==&lt;br /&gt;
4 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[20] - Occluder Edges ==&lt;br /&gt;
4 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[21] - Occluder Indexes ==&lt;br /&gt;
2 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[22] - AABB Trees ==&lt;br /&gt;
Without: game crashes with application error&lt;br /&gt;
&lt;br /&gt;
12 bytes per entry. Web links: [http://www.cyberkreations.com/kreationsedge/?page_id=27] [http://www.amazon.com/Real-Time-Collision-Detection-Interactive-Technology/dp/1558607323]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct AABBTree&lt;br /&gt;
{&lt;br /&gt;
    unsigned int unknown[3];&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
       0     1278        8 &lt;br /&gt;
       0      300        6 &lt;br /&gt;
     300       22        2 &lt;br /&gt;
     322      292        5 &lt;br /&gt;
     614       17        2 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[23] - Cells ==&lt;br /&gt;
Assumed to be VIS portals, contains a cell in Skybox dimension (first entry). 52 bytes per entry (example needs update!).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct Cell&lt;br /&gt;
{&lt;br /&gt;
    float unknown[3];&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     120     -392      120 &lt;br /&gt;
     392     -120      328 &lt;br /&gt;
       0        0        0 &lt;br /&gt;
       0        0        0 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[24] - Portals ==&lt;br /&gt;
16 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct Portal&lt;br /&gt;
{&lt;br /&gt;
    unsigned int unknown[4];&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[25] - Nodes ==&lt;br /&gt;
Without: Map has no Nodes&lt;br /&gt;
&lt;br /&gt;
36 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct Node&lt;br /&gt;
{&lt;br /&gt;
    int unknown[9];&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
       1       -2        1      -16      -16       -8        8        8       16 &lt;br /&gt;
       5        2       -8      -16      -16       -8        8        8        8 &lt;br /&gt;
       0        3       -7       -8      -16       -8        8        8        8 &lt;br /&gt;
       3       -3        4       -8      -16        0        8        8        8 &lt;br /&gt;
       4       -4        5       -8      -16        0        0        8        8 &lt;br /&gt;
       2       -5       -6       -8      -16        0        0        0        8 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[26] - Leafs ==&lt;br /&gt;
Without: Map has no Leafs&lt;br /&gt;
&lt;br /&gt;
36 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct Leaf&lt;br /&gt;
{&lt;br /&gt;
    int unknown[9];&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
       0        0        0        0        0        0        0        0        0 &lt;br /&gt;
      -1       -1        0        0        0        1       -1        0        0 &lt;br /&gt;
      -1       -1        0        0        1        1       -1        0        0 &lt;br /&gt;
      -1       -1        0        0        2        1       -1        0        0 &lt;br /&gt;
       0        0        0        0        3        0        0        0        0 &lt;br /&gt;
      -1       -1        0        0        3        1       -1        0        0 &lt;br /&gt;
      -1       -1        0        0        4        1       -1        0        0 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The 5th column is possibly an id of lump 27.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[27] - Leaf Brushes ==&lt;br /&gt;
Without: Stuck in loadscreen, game closes after a couple seconds without error.&lt;br /&gt;
&lt;br /&gt;
This lump contains a list of brush IDs ([[#Lump.5B6.5D_-_Brushes|lump 6]]), there might be an index lump for it. 4 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct LeafBrush&lt;br /&gt;
{&lt;br /&gt;
    int unknown;&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
      53&lt;br /&gt;
      52&lt;br /&gt;
      51&lt;br /&gt;
      50&lt;br /&gt;
      14&lt;br /&gt;
       1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[29] - Collision Verts ==&lt;br /&gt;
Without: no visible changes&lt;br /&gt;
&lt;br /&gt;
16 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct CollisionVertex&lt;br /&gt;
{&lt;br /&gt;
    float unknown[4];&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[30] - Collision Edges ==&lt;br /&gt;
&amp;#039;&amp;#039;former Player Terrain Collision&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Without: terrain retains collision, but player can&amp;#039;t move smoothly on the ground. It&amp;#039;s easy to get stuck or float around. Still okay where terrain is very even. [http://xfire.com/video/79c90/ Footage (Xfire)]. 56 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct CollisionEdge&lt;br /&gt;
{&lt;br /&gt;
    unsigned int unknown;&lt;br /&gt;
&lt;br /&gt;
    float position[3];&lt;br /&gt;
    float normal[3][3];&lt;br /&gt;
    float distance;&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
       0       64      128        8        0        0        1  -0.707107  -0.707107        0  0.707107  -0.707107        0  90.5097 &lt;br /&gt;
       0      128       64        8        0        1        0          0          0       -1        -1          0        0       64 &lt;br /&gt;
       0       64       64        8        1        0        0          0          0       -1         0          1        0       64 &lt;br /&gt;
       0       64      128        8        0        1        0          0          0        1         1          0        0       64 &lt;br /&gt;
       0      128      128        8        1        0        0          0          0        1         0         -1        0       64 &lt;br /&gt;
       0      128      128        8        0        0        1  -0.707107  -0.707107        0  0.707107  -0.707107        0  90.5097 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[31] - Collision Tris ==&lt;br /&gt;
Without: game crashes with application error&lt;br /&gt;
&lt;br /&gt;
72 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct CollisionTriangles&lt;br /&gt;
{&lt;br /&gt;
    float normal[3];&lt;br /&gt;
    float distance;&lt;br /&gt;
    float unknown[8];&lt;br /&gt;
    int id[6];&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[32] - Collision Borders ==&lt;br /&gt;
Without: no visible changes&lt;br /&gt;
&lt;br /&gt;
28 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[33] - Collision Parts ==&lt;br /&gt;
Without: game crashes with application error&lt;br /&gt;
&lt;br /&gt;
12 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[34] - Collision AABBs ==&lt;br /&gt;
Without: game crashes with application error&lt;br /&gt;
&lt;br /&gt;
32 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[35] - Models ==&lt;br /&gt;
Without: Map with no models&lt;br /&gt;
&lt;br /&gt;
Possibly similar to &amp;quot;rigid groups of world geometry&amp;quot;: [http://graphics.stanford.edu/~kekoa/q3/#Models Quake3 - Model Lump]&lt;br /&gt;
&lt;br /&gt;
Seems to contain script_brushmodels, maybe more. 48 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct Models&lt;br /&gt;
{&lt;br /&gt;
    float position[6];&lt;br /&gt;
    int id[6];&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  -18048   -11904     -896    -2944     6144     5160        0     5748        0        0        0     8260 &lt;br /&gt;
    -112     -112      -48      112      112       48     5748        0     3072        0     8260        1 &lt;br /&gt;
  -11072    -7504       16   -11014    -7382      144     5748        0     3072        0     8261        1 &lt;br /&gt;
    -112     -112      -48      112      112       48     5748        0     3072        0     8262        1 &lt;br /&gt;
   -9208    -6264        0    -9150    -6142      128     5748        0     3072        0     8263        1 &lt;br /&gt;
     -40      -40        0       40       40       56     5748        0     3072        0     8264        1 &lt;br /&gt;
  -17920   -11904     -512    -3072     6144     -384     5748        0     3072        0     8265        1 &lt;br /&gt;
  -17849   -11977     -512    -3001     6071     -384     5748        0     3072        0     8266        1 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Current investigation status:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
How a script_brushmodel appears in the BSP ([[#Lump.5B37.5D_-_Entities|lump 37]]):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{  // ----- worldspawn block start&lt;br /&gt;
 {&lt;br /&gt;
   // brush definition inside of the worldspawn entity&lt;br /&gt;
   // all geometry elements which belongs to a group of lump 35 are stored sequently&lt;br /&gt;
 }&lt;br /&gt;
}  // ----- worldspawn block end&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;classname&amp;quot; &amp;quot;script_brushmodel&amp;quot;&lt;br /&gt;
 &amp;quot;model&amp;quot; &amp;quot;*1&amp;quot;&lt;br /&gt;
 &amp;quot;targetname&amp;quot; &amp;quot;auto1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the source .map it looks different:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// entity 1&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;targetname&amp;quot; &amp;quot;auto1&amp;quot;&lt;br /&gt;
&amp;quot;classname&amp;quot; &amp;quot;script_brushmodel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 // brush 0&lt;br /&gt;
 {&lt;br /&gt;
   // ...&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 // brush 1&lt;br /&gt;
 {&lt;br /&gt;
   // ...&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 // brush 2&lt;br /&gt;
 {&lt;br /&gt;
   // ...&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It requires a transformation to get script_brushmodels back. The missing link between the geometry and the entity is lump 35. model *&amp;#039;&amp;#039;n&amp;#039;&amp;#039; is an id and refers to an entry of this lump. It references 3 other lumps in turn.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
 [1]     [2]      [3]      [4]      [5]      [6]       [7]      [8]      [9]      [10]    [11]      [12]&lt;br /&gt;
&lt;br /&gt;
  0      256      192      112      320      256        0        1        0        0        0        1 &lt;br /&gt;
 16        0        0      152      128      112        1        4        0        0        1        3 &lt;br /&gt;
208        0      192      320      128      312        5        2        0        0        4        2 &lt;br /&gt;
&lt;br /&gt;
 1 - left   (x)&lt;br /&gt;
 2 - front  (y)&lt;br /&gt;
 3 - bottom (z)&lt;br /&gt;
 4 - right  (x)&lt;br /&gt;
 5 - back   (y)&lt;br /&gt;
 6 - top    (z)&lt;br /&gt;
 7 - texture group (start)&lt;br /&gt;
 8 - texture group (amount)&lt;br /&gt;
 9 - mesh (start)&lt;br /&gt;
10 - mesh (amount)&lt;br /&gt;
11 - brush (start)&lt;br /&gt;
12 - brush (amount)&lt;br /&gt;
&lt;br /&gt;
 1-6 : bounding box&lt;br /&gt;
 7+8 : texture group id reference (lump 7)&lt;br /&gt;
 9+10: patch id reference&lt;br /&gt;
11+12: brush id reference (lump 6)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note: No planes in lump 4 for meshes / patches. Additional verts and tris if surface is visible.&lt;br /&gt;
Mesh related lumps: 29, 30, 31, 33 and 34. One or more of them may contain collision data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[36] - Visibility ==&lt;br /&gt;
&amp;#039;&amp;#039;former VIS&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Present if VIS (portalling) has been calculated during the compile process. Apparently a single block of data.&lt;br /&gt;
&lt;br /&gt;
Without: &amp;lt;code&amp;gt;/r_singlecell 1&amp;lt;/code&amp;gt; still shows the portals, forced VIS?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[37] - Entities ==&lt;br /&gt;
&amp;#039;&amp;#039;or EntData&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The entities lump is readable and stored (almost) the same way described in the [[Call_of_Duty_4:_.MAP_file_structure#Entity|.MAP file structure]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct Entity&lt;br /&gt;
{&lt;br /&gt;
    char data[];&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, after getting rid of redundant data, one might interpret the entity lump like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct Entity&lt;br /&gt;
{&lt;br /&gt;
    std::map&amp;lt;std::string, std::string&amp;gt; pairs;&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In other words, the Entities lump consists of a a number of Entity structs. Each entity struct holds a list of string pairs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Couple entity types in this lump got a &amp;quot;model&amp;quot; key/value pair with a star and a number (*&amp;#039;&amp;#039;n&amp;#039;&amp;#039;), causing Radiant to crash and the compiler to ignore the whole block (see [[#Lump.5B35.5D_-_Models|lump 35]]). You also have to remove certain other things til the decompiler supports a reconstruction method for the necessary data:&lt;br /&gt;
*model *&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&lt;br /&gt;
*fx&lt;br /&gt;
*script_exploder&lt;br /&gt;
*trigger&lt;br /&gt;
*gndLt (optional, ignored by Radiant)&lt;br /&gt;
Furthermore, you need to recreate the skybox at the moment, as there will likely be leaks in the ground caused from caulk/clip/... textured geometry. It&amp;#039;s not visible in game as you know and therefore not stored in the usual lumps for vertices, triangles and so on. But it has collision, and the collision data is either stored in the brush or terrain collmap lumps. Note that many models are clipped using invisible textures as well. If no collmap file is present for a model, create one or it will lack collision after compile. A decompiler would have to reconstruct the collision map to avoid this.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[38] - Paths ==&lt;br /&gt;
SinglePlayer only, connected waypoints and/or paths? Variable in length.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Unidentified lumps==&lt;br /&gt;
Not seen on any map so far, presumably not in use. Feasible lump number predictions in brackets:&lt;br /&gt;
&lt;br /&gt;
*[12] Shadow Verts&lt;br /&gt;
*[13] Shadow Indices&lt;br /&gt;
*[14] Shadow Clusters&lt;br /&gt;
*[15] Shadow AABB Trees&lt;br /&gt;
*[16] Shadow Sources&lt;br /&gt;
*[28] Leaf Surfaces&lt;br /&gt;
*[39] Lights&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Web Links =&lt;br /&gt;
&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Binary_space_partitioning Binary Space Partitioning]&lt;br /&gt;
*[http://www.geocities.com/cofrdrbob/bspformat.html BSP Format]&lt;br /&gt;
*[http://en.wikipedia.org/wiki/BSP_(file_extension) BSP (File Extension)]&lt;br /&gt;
*[http://qxx.planetquake.gamespy.com/bsp/ BSP for Dummies]&lt;br /&gt;
*[http://graphics.stanford.edu/~kekoa/q3/ Unofficial Quake3 Map Specs]&lt;br /&gt;
*[http://www.gamers.org/dEngine/quake/spec/quake-spec34/ Quake Documentation v3.4]&lt;br /&gt;
*[http://www.flipcode.com/archives/Quake_2_BSP_File_Format.shtml Quake 2 BSP File Format]&lt;br /&gt;
*[http://www.modsonwiki.com/index.php/Call_of_Duty_2:_Map_File_Format Call of Duty 2: Map File Format]&lt;br /&gt;
*[http://tremmapping.pbwiki.com/Understanding%20Vis%20and%20Hint%20Brushes Understanding Vis and Hint Brushes (Portalling)]&lt;br /&gt;
*[http://code.google.com/p/bsp-renderer/source/browse/#svn/trunk/src Quake BSP Renderer]&lt;br /&gt;
*[http://quark.planetquake.gamespy.com/infobase/glossary.html Quake Glossary]&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Endianness Endianness]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Made by CoDEmanX and Daevius&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[Category:Call of Duty 2]]&lt;br /&gt;
[[Category:Technical Reference]]&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>CoDEmanX</name></author>
	</entry>
	<entry>
		<id>https://wiki.zeroy.com/index.php?title=Call_of_Duty_2:_d3dbsp&amp;diff=15854&amp;oldid=prev</id>
		<title>Zeroy: Protected &quot;Call of Duty 2: d3dbsp&quot; ([edit=autoconfirmed] (indefinite) [move=autoconfirmed] (indefinite))</title>
		<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=Call_of_Duty_2:_d3dbsp&amp;diff=15854&amp;oldid=prev"/>
		<updated>2011-06-23T19:36:01Z</updated>

		<summary type="html">&lt;p&gt;Protected &amp;quot;&lt;a href=&quot;/index.php?title=Call_of_Duty_2:_d3dbsp&quot; title=&quot;Call of Duty 2: d3dbsp&quot;&gt;Call of Duty 2: d3dbsp&lt;/a&gt;&amp;quot; ([edit=autoconfirmed] (indefinite) [move=autoconfirmed] (indefinite))&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:36, 23 June 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Zeroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.zeroy.com/index.php?title=Call_of_Duty_2:_d3dbsp&amp;diff=15853&amp;oldid=prev</id>
		<title>Zeroy: /* Web Links */</title>
		<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=Call_of_Duty_2:_d3dbsp&amp;diff=15853&amp;oldid=prev"/>
		<updated>2011-06-23T19:35:47Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Web Links&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Note|Deciphering the Call of Duty 2 D3DBSP format}}&lt;br /&gt;
&lt;br /&gt;
The .d3dbsp structure, Call of Duty 2&amp;#039;s variant on the well-known BSP format, is rather difficult to decipher. Since it&amp;#039;s a binary file you can&amp;#039;t simply read it. A hexadecimal editor is the best tool in this case. I am still deciphering it myself, I will post anything I happen to get known of regarding the file format.&lt;br /&gt;
&lt;br /&gt;
Be sure to read [http://www.geocities.com/cofrdrbob/bspformat.html here] and [http://en.wikipedia.org/wiki/BSP_(file_extension) here] before you even try to decipher it. Knowing what the technique is that BSP formatted maps use, could be handy as well. The Call of Duty 2 engine is based on its ancestor, so is the BSP: [[Call of Duty 1: d3dbsp]]&lt;br /&gt;
&lt;br /&gt;
Every number ending with an &amp;#039;h&amp;#039; indicates its a number using the hexadecimal count system. For other numbers one can assume the decimal count system is used.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Numbers are stored in little-endian.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
The endianness describes the order in which a sequence of bytes are stored in computer memory. Little-endian is an order in which the &amp;quot;little end&amp;quot; (least significant value in the sequence) is stored first.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An useful however not documented feature of the cod2map.exe is the &amp;lt;code&amp;gt;-info&amp;lt;/code&amp;gt; parameter. It analyzes the given BSP and prints the name, length and entry count of all lumps to console. One can use it for deductions regarding the lump and entry sizes and also to identify the kind of content.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Header=&lt;br /&gt;
The file starts with 2 DWORDS: the header &amp;#039;IBSP&amp;#039; indicating this is a BSP file originally designed by ID software and the version number 4 (4h).&lt;br /&gt;
&lt;br /&gt;
Then there is an array, filled with DWORD pairs, indicating the lump&amp;#039;s offset and length respectively. The array ends with 2 empty (zero) DWORDs. Each lump that has size 0 in the list is simply not filled / not used.&lt;br /&gt;
&lt;br /&gt;
 [[Image:Lightbulb.png]]&amp;#039;&amp;#039; Note: there can be a difference of number of lumps per map. If a map has a leak&lt;br /&gt;
 (no solid skybox or not everything is IN the skybox) the bsp only has 24 lumps (or even 23 if light is not&lt;br /&gt;
 compiled). The bsp description yet only supports the 37-lumps version (a valid map).&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Lumps=&lt;br /&gt;
A BSP is organized in several sections, called lumps. Each lump stores data with different functionality. It&amp;#039;s a data unit containing sub-sections, or better: entries. Every entry is a binary representations of something, a plane &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://www.surgepromotions.com/74/custom-shot-glasses/ &amp;lt;span style=&amp;quot;color:black;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;&amp;quot;&amp;gt;custom shot glasses&amp;lt;/span&amp;gt;] for instance. Such a plane is stored as a normal vector (3 floats) and a distance (1 float). The length of the datatype &amp;quot;float&amp;quot; is 4 byte (DWORD), so the size of one plane entry is 4 DWORDs (4*4 = 16 bytes).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[0] - Materials ==&lt;br /&gt;
&amp;#039;&amp;#039;former Textures&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Texture information is 72 bytes long per texture. The first 64 bytes are used for the texture name. Then we have an DWORD for flags, and another DWORD for content flags.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct Material&lt;br /&gt;
{&lt;br /&gt;
    char name[64];&lt;br /&gt;
    unsigned char flags[2][4];&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
d_beachpebble                                                   0x00b00000 0x00000004&lt;br /&gt;
stalingrad_ground_trench                                        0x00e00000 0x00000001&lt;br /&gt;
duhoc_dirt_ground1                                              0x00600000 0x00000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Flags:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Surface type:&lt;br /&gt;
-------------&lt;br /&gt;
         -          - &amp;lt;error&amp;gt; (asset manager will fail)&lt;br /&gt;
0x00000000 0x00000001 &amp;lt;none&amp;gt;&lt;br /&gt;
0x01600000 0x00000001 asphalt&lt;br /&gt;
0x00100000 0x00000001 bark&lt;br /&gt;
0x00200000 0x00000001 brick&lt;br /&gt;
0x00300000 0x00000001 carpet&lt;br /&gt;
0x00400000 0x00000001 cloth&lt;br /&gt;
0x00500000 0x00000001 concrete&lt;br /&gt;
0x00600000 0x00000001 dirt&lt;br /&gt;
0x00700000 0x00000001 flesh&lt;br /&gt;
0x00800000 0x00000002 foliage&lt;br /&gt;
0x00900000 0x00000010 glass&lt;br /&gt;
0x00a00000 0x00000001 grass&lt;br /&gt;
0x00b00000 0x00000001 gravel&lt;br /&gt;
0x00c00000 0x00000001 ice&lt;br /&gt;
0x00d00000 0x00000001 metal&lt;br /&gt;
0x00e00000 0x00000001 mud&lt;br /&gt;
0x00f00000 0x00000001 paper&lt;br /&gt;
0x01000000 0x00000001 plaster&lt;br /&gt;
0x01100000 0x00000001 rock&lt;br /&gt;
0x01200000 0x00000001 sand&lt;br /&gt;
0x01300000 0x00000001 snow&lt;br /&gt;
0x01400000 0x00000020 water&lt;br /&gt;
0x01500000 0x00000001 wood&lt;br /&gt;
&lt;br /&gt;
Surface properties:&lt;br /&gt;
-------------------&lt;br /&gt;
0x00000000 0x00000080 missileClip&lt;br /&gt;
0x00000000 0x00002000 bulletClip&lt;br /&gt;
0x00000000 0x00010000 playerClip&lt;br /&gt;
0x00000000 0x00000200 vehicleClip&lt;br /&gt;
0x00000000 0x00020000 aiClip&lt;br /&gt;
0x00000000 0x00000400 itemClip&lt;br /&gt;
0x00000000 0x00000041 canShootClip&lt;br /&gt;
0x00000000 0x00001000 aiSightClip&lt;br /&gt;
0x00000001 0x00000001 noFallDamage&lt;br /&gt;
0x00002000 0x00000001 noSteps&lt;br /&gt;
0x00000010 0x00000001 noImpact&lt;br /&gt;
0x00000020 0x00000001 noMarks&lt;br /&gt;
0x00000000 0x80000000 noDrop&lt;br /&gt;
0x00000002 0x00000001 slick&lt;br /&gt;
0x00000008 0x00000001 ladder&lt;br /&gt;
0x02000000 0x01000001 mantleOn&lt;br /&gt;
0x04000000 0x01000001 mantleOver&lt;br /&gt;
0x00000000 0x00000001 noLightmap&lt;br /&gt;
0x00020000 0x00000001 noDynamicLight&lt;br /&gt;
0x00040000 0x00000001 noCastShadow&lt;br /&gt;
0x00000080 0x00000001 noDraw&lt;br /&gt;
0x00000000 0x00000001 noFog&lt;br /&gt;
0x00000000 0x00000001 drawToggle&lt;br /&gt;
0x00000004 0x00000800 sky&lt;br /&gt;
0x00000000 0x00000001 radialNormals&lt;br /&gt;
0x00000000 0x00000004 nonColliding&lt;br /&gt;
0x00004000 0x00000000 nonSolid&lt;br /&gt;
0x00000000 0x20000001 transparent \__ (two entries&lt;br /&gt;
0x00000000 0x28000001 transparent /    added to lump)&lt;br /&gt;
0x00000000 0x08000001 detail&lt;br /&gt;
0x00000000 0x10000001 structural&lt;br /&gt;
0x80000000 0x00000000 portal&lt;br /&gt;
0x00000000 0x00000001 occluder&lt;br /&gt;
         -          - origin (no lump entry)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br id=&amp;quot;combinations&amp;quot;&amp;gt;&lt;br /&gt;
Combinations (examples):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x00000000 0x00002080 missleClip &amp;amp; bulletClip&lt;br /&gt;
0x00000000 0xb0000000 noDrop &amp;amp; transparent &amp;amp; structural&lt;br /&gt;
0x00000000 0x90000000 noDrop &amp;amp; structural&lt;br /&gt;
0x00000004 0x20000800 transparent &amp;amp; sky \__ (two entries&lt;br /&gt;
0x00000004 0x28000800 transparent &amp;amp; sky /    added to lump)&lt;br /&gt;
0x01400088 0x00000020 water &amp;amp; noFog &amp;amp; noDraw &amp;amp; ladder&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These flags can be set in AssMan, nonetheless some Radiant functions influence them as well, e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;Make Weapon Clip&amp;quot; on a wood-textured brush&lt;br /&gt;
&lt;br /&gt;
0x01500000 0x00000001 \__ usual wood flags&lt;br /&gt;
0x01500000 0x00002080 /   first flag like wood, second flag missleClip &amp;amp; bulletClip&lt;br /&gt;
&lt;br /&gt;
Note: the brush lost its collision (less planes in lump 4 etc.)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[1] - Lightmaps ==&lt;br /&gt;
&amp;#039;&amp;#039;former World Lightning&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Contains most of the pre-processed lightning. Not present if compiled without lightning, otherwise a multiple of 4.096 KB.&lt;br /&gt;
&lt;br /&gt;
Without: World geometry is rendered overbright&lt;br /&gt;
&lt;br /&gt;
[[Image:CoD2 Toujane Lump1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[2] - Light Grid Hash ==&lt;br /&gt;
former &amp;#039;&amp;#039;Light Volume&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Precalculated (sun)light in the 3d space of the playable area, also called light grid. Each entry is 8 bytes long.&lt;br /&gt;
&lt;br /&gt;
Without: a lot less light influence and a little rainbow colors on entities (e.g. player)&lt;br /&gt;
&lt;br /&gt;
[[Image:CoD2 Toujane Lump2.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[3] - Light Grid Values ==&lt;br /&gt;
&amp;#039;&amp;#039;former Model Lightning&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Base (sun)light for model entities (ground lighting for xmodels). 24 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
Without: models show up very dark&lt;br /&gt;
&lt;br /&gt;
[[Image:CoD2 Toujane Lump3.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[4] - Planes ==&lt;br /&gt;
Each plane is defined by 4 DWORDs (16 bytes), 3 for the normal vector and 1 for the offset of the origin. Planes are faces with infinite length, we suspect they have to do with the rendering system.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct Plane&lt;br /&gt;
{&lt;br /&gt;
    float normal[3];&lt;br /&gt;
    float distance;&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:CoD2_Planes.png|300px]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 0 |  0        0         1         128&lt;br /&gt;
 1 |  0        0         1         320&lt;br /&gt;
 2 |  0        1         0        -384&lt;br /&gt;
 3 |  1        0         0         384&lt;br /&gt;
 4 |  0        1         0        -128&lt;br /&gt;
 5 |  1        0         0         128&lt;br /&gt;
 6 |  0        0.707107  0.707107  90.5097&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[5] - Brushsides ==&lt;br /&gt;
Without: CMod_LoadBrushes: bad side count&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct Brushside&lt;br /&gt;
{&lt;br /&gt;
    union Column1 // first 6 entries indicated by an entry in lump 6 are distances, rest is plane ID&amp;#039;s&lt;br /&gt;
    {&lt;br /&gt;
        unsigned int plane;&lt;br /&gt;
        float distance;&lt;br /&gt;
    } column1;&lt;br /&gt;
&lt;br /&gt;
    unsigned int texture;&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lump 5 and 6 are used for the collision map, however the second column holds texture IDs. The ID is a reference to [[#Lump.5B0.5D_-_Materials|lump 0]] and can be used to look up the texture flags. These tell the game wether the brush is used for collision detection only, acts as ladder, player clip etc.&lt;br /&gt;
&lt;br /&gt;
Each entry has a length of 8 bytes. Two columns, first either distance or plane id:&lt;br /&gt;
*&amp;lt;code&amp;gt;float&amp;amp;nbsp; distance - plane parallel to x, y or z axis&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;ushort plane_id - slant plane reference to [[#Lump.5B4.5D_-_Planes|lump 4]] (#)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The first six entries per brush ([[#Lump.5B6.5D_-_Brushes|lump 6]]) are distances defining a bounding box, followed by optional plane IDs for more complex, but still convex brushes. Imagine a wooden cube (bounding box), where you cut off pieces with an axe. Note that the axe&amp;#039;s blade is infinite, you can&amp;#039;t do partial cuts.&lt;br /&gt;
&lt;br /&gt;
The normal vector&amp;#039;s direction represents the plane&amp;#039;s facing. The decision, which part will be kept of the volume (brush), is made here. The part the vector points is dropped. If you negate the normal vector, it points to the remaining volume.&lt;br /&gt;
&lt;br /&gt;
[[Image:CoD2_-_Cutting_Brush_with_Plane_2.png|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     128       20&lt;br /&gt;
     384       18&lt;br /&gt;
    -384       17&lt;br /&gt;
    -128       19&lt;br /&gt;
     128       15&lt;br /&gt;
     320       16&lt;br /&gt;
     13 #      21&lt;br /&gt;
     128       12&lt;br /&gt;
     384       14&lt;br /&gt;
     128       13&lt;br /&gt;
     384       14&lt;br /&gt;
     128       11&lt;br /&gt;
     320       14&lt;br /&gt;
     10 #      14&lt;br /&gt;
     12 #      14&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Image:CoD2_Brush_Bounding_Box.png|350px]]&lt;br /&gt;
|&amp;lt;div style=&amp;quot;margin-left:20px;margin-right:20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Order of the bounding box sides:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*1 - left&lt;br /&gt;
*2 - right&lt;br /&gt;
*3 - front&lt;br /&gt;
*4 - back&lt;br /&gt;
*5 - bottom&lt;br /&gt;
*6 - top&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Bounding Box:&lt;br /&gt;
&amp;lt;p&amp;gt;The minimum or smallest bounding or enclosing box&amp;lt;br&amp;gt;&lt;br /&gt;
that indicates the maximum extents of an object.&amp;lt;br&amp;gt;&lt;br /&gt;
In our case, each two sides are parallel to&amp;lt;br&amp;gt;&lt;br /&gt;
one of the axis (x/y/z) to shape an aligned cube.&amp;lt;br&amp;gt;&lt;br /&gt;
(technical term: AABB - axis-aligned bounding box)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Second column is a texture id, texture lump:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0 | dawnville2_wartorn_brick07                                      0x00200000 0x00000001&lt;br /&gt;
1 | dawnville2_wood_boards01                                        0x01500000 0x00000001&lt;br /&gt;
2 | dawnville2_wood_boards01                                        0x01500000 0x00002080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Lump[6] - Brushes ==&lt;br /&gt;
Without: no collision with brush geometry. [http://xfire.com/video/79c82/ Footage (Xfire)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct Brush&lt;br /&gt;
{&lt;br /&gt;
    unsigned short sides;&lt;br /&gt;
    unsigned short material_id;&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Brushside index, two ushorts per entry (2 byte unsigned integer, 4 bytes each row).&lt;br /&gt;
&lt;br /&gt;
*First column:&lt;br /&gt;
Amount of brushsides, start id can be calculated &amp;lt;code&amp;gt;(sum_of_previous_amounts - 1)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
For end id, add the entry value to the start id &amp;lt;code&amp;gt;(sum_of_previous_amounts - 1 + amount_of_brushsides)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   7   15&lt;br /&gt;
   8   11&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Second column:&lt;br /&gt;
Might be texture id, perhaps one of the applied textures as default.&amp;lt;br&amp;gt;&lt;br /&gt;
If more than one texture is mapped to the brush, it may get overwritten (brushsides lump texture id).&lt;br /&gt;
&lt;br /&gt;
New theory: the texture flags (properties) are actually referenced to set up the brush characteristic and the engine behaves accordingly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[7] - TriangleSoups ==&lt;br /&gt;
Without: LoadMap: funny lump size in (*.d3dbsp)&lt;br /&gt;
&lt;br /&gt;
It&amp;#039;s like the missing link between the triangles ([[#Lump.5B9.5D_-_Triangles|lump 9]]) and vertices ([[#Lump.5B8.5D_-_Vertices|lump 8]]). It refers to both of them defining the texture per triangle, giving the offset in the vertex lump to which the numbers in lump 9 point to (ID&amp;#039;s in lump 9 point to vertex as in: offset + ID, offset is given in this lump). Also offset in triangles lump is given.&lt;br /&gt;
&lt;br /&gt;
16 bytes per entry:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct TriangleSoup&lt;br /&gt;
{&lt;br /&gt;
    unsigned short material_id;&lt;br /&gt;
&lt;br /&gt;
    unsigned short draw_order;&lt;br /&gt;
&lt;br /&gt;
    unsigned int vertex_offset;&lt;br /&gt;
    unsigned short vertex_length;&lt;br /&gt;
&lt;br /&gt;
    unsigned short triangle_length;&lt;br /&gt;
    unsigned int triangle_offset;&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
       0        0        0   24   84        0&lt;br /&gt;
       1        0       24    8   24       84&lt;br /&gt;
       2        0       32   14   18      108&lt;br /&gt;
       3        0       46   40   66      126&lt;br /&gt;
       4        0       86   16   24      192&lt;br /&gt;
       5        0      102   78  144      216&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[8] - Vertices ==&lt;br /&gt;
&amp;#039;&amp;#039;or DrawVerts&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Every vertex entry is 17 DWORDs long (68 bytes).&lt;br /&gt;
First 3 DWORDs define the position (x y and z). Next 3 DWORDs define the normal vector of the vertex (x y and z) (WHY?!), then a DWORD which defines the colour (BGR) and the opacity (A). Then 2 DWORDs which have to do with texture shifting, and 2 more DWORDs for something yet unknown. At the end we have 6 DWORDs having to do with texture alignment (rotation?).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct DrawVertex&lt;br /&gt;
{&lt;br /&gt;
    float position[3];&lt;br /&gt;
    float normal[3];&lt;br /&gt;
    unsigned char rgba[4];&lt;br /&gt;
&lt;br /&gt;
    float uv[2];&lt;br /&gt;
    float st[2];&lt;br /&gt;
&lt;br /&gt;
    float unknown[6];&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
     256      256      -64  0.235702 0.235702 0.942809 0xff80a0c0  1.000000  1.000000  0.023438  0.001953  0.970143  0.000000 -0.242536 -0.057166  0.971825 -0.228665 &lt;br /&gt;
       0      256        0  0.119573 0.119573 0.985599 0xff80a0c0  0.000000  1.000000  0.007813  0.001953  0.992719  0.000117 -0.120451 -0.014518  0.992825 -0.118689 &lt;br /&gt;
       0        0        0  0        0        1        0xff80a0c0  0.000000  0.000000  0.007813  0.017578  1.000000  0.000000  0.000000  0.000000  1.000000  0.000000 &lt;br /&gt;
     256        0        0  0.119573 0.119573 0.985599 0xff80a0c0  1.000000  0.000000  0.023438  0.017578  0.992719  0.000117 -0.120451 -0.014518  0.992825 -0.118689 &lt;br /&gt;
    -100        0        0  0        0        1        0xffffffff  0.804688  0.000000  0.001709  0.017578  1.000000  0.000000  0.000000  0.000000 -1.000000  0.000000 &lt;br /&gt;
       0        0        0  0        0        1        0xffffffff  1.000000  0.000000  0.007813  0.017578  1.000000  0.000000  0.000000  0.000000 -1.000000  0.000000 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[9] - Triangles ==&lt;br /&gt;
&amp;#039;&amp;#039;or DrawIndexes&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
A face is made up of 3 vertexes, giving a triangle. One entry is actually 2 bytes long (ushort), but 3 sequently stored make up one triangle. So 3 entries can be treated as 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct DrawIndex&lt;br /&gt;
{&lt;br /&gt;
    unsigned short vertex[3];&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   8    9    6 &lt;br /&gt;
  12   13   10 &lt;br /&gt;
  22   23   20 &lt;br /&gt;
  20   21   22 &lt;br /&gt;
   2   19    0 &lt;br /&gt;
   0    5    2 &lt;br /&gt;
  18    3   16 &lt;br /&gt;
  16   17   18 &lt;br /&gt;
  10   14   12 &lt;br /&gt;
   6   15    8 &lt;br /&gt;
  11    7    4 &lt;br /&gt;
   4    1   11 &lt;br /&gt;
   6    7    4 &lt;br /&gt;
   4    5    6 &lt;br /&gt;
   2    3    0 &lt;br /&gt;
   0    1    2 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[10] - Cull Groups ==&lt;br /&gt;
32 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[11] - Cull Group Indexes ==&lt;br /&gt;
4 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[17] - Portal Verts ==&lt;br /&gt;
12 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct PortalVertex&lt;br /&gt;
{&lt;br /&gt;
    float unknown[3];&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Lump[18] - Occluder ==&lt;br /&gt;
20 bytes per entry. Fine portalling within a cell, [http://developer.valvesoftware.com/wiki/Func_occluder Valve Engine example]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[19] - Occluder Planes ==&lt;br /&gt;
4 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[20] - Occluder Edges ==&lt;br /&gt;
4 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[21] - Occluder Indexes ==&lt;br /&gt;
2 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[22] - AABB Trees ==&lt;br /&gt;
Without: game crashes with application error&lt;br /&gt;
&lt;br /&gt;
12 bytes per entry. Web links: [http://www.cyberkreations.com/kreationsedge/?page_id=27] [http://www.amazon.com/Real-Time-Collision-Detection-Interactive-Technology/dp/1558607323]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct AABBTree&lt;br /&gt;
{&lt;br /&gt;
    unsigned int unknown[3];&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
       0     1278        8 &lt;br /&gt;
       0      300        6 &lt;br /&gt;
     300       22        2 &lt;br /&gt;
     322      292        5 &lt;br /&gt;
     614       17        2 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[23] - Cells ==&lt;br /&gt;
Assumed to be VIS portals, contains a cell in Skybox dimension (first entry). 52 bytes per entry (example needs update!).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct Cell&lt;br /&gt;
{&lt;br /&gt;
    float unknown[3];&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     120     -392      120 &lt;br /&gt;
     392     -120      328 &lt;br /&gt;
       0        0        0 &lt;br /&gt;
       0        0        0 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[24] - Portals ==&lt;br /&gt;
16 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct Portal&lt;br /&gt;
{&lt;br /&gt;
    unsigned int unknown[4];&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[25] - Nodes ==&lt;br /&gt;
Without: Map has no Nodes&lt;br /&gt;
&lt;br /&gt;
36 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct Node&lt;br /&gt;
{&lt;br /&gt;
    int unknown[9];&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
       1       -2        1      -16      -16       -8        8        8       16 &lt;br /&gt;
       5        2       -8      -16      -16       -8        8        8        8 &lt;br /&gt;
       0        3       -7       -8      -16       -8        8        8        8 &lt;br /&gt;
       3       -3        4       -8      -16        0        8        8        8 &lt;br /&gt;
       4       -4        5       -8      -16        0        0        8        8 &lt;br /&gt;
       2       -5       -6       -8      -16        0        0        0        8 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[26] - Leafs ==&lt;br /&gt;
Without: Map has no Leafs&lt;br /&gt;
&lt;br /&gt;
36 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct Leaf&lt;br /&gt;
{&lt;br /&gt;
    int unknown[9];&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
       0        0        0        0        0        0        0        0        0 &lt;br /&gt;
      -1       -1        0        0        0        1       -1        0        0 &lt;br /&gt;
      -1       -1        0        0        1        1       -1        0        0 &lt;br /&gt;
      -1       -1        0        0        2        1       -1        0        0 &lt;br /&gt;
       0        0        0        0        3        0        0        0        0 &lt;br /&gt;
      -1       -1        0        0        3        1       -1        0        0 &lt;br /&gt;
      -1       -1        0        0        4        1       -1        0        0 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The 5th column is possibly an id of lump 27.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[27] - Leaf Brushes ==&lt;br /&gt;
Without: Stuck in loadscreen, game closes after a couple seconds without error.&lt;br /&gt;
&lt;br /&gt;
This lump contains a list of brush IDs ([[#Lump.5B6.5D_-_Brushes|lump 6]]), there might be an index lump for it. 4 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct LeafBrush&lt;br /&gt;
{&lt;br /&gt;
    int unknown;&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
      53&lt;br /&gt;
      52&lt;br /&gt;
      51&lt;br /&gt;
      50&lt;br /&gt;
      14&lt;br /&gt;
       1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[29] - Collision Verts ==&lt;br /&gt;
Without: no visible changes&lt;br /&gt;
&lt;br /&gt;
16 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct CollisionVertex&lt;br /&gt;
{&lt;br /&gt;
    float unknown[4];&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[30] - Collision Edges ==&lt;br /&gt;
&amp;#039;&amp;#039;former Player Terrain Collision&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Without: terrain retains collision, but player can&amp;#039;t move smoothly on the ground. It&amp;#039;s easy to get stuck or float around. Still okay where terrain is very even. [http://xfire.com/video/79c90/ Footage (Xfire)]. 56 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct CollisionEdge&lt;br /&gt;
{&lt;br /&gt;
    unsigned int unknown;&lt;br /&gt;
&lt;br /&gt;
    float position[3];&lt;br /&gt;
    float normal[3][3];&lt;br /&gt;
    float distance;&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
       0       64      128        8        0        0        1  -0.707107  -0.707107        0  0.707107  -0.707107        0  90.5097 &lt;br /&gt;
       0      128       64        8        0        1        0          0          0       -1        -1          0        0       64 &lt;br /&gt;
       0       64       64        8        1        0        0          0          0       -1         0          1        0       64 &lt;br /&gt;
       0       64      128        8        0        1        0          0          0        1         1          0        0       64 &lt;br /&gt;
       0      128      128        8        1        0        0          0          0        1         0         -1        0       64 &lt;br /&gt;
       0      128      128        8        0        0        1  -0.707107  -0.707107        0  0.707107  -0.707107        0  90.5097 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[31] - Collision Tris ==&lt;br /&gt;
Without: game crashes with application error&lt;br /&gt;
&lt;br /&gt;
72 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct CollisionTriangles&lt;br /&gt;
{&lt;br /&gt;
    float normal[3];&lt;br /&gt;
    float distance;&lt;br /&gt;
    float unknown[8];&lt;br /&gt;
    int id[6];&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[32] - Collision Borders ==&lt;br /&gt;
Without: no visible changes&lt;br /&gt;
&lt;br /&gt;
28 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[33] - Collision Parts ==&lt;br /&gt;
Without: game crashes with application error&lt;br /&gt;
&lt;br /&gt;
12 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[34] - Collision AABBs ==&lt;br /&gt;
Without: game crashes with application error&lt;br /&gt;
&lt;br /&gt;
32 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[35] - Models ==&lt;br /&gt;
Without: Map with no models&lt;br /&gt;
&lt;br /&gt;
Possibly similar to &amp;quot;rigid groups of world geometry&amp;quot;: [http://graphics.stanford.edu/~kekoa/q3/#Models Quake3 - Model Lump]&lt;br /&gt;
&lt;br /&gt;
Seems to contain script_brushmodels, maybe more. 48 bytes per entry.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct Models&lt;br /&gt;
{&lt;br /&gt;
    float position[6];&lt;br /&gt;
    int id[6];&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  -18048   -11904     -896    -2944     6144     5160        0     5748        0        0        0     8260 &lt;br /&gt;
    -112     -112      -48      112      112       48     5748        0     3072        0     8260        1 &lt;br /&gt;
  -11072    -7504       16   -11014    -7382      144     5748        0     3072        0     8261        1 &lt;br /&gt;
    -112     -112      -48      112      112       48     5748        0     3072        0     8262        1 &lt;br /&gt;
   -9208    -6264        0    -9150    -6142      128     5748        0     3072        0     8263        1 &lt;br /&gt;
     -40      -40        0       40       40       56     5748        0     3072        0     8264        1 &lt;br /&gt;
  -17920   -11904     -512    -3072     6144     -384     5748        0     3072        0     8265        1 &lt;br /&gt;
  -17849   -11977     -512    -3001     6071     -384     5748        0     3072        0     8266        1 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Current investigation status:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
How a script_brushmodel appears in the BSP ([[#Lump.5B37.5D_-_Entities|lump 37]]):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{  // ----- worldspawn block start&lt;br /&gt;
 {&lt;br /&gt;
   // brush definition inside of the worldspawn entity&lt;br /&gt;
   // all geometry elements which belongs to a group of lump 35 are stored sequently&lt;br /&gt;
 }&lt;br /&gt;
}  // ----- worldspawn block end&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;classname&amp;quot; &amp;quot;script_brushmodel&amp;quot;&lt;br /&gt;
 &amp;quot;model&amp;quot; &amp;quot;*1&amp;quot;&lt;br /&gt;
 &amp;quot;targetname&amp;quot; &amp;quot;auto1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the source .map it looks different:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// entity 1&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;targetname&amp;quot; &amp;quot;auto1&amp;quot;&lt;br /&gt;
&amp;quot;classname&amp;quot; &amp;quot;script_brushmodel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 // brush 0&lt;br /&gt;
 {&lt;br /&gt;
   // ...&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 // brush 1&lt;br /&gt;
 {&lt;br /&gt;
   // ...&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 // brush 2&lt;br /&gt;
 {&lt;br /&gt;
   // ...&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It requires a transformation to get script_brushmodels back. The missing link between the geometry and the entity is lump 35. model *&amp;#039;&amp;#039;n&amp;#039;&amp;#039; is an id and refers to an entry of this lump. It references 3 other lumps in turn.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
 [1]     [2]      [3]      [4]      [5]      [6]       [7]      [8]      [9]      [10]    [11]      [12]&lt;br /&gt;
&lt;br /&gt;
  0      256      192      112      320      256        0        1        0        0        0        1 &lt;br /&gt;
 16        0        0      152      128      112        1        4        0        0        1        3 &lt;br /&gt;
208        0      192      320      128      312        5        2        0        0        4        2 &lt;br /&gt;
&lt;br /&gt;
 1 - left   (x)&lt;br /&gt;
 2 - front  (y)&lt;br /&gt;
 3 - bottom (z)&lt;br /&gt;
 4 - right  (x)&lt;br /&gt;
 5 - back   (y)&lt;br /&gt;
 6 - top    (z)&lt;br /&gt;
 7 - texture group (start)&lt;br /&gt;
 8 - texture group (amount)&lt;br /&gt;
 9 - mesh (start)&lt;br /&gt;
10 - mesh (amount)&lt;br /&gt;
11 - brush (start)&lt;br /&gt;
12 - brush (amount)&lt;br /&gt;
&lt;br /&gt;
 1-6 : bounding box&lt;br /&gt;
 7+8 : texture group id reference (lump 7)&lt;br /&gt;
 9+10: patch id reference&lt;br /&gt;
11+12: brush id reference (lump 6)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note: No planes in lump 4 for meshes / patches. Additional verts and tris if surface is visible.&lt;br /&gt;
Mesh related lumps: 29, 30, 31, 33 and 34. One or more of them may contain collision data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[36] - Visibility ==&lt;br /&gt;
&amp;#039;&amp;#039;former VIS&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Present if VIS (portalling) has been calculated during the compile process. Apparently a single block of data.&lt;br /&gt;
&lt;br /&gt;
Without: &amp;lt;code&amp;gt;/r_singlecell 1&amp;lt;/code&amp;gt; still shows the portals, forced VIS?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[37] - Entities ==&lt;br /&gt;
&amp;#039;&amp;#039;or EntData&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The entities lump is readable and stored (almost) the same way described in the [[Call_of_Duty_4:_.MAP_file_structure#Entity|.MAP file structure]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct Entity&lt;br /&gt;
{&lt;br /&gt;
    char data[];&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, after getting rid of redundant data, one might interpret the entity lump like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;struct Entity&lt;br /&gt;
{&lt;br /&gt;
    std::map&amp;lt;std::string, std::string&amp;gt; pairs;&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In other words, the Entities lump consists of a a number of Entity structs. Each entity struct holds a list of string pairs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Couple entity types in this lump got a &amp;quot;model&amp;quot; key/value pair with a star and a number (*&amp;#039;&amp;#039;n&amp;#039;&amp;#039;), causing Radiant to crash and the compiler to ignore the whole block (see [[#Lump.5B35.5D_-_Models|lump 35]]). You also have to remove certain other things til the decompiler supports a reconstruction method for the necessary data:&lt;br /&gt;
*model *&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&lt;br /&gt;
*fx&lt;br /&gt;
*script_exploder&lt;br /&gt;
*trigger&lt;br /&gt;
*gndLt (optional, ignored by Radiant)&lt;br /&gt;
Furthermore, you need to recreate the skybox at the moment, as there will likely be leaks in the ground caused from caulk/clip/... textured geometry. It&amp;#039;s not visible in game as you know and therefore not stored in the usual lumps for vertices, triangles and so on. But it has collision, and the collision data is either stored in the brush or terrain collmap lumps. Note that many models are clipped using invisible textures as well. If no collmap file is present for a model, create one or it will lack collision after compile. A decompiler would have to reconstruct the collision map to avoid this.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lump[38] - Paths ==&lt;br /&gt;
SinglePlayer only, connected waypoints and/or paths? Variable in length.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Unidentified lumps==&lt;br /&gt;
Not seen on any map so far, presumably not in use. Feasible lump number predictions in brackets:&lt;br /&gt;
&lt;br /&gt;
*[12] Shadow Verts&lt;br /&gt;
*[13] Shadow Indices&lt;br /&gt;
*[14] Shadow Clusters&lt;br /&gt;
*[15] Shadow AABB Trees&lt;br /&gt;
*[16] Shadow Sources&lt;br /&gt;
*[28] Leaf Surfaces&lt;br /&gt;
*[39] Lights&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Web Links =&lt;br /&gt;
&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Binary_space_partitioning Binary Space Partitioning]&lt;br /&gt;
*[http://www.geocities.com/cofrdrbob/bspformat.html BSP Format]&lt;br /&gt;
*[http://en.wikipedia.org/wiki/BSP_(file_extension) BSP (File Extension)]&lt;br /&gt;
*[http://qxx.planetquake.gamespy.com/bsp/ BSP for Dummies]&lt;br /&gt;
*[http://graphics.stanford.edu/~kekoa/q3/ Unofficial Quake3 Map Specs]&lt;br /&gt;
*[http://www.gamers.org/dEngine/quake/spec/quake-spec34/ Quake Documentation v3.4]&lt;br /&gt;
*[http://www.flipcode.com/archives/Quake_2_BSP_File_Format.shtml Quake 2 BSP File Format]&lt;br /&gt;
*[http://www.modsonwiki.com/index.php/Call_of_Duty_2:_Map_File_Format Call of Duty 2: Map File Format]&lt;br /&gt;
*[http://tremmapping.pbwiki.com/Understanding%20Vis%20and%20Hint%20Brushes Understanding Vis and Hint Brushes (Portalling)]&lt;br /&gt;
*[http://code.google.com/p/bsp-renderer/source/browse/#svn/trunk/src Quake BSP Renderer]&lt;br /&gt;
*[http://quark.planetquake.gamespy.com/infobase/glossary.html Quake Glossary]&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Endianness Endianness]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Made by CoDEmanX and Daevius&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[Category:Call of Duty 2]]&lt;br /&gt;
[[Category:Technical Reference]]&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>Zeroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.zeroy.com/index.php?title=Call_of_Duty_2:_d3dbsp&amp;diff=7175&amp;oldid=prev</id>
		<title>CoDEmanX: /* Lump[5] - Brushsides */</title>
		<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=Call_of_Duty_2:_d3dbsp&amp;diff=7175&amp;oldid=prev"/>
		<updated>2009-12-08T03:32:00Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Lump[5] - Brushsides&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 03:32, 8 December 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l256&quot;&gt;Line 256:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 256:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;that indicates the maximum extents of an object.&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;that indicates the maximum extents of an object.&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In our case, each two sides are parallel to&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In our case, each two sides are parallel to&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;one of the axis (x/y/z) to shape an aligned cube.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;one of the axis (x/y/z) to shape an aligned cube.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(technical term: AABB - axis-aligned bounding box)&lt;/ins&gt;&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l267&quot;&gt;Line 267:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 268:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;2 | dawnville2_wood_boards01                                        0x01500000 0x00002080&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;2 | dawnville2_wood_boards01                                        0x01500000 0x00002080&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Lump[6] - Brushes ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Lump[6] - Brushes ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>CoDEmanX</name></author>
	</entry>
	<entry>
		<id>https://wiki.zeroy.com/index.php?title=Call_of_Duty_2:_d3dbsp&amp;diff=5729&amp;oldid=prev</id>
		<title>CoDEmanX at 13:21, 29 July 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=Call_of_Duty_2:_d3dbsp&amp;diff=5729&amp;oldid=prev"/>
		<updated>2009-07-29T13:21:46Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 13:21, 29 July 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l725&quot;&gt;Line 725:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 725:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;or EntData&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;or EntData&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The entities lump is readable and stored (almost) the same way described in the [[Call_of_Duty_4:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;_MAP_file_structure&lt;/del&gt;#Entity|.MAP file structure]].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The entities lump is readable and stored (almost) the same way described in the [[Call_of_Duty_4:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;_.MAP_file_structure&lt;/ins&gt;#Entity|.MAP file structure]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;struct Entity&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;struct Entity&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>CoDEmanX</name></author>
	</entry>
	<entry>
		<id>https://wiki.zeroy.com/index.php?title=Call_of_Duty_2:_d3dbsp&amp;diff=5719&amp;oldid=prev</id>
		<title>CoDEmanX at 13:11, 29 July 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=Call_of_Duty_2:_d3dbsp&amp;diff=5719&amp;oldid=prev"/>
		<updated>2009-07-29T13:11:03Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 13:11, 29 July 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Image:Nutshell.png]] &lt;/del&gt;Deciphering the Call of Duty 2 D3DBSP format&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Note|&lt;/ins&gt;Deciphering the Call of Duty 2 D3DBSP format&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The .d3dbsp structure, Call of Duty 2&amp;#039;s variant on the well-known BSP format, is rather difficult to decipher. Since it&amp;#039;s a binary file you can&amp;#039;t simply read it. A hexadecimal editor is the best tool in this case. I am still deciphering it myself, I will post anything I happen to get known of regarding the file format.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The .d3dbsp structure, Call of Duty 2&amp;#039;s variant on the well-known BSP format, is rather difficult to decipher. Since it&amp;#039;s a binary file you can&amp;#039;t simply read it. A hexadecimal editor is the best tool in this case. I am still deciphering it myself, I will post anything I happen to get known of regarding the file format.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l784&quot;&gt;Line 784:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 784:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;Made by CoDEmanX and Daevius&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;Made by CoDEmanX and Daevius&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Call of Duty 2]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Call of Duty 2]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Technical Reference]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Technical Reference]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:File formats]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>CoDEmanX</name></author>
	</entry>
	<entry>
		<id>https://wiki.zeroy.com/index.php?title=Call_of_Duty_2:_d3dbsp&amp;diff=5621&amp;oldid=prev</id>
		<title>CoDEmanX at 05:03, 25 July 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=Call_of_Duty_2:_d3dbsp&amp;diff=5621&amp;oldid=prev"/>
		<updated>2009-07-25T05:03:08Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 05:03, 25 July 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l73&quot;&gt;Line 73:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 73:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;0x01100000 0x00000001 rock&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;0x01100000 0x00000001 rock&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;0x01200000 0x00000001 sand&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;0x01200000 0x00000001 sand&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;0x01500000 &lt;/del&gt;0x00000001 snow&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;0x01300000 &lt;/ins&gt;0x00000001 snow&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;0x01400000 0x00000020 water&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;0x01400000 0x00000020 water&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;0x01500000 0x00000001 wood&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;0x01500000 0x00000001 wood&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>CoDEmanX</name></author>
	</entry>
	<entry>
		<id>https://wiki.zeroy.com/index.php?title=Call_of_Duty_2:_d3dbsp&amp;diff=5178&amp;oldid=prev</id>
		<title>Daevius at 15:49, 7 May 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=Call_of_Duty_2:_d3dbsp&amp;diff=5178&amp;oldid=prev"/>
		<updated>2009-05-07T15:49:07Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:49, 7 May 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l309&quot;&gt;Line 309:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 309:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     unsigned short material_id;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     unsigned short material_id;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     unsigned short &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;unknown&lt;/del&gt;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     unsigned short &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;draw_order&lt;/ins&gt;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     unsigned int vertex_offset;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     unsigned int vertex_offset;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Daevius</name></author>
	</entry>
	<entry>
		<id>https://wiki.zeroy.com/index.php?title=Call_of_Duty_2:_d3dbsp&amp;diff=4825&amp;oldid=prev</id>
		<title>Daevius at 20:33, 4 April 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=Call_of_Duty_2:_d3dbsp&amp;diff=4825&amp;oldid=prev"/>
		<updated>2009-04-04T20:33:23Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://wiki.zeroy.com/index.php?title=Call_of_Duty_2:_d3dbsp&amp;amp;diff=4825&amp;amp;oldid=4824&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Daevius</name></author>
	</entry>
	<entry>
		<id>https://wiki.zeroy.com/index.php?title=Call_of_Duty_2:_d3dbsp&amp;diff=4824&amp;oldid=prev</id>
		<title>Daevius at 20:19, 4 April 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.zeroy.com/index.php?title=Call_of_Duty_2:_d3dbsp&amp;diff=4824&amp;oldid=prev"/>
		<updated>2009-04-04T20:19:07Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 20:19, 4 April 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l33&quot;&gt;Line 33:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 33:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Texture information is 72 bytes long per texture. The first 64 bytes are used for the texture name. Then we have an DWORD for flags, and another DWORD for content flags.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Texture information is 72 bytes long per texture. The first 64 bytes are used for the texture name. Then we have an DWORD for flags, and another DWORD for content flags.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;struct&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;   &lt;/ins&gt;struct &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Material&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    &lt;/ins&gt;{&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    &lt;/del&gt;char &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;texture&lt;/del&gt;[64];&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        &lt;/ins&gt;char &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;name&lt;/ins&gt;[64];&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    int  &lt;/del&gt;[2];&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        unsigned char flags&lt;/ins&gt;[2&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;][4&lt;/ins&gt;];&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;};&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    &lt;/ins&gt;};&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Daevius</name></author>
	</entry>
</feed>