aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gfx.cpp167
-rw-r--r--object.cpp14
-rw-r--r--saveload.cpp14
-rw-r--r--script.cpp164
-rw-r--r--script_v1.cpp2
-rw-r--r--scummvm.cpp44
6 files changed, 192 insertions, 213 deletions
diff --git a/gfx.cpp b/gfx.cpp
index 8cc886675a..38761c2d78 100644
--- a/gfx.cpp
+++ b/gfx.cpp
@@ -552,10 +552,9 @@ void Scumm::redrawBGAreas() {
CameraData *cd = &camera;
int diff; // Full throttle hack
-#if !defined(FULL_THROTTLE)
- if (cd->_cur.x!=cd->_last.x && charset._hasMask)
- stopTalk();
-#endif
+ if (!(_features & GF_AFTER_V7))
+ if (cd->_cur.x!=cd->_last.x && charset._hasMask)
+ stopTalk();
val = 0;
@@ -567,32 +566,31 @@ void Scumm::redrawBGAreas() {
}
}
-#if defined(FULL_THROTTLE)
- diff = (cd->_cur.x>>3) - (cd->_last.x>>3);
- if (_fullRedraw==0 && diff==1) {
- val = 2;
- redrawBGStrip(39, 1);
- } else if (_fullRedraw==0 && diff==-1) {
- val = 1;
- redrawBGStrip(0, 1);
- } else if (_fullRedraw!=0 || diff!=0) {
- _BgNeedsRedraw = false;
- _fullRedraw = false;
- redrawBGStrip(0, 40);
- }
-
-#else
- if (_fullRedraw==0 && cd->_cur.x - cd->_last.x == 8) {
- val = 2;
- redrawBGStrip(39, 1);
- } else if (_fullRedraw==0 && cd->_cur.x - cd->_last.x == -8) {
- val = 1;
- redrawBGStrip(0, 1);
- } else if (_fullRedraw!=0 || cd->_cur.x != cd->_last.x) {
- _BgNeedsRedraw = false;
- redrawBGStrip(0, 40);
+ if(_features & GF_AFTER_V7) {
+ diff = (cd->_cur.x>>3) - (cd->_last.x>>3);
+ if (_fullRedraw==0 && diff==1) {
+ val = 2;
+ redrawBGStrip(39, 1);
+ } else if (_fullRedraw==0 && diff==-1) {
+ val = 1;
+ redrawBGStrip(0, 1);
+ } else if (_fullRedraw!=0 || diff!=0) {
+ _BgNeedsRedraw = false;
+ _fullRedraw = false;
+ redrawBGStrip(0, 40);
+ }
+ } else {
+ if (_fullRedraw==0 && cd->_cur.x - cd->_last.x == 8) {
+ val = 2;
+ redrawBGStrip(39, 1);
+ } else if (_fullRedraw==0 && cd->_cur.x - cd->_last.x == -8) {
+ val = 1;
+ redrawBGStrip(0, 1);
+ } else if (_fullRedraw!=0 || cd->_cur.x != cd->_last.x) {
+ _BgNeedsRedraw = false;
+ redrawBGStrip(0, 40);
+ }
}
-#endif
drawRoomObjects(val);
_BgNeedsRedraw = false;
@@ -1815,84 +1813,79 @@ void Scumm::moveCamera() {
}
}
-#if defined(FULL_THROTTLE)
void Scumm::cameraMoved() {
- CameraData *cd = &camera;
-
- assert(cd->_cur.x>=160 && cd->_cur.y>=100);
+ if(_features & GF_AFTER_V7) {
+ CameraData *cd = &camera;
- _screenStartStrip = (cd->_cur.x-160) >> 3;
- _screenEndStrip = _screenStartStrip + 39;
- virtscr[0].xstart = _screenStartStrip << 3;
+ assert(cd->_cur.x>=160 && cd->_cur.y>=100);
- _screenLeft = cd->_cur.x - 160;
- _screenTop = cd->_cur.y - 100;
-}
+ _screenStartStrip = (cd->_cur.x-160) >> 3;
+ _screenEndStrip = _screenStartStrip + 39;
+ virtscr[0].xstart = _screenStartStrip << 3;
+
+ _screenLeft = cd->_cur.x - 160;
+ _screenTop = cd->_cur.y - 100;
+ } else {
+ CameraData *cd = &camera;
-#else
-void Scumm::cameraMoved() {
- CameraData *cd = &camera;
+ if (cd->_cur.x < 160) {
+ cd->_cur.x = 160;
+ } else if (cd->_cur.x + 160 >= _scrWidth) {
+ cd->_cur.x = _scrWidth-160;
+ }
- if (cd->_cur.x < 160) {
- cd->_cur.x = 160;
- } else if (cd->_cur.x + 160 >= _scrWidth) {
- cd->_cur.x = _scrWidth-160;
+ _screenStartStrip = (cd->_cur.x >> 3) - 20;
+ _screenEndStrip = _screenStartStrip + 39;
+ virtscr[0].xstart = _screenStartStrip << 3;
}
-
- _screenStartStrip = (cd->_cur.x >> 3) - 20;
- _screenEndStrip = _screenStartStrip + 39;
- virtscr[0].xstart = _screenStartStrip << 3;
}
-#endif
-#if defined(FULL_THROTTLE)
void Scumm::panCameraTo(int x, int y) {
- CameraData *cd = &camera;
- cd->_follows = 0;
- cd->_dest.x = x;
- cd->_dest.y = y;
-}
+ if(_features & GF_AFTER_V7) {
+ CameraData *cd = &camera;
+ cd->_follows = 0;
+ cd->_dest.x = x;
+ cd->_dest.y = y;
+ } else {
-#else
-void Scumm::panCameraTo(int x, int y) {
- CameraData *cd = &camera;
- cd->_dest.x = x;
- cd->_mode = CM_PANNING;
- cd->_movingToActor = 0;
+ CameraData *cd = &camera;
+ cd->_dest.x = x;
+ cd->_mode = CM_PANNING;
+ cd->_movingToActor = 0;
+ }
}
-#endif
void Scumm::actorFollowCamera(int act) {
-#if !defined(FULL_THROTTLE)
- int old;
- CameraData *cd = &camera;
+ if(!(_features & GF_AFTER_V7)) {
+ int old;
+ CameraData *cd = &camera;
- /* mi1 compatibilty */
- if (act==0) {
- cd->_mode = CM_NORMAL;
- cd->_follows = 0;
- cd->_movingToActor = 0;
- return;
- }
+ /* mi1 compatibilty */
+ if (act==0) {
+ cd->_mode = CM_NORMAL;
+ cd->_follows = 0;
+ cd->_movingToActor = 0;
+ return;
+ }
- old = cd->_follows;
- setCameraFollows(derefActorSafe(act, "actorFollowCamera"));
- if (cd->_follows != old)
- runHook(0);
+ old = cd->_follows;
+ setCameraFollows(derefActorSafe(act, "actorFollowCamera"));
+ if (cd->_follows != old)
+ runHook(0);
- cd->_movingToActor = 0;
-#endif
+ cd->_movingToActor = 0;
+ }
}
void Scumm::setCameraAtEx(int at) {
-#if !defined(FULL_THROTTLE)
- CameraData *cd = &camera;
- cd->_mode = CM_NORMAL;
- cd->_cur.x = at;
- setCameraAt(at, 0);
- cd->_movingToActor = 0;
-#endif
+ if(!(_features & GF_AFTER_V7)) {
+ CameraData *cd = &camera;
+ cd->_mode = CM_NORMAL;
+ cd->_cur.x = at;
+ setCameraAt(at, 0);
+ cd->_movingToActor = 0;
+ }
}
void Scumm::palManipulate() {
diff --git a/object.cpp b/object.cpp
index cbbbc71d07..efb7602fa8 100644
--- a/object.cpp
+++ b/object.cpp
@@ -1045,13 +1045,13 @@ void Scumm::setCursorImg(uint img, uint room, uint imgindex) {
READ_LE_UINT16(&foir.imhd->old.hotspot[0].y));
-#if !defined(FULL_THROTTLE)
- w = READ_LE_UINT16(&foir.cdhd->v6.w)>>3;
- h = READ_LE_UINT16(&foir.cdhd->v6.h)>>3;
-#else
- w = READ_LE_UINT16(&foir.imhd->v7.width)>>3;
- h = READ_LE_UINT16(&foir.imhd->v7.height)>>3;
-#endif
+ if(!(_features & GF_AFTER_V7)) {
+ w = READ_LE_UINT16(&foir.cdhd->v6.w)>>3;
+ h = READ_LE_UINT16(&foir.cdhd->v6.h)>>3;
+ } else {
+ w = READ_LE_UINT16(&foir.imhd->v7.width)>>3;
+ h = READ_LE_UINT16(&foir.imhd->v7.height)>>3;
+ }
dataptr = findResource(IMxx_tags[imgindex],foir.obim);
if (dataptr==NULL)
diff --git a/saveload.cpp b/saveload.cpp
index 15dddae3d9..aa96b129fe 100644
--- a/saveload.cpp
+++ b/saveload.cpp
@@ -128,9 +128,8 @@ bool Scumm::loadState(int slot, bool compat) {
_drawObjectQueNr = 0;
_verbMouseOver = 0;
-#if defined(FULL_THROTTLE)
- cameraMoved();
-#endif
+ if(_features & GF_AFTER_V7)
+ cameraMoved();
initBGBuffers();
@@ -324,7 +323,6 @@ void Scumm::saveOrLoad(Serializer *s) {
MKARRAY(Scumm,_charsetData[0][0],sleByte,10*16),
MKLINE(Scumm,_curExecScript,sleUint16),
-#if defined(FULL_THROTTLE)
MKLINE(Scumm,camera._dest.x,sleInt16),
MKLINE(Scumm,camera._dest.y,sleInt16),
MKLINE(Scumm,camera._cur.x,sleInt16),
@@ -333,12 +331,6 @@ void Scumm::saveOrLoad(Serializer *s) {
MKLINE(Scumm,camera._last.y,sleInt16),
MKLINE(Scumm,camera._accel.x,sleInt16),
MKLINE(Scumm,camera._accel.y,sleInt16),
- MKLINE(Scumm,camera._follows,sleByte),
- MKLINE(Scumm,camera._movingToActor,sleUint16),
-#else
- MKLINE(Scumm,camera._dest.x,sleInt16),
- MKLINE(Scumm,camera._cur.x,sleInt16),
- MKLINE(Scumm,camera._last.x,sleInt16),
MKLINE(Scumm,_screenStartStrip,sleInt16),
MKLINE(Scumm,_screenEndStrip,sleInt16),
MKLINE(Scumm,camera._mode,sleByte),
@@ -346,7 +338,7 @@ void Scumm::saveOrLoad(Serializer *s) {
MKLINE(Scumm,camera._leftTrigger,sleInt16),
MKLINE(Scumm,camera._rightTrigger,sleInt16),
MKLINE(Scumm,camera._movingToActor,sleUint16),
-#endif
+
MKLINE(Scumm,_actorToPrintStrFor,sleByte),
MKLINE(Scumm,_charsetColor,sleByte),
/* XXX Convert into word next time format changes */
diff --git a/script.cpp b/script.cpp
index 4ea32ece6e..1a368b21dc 100644
--- a/script.cpp
+++ b/script.cpp
@@ -606,11 +606,10 @@ void Scumm::checkAndRunVar33() {
_sentenceNum--;
-#if !defined(FULL_THROTTLE)
- if (sentence[_sentenceNum].unk2 &&
- sentence[_sentenceNum].unk3==sentence[_sentenceNum].unk4)
- return;
-#endif
+ if(!(_features & GF_AFTER_V7))
+ if (sentence[_sentenceNum].unk2 &&
+ sentence[_sentenceNum].unk3==sentence[_sentenceNum].unk4)
+ return;
_localParamList[0] = sentence[_sentenceNum].unk5;
_localParamList[1] = sentence[_sentenceNum].unk4;
@@ -797,64 +796,63 @@ void Scumm::faceActorToObj(int act, int obj) {
}
void Scumm::animateActor(int act, int anim) {
-#if defined(FULL_THROTTLE)
- int cmd,dir;
- Actor *a;
+ if(_features & GF_AFTER_V7) {
+ int cmd,dir;
+ Actor *a;
- a = derefActorSafe(act, "animateActor");
+ a = derefActorSafe(act, "animateActor");
- if (anim==0xFF)
- anim = 2000;
+ if (anim==0xFF)
+ anim = 2000;
- cmd = anim / 1000;
- dir = anim % 1000;
+ cmd = anim / 1000;
+ dir = anim % 1000;
- /* temporary code */
-// dir = newDirToOldDir(dir);
-
- switch(cmd) {
- case 2:
- stopActorMoving(a);
- startAnimActor(a, a->standFrame);
- break;
- case 3:
- a->moving &= ~4;
- fixActorDirection(a, dir);
- break;
- case 4:
- turnToDirection(a, dir);
- break;
- default:
- startAnimActor(a, anim);
- }
+ /* temporary code */
+// dir = newDirToOldDir(dir);
+ switch(cmd) {
+ case 2:
+ stopActorMoving(a);
+ startAnimActor(a, a->standFrame);
+ break;
+ case 3:
+ a->moving &= ~4;
+ fixActorDirection(a, dir);
+ break;
+ case 4:
+ turnToDirection(a, dir);
+ break;
+ default:
+ startAnimActor(a, anim);
+ }
-#else
- int dir;
- Actor *a;
-
- a = derefActorSafe(act, "animateActor");
- if (!a) return;
+ } else {
+ int dir;
+ Actor *a;
- dir = anim&3;
+ a = derefActorSafe(act, "animateActor");
+ if (!a) return;
+
+ dir = anim&3;
- switch(anim>>2) {
- case 0x3F:
- stopActorMoving(a);
- startAnimActor(a, a->standFrame);
- break;
- case 0x3E:
- a->moving &= ~4;
- fixActorDirection(a, oldDirToNewDir(dir));
- break;
- case 0x3D:
- turnToDirection(a, oldDirToNewDir(dir));
- break;
- default:
- startAnimActor(a, anim);
+ switch(anim>>2) {
+ case 0x3F:
+ stopActorMoving(a);
+ startAnimActor(a, a->standFrame);
+ break;
+ case 0x3E:
+ a->moving &= ~4;
+ fixActorDirection(a, oldDirToNewDir(dir));
+ break;
+ case 0x3D:
+ turnToDirection(a, oldDirToNewDir(dir));
+ break;
+ default:
+ startAnimActor(a, anim);
+ }
+
}
-
-#endif
}
bool Scumm::isScriptRunning(int script) {
@@ -862,7 +860,7 @@ bool Scumm::isScriptRunning(int script) {
ScriptSlot *ss = vm.slot;
for (i=0; i<NUM_SCRIPT_SLOT; i++,ss++)
if (ss->number==script && (ss->where==WIO_GLOBAL ||
- ss->where==WIO_LOCAL) && ss->status)
+ ss->where==WIO_LOCAL) && ss->status)
return true;
return false;
}
@@ -1018,46 +1016,44 @@ void Scumm::exitCutscene() {
vm.cutScenePtr[vm.cutSceneStackPointer] = 0;
}
}
-#if defined(FULL_THROTTLE)
void Scumm::doSentence(int c, int b, int a) {
- SentenceTab *st;
+ if(_features & GF_AFTER_V7) {
+ SentenceTab *st;
- if (b==a)
- return;
+ if (b==a)
+ return;
- st = &sentence[_sentenceNum-1];
+ st = &sentence[_sentenceNum-1];
- if (_sentenceNum &&
- st->unk5 == c && st->unk4==b && st->unk3==a)
- return;
+ if (_sentenceNum &&
+ st->unk5 == c && st->unk4==b && st->unk3==a)
+ return;
- _sentenceNum++;
- st++;
+ _sentenceNum++;
+ st++;
- st->unk5 = c;
- st->unk4 = b;
- st->unk3 = a;
- st->unk = 0;
+ st->unk5 = c;
+ st->unk4 = b;
+ st->unk3 = a;
+ st->unk = 0;
- warning("dosentence(%d,%d,%d)", c, b, a);
+ warning("dosentence(%d,%d,%d)", c, b, a);
-}
+ } else {
-#else
-void Scumm::doSentence(int c, int b, int a) {
- SentenceTab *st;
+ SentenceTab *st;
- st = &sentence[_sentenceNum++];
+ st = &sentence[_sentenceNum++];
- st->unk5 = c;
- st->unk4 = b;
- st->unk3 = a;
+ st->unk5 = c;
+ st->unk4 = b;
+ st->unk3 = a;
- if (!(st->unk3&0xFF00))
- st->unk2 = 0;
- else
- st->unk2 = 1;
+ if (!(st->unk3&0xFF00))
+ st->unk2 = 0;
+ else
+ st->unk2 = 1;
- st->unk = 0;
+ st->unk = 0;
+ }
}
-#endif
diff --git a/script_v1.cpp b/script_v1.cpp
index c0c6eb4628..5ccf707a73 100644
--- a/script_v1.cpp
+++ b/script_v1.cpp
@@ -1468,10 +1468,8 @@ void Scumm::o5_loadRoomWithEgo() {
startScene(a->room, a, obj);
_vars[VAR_WALKTO_OBJ] = 0;
-#if !defined(FULL_THROTTLE)
camera._dest.x = camera._cur.x = a->x;
setCameraFollows(a);
-#endif
_fullRedraw=1;
diff --git a/scummvm.cpp b/scummvm.cpp
index 0852dc7c57..94566f16c1 100644
--- a/scummvm.cpp
+++ b/scummvm.cpp
@@ -88,19 +88,19 @@ void Scumm::scummInit() {
_verbs[i].key = 0;
}
-#if !defined(FULL_THROTTLE)
- camera._leftTrigger = 10;
- camera._rightTrigger = 30;
- camera._mode = 0;
-#endif
+ if(!(_features & GF_AFTER_V7)) {
+ camera._leftTrigger = 10;
+ camera._rightTrigger = 30;
+ camera._mode = 0;
+ }
camera._follows = 0;
virtscr[0].xstart = 0;
-#if !defined(FULL_THROTTLE)
- _vars[VAR_V5_DRAWFLAGS] = 11;
- _vars[VAR_59] = 3;
-#endif
+ if(!(_features & GF_AFTER_V7)) {
+ _vars[VAR_V5_DRAWFLAGS] = 11;
+ _vars[VAR_59] = 3;
+ }
mouse.x = 104;
mouse.y = 56;
@@ -162,19 +162,19 @@ void Scumm::scummInit() {
void Scumm::initScummVars() {
-#if !defined(FULL_THROTTLE)
- _vars[VAR_CURRENTDRIVE] = _currentDrive;
- _vars[VAR_FIXEDDISK] = checkFixedDisk();
- _vars[VAR_SOUNDCARD] = _soundCardType;
- _vars[VAR_VIDEOMODE] = 0x13;
- _vars[VAR_HEAPSPACE] = 630;
- _vars[VAR_MOUSEPRESENT] = _mousePresent;
- _vars[VAR_SOUNDPARAM] = _soundParam;
- _vars[VAR_SOUNDPARAM2] = _soundParam2;
- _vars[VAR_SOUNDPARAM3] = _soundParam3;
- if (_features&GF_AFTER_V6)
- _vars[VAR_V6_EMSSPACE] = 10000;
-#endif
+ if(!(_features & GF_AFTER_V7)) {
+ _vars[VAR_CURRENTDRIVE] = _currentDrive;
+ _vars[VAR_FIXEDDISK] = checkFixedDisk();
+ _vars[VAR_SOUNDCARD] = _soundCardType;
+ _vars[VAR_VIDEOMODE] = 0x13;
+ _vars[VAR_HEAPSPACE] = 630;
+ _vars[VAR_MOUSEPRESENT] = _mousePresent;
+ _vars[VAR_SOUNDPARAM] = _soundParam;
+ _vars[VAR_SOUNDPARAM2] = _soundParam2;
+ _vars[VAR_SOUNDPARAM3] = _soundParam3;
+ if (_features&GF_AFTER_V6)
+ _vars[VAR_V6_EMSSPACE] = 10000;
+ }
}
void Scumm::checkRange(int max, int min, int no, const char *str) {