Ready64 Forum
Commodore 64 => Programmazione, Grafica e Musica => Topic aperto 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
;------------------------------------------------------------
;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
-
Aggiungiamo il "sonoro" :)
noise
LDA $D41B; numero casuale
STA $2000,X; scarica il casuale nel charset
STA $D418
INX
JMP noise
:continua cosi':
-
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! :)
-
Aggiungiamo il "sonoro" :)
noise
LDA $D41B; numero casuale
STA $2000,X; scarica il casuale nel charset
STA $D418
INX
JMP noise
:continua cosi':
Eccezionale Ian!
-
Bellissimo effetto :lol:
-
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.
-
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?
-
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.
-
Oppure tasto destro del mouse + salva.
-
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
-
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.
-
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?
-
ma il listato è scritto in assembler, giusto?
Assembly e' la definizione corretta, assembler e' il compilatore dei sorgenti in assembly.
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.