[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: