Amiga: early bus limits emulation

it appears that if the period is lower than 124, the positions start
to desync

this is emulated by UAE, but i am not sure whether this happens on a real machine
and this isn't emulated properly here either
This commit is contained in:
tildearrow 2022-02-12 17:43:30 -05:00
parent dd460ccc42
commit 423d9fa45d
2 changed files with 11 additions and 3 deletions

View file

@ -69,9 +69,15 @@ void DivPlatformAmiga::acquire(short* bufL, short* bufR, size_t start, size_t le
} else {
chan[i].sample=-1;
}
/*if (chan[i].freq<124) {
// ???
}*/
if (chan[i].freq<124) {
if (++chan[i].busClock>=512) {
unsigned int rAmount=(124-chan[i].freq)*2;
if (chan[i].audPos>=rAmount) {
chan[i].audPos-=rAmount;
}
chan[i].busClock=0;
}
}
chan[i].audSub+=MAX(114,chan[i].freq);
}
}