Televizyon Arayüz Adaptörü - Television Interface Adaptor

Televizyon Arayüz Adaptörü ( TIA ) gelenektir bilgisayar çipi bir varyantı ile birlikte MOS Technology 6502 , 1977 kalbidir Atari Video Bilgisayar Sistemi oyun konsolu. TIA, ekran görüntüsünü, ses efektlerini oluşturur ve denetleyicileri okur. Atari VCS tasarlandığı zaman, küçük miktarlarda RAM bile pahalıydı. Çip, çerçeve arabelleğine sahip olmayacak şekilde tasarlandı, bunun yerine basit bir ekran oluşturmak için bile ayrıntılı programlama gerektiriyor.

CO10444/CO11903 TIA'nın geliştirilmesine, Atari'de ANTIC ve CTIA/GTIA yongalarına sahip Atari 400/800 bilgisayarlar için TIA'nın tasarımını genişletmeye devam eden Jay Miner liderlik etti . Jay Miner daha sonra Amiga bilgisayarı için özel çiplerin tasarımına öncülük etti .

Tasarım

Orijinal altı anahtarlı Atari VCS'nin anakartı. 40 pinli TIA yongası solda. Merkez 24-pin MOS Technology 6507 ve sağında 40-pin MOS Technology 6352 Ram-I/O-Timer (RIOT) yongası. Kartuş yerleştirme yuvası, RIOT çipinin hemen sağındadır.

Arka fon

1975 civarında, Atari'nin Steve Mayer ve Ron Milner liderliğindeki Cyan Engineering'deki mühendisleri, atari video oyunları ve ev video oyun konsolları için uygulamaya özel entegre devreler (ASIC) gibi özel donanım geliştirmeye alternatifler düşünüyorlardı. Programlanabilir mikroişlemciler pazara ulaşmıştı, ancak Atari bunları bir ev uygulaması için çok pahalı buldu. Ayrıca, grafik görüntüleme seçeneklerinde maliyetle sınırlıydılar. Zaman içinde bu noktada, birçok bilgisayar grafik kullanılarak oluşturulan cinler daha sonra gösterilmek üzere bir analog sinyale çevrildi bir Playfield, üstüne çekilen CRT video monitörü . Spritelar bir şekilde yapılacağı bitmap a frame buffer gerektiren, rasgele erişim belleği (RAM). RAM hala pahalıydı, megabayt başına on binlerce dolara mal oluyordu ve 80×48 ekranda iki renkli bir oyun alanı sergilemek, bellekte binlerce dolara mal olacaktı. Geleneksel bir NTSC renkli televizyonda , maksimum çözünürlükler genellikle satır başına 256 ila 320 piksel ve ekran başına 192 ila 240 satır arasında düşüyordu.

Eylül 1975'te MOS Technology , piyasadaki ilk düşük maliyetli mikroişlemcilerden biri olan 6502 mikroişlemcisini tanıttı . Mayer ve Milner, çipin tasarımcısı Chuck Peddle ile 6502'yi programlanabilir video oyun konsollarının temeli olarak kullanma konusunda konuşmak için anlaştılar . Birkaç gün içinde, Peddle'ın Atari'ye daha düşük maliyetli MOS Technology 6507 işlemci ve MOS Technology 6532 RAM-I/O-Timer (RIOT) kullanımını sunması ile Atari VCS'nin temel tasarımı ortaya kondu. tasarımın çekirdeği olarak. 6502 test yatağı sisteminin üzerindeki ekran adaptörü için bir devre tahtası prototipi kullanan Milner, Tank oyunlarının basit bir versiyonunu programlama yeteneğini gösterebildi . Joe Decuir , Milner'ın kavram kanıtını işlevsel bir prototipe dönüştürmek için işe alındı; bu, Atari'nin geliştirmenin devam etmesi için ilerleme sağlaması için yeterli.

Decuir sistemin geri kalanının tasarımı üzerinde çalışırken, Jay Miner ekran bağdaştırıcısı için bir ASIC yapmaya odaklandı. Başlangıçta, ASIC ekran bağdaştırıcısı Televizyon Arabirim Bağdaştırıcısı (TIA) olarak adlandırıldı. Ekip tasarımına başladığında RAM maliyeti yüksek kaldı ve bu nedenle bellek tabanlı çerçeve arabellekleri kullanma seçeneği TIA'nın tasarımından çıkarıldı.

RAM'siz tasarım

