Gönderen Konu: SID çalmak, LOGO göstermek  (Okunma sayısı 12691 defa)

SID çalmak, LOGO göstermek

« : 10.03.2006 14:55:43 »
Hızlı düğmeleri aç

PE&OAS

İleti: 377

Çevrimdışı
  • ****
  • Sr. Member
    • Profili Görüntüle
Selamlar, uzun bir aradan sonra yeniden 6510 ASM ile ilgili bir mesaj atabildim...

1. Elimizdeki sidleri nasıl introlarımıza ekleyebiliriz? Hangi adreslere koyup, nereden çaldıracaz?
2. Ekrana logo, resim nasıl basacaz? Aynı şekilde nereye koyup nasıl çalıştıracaz?

şimdiden teşekkürler...

SID çalmak, LOGO göstermek

« Yanıtla #1 : 10.03.2006 15:01:31 »
Hızlı düğmeleri aç

Ragnor

İleti: 901

Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://ozanemirhan.blogspot.com
Ohooo abi sende, istersen kodu senin için yazsınlar?
şaka maka bende merakla bekliyorum bu cevabı, malum bu konu hakkındaki her bilgi parçası değerli benim için :).

Aklıma gelmişken c64 türkiye dergisi'de c64 asm için süper kaynakmış yeniden keşfettim, vaktinde fark etmemişim, sağol hades :).

SID çalmak, LOGO göstermek

« Yanıtla #2 : 10.03.2006 15:37:52 »
Hızlı düğmeleri aç

nightlord

İleti: 1.085

Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.nightnetwork.org
@ragnor bu arada nightlord.dr2.net'e de bi bakabilirsin orda da bi kac tutorial var. site yeni haliyle daha deneme yayininda.

@peandoas: muzikler genelde $1000 $2000 arasini kaplar. once bi

jsr $1000
cekilerek sarki baslangic durumuna getirilir. akabinde

$jsr$1003

her interruptta yani ekranin her cizilisinde (saniyede 50 defa) bir kere cagirilir.

logo olayi icin daha uzun aciklama lazim. anlasildi bu hafta sonu nicedir soz verip de yazamadigim (bakkada pardon abi) VIC tutoriallerine baslamak gerekiyor.

SID çalmak, LOGO göstermek

« Yanıtla #3 : 10.03.2006 15:42:42 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
Alıntı
Originally posted by PE&OAS@Mar 10 2006, 02:55 PM
Selamlar, uzun bir aradan sonra yeniden 6510 ASM ile ilgili bir mesaj atabildim...

1. Elimizdeki sidleri nasıl introlarımıza ekleyebiliriz? Hangi adreslere koyup, nereden çaldıracaz?
2. Ekrana logo, resim nasıl basacaz? Aynı şekilde nereye koyup nasıl çalıştıracaz?

şimdiden teşekkürler...
[post=5812]Quoted post[/post]
[/b]
Müzikler genellikle kendi playerlarını içerdikleri için işin kolay. Diyelim ki müziğin başlangıç adresi $1000 olsun ki bu çok sık kullanılan bir adrestir introlarda. Öncelikla accumulator'e çalmak istediğin trackin numarasını verir ve müziğin başlangıç adresine JSR ile gidersin. SIDler birden fazla track yani farklı müzik içerebilirler. Eğer tek müzik varsa sıfır vermen yeterlidir acuye. Örnek

lda #$00
jsr $1000

Bunu yaptığın zaman müziği initalize etmiş olursun, yani müzik başa alınmış ve 0. track çalınmaya hazır demektir.

daha sonra genellikle $1003 ve bazen de $1006 adreslerine JSRlemen gerekir müziği çalmak için. Bunu saniyede 50 defa yani her taramada yapman lazım. Örnek:

jsr $1003

Ama bunu;

muzikCal:
jsr $1003
jmp muzikCal

Bu şekilde yaparsan çok hızlı çalar. Bunun için tarama bekletmen lazım. Örnek:

