C-64 için Grafik Donanımı I

C-64'ün grafik yaratma ve kontrol etme yeteneğinin (sprite 0) 8 en az önemine kadar fazla olduğu herkesçe bilinmektedir. Ama bu bitini (0-255) içerir. grafik yeteneklerini değerlendirmek için hiçbir direkt ko- En önemli (dokuzuncu) mut olmadığı için, programlamayı makine dilinde ya da bit register 16'da depoeğer bu komutları BASIC diline ekleyen bir klavyeniz lanmıştır. Bu gereklidir, yoksa, BASIC POKE komutları kullanarak yapmanız ge- çünkü x koordinatı rekmektedir. Ama hiçbir ilave 64'ün tüm yeteneklerini 255'den büyük olabilir. değerlendiremez. Bu nedenle bilgisayarınızın işleyişini iyi — Ol $01 Y-koordinatı, sprite 0 — 00 0000 0000 bilmek onun potansiyelini tam anlamıyla değerlendire- Yukarıdaki gibi yalnızbilmek için şarttır. ca y'lerdir (9. bitler) ve Grafik programlarına ve grafik kullanılan uygulama- carry yoktur. lara eğilmeden önce, grafik oluşturmada rol oynayan 64 ita a donanımlarını ayrıntılı olarak inceleyeceğiz. o te 1: reg.2/3: Sprite 2: VIC Registerleri reg. 4/5 ve böyle devam eder. İlk olarak, başka şeylerin yanısıra tüm ekran çıktısını — 16 $10 X koordinatlarının en 00 00000 0000 denetleyen işlemci olan Video Arabirim Çipinin (VIC) 47 önemli bit. registerini inceleyeceğiz. Bunlar tüm grafik ve metin fonk- Bunlar x koordinat resiyonlarını kontrol ederler. VIC çipinin nasıl çalıştığını gisterlerinden carry yaanlamak, grafik olayını anlayabilmek için şarttır. ni (9. bitlerdir). Her bit Her bir registerin onluk ve onaltılık sistemdeki karşı- bir sprite'a bağlıdır. lıklarından sonra, (registerin adresini bulmak için her za- Sprite 0 için bit 0, spriman bu karşılık register adresine eklenir) registerin adı te 1 için bit 1 gibi. ve başlangıç içeriği gelir. Bu içerik bilgisayar açıldıktan — 17 $11 Kontrol Registeri 1 155 901001 1011 hemen sonra, registere başlangıç değeri olarak verilen de- Bit 0-2: ekran akışı yuğerdir. Bu değer hem ikilik hem de onluk olarak veril- karı/aşağı mektedir. Bit 3: —0: 24 satır / —1: 25 satır VIC Registerleri - Taban adresi: 53248 ($D000) Bit 4: —0: kapalı ekran / açık ekran Reg. Tanım Başlangıç Değeri Ekran kapalı ise, meron onaltı onluk ikilik kezi işlem ünitesi VIC 00 $00 X-koordinatı, sprite 0 — 00 #0000 0000 tarafından rahatsız edi- Bu register ilk sprite'ın lemez ve programınız

18 $12

19 $13

20 $14

21 $15

22 $16

23 $17 daha hızlı çalışabilir. Bit 5: —1: standart bit-map modu Bit 6: modu Bit 7: register 18'den carry ($12) Raster satırı IRQ Eğer bu register yazılırsa, sayı VIC'in merkezi işlem ünitesinden bir interrupt talebinde bulunacak ekran raster satırını ayarlayacaktır. Okunduğu zaman, verilen sayı VIC'in o sırada uğraştığı raster satırı olacaktır. Bu registerin carry'si register 17'ye yerleştirilmiştir. Işık kalemi x-koordinatı Işık kaleminden (ışık kalemi satırı -0) bir sinyal geldiğinde yazılmakta olan ekran pozisyonunun x-(raster) koordinatı). Işık kalemi x-koordinatı Y raster koordinatı dışında 19 ile aynı. Sprite açık/kapalı Tek tek sprite açma kapama kontrolü. Her bit bir sprite'a bağlıdır. (register 16 gibi) Kontrol register 2 Bit 0-2: ekran akışı sol/ sağ Bit 3: —0: 38 sütun/ 40 sütun Bit 4: çok renkli mod Bit 5-7: kullanılmayan Sprite yayılması, y yönü Her sprite'a bir bit bağlanır. Bir bit ayarlanırsa (1) sprite iki kat ge-

