niotso/Tools/TSOSimulatorClient
Andrew D'Addesio 227617b540 Moved to git
Assembla's decision to remove Trac incited us to ditch them entirely. Further, the repository no longer includes binaries or libraries; these can be downloaded from niotso.org/pub/ and updated with the included update-libraries script.
2012-10-17 03:21:00 -05:00
..
TSOEdithEditor Moved to git 2012-10-17 03:21:00 -05:00
compile.bat iff2html is working and can properly parse STR# chunks. 2012-03-13 00:12:27 -05:00
memory map.txt iff2html is working and can properly parse STR# chunks. 2012-03-13 00:12:27 -05:00
Readme.txt iff2html is working and can properly parse STR# chunks. 2012-03-13 00:12:27 -05:00
TSOSimulatorClient.cpp Moved to git 2012-10-17 03:21:00 -05:00
TSOSimulatorClient.hpp Moved to git 2012-10-17 03:21:00 -05:00

DLLs in The Sims Online (and also SimCity 4 and The Sims 2) use a special
interface, based on Microsoft COM.

These DLLs each export exactly one function:
void * GZDllGetGZCOMDirector(void)

This function creates and sets up a C++ object, with variables and member
functions, and returns a pointer to that object. This is your standard
C++ v-table.

TSOSimulatorClientD.dll is the most important DLL in the game. It implements
the SimAntics virtual machine which executes all the objects in the game.
In our situation, we need to figure out everything it does, because we lack
any information regarding the SimAntics instruction set architecture.
A text dump of this DLL is not nearly enough to find this. The files in the
objectdata/globals folder are not nearly enough. The page on
simtech.sourceforge.net documenting all they know about SimAntics is not
nearly enough. We need to run this DLL in a disassembler and figure out the
meaning of every opcode used in every behavior script of the game.