Bu sayfadaki yazılar
Sayfanın metni
Sayfa 20
Vedat Hallaç
Hepinize merhaba. Umarım hepiniz geçen sayıda yayınladığımız introyu çalışabilir hale getirip diske kaydedebilmişsinizdir. Bunu nasıl yapacağınızı size anlatmıştım geçen sayıda. Fakat teyp kullanan arkadaşların da introyu çalıştırabilmesi için aşağıdaki işlemleri yapması gerektiğini yazmayı unutmuşum: 1. Programınızı yazıp kasede kaydedin. 2. Kasetteki programı yükleyin ve “RUN” ile çalıştırın. 3. Bellekte $8000 veya $C000 monitör programı yükleyin. 4. $0801-$2C00 arasını kasede kaydedin. Artık sizin de çalışabilir bir intronuz var. Aranızda “Şu introyu adam gibi yayınlasaydınız da biz de bu kadar uğraşmasaydık.” diyenleriniz vardır mutlaka. Aslında introyu asıl uzunluğunda yayınlayabilirdik. Fakat sizin saatlerce MDE ile data girmenize gönlüm razı olmadı. Birkaç sıkıştırma programını deneyerek en iyisini buldum ve sizi tam 16 blokluk (bir blok — 256 bayt) data girmekten kurtardım. Yazı dizimizi izleyen arkadaşların fark ettiği gibi (umarım) introda, daha önce burada açıkladığım tek bir rutin bulunuyordu. O da ekranın renk değerini her raster taramasında belli bir sıraya göre değiştiren ve bu sayede ortadaki yazıların parlamasını sağlayan GLOW rutininiydi. Bu rutini bu satırlarda açıklamayı pek düşünmüyorum, çünkü basit bir indeksleme sistemiyle. Eğer bir introyu yapmaya başlayıp da rutinleri bir araya getirmeyi beceremediyseniz veya raster satırlarını ayarlamadıysanız hemen pes etmeyin. Zaten ilk denemede tutturabiliyorsanız, bu satırları okumanız bir hata. Yani hazır rutinleri birleştirmek oldukça deneyim isteyen, zor bir iştir. İlk başta harika bir intro yapmaya girişmektense, bir SCROLL ile TOP ZIPLATMA rutinini birleştirmek gibi basit bir hedef seçin kendinize. Bu işi başarabilirseniz, bunun üzerine müzik, yıldız kaydırma, vb. rutinlerini eklemeye çalışarak basamak basamak ilerleyin. Bu sayede her şeyi aynı anda düşünmekten kurtulur, beyninizi daha az yorarsınız. Aslında, ilk introyu yapabilecek kadar bilgi verdikten sonra yazı dizisini kesmeyi düşünüyordum fakat burada açıklanan rutinlerin bazı konulardan hiç bahsetmediğini fark edince yazıya bir süre daha devam etmeye karar verdim. Bu ayki konumuz, introlarda grafik kullanımı. Aslında, grafik ekranında bulunan bir resmi introda göstermek çok kolaydır. Grafik ekranına transfer edersiniz. İstediğiniz bölgelerde raster interrupt kullanarak grafik ekranını açarsınız. İşi bitince de bir interrupt daha kullanarak karakter ekranına dönersiniz, tamam. Fakat bu işi yaptığınızda, grafik için toplam kırk blok kadar bir hafıza ayırmanız gerekir ki, bu da bir intro programcısının kullanmayı göze alamayacağı bir lükstür. Öyleyse programlarınızda nasıl grafik kullanacaksınız? Bu konuyu açıklamadan önce size C64'ün grafik kullanımı hakkında biraz bilgi vermem gerekir. Bildiğiniz gibi grafik ekranı, 320x200'lük bir matristir, fakat her nokta için bir bayt harcamak biraz savurganlık olacağı için yatay sekiz noktanın değeri tek baytta tutulur. Yani grafik ekranı da 48 bayt eninde, 200 bayt boyundadır. Bu baytlar da yatay veya dikey olarak sıralanmamışlardır (neyse ki?). Karakter ekranıyla uyum sağlaması için grafik ekranı KART'lardan oluşmuştur. Her kart, bir karakter datası gibi 8x8 noktadan oluşmuştur. Yan yana duran sekiz noktanın bir bayt oluşturduğunu bildiğimize göre her kartın alt alta gelen sekiz bayttan oluştuğunu söyleyebiliriz. Bu kartlardan kırk tanesi yan yana gelerek bir satırı, bu satırlardan yirmibeş tanesi de alt alta gelerek grafik ekranınızı oluştururlar. Bu karışıklıktan dolayı, ekranın herhangi bir noktasının dahil olduğu baytı bulmak oldukça zordur. Bu ayki konumuzla ilgisi olmadığı için bu baytı bulmak için gereken formülleri ve rutinleri vermeyeceğim, ama çok merak eden arkadaşlar, eski sayılarımızda yayınladığımız grafik donanımı yazısını okuyarak bu konuda bilgi edinebilirler. Neyse, konuyu fazla dağıtmayalım. Asıl amacımız, değişik bir sistemle grafik göstererek, ekranın tepesinde duracak bir logo için binlerce bayt ayırmaktan kurtulmaktı. Bu işi yapmak için ilk olarak ekranı karakter seti olarak göstermeyi düşünmüşler eski intro programcıları. Bunu yapmak için grafik ekranınızı $2000 adresine yükleyin ve şu satırı (satır numarası kullanmadan) yazın: FOR R=0 TO 255: POKE R: NEXT R: POKE 53272, 25 Ekranın en üstünde grafik ekranınızın ilk altı buçuk satırını göreceksiniz. Tabi ki renkleri ve multi-color modu olmadan. Eski programcılar da ilk bunu fark etmiş ve programlarına altı satır boyunda (6x8 — 24 nokta uzunluğunda) logoları ekranın herhangi bir yerinde kullanmışlar.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 21
Bu sistem sayesinde grafik ekranının gerekmeyen kısımlarını (24 noktalık bir logo için ekranın tamamı harcanıyor) başka amaçlara ayırabiliyoruz. Fakat bu göründüğü kadar etkili bir yöntem değildir. Her şeyden önce sadece altı satırlık bir logo kullanmanızı sağlar, o kadar. Yedinci bir satır kullanmak için bu karakter setinin altıncı satırından hemen sonra yeni bir karakter seti kullanmaya girişmeniz gerekir ki, bu işe kalkıştığınızda yaptığınız iş grafik ekranına harcayacağınız yerin fazlasını karakter setine harcamanızı gerektirir. Ayrıca, grafik ekranında kullanılmayan baytları zaten başka amaçlara ayırabilirsiniz. Bu bölgelerin gösterileceği raster satırına girmeden hemen önce grafik ekranını kapatırsınız, olur biter. Öyleyse daha iyi bir sistem kullanmamız gerekir burada. Aslında bu yöntem de karakter seti kullanılarak yapılır, fakat karakter setini daha akıllıca kullanarak. Bu sistemde, grafik kartları tek tek başka bir alandaki karakterlere yerleştirilir, fakat her kart transfer edilirken, aynı sekiz baytı kullanan bir kartın daha önce bulunup bulunmadığına bakılır. Eğer böyle bir kart varsa, bu kart için yeni bir karakter harcanmaz. Tabi ki bu işlem sırasında bir de karakter tablosu hazırlanır. Bu karakter tablosu ekrana bastırılıp, gereken karakter setine geçildiğinde, grafiğinizin tamamını ekranda bulabilirsiniz. Bazılarınızın bu kart tekrarının çok fazla olmayacağına inandığının farkındayım. Fakat, bir grafik ekranında bulunacak olan boş kartların sayısını düşünürlerse sanırım kazancın oldukça fazla olduğunu anlarlar. Aslında, bir grafiğin içinde kendini tekrar eden o kadar çok kart vardır ki (özellikle de grafik bilinçli hazırlandıysa) şaşarsınız. Ayrıca unutmayın, bilgisayarınız aynı olan iki kartı asla atlamaz. Sonuçta şu anda kullanılan en etkin grafik saklama sistemi budur.