[Scummvm-git-logs] scummvm master -> a308d8277088ec3c1560d1d3a9b2603c61b54e02
SupSuper
supsuper at gmail.com
Fri Jun 4 06:00:56 UTC 2021
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:
4968d87ed0 TRECISION: Fix Amiga data loading
a308d82770 TRECISION: Skip missing videos
Commit: 4968d87ed08631242a4a9001cf8f7d53d415cd01
https://github.com/scummvm/scummvm/commit/4968d87ed08631242a4a9001cf8f7d53d415cd01
Author: SupSuper (supsuper at gmail.com)
Date: 2021-06-04T06:59:26+01:00
Commit Message:
TRECISION: Fix Amiga data loading
Changed paths:
engines/trecision/graphics.cpp
engines/trecision/resource.cpp
diff --git a/engines/trecision/graphics.cpp b/engines/trecision/graphics.cpp
index 05045fb4f6..ed18278b78 100644
--- a/engines/trecision/graphics.cpp
+++ b/engines/trecision/graphics.cpp
@@ -243,9 +243,8 @@ void GraphicsManager::readSurface(Common::SeekableReadStream *stream, Graphics::
for (uint16 i = 0; i < count; ++i) {
for (uint16 y = 0; y < height; ++y) {
- for (uint16 x = 0; x < width; ++x) {
- surface->setPixel(width * i + x, y, stream->readUint16LE());
- }
+ void *p = surface->getBasePtr(width * i, y);
+ stream->read(p, width * kImageFormat.bytesPerPixel);
}
}
diff --git a/engines/trecision/resource.cpp b/engines/trecision/resource.cpp
index 1b98eb50e4..9c93711d58 100644
--- a/engines/trecision/resource.cpp
+++ b/engines/trecision/resource.cpp
@@ -63,6 +63,11 @@ void TrecisionEngine::loadAll() {
_soundMgr->loadSamples(data);
+ // TODO: Unused Amiga data?
+ if (isAmiga()) {
+ data->skip(12 * 12 + 1);
+ }
+
for (int i = 0; i < MAXSCRIPTFRAME; ++i) {
_scriptFrame[i]._class = data->readByte();
_scriptFrame[i]._event = data->readByte();
@@ -85,10 +90,6 @@ void TrecisionEngine::loadAll() {
data->skip(620); // actions (unused)
- // TODO: Amiga hack
- if (isAmiga())
- dataNl.seek(0x3DB62);
-
int numFileRef = data->readSint32();
data->skip(numFileRef * (12 + 4)); // fileRef name + offset
Commit: a308d8277088ec3c1560d1d3a9b2603c61b54e02
https://github.com/scummvm/scummvm/commit/a308d8277088ec3c1560d1d3a9b2603c61b54e02
Author: SupSuper (supsuper at gmail.com)
Date: 2021-06-04T06:59:26+01:00
Commit Message:
TRECISION: Skip missing videos
Changed paths:
engines/trecision/fastfile.cpp
engines/trecision/video.cpp
diff --git a/engines/trecision/fastfile.cpp b/engines/trecision/fastfile.cpp
index 9ebae40a54..f3f3e3b8bd 100644
--- a/engines/trecision/fastfile.cpp
+++ b/engines/trecision/fastfile.cpp
@@ -50,9 +50,10 @@ const FileEntry *FastFile::getEntry(const Common::String &name) const {
bool FastFile::open(TrecisionEngine *vm, const Common::String &name) {
close();
- _stream = vm->readEndian(SearchMan.createReadStreamForMember(name));
- if (!_stream)
+ Common::SeekableReadStream *stream = SearchMan.createReadStreamForMember(name);
+ if (!stream)
return false;
+ _stream = vm->readEndian(stream);
int numFiles = _stream->readUint32();
_fileEntries.resize(numFiles);
diff --git a/engines/trecision/video.cpp b/engines/trecision/video.cpp
index abab5bfef5..c420243c14 100644
--- a/engines/trecision/video.cpp
+++ b/engines/trecision/video.cpp
@@ -138,6 +138,7 @@ void AnimManager::playMovie(const Common::String &filename, int startFrame, int
if (!smkDecoder->loadFile(filename)) {
warning("playMovie: File %s not found", filename.c_str());
+ delete smkDecoder;
_vm->_dialogMgr->afterChoice();
return;
}
@@ -306,6 +307,8 @@ void AnimManager::startSmkAnim(uint16 animation) {
void AnimManager::toggleMuteBgAnim(uint16 animation) {
uint16 animFlag = _animTab[animation]._flag;
NightlongSmackerDecoder *decoder = _smkAnims[kSmackerBackground];
+ if (decoder == nullptr)
+ return;
// Turns off when not needed
if (animation == aBKG11 && (animFlag & SMKANIM_OFF1))
@@ -429,6 +432,10 @@ void AnimManager::refreshSmkAnim(uint16 animation) {
}
void AnimManager::handleEndOfVideo(int animation, int slot) {
+ if (_smkAnims[slot] == nullptr) {
+ smkStop(slot);
+ return;
+ }
if (!_smkAnims[slot]->endOfVideo())
return;
@@ -444,6 +451,8 @@ void AnimManager::handleEndOfVideo(int animation, int slot) {
void AnimManager::drawSmkBackgroundFrame(int animation) {
NightlongSmackerDecoder *smkDecoder = _smkAnims[kSmackerBackground];
+ if (smkDecoder == nullptr)
+ return;
const Graphics::Surface *frame = smkDecoder->decodeNextFrame();
if (!frame)
return;
@@ -504,6 +513,8 @@ void AnimManager::drawSmkIconFrame(uint16 startIcon, uint16 iconNum) {
void AnimManager::drawSmkActionFrame() {
NightlongSmackerDecoder *smkDecoder = _smkAnims[kSmackerAction];
+ if (smkDecoder == nullptr)
+ return;
const Graphics::Surface *frame = smkDecoder->decodeNextFrame();
if (!frame)
return;
More information about the Scummvm-git-logs
mailing list