aboutsummaryrefslogtreecommitdiff
path: root/engines/mortevielle
diff options
context:
space:
mode:
Diffstat (limited to 'engines/mortevielle')
-rw-r--r--engines/mortevielle/debugger.cpp36
-rw-r--r--engines/mortevielle/debugger.h45
-rw-r--r--engines/mortevielle/graphics.h4
-rw-r--r--engines/mortevielle/menu.cpp7
-rw-r--r--engines/mortevielle/menu.h4
-rw-r--r--engines/mortevielle/module.mk1
-rw-r--r--engines/mortevielle/mortevielle.cpp23
-rw-r--r--engines/mortevielle/mortevielle.h2
8 files changed, 107 insertions, 15 deletions
diff --git a/engines/mortevielle/debugger.cpp b/engines/mortevielle/debugger.cpp
new file mode 100644
index 0000000000..fc0e54ab6d
--- /dev/null
+++ b/engines/mortevielle/debugger.cpp
@@ -0,0 +1,36 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "mortevielle/debugger.h"
+#include "mortevielle/mortevielle.h"
+
+namespace Mortevielle {
+
+Debugger::Debugger() : GUI::Debugger() {
+ DCmd_Register("continue", WRAP_METHOD(Debugger, Cmd_Exit));
+}
+
+void Debugger::setParent(MortevielleEngine *vm) {
+ _vm = vm;
+}
+
+} // End of namespace Mortevielle
diff --git a/engines/mortevielle/debugger.h b/engines/mortevielle/debugger.h
new file mode 100644
index 0000000000..57ca94e78b
--- /dev/null
+++ b/engines/mortevielle/debugger.h
@@ -0,0 +1,45 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef MORTEVIELLE_DEBUGGER_H
+#define MORTEVIELLE_DEBUGGER_H
+
+#include "common/scummsys.h"
+#include "gui/debugger.h"
+
+namespace Mortevielle {
+
+class MortevielleEngine;
+
+class Debugger : public GUI::Debugger {
+private:
+ MortevielleEngine *_vm;
+
+public:
+ Debugger();
+ virtual ~Debugger() {}
+ void setParent(MortevielleEngine *vm);
+};
+
+} // End of namespace Mortevielle
+
+#endif
diff --git a/engines/mortevielle/graphics.h b/engines/mortevielle/graphics.h
index 03e0d016ec..7bf39c3662 100644
--- a/engines/mortevielle/graphics.h
+++ b/engines/mortevielle/graphics.h
@@ -48,8 +48,8 @@ public:
class GfxSurface: public Graphics::Surface {
private:
int _xp, _yp;
- int _xSize, _ySize, _var12;
- int _var14, _lookupIndex, _lookupValue;
+ int _xSize, _ySize;
+ int _lookupIndex, _lookupValue;
bool _nibbleFlag;
int _thickness;
int _yInc, _yEnd, _xInc, _xEnd;
diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp
index 8e6d94c449..5d64961f23 100644
--- a/engines/mortevielle/menu.cpp
+++ b/engines/mortevielle/menu.cpp
@@ -390,9 +390,9 @@ void Menu::menuDown(int ii) {
/**
* Menu is being removed, so restore the previous background area.
*/
-void Menu::menuUp(int xx) {
+void Menu::menuUp(int msgId) {
if (_multiTitle) {
- g_vm->charecr(10, (_menuConstants[xx - 1][1] + 1) << 1);
+ g_vm->charecr(10, (_menuConstants[msgId - 1][1] + 1) << 1);
/* Restore the background area */
assert(g_vm->_screenSurface.pitch == g_vm->_backgroundSurface.pitch);
@@ -420,8 +420,9 @@ void Menu::eraseMenu() {
/**
* Handle updates to the menu
+ * @remarks Originally called 'mdn'
*/
-void Menu::mdn() {
+void Menu::updateMenu() {
if (!_menuActive)
return;
diff --git a/engines/mortevielle/menu.h b/engines/mortevielle/menu.h
index 03c091909e..712242e6bc 100644
--- a/engines/mortevielle/menu.h
+++ b/engines/mortevielle/menu.h
@@ -68,9 +68,9 @@ public:
void enableMenuItem(int menuId);
void displayMenu();
void drawMenu();
- void menuUp(int xx);
+ void menuUp(int msgId);
void eraseMenu();
- void mdn();
+ void updateMenu();
void initMenu();
void setSearchMenu();
diff --git a/engines/mortevielle/module.mk b/engines/mortevielle/module.mk
index 38e6e0508d..9cce597566 100644
--- a/engines/mortevielle/module.mk
+++ b/engines/mortevielle/module.mk
@@ -2,6 +2,7 @@ MODULE := engines/mortevielle
MODULE_OBJS := \
actions.o \
+ debugger.o \
detection.o \
dialogs.o \
graphics.o \
diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp
index 2b95bcea0e..3875d8d458 100644
--- a/engines/mortevielle/mortevielle.cpp
+++ b/engines/mortevielle/mortevielle.cpp
@@ -74,6 +74,7 @@ MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *g
Engine(system), _gameDescription(gameDesc), _randomSource("mortevielle"),
_soundManager(_mixer) {
g_vm = this;
+ _debugger.setParent(this);
_lastGameFrame = 0;
_mouseClick = false;
_inMainGameLoop = false;
@@ -345,6 +346,8 @@ bool MortevielleEngine::keyPressed() {
_lastGameFrame = g_system->getMillis();
_screenSurface.updateScreen();
+
+ _debugger.onFrame();
}
// Delay briefly to keep CPU usage down
@@ -409,8 +412,13 @@ void MortevielleEngine::addKeypress(Common::Event &evt) {
// Character to add
char ch = evt.kbd.ascii;
- // Handle alphabetic keys
- if ((evt.kbd.keycode >= Common::KEYCODE_a) && (evt.kbd.keycode <= Common::KEYCODE_z)) {
+ // Check for debugger
+ if ((evt.kbd.keycode == Common::KEYCODE_d) && (evt.kbd.flags & Common::KBD_CTRL)) {
+ // Attach to the debugger
+ _debugger.attach();
+ _debugger.onFrame();
+ } else if ((evt.kbd.keycode >= Common::KEYCODE_a) && (evt.kbd.keycode <= Common::KEYCODE_z)) {
+ // Handle alphabetic keys
if (evt.kbd.hasFlags(Common::KBD_CTRL))
ch = evt.kbd.keycode - Common::KEYCODE_a + 1;
else
@@ -523,6 +531,8 @@ void MortevielleEngine::delay(int amount) {
if (g_system->getMillis() > (_lastGameFrame + GAME_FRAME_DELAY)) {
_lastGameFrame = g_system->getMillis();
_screenSurface.updateScreen();
+
+ _debugger.onFrame();
}
g_system->delayMillis(10);
@@ -647,7 +657,7 @@ void MortevielleEngine::handleAction() {
_inMainGameLoop = true;
do {
- _menu.mdn();
+ _menu.updateMenu();
prepareRoom();
_mouse.moveMouse(funct, inkey);
CHECK_QUIT;
@@ -982,7 +992,7 @@ int MortevielleEngine::getPresenceStatsGreenRoom() {
else if ((hour >= 0) && (hour < 8))
retVal = 70;
- _menu.mdn();
+ _menu.updateMenu();
return retVal;
}
@@ -2258,11 +2268,8 @@ Common::String MortevielleEngine::getString(int num) {
}
void MortevielleEngine::copcha() {
- int i = kAcha;
- do {
+ for (int i = kAcha; i < kAcha + 390; i++)
_tabdon[i] = _tabdon[i + 390];
- ++i;
- } while (i != kAcha + 390);
}
/**
diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h
index 81baab91b4..aeef3dd1e2 100644
--- a/engines/mortevielle/mortevielle.h
+++ b/engines/mortevielle/mortevielle.h
@@ -37,6 +37,7 @@
#include "engines/engine.h"
#include "common/error.h"
#include "graphics/surface.h"
+#include "mortevielle/debugger.h"
#include "mortevielle/graphics.h"
#include "mortevielle/menu.h"
#include "mortevielle/mouse.h"
@@ -475,6 +476,7 @@ public:
// TODO: Replace the following with proper implementations, or refactor out the code using them
byte _mem[65536 * 16];
+ Debugger _debugger;
ScreenSurface _screenSurface;
PaletteManager _paletteManager;
GfxSurface _backgroundSurface;