Open main menu
ZVision
Engine developer RichieSams
Companies that used it Activision
Games that use it Zork Nemesis, Zork: Grand Inquisitor
Date added to ScummVM 2013-10-17
First release containing it N/A

About

The ZVision was the engine used by Activision in Zork Nemesis and Zork: Grand Inquisitor.

This engine was added by the GSoC student RichieSams to ScummVM as part of the GSoC 2013.

The ScummVM engine uses Marisa Chan's ZVision re-implementation, which is available from http://github.com/Marisa-Chan/Zengine, as a reference.

It should be noted that from a technical viewpoint, this engine has nothing in common with the MADE engine used for Return to Zork. It should also not be confused with the Z-machine which is the original Virtual Machine used for the original Zork text adventure games.

Status

Both Zork: Nemesis and Zork: Grand Inquisitor are completable, with minor bugs and very small glitches

Immediate TODO's

  • Add a dirty rectangling system for RenderManager AlphaEntries so we're not rendering them to the backbuffer every frame
  • Add graceful failure for when .str isn't parsed correctly.
  • Get Courier Prime and FreeSerif added to the packaged fonts, then fall back on them when fonts can't be found

List of TODO's for ZVision to be playable

ZGI specific TODO's

  • Check for the difference between the CD version of ZGI and the DVD version
    • Potentially higher resolution (Window and/or videos)
    • Potentially different video file format
  • Fix display of points - they're not currently shown in death screens
  • Fix the transparency of the Magic Viewer in the inventory screen
  • Allow the inventory to be accessed in the teleportation station screens (to get your map)

Nemesis specific TODO's

  • Fix LeverControl::onMouseMove() - the heuristic there makes it very hard to manipulate the planet levers
  • Allow the screen to be rotated when the mouse cursor is at the left/right black screen bands

Other TODO's

  • Make sure all image rendering is endian safe
  • Evaluate all in-engine warnings/debug messages and perhaps move them to higher debug channels (Or ZVision specific debug channels)
  • Clean out unused member functions from the Console class (See console.h)
  • Convert pointer initializers to nullptr instead of 0
  • Add 'true' UTF-16 support for non-english versions of the game. (See StringManager)