Difference between revisions of "Advanced Engine Features"

Jump to navigation Jump to search
→‎Enhanced load/save support: Reaplace <source> with <syntaxhighlight>
(→‎Enhanced debug/error messages: Zvision now implements the getDebugger API.)
(→‎Enhanced load/save support: Reaplace <source> with <syntaxhighlight>)
(23 intermediate revisions by 6 users not shown)
Line 18: Line 18:


'''Relevant Engine API'''
'''Relevant Engine API'''
<syntax type="C++">
<syntaxhighlight lang="cpp">
virtual void pauseEngineIntern(bool pause);
virtual void pauseEngineIntern(bool pause);
void pauseEngine(bool pause);
void pauseEngine(bool pause);
bool isPaused() const;
bool isPaused() const;
</syntax>
</syntaxhighlight>


'''Implemented by:'''
'''Implemented by:'''
[[AGOS]], [[Draci]], [[Gob]], [[Kyra]], [[Lure]], [[Mohawk]], [[Mortevielle]], [[Parallaction]], [[Pegasus]], [[SAGA]], [[SCI]], [[SCUMM]], [[Sword2]], [[Toon]]
[[AGOS]], [[Draci]], [[Gob]], [[Kyra]], [[Lure]], [[Mohawk]], [[Mortevielle]], [[Parallaction]], [[Pegasus]], [[SAGA]], [[SCI]], [[SCUMM]], [[Sword2]], [[Toon]], [[ZVision]]


'''Not implemented by:'''
'''Not implemented by:'''
[[AGI]], [[Cine]], [[CruisE]], [[Drascula]], [[Groovie]], [[Hugo]], [[Lastexpress]], [[MADE]], [[Queen]], [[Sky]], [[Sword1]], [[Sword25]], [[Tinsel]], [[Touche]], [[Tucker]]
[[AGI]], [[Avalanche]], [[CGE]], [[Cine]], [[Composer]], [[CruisE]], [[Drascula]], [[Dreamweb]], [[Fullpipe]], [[Groovie]], [[Hopkins]], [[Hugo]], [[Lastexpress]], [[MADE]], [[Neverhood]], [[Queen]], [[Sky]], [[Sword1]], [[Sword25]], [[Tinsel]], [[Toltecs]], [[Tony]], [[Touche]], [[TsAGE]], [[Tucker]], [[Wintermute]]


'''Support not necessary:'''  
'''Support not necessary:'''  
Line 41: Line 41:


'''Relevant Engine API'''
'''Relevant Engine API'''
<syntax type="C++"> void quitGame();
<syntaxhighlight lang="cpp">
void quitGame();
bool shouldQuit() const;
bool shouldQuit() const;


kSupportsRTL feature flag</syntax>
kSupportsRTL feature flag
</syntaxhighlight>


'''Implemented by:'''
'''Implemented by:'''
[[AGI]], [[AGOS]], [[Cine]], [[CruisE]], [[Draci]], [[Drascula]], [[Gob]], [[Groovie]], [[Hugo]], [[Kyra]], [[Lastexpress]], [[Lure]], [[MADE]], [[Mohawk]], [[Mortevielle]], [[Parallaction]], [[Pegasus]], [[Queen]], [[SAGA]], [[SCI]], [[SCUMM]], [[Sky]], [[Sword1]], [[Sword2]], [[Sword25]], [[TeenAgent]], [[Toon]], [[Touche]], [[Tucker]]
[[AGI]], [[AGOS]], [[CGE]], [[Cine]], [[Composer]], [[CruisE]], [[Draci]], [[Drascula]], [[Gob]], [[Groovie]], [[Hopkins]], [[Hugo]], [[Kyra]], [[Lastexpress]], [[Lure]], [[MADE]], [[Mohawk]], [[Mortevielle]], [[Neverhood]], [[Parallaction]], [[Pegasus]], [[Queen]], [[SAGA]], [[SCI]], [[SCUMM]], [[Sky]], [[Sword1]], [[Sword2]], [[Sword25]], [[TeenAgent]], [[Toltecs]], [[Tony]], [[Toon]], [[Touche]], [[TsAGE]], [[Tucker]], [[Wintermute]], [[ZVision]]


