I'm pretty sure they're encrypted.grimdoomer wrote:There encrypted? I thought they where just compressed?Tural wrote:Bitmap raws are encrypted just like model raws are, if bitmaps could be, models could be too.
Halo 3 Retail Game Research
- LuxuriousMeat
- Posts: 824
- Joined: Thu Nov 03, 2005 6:43 pm
- Location: zzzzzzzzzzzzzzzz
- Contact:
Not really, since a compression form would be a lot easier to figure out.Tural wrote:Semantics.

Halo 2 Plugins | Lock-on To Just About Anything | My Sites | Snow Hog
Old Plugins you have, upgrade you must...
Always Maintain a High Quality-To-Crap Ratio.
hj a[oy0y7qe5v]y uq350v-yh7q34h8g ae4yjtpq347bc
I was saying there is something preventing them from being extracted, unlike the beta, and that if one could be extracted, both could be. It doesn't matter if it's encryption, compression, or a giant damn padlock on the DVD case. That is not the important part of my post, at all. That is semantic. In addition, they've already been extracted, as was discussed before you went off on the unimportant tangent stemming from false prioritization of portions of my message.
I was saying there is something preventing them from being extracted, unlike the beta, and that if one could be extracted, both could be. It doesn't matter if it's encryption, compression, or a giant damn padlock on the DVD case. That is not the important part of my post, at all. That is semantic. In addition, they've already been extracted, as was discussed before you went off on the unimportant tangent stemming from false prioritization of portions of my message.
-
- Posts: 5426
- Joined: Sat Jul 24, 2004 12:12 pm
- Location: I'm a Paranoid
- Contact:
![]() |
![]() |
Well I'm pretty sure that every known compression method to man has already been documented. Unless of course Bungie employees have an average IQ of 180.kornman00 wrote:what makes you say that? they could very easily use a proprietary compression format which isn't documented...xzodia wrote: Not really, since a compression form would be a lot easier to figure out.
Trying to whip up a new efficient (I created one myself a long time ago; far from efficient but it worked) compressor is not that quite easy.
Mine was really easy...every time there was a sequence of more than three of the same numbers like 0000 it would store those as an array defined by "&" as the indicator for the array than "0" as the data and "4" as the number of how many times it appears so in the end you compressed "0000" to "&04".
Of course this would only save space if the file has big chunks of empty space like the map files originally did.
Anyway I drifted unintentionally off-topic.
...left for good
Prey if your still active I updated the Map Info whitepaper. If you want you can add it to the first post.
Code: Select all
public class BLF_Header : Chunk //48 Bytes
{
[String(4)]
public char[] _BLF;
public int blfHeaderSize;
public short unknown8;
public short unknown10;
public short asciiStartMarker;
[String(34)]
public char[] blfDescription;
}
public class LEVL : Chunk
{
[String(4)]
public char[] levl;
[Size(2)]
public byte[] unused;
[String(2)]
public char[] MP;
public short unknown8; //Always 0003?
public short unknown10; //Always 0001?
public int mapIDEnd;
public int mapIDStart;
[String(StringType.Unicode, 32)]
public char[] englishName;
[String(StringType.Unicode, 32)]
public char[] japaneseName;
[String(StringType.Unicode, 32)]
public char[] germanName;
[String(StringType.Unicode, 32)]
public char[] frenchName;
[String(StringType.Unicode, 32)]
public char[] spanishName;
[String(StringType.Unicode, 32)]
public char[] latinAmericanName;
[String(StringType.Unicode, 32)]
public char[] italianName;
[String(StringType.Unicode, 32)]
public char[] koreanName;
[String(StringType.Unicode, 32)]
public char[] chineseName;
[String(StringType.Unicode, 32)]
public char[] unknownName;
[String(StringType.Unicode, 32)]
public char[] portugueseName;
[Size(64)]
public byte[] unused724;
[String(StringType.Unicode, 256)]
public char[] englishDescription;
[String(StringType.Unicode, 256)]
public char[] japaneseDescription;
[String(StringType.Unicode, 256)]
public char[] germanDescription;
[String(StringType.Unicode, 256)]
public char[] frenchDescription;
[String(StringType.Unicode, 256)]
public char[] spanishDescription;
[String(StringType.Unicode, 256)]
public char[] latinAmericanName;
[String(StringType.Unicode, 256)]
public char[] italianDescription;
[String(StringType.Unicode, 256)]
public char[] koreanDescription;
[String(StringType.Unicode, 256)]
public char[] chineseDescription;
[String(StringType.Unicode, 256)]
public char[] unknownDescription;
[String(StringType.Unicode, 256)]
public char[] portugueseDescription;
[String(256)]
public char[] mapImageFileName;
[String(256)]
public char[] mapName;
public int unknown4372;
public int unknown4376;
public byte maxTeamsGameType0;
public byte maxTeamsGameType1;
public byte maxTeamsGameType2;
public byte maxTeamsGameType3;
public byte maxTeamsGameType4;
public byte maxTeamsGameType5;
public byte maxTeamsGameType6;
public byte maxTeamsGameType7;
public byte maxTeamsGameType8;
public byte maxTeamsGameType9;
public byte maxTeamsGameType10;
public byte maxTeamsGameType11;
public byte maxTeamsGameType12;
public byte maxTeamsGameType13;
public byte maxTeamsGameType14;
public byte maxTeamsGameType15;
[Size(40)]
public byte[] unused4380;
public int missionNumber;
[Size(32)]
public byte[] unused4424;
[String(StringType.Unicode, 32)]
public char[] englishFirstCheckPointName;
[String(StringType.Unicode, 32)]
public char[] japaneseFirstCheckPointName;
[String(StringType.Unicode, 32)]
public char[] germanFirstCheckPointName;
[String(StringType.Unicode, 32)]
public char[] frenchFirstCheckPointName;
[String(StringType.Unicode, 32)]
public char[] spanishFirstCheckPointName;
[String(StringType.Unicode, 32)]
public char[] latinAmericanFirstCheckPointName;
[String(StringType.Unicode, 32)]
public char[] italianFirstCheckPointName;
[String(StringType.Unicode, 32)]
public char[] koreanFirstCheckPointName;
[String(StringType.Unicode, 32)]
public char[] chineseFirstCheckPointName;
[String(StringType.Unicode, 32)]
public char[] unknownFirstCheckPointName;
[String(StringType.Unicode, 32)]
public char[] portugueseFirstCheckPointName;
[Size(64)]
public byte[] unused5160;
[String(StringType.Unicode, 128)]
public char[] englishFirstCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] japaneseFirstCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] germanFirstCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] frenchFirstCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] spanishFirstCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] latinFirstCheckPointAmericanName;
[String(StringType.Unicode, 128)]
public char[] italianFirstCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] koreanFirstCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] chineseFirstCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] unknownFirstCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] portugueseFirstCheckPointDescription;
[Size(256)]
public byte[] unused8040;
public short unknown8296;
public short unknown8298;
[Size(4)]
public byte[] unused8300;
[String(StringType.Unicode, 32)]
public char[] englishSecondCheckPointName;
[String(StringType.Unicode, 32)]
public char[] japaneseSecondCheckPointName;
[String(StringType.Unicode, 32)]
public char[] germanSecondCheckPointName;
[String(StringType.Unicode, 32)]
public char[] frenchSecondCheckPointName;
[String(StringType.Unicode, 32)]
public char[] spanishSecondCheckPointName;
[String(StringType.Unicode, 32)]
public char[] latinAmericanSecondCheckPointName;
[String(StringType.Unicode, 32)]
public char[] italianSecondCheckPointName;
[String(StringType.Unicode, 32)]
public char[] koreanSecondCheckPointName;
[String(StringType.Unicode, 32)]
public char[] chineseSecondCheckPointName;
[String(StringType.Unicode, 32)]
public char[] unknownSecondCheckPointName;
[String(StringType.Unicode, 32)]
public char[] portugueseSecondCheckPointName;
[Size(64)]
public byte[] unused9008;
[String(StringType.Unicode, 128)]
public char[] englishSecondCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] japaneseSecondCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] germanSecondCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] frenchSecondCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] spanishSecondCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] latinSecondCheckPointAmericanName;
[String(StringType.Unicode, 128)]
public char[] italianSecondCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] koreanSecondCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] chineseSecondCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] unknownSecondCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] portugueseSecondCheckPointDescription;
[Size(256)]
public byte[] unused11888;
public short unknown12136;
public short unknown12138;
[Size(4)]
public byte[] unused12140;
[String(StringType.Unicode, 32)]
public char[] englishThirdCheckPointName;
[String(StringType.Unicode, 32)]
public char[] japaneseThirdCheckPointName;
[String(StringType.Unicode, 32)]
public char[] germanThirdCheckPointName;
[String(StringType.Unicode, 32)]
public char[] frenchThirdCheckPointName;
[String(StringType.Unicode, 32)]
public char[] spanishThirdCheckPointName;
[String(StringType.Unicode, 32)]
public char[] latinAmericanThirdCheckPointName;
[String(StringType.Unicode, 32)]
public char[] italianThirdCheckPointName;
[String(StringType.Unicode, 32)]
public char[] koreanThirdCheckPointName;
[String(StringType.Unicode, 32)]
public char[] chineseThirdCheckPointName;
[String(StringType.Unicode, 32)]
public char[] unknownThirdCheckPointName;
[String(StringType.Unicode, 32)]
public char[] portugueseThirdCheckPointName;
[Size(64)]
public byte[] unused12848;
[String(StringType.Unicode, 128)]
public char[] englishThirdCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] japaneseThirdCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] germanThirdCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] frenchThirdCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] spanishThirdCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] latinThirdCheckPointAmericanName;
[String(StringType.Unicode, 128)]
public char[] italianThirdCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] koreanThirdCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] chineseThirdCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] unknownThirdCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] portugueseThirdCheckPointDescription;
[Size(256)]
public byte[] unused15728;
public short unknown15976;
public short unknown15978;
[Size(4)]
public byte[] unused15980;
[String(StringType.Unicode, 32)]
public char[] englishFourthCheckPointName;
[String(StringType.Unicode, 32)]
public char[] japaneseFourthCheckPointName;
[String(StringType.Unicode, 32)]
public char[] germanFourthCheckPointName;
[String(StringType.Unicode, 32)]
public char[] frenchFourthCheckPointName;
[String(StringType.Unicode, 32)]
public char[] spanishFourthCheckPointName;
[String(StringType.Unicode, 32)]
public char[] latinAmericanFourthCheckPointName;
[String(StringType.Unicode, 32)]
public char[] italianFourthCheckPointName;
[String(StringType.Unicode, 32)]
public char[] koreanFourthCheckPointName;
[String(StringType.Unicode, 32)]
public char[] chineseFourthCheckPointName;
[String(StringType.Unicode, 32)]
public char[] unknownFourthCheckPointName;
[String(StringType.Unicode, 32)]
public char[] portugueseFourthCheckPointName;
[Size(64)]
public byte[] unused16688;
[String(StringType.Unicode, 128)]
public char[] englishFourthCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] japaneseFourthCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] germanFourthCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] frenchFourthCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] spanishFourthCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] latinFourthCheckPointAmericanName;
[String(StringType.Unicode, 128)]
public char[] italianFourthCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] koreanFourthCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] chineseFourthCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] unknownFourthCheckPointDescription;
[String(StringType.Unicode, 128)]
public char[] portugueseFourthCheckPointDescription;
[Size(256)]
public byte[] unused19568;
[Size(14)]
public byte[] unknown19824;
[String(4)]
public char[] _eof;
}
public class Certificate : Chunk
{
public int EOFSize;
[Size(4)]
public byte[] exponent; //?
public int FileSize; //With out EOF
public byte unknown12;
[Size(256)]
public byte[] cypherText;
}
Last edited by shade45 on Sun Jul 06, 2008 2:24 pm, edited 2 times in total.
- grimdoomer
- Posts: 1440
- Joined: Mon Oct 09, 2006 4:36 pm
![]() |

