SEKA

Merhaba arkadaşlar, geçen ay başladığımız assembler kursumuz bu ayda bütün hızıyla devam ediyor. Geçen ay oturup bir takım register(yazmaç) ve bazı komutlarla kafaları yemiştik. Bu ay ise sizlerle birlikte bir ekran açmanın nasıl yazılabileceğini anlayacağız. Eğer bu işi iyice öğrenmek istiyorsanız dikkatlice okumanızı ve bilgisayarınızın başına geçmenizi şiddetle tavsiye ederim yok eğer bazıları gibi büyük miktarda para ödeyip, Red Sector'e intro falan yaptırmayı düşünüyorsanız bu size kalmış. Neyse bu incir çekirdeğini doldurmayacak şeyleri bırakıp işimize bakalım. Hepinizin bildiği veya bilmediği gibi Amiga ekran görüntüsü her biri soldan sağa doğru yol alan 262 adet video ışınından oluşur. Bu mantığı anlamak Amiga'nın görüntüsünü anlamak demektir. Eğer anlamadıysanız o kadar korkmanıza gerek yok. Minik yazı dizimizi okumanız yeterlidir. Neyse biraz önce söylediğimiz 262 video ışınımız Amigamızın Display Field yani görüntü alanını oluşturur. Bu görüntü saniyenin altmışta birinde oluşur. Bu tekniğe <<RASTER>> yani tarayıcı tekniği denir. Bildiğinize emin olduğum bir başka konuda görüntü alanımızın minik objeler olan pixellerden oluştuğudur. Bu pixel dediğimiz şeylerde bir araya gelerek o mükemmel resimleri oluşturur. LO-RES de denilen düşük çözünürlükteki resimler 320 pixel genişliğinde, MED-RES deni-

SEKA

Bahadır AKCAN Burak ÖZIŞIK | İlen orta çözünürlükteki resimler 352 pixel genişliğinde, HI-RES dediğimiz yüksek çözünürlükteki resimler ise 640 pixel genişliğindedir. Amiga'nın grafik sisteminde, ekran üzerinde 32'ye kadar renk gösterilebilir fakat HAM (Hold And Modify) yani Seç ve değiştir modu kullanılarak ekranda 4096 adet renk gösterebilirsiniz (İlginç değil mi?) Resimler hafızada bitler halinde bulunurlar bu bitleri değişik varyasyonlarla değiştirerek istediğimiz renkleri elde edebiliriz. BU BİTLER NASIL OLUŞUR Tabii burda bit demek byte'ın 8'de 1 demektir. Amigamız bu görüntüleri oluşturmak için 5 adet hafıza bölgesi kullanır. Bu bölgelere BITPLANE yani BIT yüzeyi denir. Bu bitplane'lerin başlangıç adreslerine ise BITPLANE POINTER'ları yani bitplane yazmaçları denir. Renklerin oluşumu da ilginçtir, çünkü ressam amcalarımızın kullandığı renk elde etme tekniğiyle aynı olaydır. Bunu şöyle açıklayabiliriz: Her bitplane'in rengine farklı bir değer yükleyip bu bitplane'leri üst üste getirirsek renklerinin değeri apayrı bir değer olarak karşımıza çıkar mesela: 2 bitplane'li bir ekran açtık. İlk bitplane'imizi sarı, ikinci bitplane'imizi mavi yaptık. Bir de ne görelim karşımıza bir yeşil renk çıktı. Tabii bu arada ekranda aynı anda iki adet görüntü alanı açabildiğimizi söylemeliyim. Bu iki görüntü alanı 5 bitplane'lik görüntümüzü oluşturur. Bunların sıralanışı büyükten küçüğe doğrudur yani 5-4-3-2-1-0. Bu plane'lerden 0, 2 ve 4 numaralılar ilk görüntü alanında 1, 3 ve 5 numaralı plane'ler ise ikinci alandadır. BİR EKRAN AÇMAK İÇİN YAPMAMIZ GEREKENLER: 1-Görüntü alanımızın yüksekliği ve genişliği. 2-Görüntünün yüksekliği ve genişliği. 3-Görüntü bölgemizdeki her bir pixel'ın rengi. 4-Enlemesine çözünürlük. 5-Boylamasına çözünürlük. 6-Göstereceğimiz resmin hafızada nerde bulunduğu. 7-Göstereceğimiz resmin modülü. (1)Görüntü alanın yüksekliği ve genişliği, açacağımız ekranın boyutlarını vereceğimiz yazmaçlardır. (2)Görüntünün yüksekliği ise göstereceğimiz resmin boyutlarıdır. (3)Resmimizin renklerini göstermek için gerekli olan aşamadır. Fakat bu işin daha kolay yollarının bulunduğunu ve bunu göstereceğimizi söyleyerek içinize soğuk sular serpebilirim. (4)Enlemesine çözünürlük ise ekranımızın enlemesine çözünürlüğünü belirtmeye yarar. (5)Boylamasına çözünürlük ise (4)'üncü maddenin boylamasına olanı. (6)Resmimizin hafızada nerde bulunduğu yani daha önce anlattığım Bitplane pointer yazmaç adresi. (7)Göstereceğimiz resmin modülü: Bu çok önemli bir yazmaçtır. Bu register'la bir Raster çizgisinin üstüne ne kadar veri koyacağımızı sisteme söylediğimiz yegane yazmaçtır. RENK TABLOSU: Renk tablosu dediğimiz şey, göstereceğimiz resmin 32 ren-

