GSOC Update: Week 6

So, I spent most of this implementing Pushing, unstubbing Bots-NPC code and implementing the Save System. Here is a gist of the accomplishments. However, loading the savefiles directly from the command line doesn’t work right now.


  1. Added all the Bots code, all the Callback Functions and most of the NPC code
  2. Added Extendable Bridges, along with the useTarget function for Use interactions
  3. Implemented Pushing
  4. Added stubbed Sound and Menu system
  5. Added Save/Load system with saveGameState and loadGameState functions

Also, sev added the code for skipping certain quests and loading Game Levels from the command line. Along with the Save system, this should make testing specific parts of the game much easier.

Save System

While the Save system was implemented through the conventional ScummVM method, it still took a fair bit of trial and error to get it working.

The biggest problem I had was how to save the different structs and function pointers. The original saved the different structs directly, without thinking about the endianess of the data member. To remedy this problem, I had to use the ScummVM read and write methods and greatly split the original code.

Since the structs were being saved directly, the pointers and function pointers were being written as well, which would have been useless upon loading the save. Hence, separate code needed to be added to cache the structs and functions those pointers pointed to.


  1. Implement Menu System
  2. Implement the Fade Functions
  3. Implement the Snow Functions
  4. Implement the Progress Bar