Halo 3 [Beta] Mod Discussion

Discussion about modding Halo 3.
User avatar
LuxuriousMeat





Posts: 824
Joined: Thu Nov 03, 2005 6:43 pm
Location: zzzzzzzzzzzzzzzz
Contact:

Post by LuxuriousMeat »

Ahh, thanks. And great job guys.
Image
User avatar
Prey




Connoisseur Snitch! Pyre Articulatist 500

Posts: 1026
Joined: Wed Dec 27, 2006 6:49 am
Location: UK
Contact:

Post by Prey »

xGhostlySnowx wrote:nice job prey.. is there any chance you could find a way to open the shared.map? it gives a memory error... but nice to see whats going on in the game before it ships...
Yea the shared map is a bit weird.
neodos wrote:How are you going to launch the halo 3 beta once the beta is over?

Just wondering... or you are just getting advanced on modding halo 3 mapfiles before the game comes out?
Heres what i said over at xbl-hackers
Prey wrote:Will we be able to playtest any mods we make?
No, remember that generic container file? Well thats protected by a signed hash that no-ones figured out yet.. so whilst we can extract and edit these maps, theres no way we can inject them back in.. yet. Although i could be wrong as someone was talking about burning the file to a CD and it working? It'd be great if someone could verify that.
Chances are the .map format is not going to change all that much now, so yea you could see it as our 'headstart'.
Halo 2 Prophet - Skin with ease with the simple 3D point and click interface.
Halo 3 Research Thread - Contribute to the research into Halo 3.
User avatar
LuxuriousMeat





Posts: 824
Joined: Thu Nov 03, 2005 6:43 pm
Location: zzzzzzzzzzzzzzzz
Contact:

Post by LuxuriousMeat »

Do you minus the primary magic to get to the tag info too?
Image
-DeToX-




Illusionist Recreator Connoisseur Acolyte
Sigma Decryptor Droplet Pyre
Blacksmith Socialist New Age System Engineer
ONI

Posts: 4589
Joined: Sun Jun 18, 2006 3:58 pm
Location: ...

Post by -DeToX- »

LuxuriousMeat wrote:Do you minus the primary magic to get to the tag info too?
Yes.
Image
User avatar
LuxuriousMeat





Posts: 824
Joined: Thu Nov 03, 2005 6:43 pm
Location: zzzzzzzzzzzzzzzz
Contact:

Post by LuxuriousMeat »

-DeToX- wrote:
LuxuriousMeat wrote:Do you minus the primary magic to get to the tag info too?
Yes.
Hmm... I'm doing that but it isn't working...
Image
User avatar
Prey




Connoisseur Snitch! Pyre Articulatist 500

Posts: 1026
Joined: Wed Dec 27, 2006 6:49 am
Location: UK
Contact:

Post by Prey »

LuxuriousMeat wrote:Hmm... I'm doing that but it isn't working...
Lux read THIS

On a lighter note, ive got dependencies loading :P ..ill post the updated app in a bit.
Halo 2 Prophet - Skin with ease with the simple 3D point and click interface.
Halo 3 Research Thread - Contribute to the research into Halo 3.
User avatar
Tural




Conceptionist Acolyte Bloodhound Recreator
Socialist Connoisseur Droplet Scorched Earth
Grunge

Posts: 15628
Joined: Thu Jun 16, 2005 3:44 pm
Location: Lincoln, NE
Contact:

Post by Tural »

There is to be no discussion of modding the beta and making it playable at all, at the very least not until the beta is over. End of story.
User avatar
Prey




Connoisseur Snitch! Pyre Articulatist 500

Posts: 1026
Joined: Wed Dec 27, 2006 6:49 am
Location: UK
Contact:

Post by Prey »

TagTypes Index Nothing of real interest here
This consists of 16-byte blocks, that follow this structure:
0 = 4 chars (e.g. bipd)
4 = null
8 = null
12 = Number