'''Not implemented by:'''
'''Not implemented by:''' [[Avalanche]], [[Dreamweb]], [[Fullpipe]], [[Tinsel]]
[[Tinsel]]


===Global options dialog support===
===Global options dialog support===
Line 60: Line 61:


'''Relevant Engine API'''
'''Relevant Engine API'''
<syntax type="C++"> virtual void syncSoundSettings();</syntax>
<syntaxhighlight lang="cpp">
virtual void syncSoundSettings();
</syntaxhighlight>


'''Implemented by:'''
'''Implemented by:'''
[[AGOS]], [[CruisE]], [[Draci]], [[Gob]], [[Groovie]], [[Hugo]], [[Kyra]], [[Lure]], [[MADE]], [[Queen]], [[SAGA]], [[SCI]], [[SCUMM]], [[Sword1]], [[Sword2]], [[Touche]], [[Tucker]]
[[AGOS]], [[Cine]], [[CruisE]], [[Draci]], [[Gob]], [[Groovie]], [[Hopkins]], [[Hugo]], [[Kyra]], [[Lastexpress]], [[Lure]], [[MADE]], [[Queen]], [[SAGA]], [[SCI]], [[SCUMM]], [[Sky]], [[Sword1]], [[Sword2]], [[Toltecs]], [[Tony]], [[Touche]], [[TsAGE]], [[ZVision]]


'''Not implemented by:'''
'''Not implemented by:'''
[[Cine]], [[Drascula]], [[Lastexpress]], [[Mohawk]], [[Parallaction]], [[Pegasus]], [[Sky]], [[Sword25]]
[[Avalanche]], [[CGE]], [[Composer]], [[Drascula]], [[Dreamweb]], [[Fullpipe]], [[Mohawk]], [[Neverhood]], [[Parallaction]], [[Pegasus]], [[Sword25]], [[Tucker]], [[Wintermute]]


'''Support not necessary:''' [[AGI]], [[Mortevielle]], [[TeenAgent]], [[Tinsel]], [[Toon]]
'''Support not necessary:''' [[AGI]], [[Mortevielle]], [[TeenAgent]], [[Tinsel]], [[Toon]]
Line 98: Line 101:
'''What is this about?'''<br>
'''What is this about?'''<br>
With this feature, it is possible to build a list of available save slots for a given game target. This can be used by the user to list all saveslots from the command line, as the following example illustrates:
With this feature, it is possible to build a list of available save slots for a given game target. This can be used by the user to list all saveslots from the command line, as the following example illustrates:
<syntax type="Bash">$ ./scummvm --list-saves=monkey2
<syntaxhighlight lang="bash">
$ ./scummvm --list-saves=monkey2
Saves for target 'monkey2':
Saves for target 'monkey2':
   Slot Description                                           
   Slot Description                                           
Line 105: Line 109:
   1    Start
   1    Start
   2    Quicksave 2
   2    Quicksave 2
$</syntax>
$
</syntaxhighlight>
Furthermore, this is used by the load/save dialogs in the Launcher and the GMM to build the list of savestates they show visually to the user.
Furthermore, this is used by the load/save dialogs in the Launcher and the GMM to build the list of savestates they show visually to the user.


Line 118: Line 123:


'''Relevant MetaEngine API'''
'''Relevant MetaEngine API'''
<syntax type="C++"> virtual SaveStateList listSaves(const char *target) const;
<syntaxhighlight lang="cpp">
virtual SaveStateList listSaves(const char *target) const;
virtual int getMaximumSaveSlot() const;
virtual int getMaximumSaveSlot() const;


kSupportsListSaves feature flag</syntax>
kSupportsListSaves feature flag
</syntaxhighlight>


