Miscellany - nsgomez/gzcom-dll GitHub Wiki

This page is intended for miscellaneous bits of information that don't currently fit in anywhere else.

Gonzo-Rizzo framework

The prefixes GZ and RZ in game code come from the names Gonzo and Rizzo, characters from The Muppets who are frequently paired together. Likewise, in Maxis code, GZ-prefixed code appears to deal mostly with core implementation details of the framework and application (e.g. IGZFrameWork and IGZApp), while RZ-prefixed code is associated more with utility classes like RZString and RZVariant.

Working beyond the game framework

DLLs are nothing more than C++ libraries that must contain a certain few interfaces in order to work with the game. That said, it should be noted that DLLs can do work beyond the limitations of the game's API sandbox, so to speak. Any C++ library can be used so long as they don't interfere with the game's API declarations, and can call into operating system functions as they please.

Mac ports

There are two versions of SimCity 4 for Mac OS X: the Aspyr port and the digital distribution version.

The Aspyr port was built to run on PowerPC Macs and is no longer functional on modern Macs. When running on Intel macs via Rosetta, a good deal of functionality would break, resulting in frequent crashes to desktop and graphics corruption. However, since this version was released with debug symbols in the binary, it's useful for seeing how the game works internally, and for figuring out vtables and method declarations for interfaces. Still, unlike Windows versions, it would appear that the Aspyr port disabled loading of external libraries like .so files (analogous to DLLs).

The digital distribution version was released on Origin, Steam, and the Mac App Store. This version is little more than a Wine wrapper around the Windows version. As such, it should be possible to place DLLs in the plugins folder and have them execute properly (depending on their complexity and dependencies), though this hasn't been confirmed.