RAM eksikliği nedeniyle, TIA, ekrandaki görüntünün beş hareketli grafik nesnesinin (2 oyuncu, 2 füze ve 1 top) ve statik bir oyun alanı nesnesinin manipüle edilmesiyle oluşturulmasıyla geleneksel çerçeve arabelleği yaklaşımından farklıdır. Bunların tümü, çerçeve arabelleği eşlemeli bir modelde kullanılan tekniğin aksine, programın bunları her tarama satırında güncellemesini gerektiren tekniğin aksine, ilgili kayıtlarından her tarama satırında oluşturulur. Boyutu belirli grafik nesnesine bağlı olduğundan, yatay çözünürlük tek tip değildir. En küçük piksel birimi, bir satırda 160 görünür olan çipin 1 renk saat döngüsüne karşılık gelir.

Playfield nesnesi, simetrik olarak yansıtılabilen veya toplamda 40 bit için ekranın sağ yarısına olduğu gibi kopyalanabilen (her bit 4 renk döngüsüdür) iki buçuk baytlık (20 bit genişliğinde) bir kayıttan oluşur. geniş). Bit 1 veya 0 ise çizilen renk, önceden tanımlanmış 128 renge kadar (aşağıya bakın) bir paletten seçildi ve diğer kayıtlarda tutuldu.

TIA ayrıca aşağıdakilerden oluşan beş ayrı grafik nesnesini destekledi:

  • 'Oluşturan iki 8 piksel yatay çizgiler cinler ' Oyuncu 1 ve oyuncu 2. Bu, tek renkli olan 2 ya da 4 kat gerilebilir ve çoğaltılmış veya üçlenmiş edilebilir.
  • Bir 'top' - oyun alanıyla aynı renkte olan yatay bir çizgi. Bir, iki, dört veya sekiz piksel genişliğinde olabilir.
  • İki 'füze' - ilgili oyuncusuyla aynı renkte olan başka bir yatay çizgi. Bir, iki, dört veya sekiz piksel genişliğinde olabilir.

RAM tabanlı çerçeve arabellekleri olmadan, çarpışma tespiti de karmaşıktır. TIA, 15 set/reset flip-flop kullanarak tüm bu nesneler için donanım çarpışma algılamasına sahiptir ve tipik olarak VBLANK periyodu sırasında okunan bir çarpışma bitmap'ini saklar. TIA'daki kayıtlar, programcının grafik nesnelerin konumunu ve renklerini kontrol etmesine izin verir.

TIA ayrıca iki kanallı tek bit ses sağlar. Her kanal 32 adım değeri ve 16 olası bit dizisi sağlar. 4 bit ses kontrolü vardır.

Son olarak, TIA, potansiyometre kullanarak dört adede kadar analog kürek denetleyicisini okumak ve iki joystick tetikleyicisi için girişlere sahiptir .

Ekranın çizilmesi

Kayıtlar, ekranın yalnızca tek bir satırı için veri tuttuğundan, tam ekran oluşturmak, oyun programının kayıtları anında güncellemesini gerektirir; bu, " ışın yarışı " olarak bilinen bir işlemdir .

İşlemi başlatmak için, MOS Technology 6502 tabanlı CPU üzerinde çalışan oyun programı , ekranın ilk satırını çizmek için gereken verilerle TIA'nın kayıtlarını yükler. TIA daha sonra televizyon hattı çizmeye hazır olana kadar bekler (TIA'nın ilgili analog donanımının komutası altında) ve bu hat için bir sinyal üretmek için kayıtları okur. Satırlar arasındaki yatay boşluk süresi boyunca, 6502, bir sonraki satır için gerektiğinde TIA'nın kayıtlarını hızla değiştirir. Bu işlem ekranda devam eder.

