mirror of
https://github.com/tildearrow/furnace.git
synced 2024-12-29 11:01:27 +00:00
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:
parent
dd460ccc42
commit
423d9fa45d
2 changed files with 11 additions and 3 deletions
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@ class DivPlatformAmiga: public DivDispatch {
|
|||
signed char audDat;
|
||||
int sample, wave;
|
||||
unsigned char ins;
|
||||
int busClock;
|
||||
int note;
|
||||
bool active, insChanged, freqChanged, keyOn, keyOff, inPorta, useWave;
|
||||
signed char vol, outVol;
|
||||
|
@ -31,6 +32,7 @@ class DivPlatformAmiga: public DivDispatch {
|
|||
sample(-1),
|
||||
wave(0),
|
||||
ins(-1),
|
||||
busClock(0),
|
||||
note(0),
|
||||
active(false),
|
||||
insChanged(true),
|
||||
|
|
Loading…
Reference in a new issue