In molte demo capita di vedere un effetto grafico che simula l'aspetto di un TV non sintonizzato, l'effetto "nebbia".
Ho provato a realizzarlo, limitandomi per il momento al solo schermo... comunque con tecnica analoga l'effetto si puo' applicare a degli sprites, e posizionando questi sui bordi, ottenere un effetto nebbia a tutto schermo... ma la cosa non è al momento alla mia completa portata.
In sintesi:
bordo nero, schermo bianco
Colore nero su tutta la videomatrix
Riempio la videomatrix con ripetizioni della sequenza dei primi 32 caratteri del charset
Dirotto il VIC a leggere i caratteri da decimale 8192
Plotto ciclicamente sui primi 32 caratteri del charset in 8192 un numero casuale prelevato dal registro SID $D41B, dopo averlo opportunamente abilitato
Ho usato solo i primi 32 caratteri cosi' da poterli plottare random con un unico ciclo di incremento del registro X (256/8=32); questo conferisce all'effetto un lieve aspetto " a bande" orizzontali (a causa della identica ripetizione della sequenza) , che comunque non guasta
;------------------------------------------------------------
;TV noise effect - albman in 2006
;------------------------------------------------------------
*= $C000
LDA #$00
STA $D020; bordo nero
LDA #$01
STA $D021;schermo bianco
;------------------------------------------------------------
LDX #$00
LDA #$00
colore_videomatrix
STA $D800,X; imposta colore nero su tutta la matrice video
STA $D8FA,X
STA $D9F4,X
STA $DAEE,X
INX
CPX #$FA
BNE colore_videomatrix
;------------------------------------------------------------
LDY #$00
LDX #$00
riempi_schermo
CPY #$20; stampa solo i primi 32 caratteri
BNE blocchi
LDY #00; riparte da carattere 0
blocchi
TYA
STA $400,X
STA $4FA,X
STA $5F4,X
STA $6EE,X
INX
INY
CPX #$FA
BNE riempi_schermo
;------------------------------------------------------------
LDA #$18
STA $D018; punta caratteri a decimale 8192
;------------------------------------------------------------
LDA #$81; implementa registro SID per n casuali
STA $D412
STA $D40F
;------------------------------------------------------------
LDX #$00
noise
LDA $D41B; numero casuale
STA $2000,X; scarica il casuale nel charset
INX
JMP noise