E qui il codice in assembler :
Questo codice ha il pregio può risiedere in qualunque punto del programma, e quindi non sottrae "tempo" e "spazio" alla sezione del Kernel video .
Incidentalmente queste operazioni di mascheramento , possono anche eseguire effetti grafici anche "carini" quali la simulazione del riflesso di una luce sulla superficie dello sprite , la sua scomparsa progressiva , e via con la fantasia...
codice:
destra ldx Posizione_X ; carica nel registo X il valore di posizione orizzontale dello sprite (Posizione_X) cpx #152 ; confronta il valore contenuto nel registro X con il valore 152 bcc salto ; se il valore di Posizione_X è minore di 152 vai alla riga "salto" , altrimenti continua con la successiva lda #160 ; carica nell' accumulatore A il valore 160 sbc Posizione_X ; sottrai a 160 il valore di Posizione_X tay ; sposta il risultato dall' accumulatore al registro Y sty risultato ; e salvalo nalla variabile "risultato" lda Mascheramento-1,y ; carica nell'accumulatore A il valore letto in ROM alla ;posizione (Mascheramento-1)+Y sta mask ; salva il valore appena caricato nella variabile "mask" jmp salto_2 ; vai alla riga "salto_2" salto lda #255 ; carica nell' accumulatore A il valore 255 sta mask ; e salvalo nella variabile "mask" salto_2 …….. altre istruzioni …….. ################# la porzione di codice dove risiedono i valori di mascheramento Mascheramento .byte #%00000000 ; posizione in ROM puntata da (Mascheramento-1)+Y , dove Y=1 .byte #%10000000 ; posizione in ROM puntata da (Mascheramento-1)+Y , dove Y=2 .byte #%11000000 ; posizione in ROM puntata da (Mascheramento-1)+Y , dove Y=3 .byte #%11100000 ; posizione in ROM puntata da (Mascheramento-1)+Y , dove Y=4 .byte #%11110000 ; posizione in ROM puntata da (Mascheramento-1)+Y , dove Y=5 .byte #%11111000 ; posizione in ROM puntata da (Mascheramento-1)+Y , dove Y=6 .byte #%11111100 ; posizione in ROM puntata da (Mascheramento-1)+Y , dove Y=7 .byte #%11111110 ; posizione in ROM puntata da (Mascheramento-1)+Y , dove Y=8 ################### la porzione di codice de kernel video dove vengono attivati ################### gli sprite . Rispetto al codice originale , è stata aggiunta ################### SOLO l'istruzione "and mask" lda Valore_Sprite ; carica nell'accumulatore A il valore "originale" rappresentante il ;disegno dello sprite and mask ; esegue l'operazione di AND tra il valore sprite ed il valore della ;"maschera" sta GRP0 ; da applicare , e poi salva il risultato nel registro di visualizzazione dello ;sprite.
Questo codice ha il pregio può risiedere in qualunque punto del programma, e quindi non sottrae "tempo" e "spazio" alla sezione del Kernel video .
Incidentalmente queste operazioni di mascheramento , possono anche eseguire effetti grafici anche "carini" quali la simulazione del riflesso di una luce sulla superficie dello sprite , la sua scomparsa progressiva , e via con la fantasia...
Commenta