Page 1 of 1

Halo 2 Programming White Papers

Posted: Wed May 13, 2015 11:16 pm
by JacksonCougar

Re: Halo 2 Programming White Papers

Posted: Thu May 14, 2015 1:53 am
by Grimdoomer
0x1C NonRawSize - (32 + BspMetaSize + MetaTableSize + IndexSize)
0x14C - MapTypeEnum
0x2E8 - ModelRawStart
0x2EC - ModelRawSize

Re: Halo 2 Programming White Papers

Posted: Thu May 14, 2015 4:37 pm
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];
};

Re: Halo 2 Programming White Papers

Posted: Thu May 14, 2015 7:24 pm
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]