Welcome to wonderful world of AMOS !Bu ayki AMOS köşemize bir müjde ilebaşlayacağız. Geçen ayki dergimizin haberlerkısmında kısmen tanıtımının yapıldığıAMOS Professional nihayet ülkemizegeldi. Daha önceki versiyonlardan görünümolarak oldukça farklı olmasına rağmen,onlarla tamamen uyumlu bir versiyon.Ekranın üst kısmında bulunan vemouse veya karmaşık tuş kombinasyonlarıylaulaşılan menüler, yerini Pull Downmenülere bırakmış. Editör ekranındakirenk sayısı da 8'e çıkartılmış (ancak editörbiraz yavaşlamış). Birçok konuda yenikomutlar eklenmiş (Anim formatında animasyongösterebilme, printer'dan ekrandökümü alabilme, Sound/Noise-Trackermodüllerini doğrudan kullanabilme,Arexx desteği vb). Direkt mod çıktılarım,direkt mod penceresinden alabiliyorsunuz.Bu ve bunun gibi birçok konuda yeniliklergetirmiş. Şu anki en büyük eksikliği,'Compiler' ve '3D' extensiyonlarıylauyumsuz olması. Bunun da en kısa zamandagiderileceği belirtilmiş. Altı diskettikbu yeni AMOS versiyonunun genişaçıklamasını, önümüzdeki aylarda köşemizdebulabilirsiniz.Bu ay yine bazı AMOS programlarımızvar. Ama önce okur mektupları.Köşemizin okurlarından Çağatay ÜN-DEĞER. SoundTracker programında kullanılanefektleri (sample) AMOS'ta kullanamadığınıbelirtmiş.Sevgili Çağatay, bu efektleri kullanabilmeniçin önünde iki seçenek var: Bunlardanilki ve daha basit olanı, SAMPLE_BANK_MAKE.AMOS programı ile, buefektleri AMOS'un kullandığı formata dönüştürmek.Bu formattaki efekt (sample)'leri. Loadkomutu ile yükleyip Sam Play komutu ilekolayca kullanabilirsin. Diğer yöntem isebiraz daha karışık. Önce chip memory'de,efekt uzunluğunda bir bank açıp. Bloadkomutu ile bu bank efekti (sample) yükle.Bundan sonra. Sam Raw komutu ile bankınbaşladığı adresi ve efektin (bankın)uzunluğunu vererek efektini çağırabilirsin.Bankın hafızada başladığı adresiStartO, uzunluğunu da Length() fonksiyonuile öğrenebilirsin. Gördüğün gibi, ilkmetod ikinciye göre çok daha basit.AMIGA DÜNYASI 28Çağatay'ın bir diğer sorunu ise. ekrandakiBob sayısı arttıkça hareketlerde kesiklikolması yani akıcılığın kaybolması.Bu sorunu ekonomik olarak halledebilirsin.Yani ekrandaki renk sayısını mümkünolduğunca az tutmaya çalış. Ticari oyunlarınçoğundaki (Beast. Agony vb) objelerdemaximum 8 renk kullanılmıştır. Ayrıca,arkaplanda herhangi bir resim yoksa, boblarınzemini silerek hareket etmelerinisağla. Bu işlemi Set Bob komutu ile yapabilirsin.Bu komutun ikinci parametresiniI yaparsan, ilgili bob, zemini silerek hareketeder. Ancak bu işlemi, bobu ekrana çıkarmadanyapmalısın. Eğer, bir arkaplanresmi varsa da kısmen bu yöntemden yararlanabilirsin.Dual Playfield modunuaçarak arkaplan resmini, arkadaki ekranda,bobları da üstteki ekranda çıkarırsan,boblar üstteki ekranı sildikleri halde, arkadaekranda bulunan resim bundan etkilenmez.Bu yöntemin dezavantajı ise, her ikiekranda en fazla 8'er renk sınırlaması bulunması(Low-res'de). Bir diğer çözümise, sprite'ların maksimum ölçüde kullanılması.Birçok ticari oyunda sprile'larmümkün olduğunca çok kullanılmıştır(Örneğin Battle Squadron'da scoreboard,nova misil göstergeçleri, tüm mermiler veuzay gemileri tamamen sprite'tır.). BitmapBrothers gibi bazı programcılar isesprite kullanmamakta hala diretmektedirler.Çağatay ayrıca, yaptığı hesap makinesiprogramında, ondalık sayı kullanımındasorunlarla karşılaşmış. AMOS'ta ondalıksayıların problem sebebi olduğu bir gerçek.Gerçekten de bazen 0.01 gibi bir sayıyı0.0099 olarak gösterebiliyor. Ancakbu problemin AMOS Professional'da giderildiğiniümit ediyorum. Ayrıca, normalAMOS'da 7 haneden daha fazla ondalıkbasamak kullanılamaması problemi,AMOS Professional'da çözülmüş. AMOSPro'da bulunan Set Double Precision komutuyardımıyla 15'e kadar ondalık basamakkullanabilirsin.Bir diğer sorusu da fast memory'yi bob.sprite ve müzik datalarında kullanıp kulanamayacağı.Ne yazık ki, bu dataları doğrudanfast memory'de kullanamazsın. Ancak,bir Ram Disk açıp dataları önce burayakopyalayıp, gerektiğinde de buradançok hızlı bir şekilde yükleyebilirsin.Hayrettin YILDIZ & Murat YILDIZGÖRERMektubunun sonunda da, AMOS ileyaptığı bir programı pazarlama imkanınınbulunup bulunmadığını sormuş. Eğer programıngüzelse çeşitli firmalarla irtibat kurupprogramını onlara göster. Program beğenilirse,pazarlama şansı düşük de olsa var.Bir diğer mektup da. Güçlü TUGAY "dan.Güçlü, mektubuyla birlikte bir de programgöndermiş. Adres ve program arşivi yapmayayarayan bu program, dizayn olarakoldukça güzel olmuş. Diğer okuyucularımızdanda böyle programlar bekliyoruz.Güçlü, programı hakkında görüşlerimizibelirtmemizi istemiş. Bunları şöyle sıralayabiliriz:* Programının bazı yerlerinde kullandığınPaint komutlarını Cls ile değiştirirsen.daha hızlı çalıştığını görürsün.* Goto komutlarından mümkün olduğuncasakınmaya, hatta hiç kullanmamaya çalış.* Disk ulaşımı gerektiren programlarda,en fazla 8 renkli Hires ekran kullan. DMAproblemlerinden dolayı disk hızı birazdüşmekte.* Disketten yüklenecek olan ekranlarıSpack komutu ile sıkıştırarak, programınbir parçası haline getir. Programın bu halinisakladığında, bu banklar da saklanacaktır.Yükleme komutlarını (Load Iff de Unpackkomutu ile değiştirdiğinde, programıntek parça haline gelecektir (Ancakuzunluğu da artacaktır.).Güçlü, ek olarak, prosedürler hakkındabilgi istemiş. Kısaca bilgi vermeye çalışacağız.Prosedürler, AMOS ile programlamanınen iyi yönlerinden biridir. İlk olarak Pascalvb. dillerde ortaya çıkan bu kavram,Basic'in gelişmesiyle birlikte yeni çıkanBasic'lerde de görülmeye başladı. Modülerprogramlamanın temellerinden biriolan bu kavram, programların, yaptığı işlemlerindaha küçük alt programlara bölünmesini,bu alt programlarda yapılan işlemlerinde gerekiyorsa, daha başka prosedürlerebölünerek programın netleşmesinive her bir bölümün, mümkünse tekbir işlemi yerine getirmesi esasına dayanıyor.Bu sayede, programda meydana gelenbir hatanın, programın neresindenkaynaklandığı (genellikle) kolayca anlaşılabiliyor.Ayrıca programlarınızda sık kullandığınızrutinleri, prosedürler halinde
diğer programlarınıza doğrudan ekleyerek,bir kez daha yazma zahmetinden kurtulabilirsiniz.Prosedürlerin bir diğer yararıda, F9 (Fold/Unfold) tuşuyla, tüm satırlarınıneditörde görülmesinin engellenebilmesi.Hazırladığınız bir prosedürünüzerinde iken F9 tuşuna bastığınızda,programınız önce test edilir ve bir hatayoksa, prosedürün sadece ilk (Procedurekomutu ile başlayan) satırı editörde kalır.Gerektiğinde, bu satır üzerinde iken tekrarF9 tuşuna bastığınızda, yeniden görünürhale getirebilirsiniz. Bu yöntemin (Fold)yararı, düzgün çalışan bir prosedürü kapatarak,dikkatinizi başka bir noktada dahakolay yoğunlaştırabilmeniz. Ayrıca, programlistesinde başından sonuna kadar gitmekiçin harcayacağınız çaba azalır.Prosedürler ve modüler programlama ileilgili daha geniş bilgiyi de bir başka sayıdaele alacağız.Bu ay da birkaç AMOS programımız var.Bunlardan ilki olan 'SINIRSIZ BOBDEMO' isimli program, bazı demolardabulunan ve bob iddiasıyla ortaya atılan,ancak gerçekte animasyondan başka şeyolmayan bir efekt içeriyor. 512KB sahiplerinin,bu programı yazmadan önce, menüden'Set Text Buffer' seçeneğini seçerektext belleğini 4000'e indirmeleri gerekiyor.Aksi takdirde, hafıza yetmediğindenprogram çalışamıyor.Programı çalıştırdığınızda. AMOS disketindenbazı library rutinlerini yüklemekisteyecektir (Sin() ve Cos() fonksiyonlarındandolayı).İkinci programımız (daha doğrusu prosedürümüz),BASİT ANALYZER isminitaşıyor ve çalan müziğe göre kanallarındurumlarını gösteriyor. Bu prosedürü ko-laylıkla programlarınıza ekleyebilirsiniz.Ancak etkisini görebilmeniz için. AMOSformatında bir müzik yüklemeniz gerekiyor.Bu program, hem AMAL, hem de Rainbowkomutlarına örnek teşkil ediyor.Üçüncü programımız ise sprite'lar ileyapılmış bir volume analyzer programı.İkinci programımızda olduğu gibi bundada, AMOS formatında bir müzik yüklemelisiniz.Dördüncü programımız (prosedür) olanYAZI KAYDIRMA #1, bir kaydırma rutinindençok, ekrana yazı getirme rutini. İncelediğinizdeoldukça basit olduğunu göreceksiniz.Son programımız olan YAZİ KAYDIR-MA #2 ise, Data'larda bulunan metni, ekranıyukarıya doğru kaydırarak gösteriyor.Son data elemanının "*SON*" olması gerekmekte.Bu ayki köşemizi de. daha önceki aylardayaptığımız çağrımızı yineleyerek sonlandırıyoruz:AMOS'la yaptığınız programlarıve prosedürleri (+ Posta pulu)gönderin ve bir AMOS program kütüphanesioluşturalım ve herkes bundan faydalansın.1993'ün Ocak ayında, yeni bir AMOSköşesinde karşınızda olmak dileğiyle...'**************************************'* *'* AMOS (C) 1990 *'* Europress Software, Ltd. *'* *'* SINIRSIZ (!) BOB DEMO *'* *'**************************************BASLADESEN[152,120,132,0.02]DESEN[152.120,1320.0.2]FİNAL'---------------------------------------Procedure BASLAClose EditorClose WorkbenchSet Sprite Buffer 18HideForA=0 To 7Screen Open A,320,256.4,LowresCurs Off: Cls 0 : Flash OffPalette0,$FFF,$8F,$F,$F00.$A00,$F0.$A0NextR=8For A=0 To 2Ink 3-ACircle R,R,(R/2-A)*2Paint R.RNextGet Bob 1,0,0 To R*2+2.R*2+2Cls 0End Proc'-----------------------------------------Procedure DESEN[XC.YC.F.S#]R#=2For A#=0 To F Step S#Add FL.1,0To3If FL=0AddS.1,0 To 7Screen To Front SWait VblEnd IfScreen SCRAdd SCR,1,0To7X=XC+Sin(A#)*R#Y=YC+Cos(A#)*R#Paste Bob X,Y,1R#=R#+0.03NextEnd Proc'------------------------------------------Procedure FINALRX#=156:RY#=4IX#=0.02 : IY#=0.015DoFor A#=0 To 155.5 Step 0.02Screen To Front SCRWait VblScreen SCRAdd SCR. 1,0 To 7X=150+Sin(A#)*RX#Y=120+Cos(A#)*RY#Paste Bob X.Y.1RX#=RX#-IX#RY#=RY#+IY#NextIX#=-IX#: IY#=-IY#LoopEnd Proc'------------------------------------------AMIGA DÜNYASI 29