TagInfo
This consists of 8-byte blocks, that follow this structure:
0 - int16 - Index of the tags Type
2 - int16 - The tags Ident
4 - int32 - The tags MetaOffset (-PrimaryMagic)

The Meta
Annoyingly it is unordered, simply put 'meta1' does not go with 'tagInfo1'. In order to find the size of a tags meta, you must find the offset of the next meta, and then subtract from it the offset of the current tags meta.

Dependencies
These are found in the meta and now follow the format of:
0 = 4 chars (e.g. bipd)
4 = int32 - 0000 0000
8 = int32 - 0000 0000
12 = int16 - ident

LoneIDs
Meh, ill look later..

Reflexives
Poke's been looking into these, hes found that subtracting the PrimaryMagic keeps taking him out of the tags meta.. which leads him to believe there may be another magic just for the reflexives (ugh)

Strings
These consists of 4-byte blocks (I think), that follow this structure (I think):
0 = int16 - 0000
4 = int16 - strIndex

Manually Scanning
As plugins are not yet present, the app below will scan for deps and strings.. which may mean it is not all entirely accurate. Deps will be as their structure is quite unique, although the structure of the strings is rather more 'general' and because of this, you may see some random crap come up. But hey thats all part of the fun! :P

The Application
Image

-> http://www.filesend.net/download.php?f= ... ea10699f98
I am too kind.
Halo 2 Prophet - Skin with ease with the simple 3D point and click interface.
Halo 3 Research Thread - Contribute to the research into Halo 3.
User avatar
Tural




Conceptionist Acolyte Bloodhound Recreator
Socialist Connoisseur Droplet Scorched Earth
Grunge

Posts: 15628
Joined: Thu Jun 16, 2005 3:44 pm
Location: Lincoln, NE
Contact:

Post by Tural »

Hawt, Prey.

Doesn't open shared.map =x
User avatar
Prey




Connoisseur Snitch! Pyre Articulatist 500

Posts: 1026
Joined: Wed Dec 27, 2006 6:49 am
Location: UK
Contact:

Post by Prey »

Tural wrote:Hawt, Prey.

Doesn't open shared.map =x
Well like i said the shared map is weird.. the headers all scrambled and i cant find an index. So for now until more research is done on that map, the app wont be able to open it properly. Dont worry though, Ill make sure to put a nicer error message in place...
Halo 2 Prophet - Skin with ease with the simple 3D point and click interface.
Halo 3 Research Thread - Contribute to the research into Halo 3.
User avatar
LuxuriousMeat





Posts: 824
Joined: Thu Nov 03, 2005 6:43 pm
Location: zzzzzzzzzzzzzzzz
Contact:

Post by LuxuriousMeat »

Anthony thinks the shared.map is 100% raw data, so it would have no need for anything else if all the pointers come from the actual maps.
Image
User avatar
shade45




Translator Artisan Enthraller Logistician
Stylist Wave Firestorm New Age

Posts: 2270
Joined: Fri Apr 01, 2005 1:04 pm

Post by shade45 »

LuxuriousMeat wrote:Anthony thinks the shared.map is 100% raw data, so it would have no need for anything else if all the pointers come from the actual maps.
yeah thats what I think to. There should just be a pointer in the map file that points to an offset in the shared map.
User avatar
shade45




Translator Artisan Enthraller Logistician
Stylist Wave Firestorm New Age

Posts: 2270
Joined: Fri Apr 01, 2005 1:04 pm

Post by shade45 »

I found a second way of determining the primary magic

Code: Select all

br.BaseStream.Position = tag_info_offset + 4;
primary_magic = br.ReadInt32() - map.map_header.meta_start;
Yealds the same result as the way poke found

Code: Select all

primary_magic = map.map_header.memory_modifier - map.map_header.index_header_offset;
User avatar
kornman00




ONI New Age

