|
Konu Başlığı: Logo Swing / Sallanan Logo Efekti Gönderen: wizofwor üzerinde Kasım 28, 2014, 21:59:49 ÖS Demo/intro efektlerin devam. Bu seferki hedefim yine introların olmazsa olmazı salanan logo (logo swing) efekti. Tabi bunun için önce bir logo lazım. Elimde hazır bir şey olmadığından CSDB'de kısa bir araştırmadan sonra bulduğum Marq's PETSCII Editor (http://csdb.dk/release/?id=122086)'ü kullanarak uyduruktan bir şeyler karaladım. Program çizimleri c kaynak kodu olarak kaydediyor ama içindeki data aynı data. PETSCII'yi tercih etmemin nedeni şu aşamada bir de karakter seti değiştirmekle uğraşmamak. İşi basit tutmak için renklerle de uğraşmayacağım.
Kod: ogo !by 32,32,85,64,73,85,64,64,73,85,64,73,85,64,64,64,64,64,73,85,64,73,85,64,64,73,85,64,73,32,32,32,32,32,32,32,32,32,32,32 Daha önce ekrana yazı yazmak için kullandığım kodun aynısını bu kez logo için kullanacağım. Kod: !to "build/logoswing.prg",cbm Dikkat ettiyseniz iki tane STA komutu kullandım. 6510 endeks yazmaçları 8 bitlik olduğu için döngü içersinde en fazla 255 değer yakalanabiliyor. Bu da 40 sütün ekranda, 7 satırlık bir logoyu tek seferde güncellemek için yeterli değil. Bu yüzden logoyu 4 satırlık iki parçaya ayırdım ve iki defada ekrana yazdım. Biri 4 satırlık iki parça 8 satıyor mı dedi? Evet kodun bellekten rastgele değerler bulup logonun son satırına kopyalamaması için en alta bir !scr satırı ilave ettim. Kodu derleyip çalıştırdığımda logom ekrana geliyor. Konu Başlığı: Ynt: Logo Swing / Sallanan Logo Efekti Gönderen: wizofwor üzerinde Kasım 28, 2014, 22:19:14 ÖS Şimdi sıra geldi logoyu kaydırmaya. Efekt için bazı sayaçlar kullanmam gerekiyor. Önce bunları ayarladım.
Kod: ;---------------------------------------- Logoyu kaydırmak için IRQ kullanmak gerekiyor. Nasıl yapıldığını burada anlatmıyorum. Nightlard'un dökümanlarında çok detaylı açıklaması var. Aşağıdaki kodlarla 154'üncü satırdan itibaren başlayan bir IRQ kurdum. Kod: ;Set raster irq Sonra IRQ rutinimi yazdım. Kod: ;----------------------------------------------------- IRQ rutinini biraz inceleyelim. İlk olarak efekt sayacını artırdım. Sonra efekt sayacını kullanarak sinüs tablomdan bir değer çekitim. (Sinüs tablomda 0-64 arasında 255 adet değer var.) Şimdi önce okuduğum değeri 8'e bölüp sonucu CHAR_OFFSET adresine kaydettim. Sonra aynı değeri tekrar okuyup bu sefer 8'e bölümden kalanı alıp PIXEL_OFFSET adresine kaydettim. Sanıyorum bir şeyler tahmin etmeye başladınız. Bu hesaplamadan sonrasını işleri daha da karıştırmamak bir subrutin kullanarak yapmaya karar verdim. updateLogo subrutinine atlıyorum. updateLogo iki parçadan oluşuyor. İlk parça hardware scroll yapan kısım. Burda PIXEL_OFFSET değerini VIC'in scroll yazmacına yazıyorum. İkinci parça ise software scroll. Burada karakterleri CHAR_OFFSET değerine göre yeniden ekrana basıyorum. X ve Y yazmaçlarının beraber kullanımına dikkat. Kayan yazı efektindeki tekniğin aynısı. Son olarak denemek isteyenler için kodu bütün olarak yapıştırıyorum. Kod: !to "build/logoswing.prg",cbm Konu Başlığı: Ynt: Logo Swing / Sallanan Logo Efekti Gönderen: wizofwor üzerinde Kasım 28, 2014, 22:34:01 ÖS Tabi bu beni kesmedi. Logonun dikeyde de sallanması lazım. Bunun için ufak bir sinüs tablosu daha hazırladım. 5 bitlik bu tabloda 32 adet 0-7 arasında değişen değerler var. Bu sefer değerler 8'i geçmiyor çünkü sadece hardware scroll yapacağım. Satır kaydırmakla uğraşmak istemiyorum.
Kod: swing_data2 !by 4,4,5,6,6,7,7,7,7,7,7,6,6,5,4,4,3,2,1,1,0,0,0,0,0,0,1,1,2,3,4,4 Kullanacağım adreslerin isimleri yeniden düzenledim ve bir iki ilave yaptım. Kod: SCREEN_RAM = $0400 EFFECT_COUNTER2'yi arttırmak için alttaki kodu ekliyorum. Yeni eklediğim tablonun 5 bitlik olduğunu hatırladınız mı? Sayacı arttırdıktan sonra and #$1f ile eğer değer 32 olmuşsa sayacı sıfırlıyorum. Kod: inc EFFECT_COUNTER2 ;increase effect counter 2 ;till 31 Sonra da sayacı kullanarak PIXEL_OFFSET_V'yi güncelliyorum. Kod: ldx EFFECT_COUNTER2 Son olarak updateLogo subrutini içinde VIC'in dikey scroll yazmacını güncellemem gerekiyor. Kod: ;Pixel Scroll Vertical Programın tam listesi burada. Kod: !to "build/logoswing2.prg",cbm Kodu derlemek istediğinizde standart.asm'yi isteyecek. Standart.asm Kayan yazı örneğindekiyle aynı. Konu Başlığı: Ynt: Logo Swing / Sallanan Logo Efekti Gönderen: Simon (Özay Turay) üzerinde Kasım 28, 2014, 22:45:48 ÖS Ooooo yeni teknikler gelmiş. Mantığı bir kere çözen sanırım bunları grafik logolara da uyarlayabilir. Devamını bekliyoruz, gayet güzel ve sade bir anlatım. :)
Konu Başlığı: Ynt: Logo Swing / Sallanan Logo Efekti Gönderen: wizofwor üzerinde Kasım 28, 2014, 23:07:13 ÖS Aynı teknik zaten. İşi kısa yoldan halletmek için standart karakter setini kullandım. Yoksa grafik logolar da önce bitmap olarak hazırlanıp, karakter setine çevirerek yapılıyor.
Konu Başlığı: Ynt: Logo Swing / Sallanan Logo Efekti Gönderen: i_r_on üzerinde Kasım 29, 2014, 01:45:54 ÖÖ Özendim valla. Logonun gözüktüğü her scanline'da kaydırma register'ini sinüs tablosuna göre değiştirdiğim bir intro yapmıştım çok eskiden. Onda badline'ları da hesaba katarak bir şeyler yapmak güzel olurdu. Belki hafta sonu kurar biraz kurcalarım. Şansıma teşkilatı depoya kaldırmamışım :)
Konu Başlığı: Ynt: Logo Swing / Sallanan Logo Efekti Gönderen: wizofwor üzerinde Kasım 29, 2014, 09:37:28 ÖÖ İnan bana depoya inip teşkilatı kurmaya falan gerek yok. Çapraz geliştirmenin tadını bir kez aldın mı tek özleyeceğin şey SID olacak. Önerim Relaunch64 (http://www.popelganda.de/relaunch64.html)'e bir bakman.
Konu Başlığı: Ynt: Logo Swing / Sallanan Logo Efekti Gönderen: Simon (Özay Turay) üzerinde Kasım 29, 2014, 11:45:29 ÖÖ Editörün son versiyonunda asm, prg, png gibi formatlarda kaydetme seçeneği varmış. ;)
http://www.kameli.net/marq/?page_id=2717 (http://www.kameli.net/marq/?page_id=2717) Konu Başlığı: Ynt: Logo Swing / Sallanan Logo Efekti Gönderen: i_r_on üzerinde Kasım 29, 2014, 15:18:27 ÖS pc'yi geliştirme yapmak için daha önce kullandım aslında. ancak pc üzerinde kaynak kodlarım mevcut değil. sıfırdan da yapmak istemedim.
pc tarafında 6502 macro assembler & simulator programını kullanıyorum. 8-bit bilgisayardan bağımsız bir program, debug özelliği varo hoşuma gidiyorum. bir de nostalji tarafı var tabii ki işin, seneler önce yazdığın programı disk gıcırtıları ile yüklemek, çalıştırmak, kartuşla freeze edip assembly monitör'e düşmek falan. matah bir şey değil ama yaşattığı hisler güzel. verimlilik anlamında pek tabii ki pc tarafındaki programlar daha iyi. bu arada intro'yu daha iyi hatırladım, efekti belki kullanmak isteyebilirsin. full bir ekran taramasında sinüs tablosunu 0 dereceden, diğer taramada 90 dereceden başlatıyordu. böylece ekranda sanki iki logo varmış ve birbirinden bağımsız hareket ediyormuş gibi gözüküyordu. Tabii titreşimli bir görüntü oluyordu her bir logonun hareketi toplam kare sayısının yarısına düştüğü için. Konu Başlığı: Ynt: Logo Swing / Sallanan Logo Efekti Gönderen: joker_ üzerinde Kasım 29, 2014, 16:17:47 ÖS Kardeşim süpersin, demo efektlerine geçişin yakındır :)
Konu Başlığı: Ynt: Logo Swing / Sallanan Logo Efekti Gönderen: emarti üzerinde Kasım 29, 2014, 19:11:08 ÖS Abi süper bi yazı. Şu ara Amiga'da c ile boğuşuyorum; yazıyı okuyunca 6502 assemblerı boşladığımı farkettim.
Konu Başlığı: Ynt: Logo Swing / Sallanan Logo Efekti Gönderen: wizofwor üzerinde Aralık 05, 2014, 12:47:08 ÖS Örnekte kullandığım sinüs tablosunu Excel'de hesaplamıştım. Excel anlık çözüm için ideal ama sürekli kullanmak için hantal kalıyor. Baktım olacak gibi değil. learnpythonthehardway.org (http://learnpythonthehardway.org) ve stackoverflow.com (http://stackoverflow.com) desteğiyle ufak bir python betiği hazırladım. Betik, dosyanın başında tanımlanan parametrelerde bir sinüs tablosu hazırlıyor ve ACME formatında kaydediyor. Kodu github sayfamdan (https://github.com/wizofwor/C64-assembly-examples/blob/master/beginner-routines/sinus.py) alabilirsiniz.
Konu Başlığı: Ynt: Logo Swing / Sallanan Logo Efekti Gönderen: Simon (Özay Turay) üzerinde Aralık 05, 2014, 13:42:02 ÖS Raster Colorbar Efekti konusunda Sinüs Editör önermiştim, onu da kullanabilirsin.
http://www.thegang.nu/releases.php?type=4&year=all&headline=Utils&nomenu=1 (http://www.thegang.nu/releases.php?type=4&year=all&headline=Utils&nomenu=1) Konu Başlığı: Ynt: Logo Swing / Sallanan Logo Efekti Gönderen: wizofwor üzerinde Aralık 05, 2014, 14:09:18 ÖS Sinüs Editör'ü indirdim aslında. Ama bu tip durumlarda kendi kodunu yazmanın sayısız faydası var. İlerde başka sinüs yerine Lissajous eğrisi gibi farklı fonksiyonlarda kullanmayı düşünüyorum veya birden fazla sinüs dalgasını üst üste bindirenilirm. Bir de python'un Linux ve Mac'te standart olarak bulunduğunu öğrendikten sonra bir yerlerden başlamak için mazerete ihtiyacım vardı.
Konu Başlığı: Ynt: Logo Swing / Sallanan Logo Efekti Gönderen: Simon (Özay Turay) üzerinde Aralık 05, 2014, 14:22:00 ÖS Evet güzel bir mazeret olmuş.
Python güzel ve öğrenmesi kolay bir dil. Compile edilebiliyor ve çalıştırılabilir olarak kaydedilebiliyor olması da ayrı güzel. http://effbot.org/zone/python-compile.htm (http://effbot.org/zone/python-compile.htm) Ayrıca Pygame ile oyun ve demo tarzı programlar bile yazılabiliyor. Sonraki adımın da sanırım bu olur bu tarz işlere meraklı birisi olarak. :) http://www.pygame.org/wiki/about (http://www.pygame.org/wiki/about) (https://xivilization.net/~marek/tex/pygame/pygame_logo.png) Konu Başlığı: Ynt: Logo Swing / Sallanan Logo Efekti Gönderen: wizofwor üzerinde Aralık 05, 2014, 14:45:32 ÖS Python güzel de içinde çok fazla open source saçmalığı var. Gördüğüm kadarıyla PHP'nin yolunda emin adımlarla ilerliyor. PHP'de canı sıkılan fonksiyon eklediği için aynı işi yapan çuval dolusu fonksiyon olurdu. Geriye uyumluluk eski fonksiyonlar kaldırılmadığından karma karışık bir ortam vardı. Python'da da bol bol geriye uyumluluğu bozmadan eksikleri yamamak için yapılmış saçmalıklar var. İlk günden karşılaştıklarım:
Offical dökümanlar hep Python 3 üzerine. Ama sahada Python 2 kullanılıyor. Bu ikisi birbiriyle çelişiyor. Hatta bazı yerlerde tam zıt gidiyor. Mac ve Linux'te standart olarak Phyton 2 kullanılıyor. Hatta Mac'teki Python'u kafana göre güncellersen sistemi bozabiliyorsun. Türkçe karakter yazmak için kodun başına ikinci bir shebang satırı eklemek gerekiyor. Bu şekilde yorumlayıcı Türkçe anlıyor ama konuşamıyor(!) Örneğin Türkçe karakterlerle çıktı almak için print yerine print u kullanmak gerekiyor. Güya değişken tipleri otomatik olarak belirleniyor ama bölme yaparken derleyicinin sonuca integer muamelesi yapmaması için sonucun float olduğunu 1/2.0 şeklinde yazarak gözüne sokmak gerekiyor. Yine güya otomatik olan tanımlanan dizi değişkenini dizi[1] = 5 şeklinde kullanamıyorsun. Önceden dizi = [None]*10 diye boş değişkenler tanımlaman lazım. |