'''Implemented by:'''
'''Implemented by:'''
[[AGI]], [[AGOS]], [[Cine]], [[Draci]], [[Groovie]], [[Hugo]], [[Kyra]], [[Lure]], [[Mohawk]], [[Mortevielle]], [[Parallaction]], [[Pegasus]], [[Queen]], [[SAGA]], [[SCI]], [[SCUMM]], [[Sky]], [[Sword1]], [[Sword2]], [[Sword25]], [[TeenAgent]], [[Tinsel]], [[Toon]], [[Touche]], [[Tucker]]
[[AGI]], [[AGOS]], [[Avalanche]], [[CGE]], [[Cine]], [[CruisE]], [[Draci]], [[Drascula]], [[Dreamweb]], [[Groovie]], [[Hopkins]], [[Hugo]], [[Kyra]], [[Lure]], [[Mohawk]], [[Mortevielle]], [[Neverhood]], [[Parallaction]], [[Pegasus]], [[Queen]], [[SAGA]], [[SCI]], [[SCUMM]], [[Sky]], [[Sword1]], [[Sword2]], [[Sword25]], [[Tinsel]], [[Toltecs]], [[Tony]], [[Toon]], [[Touche]], [[Tucker]], [[Wintermute]], [[ZVision]]


'''Not implemented by:'''
'''Not implemented by:'''
[[CruisE]], [[Drascula]], [[Gob]], [[Lastexpress]], [[MADE]]
[[Composer]], [[Fullpipe]], [[Gob]], [[Lastexpress]], [[MADE]], [[TeenAgent]], [[TsAGE]]


===Loading savestates via command line or Launcher===
===Loading savestates via command line or Launcher===
Line 137: Line 144:


'''Relevant MetaEngine API'''
'''Relevant MetaEngine API'''
<syntax type="C++"> save_slot ConfigMan setting
<syntaxhighlight lang="cpp">
save_slot ConfigMan setting


kSupportsLoadingDuringStartup feature flag</syntax>
kSupportsLoadingDuringStartup feature flag
</syntaxhighlight>


'''Implemented by:'''
'''Implemented by:'''
[[AGI]], [[Cine]], [[Draci]], [[Groovie]], [[Hugo]], [[Kyra]], [[Lure]], [[Mohawk]], [[Mortevielle]], [[Parallaction]], [[Pegasus]], [[Queen]], [[SAGA]], [[SCI]], [[SCUMM]], [[Sky]], [[Sword1]], [[Sword2]], [[TeenAgent]], [[Tinsel]], [[Toon]], [[Touche]]
[[AGI]], [[Avalanche]], [[Cine]], [[CGE]], [[CruisE]], [[Draci]], [[Drascula]], [[Dreamweb]], [[Groovie]], [[Hopkins]], [[Hugo]], [[Kyra]], [[Lure]], [[Mohawk]], [[Mortevielle]], [[Neverhood]], [[Pegasus]], [[Queen]], [[SAGA]], [[SCI]], [[SCUMM]], [[Sky]], [[Sword1]], [[Sword2]], [[TeenAgent]], [[Tinsel]], [[Toltecs]], [[Tony]], [[Toon]], [[Touche]], [[TsAGE]], [[Tucker]], [[Wintermute]], [[ZVision]]


'''Not implemented by:'''
'''Not implemented by:'''
[[AGOS]], [[CruisE]], [[Drascula]], [[Gob]], [[Lastexpress]], [[MADE]], [[Sword25]], [[Tucker]]
[[AGOS]], [[Composer]], [[Fullpipe]], [[Gob]], [[Lastexpress]], [[MADE]], [[Parallaction]], [[Sword25]]


===Deleting savestates via the Launcher and GMM===
===Deleting savestates via the Launcher and GMM===
Line 158: Line 167:


'''Relevant MetaEngine API'''
'''Relevant MetaEngine API'''
<syntax type="C++"> void removeSaveState(const char *target, int slot) const;
<syntaxhighlight lang="cpp">
void removeSaveState(const char *target, int slot) const;


kSupportsDeleteSave feature flag</syntax>
kSupportsDeleteSave feature flag
</syntaxhighlight>


