[Scummvm-cvs-logs] CVS: scummvm/scumm/smush saud_channel.cpp,1.23,1.24 smush_mixer.cpp,1.30,1.31 smush_player.cpp,1.109,1.110 smush_player.h,1.24,1.25
Eugene Sandulenko
sev at users.sourceforge.net
Mon Feb 2 14:43:10 CET 2004
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/scumm/insane insane.cpp,1.15,1.16 insane.h,1.9,1.10 insane_ben.cpp,1.8,1.9 insane_iact.cpp,1.10,1.11 insane_scenes.cpp,1.10,1.11
- Next message: [Scummvm-cvs-logs] CVS: web/docs datafiles.xml,1.13,1.14
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/scummvm/scumm/smush
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22922/scumm/smush
Modified Files:
saud_channel.cpp smush_mixer.cpp smush_player.cpp
smush_player.h
Log Message:
Fixed most bugs, so only cosmetic visual things left.
o Support transparency for characters. Needed for cockpit rendering
o Fixed bug in NUT renderer which drawed transparent characters garbled
o Fixed long-standing (and outstanding) bug with SAUD error
o Previous fix fixed music in some cases (scene transitions)
o Fixed bug with palette being reset when smush video is rewind
o Made debug level for insane adjustable at compile time (maybe I will remove it later)
Index: saud_channel.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/smush/saud_channel.cpp,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -d -r1.23 -r1.24
--- saud_channel.cpp 30 Jan 2004 17:30:06 -0000 1.23
+++ saud_channel.cpp 2 Feb 2004 22:40:20 -0000 1.24
@@ -75,7 +75,7 @@
} else
return false;
break;
- case TYPE_SDAT:
+ case TYPE_SDAT:
_inData = true;
_dataSize = size;
offset += 8;
@@ -103,7 +103,7 @@
} else if (_inData) {
if (_dataSize < _tbufferSize) {
int32 offset = _dataSize;
- while (handleSubTags(offset));
+ while (handleSubTags(offset)) ;
_sbufferSize = _dataSize;
_sbuffer = _tbuffer;
if (offset < _tbufferSize) {
@@ -171,12 +171,17 @@
}
SaudChannel::~SaudChannel() {
+ _dataSize = 0;
+ _tbufferSize = 0;
+ _sbufferSize = 0;
+ _markReached = true;
if (_tbuffer)
delete []_tbuffer;
if (_sbuffer) {
- warning("this should never happen !!!! (_sbuffer not NULL here)");
+ // _sbuffer can be not empty here with insane when it seeks in video
delete []_sbuffer;
}
+ _sbuffer = 0;
}
bool SaudChannel::isTerminated() const {
Index: smush_mixer.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/smush/smush_mixer.cpp,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -d -r1.30 -r1.31
--- smush_mixer.cpp 29 Jan 2004 18:15:27 -0000 1.30
+++ smush_mixer.cpp 2 Feb 2004 22:40:20 -0000 1.31
@@ -139,6 +139,7 @@
delete _channels[i].chan;
_channels[i].id = -1;
_channels[i].chan = NULL;
+ _mixer->endStream(_channels[i].handle);
}
}
return true;
Index: smush_player.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/smush/smush_player.cpp,v
retrieving revision 1.109
retrieving revision 1.110
diff -u -d -r1.109 -r1.110
--- smush_player.cpp 31 Jan 2004 12:28:38 -0000 1.109
+++ smush_player.cpp 2 Feb 2004 22:40:20 -0000 1.110
@@ -236,6 +236,7 @@
_speed = speed;
_insanity = false;
_middleAudio = false;
+ _skipPalette = false;
}
SmushPlayer::~SmushPlayer() {
@@ -657,6 +658,9 @@
checkBlock(b, TYPE_NPAL, 0x300);
debug(6, "SmushPlayer::handleNewPalette()");
+ if (_skipPalette)
+ return;
+
readPalette(_pal, b);
setPalette(_pal);
}
@@ -786,7 +790,6 @@
delete sub;
}
- // FIXME: Check either parameters are valid
if (_insanity) {
_vm->_insane->procPostRendering(_dst, 0, 0, 0, _frame, _nbframes-1);
}
@@ -808,8 +811,10 @@
_version = b.getWord();
_nbframes = b.getWord();
b.getWord();
- readPalette(_pal, b);
- setPalette(_pal);
+ if (!_skipPalette) {
+ readPalette(_pal, b);
+ setPalette(_pal);
+ }
}
void SmushPlayer::setupAnim(const char *file, const char *directory) {
@@ -972,9 +977,14 @@
}
void SmushPlayer::seekSan(const char *file, const char *directory, int32 pos, int32 contFrame) {
+ if(_smixer)
+ _smixer->stop();
+
if (file) {
- if (_base)
+ if (_base) {
+ _base->seek(0, FileChunk::seek_end);
delete _base;
+ }
_base = new FileChunk(file, directory);
// In this case we need to get palette and number of frames
@@ -986,8 +996,11 @@
}
if (pos >= 8)
pos -= 8;
+
+ _skipPalette = false;
} else {
_base->reinit(pos);
+ _skipPalette = true;
}
if (pos != 8 && pos) {
Index: smush_player.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/smush/smush_player.h,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -d -r1.24 -r1.25
--- smush_player.h 26 Jan 2004 22:44:47 -0000 1.24
+++ smush_player.h 2 Feb 2004 22:40:20 -0000 1.25
@@ -68,6 +68,7 @@
bool _updateNeeded;
bool _insanity;
bool _middleAudio;
+ bool _skipPalette;
public:
SmushPlayer(ScummEngine_v6 *scumm, int speed);
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/scumm/insane insane.cpp,1.15,1.16 insane.h,1.9,1.10 insane_ben.cpp,1.8,1.9 insane_iact.cpp,1.10,1.11 insane_scenes.cpp,1.10,1.11
- Next message: [Scummvm-cvs-logs] CVS: web/docs datafiles.xml,1.13,1.14
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list