Commodore sayı 69, sayfa 44

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 44

Normal olarak, elektron ekranın alt kısmına, çerçevenin olduğu yere geldiği zaman bilgisayar hemen ekranın kapatılması için gerekli işlemleri yerine getirir. Bu işlemler, tüm görüntü birimlerinin gösteriminin kesilmesi ve satırların tamamının $D020, yani 53280 adresinde bulunan renkte gösterilmesini sağlar. Bizim yapmamız gereken şey, bilgisayarın kafasını elektron bu satıra gelmeden önce karıştırmaktan ibarettir. Eğer ekran 24 satırsa, 24. satırın sonunda bilgisayar ekranın kapatılması ve çerçeve işlemlerinin başlaması için emir gönderir ve bir daha elektronun yerini kontrol etmez. Ve ekran 25 satır gösterim modundayken 24. satırı geçtikten sonra 24 satır gösterilmesi söylenirse, ancak gelecek taramada ekran 24 satıra indirilir. Bu iki kuralı dikkatle okursanız, şu anda çerçeveyi ortadan kaldırabilecek kadar bilgiye sahip olduğunuzu fark edersiniz. Yapmamız gereken tek şey, 25 satırlık bir ekranda 25. satırın başlangıcını biraz geçtikten sonra ekranı 24 satıra indirmekten ibarettir. Bu işi yaptığınız zaman bilgisayarınız 25. satırın başında ekranı kapattığını sanacak ve elektronun 25. satırın sonuna gelip gelmediğini kontrol etmeyecektir. 25. satırın başını da geçmiş olduğunuz için ekran kapatılmayacak ve borderlarda da normal ekran gösterilmeye devam edilecektir (yalnızca spritelar görünse de). Gelecek taramanın sonunda da aynı hileyi yapabilmek için (Şu ana kadar yaptıklarımızla yalnızca bir tarama için alt ve üst border'ı açabiliriz. Bir sonraki taramada 24 satırlık bir ekran normal sistemle gösterilir işi burada bitirirsek) 25. satırın sonuna geçtikten sonra herhangi bir yerde ekranı 25 satıra bu işlemi gelecek taramalarda da tekrarlayabiliriz. Bütün bu işler yalnızca beş-altı raster satırı yiyecektir. İyi de çerçeveyi ortadan kaldırmanın ne gibi bir yararı var? Bu sorunun cevabını eski 64'çüler bilirler. PAPERBOY adlı oyunda bu özellik kullanılmıştı. Bu sayede tüm ekran oyuna ayrılırken, hak sayısı, skor gibi bazı gerekli bilgiler alt ve üst çerçevenin olması gereken yerlere yerleştirilebilmişti. AMICA PAINT adlı çizim programı da tüm ekranı sizin çizimleriniz için ayırırken, nokta koordinatı, çizim modu gibi gerekli bilgileri alt ve üst çerçeveye yerleştirir. Kısacası bu işlem genelde daha fazla görüntü alanı sağlamak amacıyla kullanılır. Eğer şimdiye kadar neden alt ve üst kısımların yok olduğunu anlamadıysanız önce Tablo 1'deki şekilleri inceleyin. Eğer gene de anlamadıysanız bundan önceki üç paragrafı daha dikkatli okuyun. Çerçeveyi ortadan kaldırdığınızda ilk olarak alt ve üst kısımların $D021 yani 53281'de tutulan renkle aynı olduğunu fakat içinde siyah renkli şeritlerin bulunduğunu görürsünüz. Aslında bu bölgede sade-

ANA |

ce sprite gösterilebileceğini söylemek pek de doğru olmaz. Bu şeritler karakter ve grafik ekranlarının çerçevede bulunan karşılığıdır. Ama yalnızca $3FFF (bulunduğunuz VIC BANK'inin son adresi) adresinde bulunan baytın bitlerini gösterebilirsiniz burada. Yani genel olarak bu çizgiler kötü görüntü oluşturmaktan başka bir işe yaramaz. Çizgilerin siyah olan renklerini değiştirmenin de bir yolu olmadığı için en iyisi bulunduğunuz VIC son adresinin değerini devamlı olarak 0 tutmaktır. Açtığınız bu kısımlara sprite koymak da büyük bir problem sayılabilir aslında. Çünkü Y koordinatlarının en büyük değeri 255'tir. Oysa ekranın en altı yaklaşık 255'te başlar. Yani asıl kısımda gösterilecek sprite'ların Y koordinatını tam olarak belirtmenin bir yolu yoktur. Bu yüzden 0-$30 (48) arası bir değer vererek altta gösterdiğiniz sprite'lar ekranın üstünde de görülecek ve hoş olmayan görüntüler yaratacaklardır. Bu kötü görüntüden kurtulmak için raster satırı $0000 olduğu zaman (bu kontrol size kalmıştır) ya sprite'ları kapatırsınız ya da tanımlarını ve x-y koordinatlarını değiştirerek ekran içinde de sekiz sprite kullanabilirsiniz. Ama bu işi yaptığınızda, ekranı 24 satıra indirdiğiniz yerde sekiz sprite'ın (ya da kaç sprite kullanacaksanız) border tanım ve koordinatlarını vermeniz gereklidir. Yani yapmanız gereken işler sırasıyla şöyledir: 1. $00FA raster satırına gelmeyi bekleyin (25. satırın oralarında bir

| yer)

2. Ekranı 24 satıra indirin ($D011'in 3. bitini sıfırlayın. #$13 değerini D011'e vermeniz 24 satırlık bir karakter ekranı elde etmeniz için yeterlidir). 3. Alt Border'da bulunacak sprite'ların x-y koordinatlarını ve görüntü adreslerini bilgisayara bildirin. 4. $D011'in 8. bitinin 1 olmasını veya $D012'nin 0 değerini almasını bekleyin (ikisi de raster satırı $0000'a kadar bekler). 5. Ekranı tekrar 25 satıra çıkarın (#$1B verebilirsiniz.) 6. $D011'in 8. bitinin 0 olmasını veya $D012'nin 0 değerini almasını bekleyin (ikisi de raster satırı $0000'a kadar bekler). 7. Ekran içinde ve üst borderda kullanılacak sprite'ların x-y koordinatlarını ve görüntü adreslerini bilgisayara bildirin. 8. Birinci basamağa girin. Bu işlerin hepsini yapan bir program vermeyeceğim. Yalnızca border'ı açan bir programın üzerine tepede anlattığım olayları ekleyebileceğinize inanıyorum. Aslında sizin merak ettiğiniz şeyin, yan çerçevenin nasıl yok edileceği olduğunu biliyorum. Buraya kadar anlattıklarımı yeterince iyi takip edebildiyseniz aynı sistemin çok daha iyi bir zamanlamayla kullanılması halinde yan tarafların da açılabileceğini fark etmiş olmanız gerekir. Yalnızca 24-25 satır hilesi değil de 38-40 kolon hilesi yapmamız gerekir bu iş için. Ama burada çok güçlü bir düşmanla karşı karşıyasınız: Bilgisayarınız dikey olarak elektronu istediğiniz satırda yakalayabiliyor, ama yatay olarak ve tam 39. kolonda yakalattırmak her babayiğidin harcı değil. Yani belli sayıda NOP ve BIT $EFA kullanarak gerekli yere getirebileceğinizi düşünüyorsanız haklı sayılabilirsiniz, ama tam değil. Çünkü yatay olarak elektron yakalamaya çalıştığınız zaman bir kararsızlık ortaya çıkar ve elektronu yatay olarak yakaladığınız yer 1 veya iki karakterlik bir bölge içinde sağa-sola oynar. İlk olarak bu kararsızlığı yok edebilmelisiniz ki her satırın tam 39. kolonunda ekranı 38 kolona indirip hemen sonra kırk kolona çıkartabilesiniz. Bundan başka ekran içinde $32, $3A, $42, $AA gibi satırda CPU'nun zamanının bir kısmının verildiğini biliyoruz. Bu da tüm zamanlamamızı çökertecek ve yan tarafların yalnızca 7 piksel açılmasını sağlayacaktır. Hoş, bu problemi border açtığınız bölgedeki ekranı aşağı kaydırarak halledebilirsiniz, ama gene de yatay kararsızlığı yenmeniz çok çok zordur. Bu

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