Amiga Dünyası sayı 6, sayfa 26

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 26

Kopyalama işleminde Amiga'nın üstün ciplerinden biri olan Blitter kullanıldığından ve bu cipin ses cipi gibi ilave hafızayı (512 KByte'dan yukarısı) adresleyemediğinden, kullanılan buffer'ların her ikisi de hafızanın ilk 512 KByte'ında (CHIP Ram) yer almalıdır.

BLITMODE <mod> BLIT, WIPE ve STENCIL komutlarında kullanmak üzere çalışma modunu belirler. Bu mod 0'dan 255'e kadar bir değer alabilmektedir. Bu mod sayesinde bir resmi kopyalarken aynı zamanda negatifleştirebilir ya da başka bir lojik işlemden geçirebilirsiniz. Seçilecek mod, işlem tipini belirler. Normalde Amiga'da Assembler ya da başka bir dil aracılığıyla Blitter kullanılırsa 255 işlemin hepsi de yapılabilmekte. Fakat bizim işlemlerimiz 255'ten daha az; çünkü aslında Blitter üç kaynağa gereksinim duymaktadır. Bunlardan sadece B ile C kaynakları bizi ilgilendiriyor. B, kaynak buffer'ımızı; C ise sonuç buffer'ımızı, yani normal şartlar altında ekran buffer'ını temsil eder. Aşağıda blitter işlem modunun nasıl hesaplandığını görebilirsiniz. Bunları anlayabilmek için biraz lojik işlemleri, biraz matematik ve biraz da BASIC bilmek yeterlidir.

Lojik işlemlerle AND, OR, NOT, EXOR ve bunların kombinasyonlarından oluşan işlemleri kastetmekteyim. Bunları bilenler şimdiki terim açıklamalarımı atlayabilirler.

NOT : Girişteki bilginin tam tersini alarak bunu çıkışa gönderir. Bu, binary sayı sisteminde 1 olan bitlerin 0, 0 olan bitlerin de 1 olması demektir. Programımızda bir piksel negatifleştirilirken 31 sayısı en üst renk rakamı olduğundan bu sayıya göre tersi alınmaktadır. 0 renk kodunu taşıyan pikseller 31, 1 rengindeki pikseller 30 rengini alacaktır. Bu, tüm renkleri etkilediğinden, sonuç olarak elimizde resmin negatifi yer alacaktır.

Doğruluk tablosu :

giriş çıkış

0 1 1 0 AND : Ancak her iki girişte de bir olan bitler çıkışta 1 değeri alabilirler. Bunu director'da uygularsak, koordinatları aynı farklı resimlerde olan iki pikselin renk değerleri de aynı ise işlem sonucunda elde edilecek resimde aynı koordinattaki piksel o rengi taşır. Eğer aynı noktada farklı renklerde pikseller varsa, bunların renk değerlerinin binary karşılıkları AND işlemine tabi tutulur ve sonuçta elde edilen binary sayı da sonuç grafiğindeki pikselin renk kodu olacaktır.

Doğruluk tablosu :

giriş 1 giriş 2 çıkış

0 0 0 0 1 0 1 0 0 1 1 1 renk kodu resim 1:6= 00110 renk kodu resim 2 : 14 = 01110 renk kodu sonuç : 6 =00110 OR : İki kaynaktan herhangi birinde 1 olan bitler sonuçta da 1 değerini alırlar. Resimde bu aynı koordinatlardaki değişik resimlerdeki iki pikselin renk kodlarının sonuç grafiğinde çok farklı olacaklarını belirtir. Doğruluk tablosu :

giriş 1 giriş 2 çıkış

0 0 0 0 1 1 1 0 1 1 1 1 renk kodu resim 1:21 = 10101 renk kodu resim 2 : 11 =01011 renk kodu sonuç : 31 = 11111 XOR ya da EXOR : Burada da iki girişteki bitler aynı değeri taşıdıklarında çıkıştaki bit 1 olur. Doğruluk tablosu :

