Change a texture without affecting other maps

Discuss Halo 2 modding, progress on figuring things out, mapfiles...you know the drill. Cheating discussion not allowed.
Post Reply
User avatar
Iron_Forge




Illusionist Socialist Decryptor System Engineer
ONI Golden Age Magic Era Bloodhound
Coagulator Omega Mad Hatter Eureka
Critic Tsunami Firestorm Literarian 250

Posts: 532
Joined: Sat Sep 20, 2003 9:21 pm

Change a texture without affecting other maps

Post by Iron_Forge »

Well, I'll use the warthog as the example since thats the one most people seem to be interested in...Open up coagulation in your favourite hex editor...Jump to offset 0x10. This is the offset to the index...You will want to write this number (0x023AE200) down...

Now get the offset to the warthog_standard.bitm with whatever means you find easiest...For my map, it's 0x024C9544...0x68 bytes into this meta, you should see the 6 LOD offsets, followed by their sizes...Should look something like:

Code: Select all

0036FF88 00E0FD88 008AFD88 FFFFFFFF FFFFFFFF FFFFFFFF 80550500 80550100 80550000 00000000 00000000 00000000
Now, you'll want to wipe out all the LOD's but the first, so change that to look like:

Code: Select all

0036FF88 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 80550500 00000000 00000000 00000000 00000000 00000000
We could copy the LOD's too, but it doesn't effect MP games that I've noticed...If you want to copy them too rather than eliminating them, just repeat this for them...

Now, the first offset (0x88FF3600) is a shared offset, we can tell cause the high nibble is 8...So we will subtract 0x80000000, leaving us with 0x08FF3600...Because that was an 8, we know this offset is in shared.map...If it were a 4, it would be in mainmenu.map, and a C the single_player_shared.map...

Now, we note the size of this bitmap is 0x00055580...All textures in Halo 2 are rounded up to 512, so we round this up to the nearest 512 (0x00055580 + (512 - (0x00055580 % 512)))...This gives us the new size of 0x00055600...

Before moving on, we'll replace the offset while we're here...Change the offset (0x88FF3600) with the point we will be injecting too, which is the current index offset (0x023AE200)...

So we go to offset 0x08FF3600 in shared.map, and select 0x00055600 bytes...Copying them, we return to coagulation, and jump to 0x023AE200...Paste the data here, inserting it...Now that the map has changed sizes, we'll need to fix a couple of values in the header...0x08 is the size of the map, and 0x10 is the offset to the index...Both need to be increased by the size of the injected data, since the map size has increased by this, and the index has been moved by the same value...

Now save your work, and run whatever tool you use to correct the encryptomatic signature (I use the TF6 tool, since it's quick, and I won't be making other changes to the map)...

Now the coagulation map has its own warthog_standard.bitm, and you can use your favourite editor to do to it as you please...

For those of you who are interested, this works due to the design of Halo 2 maps...Bitmaps happen to be just before the index..This is the purpose of the magic value(s), which are calculated based on some constants and the offset to the index (among some other values)...So if the index is moved, all reflexives are fixed, because magic will change corresponding to this change...This allows meta of a map to be built, without requiring knowledge of the size of the raw data...Thanks of course to TheSwampFox for verifying that this still works with Halo 2...

It should be noted that PPF's don't work correctly when maps change size (especially in this fashion)...So don't expect to be distributing this with many of your mods... ;oP
Image
...Thats right...I invented modding...So give me Wii Points...
User avatar
Iron_Forge




Illusionist Socialist Decryptor System Engineer
ONI Golden Age Magic Era Bloodhound
Coagulator Omega Mad Hatter Eureka
Critic Tsunami Firestorm Literarian 250

Posts: 532
Joined: Sat Sep 20, 2003 9:21 pm

Post by Iron_Forge »

PPF works on a byte by byte comparison system (or maybe dword by dword, it's been awhile since I've needed to work with it, but the principle is the same)...

Given two files, it will go through every offset of both incrimentally, and record changes...So it compares the value at offset 0x0, then 0x4, then 0x8, and so on...When it gets to the added texture, it will be comparing the texture to the index that was in the file, which will of course be different, and it will record the texture...However, then it will get to the index in the injected file, and some point further along in the index in the other file, and also record these changes...Then it will reach end of file in the original (most PPF generators will just refuse to work with files of different sizes for this reason)...One's I've written will continue to just add all 'extra' data after that point as changed...So your texture PPF will end up containing nearly all of the meta from the map (which will be several factors larger than your injected texture)...

