MOS Teknolojisi VIC-II - MOS Technology VIC-II

C64 ana kartında MOS 6569R3 (PAL versiyonu)

VIC-II (Video Arayüz Çipi II), özellikle olarak bilinir MOS Teknolojisi 6567/8562/8564 (NTSC sürümler), 6569/8565/8566 (PAL ), mikroçip üretmekle görevlendirildi Y / C video sinyalleri (birleştirilmiş kompozit video içinde RF modülatörü ) ve DRAM yenilemek içindeki sinyaller Commodore 64 ve C128 ev bilgisayarları.

MOS'un orijinalini başarmak VIC (kullanılan VIC-20 ), VIC-II, esas olarak C64'ün başarısından sorumlu olan iki yongadan biriydi (diğer yonga 6581'dir) SID ).

Geliştirme geçmişi

VIC-II yongası, öncelikle Al Charpentier ve Charles Winterble tarafından MOS Technology, Inc. halefi olarak MOS Technology 6560 "VIC". MOS Technology'deki ekip daha önce adlı iki grafik yongası üretmekte başarısız olmuştu. MOS Teknolojisi 6562 Commodore TOI bilgisayarı için ve MOS Teknolojisi 6564 Renkli PET için, bellek hızı kısıtlamaları nedeniyle.[1]

VIC-II'yi inşa etmek için Charpentier ve Winterble, mevcut ev bilgisayarları ve video oyunları, mevcut özellikleri ve VIC-II'de hangi özelliklere sahip olmak istediklerini listeliyor. Sprite ekleme fikri, Texas Instruments TI-99 / 4A bilgisayar ve onun TMS9918 grafik işlemcisi. Çarpışma tespitini destekleme fikri, Mattel Intellivision. Atari 800 istenen özellikler için de çıkarıldı.[2][3] Sprite işlevi için çip yüzeyinin yaklaşık 3 / 4'ü kullanılır.[4]

Çip kısmen kullanılarak düzenlenmiştir elektronik tasarım otomasyonu araçlar Aplike (şimdi bir parçası UGS Corp. ) ve kısmen manuel olarak tirşe taklidi kağıt. Tasarımın küçük alt kümelerini içeren ve daha sonra ayrı ayrı test edilebilen yongalar üretilerek tasarım kısmen hata ayıklandı. Bu kolaydı çünkü MOS Technology hem Araştırma ve Geliştirme laboratuar ve yarı iletken fabrikası aynı yerde.[5] Çip 5 mikrometre teknolojisinde geliştirildi.[2]

VIC-II üzerindeki çalışma Kasım 1981'de tamamlandı. Robert Yannes aynı anda üzerinde çalışıyordu SID yonga. Her iki yonga da Commodore 64 için zamanında bitti Tüketici Elektroniği Gösterisi Ocak 1982'nin ilk hafta sonu.[6]

VIC-II özellikleri

64'teki bazı grafik modları gerçekten garip ve ekran boyunca karakter temelinin rengini değiştirme yeteneği gibi Atari veya Apple'ın analogları yok. Bu bize sömürülmemiş çok sayıda renk yeteneği verdi.

— Epyx'ten Craig Nelson, 1986[7]
  • 16 kB adres alanı ekran, karakter ve hareketli bellek için
  • 320 × 200 piksel video çözünürlüğü (çok renkli modda 160 × 200)
  • 40 × 25 karakter metin çözünürlüğü
  • Üç karakter görüntüleme modu ve iki bitmap modu
  • 16 renk
  • 8 eşzamanlı işleme Sprite başına tarama çizgisi, her biri 24 × 21 piksel (12 × 21 çok renkli)
  • Raster kesintisi (aşağıdaki ayrıntılara bakın)
  • Pürüzsüz kaydırma
  • Bağımsız dinamik RAM yenileme
  • Bus mastering 6502 tarzı için sistem veriyolu; CPU ve VIC-II, dönüşümlü yarı sırasında veri yoluna erişiyor.saat döngüleri (VIC-II, ekstra döngülere ihtiyaç duyduğunda CPU'yu durduracaktır)

Teknik detaylar

MOS 6567 VIC-II Pin yapısı.

Aşağıdaki kayıt adreslerinin bir C64'te CPU tarafından görüldüğü gibi belirtildiğini unutmayın. Veri sayfalarında (yani, 0 ile başlayan) genellikle verilen kayıt numaralarını vermek için, baştaki "D0" atlanmalıdır.

Programlama

Suprateknik, bir yazma programı tarafından yayınlandı COMPUTE! 'In Gazetesi Kasım 1988'de, raster kesintileri Standart ekran sınırları dışındaki bilgileri görüntülemek için (burada: üst ve alt kenarlık).

VIC-II, 47 kontrol kaydını (VIC'de 16'dan fazla) değiştirerek programlanır, bellek C64 adres alanında $ D000 - $ D02E aralığına eşlenir. Tüm bu kayıtlardan 34'ü yalnızca sprite kontrol (sprite'lar, VIC-II belgelerinde "Hareketli Nesne Blokları" ndan MOB olarak adlandırılır). Selefi gibi, VIC-II de hafif kalem giriş ve C64'ün standart karakter ROM'unun yardımıyla, orijinal PETSCII 1977'den itibaren 40 sütunlu olarak benzer boyutlara sahip bir ekranda karakter kümesi EVCİL HAYVAN dizi.

VIC-II'nin kontrol kayıtlarını, bilgisayara bağlı makine kodu aracılığıyla yeniden yükleyerek raster kesmesi rutin (tarama hattı kesintisi), bir çip 8'den fazla eşzamanlı sprite oluşturmak için programlanabilir (bir işlem sprite çoklama ) ve genellikle ekranın her program tanımlı dilimine farklı kaydırma, çözünürlük ve renk özellikleri verir. Sprite'ların hızla açılıp kapanmasına izin verilerek, tarama çizgisi başına 8 sprite için donanım sınırlaması daha da artırılabilir. VIC-II'nin yeteneklerini ortaya çıkarmak için raster kesmede ustalık çok önemliydi. Birçok demolar ve sonraki bazı oyunlar, CPU ve VIC-II arasında sabit bir "kilit adımı" oluşturacak ve böylece VIC kayıtları tam olarak doğru zamanda işlenebilecektir.

Karakter grafikleri

C64, 4K ROM'da PETSCII karakter setiyle birlikte gönderildi, ancak ondan önceki VIC-20 gibi, karakterlerin gerçek verileri belirli bir konumda bellekten okundu. Bu konum, programcıların uygun verileri belleğe yerleştirerek kendi karakter kümelerini oluşturmalarına izin veren VIC-II kayıtlarından biriydi; her karakter bir 8x8 ızgaraydı, bir bayt yatay olarak 8 biti temsil ediyordu, bu nedenle tek bir karakter için 8 bayt gerekliydi ve bu nedenle 256 karakterlik tam sette toplam 2.048 bayt kullanıldı. Teorik olarak, 16k video belleğinin tamamı doldurulmuşsa sekiz adede kadar karakter seti kullanılabilir.[8]

VIC-II, karakter setlerine ek olarak, her karakter için bir bayt olmak üzere satır başına 25 satırlık 40 karakter depolamak için 1000 bayt kullanır ve varsayılan yapılandırmada 400-7E8 ABD Doları tutarındadır.[8] Renkli RAM'e video matrisinin 8 ila 11. bitleri olarak erişilir;[9] 64 ve 128'de, G / Ç alanında D800 - $ DBFF arasında bulunur ve bu konumdan taşınamaz. Her karakterin renk 1 (çok renkli modda renk 3) değerlerini içerir.

Karakter ROM, VIC-II'nin dört "penceresinden" ikisine, 1000 $ - $ 1FFF ve $ 9000 - $ 9FFF olarak eşlenir, ancak CPU onu orada göremez (karakter ROM'u $ D000 - $ DFFF'ye çevrilebilir. CPU tarafından görülebilir, ancak VIC-II görülmez). Bu nedenle grafik verileri veya video arabellekleri 1000 $ - 1FFF $ veya 9000 $ - 9FFF $ 'a yerleştirilemez çünkü VIC-II burada karakter ROM'unu görecek. Bu RAM alanları VIC-II grafik yongası tarafından kullanılamadığından, bunlar sıklıkla müzik / ses efektleri (SID yongası) için kullanıldı. C64, bellekte aynı adreste RAM ve ROM'a sahip olabilir, ancak CPU birini "görür" ve VIC-II yongası diğerini "görür".

Varsayılan yüksek çözünürlüklü karakter modunda, her karakterin ön planı renkli RAM'de ayrı ayrı ayarlanabilir. Çok renkli karakter modunda, renk 3 ilk sekiz olası renk değeriyle sınırlıdır; dördüncü bit daha sonra bu karakterin yüksek çözünürlükte mi yoksa çok renkli mi görüntüleneceğini belirten bir işaret olarak kullanılır, böylece her iki türün bir ekranda karıştırılmasını mümkün kılar.[8] 1. ve 2. renkler, kayıtlar tarafından $ D022 ve $ D023 olarak belirlenir ve tüm karakterler için globaldir.[8]

Genişletilmiş Arka Plan Rengi Modu kullanılırsa, karakter kodunun üstteki iki biti, dört arka plan rengi kaydından birini seçmek için kullanılır. Bu, ekranda dört farklı arka plan rengine izin verir, ancak 256 yerine yalnızca 64 farklı karaktere izin verme pahasına. Bu sınırlayıcı olduğundan, oyunlar nadiren kullanır.

Bitmap modu

Tüm noktalara adreslenebilir bir bitmap modu eklemek, VIC-I'in böyle bir özelliğe sahip olmaması nedeniyle Commodore tasarım ekibinin birincil hedeflerinden biriydi. Bununla birlikte, olabildiğince az ek devre kullanmak için, onu karakter moduyla aynı şekilde düzenlediler, yani 8x8 ve 4x8 karolar. Bitmap grafikleri, piksel verileri için bir 8k sayfası gerektirir ve her bayt, sekiz veya dört piksellik bir sıraya karşılık gelir. Bir sonraki bayt, altındaki satırdır ve 8. satırdan sonra, bir sonraki döşemenin üstüne geri döner.

Yüksek çözünürlüklü bit eşlemlerde, ekran RAM'i, her bir döşemenin ön plan ve arka plan renklerini (her baytın yüksek ve düşük biti) tutmak için kullanılır. Bu, $ D800'deki renkli RAM'i veya $ D021'deki arka plan rengi kaydını kullanmayan tek VIC-II modudur.

Çok renkli bitmap modu, döşeme başına üç renge izin verir (dördüncüsü, $ D021'de belirlenen arka plan rengidir). Renkler 1 ve 2, ekran RAM'indeki bitler tarafından seçilir (işe alınanların bit eşlemleriyle aynı) ve üçüncüsü, renkli RAM'den seçilir.

Bitmap modunun yüksek düzeyde renk ayrıntısı ve tüm noktaları adreslenebilir yeteneklerine rağmen, yüksek miktarda sistem kaynağı gerektirdiğinden oyun içi grafikler için genellikle pratik değildir (piksel verileri için 8k artı her birini değiştirmek için önemli ölçüde daha fazla CPU döngüsü) karo) ve normalde kaydırılamaz. Bu nedenle, en çok yükleyici ve bazen başlık ekranlarında görülür.

Sprites

VIC-II hareketli resimler 24x21 tek renkli veya 12x21 çok renklidir. Karakter grafiklerine benzer şekilde, ikincisi her sprite için bir ayrı renge ve iki global renge sahiptir. VIC-II, her biri depolamak için 64 bayt bellek kullanan sekiz sprite sahiptir, ancak belirli sınırlamalarla çok daha fazlasını görüntüleyebilir. Hareketli grafik çoğullama, ekranda sekizden fazlasını görüntülemenin yaygın bir yöntemidir (yine de tarama satırı başına en fazla sekiz tane vardır). VIC-II tarama çizgisi sayaçları, ekranda istenen noktaya ulaşılıncaya kadar yoklanır, ardından program hızlı bir şekilde hareketli grafik koordinatlarını değiştirir. Bu programlama hilesi ve diğer geçici çözümler, ekranda bir kez yirmiden fazla sprite ile sonuçlanabilir. Yine de bir demo için sınır önemli ölçüde daha esnektir.

Teoride, aynı anda görülebilen maksimum farklı sprite sayısı 256'dır (VIC-II'nin tüm 16k sayfasının doldurulduğu varsayılarak). Hafızadaki 0 ​​ile başlayan ve video sayfasındaki konumlarına bağlı olarak 255'e ($ FF) giden her hareketli grafik desenine başvurmak için bir blok numarası kullanılarak adreslenirler. (İkinci video bankası (0 1 2 ve 3 olarak numaralandırılır) kullanılırsa, Blok 0 4000 $ 'da saklanan hareketli grafiğe atıfta bulunur ve Blok 255 7FC0 $ olur).

