diff options
author | James Cowgill <jcowgill@debian.org> | 2018-12-23 22:09:29 +0000 |
---|---|---|
committer | James Cowgill <jcowgill@debian.org> | 2018-12-23 22:09:29 +0000 |
commit | fa977e826b34fe2fcfeb253f50d8def6127068b6 (patch) | |
tree | d0e1cd7cdc903a5c858d2339ec4a359c6b7a9903 /soundlib/ITTools.cpp | |
parent | db8e0c1070c79653be541929205e7b7004d43663 (diff) |
New upstream version 0.4.0
Diffstat (limited to 'soundlib/ITTools.cpp')
-rw-r--r-- | soundlib/ITTools.cpp | 34 |
1 files changed, 21 insertions, 13 deletions
diff --git a/soundlib/ITTools.cpp b/soundlib/ITTools.cpp index 8c9823a..56cce3e 100644 --- a/soundlib/ITTools.cpp +++ b/soundlib/ITTools.cpp @@ -12,7 +12,7 @@ #include "Loaders.h" #include "ITTools.h" #include "Tables.h" -#include "../common/StringFixer.h" +#include "../common/mptStringBuffer.h" #include "../common/version.h" @@ -112,8 +112,8 @@ void ITOldInstrument::ConvertToMPT(ModInstrument &mptIns) const mptIns.nPan = 128; // NNA Stuff - mptIns.nNNA = nna; - mptIns.nDCT = dnc; + mptIns.nNNA = static_cast<NewNoteAction>(nna.get()); + mptIns.nDCT = static_cast<DuplicateCheckType>(dnc.get()); // Sample Map for(size_t i = 0; i < 120; i++) @@ -168,7 +168,7 @@ uint32 ITInstrument::ConvertToIT(const ModInstrument &mptIns, bool compatExport, // Header memcpy(id, "IMPI", 4); - trkvers = 0x5000 | static_cast<uint16>(MptVersion::num >> 16); + trkvers = 0x5000 | static_cast<uint16>(Version::Current().GetRawVersion() >> 16); mpt::String::Write<mpt::String::nullTerminated>(filename, mptIns.filename); mpt::String::Write<mpt::String::nullTerminated>(name, mptIns.name); @@ -277,9 +277,9 @@ uint32 ITInstrument::ConvertToMPT(ModInstrument &mptIns, MODTYPE modFormat) cons mptIns.nPanSwing = std::min<uint8>(rp, 64); // NNA Stuff - mptIns.nNNA = nna; - mptIns.nDCT = dct; - mptIns.nDNA = dca; + mptIns.nNNA = static_cast<NewNoteAction>(nna.get()); + mptIns.nDCT = static_cast<DuplicateCheckType>(dct.get()); + mptIns.nDNA = static_cast<DuplicateNoteAction>(dca.get()); // Pitch / Pan Separation mptIns.nPPS = pps; @@ -451,7 +451,7 @@ void ITSample::ConvertToIT(const ModSample &mptSmp, MODTYPE fromType, bool compr if(mptSmp.uFlags[CHN_PANNING]) dfp |= ITSample::enablePanning; // Sample Format / Loop Flags - if(mptSmp.nLength && mptSmp.pSample) + if(mptSmp.HasSampleData()) { flags = ITSample::sampleDataPresent; if(mptSmp.uFlags[CHN_LOOP]) flags |= ITSample::sampleLoop; @@ -504,7 +504,11 @@ void ITSample::ConvertToIT(const ModSample &mptSmp, MODTYPE fromType, bool compr vir = 255 - vir; } - if(mptSmp.uFlags[SMP_KEEPONDISK]) + if(mptSmp.uFlags[CHN_ADLIB]) + { + length = 12; + cvt = ITSample::cvtOPLInstrument; + } else if(mptSmp.uFlags[SMP_KEEPONDISK]) { #ifndef MPT_EXTERNAL_SAMPLES MPT_UNREFERENCED_PARAMETER(allowExternal); @@ -562,12 +566,16 @@ uint32 ITSample::ConvertToMPT(ModSample &mptSmp) const mptSmp.SanitizeLoops(); // Auto Vibrato settings - mptSmp.nVibType = AutoVibratoIT2XM[vit & 7]; + mptSmp.nVibType = static_cast<VibratoType>(AutoVibratoIT2XM[vit & 7]); mptSmp.nVibRate = vis; mptSmp.nVibDepth = vid & 0x7F; mptSmp.nVibSweep = vir; - if(cvt == ITSample::cvtExternalSample) + if(cvt == ITSample::cvtOPLInstrument) + { + // FM instrument in MPTM + mptSmp.uFlags.set(CHN_ADLIB); + } else if(cvt == ITSample::cvtExternalSample) { // Read external sample (filename at sample pointer) mptSmp.uFlags.set(SMP_KEEPONDISK); @@ -635,7 +643,7 @@ void ITHistoryStruct::ConvertToMPT(FileHistory &mptHistory) const mptHistory.loadDate.tm_hour = Clamp((fattime >> 11) & 0x1F, 0, 23); mptHistory.loadDate.tm_min = Clamp((fattime >> 5) & 0x3F, 0, 59); mptHistory.loadDate.tm_sec = Clamp((fattime & 0x1F) * 2, 0, 59); - mptHistory.openTime = static_cast<uint32>(runtime * (HISTORY_TIMER_PRECISION / 18.2f)); + mptHistory.openTime = static_cast<uint32>(runtime * (HISTORY_TIMER_PRECISION / 18.2)); } @@ -645,7 +653,7 @@ void ITHistoryStruct::ConvertToIT(const FileHistory &mptHistory) // Create FAT file dates fatdate = static_cast<uint16>(mptHistory.loadDate.tm_mday | ((mptHistory.loadDate.tm_mon + 1) << 5) | ((mptHistory.loadDate.tm_year - 80) << 9)); fattime = static_cast<uint16>((mptHistory.loadDate.tm_sec / 2) | (mptHistory.loadDate.tm_min << 5) | (mptHistory.loadDate.tm_hour << 11)); - runtime = static_cast<uint32>(mptHistory.openTime * (18.2f / HISTORY_TIMER_PRECISION)); + runtime = static_cast<uint32>(mptHistory.openTime * (18.2 / HISTORY_TIMER_PRECISION)); } |