Merhaba, Ziyaretçi. Lütfen giriş yapın veya üye olun.

Kullanıcı adınızı, parolanızı ve aktif kalma süresini giriniz

  Gelişmiş Arama
insanın içinde varsa, commodore.gen.tr açığa çıkarır bunu.. bir nevi retro olaylarının dolunayıyız.(Arda)
commodore.gen.trCommodoreCommodore Yazılımcgtr intro yapıyoruz-6(text fade)
Sayfa: [1]   Aşağı git
Yazdır
Gönderen Konu: cgtr intro yapıyoruz-6(text fade)  (Okunma Sayısı 4287 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
joker_
Deneyimli
*****
Mesaj Sayısı: 2.120



Üyelik Bilgileri
« : Şubat 28, 2014, 22:49:56 ÖS »

evet intromuza devam ediyoruz.

Şimdiki efektimiz text fade.Bu efektte ekrandaki mesaj,silinip yerine başka mesaj çıkıyor.Efekt ile daha detaylı açıklamayı,Hades'in yazdığı c64Türkiye dergisinde bulabilirsiniz.

Source kodları.

Kod:
!to"text_fade.prg",cbm

text_fade_charset = $2800

text_fade_satiri = $06b2

text_renk_satiri = $dab2

kapanis_renk_satiri = $dab2

                * = $0801 ;<--Kodumuzun başlangıç adresi

jsr $e544 ;<--Ekran silme

lda #$00 ;<--siyah renk kodu
sta $d020 ;<--Dış ekran
sta $d021 ;<--İç ekran

ldx #0
lda #$00
- sta $da00,x
sta $db00,x
inx
bne -
;====Burada irq ayarlarımızı yapıyoruz=======

               sei

lda #$7f
               sta $dc0d

               lda #$01
               sta $d01a

lda #$00
sta $dc0e

               lda #$1b
               sta $d011

lda #$10
sta $d012

lda #<irq
sta $0314
lda #>irq
  sta $0315
 
               cli
jmp *

;====irq 'ya giriyoruz=======
irq
inc $d019

lda #$1a
sta $d018

jsr text_fade

lda #$ff
sta $d012

jmp $ea81

;============ text fade rutinimiz =======================
text_fade
;Diğer satırı yazdırmadan önce bir süre bekliyoruz.
lda count ;text fade'in degisme süresi
cmp #$50
beq +

inc count ;text fade counter'ı bir arttırıyoruz.

rts
+
ldx #$00
fade_loop lda fade_text,x ;ilk satıra mesajimizi basiyoruz
cmp #$00 ;text'in sonuna gelip gelmediğimizi kontrol ediyoruz.
bne fade_devam ;eğer gelmediysek devam ediyoruz

;eğer text'in sonuna geldiysek mesajimizi başa alıyoruz.

lda #<fade_text ;mesajin alçak byte'ını
sta fade_loop+1 ;okuma alanının alçak byte'ına
lda #>fade_text ;yüksek byte'ını
sta fade_loop+2 ;okuma alanının yüksek byte'ına kopyalıyoruz.

rts ;rutinden çıkıyoruz.

;okuduğumuz mesaji ekranda görülmesini istediğimiz satira yazıyoruz.
fade_devam sta text_fade_satiri,x

inx ;sayacımızı 1 arttırıyoruz
cpx #20 ;mesajimiz 20 karakter genişliğinde olduğundan
bne fade_loop ;kontrol ediyoruz,olmadıysa tekrar geri gidiyoruz.

;burada mesajimizin renkli bir şekilde açılmasını yapıyoruz.

lda renk_count ;tablodaki renklerimizin sayısını tutacak bir counter oluşturuyoruz.
cmp #00 ;counter'ın sıfır olup olmadığını kontrol ediyoruz.
beq ++ ;eğer sıfır olduysa atla.

dec renk_count ;counter'ımızı 1 azaltıyoruz.

ldx #$00
ldy renk_count ;renkleri tutan counter'ın o anki değerini y register'ına kopyalıyoruz
-- lda text_renk,y ;renk değerlerinin tutulduğu tabloya gidip,y mesafedeki rengi okuyoruz.
acilis_renk_satir sta text_renk_satiri,x ;okuduğumuz rengi renk register'ına veriyoruz.
inx ;counter'ı 1 arttırıyoruz.
cpx #20  ;okuduğumuz ve renk register'ına yazdığımız rengi 20 karakter boyunca kopyalıyoruz.
bne --
rts
++
lda text_count ;ekran da alt alta 3 tane text göstereceğimiz için
cmp #2 ;text sayisini kontrol ediyoruz.Counter 0 dan başladığından (0 1 2) yani 3 olup
beq + ;olmadığını kontrol ediyoruz.
;alt satira yaz
inc text_count ;counter'ı 1 arttırıyoruz.

;bir satiri yazıp,diğer satira geçmeden önce yazacağımız satira ait değerleri
;set ediyoruz

lda fade_loop+1 ;text mesajini
clc ;20 karakter ileriden okuyacak şekilde
adc #20 ;text'i kopyaladığımız okuma alanının
sta fade_loop+1 ;alçak byte'ını arttırıyoruz.

bcc ++ ;eğer 256 olmadıysa devam et

inc fade_loop+2 ;256'yı geçtiyse okuma alanının yüksek byte'ını 1 arttır.
++
;text okuma alanında yaptığımız işlemleri
;text'i ekrana bastığımız kısma da yapıyoruz.

lda fade_devam+1
clc
adc #$50
sta fade_devam+1

bcc ++

inc fade_devam+2
++
;aynı işlemi text renklerimizi ekrana bastığımız
;kısım içinde yapıyoruz.

lda acilis_renk_satir+1
clc
adc #$50
sta acilis_renk_satir+1

bcc ++

inc acilis_renk_satir+2

++
lda #$00 ;textleri değiştirmek için
sta count ;bekletme yaptığımız counter'ı sıfırlıyoruz.

lda #32 ;text renklerinin counter'ına
sta renk_count ;32 yazıyoruz.
;burada renklerin sayısını tutan counter'a 32 yazmamızın nedeni
;text renk tablomuzda 32 renk vardır.Bu  renkler açık yeşilden başlayıp
;siyaha doğru değişerek gitmektedir.Biz tablonun sonundan okumaya başlayarak,geriye duoğru okuyoruz ve son renk ekranda kalıyor.
;texti ekrandan silerken yine aynı tabloyu kullanacağımızdan 2 farklı tablo kullanmak
;zorunda kalmıyoruz.
rts
;üc satir olduysa eger ekrandaki text'i sırayla siliyoruz
+
lda kapanis_renk_count ;yukarıda text'e renk verirken yaptığımız işlemi yapıyoruz.
cmp #32 ;fakat buradaki tek fark tablodaki renk değerlerini sondan değil baştan okuyoruz.
beq ++

inc kapanis_renk_count

ldx #$00
ldy kapanis_renk_count
-- lda text_renk,y
kapanis_renk sta kapanis_renk_satiri,x
inx
cpx #20
bne --
rts
++
lda renkli_satir_sayac
cmp #2
beq +++

inc renkli_satir_sayac

lda kapanis_renk+1
clc
adc #$50
sta kapanis_renk+1

lda kapanis_renk+2
adc #$00
sta kapanis_renk+2

lda #00
sta kapanis_renk_count
rts

+++
; burada artık ekrandaki text'imizi sildik.

;yeni text'i basacağımız text alanın başa alıyoruz.

lda #<text_fade_satiri
sta fade_devam+1
lda #>text_fade_satiri
sta fade_devam+2

;aynı işlemi açılış renk alanı ve
lda #<text_renk_satiri
sta acilis_renk_satir+1
lda #>text_renk_satiri
sta acilis_renk_satir+2

;kapanış renk alanı için yapıyoruz

lda #<kapanis_renk_satiri
sta kapanis_renk+1
lda #>kapanis_renk_satiri
sta kapanis_renk+2

;text'imizi 20 karakter ileriye taşıyarak
;en son satirda kalan text'in ekrana yeniden basılmasını
;engelliyoruz.

lda fade_loop+1
clc
adc #20
sta fade_loop+1

bcc ++ ;eğer 256 olmadıysa devam et

inc fade_loop+2
++
;burada counter değerlerimizi sıfırlıyoruz.

lda #$00
sta count
sta text_count
sta renkli_satir_sayac
sta kapanis_renk_count

lda #32 ;text renklerinin counter'ına
sta renk_count ;32 yazıyoruz.Çünkü ilk satıra geri dönceğiz ve counter'ımızı en son sıfırlamıştık.
rts

;=========== kodumuzun sonu ======================

count
!by 0
text_count
!by 0
renk_count
!by 32

kapanis_renk_count
!by 0

renkli_satir_sayac
!by 0
text_renk

!by $0d,$05,$05,$05
!by $03,$03,$03,$03
!by $0f,$0f,$0f,$0f
!by $03,$03,$03,$03
!by $05,$05,$05,$05
!by $08,$08,$08,$08
!by $09,$09,$09,$09
!by $00,$00,$00,$00


;======================================================
fade_text
!scr "  commodore.gen.tr  "
!scr "      uyelerine     "
!scr "    sevgilerimle    "
!scr "bu introdaki kodlari"
!scr "     kullanarak     "
!scr "       sizde        "
!scr "    bir seyler      "
!scr "  uretebilirsiniz   "
!scr "      hatta         "
!scr "    7dx partide     "
!scr "yayinlayabilirsiniz "
!scr "                    "

!by 0

;=============text fade için karakter seti==========

* = text_fade_charset
!bin "text_fade_charset.prg",,2


* text_fade.png (1.37 KB, 384x272 - Görüntüleme: 1672 kez.)
* text fade.zip (5.26 KB - Yükleme: 270 kez.)
Logged
LW3D
Yönetici
*****
Mesaj Sayısı: 11.418


Günü Kurtaran Avam Hiooargggh :)