Then when applied, the PPF will over-write all the existing data that was changed (which is fine, it's goal is to make the old map look like the new one)...But this isn't the most efficient method, where only a few hundred KB were changed, and could have been injected had PPF supported some look-ahead changes...Though, this is well beyond the complexity that PPF was designed for...
Image
...Thats right...I invented modding...So give me Wii Points...
FooFighter





Posts: 48
Joined: Wed Jul 27, 2005 11:58 am

Post by FooFighter »

Why wouldent you just use BitmapAdder??? Also you could still make a patch. All you need tod is use serenity. This should be able to make a patch WITH your new skins aswell!
Signature exceeded 75KB.
User avatar
Snave




Socialist Designer Golden Age Bloodhound
Illusionist Commentator

Posts: 1161
Joined: Sun Jul 25, 2004 5:46 am
Location: United Kingdom
Contact:

Post by Snave »

FooFighter wrote:Why wouldent you just use BitmapAdder??? Also you could still make a patch. All you need tod is use serenity. This should be able to make a patch WITH your new skins aswell!
This post was made before it was possible to inject bitmaps and make them internal, no doubt this post lead to the creation of the application you describe. Same applies for Serenity patches.
User avatar
Aequitas




Socialist Artisan Miner Pi
Bloodhound Mad Hatter Enthraller Logistician
Eureka Critic Wave

Posts: 469
Joined: Thu Nov 11, 2004 10:07 pm

Post by Aequitas »

I was bored and was gonna be internalizing some textures so I made this thing to help out. It basically calculates all of the values you'd need to calculate if you were following this tutorial. I recommend it for the people that enjoy working with Hex Workshop every now and then, but don't necessarily enjoy repeatedly reverse edian-ing a thousand dwords and doing monotonous math. So if you're one of those people, like me, enjoy!

I've only used it once so far, but it worked fine... So, I assume it'll always work. Input the values as they are in the map, then everything should be outputed in the right format for you to paste it right into where it needs to go (goto/select block/in the map/etc).
User avatar
Agent ME




Articulatist 500

Posts: 881
Joined: Tue Jun 21, 2005 6:00 pm
Location: California, USA
Contact:

Post by Agent ME »

I also found an easier way too:
Agent ME wrote:After spending the last 4 hours trying, I finally figured out a way of very easily making an internal skin!

What you need:
Insolence
DotHalo

Step 1
In Insolence, open the level you want to put the skin in and another level. In the second level, you need to find a bitmap that is internal to that level and the same size or bigger than the bitmap you want to make internal.

*If you want to make the bitmap of a warthog internal, I recommend getting the creep_hull bitmap from oldmambasa*

Step 2
Drag over the bitmap to the level you want to make a skin internal.

Step 3
Close the other level.

Step 4
Rename the bitmap you dragged over to something descriptive. If you are planning to make the bitmap of a gold hog internal, try "objects\vehicles\warthog\bitmaps\warthog_gold".

Step 5
Inject the dds file you want into the tag you just renamed.

Step 6
Copy the meta offset of the new tag into the bitmap you want it to replace.

*For example, if you were internally skinning a gold hog, now copy the meta offset of "objects\vehicles\warthog\bitmaps\warthog_gold" to "objects\vehicles\warthog\bitmaps\warthog_standard".

Step 7
Resign the map, FTP to xbox, and take a look at the internal skinning!
User avatar
xzodia




Translator Connoisseur Coagulator

Posts: 1981
Joined: Sun May 15, 2005 10:31 am
Location: UK
Contact:

Post by xzodia »

i thought id just point out this topic is really out of date and might want to be replaced with a nice simple one using a bitmap internaliser?
Image
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.
User avatar
dazzajay




Literarian 500

Posts: 582
Joined: Tue Feb 21, 2006 9:17 am
Location: Shepparton, Victoria, Australia
Contact:

Post by dazzajay »

xzodia wrote:i thought id just point out this topic is really out of date and might want to be replaced with a nice simple one using a bitmap internaliser?
i agree, its really confusing for me.
Juniorman030790





Posts: 745
Joined: Mon Feb 14, 2005 1:09 pm
Contact:

Post by Juniorman030790 »

1337/|/355 Thank You! :D
Image
madden156





Posts: 1
Joined: Sat Sep 30, 2006 6:50 pm
Location: ohio

im new

Post by madden156 »

im new on this site but is there a way to mod an xbox for free by downloading something from your computer straight to your xbox?if there is please tell me and give the website name. i will appreciate it.
[users]MrBalll





Posts: 501
Joined: Thu Apr 20, 2006 8:13 pm
Location: You Know...

Post by [users]MrBalll »

No, it will cost you money depending on what your friends have. But, this is not the place to ask. Go to www.xbox-scene.com for xbox related questions.
Post Reply