mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-16 14:50:17 +00:00
FULLPIPE: Implement map saving and save obfuscation
This commit is contained in:
parent
c42dfbc496
commit
b413d01113
@ -673,11 +673,14 @@ void GameLoader::writeSavegame(Scene *sc, const char *fname) {
|
||||
}
|
||||
}
|
||||
|
||||
//header.encSize = GameLoader_encryptSavegame((GameLoader *)header.unkField, (int)&cmemfile);
|
||||
//CFile::Write((int)&cfile, (int)&header, header.saveSize);
|
||||
header.encSize = stream.size();
|
||||
|
||||
//if (_savegameCallback)
|
||||
// _savegameCallback(saveFile, 1);
|
||||
// Now obfuscate the data
|
||||
for (uint i = 0; i < header.encSize; i++)
|
||||
stream.getData()[i] += i & 0x7f;
|
||||
|
||||
if (_savegameCallback)
|
||||
_savegameCallback(archive, true);
|
||||
|
||||
// Now dump it into save file
|
||||
Common::OutSaveFile *saveFile = g_system->getSavefileManager()->openForSaving(fname);
|
||||
|
@ -112,7 +112,7 @@ class GameLoader : public CObject {
|
||||
Sc2Array _sc2array;
|
||||
void *_sceneSwitcher;
|
||||
bool (*_preloadCallback)(PreloadItem &pre, int flag);
|
||||
void *_savegameCallback;
|
||||
void (*_savegameCallback)(MfcArchive *archive, bool mode);
|
||||
int16 _field_F8;
|
||||
int16 _field_FA;
|
||||
PreloadItems _preloadItems;
|
||||
|
@ -37,6 +37,15 @@
|
||||
|
||||
namespace Fullpipe {
|
||||
|
||||
void gameLoaderSavegameCallback(MfcArchive *archive, bool mode) {
|
||||
if (mode)
|
||||
for (int i = 0; i < 200; i++)
|
||||
archive->writeUint32LE(g_fp->_mapTable[i]);
|
||||
else
|
||||
for (int i = 0; i < 200; i++)
|
||||
g_fp->_mapTable[i] = archive->readUint32LE();
|
||||
}
|
||||
|
||||
bool FullpipeEngine::loadGam(const char *fname, int scene) {
|
||||
_gameLoader = new GameLoader();
|
||||
|
||||
@ -60,7 +69,7 @@ bool FullpipeEngine::loadGam(const char *fname, int scene) {
|
||||
|
||||
// _sceneSwitcher = sceneSwitcher; // substituted with direct call
|
||||
_gameLoader->_preloadCallback = preloadCallback;
|
||||
// _savegameCallback = gameLoaderSavegameCallback; // TODO
|
||||
_gameLoader->_savegameCallback = gameLoaderSavegameCallback;
|
||||
|
||||
_aniMan = accessScene(SC_COMMON)->getAniMan();
|
||||
_scene2 = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user