COMMODORE 64'ün BELLEK HARİTASI: 8
53265 Bu adres, kullanımı açısından, daha çok orta ve ileri düzeydeki programcıları ilgilendiriyor. Bir sicil olan bu adresin her bit'i değişik grafik modlarına göre açılıp kapatılır. Bunu bir grafik kontrol kutusu gibi görebilirsiniz. BİT 6 - UZANTILI RENK MODU
Bu modda her karakter kendi rengine ek olarak bir arkaplan rengi alır. Ekran renginiz de bunlardan değişik olabilir, böylece sarı bir ekranda yeşil bir arkaplanı olan beyaz bir karakter gösterebilirsiniz. Fakat bu modda bir sınırlama var. Karakter kodunun sadece ilk 64 karakterini kullanabilirsiniz. BİT 5 - BITMAP MODU
Eğer elinize bir büyüteç alıp ekrana bakacak olursanız ekranı renklerle dolduran pikselleri oluşturan çok sayıda fosfor noktası görürsünüz. Bu, grafikler için kullanılabilecek en ayrıntılı grafik modudur. Standart bitmap modunda her 8 x 8 bit karakteri için iki renk seçimiyle 320 x 200 çözünürlüğe sahipsiniz. “YÜKSEK ÇÖZÜNÜRLÜK BITMAP MODUNU AÇ POKE 53265, PEEK (53265) OR 32
YÜKSEK ÇÖZÜNÜRLÜK
BITMAP MODUNU KAPAT
POKE 53265, PEEK (53265)
AND 233
Aşağıdaki program örneğinde düz bir arkaplana bir spiral çiziliyor. Önce ekran kararıyor sonra yavaşça aydınlanıyor. Ardından mavimsi bir arkaplan meydana geliyor ve spiral yerleştiriliyor. Bu işlem bittiğinde sol üst köşede siyah bir kare beliriyor. Normal ekrana dönmek için RUN/STOP ve RESTORE'a basın (Program 1). Ekrandaki pikselleri tek tek nasıl açıp kapatabilirsiniz? Ekran boyutlarının 40 sütun ve 25 satır olduğunu herhalde hatırlıyorsunuzdur. Bu da ekrana 1000 karakter yazılabileceğini gösterir. Şimdi bu yerlerden her birine KARAKTER POZİSYONU diyelim. Sonra açmak istediğiniz piksel için şu formülü kullanın: Önce karakter pozisyonunu bulmak için,
KARAKTER POZİSYONU = INT (X/8) + 40 * INT (Y/8)
X ve Y burada açmak istediğiniz pikselin yatay ve düşey koordinatlarıdır. X, 0 ile 320 Y ise 0 ile 190 arasında bir sayı olacaktır.
SATIR = (Y/8 - INT(Y/8))*8
Buradan da X,Y'nin hangi bayt içinde yer aldığını bulmak için:
BAYT = 1024 + KARAKTER P.*8 + SATIR
Değişecek olan bit ise Son olarak bit'i yakmak için
POKE BAYT, PEEK (BAYT) OR (2^BİT)
BİT 4 - EKRANI KAPATMA
Ekranda yazılı herhangi bir şeyi POKE 53265, PEEK (53265) AND 239 ile görünmez hale getirebilirsiniz. Ekran sınır rengiyle aynı olacaktır. POKE 53265, PEEK (53265) OR 16 ekranı yeniden görünebilir hale getirir. Bu adresi kullanarak ekranı kapattıktan sonra mesajları ve grafikleri ekrana koyup bir anda hepsini birden ekranda gösterebilirsiniz. Aşağıdaki program: 1) Ekranı kapatır. 2) Bir mesaj yazar. 3) Ekranı yeniden açar.
(Program 2) BİT 2-0 - KAYDIRMA
Ekrandaki bilgileri, dört yönden biri yönünde 1-8 piksel arasında hızlarda hareket ettirerek kaydırabilirsiniz. Bunu yaparken ekran büyüklüğünü kaydırma yapmak istediğiniz yöne bağlı olarak 40'tan 39 sütuna ve
PROGRAM ADI 1
081008 PRINT CRRS<C147)
01810 PRINT <094>
©1020 PRİNT
01048 PRINT “SPİRAL EGRİ TAMAMLANDIĞINDA <188>
01050 PRINT “SOL UST KARA BİR <167>
01060 PRINT "KUTU BELRECEK." <115>
81078 PRINT <156)>
01088 PRİNT “NORMAL EKRANA DÖNMEK ICİN" <048)>
01090 PRINT "RUN/STOPR RESTORE TUSLARINA B
ASIN" <216>
©1109 PRINT e <186>
©1120 PRINT <206>
01136 PRİNT "BASLAMAK ICIN HERHANGİ BİR T
USA BASIN"
©1140 GET THEN 1148
01150 PRİNT CHRS<147) <163>
81160 REM --81920EKI BITMAP <137>
01170 S327R
OR 8 <145>
01180 REM --BITMAP MODUNA GİR <a217>
01190 POKE OR 32 <a1a>
01200 REM --BITMAP'I BOSALT <ısa>
81210 FOR I-BASE TO BASE*79881POKE
XT <165>
REM --ARKARLAN VE SINIR RENKLERİNİ
ş AYARLA <157>
©1230 POKE “SINIR SIYAN <a03>
FOR 141024 TO 2O231ROKE
01250 REM --EGRİ EKRANI DOLDURACAK <146>
©1260 FOR S-0 TO 17 STEP 30 <093>
B1270
01280 <184>
©1280 <058)
01300 <a2s>
01316 AND 7 <167>
01320
01330 BI-7-(X AND 7)
01340 POKE BY.PEEKCBY) OR <a24>
01350. NEXT 8S
01368 ROKE 1024.16 <e7a>
©1370 GOTO 1378 <056>
PROGRAM ADI 1 PRG-2 iz
00010 PRİNT CHRSC147) & <039>
©8020 "ISTE * <asa>
©0030 PRİNT "SİMDİLİK EYVALLAH"
©0040 FOR TO
80050 POKE 53265.PEEKC53265) AND 238 <a38>
PRİNT
©8870 "GERİ DONDUM!" <165>
©0080 FOR TO 10081NEKT <165>
©0030 POKE OR 16 <154>
25'ten 24 satıra indirin. Bu işlem ekranı kaydırmadan önce bilgisayara bilgiyi toplayıp sıraya koymak için yer sağlayacaktır. Gerçekten net bir kaydırma yapmak için bir makine dili rutinine ihtiyacınız olacak. Bu rutin olmadan kaydırmayı sadece yazı ve klavye karakterleri üzerinde gerçekleştirebilirsiniz (Program 3). BİT 3 - 24/25 SATIR SEÇİMİ
Bu bit'i POKE ile kapatırsanız ekranınız 24 satır olur. Bu bit kaydırma modu için kullanılmakta. Ekranın hem üst hem de altından yarım satır alınıyor. Bunu kontrol etmek için POKE 53265, PEEK (53265) AND 247 (24 Satır)
PROGRAM ADI 1 PRG-3
61000 1
©1040 DIM C<8,B)1REM KARAKTER MATRISI
©1050 1 <810>
©1060 REM EKRANI UFALT <108>
©1070 POKE AND 247 <a18>
©1088 1
81088 REM KARAKTERİ SAKLA
81100 FOR Izi TO 8 <e58>
©1116 FOR Js1 TO 8
©1120 READ C<1.J)> <164>
011830 NEKT J.1 <185>
91148 1
©1150 REM EKRANI TEMİZLE/BEYAZ KURSOR <155>
©1180 RRINT
01170 1 <130>
01180 REM KURSORU DIBE KOY <875>
01198 FOR TO 241PRİNT <157)>
1 <160>
REM ILK KAYMA ICİN POZİSYON
©1220 POKE AND 248)4*7 <145>
61230 « <188>
©1240 REM KARAKTER MATRISI
01250 FOR Ks1 TO 8 <a2a>
©1260 FOR TO 8 <aa2>
01278 IF C<K.L)<8 THEN PRİNT CHR$C16)7 <ısa>
01275 PRINT <e24>
01280 PRİNT
©1290 NEKT L
01300 PRİNT <iaa>
81310 NEXT K <140>
01326 PRINT <ısa>
©1336 1 <036>
©1340 REM 8 BIT KAYMA <ı26>
'01350 FOR TO 7? <a205>
01360 POKE AND 246)4P -<056>
©1370 * <076>
01388 1 <8686>
01390 FOR WHs8 TO 581NEKT W <148>
©1400 NEXT P <a814>
81410 1 <116>
©1420 REM TEKRARLA
©1430 GOTO 1228 <196>
01440 1 <146>
01450 REM KARAKTER DATA <a14>
01460 DATA 32.32.32,-32.-32.-32.32.32 <o32>
01470 DATA 32,32.-32,-32.32.-32.-32.32 <a245>
01480 DATA 32,-32,-32.-32.-32.-32.-32.-32 <096>
01490 DATA 32.32.-32.,-32,-32.-30,-32.32 — <005>
©1500 DATA 32.32,-32.32.32.32.-32.32
01510 DATA 32.32.,-32.32.32.32.-32.32 <036>
61520 DATA 32,32.-32,32.32,32.-32.32 <046>
01530 DATA
POKE 53265, PEEK (53265) OR 8 (25 Satır)
$D012 53266 (V 4 18) Karşılaştırma için raster değerini okuma/yazma.
Raster sicili iki amaçlıdır. Bu sicil size o anki raster pozisyonunun sağdan sekiz bit'ini verecektir. En önemli bit'in raster pozisyonu 53265'tedir. Raster sicili, yatay ve düşey kaydırmalarda görüntüdeki zamanlama değişiklikleri için, karışık modlu görüntü (yüksek çözünürlükte karakterler) ve diğer interrupt çeşitleri için kullanılır. Ekrandaki değişiklikler, raster ekranın görünebilir kısmında değilken yapılmalıdır. Görünebilir kısımlar 51 ve 251 arasındadır.
$D013 53267 (V + 19) Light-pen X pozisyonu. $D014
53268 (V + 20) Light-pen Y pozisyonu.
Bu adresler light-pen'in ekrandaki yerini gösterirler. Kalemden ayrıca interruptlar elde edilebilir.
53269 (V + 21) Sprite gösterimi
Bir sprite'ı görünebilir hale getirmek istiyorsanız buraya başvurmalısınız. Burada her bit bir sprite'ı kontrol eder. Yani sprite 0, bit 0, sprite
1, bit 1 vb. tarafından kontrol edilir. Sprite 4'ü ekranda görünebilir hale getirmek için: POKE 53269, PEEK (53269) OR 16
POKE 53269, PEEK (53269) AND (255-16) sadece sprite görünmez hale getirir. POKE 53269, PEEK (53269) OR 170 Sprite 1, 3, 5 ve 7'yi ekrana getirir. POKE 53269, PEEK (53269) AND (255-170) hepsini yok eder.
$D016 - VIC kontrol sicili. 7-6 kullanılmıyor 5 kullanılmıyor 4 çok-renklilik modu 1-açık 3 38/40 kolon yazı: 1-40 kolon 2-0 X pozisyonuna düz kaydırma
Bu adres de çoğunlukla usta grafik kullanıcıları tarafından ziyaret ediliyor. BİT 4 - ÇOK-RENKLİLİK MODU Yazı için çok-renklilik modunu
POKE 53270, PEEK (53270) OR 16 ile açıp
POKE 53270, PEEK (53270) AND 239 ile kapatabilirsiniz. Normalde her 1000 ekran pozisyonunun veya bloğun, bir arkaplan rengi veya bir yazı rengi olmak üzere sadece iki rengi olabilir. Örneğin, bilgisayarınızı açtığınızda her bloğun arkaplan rengi koyu mavi, yazı rengi ise açık mavidir. Bu adresi POKE ederek iki adet fazladan renk kazanabilirsiniz. Böylece bir ekran rengi (adr. 53281) ve üç karakter rengine sahip oluyorsunuz (adr. 53281-53284). Fakat bazı dezavantajlarınız var. Çok-renklilik modu sadece karakter setinin ilk 64 karakteri ile çalışıyor ve renkleri tarif edebilmek için aşağıdaki iki bit'e ihtiyaç duyuyor. (Şekil 1)
%00000000 76543210
Ekrana yazılan her harf aslında içinde bazı pixeller açık bazılarıysa kapalı olan 8 x 8 pixellik bloklardır. Açık olan pixeller gördüğünüz harfi meydana getirir. Yukarıdaki örnek pixel satırında 1, 4, 6 ve 7 numaralı pixeller açıktır. Çok-renklilik modunda bunlar çiftler halindedir. (Şekil 2)
© Ol |O (e) e. 76) 15 4) (3 2) (1 O A B Cc D
A kutusu bilgisayara rengi arkaplan 2'den (adr. 53283) almasını söyler. B gerekli bilgiyi ekran rengi olan 0'dan (adr. 53281) alır. C rengin arkaplan 1'den (adr. 53282) geldiğini belirtir ve D kendisi için gerekli bilgiyi 55296-56295 arasında her ekran konumu için farklı olarak alır. Bu iki-bit halinde okuma nedeniyle ekran çözünürlüğü azalırken renk sayısı artacaktır.
ÇOK-RENKLİ BİTMAP MODU
Burada iki adres birden yetkili: 53270 ve 53265. Yukarıda olduğu gibi mod için de aynı bit-çifti prensipleri kullanılmakta. Etkin hale getirmek için:
POKE 53270, PEEK (53270) OR 16
POKE 53265, PEEK (53265) OR 32
Yatay çözünürlüğün azaldığını unutmayın.
BİT 3 - 38/40 KOLON MODU SEÇİMİ Bu bit'i 0 ile POKE etmek ekran alanını daraltacaktır. Düzgün bir kaydırma işleminden önce bu yolla ekranın her iki yanında boşluk kazanabilirsiniz. BİT 2 - KAYDIRMA Program 2'ye 1365 POKE 53270, (PEEK (53270) AND 248)+P satırını ekleyerek Sprite'ı çapraz kaydırabilirsiniz. Tabii yine gerçekten düzgün bir kaydırma yapmak için bir makine dili rutini gerekli olacak. 53265 adresindeki BASIC örnek sadece yazı ve klavye grafik karakterleri kaydırmanız içindir.
$D017 53271 (V 4-23) 0-7 arasındaki sprite'ları dikey olarak iki katı büyütme.
Sprite — 0'ı büyütmek için:
POKE 53271, PEEK (53271) OR 1
Sprite'ı normal büyüklüğüne döndürmek için:
POKE 53271, PEEK (53271) AND
(255-1)
7 ve 1 için: POKE 53271, PEEK (53271) OR 130 komutlarını verebilirsiniz.
$D018 53272 (V 4-24)
1 sprite'larını büyütmek
VIC belleği kontrol sicili 7-4 video matrix taban adresi (VIC içinde) 3-1 karakter noktadata taban adresi (VIC içinde) Hem ekran hem de karakter belleğinden bu adres sorumludur.
POKE 53272,23 ekranı küçük karakterlere
POKE 53272,21 ekranı büyük karakterlere döndürür. Bu adresle ilgili bir kullanım daha önce 648 numaralı adreste gösterilmişti. Aynı zamanda ekran bellek adresi olan 53272'nin son dört biti bu işi üzerine almıştır. Ekranın yerini değiştirmek için şu komutu kullanın: POKE 53272, (PEEK (53272) AND 15) OR A
A, aşağıdaki tablodaki ondalık sayılardan biri olabilir. (Şekil 3)
A Adres — | Heksadesimal n o | 30000 16 1024 80400 32 2048 80800 48 3072 80000 64 4096 $1000 80 5120 $1400 96 6144 n112 7168 $1000 128 8192 82000 144 9216 82400 160 10240 82800 176 11264 82000 .192 12288 83000 208 13312 83400 224 14336 83800 240 15360 83000.
Normalde, A'nın değeri 16'dır ve ekran 1024'ten başlar. Kendi karakter setinizi yaratmak için — 3-1 numaralı bitleri değiştirme- POKE 53272, (PEEK(53272) AND 240) OR B
B'yi aşağıdan ondalık bir sayı olarak seçebilirsiniz. (Şekil 4)
B normal olarak 4'e ayarlıdır.
DO19
53273 (V-425) VIC Interrupt flag sicili (bit - 1:IRQ) 7 herhangi bir VIC IRQ şartına ayarlı 3 light-pen ile başlatılan IRQ flag'ı 2 sprite-sprite çarpışması IRQ flag'ı 1 sprite-arkaplan çarpışması IRQ
Bu adres en iyi olarak makine dili programlarıyla kullanılabilir, çünkü buradaki değerler BASIC için fazla hızlı değişmekte.
$D01A 53274 (V 4-26) IRQ saklama sicili. 1—interrupt açık
Bu adres de yukarıdakine benzemektedir. Interrupt açma sicilindeki ilgili bit, 1'e eşit olmadıkça o kaynaktan herhangi bir interrupt meydana gelmeyecektir. Bunu tecrübe etmeden önce makine kodunuzu geliştirin.
$D01B 53275 (V 4-27) Sprite'a karşı arka plan görüntü önceliği: 1
Sprite'ları yazılı karakterlerin önünden veya arkasından geçirmek için bu adresi kullanabilirsiniz. POKE 53275, PEEK (53275) OR 2
Sprite — 1'in ekranda grafik ve yazıların arkasından geçeceği anlamına gelir. POKE 53275, PEEK (53275) OR 7 aynı şeyi sprite 0, 1 ve 2 için yapacaktır. POKE 53275, PEEK (53275) AND (255-7), 0, 1 ve 2 numaralı sprite'ları yazının önüne koyacaktır.
D016 53276 (V 4-29) 0-7 numaralı sprite'lar için çok-renklilik modu seçimi. 1=çok-renkli
Bu adresi POKE ederek üç renkli sprite'lar yaratabilirsiniz. POKE 53276,1 komutu sprite 0'ı çok-renklilik moduna geçirir. Seçilen üç renk, 53287-53294 arasındaki sprite rengi adreslerinden ve 53285-53286 çok-renklilik adreslerinden gelir. D017 53277 (V 4-29) 0-7 numaralı sprite'lar için yatay iki kat büyütme. 53271 gibi burası da sprite'ı yatay olarak genişletir. POKE 53277, PEEK (53277) OR 1 sprite 0'ı iki katı genişletir. POKE 53277, PEEK (53277) OR 18 1 ve 4 numaralı sprite'ları genişletir. 53278 (V 4-30) Sprite-sprite çarpışma kontrolü. Eğer bir sprite başka bir sprite'a 26
PROGRAM ADI 1 PRG-4
©8100 PRINT CHR$<147) <1a2s>
©0118 FOR Az8 TO 15 <165>
©8120 FOR TO 15 <183>
00130 POKE 53288.A <a14>
©0140 POKE 53281.B <098>
060150 CsB <asa>
60168 IF Cs15 THEN Cs8 <183>
©8178 POKE 646.C41
08188 PRINT CHRS$<198) <a26>
081898 FOR Ds1 TO 1İ21PRINT D
©0280 PRINT "MERHABA!" <104)>
©6210 FOR Esi TO 3081NEKT E <245>
©8220 NEXT B <248>
©0238 NEKT A
değerse o sprite'ın bit'i açılır. IF PEEK (53278)=1 THEN bu adresin tipik bir kullanımıdır. Bu satırda sprite 0'ın başka bir sprite'a çarpıp çarpmadığına bakılır. Burayı bir kez PEEK yaptığınızda sicil kendisini 0'a resetler. Sicilin değerini bir değişkene saklamak akıllıca olabilir. IF PEEK (53278) THEN B=1
D01F 53279 (V 4-31) Sprite-arkaplan çarpışma kontrolü.
Görevi bakımından önceki adrese benzeyen bu adres bir sprite'ın yazı veya grafik ile çarpışmasını kontrol eder. Ayrıca sicil kendisini yukarıda olduğu gibi okunduktan sonra 0'a resetler. Eğer PEEK (53279) yapıp 128 sonucunu alırsanız 7 numaralı sprite'ın bazı karakterlerle çarpıştığını çıkarabilirsiniz.
D020 53280 (V 4-32) Sınır rengi. Normalde değeri 14.
Bu adresi 0'dan 15'e kadar sayılarla POKE etmek sınır rengini değiştirecektir. Adı geçen renkleri kullanım kılavuzunda bulabilirsiniz.
D021 53281 (V 4-33) Arkaplan rengi 0.
Hem arkaplan rengini hem de ekran rengini belirten bu adres bilgisayar açıldığında veya RUN/STOP RESTORE'dan sonra 6 değerini verir. Aşağıdaki programla ekran ve sınır renklerinin değişik kombinasyonlarını görebilirsiniz (Program 4). 53282 (V 4-34) Arkaplan rengi 1.
53283 (V 4-35) Arkaplan rengi 2. 53284 (V 4-36) Arkaplan rengi 3.
Bunlar 53265 ve 53270 adreslerindeki çok-renklilik modlarıyla kullanılan renk sicilleridir. Kullanmak istediğiniz renklere sayıları POKE edin. Daha fazla bilgi için 53270 adresine bakabilirsiniz.
D025 - D026 53285 (V 4-37) Sprite çok-renklilik sicili 0. 53286 (V 4-38) Sprite çok-renklilik sicili 1. Sprite çok-renklilik modu seçildiğinde bu sicillerdeki renkler normal sprite rengine (adr. 53287-53294) ek olarak kullanılır. D027 - D02E 53287 (V 4-39) Sprite 0 rengi. 53288 (V 4-40) Sprite 1 rengi. 53289 (V 4-41) Sprite 2 rengi. 53290 (V 4-42) Sprite 3 rengi. 53291 (V 4-43) Sprite 4 rengi. 53292 (V 4-44) Sprite 5 rengi. 53293 (V 4-45) Sprite 6 rengi. 53294 (V 4-46) Sprite 7 rengi. Bu adreslerin her biri renk sicilidir. Bu siciller baştan aşağıdaki renkleri alırlar. Eğer buraya bir renk POKE etmezseniz sprite'ların renkleri şöyle olacaktır. (Şekil 5)
Sprite Renkler
<
Gri 2
Commodore sahipleri araçlarının ses ve müzik yeteneklerinin ne kadar zengin olduğunu bazen unutuyorlar. C-64 ile yapılan başlangıç hâlâ etkileyiciliğini sürdürüyor ve C-128 bize altı ses verebilecek yeni bir SID çipine sahip olmamakla birlikte sesle çalışmayı çok daha fazla kolaylaştıran BASIC ses ve müzik komutlarına sahip.
SID'E BAŞLANGIÇ
C-64 ile iyi müzik yapmak için SID çipi hakkında her şeyi bilmenize gerek yok. Ama biraz ön bilgi deneylerinizin doğru yönde gitmesini sağlayacaktır. C-64'teki tüm sesler MOS6581(SID) tarafından üretilir. (ses arabirim aracı) Bu cihazın aynı anda üç ses çıkartma yeteneği vardır. SID kütük denilen belirli bellek yerlerine değişik değerler (tüm baytlar ya da bir baytta tek bir bit) yerleştirerek üretilir. C-64'te bu değerleri kendiniz yerleştirmeniz gerekir. Bunun için bir makine dili programından bellek-depolama işlemleri kullanmak ya da BASIC'ten POKE komutları almak gerekir. C-128'in BASIC 7.0 konumunda SOUND, ENVELOPE, VOLUME ve PLAY komutları bu poke'ları otomatik olarak yapar ve bazı karmaşık ses etkileri kolayca elde edilir. Bununla birlikte Bank 15'te kaldığınız sürece C-64 stili ses yaratabilirsiniz. Yani C-64'te sesle ilgili öğrendiğiniz hiçbir şey C-128'de boşa gitmez. C-64 Programcının El Kitabında, C-128 kılavuzunda SID çipinin ayrıntılı bir betimlemesi vardır. C-64 kılavuzunda verilen bilgiler daha ayrıntılı.
SESLERİN ÖZELLİKLERİ
Bir notanın frekansı onun dalga formundaki her saniyedeki titreşim (cycle) sayısıdır. Bu notanın tiz ya da bas olmasını belirler. Yüksek frekanslı bir ses düşük frekanslıya göre daha şiddetlidir. SID'in üç sesinin herbirinin pitch'i iki byte'lık kütüğe değerler POKE edilerek belirlenir. 6502 programcılarının alışık olduğu düşük byte, yüksek byte stilinde. İki byte kullanmak gereklidir çünkü her byte'ta 0-255 arasında değerler bulunur, oysa frekans binlere kadar yükselebilir. Yüksek byte kütüğünde depolanan değer 256 ile çarpılır (Yük. Frek.) ve düşük byte kütüğündekilere eklenir. 440 sayısını frekans kütüklerinde depolamak için 1'i yüksek bayta POKE edip 184'ü de düşük bayta POKE etmelisiniz. Ne yazık ki bu değerler gerçek frekanslara tekabül etmez. Bir SID frekans kütüğüne POKE edilmiş 440 sn/titreşimlik bir Hertz A notası çıkartmaz. Bu nedenle C-64 ve C-128 program kılavuzlarına kullanabileceğiniz frekans çevirme tabloları eklenmiştir.
440 Hz'lik bir notanın 440 Hz'lik bir temel frekans olduğunu söylüyoruz. Bu frekansa ilk armonik de denir, çünkü sesin en önemli öğesidir. En saf sinüs dalgası jeneratörleri dışında her aygıtta ekstra armonikler de duyarsınız. 800 frekanslık ana armoniğin iki katı olan ve 1200 frekanslık üç katı olan armonikler gibi. Armoniklerin frekansı arttıkça güçleri de azalır. İşin doğrusu çoğunlukla ana frekans dışındaki frekansların farkına armonikleri çıkartana ve sesin ne denli ince olduğunun farkına varıncaya kadar varmazsınız. Armonikler bir notanın klarnet, keman ya da trompette farklı duyulması nedenlerinden biridir.
DALGA BİÇİMLERİ
Commodore SID chip'inin üretebildiği dört dalga biçiminin üçünü üretebilmek için değişik matematiksel armonik kombinasyonları kullanılmıştır: Kare, üçgen ve testere dişidir bu biçimler. Dördüncü dalga biçimi olan parazit (noise) matematiksel olarak önceden kestirilemeyecek sesler üretmek üzere tasarlanmıştır. Her saniye bir titreşimlik bir frekansla kulaklarınıza gelen bir ses olduğunu düşünün. Bu ses gerçekte duyulmak için çok alçak ama dalga biçimlerini gözümüzde canlandırmakta yararlı olacaktır. Ses dalgasının sağ kulağınıza çarptığını düşünün. Hemen kulak zarını sola iter, yarım saniye bekler sonra da kalan yarım saniyede zar yerine döner. Bu “kare dalga” biçiminin grafik tasarımı şöyle görünebilir:
Şekil 1- Kare Dalga Biçiminin grafik gösterimi.
Bu teorik olarak mükemmel bir dalga biçimidir. Kulak zarınızın ve moleküllerin özellikleri gerçek bir mükemmel dalga biçimini olanaksız kılar. Şimdi kulağınıza ses dalgasının çarptığını düşünün. Yavaş yavaş ve eşit olarak kulak zarınızı yarım saniye için sola iter, sonra da zar yavaş yavaş yerine döner. Bu dalga biçiminin grafik tasarımı üçgen adını alır çünkü şöyle görünür:
Şekil 2- Üçgen Dalga Biçimi.
Şimdi de ses dalgasının kulağınıza çarpıp yavaş yavaş ve eşit olarak kulak zarınızı bir saniye için sola ittiğini düşünün. Sonra hemen onu serbest bırakır. Bu dalga biçiminin grafik tasarımı “testere” olarak adlandırılır:
KA AŞ AA
Şekil 3- Testere Dişi Dalga Biçimi.
Son olarak ses dalgasının kulağınıza tamamıyla rastgele çarptığını düşünün. Bu dalga biçimi de şöyle görünebilir:
Şekil 4- Parazit Dalga Biçimi.
Döküm-1'deki C-64 programı bu biçimlerin her birinin nasıl olduğunu gösterir. Bu programı bir C-128'le de çalıştırabilirsiniz ama ondan önce bir BANK 15 komutu vermeyi unutmayın. (Şimdi bütün PEEK ve POKE komutlarının ne olduğunu anlayamamaktan ötürü moraliniz bozulmasın. Onları daha sonra açıklayacağım.)
:
i
883 ETE
VOLÜM
Bir sesin volümü sadece onun yüksekliği, şiddetidir. Testere dişi dalga boyunda bir sesimiz olduğunu düşünelim. Şöyle görünecektir:
Şekil 5- Testere dişi dalga biçimiyle üretilmiş ses.
Aynı nota daha şiddetli olarak şöyle görünürdü:
Şekil 6- Aynı sesin yüksek volümlüsü.
Dalgalar arasındaki uzaklığın her seferinde aynı olduğuna dikkat edin. İki notanın da aynı frekansta olduğunu göreceksiniz. Ama ikinci sesin volümü, şiddeti daha yüksektir.
ENVELOPE
Bir notanın envelopu aynı notanın tonlarının dört değişik parçasını içerir. ATAK ya da notanın azami volüme çıkması için gereken süre; DÜŞÜŞ notanın ortalama düzeyine ne kadar zamanda düştüğü; SÜREKLİLİK o düzeyde ne kadar kaldığı; DAĞILMA da sesin sona ermesi için geçmesi gereken süredir. Bu envelopun nasıl görünebileceğinin grafik bir tasarımını aşağıda veriyorum:
Ül
ATIM rası
Şekil 7- Ses Envelope'unun görünümü,
Bir sesin frekansını gösteren daha önceki şekillerden farklı olarak bu şekil relatif volümü gösterir, notanın başladığı andan son anına kadar. Eğer ses iki dörtlük bir çekiç sesi ise atak ve düşüş kısımları süreklilik ve dağılma olmaksızın uzardı. Çünkü çekiç ve iki dörtlük ses uyumlu değildir. Kemanın tellerine yay sürüldüğünde atak daha naziktir, düşüş yoktur ve yayın hareketi durana kadar süreklilik devam eder. Döküm-3 atak, düşüş, süreklilik ve dağılma oranlarıyla oynamakta kullanılan bir C-64 programıdır. Şekil 8'deki değerleri deneyin ve farklı sonuçları dikkate alın. Atak için bir negatif satır görünceye kadar program RUN etmeye devam edecektir. C-128'de atak, düşüş, süreklilik ve dağılmaları ayarlamak ve dalga biçimi seçmek için bir Envelope komutu vardır. Ne yazık ki bu komutla oluşturulan enveloplar C-128'lerin ses komutu ile çalışmaz. Onları sadece PLAY komutu ile kullanabilirsiniz. Kendi zarflarınızı tasarımlatmanın yanısıra C-128'de PLAY komutuyla kullanmak için on tane önceden tanımlanmış envelope vardır. Sesleri değişik müzik aletleri gibi duyulur. ENVELOPE komutunu verilen hazır envelopları yeniden tanımlamak için kullanabilirsiniz. Format şöyledir: (ENVELOPE sayı, atak, düşüş, süreklilik, dalga biçimi, sinüs genişliği) Sayı değiştirmek istediğiniz envelope sayısıdır (0-9). Atak, düşüş, süreklilik ve 0 ile 15 arasındaki değerlere sahiptir. Dalga biçimi 0 ile 3 arasında değişir.
SID istediğiniz sesi elde edebilmeniz için bir sesin belirli frekanslarını çıkartmak üzere filtre kullanabilir. Üç çeşit filtre vardır: Alçak Filtre, Yüksek Filtre ve Band Filtresi. Bunları kullanabilmek için frekans kesinti noktalarını bulmalısınız. Bir filtre bu noktanın altındaki her frekansı geçirir, düşük armonileri duyarsınız. Yüksek filtre kesinti noktası üzerindeki frekansları geçirir, yüksek armonileri duyarsınız. Band filtresi ile istediğiniz frekanslar aralarına gelecek biçimde alçak ve yüksek kesinti noktalarını ayarlayabilirsiniz. Filtreler hakkında daha fazla bilgi edinmek için C-64 Programcının El Kitabı'ndaki filtre bölümüne ve C-128 Kullanma Kılavuzu'ndaki filtre komutu açıklamasına bakın.
SES YARATMAK
SID chipinden gelen sesleri yirmidört byte kontrol eder. Bunlar bu yazıdaki tüm örneklerinde SD değişkeninin set edildiği 54272 bellek adresinde başlarlar. Bu baytların tanımladığı parametreler tablo 1'de gösterilmiştir. SID Kontrol eden baytlar hakkında daha ayrıntılı bilgi için C-64 Programcının El Kitabı'ndaki bellek haritası bölümüne bakın.
Ses 1 kontrol kütüğü ve Volüm ve Filtre kontrol kütükleri en çok kafa karıştırıcı olanlar, çünkü SID'i baytlar yerine tek tek bitler kontrol eder. Bu konuda bir nutuğun sırası değil ama bir parça sözünü etmek de gerekli. Geleneksel onluk sayı sistemimiz on rakam kullanır, 0-9 ve bir sayıdaki her rakamın gerçek değeri sayı içindeki yerine göre değişir. Onlar, yüzler, binler gibi. İkinin üsleri üzerine rakam vardır: 0 ve 1. Bilgisayarlarda bu sistemi kullanıyoruz çünkü 0 “kapalı” 1 “açığı” temsil edebilir, bu da elektronik devrelere çok iyi uyar. Her byte sekiz bitten oluşur. Her bit “yer değerinin” sayıda kullanılmış olup olmadığına bağlı olarak 1 ya da 0(kapalı)'dır. Şekil 9'da 10010011 ikilik sayısındaki her bitin onluk değeri gösterilmektedir. Açık olanları toplarsak 128+16+4+2+1=147. O halde ikilik sistemdeki 147'ye eşittir. Şimdi bitler üzerine bilgi sahibi olmanın neden önemli olduğunu görelim. Tablo 2'de Ses 1 için olan kontrol kütüğünün kontrol ettiği bitlerin bir listesini bulabilirsiniz. Tablo 3'de de Volüm ve Filtre kontrol kütükleri vardır. Basic'te bir biti açıp kapamanın direkt bir yolu yoktur. Bu AND, OR, PEEK ya da POKE komutlarıyla yapılmalıdır. Örneğin kontrol kütüğündeki 5. bitin testere dişli dalga biçimini çıkartmasını istiyorsunuz. İkilik sistemdeki 5. bitin onluk sistemdeki değerinin 32 olduğunu biliyorsunuz. Ama kütüğe sadece bir 32 POKE edemezsiniz 32 ikilik sistemdeki 00100000'dır. Tüm bu sıfırlar açık olmasını istediğiniz bir şeyi kapatabilir. Bu nedenle 5. biti açmak kontrol kütüğündeki değeri PEEK etmeli, o sayı ve 255-32'nin sonucu ile bir AND işlemi yapmalı ve yeni değeri kontrol kütüğüne yeniden POKE etmelisiniz. (Bu size anlaşılır ve anlamlı gelmiyorsa sayıların ikilik eşdeğerlerini kâğıda yazıp yeniden deneyin.)
Şekil 8- Döküm 2'deki değerler.
Atak — 10: Ataka 0: Düşüşe Atak 10: Düşüş— Atak- 15: Düşüşe
Süreklilik - 0: Dağılma 0 Süreklilik - 0: Dağılma 0 süreklilik 10: Dağılma — 10 - 3: Dağılma -3
Tablo 1- SID Kontrol Byte'ları.
Sesi Ses 2 Ses 3 SD Alçak Frekans Alçak Frekans — SD+1 Alçak Frekans SD+8 Yüksek Fr. Yüksek Fr. SD+9 Yüksek Fr. SD+16 Kare dal. alçak — SD+2 Kare dal. alçak — SD+10 Kare dal. alçak SD+17 Kare dal. yüksek — 10 Kare dal. yük. — SD+11 Kare dal. yük. SD+18 Kontrol Kütüğü — SD+4 Kontrol Kütüğü SD+12 Kontrol Kütüğü SD+19 Atak/Düşüş SD+5 Atak/Düşüş — 13 Atak/Düşüş SD+20 Süreklilik/dağıl. — SD+6 Sür./Dağ. SD+14 Sür./Dağ.
SD+21 Filtre kapatma frekansı (düşük nibble) SD+22 Filtre kapatma frekansı (yüksek byte) SD+24 Volüm kontrolü, Filtre kontrolü Not: SD'nin bellek adresi 54272'dir.
lamlı gelmiyorsa sayıların ikilik eşdeğerlerini kâğıda yazıp yeniden deneyin.)
OYUN ZAMANI
Bunların bazılarına aklınız ermediyse endişelenmeyin; başka insanların ses rutinlerindeki değişken değerleriyle oynarken, teoriyi de yavaş yavaş öğrenebilirsiniz. Döküm 3 başlangıç için bir rutin sunmaktadır.
$
HE İ
Yü
Siren sesi üreten bir C-64 programı olan döküm üçteki her işlemin anlamını açıklayacağım. Satır 30 tüm SID kütüklerinin, $D424'teki volüm kontrol byte'ı dışındaki her kütük yerine 0 değerini POKE eden bir subrutini çağırarak temizlenmesini garantiler. ($D424'e yapılan POKE'ların BASIC ses programlarındaki bazı can sıkıcı klik seslerinin kökeni olduğunu keşfettim.) Satır 40 ve 50 $D422 ve $D423'e kare dalga biçimini kullanmak için değerler POKE eder. 0 ile 255 arasındaki her değeri $D422'ye; 0 ile 15 arasındaki her değeri de $D423'e POKE edebilirsiniz. Hoşuma giden bir kombinasyon bulana kadar bu sayılarla epeyce oynadım. Satır 60, volümü maksimuma (15)
çıkartır. 15'in ikilik sistemde karşılığı olan 00001111'deki geri kalan sıfırlar istemediğiniz tüm filtre seçeneklerini kapatır. Bu tür POKE'ları doğrudan ve eğer bütün byte'ın tam olarak nasıl olması gerektiğini biliyorsanız, AND ya da OR işlemlerini kütükte olan değerlerle yapabilirsiniz. Satır 80 ses için atak ve düşüşü başlatır. $D425'deki byte'ın üst dört biti ataklarınızı ayarlar (xxxx....) (düşük sayılar daha hızlıdır) ve alttaki dört bit düşüş zamanınızı ayarlar (yine düşük sayılar daha hızlıdır). Bu arada hatırlatalım yarım byte'a nibble denir. Atağı yüksek nibble'a ayarlamak için 0-15 arasında bir değeri alıp, 16 ile çarpmak ve sonucu 0-15 arasındaki düşüş değerinize POKE etmek durumundasınız. Gördüğünüz gibi uzun ve sıkıcı bir işlem. Satır 100'de aynı şeyi $D424 ile süreklilik ve dağılma için yapıyoruz. 110, satır kontrol kütüğünün bit 6'sını $D424'e yerleştirerek kare dalga biçimini seçer. Ben değeri $D424'e OR'lamakla uğraşmadım, çünkü bitlerin geriye kalanlarının sıfıra ayarlı olmasını istiyordum. Not: Sesi açmadan önce dalga biçimi kütüğünü ($D424) ayarlamayı unutmayın. SID çipindeki bir şey onun bu kütüğün içindekilerini
“unutmasına” neden oluyor. Neden bilmiyorum ama bunun olduğunu gördüm. Satır 150 işleri düzenler. SID, kontrol kütüğünün bit 1'i açılıncaya kadar hiç ses çıkartmaz. Bu atak/düşüş/süreklilik devrini başlatmak içindir. Burada $D424'e sadece bir 1 POKE etmemeye dikkat etmem gerekiyordu. Çünkü 110. satırla bit 6'ya bir 0 yerleştirilmişti. Onun için $D424'e 1 POKE ederek elde ettiğim değerle bir OR işlemi gerçekleştirip, sonucu yeniden $D424'e yerleştirdim. (Düzgün çıkması için çözülmesi gereken
Şekil 9- Örnek Byte'ın Dağılımı.
Bit 7 Bit 6 Bit 5 Bit 4 (128) — (64) (32) (16) 1 0 0 1
Bit 3 Bit 2 Bit 1 Bit 0 (8) (4) (2) (1) 0 0 1 1
Bit Kontrolü
Eğer 1 ise 1. sesi açar Eğer 0 ise 1. sesi kapar
Tablo 2- SID'in 1. Sesindeki Kontrol Kütük Değerleri.
0 Eğer 1 ise Atak/Düşüş/Süreklilik devri Eğer 0 ise Dağılma'nın başlaması Eğer 1 ise 1. sesi ve 3. sesi senkronize eder Eğer 1 ise 1. sesi ve 3. sesi modüler olarak bağlar sava
Eğer 1 ise üçgen dalga biçimini seçer Eğer 1 ise testere dişi dalga biçimini seçer Eğer 1 ise kare dalga biçimini seçer Eğer 1 ise parazit dalga biçimini seçer sesler için, bit 1'i POKE $D424, PEEK($D424) AND 254 işlemi ile kapatmak gerekiyor. Programdaki siren sesinin çözülmesi gerekmediğinden bu işleme gerek duymadım.) Kontrol kütüğünün bit 1'i şimdi ayarlanmış olsa bile hâlâ ses yoktur. Çünkü $D422 ve $D423 frekans kütüğündeki değerler hâlâ 0'dır. (0 frekans oldukça sessizdir.) Bu siren rutininde değişir, ses yükselir ve sesi kapat rutininde ses dalar ve durur. Satır 190, frekans düşük byte'ına 1 ve satır 200 frekans yüksek byte'ına değişken bir değer (x) yerleştirir.
Program iki FOR-NEXT döngüsünden her geçişinde, yüksek byte kütüğündeki değer 1'le değişir, bu da tüm frekans değerini 256 ile değiştirmekle aynıdır. (Yüksek byte'ın 256 ile çarpıldığını unutmayın, bu rakam düşük byte'a eklenerek frekans sayısı bulunur.) Satır 210-280 sesi uzatmak için bir düşüş döngüsü kullanır. 1. dökümü yazdıktan sonra SAVE edin. Bu programdaki değişkenlerle oynayarak deneyler yapabilirsiniz. Satır 110'da değişik bir dalga biçimi Sirene bir iki ses2 ve ses3'deki ses kütükleri ayarlanabilir.
DOĞAYA DÖNÜŞ Döküm 4'de C-64 için cırcır böceği sesi çıkartan bir program var. Bu programı kurbağa sesi çıkartan bir programa dönüştürebilirsiniz. Bunun için dökümdeki 130 satırı POKE $D421,20 yapın. Şöyle bir 135. satır ekleyin: 135 :POKE $D424,X 2 ve 160 satırı değiştirin: 160 DT=20: GOSUB 200
Şimdi senaryoyu değiştirelim. Dalga sesine ne dersiniz? Döküm 5 size dalga sesi sunacak. Dalga sesinden sıkılıp havai fişek patlaması duymak istediğinizde 70. satırdaki ATAK değişkenini (A) 3 yapmanız yeterli. Makineli tüfek sesi duymak istiyorsanız 130. satırdaki DÜŞÜŞ döngüsünü kısaltın. Umarım sesler güzeldir. Ve yine umuyorum ki bu yetersiz yazının yardımıyla arkadaşlarınız ve programlarınız için birbirinden güzel sesler üretmeyi başarırsınız.
KUTUK RESET
& LI adi hesabına bir Dart atalım'. İngiltere'de herhangi bir pub'a gittiğiniz zaman sık duyabileceğiniz konuşmalardan biridir bu. Bizde tavlanın manası neyse orada da Dart'ın manası odur. Lüks spor mağazalarında muhakkak 6-7 değişik kalite dart bulabilirsiniz. Şimdi AMIGA'nız size karavana attığınızda kapıyı delmeyeceğiniz, dart tahtanız eskidiğinde kitaplarınızı hedef olarak kullanmanıza gerek bırakmayacak bir oyun sunuyor. Bu AMIGA'cılar için Joystick'lerinize kadar getiril-
Sinan EREL miş tatlı bir oyun. Fakat sakın bu oyunu küçümsemeye kalkmayın. Çünkü tam bir şartlandırılmış refleks oyunu. Dartın ucu devamlı hareket halinde. Uç istediğiniz rakamın üstüne geldiği an fire'a basmalısınız. 5041 sayısı sizin limit sayınız. Aldığınız puanlarla sıfıra ulaşmaya çalışıyorsunuz. İsterseniz tamam canım, bunu oynamaya değmez demeden önce bir kaç el deneyin. Özellikle bilgisayara karşı oynamanızı tavsiye ederim. Karşınıza çıkan kişi dünya Dart şampiyonu, Henüz kendisini yenememiş olmakla beraber bunu dert edinmedim. Onunla oynarsanız bu ünvanı boşuna almamış olduğunu göreceksiniz. Bu arada ufak bir sorunla karşılaşacaksınız. Sıfıra inerken gerekli sayıdan fazlasını alırsanız şansınızı denemek için diğer eli beklemelisiniz. Tabi bu arada arkadaşınız veya şampiyon sıfıra ulaşmazsa. Birden dörde kadar turn ayarlaması yapmak elinizde. Pool ve golf gibi oyunların takipçileri için tavsiye edebilir bir oyun. İyi şanslar...
Oyunun değerlendirmesi AMIGA-512K GRAFİK : 6 SES 10 ZORLUK : 8 KURGU : 6 GENEL :7 y name is Bond, James Bond. Eğer bunu gerçekten söyleyebilecek kadar iddialı biriyseniz bu oyunu mutlaka oynayın. Home computerler evinize ilk defa geldiğinden beri bu tarzda bir çok oyun yapılmış olmasına rağmen Navy Moves sıralamada rahatlıkla üst sıralara tırmanabilecek düzeyde bir oyun. Program iki kademeden oluşuyor. İlk bölümde bir botla çevresi mayınlarla kuşatılmış bir adaya yaklaşıyoruz. Amacımız adada bulunan gizli bir üssü yok etmek. Eğer botla mayınları parçalanmadan aşabilirseniz, dalgıç elbisenizle bottan denize atlıyarak girişi su altında olan üsse ulaşmaya çalışıyorsunuz. Bu arada girişe ulaşana kadar köpekbalıklarına dikkat edin. Girişe ulaştıktan sonra ada yılanları çıkabilir. Eğer üsse ulaştıktan sonra tahrip ederek salimen kaçmayı başarabilirseniz, oyunun ilk bölümünü tamamlamış olacaksınız. İlk level'i bitirdiğiniz için sevinmekte acele etmeyin, çünkü ikinci level birinciden daha karmaşık ve zor. İkinci bölümünde kendimizi bir cep denizaltısı ile nükleer bir denizaltının içinde buluyoruz. Belirli miktarda mermisi olan bir makineliye ve sınırlı yakıtı bulunan bir alev makinesine sahibiz. İlk önce elimizde bulunan makineli tüfeği boşluk tuşuna basarak alev makinesine çevirebiliriz. Silahlı nöbetçilere dikkat! Joystiğinizi öne iterek yere yatın. Evet kurşun salvosu geçti. Artık kalkıp onlarla korkusuzca savaşabilirsiniz. Vurdunuz mu? hemen yanına gidin. Tıpkı savaştaki gibi onun cephanelerini alabilirsiniz. Yalnız cesetleri aramak için acele edin, çünkü cesetler bir müddet sonra buharlaşıyor. Bu arada subaylara da rastlayacaksınız. Vurduktan sonra yanlarına gidip künyelerini okuyun ve taşıdıkları şifreleri alın. Bu şifreleri unutmamak için bir yere yazmanızı tavsiye ederim. Bunlar size gemideki bilgisayarları kullanırken vereceğiniz emirlerin uygulanması için sorulacak olan güvenlik kodları. Gelelim bilgisayarlara, denizaltının içinde ilerlerken bazı bilgisayarların yanından geçeceksiniz. Bunların bazılarının ekranları kumlu, bazılarının ekranları ise ufak tefek yazılarla kaplı. İşte ekranında yazılar olan bilgisayarların önüne gelerek joystiğinizi ileri doğru iterseniz computere girmiş olacaksınız. Computere bazı komutlar verebilirsiniz. Örneğin, stop motors, open door, list, stop engines, v.s. gibi bilgisayardan çıkmak için 'end' yazmanız yeterli. Fakat her bilgisayar her komutu algılamaz. Her bilgisayarın algıladığı komutlar birbirinden farklı olabilir. O yüzden rastladığınız ilk bilgisayar verdiğiniz her komutu algılamazsa şaşırmayın. Sizin için en önemli olan terminal makine dairesinin girişindeki computerdir. Bunun için rastladığınız her subayı öldürerek 1. sınıf güvenliğinizi sağlayın. Eğer her oyun adı ve başlangıç grafiği kadar güzel olsaydı, herhalde AMIGA için çok az kötü oyun olurdu. Bu söylediklerimi hak eden oyunlardan biri de Hawk Eye (Şahin Göz). Yüklenirken çok güzel bir resim göstermesine rağmen kendisi o kadar güzel olmayan bir oyun. Tek özelliği yeni olması. Oyunda amacımız sabit bir bölgeyi tarayarak dört parçadan ibaret bir bulmacanın parçalarını bulmak. Bu işi her level'da tekrar etmek zorunda kalmamız oyuna oldukça monoton bir hava veriyor. Oyun hareketli bir platform üstünde geçiyor. İlk önce soldan sağa doğru koşarak platformun ucuna varıyoruz. Ardından sağdan sola doğru koşarak tekrar platformun öbür ucuna varıyoruz. Bu işlemle kodunu bulmaya bakın. Ah nerdeyse unutuyordum, kurşunlarınızı dikkatli harcayın, çünkü alev makinesi geride iz bırakmadan öldürüyor. Denizaltı da yolunuzu bularak makine dairesine ulaşabilmek için hafızanızın biraz kuvvetli olması lazım. Daha önce geçtiğiniz bir yere başka bir taraftan yeniden gelince bunu hemen fark etmeli ve yolunuzu ona göre değiştirmelisiniz. Evet, eğer reflekslerinize, zekanıza ve hafızanıza güvenebiliyorsanız rahatça başarabileceğiniz bir oyun Navy Moves. Mutlaka bir kez deneyin. İyi eğlenceler...
Oyunun değerlendirmesi
AMIGA-512K GRAFİK : 8 SES : 7 ZORLUK : 9 KURGU : 8 GENEL : 8