Uzun zamandır aklımda olan bir konu vardı ve ancak bugün halledebildim.
Konumuz 128K+2 ve müzik çaldırma.
Öncelikle daha forumda paylaşılan ZXTOOLCHAIN dosyasını indirip (nerde olduğunu bulamadım) kuruyoruz. İçinden VortexTrackerII-1.19 programını çalıştırıyoruz.
1 - File --> Open --> Modules for test ile klasör ve müzik seçiyoruz. (Ben örnek olması için ASC Sound Master klasöründen VA-BANK.asc dosyasını seçtim)
2 - File --> Exports --> Save with ZX Spectrum player seçiyoruz.
3 - Yazacağınız kodda müziğin hangi adreste olmasını istiyorsanız, bu adresi ekrana gelen pencerede Parameters kısmına giriyorsunuz. Örnek olarak $A000 girelim.
Adresi girdiğinizde yan tarafta bulunan Hints bölümündeki değerleri bir yere yazıyorsunuz. Mutlaka yapılması gerekir.
Örnekte INIT için A000, play için A005 ve Mute için A008 değerleri gözükecektir.
Müziğimizin uzunluğunu bulmak için yine Hints kısmındaki Module adress değerini hesaplıyoruz. Örnekte modul başlangıç adresi $A86E ve uzunluğu $1424'tür. Bu ikisini topladığımızda müziğin son adresi $BC92 olarak bulunur. Dolayısıyla müziğimiz $A000 - $BC92 arasında yer almaktadır. Toplam uzunluk $1C92 (7314) bayttır.
Aynı penceredeki Format bölümünde ise .TAP file kısmını işaretleyip OK diyoruz.
Daha sonra dosyaadı.tap yazarak müzik dosyamızı, .asm dosyamızın olduğu klasöre kaydediyoruz.
4 - SpaceEmu'yu çalıştırıyoruz.
File --> Insert Tape ile kaydettiğimiz .tap dosyasını seçiyoruz.
(Doğrudan .tap dosyasını tıklayabilirsiniz)
İlk olarak vtplayer kodu yüklenecektir. Daha sonra emulatörden load "" code ile müzik datasını yüklüyoruz.
Böylece Player + data'yı yüklemiş olduk.
Emülatörde File --> Save Binary File seçerek önce Memory adress for binary kısmına müziğimizin başlangıç adresini 40960 ve uzunluğunu 7314 (ben 2-3 fazlasını giriyorum) olarak yazıyoruz.
Filename kısmında ise ilk önce .asm dosyamızın olduğu klasörü seçerek muzak.bin olarak müziğimizi kaydediyoruz.
5 - Kod yazdığımız editörü açıp aşağıdaki ufak kodu yazıyoruz.
org $8000
call $a000 ; zak init
ei
loop halt
call $a005 ; zak play
jr loop
org $a000
incbin "muzak.bin"
end $8000
Compile and Run.
Güle güle kullanın.