aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/teenagent/font.cpp1
-rw-r--r--engines/teenagent/inventory.cpp11
-rw-r--r--engines/teenagent/music.cpp7
-rw-r--r--engines/teenagent/resources.h5
-rw-r--r--engines/teenagent/scene.cpp8
-rw-r--r--engines/teenagent/teenagent.cpp14
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
}