giriş 1 giriş 2 çıkış 0 1 0 1 0 0 1 1 1 Başına N harfi eklenen işlemlerde ilk önce temel işlem uygulanır, sonrada sonuç bilgisi NOT işlemine tabi tutulur (NOR, NAND, EXNOR).

normal işlem NOT'lu hali

OR ..... NOR AND ....NAND

EXOR ... EXNOR Sağ yanında ünlem işareti olan kaynaklar, negatiflenen kaynaklardır. Yan yana duran ya da aralarında x işareti olan iki eleman OR işlemine tabi tutulacak anlamına gelmektedir. İki işlem arasında + işareti varsa bu, elemanları AND'lememiz gerektiğini bildirir.

Aşağıdaki bit dizimi kullandığımız formülleri sayıya dönüştürmek için gerekli olan formüldür. Az önce de belirttiğim gibi buradaki A girişini biz kullanmıyoruz, bu yüzden onu gözardı edebiliriz. Fakat formülleri hesaplarken onu da hesabın içine katmamız lazım; yoksa formül hatalı olur ve istenmeyen sonuçlar oluşabilir. Formülde kullanılan terim gruplarının bitlerini 1 yaptığımızda, elimize blitter işlem modunun binary değeri gelecektir. Bunu desimal sayı sistemine çevirerek komutumuzla kullanabiliriz. ABC ABC! AB!C AB!C! A!BC A!BC! A!B!C A!B!C! Bit: 7 6 5 4 3 2 10 Formüllerde gerekli birimleri toplamaya göre çarpanlarına ayırabiliriz. Gerekli görülen yerlerde de sadeleştirme işlemini uygulayabiliriz. Sadeleştirmede bir değerin negatifi ile kendisi birbirini götürecektir ( A + A! =0). Formül hesaplamayı daha iyi anlayabilmek için aşağıdaki örneği inceleyin :

Formül: (AB!C) + (AB!C!) + (A!B!C) + (A!B!C!)

İlk iki eleman olan AB!C ile AB!C!'den AB! oluşur. Nedeni de apaçık ortadadır: (AB!C)+(AB!C!)=Cx(AB!) çarpanlarına ayırırsak : Cx(AB!)=Cx(AB!)4€!x(AB!) Burada C ile C! birbirini götürür: (AB!) + (AB!) = AB! Ardından gelen son iki eleman da aynı şekilde çarpanlanna ayrılırsa A!B! elde edilir. Sonuç olarak elde edilen iki elemanı da yine çarpanlarına ayırırsak sonuç olarak C! elde edilir. Bu, kopyalamada sadece ekrandaki (ya da resim buffer- 'ındaki) bir dörtgendeki tüm piksellerin negatifleneceğini bildirir. Fakat hala elimizde bir formül elemanı var. O halde bunu BLIT-MODE komutuyla kullanabileceğimiz bir sayı haline getirmek için OR'lanan tüm elemanların bit karşılıklarını bularak bunları 1 yapıyoruz : 01010101 = 85 Artık bu sayıyı mod olarak rahatlıkla kullanabiliriz. İçinizde hala anlayamayanlar varsa, onlara bu örnekten yola çıkarak birkaç örnek yapmaları gerektiğini vurgulamam gerekir. Aslında bu konuyu anlayanların da birçok örnek yapmalarında fayda var. Bu sayede tüm olayı daha iyi bir şekilde kavramak mümkün. BLITDEST <buf> BLIT işleminde dörtgen, ekran yerine bir resim buffer'ına kopyalanacaksa bunun numarasını <buf> ile programa bildirmeniz gerekir. BUFFERS <adet>

Programda kullanılacak resim buffer- 'larının adedini belirlemekte kullanılır. Normalde bu sayı 30'dur. Fakat bunu, bu komutla rahatlıkla artırabilir ya da azaltabilirsiniz. BUFFERS komutu kullanılacağı zaman programın başında daha hiçbir resim yüklenmediği zaman kullanılmalıdır.

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