Her hareketli grafik dikey, yatay veya her iki şekilde iki kat daha büyük olabilir. Bu, hareketli grafiği büyütmez (görsel olarak hariç) veya hareketli grafiğe daha fazla piksel eklemez, yalnızca mevcut piksellerin ölçeğini yükseltir.

Sprite'lar için yatay konum kaydı bir bayt olduğundan ve maksimum 255 değeriyle sınırlı olduğundan, VIC-II'nin ekran alanının 320 pikselinin tamamını kapsayamadı, bu nedenle bunun için En Önemli Bayt Bayrağı adı verilen ek bir kayıt sağlanır.

$ D01E ve $ D01F, Arkaplan ve Sprite-to-Sprite Çarpışma kayıtlarını içerir. İlki, hareketli grafiğin dokunduğu belirli arka plan nesnesi hakkında bilgi sağlayamadığı için nadiren kullanılır.

$ D01B, hareketli grafiğin arka plan nesnelerinin arkasında mı yoksa önünde mi hareket edeceğini belirlemek için kullanılan Arka Plana Sprite öncelik kaydını içerir. Bir hareketli grafik başka bir hareketli grafik ile aynı boşluğa girdiğinde, düşük numaralı olanlar her zaman daha yüksek numaralı olanların üzerinden geçecektir.

