diff options
Diffstat (limited to 'engines/mortevielle')
-rw-r--r-- | engines/mortevielle/debugger.cpp | 36 | ||||
-rw-r--r-- | engines/mortevielle/debugger.h | 45 | ||||
-rw-r--r-- | engines/mortevielle/graphics.h | 4 | ||||
-rw-r--r-- | engines/mortevielle/menu.cpp | 7 | ||||
-rw-r--r-- | engines/mortevielle/menu.h | 4 | ||||
-rw-r--r-- | engines/mortevielle/module.mk | 1 | ||||
-rw-r--r-- | engines/mortevielle/mortevielle.cpp | 23 | ||||
-rw-r--r-- | engines/mortevielle/mortevielle.h | 2 |
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; |