Bu sayfadaki yazılar
Sayfanın metni
Sayfa 27
Selam! Bu ay dergiyi incelediyseniz bir eksikliği fark etmiş olabilirsiniz. Bu ay, bu yazının uzunluğundan dolayı Amiga ve Assembler yazısını kaldırmak zorundaydım. Bu yüzden hepinizden özür dilerim. Gelecek aya da Amiga ve Assembler yazısını uzun tutarak, Gelişmiş Assembler'ı bir aylığına yazmayacağım.
Bu ay verdiğim programı yavaş yavaş devam ettirerek ufak çapta bir oyunu nasıl hazırlayabileceğimizi yakından göreceğiz. Fakat araya da bazı örnekler sokacağım. Bu yüzden, oyun programlamasını merak eden arkadaşlar bir an önce verdiğim programı yazıp kaydetsinler. Bu örnek 16 renkli sprite'ların nasıl oluşturulacağını anlamanız açısından bir hayli faydalı. Program ekrana iki adet 16 renkli sprite getiriyor ve bunlarla bir animasyon yapıyor.
Programı çalıştırdığınızda dikkatinizi çeken bir şey oldu mu? Ekranda bir adet 16 renkli 32 piksel genişliğinde sprite var! Bu sizi aldatmasın, aslında 32 piksellik sprite diye bir şey yok. Ama iki sprite'ı yan yana bitiştirir ve programınız sayesinde de bunların devamlı yan yana kalmasını sağlarsanız, aynı sonucu elde edebilirsiniz. Benim vermiş olduğum programda 0 ve 1 numaralı sprite'lar ilk 16 renklik sprite'ı oluşturmak için kullanılmış durumda. 2 ve 3 numaralı sprite'lar ise sağ yarıyı oluşturan 16 renkli sprite'lar. Programımda 15 değişik sprite görüntüsü kullandım. Bunlar belli zaman aralıklarıyla peş peşe gösterince bir animasyon elde edilmekte. Grafikler için bu arada Tunç DİNDAŞ'a da teşekkürler. Aslında bu grafikleri bir demoda bob olarak kullanmayı planlıyordum; fakat düşündüğüm demonun aynısını başkaları yapmış. Her neyse, programımıza dönelim. Sprite animasyonunu yapmak için ben var olan iki yöntemden ikincisini seçtim. Bu bana daha düzenli gibi gelmekte. Aslında ikisi arasında pek fark yok:
1. Her seferinde copper listesinde sprite'ların adreslerini gösteren değerleri değiştirebiliriz.
2. Copper listesine sprite adresi olarak boş bir buffer adresini yazabiliriz. Daha sonra da programımızda bu boş buffer'a hafızada data olarak bulunan sprite görüntülerini kopyalarız. Bu kopyalama işlemi için de dilersek blitter'ı, dilersek de 68000'i kullanabiliriz. Ben, çoğunuzun daha blitter'ı kullanmasını bilmediğini varsayarak 68000 yardımıyla kopyalamayı kullandım. Bu arada belirteyim, 1. yöntem ikinciden çok çok daha hızlıdır. Dört sprite adresini copper listesine move.w komutları yardımıyla yazmak pek zaman almaz. Çok hızlı sprite animasyonları istendiğinde bu ilk yöntem daha faydalı olacaktır.
Sprite datalarını IFFMaster programını kullanarak data satırları haline çevirdim. Bu şekilde istediğiniz sprite animasyonunu bu programa koyabilirsiniz. Tek gereken şey, sprite'ların Deluxe Paint yardımıyla çizilmesi. Unutmayın, sprite'lar 16'şar pixel olarak kaydedilmekte.
Şimdi dilerseniz, 16 renkli sprite'lar hakkında biraz teorik bilgi vereyim. Bu tür sprite'lar ikili sprite gruplarının üst üste birleştirilmesinden oluşmakta. Bu durumda sprite sayısı yarıya düşer. Fakat dilediğiniz ikili sprite grubunu 16 renkli ya da normal olarak tanımlayabileceğinizden sadece kullandığınız 16 renkli sprite adedinin iki katı kadar sprite'ı harcamış olacaksınız. Diğer sprite'ları da dilediğiniz gibi kullanmakta özgürsünüz. 16 renkli sprite'larda birinin üstte, birinin de onun altında olması gerekmekte. Sprite öncelik sıralamasına göre düşük numaralı sprite her zaman üstte gözüktüğünden, bu durumda çift numaralı (even) sprite her zaman ikili gruptaki kardeşinin üstünde gözükür.
Gelelim işin en kafa yorucu yönüne; sprite üzerindeki piksel kodlarının belirlenmesine. 16 renkli sprite'ları aslında 4 bitplane'li 16 piksel genişliğinde resim ekranları olarak görebiliriz. Normal bitplane'lerde olduğu gibi, sprite bitplane'lerinde bir biti 1 konumuna geçirirseniz, bir renk seçmiş olursunuz. Buna göre dilediğiniz bitleri açıp kapayarak her piksele ait renk numarasını belirleyebilirsiniz. Çift numaralı sprite her zaman tek numaralının üzerinde gözükeceğinden, bu sprite'daki bitler renk kodunun sol yarısını belirler. Tek numaralı sprite bitleri ise sağ yarıyı belirler. Bu şekilde 16 rengin hepsini de kullanmak mümkün.
Son olarak da iki sprite'ı birleştirmek için Sprite Attachment flag'ını set ediyoruz. Sprite ikilimizden tek numaralı olanı sayesinde, bu flag'ı açıp kapayabiliriz. İkinci sprite kontrol word'ünün alt byte'ında 7. biti set ederek ($80 ile OR'layın!) iki sprite'ı birbirine kolaylıkla bağlayabiliriz.
16 renkli sprite teorisi bu kadardı. Nasıl, o kadar da zor değil, değil mi? Eh, 16 renkli sprite'ı da öğrendiğimize göre gelecek yazımızda (iki ay sonra!) biraz da joystick'le sprite kontrolüne geçebiliriz. Unutmayın; bundan sonra göstereceğim örnekleri bu ay vermiş olduğum programa ekleyerek göreceğimizden, bu örneği mutlaka yazın. İki ay sonra bu köşede tekrar görüşmek üzere hoşça kalın...
CEM GENCER ; > GELİŞMİŞ ASSEMBLER < ; > SPRITE DEMONSTRASYON < ; > PROGRAMI 05 < ; > byCemGENCER-1992 <
Q: movem.l d0-d7/a0-a6,-(a7) bsr.b Init
Loop: cmp.b #$ff,$dfP006 bne.b Loop
bsr.w CopySprites
Mouse: btst #6,$bfe001 bne.s Loop bra. w Fin
Fin: move.l GfxBase,a0 add.l #50,a0 move.l OldCopper,(a0) move.l 4,a6 jsr -138(a6) movem.l (a7)+,d0-d7/a0-a6 rts
Init: move.l 4,a6 jsr -132(a6) lea GfxName,a1 jsr -408(a6) move.l d0,GfxBase move.l d0,a0 move.l 50(a0),OldCopper move.l #NewCopper,50(a0) bsr.b CreateSprites rts
CreateSprites: lea NewCopper,a0 move.l #Sprite0,d0 move.l #Sprite0,d1 swap d1 and.l #$ffff,d0 and.l #$ffff,d1 move, w d1,6(a0)
ASSEMBLER'da YENİ UFUKLAR
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 26
İşte sizlerden gelen 1210 adet okur profilinin sonuçları... Hepsini tek tek inceledik, değerlendirdik... Sonuçları aldığımızda, bütün yorgunluğumuzu unuttuk. İlginize teşekkür ederiz...
1. Cinsiyet: Kadın %29 Erkek %71 2. Eğitim durumu: İlkokul %2 Ortaokul %29.3 Lise %44.3 Üniversite %24.4 3. Yabancı dil bilgisi: İngilizce %63 Almanca %24 Fransızca %6 Yok %3 Diğer %4 4. Ele geçen aylık toplam gelir: 1.000.000 TL.'dan az %23 1.000.000-3.000.000 arası %35 3.000.000-5.000.000 arası %23 5.000.000 TL.'dan fazla %19 5. Amiga'dan başka kullandığınız bilgisayar var mı?
Evet %12 Hayır %88 6. Amiga ile hangi çevre birimlerini kullanıyorsunuz?
Monitör %23 3.5 inç ilave %8 Harddisk %7 5.25 inç ilave %8 512 Ram %22 Grafik Tablet %5 Modem %5 Video Digitizer %5 Sound Digitizer %17 7. Printer kullanıyor musunuz? Evet %14 Hayır %86 8. 6/7. sorulardaki birimlerden almayı düşündükleriniz varsa yazınız.
Printer %14 Monitör %17 Harddisk %13 3.5 inç ilave %11 512 Ram %9 5.25 inç ilave %11 Modem %11 Sound Digitizer %9 Grafik Tablet %5 9. Hangi marka disket kullanıyorsunuz? Maxell-%55 3 M-%23 Sony-%22 10. Amiga'yı ne amaçla kullanıyorsunuz? Programlama %27 Oyun %30 Grafik Animasyon %20 Eğitim %23 11. Aşağıdaki cihazlardan sahip olduklarınızı; ayrıca satın almayı planladıklarınızı işaretleyin:
Sahibim Düşünüyorum Televizyon %99.5 %0.5 Video %75 %25 Video Kamera %36 %64 Müzik Seti %68 %32 Compact Disk %42 %58 Fotoğraf Makinası %76 %24 Klavyeli Çalgılar %60 %40 12. Aşağıdaki taşıtlardan sahip olduklarınızı, ayrıca satın almayı planladıklarınızı işaretleyin:
Sahibim Düşünüyorum Motorsiklet %44 %56 Bisiklet %51 %49 Otomobil %44 %56 Diğer %16 %84 13. Sigara kullanıyor musunuz? Evet %15 Hayır %85 14. Ne tür ithal ürün kullanıyorsunuz? Gıda %8 Kırtasiye %17 Beyaz Eşya %25 Elekt. Mut. Al. %17 Giyim %33
Kozmetik: Parfüm %27 Deodorant %18 Şampuan %25 Cilt Bakımı %5 After Shave %21 Vücut Bakımı %4 15. Hangi amaçla seyahate çıkarsınız? Tatil %76 İş Gezisi %14 Diğer %10
16. Seyahatlerinizi nasıl gerçekleştirirsiniz?
Tur organizasyonu %37 Özel %51 Diğer %12 17. Ne tür araçla seyahat etmeyi tercih ediyorsunuz?
Uçak %32 Gemi %13 Tren %16 Otobüs %27 Diğer (Otomobil, helikopter) %12 18. Pasaportunuz var mı? Evet %54 Hayır %46 19. Tasarruflarınızı ne şekilde değerlendirirsiniz?
Gayrimenkule yatırırım %8 Borsada oynarım %4 Altın alırım %12 Döviz alırım %33 Bankaya yatırırım %41 Diğer %2 20. Kredi kartınız var mı? Evet %36 Hayır %64 21. Çek kullanıyor musunuz? Evet %32 Hayır %68 22. Herhangi bir sigortanız var mı? Evet %62 Hayır %38 23. Hayır ise bir yıl içinde yaptırmayı düşünüyor musunuz?
Evet %51 Hayır %49 24. Herhangi bir sosyal kulüp veya derneğe üye misiniz?
Evet %26 Hayır %74 25. Spor yapıyor musunuz? Evet: %98 Hayır %2 Futbol %55 Basketbol %23 Yüzme %20 26. Spor malzemelerinde hangi markayı tercih ediyorsunuz?
Adidas %59 Nike %26 Reebok %15 27. Günlük yaşamınızdaki giyiminizde hangi markayı tercih ediyorsunuz?
Lee %32 Lee Cooper %25 Levis %24 Adidas %19 28. TV seyrediyorsanız genellikle hangi kanalı izlersiniz?
Star %36 TV1 %21 Show %25 Teleon %18 29. TV seyrediyorsanız en çok ne tür programları izlersiniz?
Yabancı filmler %29 Yabancı diziler %25 Yabancı pop müzik %23 Spor/Naklen maç %23 30. Sinemayı seviyor musunuz? Evet %93 Hayır %7 31. Filmi nerede izlemeyi tercih edersiniz?
Sinema %53 Video %47 32. Ne tür filmlerden hoşlanıyorsunuz? Macera %39 Kurgu Bilim %36 Komedi %25 33. Düzenli gazete okur musunuz? Evet: Hürriyet %56 Hayır %4
Sabah %34 Milliyet %6
34. Düzenli dergi okur musunuz? Evet %87 Hayır %13 35. Amiga Dünyası'nı okuma düzeniniz?
Sürekli alırım %73 Elime geçtikçe okurum %15 Diğer %12 36. Dergimizi ne zamandan beri alıyorsunuz?
Çıktığından bu yana %72 3 aydan beri %13 6 aydan beri %8 1 yıldan beri %7 37. Dergimizi okuduktan sonra ne yaparsınız?
Biriktiririm %80 Başkasına veririm %14 Diğer %6 38. Dergimizi çevrenizde veya evinizde sizden başka kaç kişi okuyor?
1 kişi okuyor %32 3 kişiden fazla %25 Kimse okumuyor %21 2 kişi okuyor %17 3 kişi okuyor %5 39. Dergimizin bir sayısını okumaya ne kadar zaman ayırıyorsunuz?
3 saatten fazla %8 1 gün %6 1 hafta %25 1 ay boyunca aralıklı %61 40. Dergimizi okumanızın sonucu olarak aşağıdakilerden hangisini gerçekleştirdiniz?
Yazılardan fikir alıp uyguladım %72 Bir ürün aldım %22 Diğer %6 41. Dergimizi kalite yönünden nasıl buluyorsunuz?
Yazılar İyi %81 Kötü %19 Fotoğraflar İyi %82 Kötü %18 Kağıt Kalite İyi %85 Kötü %15 Baskı İyi %82 Kötü %18 İtina İyi %85 Kötü %15 42. Dergimizde en beğendiğiniz bölümler?
Amiga Salatası %38 Grafik %24 Oyun Tanıtım %15 Reklamlar %13 Diller Derleyiciler %10 43. Dergimizde beğenmediğiniz bölümler?
Virüs %29 Kommodor abi %21 Röportaj %18 Resimli Roman %16 Donanım %16 44. Dergimiz hakkında genel düşünceleriniz nelerdir?
Çok İyi %79 İyi %18 Fena değil %3 45. Amiga'nız Teleteknik çıkışlı mı? Evet %40 Hayır %60 46. Dergimizde yazılarımızın yayınlanmasını ister misiniz?
Evet %81 Hayır %19