From 74bb0a8b3c7f6e3430f4693ead42b9e9a88c5de9 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 23 Nov 2013 12:18:52 -0500 Subject: TSAGE: In progress work and bugfixes for R2R centroid handling --- engines/tsage/core.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'engines/tsage/core.cpp') diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp index 040dbc8c25..a281354f0d 100644 --- a/engines/tsage/core.cpp +++ b/engines/tsage/core.cpp @@ -2707,6 +2707,9 @@ GfxSurface SceneObject::getFrame() { _visageImages.setVisage(_visage, _strip); GfxSurface frame = _visageImages.getFrame(_frame); + // Reset any centroid adjustment flags + _visageImages.getFrameFlags(_frame) &= ~(FRAME_FLIP_CENTROID_X | FRAME_FLIP_CENTROID_Y); + // If shading is needed, post apply the shadiing onto the frame if ((g_vm->getGameID() == GType_Ringworld2) && (_shade >= 1)) { Graphics::Surface s = frame.lockSurface(); @@ -2727,6 +2730,7 @@ GfxSurface SceneObject::getFrame() { void SceneObject::reposition() { GfxSurface frame = getFrame(); + _bounds.resize(frame, _position.x, _position.y - _yDiff, _percent); _xs = _bounds.left; _xe = _bounds.right; @@ -3296,6 +3300,20 @@ GfxSurface Visage::getFrame(int frameNum) { return result; } +byte &Visage::getFrameFlags(int frameNum) { + int numFrames = READ_LE_UINT16(_data); + if (frameNum > numFrames) + frameNum = numFrames; + if (frameNum > 0) + --frameNum; + + int offset = READ_LE_UINT32(_data + 2 + frameNum * 4); + byte *frameData = _data + offset; + + return *(frameData + 9); +} + + int Visage::getFrameCount() const { return READ_LE_UINT16(_data); } -- cgit v1.2.3 From d0c2493be50c3c28c57be5317061af413c699062 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 23 Nov 2013 17:09:35 -0500 Subject: TSAGE: Further fixes for object centroid handling --- engines/tsage/core.cpp | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) (limited to 'engines/tsage/core.cpp') diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp index a281354f0d..320d3ddd2c 100644 --- a/engines/tsage/core.cpp +++ b/engines/tsage/core.cpp @@ -2707,8 +2707,16 @@ GfxSurface SceneObject::getFrame() { _visageImages.setVisage(_visage, _strip); GfxSurface frame = _visageImages.getFrame(_frame); - // Reset any centroid adjustment flags - _visageImages.getFrameFlags(_frame) &= ~(FRAME_FLIP_CENTROID_X | FRAME_FLIP_CENTROID_Y); + // Reset any centroid adjustment flags, in + frame._flags &= ~(FRAME_FLIP_CENTROID_X | FRAME_FLIP_CENTROID_Y); + + // For later games, check whether the appropriate object flags are set for flipping + if (g_vm->getGameID() != GType_Ringworld) { + if ((_flags & OBJFLAG_FLIP_CENTROID_X) || _visageImages._flipHoriz) + frame._flags |= FRAME_FLIP_CENTROID_X; + if ((_flags & OBJFLAG_FLIP_CENTROID_Y) || _visageImages._flipVert) + frame._flags |= FRAME_FLIP_CENTROID_Y; + } // If shading is needed, post apply the shadiing onto the frame if ((g_vm->getGameID() == GType_Ringworld2) && (_shade >= 1)) { @@ -3300,20 +3308,6 @@ GfxSurface Visage::getFrame(int frameNum) { return result; } -byte &Visage::getFrameFlags(int frameNum) { - int numFrames = READ_LE_UINT16(_data); - if (frameNum > numFrames) - frameNum = numFrames; - if (frameNum > 0) - --frameNum; - - int offset = READ_LE_UINT32(_data + 2 + frameNum * 4); - byte *frameData = _data + offset; - - return *(frameData + 9); -} - - int Visage::getFrameCount() const { return READ_LE_UINT16(_data); } -- cgit v1.2.3 From 1aa0d0bd9b78ac008961730644efdd5d3f8a2a12 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 23 Nov 2013 23:23:43 -0500 Subject: TSAGE: Added new palette rotation code, to fix R2R rimwall vechile scene --- engines/tsage/core.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'engines/tsage/core.cpp') diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp index 320d3ddd2c..a519ffbd10 100644 --- a/engines/tsage/core.cpp +++ b/engines/tsage/core.cpp @@ -1153,6 +1153,13 @@ void PaletteRotation::signal() { if (flag) _currIndex = _start; } + + // Added in Return to Ringworld + if (_currIndex < _start) { + flag = decDuration(); + if (flag) + _currIndex = _end; + } break; case 2: _currIndex += _idxChange; -- cgit v1.2.3 From f4d582f6406bbce2c2c19103944bf2fbac14da72 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sun, 24 Nov 2013 22:29:49 +0100 Subject: TSAGE: R2R - rename _actorDestPos --- engines/tsage/core.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'engines/tsage/core.cpp') diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp index a519ffbd10..6c47cac1ef 100644 --- a/engines/tsage/core.cpp +++ b/engines/tsage/core.cpp @@ -2110,7 +2110,7 @@ SceneObject::SceneObject() : SceneHotspot() { _shade = _oldShade = 0; _linkedActor = NULL; - _field8A = Common::Point(0, 0); + _actorDestPos = Common::Point(0, 0); _angle = 0; _xs = 0; _xe = 0; @@ -2504,8 +2504,8 @@ void SceneObject::synchronize(Serializer &s) { s.syncAsSint16LE(_moveDiff.x); s.syncAsSint16LE(_moveDiff.y); s.syncAsSint32LE(_moveRate); if (g_vm->getGameID() == GType_Ringworld2) { - s.syncAsSint16LE(_field8A.x); - s.syncAsSint16LE(_field8A.y); + s.syncAsSint16LE(_actorDestPos.x); + s.syncAsSint16LE(_actorDestPos.y); } SYNC_POINTER(_endAction); s.syncAsUint32LE(_regionBitList); -- cgit v1.2.3 From c211cede06224a2d7fab1f94ce94f723a3022ebb Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 26 Nov 2013 07:59:12 +0100 Subject: TSAGE: BF - Remove some useless variables, some renaming --- engines/tsage/core.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'engines/tsage/core.cpp') diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp index 6c47cac1ef..88f2c85ffd 100644 --- a/engines/tsage/core.cpp +++ b/engines/tsage/core.cpp @@ -1545,7 +1545,11 @@ void ScenePalette::synchronize(Serializer &s) { s.syncAsSint32LE(_colors.foreground); s.syncAsSint32LE(_colors.background); - s.syncAsSint32LE(_field412); + if (s.getVersion() < 12) { + int useless = 0; + s.syncAsSint16LE(useless); + } + s.syncAsByte(_redColor); s.syncAsByte(_greenColor); s.syncAsByte(_blueColor); -- cgit v1.2.3