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
|
@ -69,9 +69,15 @@ void DivPlatformAmiga::acquire(short* bufL, short* bufR, size_t start, size_t le
|
||||||
} else {
|
} else {
|
||||||
chan[i].sample=-1;
|
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);
|
chan[i].audSub+=MAX(114,chan[i].freq);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,7 @@ class DivPlatformAmiga: public DivDispatch {
|
||||||
signed char audDat;
|
signed char audDat;
|
||||||
int sample, wave;
|
int sample, wave;
|
||||||
unsigned char ins;
|
unsigned char ins;
|
||||||
|
int busClock;
|
||||||
int note;
|
int note;
|
||||||
bool active, insChanged, freqChanged, keyOn, keyOff, inPorta, useWave;
|
bool active, insChanged, freqChanged, keyOn, keyOff, inPorta, useWave;
|
||||||
signed char vol, outVol;
|
signed char vol, outVol;
|
||||||
|
@ -31,6 +32,7 @@ class DivPlatformAmiga: public DivDispatch {
|
||||||
sample(-1),
|
sample(-1),
|
||||||
wave(0),
|
wave(0),
|
||||||
ins(-1),
|
ins(-1),
|
||||||
|
busClock(0),
|
||||||
note(0),
|
note(0),
|
||||||
active(false),
|
active(false),
|
||||||
insChanged(true),
|
insChanged(true),
|
||||||
|
|
Loading…
Reference in New Issue