Kaydırma

Bir karakter ekranını kaydırmak için, VIC-II $ D011 ve $ D016'daki kayıtlar aracılığıyla 38 sütunlu ve / veya 24 satırlı moda ayarlanır. Bu, kaydırılacak karakter sırasının yerleştirildiği ekran dışı bir arabellek oluşturur. Yukarıda bahsedilen yazmaçlardaki kaydırma bitlerinin ayarlanmasıyla, bir satır ekranda hareket ettirilebilir ve ardından arabelleğe yeni bir satır konulmadıkça tekrarlanır. Renkli RAM, ekran RAM ile eşzamanlı olarak kaydırılır ve aynı şekilde çalışır.

VIC-II kaydırma, nispeten karmaşık, CPU yoğun bir görevdir, ancak C64 oyun programcılarının, renkli RAM'in sabit kalabilmesi için grafikler tasarlayarak hile yapması alışılmadık bir durum değildir. Diğer bir standart numara, yapılması gereken kaydırma miktarını azaltmak için ekranın alt veya üst% 25'ini bir puan sayacı ile kaplamaktır. Son olarak, genellikle karakter verilerini yazmak için fazladan 1k RAM kullanmak ve ardından ekranın yırtılmasını önlemek için ekran RAM'ine "blit" yapmak gerekir, ancak bu renkli RAM ile yapılamaz.