Bu olayı ayarlamak için ise BPLCON0 kütüğünün 15'inci bitini ayarlamamız gerekmektedir. Bunlar:

BITPLANE SAYISINI SEÇME: Bitplanelerin sayısı $dff100 nolu kütükteki BPLCON0 yani

Bitplane kontrolüne yarayan Değer Bit Çözünürlük 15 Düşük 1 15 Yüksek INTERLACE MODUNU SEÇMEK Bu olayı ise yine BPLCON0 yazmacının 5 adet

2'nci bitine yazarak seçeriz. Bu bitler:

Değer Bit Interlacing

1 2 Interlaced 0 2 Nonregisterin 14 ,13 ve 12. nolu interlaced BPUO,BPU1 ve BPU2 register- BITPLANELERIİN lerına yazılarak sisteme anlatı- HAFIZADAKI labılır. UZUNLUKLARI Bu bitlerin degerleri , kac adet Bitplaneleri — göstermek için hafızaya gini yazdığımız yazyerleştirip ,bu değerleri Bitplane Pointerlarına yazarsak o planeler için hafızada yer ayırmış oluruz. Uzunlukları ya-

Resmin boyutu Modu Hafıza listesidir. Bu registerler hafızada 320*200 lo-res, non-interlaced 8000 byte 320*400 lo-res, interlaced 16000" " $dff180'den > 640*200 hi-res, non-interlaced 16000 " " $dff19e'ye kadar 32 | 640*400 hi-res, interlaced 32000" " tanedir. Color registerleri 16 bitten oluşur. Bunlar: plane açtığı ve hangi planeleri Bitler İçerikleri Tablo 1'de yazılmıştır. 15-12 Kullanılmıyor. EKRANIN ENLEMESİNE 11-8 Kırmızı değeri. BOYLAMASINA 7-4 Yeşil değeri ÇÖZÜNÜRLÜĞÜNÜ

EKRANI AÇMAK İÇİN KULLANILAN REGISTERLER BPLCON0 REGISTERİ:- $DFF100

Bitler; Fonksiyonu:

0 Kullanılmıyor 1 Dış senkronizasyon 2 İnterlace'i kontrol eder 3 Light pen'i kontrol eder 4 Kullanılmıyor 5 Kullanılmıyor 6 Kullanılmıyor 7 Kullanılmıyor 8 Genlock'u kontrol eder 9 Renkleri kontrol eder 10 Çift görüntü alanı tanımlamaya yarar. di HAM modunu kullanmak için gerekli 12 BPUO 13 bitplane sayısını belirlerler. 14 BPU2, f 18 / 3-0 Mavi değeri SEÇMEK da parametrelerinden herhangi biri değişen plane'in hafızada tuttuğu yerde değişir. Bu ince işleri anlamak ıcın aşağıya çizdiğim Tablo 2'yi incelemek yeterli olabilir.

BPLCON2 REGISTERİ:-$DFF104 Bitler: “Fonksiyonu: 0-5 Sprite öncelik kontrol 6 Görüntü alanı öncelik kontrol. 7-15 Bu bitler kullanılmamaktadır. DDFSTRT REGISTERİ:-$DFFOSE — Fonksiyonu: 0-2 Kullanılmamakta. 3-7 Pixel baslangıç pozisyonu. 8-15 Bu bitler kullanılmamaktadır. DDFSTOP REGISTERİ:-$DEF090 Bitler: “Fonksiyonu: 0-2 Kullanılmamakta. 3-7 Pixel bitiş pozisyonu 8-15 Bu bitler kullanılmamaktadır. DIWSTRT REĞISTERİ:-$DFF092 Bitler: “Fonksiyonu: 0-7 Enlemesine başlangıç pozisyonu 8-15 Boylamasına başlangıç pozisyonu DIWSTRT REGIİSTERİ:-$DEFF094 Bitler: — Fonksiyonu: 0-7 Enlemesine bitiş pozisyonu 8-15 Boylamasına bitiş pozisyonu yi Ş Pozisyı su formüle gore hesaplanabılır. en*boy/8-bıtplane'ın hafızada

