diff --git a/Frameworks/modplay/modplay/st3play.c b/Frameworks/modplay/modplay/st3play.c index 1942ddc8f..7fc03ab54 100644 --- a/Frameworks/modplay/modplay/st3play.c +++ b/Frameworks/modplay/modplay/st3play.c @@ -10,6 +10,7 @@ ** - Proper tracker handling for non-ST3 effects ** - Panbrello (Yxy) didn't set the panning at all (heh) ** - Decodes ADPCM samples at load time instead of play time +** - Mxx (set cannel volume) didn't work correctly ** ** C port of Scream Tracker 3's replayer, by 8bitbubsy (Olav Sørensen) ** using the original asm source codes by PSI (Sami Tammilehto) of Future Crew @@ -2278,6 +2279,8 @@ static void s_chanvol(PLAYER *p, chn_t *ch) // NON-ST3 { if (ch->info <= 0x40) ch->chanvol = ch->info; + + setvol(p, ch->channelnum, 0, 0); } } diff --git a/Frameworks/playptmod/playptmod/playptmod.c b/Frameworks/playptmod/playptmod/playptmod.c index 4bb7d4165..b884c9d21 100644 --- a/Frameworks/playptmod/playptmod/playptmod.c +++ b/Frameworks/playptmod/playptmod/playptmod.c @@ -1,7 +1,10 @@ /* -** - playptmod v1.22 - 14th of March 2015 - +** - playptmod v1.23 - 23rd of March 2015 - ** This is the foobar2000 version, with added code by kode54 ** +** Changelog from 1.22: +** - Do sample swaps even if the new sample has a length of 0 (fixes "MOD.lsd ninja") +** ** Changelog from 1.21: ** - Only do portamentos if the voice has a period set (fixes first row of "MOD.cry of doom 3") ** @@ -2656,10 +2659,7 @@ static void processChannel(player *p, mod_channel *ch) { s = &p->source->samples[ch->sample - 1]; - if (s->length > 0) - mixerSwapChSource(p, ch->chanIndex, p->source->sampleData + s->offset, s->length, s->loopStart, s->loopLength, (s->attribute & 1) ? 2 : 1); - else - mixerSetChSource(p, ch->chanIndex, NULL, 0, 0, 0, 0, 0); + mixerSwapChSource(p, ch->chanIndex, p->source->sampleData + s->offset, s->length, s->loopStart, s->loopLength, (s->attribute & 1) ? 2 : 1); } } else if (p->tempFlags & TEMPFLAG_START)