Sims Legacy Collection โ€“ IFF Hacking

IFF Hacking

Create your own gameplay mods and object hacks from scratch

On this page
๐Ÿ“„

What Is an IFF File?

A container holding every piece of an object in one file

Every object in The Sims 1 – from a chair to a whole career – is a single .iff file. The file is a container that stores many smaller pieces called resources. The game reads whichever resources it needs at the moment: the sprites when it has to draw the object, the behaviour scripts when a Sim interacts with it, the strings when the catalogue needs to show its name.

When you IFF hack, you are editing specific resources inside an object's IFF file. You do not rewrite the whole file – you go into the one resource that controls the thing you want to change, edit that, and save.

The IFF format has not changed between the original Sims 1 (including Hot Date through Makin’ Magic) and the Sims Legacy Collection. The resource types, BHAV opcodes, SimAntics primitives, and tool workflow are all the same. Every technique on these pages should work in the original Sims 1 too, and IFF hacks built for the original game should load in Legacy without changes. Most of the reference material on IFF structure – Woobsha’s SimAntics charts, Simania’s object hacking guide, the TheSimsOpenTechDoc – predates Legacy and still applies.

โ„น๏ธ Not just objects. IFF files are used for more than furniture. Characters (Sims) are IFF files. Careers are IFF files. Some UI data lives in IFF files. The format and the resources inside are the same across all of them – which is why the same tools work on all of them.

The resources you will encounter

Different objects carry different resources. A simple decoration like the Pink Flamingo has very few; a complex interactive object like the computer or the foosball table has many. Below are the ones you meet most often when modding.

SPR2 – Sprites
The actual images of the object on the lot, at every camera rotation and zoom level. This is what TMog exports and imports when you retexture. Beginners rarely touch SPR2 directly in IFF Pencil – retexturing goes through TMog instead.
BMP_ – Catalogue & Speech Bubbles
Small images used outside the lot view: the Buy Mode catalogue thumbnail (ID 2000) and the speech-bubble images (IDs 4000 and 6000). TMog does not update these automatically – you edit them in IFF Pencil 2 after a retexture.
BCON – Tunable Constants
Numeric values that control how the object behaves. Skill gain rate, motive impact, price, timing. Changing BCON values is the easiest kind of IFF edit – no code involved, just numbers.
STR# – String Tables
Text data used by various parts of the object: animation names (IDs 129 a2o and 130 c2o), dialog lines (ID 301), and anything else that is text. The individual strings are numbered inside the table.
CTSS – Catalogue Text
The object's name and description as they appear in the Buy Mode catalogue. Structurally the same as STR#. Usually ID 2000. This is what TMog edits when you use its Edit Object dialog.
TTAs – Pie Menu Labels
The text labels shown on each pie menu option (Sit, Study Cooking, Watch TV, etc.). Structurally also a STR#-like chunk. Paired one-to-one with TTAB interaction entries.
TTAB – Tree Table (Pie Menu)
The pie menu itself: which options the object offers, which BHAV runs when each is chosen, which BHAV checks if the option should appear, and how attractive the option is to autonomous Sims for each motive.
BHAV – Behaviour Scripts
The logic that actually runs when interactions happen. Each BHAV is a tree of simple instructions. Some BHAVs run when a Sim clicks on the object, some run continuously in the background (the Main loop), some run once when the object is placed (Init). Explained in detail in the next section.
OBJD – Object Definition
The master record for the object. Price, catalogue category, the object's unique GUID, and pointers telling the game which BHAV is the Main loop, which TTAB is the pie menu, which SLOT controls Sim positioning, and so on. Multi-tile objects have one OBJD per tile plus a master OBJD.
OBJf – Object Functions
Pointers to the BHAVs that run automatically without a Sim clicking the object – Main (the idle heartbeat), Init (placement), Load (lot loaded from save). You rarely edit OBJf directly; editing the BHAV it points to is what matters.
PALT – Colour Palette
The 256-colour palette shared by the object's sprites. TMog manages this automatically during retexture export and import. You almost never touch PALT by hand.
DGRP – Draw Groups
Tells the game which sprite frame to display for each combination of rotation and zoom. Also TMog's job; very rare for a modder to open this.
โ„น๏ธ Example – the Maxis bookcase: opening a Maxis bookcase in IFF Pencil 2 shows 7 BCON groups (named Side, Skills, Tuning - Time, Tuning - School, Tuning - Motives, Tuning - Skills, Tuning - Room Impact), multiple BHAVs including main, init common, Read a Book, Study for School, and their test BHAVs, plus TTAB entries for each interaction and STR# resources for the animation names and dialog. This is a typical mid-complexity object.

