Mercurial > audlegacy-plugins
diff src/modplug/load_ams.cxx @ 2337:107c1fed3d92
Port Schism modplug core.
| author | "Tony Vroon <chainsaw@gentoo.org>" |
|---|---|
| date | Thu, 24 Jan 2008 12:05:59 +0000 |
| parents | 6907fc39b53f |
| children |
line wrap: on
line diff
--- a/src/modplug/load_ams.cxx Wed Jan 23 19:37:05 2008 +0100 +++ b/src/modplug/load_ams.cxx Thu Jan 24 12:05:59 2008 +0000 @@ -142,6 +142,7 @@ dwMemPos += 4; if ((len >= dwMemLength) || (dwMemPos + len > dwMemLength)) return TRUE; PatternSize[iPat] = 64; + PatternAllocSize[iPat] = 64; MODCOMMAND *m = AllocatePattern(PatternSize[iPat], m_nChannels); if (!m) return TRUE; Patterns[iPat] = m; @@ -334,6 +335,7 @@ m_nDefaultSpeed = psh->speed; m_nInstruments = psh->instruments; m_nSamples = 0; + m_dwSongFlags |= SONG_INSTRUMENTMODE; if (psh->flags & 0x40) m_dwSongFlags |= SONG_LINEARSLIDES; for (UINT nIns=1; nIns<=m_nInstruments; nIns++) { @@ -378,15 +380,15 @@ // Volume Envelope { UINT pos = 0; - penv->nVolEnv = (volenv->points > 16) ? 16 : volenv->points; - penv->nVolSustainBegin = penv->nVolSustainEnd = volenv->sustain; - penv->nVolLoopStart = volenv->loopbegin; - penv->nVolLoopEnd = volenv->loopend; - for (UINT i=0; i<penv->nVolEnv; i++) + penv->VolEnv.nNodes = (volenv->points > 16) ? 16 : volenv->points; + penv->VolEnv.nSustainStart = penv->VolEnv.nSustainEnd = volenv->sustain; + penv->VolEnv.nLoopStart = volenv->loopbegin; + penv->VolEnv.nLoopEnd = volenv->loopend; + for (int i=0; i<penv->VolEnv.nNodes; i++) { - penv->VolEnv[i] = (BYTE)((volenv->info[i*3+2] & 0x7F) >> 1); + penv->VolEnv.Values[i] = (BYTE)((volenv->info[i*3+2] & 0x7F) >> 1); pos += volenv->info[i*3] + ((volenv->info[i*3+1] & 1) << 8); - penv->VolPoints[i] = (WORD)pos; + penv->VolEnv.Ticks[i] = (WORD)pos; } } penv->nFadeOut = (((lpStream[dwMemPos+2] & 0x0F) << 8) | (lpStream[dwMemPos+1])) << 3; @@ -487,6 +489,7 @@ SetPatternName(ipat, s); } PatternSize[ipat] = numrows; + PatternAllocSize[ipat] = numrows; Patterns[ipat] = AllocatePattern(numrows, m_nChannels); if (!Patterns[ipat]) return TRUE; // Unpack Pattern Data
