Gonzo blogging from the Annie Leibovitz of the software development world.

Month: June 2002

Update on placement and progress with IFF Pencil 2.

Hello again 🙂 In the comments at my previous post Gerald had found the list of placement flags. I once made a short note of some of these flags but never wrote down where I got it from… now I know! When you open Behavior.iff and read STR# resource #202, there’s a list of flags. The list is zero-based (in the file, not below!) but you should add one to it.

  1. on floor
  2. on terrain
  3. on water
  4. on surface
  5. on door
  6. on window
  7. on locked tile
  8. unused
  9. on slope
  10. in air
  11. in wall
  12. allow on pool
  13. require pool

OK so these are the flags and their meaning. As for IFF Pencil 2, I’ve finished the decoders and encoders for the SPR# and SPR2 resources. I’ve also finished the UI and all that for the DGRP resources (Drawgroup resources). Currently I’m working on the UI of the SPR# resource and after that I’ll do the SPR2 resource. The SPR# resource will be exported into two files, the pixel data (colors) and a monochrome transparency mask. The SPR2 resource will be exported into three files, the pixel data (colors), the Z-buffer (depth) and the Alpha channel (“impact” of a color). The Alpha channel will also serve as transparency mask, as the value 0 (palette 0, which is black in the export file) represents “no impact”, or that the original pixel color will remain there. The value 255 means that the original pixel color will be replaced. What this means: the value 150 (or anything between 0 and 255) means that the original color (background) and the new color (foreground) will be mixed, resulting in a semi-transparent object. Now the program uses it as a transparency mask by defining all pixels with Alpha value “0” as transparent and the rest as existing. Of course the grey things will be semi-transparent in the game but for the transparency mask it doesn’t matter if it’s semi-transparent or solid.

Hope this short explanation doesn’t raise too many question marks… Greets, Tom.

Changing an object’s placement flags

Some weeks ago someone named Lynn Drescher asked me by mail how to enable an object to be placed on water. After receiving a link to the website of Simophor I downloaded some objects that can be placed on water and started experimenting. As I didn’t remember to have seen something like water-placement in the Object Definition (OBJD) resource, I started the search using Script Station.

It turned out that the “init tree” subroutine is the most important piece in the puzzle. Whenever someone wants to use a certain object, this subroutine is called. It initialises some variables in the object, including some flag fields and placement flags. I compared several of these subroutines and came to some conclusions.

Using primitive 2, the “expression” primitive, the subroutine alters these things. The first parameter equals 42 decimal, the second is the flag index number, the third 2304 decimal (set flag or 0900 hex) or 2560 decimal (clear flag or 0A00 hex) and the fourth equals 1795 decimal. By setting or clearing this flags the properties of the objects are set. It seems that by default all flags are cleared.

For Placement, flag 1 indicates that an object can be placed on the floor and flag 2 that it can be placed on terrain (grass and such). When flag 3 is set the object can be placed on water. Then there are some unknowns. When flag 12 is set that means the object can be placed on a pool and flag 13 means it can only be placed on a pool tile. Of course, only setting flag 13 doesn’t mean you can place it on a pool tile: you need a combination of flags for that.

Unfortunately, I haven’t been able to determine the meaning of the other flags at this moment. It is possible that I find it later, but you’ll notice when I do. Of course any help from your side to determine these flags or the flags from flag fields 1 and 2 are appreciated very much.

Of course you’d like to know how to add these things to your favourite home-made object… what you need is Script Station, to which you can find a download link on the forums of Fusion Creations. You should then locate the “init tree” subroutine. Usually this is also the name of that subroutine. Alternative names are “init common” and such for multi-object IFF files. It goes beyond this document to find the exact subroutine, but usually it isn’t that tough to localize it. When you’ve opened the subroutine in Script Station you need to optimize the code (by pressing “Optimize”) and find the last line where it says “return TRUE” and “return FALSE” or “return ERROR“. Note the line number. Click “add line”. Double-click the new line. Click “Expert Edit”. Change “Function” to 2. Change “parameter 1” to 42 (decimal) in the SECOND edit box (which was “0” before changing). Change “parameter 2” to the flag number. Change “parameter 3” to 0900 (hexadecimal) for setting or 0A00 (hexadecimal) for clearing in the FIRST edit box (which was “0000” before changing). Change “parameter 4” to 1795 (decimal) in the second box. Finally, set “true” to the line number you noted and “false” to “FE”. Click OK to continue. When you press the optimisation button again you should see the new line just above the last line. If all goes right the translation will be something like “My placement Set Flag XX” or “My placement Clear Flags XX” with “XX” being the flag number. Well done, your object’s placement flags are now changed. Don’t forget to press OK some times and save the files manually (Script Station won’t warn you if you forget that).