Posts: 146
Joined: Fri Dec 12, 2003 6:30 pm
Contact:

Post by kornman00 »

1. They don't make the shared database maps like they used to, because its now more about the fact they don't rely on having a HDD, thus they can just stream it all into memory (which is why it takes so much longer to load a cache, it has to load everything).
2. The cache's hash isn't like halo2's...
3. Theres nothing hard about finding a address's offset in a file. It should actually be easier for you guys to figure this stuff out due to the new resource designs, but I may be wrong...
User avatar
Prey




Connoisseur Snitch! Pyre Articulatist 500

Posts: 1026
Joined: Wed Dec 27, 2006 6:49 am
Location: UK
Contact:

Post by Prey »

shade45 wrote:I found a second way of determining the primary magic

Code: Select all

br.BaseStream.Position = tag_info_offset + 4;
primary_magic = br.ReadInt32() - map.map_header.meta_start;
Yealds the same result as the way poke found

Code: Select all

primary_magic = map.map_header.memory_modifier - map.map_header.index_header_offset;
Yea thats the same way the secondaryMagic was determined in Halo2, but seeing as we now need this magic beforehand in Halo3 to actually calculate the tag_info_offset, it renders your method quite useless.

What people really need to research now is how idents, reflexives and strings work in the meta. What i think so far:

Idents
0 = 4 chars (e.g. bipd)
4 = int32 - 0000 0000
8 = int32 - 0000 0000
12 = int16 - ident

Reflexives
0 - int32 - chunkcount
4 - int32 - translation (-PrimaryMagic)

Strings
0 = int16 - 0000
4 = int16 - strIndex

It'd be great if anyone else could contribute any findings they have on these subjects >_>
Halo 2 Prophet - Skin with ease with the simple 3D point and click interface.
Halo 3 Research Thread - Contribute to the research into Halo 3.
User avatar
xbox7887




Socialist Coagulator Decryptor Advisor
Eureka Commentator Wave Scorched Earth

Posts: 2160
Joined: Mon Dec 27, 2004 6:19 pm
Location: New Lenox, Illinois
Contact:

Post by xbox7887 »

Also keep in mind you're working with a 64-bit architecture so some of the more common datatypes found in h2 may have changed...
Shalted




Eureka Translator

Posts: 565
Joined: Wed Nov 17, 2004 8:41 am
Location: Vancouver, BC This is where people put their modding team because they feel important.
Contact:

Post by Shalted »

Mike, not much has changed except a few pieces of data being compacted into a single variable (Although, expect 64bit floats), anyway the new virtual base for all the meta/all the non raw is:
0xA6000000

Which means the "Primary Magic"(Primary is redundant because I've only found one magic type) Can be calculated as such: Constant - MapHeader->VirtualSegment.

Also something I noticed was the map is organized almost backwards.

Cool application Anthony, maybe it'll be as good as mine soon ;)

Anyway, screw looking at the mapfiles, I'm off to play Halo 3 :D
Awaiting connection...
User avatar
xbox7887




Socialist Coagulator Decryptor Advisor
Eureka Commentator Wave Scorched Earth

Posts: 2160
Joined: Mon Dec 27, 2004 6:19 pm
Location: New Lenox, Illinois
Contact:

Post by xbox7887 »

Shalted wrote:Although, expect 64bit floats
Aka doubles you nub. >_>
Shalted




Eureka Translator

Posts: 565
Joined: Wed Nov 17, 2004 8:41 am
Location: Vancouver, BC This is where people put their modding team because they feel important.
Contact:

Post by Shalted »

Mike, shhhh....
Same thing.
Awaiting connection...
User avatar
darvolt





Posts: 49
Joined: Tue Mar 29, 2005 11:31 am
Location: Munich
Contact:

Post by darvolt »

@Prey: how can I get the size, if sometimes, the previous tag offset is bigger than the next? Sort them? But how?
Locked