2600'deki MOS Teknolojisi 6507 , donanım kesintilerini desteklemeyen 6502'nin pimi azaltılmış bir sürümü olduğu için bu daha da zorlaşıyor . Genel olarak, görüntüleme sisteminin analog tarafı, bir raster çizgi çizmeyi bitirdiğinde ve bir sonrakine hazırlanırken bir kesinti oluşturur. Kesinti, ekranı güncellemek için gereken kodu tetikler ve ardından "ana" programa geri döner. 6507, paradan tasarruf etmek için bu pinleri CPU'nun dışında bıraktı, ancak bekleme durumlarını CPU veri yolu döngülerine eklemek için bir "RDY" pini var. TIA, CPU'yu TIA tarafından oluşturulan videonun raster hat zamanlaması ile senkronize etmek için RDY pinini kullanmak üzere özel olarak tasarlanmıştır: CPU, TIA'nın belirli bir kayıt adresine yazdığında, TIA, RDY çıkış sinyalini başlangıca kadar düşürür. sonraki satırın bir "eşitlemeyi bekle" komutu. Bu, bir sonraki satırın başlangıcına (renkli saat döngüsü 0) kadar CPU'nun çalışmasını askıya alır ve otomatik senkronizasyonun bir ölçüsünü sağlar. Bu mekanizmanın amaçlanan kullanımı, CPU'nun TIA mevcut satırın sonuna ulaşmadan önce bir sonraki satır için TIA kayıtlarını kurması ve ardından RDY aracılığıyla senkronizasyon gecikmesini tetikleyen kayıt defterine yazması ve değişken bir miktar atmasıdır. Daha kolay video zamanlaması senkronizasyonu için CPU zamanı.

Ek olarak, TIA yalnızca yarı otomatik olarak dikey senkronizasyon zamanlama sinyalleri üretir (her video karesinin sonunu ve bir sonrakinin başlangıcını işaretlemek için). TIA, analog çıkış video sinyaline dikey bir senkron sinyali ekleme yeteneğine sahiptir, ancak bir çerçeve hat sayacına sahip değildir ve bu nedenle bir çerçevenin ne zaman bitmesi gerektiğini söyleyemez. Bunun yerine, dikey senkronizasyon sinyallerini tetiklemek ve dikey bir senkronizasyon sinyalinin ne zaman üretilmesi gerektiğini belirlemek için her çerçevedeki satırları saymak CPU programına bırakılmıştır. RDY-bekleme donanımında olduğu gibi, dikey senkronizasyon sinyali, CPU'nun belirli bir TIA kayıt adresine yazmasıyla tetiklenir. Bu adrese hiç yazma yapılmadıysa ve TIA'nın serbest çalışmasına izin verildiyse, tipik olarak TV'de yuvarlanan bir resim olarak görünecek olan tek bir sonsuz aktif tarama çizgileri çerçevesi oluşturacaktır. Atari 2600 için yayınlanan çoğu oyun, her 262 veya 263 satırdan sonra dikey senkronizasyon oluşturdu (ancak TIA ile ilgili hiçbir şey, sonuçta ortaya çıkan video görüntüleri normal TV'lerde dikey olarak dönmesine rağmen, daha kısa veya daha uzun herhangi bir uzunlukta kareler oluşturmasını engellemiyor).

TIA programlamasının bu ve diğer ayrıntıları, programcıların, ekranla ilgili çeşitli olaylar için gereken tam döngü sayısında çalıştırmak için programlarını dikkatli bir şekilde zamanlamaları gerektiği anlamına gelir. Bunu yanlış yapmak, ekranın düzgün çizilmediği anlamına gelir. Bunu yapan bir programın parçası, o programın "çekirdeği" olarak bilinir.

Bu karmaşıklık göz önüne alındığında, sistemi kullanan erken oyunlar, oyuncuların üstte olduğu simetrik oyun alanları oluşturmak için TIA'yı kullanarak düzende basit olma eğilimindeydi. Sistemin asıl amacı buydu: Atari'nin halihazırda ürettiği Tank ve Pong gibi bir avuç atari oyununu çalıştırmak . Bu durumlarda oyun alanı verileri tipik olarak oyun kartuşundaki 2 kB ROM belleğinde düzenlenmiştir . Her satır 20 bit veri kullandığından ve bir NTSC ekranında 192 satır olduğundan, her satırda farklı bir yerleşim düzenine sahip bir ekran, tek bir sabit diski tutmak için kartuşun 4 kB'sinin yalnızca 480 baytına (192 x 20 / 8) ihtiyaç duyuyordu. kodlanmış ekran Bu durumda, TIA ekranda ilerlerken, çekirdek ROM üzerinden her satır için 20 bit ilerletiyordu; bu, yalnızca birkaç CPU zamanı döngüsü gerektiren bir görevdi. Bu, aynı verileri birden çok satır için kullanarak, bunları dikey olarak ikiye katlayarak veya listenin üst kısmı için bir yolu okuyarak ve ardından alt için diğer yolu okuyarak, yalnızca 240 baytlık dikey olarak yansıtılmış bir görüntü üreterek daha da azaltılabilir.

