View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0001764 | OpenMPT | Playback Compatibility | public | 2024-03-29 02:56 | 2024-04-21 18:20 |
Reporter | mrpapersonic | Assigned To | Saga Musix | ||
Priority | low | Severity | tweak | Reproducibility | always |
Status | resolved | Resolution | fixed | ||
Platform | x86_64 | OS | Arch Linux | OS Version | 6.8.1 |
Product Version | OpenMPT 1.31.06.00 / libopenmpt 0.7.6 (upgrade first) | ||||
Summary | 0001764: Missing playback behavior for Schism Tracker before 20231029 | ||||
Description | Lots of playback changes occurred between 20230906 and 20231029, some of which already had existing checks, some didn't. e.g. wb22-wk21.it was created when there was a bug in Schism's NNA code that caused Instrument 11 to get cut as Instrument 12 played. The attached patch adds checks based on the original dates of my commits. | ||||
Tags | No tags attached. | ||||
Attached Files | schism-compat.patch (3,179 bytes)
diff --git a/soundlib/Load_it.cpp b/soundlib/Load_it.cpp index a5e80a6d5..b6ea18cab 100644 --- a/soundlib/Load_it.cpp +++ b/soundlib/Load_it.cpp @@ -1286,13 +1286,35 @@ bool CSoundFile::ReadIT(FileReader &file, ModLoadingFlags loadFlags) if(schismDateVersion < SchismVersionFromDate<2023, 03, 9>::date) m_playBehaviour.reset(kITInitialNoteMemory); // 2023-10-16: kITEnvelopePositionHandling https://github.com/schismtracker/schismtracker/commit/bc81f605d927ca931a886417641da29fc89283b8 + if(schismDateVersion < SchismVersionFromDate<2023, 10, 16>::date) + { + // Added 2023-10-16, https://github.com/schismtracker/schismtracker/commit/b0fd72599a3c2beee5420a3e4963c167ba213fb1 + m_playBehaviour.reset(kITFilterBehaviour); + } + if(schismDateVersion < SchismVersionFromDate<2023, 10, 17>::date) + { + // Added 2023-10-17, https://github.com/schismtracker/schismtracker/commit/31d36dc00013fc5ab0efa20c782af18e8b006e07 + m_playBehaviour.reset(kITDCTBehaviour); + // Added 2023-10-17, https://github.com/schismtracker/schismtracker/commit/f943010495617d7f6f2ac1ebb4b5120dcfac5eb0 + m_playBehaviour.reset(kITPatternLoopWithJumps); + } if(schismDateVersion < SchismVersionFromDate<2023, 10, 19>::date) { // Panbrello sample & hold random waveform: Added 2023-10-19, https://github.com/schismtracker/schismtracker/commit/411ec16b190ba1a486d8b0907ad8d74f8fdc2840 - m_playBehaviour.reset(kITPanbrelloHold); + m_playBehaviour.reset(kITSampleAndHoldPanbrello); // Don't apply any portamento if no previous note is playing: Added 2023-10-19, https://github.com/schismtracker/schismtracker/commit/8ff0a86a715efb50c89770fb9095d4c4089ff187 m_playBehaviour.reset(kITPortaNoNote); } + if(schismDateVersion < SchismVersionFromDate<2023, 10, 20>::date) + { + // Added 2023-10-20, https://github.com/schismtracker/schismtracker/commit/b9609e4f827e1b6ce9ebe6573b85e69388ca0ea0 + m_playBehaviour.reset(kITInstrWithNoteOff); + } + if(schismDateVersion < SchismVersionFromDate<2023, 10, 21>::date) + { + // Added 2023-10-21, https://github.com/schismtracker/schismtracker/commit/19a43e0e020a883b00ae97ddebc7189e06ec4774 + m_playBehaviour.reset(kITInstrWithNoteOffOldEffects); + } if(schismDateVersion < SchismVersionFromDate<2023, 10, 22>::date) { // Note delay delays first-tick behaviour for slides: Added 2023-10-22, https://github.com/schismtracker/schismtracker/commit/b9609e4f827e1b6ce9ebe6573b85e69388ca0ea0 @@ -1300,6 +1322,11 @@ bool CSoundFile::ReadIT(FileReader &file, ModLoadingFlags loadFlags) // Added 2023-10-22, https://github.com/schismtracker/schismtracker/commit/a9e5df533ab52c35190fcc1cbfed4f0347b660bb m_playBehaviour.reset(kITMultiSampleInstrumentNumber); } + if(schismDateVersion < SchismVersionFromDate<2024, 03, 08>::date) + { + // Added 2024-03-08, https://github.com/schismtracker/schismtracker/commit/ebdebaa8c8a735a7bf49df55debded1b7aac3605 + m_playBehaviour.reset(kITPanbrelloHold); + } break; case 4: madeWithTracker = MPT_UFORMAT("pyIT {}.{}")((fileHeader.cwtv & 0x0F00) >> 8, mpt::ufmt::hex0<2>(fileHeader.cwtv & 0xFF)); | ||||
Has the bug occurred in previous versions? | |||||
Tested code revision (in case you know it) | |||||
Regarding kITFilterBehaviour, I need to verify if the Schism fix is similar to the OpenMPT fix - I remember looking into some of the fixes last year and noticed that the compatibility flag could not be mapped cleanly to Schism bugfixes, which might be why I had a comment regarding that flag there but not the actual flag reset - it might have been there but I forgot to remove the comment. In particular, if some behaviour was already partially fixed in Schism Tracker before that date, we wouldn't want to disable the compatible behaviour completely. |
|
I have now applied a few of these in r20639. For the others, the before/after comparison between Schism Tracker and OpenMPT was too different to easily check if Schism Tracker's old behaviour was really identical to OpenMPT - and we wouldn't want those old Schism Tracker modules to break by applying old OpenMPT bugs. In particular if one playback compatibility flag affects more than one thing in OpenMPT's case, we shouldn't turn it off for Schism Tracker if only one of those things is affected there. |
|
Date Modified | Username | Field | Change |
---|---|---|---|
2024-03-29 02:56 | mrpapersonic | New Issue | |
2024-03-29 02:56 | mrpapersonic | File Added: schism-compat.patch | |
2024-03-29 06:49 | Saga Musix | Assigned To | => Saga Musix |
2024-03-29 06:49 | Saga Musix | Status | new => assigned |
2024-03-30 16:35 | Saga Musix | Note Added: 0005897 | |
2024-04-21 18:20 | Saga Musix | Note Added: 0005935 | |
2024-04-21 18:20 | Saga Musix | Status | assigned => resolved |
2024-04-21 18:20 | Saga Musix | Resolution | open => fixed |