Author: sagamusix
Date: Thu May 30 23:30:33 2024
New Revision: 20871
URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=20871
Log:
[Imp] S3M: For S3Ms made with Impulse Tracker, use sample swapping behaviour that is closer to Impulse Tracker itself. Fixes alien.s3m by Davers.
Modified:
trunk/OpenMPT/soundlib/Load_s3m.cpp
Modified: trunk/OpenMPT/soundlib/Load_s3m.cpp
==============================================================================
--- trunk/OpenMPT/soundlib/Load_s3m.cpp Thu May 30 23:16:31 2024 (r20870)
+++ trunk/OpenMPT/soundlib/Load_s3m.cpp Thu May 30 23:30:33 2024 (r20871)
@@ -312,6 +312,9 @@
m_playBehaviour.set(kITRetrigger);
m_playBehaviour.set(kITShortSampleRetrig);
m_playBehaviour.set(kST3SampleSwap); // Not exactly like ST3, but close enough
+ // alien.s3m by Davers (pattern 13) needs these to play the Gxx with sample switch as intended
+ m_playBehaviour.set(kITPortaNoNote);
+ m_playBehaviour.set(kITPortamentoSwapResetsPos);
m_nMinPeriod = 1;
break;
case S3MFileHeader::trkSchismTracker:
@@ -371,7 +374,7 @@
{
m_playBehaviour.reset(kST3NoMutedChannels);
m_playBehaviour.reset(kST3EffectMemory);
- m_playBehaviour.reset(kST3PortaSampleChange);
+ m_playBehaviour.set(kST3PortaSampleChange, (fileHeader.cwtv& S3MFileHeader::trackerMask) == S3MFileHeader::trkImpulseTracker);
m_playBehaviour.reset(kST3VibratoMemory);
m_playBehaviour.reset(KST3PortaAfterArpeggio);
m_playBehaviour.reset(kST3OffsetWithoutInstrument);
|