More Awesome Than You!

The Bowels of Trogdor => The Small Intestines of Trogdor => Topic started by: Lord Darcy on 2008 July 24, 14:47:08



Title: What does "version_1" in OBJD do?
Post by: Lord Darcy on 2008 July 24, 14:47:08
What is the purpose of 0x0000: version_1 - Read Only field in OBJDs?

In base game, the value was set to 139 (decimal) for all base game objects. After Uni, new objects introduced by EPs have the value of 140 (sometimes 141).
If this field is set to 140 or 141 for custom objects or OBJD overrides in base game, the game will crash. No more crash if at least one EP is installed.
I think that OFB updated the value of most base game objects to 140.

So, in order to make OBJD overrides of base game objects to be base game compatible, I need to set it to 139.
But if I use them in post-OFB EPs where the field was already updated to 140, would they break something?


Title: Re: What does "version_1" in OBJD do?
Post by: J. M. Pescado on 2008 July 25, 02:53:02
It's a version-field. 0x8B is the Ye Olde Originale Game Version. 0x8C and 0x8D(?) are for the switched, expansion-checking versions. Using 0x8B is necessary to make an object compatible with the base game. When using 0x8C+, the 0x40(?) product version bitfield must be properly set. Failure to set this may result in the object failing to appear in games that lack the indicated expansion (generally the originating expansion from which the OBJD is cloned). If "part of" the object fails to appear because you didn't update ALL of the OBJDs in an object, the game will wig out. Use of 0x8B is recommended over the newer formats in self-contained objects used in the base game. Also note that older versions of game are incapable of loading other resources that may also be associated with the newer formats, like Pie Menu 0x54s or BHAV 0x8009s. These formats must also be downgraded or your object may fail to function or crash the game.