AMOS PRO
Retro bilgisayarHerkese Selam! Yine AMOS PRO ve yine ben. Gönderdiğiniz mektuplar için teşekkürler. Bu ay yine EFEKT adlı programımıza devam edeceğiz. Program ilk efektini bu ay gerçekleştiriyor. İkinci sayfada IFF resim üzerinde yapılan değişiklikleri görebilirsiniz. Programla ilgili açıklamalara geçmeden gönderdiğiniz mektuplara değinmek istiyorum. İlk olarak, dergiye kadar gelip bana yazdığı rutinleri getiren UĞUR YILDIRIM'a çok teşekkürler. Uğur'un EFEKT üzerindeki çalışmalarına birazdan değineceğim. Diğer okuyucularımdan da yardım bekliyorum, program henüz tamamlanmadı, hala katkıda bulunabilirsiniz. Bu ay, dergimizin çeşitli köşelerine dadanan MUDER'den de mektup aldım. Tanrım! Köşemi ondan korumak için binlerce kere dua etmiştim, ama nafile. Sevgili AMOS programcıları, MUDER bu köşeye de bulaştı, Tanrı yardımcımız olsun. Gönderdiğin mektup için teşekkürler Muder. İşte sorularının cevapları:
© AMOS programlarını nasıl compile edebilirim? Amos Pro 1.00 için ne yazık ki henüz bir Compiler yazılmadı. Ama yakında Amos Pro 2.00'ın piyasaya sürüleceği söylenmekte. Bu yeni versiyonun AGA'yı destekleyeceği ve Compiler ile birlikte geleceği açıklandı. Ama acilen compiler arıyorsan Amos 1.35 ile birlikte piyasaya çıkarılan compiler'ı sana tavsiye edebilirim. Daha önce çıkan compiler'a bazı komutlar eklenmiş. Özellikle müzik ile ilgilenenleri mutlu edecek Tracker komutları var.
© Üzerinden Sprite nasıl alınır? IFF resim üzerinden Sprite almak için GET SPRITE komutunu kullanabilirsin. Komutun kullanılış formatı; GET SPRITE EkrNum,Sprno,X1,Y1 TO X2,Y2 EkrNum: Sprite'ı alacağınız ekranın no'su. Eğer bu parametreyi vermezseniz aktif olan ekran üzerinden sprite alır. Sprno: Sprite no. Amos, kullandığınız sprite ve bob'ları bir Bank'a atar ve gerektiğinde oradan kullanır. Bu iş için bir numaralı Bank kullanılır. Sprno, sprite'ı çağırırken vereceğiniz için. TO X2,Y2: Sprite olarak alınacak bölgenin koordinatlarıdır. Bir de sprite grabber programlarından yararlanabilirsin. Amos 1.2 ile gelen SpriteX ve Amos Pro ile gelen Sprite Grabber sanırım daha kolay sprite almanızı sağlar.
© Bob ile Sprite arasındaki fark nedir? Çok güzel bir soru. Bu soru için bir dergi çıkartılabilir. Ama yine de kısaca anlatmaya çalışacağım. Bob bitplane üzerine Blitter tarafından fiziksel olarak basılır. Yani Bob datası hafızadan okunup, bitplane datası (resim) üzerine kopyalanır. Bu yüzden Bob hareket ettirilirken bitplane datasının Bob basılmadan önceki haline çevrilmesi gerekir. Sprite ise bitplane datası üzerine basılmaz. Ekran taranırken Görüntü Chip'i tarafından gösterilir. Sprite hareket ettirilirken herhangi bir data tazeleme işlemine gerek duyulmaz. Bu yüzden Sprite işlemleri Bob işlemlerinden daha hızlıdır. Bunun yanında Bob'lar bitplane üzerine basıldığından bitplane'lerin sahip olduğu tüm özelliklere sahiptirler. Renk ve pixel adedi açısından bitplane sınırlarındadırlar. Yani, klasik Amiga'larda, herhangi bir hileye kaçılmadan 32 renklik Bob'lar veya Lace Bob'lar yaratabilmek mümkündür. Sprite'lar ise 16 pixel genişliğinde ve 255 pixel uzunluğunda olabilirler. Sprite renkleri ise biraz değişiktir, 8 adet 4 renkten oluşmuş Sprite veya 4 adet 16 renkten oluşmuş Sprite aynı anda gösterilebilir. Renk adetleri ve Sprite sayısı arasındaki oran dikkatinizi çekmiştir. 16 renk Sprite'lar yaratırken 2 Sprite'tan yararlanılır, bu yüzden Sprite sayısı yarıya düşer. Bu işlemler yani 16 renk Sprite yaratılırken yapılan tanımlamalar tamamen AMOS tarafından yapıldığından sizin ek bir işlem yapmanıza gerek yoktur. Şimdi eminim 'Yahu şimdi ekrana sadece 8 adet Sprite mı basabileceğim' diye soruyorsunuz. Açıkçası aynı X pozisyonunda ancak 8 adet Sprite kullanabilirsiniz. Ama X pozisyonları kesişmedikçe Sprite sayısını artırabilirsiniz. AGA üzerinde Sprite sayısı, renkleri ve çözünürlükleri ise daha önceki sayılarda anlatılmıştı, yani burada bir daha anlatmak istemiyorum.
Muder, umarım sorularına tatmin edici açıklamalar getirebilmişimdir. 70 adet mektup daha gönderiyorum demişsin, ne yapayım, kader katlanacağız. Oyun programladığınızı yazmışsın, çalışmalarınızda başarılar dilerim. Ayrıca ufak bir tavsiyede bulunmak isterim. Eğer oyununuzu Türkiye dışında birilerine de satmayı düşünüyorsanız, (vazgeçin bu hayalden. hihoha...) AGA'yı desteklemeyi unutmayın. Ve ufak bir istek, program yazan ortağının hazırladığı ufak ve işe yarar fonksiyonları varsa, bana göndermesini rica ediyorum. Hem köşe gelişir, hem de Amos programcılarının birbirlerini tanımaları açısından biraz yol almış oluruz. Mektuplarını bekliyorum.
Evet, Muder'den kurtulduk. Şimdi diğer bir mektup. Gerçekten inanılmaz değil mi? Amos köşenize, birden fazla mektup geldi. Neyse daha çok mektup bekliyorum. Mektup ZİYA AŞKAR imzalı. Bir de kendisine ait programlardan oluşan bir disk göndermiş. Mektup ve disk için gerçekten çok teşekkürler. Kendisi, Amos programcılarının daha sıkı bağlantılara girmesi gerektiğini yazmış. Ben de bu köşede ilk sayıdan itibaren bunu gerçekleştirmeye çalışıyorum. Yazılarımda sürekli bir şeyler gönderin, yazı yazın, fikirlerinizi anlatın dememin tek sebebi bu. Gelen mektuplar ve programlar beni daha çok cesaretlendirmekte. Sizlerden gelen mektuplarla, köşe daha çok sizlere ait olacaktır. Ziya yazdığı programları Compile etmeden göndermiş, iyi de etmiş, compile edilmiş programlara bakmak insana programcılık açısından pek bir şey kazandırmaz. Programları isteyenlere çekebilirim. Hatta Ziya buna memnun olacağını belirtmiş. İsteyenler, dergiye gelip benden bu diskin bir kopyasını alabilirler. Ziya ile yazışmak isteyenler için de adresi; Karslı Ahmet cad. Özyurt sok. No:20/10 81120 İçerenköy - İstanbul.
Ziya senden daha fazla program bekliyorum. Yazı içerisinde programlardan herhangi birini yayınlayamıyorum, çünkü program için ayrılan yazı alanım kısıtlı. Ama EFEKT için rutinler gönderirsen, yayınlamam daha kolay olur.
İnanılmaz ama diğer bir mektup. İmza ONUR ÖNER.
© IFF animasyonları nasıl kullanırım? Amos Pro.'nun IFF ANIM komutunu kullanırsan IFF animasyonları gösterebilirsin. Kullanılış formatı: IFF ANIM 'dosya ismi' TO ekranno
© Amos programları, datalarıyla birlikte nasıl tek dosya haline getirilebilir? İlk olarak şunu belirteyim, şimdiye kadar gördüğüm oyunların çoğu tek parça değil, aksine diskten yüklemelidir. Çünkü ortalama bir oyunun 2 diskten oluştuğunu düşünürsek, oyun yaklaşık 1.5 Mbyte yer kaplar. Eh! Oyun tek parça olursa, ancak 2 MByte hafızalı bir Amiga'da çalışabilir. Bu yüzden, oyunların geneli tek parça değildir. Ama yine de tek parça bir program yapmak istiyorsan, Amos Bank'larını kullanmaktan başka çaren yok. Resimler için Spack ve
Unpack komutlarını kullanarak bunları Bank'lara atabilirsin. Spack resimleri sıkıştırıp Bank'a atar. Kullanılışı; Spack Ekrno TO BankNo. Unpack ise Bank'taki resimleri ekrana açar. Kullanılışı; Unpack BankNo TO EkrNo. Yalnız, unutmaman gereken bir şey var; resimler için ayrılan Bank'lar, Chip Memory'ye yerleştirilir. Yani Bank genişlikleri arttıkça boş Chip Memory azalır. Ve şimdi UĞUR YILDIRIM'ın gönderdiklerinden bahsetmek istiyorum. Uğur bana EFEKT için 8 adet efekt göndermiş. Bunlardan ilki bu ay yayınlanıyor. Efektin ismini o vermiş, bende aynı isimle programa ekledim. Efektin mantığı gayet basit, fakat sonuç bence etkileyici. Rutinin yaptığı iş, resmin her satırının random itilmesinden ibaret. Kaç pixel itileceği random komutuyla belirlenmekte. Uğur, rutine baktığında bazı değişiklikler göreceksin. Bazı bug'ları hallettim ve parametrik hale getirdim. Ayrıca resmi sadece pozitif yönde itmişsin, artık negatif yönde de resim çekilmekte. Bulanık efektine en fazla kaç pixel iteceğini belirtmek için Bulanık Gadget'ına sağ Mouse butonu ile basın. Açılan ufak Window'da sizden 0 ile 99 arası bir sayı girmeniz beklenmekte. Girdiğiniz sayının 20 olduğunu kabul edersek resminiz -20 ile 20 arasında random itilecektir. Diğer Uğur Yıldırım efektlerine gelecek ay yer vereceğim, çünkü bazı bug'ların halledilmesi ve kullanıcı ara biriminin eklenmesi gerekiyor. Gönderdiğin rutinler için çok teşekkürler. Vee son bir mektuba daha cevap vermek istiyorum. Aslında mektup Amos köşesine değil, VEDAT HALLAÇ'ın hazırladığı MANYETİK PAKET'e gönderilmiş. İmza, Burak - Bora DAYIOĞLU. Mektubun yazılma sebebi, 4. sayıda yayınlanan ufak ilanımız. İlanın içeriğini hatırlatmak istiyorum. İlanda, Amiga ile bir şeyler üreten tüm kullanıcılara seslenilmekte. Bu kullanıcılar, bizimle irtibata geçip, kendi ürünlerini gönderdikleri takdirde, kendilerinin ve ürünlerinin dergide tanıtılacağından bahsedilmekte. Böyle bir girişimde bulunmamızın tek sebebi de, ilanda da yazıldığı gibi Türkiye Amiga sektörünü hareketlendirmek. Mektubu yazan arkadaşlarımız, yazdıkları Amos programlarını da göndermişler. Ve Manyetik Paket'te yayınlanmasını istemişler. Kendilerine teşekkürler. Fakat, bizce karşılanması pek mantıklı olmayan bir de istekleri var. Her ay göndereceklerini taahhüt ettikleri Amos programları karşılığı, kendilerini ücret almadan dergiye ve Manyetik Paket'e abone etmemizi istemişler. Biz dergi olarak ilanda da belirtildiği gibi Amiga sektörünü canlandırmaya çalışıyoruz, bu yüzden sizden ürünlerinizi göndermenizi istedik, ve gönderilen ürünler bizim tarafımızdan herhangi bir amaçla kullanılmamakta. Bu sebepten dolayı arkadaşlarımızın gönderdikleri programlar karşılığında bizden ücret talep etmeleri bizce karşılanması mantıklı olmayan bir istek. Kaldı ki Manyetik Paket'te şimdiye kadar yayınlanan programlara dikkat ederseniz, tamamı Public Domain veya ShareWare'dir. Yani programcılar tarafından hiçbir ücret talep edilmeden veya programı beğenen ve kullanan kişilerden az bir ücret talep edilerek yazılmış programlardır. Manyetik Paket'te yayınlanan programlarınız, adınızı Amiga piyasasında duyurmanın yanında diğer Amiga kullanıcılarına da yardımcı olma amacı gütmelidir. Bizim de MANYETİK PAKET'i çıkarma amacımız temelde budur. Eğer ürettiğiniz programın yararlı olacağına inanıyor ve çalışmalarınızın devamı için kullanıcıdan ücret talep etmek istiyorsanız, program dökümanında ya da program içinde ürününüzün SHAREWARE olduğunu vurgulayın. Bunun dışında bizim dergi olarak MANYETİK PAKET'e gönderdiğiniz programlara kısa vadede herhangi bir ücret ödememiz mümkün değildir. Uff! Bütün mektuplara cevap verdim, mutluyum. Sizden daha fazla mektup bekliyorum. Programda yapılan değişiklikleri yazı sonundan bulabilirsiniz. Manyetik Paket içinde ise programın tamamı iş bulan akla. Ve bu aylık bu kadar. Gelecek ay görüşmek üzere hoşçakalın. TOLGA KAHRAMAN
INITPROG
MAIN
Procedure MAIN
Limit Mouse 128,243 To 448,308
CMDSCRBCK-Ü
Do
PRESKEY-Asc(Inkey$)
RAWKEYS-Key Shift
- MOUSEKEY-Mouse Key
lif MOÜSEKEY>0
If CMDSCRBCK-İ
CMDSCRBCK-0 : Sereen Show O
Repeat
Until Möuse Key-0
Else
MX—X Screen(X Mouse) : Screen(Y Mouse)
BASILAN—0
For K-l To IKONSAY
I£ and MY>-IKONT(K,2)
I£ MX<—IKONB(K,İ) and MY<-IKONB(K,2)
Exit
End If
End If
Next
If BASILAN>O
İf Left$(İKÖNTEX$S(BASILAN),1)<>"&"
SHADEBOX(IKONT(K,1),IKONT(K,2),
IKONB(K,1),IKONB(K,2), *©
False, İKONTEX$ (K) , IKONCOL(K) |
Repeat
Until Mouse Key-0
End If *
If BASILAN-2
Limit Mouse : LODIFF
Limit Mouse 128,243 To 448,308
Screen Tö Front 0 : Screen 0
SHADEBOX(IKONT(K,1),IKONT(K,2), '&
IKONB(K,1),IKONB(K,2),
True, IKONTEX$ (K) , IKONCOL(K) |
End If
If BASILAN-3
Limit Mouse
SAVIFE
Limit Mouse 128,243 To 448,308
Söreen To Front 0 : Sereen O
SHADEBOX(İKONT(K,1),İIKONT(K,2),
IKONBİK,1);IKONB(K,2),
True, İKONTEX$ (K) , IKONCOL (K) |
End 1f
I£ BASILAN-8
BULANIKİ| MOUSEKEY)
SHADEBOX(IKONTİ(İK,1),IKONT(K,2),
İKONB(K,1),İIKONBİK,2), '©
True, IKONTEXŞ (K) , IKONCOL (K) |
End If
If BASILAN-I10
CMDSCRBCK—-İ
SHADEBOX(IKONT(K,1),IKONT(K,2),
IKONB(K,1),IKONB(K,2), '©
True, IKONTEXŞ$ (K) , IKONCOL(K) |
Screen Hide 0
End If
If IKONTEX$ (BASILAN) -"Undoa"
UNDO
SHADEBOX(IKONT(K,1),IKONT(K,2), '©
IKONBİK,1),İIKONB(K,2),
True, İKONTEXŞ$ (K) , IKONCOL(K) |
End If
I£
Fade 3 : Wait 45 : Exit
End If
End If
End If
End If
ARX—İ :
If RAWKEYS-LAMIGA
ARX—A :
End If
If RAWKEYS-RAMIGA
ARX—XDISP : ARY-YDISP
End If
İf PRESKEY-UARRON
Add SCROFF'Y, -ARY
I£ SCROFEFY>O
Screen Offset SCROFEY
Else
Sereen Offset 4,SCROFFX, SCROFEY
End If
End If
If PRESKEY-DARROW
Add
I£ SCROFFY<Screen Height (4) -YDISP
Sereen Offset SCROFEY
Else
SCRÖFFY-Screen Height (4) -YDISP
Offset 4,SCROFFX,SCROFEY
End If
End If
If PRESKEY-LARROW
Add SCROFFX,-ARX
If SCROFFX>O
Screen Offset 4,SCROFFX, SCROFEY
Else
Screen Offset 4,SCROFFX, SCROFEY
End İf
End If
If PRESKEY-RARROW
Add SCROFFX,ARX
If SCROFFX<Screen Width(4) -XDISP
Screen Offset â,SCROFFX, SCROFFY
Else
SCROFFX-Screen Width (4) -XDISP
Screen Offset 4,SCROFFX, SCROFEY
End If
End If
Loop
Screen Close O
End Proc
Procedure INITPROG
'k VAR:
PIXKAY-I10
'* CONTS:
RARROW-28
UARROWS30
DARROW—31
LAMIGA-6A
RAMIGA-I28
*
Degree
Sereen Open 0,640,70,16,Hires
Sereen Display 0,,244,,
Palette
$AĞA,0,0,0,0,0,0,0,0, $EFF
Curs Off : Flash Off Ink 1
Paint 0,0
Ink 3 : Set Text 6
Text 5,60,"Efekt 1.00 Amiga Dergisi 1993“
Set Text 0 : IİNİTİKON : BASIKON
End Proc
Procedure INITIKON
IKONSAY-İ1
For K-1 To IKONSAY
Read IKONT(K,1),IKONT(K,2)
Read İKONB(K,1),IKONB(K,2)
Read (K) , IKONCOL (K)
Next
Data
Data 6,17,106,30,"Load Iff",5
Data 6,32,106,45,"Save If£f",5
Data 118,2,184,15,"&Sinüs",15
Data 118,17,184,30,"X",4
Data 118,32,184,45,"Y",4
Data
Dâta 196,17,265,30,"Bulanik", 5
Data 565,2,615,45,"Ouit",15
Data 625,2,635,6,"",5
Data
End Proc
Procedure BASIKON
For K-l To IKONSAY
If Left$(İKONTEX$(K),1)-"$"
SHADEBOX(IKONT(K,1), IKONT(K,2),
İKONB(K,1),IKONBİK,2), e
, IKONCOL (K) |
Else
SHADEBOX(IKONT(K,1),IKONTİK,2),
İKONBİK,İ),İKONBİK,2),
True, IKONTEXŞ (K) , IKONCOL (K) |
End If
Next
End Proc
Procedure LODIFF
If Len(FİLEŞ)>0
For K-Len(FILE$) To 1 Step
If Mid$(FILEŞ,K,1)-"/"
Exit
End If
Next
C-lhen (FİILEŞ) -K
K-KtI1
FIİLEŞ$—Mid$(FILEŞ,K,C)
NOT: Program dökümünde kullanılan «er işareti, sütunlarımızın darlığı yüzünden kesilen satırları göstermektedir. Lütfen bu karakterin bulunduğu satırlarda return veya enter'a basmadan altındaki satırı yazmaya devam edin.
End 1f
EFİLEŞ-FİLEŞ
resim secin")
İf FİLEŞ-""
Pop Proc
End If
Load Iff FILEŞ,4
Screen Hide 4 : SCRES
XDISP-Screen : YDISP-Screen Height (4)
or(SCRRES$-"Ham")) and e
Width(4)>320
Screen Display â,,,320,
End If
If SCRRES$-"Hires" and Screen Width(4)>640
XDISP-640 : Screen Display 4,,r640,
End If
If LACE-0
If Screen Height
YDISP-256 : Screen Display
End 1f
Else
If Height (4)>512
YDİSP-512 : Screen Display 4,;»rr512
End If
End I1f
SCROFFX-0O : SCROFFY-0 : TMPSCR
Sereen Copy 4 To 5 : Screen Show A
End Proc
Procedure SAVIFF
If
For K-Len(FILEŞ$) To 1 Step -1
If Mid$(FILEŞ,K,İ)-"/"
Exit
End If
Next
C-Len(FILEŞ)-K : K-KtI1
FILEŞ-Mİd$(FILEŞ,K,C) : EFİLEŞ$-FILEŞ
FIİILEŞ-Fsel$("",FILEŞ$,"Iİf£ resim secin")
If
: Pop Proc
End
Screen 4 : Save Iff : Screen O
Else
BATA(" Yuklenmis proje bulunamadi...",1)|
End If
End Proc
Procedure SCRES
A-Screen Baset72
M-Deek (A)
I£ Btst(15,M)
SORRES$-"Hires"
Else
İf
SCRRESŞ-"Ham"
Else
$SCRRES$-"Lowres"
End If
End If
If Btst(2,M)
LACE-1
Else
End If
End Proc
Procedure GETVAL(MSG$,DEF$, HANE)
almak icin kullanilir***xxxx
'* MSGŞ Ekrana basilacak mesaj *
'& DEF'$S Default deger
'* HANE Kac harflik deger alinacak *
Hide On
GEN-Text Length (5pace$ (HANE45) )
If GEN>639
GEN-639
End If
UZX-Text Length (MSG$)
If UZX>GEN
End If
If GEN<224
GEN—224
End If
Screen Open 2,GEN, 30,4,Hires
Sereen Display 2,,212,,
Curs Off : Flash Off
Palette $0,$BA9,$730,$FED : Cls 1
TXYER— (GEN-UZX) /2
SHADEBOX(0,0,GEN,29,True,"",0)
Ink 3
Text TXYER,9,MSG$4Space$ (78)
DEGER$-Left$ (DEF$*Space$ (HANE) , HANE)
Pen 3 : Paper 0
Locate 1,2 : Print DEGER$;
1,2 : Input "";DEGER$
If
DEGER$-DEF$
End If
Screen Close 2 ; Screen O
Limit Möüse 128,243 To 448,308 : Show On
End
Procedure TXTCOL)
GADGET BASAR
Gadget koordinatlari İz
'* Shade True Secilmemis ikon
False Secilmis ikon
vk -2 Golge yok
Txt5 Gadget icine yazilacak
Tik, yazi
fk Txtlol Yazinin rengi
If
TXT$-Mid$ (TXT$,2,200)
End If
If SHADE-True
: SONRENK-2
End İf
If SHADE-False
: SONRENK—3
End If
If SHADE<>-2
Ink ILKRENK
Draw To X2,Yl : Draw X1,Yİ To X1,Y2
Ink SONRENK
Draw X1,Y2 To X2,Y2 : Draw X2,Y2 To X2,YI
End If
EE
Ink TXTCOL
UZX-Text Length(TXT$) : UZY-Text Base
TXYER— (X14X2-UZX)/2 : TYYER—(Y2*YIYUZY) /2
Text TXYER,TYYER,TXT$
End If
End Proc
Procedure BULANIKI|(MKEY|
rx efeckt Şi
'* Etraf bulanir
'*k MKEY Mouse key (1,2)
If MKEY-2
derinligi (0-99)", we
Str$ (PIXKAY)-" ",2)
PIXKAY-Val (Param$)
Pop Proc
End If
TMPSCR
Ser&en Copy 4 To 5
For I-l1 To Sereen Height (4)
X8—Rnd (2*PIXKAY) -PİXKAY
Sereen Copy 5,0,1,Sereen e
To 4,X8,1
Next
Screen 0
End Proc
Procedure TMPSCR
Tmp SCREEN (5) acar
Screen 4
X-Screen Width(4) : Height (4)
Colour
İf SCRRES$-"Hires"
If LACE-1
Sereen Open 5,X,Y, COL,HirestlLâaced
Else
Screen Open 5,X,Y, COL,Hires
End If
End If
If SCRRES$-"Lowres"
If LACE-1
Screen Open 5,X,Y, COL,Lowrestlaced
Else
Screen Open 5,X,Y, COL,Lowres
End If
End If
If SORRES$-"Ham"
Screen Open COL,HAM
End If
Sereen To Back 5
Screen Hide 5
Curs Off
Flash Off
Cls O
Get Palette 4
Screen 4
End Proc
Procedure UNDO
Screen Copy 5
End Proc
NOT: Program dökümünde kullanılan «e işareti, sütunlarımızın darlığı yüzünden kesilen satırları göstermektedir.
Lütfen bu karakterin bulunduğu satırlarda return veya enter'a basmadan altındaki satırı yazmaya devam edin.