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.)
 
(29 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{EngineDescription|
{{EngineDescription|
         name=ZVision|
         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|
}}
}}


==About==
The ZVision was the engine used by [[Activision]] in [[Zork Nemesis]] and [[Zork: Grand Inquisitor]].
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.
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.
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.


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 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 [http://en.wikipedia.org/wiki/Z-machine Z-machine] which is the original Virtual Machine used for the original Zork <b>text</b> adventure games.
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.
 
==Status==
Both Zork: Nemesis and Zork: Grand Inquisitor are completable


==Immediate TODO's==
==Immediate TODO's==
* Finish InputControl implementation
* Implement SaveControl
* Test the SaveManager against gjse.scr (save room) and gjre.scr (restore room)
* Add a dirty rectangling system for RenderManager AlphaEntries so we're not rendering them to the backbuffer every frame
* 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
* Figure out why animations aren't working any more


==List of TODO's for ZVision to be playable==
==List of TODO's for ZVision to be playable==
* Fix audio problems in videos
** This is a problem with Video::VideoDecoder
** 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
** This is being worked on by clone2727
* Finish implementing the rest of the ResultActions. (See [https://github.com/RichieSams/scummvm/blob/zengine/engines/zvision/actions.h actions.h])
** ActionDebug
** 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
* Add a different resolution for ZGI


==Other TODO's==
===Nemesis specific TODO's===
* Make sure all image rendering is endian safe
(None at the moment)
* Look into NOT flatting all the files to root
** 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/zvision/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 ZVision specific debug channels)
* Clean out unused member functions from the Console class (See [https://github.com/RichieSams/scummvm/blob/zengine/engines/zvision/console.h console.h])
* Convert pointer initializers to ''nullptr'' instead of ''0''
* Add 'true' UTF-16 support for non-english versions of the game. (See [https://github.com/RichieSams/scummvm/blob/zengine/engines/zvision/string_manager.cpp#L214 StringManager])


==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.