|
Konu Başlığı: Color Wash / Renk Geçişi Efekti Gönderen: wizofwor üzerinde Kasım 25, 2014, 18:08:01 ÖS Öğrendiğim efektleri açıklamaya devam ediyorum. Bu seferki efekt çok sık kullanılan, introların olmazsa olmazlarından biri, renk geçişi efekti. Kodum çalıştığında aşağıdaki bir ekranım olacak.
(http://www.commodore.gen.tr/forum/index.php?action=dlattach;topic=9359.0;attach=8375;image) Konu Başlığı: Ynt: Color Wash / Renk Geçişi Efekti Gönderen: wizofwor üzerinde Kasım 25, 2014, 18:17:31 ÖS İlk olarak ortalığı toparlamak için sık kullandığım rutinleri ayrı bir dosyaya kopyalıyorum. Böylece hem kodum daha sade görünecek. Hem de sürekli eski dosyalardan kopyala/yapıştır uğraşmaktan kurtulacağım.
Boş bir dosya açıp sık kullandığım Basic başlangıcı ve ekran temizleme rutinlerini buraya kopyalıyorum ve macro olarak tanımlıyorum. Daha sonra ana dosyamda bu makroları çağıracağım ve derleyici gerekli kodları benim yerime yazacak. Kod: ; standart.asm Konu Başlığı: Ynt: Color Wash / Renk Geçişi Efekti Gönderen: wizofwor üzerinde Kasım 25, 2014, 18:25:46 ÖS İkinci bir dosya ana programı yazmaya başlıyorum.
Kod: !to "build/colorwash.prg",cbm İlk önce standart.asm dosyasını çağırmam lazım ki kaydettiğim makrolarımı kullanabileyim. Bunu '!src' komutuyla yapıyoruz. Peşinden sık kullandığım bellek adreslerini tanımlıyorum. Bu kodda ekran ve renk belleğini kullanacağım. Bir de sayaç olarak kullandığım zero page adresi var. Basic hafızasına SYS 49152 yazacak kodu makro olarak kaydetmiştim. Bu makroyu'da +BASIC_START komutuyla çağırdıktan sonra ana programa başlamaya hazırım. Konu Başlığı: Ynt: Color Wash / Renk Geçişi Efekti Gönderen: wizofwor üzerinde Kasım 25, 2014, 18:32:50 ÖS Kod: * = $c000 Kod: ;----------------------------------------- Derleyiciye başlangıç adresini verdikten sonra ikinci makromu kullanarak ekranı temizliyorum. Ve metnimi yazıyorum. Burdaki döngü rutini 3x40=120 karakterlik metni tablodan okuyup ekran belleğine yazıyor. Ekran belleği adresini SCREEN_RAM+40*5 şeklinde yazıyorum ki daha sonra okuduğumda kodun 5. satıra yazdığını bir bakışta anlayayım. Hesap makinesiyle uğraşmayayım. Konu Başlığı: Ynt: Color Wash / Renk Geçişi Efekti Gönderen: wizofwor üzerinde Kasım 25, 2014, 18:48:04 ÖS Şimdi geldik programın can alıcı kısmına.
Kod: ;Efect sayacını maksimum değere getirelim Kod: renkler Renk geçişi efekti için 40 değerlik bir veri tablosu hazırladım ve Joker_'den öğrendiğim taktikle bu tabloyu iki kez kopyaladım. Toplam 80 değerlik bir tablom oldu. Bir kereye mahsus olmak üzere efekt sayacımı 40 değerini yükleyip raster satırının ekranın başına gelmesini bekliyorum. (Eğer beklemeseydim efekt çok hızlı akacaktı.) PAL tarama hızı 50Hz olduğuna göre 0,02sn beklemiş olacağım. Renk geçişi efekti için kullandığım rutin X ve Y indexlerini aynı anda kullanıyor. Y'de efekt sayacım var. X ise 0'dan 39'a kadar sayacak. STA komutlarının indexi X yani her seferinde 0-39'a kadar bütün karakterlerin rengini değiştiriyorum. Rengi okuduğum LDA komutunun indexi ise Y. Y sıfırdan değil, INDEX_COUNTER'dan saymaya başlıyor. Bu seyade INDEX_COUNTER değerini bir azalttıkça tablodan okuduğum değeri de birer byte kaydırmış oluyorum. X indexinin 40'lık döngüsü bittiğinde üç satırda boyanmış oluyor. Sürekli olarak INDEX_COUNTER'ı arttırıp cwash etiketine atladığımda, her seferinde farklı renkler yüklenerek renk geçişi etkisi yaratılmış oluyor. Konu Başlığı: Ynt: Color Wash / Renk Geçişi Efekti Gönderen: wizofwor üzerinde Kasım 25, 2014, 18:51:21 ÖS Programın tam dökümü aşağıda.
Kod: !to "build/colorwash.prg",cbm Konu Başlığı: Ynt: Color Wash / Renk Geçişi Efekti Gönderen: Simon (Özay Turay) üzerinde Kasım 25, 2014, 19:24:15 ÖS Çok güzel ve sade bir dille anlatmışsın. Beni gaza getiriyorsun haberin ola. :)
Konu Başlığı: Ynt: Color Wash / Renk Geçişi Efekti Gönderen: witchdoktor üzerinde Kasım 25, 2014, 20:22:50 ÖS Eline sağlık wizofwor. İşin temelinden başlayıp ufak adımlarla ilerleyen bir 'tutorial' haline dönüştürüyorsun.
Konu Başlığı: Ynt: Color Wash / Renk Geçişi Efekti Gönderen: joker_ üzerinde Kasım 25, 2014, 20:37:26 ÖS Kardeşim çok güzel olmuş. Eline sağlık, partide intro bekliyorum senden. :)
|