Ready64 Forum

Commodore 64 => Programmazione, Grafica e Musica => Topic aperto da: albman - 20 Agosto 2006, 23:11:27

Titolo: Effetto Tv Noise
Inserito da: albman - 20 Agosto 2006, 23:11:27
 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



Codice: [Seleziona]
;------------------------------------------------------------
;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
Titolo: Effetto Tv Noise
Inserito da: iAN CooG - 20 Agosto 2006, 23:17:57
 Aggiungiamo il "sonoro" :)
Codice: [Seleziona]
noise  
  LDA $D41B; numero casuale
  STA $2000,X; scarica il casuale nel charset
  STA $D418
  INX
  JMP noise
:continua cosi':
Titolo: Effetto Tv Noise
Inserito da: albman - 21 Agosto 2006, 08:15:32
Sfrutto la nuova funzione di upload del forum (grazie Rob) per fornire il programma già assemblato, comprensivo del simpatico effetto "fruscio di fondo" aggiunto da iAN.

Ora, bordo a parte, sembra davvero un vecchio TV con l'antenna staccata! :)
Titolo: Effetto Tv Noise
Inserito da: Envil - 25 Agosto 2006, 10:20:01
Citazione da: "iAN CooG/HF"
Aggiungiamo il "sonoro" :)
Codice: [Seleziona]
noise  
  LDA $D41B; numero casuale
  STA $2000,X; scarica il casuale nel charset
  STA $D418
  INX
  JMP noise
:continua cosi':
Eccezionale Ian!
Titolo: Effetto Tv Noise
Inserito da: Alberto - 25 Agosto 2006, 22:07:24
 Bellissimo effetto :lol:  
Titolo: Effetto Tv Noise
Inserito da: Cbm - 02 Settembre 2006, 23:51:52
Citazione da: "albman"
Ora, bordo a parte, sembra davvero un vecchio TV con l'antenna staccata! :)
Volevo solo aggiungere che facendolo girare su emulatore, si può ovviare al bordo abbassando la risoluzione dello schermo a 320X200.
 
Titolo: Effetto Tv Noise
Inserito da: MultiM@n - 08 Settembre 2006, 18:45:17
 Scusatemi.... non riesco a scaricare il file tvnoise.... cliccandolo mi si apre una finestra con una scritta strana anzichè scaricare il file.... e poi un'altra cosa... forse un po' OT... premetto che di programmazione non capisco un granchè... ma il listato è scritto in assembler, giusto? Io ero abituato a programmare il  :c64: col basic... come si fa a programmarlo in assembler?
Titolo: Effetto Tv Noise
Inserito da: Roberto - 08 Settembre 2006, 19:10:58
Citazione da: "MultiM@n"
Scusatemi.... non riesco a scaricare il file tvnoise
E' un bug non meglio definito ma molto fastidioso che si verifica con i browser piu' "seri". Chi utilizza IE viceversa, non riscontra problemi.
Soluzione temporanea: rinomina il file "index.php" in "file.zip", dovrebbe risolvere.
Titolo: Effetto Tv Noise
Inserito da: RedPanda - 08 Settembre 2006, 20:47:14
 Oppure tasto destro del mouse + salva.
Titolo: Effetto Tv Noise
Inserito da: djwiper - 09 Settembre 2006, 09:05:37
Citazione da: "RedPanda"
Oppure tasto destro del mouse + salva.
Con Firefox e Opera devi comunque rinominare in file.zip.

Per la precisione FF scarica un non definito index.php mentre opera scarica index.html
Titolo: Effetto Tv Noise
Inserito da: Roberto - 09 Settembre 2006, 14:29:26
Citazione da: "RedPanda"
Oppure tasto destro del mouse + salva.
Ahem... chiariamo, in base a quello che sono riuscito a capire.

Il bug riguarda con tutta probabilita' il riconoscimento del Mime-type da parte di browser quali Firefox e Opera (di altri non sono a conoscenza) ed e' relativo ad una non meglio precisata compatibilita' tra il server Altervista e il codice del forum.

Internet Explorer non risente del "bug" in virtu' del suo scarso controllo sul mime-type (paradossalmente in questo caso una manchevolezza del browser si traduce un vantaggio).

L'operazione "tasto destro"+"Salva con nome" non risolve in alcun modo il problema.
Titolo: Effetto Tv Noise
Inserito da: iAN CooG - 09 Settembre 2006, 16:15:47
 Tutto cio' e' deprimente.  :sonno:
Albman ha mostrato come basti davvero poco per iniziare a far qualcosa di carino ma gli unici commenti riguardano la feature del download difettato...
Ma e' mai possibile che non ci siano mai commenti o domande riguardo i programmi proposti?
Torniamo a parlare di programmazione, volete?
Titolo: Effetto Tv Noise
Inserito da: iAN CooG - 09 Settembre 2006, 16:28:09
 
Citazione
ma il listato è scritto in assembler, giusto?
Assembly e' la definizione corretta, assembler e' il compilatore dei sorgenti in assembly.
Citazione
Io ero abituato a programmare il  :c64: col basic... come si fa a programmarlo in assembler?
Domanda frequente, se cerchi tra i vecchi messaggi vedrai che ci sono diversi programmi chiamati appunto Assembler, ma anche da un Monitor LM e' possibile, se pur con qualche limitazione.
C64asm, Dasm, TurboAsm/Tass, merlin64, PAL assember,(...etc...) sono tutti programmi esterni da caricare a parte, alcuni sono addirittura dei programmi per PC/amiga che interpretano file di testo contenenti i sorgenti e generano prg gia' in formato nativo per C64.
Per fare delle brevi routine di prova e' sufficiente un monitor LM, ce ne sono parecchi per c64; CCS e Vice ne hanno uno incorporato, basta premere alt-m.
I monitor sono indispensabili per tracciare il disassemblato dei programmi per capirne il flusso e scovare i bachi.