From: <sag...@us...> - 2009-12-21 18:56:42
|
Revision: 447 http://modplug.svn.sourceforge.net/modplug/?rev=447&view=rev Author: saga-games Date: 2009-12-21 18:56:25 +0000 (Mon, 21 Dec 2009) Log Message: ----------- [Fix] Sequence list: Shift+End didn't work. [Fix] Pattern editor: When pasting only partly copied channels, push forward paste failed. [Fix] Pattern editor: Push forward paste shortcut didn't work. [Ref] J2B Loader: Cleaned up command code translation a bit. Modified Paths: -------------- trunk/OpenMPT/mptrack/Ctrl_seq.cpp trunk/OpenMPT/mptrack/Modedit.cpp trunk/OpenMPT/mptrack/View_pat.cpp trunk/OpenMPT/soundlib/load_j2b.cpp Modified: trunk/OpenMPT/mptrack/Ctrl_seq.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_seq.cpp 2009-12-20 18:17:16 UTC (rev 446) +++ trunk/OpenMPT/mptrack/Ctrl_seq.cpp 2009-12-21 18:56:25 UTC (rev 447) @@ -381,7 +381,7 @@ case kcOrderlistNavigateLast: if((m_pModDoc != nullptr) && (m_pModDoc->GetSoundFile() != nullptr)) { - SetCurSelTo2ndSel(wParam == kcOrderlistNavigateLast); + SetCurSelTo2ndSel(wParam == kcOrderlistNavigateLastSelect); ORDERINDEX nLast = m_pModDoc->GetSoundFile()->Order.GetLengthTailTrimmed(); if(nLast > 0) nLast--; SetCurSel(nLast); Modified: trunk/OpenMPT/mptrack/Modedit.cpp =================================================================== --- trunk/OpenMPT/mptrack/Modedit.cpp 2009-12-20 18:17:16 UTC (rev 446) +++ trunk/OpenMPT/mptrack/Modedit.cpp 2009-12-21 18:56:25 UTC (rev 447) @@ -1178,7 +1178,6 @@ bool bS3MCommands = false, bOk = false; MODTYPE origFormat = MOD_TYPE_IT; UINT len = 0, startLen; - MODCOMMAND origModCmd; bool doOverflowPaste = (CMainFrame::m_dwPatternSetup & PATTERN_OVERFLOWPASTE) && (pasteMode != pm_pasteflood) && (pasteMode != pm_pushforwardpaste); bool doITStyleMix = (pasteMode == pm_mixpaste_it); @@ -1235,8 +1234,10 @@ // Paste columns while ((p[len] == '|') && (len + 11 < dwMemSize)) { - origModCmd = m[col]; // ITSyle mixpaste requires that we keep a copy of the thing we are about to paste on - // so that we can refer back to check if there was anything in e.g. the note column before we pasted. + // ITSyle mixpaste requires that we keep a copy of the thing we are about to paste on + // so that we can refer back to check if there was anything in e.g. the note column before we pasted. + MODCOMMAND origModCmd = m[col]; + LPSTR s = p+len+1; if (col < m_SndFile.m_nChannels) @@ -1248,6 +1249,7 @@ { m[col + nPushRow * m_SndFile.m_nChannels] = m[col + (nPushRow - 1) * m_SndFile.m_nChannels]; } + m[col].Clear(); } // Note Modified: trunk/OpenMPT/mptrack/View_pat.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_pat.cpp 2009-12-20 18:17:16 UTC (rev 446) +++ trunk/OpenMPT/mptrack/View_pat.cpp 2009-12-21 18:56:25 UTC (rev 447) @@ -3607,6 +3607,7 @@ case kcEditMixPaste: OnEditMixPaste(); return wParam; case kcEditMixPasteITStyle: OnEditMixPasteITStyle(); return wParam; case kcEditPasteFlood: OnEditPasteFlood(); return wParam; + case kcEditPushForwardPaste: OnEditPushForwardPaste(); return wParam; case kcEditSelectAll: OnEditSelectAll(); return wParam; case kcTogglePluginEditor: TogglePluginEditor((m_dwCursor & 0xFFFF) >> 3); return wParam; case kcToggleFollowSong: SendCtrlMessage(CTRLMSG_PAT_FOLLOWSONG); return wParam; Modified: trunk/OpenMPT/soundlib/load_j2b.cpp =================================================================== --- trunk/OpenMPT/soundlib/load_j2b.cpp 2009-12-20 18:17:16 UTC (rev 446) +++ trunk/OpenMPT/soundlib/load_j2b.cpp 2009-12-21 18:56:25 UTC (rev 447) @@ -94,6 +94,17 @@ #pragma pack() +static BYTE riffam_efftrans[26] = +{ + CMD_ARPEGGIO, CMD_PORTAMENTOUP, CMD_PORTAMENTODOWN, CMD_TONEPORTAMENTO, + CMD_VIBRATO, CMD_TONEPORTAVOL, CMD_VIBRATOVOL, CMD_TREMOLO, + CMD_PANNING8, CMD_OFFSET, CMD_VOLUMESLIDE, CMD_POSITIONJUMP, + CMD_VOLUME, CMD_PATTERNBREAK, CMD_MODCMDEX, CMD_TEMPO, + CMD_GLOBALVOLUME, CMD_GLOBALVOLSLIDE, CMD_KEYOFF, CMD_SETENVPOSITION, + CMD_CHANNELVOLUME, CMD_CHANNELVOLSLIDE, CMD_PANNINGSLIDE, CMD_RETRIG, + CMD_TREMOR, CMD_XFINEPORTAUPDOWN, +}; + bool CSoundFile::Convert_RIFF_AM_Pattern(PATTERNINDEX nPat, const LPCBYTE lpStream, DWORD dwMemLength, bool bIsAM) //---------------------------------------------------------------------------------------------------------------- { @@ -139,45 +150,53 @@ m->command = lpStream[dwMemPos + 1]; m->param = lpStream[dwMemPos]; dwMemPos += 2; - switch(m->command) + + if(m->command <= 25) { - case 0x00: if (m->param) m->command = CMD_ARPEGGIO; break; - case 0x01: m->command = CMD_PORTAMENTOUP; break; - case 0x02: m->command = CMD_PORTAMENTODOWN; break; - case 0x03: m->command = CMD_TONEPORTAMENTO; break; - case 0x04: m->command = CMD_VIBRATO; break; - case 0x05: m->command = CMD_TONEPORTAVOL; if (m->param & 0xF0) m->param &= 0xF0; break; - case 0x06: m->command = CMD_VIBRATOVOL; if (m->param & 0xF0) m->param &= 0xF0; break; - case 0x07: m->command = CMD_TREMOLO; break; - case 0x08: m->command = CMD_PANNING8; - if(m->param <= 0x80) m->param = min(m->param << 1, 0xFF); - else if(m->param == 0xA4) {m->command = CMD_S3MCMDEX; m->param = 0x91;} + // command translation + m->command = riffam_efftrans[m->command]; + + // handling special commands + switch(m->command) + { + case CMD_ARPEGGIO: + if(m->param == 0) m->command = CMD_NONE; + break; + case CMD_TONEPORTAVOL: + case CMD_VIBRATOVOL: + case CMD_VOLUMESLIDE: + case CMD_GLOBALVOLSLIDE: + case CMD_PANNINGSLIDE: + if (m->param & 0xF0) m->param &= 0xF0; + break; + case CMD_PANNING8: + if(m->param <= 0x80) m->param = min(m->param << 1, 0xFF); + else if(m->param == 0xA4) {m->command = CMD_S3MCMDEX; m->param = 0x91;} + break; + case CMD_PATTERNBREAK: + m->param = ((m->param >> 4) * 10) + (m->param & 0x0F); + break; + case CMD_MODCMDEX: + MODExx2S3MSxx(m); + break; + case CMD_TEMPO: + if(m->param <= 0x1F) m->command = CMD_SPEED; + break; + case CMD_XFINEPORTAUPDOWN: + switch(m->param & 0xF0) + { + case 0x10: + m->command = CMD_PORTAMENTOUP; break; - case 0x09: m->command = CMD_OFFSET; break; - case 0x0A: m->command = CMD_VOLUMESLIDE; if (m->param & 0xF0) m->param &= 0xF0; break; - case 0x0B: m->command = CMD_POSITIONJUMP; break; - case 0x0C: m->command = CMD_VOLUME; break; - case 0x0D: m->command = CMD_PATTERNBREAK; m->param = ((m->param >> 4) * 10) + (m->param & 0x0F); break; - case 0x0E: m->command = CMD_MODCMDEX; MODExx2S3MSxx(m); break; - case 0x0F: m->command = (m->param <= 0x1F) ? CMD_SPEED : CMD_TEMPO; break; - case 'G' - 55: m->command = CMD_GLOBALVOLUME; break; - case 'H' - 55: m->command = CMD_GLOBALVOLSLIDE; if (m->param & 0xF0) m->param &= 0xF0; break; - case 'K' - 55: m->command = CMD_KEYOFF; break; - case 'L' - 55: m->command = CMD_SETENVPOSITION; break; - case 'M' - 55: m->command = CMD_CHANNELVOLUME; break; - case 'N' - 55: m->command = CMD_CHANNELVOLSLIDE; break; - case 'P' - 55: m->command = CMD_PANNINGSLIDE; if (m->param & 0xF0) m->param &= 0xF0; break; - case 'R' - 55: m->command = CMD_RETRIG; break; - case 'T' - 55: m->command = CMD_TREMOR; break; - case 'X' - 55: - switch(m->param & 0xF0) - { - case 0x10: m->command = CMD_PORTAMENTOUP; m->param = (m->param & 0x0F) | 0xE0; break; - case 0x20: m->command = CMD_PORTAMENTODOWN; m->param = (m->param & 0x0F) | 0xE0; break; - default: m->command = CMD_S3MCMDEX; break; - } + case 0x20: + m->command = CMD_PORTAMENTODOWN; break; - default: + } + m->param = (m->param & 0x0F) | 0xE0; + break; + } + } else + { #ifdef DEBUG { CHAR s[64]; @@ -186,7 +205,6 @@ } #endif m->command = CMD_NONE; - break; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |