From: <sag...@us...> - 2014-11-21 15:38:43
|
Revision: 4607 http://sourceforge.net/p/modplug/code/4607 Author: saga-games Date: 2014-11-21 15:38:31 +0000 (Fri, 21 Nov 2014) Log Message: ----------- [Imp] Amiga limits can now also be enforced for MOD files separately from PT1/2 mode. [Mod] MOD Loader: M.K. and M!K! files that only have Amiga-compatible notes in their patterns automatically enforce Amiga limits now (http://bugs.openmpt.org/view.php?id=563) Modified Paths: -------------- trunk/OpenMPT/mptrack/dlg_misc.cpp trunk/OpenMPT/mptrack/dlg_misc.h trunk/OpenMPT/mptrack/mptrack.rc trunk/OpenMPT/soundlib/Load_mod.cpp trunk/OpenMPT/soundlib/mod_specifications.cpp Modified: trunk/OpenMPT/mptrack/dlg_misc.cpp =================================================================== --- trunk/OpenMPT/mptrack/dlg_misc.cpp 2014-11-20 19:30:23 UTC (rev 4606) +++ trunk/OpenMPT/mptrack/dlg_misc.cpp 2014-11-21 15:38:31 UTC (rev 4607) @@ -30,7 +30,8 @@ BEGIN_MESSAGE_MAP(CModTypeDlg, CDialog) //{{AFX_MSG_MAP(CModTypeDlg) - ON_CBN_SELCHANGE(IDC_COMBO1,UpdateDialog) + ON_CBN_SELCHANGE(IDC_COMBO1, UpdateDialog) + ON_COMMAND(IDC_CHECK_PT1X, OnPTModeChanged) ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTW, 0, 0xFFFF, &CModTypeDlg::OnToolTipNotify) ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTA, 0, 0xFFFF, &CModTypeDlg::OnToolTipNotify) @@ -171,8 +172,10 @@ m_CheckBoxPT1x.EnableWindow(allowedFlags[SONG_PT1XMODE]); m_CheckBoxAmigaLimits.EnableWindow(allowedFlags[SONG_AMIGALIMITS]); - m_CheckBoxPT1x.ShowWindow(type != MOD_TYPE_S3M ? SW_SHOW : SW_HIDE); - m_CheckBoxAmigaLimits.ShowWindow(type == MOD_TYPE_S3M ? SW_SHOW : SW_HIDE); + // These two checkboxes are mutually exclusive and share the same screen space + m_CheckBoxPT1x.ShowWindow(type == MOD_TYPE_MOD ? SW_SHOW : SW_HIDE); + m_CheckBox5.ShowWindow(type != MOD_TYPE_MOD ? SW_SHOW : SW_HIDE); + OnPTModeChanged(); const bool XMorITorMPT = (type & (MOD_TYPE_XM | MOD_TYPE_IT | MOD_TYPE_MPT)) != 0; const bool ITorMPT = (type & (MOD_TYPE_IT | MOD_TYPE_MPT)) != 0; @@ -257,6 +260,16 @@ } +void CModTypeDlg::OnPTModeChanged() +//--------------------------------- +{ + // PT1/2 mode enforces Amiga limits + const bool ptMode = IsDlgButtonChecked(IDC_CHECK_PT1X) != BST_UNCHECKED; + m_CheckBoxAmigaLimits.EnableWindow(!ptMode); + if(ptMode) m_CheckBoxAmigaLimits.SetCheck(BST_CHECKED); +} + + bool CModTypeDlg::VerifyData() //---------------------------- { @@ -292,6 +305,7 @@ return true; } + void CModTypeDlg::OnOK() //---------------------- { Modified: trunk/OpenMPT/mptrack/dlg_misc.h =================================================================== --- trunk/OpenMPT/mptrack/dlg_misc.h 2014-11-20 19:30:23 UTC (rev 4606) +++ trunk/OpenMPT/mptrack/dlg_misc.h 2014-11-21 15:38:31 UTC (rev 4607) @@ -32,6 +32,7 @@ CModTypeDlg(CSoundFile &sf, CWnd *parent) : CDialog(IDD_MODDOC_MODTYPE, parent), sndFile(sf) { m_nType = MOD_TYPE_NONE; m_nChannels = 0; } bool VerifyData(); void UpdateDialog(); + void OnPTModeChanged(); protected: void UpdateChannelCBox(); Modified: trunk/OpenMPT/mptrack/mptrack.rc =================================================================== --- trunk/OpenMPT/mptrack/mptrack.rc 2014-11-20 19:30:23 UTC (rev 4606) +++ trunk/OpenMPT/mptrack/mptrack.rc 2014-11-21 15:38:31 UTC (rev 4607) @@ -1029,12 +1029,13 @@ COMBOBOX IDC_COMBO1,12,18,108,51,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_COMBO2,126,18,66,77,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP GROUPBOX "Playback",IDC_FRAME_MODFLAGS,6,42,246,54 - CONTROL "&Linear Frequency Slides",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,54,91,10 - CONTROL "&Old Effects (IT)",IDC_CHECK3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,120,54,66,10 - CONTROL "Fast &Volume Slides (S3M)",IDC_CHECK2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,66,96,10 - CONTROL "Compatible &Gxx (IT)",IDC_CHECK4,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,120,66,84,10 - CONTROL "Extended &filter range",IDC_CHECK5,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,78,81,10 - CONTROL "&ProTracker 1/2 Mode (MOD)",IDC_CHECK_PT1X,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,120,78,108,10 + CONTROL "&Linear Frequency Slides",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,54,108,10 + CONTROL "&Old Effects (IT)",IDC_CHECK3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,120,54,108,10 + CONTROL "Fast &Volume Slides (S3M)",IDC_CHECK2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,66,108,10 + CONTROL "Compatible &Gxx (IT)",IDC_CHECK4,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,120,66,108,10 + CONTROL "&ProTracker 1/2 Mode (MOD)",IDC_CHECK_PT1X,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,78,108,10 + CONTROL "Extended &filter range",IDC_CHECK5,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,78,108,10 + CONTROL "&Amiga Frequency Limits",IDC_CHECK_AMIGALIMITS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,120,78,108,10 GROUPBOX "Extended Playback Options (OpenMPT only)",IDC_FRAME_MPTEXT,6,102,246,84 LTEXT "&Mix Levels:",IDC_TEXT_MIXMODE,18,116,42,8 COMBOBOX IDC_COMBO_MIXLEVELS,60,114,108,51,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP @@ -1059,8 +1060,6 @@ EDITTEXT IDC_EDIT_CREATEDWITH,78,258,166,13,ES_AUTOHSCROLL | ES_READONLY,WS_EX_STATICEDGE RTEXT "Last saved with:",IDC_TEXT_SAVEDWITH,12,276,60,8 EDITTEXT IDC_EDIT_SAVEDWITH,78,276,166,13,ES_AUTOHSCROLL | ES_READONLY,WS_EX_STATICEDGE - CONTROL "&Amiga Frequency Limits (S3M)",IDC_CHECK_AMIGALIMITS, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,120,78,108,10 END IDD_SHOWLOG DIALOGEX 0, 0, 300, 149 Modified: trunk/OpenMPT/soundlib/Load_mod.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_mod.cpp 2014-11-20 19:30:23 UTC (rev 4606) +++ trunk/OpenMPT/soundlib/Load_mod.cpp 2014-11-21 15:38:31 UTC (rev 4607) @@ -649,6 +649,7 @@ if(isFLT8) numPatterns++; // as one logical pattern consists of two real patterns in FLT8 format, the highest pattern number has to be increased by one. bool hasTempoCommands = false; // for detecting VBlank MODs bool leftPanning = false, extendedPanning = false; // for detecting 800-880 panning + bool onlyAmigaNotes = true; // Reading patterns for(PATTERNINDEX pat = 0; pat < numPatterns; pat++) @@ -718,6 +719,10 @@ { instrWithoutNoteCount[chn] = 0; } + if(m.note != NOTE_NONE && m.note < NOTE_MIDDLEC - 12 || m.note > NOTE_MIDDLEC + 23) + { + onlyAmigaNotes = false; + } if(m.instr != 0) { lastInstrument[chn] = m.instr; @@ -727,6 +732,12 @@ } } + if(onlyAmigaNotes && (!memcmp(magic, "M.K.", 4) || !memcmp(magic, "M!K!", 4))) + { + // M.K. files that don't exceed the Amiga note limit (fixes mod.mothergoose) + m_SongFlags.set(SONG_AMIGALIMITS); + } + // Reading samples if(loadFlags & loadSampleData) { Modified: trunk/OpenMPT/soundlib/mod_specifications.cpp =================================================================== --- trunk/OpenMPT/soundlib/mod_specifications.cpp 2014-11-20 19:30:23 UTC (rev 4606) +++ trunk/OpenMPT/soundlib/mod_specifications.cpp 2014-11-21 15:38:31 UTC (rev 4607) @@ -109,7 +109,7 @@ false, // Doesn't support plugins false, // No custom pattern time signatures false, // No pattern names - SONG_PT1XMODE, // Supported song flags + SONG_PT1XMODE | SONG_AMIGALIMITS, // Supported song flags }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |