aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/made/made.cpp2
-rw-r--r--engines/made/pmvplayer.cpp26
-rw-r--r--engines/made/pmvplayer.h6
-rw-r--r--engines/made/screen.cpp10
-rw-r--r--engines/made/screen.h2
5 files changed, 22 insertions, 24 deletions
diff --git a/engines/made/made.cpp b/engines/made/made.cpp
index feb80f407d..f87649d7a7 100644
--- a/engines/made/made.cpp
+++ b/engines/made/made.cpp
@@ -80,7 +80,7 @@ MadeEngine::MadeEngine(OSystem *syst, const MadeGameDescription *gameDesc) : Eng
if (cd_num >= 0)
_system->openCD(cd_num);
- _pmvPlayer = new PmvPlayer(_system, _mixer);
+ _pmvPlayer = new PmvPlayer(this, _mixer);
_res = new ProjectReader();
_screen = new Screen(this);
_dat = new GameDatabase();
diff --git a/engines/made/pmvplayer.cpp b/engines/made/pmvplayer.cpp
index cb31954902..69c3c80318 100644
--- a/engines/made/pmvplayer.cpp
+++ b/engines/made/pmvplayer.cpp
@@ -24,10 +24,11 @@
*/
#include "made/pmvplayer.h"
+#include "made/screen.h"
namespace Made {
-PmvPlayer::PmvPlayer(OSystem *system, Audio::Mixer *mixer) : _fd(NULL), _system(system), _mixer(mixer) {
+PmvPlayer::PmvPlayer(MadeEngine *vm, Audio::Mixer *mixer) : _fd(NULL), _vm(vm), _mixer(mixer) {
}
PmvPlayer::~PmvPlayer() {
@@ -68,7 +69,7 @@ void PmvPlayer::play(const char *filename) {
// Read palette
_fd->read(_palette, 768);
- updatePalette();
+ _vm->_screen->setRGBPalette(_palette);
uint32 frameCount = 0;
uint16 chunkCount = 0;
@@ -144,7 +145,7 @@ void PmvPlayer::play(const char *filename) {
firstTime = false;
}
- updatePalette();
+ _vm->_screen->setRGBPalette(_palette);
handleEvents();
updateScreen();
@@ -153,7 +154,7 @@ void PmvPlayer::play(const char *filename) {
delete[] frameData;
while (_mixer->getSoundElapsedTime(_audioStreamHandle) < frameCount * frameDelay) {
- _system->delayMillis(10);
+ _vm->_system->delayMillis(10);
}
}
@@ -180,7 +181,7 @@ void PmvPlayer::readChunk(uint32 &chunkType, uint32 &chunkSize) {
void PmvPlayer::handleEvents() {
Common::Event event;
- while (_system->getEventManager()->pollEvent(event)) {
+ while (_vm->_system->getEventManager()->pollEvent(event)) {
switch (event.type) {
case Common::EVENT_KEYDOWN:
if (event.kbd.keycode == Common::KEYCODE_ESCAPE)
@@ -196,20 +197,9 @@ void PmvPlayer::handleEvents() {
}
}
-void PmvPlayer::updatePalette() {
- byte colors[1024];
- for (int i = 0; i < 256; i++) {
- colors[i * 4 + 0] = _palette[i * 3 + 0];
- colors[i * 4 + 1] = _palette[i * 3 + 1];
- colors[i * 4 + 2] = _palette[i * 3 + 2];
- colors[i * 4 + 3] = 0;
- }
- _system->setPalette(colors, 0, 256);
-}
-
void PmvPlayer::updateScreen() {
- _system->copyRectToScreen((const byte*)_surface->pixels, _surface->pitch, 0, 0, _surface->w, _surface->h);
- _system->updateScreen();
+ _vm->_system->copyRectToScreen((const byte*)_surface->pixels, _surface->pitch, 0, 0, _surface->w, _surface->h);
+ _vm->_system->updateScreen();
}
void PmvPlayer::decompressPalette(byte *palData, byte *outPal, uint32 palDataSize) {
diff --git a/engines/made/pmvplayer.h b/engines/made/pmvplayer.h
index 117817ed93..0e63d73f7f 100644
--- a/engines/made/pmvplayer.h
+++ b/engines/made/pmvplayer.h
@@ -36,16 +36,17 @@
#include "made/graphics.h"
#include "made/sound.h"
+#include "made/made.h"
namespace Made {
class PmvPlayer {
public:
- PmvPlayer(OSystem *system, Audio::Mixer *mixer);
+ PmvPlayer(MadeEngine *vm, Audio::Mixer *mixer);
~PmvPlayer();
void play(const char *filename);
protected:
- OSystem *_system;
+ MadeEngine *_vm;
Audio::Mixer *_mixer;
Common::File *_fd;
Audio::AppendableAudioStream *_audioStream;
@@ -55,7 +56,6 @@ protected:
bool _abort;
void readChunk(uint32 &chunkType, uint32 &chunkSize);
void handleEvents();
- void updatePalette();
void updateScreen();
void decompressPalette(byte *palData, byte *outPal, uint32 palDataSize);
};
diff --git a/engines/made/screen.cpp b/engines/made/screen.cpp
index 6ae93730f7..b6d66a1330 100644
--- a/engines/made/screen.cpp
+++ b/engines/made/screen.cpp
@@ -73,7 +73,15 @@ void Screen::drawSurface(Graphics::Surface *source, int x, int y) {
}
-void Screen::setPalette(byte *palette, int start, int count) {
+void Screen::setRGBPalette(byte *palette, int start, int count) {
+ byte colors[1024];
+ for (int i = 0; i < count; i++) {
+ colors[i * 4 + 0] = palette[i * 3 + 0];
+ colors[i * 4 + 1] = palette[i * 3 + 1];
+ colors[i * 4 + 2] = palette[i * 3 + 2];
+ colors[i * 4 + 3] = 0;
+ }
+ _vm->_system->setPalette(colors, start, count);
}
uint16 Screen::updateChannel(uint16 channelIndex) {
diff --git a/engines/made/screen.h b/engines/made/screen.h
index dfaa34d7c6..deb7b93015 100644
--- a/engines/made/screen.h
+++ b/engines/made/screen.h
@@ -61,7 +61,7 @@ public:
void clearScreen();
void drawSurface(Graphics::Surface *source, int x, int y);
- void setPalette(byte *palette, int start, int count);
+ void setRGBPalette(byte *palette, int start = 0, int count = 256);
uint16 updateChannel(uint16 channelIndex);
void deleteChannel(uint16 channelIndex);