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-2(müzik çaldırma)
Sayfa: [1]   Aşağı git
Yazdır
Gönderen Konu: cgtr intro yapıyoruz-2(müzik çaldırma)  (Okunma Sayısı 10412 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
joker_
Deneyimli
*****
Mesaj Sayısı: 2.120



Üyelik Bilgileri
« : Ş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

   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.

*  (11.3 KB - Yükleme: 386 kez.)
Logged
Tesellum
Üye
***
Mesaj Sayısı: 111



Üyelik Bilgileri
« Yanıtla #1 : 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?
Logged
wizofwor
Genel Yönetici
*****
Mesaj Sayısı: 4.792


Gosub ile gidilen yerden goto ile dönen adam


Üyelik Bilgileri WWW
« Yanıtla #2 : 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
Logged

Tesellum
Üye
***
Mesaj Sayısı: 111



Üyelik Bilgileri
« Yanıtla #3 : Haziran 30, 2014, 01:03:10 ÖÖ »

teşekkürler inceliyorum.
Logged
Simon (Özay Turay)
Yönetici
*****
Mesaj Sayısı: 7.757


Commodore Forever


Üyelik Bilgileri WWW
« Yanıtla #4 : Haziran 30, 2014, 08:53:11 ÖÖ »

wizofwor o halde seni böyle alalım.

http://www.linusakesson.net/software/sidreloc/
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
Simon (Özay Turay)
Yönetici
*****
Mesaj Sayısı: 7.757


Commodore Forever


Üyelik Bilgileri WWW
« Yanıtla #5 : Haziran 30, 2014, 08:54:22 ÖÖ »

Bu arada opensource olmuşsun, github'ın hayırlı olsun.
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
wizofwor
Genel Yönetici
*****
Mesaj Sayısı: 4.792


Gosub ile gidilen yerden goto ile dönen adam


Üyelik Bilgileri WWW
« Yanıtla #6 : 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.
Logged

wizofwor
Genel Yönetici
*****
Mesaj Sayısı: 4.792


Gosub ile gidilen yerden goto ile dönen adam


Üyelik Bilgileri WWW
« Yanıtla #7 : 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
Logged

Simon (Özay Turay)
Yönetici
*****
Mesaj Sayısı: 7.757


Commodore Forever


Üyelik Bilgileri WWW
« Yanıtla #8 : Temmuz 01, 2014, 16:17:41 ÖS »

Azmin elinden hiçbir şey kurtulmuyor.
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
Tesellum
Üye
***
Mesaj Sayısı: 111



Üyelik Bilgileri
« Yanıtla #9 : 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"
« Son Düzenleme: Temmuz 01, 2014, 19:23:58 ÖS Gönderen: Tesellum » Logged
wizofwor
Genel Yönetici
*****
Mesaj Sayısı: 4.792


Gosub ile gidilen yerden goto ile dönen adam


Üyelik Bilgileri WWW
« Yanıtla #10 : 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
Logged

Tesellum
Üye
***
Mesaj Sayısı: 111



Üyelik Bilgileri
« Yanıtla #11 : Temmuz 01, 2014, 20:15:00 ÖS »

bakıyorum,
LittleSecret-c000.sid indirip derledim ve çalıştı.

Pure.sid $c000 taşıyabilirsem olacak gibi.
« Son Düzenleme: Temmuz 01, 2014, 21:26:48 ÖS Gönderen: Tesellum » Logged
Sayfa: [1]   Yukarı git
Yazdır
Gitmek istediğiniz yer: