[Scummvm-cvs-logs] SF.net SVN: scummvm: [31650] scummvm/trunk/engines/made
thebluegr at users.sourceforge.net
thebluegr at users.sourceforge.net
Mon Apr 21 22:20:34 CEST 2008
Revision: 31650
http://scummvm.svn.sourceforge.net/scummvm/?rev=31650&view=rev
Author: thebluegr
Date: 2008-04-21 13:20:34 -0700 (Mon, 21 Apr 2008)
Log Message:
-----------
Some palette related fixes
Modified Paths:
--------------
scummvm/trunk/engines/made/pmvplayer.cpp
scummvm/trunk/engines/made/pmvplayer.h
scummvm/trunk/engines/made/resource.cpp
scummvm/trunk/engines/made/resource.h
scummvm/trunk/engines/made/screen.cpp
scummvm/trunk/engines/made/screen.h
scummvm/trunk/engines/made/scriptfuncs.cpp
Modified: scummvm/trunk/engines/made/pmvplayer.cpp
===================================================================
--- scummvm/trunk/engines/made/pmvplayer.cpp 2008-04-21 18:46:57 UTC (rev 31649)
+++ scummvm/trunk/engines/made/pmvplayer.cpp 2008-04-21 20:20:34 UTC (rev 31650)
@@ -68,8 +68,8 @@
_mixer->stopAll();
// Read palette
- _fd->read(_palette, 768);
- _vm->_screen->setRGBPalette(_palette);
+ _fd->read(_paletteRGB, 768);
+ _vm->_screen->setRGBPalette(_paletteRGB);
uint32 frameCount = 0;
uint16 chunkCount = 0;
@@ -116,7 +116,7 @@
if (palChunkOfs) {
palData = frameData + palChunkOfs - 8;
palSize = READ_LE_UINT32(palData + 4);
- decompressPalette(palData + 8, _palette, palSize);
+ decompressPalette(palData + 8, _paletteRGB, palSize);
}
// Handle video
@@ -145,7 +145,7 @@
firstTime = false;
}
- _vm->_screen->setRGBPalette(_palette);
+ _vm->_screen->setRGBPalette(_paletteRGB);
handleEvents();
updateScreen();
Modified: scummvm/trunk/engines/made/pmvplayer.h
===================================================================
--- scummvm/trunk/engines/made/pmvplayer.h 2008-04-21 18:46:57 UTC (rev 31649)
+++ scummvm/trunk/engines/made/pmvplayer.h 2008-04-21 20:20:34 UTC (rev 31650)
@@ -51,7 +51,7 @@
Common::File *_fd;
Audio::AppendableAudioStream *_audioStream;
Audio::SoundHandle _audioStreamHandle;
- byte _palette[768];
+ byte _paletteRGB[768];
Graphics::Surface *_surface;
bool _abort;
void readChunk(uint32 &chunkType, uint32 &chunkSize);
Modified: scummvm/trunk/engines/made/resource.cpp
===================================================================
--- scummvm/trunk/engines/made/resource.cpp 2008-04-21 18:46:57 UTC (rev 31649)
+++ scummvm/trunk/engines/made/resource.cpp 2008-04-21 20:20:34 UTC (rev 31650)
@@ -38,21 +38,26 @@
/* PictureResource */
-PictureResource::PictureResource() : _picture(NULL), _palette(NULL) {
+PictureResource::PictureResource() : _picture(NULL), _picturePalette(NULL) {
+ _hasPalette = false;
}
PictureResource::~PictureResource() {
- if (_picture)
+ if (_picture) {
delete _picture;
- if (_palette)
- delete[] _palette;
+ _picture = 0;
+ }
+ if (_picturePalette) {
+ delete[] _picturePalette;
+ _picturePalette = 0;
+ }
}
void PictureResource::load(byte *source, int size) {
Common::MemoryReadStream *sourceS = new Common::MemoryReadStream(source, size);
- bool hasPalette = sourceS->readByte() == 1;
+ _hasPalette = (sourceS->readByte() != 0);
sourceS->readByte();
sourceS->readByte();
sourceS->readByte();
@@ -66,9 +71,9 @@
debug(2, "width = %d; height = %d\n", width, height);
- if (hasPalette) {
- _palette = new byte[768];
- sourceS->read(_palette, 768);
+ if (_hasPalette) {
+ _picturePalette = new byte[768];
+ sourceS->read(_picturePalette, 768);
}
_picture = new Graphics::Surface();
Modified: scummvm/trunk/engines/made/resource.h
===================================================================
--- scummvm/trunk/engines/made/resource.h 2008-04-21 18:46:57 UTC (rev 31649)
+++ scummvm/trunk/engines/made/resource.h 2008-04-21 20:20:34 UTC (rev 31650)
@@ -62,10 +62,12 @@
~PictureResource();
void load(byte *source, int size);
Graphics::Surface *getPicture() const { return _picture; }
- byte *getPalette() const { return _palette; }
+ byte *getPalette() const { return _picturePalette; }
+ bool hasPalette() const { return _hasPalette; }
protected:
Graphics::Surface *_picture;
- byte *_palette;
+ byte *_picturePalette;
+ bool _hasPalette;
};
class AnimationResource : public Resource {
Modified: scummvm/trunk/engines/made/screen.cpp
===================================================================
--- scummvm/trunk/engines/made/screen.cpp 2008-04-21 18:46:57 UTC (rev 31649)
+++ scummvm/trunk/engines/made/screen.cpp 2008-04-21 20:20:34 UTC (rev 31650)
@@ -73,16 +73,20 @@
}
-void Screen::setRGBPalette(byte *palRGB, int start, int count) {
+void Screen::loadRGBPalette(byte *palRGB, int count) {
for (int i = 0; i < count; i++) {
- _palette[i * 4 + 0] = palRGB[i * 3 + 0];
- _palette[i * 4 + 1] = palRGB[i * 3 + 1];
- _palette[i * 4 + 2] = palRGB[i * 3 + 2];
- _palette[i * 4 + 3] = 0;
+ _screenPalette[i * 4 + 0] = palRGB[i * 3 + 0];
+ _screenPalette[i * 4 + 1] = palRGB[i * 3 + 1];
+ _screenPalette[i * 4 + 2] = palRGB[i * 3 + 2];
+ _screenPalette[i * 4 + 3] = 0;
}
- _vm->_system->setPalette(_palette, start, count);
}
+void Screen::setRGBPalette(byte *palRGB, int start, int count) {
+ loadRGBPalette(palRGB, count);
+ _vm->_system->setPalette(_screenPalette, start, count);
+}
+
uint16 Screen::updateChannel(uint16 channelIndex) {
return 0;
}
@@ -226,6 +230,8 @@
if (flexIndex == 0)
return 0;
+ if (flexIndex == 1279) return 0; // HACK: fixes the first screen
+
PictureResource *flex = _vm->_res->getPicture(flexIndex);
Graphics::Surface *sourceSurface = flex->getPicture();
byte *source = (byte*)sourceSurface->getBasePtr(0, 0);
@@ -248,10 +254,12 @@
dest += clipInfo.destSurface->pitch;
}
- // TODO: Palette stuff; palette should be set in showPage
- byte *pal = flex->getPalette();
- if (pal) {
- setRGBPalette(pal);
+ // Palette is set in showPage
+ if (flex->hasPalette()) {
+ byte *pal = flex->getPalette();
+ if (pal != 0) {
+ loadRGBPalette(pal);
+ }
}
_vm->_res->freeResource(flex);
Modified: scummvm/trunk/engines/made/screen.h
===================================================================
--- scummvm/trunk/engines/made/screen.h 2008-04-21 18:46:57 UTC (rev 31649)
+++ scummvm/trunk/engines/made/screen.h 2008-04-21 20:20:34 UTC (rev 31650)
@@ -61,6 +61,7 @@
void clearScreen();
void drawSurface(Graphics::Surface *source, int x, int y);
+ void loadRGBPalette(byte *palRGB, int count = 256);
void setRGBPalette(byte *palRGB, int start = 0, int count = 256);
uint16 updateChannel(uint16 channelIndex);
@@ -99,7 +100,7 @@
void setExclude(uint16 exclude);
void setGround(uint16 ground);
- byte _palette[256 * 4];
+ byte _screenPalette[256 * 4];
protected:
MadeEngine *_vm;
Modified: scummvm/trunk/engines/made/scriptfuncs.cpp
===================================================================
--- scummvm/trunk/engines/made/scriptfuncs.cpp 2008-04-21 18:46:57 UTC (rev 31649)
+++ scummvm/trunk/engines/made/scriptfuncs.cpp 2008-04-21 20:20:34 UTC (rev 31650)
@@ -185,12 +185,12 @@
}
int16 ScriptFunctionsRtz::o1_CLS(int16 argc, int16 *argv) {
- //_vm->_screen->clearScreen();
+ _vm->_screen->clearScreen();
return 0;
}
int16 ScriptFunctionsRtz::o1_SHOWPAGE(int16 argc, int16 *argv) {
- //_vm->_system->setPalette(_vm->_screen->_palette, 0, 256);
+ _vm->_system->setPalette(_vm->_screen->_screenPalette, 0, 256);
_vm->_screen->show();
return 0;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list