[Scummvm-cvs-logs] CVS: scummvm/scumm/smush imuse_channel.cpp,1.23,1.24 smush_player.cpp,1.77,1.78 smush_player.h,1.15,1.16
Pawel Kolodziejski
aquadran at users.sourceforge.net
Sun Dec 21 16:11:01 CET 2003
Update of /cvsroot/scummvm/scummvm/scumm/smush
In directory sc8-pr-cvs1:/tmp/cvs-serv12382
Modified Files:
imuse_channel.cpp smush_player.cpp smush_player.h
Log Message:
changed some stuff with track_flags param in IACT handle smush code
Index: imuse_channel.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/smush/imuse_channel.cpp,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -d -r1.23 -r1.24
--- imuse_channel.cpp 16 Nov 2003 20:52:57 -0000 1.23
+++ imuse_channel.cpp 22 Dec 2003 00:10:43 -0000 1.24
@@ -52,17 +52,16 @@
}
bool ImuseChannel::setParameters(int32 nb, int32 size, int32 flags, int32 unk1) {
- // flags: 0 - 8 bits
- // values:
- // 1 - Voice
- // 2 - Background music
- // 0, 3-511 - SFX and volume
- // FIXME: this should be better
- if ((flags != 1) && (flags != 2) && ((flags / 4) != 0)) {
- _volume = 300 - ((flags / 8) * 4);
- }
- else {
+ if ((flags == 1) || (flags == 2) || (flags == 3)) {
_volume = 127;
+ } else if ((flags >= 100) && (flags <= 163)) {
+ _volume = flags * 2 - 200;
+ } else if ((flags >= 200) && (flags <= 263)) {
+ _volume = flags * 2 - 400;
+ } else if ((flags >= 300) && (flags <= 363)) {
+ _volume = flags * 2 - 600;
+ } else {
+ error("ImuseChannel::setParameters(): bad flags: %d", flags);
}
return true;
}
Index: smush_player.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/smush/smush_player.cpp,v
retrieving revision 1.77
retrieving revision 1.78
diff -u -d -r1.77 -r1.78
--- smush_player.cpp 21 Dec 2003 18:36:20 -0000 1.77
+++ smush_player.cpp 22 Dec 2003 00:10:43 -0000 1.78
@@ -337,11 +337,9 @@
int32 flags = b.getWord();
int32 vol = b.getByte();
int32 bal = b.getChar();
-#ifdef DEBUG
if (index == 0) {
debug(5, "track_id == %d, max_frames == %d, %d, %d, %d", track_id, max_frames, flags, vol, bal);
}
-#endif
int32 size = b.getSize() - 10;
handleSoundBuffer(track_id, index, max_frames, flags, vol, bal, b, size);
}
@@ -371,28 +369,11 @@
}
}
-void SmushPlayer::handleImuseBuffer(int32 track_id, int32 index, int32 nbframes, int32 size, int32 unk1, int32 track_flags, Chunk &b, int32 bsize) {
- int32 track = (track_flags << 16) | track_id;
- debug(6, "SmushPlayer::handleImuseBuffer(%d, %d)", track_id, index);
-
- SmushChannel *c = _smixer->findChannel(track);
- if (c == 0) {
- c = new ImuseChannel(track, _soundFrequency);
- _smixer->addChannel(c);
- }
- if (index == 0)
- c->setParameters(nbframes, size, track_flags, unk1);
- else
- c->checkParameters(index, nbframes, size, track_flags, unk1);
- c->appendData(b, bsize);
-}
-
-void SmushPlayer::handleImuseAction(Chunk &b) {
+void SmushPlayer::handleIACT(Chunk &b) {
checkBlock(b, TYPE_IACT, 8);
debug(6, "SmushPlayer::handleImuseAction()");
- int code;
- code = b.getWord();
+ int code = b.getWord();
int flags = b.getWord();
int unknown = b.getShort();
int track_flags = b.getWord();
@@ -407,7 +388,34 @@
int32 bsize = b.getSize() - 18;
if (g_scumm->_gameId != GID_CMI) {
- handleImuseBuffer(track_id, index, nbframes, size, unknown, track_flags, b, bsize);
+ int32 track = track_id;
+ if (track_flags == 1) {
+ track = track_id + 100;
+ } else if (track_flags == 2) {
+ track = track_id + 200;
+ } else if (track_flags == 3) {
+ track = track_id + 300;
+ } else if ((track_flags >= 100) && (track_flags <= 163)) {
+ track = track_id + 400;
+ } else if ((track_flags >= 200) && (track_flags <= 263)) {
+ track = track_id + 500;
+ } else if ((track_flags >= 300) && (track_flags <= 363)) {
+ track = track_id + 600;
+ } else {
+ error("ImuseChannel::handleIACT(): bad track_flags: %d", track_flags);
+ }
+ debug(6, "SmushPlayer::handleIACT(): %d, %d, %d", track, index, track_flags);
+
+ SmushChannel *c = _smixer->findChannel(track);
+ if (c == 0) {
+ c = new ImuseChannel(track, _soundFrequency);
+ _smixer->addChannel(c);
+ }
+ if (index == 0)
+ c->setParameters(nbframes, size, track_flags, unknown);
+ else
+ c->checkParameters(index, nbframes, size, track_flags, unknown);
+ c->appendData(b, bsize);
} else {
byte output_data[4096];
byte *src = (byte *)malloc(bsize);
@@ -769,9 +777,9 @@
if (_insanity)
_scumm->_insane->procIACT(_dst, 0, 0, 0, *sub, 0, 0);
else
- handleImuseAction(*sub);
+ handleIACT(*sub);
#else
- handleImuseAction(*sub);
+ handleIACT(*sub);
#endif
break;
case TYPE_STOR:
Index: smush_player.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/smush/smush_player.h,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- smush_player.h 21 Dec 2003 18:36:20 -0000 1.15
+++ smush_player.h 22 Dec 2003 00:10:43 -0000 1.16
@@ -95,12 +95,11 @@
void handleNewPalette(Chunk &);
void handleFrameObject(Chunk &);
void handleSoundBuffer(int32, int32, int32, int32, int32, int32, Chunk &, int32);
- void handleImuseBuffer(int32, int32, int32, int32, int32, int32, Chunk &, int32);
void handleSoundFrame(Chunk &);
void handleSkip(Chunk &);
void handleStore(Chunk &);
void handleFetch(Chunk &);
- void handleImuseAction(Chunk &);
+ void handleIACT(Chunk &);
void handleTextResource(Chunk &);
void handleDeltaPalette(Chunk &);
void readPalette(byte *, Chunk &);
More information about the Scummvm-git-logs
mailing list