muzikCal:
lda #$80
taramaBeklet:
cmp $d012
bne taramaBeklet
jsr $1003
jmp muzikCal

gibisinden. Ama asıl yöntem Interrupt rutini kullanmaktır. Bu konuyu da yazsam diyordum ancak iyiden iyiye kafan karışır ve ezbere yapmaya başlarsın. Bunun için bu güne kadar yayınlanmış dökümanlarda "interrupt" ya da "kesme" rutinleri konusunu bir araştırıver. $0314, $0315, $0318, $0319, $fffe, $ffff ve $dc0d, $dc0e, $d01a gibi adreslerin nasıl kullanıldığını araştır, "sei", "cli", "rti" op kodlarını da incele.

Logo basmanın çok çeşitli yolları var. Hangi modda çiziyorsun önce onu söyle.

SID çalmak, LOGO göstermek

« Yanıtla #4 : 10.03.2006 15:43:25 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
Alıntı
Originally posted by nightlord@Mar 10 2006, 03:37 PM
@ragnor bu arada nightlord.dr2.net'e de bi bakabilirsin orda da bi kac tutorial var. site yeni haliyle daha deneme yayininda.

@peandoas: muzikler genelde $1000 $2000 arasini kaplar. once bi

jsr $1000
cekilerek sarki baslangic durumuna getirilir. akabinde

$jsr$1003

her interruptta yani ekranin her cizilisinde (saniyede 50 defa) bir kere cagirilir.

logo olayi icin daha uzun aciklama lazim. anlasildi bu hafta sonu nicedir soz verip de yazamadigim (bakkada pardon abi) VIC tutoriallerine baslamak gerekiyor.
[post=5817]Quoted post[/post]
[/b]
aynı anda cevap vermişiz kardeşim, sen önce post etmişsin :)

SID çalmak, LOGO göstermek

« Yanıtla #5 : 10.03.2006 18:01:37 »
Hızlı düğmeleri aç

Bakkada

İleti: 1.073

Çevrimdışı
  • *****
  • Hero Member
    • Profili Görüntüle
Alıntı
Originally posted by nightlord@Mar 10 2006, 03:37 PM

logo olayi icin daha uzun aciklama lazim. anlasildi bu hafta sonu nicedir soz verip de yazamadigim (bakkada pardon abi) VIC tutoriallerine baslamak gerekiyor.
[post=5817]Quoted post[/post]
[/b]
Estafullah....

SID çalmak, LOGO göstermek

« Yanıtla #6 : 10.03.2006 18:42:35 »
Hızlı düğmeleri aç

PE&OAS

İleti: 377

Çevrimdışı
  • ****
  • Sr. Member
    • Profili Görüntüle
@skate: aslında elimde hiç logo yok, ancak diyelim ki WDPaint gibi bir program ile çiz(dir)iyorum. (şu aralar en çok o kullanılıyor ya o bakımdan.)

SID çalmak, LOGO göstermek

« Yanıtla #7 : 10.03.2006 20:44:31 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
Alıntı
Originally posted by PE&OAS@Mar 10 2006, 06:42 PM
@skate: aslında elimde hiç logo yok, ancak diyelim ki WDPaint gibi bir program ile çiz(dir)iyorum. (şu aralar en çok o kullanılıyor ya o bakımdan.)
[post=5842]Quoted post[/post]
[/b]
O zaman işin basit. Yanlış hatırlamıyorsam WDPaint ile PRG kaydettiğinde;

$5800-$5be8 -> Renk Datası
$5c00-$5fe8 -> Ekran Datası
$6000-$7f40 -> Bitmap Datası

olarak kaydediliyor. Ekrana resmi basmak için;

Kod: [Seç]
lda #$02
sta $dd00
lda #$3b
sta $d011
lda #$d8
sta $d016
lda #$78
sta $d018
ldx #$00
renkDongusu:
lda $5800,x
sta $d800,x
lda $5900,x
sta $d900,x
lda $5a00,x
sta $da00,x
lda $5ae8,x
sta $dae8,x
inx
bne renkDongusu

