mirror of
https://github.com/tildearrow/furnace.git
synced 2024-11-16 01:35:07 +00:00
Merge pull request #484 from grauw/y8950-adpcm-fix
More Y8950 ADPCM fixes
This commit is contained in:
commit
7e938c869d
2 changed files with 7 additions and 5 deletions
|
@ -735,6 +735,7 @@ int DivPlatformOPL::dispatch(DivCommand c) {
|
||||||
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(8,0);
|
immWrite(8,0);
|
||||||
|
immWrite(7,0x01); // reset
|
||||||
immWrite(9,(s->offB>>2)&0xff);
|
immWrite(9,(s->offB>>2)&0xff);
|
||||||
immWrite(10,(s->offB>>10)&0xff);
|
immWrite(10,(s->offB>>10)&0xff);
|
||||||
int end=s->offB+s->lengthB-1;
|
int end=s->offB+s->lengthB-1;
|
||||||
|
@ -770,6 +771,7 @@ int DivPlatformOPL::dispatch(DivCommand c) {
|
||||||
}
|
}
|
||||||
DivSample* s=parent->getSample(12*sampleBank+c.value%12);
|
DivSample* s=parent->getSample(12*sampleBank+c.value%12);
|
||||||
immWrite(8,0);
|
immWrite(8,0);
|
||||||
|
immWrite(7,0x01); // reset
|
||||||
immWrite(9,(s->offB>>2)&0xff);
|
immWrite(9,(s->offB>>2)&0xff);
|
||||||
immWrite(10,(s->offB>>10)&0xff);
|
immWrite(10,(s->offB>>10)&0xff);
|
||||||
int end=s->offB+s->lengthB-1;
|
int end=s->offB+s->lengthB-1;
|
||||||
|
|
|
@ -386,22 +386,22 @@ void DivEngine::performVGMWrite(SafeWriter* w, DivSystem sys, DivRegWrite& write
|
||||||
case DIV_SYSTEM_Y8950_DRUMS:
|
case DIV_SYSTEM_Y8950_DRUMS:
|
||||||
// disable envelope
|
// disable envelope
|
||||||
for (int i=0; i<6; i++) {
|
for (int i=0; i<6; i++) {
|
||||||
w->writeC(0x0b|baseAddr1);
|
w->writeC(0x0c|baseAddr1);
|
||||||
w->writeC(0x80+i);
|
w->writeC(0x80+i);
|
||||||
w->writeC(0x0f);
|
w->writeC(0x0f);
|
||||||
w->writeC(0x0b|baseAddr1);
|
w->writeC(0x0c|baseAddr1);
|
||||||
w->writeC(0x88+i);
|
w->writeC(0x88+i);
|
||||||
w->writeC(0x0f);
|
w->writeC(0x0f);
|
||||||
w->writeC(0x0b|baseAddr1);
|
w->writeC(0x0c|baseAddr1);
|
||||||
w->writeC(0x90+i);
|
w->writeC(0x90+i);
|
||||||
w->writeC(0x0f);
|
w->writeC(0x0f);
|
||||||
}
|
}
|
||||||
// key off + freq reset
|
// key off + freq reset
|
||||||
for (int i=0; i<9; i++) {
|
for (int i=0; i<9; i++) {
|
||||||
w->writeC(0x0b|baseAddr1);
|
w->writeC(0x0c|baseAddr1);
|
||||||
w->writeC(0xa0+i);
|
w->writeC(0xa0+i);
|
||||||
w->writeC(0);
|
w->writeC(0);
|
||||||
w->writeC(0x0b|baseAddr1);
|
w->writeC(0x0c|baseAddr1);
|
||||||
w->writeC(0xb0+i);
|
w->writeC(0xb0+i);
|
||||||
w->writeC(0);
|
w->writeC(0);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue