diff options
-rw-r--r-- | engines/teenagent/font.cpp | 1 | ||||
-rw-r--r-- | engines/teenagent/inventory.cpp | 11 | ||||
-rw-r--r-- | engines/teenagent/music.cpp | 7 | ||||
-rw-r--r-- | engines/teenagent/resources.h | 5 | ||||
-rw-r--r-- | engines/teenagent/scene.cpp | 8 | ||||
-rw-r--r-- | engines/teenagent/teenagent.cpp | 14 |
6 files changed, 27 insertions, 19 deletions
diff --git a/engines/teenagent/font.cpp b/engines/teenagent/font.cpp index d69db372b4..bd7f40fcbb 100644 --- a/engines/teenagent/font.cpp +++ b/engines/teenagent/font.cpp @@ -42,6 +42,7 @@ void Font::load(const Pack &pack, int id) { data = new byte[s->size()]; s->read(data, s->size()); debug(0, "font size: %d", s->size()); + delete s; } uint Font::render(Graphics::Surface *surface, int x, int y, char c, byte color) { diff --git a/engines/teenagent/inventory.cpp b/engines/teenagent/inventory.cpp index f97bbf8b5d..21584394c6 100644 --- a/engines/teenagent/inventory.cpp +++ b/engines/teenagent/inventory.cpp @@ -39,10 +39,13 @@ void Inventory::init(TeenAgentEngine *engine) { FilePack varia; varia.open("varia.res"); - Common::SeekableReadStream *s = varia.getStream(3); - assert(s != NULL); - debug(0, "loading inventory background..."); - background.load(s, Surface::kTypeOns); + { + Common::SeekableReadStream *s = varia.getStream(3); + assert(s != NULL); + debug(0, "loading inventory background..."); + background.load(s, Surface::kTypeOns); + delete s; + } uint32 items_size = varia.getSize(4); if (items_size == 0) diff --git a/engines/teenagent/music.cpp b/engines/teenagent/music.cpp index 5f554bf287..daab75c145 100644 --- a/engines/teenagent/music.cpp +++ b/engines/teenagent/music.cpp @@ -63,16 +63,14 @@ bool MusicPlayer::load(int id) { byte sampleResource = ((sample >> 4) & 0x0F) * 10 + (sample & 0x0F); debug(0, "currSample = %d, sample = 0x%02x, resource: %d", currSample, sample, sampleResource); uint32 sampleSize = res->sam_mmm.getSize(sampleResource); - Common::SeekableReadStream *in = res->sam_mmm.getStream(sampleResource); - - if (in == 0) { + if (sampleSize == 0) { warning("load: invalid sample %d (0x%02x)", sample, sample); _samples[sample].clear(); continue; } _samples[sample].resize(sampleSize); - in->read(_samples[sample].data, sampleSize); + res->sam_mmm.read(sampleResource, _samples[sample].data, sampleSize); } // Load the music data @@ -101,6 +99,7 @@ bool MusicPlayer::load(int id) { debug(0, "unhandled music command %02x", cmd); } } + delete stream; _currRow = 0; _id = id; return true; diff --git a/engines/teenagent/resources.h b/engines/teenagent/resources.h index 5d947e38af..c82cf75e77 100644 --- a/engines/teenagent/resources.h +++ b/engines/teenagent/resources.h @@ -48,12 +48,11 @@ public: //void loadOns(Graphics::Surface &surface, int id, uint16 &dst); #ifdef __PSP__ - TransientFilePack off, on, ons, lan000, lan500, sam_mmm, sam_sam; + TransientFilePack off, on, ons, lan000, lan500, sam_mmm, sam_sam, mmm; #else - FilePack off, on, ons, lan000, lan500, sam_mmm, sam_sam; + FilePack off, on, ons, lan000, lan500, sam_mmm, sam_sam, mmm; #endif - MemoryPack mmm; Segment cseg, dseg, eseg; Font font7, font8; }; diff --git a/engines/teenagent/scene.cpp b/engines/teenagent/scene.cpp index a1492e730a..32cedfcc07 100644 --- a/engines/teenagent/scene.cpp +++ b/engines/teenagent/scene.cpp @@ -218,6 +218,7 @@ void Scene::init(TeenAgentEngine *engine, OSystem *system) { if (teenagent.empty()) error("invalid mark animation"); + delete s; s = varia.getStream(2); if (s == NULL) error("invalid resource data"); @@ -226,6 +227,7 @@ void Scene::init(TeenAgentEngine *engine, OSystem *system) { if (teenagent_idle.empty()) error("invalid mark animation"); + delete s; varia.close(); loadObjectData(); } @@ -335,8 +337,10 @@ void Scene::loadOns() { ons = new Surface[ons_count]; for (uint32 i = 0; i < ons_count; ++i) { Common::SeekableReadStream *s = res->ons.getStream(on_id[i]); - if (s != NULL) + if (s != NULL) { ons[i].load(s, Surface::kTypeOns); + delete s; + } } } } @@ -437,6 +441,7 @@ void Scene::playAnimation(byte idx, uint id, bool loop, bool paused, bool ignore custom_animation[idx].loop = loop; custom_animation[idx].paused = paused; custom_animation[idx].ignore = ignore; + delete s; } void Scene::playActorAnimation(uint id, bool loop, bool ignore) { @@ -448,6 +453,7 @@ void Scene::playActorAnimation(uint id, bool loop, bool ignore) { actor_animation.load(s); actor_animation.loop = loop; actor_animation.ignore = ignore; + delete s; } Animation * Scene::getAnimation(byte slot) { diff --git a/engines/teenagent/teenagent.cpp b/engines/teenagent/teenagent.cpp index 001e9a0d41..43bb78c495 100644 --- a/engines/teenagent/teenagent.cpp +++ b/engines/teenagent/teenagent.cpp @@ -333,13 +333,13 @@ bool TeenAgentEngine::showMetropolis() { memset(palette, 0, sizeof(palette)); { Common::SeekableReadStream *s = varia.getStream(5); - for(uint c = 0; c < 0x100; ++c) { - uint idx = c * 4; - s->read(palette + idx, 3); - palette[idx] *= 4; - palette[idx + 1] *= 4; - palette[idx + 2] *= 4; + for(uint c = 0; c < 0x400; c += 4) { + s->read(palette + c, 3); + palette[c] *= 4; + palette[c + 1] *= 4; + palette[c + 2] *= 4; } + delete s; } _system->setPalette(palette, 0, 0x100); @@ -919,7 +919,7 @@ void TeenAgentEngine::playSoundNow(byte id) { //debug(0, "playing %u samples...", size); Audio::AudioStream *stream = Audio::makeRawStream(data, size, 11025, 0); - _mixer->playInputStream(Audio::Mixer::kSFXSoundType, &_soundHandle, stream); + _mixer->playInputStream(Audio::Mixer::kSFXSoundType, &_soundHandle, stream); //dispose is YES by default } |