PDA

View Full Version : Halo PC 1.09 Addresses and Structs



flyingmonkey3
July 9th, 2011, 12:30 PM
TagTableHeaderPointer = 0x460678
ObjTableHeaderPointer = 0x744C18
PlayerHeaderPointer = 0x75ECE4

struct ObjID
{
char ObjTableIndex;
char Unknown;
short ObjIndex;
}; Size - 0x4

struct MapHeader
{
long Signature0; // head = "daeh"
short Game; // Xbox = 5 / Trial = 6 / PC = 7 / CE = 0x261
short Unknown0;
long MapSize;
char Unknown1[4];
long IndexOffset;
long MetaSize;
char Unknown3[8];
char MapName[14];
char Unknown4[18];
char Build[12]; // PC = 01.00.00.0564 / CE = 01.00.00.0609
char Unknown5[20];
char MapType; // SP = 0 / MP = 1 / UI = 2
char Unknown6[1947];
long Signature1; // foot = "toof"
}; // 0x630e74 / Size - 0x800

struct TagTableHeader
{
long TagTableEntryPointer; // 0x40440028
long FirstTagID;
long MapID;
long TagCount;
long VerticieCount;
long VerticieOffset;
long IndicieCount;
long IndicieOffset;
long ModelDataSize;
long Signature; // tags = "sgat"
}; // 0x40440000 / Size - 0x28

struct TagTableEntry
{
char Class0[4];
char Class1[4];
char Class2[4];
long TagID;
long TagNameAddress;
long TagStruct;
char Unknown[8];
}; // Starts at 0x40440028 / Size - 0x20

struct ObjTableHeader
{
char Name[6]; // "objects"
char Unknown0[26];
short MaxObjs; // 0x800
short ObjTableSize; // 0xC
long Unknown1;
long Signature; // data = "@t@d"
short Objs;
short CurMaxObjs;
short CurObjs;
short NextObjIndex;
long ObjTableEntryPointer; // 0x40050664
}; // 0x4005062C / Size - 0x38

struct ObjTableEntry
{
long ObjStruct;
short ObjTableIndex;
char Unknown[6];
}; // Starts at 0x40050664 / Size = 0xC

struct PlayerHeader
{
char Name[14]; // "players"
char Unknown0[26];
short MaxPlayers;
short PlayerStructSize; // 0x200
long Unknown1;
long Signature; // data = "@t@d"
short Unknown2;
short CurrentPlayers;
short NextPlayerNumber;
short NextPlayerID;
long FirstPlayerStruct;
}; // 0x4029CE88 / Size - 0x40

struct Player
{
short PlayerID;
short Host;
char Name0[20];
char Unknown0[8];
char Team0; // Red = 0 / Blue = 1
char Unknown1[3];
long InteractionObjID;
char InteractionObjType; // Weapon = 6 / Vehicle = 8 / Others = -1
char Unknown2;
short InteractionVehiSeat; // Takes seat number from vehi tag starting from 0.
long RespawnTicks; // Time left until respawn. / 1 sec = 30 ticks
long Unknown3;
long PlayerObjID;
char PlayerObjType; // Weapon = 6 / Vehicle = 8 / Others = -1
char Unknown4[11];
short BulletCount; // Increases with each shot?
short Unknown5;
char Name1[20];
char Unknown6[10];
char MachineIndex;
char Unknown7[5];
char Team1; // Red = 0 / Blue = 1
char Unknown8;
short InvisTicks; // Time left for invis. / 1 sec = 30 ticks
short Unknown9;
float Speed;
long Unknown10;
char Objective0; // Hill = 0x22 / Juggernaut = It = 0x23 / Ball = 0x29 / None = -1
char Unknown11[5];
char Objective1; // Ball = 0x70 / Hill = Juggernaut = 0x71 / It = 0x72 / None = -1
char Unknown12[27];
short Spree;
long Unknown13;
short Kills;
char Unknown14[6];
short Assists;
char Unknown15[6];
short Betrays; // Includes suicides.
short Deaths;
short Suicides;
char Unknown16[18];
short FlagSteals; // Also HillTime and RaceTime.
short FlagReturns; // Also OddballTargetKills and RaceLaps.
short FlagScores; // Also OddballKills and RaceBestTime.
char Unknown17[18];
short Ping;
char Unknown18[26];
float XCoord0;
float YCoord0;
float ZCoord0;
char Unknown19[60];
float ForwardButton; // Negative means backward. Lags.
float LeftButton; // Negative means right. Lags.
long Unknown20;
short WeapType; // Lags. / Primary = 0 / Secondary = 1 / Ternary = 2 / Quartary = 3
short NadeType; // Lags. / Frag = 0 / Plasma = 1
long Unknown21;
float XAim; // Lags.
float YAim; // Lags.
float ZAim; // Lags.
char Unknown22[16];
float XCoord1; // Lags.
float YCoord1; // Lags.
float ZCoord1; // Lags.
char Unknown23[132];
}; // Starts at 0x4029CEC8 / Size - 0x200

struct PlayerObj
{
long TagID;
char Unknown0[88];
float XCoord0;
float YCoord0;
float ZCoord0;
float XVel;
float YVel;
float ZVel;
float Pitch;
float Yaw;
float Roll;
float XScale;
float YScale;
float ZScale;
char Unknown1[44];
char Team0; // Dead = Red = 0 / Blue = 1
char Unknown2[31];
float MaxHealth; // From coll tag.
float MaxShields; // From coll tag.
float Health;
float Shields; // None = 0 / Full = 1 / Overshield = 3
char Unknown3[28];
short ShieldsRechargeTicks; // Time until shields recharge. / 1 sec = 30 ticks
char Unknown4[18];
long WeapObjID;
long VehiObjID;
short VehiSeat0;
char Unknown5[6];
float ShieldsTarget; // Something to do with Overshield draining?
float FlashlightScale0; // Intensity of flashlight.
long Unknown6;
float FlashlightScale1; // Intensity of flashlight.
float ShieldsHit; // Something to do with shields being hit?
char Unknown7[76];
char Team1; // Blue = Dead = 0 / Red = 1
char Unknown8[123];
char InvisMode; // No = 0x41 / Yes = 0x51
char Unknown9;
char FlashlightMode; // Off = 0 / On = 8
char Unknown10;
char CrouchButton; // Standing = 0 / Crouching = 1 / Jumping = 2
char Unknown11[17];
short PlayerID;
long Unknown12;
short BulletCount; // Increases with each shot?
char Unknown13[14];
float XAim0;
float YAim0;
float ZAim0;
float XAim1;
float YAim1;
float ZAim1;
float XAim2;
float YAim2;
float ZAim2;
char Unknown14[12];
float ForwardButton; // Negative means backward.
float LeftButton; // Negative means right.
char Unknown15[6];
short Shooting0; // No = 0 / Yes = 0x3F80
char Unknown16[24];
char CrouchMode0; // Vehicle = 0 / Crouching = 3 / Standing = 4
long Unknown17;
char Shooting1; // No = 0 / Yes = 1
char Unknown18;
char CrouchMode1; // Also VehiSeat1. / Standing = 2 / Crouching = 3
char Unknown19[74];
char WeapType0; // Primary = 0 / Secondary = 1 / Ternary = 2 / Quartary = 3
char Unknown20;
char WeapType1; // Primary = 0 / Secondary = 1 / Ternary = 2 / Quartary = 3
char Unknown21[3];
long PrimaryWeapObjID;
long secondaryweapObjID;
long TernaryWeapObjID;
long QuartaryWeapObjID;
char Unknown22[20];
char NadeType0; // Frag = 0 / Plasma = 1
char Unknown23;
char PrimaryNades;
char SecondaryNades;
char Unknown24[32];
float FlashlightScale2; // Intensity of flashlight.
float FlashlightEnergy; // Amount of flashlight energy left.
char Unknown25[52];
float InvisScale; // Visibility of invis.
char Unknown26[244];
char Shooting2; // No = 0 / Yes = 1
char Unknown27[7];
char WeapType2; // Primary = 0 / Secondary = 1 / Ternary = 2 / Quartary = 3
char Unknown28;
char NadeType1; // Frag = 0 / Plasma = 1
char Unknown29[21];
float XAim3;
float YAim3;
float ZAim3;
float XAim4;
float YAim4;
float ZAim4;
float XAim5;
float YAim5;
float ZAim5;
char Unknown30[20];
char Airborne; // No = 0 / Yes = 1
char Unknown31[19];
float XCoord1;
float YCoord1;
float ZCoord1;
char Unknown32[32];
float CrouchScale; // How crouched a player is.
}; // Size - Idk

struct VehiObj
{
long TagID;
char Unknown0[88];
float XCoord0;
float YCoord0;
float ZCoord0;
float XVel;
float YVel;
float ZVel;
float Pitch;
float Yaw;
float Roll;
float XScale;
float YScale;
float ZScale;
char Unknown1[44];
char Team0; // Red = 0 / Blue = 1
char Unknown2[31];
float MaxHealth; // From coll tag.
float MaxShields; // From coll tag.
float Health;
float Shields;
char Unknown3[28];
short ShieldsRechargeTicks; // Time until shields recharge. / 1 sec = 30 ticks
char Unknown4[56];
float ShieldsHit; // Something to do with shields being hit?
char Unknown5[76];
char Team1; // Blue = 0 / Red = 1
char Unknown6[125];
char FlashlightMode; // Off = 0 / On = 8
char Unknown7;
char CrouchButton; // Standing = 0 / Crouching = 1 / Jumping = 2
}; // Size - Idk

struct WeapObj
{
long TagID;
char Unknown0[288];
float Fuel; // Flamethrower only.
char Unknown1[24];
float Charge; // Plasma Pistol only.
char Unknown2[248];
float Heat;
float Age; // 1 - Batteries
char Unknown3[114];
short PrimaryAmmo;
short PrimaryClip;
char Unknown4[8];
short SecondaryAmmo;
short SecondaryClip;
}; // Size - Idk

Kornman00
July 10th, 2011, 04:04 AM
Far more advance documentation of the game here (http://code.google.com/p/open-sauce/source/browse/#hg%2FOpenSauce%2FHalo1%2FHalo1_CE).