aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/dreamweb/dreamweb.cpp21
-rw-r--r--engines/dreamweb/dreamweb.h4
2 files changed, 21 insertions, 4 deletions
diff --git a/engines/dreamweb/dreamweb.cpp b/engines/dreamweb/dreamweb.cpp
index ecab4337c1..b3bae38d24 100644
--- a/engines/dreamweb/dreamweb.cpp
+++ b/engines/dreamweb/dreamweb.cpp
@@ -66,6 +66,7 @@ DreamWebEngine::DreamWebEngine(OSystem *syst, const DreamWebGameDescription *gam
DebugMan.addDebugChannel(kDebugSaveLoad, "SaveLoad", "Track Save/Load Function");
_outSaveFile = 0;
_inSaveFile = 0;
+ _speed = 1;
}
DreamWebEngine::~DreamWebEngine() {
@@ -73,10 +74,6 @@ DreamWebEngine::~DreamWebEngine() {
delete _console;
}
-// Let's see if it's a good idea to emulate VSYNC interrupts with a timer like
-// this. There's a chance we'll miss interrupts, which could be countered by
-// counting them instead of just flagging them, but we'll see...
-
static void vSyncInterrupt(void *refCon) {
DreamWebEngine *vm = (DreamWebEngine *)refCon;
@@ -126,6 +123,15 @@ void DreamWebEngine::processEvents() {
keyHandled = true;
}
break;
+ case Common::KEYCODE_f:
+ if (event.kbd.flags & Common::KBD_CTRL) {
+ if (_speed != 10)
+ setSpeed(10);
+ else
+ setSpeed(1);
+ keyHandled = true;
+ }
+ break;
default:
break;
}
@@ -166,6 +172,13 @@ Common::Error DreamWebEngine::run() {
return Common::kNoError;
}
+void DreamWebEngine::setSpeed(uint speed) {
+ debug(0, "setting speed %u", speed);
+ _speed = speed;
+ getTimerManager()->removeTimerProc(vSyncInterrupt);
+ getTimerManager()->installTimerProc(vSyncInterrupt, 1000000 / 70 / speed, this);
+}
+
void DreamWebEngine::openFile(const Common::String &name) {
processEvents();
closeFile();
diff --git a/engines/dreamweb/dreamweb.h b/engines/dreamweb/dreamweb.h
index 33a88e0408..50d2779327 100644
--- a/engines/dreamweb/dreamweb.h
+++ b/engines/dreamweb/dreamweb.h
@@ -104,6 +104,8 @@ private:
void keyPressed(uint16 ascii);
+ void setSpeed(uint speed);
+
const DreamWebGameDescription *_gameDescription;
Common::RandomSource _rnd;
@@ -111,6 +113,8 @@ private:
Common::OutSaveFile *_outSaveFile;
Common::InSaveFile *_inSaveFile;
+ uint _speed;
+
dreamgen::Context _context;
};