990011
00 900000 0000
00 900000 0000
00 900000 0000
08 900000 1000
00 900000 0000

24 $18

25 $19

26 $1A nişleyecektir. (register 29'a da bakın) VIC taban adresleri Burada video RAM ve karakter seti belleğinin başlangıç adresinin üst bitleri depolanmıştır. Bu değerleri değiştirerek bu alanı oynatmak mümkündür. Bit 0: kullanılmayan Bit 1-3: karakter seti (*2048) 11-13 adres bitleri Bit 4-7: Video RAM (*1024) 10-13 adres bitleri Interrupt talep Registeri (IRR) Kullanıcının bir IRQ kaynağını belirlemesini sağlar. Bit 0— 1: kaynak: raster satırı IRQ (reg.18) Bit 1-1: kaynak: sprite arka plan renkleri (reg.31) Bit 2-1: kaynak: sprite - sprite çakışması (reg.30) Bit 3-1: kaynak: Işık kalemi uyarı yolluyor Bit 4-6: kaynak: kullanılmayan Bit ilk 4 bitin en azından biri 1. Bu register kullanılırsa interrupt sonrasında temizlenmelidir. Bu, register okunup aynı değer yeniden yazılarak yapılır. Interrupt Maske Registeri (IMR) Burada programcının hangi olayların bir in-

20 900001 0100
15 900000
15 400000 1111

terrupt oluşturmasına ler ayarlanır. Aynı zaizin verileceğini karar- manda, register 25'de laştırması mümkündür. bit 2 ayarlanır. Bundan Bitlerin assign edilmesi sonra register temizlenaynı register 25 gibidir. meli, çünkü bitler ken- Hem bunda. hem de re- dilerini otomatik olarak gister 25'de aynı bit yeniden ayarlamazlar. ayarlanırsa merkezi iş- 31 $SIF Sprite-arka plan çakış- 00 700000 0000 lem ünitesine bir IRO ması yollanacaktır. Register Her sprite bir bite as- 26'daki ayarlama bitle- sign edilmiştir. Eğer bir ri Register 26 aracılığıy- bit bir arka plan karakla bir interrupt oluştu- teri ile çakışırsa, o spriolanak verir. te'a assign edilmiş bit 27 $1B Öncelik 00 460000 0000 ayarlanır. Aynı zaman- Her sprite bir bite as- da, register 25'de bit 2 sign edilmiştir. Eğer bir ayarlanır. Sonradan bu bit — | ise, arka plan ka- register temizlenmeli, rakterleri sprite üzerin- çünkü bitler de önceliğe sahiptir. otomatik olarak yeni- Eğer bit -0 ise, sprite den ayarlayamaz. önceliğe sahiptir. 32 $20 Sınır rengi 14 900000 1110 28 $IC Çok renkli sprite'lar 00 400000 0000 33 $21 Arka plan 0 06 900000 0110 Her sprite bir bite as- 34-36 sign edilmiştir. Eğer $22-24 Arka plan renkleri 1-3 01 02 03 bit-1 ise sprite çok 37/38 renkli modda gösterilir. $25/26 Çok renkli sprite 0/1 — 04 00 29 $IE Sprite-sprite çakışması — 00 #40000 0000 39-46 Renkli sprite 0-7 01 02 03 04 05 Her sprite bir bite as- $27-2E 06 07 sign edilmiştir. Eğer bir sprite bir diğeri ile üstüste geliyorsa bu spri- Gelecek ay VIC işletim modlarında buluşmak üzere te'lara tekabül eden bit- hoşçakalın.

gereken yararlı isimlerden biridir; çünkü,

TANÍlÌM

DYNAMITE DUX

they were watching real nice