demen yeterli olacaktır. Açıklamasına gelince;

$dd00'a $02 vererek $4000-$7fff arasındaki banka geçiyoruz.
$d011'e $3b vererek bitmap ekranı açıyoruz.
$d016'ya $d8 vererek (dilerseniz $18 de verebilirsiniz, benim alışkanlığım bu) multicolor yani çok renkli 160x200 grafik moduna geçiyoruz.
$d018'e $78 verdiğimizde "7" $5c00'ı işaret ediyor (daha önceki bir postumda detayları var bunun), "8" ise $6000'deki datalara denk geliyor.
Daha sonraki döngü ise $5800'den $5be8'e kadar olan renk datalarını $d800'e kopyalayarak renklerin ekranda gözükmesini sağlıyor.

Hepsi bu. Elbetteki bir de iç ekranın arkaplan rengi vardır. Onu da $d021 ile set edebilirsiniz. Örneğin WDPaint'de Koyu Gri kullandıysanız arkaplan rengi olarak;

lda #$0b
sta $d021

demeniz gerekli. Çerçeve rengi ise $d020 ile değiştirilebilir.

Son olarak orjinal koala modeundan bahsediim. Tek farkı renk ve ekran datalarının yerleşimidir.

$6000-$7f40 -> Bitmap Datası
$7f40-$8328 -> Ekran Datası
$8328-$8710 -> Renk Datası

şeklindedir. Çok da bir farkı yok anlayacağınız ancak ekran datası tam $400'lük bir alana oturmadığı için onu da transfer etmek gerekir bir yere, farkı budur.

Umarım yardımcı olabilmişimdir.

SID çalmak, LOGO göstermek

« Yanıtla #8 : 10.03.2006 20:47:34 »
Hızlı düğmeleri aç

PE&OAS

İleti: 377

Çevrimdışı
  • ****
  • Sr. Member
    • Profili Görüntüle
çok sağolun skate, nightlord... bide diyelim resmi basacağımız zaman hafızaya ne olarak atacaz? mesela müzikler $1000,$2000 arasıda, o araya ne zaman, ne formatta koyduk? bunuda bi açıklarsanız :) ...

SID çalmak, LOGO göstermek

« Yanıtla #9 : 10.03.2006 20:50:17 »
Hızlı düğmeleri aç

PE&OAS

İleti: 377

Çevrimdışı
  • ****
  • Sr. Member
    • Profili Görüntüle
bir soru daha soracağım hazır sid konusu açılmışken:

sidplayer'da şöyle bir ibare oluyor ya 50 hz VBI filan diye, bazen VBI yerine CIA yazıyor... bu neden, VBI nedir, CIA ile ne alakası var müziğin? 50 hzyi anladım yukardaki mesajlardanda...

SID çalmak, LOGO göstermek

« Yanıtla #10 : 10.03.2006 21:12:48 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
Alıntı
Originally posted by PE&OAS@Mar 10 2006, 08:47 PM
çok sağolun skate, nightlord... bide diyelim resmi basacağımız zaman hafızaya ne olarak atacaz? mesela müzikler $1000,$2000 arasıda, o araya ne zaman, ne formatta koyduk? bunuda bi açıklarsanız :) ...
[post=5845]Quoted post[/post]
[/b]
Yazdık ya olm adresleri yukarda işte. Ama istersen transfer de edebilirsin başka yerlere. Örnek olarak BITMAP dataları için;

$2000-$3f40
$4000-$5f40
$6000-$7f40
$8000-$9f40 (*)
$a000-$bf40
$c000-$df40 (*)
$e000-$ff40

gibi aralıkları kullanabilirsin. Ancak (*) olan aralıkların yalnızca bir bölümünü kullanabilirsin, ROM'da özel yerlere denk geldiği için bu aralıklarda RAM'ı görüntüleyemediğin yerler var çünkü.

Hangi bankta olduğuna göre boş alanlara ekran datalarını transfer edip $d800'e de renk datalarını transfer etmek ve $d018'i hafıza düzenine göre ayarlamak gerekir.

