Bu sayfadaki yazılar
Sayfanın metni
Sayfa 36
14. SPRITE
Sprite adı verilen grafik elemanı, bit noktalı bir gösterim elemanıdır. Pozisyonunu değiştirmek için, sadece sol üst köşesinin koordinatını yeniden vermek yeter. Sprite'lar, görüntü alanlarından bağımsızdır ve verilen önceliğe göre, bunların önünde veya arkasında görünebilirler. AMIGA'nın, donanım olarak belirlenmiş sekiz adet mevcuttur. Bunların her birinin üç değişik rengi olabilir. (Sprite'lar görüntü alanlarıyla karşılaştırılınca iki bit yüzeyi derinlikte oldukları görülür; bunun sonucunda dört renk kombinasyonu yaratılır. Bunlar, üç renk ve saydamlıktadır.) AMIGA'nın sprite'ları, 16 düşük çözünürlüklü nokta genişliğinde ve herhangi bir yükseklikte olabilir. Her bir sprite çifte, üç değişik renk palet değerini paylaşır. (Örneğin, 0 ve 1'inci sprite'lar 17, 18 ve 19 numaralı renk register'lerini, 2 ve 3'üncü sprite'lar 21, 22 ve 23 numaralı renk register'lerini, vs. kullanırlar.) Böylece 8 sprite, toplam olarak 12 değişik rengi kullanır. Çift olan sprite'lar birbirleriyle birleştirilebilirler. (Mesela, 0 ve 1 numaralı sprite'lar.) Bunun sonunda dört bit yüzeyi derinlikte sprite'lar elde ederiz. Birleştirilmiş sprite çifti 17'den, 31'inci renk register'ine kadar 15 değişik renk kullanabilir.
AMIGA'da genelde geçerli olan şey, görünen basitliğin altında zorluğun yattığıdır. Sprite, aslında o anki gösterim satırı üzerinde yer alan 16 bitlik bir değerdir. Bunu yaratmanın iki yolu vardır. Birincisi, manual yöntemdir. Her satırda, sprite'ın verilerini ekrana siz gönderirsiniz. (Tabii ki bu yöntem oldukça zor kullanımı olduğu için pratikteki kullanım değeri sıfır.) İkinci yöntem otomatik yöntemdir. Bunda, sprite'ların DMA kanalını aktive edersiniz. Sprite devresi hafızada belli bir yerde bulunan ve sprite'ın pozisyonunu ve satır satır tanımlanmış şeklini içeren veri yapısını alır ve çizer. Bundan başka, sprite'ın tanımını, daha o sprite çizilirken değiştirmeniz mümkün. Sprite devresi, sprite pozisyon ve tanımlarından oluşmuş bir listeyi kabul ediyor. Burada tek sınırlama, bir tanımlamanın sonu ile, bir diğerinin başı arasında en az bir video satırının bulunması. Dikkatinizi şuna çekmek isterim ki, burada COPPER'ı devreye sokmak gerekmiyor. (Tabii, Copper devreye girince söz konusu işlem otomatik olarak daha hızlı yürüyor.)
15. BLITTER
Blitter, animasyon (canlandırma) çipinin bir parçası olup, yaptığı işlem doğrular çizmek, grafik ekranında belli bir kapalı bölgeyi herhangi bir renkle çok yüksek bir hızda doldurmak ve görüntü alanının içindeki dikdörtgen bölgelerin işlenmesi ve taşınmasıdır. Dikdörtgen blokları işlerken blitter, ana işlem ünitesi ile yapıldığı zaman çok uzun sürecek ve ana işlem ünitesinin değerli zamanını çarçur edecek bazı işlemleri yerine getirir. Özel olarak bu iş için geliştirilmiş bir ünite olduğu için, yapılan işlemin çok daha hızlı yürüdüğünü söylemeye gerek yok. Yaptığı işlemlere örnek olarak herhangi bir grafik bölgesini başka bir yere taşımayı verelim. Bu sırada, okuduğu her word'un (1 word = 2 byte = 16 bit) içinden kendisine gerekli olan bitleri ayırır, oluşturduğu şekli, yerine yazabilmek için birkaç bit sağa veya sola kaydırır. Diğer bir örnek ise, bir bölgeyi sağda ve solda rastladığı sınırlara kadar doldurmak (bu, blitter'in alan doldurma kabiliyetinin temel ilkesini oluşturuyor). Blitter'i, benzer özel işlem ünitelerinden ayıran başlıca özelliği üç kay-
AYHAN KALAYLIOĞLU naktan gelebilen bilgiyi 256 değişik kombinasyondan biriyle birleştirip hedefe ulaştırması. (Üç kaynağı A, B ve C diye adlandırırsak; bunların tersleri -A, -B, ve -C olur. Bunlar da sekiz şekilde (AND işlemi) birleşirler: Elde edeceğimiz sekiz terimi 256 değişik kombinasyonla (OR işlemi) birleştirebiliriz. Bunca matematiksel safsatanın sonucu özetle şudur: Mesela, bir araba görüntüsünü, yol görüntüsünün üzerine otomatik olarak taşıtabiliyoruz. Araba şeklinin dışındaki yerlere hiçbir şey olmuyor ve arabanın camlarından arka taraf da görünüyor. Bu işlemleri bir program gerçekleştirseydi, bu programın çok karışık olması ve uzun süre alması gerekecekti. İşte, size Blitter'in faydaları!.. Doğru çizmek için kullanılırken blitter 0'larla veya 1'lerle veya belirlenmiş bir şekil kullanarak doğruyu oluşturur. Bir bit genişliğinde doğrular bilhassa doldurulacak bölgenin çevresini belirlemek için kullanılıyor. Gerek doğru çizme işlemi, gerek alan doldurma, gerek bölgeleri taşıma işleminden önce blitter'in parametrelerini belirlemek için belli bir miktar hesaplama yapmak gerekiyor. Sonuçta yapılan işin hızı ve basitliği göz önüne alınınca, bu işi gözümüzde fazla büyütmemek lazım. Kaldı ki, tüm bu işlemleri ROM'da bulunan grafik altprogramları hallediyor zaten.
16. ANİMASYON ALTPROGRAMLARI
Amiga'nın ROM'unda bulunan animasyon (canlandırma) altprogramları, kişisel bilgisayar piyasasının gördüğü en karışık renkli animasyon olayı için bir taban oluşturuyor. Örnek olarak ROBO-CITY adlı demo programını verebiliriz. Bu programda, beş adet çizgi film tipi yaratık ekranda dolaşmakta. Çözünürlük oldukça yüksek, ancak çok yakından bakılınca pürüzler görünüyor; yoksa elle çizilmiş çizgi filmden farkı yok. Animasyon olayı, animasyonda yer alacak cisimlerin listesini işleyecek bazı altprogramları çağırarak gerçekleşiyor. Animasyon sisteminde, asıl eleman GEL (graphic element — grafik elemanı) adını taşıyor. Dört tip GEL söz konusu, bunlar VSprites, BOBs, AnimComps, ve AnimObjs adlarını alıyorlar. VSprite “virtual sprite” deyiminin kısaltılmışı; anlamı ise suni sprite. VSprite hafızada belli bir yer kaplayan, normal sprite'larla gerçekleştirilen, animasyon altprogramları tarafından kumanda edilen özel bir veri yapısı. Bazı sınırlamalara uymak koşuluyla, bir ekranda sekizden fazla VSprite tanımlayabiliyoruz. Bu arada meydana çıkan, veri yapılarını ve bunlara ait göstergeçleri yenileme gibi işlemleri animasyon rutinleri otomatik olarak hallediyor. VSprite'lar da normal sprite'lar gibi, sadece ekranın belli bir bölgesinde görünebiliyor. BOB “blitter object” deyiminin kısaltılmışı olup, anlamı blitter'in yarattığı ve sprite gibi davranan cisim. Burada beliren başlıca fark, BOB'un görüntü alanının üstüne çizilmesi ve (isteğe bağlı olarak) alt tarafta kalan bilginin saklanabilmesi. Veri yapısı olarak da VSprite'lara benzeyen BOB'ların VSprite'lara göre başlıca üstünlüğü, BOB'un doğrudan görüntü alanının bir parçası haline gelmesi. Bu da BOB'larda 32 renge kadar kullanmayı mümkün kılıyor. Bundan başka, bir BOB'un boyutları için hiçbir sınırlama söz konusu değil. Fakat istenirse, BOB'lar da, ekranın sadece belli bir bölgesinde görünmek üzere sınırlanabilir. AnimComp kelimesi “animation component” deyiminin kısaltılmışı; anlamı ise animasyon parçacığı. Bu parçacık, AnimObj (animation object) yani animasyon cisminin bir parçası. Çok mu karışık oldu?.. Bir örnek verelim: Diyelim ki animasyon cismimiz (AnimObj) yürüyen bir insan; bunun animasyon parçacıkları (AnimComp) ise, gövde, kafa, iki kol ve iki bacak ile ilgili şekilleri içeren BOB'lar olacaklar. Her iki animasyon parçacığı söz konusu bölgenin birkaç görüntüsünü içerir. (Örneğin; bükülmüş kol, düz kol). Tabii ki, bir cismin değişik görüntülerinden bahsedebiliyorsak, bu değişik görüntülerin birbirleriyle bağlanabilmeleri için belli zaman dilimleri geçmesi gerekiyor. Böylece, bu değişik görüntülerin birbirini takip etmesi sağlanıyor. Sequenced drawing animation, canlandırması yapmak da mümkün. Burada, tekrarlı görüntüler listesi ve her tekrardan sonra cismin pozisyonuna eklenecek ofset (hareket miktarı) belirtilir. Bir örnekle görelim: Diyelim ki bir kedinin soldan sağa doğru yürüyüp giderken altı değişik pozunu çizdik. Fakat, bunlardan birbirine geçişini öyle güzel ayarladık ki 1'den 6'ya kadar gösterdikten sonra tekrar 1'e dönünce doğal geliyor. Böylece, bir hareket periyodu belirlemiş olduk. Bundan başka her periyod geçişinde pozisyonda oluşacak değişikliği (bu örnek için sağa doğru belli bir miktar) belirledik mi, animasyon rutinleri bu altı değişik görüntüyü peş peşe geçişli olarak çizip, verilmiş ofseti de değerlendirerek kendisinin ekranın en solundan başlayıp en sağına yürümesini sağlar. Bir başka animasyon modu da motion control animation. Burada BOB'un yeni pozisyonu, o andaki pozisyonu, x- ve y- yönündeki hız ve ivmelerinden hesaplanıyor. Bunlardan başka bir rutini de anlatalım. Adı DoCollision. Yaptığı işlem BOB'larla ilgili iki türlü görüntü çarpışmasını fark edebiliyor. Bu çarpışma tipleri, GEL ve GEL çarpışması ve GEL ile belirlenmiş bir sınırın çarpışması olabiliyor. Bu rutin, bu çarpışmaları fark ettikten sonra elde edilen bilgileri değerlendirmek üzere 16 adet collision-handling (çarpışma değerlendirmesi) altprogramından birini çağırıyor. GEL'ler değişik şekillerde kodlanarak, sadece istenilen tipte çarpışmaların algılanması sağlanabiliyor. Örneğin bir oyun programında, füze-hedef çarpışmasını algılamak, fakat füze-füze çarpışmasını algılamamak gibi...
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 37
17. YAZILAR
AMIGA, yazıları da bir tür grafik olarak değerlendiriyor. Yazı font'ları özel bir veri yapısı olarak saklanır ve yazının istenen her yükseklikte ve ister sabit aralıklı, ister orantılı aralıklı (i, l gibi harfleri daha sıkışık yazmak gibi) yazılmasını mümkün kılar. Her bir font'ta 1'den 255'e kadar karakter tanımlanabilir. Tanımlanan karakter sayısı sabit olmadığı için bu da bir parametre. AMIGA'nın ROM'unda iki font sabit olarak bulunuyor. Bunlar Topaz 8 ve Topaz 9 fontları. Topaz 8, düşük çözünürlükte 40, yüksek çözünürlükte 80 karakterin satır başında görünmesini sağlıyor. Diğer fontta ise bu rakamlar 32 ve 64.
“ Gereken diğer fontlar istenirse
RAM'e yüklenebiliyor veya işi bittiğinde atılabiliyor. ROM'da bulunan Text adlı rutin, gönderilen mesajın ekranın istenen bölgesine yazılmasını sağlıyor. Yazı yazma işlemi üç değişik biçimde gerçekleşebiliyor. Birincisi, karakterin belirtilmiş karakter rengiyle yazılması. İkincisi, karakterin kendisini bir renkle ve o karakterin arka planını da özel bir renkle yazıyor. Üçüncü mod ise komplementi alarak yazıyor. Yani karakterin her noktası kendi arkasına gelen noktanın içeriğini değiştiriyor (EXOR işlemi). Apple Macintosh'ta da olduğu gibi, AMIGA'da da fontlar birkaç değişik stilde kullanılabiliyor. Bu stiller şunlar: altını çizme (underline), yatık (italic), kalınlaştırma (boldface), genişletme (extended). Fakat Macintosh'tan farklı olarak, bir stil kullanılacağı zaman önce font dosyasında aranıyor. Şayet bulunamazsa Macintosh'taki yöntem uygulanıyor ve o stil standart karakter setinden birkaç özel algoritma yardımıyla üretiliyor. 18. SES DONANIMI Başta da belirttiğimiz gibi, AMIGA dört adet, DMA kontrollü ses kanalı içeriyordu. Bu ses kanalları 68000 ana işlem ünitesinden bağım-
37 dana çıkıyor.