Amiga Dünyası sayı 28, sayfa 38

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 38

nız ıda nı- ZOrek lim resadolardemel Te-

)tor'unda tek ler, eri-

ÇUŞ yer lare derada

Selam!!! Artık komutları bitirdiğimize göre, bu köşeye biraz fazla yer ayıracağım; zira komutlar için bu köşeye üç aydır devam edemiyorduk. Bu ay bu kadar beklediğiniz için ufak bir intro source'u veriyorum. İntroyu doğru olarak çalıştırmak için, diskete bir de BNXTXT isimli bir file yerleştirmeniz gerekmekte. Bu file, intro'daki scroll text'i içerecek olan file olacaktır. Bu file'daki bütün karakterler büyük olarak yazılmalı. File'ın sonuna da biraz boşluk (yaklaşık 20-30 karakterlik) koyduktan sonra ufak <a> harfini ekleyin. Bu sayede scroll text basma rutini, yazının sonuna ulaşıldığını anlayarak scrollun tekrar ilk karakterden başlamasını sağlar. Scroll text dosyası içinde anlaşılamayan (font datalarında bulunmayan) bir karaktere rastlanıldığında, bu karakter otomatik olarak atlanılacaktır. Şayet scroll text dosyası aktif directory'de (genelde ana directory) bulunamazsa, program size ses sinyali verecek ve scroll text yerine bir uyarı mesajı ile karşılaşacaksınız. Bu uyarı mesajı da ErrorText label'ından sonra bulunmakta. Gelecek ay, bu introyu hep beraber detaylı bir şekilde inceleyeceğiz. İntro'nun doğru olarak çalışabilmesini sağlamak için üç file'a ihtiyacımız var. Fakat üç file'dan biri olan font datalarını ben programın sonuna satırları olarak ekledim. Font dataları 496 byte uzunluğunda olduğundan, bu pek sorun çıkarmaz umarım. Merak edenlere belirteyim, fontlar 8x8 boyutlarında IFF olarak hazırlanmış. Gelecek ay scroll ve karakter algılama rutinlerini incelerken bu konuya daha detaylı değineceğim. Kalan iki data file'ından ilki, gösterilecek olan logo'muz; bunu DPaint ile 160x140 boyutlarında tek bitplane olarak hazırladıktan sonra bir IFF converter (IFF Master yine de en iyisi!) programıyla bitmap haline çevirmemiz gerekmekte. Çevrim sırasında resmin sadece 160x100'lük alanını çerçeveleyip almanız çok önemlidir. Bu yaratılan yeni file ismine de logo.bm adını verelim. Gereksinim duyduğumuz ikinci dosyanın adı da mod.astaroth; bu da Astaroth oyunundan aldığımız bir müzik. Bunun yerine Future Composer ile hazırlanmış herhangi bir parça (modül olarak!) da kullanabiliriz. Müzik istemiyorsanız, programın 'bsr Init Music', 'bsr Play' ve End altrutinindeki bsr komut satırlarını kaldırmanız (ya da başına ';' işareti koymanız) yeterli. Bu şekilde programınızın, müzikle ilgili rutinlere hiçbir şekilde dallanmamasını sağlayabilirsiniz. İsteyenler programın sonuna eklemiş olduğum müzikle ilgili rutinleri de silebilirler. Bu şekilde source'unuz kısalabilir. Fakat bunun da pek önemli olacağını sanmam. Programın en sonundaki incbin satırları yardımıyla, bahsettiğim bu iki data file'ı assemble edilen programın sonuna eklenecektir. Bu kadar tiyo şimdilik yeter, programın çalışmasını (özellikle scroll ile ilgili rutinleri) iyice inceleyip çözmeniz için bir ay vaktiniz var. Çözemeyenlere gelecek ay bütün source'u kısaca açıklayacağım. Hadi şimdilik hoşçakalın...

org $60000 load $60000 (0) movem.l a0-a6/d0-d7,-(a7) bsr.w Init Music InitVars bsr.W Clear bsr.b LoadText Init move.l — #2,d7 : bsr.W Acilmaca Loopl cmp.b — #0,$dff006 bne.b Loopl bsr.W Scroller bsr.w Play btst #6,$bfe001 bne.s Loopi bra.W End LoadText move.l 4,a6 lea Dosname,al İsr -408(a6) move.l — d0,a6 move.l — #1005,d2 move.l — İST -30(a6) tst.l dO beg.b CannotOpen move.l — d0,FileHeader move.l — move.l — #$7a000,d2 move.l jsr -42(a6) move.l — İsr -36(a6) move.l * a6,al move.l — İsr -414(a6) BackOpen bset #3,$bfd100 nop nop bset #7,$bfd100 nop nop belr #3,$bfd100 rts

Cem GENCER CannotOpen move.l — #$7a000,a0 move.l — #ErrorText,al move.l — #|ErrorEnd-ErrorText-1)1,d7 Copytext move.b (a1)4,(a0)4- dbf d7,copytext lea ErrorText,al move.l — #1,d7 TonUret bsr.w ErrorTone dbf d7,TonUret bra.b BackOpen move.w #0,RXİ move.w #0,RI move.w #0,R2 move.w #0,R3 move.w #0,Rİ1 move.w #0,R12 move.w #0,R13 move.w #$1807,CI move.w #$1907,C2 move.w #$la07,C3 move.w #$1b07,C4 move.w #$9007,CI11 move.w #$9107,C12 move.w move.w #$9307,CI14 move.w #$0ff0,ScrollRengi Tts Errortone move.w move.l — #Wave,$dff0a0 move.w

move.w #$3f,$dff0a8

move.w #$8201,$dff096 move.l — #Ton,a0 Tonp move.w #$8000,d1 Pau dbf d1,Pau move (a0)4,$dff0a6 beg.b EndT bra.b TonP EndT move #$01,$dff096 Tts Ton dc.w 440,1200,850,1088,0 even Wave dc.b 127,-127 Acilmaca cmp.b #$ff,$dff006 bne.s Acilmaca add.w #$0300,R1 add.w — #$0300,RI1 add.w — #$O111,R2 add.w — #$0111,Rİ2 add.w — #$0300,R3 add.w — #$0300,R13 move.l — #$İfff,d6 Beklel dbf d6,Beklel dbf d7,Acilmaca move.l — #5,d7

Klavyeyle gezinmek için ← ve → tuşları.