bu kod ekrani temizliyor ekrana bir "/" karakteri biede ici dolu kutu basiyor ve duruyor nedendir bulamadim acikcasi???*
hades
2nd October 2005, 17:10
işte bu yüzden çalışmaz :)
print altrutininde x registerinin değerini delay rutinine girmeden önce saklamalısın. Çünkü delay rutinindede ldx #0 var ve delay rutini bitince yine x=0 oluyor. geri dönüşte print alt rutinindeki inx komutuyla, aslında delay rutininden geri dönüşteki x registeri değerini 1 arttırıyorsun. yani x registeri hep 0 ve 1 değerlerini alıyor. dolayısı ile printloop'a bne yaptığında x registerinde herzaman 1 oluyor. Bu yüzden text teki diğer karakterleri hiç bir zaman okuyamıyorsun ve yazdıramıyorsun.
diğer bir hata ise
print: stx print+1
sty print+2
komutları ile aslında yukardaki stx komutuna ait parametreleri değiştiriyorsun. doğrusu
stx printloop+1
sty printloop+2
şeklinde olmalıydı
bu yüzden sen ilk okuma sırasında $0000 sonra $0001 nolu adreslerin içindeki değeri ekrana basmış oluyorsun
OK simdi daha bi duzenli ama birkac sorun daha var...
bangir bangir dan sonra C karakteri basiyor ekranin sonunda kadar,kodun bu parcasini alip baska bi yerde test ettim eger karakter sayisi kadar dongu verirsem basmiyor ama karakter sayisindan fazla dongu verirse
ornegin 13 karakterlik yazim var
cpx #40 dersem kalan kismina C karakteri basiyor.
ama cpx 13 dersem probşem yok????
Burdaki C karakteri bir garip bi C onuda soliim bildigimiz C degil :)
Delay dongusune girmeden x degerini saklamayi ise kafamda cozemedim :(
hades
2nd October 2005, 17:34
bu arada yeni başlayanlar için bir-iki bilgi vereyim.
ekranı silmek için
jsr $e544 komutu kullanılabilir.
eğer ekranı sildikten sonra farklı bir renk ile yazı yazdırmak için
lda #renk
jsr $e536 komutları kullanılabilir.
program içinde 1 mili saniye gecikme yapmak için
jsr $eeb3 komutu işinizi görür.
gecikme süresini uzatmak için
ldx #---
delay jsr $eeb3
dex
bne delay
komutlarını kullanbilirsiniz.
hades
2nd October 2005, 17:48
Originally posted by Bakkada@Oct 2 2005, 04:31 PM
OK simdi daha bi duzenli ama birkac sorun daha var...
bangir bangir dan sonra C karakteri basiyor ekranin sonunda kadar,kodun bu parcasini alip baska bi yerde test ettim eger karakter sayisi kadar dongu verirsem basmiyor ama karakter sayisindan fazla dongu verirse
ornegin 13 karakterlik yazim var
cpx #40 dersem kalan kismina C karakteri basiyor.
ama cpx 13 dersem probşem yok????
Burdaki C karakteri bir garip bi C onuda soliim bildigimiz C degil :)
Delay dongusune girmeden x degerini saklamayi ise kafamda cozemedim :(
Quoted post
1- ekrana basacağın yazıların uzunluğu aynı ise cpx #uzunluk olmalı, eğer uzunlukları farklı ise eşitlemek için kısa olan yazılara boşluk eklemen gerekir.
2- Eğer programında o an için kullandığın bir register başka bir alt rutinde farklı bir değer ile yükleniyorsa, registerin önceki değerini kullanılmayan bir adrese kopyalarsın. alt rutinden çıkmadan yani rts komutundan hemen önce registere daha önce kopyaladığın değeri geri yüklersin ve rts ile alt rutinden çıkarsın. veya alt rutinden geri döndükten sonra -jsr komutundan sonra kopyaladığın değeri geri okursun. böylece alt rutine gitmeden önceki asıl değeri kaybetmemiş olursun.
Buna göre senin rutininde
ldx #0
printloop:
lda $0000,x
sta screen,x
stx sakla
ldy #$40
jsr delay
ldx sakla
inx
cpx #40
bne printloop
rts
yukarıdaki sakla yerine programa zarar vermeyecek herhangi bir adresi kullanabilirsin.
skate
2nd October 2005, 17:56
ben şu kullanımı tavsiye ederim
screen = $0400
ldx #$00
loop lda text,x
beq out
sta screen,x
inx
bne loop
out rts
text !scr "deneme 123"
!byte 0
Gerçi bu maksimum 255 karakterlik bir text için çalışır ama olsun, şimdilik anlaman için yeterli. Text'in bittiği yerden bir sonraki byte'ı 0 yapıyoruz ve 0'a geldiyse trasferi sona erdir şeklinde kontrol ediyoruz.
Bakkada
2nd October 2005, 18:10
ben ayni yerlerde tax ve txa komutu kullanmayi denedim tabi olmadi :)
Main CPU Jam error :P
Hmmm yavas yavas oturuo anniorum simdi....
SU programi bi bastan yazip calistiriim bakiiim
skate
2nd October 2005, 18:15
Originally posted by Bakkada@Oct 2 2005, 05:10 PM
ben ayni yerlerde tax ve txa komutu kullanmayi denedim tabi olmadi :)
Main CPU Jam error :P
Hmmm yavas yavas oturuo anniorum simdi....
SU programi bi bastan yazip calistiriim bakiiim
Quoted post
Daha gelmemiş olabilirsiniz o konuya, tutorialları takip etmiyorum ancak bu tür durumlarda stack kullanımı çok pratiktir. Örnek olarak X'deki değeri geçici olarak saklamak istiyorsan.
txa
pha
..
..
..
..
pla
tax
şeklinde stack'i kullanabilirsin. Stack yalnızca (illegal opcode kullanmadan) accumulator ile çalışır. Bunun dışında zeropage de güzel bir çözüm olabilir.
stx $fb
..
..
..
ldx $fb
mesela...
Stack konusuna gelmediyseniz ben daha fazla kafanı karıştırmiim. zeropage'e gelince bunlar $0000-$00ff arası hafıza adresleridir. Bu adreslerin kullanımı hafızada daha az yer kapladığı ve daha az cycle yediği için tercih edilir. Ancak $00-$ff arası tüm adresleri dilediğin gibi kullanamazsın, bazıları özel adreslerdir. Bunun için programcının el kitabı ya da Hades'in dökümanlarındaki hafıza tablolarını kurcalamanı tavsiye ederim. Bu arada elbette ki özel adres olsa da kullanmanda sakınca olmayan adresler mevcuttur. Örnek olarak RS232 üzerinden hiçbir işlem yapmayacağını varsayarak $f7, $f8, $f9, $fa adreslerini dilediğin gibi kullanabilirsin, her ne kadar normalde boş adresler olmasalar da. $fb-$fe aralığındaki adresler de zaten freedir. Ben genellikle bu adresleri kullanmayı tercih ediyorum.
hades
2nd October 2005, 18:31
hah şöyle...
nihayet soru cevap başladı. inşallah devamı gelir.
ekrana yazı basma ile ilgili olarak bir rutinde ben yazayım. hem kısa hem hesaplı ....
lda #<text
ldy #>text
jsr $ab1e
rts
text .text "deneme 1-2-3"
.byte 0
ek bilgi : text uzunluğu max. 255 byte olabilir. ve text'in sonunda MUTLAKA 0 byte ı olmalıdır.
(çocukları gönderdim küçük odaya. 1-2 saat code kasabilirim :):))
madhead
2nd October 2005, 18:37
bakkada, ekrana text basma konusunda yeterince bilgi edindiysen küçük bir ipucu da ben vereyim. diyelim ki uzun bir yazının 40 karakterlik, yani 1 satırlık kısmını ekrana basıyorsun. satırı ekrana bastıktan sonra text'i aldığın adresi her seferinde 1 arttırıp tekrar basarak basit bir scrolltext yapabilirsin.
Calisanini yazdim sonunda;MAP64'den temp data area buldum. $0097 adresiymis,oraya al-ver mantigi uyguladim calisti.Yalniz aklima takildi simdi ben her cumleyi farkli satira basmak istiyorum :)
Yani screeni herseferinde farkli bir degere atamak istiyorum;
TEXT1 : screen'e
text2 : screen+40
text 3 : screen+80 'e gitsin...
jsr print komutundan once screen=$0400;screen=screen+40 denedim ama olmadi :)
Belki de ogrendiklerimiz ile simdilik bu kadarini yapabiliyoruzdur :)
Kasmaya devam yardim icin tesekkurler...
Gene sorucam kacamassiniz :P
skate
3rd October 2005, 10:02
screen = $0400
dedikten sonra bunu screen = screen + 40 şeklinde değiştiremezsin ne yazık ki. Bunun için şunu yapman lazım.
screen = $0400
..
..
..
putscr sta screen,x
..
..
..
lda putscr+1
clc
adc #40
sta putscr+1
lda putscr+2
adc #0
sta putscr+2
..
..
..
Burda putscr adresi hafızada şu şekilde duruyor
sta $0400,x
Bu da hex codelar ile
9d 00 04
şeklinde yazılır.
9d -> sta $####,x
00 -> $0400'ün low byte'ı
04 -> $0400'ün high byte'ı
Bu durumda bizim arttırmamız gereken yer $0400'ün low byte'ı yani putscr+1
Peki ya $f0'dan sonra ne olacak? $f0 + $28 = $18 yani $0418 olur. Ancak toplamada carry flag denen bir "elde" bayrağı vardır ki adc'den önceki "clc" komutunun amacı bu bayrağı temizlemek. Çünkü o temizlenmezse toplamanın sonucu bir fazla çıkar. Örnek olarak
lda #0
adc #40
dediğimizde sonuç 40 ya da 41'dir. Tamamen carry flag'e bağlı. Ancak
lda #0
clc
adc #40
kesinlikle 40'dır. Çünkü carry flag'i temizliyoruz. Takip eden
lda putscr+2
adc #0
sta putscr+2
kısmında ise eğer bir önceki toplamada sonuç 255'i geçmediyse putscr+2 yani başlangıçta $04 olan değer değişmez. Ancak eğer sınır aşıldıysa yani $f0+$28 işleminden sonra sonuç $05 olacaktır. Bu sayede satır numaraları
Son bir dipnot. Varsayılan ekran adresi $0400-$07e8 arasındadır. Dolayısıyla ekranı
ldx #0
lda #$20
clrscrloop:
sta $0400,x
sta $0500,x
sta $0600,x
sta $0700,x
inx
bne clrscrloop
rts
yerine
ldx #0
lda #$20
clrscrloop:
sta $0400,x
sta $0500,x
sta $0600,x
sta $06e8,x
inx
bne clrscrloop
rts
şeklinde silersen $07e8-$07ff arasını doldurmamış olursun. Bu aralıkta spriteların hafıza konumları gibi bazı önemli bilgiler mevcuttur. Bunun için yukarda düzelttiğim gibi kullanmanı tavsiye ederim.
Bakkada
3rd October 2005, 11:37
putscr opcode'mudur??
skate
3rd October 2005, 13:06
Originally posted by Bakkada@Oct 3 2005, 10:37 AM
putscr opcode'mudur??
Quoted post
yok yanlış anlaşılmış. Burda boşluklar ve tablar ile ilgili sorun yaşıyoruz tabii ki. putscr yalnızca bir label yani etiket. onun yerine "hede" de diyebilirsin, tabii ki ilerdeki tüm "putscr"ler yerine hede demek kaydıyla :)
turbo assembler, acme gibi şeylerden uzaklaşacak olursak şöyle anlatabilirim olayı. Programımız $c000'dan başlıyor diyelim ve sta $0400,x de $c036 adresinde yer alıyor
.c000 78 sei
.c001 a9 00 lda #$00
.c003 8d 20 d0 sta $d020
.c006 8d 21 d0 sta $d021
...
...
...
...
.c036 9d 00 04 sta $0400,x
...
...
şeklinde gidiyorsa hafıza adreslerinde $0400'ü 40'ar 40'ar (hex sistemde $28) arttırmak için
lda $c037
clc
adc #$28
sta $c037
lda $c038
adc #$00
sta $c038
demek gerekiyor. Yani sta $0400,x'in bulunduğu adresin bir sonrasındaki adres $0400'ün "00" bölümü onu da takip eden adres "04" kısmını birer byteda tutuyor ve biz doğrudan onları arttırıyoruz. Tabii bir de bunun için pointer kullanmak mantıklı ancak şimdi bir de ona girersem hiç çıkamayız işin içinden. Yine de Nightlord'un tutoriallarında yer alıyor olabilir. sta ($##),y olayı.
Bakkada
4th October 2005, 17:15
Arkadaslar,Nightlordun dokumani no:4'u okudugumda bazi seyleri anliyamadim.Anlayamadiklarim 16 ve 24 bitlik toplama islemleri.
Su kodu yazdigimda
lda #1
clc
adc #2
sta $0400
bu kod ekranin sol ust kosesine "B" karakterini basiyor;yanilmiyorsam "2" b harfine denk geldigi icin boyle oluyor peki matematik toplama yapip ekranin herhangi bir yerine atamiyor muyuz?Yada ASM 'de toplama islemini ekrana bastirip ne mi yapicas :)
ama su kodu yazdigimda
lda #<1
clc
adc #<1
sta #<$00
lda #>1
adc #>1
sta #<$97
bu kod calismio.Biliorum biraz salak bi kod aslinda ama neden calismadigini bulamadim.Sanirim adresleme mantigi ile ilgili bi problem war...
16bitlik toplama ve akabinde 24 bitlik toplmama konusunda sorunlarim war mantik olarak anladim ama kod yazmaya gelince calisan kod yazamiyorum....
Hmmmm salak hissettim kendimi bir an :angry:
Wisdom
5th October 2005, 01:02
Selam,
Eger tum istedigin print gibi bir islevse, kisa yoldan asagidakini kullanabilirsin:
lda #<text
ldy #>text
jsr $ab1e ; basic-rom print
Yok, eger istedigin bu tip seylerin arka tarafini ogrenmekse, o zaman arkadaslar sana yardimci oluyorlardir. :-)
(Tum post'u okumadim, tekrar olduysa kusura bakmayin.)
(Guney Hindistan'da gecenin 3:30'unda proje mailleri yazmaktan bikmis olup da foruma giren Wisdom'dan sevgiler.)
Bakkada
5th October 2005, 16:08
yok mu bana bu islemleri annaticak biri???
bu arada sunu da yazdim
lda #<text1
clc
adc #<text2
sta <$0400
lda #>text1
adc #>text2
sta >$0400
text1:
!scr "o"
text2:
!scr "t"
end:
jmp end
bu kodda bir syntax hatasi yok ama kodun yaptigi bi iste yok :) kodu calistirdigimda ekran temislenip ready yasio.
Yardimlariniz icin tesekkurler.
skate
5th October 2005, 16:56
Originally posted by Bakkada@Oct 5 2005, 03:08 PM
yok mu bana bu islemleri annaticak biri???
bu arada sunu da yazdim
lda #<text1
clc
adc #<text2
sta <$0400
lda #>text1
adc #>text2
sta >$0400
text1:
!scr "o"
text2:
!scr "t"
end:
jmp end
bu kodda bir syntax hatasi yok ama kodun yaptigi bi iste yok :) kodu calistirdigimda ekran temislenip ready yasio.
Yardimlariniz icin tesekkurler.
Quoted post
ı ıh bakkada, olayı henüz tam kavrayamamışsın. bu kodun birşey yapmaması gerekiyor zaten :)
diyelim ki "text1" etiketi hafızada $0830'a denk geliyor, "text2" ise bu durumda $0831 olur. Şimdi bakalım senin kodun ne yapıyor...
lda #<text1 = lda #$30
clc
adc #<text2 = adc #$31
sta <$0400 = sta $00
lda #>text1 = lda #$08
adc #>text2 = adc #$08
sta >$0400 = sta $04
yani senin kodun
lda #$30
clc
adc #$31
sta $00
lda #$08
adc #$08
sta $04
budur. Yaptığı iş ise
$0000 adresine $61 değerini girmek ve $0004 adresine ise $10 değerini girmektir.
Ne yapmak istediğini az çok anlar gibi oldum ancak sen şimdilik Nightlord'un çizdiği yolda ilerlemeye devam et. Ekrara "ot" bastırmak istiyorsan o zaman doğrudan
lda text1
sta $0400
lda text2
sta $0401
falan gibi birşeyler demen lazım. O toplama işlemi ancak şu durumda geçerli olur.
Şimdi sana güzel bir örnek yazayım satır satır yazı yazdırmak için
lda #<satir1
sta $fa
lda #>satir1
sta $fb
lda #<stradr1
sta $fc
lda #>stradr1
sta $fd
jsr satirbas
lda #<satir2
sta $fa
lda #>satir2
sta $fb
lda #<stradr2
sta $fc
lda #>stradr2
sta $fd
jsr satirbas
lda #<satir4
sta $fa
lda #>satir4
sta $fb
lda #<stradr4
sta $fc
lda #>stradr4
sta $fd
jsr satirbas
jmp *
satirbas
ldy #$00
loop
lda ($fa),y
beq out
sta ($fc),y
iny
cpy #$28
bne loop
out
rts
satir1 !scr "bu satir ekranin en ustunde yer alacak"
!byte 0
satir2 !scr "bu ise ikinci satir olacak"
!byte 0
satir4 !scr "bu satir dorduncu satir olarak basilacak"
!byte 0
Daha pratik yöntemler var ama bu sanırım senin için "pointer kullanımı" açısından en anlaşılanı olacaktır.
lda ($fa),y
gibi bir kulanım şunu yapar. $fa adresindeki byteı low byte ve $fb adresindeki byteı high byte olarak alır ve o adrese y değerini ekleyerek o değeri accumulator'e aktarır.
sta ($fc),y
ise aynı şekilde $fc ve $fd'den aldığı hafıza adresine y ekler ve o adrese accumulator'ün değerini yazar.
diyelimki $fa, $fb, $fc ve $fd'nin değerleri şu şekilde olsun;
$fa = $30
$fb = $08
$fc = $00
$fd = $04
ve y registerında da 5 değeri olduğunu varsayalım. Bu durumda
lda ($fa),y
sta ($fc),y
demek olur ki
lda $0835
sta $0405
bunu anlayabildiğin zaman olayı çözeceksin Bakkada :)
!align 255,0
text_source:
!scr "merhaba dunya... iste karsinizda yazdigim "
!scr "ilk scroll rutini... henuz smooth degil ama "
!scr "onemli degil. onu da bi kac gune kadar yapmis "
!scr "olacagim zaten. greetings to ali, veli, 49, 50..."
!scr "the new codemaster signs off..."
!fill $2c,$20
bu kodu aynen yazdigimizda butun text gectikten sonra belli bir miktar garip "C" karakteri ardindanda gene garip bir karaakteri belli bir miktarda basiyor ve gene textin en basina donuyor...
Ne yaptiysam olmadi ve nerden kaynaklandigini da bulamadim.... :(
Umitsizlige kapilmaya basliorum....
Not:Kod NightLord'un sitesinden alintidir.
skate
8th October 2005, 01:37
Normaldir bence. Bu sorun hep olur ve çözümü her zaman baştan ve/veya sondan 40 karakter boşluk bırakmaktır. Bir de scroll uzunluğu 256 karakteri geçtiği için sorun çıkabilir gerekli kontroller yapılmamışsa.
Edit: Kodu denedim, sorunsuz çalışıyor. Aklıma önceden yanlış compile etmiş olduğun, sonra kodu düzeltsen de ilk baştaki
!to
satırını yalnışlıkla
to
şekline çevirmiş olabileceğin (ünlemi silmiş olabilirsin) ve ondan sonra compile ettiğini sandığın halde compile edememiş olabilir misin? Bu da klasik bir hatadır çünkü.
Tabii diğer ihtimalde foruma copy&paste yaparken ilk ! karakterini seçmemiş olabilirsin :)
nightlord
8th October 2005, 12:15
Originally posted by Bakkada@Oct 7 2005, 10:18 PM
to "out.prg"
* = $c000
!align 255,0
text_source:
!scr "merhaba dunya... iste karsinizda yazdigim "
!scr "ilk scroll rutini... henuz smooth degil ama "
!scr "onemli degil. onu da bi kac gune kadar yapmis "
!scr "olacagim zaten. greetings to ali, veli, 49, 50..."
!scr "the new codemaster signs off..."
!fill $2c,$20
bu kodu aynen yazdigimizda butun text gectikten sonra belli bir miktar garip "C" karakteri ardindanda gene garip bir karaakteri belli bir miktarda basiyor ve gene textin en basina donuyor...
Ne yaptiysam olmadi ve nerden kaynaklandigini da bulamadim.... :(
Umitsizlige kapilmaya basliorum....
Not:Kod NightLord'un sitesinden alintidir.
Quoted post
selam bakkada gunlerdir sorularina cevap vermek icin bir turlu firsat bulamiyorum. gercekten ozur dilerim. neyseki burdaki diger arkadaslar sorulari yanitliyor.
simdi oncelikle scroll kodundaki problemini cozelim. yukaridaki kod parcasi aslinda 256 karakterlik bi yaziyi tekrar tekrar scroll ediyor. sen textin sonunda garip karakterer aliyorsan bu demektir ki, textin sonundan 256.karaktere kadar kalan bolum space karakterinin kodu ile dolmamis. bunu son satirdaki !fill adli ACME komutu yapiyor. senin bu problemi yasaman. o komutun islenmemesinden oluyor gibi. bu bazen acmede karsilatigim bir problem. acme'nin isledigi dosyada son komuttan sonra return ile "newline" karakteri olmasi gerekiyor. yoksa son komutu atlayabiliyor. dolayisyla son satirdan sonra bir kac kere return ile dosya sonunda birkac satirlik bosluk olusturup kaydet ve tekrar dene.
geri gelecegim... :)
Bakkada
8th October 2005, 14:05
Gec gelen edit:
@nightlord:Abi kusura bakma sanki senin kodun yanlis gibi bi izlenim yarattim alakasi yok kesin bende bir eksiklik war ama ne onu bulamadim deliricem :(
Misal ben Pre_Intro kodunu senin yazgidin gibi yazmadim aldim onume screen shot'u ekranda ne warsa onu koda yazmaya calistim cok kusel calisio ama butun scroll text bittikten sonra ornegin logocolor icin atadigim degerleri karaktere cevirip ekrana basi ornegin logo color icin $01,$02,$01,$02,$01,$02,$01,$02 yazdiysam text bittikten sonra bababababa basio ekrana ardindan gene bidolu "C" ve garip bir karakter basio sonra hop normal texte donuo...
Ne yaptiysam yemedi...
Oturdum kodu satir satir algoritma semasina doktum normalde olmamasi lazim...
He ama sunu farkettim ben acme64 calistirdigimda sole bi hata werio:
can not use !to without a vb vb vb vb default to CBM
VB:kisimlarini hatirliyamadim....
Acaba bundan mi oluo onu kavriyamadim senin sitende bintoolsuda bulamadim NightLord hocam onnarin linkini de bi ara yapistirir misin???
Yardimlar icin tesekkurler....
nightlord
8th October 2005, 16:11
selam
estafurullah benim kodda da her zaman hata olabilir. yazdiklarimi deneyip koysamda web sitesinde formating esnasinda hatalar olusabilyor.
text_source satirlari ile renk tanimi olan satirlarin arasinda !fill komutunu koyduguna emin misin? post ettigin mesajda scroll_colors bolumu yok
istersen full dosyayi koy. bi daha bakalim
bu arada bintools linki
http://nightlord.dr2.net/bintools.rar
Bakkada
8th October 2005, 19:52
Originally posted by nightlord@Oct 8 2005, 03:11 PM
selam
estafurullah benim kodda da her zaman hata olabilir. yazdiklarimi deneyip koysamda web sitesinde formating esnasinda hatalar olusabilyor.
text_source satirlari ile renk tanimi olan satirlarin arasinda !fill komutunu koyduguna emin misin? post ettigin mesajda scroll_colors bolumu yok
!align 255,0
scrolltext:
!scr "here is the very first intro-like asm code from bakkada/******** best rookie of the year"
!fill $2c,$20
burda 6 satir enter tusu basarak bosluk biraktim,calistirdim gene yemedi.scrool'u yaziyor scroolun son harfi ekrandan cikana kadar ekran temiz.ne zaman "year" kelimesinin son harfi "r" ekrandan cikiyor o zaman "C" karakteri basmaya basliyor.Ardindan da 4 karelik bir satranc tahtasi dusunun o karakteri basiyor sonra scroola geri donuyor....
Eger "scrolltext:" i herhangi baska "scrollcolor"dan once koyarsam scrollcolor daki kodlari alip karaktere ceviriyor we "baghibagibaghi...." basiyor ekrana...
Bi yerde bi hata war ama nerde...
Skate kodun calistigini solio acaba benim emulatorumun ayarinda felan mi bise war dicem bole bise yapmamasi lasim :(
DipNot:Gene clrscr yaparken $0700 kullanmisis :)
Bakkada
8th October 2005, 21:45
Ya bu arada sunu farkettim:
Nightlord'un kodunu aynen yazarsam ok calisio catir catir... ama o koddan son iki satiri silersek kalan yerlerde hemen "C" karakteri basio...
Hmmmm ilginc baktigim zaman 255 karakter de degil toplam yazilanlar
annamadim ben bu isi ama o kadar caım sıkıldı ki iki gundur demin bi benden yasca buyuk bi arkadasimla konusurken daha scrolltext yapamiyan adamdan scene ne fayda gelir sozlerinin agizamdan dokulmesine sebep oldu allah sonumu hayir etsin....
skate
8th October 2005, 21:51
@Bakkada: $0700 kullanımı çok da yanlış sayılmaz aslında. Ben Nightlord'un neden öyle kullanıdırdığını da biliyorum. Çünkü "$06e8 alaka yaw" diyecektiniz aksi taktirde. Nightlord başlangıç seviyesi tutorial yazma işinde çok iyi. Örnek olarak 3d tutoriallarında "1 KB yaklaşık 1000 bytedır" lafına hasta olmuştum. Ben ne kadar başlangıç seviyesi yazmaya çalışsam da tutamıyorum kendimi ve en baştan tüm bilgileri kesin olarak ortaya koyuyorum. Bu da insanların kafasını karıştırıyor. Ben en iyisi kendi işime bakiim de siz de adam akıllı öğrenin şu işi adım adım :)
skate
8th October 2005, 21:58
Originally posted by Bakkada@Oct 8 2005, 08:45 PM
Ya bu arada sunu farkettim:
Nightlord'un kodunu aynen yazarsam ok calisio catir catir... ama o koddan son iki satiri silersek kalan yerlerde hemen "C" karakteri basio...
Hmmmm ilginc baktigim zaman 255 karakter de degil toplam yazilanlar
annamadim ben bu isi ama o kadar caım sıkıldı ki iki gundur demin bi benden yasca buyuk bi arkadasimla konusurken daha scrolltext yapamiyan adamdan scene ne fayda gelir sozlerinin agizamdan dokulmesine sebep oldu allah sonumu hayir etsin....
Quoted post
sen sanıyormusun ki nightlord her kodu ilk yaptığı gibi çalışıyor? hemen sana "Living - Behind The Scenes" olayına giriim de anla olayı. Mesela 320 dot torus partı önceden 284 dotdan mı ne oluşuyordu. Ayrıca çok daha küçük bir alanda ve daha abzürt 3d bir şekil vardı. Bir de müzik çalmıyordu ilk versiyonunda. Nightlord müziği eklediğinde ise zaman zaman efektte zaman yetmemelerinden dolayı atlamalar falan olmaya başladı. Aradan bir iki hafta geçti, bir baktım manyak herif efekti fullscreen yapmış, dot sayısını 320'ye çıkarmış, müzik çatır çatır çalıyor + loader eklenince bile problem çıkmıyor. Yani herşey aşama aşama olur. Sen sonuca bakacaksın :) Scroll rutinini adam etmen günler sürdü diyelim. Eee? Ne farkeder. Sonunda oldu mu olmadı mı? Olmadıysa da gayet normal, ilk kod denemen. Ben bazı efektleri efekt ilk yapıldığından 10-15 sene sonra çözdüm. Noolcak? Sonuçta çözdüm :)
Nightlord: Umarım "behind the scenes" olayı için kusuruma bakmazsın, döktük kirli çamaşırları ortaya :P
Bakkada
8th October 2005, 21:58
Originally posted by skate@Oct 8 2005, 08:51 PM
@Bakkada: $0700 kullanımı çok da yanlış sayılmaz aslında. Ben Nightlord'un neden öyle kullanıdırdığını da biliyorum. Çünkü "$06e8 alaka yaw" diyecektiniz aksi taktirde. Nightlord başlangıç seviyesi tutorial yazma işinde çok iyi. Örnek olarak 3d tutoriallarında "1 KB yaklaşık 1000 bytedır" lafına hasta olmuştum. Ben ne kadar başlangıç seviyesi yazmaya çalışsam da tutamıyorum kendimi ve en baştan tüm bilgileri kesin olarak ortaya koyuyorum. Bu da insanların kafasını karıştırıyor. Ben en iyisi kendi işime bakiim de siz de adam akıllı öğrenin şu işi adım adım :)
Quoted post
Adim adim ogrenices de istedigimis uzunlukta bi texti ekrana basan rutini yazamadik orasi nolucak???
Bi sure ara wersem ii olucak galiba ASM'ye...Yada icimden 10'a kadar sayip derin nefes aliiim ben....
Gec gelen edit:Ben 15 sene sonra 40 yasinda olucam :P
nightlord
9th October 2005, 00:28
bakkada scroll kodu dikkat edersen c100 ile c1ff arasindaki 256 karakteri scroll ediyor. dolayisiyla hic abuk karaker gormemen icin bahsi gecen 256 adreste hic abuk karakter kodu olmamasi lazim.
yani bu adreslerde basta scroll etmesini istedigin mesajin harflerinin kodlari bulunmali. onlarin bittigi yerden itibaren c1ff'e kadar arta kalan baytlari da bosluk tusunun karakter kodu ile doldurmalisin.
benim versiyonumda yazdigim mesajdaki toplam karakter sayisi 212 oldugu icin mesajdan sonraya 44 ($2c) adte de bosluk karakteri fill ediyorum. sen farkli bir mesaj yazdigin icin senin bosluk doldurman gereken bellek miktari degisik olabilir.
ayni sebepten benim koddan son satirlari kaldirirsan fill komutunu kaldirmis olacagin icin c1d4'ten itibaren bosluk kodlari ile doldurmadigimiz bolge bilgisayar acildiginda o bellek bolgesinde default olarak hangi degerler varsa onlarla dolu kalacak. bunlar da abuk kodlar olarak gorunecek. mesela o bolge 0 ile dolu olursa 0 at isaretinin karakter kodu oldugu icin at isareti (yani senin hakli olarak garip C dedigin karakter) cikacak mesajin sonunda artan bolgede.