Difference between revisions of "ZVision"
Jump to navigation
Jump to search
RichieSams (talk | contribs) |
RichieSams (talk | contribs) |
||
Line 1: | Line 1: | ||
{{EngineDescription| | {{EngineDescription| | ||
name= | name=ZVision| | ||
developer=[[User:RichieSams|RichieSams]]| | developer=[[User:RichieSams|RichieSams]]| | ||
companies=[[Activision]]| | companies=[[Activision]]| | ||
Line 8: | Line 8: | ||
}} | }} | ||
The | 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 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 | 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]]. | ||
Line 24: | Line 24: | ||
* Add graceful failure for when .str isn't parsed correctly. | * Add graceful failure for when .str isn't parsed correctly. | ||
==List of TODO's for | ==List of TODO's for ZVision to be playable== | ||
* Fix audio problems in videos | * Fix audio problems in videos | ||
Line 31: | Line 31: | ||
** The current model puts each chunk into a separate AudioStream and then queues the streams | ** The current model puts each chunk into a separate AudioStream and then queues the streams | ||
** This is being worked on by clone2727 | ** This is being worked on by clone2727 | ||
* Finish implementing the rest of the ResultActions. (See [https://github.com/RichieSams/scummvm/blob/zengine/engines/ | * Finish implementing the rest of the ResultActions. (See [https://github.com/RichieSams/scummvm/blob/zengine/engines/zvision/actions.h actions.h]) | ||
** ActionDebug | ** ActionDebug | ||
** ActionDisableVenus | ** ActionDisableVenus | ||
Line 78: | Line 78: | ||
** This would require keeping track of what room you're in so that you can use the correct parent folder | ** 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 | ** 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/ | * 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 | * 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/ | * 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'' | * 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/ | * 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== | ==Current Progress== |
Revision as of 05:11, 23 September 2013
ZVision | ||
---|---|---|
Engine developer | RichieSams | |
Companies that used it | Activision | |
Games that use it | Zork Nemesis, Zork: Grand Inquisitor | |
Date added to ScummVM | Error: Invalid time. | |
First release containing it | N/A |
The ZVision was the engine used by Activision in Zork Nemesis and Zork: Grand Inquisitor.
This engine is being 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.
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 graceful failure for when .str isn't parsed correctly.
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 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
- Determine why gary.scr doesn't load properly
- 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
- Make sure all image rendering is endian safe
- 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 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 console.h)
- Convert pointer initializers to nullptr instead of 0
- Add 'true' UTF-16 support for non-english versions of the game. (See StringManager)