More VQA fixes:

* Use setScreenPalette() rather than calling the backend directly. (As an extra
  bonus, the VQA player now only needs to store 3 bytes per colour.)

* Hide the mouse cursor while the movie is playing.

svn-id: r22563
This commit is contained in:
Torbjörn Andersson 2006-05-21 19:03:27 +00:00
parent 7d15c60ab9
commit b98a67d1eb
3 changed files with 10 additions and 10 deletions

View File

@ -163,9 +163,11 @@ void KyraEngine_v3::playVQA(const char *name) {
vqa.open(filename);
if (vqa.opened()) {
_screen->hideMouse();
vqa.setDrawPage(0);
vqa.play();
vqa.close();
_screen->showMouse();
}
if (_screen->_curPage == 0)

View File

@ -511,10 +511,9 @@ void VQAMovie::displayFrame(int frameNum) {
_file.read(inbuf, size);
for (i = 0; i < size / 3; i++) {
*pal++ = 4 * (0x3F & *inbuf++);
*pal++ = 4 * (0x3F & *inbuf++);
*pal++ = 4 * (0x3F & *inbuf++);
*pal++ = 0;
*pal++ = *inbuf++;
*pal++ = *inbuf++;
*pal++ = *inbuf++;
}
break;
@ -527,10 +526,9 @@ void VQAMovie::displayFrame(int frameNum) {
size = decodeFormat80(inbuf, outbuf);
for (i = 0; i < size / 3; i++) {
*pal++ = 4 * (0x3F & *outbuf++);
*pal++ = 4 * (0x3F & *outbuf++);
*pal++ = 4 * (0x3F & *outbuf++);
*pal++ = 0;
*pal++ = *outbuf++;
*pal++ = *outbuf++;
*pal++ = *outbuf++;
}
break;
@ -575,7 +573,7 @@ void VQAMovie::displayFrame(int frameNum) {
// The frame has been decoded
if (_frameInfo[frameNum] & 0x80000000) {
_system->setPalette(_palette, 0, 256);
_vm->screen()->setScreenPalette(_palette);
}
int blockPitch = _header.width / _header.blockW;

View File

@ -108,7 +108,7 @@ protected:
uint32 _numVectorPointers;
uint16 *_vectorPointers;
byte _palette[4 * 256];
byte _palette[3 * 256];
byte *_frame;
Audio::AppendableAudioStream *_stream;