'''Implemented by:'''
'''Implemented by:'''
[[AGI]], [[Cine]], [[Draci]], [[Groovie]], [[Hugo]], [[Kyra]], [[Lure]], [[Mohawk]], [[Mortevielle]], [[Parallaction]], [[Pegasus]], [[Queen]], [[SAGA]], [[SCI]], [[SCUMM]], [[Sky]], [[Sword2]], [[TeenAgent]], [[Tinsel]], [[Toon]], [[Touche]], [[Tucker]]
[[AGI]], [[Avalanche]], [[Cine]], [[CGE]], [[CruisE]], [[Draci]], [[Drascula]], [[Dreamweb]], [[Groovie]], [[Hopkins]], [[Hugo]], [[Kyra]], [[Lure]], [[Mohawk]], [[Neverhood]], [[Parallaction]], [[Pegasus]], [[Queen]], [[SAGA]], [[SCI]], [[SCUMM]], [[Sky]], [[Sword1]], [[Sword2]], [[TeenAgent]], [[Tinsel]], [[Toltecs]], [[Tony]], [[Toon]], [[Touche]], [[TsAGE]], [[Tucker]], [[Wintermute]], [[ZVision]]


'''Not implemented by:'''
'''Not implemented by:'''
[[AGOS]], [[CruisE]], [[Drascula]], [[Gob]], [[Lastexpress]], [[MADE]], [[Sword1]], [[Sword25]]
[[AGOS]], [[Composer]], [[Fullpipe]], [[Gob]], [[Lastexpress]], [[MADE]], [[Mortevielle]], [[Sword25]]


===Savestate metadata support===
===Savestate metadata support===
Line 178: Line 189:


'''Relevant MetaEngine API'''
'''Relevant MetaEngine API'''
<syntax type="C++"> virtual SaveStateDescriptor querySaveMetaInfos(const char *target, int slot) const;
<syntaxhighlight lang="cpp">
virtual SaveStateDescriptor querySaveMetaInfos(const char *target, int slot) const;


kSavesSupportMetaInfo feature flag
kSavesSupportMetaInfo feature flag
kSavesSupportThumbnail feature flag
kSavesSupportThumbnail feature flag
kSavesSupportCreationDate feature flag
kSavesSupportCreationDate feature flag
kSavesSupportPlayTime feature flag</syntax>
kSavesSupportPlayTime feature flag
</syntaxhighlight>


'''Implemented by:'''
'''Implemented by:'''
[[AGI]], [[Draci]], [[Hugo]], [[Kyra]], [[Mortevielle]], [[SAGA]], [[SCI]], [[SCUMM]], [[TeenAgent]], [[Toon]]
[[AGI]], [[Avalanche]], [[CGE]], [[CruisE]], [[Draci]], [[Drascula]], [[Dreamweb]], [[Groovie]], [[Hopkins]], [[Hugo]], [[Kyra]], [[Mortevielle]], [[Neverhood]], [[SAGA]], [[SCI]], [[SCUMM]], [[Sword1]], [[TeenAgent]], [[Toltecs]], [[Tony]], [[Toon]], [[TsAGE]], [[Tucker]], [[Wintermute]], [[ZVision]]


'''Not implemented by:'''
'''Not implemented by:'''
[[AGOS]], [[Cine]], [[CruisE]], [[Drascula]], [[Gob]], [[Groovie]], [[Lastexpress]], [[Lure]], [[Mohawk]], [[MADE]], [[Parallaction]], [[Pegasus]], [[Queen]], [[Sky]], [[Sword1]], [[Sword2]], [[Sword25]], [[Touche]], [[Tinsel]], [[Tucker]]
[[AGOS]], [[Cine]], [[Composer]], [[Fullpipe]], [[Gob]], [[Lastexpress]], [[Lure]], [[Mohawk]], [[MADE]], [[Parallaction]], [[Pegasus]], [[Queen]], [[Sky]], [[Sword2]], [[Sword25]], [[Touche]], [[Tinsel]]


===Loading/Saving during run time===
===Loading/Saving during run time===
Line 204: Line 217:


'''Relevant Engine API'''
'''Relevant Engine API'''
<syntax type="C++"> virtual Common::Error loadGameState(int slot);
<syntaxhighlight lang="cpp">
virtual Common::Error loadGameState(int slot);
virtual bool canLoadGameStateCurrently();
virtual bool canLoadGameStateCurrently();


