Difference between revisions of "ZVision"

From ScummVM :: Wiki
Jump to navigation Jump to search
(AC3 decoding was added a while ago, but is still a bit hacky.)
 
(41 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{EngineDescription|
{{EngineDescription|
         name=Z-engine|
         name=ZVision|
         developer=[[User:RichieSams|RichieSams]]|
         developer=[[User:RichieSams|RichieSams]], [[User:Md5|[md5]]], [[User:MarisaChan|MarisaChan]]|
         companies=[[Activision]]|
         companies=[[Activision]]|
         usedBy=[[Zork Nemesis]], [[Zork: Grand Inquisitor]]|
         usedBy=[[Zork Nemesis]], [[Zork: Grand Inquisitor]]|
         dateAdded=Not Yet|
         dateAdded=October 17, 2013|
         release=N/A|
         release=1.8.0|
}}
}}


The Z-engine was the engine used by [[Activision]] in [[Zork Nemesis]] and [[Zork: Grand Inquisitor]].
==About==
The ZVision was the engine used by [[Activision]] in [[Zork Nemesis]] and [[Zork: Grand Inquisitor]].


This engine is being added by the GSoC student [[User:RichieSams|RichieSams]] to ScummVM as part of the GSoC 2013.  The ScummVM engine uses Marisa Chan's Z-engine re-implementation, which is available from [http://github.com/Marisa-Chan/Zengine http://github.com/Marisa-Chan/Zengine], as a reference.
This engine was added by the GSoC student [[User:RichieSams|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 http://github.com/Marisa-Chan/Zengine], as a reference.


==List of TODO's for Z-Engine to be playable==
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 [[Glk/ZCode|Z-machine]] which is the original Virtual Machine used for the original [[Zork series|Zork]] <b>text</b> adventure games.


* Fix audio problems in videos
==Status==
** This is a problem with Video::VideoDecoder
Both Zork: Nemesis and Zork: Grand Inquisitor are completable
** Essentially, Zork videos require the sound chunks to be read as one continuous stream
 
** The current model puts each chunk into a separate AudioStream and then queues the streams
==Immediate TODO's==
** This is being worked on by clone2727
* Add a dirty rectangling system for RenderManager AlphaEntries so we're not rendering them to the backbuffer every frame
* Finish implementing the rest of the ResultActions. (See [https://github.com/RichieSams/scummvm/blob/zengine/engines/zengine/actions.h actions.h])
 
** ActionDebug
==List of TODO's for ZVision to be playable==
** ActionDisableVenus
** ActionDisplayMessage
** ActionDissolve
** ActionDistort
** ActionFlushMouseEvents
** ActionInventory
** ActionKill
** ActionEnableMenuBar
** ActionPanTrack
** ActionPreferences
** ActionRegion
** ActionRestoreGame
** ActionRotateTo
** ActionSaveGame
** ActionSetVenus
** ActionStop
** ActionSyncSound
** ActionTTYText
** ActionUniverseMusic
* Finish implementing the rest of the Controls
** InputControl
** SaveControl
** SlotControl
** SafeControl
** FistControl
** HotMovieControl
** PaintControl
** TilterControl
* Implement inventory support
* Implement the menu
* Implement subtitles
* Implement saving preferences
** Scroll speed
** etc.


===ZGI specific TODO's===
===ZGI specific TODO's===
* Determine why gary.scr doesn't load properly
(None at the moment)
** This is the first "room". It loads up the environment variables, the opening movie, and then the main menu
* Implement spellbook support


==Other TODO's==
===Nemesis specific TODO's===
* Look into NOT flatting all the files to root
(None at the moment)
** This would require keeping track of what room you're in so that you can use the correct parent folder
** Look at NEMESIS.ZIX and INQUIS.ZIX
* Re-order the if-then statements in scr ResultAction parsing to use the order of highest occurance (See [https://github.com/RichieSams/scummvm/blob/zengine/engines/zengine/scr_file_handling.cpp#L150 scr_file_handling.cpp: Line 150]
* Evaluate all in-engine warnings/debug messages and perhaps move them to higher debug channels (Or ZEngine specific debug channels)
* Clean out unused member functions from the Console class (see [https://github.com/RichieSams/scummvm/blob/zengine/engines/zengine/console.h console.h]
* Convert pointer initializers to ''nullptr'' instead of ''0''


==Current Progress==
==ZGI DVD TODO's==
*[https://github.com/RichieSams/scummvm/tree/zengine Current WIP for Z-engine, on a git fork from ScummVM]
* AC3 audio decoding is a bit hacky, with hard-coded volume adjustments for each video. It would be good if someone could figure out how to do without these.


[[Category:Engines]]
[[Category:Engines]]

Latest revision as of 14:06, 14 July 2020

ZVision
Engine developer RichieSams, [md5], MarisaChan
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 1.8.0

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

Immediate TODO's

  • Add a dirty rectangling system for RenderManager AlphaEntries so we're not rendering them to the backbuffer every frame

List of TODO's for ZVision to be playable

ZGI specific TODO's

(None at the moment)

Nemesis specific TODO's

(None at the moment)

ZGI DVD TODO's

  • AC3 audio decoding is a bit hacky, with hard-coded volume adjustments for each video. It would be good if someone could figure out how to do without these.