diff options
Diffstat (limited to 'engines/scumm/scumm_v4.h')
-rw-r--r-- | engines/scumm/scumm_v4.h | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/engines/scumm/scumm_v4.h b/engines/scumm/scumm_v4.h index 6e0326ed17..be3f6cb47e 100644 --- a/engines/scumm/scumm_v4.h +++ b/engines/scumm/scumm_v4.h @@ -34,6 +34,21 @@ namespace Scumm { * Engine for version 4 SCUMM games; GF_SMALL_HEADER is always set for these. */ class ScummEngine_v4 : public ScummEngine_v5 { + friend class ScummEngine_v5; +public: + + /** + * Prepared savegame used by the orginal save/load dialog. + * Must be valid as long as the savescreen is active. As we are not + * notified when the savescreen is closed, memory is only freed on a game + * reset, at the destruction of the engine or when the original save/load + * dialog is entered the next time. + */ + Common::SeekableReadStream *_savePreparedSavegame; + + void prepareSavegame(); + bool savePreparedSavegame(int slot, char *desc); + public: ScummEngine_v4(OSystem *syst, const DetectorResult &dr); @@ -42,6 +57,8 @@ public: protected: virtual void setupOpcodes(); + virtual void scummLoop_handleSaveLoad(); + virtual void readResTypeList(int id); virtual void readIndexFile(); virtual void loadCharset(int no); @@ -51,11 +68,19 @@ protected: virtual void resetRoomObject(ObjectData *od, const byte *room, const byte *searchptr = NULL); + void saveVars(); + void loadVars(); + void saveIQPoints(); + void loadIQPoints(byte *ptr, int size); + void updateIQPoints(); + /* Version 4 script opcodes */ void o4_ifState(); void o4_ifNotState(); void o4_oldRoomEffect(); void o4_pickupObject(); + void o4_saveLoadGame(); + void o4_saveLoadVars(); }; |