kSupportsLoadingDuringRuntime feature flag</syntax>
kSupportsLoadingDuringRuntime feature flag
</syntaxhighlight>


:'''Implemented by:''' [[AGI]], [[Cine]], [[Draci]], [[Hugo]], [[Kyra]], [[Mohawk]], [[Mortevielle]], [[Pegasus]], [[SAGA]], [[SCI]], [[SCUMM]], [[Sky]], [[Sword1]], [[Tinsel]], [[TeenAgent]], [[Toon]], [[Touche]], [[Tucker]]
:'''Implemented by:''' [[AGI]], [[Avalanche]], [[Cine]], [[CGE]], [[Draci]], [[Drascula]], [[Dreamweb]], [[Hopkins]], [[Hugo]], [[Kyra]], [[Mohawk]], [[Mortevielle]], [[Neverhood]], [[Pegasus]], [[SAGA]], [[SCI]], [[SCUMM]], [[Sky]], [[Sword1]], [[TeenAgent]], [[Tinsel]], [[Toltecs]], [[Tony]], [[Toon]], [[Touche]], [[TsAGE]], [[Tucker]], [[Wintermute]], [[ZVision]]


:'''Not implemented by:''' [[AGOS]], [[CruisE]], [[Drascula]], [[Gob]], [[Groovie]], [[Lastexpress]], [[Lure]], [[MADE]], [[Parallaction]], [[Queen]], [[Sword2]], [[Sword25]], [[Touche]]
:'''Not implemented by:''' [[AGOS]], [[Composer]], [[CruisE]], [[Fullpipe]], [[Gob]], [[Groovie]], [[Lastexpress]], [[Lure]], [[MADE]], [[Parallaction]], [[Queen]], [[Sword2]], [[Sword25]]


<syntax type="C++"> virtual Common::Error saveGameState(int slot, const Common::String &desc);
<syntaxhighlight lang="cpp">
virtual Common::Error saveGameState(int slot, const Common::String &desc);
virtual bool canSaveGameStateCurrently();
virtual bool canSaveGameStateCurrently();


kSupportsSavingDuringRuntime feature flag</syntax>
kSupportsSavingDuringRuntime feature flag
</syntaxhighlight>


:'''Implemented by:''' [[AGI]], [[Cine]], [[Draci]], [[Hugo]], [[Kyra]], [[Mohawk]], [[Mortevielle]], [[Pegasus]], [[SAGA]], [[SCI]], [[SCUMM]], [[Sky]], [[Sword1]], [[TeenAgent]], [[Toon]], [[Touche]], [[Tucker]]
:'''Implemented by:''' [[AGI]], [[Avalanche]], [[Cine]], [[CGE]], [[Draci]], [[Drascula]], [[Dreamweb]], [[Hopkins]], [[Hugo]], [[Kyra]], [[Mohawk]], [[Mortevielle]], [[Neverhood]], [[Pegasus]], [[SAGA]], [[SCI]], [[SCUMM]], [[Sky]], [[Sword1]], [[TeenAgent]], [[Toltecs]], [[Tony]], [[Toon]], [[Touche]], [[TsAGE]], [[Tucker]], [[Wintermute]], [[ZVision]]


:'''Not implemented by:''' [[AGOS]], [[CruisE]], [[Drascula]], [[Gob]], [[Groovie]], [[Lastexpress]], [[Lure]], [[MADE]], [[Parallaction]], [[Queen]], [[Sword2]], [[Sword25]], [[Touche]], [[Tinsel]]
:'''Not implemented by:''' [[AGOS]], [[Composer]], [[CruisE]], [[Fullpipe]], [[Gob]], [[Groovie]], [[Lastexpress]], [[Lure]], [[MADE]], [[Parallaction]], [[Queen]], [[Sword2]], [[Sword25]], [[Tinsel]]


==Misc==
==Misc==
Line 234: Line 251:


'''Relevant Engine API'''
'''Relevant Engine API'''
<syntax type="C++"> virtual void errorString(const char *buf_input, char *buf_output, int buf_output_size);</syntax>
<syntaxhighlight lang="cpp">
virtual void errorString(const char *buf_input, char *buf_output, int buf_output_size);
</syntaxhighlight>


