Mercurial > audlegacy-plugins
comparison src/modplug/load_med.cxx @ 2216:3673c7ec4ea2
Sync with schism's modplug engine. Suggested by G¸«ärkan Seng¸«än.
author | William Pitcock <nenolod@atheme.org> |
---|---|
date | Fri, 07 Dec 2007 12:08:47 -0600 |
parents | 6b5a52635b3b |
children | 6907fc39b53f |
comparison
equal
deleted
inserted
replaced
2198:32f9f1e4a9ec | 2216:3673c7ec4ea2 |
---|---|
570 #endif | 570 #endif |
571 wNumBlocks = bswapBE16(pmsh->numblocks); | 571 wNumBlocks = bswapBE16(pmsh->numblocks); |
572 m_nChannels = 4; | 572 m_nChannels = 4; |
573 m_nSamples = pmsh->numsamples; | 573 m_nSamples = pmsh->numsamples; |
574 if (m_nSamples > 63) m_nSamples = 63; | 574 if (m_nSamples > 63) m_nSamples = 63; |
575 m_nStereoSeparation = ((pmsh2->mix_stereosep < 0) ? -32 : 32) * pmsh2->mix_stereosep; | |
575 // Tempo | 576 // Tempo |
576 m_nDefaultTempo = 125; | 577 m_nDefaultTempo = 125; |
577 deftempo = bswapBE16(pmsh->deftempo); | 578 deftempo = bswapBE16(pmsh->deftempo); |
578 if (!deftempo) deftempo = 125; | 579 if (!deftempo) deftempo = 125; |
579 if (pmsh->flags2 & MMD_FLAG2_BPM) | 580 if (pmsh->flags2 & MMD_FLAG2_BPM) |
809 lines = pmb->lines + 1; | 810 lines = pmb->lines + 1; |
810 tracks = pmb->numtracks; | 811 tracks = pmb->numtracks; |
811 if (!tracks) tracks = m_nChannels; | 812 if (!tracks) tracks = m_nChannels; |
812 if ((Patterns[iBlk] = AllocatePattern(lines, m_nChannels)) == NULL) continue; | 813 if ((Patterns[iBlk] = AllocatePattern(lines, m_nChannels)) == NULL) continue; |
813 PatternSize[iBlk] = lines; | 814 PatternSize[iBlk] = lines; |
815 PatternAllocSize[iBlk] = lines; | |
814 MODCOMMAND *p = Patterns[iBlk]; | 816 MODCOMMAND *p = Patterns[iBlk]; |
815 LPBYTE s = (LPBYTE)(lpStream + dwPos + 2); | 817 LPBYTE s = (LPBYTE)(lpStream + dwPos + 2); |
816 UINT maxlen = tracks*lines*3; | 818 UINT maxlen = tracks*lines*3; |
817 if (maxlen + dwPos > dwMemLength - 2) break; | 819 if (maxlen + dwPos > dwMemLength - 2) break; |
818 for (UINT y=0; y<lines; y++) | 820 for (UINT y=0; y<lines; y++) |
845 lines = (pmb->lines >> 8) + 1; | 847 lines = (pmb->lines >> 8) + 1; |
846 tracks = pmb->numtracks >> 8; | 848 tracks = pmb->numtracks >> 8; |
847 if (!tracks) tracks = m_nChannels; | 849 if (!tracks) tracks = m_nChannels; |
848 if ((Patterns[iBlk] = AllocatePattern(lines, m_nChannels)) == NULL) continue; | 850 if ((Patterns[iBlk] = AllocatePattern(lines, m_nChannels)) == NULL) continue; |
849 PatternSize[iBlk] = (WORD)lines; | 851 PatternSize[iBlk] = (WORD)lines; |
852 PatternAllocSize[iBlk] = (WORD)lines; | |
850 DWORD dwBlockInfo = bswapBE32(pmb->info); | 853 DWORD dwBlockInfo = bswapBE32(pmb->info); |
851 if ((dwBlockInfo) && (dwBlockInfo < dwMemLength - sizeof(MMD1BLOCKINFO))) | 854 if ((dwBlockInfo) && (dwBlockInfo < dwMemLength - sizeof(MMD1BLOCKINFO))) |
852 { | 855 { |
853 pbi = (MMD1BLOCKINFO *)(lpStream + dwBlockInfo); | 856 pbi = (MMD1BLOCKINFO *)(lpStream + dwBlockInfo); |
854 #ifdef MED_LOG | 857 #ifdef MED_LOG |