C64'ün ticari ömrünün sonlarında, standart kaydırma kayıtlarından çok daha düşük bir CPU döngü maliyetiyle hızlı kaydırma üretmek için $ D011'deki kontrol bitlerinin manipülasyonunu içeren VSP (Sanal Ekran Konumlandırma) olarak bilinen bir istismar keşfedildi, ancak dikkatli olunması gerekiyordu. , döngüsel tam kodlama ve bazı VIC-II revizyonlarında güvenilir bir şekilde çalışmadı, ayrıca yalnızca yatay kaydırma için kullanılabilir. Özellikle kullanılır Monsterland'de Kargaşa.

Raster kesintileri

Tarama kesintilerinin kullanılması, C64 oyun programlamanın önemli bir parçasıdır. Bilgisayarın varsayılan açılış durumunda, ilk MOS Teknolojisi CIA yonga bir maskelenebilir kesinti (IRQ) saniyede 60 kez (NTSC) veya 50 (PAL), CPU'yu çekirdek IRQ işleyicisine EA31 $ 'dan gönderir. İşleyici CIA'nın IRQ'sunu kabul eder, saati günceller, klavyeyi tarar ve BASIC'de imleci yanıp söner.

Oyunlar normalde CIA'nın kesintisini devre dışı bırakır ve bunun yerine VIC-II'yi, bölünmüş ekran kaydırma ve müzik çalma için gerekli olan belirli bir tarama çizgisine ulaşıldığında kesintiler oluşturacak şekilde ayarlar. Oyun, IRQ vektör Bu işlevleri yerine getiren ve ardından isteğe bağlı olarak kontrolü çekirdeğe döndürmek için bir JMP $ EA31 komutunu yürüten tarama işleyicisine 0314 $ / 0315 $ 'dan.