PROGRAM SATIRLARI: AÇIKLAMA:
move.w — BPLCONO registe rindeki bitplane sayısı
.bitlerine decimal olarak İ yükle.Renkleri | M!Z1
kontrol açıp,Renk gösterimini | özetle-
işleme koy. yelim
move.w — #0,$dff102 Görüntü alan aralıklarınısıfır yap. :Prog-
move.w — #0,Sdff108 Modülü320pixel genişlik olacak şekilde — | |
İmove.w — #$0038,$df(092 — Gösterim başlangıç pixellerini ayarla.
move.w — — Gösterim son pixellerini ayarla. mızla
move.w — #$2c81,$dif0O8e — Gösterim Penceresinin sağüst.. 320'ye
köşesine$2081değerini yükle 200
— #$f4c1,$dff090 — Gösterim Penceresinin sol . lük dü-
alıköşesine$f4c1
değerini yükle. şük çö-
|move.w — #$003f,Sdff180 — Zemin rengini lacivert yapar. zünür-
move.w — #SOMO,$dif182 Yazı rengini sarı yapar. lükte
move.w — #$0002,$dff0c0 — Bitplane üst pornterini $2 yapar. Zemin
move.w #$4000,$dff0e2 Bitplane alt pointerini$4000 yapar.
move.w — — Dma Kontrolünü aç ve Bitplane pointer-
larına koyduğumuz verininekranda göste siyah
PROGRAMI lrilmesini sağla. ve Yazı
rengi
Bır bıtplane'iın boyutla- — kırmızı olan yüksek çözünür-
rına göre hafızada tutacağı alanı lükte  interlace olan tek

bitplane'li bir ekran açmış ol- ÇİFTE GÖRÜNTÜ ALANI-OLUŞTURAN FAKTÖRLER 1-Her görüntü alanı birden üçe kadar olabilen bitplanelerden oluşur.İlk görüntü alanı O ,2 ,4 bitplanelerden, İkinci görüntü alanı ise 1 ,2 ,3 nolu bitplanelerden oluşur. 2-Her görüntü alanı 8 renkten oluşur.İki alanı üstüste koyarsak renk sayısı hemen 64'e fırlayıverir. 3-Bu modu açmak için BPLCONO registerindeki Dual Playfield Mod bitini açmak gerekmektedir. 4-İki görüntü alanından herbiri hafızada farklı yer tutabilir daha büyük yada daha küçük olabilir. 5-İki görüntü alanıda kolaylıkla kaydırılarak animasyon efektleri sağlanabilir. - Eğer runlarınız varsa yada birşeyler sorularınız tuttugu yer. EKRANAÇMAPROGRAMI Hani bazı oyunlarda görürüz — yapıp çevreye tanıtmak isterse- VE AÇIKLAMASI: de şaşırırız.Nasıl oluyorda niz aşağıdaki adrese yazabilirsi- Şimdide sizlerle tek oluyor ön tarafta bır skor hız niz. BURAK & BAHADIR bitplane'li 320'ye 200 boyutları — vs. — tablosu altında basit bir ekran açılımını — bulunuyor, P PROGRAM SATIRLARI SR 1) arkasında ise | Move #50200 5000100 BPLCONO yazmacının interlace ile if Şimdide şu anlattığımız prog- — oyun.Yada gili olan 2. bilimi Yüksek ilgili olan 15. bitini Bitplane sayılarına ramcığı özetlersek : Programı- — daha akılcı <i> değerini yükle mızla 320'ye 200 lük düşük çö- bır örnek ve- e S0 Görüntü alan aralıklarını sıfır yap. zünürlükte Zemin rengi lacivert — rırsek araba ve yazı rengi sarı(sarı lacıvert yarışı oyun- move.w — #S80,$dff10a Bu bitler ar ZAT) buyuk: fener) olan tek larında moye.w — #S003c,$dff092 — Gösterim başlangıç pixellerini ayarla. bitplane'li bir ekran açmış ol- — banın için- son pike duk. Eğer <<<IFF- den etrafı | move.w” #S$2c81,$dff08e — GösterimPenceresinin sağ üst köşesne CONVERTER>>> adında bır. görüyoruz değerini yükle utility'niz varsa herhangi iff tabii ayrıca move.w #$f4c1,$dff090 — GösterimPenceresinin sol alt köşesine $f4cl değerini yükle formatındaki bir resmi bitmap'a arabamızın Zemin rengini siyah ape çevirebilir,Geçen sayıda anlattı. ön panelini- e ğımız <<RIİ>> komutuyla de görüyoruz meye #S0007,$dff0c0 Bitplane üst pointerini $7 yapar. itbl. iz işt move.w — #$0000,$dff0e2 Bitplane alt pointerini $0000 yapar. de bitp an işte. bula move.w — #$8300,$df1096 - DmaKontrolünü aç ve Bitplane poinresine yükleterek bir görüntü el- hesap yani terlerina koyduğuuz verinin ekranda de edersiniz. Ayrıcada <<IFF- zor bir yanı gös-terilmesini sağlar. CONVERTER>> programınıda — yok. PROGRAM 2 dergimize gelip alabilir, kullanı- — Bu mınıda Öğrenebilirsiniz. İkinci — kullanmak icin birkaç bit de- — P.K 205 örneğimizlede(PROGRAM2) ğiştirmek bir kaç tane daha — BEŞİKTAŞ/İSTANBUL

Yüksek çözünürlükte interlace olan ve yine tek bitplaneli bir ekran açaçağız.Şimdide proggöstergeç kullanmamız yeter- ÇİFT GÖRÜNTÜ ALANINI

Neyse, bu ayda bu kadar beyninizi yemekle yetinelim bari, gelecek ay görüşmek üzere hoşça kalın.