Harbinger
Posted: Sun Nov 25, 2007 3:56 pm
Harbinger
Early Beta footage
What It Is:
This program uses an automated process to fully convert most CE maps to playable PC/Mac maps. It is designed to let more people enjoy custom maps, allow greater flexibility in the modding community and simplify a tedious process. It is not designed for ripping and as such will not convert protected maps and includes an option to protect maps once they are converted (although I'm sure HEK+ does it better). I ask all users who download this program to not use it for any purpose that goes against the map makers wishes.
Use:
Keep the application in the same folder as data.map and index.txt. Make sure the maps folder you're using contains only mapfiles (others will be ignored but still it's a good idea) and only clean original maps. Select your "Target Map" as the CE map you wish to convert. Select "Maps Folder" as your clean maps folder containing original maps. If you wish to protect the tag names check the "Protect Map" check box. Select the type of map you wish to convert to (SP, MP or UI) and then select which map the CE target will be converted to. Find Ones will only replace indexed tags (see "How It Works" below) and works for most MP maps. Find All will replace indexed tags as well as snd! and bitm tags that in the CE map would refer to the CE sounds.map and bitmaps.map respectively. If you have "corrupted" sounds and bitmaps after using Find Ones, I suggest trying Find All. Find All is recommended for UI and SP maps. Once all the options are set, hit "Convert" and you will be prompted where to save the converted map. The program will then do the entire conversion internally. Altering the maps folder or target map during the process may cause it to fail. Additionally some maps simply do not work after being converted (unsure why) and for Mac users, some maps do not work on PowerPC processors. If you wish to cancel the conversion, simply close the window and/or quit the program. No damage will be done to either the target map or your maps folder. Once the program has finished converting, it will alert you with a popup indicating how many seconds have elapsed during the conversion process.
How It Works:
CE maps are very similar to PC maps with a few exceptions. Obviously the header has different values in certain sections. Next, there are internalized bitmaps and sounds which act exactly like a normal bitm or snd! file except that the data which would normally be in bitmaps.map or sounds.map is in the raw section after the bsp(s) and before the tag index. There's a value somewhere in those metas that tells halo to search within the map it self instead of bitmaps.map or sounds.map which still works on PC. The only significant difference is in the tag index. Normally in the index tags have the form:
However, for some CE tags that already exist with the stock MP maps are of this form:
The methods to find these tags relied on finding the value of 1 where normally there would be a zero which is where the term "Find Ones" comes from. These tags are called either indexed tags, reused tags or simple "1's". The indexvalue of these tags does not change for bitm, ustr, hmt and similar metas but does change for snd! files. (Currently I do not know the indexing scheme used for snd! indexed files.) The index value is unique to each meta of a given tag class, but is not exclusive to that tag class. (So you could have a bitm with indexvalue = 1 and a ustr with indexvalue = 1.) Meta Editors that do not expect this format will often have problems as they try to read from nonexistent offsets. The meta data for these tags exists no where in the map and as best I can tell, the CE game itself reads these out of bitmaps.map, sounds.map and loc.map (which contains the ustr, hmt and the like tags) supplying the header data for snd! and bitm tags itself.
By adding the tag data for these tags using the original PC maps and updating the tag index, the maps become playable. The last obstacle to conversion is that an indexed tag for CE called ustr ui\shell\main_menu\settings_select\multiplayer_setup\playlist_edit\slayer_edit\var_kill_penalty does not exist within the PC map files. Thanks to Conure, data.map included in the download includes a useable version of the tag which is faster to inject than hunting down all of the dependencies and nulling them out. That covers the general method of converting CE maps to PC. Find One's and replace them with the tag data from original maps. As mentioned in "Use", some bitm and snd! tags aren't indexed but use the CE bitmaps.map and sounds.map files. Find all uses a list (index.txt) of all the tags in the CE bitmaps.map and sounds.map files and compares that list to all of the tags in the target map and replaces those with PC versions of the tags as well as any "1's" in order to successfully convert UI and SP maps. Harbinger uses a special class to store tag data in RAM removing the clutter of batch extracting to folders and then importing from those folders.
Notes:
Will not convert protected maps.
Does convert SP maps and multiple BSP maps (biohalo and hugeass are confirmed to work).
Some maps convert but are not playable. The reasons are unknown and there are likely several.
Has the option to protect tags once the map is converted.
PowerPC Macs are unable to play some conversions.
Find All is used to convert maps which have bitmaps and/or sounds that are not internalized or indexed and will appear corrupted in PC.
Simple to use and no clutter.
Credits:
Altimit01 - code
Sword - CE->PC process information, testing
>Shadow< - testing
Cloud - testing
Conure - lots of research, help, testing and for compiling data.map and index.txt without which this program wouldn't be nearly as good
Early Beta footage
What It Is:
This program uses an automated process to fully convert most CE maps to playable PC/Mac maps. It is designed to let more people enjoy custom maps, allow greater flexibility in the modding community and simplify a tedious process. It is not designed for ripping and as such will not convert protected maps and includes an option to protect maps once they are converted (although I'm sure HEK+ does it better). I ask all users who download this program to not use it for any purpose that goes against the map makers wishes.
Use:
Keep the application in the same folder as data.map and index.txt. Make sure the maps folder you're using contains only mapfiles (others will be ignored but still it's a good idea) and only clean original maps. Select your "Target Map" as the CE map you wish to convert. Select "Maps Folder" as your clean maps folder containing original maps. If you wish to protect the tag names check the "Protect Map" check box. Select the type of map you wish to convert to (SP, MP or UI) and then select which map the CE target will be converted to. Find Ones will only replace indexed tags (see "How It Works" below) and works for most MP maps. Find All will replace indexed tags as well as snd! and bitm tags that in the CE map would refer to the CE sounds.map and bitmaps.map respectively. If you have "corrupted" sounds and bitmaps after using Find Ones, I suggest trying Find All. Find All is recommended for UI and SP maps. Once all the options are set, hit "Convert" and you will be prompted where to save the converted map. The program will then do the entire conversion internally. Altering the maps folder or target map during the process may cause it to fail. Additionally some maps simply do not work after being converted (unsure why) and for Mac users, some maps do not work on PowerPC processors. If you wish to cancel the conversion, simply close the window and/or quit the program. No damage will be done to either the target map or your maps folder. Once the program has finished converting, it will alert you with a popup indicating how many seconds have elapsed during the conversion process.
How It Works:
CE maps are very similar to PC maps with a few exceptions. Obviously the header has different values in certain sections. Next, there are internalized bitmaps and sounds which act exactly like a normal bitm or snd! file except that the data which would normally be in bitmaps.map or sounds.map is in the raw section after the bsp(s) and before the tag index. There's a value somewhere in those metas that tells halo to search within the map it self instead of bitmaps.map or sounds.map which still works on PC. The only significant difference is in the tag index. Normally in the index tags have the form:
Code: Select all
string tagclass1 //4 characters
string tagclass2 //4 characters
string tagclass3 //4 characters
uint32 tag_id
int32 nameoffset //need to be modified by magic
int32 metaoffset //needs to be modified by magic
int32 zero1
int32 zero2
Code: Select all
string tagclass1 //4 characters
string tagclass2 //4 characters
string tagclass3 //4 characters
uint32 tag_id
int32 nameoffset //need to be modified by magic
int32 indexvalue //should NOT be modified by magic
int32 CE_flag //this value is 1 for indexed tags
int32 zero2
By adding the tag data for these tags using the original PC maps and updating the tag index, the maps become playable. The last obstacle to conversion is that an indexed tag for CE called ustr ui\shell\main_menu\settings_select\multiplayer_setup\playlist_edit\slayer_edit\var_kill_penalty does not exist within the PC map files. Thanks to Conure, data.map included in the download includes a useable version of the tag which is faster to inject than hunting down all of the dependencies and nulling them out. That covers the general method of converting CE maps to PC. Find One's and replace them with the tag data from original maps. As mentioned in "Use", some bitm and snd! tags aren't indexed but use the CE bitmaps.map and sounds.map files. Find all uses a list (index.txt) of all the tags in the CE bitmaps.map and sounds.map files and compares that list to all of the tags in the target map and replaces those with PC versions of the tags as well as any "1's" in order to successfully convert UI and SP maps. Harbinger uses a special class to store tag data in RAM removing the clutter of batch extracting to folders and then importing from those folders.
Notes:
Will not convert protected maps.
Does convert SP maps and multiple BSP maps (biohalo and hugeass are confirmed to work).
Some maps convert but are not playable. The reasons are unknown and there are likely several.
Has the option to protect tags once the map is converted.
PowerPC Macs are unable to play some conversions.
Find All is used to convert maps which have bitmaps and/or sounds that are not internalized or indexed and will appear corrupted in PC.
Simple to use and no clutter.
Credits:
Altimit01 - code
Sword - CE->PC process information, testing
>Shadow< - testing
Cloud - testing
Conure - lots of research, help, testing and for compiling data.map and index.txt without which this program wouldn't be nearly as good