It's a stack-based VM (a stack machine), but it's not a simple one. It's a typed stack, as it's built of an array PVariable* which is a base class with a bunch of subclasses. So you get polymorphism with your stack.
Writing a script to edit your debugger's config files to mass-install breakpoints by the hundreds isn't normal
but on Foone it is
So I think I understand the basics of how the resource system works, and it's slightly wild.
So, step one, it just freads() the data in the datafiles into their destination structures.
Now, this isn't going to work, for a lot of reasons. pointers, mainly.
but the pointers!
so, step two: it runs a per-type "fixup" function that takes the utterly corrupted fread()ed data in the structs and unmangles it back into the correct object setup
this is not the most elegant or simple or flexible deserialization system I've ever seen.
but it's certainly not the worst
SoundSystem::createSoundEvent(SoundSystem *,char *,int ,Point3 *,Point3 *,Point3 *)
CW's debug: the SoundEventHandle* parameter is named "seh"!
@foone I miss /usr/games instead of ~/.local/share/steam/steamapps &c.
(Yes, I know, the BSDs still use /usr/games for the terminal games they've always had)

@foone define what the OS is
under linux it's a regular library or executable in userspace