Bazı oyunlar yalnızca bir IRQ kullanır; ancak, yuvalanmış olanlar daha yaygındır ve programın kararlılığını iyileştirir. Bu kurulumda, IRQ ikinci rutine yeniden eşlenir ve sonuncusu onu ilk IRQ'nun adresine geri yükleyene kadar her biri için böyle devam eder. İç içe geçmiş IRQ'lar kullanıldığında, zincirde yalnızca bir JMP $ EA31 talimatı gerekir ve diğerleri basitçe çekirdek işleyicisinin sonuna giden JMP $ EA81 ile sonlandırılabilir. Ayrıca oyunların kernal'u değiştirmesi ve bunun yerine kendi IRQ işleyicisini kullanması alışılmadık bir durum değildir. NMI, ek bir kesinti iş parçacığı için kullanılabilir, ancak istenmeyen yan etkiler, basıldığında bir NMI'yi tetiklediği için yanlışlıkla Geri Yükle tuşuna basılmasından kaynaklanabilir.

VIC-II ayrıca çarpışma kayıtlarından bir tarama kesintisi oluşturabilir, ancak bu özellik nadiren kullanılır.

Bellek eşleme

VIC-II, 14 bitlik bir adres veriyoluna sahiptir ve video verileri için C64'ün bellek alanının dört 16k segmentinden herhangi birini kullanabilir. Bunu yönetmek için, CIA'nın bağlantı noktası bitleri tarafından iki ek adres biti katkıda bulunur. Varsayılan açılış değeri 0000 - 3FFF ABD dolarıdır. İkinci segment (4000 $ - 7FFF $) tipik olarak BASIC'den programlama için en iyi seçimdir çünkü tamamen boş RAM olan ve ROM'lar veya I / O kayıtları eşlenmemiş tek segmenttir. Dördüncü segment ($ C000 - $ FFFF) ayrıca, CPU tarafından okuma erişimi elde etmek için çekirdek ROM'larının devre dışı bırakılması gerektiğinden, makine dilinin kullanılması koşuluyla iyi bir seçimdir ve sonuç olarak birbirini izleyen program kodu ve verilere sahip olmaktan kaçınır. 4000-7FFF $ kullanarak. Grafik verilerinin BASIC ROM altında $ A000- $ BFFF'de, çekirdek ROM'un $ E000- $ FFFF'de veya I / O kayıtlarında ve renkli RAM'in $ D000– $ DFFF'de serbestçe saklanabileceğini unutmayın, çünkü VIC-II yalnızca RAM, CPU bellek eşlemesinin nasıl ayarlandığına bakılmaksızın; karakter ROM'u yalnızca birinci ve üçüncü segmentte görülebilir, bu nedenle eğer segment iki veya dört kullanılıyorsa, programcı kendi karakter verilerini sağlamalıdır. Ekran RAM'i, bit eşlem sayfası, hareketli karakterler ve karakter kümelerinin tümü aynı segment penceresini işgal etmelidir (CIA bitlerinin tarama hattı kesintisi yoluyla değiştirilmemesi koşuluyla). Sistem belleğinin son altı baytı ($ FFFA- $ FFFF) IRQ, NMI ve sıfırlama vektörlerini içerir, bu nedenle belleğin üst kısmı bir karakter kümesini veya hareketli grafik verilerini depolamak için kullanılıyorsa, bir karakter veya hareketli yazıdan fedakarlık etmek gerekir. vektörlerin üzerine yazmaktan kaçınmak için.

Kayıtlar

VIC-II, aşağıda listelenen 47 okuma / yazma kaydına sahiptir:

Kayıt olOnaltılıkBit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0Açıklama
0
D000
M0X
X Koordinat Sprite 0
1
D001
M0Y
Y Koordinat Sprite 0
2
D002
M1X
X Koordinat Sprite 1
3
D003
M1Y
Y Koordinat Sprite 1
4
D004
M2X
X Koordinat Sprite 2
5
D005
M2Y
Y Koordinat Sprite 2
6
D006
M3X
X Koordinat Sprite 3
7
D007
M3Y
Y Koordinat Sprite 3
8
D008
M4X
X Koordinat Sprite 4
9
D009
M4Y
Y Koordinat Sprite 4
10
D00A
M5X
X Koordinat Sprite 5
11
D00B
M5Y
Y Koordinat Sprite 5
12
D00C
M6X
X Koordinat Sprite 6
13
D00D
M6Y
Y Koordinat Sprite 6
14
D00E
M7X
X Koordinat Sprite 7
15
D00F
M7Y
Y Koordinat Sprite 7
16
D010
M7X8M6X8M5X8M4X8M3X8M2X8M1X8M0X8X koordinatlarının MSB'leri
17
D011
RST8ECMBMMDENRSEL
YSCROLL
Kontrol kaydı 1
18
D012
RST
Raster sayacı
19
D013
LPX
Işık Kalem X
20
D014
LPY
Işık Kalem Y
21
D015
M7EM6EM5EM4EM3EM2EM1EM0ESprite etkinleştirildi
22
D016
--RESMCMCSEL
XSCROLL
Kontrol kaydı 2
23
D017
M7YEM6YEM5YEM4YEM3YEM2YEM1YEM0YESprite Y genişletmesi
24
D018
VM13VM12VM11VM10CB13CB12CB11-Bellek işaretçileri
25
D019
IRQ---ILPIMMCIMBCIRSTKesinti kaydı
26
D01A
----ELPEMMCEMBCERSTKesinti etkinleştirildi
27
D01B
M7DPM6DPM5DPM4DPM3DPM2DPM1DPM0DPSprite veri önceliği
28
D01C
M7MCM6MCM5MCM4MCM3MCM2MCM1MCM0MCSprite çok renkli
29
D01D
M7XEM6XEM5XEM4XEM3XEM2XEM1XEM0XESprite X genişletmesi
30
D01E
M7MM6MM5MM4MM3MM2MM1MM0MSprite-sprite çarpışması
31
D01F
M7DM6DM5DM4DM3DM2DM1DM0DSprite-veri çarpışması
32
D020
----
EC
Sınır rengi
33
D021
----
B0C
Arka plan rengi 0
34
D022
----
B1C
Arka plan rengi 1
35
D023
----
B2C
Arka plan rengi 2
36
D024
----
B3C
Arka plan rengi 3
37
D025
----
MM0
Sprite çok renkli 0
38
D026
----
MM1
Sprite çok renkli 1
39
D027
----
M0C
Renk sprite 0
40
D028
----
M1C
Renk sprite 1
41
D029
----
M2C
Renk sprite 2
42
D02A
----
M3C
Renk sprite 3
43
D02B
----
M4C
Renk sprite 4
44
D02C
----
M5C
Renk sprite 5
45
D02D
----
M6C
Renk sprite 6
46
D02E
----
M7C
Renk sprite 7

Renkler

VIC-II yongası, yukarıda gösterildiği gibi sabit 16 renkli bir palete sahiptir.

Çok renkli karakter modunda (çoğu oyunda kullanılan 160 × 200 piksel) karakterler 4 × 8 piksele (pikseller çift genişlikli olduğundan karakterler hala yaklaşık olarak kareydi) ve 16 renkten 4 renge sahipti. 4. renk tüm ekran için aynıydı (arka plan rengi), diğer 3 ise her 4 × 8 piksel alanı için ayrı ayrı ayarlanabiliyordu. Aktif metin ekranından iki renk ve üçüncüsü renkli RAM'den yüklendi. Çok renkli modda (12 × 21 piksel) hareketli resimler üç renge sahipti: ikisi tüm hareketli karakterler arasında paylaşılır ve bir kişi. Sanatçı, tek tek renklerle kombinasyonun renkli bir izlenim yaratması için paylaşılan renkleri seçmek zorunda kaldı. Bazı oyunlar, tarama kesintisi sırasında paylaşılan renkleri yeniden yükledi; örneğin oyun Turrican II'ler dikey olarak farklı olan su altı alanı farklı renklere sahipti. Gibi diğerleri Epyx 's Yaz Oyunları ve COMPUTE! 'In Gazetesi 's Basketbol Sam & Ed, yatay çözünürlükten ödün vermeden iki ön plan renginin kullanılmasına izin vermek için iki yüksek çözünürlüklü sprite üst üste bindirildi [1]. Elbette, bu teknik mevcut sprite sayısını yarı yarıya azalttı.

Açık PAL C64'ler, PAL gecikme hattı rengi ortalayan monitörde veya TV'de renk, ancak birbirini izleyen ekran çizgilerinin parlaklığı, aynı parlaklığa sahip iki rengi gösteren ekran çizgilerini değiştirerek standart olmayan yedi renk oluşturmak için kullanılabilir. VIC çipinde bu tür yedi renk çifti vardır.

C64'ün ekibi 16 renk paletini matematiksel olarak hesaplamak için fazla zaman harcamadı. VIC-II'nin geliştirilmesinde yer alan Robert Yannes şunları söyledi:

Korkarım ki renk seçiminde düşündüğünüz kadar fazla çaba sarf edilmedi. Ton, doygunluk ve parlaklık üzerinde tam kontrole sahip olduğumuz için beğendiğimiz renkleri seçtik. Çipte yer kazanmak için, renklerin çoğu, renk çemberinin seçtiklerimizin zıt tarafıydı. Bu, her renk için tamamen benzersiz bir sete sahip olmak yerine, mevcut direnç değerlerini yeniden kullanmamıza izin verdi.[10]

