Amiga Dunyasi - Sayi 19 (Aralik 1991).pdf - Retro Dergi
Amiga Dunyasi - Sayi 19 (Aralik 1991).pdf - Retro Dergi
Amiga Dunyasi - Sayi 19 (Aralik 1991).pdf - Retro Dergi
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
WEND<br />
BodyLength=CVL(INPUT$(4,1))<br />
LongsPerRow=(FIX(en/16-.001 )+1 )/2<br />
IF Compression=0 THEN GOTO DatNormal<br />
Decrunch:<br />
PRINT "RESİM SIKISTRILIMIS"<br />
OPEN "RAM:TempData" FOR OUTPUT AS 2<br />
WHILE Count < BodyLength<br />
Dat=ASC(INPUT$(1,1)): Count=Count+1<br />
IF Dat>-1 AND Dat128THEN<br />
Dat$=INPUT$(1,1): Count=Count+1<br />
IF Dat$="" THEN Dat$=CHR$(0)<br />
Dat$=STRING$(256-Dat+1,Dat$)<br />
PRINT #2,Dat$;<br />
END IF<br />
WEND<br />
CLOSE<br />
OPEN "RAM:TempData" FOR INPUT AS 1<br />
DatNormal:<br />
<br />
FOR y=0 TO boy-1<br />
FOR z=0 TO Derin-1<br />
FOR x=1 TO LongsPerRow<br />
bnb POKEL BitMap&(z)+Count(z),CVL(INPUT$(4,1))<br />
Count(z)=Count(z)+4<br />
NEXT x<br />
NEXT z<br />
NEXT y<br />
END:<br />
CLOSE<br />
IF Compression=1 THEN KILL "RAM:TempData"<br />
END<br />
Programı yazarken verilen numaralara bağlı kalarak yazmalısınız. Yani l numaralı bölümden başlayacaksınız, 2, 3 şeklinde<br />
altalta yazacaksınız.<br />
Yukarıda bulunan program İsmini ve DOS adresini girebileceğiniz herhangi bir 32'ye kadar renge sahip olan resmi yükleyebilir.<br />
Basic'in keleğinden 256 satırlık resimleri yükleyemiyor. (Hani haberiniz ola!!!).<br />
Hemen sizi uyaralım, program, özellikle sıkıştırılmış resimleri açarken çok zaman geçecektir. Program bu yüzden çok kullanışlı<br />
sayılamaz. Programcılar kısa sürede bunun farkına vardılar ve <strong>Amiga</strong> Basic'ten hızlı yüklenebilen bir dosya geliştirdiler<br />
bu dosya türüne ACBM dosyaları adı verilmektedir. İşin kötü yanı IFF resimleri kullanabilmek için önce bu resimleri<br />
ACBM formatına çevirmek gerekir. Bu çevrim işini yapabilmenin temel şartı resmi yükleyebilmek. Ancak bir kere ACBM'e<br />
çevrilmiş bir resmi artık hızlandırılmış olarak yükleyebilir ve kaydedebilirsiniz. Deluxe Paint gibi bir programda bu ACBM<br />
leri yükleyemeyeceğinden yine çevrimlere ihtiyaç duyulacaktır.<br />
Sorunlarına rağmen bu dosyayı kullanmak istiyorsanız, örnek bir programı bilgisayarınızla birlikte gelen Workbench/Extras<br />
disketinin BasicDemos kısmında bulabilirsiniz.<br />
Yükleme kısmını hallettik. Kayıt işine gelelim. Kaydederken, dosyanın ACBM veya IFF olması fazla bir hız farkı getirmez.<br />
Ayrıca sıkıştırma kısmını yazıp yazmamak sizin keyfinize kalmış. Herhangi bir program sırf sıkıştırılmamış diye sizin resimlerinizi<br />
yüklememezlik etmeyecektir. Bu yüzden yazacağınız bir kayıt programında sıkıştırma kısmına yer vermenize gerek<br />
kalmaz. Daha pratik bir çözüm ise ScreenX utility'sini kullanarak sağlanır. ScreenX bir ekranı IFF olarak kaydetmeye yarayan<br />
bir program (<strong>Amiga</strong> Dünyası Sayı 17, Sayfa 37).<br />
Son örneğimiz resmi IFF olarak kaydediyor.<br />
'Program "Amir.r.Amlr"<br />
DECLARE FUNCTION GetRGB4& LIBRARY<br />
LIBRARY ":bmaps graphics.library"<br />
<br />
Input" DOSYA ADI";PlcName$<br />
Win& = WINDOW(7)<br />
Scrn&=PEEKL(Win&+46)<br />
en=PEEKW(Scrn&+12)<br />
boy=PEEKW(Scrn&-»-14)<br />
BitMapAdr&=PEEKL(Scrn&+88)<br />
derin=PEEK(BitMapAdr&+5)<br />
ColorMap$=PEEKL(Scrn&+48)<br />
FOR l=0 TO derin-1<br />
BitMap&(i)=PEEKL(BitMapAdr&+8+i*4)<br />
NEXT i<br />
OPEN PicName$ FOR OUTPUT AS 1<br />
PRINT #1,"FORM";<br />
Uz&=48+2 A derin*3+en*boy*derin/8<br />
PRINT #1,MKL$(uz&);<br />
PRINT #1,"ILBM";"BMHD";<br />
PRINT #1,MKL$(20);<br />
PRINT #1 ,MKI$(en);MKI$(boy);<br />
PRINT #1 ,MKL$(0);CHR$(derin);<br />
PRINT #1 ,CHR$(0);MKI$(0);MKI$(0);<br />
PRINT #1,CHR$(10);CHR$(11);<br />
IF en>350 THEN PWidth=640 ELSE PWidth=320<br />
IF boy>350 THEN PHeight=512 ELSE PHeight=256<br />
PRINT #1 ,MKI$(PWIdth);MKI$(PHeight);<br />
PRINT #1,"CMAP";<br />
<br />
PRINT #1,MKL$(2*derin*3);<br />
FOR FNr%=0 TO (2 A derin-1)<br />
Wt%=GetRGB4& (ColorMap&,FNr%)<br />
PRINT #1 ,CHR$((Wt% AND 3840)/16);<br />
PRINT #1,CHR$(Wt% AND 240);<br />
PRINT #1,CHR$((Wt% AND 15)*16);<br />
NEXT FNr%<br />
PRINT #1 ."BODY";<br />
PRINT #1,MKL$(boy*en*derln/8);<br />
LongsPerRow=(FIX(en/16-.001 )+1 )/2<br />
FOR y=0 TO boy-1<br />
FOR z=0 TO derin-1<br />
FOR x=1 TO LongsPerRow<br />
Wt&=PEEKL (BitMap&(z)+Count(z))<br />
PRINT #1,MKL$(Wt&);<br />
Count(z)=Count(z)+4<br />
NEXT x<br />
NEXT z<br />
NEXT y<br />
CLOSE 1<br />
PRINT" Dosya kaydedildi!!!!";<br />
END<br />
Maalesef burada yine Library fonksiyonlarına işimiz düşüyor. Hepinize kolay gelsin.<br />
AMIGA DÜNYASI 95