For a full list of resource types and the fields inside each one, see the File Reference – Inside an IFF.

IFF hacking means opening an object's IFF file, going into the resource that controls what you want to change, editing it, and saving. What you edit depends on what you want to change – numbers in BCON, text in STR# or CTSS, pie menu entries in TTAB, or actual behaviour logic in BHAV.
๐Ÿงฐ

Tools

All free โ€“ from various community sources

โš ๏ธ Always clone first. Use Transmogrifier to create a copy of any object before editing it. Never modify original game files directly – you could corrupt your game.
โš ๏ธ Always close the game before editing mod files. Changing files while the game has them loaded can corrupt your save.
ToolWhat It DoesLevelDownload
Transmogrifier (TMog)Clones any game object as a new .iff โ€“ always start every mod here๐ŸŸข BeginnerSims Depot โ†—
IFF Pencil 2Full .iff editor โ€“ sprites, BHAV scripts and all other resources๐ŸŸก IntermediateGitHub โ†—
Constant ContraptionEdit numeric values like price, skill gain rate, motive impact๐ŸŸข BeginnerGitHub โ†—
Career Creator 3Specialised editor for creating new career tracks๐ŸŸข BeginnerGitHub โ†—
Strings ScavengerEdit text labels โ€“ object names and interaction menu text๐ŸŸข BeginnerGitHub โ†—
FARxExtract individual .iff files from .FAR container bundles for editing๐ŸŸก IntermediateGitHub โ†—
Simpose / SimposiumCreate custom Sim poses and animation sequences๐Ÿ”ด AdvancedAwesome Expression โ†—
๐ŸŒณ

How BHAV Trees Work

The logic system every interaction is built from

A BHAV (pronounced "bee-hav", short for behaviour) is a small program that the game runs when something happens – a Sim sits in a chair, a clock ticks, an object is placed, a child reads a book. Every interactive object carries at least one BHAV. Most carry dozens.

You do not need to know how to write BHAVs to benefit from this page. Being able to read one is enough for many useful mods. The purpose of this section is to explain the structure so you can open a BHAV in IFF Pencil 2 and understand what you are looking at, rather than seeing a wall of numbers.

What the word "tree" means here

In ordinary programming, code runs top to bottom. A BHAV is different – it is shaped like a flowchart. Each instruction in the BHAV has two possible outcomes: it either succeeds (True) or fails (False). Each outcome points to a different next instruction, or to an end. Following the chain of instructions from the start creates a branching structure – a tree – which is where the name comes from.

โ„น๏ธ Mental model: imagine a choose-your-own-adventure book. Each page asks a question or does something. Depending on the outcome, you turn to a specific different page. Some pages are endings (True = success, False = failure). A BHAV is exactly that, with the game as the reader.

What each instruction is

Each instruction inside a BHAV is called a primitive. Primitives are built into the game engine – you cannot invent new ones. Each primitive does one small thing: check a motive level, play an animation, change a BCON value, queue a different BHAV to run next, show a thought bubble, and so on. The set of primitives is fixed; a BHAV is a specific sequence of them wired together.

You will see primitives referred to by short names in community tutorials: Idle, Expression, Change Motive, Set Motive, Animate Sim, Push Interaction, and many more. There are roughly a hundred of them. You do not need to memorise them – you look up the ones you encounter when you encounter them.

The anatomy of a BHAV

