Plazma sayı 4, sayfa 51

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 51

lineer interpolasyon2.htm

<seript> Str vu, deltaO for(deltaU

21; <-— 200;

a Oş forl(i

(

0; i < deltaU; a *- deltaO; ifl(a >— a deltaU; str *—

else Str *— "o"; )

str *- "<br>";

) document .write(str); </seript>

Bu programın çıktısı bize istediğimiz tabloları verecektir. Bir önceki scripte göre hız optimizasyonu için her karakteri tek tek document.write ile ekrana çıktı verilmek yerine "str" ismindeki bir string değişkende biriktirip bir seferde tüm çıktıyı ekrana yazdırıyoruz. Bir diğer nokta ise her çıktının arasına <br> koyarak çıktıların alt alta dizilmesini sağlıyoruz.

Aslında bu çıktıları "0" ve "X" yerine $00 ve $ff ile alsak ve kodumuzda doğrudan kullansak istediğimiz sonucu elde etmiş oluruz. Ancak buna gerek yok, bu kodun aynısını 6510 Assembler'dan da yazmak bizi hiç zorlamayacaktır. Burada çıktının doğru olduğundan emin olmuş olduk.

lineer interpolasyon.a

to "lineer interpolasyon.prg" A —DELTA O —DELTA U —TABLO

$£8 21 100 $1000

*

ldy lda adc sta cmp # DELTA U bec passl deltaU sbc # DELTA U sta A ele lda sta iny CPpY bne beg a < lda sta iny CPpY bne res

$0900 #$00 A # DELTA O A

loop2

a a *t deltaOo if a < then passl >-

a a - #$Ef

tabloya ekle

# DELTA U loop2 out ; passl #$00 TABLO,y

tabloya $00 ekle

# DELTA U

loop2 out

Bu programı yükleyip "SYS 2304" ile çalıştırdıktan sonra monitörden (Vice'da File->Monitor) "m 1000" yazarak 1000'den itibaren oluşturulan tabloyu görebilirsiniz.

Artık stretch efektinde gerekli tabloları gerçek zamanlı olarak oluşturabiliriz.

Yumuşak renk değiştirme

Bir demoda seyirciyi en çok etkileyen özelliklerden biri de renk parlamaları (flashing colors), sıralı renk geçişleri (cycling colors), kayan renkler (scrolling colors) ve benzeri renk efektleridir. Spritelarımız uzama efektini yaparken bir taraftan da renk değiştirirlerse bu seyircinin gözüne hoş gözükecektir. Ancak sürekli renk değiştirmek yerine bir süre sabit bir renkte kalıp arada bir parlayarak başka bir renge dönüşmesi zaten yeterince hareketli olan efektimiz için iyi bir seçim olabilir. Bu durumda oluşturacağımız renk tablosu şu şekilde olmalıdır.

renk1,renk1,renk1,renk1 ,renk1,.....,geçiş renkleri,renk2,renk2,renk2,renk2,renk2,renk2,.....,geçiş renkleri

Şimdi !fill ve !byte komutlarını kullanarak 256 bytelık bir tablo oluşturalım.

flash !byte !byte !byte !byte

110,10 12,12,12,15,15,15,15,13,13 13,13,1,1,1,1,13,13,13 110,14 12,12,12,15,15,15,15,13 13,13,13,1,1,1,1,15,15,15

Aralarda 18'erden toplam 36 geçiş rengi kullanıyoruz. Bu durumda sabit renkler de (256-36)/2'den 110'ar tane olarak hesaplanabilir. Böylece "!fill 110,10" ve "!fill 110,14" diyerek Açık Kırmızı (10) ve Açık Mavi (14) renklerinden 110'ar tane oluşturmuş oluyoruz. Aralarda ise geçiş renkleri var. Renkler hızlı değişeceği için ben renk geçişine pek özenmedim. Sizler isterseniz uygun renkleri peş peşe dizerek daha yumuşak geçişler elde edebilirsiniz.

Şimdi gelelim bu renkleri nasıl okutacağımıza. İstersek;

ldx lda sta sta sta sta sta sta sta sta

flashCounter $d027 $d028 $d029 $d02a $d02b $d02c $d02d $d02e

diyerek tablodan okunan bir değeri tüm sprite renklerine atayabiliriz. Ancak bunun yerine;

ldx lda sta lda sta inx lda sta

flashCounter flash,x $d02e

£flash,x $d02d

£flash,x $d02c

Klavyeyle gezinmek için ← ve → tuşları.