15.01.2015 Views

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

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!