Difference between revisions of "Advanced Engine Features"

Jump to navigation Jump to search
→‎Loading/Saving during run time: Implemented in supernova engine
(→‎Loading/Saving during run time: drascula now supports this feature)
(→‎Loading/Saving during run time: Implemented in supernova engine)
(12 intermediate revisions by 3 users not shown)
Line 18: Line 18:


'''Relevant Engine API'''
'''Relevant Engine API'''
<source lang="cpp">
<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;
</source>
</syntaxhighlight>


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


'''Not implemented by:'''
'''Not implemented by:'''
Line 41: Line 41:


'''Relevant Engine API'''
'''Relevant Engine API'''
<source lang="cpp">
<syntaxhighlight lang="cpp">
void quitGame();
void quitGame();
bool shouldQuit() const;
bool shouldQuit() const;


kSupportsRTL feature flag
kSupportsRTL feature flag
</source>
</syntaxhighlight>


'''Implemented by:'''
'''Implemented by:'''
[[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]], [[Wintermute]], [[ZVision]]
[[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]], [[Supernova]], [[Sword1]], [[Sword2]], [[Sword25]], [[TeenAgent]], [[Toltecs]], [[Tony]], [[Toon]], [[Touche]], [[TsAGE]], [[Tucker]], [[Wintermute]], [[ZVision]]


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


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


'''Relevant Engine API'''
'''Relevant Engine API'''
<source lang="cpp">
<syntaxhighlight lang="cpp">
virtual void syncSoundSettings();
virtual void syncSoundSettings();
</source>
</syntaxhighlight>


'''Implemented by:'''
'''Implemented by:'''
Line 101: 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:
<source type="sh">
<syntaxhighlight lang="bash">
$ ./scummvm --list-saves=monkey2
$ ./scummvm --list-saves --game=monkey2
Saves for target 'monkey2':
Saves for target 'monkey2':
   Slot Description                                           
   Slot Description                                           
Line 110: Line 110:
   2    Quicksave 2
   2    Quicksave 2
$
$
</source>
</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 123: Line 123:


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


kSupportsListSaves feature flag
kSupportsListSaves feature flag
</source>
</syntaxhighlight>


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


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


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


'''Relevant MetaEngine API'''
'''Relevant MetaEngine API'''
<source lang="cpp">
<syntaxhighlight lang="cpp">
save_slot ConfigMan setting
save_slot ConfigMan setting


kSupportsLoadingDuringStartup feature flag
kSupportsLoadingDuringStartup feature flag
</source>
</syntaxhighlight>


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


'''Not implemented by:'''
'''Not implemented by:'''
Line 167: Line 167:


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


kSupportsDeleteSave feature flag
kSupportsDeleteSave feature flag
</source>
</syntaxhighlight>


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


'''Not implemented by:'''
'''Not implemented by:'''
Line 189: Line 189:


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


Line 196: Line 196:
kSavesSupportCreationDate feature flag
kSavesSupportCreationDate feature flag
kSavesSupportPlayTime feature flag
kSavesSupportPlayTime feature flag
</source>
</syntaxhighlight>


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


'''Not implemented by:'''
'''Not implemented by:'''
[[AGOS]], [[Cine]], [[Composer]], [[Fullpipe]], [[Gob]], [[Lastexpress]], [[Lure]], [[Mohawk]], [[MADE]], [[Parallaction]], [[Pegasus]], [[Queen]], [[Sky]], [[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 217: Line 217:


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


kSupportsLoadingDuringRuntime feature flag
kSupportsLoadingDuringRuntime feature flag
</source>
</syntaxhighlight>


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


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


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


kSupportsSavingDuringRuntime feature flag
kSupportsSavingDuringRuntime feature flag
</source>
</syntaxhighlight>


:'''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]]
:'''Implemented by:''' [[AGI]], [[Avalanche]], [[Cine]], [[CGE]], [[Draci]], [[Drascula]], [[Dreamweb]], [[Hopkins]], [[Hugo]], [[Kyra]], [[Mohawk]], [[Mortevielle]], [[Neverhood]], [[Pegasus]], [[SAGA]], [[SCI]], [[SCUMM]], [[Sky]], [[Supernova]], [[Sword1]], [[TeenAgent]], [[Toltecs]], [[Tony]], [[Toon]], [[Touche]], [[TsAGE]], [[Tucker]], [[Wintermute]], [[ZVision]]


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


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


:'''Implemented by:''' [[SCUMM]]
:'''Implemented by:''' [[SCUMM]]
Line 259: 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]]


<source lang="cpp">
<syntaxhighlight lang="cpp">
virtual GUI::Debugger *getDebugger();
    virtual GUI::Debugger *getDebugger();
</source>
</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