Every BHAV resource has three kinds of information:

  • A name (shown in IFF Pencil 2 as the BHAV's title, e.g. Read a Book or main)
  • A numeric ID (e.g. 4096, 4110) – this is how other BHAVs and the TTAB refer to it
  • A list of instructions – each with its primitive, its parameters, and the numbers of the next instructions on True and False
โ„น๏ธ Where the tree starts and ends: the tree always starts at instruction number 0 (the first one in the list). Instructions normally point forward to another instruction number. Two special "next" values are reserved: 0xFD (often shown as 253 or Return True) and 0xFE (254 or Return False). When the tree hits one of these, it ends and reports success or failure to whatever called it.

How BHAVs get called

A BHAV does not run on its own. Something has to call it. These are the four ways a BHAV gets triggered:

The Main loop
Every object has a BHAV designated as its Main (typically BHAV ID 4096 in Maxis objects). The game runs this continuously in the background while the object exists on the lot. The Maxis bookcase's Main BHAV handles clean-up animation, graphic state changes, and similar routine housework.
Init
Runs once when the object is placed, or when a saved lot loads with this object already on it. Sets up any initial state the object needs.
A TTAB entry
When a Sim picks an option from the object's pie menu, the TTAB says which BHAV to run for that interaction. On the Maxis bookcase, picking “Read a Book” runs BHAV Read a Book, picking “Study for School” runs Study for School, and so on.
Another BHAV
BHAVs can call other BHAVs as sub-routines. An interaction BHAV often calls smaller helper BHAVs for parts of the action (get the book, read it, put it back). Maxis objects use this heavily for code sharing.

Why interactions come in pairs

Most interactions you see listed in a TTAB come in pairs: an action BHAV and a test BHAV (also called a check tree or guardian). Maxis follows a naming convention: Read a Book and Read a Book TEST, Study Cooking and Study Cooking TEST.

  • The test BHAV runs first. It decides whether this interaction should even appear on the pie menu for this Sim right now. If it returns True, the option shows up. If it returns False, the option is hidden.
  • The action BHAV runs when the Sim actually picks the option. It performs the action and its return value tells the game whether the interaction finished successfully.

So, for example, the Read a Book TEST on the bookcase returns False for toddlers (they cannot read), which is why toddlers do not see "Read a Book" in the pie menu. Same mechanism hides "Study Cooking" from Sims who already have maximum Cooking skill.

Reading a BHAV in IFF Pencil 2

You do not need to be able to write the BHAV from scratch – just follow what is there.

Open the IFF in IFF Pencil 2

Right-click the .exe and run as administrator with Windows XP SP3 compatibility mode, if on Windows 10/11. File → Open your cloned object.

Find the BHAV list

In the resource type list on the left, click BHAV to expand it. You will see every BHAV the object carries, listed by ID and name.

Identify the one you want

The names are usually descriptive. main is the idle loop. Names like Read a Book or Study Cooking are interaction BHAVs. Names ending in TEST are their check trees. Names starting with init run on placement. For the Maxis bookcase, you will also see helper BHAVs with names like get book, put book, store original points.

Open one and read the instructions top to bottom

Double-click a BHAV. IFF Pencil shows the list of numbered instructions. Each instruction shows its primitive name, its parameters, and the True and False targets (the next instruction numbers, or a Return code). You can usually follow the logic just by reading down the list in order and paying attention to the True/False targets.

โš ๏ธ When something does not make sense: BHAVs frequently call other BHAVs and reference global routines from semi-global files (like ChairGlobals.iff). If a BHAV seems to disappear into a call you cannot follow, it is probably jumping into shared code. This is normal. The Woobsha DIY Workshop and the Sims College Archive (both on the Resources list below) have worked examples that walk through specific BHAV trees step by step.
โ„น๏ธ Editing a BHAV vs adding one: most community-shared IFF hacks edit existing BHAVs in small ways – changing a condition, adjusting a value, redirecting a True/False target. Writing a whole new BHAV from scratch is much harder and is not covered here. What you can usefully do as a beginner: copy an existing BHAV, tweak a few instructions, and test. That is how most community hacks started.
๐Ÿšฆ

Two Paths From Here

Pick the level of edit you want to make

Editing an IFF can be as simple as changing a number in a BCON or as involved as writing a new BHAV tree. The hands-on guides split into two pages based on how much of the logic you need to touch:

โœ๏ธ Simple Edits
Change values, text, and object properties without writing any behaviour logic. Covers BCON (skill gain rate, motive impact, timing), CTSS / TTAs / STR# (catalogue name, pie menu labels, dialog), and OBJD (price, catalogue category, community flag).
Tools: Constant Contraption, Strings Scavenger, IFF Pencil 2
Best for: first mods, personal tweaks, making CC fit your game.
→ Simple Edits Guide
๐ŸŽ›๏ธ Advanced Edits
Change what an object actually does. Covers adding new pie menu interactions, editing autonomy motive advertising, and creating custom careers with Career Creator 3. Involves TTAB, TTAs, and BHAV coordination.
Tools: IFF Pencil 2 (TTAB and BHAV editors), Career Creator 3
Best for: new object behaviour, custom careers, serious interaction work.
→ Advanced Edits Guide
โ„น๏ธ Which should I start with? Simple Edits. Even if your eventual goal is adding a new interaction or writing a BHAV, the clone-open-save workflow is the same on both pages. Doing one small BCON or text edit first confirms your tools are set up correctly before you add tree-logic complexity on top.
๐Ÿ”„

Cloning vs. FAR Override

Two ways to deploy a mod – both are used on the sub-pages

Before any edit, you have to decide how the modified object will reach the game. There are two approaches, and they produce different in-game results:

๐Ÿงฌ Clone with TMog – keeps both versions
Cloning creates a completely new object with its own GUID. The original Maxis object stays untouched. Both the original and your modified clone appear in the Buy Mode catalogue side by side. This is the standard approach for retextures and most object mods, and it is what both sub-pages use as their default workflow.
๐Ÿ“ฆ FAR override – replaces the original
Base game objects live inside FAR archive files in GameData\Objects\. If you extract an IFF from a FAR (using FARx), edit it, and place the edited file as a loose .iff in the same folder as the FAR, the game loads your loose file instead of the archived version. There is only one version of the object in-game – the Maxis one is replaced. To undo the change, delete the loose file and the original comes back from the archive automatically.
โ„น๏ธ When to use which: clone for new CC you want to add alongside Maxis content. FAR override for changing how an existing Maxis object behaves for every Sim on every lot, without creating a second variant. Custom careers always use FAR override (the career IFF is loaded from a fixed location and cannot be cloned).
๐Ÿ“š

Further Resources

Community documentation, tutorials, and the tools the guide builds on

The Sims 1 modding community has built a deep set of resources over the past two decades. Nothing on this guide page is a substitute for working through one of the structured courses below, especially for BHAV writing.

COURSE Sims College Archive – Hacking Lessons
An archived copy of the original SimsCollege.com online hacking course. Two structured courses: Entry Level (motives, moods, BCON modification, sounds and animations) and Intermediate Level (variable types, global calls, skills, graphics resources, randomised events). The most complete structured introduction to BHAV scripting that still exists.
Open Course Archive โ†—
Woobsha's DIY Workshop
Written, step-by-step tutorials on specific hacks: prices, interactions, skill gain, animations, autonomy tuning. Reading a tutorial on the kind of edit you want to make is often faster than building the knowledge up from first principles.
View Tutorials โ†—
Sims1Tools on GitHub
The maintained source repository for IFF Pencil 2, FARx, Career Creator 3, Constant Contraption, and related tools. Releases are here, along with issue tracking and occasional updates. The Feraligatr installer bundles most of these automatically.
View on GitHub โ†—
Simblr.cc Community
Currently the most active Sims 1 modding community, particularly for Legacy Collection content. Post questions, share work in progress, find others working on similar hacks.
Visit Simblr.cc โ†—
Corylea's Subreddit Post: How to Get Started Hacking Sims 1 Objects
A beginner-focused walkthrough on the r/sims1 subreddit covering the first steps of IFF hacking – good as a second opinion alongside this guide.
Read on Reddit โ†—
Awesome Expression – Animation Tutorial
Advanced guide to creating custom Sim animations using IFF Pencil 2 and Simpose. Outside the scope of this page but essential if you want animations that are not just reuses of Maxis ones.
Read Tutorial โ†—
Sims 1 Must-Have Tools Directory
A community-maintained catalogue of every known Sims 1 modding tool, with download locations. Useful for finding specialised tools not covered on this guide's Tools page.
View Directory โ†—
File Reference – Inside an IFF
The technical card for each resource type – field layouts, known IDs, and verified data from real Maxis IFFs. Useful when a field label in a tool does not match what you expected.
File Reference โ†—