Added Script::getTextsOffset()

svn-id: r41792
This commit is contained in:
Sven Hesse 2009-06-23 01:20:21 +00:00
parent ec5b2d6c9a
commit 8e63d7989f
4 changed files with 17 additions and 16 deletions

View file

@ -121,15 +121,12 @@ void Game_v1::playTot(int16 skipPlay) {
debugC(4, kDebugFileIO, "IMA: %s", _curImaFile); debugC(4, kDebugFileIO, "IMA: %s", _curImaFile);
debugC(4, kDebugFileIO, "EXT: %s", _curExtFile); debugC(4, kDebugFileIO, "EXT: %s", _curExtFile);
byte *filePtr = _script->getData() + 0x30;
_totTextData = 0; _totTextData = 0;
if (READ_LE_UINT32(filePtr) != (uint32) -1) { if (_script->getTextsOffset() != ((uint32) -1)) {
_totTextData = new TotTextTable; _totTextData = new TotTextTable;
_totTextData->dataPtr = _totTextData->dataPtr = _script->getData() + _script->getTextsOffset();
(_script->getData() + READ_LE_UINT32(_script->getData() + 0x30));
Common::MemoryReadStream totTextData(_totTextData->dataPtr, Common::MemoryReadStream totTextData(_totTextData->dataPtr,
4294967295U); _script->getSize() - _script->getTextsOffset());
_totTextData->itemsCount = totTextData.readSint16LE(); _totTextData->itemsCount = totTextData.readSint16LE();
@ -140,7 +137,7 @@ void Game_v1::playTot(int16 skipPlay) {
} }
} }
filePtr = _script->getData() + 0x34; byte *filePtr = _script->getData() + 0x34;
_totResourceTable = 0; _totResourceTable = 0;
if (READ_LE_UINT32(filePtr) != (uint32) -1) { if (READ_LE_UINT32(filePtr) != (uint32) -1) {
_totResourceTable = new TotResTable; _totResourceTable = new TotResTable;

View file

@ -128,29 +128,25 @@ void Game_v2::playTot(int16 skipPlay) {
debugC(4, kDebugFileIO, "IMA: %s", _curImaFile); debugC(4, kDebugFileIO, "IMA: %s", _curImaFile);
debugC(4, kDebugFileIO, "EXT: %s", _curExtFile); debugC(4, kDebugFileIO, "EXT: %s", _curExtFile);
filePtr = _script->getData() + 0x30;
_totTextData = 0; _totTextData = 0;
totTextLoc = false; totTextLoc = false;
if (READ_LE_UINT32(filePtr) != (uint32) -1) { if (_script->getTextsOffset() != ((uint32) -1)) {
_totTextData = new TotTextTable; _totTextData = new TotTextTable;
int32 size; int32 size;
if (READ_LE_UINT32(filePtr) == 0) { if (_script->getTextsOffset() == 0) {
_totTextData->dataPtr = loadLocTexts(&size); _totTextData->dataPtr = loadLocTexts(&size);
totTextLoc = true; totTextLoc = true;
} else { } else {
_totTextData->dataPtr = _totTextData->dataPtr = _script->getData() + _script->getTextsOffset();
(_script->getData() + READ_LE_UINT32(_script->getData() + 0x30)); size = _script->getSize() - _script->getTextsOffset();
size = _script->getSize();
_vm->_global->_language = _vm->_global->_languageWanted; _vm->_global->_language = _vm->_global->_languageWanted;
} }
_totTextData->items = 0; _totTextData->items = 0;
if (_totTextData->dataPtr != 0) { if (_totTextData->dataPtr != 0) {
Common::MemoryReadStream totTextData(_totTextData->dataPtr, Common::MemoryReadStream totTextData(_totTextData->dataPtr, size);
4294967295U);
_totTextData->itemsCount = totTextData.readSint16LE() & 0x3FFF; _totTextData->itemsCount = totTextData.readSint16LE() & 0x3FFF;
_totTextData->items = new TotTextItem[_totTextData->itemsCount]; _totTextData->items = new TotTextItem[_totTextData->itemsCount];

View file

@ -413,6 +413,8 @@ bool Script::getTOTProperties() {
_variablesCount = READ_LE_UINT32(_totData + 44); _variablesCount = READ_LE_UINT32(_totData + 44);
_textsOffset = READ_LE_UINT32(_totData + 48);
_imFileNumber = _totData[59]; _imFileNumber = _totData[59];
_exFileNumber = _totData[60]; _exFileNumber = _totData[60];
_communHandling = _totData[61]; _communHandling = _totData[61];
@ -505,6 +507,10 @@ uint32 Script::getVariablesCount() const {
return _variablesCount; return _variablesCount;
} }
uint32 Script::getTextsOffset() const {
return _textsOffset;
}
uint8 Script::getImFileNumber() const { uint8 Script::getImFileNumber() const {
return _imFileNumber; return _imFileNumber;
} }

View file

@ -120,6 +120,7 @@ public:
uint8 getVersionMajor() const; uint8 getVersionMajor() const;
uint8 getVersionMinor() const; uint8 getVersionMinor() const;
uint32 getVariablesCount() const; uint32 getVariablesCount() const;
uint32 getTextsOffset() const;
uint8 getImFileNumber() const; uint8 getImFileNumber() const;
uint8 getExFileNumber() const; uint8 getExFileNumber() const;
uint8 getCommunHandling() const; uint8 getCommunHandling() const;
@ -147,6 +148,7 @@ private:
uint8 _versionMajor; uint8 _versionMajor;
uint8 _versionMinor; uint8 _versionMinor;
uint32 _variablesCount; uint32 _variablesCount;
uint32 _textsOffset;
uint8 _imFileNumber; uint8 _imFileNumber;
uint8 _exFileNumber; uint8 _exFileNumber;
uint8 _communHandling; uint8 _communHandling;