[Scummvm-git-logs] scummvm master -> e761fe91187842b5bfc9979d608a4f62a4d3d261
mgerhardy
martin.gerhardy at gmail.com
Thu Nov 19 18:30:12 UTC 2020
This automated email contains information about 9 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
8eb377226d TWINE: endless loops for samples is -1 - but we are expecting 0
ff86acbd03 TWINE: renamed method parameter
b2d14d50cf TWINE: move script comments
d19ad32bb7 TWINE: brk file comments
f6d9a81d7f TWINE: move script fix
47405a5e61 TWINE: fixed missing read of kFollow2 actor idx
89c02f349a TWINE: implemented mPLAY_FLA move script
b3a1882eb2 TWINE: added new animation id constants
e761fe9118 TWINE: fixed off-by-one error in mANGLE_RND
Commit: 8eb377226d3f349e7a987d54d6afbb89fc1be4d1
https://github.com/scummvm/scummvm/commit/8eb377226d3f349e7a987d54d6afbb89fc1be4d1
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2020-11-19T18:35:27+01:00
Commit Message:
TWINE: endless loops for samples is -1 - but we are expecting 0
Changed paths:
engines/twine/sound.cpp
diff --git a/engines/twine/sound.cpp b/engines/twine/sound.cpp
index 855af41ed3..aabe80a54d 100644
--- a/engines/twine/sound.cpp
+++ b/engines/twine/sound.cpp
@@ -137,6 +137,9 @@ bool Sound::playSample(int channelIdx, int index, uint8 *sampPtr, int32 sampSize
delete stream;
return false;
}
+ if (loop == -1) {
+ loop = 0;
+ }
_engine->_system->getMixer()->playStream(soundType, &samplesPlaying[channelIdx], Audio::makeLoopingAudioStream(audioStream, loop), index);
return true;
}
Commit: ff86acbd03a561e0e29f51a1a88860a34a99a359
https://github.com/scummvm/scummvm/commit/ff86acbd03a561e0e29f51a1a88860a34a99a359
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2020-11-19T18:35:27+01:00
Commit Message:
TWINE: renamed method parameter
Changed paths:
engines/twine/actor.cpp
engines/twine/extra.cpp
engines/twine/extra.h
diff --git a/engines/twine/actor.cpp b/engines/twine/actor.cpp
index f605a5d9cf..d08ae1a3d5 100644
--- a/engines/twine/actor.cpp
+++ b/engines/twine/actor.cpp
@@ -486,12 +486,12 @@ void Actor::processActorExtraBonus(int32 actorIdx) { // GiveExtraBonus
if (actor->dynamicFlags.bIsDead) {
_engine->_extra->addExtraBonus(actor->x, actor->y, actor->z, 0x100, 0, bonusSprite, actor->bonusAmount);
// FIXME add constant for sample index
- _engine->_sound->playSample(Samples::ItemPopup, 0x1000, 1, actor->x, actor->y, actor->z, actorIdx);
+ _engine->_sound->playSample(Samples::ItemPopup, 4096, 1, actor->x, actor->y, actor->z, actorIdx);
} else {
const int32 angle = _engine->_movements->getAngleAndSetTargetActorDistance(actor->x, actor->z, _engine->_scene->sceneHero->x, _engine->_scene->sceneHero->z);
_engine->_extra->addExtraBonus(actor->x, actor->y + actor->boudingBox.y.topRight, actor->z, 200, angle, bonusSprite, actor->bonusAmount);
// FIXME add constant for sample index
- _engine->_sound->playSample(Samples::ItemPopup, 0x1000, 1, actor->x, actor->y + actor->boudingBox.y.topRight, actor->z, actorIdx);
+ _engine->_sound->playSample(Samples::ItemPopup, 4096, 1, actor->x, actor->y + actor->boudingBox.y.topRight, actor->z, actorIdx);
}
}
diff --git a/engines/twine/extra.cpp b/engines/twine/extra.cpp
index abc3d23aec..6b5e940b92 100644
--- a/engines/twine/extra.cpp
+++ b/engines/twine/extra.cpp
@@ -158,7 +158,7 @@ void Extra::resetExtras() {
}
}
-void Extra::throwExtra(ExtraListStruct *extra, int32 var1, int32 var2, int32 var3, int32 var4) { // InitFly
+void Extra::throwExtra(ExtraListStruct *extra, int32 var1, int32 angle, int32 var3, int32 var4) { // InitFly
extra->type |= 2;
extra->lastX = extra->x;
@@ -169,7 +169,7 @@ void Extra::throwExtra(ExtraListStruct *extra, int32 var1, int32 var2, int32 var
extra->destY = -_engine->_renderer->destZ;
- _engine->_movements->rotateActor(0, _engine->_renderer->destX, var2);
+ _engine->_movements->rotateActor(0, _engine->_renderer->destX, angle);
extra->destX = _engine->_renderer->destX;
extra->destZ = _engine->_renderer->destZ;
@@ -283,7 +283,7 @@ int32 Extra::addExtraBonus(int32 x, int32 y, int32 z, int32 param, int32 angle,
return -1;
}
-int32 Extra::addExtraThrow(int32 actorIdx, int32 x, int32 y, int32 z, int32 spriteIdx, int32 var2, int32 var3, int32 var4, int32 var5, int32 strengthOfHit) { // ThrowExtra
+int32 Extra::addExtraThrow(int32 actorIdx, int32 x, int32 y, int32 z, int32 spriteIdx, int32 var2, int32 angle, int32 var4, int32 var5, int32 strengthOfHit) { // ThrowExtra
for (int32 i = 0; i < EXTRA_MAX_ENTRIES; i++) {
ExtraListStruct *extra = &extraList[i];
if (extra->info0 != -1) {
@@ -296,7 +296,7 @@ int32 Extra::addExtraThrow(int32 actorIdx, int32 x, int32 y, int32 z, int32 spri
extra->z = z;
// same as InitFly
- throwExtra(extra, var2, var3, var4, var5);
+ throwExtra(extra, var2, angle, var4, var5);
extra->strengthOfHit = strengthOfHit;
extra->lifeTime = _engine->lbaTime;
diff --git a/engines/twine/extra.h b/engines/twine/extra.h
index 1c4634ab15..8d0023de76 100644
--- a/engines/twine/extra.h
+++ b/engines/twine/extra.h
@@ -59,7 +59,7 @@ class Extra {
private:
TwinEEngine *_engine;
- void throwExtra(ExtraListStruct *extra, int32 var1, int32 var2, int32 var3, int32 var4);
+ void throwExtra(ExtraListStruct *extra, int32 var1, int32 angle, int32 var3, int32 var4);
void processMagicballBounce(ExtraListStruct *extra, int32 x, int32 y, int32 z);
int32 findExtraKey();
int32 addExtraAimingAtKey(int32 actorIdx, int32 x, int32 y, int32 z, int32 spriteIdx, int32 extraIdx);
@@ -84,7 +84,7 @@ public:
void addExtraSpecial(int32 x, int32 y, int32 z, ExtraSpecialType type);
int32 addExtraBonus(int32 x, int32 y, int32 z, int32 param, int32 angle, int32 type, int32 bonusAmount);
- int32 addExtraThrow(int32 actorIdx, int32 x, int32 y, int32 z, int32 spriteIdx, int32 var2, int32 var3, int32 var4, int32 var5, int32 strengthOfHit);
+ int32 addExtraThrow(int32 actorIdx, int32 x, int32 y, int32 z, int32 spriteIdx, int32 var2, int32 angle, int32 var4, int32 var5, int32 strengthOfHit);
int32 addExtraAiming(int32 actorIdx, int32 x, int32 y, int32 z, int32 spriteIdx, int32 targetActorIdx, int32 maxSpeed, int32 strengthOfHit);
void addExtraThrowMagicball(int32 x, int32 y, int32 z, int32 param1, int32 angle, int32 param2, int32 param3);
Commit: b2d14d50cf735e467f533c0e19e96b5980f6b43b
https://github.com/scummvm/scummvm/commit/b2d14d50cf735e467f533c0e19e96b5980f6b43b
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2020-11-19T18:35:27+01:00
Commit Message:
TWINE: move script comments
Changed paths:
engines/twine/script_move_v1.cpp
diff --git a/engines/twine/script_move_v1.cpp b/engines/twine/script_move_v1.cpp
index f42e6866d1..527d04da4b 100644
--- a/engines/twine/script_move_v1.cpp
+++ b/engines/twine/script_move_v1.cpp
@@ -133,7 +133,7 @@ static int32 mWAIT_ANIM(TwinEEngine *engine, MoveScriptContext &ctx) {
/*0x06*/
static int32 mLOOP(TwinEEngine *engine, MoveScriptContext &ctx) {
- // TODO
+ // TODO no params
return -1;
}
@@ -454,7 +454,7 @@ static int32 mSAMPLE_STOP(TwinEEngine *engine, MoveScriptContext &ctx) {
/*0x1E*/
static int32 mPLAY_FLA(TwinEEngine *engine, MoveScriptContext &ctx) {
- // TODO
+ // TODO param1: null-terminated string - name of the fla file to play (extension may be included, but it's not required)
return -1;
}
Commit: d19ad32bb78f451f098d92f36f7478a065df441f
https://github.com/scummvm/scummvm/commit/d19ad32bb78f451f098d92f36f7478a065df441f
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2020-11-19T18:35:27+01:00
Commit Message:
TWINE: brk file comments
Changed paths:
engines/twine/resources.h
diff --git a/engines/twine/resources.h b/engines/twine/resources.h
index 15e70b0098..3e60ea9e95 100644
--- a/engines/twine/resources.h
+++ b/engines/twine/resources.h
@@ -205,6 +205,7 @@ public:
* isometric bricks, which are some kind of tiles, that are used for building the terrains in LBA 1 isometric scenes.
* One brick is the tiniest piece of a grid, which has 64 x 64 x 25 cells. Bricks cannot be used directly on a grid,
* but instead they are grouped into blocks by block libraries, which are then referenced by grids
+ * Bricks are images or sprites in a special format.
*/
static constexpr const char *HQR_LBA_BRK_FILE = "lba_brk.hqr";
// scenes (active area content (actors, scripts, etc.))
Commit: f6d9a81d7ff3f77ad87170466d21e35d1bace14f
https://github.com/scummvm/scummvm/commit/f6d9a81d7ff3f77ad87170466d21e35d1bace14f
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2020-11-19T18:35:27+01:00
Commit Message:
TWINE: move script fix
Changed paths:
engines/twine/script_move_v1.cpp
diff --git a/engines/twine/script_move_v1.cpp b/engines/twine/script_move_v1.cpp
index 527d04da4b..8b0d387320 100644
--- a/engines/twine/script_move_v1.cpp
+++ b/engines/twine/script_move_v1.cpp
@@ -184,7 +184,12 @@ static int32 mLABEL(TwinEEngine *engine, MoveScriptContext &ctx) {
/*0x0A*/
static int32 mGOTO(TwinEEngine *engine, MoveScriptContext &ctx) {
- ctx.stream.seek(ctx.stream.readSint16LE());
+ const int16 pos = ctx.stream.readSint16LE();
+ if (pos == -1) {
+ ctx.actor->positionInMoveScript = -1;
+ return 1;
+ }
+ ctx.stream.seek(pos);
return 0;
}
Commit: 47405a5e61c60f293488a35e38f20a80f564537f
https://github.com/scummvm/scummvm/commit/47405a5e61c60f293488a35e38f20a80f564537f
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2020-11-19T18:35:27+01:00
Commit Message:
TWINE: fixed missing read of kFollow2 actor idx
Changed paths:
engines/twine/script_life_v1.cpp
diff --git a/engines/twine/script_life_v1.cpp b/engines/twine/script_life_v1.cpp
index 9ba2b038be..502d94cee7 100644
--- a/engines/twine/script_life_v1.cpp
+++ b/engines/twine/script_life_v1.cpp
@@ -470,7 +470,7 @@ static int32 lNO_IF(TwinEEngine *engine, LifeScriptContext &ctx) {
/*0x0A*/
static int32 lLABEL(TwinEEngine *engine, LifeScriptContext &ctx) {
- ctx.stream.skip(1);
+ ctx.stream.skip(1); // label id
return 0;
}
@@ -608,7 +608,7 @@ static int32 lSET_DIRMODE(TwinEEngine *engine, LifeScriptContext &ctx) {
const int32 controlMode = ctx.stream.readByte();
ctx.actor->controlMode = (ControlMode)controlMode;
- if (ctx.actor->controlMode == ControlMode::kFollow) {
+ if (ctx.actor->controlMode == ControlMode::kFollow || ctx.actor->controlMode == ControlMode::kFollow2) {
ctx.actor->followedActor = ctx.stream.readByte();
}
@@ -622,7 +622,7 @@ static int32 lSET_DIRMODE_OBJ(TwinEEngine *engine, LifeScriptContext &ctx) {
ActorStruct *otherActor = engine->_scene->getActor(otherActorIdx);
otherActor->controlMode = (ControlMode)controlMode;
- if (otherActor->controlMode == ControlMode::kFollow) {
+ if (otherActor->controlMode == ControlMode::kFollow || ctx.actor->controlMode == ControlMode::kFollow2) {
otherActor->followedActor = ctx.stream.readByte();
}
Commit: 89c02f349aabf5789e5d046c504df6ed75bf8d4f
https://github.com/scummvm/scummvm/commit/89c02f349aabf5789e5d046c504df6ed75bf8d4f
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2020-11-19T18:35:27+01:00
Commit Message:
TWINE: implemented mPLAY_FLA move script
Changed paths:
engines/twine/script_life_v1.cpp
engines/twine/script_move_v1.cpp
diff --git a/engines/twine/script_life_v1.cpp b/engines/twine/script_life_v1.cpp
index 502d94cee7..e4d922bf7f 100644
--- a/engines/twine/script_life_v1.cpp
+++ b/engines/twine/script_life_v1.cpp
@@ -1007,10 +1007,11 @@ static int32 lSUB_LIFE_POINT_OBJ(TwinEEngine *engine, LifeScriptContext &ctx) {
int32 otherActorIdx = ctx.stream.readByte();
static int32 lifeValue = ctx.stream.readByte();
- engine->_scene->getActor(otherActorIdx)->life -= lifeValue;
+ ActorStruct *otherActor = engine->_scene->getActor(otherActorIdx);
+ otherActor->life -= lifeValue;
- if (engine->_scene->getActor(otherActorIdx)->life < 0) {
- engine->_scene->getActor(otherActorIdx)->life = 0;
+ if (otherActor->life < 0) {
+ otherActor->life = 0;
}
return 0;
diff --git a/engines/twine/script_move_v1.cpp b/engines/twine/script_move_v1.cpp
index 8b0d387320..68b66a2dd1 100644
--- a/engines/twine/script_move_v1.cpp
+++ b/engines/twine/script_move_v1.cpp
@@ -25,10 +25,12 @@
#include "common/util.h"
#include "twine/actor.h"
#include "twine/animations.h"
+#include "twine/flamovies.h"
#include "twine/movements.h"
#include "twine/redraw.h"
#include "twine/renderer.h"
#include "twine/scene.h"
+#include "twine/screens.h"
#include "common/memstream.h"
#include "twine/sound.h"
#include "twine/twine.h"
@@ -459,8 +461,24 @@ static int32 mSAMPLE_STOP(TwinEEngine *engine, MoveScriptContext &ctx) {
/*0x1E*/
static int32 mPLAY_FLA(TwinEEngine *engine, MoveScriptContext &ctx) {
- // TODO param1: null-terminated string - name of the fla file to play (extension may be included, but it's not required)
- return -1;
+ int strIdx = 0;
+ char movie[64];
+ do {
+ const byte c = ctx.stream.readByte();
+ movie[strIdx++] = c;
+ if (c == '\0') {
+ break;
+ }
+ if (strIdx >= ARRAYSIZE(movie)) {
+ error("Max string size exceeded for fla name");
+ }
+ } while (true);
+
+ engine->_flaMovies->playFlaMovie(movie);
+ engine->setPalette(engine->_screens->paletteRGBA);
+ engine->_screens->clearScreen();
+ engine->flip();
+ return 0;
}
/*0x1F*/
Commit: b3a1882eb2d844cce2b5296db6e6594d5d6a9a3c
https://github.com/scummvm/scummvm/commit/b3a1882eb2d844cce2b5296db6e6594d5d6a9a3c
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2020-11-19T18:35:28+01:00
Commit Message:
TWINE: added new animation id constants
Changed paths:
engines/twine/shared.h
diff --git a/engines/twine/shared.h b/engines/twine/shared.h
index 6906cd90e1..e892e0ed8a 100644
--- a/engines/twine/shared.h
+++ b/engines/twine/shared.h
@@ -85,7 +85,11 @@ enum class AnimationTypes {
kHit2 = 22,
kSabreAttack = 23,
kSabreUnknown = 24,
-
+ kCarStarting = 303,
+ kCarDriving = 304,
+ kCarDrivingBackwards = 305,
+ kCarStopping = 306,
+ kCarFrozen = 307,
kAnimInvalid = 255
};
Commit: e761fe91187842b5bfc9979d608a4f62a4d3d261
https://github.com/scummvm/scummvm/commit/e761fe91187842b5bfc9979d608a4f62a4d3d261
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2020-11-19T19:09:18+01:00
Commit Message:
TWINE: fixed off-by-one error in mANGLE_RND
Changed paths:
engines/twine/script_move_v1.cpp
diff --git a/engines/twine/script_move_v1.cpp b/engines/twine/script_move_v1.cpp
index 68b66a2dd1..62e532debf 100644
--- a/engines/twine/script_move_v1.cpp
+++ b/engines/twine/script_move_v1.cpp
@@ -250,7 +250,7 @@ static int32 mWAIT_NUM_ANIM(TwinEEngine *engine, MoveScriptContext &ctx) {
ctx.undo(2);
}
- return abortMove;
+ return abortMove ? 1 : 0;
}
/*0x0E*/
@@ -546,7 +546,7 @@ static int32 mANGLE_RND(TwinEEngine *engine, MoveScriptContext &ctx) {
}
if (ctx.actor->angle != engine->_scene->currentScriptValue) {
- ctx.stream.rewind(4);
+ ctx.undo(4);
return 1;
}
engine->_movements->clearRealAngle(ctx.actor);
@@ -614,10 +614,10 @@ void ScriptMove::processMoveScript(int32 actorIdx) {
if (end < 0) {
warning("Actor %d Life script [%s] not implemented", actorIdx, function_map[scriptOpcode].name);
}
+ if (ctx.actor->positionInMoveScript != -1) {
+ actor->positionInMoveScript = ctx.stream.pos();
+ }
} while (end != 1);
- if (ctx.actor->positionInMoveScript != -1) {
- actor->positionInMoveScript = ctx.stream.pos();
- }
}
} // namespace TwinE
More information about the Scummvm-git-logs
mailing list