[Scummvm-cvs-logs] SF.net SVN: scummvm:[45088] scummvm/trunk/engines/sci
thebluegr at users.sourceforge.net
thebluegr at users.sourceforge.net
Wed Oct 14 20:03:47 CEST 2009
Revision: 45088
http://scummvm.svn.sourceforge.net/scummvm/?rev=45088&view=rev
Author: thebluegr
Date: 2009-10-14 18:03:47 +0000 (Wed, 14 Oct 2009)
Log Message:
-----------
Fixed the palette in the SEQ decoder again
Modified Paths:
--------------
scummvm/trunk/engines/sci/engine/kgraphics.cpp
scummvm/trunk/engines/sci/gfx/seq_decoder.cpp
scummvm/trunk/engines/sci/gfx/seq_decoder.h
scummvm/trunk/engines/sci/gui/gui_palette.cpp
scummvm/trunk/engines/sci/gui/gui_palette.h
Modified: scummvm/trunk/engines/sci/engine/kgraphics.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kgraphics.cpp 2009-10-14 17:08:02 UTC (rev 45087)
+++ scummvm/trunk/engines/sci/engine/kgraphics.cpp 2009-10-14 18:03:47 UTC (rev 45088)
@@ -1041,24 +1041,29 @@
Common::String filename = s->_segMan->getString(argv[0]);
int delay = argv[1].toUint16(); // Time between frames in ticks
SeqDecoder seq;
- SciGuiScreen *videoScreen = new SciGuiScreen(320, 200, 1);
- if (!seq.loadFile(filename, s->resMan, videoScreen) &&
- !seq.loadFile(Common::String("SEQ/") + filename, s->resMan, videoScreen)) {
+ if (!seq.loadFile(filename, s->resMan) &&
+ !seq.loadFile(Common::String("SEQ/") + filename, s->resMan)) {
warning("Failed to open movie file %s", filename.c_str());
- delete videoScreen;
return s->r_acc;
}
- delete videoScreen;
-
bool play = true;
while (play) {
uint32 startTime = g_system->getMillis();
SeqFrame *frame = seq.getFrame(play);
Common::Rect frameRect = frame->frameRect;
- g_system->copyRectToScreen(frame->data, frameRect.width(), frameRect.left, frameRect.top, frameRect.width(), frameRect.height());
+ byte *scr = (byte *)g_system->lockScreen()->pixels;
+ int cur = 0;
+ for (int y = frameRect.top; y < frameRect.bottom; y++) {
+ for (int x = frameRect.left; x < frameRect.right; x++) {
+ if (frame->data[cur] != frame->colorKey)
+ scr[y * 320 + x] = frame->data[cur];
+ cur++;
+ }
+ }
+ g_system->unlockScreen();
g_system->updateScreen();
delete frame->data;
Modified: scummvm/trunk/engines/sci/gfx/seq_decoder.cpp
===================================================================
--- scummvm/trunk/engines/sci/gfx/seq_decoder.cpp 2009-10-14 17:08:02 UTC (rev 45087)
+++ scummvm/trunk/engines/sci/gfx/seq_decoder.cpp 2009-10-14 18:03:47 UTC (rev 45088)
@@ -35,7 +35,7 @@
closeFile();
}
-bool SeqDecoder::loadFile(Common::String fileName, ResourceManager *resMan, SciGuiScreen *screen) {
+bool SeqDecoder::loadFile(Common::String fileName, ResourceManager *resMan) {
closeFile();
_fileStream = SearchMan.createReadStreamForMember(fileName);
@@ -48,11 +48,13 @@
byte *paletteData = new byte[paletteSize];
_fileStream->read(paletteData, paletteSize);
GuiPalette seqPalette;
- SciGuiPalette *pal = new SciGuiPalette(resMan, screen);
+ SciGuiScreen *videoScreen = new SciGuiScreen(320, 200, 1);
+ SciGuiPalette *pal = new SciGuiPalette(resMan, videoScreen, false);
pal->createFromData(paletteData, &seqPalette);
pal->set(&seqPalette, 2);
delete pal;
delete[] paletteData;
+ delete videoScreen;
_currentFrame = 0;
Modified: scummvm/trunk/engines/sci/gfx/seq_decoder.h
===================================================================
--- scummvm/trunk/engines/sci/gfx/seq_decoder.h 2009-10-14 17:08:02 UTC (rev 45087)
+++ scummvm/trunk/engines/sci/gfx/seq_decoder.h 2009-10-14 18:03:47 UTC (rev 45088)
@@ -44,7 +44,7 @@
public:
SeqDecoder() : _fileStream(0) { }
~SeqDecoder();
- bool loadFile(Common::String fileName, ResourceManager *resMan, SciGuiScreen *screen);
+ bool loadFile(Common::String fileName, ResourceManager *resMan);
void closeFile();
SeqFrame *getFrame(bool &hasNext);
Modified: scummvm/trunk/engines/sci/gui/gui_palette.cpp
===================================================================
--- scummvm/trunk/engines/sci/gui/gui_palette.cpp 2009-10-14 17:08:02 UTC (rev 45087)
+++ scummvm/trunk/engines/sci/gui/gui_palette.cpp 2009-10-14 18:03:47 UTC (rev 45088)
@@ -34,7 +34,7 @@
namespace Sci {
-SciGuiPalette::SciGuiPalette(ResourceManager *resMan, SciGuiScreen *screen)
+SciGuiPalette::SciGuiPalette(ResourceManager *resMan, SciGuiScreen *screen, bool autoSetPalette)
: _resMan(resMan), _screen(screen) {
int16 color;
@@ -54,14 +54,16 @@
_sysPalette.colors[255].g = 255;
_sysPalette.colors[255].b = 255;
- // Load default palette from resource 999
- if (!setFromResource(999, 2)) {
- // if not found, we try to set amiga palette
- if (!setAmiga()) {
- // if that also doesnt work out, set EGA palette
- setEGA();
- }
- };
+ if (autoSetPalette) {
+ // Load default palette from resource 999
+ if (!setFromResource(999, 2)) {
+ // if not found, we try to set amiga palette
+ if (!setAmiga()) {
+ // if that also doesnt work out, set EGA palette
+ setEGA();
+ }
+ };
+ }
// Init _clrPowers used in MatchColor
for(color = 0; color < 256; color++)
Modified: scummvm/trunk/engines/sci/gui/gui_palette.h
===================================================================
--- scummvm/trunk/engines/sci/gui/gui_palette.h 2009-10-14 17:08:02 UTC (rev 45087)
+++ scummvm/trunk/engines/sci/gui/gui_palette.h 2009-10-14 18:03:47 UTC (rev 45088)
@@ -33,7 +33,7 @@
class SciGuiScreen;
class SciGuiPalette {
public:
- SciGuiPalette(ResourceManager *resMan, SciGuiScreen *screen);
+ SciGuiPalette(ResourceManager *resMan, SciGuiScreen *screen, bool autoSetPalette = true);
~SciGuiPalette();
void createFromData(byte *data, GuiPalette *paletteOut);
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