|
Konu Başlığı: cgtr intro yapıyoruz-2(müzik çaldırma) Gönderen: joker_ üzerinde Şubat 18, 2014, 22:25:22 ÖS İntromuza ilk girişi yaparak ekranı temizledik.Tabii olmazsa olmaz müzik çaldırma işlemi var sırada,boş ekrana birazcık hareket getirmeye başlayalım.
Burada sizlere .sid uzantılı bir dosyayı,c64'de introlarımızda nasıl kullanabileceğimizi anlatıcam. .sid uzantılı müzikleri,c64'de kullanabilmemiz için,paketleme esnasında başına eklenen header'ları silmemiz gerekiyor.Müziği önce sid player'da açıp,başlangıç adreslerine bakıp,sonrada header'ı sileceğiz.İntrolardaki müzikler genelde $1000'den başlar.Bizde yine $1000'den başlayan müziklere bakalım. Ekte bizim grubun usta müzisyeni slowhand'in "little secret" isimli .sid olarak kayıt edilmiş müziği var.İntromuzda bu müziği kullanacağız.Şimdi bu .sid'i prg ye çevirelim. Bu işlemi yapabilmemiz için bize hex editör gerekecek.Ben bu işlem için XVI32 isimli editörü kullanıyoum.Alışkanlık olsa gerek bana gayet basit geliyor. http://www.chmaas.handshake.de/delphi/freeware/xvi32/xvi32.htm (http://www.chmaas.handshake.de/delphi/freeware/xvi32/xvi32.htm) Hex editörü açıp,sid'imizi yüklüyoruz.Sürükle bırakta yapabilirsiniz.Hex editörün sağ tarafında zaten header görülüyor.Müziğimiz $1000'den başladığı için,hex editörde, 00 10 4c xx xx 4c şeklinde bir kısım bulmamız lazım.Dikkat ederseniz 78 den başlayan satırın,başlarında 00 00 00 00 00 10 4c 40 10 4c aradığımız bölümü görüyoruz. Şimdi imlecimizi 00 10'dan bir önceki 00'ın üzerine getiriyoruz,Edit/Delete To Cursor diyerek header'ı uçuruyoruz. Hex editördeki dosyamız 00 10 4c 40 10 şeklinde başlamalı ve devam etmeli. File/Save As diyerek yeni dosyamızı music.prg olarak kaydediyoruz. Artık elimizde c64 intromuzda kullanabileceğimiz bir müzik dosyası var.Bu dosyayı kodumuzda nasıl göstereceğiz? İntro adımızın yazdığı yerin altına aşağıdakileri ekliyoruz. music = $1000 ;<--müzik dosyamızı hafızanın $1000 nulo adresinden itibaren yüklüyoruz. music_play = music+3 ;<--müzik dosyalarının içerisinde player'ları gömülü geldiğinden genellikle $1003 adresinden itibaren çalışmaya başlarlar. Kodumuzun en altında da,müzik dosyasının yükleneceği yeri belirtiyoruz.; * = music !bin "music.prg",,2 Daha sonra irq rutinine girmedne önce müziğimizi başa almamız gerekiyor. lda #$00 ;<--Bazı müziklerin içerisinde birden çok sample vardır.Bu durumda biz hangi sample'ı çaldırmak istiyorsak buraya o sample numarasını yazıyoruz. jsr music irq rutinine girip,uygun bir yerde jsr music_play diyerek müziğimizi çaldırıyoruz. Konu Başlığı: Ynt: cgtr intro yapıyoruz-2(müzik çaldırma) Gönderen: Tesellum üzerinde Haziran 29, 2014, 15:47:26 ÖS Sevgili Joker, Burada oluşturduğumuz music.prg dosyasını basic programımız çalışırken arka planda çalmasını nasıl sağlarız?
Konu Başlığı: Ynt: cgtr intro yapıyoruz-2(müzik çaldırma) Gönderen: wizofwor üzerinde Haziran 29, 2014, 19:48:07 ÖS SID müzikleri IRQ tabanlı olarak çalındığından bu dediğini yapmak mümkün. Ancak hafızada müziği koyacak yer bulmak şartıyla.
Yukarıdaki örnekte Slowhand'in müziği hafızada $1000-$1400 adresleri arasına yerleşiyor. Burası Basic belleğinin tam göbeği. Basic pointerla oynayarak bir şeyler yapmaya çalıştım ama benim tecrübem burada yetersiz kalıyor. Bilgisayar Basic'e döndüğü anda syntax eror verip kilitleniyor. Aslında tam kilitleniyor demek doğru olmaz. Irq'da sorun yok. Müzik çalmaya devam ediyor kursor geri gelmiyor. İncelemek isteyenler için kodu github'a yükledim. https://github.com/wizofwor/C64-Trial-and-Error/blob/master/muzik-in-basic/music.asm Konu Başlığı: Ynt: cgtr intro yapıyoruz-2(müzik çaldırma) Gönderen: Tesellum üzerinde Haziran 30, 2014, 01:03:10 ÖÖ teşekkürler inceliyorum.
Konu Başlığı: Ynt: cgtr intro yapıyoruz-2(müzik çaldırma) Gönderen: Simon (Özay Turay) üzerinde Haziran 30, 2014, 08:53:11 ÖÖ wizofwor o halde seni böyle alalım. :)
http://www.linusakesson.net/software/sidreloc/ (http://www.linusakesson.net/software/sidreloc/) Konu Başlığı: Ynt: cgtr intro yapıyoruz-2(müzik çaldırma) Gönderen: Simon (Özay Turay) üzerinde Haziran 30, 2014, 08:54:22 ÖÖ Bu arada opensource olmuşsun, github'ın hayırlı olsun. :)
Konu Başlığı: Ynt: cgtr intro yapıyoruz-2(müzik çaldırma) Gönderen: wizofwor üzerinde Haziran 30, 2014, 09:58:39 ÖÖ sidreloc'u dün gece buldum. SID'i güzelce $c000 adresine yerleştirdim. ML kodunu da $9F00'e aldım. Basic'in sonun gösteren TOM (Top of Memory) pointerını da $9F00'e aldım. Bu durumda RTS ile basic'e dönebilmem gerekiyordu ama yine olmadı. RTS'den sonra Basic kilitlenmeye devam ediyor.
Bu arada opensource olmuşsun, github'ın hayırlı olsun. :) Biraz modaya uyalım dedik :) Git'in de kafasını bayağı bir karıştırmayı başardığım için, söylediğim değişiklikleri Github'a gönderemedim. Akşama halledeceğim inşallah.Konu Başlığı: Ynt: cgtr intro yapıyoruz-2(müzik çaldırma) Gönderen: wizofwor üzerinde Haziran 30, 2014, 22:59:12 ÖS Basic'e döndüğümde aldığım syntax error haricinde olayı çözdüm.
SID'i $c000'a taşımak tek başına yeterli değil. SID player'ın kullandığı zeropage adresslerinin de BASIC'le çakışmadığından da emin olmak gerekiyor. Bunun için sidreloc'un -z parametresi var. Kullanılan zp adreslerini Kernel ve Basic rutinlerinin bulaşmadığı fb-fe aralığına aldım. Son olarak örnekteki IRQ rutinin olduğu gibi kullanmıştım. En sonda $ea81'e atlıyormuş. $ea31 yapınca çalıştı. https://github.com/wizofwor/C64-Trial-and-Error/tree/master/muzik-in-basic Konu Başlığı: Ynt: cgtr intro yapıyoruz-2(müzik çaldırma) Gönderen: Simon (Özay Turay) üzerinde Temmuz 01, 2014, 16:17:41 ÖS Azmin elinden hiçbir şey kurtulmuyor. :)
Konu Başlığı: Ynt: cgtr intro yapıyoruz-2(müzik çaldırma) Gönderen: Tesellum üzerinde Temmuz 01, 2014, 18:49:27 ÖS sevgili wizofwor, kodları derledim fakat müzik çalmadı, sidleri jokerin tarif ettiği gibi prg ye çevirip denedim bu seferde kilitlendi. sidleri yüklerken bir hata oluşuyor, müzik olarak Slowhand'in pure.sid'i seçtim introda çalışmıştı. birde basic belleği bitmiş "out of memory error" :(
Konu Başlığı: Ynt: cgtr intro yapıyoruz-2(müzik çaldırma) Gönderen: wizofwor üzerinde Temmuz 01, 2014, 19:36:11 ÖS Öncelikle dosyayı PRG yaparsan işin içine fazladan iki byte daha giriyor. Son satırı aşağıdaki gibi değiştirmen lazım:
!bin "LittleSecret-c000.sid",3300,$7c+4 Çalışmama hadisesine gelince derlerken bir hata oluyor demek ki. LittleSecret-c000.sid'i de aldın mı? Build klasörünün içinde benim derlediğim hali var. Çalıştırmayı denedin mi? Binary dosyalarını 'Raw' butonuyla download ediyorsun. https://github.com/wizofwor/C64-Trial-and-Error/blob/master/muzik-in-basic/build/music.prg Konu Başlığı: Ynt: cgtr intro yapıyoruz-2(müzik çaldırma) Gönderen: Tesellum üzerinde Temmuz 01, 2014, 20:15:00 ÖS bakıyorum,
LittleSecret-c000.sid indirip derledim ve çalıştı. Pure.sid $c000 taşıyabilirsem olacak gibi. |