Re-split OPL4 PCM instruments due to hardware differences
- MultiPCM also has level direct, so it's remained in DivInstrumentMultiPCM. everything else don't support at MultiPCM is moved into DivInstrumentOPL4PCM. - MultiPCM can't modify ADSR envelope unless reading instrument from ROM, so I decided to remove ADSR envelope macros. these are moved into OPL4 PCM instrument. - Save/Load of MultiPCM level direct parameter is still disabled until main version update (for disallow crash). - Also, this PR fixes OPL4 VGM output.
This commit is contained in:
parent
ec5879f10b
commit
87ac12e143
11 changed files with 201 additions and 50 deletions
|
|
@ -1711,7 +1711,7 @@ int DivPlatformOPL::dispatch(DivCommand c) {
|
|||
chan[c.chan].freqChanged=true;
|
||||
chan[c.chan].note=c.value;
|
||||
}
|
||||
if (ins->type==DIV_INS_MULTIPCM) {
|
||||
if (ins->type==DIV_INS_OPL4_PCM) {
|
||||
chan[c.chan].lfo=ins->multipcm.lfo;
|
||||
chan[c.chan].vib=ins->multipcm.vib;
|
||||
chan[c.chan].am=ins->multipcm.am;
|
||||
|
|
@ -1721,10 +1721,10 @@ int DivPlatformOPL::dispatch(DivCommand c) {
|
|||
chan[c.chan].d2r=ins->multipcm.d2r;
|
||||
chan[c.chan].rc=ins->multipcm.rc;
|
||||
chan[c.chan].rr=ins->multipcm.rr;
|
||||
chan[c.chan].damp=ins->multipcm.damp;
|
||||
chan[c.chan].pseudoReverb=ins->multipcm.pseudoReverb;
|
||||
chan[c.chan].levelDirect=ins->multipcm.levelDirect;
|
||||
chan[c.chan].lfoReset=ins->multipcm.lfoReset;
|
||||
chan[c.chan].damp=ins->opl4pcm.damp;
|
||||
chan[c.chan].pseudoReverb=ins->opl4pcm.pseudoReverb;
|
||||
chan[c.chan].lfoReset=ins->opl4pcm.lfoReset;
|
||||
} else {
|
||||
chan[c.chan].lfo=0;
|
||||
chan[c.chan].vib=0;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue