[Scummvm-cvs-logs] CVS: scummvm/scumm imuse.cpp,1.39,1.40 imuse.h,1.9,1.10 script_v2.cpp,1.25,1.26
Pawe? Ko?odziejski
aquadran at users.sourceforge.net
Tue Oct 8 00:31:04 CEST 2002
Update of /cvsroot/scummvm/scummvm/scumm
In directory usw-pr-cvs1:/tmp/cvs-serv15348
Modified Files:
imuse.cpp imuse.h script_v2.cpp
Log Message:
synced with local sources (imuse)
Index: imuse.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse.cpp,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -d -r1.39 -r1.40
--- imuse.cpp 6 Oct 2002 15:44:16 -0000 1.39
+++ imuse.cpp 8 Oct 2002 07:30:50 -0000 1.40
@@ -4866,6 +4866,35 @@
continue;
}
+ if (_channel[l]._volumeFade != -1) {
+ if (_channel[l]._volumeFadeStep < 0) {
+ if (_channel[l]._volume > _channel[l]._volumeFade) {
+ _channel[l]._volume += _channel[l]._volumeFadeStep;
+ _channel[l]._volumeRight += _channel[l]._volumeFadeStep;
+ if (_channel[l]._volume < _channel[l]._volumeFade) {
+ _channel[l]._volume = _channel[l]._volumeFade;
+ }
+ if (_channel[l]._volumeRight < _channel[l]._volumeFade) {
+ _channel[l]._volumeRight = _channel[l]._volumeFade;
+ }
+ if ((_channel[l]._volume == 0) && (_channel[l]._volumeRight == 0)) {
+ _channel[l]._toBeRemoved = true;
+ }
+ }
+ } else if (_channel[l]._volumeFadeStep > 0) {
+ if (_channel[l]._volume < _channel[l]._volumeFade) {
+ _channel[l]._volume += _channel[l]._volumeFadeStep;
+ _channel[l]._volumeRight += _channel[l]._volumeFadeStep;
+ if (_channel[l]._volume > _channel[l]._volumeFade) {
+ _channel[l]._volume = _channel[l]._volumeFade;
+ }
+ if (_channel[l]._volumeRight > _channel[l]._volumeFade) {
+ _channel[l]._volumeRight = _channel[l]._volumeFade;
+ }
+ }
+ }
+ }
+
if ((_channel[l]._jump[0]._numLoops == 0) && (_channel[l]._isJump == true)) {
_channel[l]._isJump = false;
}
@@ -4889,7 +4918,7 @@
mixer_size = new_size;
}
}
- } else {
+ } else if (_channel[l]._isJump == true) {
if (_channel[l]._jump[0]._numLoops != 500) {
_channel[l]._jump[0]._numLoops--;
}
@@ -4907,18 +4936,10 @@
} else if ((_channel[l]._numLoops > 0) && (new_size != mixer_size)) {
memcpy(buf + new_size, _channel[l]._data, mixer_size - new_size);
_channel[l]._offset = mixer_size - new_size;
- _channel[l]._numLoops--;
} else {
_channel[l]._offset += mixer_size;
}
- if (_channel[l]._volumeFade != -1) {
- if (_channel[l]._volume > _channel[l]._volumeFade) {
- _channel[l]._volume -= 10;
- _channel[l]._volumeRight -= 10;
- }
- }
-
if (_channel[l]._bits == 12) {
for(i = 0; i < (mixer_size / 4); i++) {
byte sample1 = buf[i * 4 + 0];
@@ -4969,6 +4990,7 @@
_channel[l]._volumeRight = 127;
_channel[l]._volume = 127;
_channel[l]._volumeFade = -1;
+ _channel[l]._volumeFadeParam = 0;
uint32 tag, size = 0, r, t;
@@ -5129,6 +5151,7 @@
int32 sample = b;
byte sub_cmd = c >> 8;
int8 channel = -1, l;
+ int8 tmp;
if (!(cmd || param))
return 1;
@@ -5154,8 +5177,19 @@
}
_channel[channel]._volume = d;
_channel[channel]._volumeRight = d;
+ if (_channel[channel]._volumeFade != -1) {
+ tmp = ((_channel[channel]._volumeFade - _channel[channel]._volume) * 2) / _channel[channel]._volumeFadeParam;
+ if ((tmp < 0) && (tmp > -2)) {
+ tmp = -1;
+ } else if ((tmp > 0) && (tmp < 2)) {
+ tmp = 1;
+ } else {
+ tmp /= 2;
+ }
+ _channel[channel]._volumeFadeStep = tmp;
+ }
return 0;
- case 7: // right volume control (0-127) i think
+ case 7: // right volume control (0-127)
debug(2, "IMuseDigital::doCommand setting right volume sample(%d),volume(%d)", sample, d);
for (l = 0; l < MAX_DIGITAL_CHANNELS; l++) {
if ((_channel[l]._idSound == sample) && (_channel[l]._used == true)) {
@@ -5184,10 +5218,20 @@
}
}
if (channel == -1) {
- warning("IMuseDigital::doCommand Sample %d not exist in channels", sample);
+ warning("IMuseDigital::doCommand 14,6 sample %d not exist in channels", sample);
return 1;
}
- _channel[channel]._volumeFade = e;
+ _channel[channel]._volumeFade = d;
+ _channel[channel]._volumeFadeParam = e;
+ tmp = ((_channel[channel]._volumeFade - _channel[channel]._volume) * 2) / _channel[channel]._volumeFadeParam;
+ if ((tmp < 0) && (tmp > -2)) {
+ tmp = -1;
+ } else if ((tmp > 0) && (tmp < 2)) {
+ tmp = 1;
+ } else {
+ tmp /= 2;
+ }
+ _channel[channel]._volumeFadeStep = tmp;
return 0;
default:
warning("IMuseDigital::doCommand 14 DEFAULT sub command %d", sub_cmd);
@@ -5199,16 +5243,16 @@
}
} else if (param == 16) {
switch (cmd) {
- case 0: // it looks be play music (DIG/CMI) (state) (0, 1 ,2, 4, 6, 8, 9, 10, 12, 14, 15, 17, 18, 79, ...)
+ case 0: // play music (state)
debug(2, "IMuseDigital::doCommand 0x1000 (%d)", b);
return 0;
- case 1: // it looks be play music (DIG/CMI) (seq) (2020, 2022, 2023, 2045, 2046, 2050, 2060, 2070, ...)
+ case 1: // play music (seq)
debug(2, "IMuseDigital::doCommand 0x1001 (%d)", b);
return 0;
- case 2: // dummy in DIG and CMI, FT - ?
+ case 2: // dummy in DIG and CMI
debug(2, "IMuseDigital::doCommand 0x1002 (%d)", b);
return 0;
- case 3: // ??? (stream related) (1, 2, 8),(1)
+ case 3: // ??? (stream related)
debug(2, "IMuseDigital::doCommand 0x1003 (%d,%d)", b, c);
return 0;
default:
Index: imuse.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- imuse.h 4 Oct 2002 08:04:34 -0000 1.9
+++ imuse.h 8 Oct 2002 07:30:50 -0000 1.10
@@ -60,7 +60,7 @@
IMuseInternal *_imuse; // Pointer to the real imuse object
};
-#define MAX_DIGITAL_CHANNELS 10
+#define MAX_DIGITAL_CHANNELS 16
#define MAX_IMUSE_JUMPS 1
#define MAX_IMUSE_REGIONS 3
@@ -83,6 +83,8 @@
int8 _volumeRight;
int8 _volume;
int8 _volumeFade;
+ int8 _volumeFadeParam;
+ int8 _volumeFadeStep;
bool _isJump;
uint32 _numLoops;
uint32 _offsetStop;
Index: script_v2.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v2.cpp,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -d -r1.25 -r1.26
--- script_v2.cpp 6 Oct 2002 07:23:07 -0000 1.25
+++ script_v2.cpp 8 Oct 2002 07:30:50 -0000 1.26
@@ -2728,9 +2728,9 @@
grabCursor(args[1], args[2], args[3], args[4]);
break;
case 6: {
- if (_imuseDigital) {
- _imuseDigital->stopAll();
- }
+// if (_imuseDigital) {
+// _imuseDigital->stopAll();
+// }
uint32 speed;
if (strcmp((char*)getStringAddressVar(VAR_VIDEONAME), "sq3.san") == 0)
speed = 71;
More information about the Scummvm-git-logs
mailing list