Community Project: Finish the Fight

Post Reply
User avatar
troymac1ure
Keeper of Entity
Posts: 1282
Joined: Sat Aug 09, 2008 4:16 am
Location: British Columbia, Canada, eh
Contact:

Community Project: Finish the Fight

Post by troymac1ure »

This topic was among the lost long ago. Anyways, I just spent a while looking for the Halo 2 field types that Grim posted ages ago and then came across them on my machine. Thought I'd post them back up here since in case someone else desires to have them again:
  • (tag) string // 31+1 character buffer. +1 as it is null terminated
    long_string // 255+1 character buffer. +1 as it is null terminated
    string_id // 32-bit string handle
    old_string_id // versioning related only, not needed for cache related operations
    char_integer // 8-bit
    short_integer // 16-bit
    long_integer // 32-bit
    angle // real, in degrees
    tag // 4 character code
    char_enum // 8-bit
    enum // 16-bit
    long_enum // 32-bit
    long_flags // 32-bit
    word_flags // 16-bit
    byte_flags // 8-bit
    point_2d // short, short
    rectangle_2d // short, short, short, short
    rgb_color // 24-bit, 3 bytes
    argb_color // 32-bit, 4 bytes
    real // floating point
    real_fraction // floating point, typically for 0.0 to 1.0 clamped fields
    real_point_2d // real, real
    real_point_3d // real, real, real
    real_vector_2d // real, real
    real_vector_3d // real, real, real
    real_quaternion // real, real, real, real
    real_euler_angles_2d // angle, angle
    real_euler_angles_3d // angle, angle, angle
    real_plane_2d // real, real, real
    real_plane_3d // real, real, real, real
    real_rgb_color // real, real, real
    real_argb_color // real, real, real, real
    real_hsv_color // unused
    real_ahsv_color // unused
    short_integer_bounds // short, short
    angle_bounds // angle, angle
    real_bounds // real, real
    fraction_bounds // real_fraction, real_fraction
    tag_reference // as the name suggests, a tag reference
    block // as the name suggests, a tag block
    long_block_flags // 32-bit
    word_block_flags // 16-bit
    byte_block_flags // 8-bit
    char_block_index // 8-bit
    short_block_index // 16-bit
    long_block_index // 32-bit
    data // as the name suggests, a tag data field
    vertex_buffer // 32 byte structure representing a vertex hardware format
    pad // <N> bytes. padding is used to either align fields or to hide runtime fields (read: postprocessed fields) from the editor
    useless_pad // <N> bytes. versioning related only, not needed for cache related operations
    skip // <N> bytes. to represent fields which are ignored when byte swapping (read: aren't byte swapped)

Halo 2 Field Types:

I think these are as follows:

Code: Select all

char_integer        //   8-bit Integer
short_integer       //  16-bit Integer
long_integer        //  32-bit Integer
real                //  32-bit Real
string              //     256 Character String
long_string         //  65,535 Character String
string_id           //  32-bit ( (8)size / (8) null / (16) pointer)
char_enum           //   8-bit List
enum                //  16-bit List
long_enum           //  32-bit List
angle               //  32-bit real (0 - 1)
byte_flags          //   8-bit Option Boxes
word_flags          //  16-bit Option Boxes
long_flags          //  32-bit Option Boxes
real_rgb_color      //  96-bit (3x 32-bit real (0 - 1)) ((32)Red   / (32)Green      / (32)Blue)
real_argb_color     // 128-bit (4x 32-bit real (0 - 1)) ((32)Alpha / (32)Red        / (32)Green      / (32)Blue)
real_hsv_color      //  96-bit (3x 32-bit real (0 - 1)) ((32)Hue   / (32)Saturation / (32)Value)
real_ahsv_color     // 128-bit (4x 32-bit real (0 - 1)) ((32)Alpha / (32)Hue        / (32)Saturation / (32)Value)
real_plane_2d       //  96-bit (3x 32-bit real (0 - 1)) (( 8)i / ( 8)j / ( 8)k )
real_plane_3d       // 128-bit (4x 32-bit real (0 - 1)) (( 8)i / ( 8)j / ( 8)k / ( 8)d )
real_point_2d       //  64-bit (2x 32-bit real (0 - 1)) ((32)x / (32)y )
real_point_3d       //  96-bit (3x 32-bit real (0 - 1)) (( 8)x / ( 8)y )
real_vector_2d      //  64-bit (2x 32-bit real (0 - 1)) (( 8)i / ( 8)j )
real_vector_3d      //  96-bit (3x 32-bit real (0 - 1)) (( 8)i / ( 8)j / ( 8)k)
real_quaternion     // 128-bit (4x 32-bit real (0 - 1)) (( 8)i / ( 8)j / ( 8)k / ( 8) w )
Not sure on these:

Code: Select all

tag_reference       //  32-bit char[] (Is this just the four character listing?)
block               //  32-bit pointer?
old_string_id       //  32-bit ((8)size / (8) null / (16) pointer)
point_2d            //  32-bit (2x short_integer)
rectangle_2d        // 256-bit (4x point_2d)
rgb_color           //  96-bit (3x 32-bit char_integer (0-255))
argb_color          // 128-bit (4x 32-bit char_integer (0-255))
unk1                //  32-bit long_integer
unk2                //  32-bit real
No idea

Code: Select all

real_fraction
real_euler_angles_2d
real_euler_angles_3d
short_integer_bounds
angle_bounds
real_bounds
fraction_bounds
long_block_flags
word_block_flags
byte_block_flags
char_block_index
char_block_index
short_block_index
long_block_index
long_block_index
data
vertex_buffer
array_start
array_end
useless_pad
skip
explaination
custom
struct
terminator_x
end_element
Post Reply