GSOC Update: Week 10

My university has finally openned for a new term, so it has been a hective schedule. Nevertheless, I have managed to get in a decent amount of work this week.

Current Problems

The current build for the PPC version is crashing and I suspect it is crashing because of the Windows-only code that is executed by default. Hence, my immediate objective is to section off the Windows-only code. If that still doesn’t work, I suppose I’ll have to find the cause of the crash through the debugger.

A few levels remain to playtest. The problem isn’t that they’re bugging, but that I haven’t figured out yet how to beat them! A number of the puzzles near the end of the game are greatly challenging.

Accomplishments

  1. Fixed the AudioStream Bug
  2. Added support to FileMan for reading MSD files
  3. Added support for compressed game files
  4. Sectioned-off PPC-exclusive code
  5. Converted Platform-specific Constants from enums into variables

In my previous post, I had described a bug with the AudioStream code. The AudioStream was getting deallocated after playing, regardless of whether I created the stream with DisposeAfterUse::YES or DisposeAfterUse::NO. The problem was deceptively simple. The playStream() function has a DisposeAfterUse condition of its own for some reason, which is independent of the DisposeAfterUse condition of the stream that is being played. Moreover, it is set to DisposeAfterUse::YES as a default parameter, so if you’re not paying attention to those, you could end up using it by accident.

This is what I was doing wrong. The deletion was carried out through a callback (an SDL callback in my case) which made it difficult to find when debugging the Main Thread with the debugger. Setting DisposeAfterUse to NO in the playStream function fixed the problem.

Thanks to Eugene(sev) for help with the Windows Demo, adding the Platform code for PPC and improving the rendering pipeline and fade-in code.

Objectives

  1. Complete adding support for the PPC version
  2. Implement syncSoundSettings
  3. Add support for the Linux versions
  4. Ensure that the PPC and Linux demos are working