Code: Select all
public class Certificate : Chunk
{
public int EOFSize;
[Size(4)]
public byte[] exponent;
public int FileSize; //With out EOF
public byte unknown12;
[Size(256)]
public byte[] cypherText;
}

AI Zones in MP | Ambiance | Gravemind Beta v1.1
Aumaan Anubis wrote:Grimdoomer. The first person ever to mod Halo 2 Vista.
Thanks I completely overlooked those valuesgrimdoomer wrote:![]()
Code: Select all
public class Certificate : Chunk { public int EOFSize; [Size(4)] public byte[] exponent; public int FileSize; //With out EOF public byte unknown12; [Size(256)] public byte[] cypherText; }



"Before you criticize someone, walk a mile in their shoes. That way after you make fun of them, you still have their shoes."-Dranciel ಠ_ಠScottyGee wrote:Smokers suck >_< (to avoid someone saying it later, both literally and in the derogatory way)
well you never had to look at them... they are a few simple values that really dont help us with anything that we need to doshade45 wrote:Thanks I completely overlooked those valuesgrimdoomer wrote:![]()
Code: Select all
public class Certificate : Chunk { public int EOFSize; [Size(4)] public byte[] exponent; public int FileSize; //With out EOF public byte unknown12; [Size(256)] public byte[] cypherText; }
LuxuriousMeat wrote:Code: Select all
public enum ImageKey : short { AButton = 0x8480, BButton = 0x8481, XButton = 0x8482, YButton = 0x8483, LeftShoulderButton = 0x8484, RightShoulderButton = 0x8485, LeftTrigger = 0x8486, RightTrigger = 0x8487, DPadUp = 0x8488, DPadDown = 0x8489, DpadLeft = 0x848A, DPadRight = 0x848B, StartButton = 0x848C, BackButton = 0x848D, LeftThumbStickStick = 0x848E, RightThumbStickStick = 0x848F }
I looked at zanzibar.map and warehouse.map... Looked at what stringID's should be left_foot and right_foot in bipd, read the value...
The string ID was just an Int32 indicating the index.
Worked for everything I've read so far.
=|
The string ID was just an Int32 indicating the index.
Worked for everything I've read so far.
=|
Last edited by -DeToX- on Sat Jul 12, 2008 8:54 pm, edited 1 time in total.

Nice, should help with plugins and even actual modding.

-----[ [BioDrop][Wake Island][3volved's Havok][Nightmare] ]-----
---------[ [Hud Coordinate Finder]-[Halo 2 Effect Studio] ]---------
-
- Posts: 1262
- Joined: Sun Sep 03, 2006 10:43 pm
- Location: Michigan
![]() |
![]() |
Good job.-DeToX- wrote:I thought StringID's were hard to do based off what I was told?
I looked at zanzibar.map and warehouse.map... Looked at what stringID's should be left_foot and right_foot in bipd, read the value...
The string ID was just an Int32 indicating the index.
Worked for everything I've read so far.
=|
Well shade, thats only for the first "group" I'm assuming.
It gets more complicated.
It gets more complicated.
Code: Select all
Map: Sidewinder.map
Index: 1515(dec)
Offset in stringTable: 21805(dec)
Name: helmet
valueWritten: 00010134(hex)
Code: Select all
map: zanzibar
index: 5208(dec)
offset in stringTable: 102238(dec)
name: warthog_d
valueWritten: 0000199D(hex)
Code: Select all
map: sidewinder
index: 4425(dec)
offset in stringTable: 94224(dec)
name: warthog_d
valueWritten: 00000828(hex)