:'''Implemented by:''' [[SCUMM]]
:'''Implemented by:''' [[SCUMM]]
Line 240: Line 259:
:'''Not implemented by:''' [[AGI]], [[AGOS]], [[Avalanche]], [[Cine]], [[CGE]], [[Composer]], [[CruisE]], [[Draci]], [[Drascula]], [[Dreamweb]], [[Fullpipe]], [[Gob]], [[Groovie]], [[Hopkins]], [[Hugo]], [[Kyra]], [[Lastexpress]], [[Lure]], [[MADE]], [[Mohawk]], [[Mortevielle]], [[Neverhood]], [[Parallaction]], [[Pegasus]], [[Queen]], [[SAGA]], [[SCI]], [[Sky]], [[Sword1]], [[Sword2]], [[Sword25]], [[TeenAgent]], [[Tinsel]], [[Toltecs]], [[Tony]], [[Toon]], [[Touche]], [[TsAGE]], [[Tucker]], [[Wintermute]], [[ZVision]]
:'''Not implemented by:''' [[AGI]], [[AGOS]], [[Avalanche]], [[Cine]], [[CGE]], [[Composer]], [[CruisE]], [[Draci]], [[Drascula]], [[Dreamweb]], [[Fullpipe]], [[Gob]], [[Groovie]], [[Hopkins]], [[Hugo]], [[Kyra]], [[Lastexpress]], [[Lure]], [[MADE]], [[Mohawk]], [[Mortevielle]], [[Neverhood]], [[Parallaction]], [[Pegasus]], [[Queen]], [[SAGA]], [[SCI]], [[Sky]], [[Sword1]], [[Sword2]], [[Sword25]], [[TeenAgent]], [[Tinsel]], [[Toltecs]], [[Tony]], [[Toon]], [[Touche]], [[TsAGE]], [[Tucker]], [[Wintermute]], [[ZVision]]


<syntax type="C++"> virtual GUI::Debugger *getDebugger();</syntax>
<syntaxhighlight lang="cpp">
    virtual GUI::Debugger *getDebugger();
</syntaxhighlight>


:'''Implemented by:''' [[AGI]], [[AGOS]], [[Avalanche]], [[Cine]], [[CGE]], [[Composer]], [[CruisE]], [[Draci]], [[Drascula]], [[Dreamweb]], [[Fullpipe]], [[Gob]], [[Groovie]], [[Hopkins]], [[Hugo]], [[Kyra]], [[Lastexpress]], [[Lure]], [[MADE]], [[Mohawk]], [[Mortevielle]], [[Neverhood]], [[Parallaction]], [[Pegasus]], [[Queen]], [[SAGA]], [[SCI]], [[SCUMM]], [[Sky]], [[Sword1]], [[Sword2]], [[Sword25]], [[TeenAgent]], [[Tinsel]], [[Toltecs]], [[Toon]], [[Tony]], [[Touche]], [[TsAGE]], [[Tucker]], [[Wintermute]], [[ZVision]]
:'''Implemented by:''' [[AGI]], [[AGOS]], [[Avalanche]], [[Cine]], [[CGE]], [[Composer]], [[CruisE]], [[Draci]], [[Drascula]], [[Dreamweb]], [[Fullpipe]], [[Gob]], [[Groovie]], [[Hopkins]], [[Hugo]], [[Kyra]], [[Lastexpress]], [[Lure]], [[MADE]], [[Mohawk]], [[Mortevielle]], [[Neverhood]], [[Parallaction]], [[Pegasus]], [[Queen]], [[SAGA]], [[SCI]], [[SCUMM]], [[Sky]], [[Sword1]], [[Sword2]], [[Sword25]], [[TeenAgent]], [[Tinsel]], [[Toltecs]], [[Toon]], [[Tony]], [[Touche]], [[TsAGE]], [[Tucker]], [[Wintermute]], [[ZVision]]


:'''Not implemented by:'''
:'''Not implemented by:'''
TrustedUser
2,147

edits

Navigation menu