Career Creator 2.1 complete.

Updated Post

Hello dear visitors,

I’ve updated Career Creator 2 with a number and some new and updated funtionality:

  • The word “substract” has been changed to “subtract”.
  • The Careers file is loaded a bit differently. First the program tries to load ExpansionSharedWork.iff, then GameDataCareers.iff, then GameDataCareers. It doesn’t check what expansion packs are installed, because the program can’t detect future expansion packs anyway.
  • Readonly files are made ReadWrite files on the fly.
  • After adding a chance card, an edit dialog is immediately opened.
  • The previous job requirements are set as the minimum for those of the next one, meaning that if the amount of friends needed for job #3 is 4, then you can’t select 3 as the number of friends required for job #4. Also, the maximum is now 25 friends.
  • By pressing a button you set the current job requirements to those of the previous one, if any.
  • The default file extension for the bitmap files is BMP instead of nothing. That simply means that if you input “foo” as the filename the program adds “.bmp” to form “foo.bmp”.
  • In the job editing dialog, most validation routines have been replaced such that when you enter only a minus sign (-) the program won’t bug you immediately. Of course, this is only the case for those properties that are designed to be negative in some cases.

Credits go to Jonah Bishop (http://www4.ncsu.edu/~jgbishop) for suggesting some of these things.

Well, I just hope you like the new version. Greets,


The swell of activity

Hi guys. Long time no. Just a note to let everyone I haven’t lost another organ or anything. I’ve just been in hibernation mode, working behind the scenes and all that jazz. Things have slowed down at blue central. Tom is still kicking up a storm and that’s a good thing, for me I’ve slowed down to smell the roses and relax a bit. I found daily postings were just getting monotonous and really didn’t contribute anything to the universe and for awhile there really wasn’t anything to say. How many times can I tell you “I’m working on it.”. Well anyways, I still am. There are also some shifts in the tides of darkness here (yes, I’ve been playing a little Warcraft III lately) and they’re lots going on that I can’t reveal just yet but everything will come out in due time. I am spending as much time on blueprint (which is my primary focus right now) as I can but this time is limited so bear with me. If you’re really hurting for something new then stop coming by and bitching about how time flows like cheap molasses here and check back every month or so. It’s like watching paint peel sometimes and I’m sorry about that, but there’s nothing I can do. However complaining about it isn’t going to help anyone. Just to put things in perspective, I just finishing building my barbeque this weekend. It’s been a 5 year journey but boy does it look good. So what if my steak-o-matic took longer than the voyages of the Enterprise. I did it and I’m happy with it. Okay, rant mode off.

The Sims, as ususal, seems to be just churning along. I really haven’t seen anything magical or ground-breaking in it since the first expansion pack. Funny how that works. People still keep pumping out content (and there is a LOT of it out there) and some of the tools are used on a regular basis with the odd new person coming along that hasn’t heard about them yet. I guess things have gone into maintenance mode now and I don’t see this changing with any expansion pack in the future. The only major change on the horizon is The Sims Online that seems to be rearing it’s head up. This is going to change things somewhat as Will (who’s more involved with TSO than The Sims now) has stated in the past that there won’t be any user made objects, at least not at first. Walls, floors, etc and all that will be traded and downloaded on the fly, but objects are a ways off. This makes sense since they can’t accomodate everything up front. So for most of the content here, it’s business as usual even after TSO comes out. When it does hit the shelves (not sure when, check your local game mag for the current prediction) there might be a gap with some tools and we’ll see what we can do about filling it.

I will make it a habit to check in at least every two weeks here. A month is a pretty long time and it does tend to leave people spinning around (there is always the forums). So I’ll see what I can do to post what pieces I’m working on and keeping you guys up to date. I have been playing in other arenas as far as making tools (Dungeon Siege for one since the programmers are extremely open and friendly over there) so my time is split between a few things here and there but there are also some commercial ventures I have to set as a higher priority. So the rumours of my death have been greatly exaggerated. The Sims is still there right? Oh good. Didn’t miss that… see you later!