Üyelik Bilgileri WWW
« Yanıtla #1 : Mart 01, 2014, 21:19:55 ÖS »

O kadar ters bir zamanda yayınladın ki deneyemediğim yazamadığım için, çok canım sıkılıyor Yinede çok teşekkürler...
Logged

joker_
Deneyimli
*****
Mesaj Sayısı: 2.120



Üyelik Bilgileri
« Yanıtla #2 : Mart 01, 2014, 22:21:16 ÖS »

Olsun sonucta forumda kaynak olarak dursun,vaktin olunca denersin
Logged
Simon (Özay Turay)
Yönetici
*****
Mesaj Sayısı: 7.757


Commodore Forever


Üyelik Bilgileri WWW
« Yanıtla #3 : Mart 02, 2014, 05:11:54 ÖÖ »

Evet forumun en güzel yanı da bu zaten. Gözden kaçırsan bile birisi hortlatıyor ya da Kim Nerede bölümünü incelerken karşına çıkıveriyor.

Bu arada ben denedim, gayet hoş olmuş. Müsait zamanda inceleyeceğim kaynak kodunu. Ben denemelerimde bu aşamaya hiç gelememiştim.
Logged

https://retrodergi.com - https://e-turay.com - https://karizmawow.e-turay.com

Retro: Commodore 64, Amiga 500, Amiga 1200
Retromsu: Wii, XBox360, XBox, PS3 Slim, PS2 FAT, PS1, PS Vita, Nintendo 3DS, Nintendo 2DS
Sayfa: [1]   Yukarı git
Yazdır
Gitmek istediğiniz yer: