[Scummvm-cvs-logs] SF.net SVN: scummvm: [24169] scummvm/trunk/engines/scumm
fingolfin at users.sourceforge.net
fingolfin at users.sourceforge.net
Sat Oct 7 15:57:21 CEST 2006
Revision: 24169
http://svn.sourceforge.net/scummvm/?rev=24169&view=rev
Author: fingolfin
Date: 2006-10-07 06:57:06 -0700 (Sat, 07 Oct 2006)
Log Message:
-----------
Moved all INSANE and SMUSH related code into ScummEngine_v7 (resp. ScummEngine_v6 in a few cases)
Modified Paths:
--------------
scummvm/trunk/engines/scumm/imuse_digi/dimuse.cpp
scummvm/trunk/engines/scumm/imuse_digi/dimuse.h
scummvm/trunk/engines/scumm/imuse_digi/dimuse_script.cpp
scummvm/trunk/engines/scumm/imuse_digi/dimuse_track.cpp
scummvm/trunk/engines/scumm/insane/insane.h
scummvm/trunk/engines/scumm/intern.h
scummvm/trunk/engines/scumm/script_v6.cpp
scummvm/trunk/engines/scumm/scumm.cpp
scummvm/trunk/engines/scumm/scumm.h
scummvm/trunk/engines/scumm/smush/chunk.cpp
scummvm/trunk/engines/scumm/smush/smush_player.cpp
scummvm/trunk/engines/scumm/smush/smush_player.h
Modified: scummvm/trunk/engines/scumm/imuse_digi/dimuse.cpp
===================================================================
--- scummvm/trunk/engines/scumm/imuse_digi/dimuse.cpp 2006-10-07 13:33:41 UTC (rev 24168)
+++ scummvm/trunk/engines/scumm/imuse_digi/dimuse.cpp 2006-10-07 13:57:06 UTC (rev 24169)
@@ -25,7 +25,7 @@
#include "scumm/actor.h"
#include "scumm/saveload.h"
-#include "scumm/scumm.h"
+#include "scumm/intern.h"
#include "scumm/sound.h"
#include "scumm/imuse_digi/dimuse.h"
#include "scumm/imuse_digi/dimuse_bndmgr.h"
@@ -44,7 +44,7 @@
imuseDigital->callback();
}
-IMuseDigital::IMuseDigital(ScummEngine *scumm, int fps)
+IMuseDigital::IMuseDigital(ScummEngine_v7 *scumm, int fps)
: _vm(scumm) {
_pause = false;
_sound = new ImuseDigiSndMgr(_vm);
Modified: scummvm/trunk/engines/scumm/imuse_digi/dimuse.h
===================================================================
--- scummvm/trunk/engines/scumm/imuse_digi/dimuse.h 2006-10-07 13:33:41 UTC (rev 24168)
+++ scummvm/trunk/engines/scumm/imuse_digi/dimuse.h 2006-10-07 13:57:06 UTC (rev 24169)
@@ -42,6 +42,7 @@
struct imuseDigTable;
struct imuseComiTable;
class Serializer;
+class ScummEngine_v7;
class IMuseDigital : public MusicEngine {
private:
@@ -88,7 +89,7 @@
Track *_track[MAX_DIGITAL_TRACKS + MAX_DIGITAL_FADETRACKS];
Common::Mutex _mutex;
- ScummEngine *_vm;
+ ScummEngine_v7 *_vm;
ImuseDigiSndMgr *_sound;
char *_audioNames;
@@ -130,7 +131,7 @@
void playDigMusic(const char *songName, const imuseDigTable *table, int atribPos, bool sequence);
public:
- IMuseDigital(ScummEngine *scumm, int fps);
+ IMuseDigital(ScummEngine_v7 *scumm, int fps);
virtual ~IMuseDigital();
void setAudioNames(int32 num, char *names);
Modified: scummvm/trunk/engines/scumm/imuse_digi/dimuse_script.cpp
===================================================================
--- scummvm/trunk/engines/scumm/imuse_digi/dimuse_script.cpp 2006-10-07 13:33:41 UTC (rev 24168)
+++ scummvm/trunk/engines/scumm/imuse_digi/dimuse_script.cpp 2006-10-07 13:57:06 UTC (rev 24169)
@@ -24,7 +24,7 @@
#include "common/timer.h"
#include "scumm/actor.h"
-#include "scumm/scumm.h"
+#include "scumm/intern.h"
#include "scumm/sound.h"
#include "scumm/imuse_digi/dimuse.h"
#include "scumm/imuse_digi/dimuse_bndmgr.h"
Modified: scummvm/trunk/engines/scumm/imuse_digi/dimuse_track.cpp
===================================================================
--- scummvm/trunk/engines/scumm/imuse_digi/dimuse_track.cpp 2006-10-07 13:33:41 UTC (rev 24168)
+++ scummvm/trunk/engines/scumm/imuse_digi/dimuse_track.cpp 2006-10-07 13:57:06 UTC (rev 24169)
@@ -23,7 +23,7 @@
#include "common/timer.h"
#include "scumm/actor.h"
-#include "scumm/scumm.h"
+#include "scumm/intern.h"
#include "scumm/sound.h"
#include "scumm/imuse_digi/dimuse.h"
#include "scumm/imuse_digi/dimuse_bndmgr.h"
Modified: scummvm/trunk/engines/scumm/insane/insane.h
===================================================================
--- scummvm/trunk/engines/scumm/insane/insane.h 2006-10-07 13:33:41 UTC (rev 24168)
+++ scummvm/trunk/engines/scumm/insane/insane.h 2006-10-07 13:57:06 UTC (rev 24169)
@@ -70,7 +70,7 @@
private:
- ScummEngine_v6 *_vm;
+ ScummEngine_v7 *_vm;
SmushPlayer *_player;
int32 _speed;
Modified: scummvm/trunk/engines/scumm/intern.h
===================================================================
--- scummvm/trunk/engines/scumm/intern.h 2006-10-07 13:33:41 UTC (rev 24168)
+++ scummvm/trunk/engines/scumm/intern.h 2006-10-07 13:57:06 UTC (rev 24169)
@@ -538,8 +538,6 @@
const OpcodeEntryV6 *_opcodesV6;
- int _smushFrameRate;
-
struct TextObject {
int16 xpos, ypos;
byte color;
@@ -577,7 +575,26 @@
int16 _akosQueuePos;
+ int _smushFrameRate;
+
+ /**
+ * Flag which signals that the SMUSH video playback should end now
+ * (e.g. because it was aborted by the user or it's simply finished).
+ */
+ bool _smushVideoShouldFinish;
+
+ /** This flag is a hack to allow the pause dialog to pause SMUSH playback, too. */
+ bool _smushPaused;
+
+ Insane *_insane;
+
public:
+ /** This flag tells IMuseDigital that INSANE is running. */
+ bool _insaneRunning; // Used by IMuseDigital::flushTracks()
+
+ SmushMixer *_smixer;
+
+public:
ScummEngine_v6(OSystem *syst, const DetectorResult &dr);
virtual void resetScumm();
@@ -817,6 +834,8 @@
#ifndef DISABLE_SCUMM_7_8
class ScummEngine_v7 : public ScummEngine_v6 {
+ friend class SmushPlayer;
+ friend class Insane;
public:
ScummEngine_v7(OSystem *syst, const DetectorResult &dr);
~ScummEngine_v7();
@@ -855,10 +874,14 @@
void clearSubtitleQueue();
protected:
+ virtual int runDialog(Dialog &dialog);
+
virtual void scummLoop_handleSound();
virtual void scummLoop_handleDrawing();
virtual void processKeyboard(bool smushMode);
+ virtual void setupScumm();
+
virtual void setupScummVars();
virtual void resetScummVars();
Modified: scummvm/trunk/engines/scumm/script_v6.cpp
===================================================================
--- scummvm/trunk/engines/scumm/script_v6.cpp 2006-10-07 13:33:41 UTC (rev 24168)
+++ scummvm/trunk/engines/scumm/script_v6.cpp 2006-10-07 13:57:06 UTC (rev 24169)
@@ -2526,7 +2526,7 @@
if (strcmp((char *)getStringAddressVar(VAR_VIDEONAME), "sq3.san") == 0)
_smushFrameRate = 14;
- SmushPlayer *sp = new SmushPlayer(this, _smushFrameRate);
+ SmushPlayer *sp = new SmushPlayer((ScummEngine_v7 *)this, _smushFrameRate);
// Correct incorrect smush filename in Macintosh FT demo
if ((_game.id == GID_FT) && (_game.features & GF_DEMO) && (_game.platform == Common::kPlatformMacintosh) &&
Modified: scummvm/trunk/engines/scumm/scumm.cpp
===================================================================
--- scummvm/trunk/engines/scumm/scumm.cpp 2006-10-07 13:33:41 UTC (rev 24168)
+++ scummvm/trunk/engines/scumm/scumm.cpp 2006-10-07 13:57:06 UTC (rev 24169)
@@ -248,16 +248,12 @@
// Init all vars
_imuse = NULL;
_imuseDigital = NULL;
- _smixer = NULL;
_musicEngine = NULL;
_verbs = NULL;
_objs = NULL;
_debugFlags = 0;
_sound = NULL;
memset(&vm, 0, sizeof(vm));
- _smushVideoShouldFinish = false;
- _smushPaused = false;
- _insaneRunning = false;
_quit = false;
_pauseDialog = NULL;
_mainMenuDialog = NULL;
@@ -663,12 +659,6 @@
delete _musicEngine;
}
-#ifndef DISABLE_SCUMM_7_8
- if (_smixer) {
- _smixer->stop();
- delete _smixer;
- }
-#endif
_mixer->stopAll();
delete [] _actors;
@@ -790,8 +780,6 @@
_blastTextQueuePos = 0;
memset(_blastTextQueue, 0, sizeof(_blastTextQueue));
- _smushFrameRate = 0;
-
memset(_akosQueue, 0, sizeof(_akosQueue));
_akosQueuePos = 0;
@@ -926,6 +914,13 @@
: ScummEngine_v6(syst, dr) {
_verbCharset = 0;
_verbLineSpacing = 10;
+
+ _smushFrameRate = 0;
+ _smushVideoShouldFinish = false;
+ _smushPaused = false;
+ _insaneRunning = false;
+ _smixer = NULL;
+
_existLanguageFile = false;
_languageBuffer = NULL;
_languageIndex = NULL;
@@ -933,6 +928,11 @@
}
ScummEngine_v7::~ScummEngine_v7() {
+ if (_smixer) {
+ _smixer->stop();
+ delete _smixer;
+ }
+
free(_languageBuffer);
free(_languageIndex);
}
@@ -992,7 +992,6 @@
return 0;
}
-
void ScummEngine::setupScumm() {
// On some systems it's not safe to run CD audio games from the CD.
if (_game.features & GF_AUDIOTRACKS) {
@@ -1024,14 +1023,6 @@
// Create the costume renderer
setupCostumeRenderer();
-#ifndef DISABLE_SCUMM_7_8
- // Create FT INSANE object
- if (_game.id == GID_FT)
- _insane = new Insane((ScummEngine_v7 *)this);
- else
-#endif
- _insane = 0;
-
// Load game from specified slot, if any
if (ConfMan.hasKey("save_slot")) {
requestLoad(ConfMan.getInt("save_slot"));
@@ -1096,6 +1087,27 @@
#endif
}
+#ifndef DISABLE_SCUMM_7_8
+void ScummEngine_v7::setupScumm() {
+
+ if (_game.features & GF_DIGI_IMUSE) {
+#ifndef DISABLE_SCUMM_7_8
+ _musicEngine = _imuseDigital = new IMuseDigital(this, 10);
+#endif
+ }
+
+ ScummEngine::setupScumm();
+
+ // Create FT INSANE object
+ if (_game.id == GID_FT)
+ _insane = new Insane((ScummEngine_v7 *)this);
+ else
+ _insane = 0;
+
+ _smixer = new SmushMixer(_mixer);
+}
+#endif
+
void ScummEngine::setupCharsetRenderer() {
if (_game.platform == Common::kPlatformNES)
_charset = new CharsetRendererNES(this);
@@ -1433,10 +1445,7 @@
// Init iMuse
if (_game.features & GF_DIGI_IMUSE) {
-#ifndef DISABLE_SCUMM_7_8
- _musicEngine = _imuseDigital = new IMuseDigital(this, 10);
- _smixer = new SmushMixer(_mixer);
-#endif
+ // Setup for digital iMuse is performed in another place
} else if (_game.platform == Common::kPlatformC64) {
// TODO
_musicEngine = NULL;
@@ -2058,8 +2067,6 @@
// Pause sound & video
bool old_soundsPaused = _sound->_soundsPaused;
_sound->pauseSounds(true);
- bool oldSmushPaused = _smushPaused;
- _smushPaused = true;
// Open & run the dialog
int result = dialog.runModal();
@@ -2069,7 +2076,6 @@
// Resume sound & video
_sound->pauseSounds(old_soundsPaused);
- _smushPaused = oldSmushPaused;
_engineStartTime += (_system->getMillis() / 1000) - _dialogStartTime;
_dialogStartTime = 0;
@@ -2078,6 +2084,17 @@
return result;
}
+int ScummEngine_v7::runDialog(Dialog &dialog) {
+ bool oldSmushPaused = _smushPaused;
+ _smushPaused = true;
+
+ int result = ScummEngine::runDialog(dialog);
+
+ _smushPaused = oldSmushPaused;
+
+ return result;
+}
+
void ScummEngine::pauseDialog() {
if (!_pauseDialog)
_pauseDialog = new PauseDialog(this, 4);
Modified: scummvm/trunk/engines/scumm/scumm.h
===================================================================
--- scummvm/trunk/engines/scumm/scumm.h 2006-10-07 13:33:41 UTC (rev 24168)
+++ scummvm/trunk/engines/scumm/scumm.h 2006-10-07 13:57:06 UTC (rev 24169)
@@ -412,8 +412,6 @@
*/
class ScummEngine : public Engine {
friend class ScummDebugger;
- friend class SmushPlayer;
- friend class Insane;
friend class CharsetRenderer;
friend class ResourceManager;
@@ -428,7 +426,6 @@
IMuseDigital *_imuseDigital;
MusicEngine *_musicEngine;
Sound *_sound;
- SmushMixer *_smixer;
VerbSlot *_verbs;
ObjectData *_objs;
@@ -506,21 +503,7 @@
virtual void animateCursor() {}
virtual void updatePalette();
- /**
- * Flag which signals that the SMUSH video playback should end now
- * (e.g. because it was aborted by the user or it's simply finished).
- */
- bool _smushVideoShouldFinish;
- /** This flag is a hack to allow the pause dialog to pause SMUSH playback, too. */
- bool _smushPaused;
public:
- /** This flag tells IMuseDigital that INSANE is running. */
- bool _insaneRunning; // Used by IMuseDigital::flushTracks()
-
-protected:
- Insane *_insane;
-
-public:
void pauseGame();
void restart();
void shutDown();
@@ -533,7 +516,7 @@
Dialog *_versionDialog;
Dialog *_mainMenuDialog;
- int runDialog(Dialog &dialog);
+ virtual int runDialog(Dialog &dialog);
void confirmExitDialog();
void confirmRestartDialog();
void pauseDialog();
Modified: scummvm/trunk/engines/scumm/smush/chunk.cpp
===================================================================
--- scummvm/trunk/engines/scumm/smush/chunk.cpp 2006-10-07 13:33:41 UTC (rev 24168)
+++ scummvm/trunk/engines/scumm/smush/chunk.cpp 2006-10-07 13:57:06 UTC (rev 24169)
@@ -84,9 +84,10 @@
}
if (_curPos > _size) {
- if (g_scumm->_insaneRunning) {
- warning("Looks like you compressed file %s in wrong way. It has FLU index which was not updated", _name.c_str());
- }
+// FIXME: This is an evil hack, can't we do better?!
+// if (g_scumm->_insaneRunning) {
+// warning("Looks like you compressed file %s in wrong way. It has FLU index which was not updated", _name.c_str());
+// }
error("invalid seek request : %d > %d (delta == %d)", _curPos, _size, delta);
}
return true;
Modified: scummvm/trunk/engines/scumm/smush/smush_player.cpp
===================================================================
--- scummvm/trunk/engines/scumm/smush/smush_player.cpp 2006-10-07 13:33:41 UTC (rev 24168)
+++ scummvm/trunk/engines/scumm/smush/smush_player.cpp 2006-10-07 13:57:06 UTC (rev 24169)
@@ -235,7 +235,7 @@
#endif
}
-SmushPlayer::SmushPlayer(ScummEngine_v6 *scumm, int speed) {
+SmushPlayer::SmushPlayer(ScummEngine_v7 *scumm, int speed) {
_vm = scumm;
_version = -1;
_nbframes = 0;
Modified: scummvm/trunk/engines/scumm/smush/smush_player.h
===================================================================
--- scummvm/trunk/engines/scumm/smush/smush_player.h 2006-10-07 13:33:41 UTC (rev 24168)
+++ scummvm/trunk/engines/scumm/smush/smush_player.h 2006-10-07 13:57:06 UTC (rev 24169)
@@ -31,7 +31,7 @@
namespace Scumm {
-class ScummEngine_v6;
+class ScummEngine_v7;
class SmushFont;
class SmushMixer;
class StringResource;
@@ -39,7 +39,7 @@
class SmushPlayer {
friend class Insane;
private:
- ScummEngine_v6 *_vm;
+ ScummEngine_v7 *_vm;
int _version;
int32 _nbframes;
SmushMixer *_smixer;
@@ -95,7 +95,7 @@
Common::Mutex _mutex;
public:
- SmushPlayer(ScummEngine_v6 *scumm, int speed);
+ SmushPlayer(ScummEngine_v7 *scumm, int speed);
~SmushPlayer();
void play(const char *filename, int32 offset = 0, int32 startFrame = 0);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list