More Awesome Than You!

The Bowels of Trogdor => The Small Intestines of Trogdor => Topic started by: twojeffs on 2007 September 05, 05:50:34



Title: Hackdiff SeaP2 --> BV
Post by: twojeffs on 2007 September 05, 05:50:34
Hackdiff output for Seasons P2 to Bon Voyage objects.package files. Huzzah.


Title: Re: Hackdiff SeaP2 --> BV
Post by: dizzy on 2007 September 05, 21:04:44
Huzzah! No fridge or flamingo changes.  ;D

BedGlobals is still a hopelessly kludged mess, though. What on earth were they thinking when they "designed" beds?


Title: Re: Hackdiff SeaP2 --> BV
Post by: Inge on 2007 September 06, 08:17:54
It's probably no coincidence that they keep changing the code of the two very things that most hackers have to make huge hacks for :)   Doors and beds were just not made right in the first place.


Title: Re: Hackdiff SeaP2 --> BV
Post by: Fat D on 2007 September 08, 07:05:52
With doors, there is the problem that each EP needs new handling.
Take the locking system in OfB, the pet routines in Pets and the Outerwear change in Seasons.


Title: Re: Hackdiff SeaP2 --> BV
Post by: syberspunk on 2007 September 10, 02:10:25
Just curious, is the proper way to test for this EP as follows:

14000B00000806070000000000000000

[prim 0x0002] Expression (Global 0x0014 (Game Edition) Flag Set? flag# Literal 0x000B)

I just wanted to make sure if the flags are right.  I think seasons is 8, CS! is 9, and H&MŽ is 10, right?  So BV should be 11?


Ste


Title: Re: Hackdiff SeaP2 --> BV
Post by: Inge on 2007 September 10, 08:31:57
Quote from Numenor:
Quote
Yes, the correct procedure to check if a particular EP is installed is checking if the Game Edition is different than dec. 2000 (hex 0x07D0): if it's 2000, then the base game only is installed (no EP).

If the Game Edition is not 2000, then you proceed checking the various flags (using the "Flag Set?" operator):

Flag 1 (unused: it should be the base game)
Flag 2 = UNI
Flag 3 = NL
Flag 4 = OFB
Flag 5 = FFS
Flag 6 = GLS
Flag 7 = PETS
Flag 8 = SSN
Flag 9 = CEL
Flag 10 = H&M
Flag 11 = BV (tested)


Title: Re: Hackdiff SeaP2 --> BV
Post by: J. M. Pescado on 2007 September 11, 13:09:46
Celebrations and H&M threw a few monkey wrenches into the process. Previously, one could determine "game engine state" by checking to see if the value was not-2000 and > than the relevant power-of-2 produced by setting an engine flag, but the Celebrations and H&M both use OFB engine despite having bits crater than Pets and Seasons. These bits then have to be unset to determine engine version, if what you want is engine version, and not specifically the expansion pack.

The use of bit-1 "base game" without the use of any other bits is used to detect installation in Life Stories, as a true "base game only" would have it set to 2000 (0x7D0).


Title: Re: Hackdiff SeaP2 --> BV
Post by: dizzy on 2007 September 11, 21:52:32
Honestly? >?

A true Klingon would mask with "and" and test rather than >.  ;D


Title: Re: Hackdiff SeaP2 --> BV
Post by: J. M. Pescado on 2007 September 12, 01:26:23
Honestly? >?

A true Klingon would mask with "and" and test rather than >.  ;D
You can't do that in SimAntics without creating a new variable to do it in, and it ultimately wouldn't work any better. What would you mask off with AND? The only way I can see that working is if you AND all the bits including and past the engine version you want to test, then see if the result is nonzero, but this does not work any better and requires the use of a second variable in SimAntics, something that ideally we wanted to avoid. There is nothing in SimAntics that lets you do something like (A & B) != 0, SimAntics only has Flag Set, which is basically (A & B) != 0, but B can only be a single bit, and &=, which is again, not what we wish to do, as you cannot permanently overwrite that attribute without breaking something. To do otherwise would require that we first assign it to a temp value which we could mongle like that, but the entire point is that we want to avoid attributes and variables.


Title: Re: Hackdiff SeaP2 --> BV
Post by: dizzy on 2007 September 12, 05:57:06
You have plenty of variables if you use a new tree to create them. There's more than enough stack, so why not use it?

Granted, simantics makes it a little more difficult and error-prone than it should but it does that with ANYTHING you throw at it.