Hi there! You are currently browsing as a guest. Why not create an account? Then you get less ads, can thank creators, post feedback, keep a list of your favourites, and more!
Quick Reply
Search this Thread
The ModFather
retired moderator
Original Poster
#1 Old 5th Jul 2008 at 12:02 PM Last edited by Numenor : 5th Jul 2008 at 12:28 PM.
Default Global "GAME EDITION" borked by Ikea??
While examining an error log created in an "All EP/SP" game (including Ikea), I noticed:
Global Simulator Variables
...
Game Edition = -17


How odd is that? Dec (-17) = binary 11111111111111111111111111101111:
they must have reformatted the Game Edition to a signed word value...
On a further test with a Base+Ikea game, the Game Edition is:
Dec (-32767) = binary 11111111111111111000000000000001, which confirms the assumption.

This may seriously damage some of the custom objects/mods that rely on the Game Edition to work: the standard bit-by-bit test, in most cases, still will work fine; but if we check the Game Edition by absolute value (for example, "G.E. >= literal 8" meaning "game is OFB or newer), the check will fail.

By the way, I DON'T have Apartment Life (of course), but the bit17 is set to 1! I wonder what difference there should be between an "All EP/SP" up to Ikea and one up to Apartment Life...



EDIT:
Excluding IKEA from the game, the Game Edition reverts to the old 2-byte unsigned value.

EDIT AGAIN: Wait! What happened to bit5? Why is it zero? I *do* have Family Fun: isn't bit5 the one related to FFS? (There was a problem in my FFS installation).

I've finally started my Journal. Information only, no questions.

My latest activity: CEP 9.2.0! - AnyGameStarter 2.1.1 (UPD) - Scriptorium v.2.2f - Photo & Plaques hide with walls - Magazine Rack (UPD) - Animated Windows Hack (UPD) - Custom Instrument Hack (UPD) - Drivable Cars Without Nightlife (UPD) - Courtesy Lights (FIX) - Custom Fence-Arches - Painting-TV - Smarter Lights (UPD)


I *DON'T* accept requests, sorry.
Advertisement
Field Researcher
#2 Old 5th Jul 2008 at 1:54 PM
Quote: Originally posted by Numenor
While examining an error log created in an "All EP/SP" game (including Ikea), I noticed:
Global Simulator Variables
...
Game Edition = -17


How odd is that? Dec (-17) = binary 11111111111111111111111111101111:
they must have reformatted the Game Edition to a signed word value...
On a further test with a Base+Ikea game, the Game Edition is:
Dec (-32767) = binary 11111111111111111000000000000001, which confirms the assumption.

This may seriously damage some of the custom objects/mods that rely on the Game Edition to work: the standard bit-by-bit test, in most cases, still will work fine; but if we check the Game Edition by absolute value (for example, "G.E. >= literal 8" meaning "game is OFB or newer), the check will fail.

By the way, I DON'T have Apartment Life (of course), but the bit17 is set to 1! I wonder what difference there should be between an "All EP/SP" up to Ikea and one up to Apartment Life...



EDIT:
Excluding IKEA from the game, the Game Edition reverts to the old 2-byte unsigned value.

EDIT AGAIN: Wait! What happened to bit5? Why is it zero? I *do* have Family Fun: isn't bit5 the one related to FFS? (There was a problem in my FFS installation).


(i guess) i think IKEA is 0x8000, so (i guess) it will become minus value then.

BASE = 2000 (0x7d0)

FLAG

NOT BASE GAME 1 0x1 = 1
UNI 2 0x2 = 2
NL 4 0x4 = 3
OFB 8 0x8 = 4
FFS 16 0x10 = 5
GLS 32 0x20 = 6
PETS 64 0x40 = 7
SSN 128 0x80 = 8
CEL 256 0x100 = 9
H&M 512 0x200 = 0xa
BV 1024 0x400 = 0xb
TS 2048 0x800 = 0xc (what is ts???)
??? 4096 0x1000 = 0xd
FT 8192 0x2000 = 0xe
??? 16384 0x4000 = 0xf

-- from here (i guess) it will become minus value ( > 32767 or something)

IKEA 32768 0x8000 = 0x10
The ModFather
retired moderator
Original Poster
#3 Old 5th Jul 2008 at 2:55 PM
OK, you reply makes me think that the game is capable of correctly use the "Flag Set?" operand over a Game Edition that includes Ikea. But unfortunately the ">" and "<" operands don't work.

Let's take a game with all the 16 flags set (= up to Ikea); I want to test if it is a "BV or newer" game.
If I check one by one the flags from BV to IKEA (bits 11 to 16), using the "Flag Set?" operand, it always returns True. But If I use the expression: "Game Edition >= 0x0400", it returns false, because Game Edition = Decimal (-1)

In your list, above, you write "IKEA 32768" but the game actually converts it into -32768; and converts the Game Edition for a "up to Ikea" game to -1.
I wonder again what decimal number is supposed to be the Game Edition for a game containing everything up to Apartment Life...


PS - For your information, TS = Teen Style stuff; and the last lines of the list are:
??? 4096 0x1000 = 0xd (this is unused, I think: there's a blank space in the EP list in the Registry, too, between SP6 and EP7)
FT 8192 0x2000 = 0xe
K&B 16384 0x4000 = 0xf (Kitchen & Bath)
IKEA -32768 0x8000 = 0x10

I've finally started my Journal. Information only, no questions.

My latest activity: CEP 9.2.0! - AnyGameStarter 2.1.1 (UPD) - Scriptorium v.2.2f - Photo & Plaques hide with walls - Magazine Rack (UPD) - Animated Windows Hack (UPD) - Custom Instrument Hack (UPD) - Drivable Cars Without Nightlife (UPD) - Courtesy Lights (FIX) - Custom Fence-Arches - Painting-TV - Smarter Lights (UPD)


I *DON'T* accept requests, sorry.
Theorist
#4 Old 5th Jul 2008 at 3:11 PM
As far as I know, 0xD is The Sims 2 Store Edition...
Field Researcher
#5 Old 5th Jul 2008 at 3:18 PM Last edited by christianlov : 5th Jul 2008 at 3:29 PM.
Quote: Originally posted by Numenor
OK, you reply makes me think that the game is capable of correctly use the "Flag Set?" operand over a Game Edition that includes Ikea. But unfortunately the ">" and "<" operands don't work.

Let's take a game with all the 16 flags set (= up to Ikea); I want to test if it is a "BV or newer" game.
If I check one by one the flags from BV to IKEA (bits 11 to 16), using the "Flag Set?" operand, it always returns True. But If I use the expression: "Game Edition >= 0x0400", it returns false, because Game Edition = Decimal (-1)

In your list, above, you write "IKEA 32768" but the game actually converts it into -32768; and converts the Game Edition for a "up to Ikea" game to -1.
I wonder again what decimal number is supposed to be the Game Edition for a game containing everything up to Apartment Life...


Well, I cannot understand your post fully,

But from the information provided by you above, I found this,

On a further test with a Base+Ikea game, the Game Edition is:
Dec (-32767) = binary 11111111111111111000000000000001, which confirms the assumption.


And this -32767 is 0x8001, so, then I think it makes sense,
because,

0x1 (not base game) + 0x8000 (IKEA) equals 0x8001, and the game will interpret it as -32767.

And I guess, this game edition flag is originally (since TS2) a signed value. (like most 2 byte values in the game is, like bcon?) So, the game edition flag being minus value, seems just pretty normal to me.

Of course, "Flag Set?" will work, because it will just see if that flag is set.

So, here is what I guess,

game edition = literal 2000 -> BASE
game edition < literal 0 -> IKEA or later expansion installed

Quote: Originally posted by Numenor
PS - For your information, TS = Teen Style stuff; and the last lines of the list are:
??? 4096 0x1000 = 0xd (this is unused, I think: there's a blank space in the EP list in the Registry, too, between SP6 and EP7)
FT 8192 0x2000 = 0xe
K&B 16384 0x4000 = 0xf (Kitchen & Bath)
IKEA -32768 0x8000 = 0x10


Thanks for this
One horse disagreer of the Apocalypse
#6 Old 5th Jul 2008 at 3:34 PM Last edited by Inge Jones : 5th Jul 2008 at 3:40 PM.
Idiots. Why don't they plan ahead? They invariably outgrow their flag fields. People probably get sick of me saying this, but I have often said that we modders should have got together and created a set of community globals that we can all share. For example, a test for game edition. Then it would only have had to be fixed in that one place.

"You can do refraction by raymarching through the depth buffer" (c. Reddeyfish 2017)
The ModFather
retired moderator
Original Poster
#7 Old 5th Jul 2008 at 5:28 PM
Probably each of us has his own (almost identical) "Is EP installed?" BHAV
I include it quite often in my objects, but always as a private resource: I don't like to force the users to download a global mod whenever they want to install a creation of mine. But I understand your point: this require the objects to be updated (but who could have imagined such a change in the basics of the global variables?)

However, back to the topic, I've run more tests in an "All EP/SP" game up to Ikea.

I can check all the single flags correctly, up to flag 0x10 (ikea); the "Flag Set?" over bit 0x11 returns error "Flag reference is out of range".
But if the check is "Game Edition > (any positive number)", it returns false because the Game Edition is Dec -1.

What I understand from all this mess is that the Game Edition is currently a 16-bit value that is somehow wrongly interpreted by the game as a signed 4-byte value. Therefore, we can expect another modification of the Game Edition variable when they release AL. Good move, EAxis...

I've finally started my Journal. Information only, no questions.

My latest activity: CEP 9.2.0! - AnyGameStarter 2.1.1 (UPD) - Scriptorium v.2.2f - Photo & Plaques hide with walls - Magazine Rack (UPD) - Animated Windows Hack (UPD) - Custom Instrument Hack (UPD) - Drivable Cars Without Nightlife (UPD) - Courtesy Lights (FIX) - Custom Fence-Arches - Painting-TV - Smarter Lights (UPD)


I *DON'T* accept requests, sorry.
The ModFather
retired moderator
Original Poster
#8 Old 5th Jul 2008 at 6:01 PM
Quote: Originally posted by treeag
As far as I know, 0xD is The Sims 2 Store Edition...

Oh! So this Store Edition seems to be a real game, not just an installer or a launcher...
EAxis must hate us, I've come to this conclusion. How on earth are we supposed to know the way this "store edition" behaves and manages our creations? Won't they really think that I would BUY ONLINE their "store" game when I already have all the expansion?!

I think I will start putting a BIG announcement over all my creations: WE CAN'T GRANT SUPPORT FOR "STORE EDITION".

I've finally started my Journal. Information only, no questions.

My latest activity: CEP 9.2.0! - AnyGameStarter 2.1.1 (UPD) - Scriptorium v.2.2f - Photo & Plaques hide with walls - Magazine Rack (UPD) - Animated Windows Hack (UPD) - Custom Instrument Hack (UPD) - Drivable Cars Without Nightlife (UPD) - Courtesy Lights (FIX) - Custom Fence-Arches - Painting-TV - Smarter Lights (UPD)


I *DON'T* accept requests, sorry.
One horse disagreer of the Apocalypse
#9 Old 5th Jul 2008 at 6:24 PM
Quote: Originally posted by Numenor
Probably each of us has his own (almost identical) "Is EP installed?" BHAV
I include it quite often in my objects, but always as a private resource: I don't like to force the users to download a global mod whenever they want to install a creation of mine


I wasn't thinking of a global override, I was thinking of global extensions that EA have not used

"You can do refraction by raymarching through the depth buffer" (c. Reddeyfish 2017)
The ModFather
retired moderator
Original Poster
#10 Old 5th Jul 2008 at 9:44 PM
I know, but then you can't include it in each creation of yours: older versions would clash with newer ones. The only solution should be posting a "snippet" somewhere and ask the users to install it separately. Don't you think that some (many) users would be annoyed or scared by that? An innocent object like a magazine rack suddenly needs a separate Global Mod to work... Personally, I would have no problems, but by now we both have come to know what the majority of users thinks

I've finally started my Journal. Information only, no questions.

My latest activity: CEP 9.2.0! - AnyGameStarter 2.1.1 (UPD) - Scriptorium v.2.2f - Photo & Plaques hide with walls - Magazine Rack (UPD) - Animated Windows Hack (UPD) - Custom Instrument Hack (UPD) - Drivable Cars Without Nightlife (UPD) - Courtesy Lights (FIX) - Custom Fence-Arches - Painting-TV - Smarter Lights (UPD)


I *DON'T* accept requests, sorry.
One horse disagreer of the Apocalypse
#11 Old 5th Jul 2008 at 11:31 PM
No I meant an official community library of functions. With someone in charge of administering it. Like you have with your scriptorium - people have to register their stair and wall numbers so there isn't an overlap.

So players and modders would always have the latest global library installed, like they always are meant to have the latest CEP installed.

"You can do refraction by raymarching through the depth buffer" (c. Reddeyfish 2017)
Mad Poster
#12 Old 9th Jul 2008 at 7:26 PM
When the bag they planned in the beginning isn't big enough for the demand and their greed, they just have to sew an extra pocket along side of the bag to increase its capacity rofl ...
Don't ask me, I just code
#13 Old 9th Jul 2008 at 9:01 PM
Quote: Originally posted by Numenor
What I understand from all this mess is that the Game Edition is currently a 16-bit value that is somehow wrongly interpreted by the game as a signed 4-byte value. Therefore, we can expect another modification of the Game Edition variable when they release AL. Good move, EAxis...

Much of the game seems to work on signed two byte values -- when you set the top bit, it's negative. (Sign extension means 0xFFFF8001 and 0x8001 have the same value in decimal.) I doubt they'll change the definition of a two byte field to a four byte field... They'll just add "Game Edition Flags #2" for us to find...

I still haven't worked out what to do for SimPE with SE .
One horse disagreer of the Apocalypse
#14 Old 18th Jul 2008 at 11:59 AM
It looks to me like there is still one flag free, presumably for Apartments.

I don't have definitions for the OBJD "Valid EP flags". Does anyone else? Are they assumed to simply match bit for bit the global game edition flags? And how do they work - if a flag is set there, is it a "must have this game" indicator, or is it an excludor (ie if you have this game but it's not flagged in the OBJD you can't use this object)?

"You can do refraction by raymarching through the depth buffer" (c. Reddeyfish 2017)
Fat Obstreperous Jerk
#15 Old 18th Jul 2008 at 12:57 PM
All the bits are taken. Another expansion is going to present us with quite a quandary:

0x01 - Base
0x02 - Uni
0x03 - NL
0x04 - OFB
0x05 - FFS
0x06 - GLS
0x07 - Pets
0x08 - Seasons
0x09 - Celebrations
0x0A - HM
0x0B - BV
0x0C - TSS
0x0D - Store
0x0E - FT
0x0F - K&B
0x10 - IKEA

All 16 bits are accounted for. IKEA as the 16th bit causes a sign rollover which will break the > tests. Now, in addition to removing bits 9, A, C, and F, you must also remove bit 10 (and then set bit 5 or 6 (will produce a proper > test, and there's no reason you would ever test for a stuffpack specifically), as stuffpacks use OFB-grade engine without OFB itself) before performing a > version test.

The next expansion? That's when the fun starts, because there's no more bits! All in-game variables are int16 (not uint16, hence the rollover by IKEA), and there's no 17th bit to use.

If they create a new field entirely, this will be untestable, because if you attempt to test for a field that doesn't exist in previous game versions, the game will barf. Most likely to specifically test for Apartments(?), you're going to have to resort to a trick used to fingerprint Stories games: Set-To-Nexting by GUID for an Apartments specific global controller.

Grant me the serenity to accept the things I cannot change, the courage to change the things I cannot accept, and the wisdom to hide the bodies of those I had to kill because they pissed me off.
One horse disagreer of the Apocalypse
#16 Old 18th Jul 2008 at 1:19 PM Last edited by Inge Jones : 18th Jul 2008 at 1:32 PM.
K&B! I missed that out when I was doing the labels.

Oh - I would be surprised if even EA made it a crashable offence to test a flag higher than 0x10, because they will be using tests like that themselves to stop people using objects from Apartments in games that don't have Apartments. Therefore earlier games have to be able to cope with that test.

"You can do refraction by raymarching through the depth buffer" (c. Reddeyfish 2017)
Fat Obstreperous Jerk
#17 Old 18th Jul 2008 at 4:08 PM
Quote: Originally posted by Inge Jones
Oh - I would be surprised if even EA made it a crashable offence to test a flag higher than 0x10, because they will be using tests like that themselves to stop people using objects from Apartments in games that don't have Apartments.
It already *IS* a crashable offense to test a flag higher than 0x10. This is because int16 doesn't *HAVE* a flag higher than 0x10, and you get an immediate error for your efforts. EAxis maliciousness doesn't even enter the picture, they're as constrained by the int16 datatype as anyone else is.

Quote: Originally posted by Inge Jones
Therefore earlier games have to be able to cope with that test.
Earlier games don't have to cope with the test because they'd have no Apartments code in them to test for. If this is truly the LAST expansion, there would be no need to test for such a thing. This, of course, means anyone trying to develop reverse-compatible Apartment versions of code have to find some other means of identifying the lack of Apartment code and skip over the inapplicable code chunks (because functionalities in those blocks of code simply do not exist).

Grant me the serenity to accept the things I cannot change, the courage to change the things I cannot accept, and the wisdom to hide the bodies of those I had to kill because they pissed me off.
One horse disagreer of the Apocalypse
#18 Old 18th Jul 2008 at 4:21 PM
Ok concede your first point. But there will be another field flags 2 or something.

Second point I still disagree, because the entire purpose of testing for EPs is so that games which *don't* have that EP will refuse to load/run the object. The apartments test is superfluous in an apartments game.

"You can do refraction by raymarching through the depth buffer" (c. Reddeyfish 2017)
Mad Poster
#19 Old 19th Jul 2008 at 1:53 PM
Although I don't understand parts of this (though i do get the flag part) it actually sounds like they planned ahead, but hadn't counted on the sims 3. From what i can tell, sims 3 was supposed to be released much sooner than it's going to be now. I heard it had MAJOR problems in the beta version, and they basically had to go back and redo the main game structure. So it sounds to me like apartments was a "oh crap, we don't have a sims 3 to release, and we don't have another EP! Quick guys, get on another EP, and fast!" moment. Obviously they have to have something to sell fairly often, otherwise they have no income to make another game with and they go bankrupt. So this sounds to me like apartments is a backup plan to the sims 3 being released this fall.

And what of another EP after apartment life? I'm assuming there will be one since the sims 3 isn't planned to come out until summer 2009. I bet though that like inge said, there'll be a field flags 2, and they'll have to rewire the entire game to give it that extra field, making anyone who has apartment life completely isolated from the rest of the people who don't.

"When life gives you lemons, see the lemons, feels the lemons, BE THE LEMONS!"

Take a look-see, hmm...? Go on, click them:
The Super Mario Project, Nintendorks Island-Celebrating 2 Years Online!
One horse disagreer of the Apocalypse
#20 Old 19th Jul 2008 at 2:56 PM
Though flag 1 is still free, since it does not mean Basegame.

"You can do refraction by raymarching through the depth buffer" (c. Reddeyfish 2017)
Mad Poster
#21 Old 20th Jul 2008 at 1:59 PM
hmmm, I guess that leaves them one out, but just one....

"When life gives you lemons, see the lemons, feels the lemons, BE THE LEMONS!"

Take a look-see, hmm...? Go on, click them:
The Super Mario Project, Nintendorks Island-Celebrating 2 Years Online!
Theorist
#22 Old 31st Aug 2008 at 2:30 PM
So now that AL is out, how do you check if AL installed or not? Do you have to use Set-To-Next like Pescado said?
One horse disagreer of the Apocalypse
#23 Old 31st Aug 2008 at 3:20 PM
There is a new field in SimulatorGlobal (0X3B) which appears to have flag 15 set in my game, but I am not sure when that was added; this is the first time I have thought of testing it. If anyone does not have AL and feels like checking this flag (you just use a test object to put out a dialog with that value in it) then that might yield useful results.

"You can do refraction by raymarching through the depth buffer" (c. Reddeyfish 2017)
Fat Obstreperous Jerk
#24 Old 31st Aug 2008 at 4:45 PM
In an AL-equipped game, flag 1 will be set in Global 0x3B.

However, 0x3B does not exist in all editions of the game. It is not known which edition it first appears in, but it is not universal. It definitely did not exist as of a 2006 error log. Therefore, testing for 0x3B is unsafe and you cannot perform this test until you have verified that you ARE in a version which has it, and that it does not contain junk in those versions.

My present solution in test BHAVs is to scan for the existence of an object believed to be universal on all lots of AL, "Controller - Secret Networking", including disabled objects. If this object is present, you must be in AL, as this object exists on all lots of all types in AL, does not self-destruct, and does not exist in previous versions. As AL is the last expansion, timeframe not permitting another expansion before TS3 comes out, ending the reign of TS2, this is the last substantive test. Some of the remaining 15 bits may be used to flog out stuffpacks, and it is known that they are making at least one such pack, but as stuffpacks are irrelevant codewise, there is no need to test for such a thing. The only way I can see another real expansion coming is if EAxis does the unprecedented-in-gaming and actually continues to produce TS2 materials after TS3, or if TS3 is such a big fat fail that TS2 is not killed by it (and EAxis then does the aforementioned).

For all realistic purposes, though, this is the end of the line. It's been a long and wild ride. A new journey into the unknown awaits, and not all of us will be along for the ride, it seems.

Grant me the serenity to accept the things I cannot change, the courage to change the things I cannot accept, and the wisdom to hide the bodies of those I had to kill because they pissed me off.
One horse disagreer of the Apocalypse
#25 Old 31st Aug 2008 at 5:10 PM
TwoJeffs reckons AL is flag 1 in 0x3A, but according to the GLUA labels, 3A is ambient environment. 3B was the only new field for this EP. And it's my flag 15 set not flag 1! (my 0x3B is value 16384 decimal)

"You can do refraction by raymarching through the depth buffer" (c. Reddeyfish 2017)
Page 1 of 2
Back to top