From ce7febcd70092ce0015e952af6dbfaae23bed22d Mon Sep 17 00:00:00 2001 From: Benjamin Haisch Date: Thu, 18 Jun 2009 08:22:52 +0000 Subject: TOLTECS: Reworked the ArchiveReader and ResourceCache classes. ResourceCache needs more work since resources are never freed (which is bad). --- engines/toltecs/menu.cpp | 76 +++++++++++++++++++-------------------- engines/toltecs/menu.h | 84 ++++++++++++++++++++++---------------------- engines/toltecs/palette.cpp | 10 +++--- engines/toltecs/render.cpp | 2 +- engines/toltecs/resource.cpp | 77 +++++++++++----------------------------- engines/toltecs/resource.h | 30 ++++++---------- engines/toltecs/screen.cpp | 12 +++---- engines/toltecs/script.cpp | 6 ++-- engines/toltecs/sound.cpp | 5 ++- engines/toltecs/sprite.cpp | 4 +-- engines/toltecs/toltecs.cpp | 3 +- 11 files changed, 132 insertions(+), 177 deletions(-) (limited to 'engines') diff --git a/engines/toltecs/menu.cpp b/engines/toltecs/menu.cpp index 9061ff5ddf..0052d50685 100644 --- a/engines/toltecs/menu.cpp +++ b/engines/toltecs/menu.cpp @@ -54,9 +54,9 @@ void Widget::redraw() { Widget *Widget::getHoveredWidget(int mouseX, int mouseY) { if (_rect.contains(mouseX, mouseY)) - return this; + return this; else - return NULL; + return NULL; } void Widget::calcDimensions() { @@ -86,13 +86,13 @@ LabelWidget::~LabelWidget() { } void LabelWidget::redraw() { - _vm->_screen->drawString(_rect.left, _rect.top, _fontColor, 14, (byte*)_caption.c_str(), -1, NULL, true); + _vm->_screen->drawString(_rect.left, _rect.top, _fontColor, 14, (byte*)_caption.c_str(), -1, NULL, true); } void LabelWidget::calcDimensions() { - Font font(_vm->_res->load(14)); - _rect.setWidth(font.getTextWidth((byte*)_caption.c_str())); - _rect.setHeight(font.getHeight()); + Font font(_vm->_res->load(14)->data); + _rect.setWidth(font.getTextWidth((byte*)_caption.c_str())); + _rect.setHeight(font.getHeight()); } void LabelWidget::setCaption(Common::String caption) { @@ -109,15 +109,15 @@ void LabelWidget::onMouseEnter() { } void LabelWidget::onMouseLeave() { - setFontColor(kFontColorMenuDefault); + setFontColor(kFontColorMenuDefault); } VolumeControlWidget::VolumeControlWidget(ToltecsEngine *vm, int x, int y, Common::String caption, uint flags) : Widget(_vm, x, y), _activeWidget(NULL) { - _label = new LabelWidget(vm, x, y, caption, flags); - _up = new LabelWidget(vm, x + 350, y + 4, "[", flags); + _label = new LabelWidget(vm, x, y, caption, flags); + _up = new LabelWidget(vm, x + 350, y + 4, "[", flags); _down = new LabelWidget(vm, x + 350 + 24, y + 4, "]", flags); _indicator = new LabelWidget(vm, x + 350 + 24 + 24 + 8, y, "||||||||||", flags); @@ -148,16 +148,16 @@ void VolumeControlWidget::calcDimensions() { } void VolumeControlWidget::onMouseEnter() { - _label->setFontColor(kFontColorMenuActive); - _indicator->setFontColor(kFontColorMenuActive); + _label->setFontColor(kFontColorMenuActive); + _indicator->setFontColor(kFontColorMenuActive); _activeWidget = NULL; } void VolumeControlWidget::onMouseLeave() { - _label->setFontColor(kFontColorMenuDefault); - _up->setFontColor(kFontColorMenuDefault); + _label->setFontColor(kFontColorMenuDefault); + _up->setFontColor(kFontColorMenuDefault); _down->setFontColor(kFontColorMenuDefault); - _indicator->setFontColor(kFontColorMenuDefault); + _indicator->setFontColor(kFontColorMenuDefault); } void VolumeControlWidget::onMouseMove(int mouseX, int mouseY) { @@ -166,19 +166,19 @@ void VolumeControlWidget::onMouseMove(int mouseX, int mouseY) { hoveredWidget = _up->getHoveredWidget(mouseX, mouseY); if (!hoveredWidget) - hoveredWidget = _down->getHoveredWidget(mouseX, mouseY); + hoveredWidget = _down->getHoveredWidget(mouseX, mouseY); if (_activeWidget != hoveredWidget) { - _activeWidget = hoveredWidget; - if (!_activeWidget) { - _up->setFontColor(kFontColorMenuDefault); - _down->setFontColor(kFontColorMenuDefault); + _activeWidget = hoveredWidget; + if (!_activeWidget) { + _up->setFontColor(kFontColorMenuDefault); + _down->setFontColor(kFontColorMenuDefault); } else if (_activeWidget == _up) { - _up->setFontColor(kFontColorMenuActive); - _down->setFontColor(kFontColorMenuDefault); + _up->setFontColor(kFontColorMenuActive); + _down->setFontColor(kFontColorMenuDefault); } else if (_activeWidget == _down) { - _up->setFontColor(kFontColorMenuDefault); - _down->setFontColor(kFontColorMenuActive); + _up->setFontColor(kFontColorMenuDefault); + _down->setFontColor(kFontColorMenuActive); } } @@ -197,24 +197,24 @@ void MenuPage::addWidget(Widget *widget) { void MenuPage::redraw() { for (WidgetArray::iterator iter = _widgets.begin(); iter != _widgets.end(); iter++) { - (*iter)->redraw(); + (*iter)->redraw(); } } Widget *MenuPage::getHoveredWidget(int mouseX, int mouseY) { - Widget *hoveredWidget = NULL; + Widget *hoveredWidget = NULL; for (WidgetArray::iterator iter = _widgets.begin(); iter != _widgets.end() && !hoveredWidget; iter++) { - hoveredWidget = (*iter)->getHoveredWidget(mouseX, mouseY); + hoveredWidget = (*iter)->getHoveredWidget(mouseX, mouseY); } return hoveredWidget; } MenuSystem::MenuSystem(ToltecsEngine *vm) : _vm(vm), _activeWidget(NULL), _oldMouseX(-1), _oldMouseY(-1) { - _page = new MenuPage("Welcome"); - _page->addWidget(new LabelWidget(_vm, 10, 10, "Load game", 0)); - _page->addWidget(new LabelWidget(_vm, 10, 35, "Save game", 0)); - _page->addWidget(new VolumeControlWidget(_vm, 10, 60, "Master volume", 0)); - _page->addWidget(new VolumeControlWidget(_vm, 10, 90, "Some other volume", 0)); + _page = new MenuPage("Welcome"); + _page->addWidget(new LabelWidget(_vm, 10, 10, "Load game", 0)); + _page->addWidget(new LabelWidget(_vm, 10, 35, "Save game", 0)); + _page->addWidget(new VolumeControlWidget(_vm, 10, 60, "Master volume", 0)); + _page->addWidget(new VolumeControlWidget(_vm, 10, 90, "Some other volume", 0)); } MenuSystem::~MenuSystem() { @@ -227,20 +227,20 @@ void MenuSystem::update() { if (_vm->_mouseX != _oldMouseX || _vm->_mouseY != _oldMouseY) { - _oldMouseX = _vm->_mouseX; - _oldMouseY = _vm->_mouseY; + _oldMouseX = _vm->_mouseX; + _oldMouseY = _vm->_mouseY; Widget *hoveredWidget = _page->getHoveredWidget(_vm->_mouseX, _vm->_mouseY); if (_activeWidget != hoveredWidget) { - if (_activeWidget) - _activeWidget->onMouseLeave(); + if (_activeWidget) + _activeWidget->onMouseLeave(); if (hoveredWidget) - hoveredWidget->onMouseEnter(); - _activeWidget = hoveredWidget; + hoveredWidget->onMouseEnter(); + _activeWidget = hoveredWidget; } if (_activeWidget) { - _activeWidget->onMouseMove(_vm->_mouseX, _vm->_mouseY); + _activeWidget->onMouseMove(_vm->_mouseX, _vm->_mouseY); } } diff --git a/engines/toltecs/menu.h b/engines/toltecs/menu.h index 15b73b78f7..dd75d66ef4 100644 --- a/engines/toltecs/menu.h +++ b/engines/toltecs/menu.h @@ -51,35 +51,35 @@ const byte kFontColorMenuActive = 255; class Widget { public: - Widget(ToltecsEngine *vm, int x, int y); - virtual ~Widget(); - virtual void redraw(); - virtual Widget *getHoveredWidget(int mouseX, int mouseY); - virtual void calcDimensions(); - void setRect(Common::Rect rect); - //virtual void setHilighted(bool active); - virtual void onMouseEnter(); - virtual void onMouseLeave(); - virtual void onMouseMove(int mouseX, int mouseY); + Widget(ToltecsEngine *vm, int x, int y); + virtual ~Widget(); + virtual void redraw(); + virtual Widget *getHoveredWidget(int mouseX, int mouseY); + virtual void calcDimensions(); + void setRect(Common::Rect rect); + //virtual void setHilighted(bool active); + virtual void onMouseEnter(); + virtual void onMouseLeave(); + virtual void onMouseMove(int mouseX, int mouseY); protected: ToltecsEngine *_vm; Common::Rect _rect; //bool _hilighted; }; -const int kLabelCentered = 1 << 1; +const int kLabelCentered = 1 << 1; const int kLabelHideOnMovie = 1 << 2; class LabelWidget : public Widget { public: - LabelWidget(ToltecsEngine *vm, int x, int y, Common::String caption, uint flags); - ~LabelWidget(); - void redraw(); + LabelWidget(ToltecsEngine *vm, int x, int y, Common::String caption, uint flags); + ~LabelWidget(); + void redraw(); void calcDimensions(); - void setCaption(Common::String caption); - void setFontColor(byte fontColor); - void onMouseEnter(); - void onMouseLeave(); + void setCaption(Common::String caption); + void setFontColor(byte fontColor); + void onMouseEnter(); + void onMouseLeave(); protected: Common::String _caption; uint _flags; @@ -88,15 +88,15 @@ protected: class VolumeControlWidget : public Widget { public: - VolumeControlWidget(ToltecsEngine *vm, int x, int y, Common::String caption, uint flags); - ~VolumeControlWidget(); - void redraw(); - Widget *getHoveredWidget(int mouseX, int mouseY); + VolumeControlWidget(ToltecsEngine *vm, int x, int y, Common::String caption, uint flags); + ~VolumeControlWidget(); + void redraw(); + Widget *getHoveredWidget(int mouseX, int mouseY); void calcDimensions(); //void setHilighted(bool active); - void onMouseEnter(); - void onMouseLeave(); - void onMouseMove(int mouseX, int mouseY); + void onMouseEnter(); + void onMouseLeave(); + void onMouseMove(int mouseX, int mouseY); protected: uint _flags; LabelWidget *_label, *_up, *_down, *_indicator; @@ -105,33 +105,33 @@ protected: class MenuPage { public: - MenuPage(Common::String caption); - ~MenuPage(); - void addWidget(Widget *widget); - void redraw(); - Widget *getHoveredWidget(int mouseX, int mouseY); + MenuPage(Common::String caption); + ~MenuPage(); + void addWidget(Widget *widget); + void redraw(); + Widget *getHoveredWidget(int mouseX, int mouseY); protected: typedef Common::Array WidgetArray; - Common::String _caption; - WidgetArray _widgets; + Common::String _caption; + WidgetArray _widgets; }; class MenuSystem { public: - MenuSystem(ToltecsEngine *vm); - ~MenuSystem(); - + MenuSystem(ToltecsEngine *vm); + ~MenuSystem(); + void update(); protected: - ToltecsEngine *_vm; - - //LabelWidget *label1, *label2; - MenuPage *_page; - - Widget *_activeWidget; - int16 _oldMouseX, _oldMouseY; + ToltecsEngine *_vm; + + //LabelWidget *label1, *label2; + MenuPage *_page; + + Widget *_activeWidget; + int16 _oldMouseX, _oldMouseY; }; diff --git a/engines/toltecs/palette.cpp b/engines/toltecs/palette.cpp index 0d5faec090..52f847e8dd 100644 --- a/engines/toltecs/palette.cpp +++ b/engines/toltecs/palette.cpp @@ -102,8 +102,8 @@ void Palette::setDeltaPalette(byte *palette, byte mask, char deltaValue, int16 c } void Palette::loadAddPalette(uint resIndex, byte startIndex) { - byte *data = _vm->_res->load(resIndex); - memcpy(&_mainPalette[startIndex * 3], data, _vm->_res->getCurItemSize()); + Resource *paletteResource = _vm->_res->load(resIndex); + memcpy(&_mainPalette[startIndex * 3], paletteResource->data, paletteResource->size); } void Palette::loadAddPaletteFrom(byte *source, byte startIndex, byte count) { @@ -113,10 +113,10 @@ void Palette::loadAddPaletteFrom(byte *source, byte startIndex, byte count) { void Palette::addFragment(uint resIndex, int16 id) { debug(0, "Palette::addFragment(%d, %d)", resIndex, id); - byte *fragmentData = _vm->_res->load(resIndex); - byte count = _vm->_res->getCurItemSize() / 3; + Resource *fragmentResource = _vm->_res->load(resIndex); + byte count = fragmentResource->size / 3; - memcpy(&_mainPalette[_fragmentIndex * 3], fragmentData, count * 3); + memcpy(&_mainPalette[_fragmentIndex * 3], fragmentResource->data, count * 3); PaletteFragment fragment; fragment.id = id; diff --git a/engines/toltecs/render.cpp b/engines/toltecs/render.cpp index 4ffb9f6664..642b299d3d 100644 --- a/engines/toltecs/render.cpp +++ b/engines/toltecs/render.cpp @@ -80,7 +80,7 @@ void RenderQueue::addSprite(SpriteDrawItem &sprite) { void RenderQueue::addText(int16 x, int16 y, byte color, uint fontResIndex, byte *text, int len) { - Font font(_vm->_res->load(fontResIndex)); + Font font(_vm->_res->load(fontResIndex)->data); RenderQueueItem item; item.type = kText; diff --git a/engines/toltecs/resource.cpp b/engines/toltecs/resource.cpp index 9449fdf73b..aaff6e340c 100644 --- a/engines/toltecs/resource.cpp +++ b/engines/toltecs/resource.cpp @@ -44,11 +44,16 @@ ArchiveReader::ArchiveReader() { } ArchiveReader::~ArchiveReader() { + delete[] _offsets; } void ArchiveReader::openArchive(const char *filename) { open(filename); - for (uint i = 0; i < 10000; i++) + uint32 firstOffs = readUint32LE(); + uint count = firstOffs / 4; + _offsets = new uint32[count]; + _offsets[0] = firstOffs; + for (uint i = 1; i < count; i++) _offsets[i] = readUint32LE(); } @@ -91,70 +96,30 @@ void ArchiveReader::dump(uint resIndex, const char *prefix) { /* ResourceCache */ ResourceCache::ResourceCache(ToltecsEngine *vm) : _vm(vm) { - - _base = new byte[kMaxCacheSize]; - _bytesUsed = 0; - - memset(_cache, 0, sizeof(_cache)); - _cacheCount = 0; - - _curItemOffset = 0; - _curItemSize = 0; - } ResourceCache::~ResourceCache() { - delete[] _base; + // TODO: Delete resources } -byte *ResourceCache::load(uint resIndex) { - byte *data = NULL; - if (existsItem(resIndex)) { +Resource *ResourceCache::load(uint resIndex) { + ResourceMap::iterator item = _cache.find(resIndex); + if (item != _cache.end()) { debug(1, "ResourceCache::load(%d) From cache", resIndex); - data = _base + _curItemOffset; + return (*item)._value; } else { debug(1, "ResourceCache::load(%d) From disk", resIndex); - uint32 size = _vm->_arc->openResource(resIndex); - data = addItem(resIndex, size); - _vm->_arc->read(data, size); - _vm->_arc->closeResource(); - } - return data; -} - -bool ResourceCache::existsItem(uint resIndex) { - for (uint i = 0; i < _cacheCount; i++) { - if (_cache[i].resIndex == resIndex) { - _curItemOffset = _cache[i].offset; - _curItemSize = _cache[i].size; - return true; - } - } - return false; -} -byte *ResourceCache::addItem(uint resIndex, uint32 size) { - - checkCapacity(size); - - _curItemOffset = _bytesUsed; - _curItemSize = size; - - _cache[_cacheCount].resIndex = resIndex; - _cache[_cacheCount].offset = _curItemOffset; - _cache[_cacheCount].size = _curItemSize; - _cacheCount++; - - _bytesUsed += size; - - return _base + _curItemOffset; - -} - -void ResourceCache::checkCapacity(uint32 size) { - if (_cacheCount > kMaxCacheItems || _bytesUsed + size > kMaxCacheSize) { - _cacheCount = 0; - _bytesUsed = 0; + Resource *resItem = new Resource(); + resItem->size = _vm->_arc->openResource(resIndex); + resItem->data = new byte[resItem->size]; + _vm->_arc->read(resItem->data, resItem->size); + _vm->_arc->closeResource(); + + _cache[resIndex] = resItem; + + return resItem; + } } diff --git a/engines/toltecs/resource.h b/engines/toltecs/resource.h index ee1eb21b07..1c618aedeb 100644 --- a/engines/toltecs/resource.h +++ b/engines/toltecs/resource.h @@ -30,6 +30,7 @@ #include "common/file.h" #include "common/savefile.h" #include "common/system.h" +#include "common/hashmap.h" #include "common/hash-str.h" #include "common/events.h" #include "common/keyboard.h" @@ -65,39 +66,28 @@ public: void dump(uint resIndex, const char *prefix = NULL); protected: - uint32 _offsets[10000]; + uint32 *_offsets; }; +struct Resource { + uint32 size; + byte *data; +}; + class ResourceCache { public: ResourceCache(ToltecsEngine *vm); ~ResourceCache(); - byte *load(uint resIndex); - uint32 getCurItemSize() const { return _curItemSize; } + Resource *load(uint resIndex); protected: - - struct CacheItem { - uint resIndex; - //int value; // what is this? - int32 offset; // offset into _base - uint32 size; // size of the item - }; + typedef Common::HashMap ResourceMap; ToltecsEngine *_vm; - byte *_base; - uint32 _bytesUsed; - uint32 _curItemOffset, _curItemSize; - - CacheItem _cache[kMaxCacheItems]; - uint _cacheCount; - - bool existsItem(uint resIndex); - byte *addItem(uint resIndex, uint32 size); - void checkCapacity(uint32 size); + ResourceMap _cache; }; diff --git a/engines/toltecs/screen.cpp b/engines/toltecs/screen.cpp index 47c852dcfc..c3487f42d2 100644 --- a/engines/toltecs/screen.cpp +++ b/engines/toltecs/screen.cpp @@ -109,7 +109,7 @@ void Screen::unpackRle(byte *source, byte *dest, uint16 width, uint16 height) { void Screen::loadMouseCursor(uint resIndex) { byte mouseCursor[16 * 16], *mouseCursorP = mouseCursor; - byte *cursorData = _vm->_res->load(resIndex); + byte *cursorData = _vm->_res->load(resIndex)->data; for (int i = 0; i < 32; i++) { byte pixel; byte mask1 = *cursorData++; @@ -131,7 +131,7 @@ void Screen::loadMouseCursor(uint resIndex) { void Screen::drawGuiImage(int16 x, int16 y, uint resIndex) { - byte *imageData = _vm->_res->load(resIndex); + byte *imageData = _vm->_res->load(resIndex)->data; int16 headerSize = READ_LE_UINT16(imageData); int16 width = imageData[2]; int16 height = imageData[3]; @@ -276,7 +276,7 @@ void Screen::updateVerbLine(int16 slotIndex, int16 slotOffset) { debug(0, "Screen::updateVerbLine() _verbLineNum = %d; _verbLineX = %d; _verbLineY = %d; _verbLineWidth = %d; _verbLineCount = %d", _verbLineNum, _verbLineX, _verbLineY, _verbLineWidth, _verbLineCount); - Font font(_vm->_res->load(_fontResIndexArray[0])); + Font font(_vm->_res->load(_fontResIndexArray[0])->data); _verbLineItems[_verbLineNum].slotIndex = slotIndex; _verbLineItems[_verbLineNum].slotOffset = slotOffset; @@ -392,7 +392,7 @@ void Screen::updateTalkText(int16 slotIndex, int16 slotOffset) { item->duration = 0; item->lineCount = 0; - Font font(_vm->_res->load(_fontResIndexArray[item->fontNum])); + Font font(_vm->_res->load(_fontResIndexArray[item->fontNum])->data); int16 wordLength, wordWidth; while (*textData < 0xF0) { @@ -558,7 +558,7 @@ void Screen::drawGuiTextMulti(byte *textData) { int16 Screen::wrapGuiText(uint fontResIndex, int maxWidth, GuiTextWrapState &wrapState) { - Font font(_vm->_res->load(fontResIndex)); + Font font(_vm->_res->load(fontResIndex)->data); int16 len = 0; while (*wrapState.sourceString >= 0x20 && *wrapState.sourceString < 0xF0) { @@ -594,7 +594,7 @@ int16 Screen::drawString(int16 x, int16 y, byte color, uint fontResIndex, byte * debug(0, "Screen::drawString(%d, %d, %d, %d)", x, y, color, fontResIndex); - Font font(_vm->_res->load(fontResIndex)); + Font font(_vm->_res->load(fontResIndex)->data); if (len == -1) len = strlen((char*)text); diff --git a/engines/toltecs/script.cpp b/engines/toltecs/script.cpp index 188cb82f7f..602c3f507b 100644 --- a/engines/toltecs/script.cpp +++ b/engines/toltecs/script.cpp @@ -150,10 +150,10 @@ void ScriptInterpreter::loadScript(uint resIndex, uint slotIndex) { delete[] _slots[slotIndex].data; _slots[slotIndex].resIndex = resIndex; - byte *scriptData = _vm->_res->load(resIndex); - _slots[slotIndex].size = _vm->_res->getCurItemSize(); + Resource *scriptResource = _vm->_res->load(resIndex); + _slots[slotIndex].size = scriptResource->size; _slots[slotIndex].data = new byte[_slots[slotIndex].size]; - memcpy(_slots[slotIndex].data, scriptData, _slots[slotIndex].size); + memcpy(_slots[slotIndex].data, scriptResource->data, _slots[slotIndex].size); } diff --git a/engines/toltecs/sound.cpp b/engines/toltecs/sound.cpp index 08df1ceec2..b3d327f5f8 100644 --- a/engines/toltecs/sound.cpp +++ b/engines/toltecs/sound.cpp @@ -133,14 +133,13 @@ void Sound::internalPlaySound(int16 resIndex, int16 type, int16 volume, int16 pa // If all channels are in use no new sound will be played if (freeChannel >= 0) { - byte *soundData = _vm->_res->load(resIndex); - uint32 soundSize = _vm->_res->getCurItemSize(); + Resource *soundResource = _vm->_res->load(resIndex); byte flags = Audio::Mixer::FLAG_UNSIGNED; // Background sounds if (type == kChannelTypeBackground) flags |= Audio::Mixer::FLAG_LOOP; - Audio::AudioStream *stream = Audio::makeLinearInputStream(soundData, soundSize, 22050, flags, 0, 0); + Audio::AudioStream *stream = Audio::makeLinearInputStream(soundResource->data, soundResource->size, 22050, flags, 0, 0); channels[freeChannel].type = type; channels[freeChannel].resIndex = resIndex; diff --git a/engines/toltecs/sprite.cpp b/engines/toltecs/sprite.cpp index 264216daf2..787f15c15a 100644 --- a/engines/toltecs/sprite.cpp +++ b/engines/toltecs/sprite.cpp @@ -216,7 +216,7 @@ void Screen::addDrawRequest(const DrawRequest &drawRequest) { sprite.resIndex = drawRequest.resIndex; sprite.frameNum = frameNum; - spriteData = _vm->_res->load(drawRequest.resIndex); + spriteData = _vm->_res->load(drawRequest.resIndex)->data; if (drawRequest.flags & 0x1000) { sprite.flags |= 4; @@ -405,7 +405,7 @@ void Screen::drawSprite(const SpriteDrawItem &sprite) { debug(0, "Screen::drawSprite() width = %d; height = %d; origWidth = %d; origHeight = %d", sprite.width, sprite.height, sprite.origWidth, sprite.origHeight); - byte *source = _vm->_res->load(sprite.resIndex) + sprite.offset; + byte *source = _vm->_res->load(sprite.resIndex)->data + sprite.offset; byte *dest = _frontScreen + sprite.x + sprite.y * 640; SpriteReader spriteReader(source, sprite); diff --git a/engines/toltecs/toltecs.cpp b/engines/toltecs/toltecs.cpp index 40b23881b7..80a77af994 100644 --- a/engines/toltecs/toltecs.cpp +++ b/engines/toltecs/toltecs.cpp @@ -186,7 +186,8 @@ Common::Error ToltecsEngine::run() { void ToltecsEngine::loadScene(uint resIndex) { // TODO - byte *scene = _res->load(resIndex); + Resource *sceneResource = _res->load(resIndex); + byte *scene = sceneResource->data; uint32 imageSize = READ_LE_UINT32(scene); _sceneResIndex = resIndex; -- cgit v1.2.3