- Site Map >
- Modding and Creation >
- Sims 2 Creation >
- Modding Discussion >
- Research & Development >
- Miscellaneous - Approach to debugging a problem with LizLove's Teen WooHoo
- Site Map >
- Modding and Creation >
- Sims 2 Creation >
- Modding Discussion >
- Research & Development >
- Miscellaneous - Approach to debugging a problem with LizLove's Teen WooHoo
Posts: 20
Thanks: 1 in 1 Posts
Should I just report the problem and do nothing? I'd rather try to figure out what's going on, if that makes sense. I'm a software engineer with many years experience, and I've dabbled from time to time with trying to write Sims 2 hacks, and I wrote a few for Sims 1, so it's not impossible that I might be able to figure out more about what's going on.
But even then, does it make more sense to investigate whether or not teen woohoo might be interacting with some other hack by removing all the other hacks and seeing? (It's late and I'm on my way to bed or I've had tried that one already). Or does it make more sense to make a copy of the waterbed package and start removing BHAVs to see which one might be causing the problem?
Or what? I'm willing to spend some time working on narrowing this problem down, but I'm wondering if someone with tons of experience could make some suggestions about overall approach....
I have SimPE -- and I'm mostly capable of being dangerous with it at this time.
I should add that if I remove All hacks, then driving to community works. And I tried deleting/replacing the car. I tried resetting the car. I tried using a taxi. I don't have but maybe 10 or so actual hacks installed.
---------------
I decided to stay up a bit longer and run the obvious experiment of removing all other hacks. And it started working. So, unless someone has a better idea, I guess it's just a simple binary search tomorrow to figure out what hack is interacting with Teen WooHoo to cause this problem. I should have tried that before I posted.
Thanks
Posts: 3,833
Thanks: 3375 in 18 Posts
Please don't PM me with questions. Post them in the appropriate thread.
Posts: 20
Thanks: 1 in 1 Posts
I don't see how it could matter, but I was trying to make changes to the BHAVs in it, using SimPE, but the first thing I tried was to revert back to the original, straight from the downloaded zip file. Still, it seems suspicious to me that I was mucking with it and that now I'm experiencing troubles with it. This was the first time I'd tried driving to a community lot in weeks, so I have no idea if there was a problem before I started trying to make changes to the BHAVs. But wouldn't reverting back to the original, straight from the downloaded zip file, undo any damage I could have caused?
Posts: 20
Thanks: 1 in 1 Posts
Posts: 3,833
Thanks: 3375 in 18 Posts
Please don't PM me with questions. Post them in the appropriate thread.
Posts: 20
Thanks: 1 in 1 Posts
---------------------
Now down to 51 files, but I have to go back to work now. Sigh.
About half of those 51 files have names something like "character_segment_for_upload_xxxxxxxxxx.sim". Are those legit? I think there were also some "lot_segment_for_upload" files, but I forget their extension.
Anyway, it's gonna be interesting to see which packages are conflicting with Teen WooHoo -- and why!
Posts: 20
Thanks: 1 in 1 Posts
But -- there's still a problem and it's apparently load order related. If I rename Teen WooHoo to start with "__", so that it sorts to the front of the directory listing, then everything works, otherwise not.
So I'm going to consider this thread as handled -- and will open a new one asking about possible information concerning load order dependencies...
Posts: 3,833
Thanks: 3375 in 18 Posts
Please don't PM me with questions. Post them in the appropriate thread.
Posts: 20
Thanks: 1 in 1 Posts
I noticed this morning that I have crammyboys nude packages renamed to start with zCboy, and I vaguely recall having done that because I read somewhere to do that because it *had* to load last if package xxxx was also being used. But I can't remember what "xxxx" was, nor can I find anything mentioning the problem. Sigh.
But I don't think the problem had anything to do with crammyboys stuff. It was still loading last, even while Teen WooHoo was screwing up.
Wouldn't it be luverly to have some code that would scan the download directory and subdirectories, read in the package files -- and show which globals and semi-globals were being redefined and, especially, which ones were being re-redefined, plus, of course, the file names of the packages doing it?
If there's some documentation about how to read a package file, I could probably manage to write this myself...
Posts: 3,833
Thanks: 3375 in 18 Posts
Wouldn't it be luverly to have some code that would scan the download directory and subdirectories, read in the package files -- and show which globals and semi-globals were being redefined and, especially, which ones were being re-redefined, plus, of course, the file names of the packages doing it? If there's some documentation about how to read a package file, I could probably manage to write this myself... |
Please don't PM me with questions. Post them in the appropriate thread.
Posts: 20
Thanks: 1 in 1 Posts
Posts: 20
Thanks: 1 in 1 Posts
With minor exceptions, all of the BHAVs in that opcode range also have a Group ID of 0xFFFFFFFF. But occasionally I run across one with a different Group ID. For example, both Teen WooHoo and Community Aging have a BHAV with Group ID = 0x7F07FBBC, Instance ID (opcode) = ox103A, and a description of "CT- Young Enough For Pregnancy?".
Those don't fit the pattern and so I'm confused. Are they truly locals? Or are things with opcodes in the range of 1000-1FFF only globals if-and-only-if the Group ID = 0xFFFFFFFF? Or does the Group ID of 0x7F07FBBC signify something else entirely that I'm missing?
I *think* I am just a handful of minor details away from having this little program be able to identify BHAV conflicts.
Posts: 3,833
Thanks: 3375 in 18 Posts
Please don't PM me with questions. Post them in the appropriate thread.
Posts: 20
Thanks: 1 in 1 Posts
And, I'd assume, there's a way to trace the Group ID back to the associated object, such as to know from whence it came?
Thank you so much, btw, for your help. I know this little program isn't going to set the Sims Modding world on fire, but it is definitely helping me get my toes wet, plus it will at least be somewhat useful while we await that much nicer plugin that you mentioned.
Posts: 3,833
Thanks: 3375 in 18 Posts
Ah ha! So, if I'm properly understanding this, a BHAV with Group ID = 0x7F07FBBC, Instance ID = 0x103A, will override the *local* BHAV 0x103A for whatever object has Group ID 0x7F07FBBC. Yes? |
And, I'd assume, there's a way to trace the Group ID back to the associated object, such as to know from whence it came? |
Please don't PM me with questions. Post them in the appropriate thread.
Posts: 20
Thanks: 1 in 1 Posts
Posts: 3,833
Thanks: 3375 in 18 Posts
Please don't PM me with questions. Post them in the appropriate thread.
Posts: 333
Thanks: 2 in 2 Posts
Files in the downloads folder are opened in alphabetical order, folders coming before files in the same folder. Once a resource is loaded once, it's not loaded again. |
I would like to chime in on this. What you describe here is something I've long accepted as truth (indeed I was one of the first people asserting this observation as fact), and most of the modding community now accepts the "alphabetical load ordering" theory as fact. However, something recently surfaced during the InTeenimater OFB beta that made me dig a little bit deeper into this and now leads me to believe this is not universally true and is potentially the source of many headaches for many people who may have hundreds - even thousands - of mods in their game.
After careful analysis using a number of file IO tools, I discovered that the game loads package files in the same sequence as the underlying file system sees them. On Windows XP or Windows 2000 running an NTFS file system, files are always indexed alphabetically with subfolders appearing after (not before). In essence it is "breadth-first" traversal of the directory structure and then alphabetical by file. Indeed this is exactly the same order that we have all come to expect with respect to package load ordering. I would say, that this holds for the large majority of Sims 2 players (fortunately!)
However, one of my beta testers experienced a phenomenon that nobody else on the test team could replicate: their InTeenimater flavor paks were being loaded BEFORE the core InTeenimater packages (flavor paks are add-ons/extensions to InTeen that are designed to augment the base feature set and intended to load after the core package files). This is despite the fact that the flavor paks follow alphabetically AFTER the core packages. Naturally, I assumed this would be sufficient. Indeed many authors assume this, as there are a whole host of mods that start with 'z' in their name to ensure late loading.
I wrote a little program (attached), which enumerates the directory structure in the same order that the game "sees" the files. What I observed may surprise you:
With the exception of the one beta tester I mention, everyone (including myself) experienced identical alphabetical ordering:
ME_MindControlMirror.package
InSIMenator (UV) v2.3 DEST Edition.package
InTeenimater_A.package
InTeenimater_B.package
InTeenimater_C.package
InTeenimater_D.package
InTeenimater_E.package
InTeenimater_F.package
InTeenimater_FlavorPak_BackToSchool.package
InTeenimater_FlavorPak_CollegeAdmissions.package
InTeenimater_FlavorPak_NoAgeOfConsent.package
InTeenimater_FlavorPak_NoCommittedRelationships.package
InTeenimater_FlavorPak_NoFailBirthControl.package
InTeenimater_FlavorPak_NoMiscarriage.package
InTeenimater_FlavorPak_ResidentialGraduates.package
InTeenimater_FlavorPak_SameSexPregnancy.package
Not surprisingly, each one of these testers have an NTFS file system running on Windows XP. NTFS is the default file system for all new Windows XP installations.
However, the one beta tester I mentioned, running a FAT32 file system, experienced this ordering:
InSIMenator (UV) v2.3 DEST Edition.package
ME_MindControlMirror.package
InTeenimater_FlavorPak_SameSexPregnancy.package
InTeenimater_FlavorPak_BackToSchool.package
InTeenimater_FlavorPak_CollegeAdmissions.package
InTeenimater_FlavorPak_NoAdultTeens.package
InTeenimater_FlavorPak_NoAgeOfConsent.package
InTeenimater_FlavorPak_NoCommittedRelationships.package
InTeenimater_FlavorPak_NoFailBirthControl.package
InTeenimater_FlavorPak_NoMiscarriage.package
InTeenimater_FlavorPak_ResidentialGraduates.package
InTeenimater_F.package
InTeenimater_A.package
InTeenimater_B.package
InTeenimater_C.package
InTeenimater_D.package
InTeenimater_E.package
Indeed, this is the EXACT sequence in which the files were physically written to the hard disk. As you can see, the files are "almost" alphabetical within their respective groups (the core InTeenimater files are mostly sorted, for instance, with the exception of the F package)...but the flavor paks PRECEDE the core InTeenimater files. As it turns out, InTeenimater_F happens to be the first file in the zip file that I distributed to the beta testers, hence the reason it appears first in this list as well. This user installed Merola's Mind Control mirror AFTER the InSIMenator, placing it 2nd instead of first in this listing.
Only FAT32 systems appear to exhibit this phenomenon. For my InTeenimater users this is not likely a huge issue, since most people will install the flavor paks AFTER the core program. But if someone unpacks them in the opposite order, they will have HUGE problems (jump bugs, crashes, missing menu options, etc.)
As an additional test, I had this person delete the flavor paks and then recopy them back into their Downloads folder and run the utility. This is the order that those files then appeared:
InSIMenator (UV) v2.3 DEST Edition.package
ME_MindControlMirror.package
InTeenimater_F.package
InTeenimater_A.package
InTeenimater_B.package
InTeenimater_C.package
InTeenimater_D.package
InTeenimater_E.package
InTeenimater_FlavorPak_BackToSchool.package
InTeenimater_FlavorPak_CollegeAdmissions.package
InTeenimater_FlavorPak_NoAgeOfConsent.package
InTeenimater_FlavorPak_NoCommittedRelationships.package
InTeenimater_FlavorPak_NoFailBirthControl.package
InTeenimater_FlavorPak_NoMiscarriage.package
InTeenimater_FlavorPak_ResidentialGraduates.package
InTeenimater_FlavorPak_SameSexPregnancy.package
In this configuration, the user no longer experienced crashes or jump bugs, and it was evident that the InTeenimater was functioning normally again.
Placing the flavor paks in a subfolder also proved to be an effective means of ensuring that they loaded after the files in the root, again suggesting that sub folders are processed *after* the files in the current directory.
This news throws an obvious wrinkle into the equation for those of us with inter-dependent mods that require correct load ordering in order to function properly. We should have a care that those users who are running Win98/ME and those upgrading from 98 to XP, are likely to have FAT32 file systems and that we cannot rely on alphabetical package naming to ensure proper load ordering on these systems!
J
modlist98.zip (24.2 KB, 41 downloads) | |
modlist.zip (25.3 KB, 55 downloads) |
-RUSH- -RADIO- -RADIO- -EON- -ARCHIVES-
Simpeople and Me Archive- 11Dots Archive- My Sims World Archive- Adele Archive- Sims 1 Archive
HHG to the G --- More HHG --- Angel Classic Rock --- Be seeing you
Posts: 546
Thanks: 1423 in 10 Posts
(...) A group of 0xFFFFFFFF will be given a randomly-generated, nonconflicting group id when the game loads (these are stored in groups.cache). (...) |
I think that will not given a random generated ID. In fact the 0xFFFFFFFF will be translated as the Name Reference hash ID, if no Name Reference is found in the package, will be translated as a hash based in the name of the package.
anyway, i'm not completely sure, but makes more sense.
Posts: 268
Thanks: 12108 in 175 Posts
Files in the downloads folder are opened in alphabetical order, folders coming before files in the same folder. Once a resource is loaded once, it's not loaded again. |
Just to clarify -- the above means that the first one wins? (At least on NTFS, as Jase points out.) So if I want to make sure certain packages get loaded first, I could put them in a subfolder called "aaa"?
Posts: 44
Thanks: 539 in 8 Posts
I would like to chime in on this. What you describe here is something I've long accepted as truth ... ...which the files were physically written to the hard disk. As you can see, the files are "almost" alphabetical within their respective groups (the core InTeenimater files are mostly sorted, for instance, with the exception of the F package)...but the flavor paks PRECEDE the core InTeenimater files. As it turns out, InTeenimater_F happens to be the first file in the zip file that I distributed to the beta testers, hence the reason it appears first in this list as well. This user installed Merola's Mind Control mirror AFTER the InSIMenator, placing it 2nd instead of first in this listing. Only FAT32 systems appear to exhibit this phenomenon. ... |
Yes that is the way that FAT32 works, FAT32 is an extension of FAT16 (DOS anyone?) FAT32(16) and everyother FAT files system places the files in the order that they were originally written to the disk. If this issue is popping up in WinXP FAT32 then you will see this problem in Windows ME, and 98SE as well. If people are still using those Operating Systems.
As a side note to this Mac OSX users may run into the same issues as the Kernel of the Mac OS is Free BSD and if I remember correctly Linux still uses a form of the FAT file system.
One way to overcome this propblem is to Defrag the FAT32 partition and tell it to put the files in Alphabetical order. If I remember correctly windows defrag will do this automagically.
Sorry, but no I will not do ZIPs.
RARs are universal and smaller and I'm on Dial-up. If you can't download a rar file then find out why and fix your computer.
If you have problems getting complete downloads try Mass Downloader. It saves me plenty of hassle.
Just to clarify -- the above means that the first one wins? (At least on NTFS, as Jase points out.) So if I want to make sure certain packages get loaded first, I could put them in a subfolder called "aaa"? |
Um... I think it's the opposite. The last one 'wins' and any mods that are prefixed with a z will override everything else, in the case of NTFS.
I think when jadax said that the resource doesn't get loaded again, they are considering each package a resource. I could be wrong. :confused: But if it were the opposite, with any resources that get loaded first taking precedence, then it wouldn't make sense for modders who purposefully prefix their mods with a 'z' since those would load last, as per jase's explanation.
And thanks so much jase for analyzing and clarifying this. I'll now have to put a warning for any of my mods that require a specific order. I don't care what other people say, you are more than just awesome, you are fabulous! Kittens be damned!
Ste
PS. I forgot to mention that dizzy already had a tool to check for conflicts between hacks and GUIDs over here. Not to rain on your parade or anything. I'm sure we could all use more/better/fancier tools to do these things. I've been using dizzy's tool for a while now, and it is definitely useful. But I would love to see how your tool would work.
Posts: 3,833
Thanks: 3375 in 18 Posts
Please don't PM me with questions. Post them in the appropriate thread.
Posts: 268
Thanks: 12108 in 175 Posts
PS. I forgot to mention that dizzy already had a tool to check for conflicts between hacks and GUIDs over here. Not to rain on your parade or anything. I'm sure we could all use more/better/fancier tools to do these things. I've been using dizzy's tool for a while now, and it is definitely useful. But I would love to see how your tool would work. |
No, dizzy's tool doesn't check for global BHAV conflicts, it only checks for GUID conflicts. These are very different things. I would ***LOVE*** a global BHAV conflict scanner.
Who Posted
|