Önemli bir ilerleme, platform için Space Invaders'ın lisanslanmasıydı , bu da düşman uzaylılarını çekmek için daha fazla oyuncu grafiği gerektiriyordu. Çözüm, görüntü çizilirken her satır için oyuncu verilerini değiştirerek görünürde çok sayıda oyuncu oluşturmaktı. Başka bir ilerleme, ekranı ROM'da sabit veri olarak saklamak yerine (kısmen) CPU talimatları olarak kodlayarak yapıldı. Adventure bu konsepti, ROM'daki verilerin farklı bölümlerini birleştirerek, ekran çizimi sırasında ileri geri atlayarak çok çeşitli haritalar üretmek için kullanır. Bu, oyunun 30 odaya sahip olmasına izin verdi, aksi takdirde 14 kB ROM gerektirecekti.

Programcılar, işlerin ekranda düzgün çalışması için gereken garip zamanlamaya daha fazla alıştıkça, ekranları büyük ölçüde iyileştirmek için TIA'nın doğal esnekliğini kullanmaya başladılar. Yaygın bir teknik, oyun alanının 1 ve 0 durumlarını çizmek için kullanılan renk kayıtlarını değiştirerek gökkuşağı benzeri efektlere sahip ekranlar oluşturmaktı. Daha sonraki oyunlar, asimetrik desenler oluşturmak için oyun alanının orta çizgisini değiştirebilir, ek hareketli grafikler oluşturmak için orta ekrandaki oyuncu grafiklerini yeniden konumlandırabilir ve değiştirebilir.

TIA Renk Yetenekleri

TIA, kullanılan televizyon sinyal formatına bağlı olarak farklı renk paletleri kullanır. İçin NTSC sadece 104 renk için mevcut iken formatında (parça numarası CO10444), 128 renk paleti, sağlanan PAL (parça numarası CO11903). Ayrıca SECAM paleti sadece 8 renkten oluşmaktadır.

NTSC paleti

parlaklık
renk tonu
0 2 4 6 8 10 12 14
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

PAL paleti

parlaklık
renk tonu
0 2 4 6 8 10 12 14
0,1,14,15
2
3
4
5
6
7
8
9
10
11
12
13

SECAM paleti

0 2 4 6 8 10 12 14

Gürültü/Ton Üreticisi (AUD0/1)

TIA, iki osilatörüne (veya kanallarına) AUD0 ve AUD1'e farklı türlerde darbe ve gürültü çıkışı üretebilir. Her osilatör, 5 bitlik bir frekans bölücüye ve dalga biçimini yöneten 4 bitlik bir ses kontrol kaydına sahiptir. Ayrıca kanal başına 4 bitlik bir ses kontrol kaydı vardır.

Frekans Bölücü (AUDF0/1)

Frekanslar, 30 kHz alınarak ve sağlanan 5 bitlik değere bölünerek üretilir. Sonuç, akortsuz notalara ve tek akortlu frekansa sahip ucuz bir frekans bölücüdür. Besteci, vibrato ayarlı bir nota oluşturmak için frekans sınırları içinde çalışmadıkça veya iki ayarsız frekans arasında modülasyon yapmadıkça, TIA bir müzik çipi değildir.

Ses Kontrolü (AUDC0/1)

Ses Kontrol kaydı, karmaşık darbeler veya gürültü oluşturmak için bir darbe dalgası üretir ve manipüle eder. Aşağıdaki tablo (tasarlanmış kopyalarla birlikte) tonlarının nasıl üretildiğini açıklar:

HEX D7 D6 D5 D4 D3 D2 D1 D0 Gürültü veya bölme türü
0   0 0 0 0 1'e ayarla (yalnızca ses seviyesi)
1 0 0 0 1 4 bit poli
2 0 0 1 0 ÷ 15 → 4 bit poli
3 0 0 1 1 5 bit poli → 4 bit poli
4 0 1 0 0 ÷ 2
5 0 1 0 1 ÷ 2
6 0 1 1 0 ÷ 31
7 0 1 1 1 5 bit poli → ÷ 2
8 1 0 0 0 9 bit poli (beyaz gürültü)
9 1 0 0 1 5 bitlik poli
bir 1 0 1 0 ÷ 31
B 1 0 1 1 Son 4 biti 1 olarak ayarla
C 1 1 0 0 ÷ 6
D 1 1 0 1 ÷ 6
E 1 1 1 0 ÷ 93
F 1 1 1 1 5-bit poli ÷ 6

Referanslar

Kaynaklar

Dış bağlantılar