Y8950: fix ADPCM VGM export

This commit is contained in:
tildearrow 2022-05-21 03:34:39 -05:00
parent 315c2645d2
commit 70ead337f3

View file

@ -734,12 +734,12 @@ int DivPlatformOPL::dispatch(DivCommand c) {
chan[c.chan].sample=ins->amiga.getSample(c.value); chan[c.chan].sample=ins->amiga.getSample(c.value);
if (chan[c.chan].sample>=0 && chan[c.chan].sample<parent->song.sampleLen) { if (chan[c.chan].sample>=0 && chan[c.chan].sample<parent->song.sampleLen) {
DivSample* s=parent->getSample(chan[c.chan].sample); DivSample* s=parent->getSample(chan[c.chan].sample);
immWrite(9,(s->offB>>2)&0xff); immWrite(9,(s->offB>>5)&0xff);
immWrite(10,(s->offB>>10)&0xff); immWrite(10,(s->offB>>13)&0xff);
int end=s->offB+s->lengthB-1; int end=s->offB+s->lengthB-1;
immWrite(11,(end>>2)&0xff); immWrite(11,(end>>5)&0xff);
immWrite(12,(end>>10)&0xff); immWrite(12,(end>>13)&0xff);
immWrite(8,2); immWrite(8,1);
immWrite(7,(s->loopStart>=0)?0xb0:0xa0); // start/repeat immWrite(7,(s->loopStart>=0)?0xb0:0xa0); // start/repeat
if (c.value!=DIV_NOTE_NULL) { if (c.value!=DIV_NOTE_NULL) {
chan[c.chan].note=c.value; chan[c.chan].note=c.value;
@ -774,7 +774,7 @@ int DivPlatformOPL::dispatch(DivCommand c) {
int end=s->offB+s->lengthB-1; int end=s->offB+s->lengthB-1;
immWrite(11,(end>>2)&0xff); immWrite(11,(end>>2)&0xff);
immWrite(12,(end>>10)&0xff); immWrite(12,(end>>10)&0xff);
immWrite(8,2); immWrite(8,1);
immWrite(7,(s->loopStart>=0)?0xb0:0xa0); // start/repeat immWrite(7,(s->loopStart>=0)?0xb0:0xa0); // start/repeat
int freq=(65536.0*(double)s->rate)/(double)rate; int freq=(65536.0*(double)s->rate)/(double)rate;
immWrite(16,freq&0xff); immWrite(16,freq&0xff);
@ -1698,7 +1698,7 @@ int DivPlatformOPL::init(DivEngine* p, int channels, int sugRate, unsigned int f
adpcmBMemLen=0; adpcmBMemLen=0;
iface.adpcmBMem=adpcmBMem; iface.adpcmBMem=adpcmBMem;
iface.sampleBank=0; iface.sampleBank=0;
adpcmB=new ymfm::adpcm_b_engine(iface,2); adpcmB=new ymfm::adpcm_b_engine(iface,5);
} }
reset(); reset();