[Scummvm-git-logs] scummvm master -> 9fda5bb43422cd9880955361c26c069e31ea4acb
sev-
noreply at scummvm.org
Tue Jun 28 15:33:03 UTC 2022
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
e42610c3bf DIRECTOR: Added more debug output to frame loading
9fda5bb434 DIRECTOR: Fix crash for movies without score, e.g. Shared Cast
Commit: e42610c3bfb1c50a48f672a11ef74597b553dd82
https://github.com/scummvm/scummvm/commit/e42610c3bfb1c50a48f672a11ef74597b553dd82
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2022-06-28T17:28:11+02:00
Commit Message:
DIRECTOR: Added more debug output to frame loading
Changed paths:
engines/director/frame.cpp
diff --git a/engines/director/frame.cpp b/engines/director/frame.cpp
index ca7055e6e9f..aefe4ba288b 100644
--- a/engines/director/frame.cpp
+++ b/engines/director/frame.cpp
@@ -126,7 +126,7 @@ void Frame::readChannel(Common::SeekableReadStreamEndian &stream, uint16 offset,
}
void Frame::readChannels(Common::ReadStreamEndian *stream, uint16 version) {
- byte unk[48];
+ byte unk[24];
if (version < kFileVer400) {
// Sound/Tempo/Transition
@@ -155,6 +155,8 @@ void Frame::readChannels(Common::ReadStreamEndian *stream, uint16 version) {
_soundType2 = stream->readByte();
}
+ debugC(8, kDebugLoading, "Frame::readChannels(): actId: %d soundType: %d transDur: %d transChunk: %d tempo: %d transType: %d sound1: %d skipFrame: %d blend: %d sound2: %d soundType2: %d", _actionId.member, _soundType1, _transDuration, _transChunkSize, _tempo, _transType, _sound1.member, _skipFrameFlag, _blend, _sound2.member, _soundType2);
+
// palette
if (_vm->getPlatform() == Common::kPlatformWindows) {
_palette.paletteId = stream->readUint16();
@@ -166,8 +168,12 @@ void Frame::readChannels(Common::ReadStreamEndian *stream, uint16 version) {
_palette.cycleCount = stream->readUint16();
stream->read(unk, 6);
+
+ debugC(8, kDebugLoading, "Frame::readChannels(): STUB: unk1: %02x %02x %02x %02x %02x %02x", unk[0],
+ unk[1], unk[2], unk[3], unk[4], unk[5]);
} else {
stream->read(unk, 3);
+ debugC(8, kDebugLoading, "Frame::readChannels(): STUB: unk1: %02x %02x %02x", unk[0], unk[1], unk[2]);
_palette.paletteId = stream->readSint16();
_palette.firstColor = stream->readByte(); // for cycles. note: these start at 0x80 (for pal entry 0)!
@@ -179,12 +185,17 @@ void Frame::readChannels(Common::ReadStreamEndian *stream, uint16 version) {
_palette.cycleLength = stream->readByte();
stream->read(unk, 4);
+ debugC(8, kDebugLoading, "Frame::readChannels(): STUB: unk2: %02x %02x %02x %02x", unk[0], unk[1], unk[2], unk[3]);
}
- debugC(8, kDebugLoading, "Frame::readChannels(): %d %d %d %d %d %d %d %d %d %d %d", _actionId.member, _soundType1, _transDuration, _transChunkSize, _tempo, _transType, _sound1.member, _skipFrameFlag, _blend, _sound2.member, _soundType2);
+ debugC(8, kDebugLoading, "Frame::readChannels(): palId: %d palFirst: %d palLast: %d palFlags: %d palCycles: %d palSpeed: %d palFrame: %d palLength: %d",
+ _palette.paletteId, _palette.firstColor, _palette.lastColor, _palette.flags, _palette.cycleCount,
+ _palette.speed, _palette.frameCount, _palette.cycleLength);
- if (_vm->getPlatform() == Common::kPlatformMacintosh || _vm->getPlatform() == Common::kPlatformMacintoshII)
+ if (_vm->getPlatform() == Common::kPlatformMacintosh || _vm->getPlatform() == Common::kPlatformMacintoshII) {
stream->read(unk, 3);
+ debugC(8, kDebugLoading, "Frame::readChannels(): STUB: unk3: %02x %02x %02x", unk[0], unk[1], unk[2]);
+ }
} else if (version >= kFileVer400 && version < kFileVer500) {
// Sound/Tempo/Transition
int unk1 = stream->readByte();
@@ -232,13 +243,17 @@ void Frame::readChannels(Common::ReadStreamEndian *stream, uint16 version) {
_palette.delay = stream->readByte();
_palette.style = stream->readByte();
- stream->readByte();
- stream->readUint16();
- stream->readUint16();
+ unk1 = stream->readByte();
+ warning("Frame::readChannels(): STUB: unk2: %d 0x%x", unk1, unk1);
+ unk1 = stream->readUint16();
+ warning("Frame::readChannels(): STUB: unk3: %d 0x%x", unk1, unk1);
+ unk1 = stream->readUint16();
+ warning("Frame::readChannels(): STUB: unk4: %d 0x%x", unk1, unk1);
_palette.colorCode = stream->readByte();
- stream->readByte();
+ unk1 = stream->readByte();
+ warning("Frame::readChannels(): STUB: unk5: %d 0x%x", unk1, unk1);
debugC(8, kDebugLoading, "Frame::readChannels(): %d %d %d %d %d %d %d %d %d %d %d", _actionId.member, _soundType1, _transDuration, _transChunkSize, _tempo, _transType, _sound1.member, _skipFrameFlag, _blend, _sound2.member, _soundType2);
} else if (version >= kFileVer500 && version < kFileVer600) {
Commit: 9fda5bb43422cd9880955361c26c069e31ea4acb
https://github.com/scummvm/scummvm/commit/9fda5bb43422cd9880955361c26c069e31ea4acb
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2022-06-28T17:32:39+02:00
Commit Message:
DIRECTOR: Fix crash for movies without score, e.g. Shared Cast
Changed paths:
engines/director/score.cpp
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index db921c688ae..9677111a80b 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -256,14 +256,18 @@ void Score::startPlay() {
_playState = kPlayStarted;
_nextFrameTime = 0;
- _lastPalette = _frames[_currentFrame]->_palette.paletteId;
- _vm->setPalette(resolvePaletteId(_lastPalette));
-
if (_frames.size() <= 1) { // We added one empty sprite
warning("Score::startLoop(): Movie has no frames");
_playState = kPlayStopped;
+
+ return;
}
+ warning("FRAMES: %d", _frames.size());
+
+ _lastPalette = _frames[_currentFrame]->_palette.paletteId;
+ _vm->setPalette(resolvePaletteId(_lastPalette));
+
// All frames in the same movie have the same number of channels
if (_playState != kPlayStopped)
for (uint i = 0; i < _frames[1]->_sprites.size(); i++)
More information about the Scummvm-git-logs
mailing list