PAL C64'lerde kullanılan VIC-II'nin önceki sürümlerinin, sonraki revizyonlardan farklı bir renk paletine sahip olduğuna dikkat edin.[11]

On altı renkten oluşan tam palet aşağıda gösterilmiştir:

Sayı - adYPb (göreli)Pr (rel.)
0 - siyah000
1 - beyaz100
2 - kırmızı0.3125−0.38268340.9238795
3 - camgöbeği0.6250.3826834−0.9238795
4 - mor0.3750.70710680.7071068
5 - yeşil0.5−0.7071068−0.7071068
6 - mavi0.2510
7 - sarı0.75−10
8 - turuncu0.375−0.70710680.7071068
9 - kahverengi0.25−0.92387950.3826834
10 - açık kırmızı0.5−0.38268340.9238795
11 - koyu gri0.312500
12 - orta gri0.4687500
13 - açık yeşil0.75−0.7071068−0.7071068
14 - açık mavi0.4687510
15 - açık gri0.62500


VIC-IIe

MOS 8566 VIC-IIe pin çıkışı

8564/8566 VIC-IIe, Commodore 128 Daha fazla sinyal ürettiği için 40 yerine 48 pim kullandı, bunların arasında ek Zilog Z80 O bilgisayarın CPU'su. Ayrıca iki ekstra kaydı vardı. Ek kayıtlardan biri, eklenen sayısal tuş takımına ve o bilgisayarın diğer ekstra tuşlarına erişmek içindi; bu işlev, yalnızca gerekli üç ekstra çıkış pini eklemek için bilgisayardaki en kolay yer olduğu için VIC'ye eklenmiştir. Diğer ekstra kayıt, 1 MHz ve 2 MHz sistem saati arasında geçiş yapmak içindi; Daha yüksek hızda, VIC-II'nin video çıkışı, ekranda siyah işe yarayan bit kalıbı olarak koddaki her saniye baytı gösteriyor, bu da C128'in 80 sütunlu modunun bu hızda (aracılığıyla 8563 VDC RGB çipi). Gayri resmi bir şekilde, iki ekstra yazmaç da C128'in C64 modunda mevcuttu ve ekstra anahtarların bir kısmının kullanımına ve ayrıca iki kat hızlı videolu yürütmeye izin veriyordu. CPU'ya bağlı kendi kendine yapılan C64 programlarında kod (yoğun sayısal hesaplamalar gibi).[12] Ekstra yazmaçlar ayrıca C128'in C64 modu ile gerçek bir C64 arasındaki küçük uyumsuzlukların bir kaynağıydı - birkaç eski C64 programı yanlışlıkla 2 MHz gerçek bir C64'te hiçbir şey yapmayan, ancak C64 modunda C128'de düzensiz bir görüntüye neden olan geçiş biti.

VIC-IIe, renk sinyalini çipin diğer bölümlerinin içinde olduğunu düşündüğü fazdan çıkaran belirli bir şekilde kayıtlara müdahale ederek ek bir renk seti oluşturma konusunda az bilinen bir yeteneğe sahiptir.[kaynak belirtilmeli ]

VIC-IIe'nin test bitinin özel davranışını kullanarak, 320 × 400 (işe alım modu) ve 160 × 400 (çok renkli mod) çözünürlüklü gerçek bir taramalı resim üretebilir.

VIC-II sürümlerinin listesi

