[Scummvm-git-logs] scummvm master -> b032b6ebb6312cfb7944b6eab9999fd3d24404bb
dreammaster
dreammaster at scummvm.org
Thu Dec 21 03:49:41 CET 2017
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
b032b6ebb6 XEEN: Starting to do archive access more like the original
Commit: b032b6ebb6312cfb7944b6eab9999fd3d24404bb
https://github.com/scummvm/scummvm/commit/b032b6ebb6312cfb7944b6eab9999fd3d24404bb
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2017-12-20T21:47:16-05:00
Commit Message:
XEEN: Starting to do archive access more like the original
Previously the game wasn't paying much attention to the access of
dark.cc vs xeen.cc, which was causing problems when trying to
travel to Dark Side. This is the beginnings of a refactoring
to more closely work like the original does
Changed paths:
engines/xeen/debugger.cpp
engines/xeen/dialogs_quests.cpp
engines/xeen/files.cpp
engines/xeen/files.h
engines/xeen/map.cpp
engines/xeen/map.h
engines/xeen/music.cpp
engines/xeen/music.h
engines/xeen/resources.cpp
engines/xeen/saves.cpp
engines/xeen/sprites.cpp
engines/xeen/sprites.h
engines/xeen/worldofxeen/clouds_cutscenes.cpp
engines/xeen/xeen.cpp
diff --git a/engines/xeen/debugger.cpp b/engines/xeen/debugger.cpp
index 25eab2b..ee96d5c 100644
--- a/engines/xeen/debugger.cpp
+++ b/engines/xeen/debugger.cpp
@@ -93,8 +93,6 @@ bool Debugger::cmdDump(int argc, const char **argv) {
} else {
if (argc == 2)
f.open(argv[1]);
- else
- f.open(argv[1], (ArchiveType)strToInt(argv[2]));
if (f.isOpen()) {
Common::DumpFile df;
diff --git a/engines/xeen/dialogs_quests.cpp b/engines/xeen/dialogs_quests.cpp
index 6667bf5..6e337aa 100644
--- a/engines/xeen/dialogs_quests.cpp
+++ b/engines/xeen/dialogs_quests.cpp
@@ -245,7 +245,7 @@ void Quests::addButtons() {
}
void Quests::loadQuestNotes() {
- File f("qnotes.bin", _vm->getGameID() == GType_Clouds ? GAME_ARCHIVE : ALTSIDE_ARCHIVE);
+ File f("qnotes.bin");
while (f.pos() < f.size())
_questNotes.push_back(f.readString());
f.close();
diff --git a/engines/xeen/files.cpp b/engines/xeen/files.cpp
index 06dd3d1..b62a0d8 100644
--- a/engines/xeen/files.cpp
+++ b/engines/xeen/files.cpp
@@ -26,6 +26,7 @@
#include "common/textconsole.h"
#include "xeen/xeen.h"
#include "xeen/files.h"
+#include "xeen/saves.h"
namespace Xeen {
@@ -120,7 +121,7 @@ int BaseCCArchive::listMembers(Common::ArchiveMemberList &list) const {
CCArchive::CCArchive(const Common::String &filename, bool encoded):
BaseCCArchive(), _filename(filename), _encoded(encoded) {
- File f(filename);
+ File f(filename, SearchMan);
loadIndex(&f);
}
@@ -128,7 +129,7 @@ CCArchive::CCArchive(const Common::String &filename, const Common::String &prefi
bool encoded): BaseCCArchive(), _filename(filename),
_prefix(prefix), _encoded(encoded) {
_prefix.toLowercase();
- File f(filename);
+ File f(filename, SearchMan);
loadIndex(&f);
}
@@ -183,71 +184,67 @@ Common::SeekableReadStream *CCArchive::createReadStreamForMember(const Common::S
/*------------------------------------------------------------------------*/
-CCArchive *FileManager::_archives[3];
-
FileManager::FileManager(XeenEngine *vm) {
Common::File f;
int sideNum = 0;
- File::_currentArchive = ANY_ARCHIVE;
_isDarkCc = vm->getGameID() == GType_DarkSide;
- _archives[0] = _archives[1] = _archives[2] = nullptr;
-
- if (vm->getGameID() != GType_DarkSide) {
- _archives[0] = new CCArchive("xeen.cc", "xeen", true);
- SearchMan.add("xeen", _archives[0]);
- sideNum = 1;
+
+ File::_xeenCc = (vm->getGameID() == GType_DarkSide) ? nullptr :
+ new CCArchive("xeen.cc", "xeen", true);
+ File::_darkCc = (vm->getGameID() == GType_Clouds) ? nullptr :
+ new CCArchive("dark.cc", "dark", true);
+ if (Common::File::exists("intro.cc")) {
+ CCArchive *introCc = new CCArchive("intro.cc", "intro", true);
+ SearchMan.add("intro", introCc);
}
- if (vm->getGameID() == GType_DarkSide || vm->getGameID() == GType_WorldOfXeen) {
- _archives[sideNum] = new CCArchive("dark.cc", "dark", true);
- SearchMan.add("dark", _archives[sideNum]);
- }
+ File::_currentArchive = vm->getGameID() == GType_DarkSide ?
+ File::_darkCc : File::_xeenCc;
+ assert(File::_currentArchive);
+}
- if (f.exists("intro.cc")) {
- _archives[2] = new CCArchive("intro.cc", "intro", true);
- SearchMan.add("intro", _archives[2]);
- }
+FileManager::~FileManager() {
+ SearchMan.remove("intro");
+ delete File::_xeenCc;
+ delete File::_darkCc;
}
-void FileManager::setGameCc(bool isDarkCc) {
- _isDarkCc = isDarkCc;
- File::_currentArchive = isDarkCc ? ALTSIDE_ARCHIVE : GAME_ARCHIVE;
+void FileManager::setGameCc(int ccMode) {
+ if (g_vm->getGameID() != GType_WorldOfXeen)
+ ccMode = 1;
+
+ File::setCurrentArchive(ccMode);
+ _isDarkCc = ccMode != 0;
}
/*------------------------------------------------------------------------*/
-ArchiveType File::_currentArchive;
+CCArchive *File::_currentArchive;
+CCArchive *File::_xeenCc;
+CCArchive *File::_darkCc;
File::File(const Common::String &filename) {
File::open(filename);
}
-File::File(const Common::String &filename, ArchiveType archiveType) {
- File::open(filename, archiveType);
-}
-
File::File(const Common::String &filename, Common::Archive &archive) {
File::open(filename, archive);
}
-bool File::open(const Common::String &filename) {
- return File::open(filename, _currentArchive);
+File::File(const Common::String &filename, int ccMode) {
+ File::open(filename, ccMode);
}
-bool File::open(const Common::String &filename, ArchiveType archiveType) {
- if (archiveType == ANY_ARCHIVE) {
- Common::File::open(filename);
- } else {
- CCArchive &archive = *FileManager::_archives[archiveType];
- if (!Common::File::open(filename, archive))
- // If not in the designated archive, try opening from any archive,
- // or as a standalone file in the filesystem
- Common::File::open(filename);
+bool File::open(const Common::String &filename) {
+ if (!g_vm->_saves || !Common::File::open(filename, *g_vm->_saves)) {
+ if (!Common::File::open(filename, *_currentArchive)) {
+ // Could not find in current archive, so try intro.cc or in folder
+ if (!Common::File::open(filename))
+ error("Could not open file - %s", filename.c_str());
+ }
}
- if (!isOpen())
- error("Could not open file - %s", filename.c_str());
return true;
}
@@ -257,6 +254,34 @@ bool File::open(const Common::String &filename, Common::Archive &archive) {
return true;
}
+bool File::open(const Common::String &filename, int ccMode) {
+ FileManager &files = *g_vm->_files;
+ int oldMode = files._isDarkCc ? 1 : 0;
+
+ files.setGameCc(ccMode);
+ File::open(filename);
+ files.setGameCc(oldMode);
+
+ return true;
+}
+
+void File::setCurrentArchive(int ccMode) {
+ switch (ccMode) {
+ case 0:
+ _currentArchive = _xeenCc;
+ break;
+
+ case 1:
+ _currentArchive = _darkCc;
+ break;
+
+ default:
+ break;
+ }
+
+ assert(_currentArchive);
+}
+
Common::String File::readString() {
Common::String result;
char c;
@@ -267,18 +292,42 @@ Common::String File::readString() {
return result;
}
+bool File::exists(const Common::String &filename) {
+ if (!g_vm->_saves || !g_vm->_saves->hasFile(filename)) {
+ if (!_currentArchive->hasFile(filename)) {
+ // Could not find in current archive, so try intro.cc or in folder
+ return Common::File::exists(filename);
+ }
+ }
+
+ return true;
+}
+
+bool File::exists(const Common::String &filename, int ccMode) {
+ FileManager &files = *g_vm->_files;
+ int oldMode = files._isDarkCc ? 1 : 0;
+
+ files.setGameCc(ccMode);
+ bool result = exists(filename);
+ files.setGameCc(oldMode);
+
+ return result;
+}
+
/*------------------------------------------------------------------------*/
void StringArray::load(const Common::String &name) {
- load(name, ANY_ARCHIVE);
+ File f(name);
+ clear();
+ while (f.pos() < f.size())
+ push_back(f.readString());
}
-void StringArray::load(const Common::String &name, ArchiveType archiveType) {
- File f(name, archiveType);
+void StringArray::load(const Common::String &name, int ccMode) {
+ File f(name, ccMode);
clear();
while (f.pos() < f.size())
push_back(f.readString());
}
-
} // End of namespace Xeen
diff --git a/engines/xeen/files.h b/engines/xeen/files.h
index ffb7033..1fcfa6a 100644
--- a/engines/xeen/files.h
+++ b/engines/xeen/files.h
@@ -32,11 +32,6 @@
namespace Xeen {
-enum ArchiveType {
- ANY_ARCHIVE = -1, GAME_ARCHIVE = 0, ALTSIDE_ARCHIVE = 1,
- INTRO_ARCHIVE = 2
-};
-
class XeenEngine;
class CCArchive;
class File;
@@ -59,38 +54,44 @@ class File;
* Main resource manager
*/
class FileManager {
- friend class File;
-private:
- static CCArchive *_archives[3];
public:
bool _isDarkCc;
public:
/**
- * Instantiates the resource manager
+ * Constructor
*/
FileManager(XeenEngine *vm);
+
+ /**
+ * Destructor
+ */
+ ~FileManager();
/**
* Set which game side files to use
+ * @param ccMode 0=Clouds, 1=Dark Side
*/
- void setGameCc(bool isDarkCc);
+ void setGameCc(int ccMode);
};
/**
* Derived file class
*/
class File : public Common::File {
+ friend class FileManager;
+private:
+ static CCArchive *_currentArchive;
+ static CCArchive *_xeenCc;
+ static CCArchive *_darkCc;
public:
- static ArchiveType _currentArchive;
-
/**
* Sets which archive is used by default
*/
- static void setCurrentArchive(ArchiveType arcType) { _currentArchive = arcType; }
+ static void setCurrentArchive(int ccMode);
public:
File() : Common::File() {}
File(const Common::String &filename);
- File(const Common::String &filename, ArchiveType archiveType);
+ File(const Common::String &filename, int ccMode);
File(const Common::String &filename, Common::Archive &archive);
virtual ~File() {}
@@ -102,12 +103,12 @@ public:
/**
* Opens the given file, throwing an error if it can't be opened
*/
- virtual bool open(const Common::String &filename, ArchiveType archiveType);
+ virtual bool open(const Common::String &filename, Common::Archive &archive);
/**
* Opens the given file, throwing an error if it can't be opened
*/
- virtual bool open(const Common::String &filename, Common::Archive &archive);
+ virtual bool open(const Common::String &filename, int ccMode);
/**
* Opens the given file
@@ -123,7 +124,26 @@ public:
return Common::File::open(stream, name);
}
+ /**
+ * Reads in a null terminated string
+ */
Common::String readString();
+
+ /**
+ * Checks if a given file exists
+ *
+ * @param filename the file to check for
+ * @return true if the file exists, false otherwise
+ */
+ static bool exists(const Common::String &filename);
+
+ /**
+ * Checks if a given file exists
+ *
+ * @param filename the file to check for
+ * @return true if the file exists, false otherwise
+ */
+ static bool exists(const Common::String &filename, int ccMode);
};
class StringArray : public Common::StringArray {
@@ -139,7 +159,7 @@ public:
/**
* Loads a string array from the specified file
*/
- void load(const Common::String &name, ArchiveType archiveType);
+ void load(const Common::String &name, int ccMode);
};
class XeenSerializer : public Common::Serializer {
diff --git a/engines/xeen/map.cpp b/engines/xeen/map.cpp
index f0c9b57..6777178 100644
--- a/engines/xeen/map.cpp
+++ b/engines/xeen/map.cpp
@@ -928,6 +928,7 @@ Map::Map(XeenEngine *vm) : _vm(vm), _mobData(vm) {
_sideObjects = 0;
_sideMonsters = 0;
_sidePictures = 0;
+ _sideMusic = 0;
_isOutdoors = false;
_mazeDataIndex = 0;
_currentSteppedOn = false;
@@ -944,6 +945,7 @@ Map::Map(XeenEngine *vm) : _vm(vm), _mobData(vm) {
void Map::load(int mapId) {
EventsManager &events = *g_vm->_events;
+ FileManager &files = *g_vm->_files;
Interface &intf = *g_vm->_interface;
Party &party = *g_vm->_party;
Sound &sound = *g_vm->_sound;
@@ -974,6 +976,8 @@ void Map::load(int mapId) {
}
if (_vm->getGameID() == GType_WorldOfXeen) {
+ files.setGameCc(1);
+
if (!_loadDarkSide) {
_animationInfo.load("clouds.dat");
_monsterData.load("xeen.mon");
@@ -1020,6 +1024,8 @@ void Map::load(int mapId) {
break;
}
}
+
+ files.setGameCc(_loadDarkSide);
}
// Load any events for the new map
@@ -1056,9 +1062,10 @@ void Map::load(int mapId) {
// Handle loading text data
if (!textLoaded) {
textLoaded = true;
+
Common::String txtName = Common::String::format("%s%c%03d.txt",
isDarkCc ? "dark" : "xeen", mapId >= 100 ? 'x' : '0', mapId);
- File fText(txtName);
+ File fText(txtName, 1);
char mazeName[33];
fText.read(mazeName, 33);
mazeName[32] = '\0';
@@ -1115,6 +1122,8 @@ void Map::load(int mapId) {
// Load sprites for the objects
for (uint i = 0; i < _mobData._objectSprites.size(); ++i) {
+ files.setGameCc(_sideObjects);
+
if (party._cloudsEnd && _mobData._objectSprites[i]._spriteId == 85 &&
mapId == 27 && isDarkCc) {
_mobData._objects[29]._spriteId = 0;
@@ -1131,31 +1140,31 @@ void Map::load(int mapId) {
}
// Read in the object sprites
- _mobData._objectSprites[i]._sprites.load(filename,
- _sideObjects ? ALTSIDE_ARCHIVE : GAME_ARCHIVE);
+ _mobData._objectSprites[i]._sprites.load(filename);
}
// Load sprites for the monsters
for (uint i = 0; i < _mobData._monsterSprites.size(); ++i) {
MonsterObjectData::SpriteResourceEntry &spr = _mobData._monsterSprites[i];
- ArchiveType archiveType = spr._spriteId == 91 && _vm->getGameID() == GType_WorldOfXeen ?
- ALTSIDE_ARCHIVE : GAME_ARCHIVE;
uint imgNumber = _monsterData[spr._spriteId]._imageNumber;
+ files.setGameCc((spr._spriteId == 91 && _vm->getGameID() == GType_WorldOfXeen) ?
+ 0 : _sideMonsters);
filename = Common::String::format("%03u.mon", imgNumber);
- _mobData._monsterSprites[i]._sprites.load(filename, archiveType);
+ _mobData._monsterSprites[i]._sprites.load(filename);
filename = Common::String::format("%03u.att", imgNumber);
- _mobData._monsterSprites[i]._attackSprites.load(filename, archiveType);
+ _mobData._monsterSprites[i]._attackSprites.load(filename);
}
// Load wall picture sprite resources
for (uint i = 0; i < _mobData._wallItemSprites.size(); ++i) {
filename = Common::String::format("%03d.pic", _mobData._wallItemSprites[i]._spriteId);
- _mobData._wallItemSprites[i]._sprites.load(filename,
- _sidePictures ? ALTSIDE_ARCHIVE : GAME_ARCHIVE);
+ _mobData._wallItemSprites[i]._sprites.load(filename, _sidePictures);
}
+ files.setGameCc(isDarkCc);
+
// Handle loading miscellaneous sprites for the map
if (_isOutdoors) {
// Start playing relevant music
@@ -1190,11 +1199,15 @@ void Map::load(int mapId) {
_surfaceSprites[i].load(Res.SURFACE_NAMES[_mazeData[0]._surfaceTypes[i]]);
}
} else {
+ if (isDarkCc || mapId == 125 || mapId == 126 || mapId == 127)
+ files.setGameCc(0);
+
// Start playing relevant music
const int MUS_INDEXES[] = { 1, 2, 3, 4, 3, 5 };
Common::String musName;
- if (_vm->_files->_isDarkCc) {
+ _sideMusic = isDarkCc;
+ if (isDarkCc) {
int randIndex = _vm->getRandomNumber(6);
musName = MUSIC_FILES2[MUS_INDEXES[_mazeData->_wallKind]][randIndex];
} else {
@@ -1298,6 +1311,10 @@ void Map::load(int mapId) {
}
loadSky();
+
+ files.setGameCc(isDarkCc);
+ if (windows[9]._enabled)
+ windows[9].close();
}
int Map::mazeLookup(const Common::Point &pt, int layerShift, int wallMask) {
diff --git a/engines/xeen/map.h b/engines/xeen/map.h
index 3defc58..c74f084 100644
--- a/engines/xeen/map.h
+++ b/engines/xeen/map.h
@@ -388,6 +388,7 @@ private:
int _sidePictures;
int _sideObjects;
int _sideMonsters;
+ int _sideMusic;
int _mazeDataIndex;
/**
diff --git a/engines/xeen/music.cpp b/engines/xeen/music.cpp
index fbbaadb..0ebb8ac 100644
--- a/engines/xeen/music.cpp
+++ b/engines/xeen/music.cpp
@@ -655,7 +655,7 @@ const uint AdlibMusicDriver::WAVEFORMS[24] = {
/*------------------------------------------------------------------------*/
Music::Music() : _musicDriver(nullptr), _songData(nullptr),
- _archiveType(ANY_ARCHIVE), _effectsData(nullptr), _musicOn(true) {
+ _effectsData(nullptr), _musicOn(true) {
_musicDriver = new AdlibMusicDriver();
}
@@ -668,13 +668,13 @@ Music::~Music() {
void Music::loadEffectsData() {
// Check whether it's the first load, or switching from intro to game data
- if (_effectsData && !(_archiveType == INTRO_ARCHIVE && File::_currentArchive != INTRO_ARCHIVE))
- return;
+// if (_effectsData && !(_archiveType == INTRO_ARCHIVE && File::_currentArchive != INTRO_ARCHIVE))
+// return;
// Stop any prior FX
stopFX();
delete[] _effectsData;
- _archiveType = File::_currentArchive;
+// _archiveType = File::_currentArchive;
// Load in an entire driver so we have quick access to the effects data
// that's hardcoded within it
diff --git a/engines/xeen/music.h b/engines/xeen/music.h
index a3d0121..085c85a 100644
--- a/engines/xeen/music.h
+++ b/engines/xeen/music.h
@@ -305,7 +305,6 @@ private:
const byte *_effectsData;
Common::Array<uint16> _effectsOffsets;
const byte *_songData;
- ArchiveType _archiveType;
private:
/**
* Loads effects data that was embedded in the music driver
diff --git a/engines/xeen/resources.cpp b/engines/xeen/resources.cpp
index c60897c..cff4127 100644
--- a/engines/xeen/resources.cpp
+++ b/engines/xeen/resources.cpp
@@ -42,6 +42,8 @@ Resources *Resources::init(XeenEngine *vm) {
Resources::Resources() {
g_resources = this;
+ g_vm->_files->setGameCc(1);
+
_globalSprites.load("global.icn");
File f("mae.xen");
diff --git a/engines/xeen/saves.cpp b/engines/xeen/saves.cpp
index 1c06042..5126642 100644
--- a/engines/xeen/saves.cpp
+++ b/engines/xeen/saves.cpp
@@ -57,7 +57,6 @@ void OutFile::finalize() {
SavesManager::SavesManager(XeenEngine *vm, Party &party) :
BaseCCArchive(), _vm(vm), _party(party) {
- SearchMan.add("saves", this, 0, false);
_data = nullptr;
_wonWorld = false;
_wonDarkSide = false;
@@ -133,13 +132,13 @@ void SavesManager::load(Common::SeekableReadStream *stream) {
}
void SavesManager::reset() {
- Common::String prefix = _vm->getGameID() != GType_DarkSide ? "xeen|" : "dark|";
Common::MemoryWriteStreamDynamic saveFile(DisposeAfterUse::YES);
- Common::File fIn;
+ File fIn;
+ g_vm->_files->setGameCc(g_vm->getGameID() == GType_DarkSide ? 1 : 0);
const int RESOURCES[6] = { 0x2A0C, 0x2A1C, 0x2A2C, 0x2A3C, 0x284C, 0x2A5C };
for (int i = 0; i < 6; ++i) {
- Common::String filename = prefix + Common::String::format("%.4x", RESOURCES[i]);
+ Common::String filename = Common::String::format("%.4x", RESOURCES[i]);
if (fIn.exists(filename)) {
// Read in the next resource
fIn.open(filename);
@@ -153,21 +152,10 @@ void SavesManager::reset() {
}
}
+ assert(saveFile.size() > 0);
Common::MemoryReadStream f(saveFile.getData(), saveFile.size());
load(&f);
- // Set up the party and characters from dark.cur
- CCArchive gameCur("xeen.cur", false);
- File fParty("maze.pty", gameCur);
- Common::Serializer sParty(&fParty, nullptr);
- _party.synchronize(sParty);
- fParty.close();
-
- File fChar("maze.chr", gameCur);
- Common::Serializer sChar(&fChar, nullptr);
- _party._roster.synchronize(sChar);
- fChar.close();
-
// Set any final initial values
_party.resetBlacksmithWares();
_party._year = _vm->getGameID() == GType_WorldOfXeen ? 610 : 850;
diff --git a/engines/xeen/sprites.cpp b/engines/xeen/sprites.cpp
index dac7949..8ea18f0 100644
--- a/engines/xeen/sprites.cpp
+++ b/engines/xeen/sprites.cpp
@@ -69,8 +69,8 @@ void SpriteResource::load(const Common::String &filename) {
load(f);
}
-void SpriteResource::load(const Common::String &filename, ArchiveType archiveType) {
- File f(filename, archiveType);
+void SpriteResource::load(const Common::String &filename, int ccMode) {
+ File f(filename, ccMode);
load(f);
}
diff --git a/engines/xeen/sprites.h b/engines/xeen/sprites.h
index a370cee..342fa3f 100644
--- a/engines/xeen/sprites.h
+++ b/engines/xeen/sprites.h
@@ -101,7 +101,7 @@ public:
/**
* Load a sprite resource from a given file and archive
*/
- void load(const Common::String &filename, ArchiveType archiveType);
+ void load(const Common::String &filename, int ccMode);
/**
* Clears the sprite resource
diff --git a/engines/xeen/worldofxeen/clouds_cutscenes.cpp b/engines/xeen/worldofxeen/clouds_cutscenes.cpp
index 3d85a6c..26ce12e 100644
--- a/engines/xeen/worldofxeen/clouds_cutscenes.cpp
+++ b/engines/xeen/worldofxeen/clouds_cutscenes.cpp
@@ -94,7 +94,7 @@ bool CloudsCutscenes::showCloudsIntro() {
lake("lake.vga"), xeen("xeen.vga"), wizTower("wiztower.vga"),
wizTower2("wiztwer2.vga"), lake2("lake2.vga"), lake3("lake3.vga"),
xeen1("xeen1.vga");
- _subtitles.load("special.bin", GAME_ARCHIVE);
+ _subtitles.load("special.bin", 0);
_vm->_files->_isDarkCc = false;
// Show the production splash screen
@@ -343,7 +343,7 @@ bool CloudsCutscenes::showCloudsEnding() {
Sound &sound = *_vm->_sound;
files._isDarkCc = false;
- File::setCurrentArchive(GAME_ARCHIVE);
+ files.setGameCc(0);
// Show the castle with swirling clouds and lightning
SpriteResource prec;
diff --git a/engines/xeen/xeen.cpp b/engines/xeen/xeen.cpp
index 67fb977..39e5f4b 100644
--- a/engines/xeen/xeen.cpp
+++ b/engines/xeen/xeen.cpp
@@ -267,7 +267,7 @@ void XeenEngine::writeSavegameHeader(Common::OutSaveFile *out, XeenSavegameHeade
void XeenEngine::playGame() {
_saves->reset();
- File::setCurrentArchive(GAME_ARCHIVE);
+ _files->setGameCc(0);
_sound->stopAllAudio();
play();
More information about the Scummvm-git-logs
mailing list