Common Data Types: Difference between revisions
(→GtHash: mention of it being basically CRC32 but with some int<->uint nonsense) |
m (Link RW data types where relevant.) |
||
(13 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{hatnote|This page is for types used in Takedown-era games. For types used in Paradise, see [[Common Data Types (Burnout Paradise)]]. For types used in Criterion NFS games, see [[Common Data Types (Need for Speed)]].}} |
|||
Data types used commonly by the pre-Paradise Burnout games. |
Data types used commonly by the pre-Paradise Burnout games. |
||
= Numeric = |
|||
= Shared data types = |
|||
=== |
=== CGtV3d === |
||
A structure comprised of three floating-point component values (x, y, z), bundled into a single unsigned 128-bit value <code>mData</code>. See also <code>[[RenderWare Data Types#RwV3d|RwV3d]]</code>. |
|||
A structure containing a vector of type <code>RwV3d</code>. |
|||
{|class="wikitable" |
|||
|- |
|||
!Offset |
|||
!Name |
|||
!Type |
|||
|- |
|||
| 0x00 || Data || RwV3d |
|||
|} |
|||
Often used to represent a point in 3D space. |
|||
=== GtLine === |
|||
{| class="wikitable" |
|||
A structure comprised of two vectors, used to represent a line in 3D space. |
|||
! Offset !! Length !! Type !! Description |
|||
{|class="wikitable" |
|||
|- |
|- |
||
| 0x0 || 0x4 || RwReal || X component |
|||
!Offset |
|||
!Name |
|||
!Type |
|||
|- |
|- |
||
| |
| 0x4 || 0x4 || RwReal || Y component |
||
|- |
|- |
||
| |
| 0x8 || 0x4 || RwReal || Z component |
||
|- |
|||
| 0xC || 0x4 || ||Padding |
|||
|} |
|} |
||
=== |
=== CGtV3dPlus === |
||
Very similar to the CGtV3d type, but includes an additional "plus" component. This extra component may be used to represent a different, but related quantity e.g. length. |
|||
A structure comprised of four vectors. |
|||
{|class="wikitable" |
|||
{| class="wikitable" |
|||
|- |
|||
! Offset !! Length !! Type !! Description |
|||
!Offset |
|||
!Name |
|||
!Type |
|||
|- |
|- |
||
| |
| 0x0 || 0x4 || RwReal || X component |
||
|- |
|- |
||
| |
| 0x4 || 0x4 || RwReal || Y component |
||
|- |
|- |
||
| |
| 0x8 || 0x4 || RwReal || Z component |
||
|- |
|- |
||
| |
| 0xC || 0x4 || RwReal || Plus component |
||
|} |
|} |
||
= Geometric = |
|||
=== CGtPlane === |
|||
A structure comprised of three floats, each representing a primary additive of an RGB color. |
|||
A structure representing [https://en.wikipedia.org/wiki/Euclidean_planes_in_three-dimensional_space a flat 2D plane in 3D space]. Equivalent to <code>[[RenderWare Data Types#RwPlane|RwPlane]]</code>. |
|||
{|class="wikitable" |
|||
{| class="wikitable" |
|||
! Offset !! Length !! Type !! Description |
|||
|- |
|- |
||
| 0x0 || 0x10 || [[#CGtV3d|CGtV3d]] || Normal |
|||
!Offset |
|||
!Name |
|||
!Type |
|||
|- |
|- |
||
| |
| 0x0 || 0x10 || RwReal || Length |
||
|} |
|||
=== CGtSphere === |
|||
A structure representing a sphere in 3D space, with a position and radius. |
|||
{| class="wikitable" |
|||
! Offset !! Length !! Type !! Description |
|||
|- |
|- |
||
| |
| 0x0 || 0x10 || [[#CGtV3d|CGtV3d]] || Position |
||
|- |
|- |
||
| |
| 0x0 || 0x10 || RwReal || Radius |
||
|} |
|||
=== CGtLine === |
|||
A structure comprised of two vectors. Used to represent a line in 3D space. |
|||
{| class="wikitable" |
|||
! Offset !! Length !! Type !! Name |
|||
|- |
|- |
||
| 0x0 || 0x10 || [[#CGtV3d|CGtV3d]] || mStartPoint |
|||
|- |
|||
| 0x10 || 0x10 || [[#CGtV3d|CGtV3d]] || mEndPoint |
|||
|} |
|} |
||
=== |
=== CGtMatrix3x4 === |
||
A structure comprised of four 3D vectors. Equivalent to <code>RwMatrix</code>. |
|||
<code>GtHash</code> is a derivative of CRC-32 - a 32-bit value storing the hash of a given string, generated via a custom hash function. These hashes are used by the Takedown-era games to identify and properly assign values within files such as the [[Value Database]]. |
|||
{| class="wikitable" |
|||
! Offset !! Length !! Type !! Name |
|||
=== GtID === |
|||
<code>GtID</code> is a data type used in many Criterion games as an identifier for objects. It is an alias of the type <code>uint64_t</code> and is used to store a compressed ASCII string. |
|||
For example, the string <code>BURNOUT</code> would be represented by the GtID <code>6226094955724800000</code>. |
|||
= RenderWare data types = |
|||
{{todo|Move this section to its own page eventually, as these types originate from the RenderWare engine itself as opposed to any external codebases.}} |
|||
=== RwV3d === |
|||
A structure comprised of three floats, mainly used to represent the location of a point in 3D space. |
|||
{|class="wikitable" |
|||
|- |
|- |
||
| 0x0 || 0x10 || [[#CGtV3d|CGtV3d]] || mRight |
|||
!Offset |
|||
!Name |
|||
!Type |
|||
|- |
|- |
||
| |
| 0x10 || 0x10 || [[#CGtV3d|CGtV3d]] || mUp |
||
|- |
|- |
||
| |
| 0x20 || 0x10 || [[#CGtV3d|CGtV3d]] || mAt |
||
|- |
|- |
||
| |
| 0x30 || 0x10 || [[#CGtV3d|CGtV3d]] || mPos |
||
|} |
|||
=== CGtAxisAlignedBox === |
|||
Equivalent to <code>[[RenderWare Data Types#RwBBox|RwBBox]]</code>. |
|||
{| class="wikitable" |
|||
! Offset !! Length !! Type !! Name !! Description |
|||
|- |
|||
| 0x0 || 0x10 || [[#CGtV3d|CGtV3d]] || mSup || Supremum vertex |
|||
|- |
|- |
||
| 0x10 || 0x10 || [[#CGtV3d|CGtV3d]] || mInf || Infimum vertex |
|||
| 0x0C || Padding || word |
|||
|} |
|} |
||
=== |
=== CGtOrthogonalBox === |
||
{| class="wikitable" |
|||
A structure defining the [https://en.wikipedia.org/wiki/Infimum_and_supremum supremum and infimum] vertices of a bounding box. |
|||
! Offset !! Length !! Type !! Name |
|||
{|class="wikitable" |
|||
|- |
|- |
||
| 0x0 || 0x40 || [[#CGtMatrix3x4|CGtMatrix3x4]] || mBox |
|||
!Offset |
|||
!Name |
|||
!Type |
|||
|- |
|||
| 0x00 || Supremum vertex || RwV3d |
|||
|- |
|||
| 0x10 || Infimum vertex || RwV3d |
|||
|} |
|} |
||
=== CGtRGBA === |
|||
A structure used to represent an RGBA color. It is an alias of the type <code>CGtV4d</code>. |
|||
= Hashes = |
|||
=== CGtHash === |
|||
A derivative of CRC-32 — a 32-bit value storing the hash of a given string, generated via a custom hash function. These hashes are used by the Takedown-era games to identify and properly assign values within files such as the [[Value Database]]. |
|||
=== GtID === |
|||
A data type used in many Criterion games as an identifier for objects. It is an alias of the type <code>uint64_t</code> and is used to store a compressed ASCII string. |
|||
For example, the string <code>BURNOUT</code> would be represented by the GtID <code>6226094955724800000</code>. |
Latest revision as of 00:36, 28 April 2023
Data types used commonly by the pre-Paradise Burnout games.
Numeric
CGtV3d
A structure comprised of three floating-point component values (x, y, z), bundled into a single unsigned 128-bit value mData
. See also RwV3d
.
Often used to represent a point in 3D space.
Offset | Length | Type | Description |
---|---|---|---|
0x0 | 0x4 | RwReal | X component |
0x4 | 0x4 | RwReal | Y component |
0x8 | 0x4 | RwReal | Z component |
0xC | 0x4 | Padding |
CGtV3dPlus
Very similar to the CGtV3d type, but includes an additional "plus" component. This extra component may be used to represent a different, but related quantity e.g. length.
Offset | Length | Type | Description |
---|---|---|---|
0x0 | 0x4 | RwReal | X component |
0x4 | 0x4 | RwReal | Y component |
0x8 | 0x4 | RwReal | Z component |
0xC | 0x4 | RwReal | Plus component |
Geometric
CGtPlane
A structure representing a flat 2D plane in 3D space. Equivalent to RwPlane
.
Offset | Length | Type | Description |
---|---|---|---|
0x0 | 0x10 | CGtV3d | Normal |
0x0 | 0x10 | RwReal | Length |
CGtSphere
A structure representing a sphere in 3D space, with a position and radius.
Offset | Length | Type | Description |
---|---|---|---|
0x0 | 0x10 | CGtV3d | Position |
0x0 | 0x10 | RwReal | Radius |
CGtLine
A structure comprised of two vectors. Used to represent a line in 3D space.
Offset | Length | Type | Name |
---|---|---|---|
0x0 | 0x10 | CGtV3d | mStartPoint |
0x10 | 0x10 | CGtV3d | mEndPoint |
CGtMatrix3x4
A structure comprised of four 3D vectors. Equivalent to RwMatrix
.
Offset | Length | Type | Name |
---|---|---|---|
0x0 | 0x10 | CGtV3d | mRight |
0x10 | 0x10 | CGtV3d | mUp |
0x20 | 0x10 | CGtV3d | mAt |
0x30 | 0x10 | CGtV3d | mPos |
CGtAxisAlignedBox
Equivalent to RwBBox
.
Offset | Length | Type | Name | Description |
---|---|---|---|---|
0x0 | 0x10 | CGtV3d | mSup | Supremum vertex |
0x10 | 0x10 | CGtV3d | mInf | Infimum vertex |
CGtOrthogonalBox
Offset | Length | Type | Name |
---|---|---|---|
0x0 | 0x40 | CGtMatrix3x4 | mBox |
CGtRGBA
A structure used to represent an RGBA color. It is an alias of the type CGtV4d
.
Hashes
CGtHash
A derivative of CRC-32 — a 32-bit value storing the hash of a given string, generated via a custom hash function. These hashes are used by the Takedown-era games to identify and properly assign values within files such as the Value Database.
GtID
A data type used in many Criterion games as an identifier for objects. It is an alias of the type uint64_t
and is used to store a compressed ASCII string.
For example, the string BURNOUT
would be represented by the GtID 6226094955724800000
.