Commodore, ömrü boyunca VIC-II'de birçok değişiklik yaptı. Compute! 'S Gazette'Temmuz 1983’teki ilk sayısı, Commodore 64’ün 1982 ortalarında piyasaya sürülmesinden bu yana sekiz tane olduğunu bildirdi.[13]

  • PAL
    • MOS Teknolojisi 6569 - (PAL-B, çoğu PAL ülkesinde kullanılmaktadır)
    • MOS Teknolojisi 6572 - (PAL-N, yalnızca Güney Güney Amerika'da kullanılır)
    • MOS Teknolojisi 6573 - (AVUÇ İÇİ, yalnızca Brezilya'da kullanılır)
    • MOS Technology 8565 - "C64E" anakartlar için HMOS-II versiyonu
    • MOS Technology 8566 - VIC-II E (PAL-B) C128 versiyonu
    • MOS Technology 8569 - VIC-II E (PAL-N) C128 versiyonu
  • NTSC
    • MOS Technology 6566 - aşağıdakiler için tasarlandı SRAM /olmayan-muxed adres satırları ( Commodore MAX Makinesi )
    • MOS Technology 6567 - Orijinal NMOS sürümü
    • MOS Technology 8562 - HMOS-II sürümü
    • MOS Technology 8564 - VIC-II E C128 versiyonu

Notlar

Tüm C64 modellerinde VIC-II, kolay değiştirme için soketlidir, ancak 8565 ve 8562 yalnızca 5 volt kullanırken 6569, 6572, 6573, 6566 ve 6567'nin 12 volt ve 5 volt kullandığına dikkat etmek önemlidir. Eski sürümü, ana kart değişikliği olmadan yeni sürümle değiştirmek, C64 anakartların en eski sürümlerinde çalıştırılırsa 8565 ve 8562'yi yok eder.

6569'un birkaç revizyonu mevcuttur: 6569R1 (genellikle altın kaplamalı), 6569R3, 6569R4 ve 6569R5. 8565'in en yaygın versiyonu 8565R2'dir.

Ayrıca bakınız

Referanslar

  1. ^ Bagnall Brian (2005). "Gizli Proje 1981". Sınırda: Commodore'un Muhteşem Yükselişi ve Düşüşü (1 ed.). Winnipeg, Manitoba: Variant Press. s. 224–225. ISBN  0-9738649-0-7.
  2. ^ a b Perry, Tekla S .; Wallich Paul (Mart 1985). "Tasarım vaka geçmişi: Commodore 64" (PDF). IEEE Spektrumu. New York, New York: Elektrik ve Elektronik Mühendisleri Enstitüsü: 48–58. ISSN  0018-9235. Alındı 2011-11-12.
  3. ^ Bagnall Brian (2005). "Gizli Proje 1981". Sınırda: Commodore'un Muhteşem Yükselişi ve Düşüşü (1 ed.). Winnipeg, Manitoba: Variant Press. s. 227. ISBN  0-9738649-0-7.
  4. ^ Bagnall Brian (2005). "Gizli Proje 1981". Sınırda: Commodore'un Muhteşem Yükselişi ve Düşüşü (1 ed.). Winnipeg, Manitoba: Variant Press. s. 229. ISBN  0-9738649-0-7.
  5. ^ Bagnall Brian (2005). "Gizli Proje 1981". Sınırda: Commodore'un Muhteşem Yükselişi ve Düşüşü (1 ed.). Winnipeg, Manitoba: Variant Press. s. 230. ISBN  0-9738649-0-7.
  6. ^ Bagnall Brian (2005). "Gizli Proje 1981". Sınırda: Commodore'un Muhteşem Yükselişi ve Düşüşü (1 ed.). Winnipeg, Manitoba: Variant Press. s. 242. ISBN  0-9738649-0-7.
  7. ^ Yakal Kathy (Haziran 1986). "Commodore Grafiklerinin Evrimi". Compute! 'S Gazette. s. 34–42. Alındı 2019-06-18.
  8. ^ a b c d Cowper, Ottis R. (1986). Commodore 128'in Haritalanması. Greensboro, Kuzey Carolina: BİLGİSAYAR! Kitabın. ISBN  0-87455-060-2.
  9. ^ "6567 Video Arayüz Yongası: Özellikler Sayfası" (PDF). Commodore Semiconductor Group. sayfa 2 ve 5.
  10. ^ Timmermann, Philip. "Commodore VIC-II Renk Analizi (Önizleme)". Alındı 11 Şubat 2018.
  11. ^ Sjöstedt, Ilkka. "Eski VIC-II Renkleri ve Renk Karışımı". ilesj'in blogu. Alındı 11 Şubat 2018.
  12. ^ Cowper, Ottis R .; Florance, David; Heimarck, Todd D .; Krause, John; Miller, George W .; Mykytyn, Kevin; Nelson, Philip I .; Victor, Tim (Ekim 1985). "Bölüm 7. Sistem Mimarisi". COMPUTE! 'In 128 Programcı Kılavuzu. Greensboro, Kuzey Carolina: BİLGİSAYAR! Yayınlar. sayfa 348–349. ISBN  0-87455-031-9.
  13. ^ Halfhill, Tom R. (Temmuz 1983). "Commodore 64 Video Güncellemesi". Compute! 'S Gazette. s. 40. Alındı 6 Şubat 2016.

Dış bağlantılar