[zxspectrum] Re: Ula+

  • From: Alessandro <alessandro.poppi@xxxxxxxxx>
  • To: zxspectrum@xxxxxxxxxxxxx
  • Date: Sun, 27 Mar 2011 11:57:40 +0200

On Sun, 2011-03-27 at 10:25 +0200, Alessandro Dorigatti wrote:

> Ho riflettuto un po' sull'algoritmo adottato per i canali a 5 bit (Red e
> Blue) e ritengo sia sbagliato.
> 
> Invece di convertire i 3 bit HML in 5 bit HMLML, è necessario utilizzare
> la conversione HMLHM, per ottenere una distribuzione più lineare
> possibile dei 32 valori possibili.
> 
> Nel caso invece del canale a 6 bit (green) l'algoritmo (HMLHML) mi pare
> corretto.

Mi sembra che il ragionamento non faccia una piega.

> Non so se anche nel tuo caso hai canali con 5 o 6 bit; se questo è il
> caso, probabilmente devi modificare leggermente l'implementazione come
> descritto sopra!

No: incidentalmente l'hardware che sto usando
http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,400,789&Prod=NEXYS2
ha una uscita ESATTAMENTE corrispondente alle specifiche ULA+, ovvero 8
bit RRRGGGBB. Non posso e non devo quindi fare nessuna conversione.

Addirittura, la scheda che utilizzavo in precedenza (quella ufficiale
della xilinx per la famiglia 3E) aveva un solo bit per colore, tanto che
per implementare il brightness ho costretto a mettere mano al saldatore
i pochi che hanno provato il clone:
http://www.zxbada.bbk.org/previous_fpga_devel/vga.htm

> On Sun, 2011-03-27 at 09:49 +0200, Alessandro Dorigatti wrote:
> > Ciao Alessandro!
> > Sono contento di sentire che sei riuscito nell'implementazione dell'ULA+
> > e che il mio sorgente ti sia servito in qualche modo.

Si, grazie, adesso ti mando il mio modificato.
> 
> > Per quel che riguarda il raddoppio delle linee di schermo, viene
> > effettuato anche dal mio core, in quanto appunto è necessario arrivare
> > ad avere un 50Hz con frequenze orizzontali accettabili per i monitor
> > VGA; la conversione delle frequenze video da PAL a VGA è effettuato da
> > un ulteriore blocco (scandoubler) che ho preso da un altro core di
> > Tobias Gubener e che ho adattato per ottenere un effetto "scanline" che
> > tanto mi piace.

Io ho usato un blocco di ram, perche' leggere due volte la ram video
dello spectrum per avere due linee identiche (quindi portare un
ipotetico 320 verso 640) comportava il rischio di cambiamenti nel bel
mezzo, quindi credo che sarebbero comparse linee anomale. Immagino che
tu abbia fatto lo stesso ragionamento.

Dato che la frequenza di clock dello Z80 e' variabile (sulla xilinx ero
arrivato a 3.5/7/14/21/42MHz mentre su quella nuova c'e' ram troppo
lenta per superare 14) ho dovuto basare la lettura della ram video sullo
stesso contatore, dato che devo generare due pixel per ciclo di clock.

Per questo motivo, il linedoubler processa due pixel alla volta. Prima
era largo 1 byte e memorizzava 4 bit per pixel, ovvero RGB e stato del
bright, che poi venivano messi in output sul connettore VGA. Per
implementare la tua modifica dell'ULA+ l'ho allargato a 16 bit in modo
da "accomodarvi" :-) 2 pixel nel nuovo formato, altrimenti avrei dovuto
riscrivere un bel po' di roba. Prima che mi venisse in mente quella
soluzione, mi e' venuta un po' di nausea :-)

Ciao!



Other related posts: