Halo 2 Programming White Papers

Discuss anything programming related.
Post Reply
User avatar
JacksonCougar
Huurcat
Posts: 2460
Joined: Thu Dec 06, 2007 11:30 pm
Location: Somewhere in Canada

Halo 2 Programming White Papers

Post by JacksonCougar »

User avatar
Grimdoomer
Admin
Posts: 1835
Joined: Sun Dec 09, 2007 9:09 pm

Re: Halo 2 Programming White Papers

Post by Grimdoomer »

0x1C NonRawSize - (32 + BspMetaSize + MetaTableSize + IndexSize)
0x14C - MapTypeEnum
0x2E8 - ModelRawStart
0x2EC - ModelRawSize
Don't snort the magic, we need it for the network.
User avatar
JacksonCougar
Huurcat
Posts: 2460
Joined: Thu Dec 06, 2007 11:30 pm
Location: Somewhere in Canada

Re: Halo 2 Programming White Papers

Post by JacksonCougar »

this is my layout for hex workshop:

Code: Select all

#include "standard-types.hsl"

#pragma displayname("Halo2Header") ;
#pragma fileextensions(".map;") ;

#pragma byteorder(little_endian) 

struct HEADER
{
	char begin[4];
	int version;
	int filesize;
	int unknown;
	struct index_info
	{
		int offset;
		int length;
		int meta_start_offset;
		int meta_end_offset;
	} index;
	int unknown0[3];
	char origin[256];
	char build[32];
	int unknown1[8];
	struct script_reference_info
	{
		int table_128_offset;
		int count;
		int table_size;
		int index_offset;
		int table_offset;
	} scripts_references;
	int unknown2[9];
	char name[32];
	int unknown3;
	char scenario[256];
	int unknown4;
	struct file_info
	{
		int count;
		int table_offset;
		int table_size;
		int index_offset;
	} filenames;
	struct stringid_info
	{
		int	index_start;
		int index_length;
	} stringids;
	int unknown5;
	struct model_data_info
	{
		int offset;
		int length;
	} model_data;
	unsigned int checksum;
	int padding[322];
	char final[4];
};
User avatar
JacksonCougar
Huurcat
Posts: 2460
Joined: Thu Dec 06, 2007 11:30 pm
Location: Somewhere in Canada

Re: Halo 2 Programming White Papers

Post by JacksonCougar »

Code: Select all

*	INDEX LAYOUT
*	Vista doesn't use memory addresses for the following address-values. 
*	(they are instead 0-based from the index-address)
*  
*  0x00    Address to Classes array		Int32
*  0x04    Classes array length			Int32
*  0x08    Address to Tags array		Int32
*  0x0C    Scenario						TagIdent
*  0x10    Match-Globals				TagIdent
*  0x14    ~unknown						Int32
*  0x18    Tags array length			Int32
*  0xC0    'sgat'						char[4]
Post Reply