[zxspectrum] Re: RealX
- From: Luca Bisti <lucbisti@xxxxxx>
- To: zxspectrum@xxxxxxxxxxxxx
- Date: Mon, 13 Jun 2005 12:30:12 +0200
Ciao Marzio!
Non ti ho ancora fatto i complimenti per JAYP, che ho provato e funziona
molto bene! Che caratteristiche ha il nuovo emulatore AY?
E' possibile avere qualche dettaglio più tecnico di come gestite le
temporizzazioni in RealX?
Niente vertical blanking: in finestra non esiste proprio, e in fullscreen
non mi serve a nulla perche' tanto il refresh non sara' mai a 50Hz. Pero'
useremo un accorgimento speciale nelle risoluzioni a 100Hz per riprodurre
fluidamente gli scrollers.
Quando e' disponibile, il master clock e' fornito dai buffer audio che sono
il vero vincolo realtime hardware (a differenza del video che possiamo
aggiornare in qualsiasi momento quasi senza attese). Altrimenti ne
generiamo noi uno artificialmente regolandoci con il TSC del processore
che, lui si', e' accurato al nanosecondo.
C'e' un thread dedicato alla sincronizzazione degli eventi che dorme quasi
sempre e ticchetta per richiedere lavoro thread di emulazione alla giusta
velocita'. Siccome in un sistema multitasking i tempi non vengono mai
rispettati con precisione (interferenza degli altri processi utente e di
sistema, piu' latenze varie non conoscibili a priori e variabili nel
tempo), misuriamo la durata effettiva di ciascun intervallo di tempo con il
TSC e compensiamo dinamicamente i jitter in modo da mantenere il valor
medio su 50Hz spaccati. Ad esempio, se mi accorgo di essere stato
risvegliato dopo 22ms invece dei 20 richiesti, alla fine del prossimo frame
mi sospendero' per 18ms in modo da recuperare la deadline assoluta dello
slot temporale successivo. A questo si affianca il problema di come
presentare i buffer audio e video ai rispettivi dispositivi in modo che
l'immagine e il suono risultanti siano il piu' possibile in sync; come
dicevo ieri, negli emulatori Windows il suono e' spesso sfasato di 1-3
frames per colpa delle diverse latenze dei driver audio e video del sistema
operativo.
Ciao!
Luca
Other related posts: