Halo2 dissection
After playing the best game ever for 14 hour solid post launch (I really
didn't download the leaked copy) I decided enough eye candy and started to
dissect the disk. Here is what I've found so far:
The root directory of the game has the expected 4 files:
- default.xbe
- downloader.xbe
- update.xbe
- dashupdate.xbe (deleted this one before I caught the name.. I'll fix that
later)
In addition to the four executables there are three directories
The media directory was nothing special except one file named: "command line.txt".
This gave me glee, especially when I looked at the contents:
|
cd C:Program FilesMicrosoft Xbox SDKxboxin
bundler C:halo2inDownloadermediadlcustom.rdf -o C:halo2inDownloadermediadlcustom.xpr
bundler C:halo2inDownloadermediadlres.rdf -o C:halo2inDownloadermediadlres.xpr
Dlcustom holds the resources for the custom backgrounds. Dlres is the resources for all the buttons and controls. If dlres.xpr is absent then downloader will simply reference the default resources embedded in the .xbe. You must have the sdk installed in the default location for the command lines to work. |
|
This gleeful find led me to (obviously) the two rdf files:
|
dlcustom.rdf |
out_header rescustom.h
out_packedresource obji386dlcustom.xpr
out_error rescustom.err
out_prefix RESCUSTOM
Texture TEX_MAIN_BACKGROUND
{
Source srcmediadlback_main.bmp
Format D3DFMT_DXT3
Levels 1
}
Texture TEX_CONTENT_BACKGROUND
{
Source srcmediadlback_content.bmp
Format D3DFMT_DXT3
Levels 1
}
Texture TEX_DOWNLOADING_BACKGROUND
{
Source srcmediadlback_down.bmp
Format D3DFMT_DXT3
Levels 1
}
|
|
|
dlres.rdf |
out_header dlres.h
out_packedresource dlres.xpr
out_error dlres.err
out_prefix RES
Texture TEX_GENERIC_TITLE
{
Source srcmediageneric.bmp
Format D3DFMT_DXT3
Levels 1
}
Texture TEX_A_BUTTON
{
Source srcmediaabutton.bmp
Format D3DFMT_DXT3
Alphasource srcmediauttonalpha.bmp
Levels 1
}
Texture TEX_B_BUTTON
{
Source srcmediabutton.bmp
Alphasource srcmediauttonalpha.bmp
Format D3DFMT_DXT3
Levels 1
}
Texture TEX_X_BUTTON
{
Source srcmediaxbutton.bmp
Alphasource srcmediauttonalpha.bmp
Format D3DFMT_DXT3
Levels 1
}
Texture TEX_LENS_ALPHA
{
Source srcmedialensalpha.bmp
Alphasource srcmedialensalpha.bmp
Format D3DFMT_A8R8G8B8
Levels 1
}
Texture TEX_CORNER_FULL
{
Source srcmediacorner_full.bmp
Alphasource srcmediacorner_full_alpha.bmp
Format D3DFMT_A8R8G8B8
Levels 1
}
Texture TEX_CORNER_PARTIAL
{
Source srcmediacorner_partial.bmp
Alphasource srcmediacorner_partial_alpha.bmp
Format D3DFMT_A8R8G8B8
Levels 1
}
Texture TEX_SPIN_FRAME1
{
Source srcmediaspin1.bmp
Alphasource srcmediaspin1alpha.bmp
Format D3DFMT_A8R8G8B8
Levels 1
}
Texture TEX_SPIN_FRAME2
{
Source srcmediaspin2.bmp
Alphasource srcmediaspin2alpha.bmp
Format D3DFMT_A8R8G8B8
Levels 1
}
Texture TEX_SPIN_FRAME3
{
Source srcmediaspin3.bmp
Alphasource srcmediaspin3alpha.bmp
Format D3DFMT_A8R8G8B8
Levels 1
}
Texture TEX_SPIN_FRAME4
{
Source srcmediaspin4.bmp
Alphasource srcmediaspin4alpha.bmp
Format D3DFMT_A8R8G8B8
Levels 1
}
Texture TEX_UP_ARROW
{
Source srcmediaup.bmp
Alphasource srcmediaupalpha.bmp
Format D3DFMT_A8R8G8B8
Levels 1
}
Texture TEX_DOWN_ARROW
{
Source srcmediadown.bmp
Alphasource srcmediadownalpha.bmp
Format D3DFMT_A8R8G8B8
Levels 1
}
Texture TEX_BUTTON_TEXT_BACK
{
Source srcmediautton_text_back.bmp
Alphasource srcmediautton_text_alpha.bmp
Format D3DFMT_A8R8G8B8
Levels 1
}
Texture TEX_PREMIUM_ICON
{
Source srcmediaPremiumIcon.bmp
Alphasource srcmediaPremiumIcon_alpha.bmp
Format D3DFMT_A8R8G8B8
Levels 1
}
Texture TEX_HIGHLIGHT
{
Source srcmediahighlight.bmp
Format D3DFMT_A8R8G8B8
Levels 1
}
Texture TEX_BIG_BUTTON
{
Source srcmediaigbutton.bmp
Alphasource srcmediaigbutton_alpha.bmp
Format D3DFMT_A8R8G8B8
Levels 1
}
|
|
Looking in the XPR files with the same root names as teh RDF files shows they
are binary files with few landmarks. In fact all I found was the headers
reference to XPRO.H.
After spending some time looking at the maps, it would appear that there are
three types of maps:
- Campaign mode
- PvP mode ("normal" multiplayer)
- Scenarios
This last one seems quite interesting. It is referenced in a 418 meg
map named single_player_shared.map . . . Interesting.
That's all for now, I'm sure I'm not the only one hacking, but hopefully this
helps others get started.
A note to M$: all the info I've made available here is under the
auspice of interoperability of user generated maps.