mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-18 18:30:59 +00:00
GOB: Fix TOT text resources loading when no sprite resources are present
This fixes the missing text in Bargon Attack/Atari intro scene.
This commit is contained in:
parent
8983b1c791
commit
6c3d960a90
@ -240,42 +240,43 @@ bool Resources::loadTOTResourceTable() {
|
||||
|
||||
_totResStart = totProps.scriptEnd;
|
||||
|
||||
if ((totProps.resourcesOffset == 0xFFFFFFFF) ||
|
||||
(totProps.resourcesOffset == 0))
|
||||
// No resources here
|
||||
return false;
|
||||
if (totProps.resourcesOffset != 0xFFFFFFFF && totProps.resourcesOffset != 0) {
|
||||
_totResourceTable = new TOTResourceTable;
|
||||
|
||||
_totResourceTable = new TOTResourceTable;
|
||||
stream->seek(totProps.resourcesOffset);
|
||||
_totResourceTable->itemsCount = stream->readSint16LE();
|
||||
|
||||
stream->seek(totProps.resourcesOffset);
|
||||
_totResourceTable->itemsCount = stream->readSint16LE();
|
||||
uint32 resSize = _totResourceTable->itemsCount * kTOTResItemSize +
|
||||
kTOTResTableSize;
|
||||
|
||||
uint32 resSize = _totResourceTable->itemsCount * kTOTResItemSize +
|
||||
kTOTResTableSize;
|
||||
|
||||
_totResourceTable->dataOffset = totProps.resourcesOffset + resSize;
|
||||
_totResourceTable->dataOffset = totProps.resourcesOffset + resSize;
|
||||
|
||||
|
||||
// Would the table actually fit into the TOT?
|
||||
if ((totProps.resourcesOffset + resSize) > ((uint32) stream->size()))
|
||||
return false;
|
||||
// Would the table actually fit into the TOT?
|
||||
if ((totProps.resourcesOffset + resSize) > ((uint32) stream->size()))
|
||||
return false;
|
||||
|
||||
_totResourceTable->unknown = stream->readByte();
|
||||
_totResourceTable->items = new TOTResourceItem[_totResourceTable->itemsCount];
|
||||
_totResourceTable->unknown = stream->readByte();
|
||||
_totResourceTable->items = new TOTResourceItem[_totResourceTable->itemsCount];
|
||||
|
||||
for (int i = 0; i < _totResourceTable->itemsCount; ++i) {
|
||||
TOTResourceItem &item = _totResourceTable->items[i];
|
||||
for (int i = 0; i < _totResourceTable->itemsCount; ++i) {
|
||||
TOTResourceItem &item = _totResourceTable->items[i];
|
||||
|
||||
item.offset = stream->readSint32LE();
|
||||
item.size = stream->readUint16LE();
|
||||
item.width = stream->readSint16LE();
|
||||
item.height = stream->readSint16LE();
|
||||
item.offset = stream->readSint32LE();
|
||||
item.size = stream->readUint16LE();
|
||||
item.width = stream->readSint16LE();
|
||||
item.height = stream->readSint16LE();
|
||||
|
||||
if (item.offset < 0) {
|
||||
item.type = kResourceIM;
|
||||
item.index = -item.offset - 1;
|
||||
} else
|
||||
item.type = kResourceTOT;
|
||||
if (item.offset < 0) {
|
||||
item.type = kResourceIM;
|
||||
item.index = -item.offset - 1;
|
||||
} else
|
||||
item.type = kResourceTOT;
|
||||
}
|
||||
} else {
|
||||
_totResourceTable = nullptr;
|
||||
// Do not return yet: although there is no *sprite* resource table,
|
||||
// a text table may still be present.
|
||||
}
|
||||
|
||||
_totSize = stream->size() - _totResStart;
|
||||
|
Loading…
x
Reference in New Issue
Block a user