aboutsummaryrefslogtreecommitdiff
path: root/engines/mortevielle
diff options
context:
space:
mode:
authorStrangerke2013-07-25 10:32:21 +0200
committerStrangerke2013-07-25 10:32:21 +0200
commit8e2fe73afab1b27d70c4cd64c66b70673df5ea98 (patch)
tree5116341cbc7c4cc69451f01e02db67e37625ec61 /engines/mortevielle
parente86ec8bc819b60ef026450630d69b2bdd481b97c (diff)
downloadscummvm-rg350-8e2fe73afab1b27d70c4cd64c66b70673df5ea98.tar.gz
scummvm-rg350-8e2fe73afab1b27d70c4cd64c66b70673df5ea98.tar.bz2
scummvm-rg350-8e2fe73afab1b27d70c4cd64c66b70673df5ea98.zip
MORTEVIELLE: Use a specific buffer instead of _mem for the animations
Diffstat (limited to 'engines/mortevielle')
-rw-r--r--engines/mortevielle/dialogs.cpp4
-rw-r--r--engines/mortevielle/mortevielle.cpp2
-rw-r--r--engines/mortevielle/mortevielle.h3
-rw-r--r--engines/mortevielle/outtext.cpp5
-rw-r--r--engines/mortevielle/outtext.h2
-rw-r--r--engines/mortevielle/utils.cpp6
6 files changed, 13 insertions, 9 deletions
diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp
index f6fe9661ac..ba5d984886 100644
--- a/engines/mortevielle/dialogs.cpp
+++ b/engines/mortevielle/dialogs.cpp
@@ -481,9 +481,9 @@ void DialogManager::displayIntroScreen(bool drawFrame2Fl) {
*/
void DialogManager::displayIntroFrame2() {
_vm->_crep = _vm->getAnimOffset(1, 1);
- _vm->displayPicture(&_vm->_mem[(kAdrAni * 16) + _vm->_crep], 63, 12);
+ _vm->displayPicture(&_vm->_curAnim[_vm->_crep], 63, 12);
_vm->_crep = _vm->getAnimOffset(2, 1);
- _vm->displayPicture(&_vm->_mem[(kAdrAni * 16) + _vm->_crep], 63, 12);
+ _vm->displayPicture(&_vm->_curAnim[_vm->_crep], 63, 12);
_vm->_largestClearScreen = (_vm->_resolutionScaler == 1);
_vm->handleDescriptionText(2, kDialogStringIndex + 143);
}
diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp
index 7e73d116dd..8eea0cabb5 100644
--- a/engines/mortevielle/mortevielle.cpp
+++ b/engines/mortevielle/mortevielle.cpp
@@ -102,11 +102,13 @@ MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *g
memset(_mem, 0, sizeof(_mem));
_curPict = nullptr;
+ _curAnim = nullptr;
_rightFramePict = nullptr;
}
MortevielleEngine::~MortevielleEngine() {
free(_curPict);
+ free(_curAnim);
free(_rightFramePict);
}
diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h
index dbd0449d9a..94e9716e7b 100644
--- a/engines/mortevielle/mortevielle.h
+++ b/engines/mortevielle/mortevielle.h
@@ -476,8 +476,9 @@ public:
// TODO: Replace the following with proper implementations, or refactor out the code using them
byte _mem[65536 * 16];
byte *_curPict;
+ byte *_curAnim;
byte *_rightFramePict;
-
+
Debugger _debugger;
ScreenSurface _screenSurface;
PaletteManager _paletteManager;
diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp
index 85cc5809dc..99c06c7c4c 100644
--- a/engines/mortevielle/outtext.cpp
+++ b/engines/mortevielle/outtext.cpp
@@ -159,8 +159,11 @@ void TextHandler::loadAniFile(Common::String filename, int32 skipSize, int lengt
error("Missing file - %s", filename.c_str());
assert(skipSize + length <= f.size());
+
+ free(_vm->_curAnim);
+ _vm->_curAnim = (byte *)malloc(sizeof(byte) * length);
f.seek(skipSize);
- f.read(&_vm->_mem[(kAdrAni * 16)], length);
+ f.read(_vm->_curAnim, length);
f.close();
}
diff --git a/engines/mortevielle/outtext.h b/engines/mortevielle/outtext.h
index 1c69d9b9b4..44868036d5 100644
--- a/engines/mortevielle/outtext.h
+++ b/engines/mortevielle/outtext.h
@@ -33,8 +33,6 @@
namespace Mortevielle {
class MortevielleEngine;
-const int kAdrAni = 0x7314;
-
class TextHandler {
private:
MortevielleEngine *_vm;
diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp
index f82f6f7837..001b2d3baf 100644
--- a/engines/mortevielle/utils.cpp
+++ b/engines/mortevielle/utils.cpp
@@ -2581,12 +2581,12 @@ void MortevielleEngine::adzon() {
* @remarks Originally called 'animof'
*/
int MortevielleEngine::getAnimOffset(int frameNum, int animNum) {
- int animCount = _mem[(kAdrAni * 16) + 1];
+ int animCount = _curAnim[1];
int aux = animNum;
if (frameNum != 1)
aux += animCount;
- return (animCount << 2) + 2 + READ_BE_UINT16(&_mem[(kAdrAni * 16) + (aux << 1)]);
+ return (animCount << 2) + 2 + READ_BE_UINT16(&_curAnim[aux << 1]);
}
/**
@@ -2969,7 +2969,7 @@ void MortevielleEngine::displayAnimFrame(int frameNum, int animId) {
int offset = getAnimOffset(frameNum, animId);
GfxSurface surface;
- surface.decode(&_mem[(kAdrAni * 16) + offset]);
+ surface.decode(&_curAnim[offset]);
_screenSurface.drawPicture(surface, 0, 12);
prepareScreenType1();