Müziklerin genellikle $1000 adresinde yer alma nedeni ise bu adreslere grafik ve karakter set datası konulamamasıdır. Aslında siz grafik datası koyabilirsiniz elbetteki bu alana ancak her zaman ROM okunur bu alanda. Aynısı yanlış hatırlamıyorsam kartuş ROM'u için de geçerliydi. $9000 adresinde de benzer bir sorun yaşarsınız. Yıllar içersinde refleks olarak hiç kullanmamaya başlıyor insan bu alanları zaten.

SID çalmak, LOGO göstermek

« Yanıtla #11 : 10.03.2006 21:18:20 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
Hemen birşey daha ekleyeyim. $c000 gibi alanlar fullscreen grafik datası koymak için ideal olmasa da (hatta bence en kötü seçim!) örnek olarak ekranın en üstünden 72 pixel (9 karakter satırı) kaplayan bir logonun tüm dataları (ekran ve renk de dahil olmak üzere) $c000-$cfff arasına sığacaktır. Ekranın geri kalanını $d012 ile taramayı yakalatıp başka bir karakter ya da grafik ekranına çevirebilirsiniz.

Size biraz daha trick versem Glance'in 2. demosunu geçeceksiniz :P

SID çalmak, LOGO göstermek

« Yanıtla #12 : 10.03.2006 21:21:40 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
Alıntı
Originally posted by PE&OAS@Mar 10 2006, 08:50 PM
bir soru daha soracağım hazır sid konusu açılmışken:

sidplayer'da şöyle bir ibare oluyor ya 50 hz VBI filan diye, bazen VBI yerine CIA yazıyor... bu neden, VBI nedir, CIA ile ne alakası var müziğin? 50 hzyi anladım yukardaki mesajlardanda...
[post=5846]Quoted post[/post]
[/b]
Bu olay biraz karışık aslında. Bildiğim kadarıyla VBI tarama hızı yani PAL'da 50 Hz, NTSC'de (Amerika'nın formatı) 60 Hz'e denk geliyor. CIA ise default olarak 60 Hz. Ancak bu da NTSC'de az daha hızlı. Dolayısıyla NTSC makineler VBI kullanıldığında müzikleri %20 daha hızlı çalıyorlar ancak CIA kullanıldığında %3-4 gibi daha düşük bir hız farkı oluyor. Ama hepsini atıyor da olabilirim, emin değilim tam. :) Nightlord beni düzelt lütfen.

SID çalmak, LOGO göstermek

« Yanıtla #13 : 10.03.2006 21:39:07 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
Hazır yeri gelmişken hemen belirteyim. NTSC daha mı hızlı PAL'den? Belki çok çok az daha hızlı ancak %20lik bir fark yok esasen. O tarama hızı farkı PAL'de 312, NTSC'de ise 263 raster satırı olmasından kaynaklanıyor. Gerçi NTSC'de her satırda 65, PAL'de ise 63 cycle var ancak bu sonucu çok da fazla etkilemiyor.

PAL -> 312 x 63 = 19656 cycle
NTSC -> 263 x 65 = 17095 cycle

Gel gelelim 1 sn'de toplam cycle sayısına

PAL -> 19656 x 50 = 982800
NTSC -> 17095 x 60 = 1025700

NTSC/PAL = 1025700 / 982800 = 1,04365

gibi bir farka sahip. Yani 60 Hz diye %20 daha çok cycle yok NTSC'de.

SID çalmak, LOGO göstermek

« Yanıtla #14 : 11.03.2006 13:15:45 »
Hızlı düğmeleri aç

PE&OAS

İleti: 377

Çevrimdışı
  • ****
  • Sr. Member
    • Profili Görüntüle
Alıntı
Originally posted by skate+Mar 10 2006, 09:12 PM-->
QUOTE(skate @ Mar 10 2006, 09:12 PM)
\n\t\t\t\t\t\t\t\t\t
<' + '/div>\n\t\t\t\t\t\t\t\t\t