aboutsummaryrefslogtreecommitdiff
path: root/engines/illusions/scriptresource.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/illusions/scriptresource.cpp')
-rw-r--r--engines/illusions/scriptresource.cpp31
1 files changed, 15 insertions, 16 deletions
diff --git a/engines/illusions/scriptresource.cpp b/engines/illusions/scriptresource.cpp
index 5d9b86a36e..545e79babb 100644
--- a/engines/illusions/scriptresource.cpp
+++ b/engines/illusions/scriptresource.cpp
@@ -22,20 +22,19 @@
#include "illusions/illusions.h"
#include "illusions/scriptresource.h"
+#include "illusions/scriptman.h"
namespace Illusions {
// ScriptResourceLoader
void ScriptResourceLoader::load(Resource *resource) {
- debug("ScriptResourceLoader::load() Loading script %08X from %s...", resource->_resId, resource->_filename.c_str());
+ debug(2, "ScriptResourceLoader::load() Loading script %08X from %s...", resource->_resId, resource->_filename.c_str());
ScriptResource *scriptResource = new ScriptResource();
scriptResource->load(resource->_data, resource->_dataSize);
-
-
- _vm->_scriptResource = scriptResource;
+ _vm->_scriptMan->_scriptResource = scriptResource;
}
@@ -77,11 +76,11 @@ void BlockCounters::clear() {
}
byte BlockCounters::get(uint index) {
- return _blockCounters[index] & 0x3F;
+ return _blockCounters[index - 1] & 0x3F;
}
void BlockCounters::set(uint index, byte value) {
- _blockCounters[index] = (get(index) ^ value) & 0x3F;
+ _blockCounters[index - 1] = (get(index - 1) ^ value) & 0x3F;
}
// TriggerCause
@@ -91,7 +90,7 @@ void TriggerCause::load(Common::SeekableReadStream &stream) {
_objectId2 = stream.readUint32LE();
_codeOffs = stream.readUint32LE();
- debug("TriggerCause::load() _verbId: %08X; _objectId2: %08X; _codeOffs: %08X",
+ debug(2, "TriggerCause::load() _verbId: %08X; _objectId2: %08X; _codeOffs: %08X",
_verbId, _objectId2, _codeOffs);
}
@@ -109,7 +108,7 @@ void TriggerObject::load(byte *dataStart, Common::SeekableReadStream &stream) {
_objectId = stream.readUint32LE();
_causesCount = stream.readUint16LE();
stream.skip(2); // Skip padding
- debug("TriggerObject::load() _objectId: %08X; _causesCount: %d",
+ debug(2, "TriggerObject::load() _objectId: %08X; _causesCount: %d",
_objectId, _causesCount);
_causes = new TriggerCause[_causesCount];
for (uint i = 0; i < _causesCount; ++i)
@@ -144,7 +143,7 @@ void ProgInfo::load(byte *dataStart, Common::SeekableReadStream &stream) {
stream.skip(128);
_triggerObjectsCount = stream.readUint16LE();
stream.skip(2); // Skip padding
- debug("\nProgInfo::load() _id: %d; _unk: %d; _name: [%s]",
+ debug(2, "\nProgInfo::load() _id: %d; _unk: %d; _name: [%s]",
_id, _unk, debugW2I(_name));
uint32 triggerObjectsListOffs = stream.readUint32LE();
if (_triggerObjectsCount > 0) {
@@ -177,7 +176,7 @@ void ScriptResource::load(byte *data, uint32 dataSize) {
stream.skip(4); // Skip unused
uint propertiesCount = stream.readUint16LE();
uint blockCountersCount = stream.readUint16LE();
- uint codeCount = stream.readUint16LE();
+ _codeCount = stream.readUint16LE();
_progInfosCount = stream.readUint16LE();
uint32 propertiesOffs = stream.readUint32LE();
uint32 blockCountersOffs = stream.readUint32LE();
@@ -189,9 +188,9 @@ void ScriptResource::load(byte *data, uint32 dataSize) {
// Init blockcounters
_blockCounters.init(blockCountersCount, data + blockCountersOffs);
- _codeOffsets = new uint32[codeCount];
+ _codeOffsets = new uint32[_codeCount];
stream.seek(codeTblOffs);
- for (uint i = 0; i < codeCount; ++i)
+ for (uint i = 0; i < _codeCount; ++i)
_codeOffsets[i] = stream.readUint32LE();
_progInfos = new ProgInfo[_progInfosCount];
@@ -202,15 +201,15 @@ void ScriptResource::load(byte *data, uint32 dataSize) {
_progInfos[i].load(data, stream);
}
- debug("ScriptResource::load() propertiesCount: %d; blockCountersCount: %d; codeCount: %d; _progInfosCount: %d",
- propertiesCount, blockCountersCount, codeCount, _progInfosCount);
- debug("ScriptResource::load() propertiesOffs: %08X; blockCountersOffs: %08X; codeTblOffs: %08X",
+ debug(2, "ScriptResource::load() propertiesCount: %d; blockCountersCount: %d; _codeCount: %d; _progInfosCount: %d",
+ propertiesCount, blockCountersCount, _codeCount, _progInfosCount);
+ debug(2, "ScriptResource::load() propertiesOffs: %08X; blockCountersOffs: %08X; codeTblOffs: %08X",
propertiesOffs, blockCountersOffs, codeTblOffs);
}
byte *ScriptResource::getThreadCode(uint32 threadId) {
- return _data + _codeOffsets[threadId & 0xFFFF];
+ return _data + _codeOffsets[(threadId & 0xFFFF) - 1];
}
} // End of namespace Illusions