scummvm/scummvm — pull request #395 by RichieSams (2013-09-17 02:46:43+00:00)
Title: Add ZEngine to master

ZEngine is the engine used to run the games Zork Nemesis and Zork Grand Inquisitor.

The changes listed below implement about 80% of the games. The current TODO can be found [here] (http://wiki.scummvm.org/index.php/Z-engine)

Most of the code is just ZEngine code. However there is one change to AVI decoding, one addition to Graphics::Surface, and Truemotion1 decoding is re-enabled

1. The AVI decoder changes allow child classes to override the Audio decoder used within videos. This is needed since the audio is ZEngine AVI files use a custom format. It was modeled off of OSytem::copyRectToScreen(). Internally, I use it for copying pixels to the backbuffer.
2. I added a convenience function to Graphics::Surface, copyRectToSurface(), that copies a subrect of a bitmap onto the internal buffer of the surface
3. Truemotion1 support was disabled if SCI was not enabled. I commented out the #ifdef's so Truemotion1 is always enabled. If needed, we can change this to just enabled for SCI and ZEngine

GSoC is coming to a close, but I would still like to finish the engine. However, I feel it would be great to continue work in-tree, to get that many more eyes on the code. Over the next week I plan on completing more documentation and cleaning up any errors/code complications you guys bring up.