Bu sayfadaki yazılar
Sayfanın metni
Sayfa 94
"Eee... Ne ki şimdi bu. Topu topu küp dönüyor bir tane". Herhangi bir platformdaki herhangi bir demoyu değerlendirmeniz ve takdir edebilmeniz için, o platformdaki teknik yetenekler hakkında bir miktar bilgiye sahip olmanız gerekir.
Demo izleyen bir insanın o demoyu beğenip beğenmemesini basit bir şekilde modellemeye çalışalım. Bir demoyu değerlendirirken, genel olarak insanın beğenisi iki farklı kaynaktan beslenir. Bunlardan birincisi, kişinin teknik bilgisi dahilinde, gördüğü şeylerin zorluğu ve başarısı hakkında ölçülebilir (hatta nümerik) ve objektif bir beğeni türüdür. İkincisi ise daha sübjektif olarak, görülenlerin kişinin ne kadar hoşuna gitmesi ile ilgilidir. Kişi bu iki kaynaktan hissettiği beğeninin toplamı kadar demoyu beğenir diyebiliriz.
Sübjektif beğeni, zaman içinde kişinin kendi kendine geliştireceği ve pek çok başka faktöre bağlı bir olaydır ve sizlere burada yaklaşık aynı zorluktaki iki efektten hangisini daha çok sevmeniz gerektiğini söylemek bize düşmez. Fakat objektif ölçütler hakkındaki bilgileri size verebiliriz. Bu yazıdaki genel amacımız bu. Bu bilgileri size sunarken şöyle bir yaklaşım izleyeceğiz:
- Platformun donanım özellikleri.
- Donanımın sırasıyla programcılık, grafik ve müzik yönünden avantaj ve dezavantajları.
- Efekt trendlerinin kısa tarihsel özeti.
C64
C64 scene'i dünyada en uzun süredir yaşayan demoscene. Çeşitli ekollerin gelip geçtiği, bugün bile başka platformlarla çok yönlü etki alışverişi yapabilen bir üretkenlik ortamı. Bugün yaşayan demoscene platformları arasında belki de en kısıtlayıcı donanıma sahip.
Önce C64 donanımı hakkında kısa bir özet yapalım. Pek çoğunuzun bildiği üzere C64, 1 MHz, 8 bitlik bir işlemciye ve 64 K RAM belleğe sahip. Bellek adreslerine direkt olarak erişebilen (DMA ile) VIC-II adlı grafik çipine sahip. Aynı zamanda dünyanın gelmiş geçmiş en başarılı dijital kontrollü analog ses çipi SID ile de 20 yıldan fazladır kulaklarınızı şenlendiriyor.
Bu donanımın, demo yapımını nasıl etkilediğini üç bölümde inceleyelim: Programcılık, grafik ve ses yönünden...
Programcılık
C64 donanımında demo programcılığını şekillendiren bazı çok önemli özellikler var:
- 8 bit olmak. Bazen insanlar farklı CPU'ları karşılaştırırken sadece MHz'leri karşılaştırmak gibi bir hata yapar. Oysa ki, mimarinin kaç bit olduğu genelde cycle başına (yani MHz ile saydığınız, CPU'nun çalışma hızını belirleyen her bir tick) yapabildiği işi çok etkiler. Örneğin 8 bitlik bir makinede 8 bitlik bir sayı üzerinde işlem yapmak 16 bitlik bir sayı üzerinde aynı işlemleri yapmaktan 2 ila 10 defa daha yavaş olabilir.
- Komut setinde ÇARPMA ve BÖLME komutları olmaması. İşte C64'teki en önemli kısıtlardan biri budur. Bunun anlamı toplama çıkarma gibi işlemler genelde birkaç cycle'da yapılabilirken, çarpma ve bölme işlemleri kimi algoritmalarla 50 kat yavaş olabilir. Dünyada neredeyse çarpma işlemi gerektirmeyen demo efekti olmadığı düşünülürse, bu sorunun her C64 efektinde akıllıca çözülmesi gereken bir problem olduğu anlaşılır. Bir diğer problem de 8 bitlik iki sayının çarpımının 16 bit olabilmesi, yani 8 bitlik mimarinin kolay işleyebildiği sayılar aralığından taşmasıdır. Bölme ise C64'te çok çok çok yavaş bir işlemdir.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 95
- Grafik blitter olmaması: Maalesef bellekte iki boyutlu piksel gruplarını bir yerden başka bir yere hızlı kopyalamaya yarayan herhangi bir donanım yoktur. CPU'nun da öyle aman aman hızlı olmaması yüzünden genelde iki boyutlu hareket eden çok fazla ve büyük grafik blokları yapmak zordur.
- Raster interruptlar. C64'te demo programcılığını başlatan özellik budur. VIC çipi ekrana görüntüyü gönderirken, bellekteki çeşitli bölgeleri tarayıp onlardaki grafik datasını yorumlayarak, ekrana göndereceği bilgileri satır satır hazırlar(*1) Ve herhangi bir zamanda taramakta olduğu satırı tutar. Buna raster satırı denir. Kritik nokta VIC çipinin taraması esnasında raster istenilen bir satıra geldiğinde kesinti(*2) yaratacak şekilde programlanabilmesidir. Bu sayede ekranın çizimi sırasında çok kritik zamanlarda bellekte veya VIC yazmaçlarında(*3) önemli değişiklikler yaparak çok ilginç efektler yaratabilir. Bu efektler arasında çeşitli donanım kaynaklarını ekranda tekrar tekrar değişik satırlarda yeniden kullanarak artırmaktan tutun da bellekte tek bayt kopyalamadan, tüm ekranı x y yönlerinde kaydırmak, dalgalandırmak, esnetmek ve sıkıştırmak, normal grafik modlarının desteklediğinden daha fazla renk veya çözünürlük elde etmek gibi bazı donanım hack'leri bulunur.
- Floating point işlemcisi olmaması. Bunu ihtimalen tahmin etmişsinizdir. Fakat Floating point işlemlerinin başka şekillerde (genellikle fixed point) yapılması, özellikle 3 Boyutlu efektleri yapmayı zorlaştırır.
Grafikler
- Toplam renk sayısı: C64'te normalde 16 sabit renk vardır.
- Grafik modları: C64'te çeşitli çözünürlük ve renk kullanım kısıtlamalarına sahip grafik modları vardır. Bütün grafik modlarında genellikle renk kullanımını kısıtlayan kuralları anlatabilmek için cursor karesinden kısaca bahsetmek lazım. C64 ekranı 8x8 piksellik kare bloklar halinde organize edilmiştir. Bu karelerin bir tanesini ifade etmek için Cursor karesi deyimi kullanılır. Ekran text modundayken cursor karelerine harfler oturur. Bitmap modundayken ise bir cursor karesindeki pikseller renk bilgilerini paylaşırlar. İlk başta donanımın desteklediği modlar:
- 320x200 Hires: Bir cursor karesindeki her piksel bir bit ile ifade edilir. Kare içindeki 1 olan pikseller aynı rengi alır (paylaşır). 0 olan pikseller de ikinci bir rengi paylaşır.
- 160x200 MultiColor: Bir cursor karesinde yan yana gelen iki piksel yine birer bit ile temsil edilir. Fakat bu defa 2 bitlik ifade gücü sayesinde cursor karesindeki her piksel 4 farklı renkten birini seçebilir. Yan yana gelen 2 piksel birleştiği için yatay çözünürlük yarıya düşer (pikseller kalınlaşır). Bu modda bir cursor karesinde 4x8 piksel olmuş olur. Kullanılabilen 4 renkten biri ekranın arka plan rengidir. Diğer üç renk her cursor karesinde değiştirilebilir.
- Karakter grafikleri: C64'ün text yazmak için kullandığı fontların bitmapleri bellekte bir bölgeden yüklenebilir. Bu bölgedeki bitmapler değiştirilerek çok çeşitli fontlar yaratılabildiği gibi, bu fontlara bir grafiğin parçaları yüklenip, daha sonra harfler yan yana dizilerek büyük grafik parçaları oluşturulabilir. Bu C64'te çok kullanılır. Çünkü 8x8 piksellik bloklar tek bayt ile ifade edildiği için ekranda grafik animasyonları kolaylaşır. Karakter grafikleri genelde tek renkli veya 3 renkli olacak şekilde yapılır.