CTIA ve GTIA - CTIA and GTIA

Okidata tarafından üretilen NTSC GTIA çipi

Renkli Televizyon Arayüz Adaptörü ( CTIA ) ve onun halefi Grafik Televizyon Arayüz Adaptörü ( GTIA ), Atari 8-bit bilgisayar ailesinde ve Atari 5200 ev video oyun konsolunda kullanılan özel yongalardır . Bu sistemlerde, bir CTIA veya GTIA çipi , video görüntüsünü oluşturmak için ANTIC ile birlikte çalışır . ANTIC, oyun alanı grafiklerini (metin ve bitmap) oluştururken CTIA/GTIA, oyun alanı için renk sağlar ve oyuncu/füze grafikleri ( sprite ) olarak bilinen bindirme nesneleri ekler . Yönetimi altında Jay Miner , CTIA / GTIA cips Steve Smith teknik desteği ile George McLeod tarafından tasarlanmıştır.

Renkli Televizyon Arayüz Adaptörü ve Grafik Televizyon Arayüz Adaptörü , Atari saha servis kılavuzunda belirtilen çiplerin isimleridir. Çeşitli yayınlar çipleri farklı şekilde adlandırdı, bazen alternatif yazım Adaptörü veya Grafikler kullandı veya "CTIA"daki "C"nin Colleen/Candy ve "GTIA"daki "G"nin George için olduğunu iddia etti .

Tarih

2600 ve TIA

Atari, ilk ekran sürücüsü çipi olan Televizyon Arabirim Adaptörünü kurmuştu, ancak evrensel olarak Atari 2600 konsolunun bir parçası olarak TIA olarak anıldı . TIA gösterimi mantıksal olarak iki ana nesne grubundan oluşuyordu, hareketli nesneleri temsil eden "oyuncular" ve "füzeler" ve eylemin gerçekleştiği statik arka plan görüntüsünü temsil eden "oyun alanı". Çip , bir televizyon ekranı üretmek için bir dijital-analog dönüştürücü ve RF modülatörü aracılığıyla gerçek zamanlı olarak dönüştürülen dijital sinyalleri üretmek için bellek kayıtlarındaki verileri kullandı .

Oyun alanını çizmenin geleneksel yolu, çerçeve arabelleğindeki her bellek konumunun ekrandaki bir veya daha fazla konumu temsil ettiği bir çerçeve arabelleğinde tutulan bir bit eşlem kullanmaktır . Normalde 160x192 piksel çözünürlüğü kullanan 2600 durumunda, bir çerçeve arabelleğinin en az 160x192/8 = 3840 bayt belleğe sahip olması gerekir. RAM'in çok pahalı olduğu bir çağda inşa edilen TIA, bu çözümü karşılayamazdı.

Bunun yerine sistem , etkin bir şekilde 40 bitlik bir görüntü elde etmek için ekranın sağ yarısında kopyalanabilen veya yansıtılabilen tek bir 20 bitlik bellek kaydı kullanan bir görüntüleme sistemi uyguladı . Her konum, 128 olası renk paletinden dört renkten birinde görüntülenebilir. TIA ayrıca birkaç başka görüntüleme nesnesi, "oyuncular" ve "füzeler" içeriyordu. Bunlar, "oyuncular" olarak bilinen iki adet 8 bit genişliğinde nesne, "top" olarak bilinen tek bir 1 bitlik nesne ve iki adet 1 bitlik "füze"den oluşuyordu. Bu nesnelerin tümü, diğer kayıtlardaki ayarlar aracılığıyla isteğe bağlı yatay konumlara taşınabilir.

TIA sisteminin anahtarı ve 2600'ün düşük fiyatı, sistemin, tümü kayıtlarda tutulan, ekranın yalnızca tek bir satırını çizmeye yetecek kadar belleğe sahip olmasıydı. Tüm ekranı verilerle doldurmak için, kullanıcı kodu televizyon ekranı ekranın sağ tarafına ulaşana kadar bekleyecek ve bir sonraki satırı ekranda doğru bir şekilde yansıtmak için oyun alanı ve oyuncu/füzeler için kayıtları güncelleyecektir. Bu şema, ekranı "ışın yarışı" olarak bilinen bir teknik olan ROM kartuşundaki program kodundan satır satır çizdi .

CTIA

Atari başlangıçta 2600'ün 1976'da tasarlandığında üç yıllık kısa bir pazar ömrüne sahip olacağını tahmin ediyordu, bu da şirketin 1979'a kadar yeni bir tasarıma ihtiyaç duyacağı anlamına geliyordu. Başlangıçta bu yeni tasarım sadece güncellenmiş 2600 benzeri bir oyun konsoluydu ve inşa edildi. benzer bir temel tasarım etrafında, basitçe güncellendi. CTIA'nın ne olacağı konusundaki çalışmalar 1977'de başladı ve iki katı çözünürlüğe ve iki katı renk sayısına sahip bir sistem sunmayı amaçladı. Ayrıca oyun alanındaki renk sayısı değiştirilerek yatay olarak 320 piksele kadar çok daha yüksek çözünürlükler desteklenebilir. Dört adet 8-bit oyuncu ve dört adet 2-bit füze de dahil olmak üzere oyuncular ve füzeler de güncellendi, ancak aynı zamanda dört füzeyi beşinci bir oyuncuda birleştirmek için ek bir moda izin verildi.

Tasarım başladıktan kısa bir süre sonra, ev bilgisayarı devrimi 1977'nin sonraki yarısında ciddi bir şekilde başladı. Buna karşılık, Atari yeni makinenin iki versiyonunu piyasaya sürmeye karar verdi, oyun konsolu olarak düşük kaliteli bir model ve daha yüksek kaliteli bir versiyon. bir ev bilgisayarı. Her iki rolde de, özellikle bilgisayar rolündeki karakter grafikleri için daha karmaşık bir oyun alanına ihtiyaç duyulacaktır . CTIA'nın tasarımı bu noktada oldukça gelişmişti, bu nedenle yeniden tasarım yerine, ışın yarış sürecini etkin bir şekilde otomatikleştirecek ikinci bir çip eklenerek akıllı bir çözüm sağlandı. Kullanıcının programlamasının CTIA'nın kayıtlarını kesme zamanlamasına göre güncellemesi yerine, yeni ANTIC bu işi halledecek, bir çerçeve arabelleğinden veri okuyacak ve bunu anında CTIA'ya besleyecekti.

Bu değişikliklerin bir sonucu olarak, yeni çipler, TIA üzerinden büyük ölçüde geliştirilmiş grafik modu sayısı ve seçimi sağlar. 20 veya 40 bit çözünürlüğe sahip tek bir oyun alanı modu yerine, CTIA/ANTIC çifti, programcının çözünürlük, renkler ve bellek kullanımı arasında bir denge seçmesine izin vererek, çeşitli çözünürlüklerde ve renk derinliklerinde altı metin modu ve sekiz grafik modu görüntüleyebilir. onların gösterimi için.

CTIA ve GTIA

GTIA yongasında kullanılan 256 Renk Paleti (yalnızca NTSC), 16 renk tonu ve 16 parlaklık değeri.
Atari TIA ve CTIA'nın palet olarak kullandığı şey budur, (yalnızca NTSC), 16 renk tonu ve yalnızca 8 parlaklık değeri ile 128 benzersiz renk oluşturur

CTIA çipinin orijinal tasarımı, normal grafik modlarının üç ek renk yorumunu da içeriyordu. Bu özellik, piksel başına 1 bit, piksel başına 4 bit olarak yarım renkli saat genişliğinde 2 renk, 16'ya kadar renk, iki renkli saat genişliğinde pikseller sunan ANTIC'in yüksek çözünürlüklü grafik modlarının alternatif ifadelerini sağlar. Bu özellik, bilgisayarların Kasım 1979'daki ilk çıkışından önce hazırdı, ancak geliştirme döngüsünde o kadar ertelendi ki, Atari zaten grafik modları eksik olan yaklaşık 100.000 CTIA yongası sipariş etmişti. Halihazırda üretilen çipleri çöpe atmak istemeyen şirket, ABD pazarındaki Atari 400 ve 800 modellerinin ilk sürümlerinde bunları kullanmaya karar verdi. 3 ekstra renk modundan yoksun olan CTIA donanımlı bilgisayarlar, Ekim-Kasım 1981'e kadar sevk edildi. Bu noktadan itibaren, tüm yeni Atari birimleri, yeni renk yorumlama modlarını destekleyen, şimdi GTIA olarak adlandırılan yeni çip ile donatıldı.

Orijinal Atari 800/400 işletim sistemi, başlangıçtan itibaren GTIA alternatif renk yorumlama modlarını destekledi ve bu, hazır olduğunda CTIA'nın GTIA ile kolayca değiştirilmesine izin verdi. Atari yetkili servisleri, bilgisayarın garanti kapsamında olması durumunda, CTIA donanımlı bilgisayarlara ücretsiz olarak GTIA çipi takacak; aksi takdirde değiştirme 62,52 dolara mal olur.

GTIA ayrıca daha sonraki tüm Atari XL ve XE bilgisayarlarına ve Atari 5200 konsollarına monte edildi.

Özellikleri

Aşağıdaki liste, CTIA/GTIA'nın, donanımın kendisinin amaçlanan işlevselliği anlamına gelen, CPU tarafından sağlanan kesintiler veya sık kayıt değişikliklerini yönlendiren ekran çekirdekleri tarafından elde edilen sonuçlar hariç, doğal donanım yeteneklerini açıklamaktadır.

CTIA/GTIA, aşağıdaki özelliklere sahip bir televizyon arayüz cihazıdır:

  • Dan yorumladığı Playfield grafik veri akışı antik ekrana renk uygulamak için.
  • ANTIC'in Playfield grafikleriyle dört Player ve dört Missile bindirme nesnesini (aka sprite ) birleştirir. Oyuncu/Füze özellikleri şunları içerir:
    • Oyuncu/Füze piksel konumlandırması, Playfield'dan bağımsızdır:
      • Oyuncu/Füze nesneleri normal olarak, görüntülenen Playfield'ın ötesindeki dikey ve yatay aşırı tarama alanlarında çalışır.
      • Oyuncu/Füze nesneleri, ANTIC Playfield olmadan normal şekilde çalışır.
    • Sekiz bit genişliğindeki Player nesneleri ve her bitin görüntülenen bir pikseli temsil ettiği iki bit genişliğindeki Füze nesneleri.
    • Değişken piksel genişliği (1, 2 veya 4 renk saati genişliğinde)
    • Her Oyuncu/Füze nesnesi dikey olarak tüm ekranın yüksekliğidir.
    • Veriler ANTIC DMA tarafından sağlandığında değişken piksel yüksekliği (veri başına tek veya çift tarama satırı)
    • Veri başına çift tarama satırında çalışırken her bir P/M nesnesini dikey olarak bir tarama satırıyla bağımsız olarak kaydırma yeteneği.
    • Her Oyuncu ve onunla ilişkili Füze, Playfield renklerinden ayrı olarak özel bir renk kaydına sahiptir.
    • Grafik katmanlarının sırası için çoklu öncelik şemaları (P/M Graphics vs playfield)
    • Oyuncular ve Playfield arasında renk birleştirme, ekstra renkler üretir.
    • Çok renkli Oyuncular üreten Oyuncu çiftleri arasında renk birleştirme.
    • Füzeler, ayrı bir renk kaydı kullanan Beşinci Oyuncu olarak gruplandırılabilir.
    • Oyuncular, Füzeler ve Playfield grafikleri arasında çarpışma algılama.
  • Normal (CTIA) renk yorumlama modu için sabit renk yoktur. Tüm renkler, dokuz renk kaydı aracılığıyla dolaylı olarak oluşturulur. (Oyuncu/Füze grafikleri için dört, Playfield için dört ve Playfield ile Beşinci Oyuncu özelliği arasında paylaşılan bir tane.)
    • Normal renk yorumlama modu, 128 renk paletinden renk seçimi sağlar (her biri için 8 parlaklık değerine sahip 16 renk)
    • Bir GTIA renk yorumlama modu, 256 renk paleti sağlayarak renk başına 16 parlaklık üretebilir.
  • Çipin GTIA versiyonu, Playfield grafikleri için üç alternatif renk yorumlama modu ekler.
    • Atari paletindeki 16 olası tondan tek bir tonun 16 tonu. Buna Atari BASIC'te Graphics 9 olarak erişilebilir.
    • Tek bir gölge/parlaklık değeri artı arka planda 15 ton. Buna Atari BASIC'te Graphics 11 olarak erişilebilir.
    • Playfield renkleri için tüm Player/Füze ve Playfield renk kayıtları kullanılarak elde edilen paletten herhangi bir ton ve parlaklıkta 9 renk. Buna Atari BASIC'te Graphics 10 olarak erişilebilir.
  • Joystick tetikleyicilerinin durumunu okur (yalnızca Atari 5200 denetleyicileri için alt düğmeler).
  • Sisteme bağlı olarak farklı şekillerde kullanılan dört giriş/çıkış pini içerir:
    • Atari 8 bit bilgisayarlarda, konsol tuşlarının durumunu okumak için pinlerden üçü kullanılır (Başlat/Seç/Seçenek).
    • Dördüncü pin, klavye tıklamaları oluşturmak için Atari 400/800'de yerleşik olan hoparlörü kontrol eder. Daha sonraki modellerde hoparlör yoktur, ancak tuş tıklaması hala GTIA tarafından üretilir ve normal ses çıkışı ile karıştırılır.
    • Atari 5200'de pinler, kontrolör klavyelerini okuma işleminin bir parçası olarak kullanılır.

Sürümler

parça numarasına göre

  • C012295 — NTSC CTIA
  • C014805 — NTSC GTIA
  • C014889 — PAL GTIA
  • C022012 — Fransız SECAM GTIA (FGTIA)

Atari, Inc., Atari bilgisayarlarının ve 5200 konsollarının üretim maliyetlerini azaltmak için ANTIC ve GTIA yongalarının işlevlerini tek bir entegre devrede birleştirmeyi amaçladı. Böyle iki prototip devre geliştiriliyordu, ancak hiçbiri üretime girmedi.

  • C020577 - CGIA
  • C021737 - KERI

Pin yapısı

Atari GTIA (C014805) pin çıkışı
Pin Adı Pin Numaraları Açıklama
A0 - A4 2, 1, 40, 39, 38 Adres Girişi
AN0 - AN2 18, 19, 20 ANTİK Arayüz Girişi
KOL 21 Renk Frekans Çıkışı
CS 32 Çip Seçim Girişi
CSYNC 25 Kompozit Senkronizasyon Çıkışı
D0 - D7 7, 6, 5, 4, 37, 36, 35, 34 Veri Yolu G/Ç
DEL 17 Renk Gecikme Hattı Girişi
FØ0 29 Hızlı Faz Saat Çıkışı
DUR 26 Girişi Durdur
L0 - L3 31, 22, 23, 24 Parlaklık Çıkışı
N/K 16 Bağlı Değil (sonraki sürümlerde PAL)
OSC 28 Osilatör Girişi
R/W 33 Okuma/Yazma Girişi
S0 - S3 12, 13, 14, 15 Veri G/Ç'sini Değiştir
T0 - T3 8, 9, 10, 11 Dahili pull-up ile Tetik Girişleri
Vcc 27 Güç +5 Volt
V ss 3 Zemin
Ø2 30 Bilgisayar Faz 2 Girişi

Kayıtlar

Atari 8-bit bilgisayarlar CTIA/GTIA'yı $D0xx hex sayfasına eşler ve Atari 5200 konsolu onu $C0xx hex sayfasına eşler .

CTIA/GTIA, Oyuncu/Füze grafiklerini, Playfield renklerini, joystick tetikleyicilerini ve konsol tuşlarını kontrol eden 54 Okuma/Yazma kaydı sağlar. Birçok CTIA/GTIA kayıt adresi, Okuma ve Yazma kaydı olarak farklı işlevleri yerine getiren iki amaca sahiptir. Bu nedenle, önceden yazılmış değeri almayı bekleyen hiçbir kod Donanım kayıtlarını okumamalıdır.

Bu sorun, yazmaçlara yazılan son değeri depolamak için normal RAM'de uygulanan İşletim Sistemi Gölge yazmaçları tarafından birçok yazma kaydı için çözülmüştür. İşletim Sistemi Gölge kayıtları, Dikey Boş sırasında RAM'den donanım kayıtlarına kopyalanır. Bu nedenle, karşılık gelen gölge kayıtlarına sahip donanım kayıtlarına yapılan herhangi bir yazma, bir sonraki Dikey Boşluk sırasında Gölge kayıtlarının değeri tarafından üzerine yazılacaktır.

Bazı Yazma kayıtları, karşılık gelen Gölge kayıtlarına sahip değildir. Dikey boşluk sırasında değerin üzerine yazılmadan bir uygulama tarafından güvenle yazılabilirler. Başvurunun kaydın son durumunu bilmesi gerekiyorsa, ne yazdığını hatırlamak başvurunun sorumluluğundadır.

İşletim Sistemi Gölge kayıtları ayrıca, değeri görüntüleme döngüsünün bilinmeyen bir aşamasında doğrudan donanımdan okumanın tutarsız sonuçlar döndürebileceği bazı Okuma kayıtları için de mevcuttur.

İsim Açıklama Okuma yazma Onaltılık Adres Ara Adres Gölge Adı Gölge Altıgen Adresi Gölge Aralık Adresi
HPOSP0 Oyuncu 0'ın Yatay Konumu Yazı yazmak $D000 53248
M0PF Füze 0'dan Playfield'a çarpışmalar Okumak $D000 53248
HPOSP1 Oyuncu 1'in Yatay Konumu Yazı yazmak $D001 53249
M1PF Füze 1'den Playfield'a çarpışmalar Okumak $D001 53249
HPOSP2 Oyuncu 2'nin Yatay Konumu Yazı yazmak $D002 53250
M2PF Füze 2'den Playfield'a çarpışmalar Okumak $D002 53250
HPOSP3 Oyuncu 3'ün Yatay Konumu Yazı yazmak $D003 53251
M3PF Füze 3 ile Playfield çarpışmaları Okumak $D003 53251
HPOSM0 Füzenin Yatay Konumu 0 Yazı yazmak $D004 53252
P0PF Oyuncu 0 - Playfield çarpışmaları Okumak $D004 53252
HPOSM1 Füze 1'in Yatay Konumu Yazı yazmak $D005 53253
P1PF Oyuncu 1'den Playfield'a çarpışmalar Okumak $D005 53253
HPOSM2 Füze 2'nin Yatay Konumu Yazı yazmak $D006 53254
P2PF Oyuncu 2'den Playfield'a çarpışmalar Okumak $D006 53254
HPOSM3 Füze 3'ün Yatay Konumu Yazı yazmak $D007 53255
P3PF Oyuncu 3'ten Playfield'a çarpışmalar Okumak $D007 53255
SIZEP0 Oyuncu Boyutu 0 Yazı yazmak $D008 53256
M0PL Füze 0 ile Oyuncu çarpışmaları Okumak $D008 53256
BOYUT1 Oyuncu 1'in Boyutu Yazı yazmak $D009 53257
M1PL Füze 1 ile Oyuncu çarpışmaları Okumak $D009 53257
SIZEP2 Oyuncu 2'nin Boyutu Yazı yazmak $D00A 53258
M2PL Füze 2 ile Oyuncu çarpışmaları Okumak $D00A 53258
SIZEP3 Oyuncu 3'ün Boyutu Yazı yazmak $D00B 53259
M3PL Füze 3 ile Oyuncu çarpışmaları Okumak $D00B 53259
M BEDEN Tüm Füzelerin Boyutu Yazı yazmak $D00C 53260
P0PL Oyuncu 0 - Oyuncu çarpışmaları Okumak $D00C 53260
GRAFP0 Oyuncu 0 için grafik deseni Yazı yazmak $D00D 53261
P1PL Oyuncu 1'den Oyuncuya çarpışmalar Okumak $D00D 53261
GRAFP1 Oyuncu 1 için grafik deseni Yazı yazmak $D00E 53262
P2PL Oyuncu 2'den Oyuncuya çarpışmalar Okumak $D00E 53262
GRAFP2 Oyuncu 2 için grafik deseni Yazı yazmak $D00F 53263
P3PL Oyuncu 3'ten Oyuncu çarpışmalarına Okumak $D00F 53263
GRAFP3 Oyuncu 3 için grafik deseni Yazı yazmak $D010 53264
TRIG0 Kumanda kolu 0 tetikleyici. Okumak $D010 53264 STRIG0 $0284 644
GRAFM Tüm Füzeler için grafik deseni Yazı yazmak $D011 53265
TRIG1 Joystick 1 tetikleyici. Okumak $D011 53265 STRIG1 $0285 645
COLPM0 Oyuncu ve Füze 0'ın rengi/parlaklığı. Yazı yazmak $D012 53266 PCOLOR0 $02C0 704
TRIG2 Joystick 2 tetikleyici. Okumak $D012 53266 STRIG2 $0286 646
COLPM1 Oyuncu ve Füze 1'in rengi/parlaklığı. Yazı yazmak $D013 53267 PCOLOR1 $02C1 705
TRIG3 Joystick 3 tetikleyici. Okumak $D013 53267 STRIG3 $0287 647
COLPM2 Oyuncu ve Füze 2'nin rengi/parlaklığı. Yazı yazmak $D014 53268 PCOLOR2 $02C2 706
PAL PAL bayrakları. Okumak $D014 53268
COLPM3 Oyuncu ve Füze 3'ün rengi/parlaklığı. Yazı yazmak $D015 53269 PCOLOR3 $02C3 707
COLPF0 Playfield 0'ın rengi/parlaklığı. Yazı yazmak $D016 53270 RENK0 $02C4 708
COLPF1 Playfield 1'in rengi/parlaklığı. Yazı yazmak $D017 53271 RENK1 $02C5 709
COLPF2 Playfield 2'nin rengi/parlaklığı. Yazı yazmak $D018 53272 RENK2 $02C6 710
COLPF3 Playfield 3'ün rengi/parlaklığı. Yazı yazmak $D019 53273 RENK3 $02C7 711
KOLBK Playfield arka planının rengi/parlaklığı. Yazı yazmak $D01A 53274 RENK4 $02C8 712
ÖNCEKİ Öncelik seçimi, beşinci oyuncu ve GTIA modları Yazı yazmak $D01B 53275 GPRIOR 026F 623
VDELAY Dikey Gecikme P/M Grafikleri Yazı yazmak $D01C 53276
GRACTL Grafik Kontrolü. Yazı yazmak $D01D 53277
HITCLR Çarpışmaları Temizle Yazı yazmak $D01E 53278
CONSPK Konsol Hoparlörü Yazı yazmak $D01F 53279
KONSOL Konsol Tuşları Okumak $D01F 53279

Aşağıdaki bireysel kayıt listelerinde aşağıdaki açıklama geçerlidir:

Bit Değeri Açıklama
0 Bit 0 olmalıdır
1 Bit 1 olmalıdır
? Bit, 0 veya 1 olabilir ve bir amaç için kullanılır.
- Bit kullanılmıyor veya belirli bir değer olması beklenmemeli
etiket Bitin amacı için daha sonraki bir açıklamaya bakın.

Oyuncu/Füze Yatay Koordinatları

Bu kayıtlar , Player/Füze nesnelerinin sol kenarının ( GRAF* bayt modellerinin yüksek biti) renk saatlerindeki yatay konumunu belirtir . Koordinatlar, yalnızca mevcut Playfield görüntüleme modunu DEĞİL, her zaman ekran donanımının renkli saat motorunu temel alır. Bu aynı zamanda Oyuncu/Füze nesnelerinin mevcut Playfield modunun ötesinde aşırı tarama alanlarına taşınabileceği anlamına gelir.

Füze nesneleri bit desenleri, görüntülenen pikseller ( GRAFM ) için aynı baytı paylaşırken, her bir Füzenin bağımsız olarak konumlandırılabileceğini unutmayın. "Beşinci Oyuncu" seçeneği etkinleştirildiğinde (Önceki /GPRIOR kaydına bakın ), dört Füzeyi tek bir " Oyuncuya " çevirerek, Füzeler ilişkili Player nesnesinin rengini görüntülemekten COLPF3 değerini görüntülemeye geçer. Ekrandaki yeni "Oyuncunun" konumu, her bir Füzenin konumu ayrı ayrı belirtilerek ayarlanmalıdır.

Oyuncu/Füze pikselleri, yalnızca GTIA'nın piksel motorunun görünür kısımlarında oluşturulur. Oyuncu/Füze nesneleri yatay boşluk veya dikey boşluk sırasında oluşturulmaz. Ancak, bir nesne kısmen yatay boşluk içinde olabilir. Yatay boşluğun dışına düşen nesnelerin pikselleri daha sonra ekranın görünür kısmı içindedir ve yine de çarpışmaları kaydedebilir. Görünür renkli saatlerin yatay konum aralığı 22 $ hex /34 dec ila $DD hex /221 dec arasındadır .

Bir Player/Füze nesnesini görünür görüntüleme alanından kaldırmak için yatay konumlar (sol) 0 ve (sağ) $DE hex /222 dec (veya daha büyük), Player/Füze nesnesinin boyutundan bağımsız olarak hiçbir pikselin işlenmemesini sağlar ve böylece kasıtsız çarpışmalar işaretlenemez.

HPOSP0 $D000 Yazma

Oyuncu 0'ın Yatay Konumu

HPOSP1 $D001 Yazma

Oyuncu 1'in Yatay Konumu

HPOSP2 $D002 Yazma

Oyuncu 2'nin Yatay Konumu

HPOSP3 $D003 Yazma

Oyuncu 3'ün Yatay Konumu

HPOSM0 $D004 Yazma

Füzenin Yatay Konumu 0

HPOSM1 $D005 Yazma

Füze 1'in Yatay Konumu

HPOSM2 $D006 Yazma

Füze 2'nin Yatay Konumu

HPOSM3 $D007 Yazma

Füze 3'ün Yatay Konumu

7. bit 6. bit 5. bit 4. bit 3. Bit 2. bit 1. bit bit 0
? ? ? ? ? ? ? ?

Aşağıda, olası Playfield boyutlarının sol ve sağ kenarlarının renk saati koordinatları verilmiştir; bunlar, Player/Füze nesnelerini Playfield bileşenlerine hizalarken kullanışlıdır:

oyun alanı Görüntülenen Renkli Saatlerdeki Genişlik Sol Kenar İlk Renk Saati Sağ Kenar Son Renk Saati
Dar 80 $ altıgen /128 aralık 40 $ altıgen / 64 aralık $ BF onaltılık / 191 Aralık
Normal $ A0 heks / 160 Aralık 30 $ altıgen / 48 aralık $ CF onaltılık / 207 Aralık
Geniş $ B0 onaltılık / 176 Aralık 28 $ altıgen / 40 aralık $ D7 onaltılık / 215 Aralık

Oyuncu/Füze Boyutu Kontrolü

Üç boyut seçilebilir: Normal, Çift ve Dörtlü genişlik. Sol kenar (Bkz. Yatay Koordinatlar ) sabittir ve boyut ayarı Oyuncu veya Füzeyi her durumda sağa doğru genişletir.

  • Normal - 1 bit (piksel) 1 renk saat genişliğindedir
  • Çift - 1 bit (piksel) 2 renkli saat genişliğindedir
  • Dörtlü - 1 bit (piksel) 4 renk saati genişliğindedir

Dörtlü boyutta tek bir Oyuncu/Füze pikselinin Antik Mod 2 metin karakteriyle aynı genişlikte olduğunu unutmayın. Oyuncu/Füze öncelik seçimi, Dört genişlikli Oyuncu Füzesi grafikleri ile Mod satırı başına birden çok metin rengi oluşturmak için kullanılabilir.

Her Oyuncunun kendi boyut kontrol kaydı vardır:

SIZEP0 $D008 Yaz

Oyuncu Boyutu 0

SIZEP1 $D009 Yaz

Oyuncu 1'in Boyutu

SIZEP2 $D00A Yaz

Oyuncu 2'nin Boyutu

SIZEP3 $D00B Yaz

Oyuncu 3'ün Boyutu

Oyuncu boyutu kontrolleri:

7. bit 6. bit 5. bit 4. bit 3. Bit 2. bit 1. bit bit 0
- - - - - - 1 beden 0 beden

Değerler:

Boy Oyuncu Genişliği Bit Değeri 1 beden 0 beden
Normal 8 renkli saat 00 $ 0 0
Çift 16 renkli saat 01 $ 0 1
Normal 8 renkli saat 02 $ 1 0
dörtlü 32 renkli saat 03 $ 1 1

SIZEM $D00C Yaz

Tüm Füze boyutları bir kayıt tarafından kontrol edilir, ancak her Füze diğerlerinden bağımsız olarak boyutlandırılabilir. "Beşinci Oyuncu" seçeneği etkinleştirildiğinde (bkz. ÖNCEKİ/GPRIOR kaydı), dört Füzeyi tek bir " Oyuncuya " çevirerek genişlik, her bir Füze için ayrı ayrı boyut belirlenerek ayarlanır.

7. bit 6. bit 5. bit 4. bit 3. Bit 2. bit 1. bit bit 0
M3 Boyut 1 M3 Boyut 0 M2 Boyut 1 M2 Boyut 0 M1 Boyut 1 M1 Boyut 0 M0 Boyut 1 M0 Boyut 0

Değerler:

Füze Boy Füze Genişliği Bit Değeri 1 beden 0 beden
Füze 0 Normal 2 renkli saat 00 $ 0 0
Çift 4 renkli saat 01 $ 0 1
Normal 2 renkli saat 02 $ 1 0
dörtlü 8 renkli saat 03 $ 1 1
füze 1 Normal 2 renkli saat 00 $ 0 0
Çift 4 renkli saat $04 0 1
Normal 2 renkli saat $08 1 0
dörtlü 8 renkli saat $0C 1 1
füze 2 Normal 2 renkli saat 00 $ 0 0
Çift 4 renkli saat $10 0 1
Normal 2 renkli saat 20$ 1 0
dörtlü 8 renkli saat 30 $ 1 1
füze 3 Normal 2 renkli saat 00 $ 0 0
Çift 4 renkli saat 40 dolar 0 1
Normal 2 renkli saat 80 dolar 1 0
dörtlü 8 renkli saat $C0 1 1

Oyuncu/Füze Grafik Modelleri

Her Player nesnesinin kendi 8 bitlik kalıp kaydı vardır. Füze nesneleri, her Füze başına 2 bitlik bir kaydı paylaşır. Bir değer ayarlandığında, her tarama satırında görüntülenmeye devam edecektir. Değerleri güncellemek için CPU veya ANTIC DMA tarafından başka bir müdahale olmadan, sonuç, aşırı tarama alanları da dahil olmak üzere ekranın yüksekliği olan dikey şerit desenleridir. Bu çalışma modu, bilgisayarda CPU veya DMA geçiş ücreti ödemez. Ekran bölgelerini ayıran alternatif renkli kenarlıkları ve dikey çizgileri görüntülemek için kullanışlıdır.

GRAFP0 $D00D Yaz

Oyuncu 0 için grafik deseni

GRAFP1 $D00E Yazma

Oyuncu 1 için grafik deseni

GRAFP2 $D00F Yazma

Oyuncu 2 için grafik deseni

GRAFP3 $D010 Yaz

Oyuncu 3 için grafik deseni

7. bit 6. bit 5. bit 4. bit 3. Bit 2. bit 1. bit bit 0
Piksel HPOS+0 Piksel HPOS+1 Piksel HPOS+2 Piksel HPOS+3 Piksel HPOS+4 Piksel HPOS+5 Piksel HPOS+6 Piksel HPOS+7

Her Oyuncu 8 bit (piksel) genişliğindedir. Bir bitin ayarlandığı yerde, Player ile ilişkili renk kaydına atanan renkte bir piksel görüntülenir. Bir bit ayarlanmadığında Player nesnesi saydamdır ve Players, Missiles, Playfield pikselleri veya arka plan rengini gösterir. Piksel çıkışı, Player'ın HPOS değeri tarafından belirtilen yatay konumda başlar ve en yüksek bit çıkışı en başta gelir.

GRAFM $D011 Yaz

Tüm Füzeler için grafik deseni

7. bit 6. bit 5. bit 4. bit 3. Bit 2. bit 1. bit bit 0
M3 Piksel HPOS+0 M3 Piksel HPOS+1 M2 Piksel HPOS+0 M2 Piksel HPOS+1 M1 Piksel HPOS+0 M1 Piksel HPOS+1 M0 Piksel HPOS+0 M0 Piksel HPOS+1

Her Füze 2 bit (piksel) genişliğindedir. Bir bitin ayarlandığı yerde, Füze ile ilişkili Oyuncu için renk kaydına atanan renkte bir piksel görüntülenir. Beşinci Oyuncu etkinleştirildiğinde (bkz. PRIOR/GPRIOR ) Füze piksellerinin tümü COLPF3'ü görüntüler. Bir bit ayarlanmadığında, Füze nesnesi saydamdır ve Oyuncular, Füzeler, Oyun Alanı pikselleri veya arka plan rengini gösterir. Piksel çıkışı, Füze'nin HPOS değeri tarafından belirtilen yatay konumda, en yüksek bit çıkışı ilk önce başlar.

Füze Değerleri:

Füze Bit Değeri piksel 1 Piksel 0
Füze 0 00 $ 0 0
01 $ 0 1
02 $ 1 0
03 $ 1 1
füze 1 00 $ 0 0
$04 0 1
$08 1 0
$0C 1 1
füze 2 00 $ 0 0
$10 0 1
20$ 1 0
30 $ 1 1
füze 3 00 $ 0 0
40 dolar 0 1
80 dolar 1 0
$C0 1 1

Oyuncu/Füze Çarpışmaları

CTIA/GTIA, Player, Missile ve Playfield pikselleri kesiştiğinde çarpışmaların otomatik olarak algılanmasını sağlayan 60 bite sahiptir. Tek bir bit, Player/Füze nesnesinin sıfır olmayan bir pikselinin belirli bir renk kaydının bir pikseliyle kesiştiğini gösterir. Arka plan rengi kaydı/değeri kullanılarak oluşturulan pikseller için kayıtlı çarpışma yoktur. Bu sistem, sınırlayıcı kutu veya görüntü bitmap maskelemenin pahalı CPU değerlendirmesi olmadan anında, piksel mükemmel örtüşme karşılaştırması sağlar.

Bir nesnenin gerçek renk değeri dikkate alınmaz. Player, Missile, Playfield ve Background renk kayıtları, nesneleri etkin bir şekilde "görünmez" yapan aynı değerdeyse, nesnelerin kesişimleri yine de çarpışmaları kaydeder. Bu, gizli veya gizli nesneler ve duvarlar yapmak için kullanışlıdır.

Görünmez kavşaklar da çarpışmaları kaydeder. Bir Player nesnesi önceliği bir Playfield renk kaydının arkasındaysa ve başka bir Player nesnesi önceliği Playfield'dan daha yüksekse (ön plan) ve ön plan Player pikselleri Playfield'ın arkasındaki hem Playfield'ı hem de Player nesnesini gizlerse, Playfield ile her ikisi arasındaki çarpışma arka plan ve ön plan Player nesneleri, ön plan ve arka plan Player nesneleri arasındaki çarpışma ile birlikte kaydedilir.

Füze-Füze çarpışması olmadığını unutmayın.

Oyuncu/Füze çarpışmaları yalnızca, Oyuncu/Füze nesne pikselleri ekranın görünür kısımlarında meydana geldiğinde meydana gelebilir. Oyuncu/Füze nesneleri yatay boşluk veya dikey boşluk sırasında oluşturulmaz. Görünür renkli saatlerin aralığı 34 ila 221'dir ve görünür tarama çizgileri satır 8'den satır 247'ye kadardır. Bu koordinatların dışındaki Oyuncu/Füze verileri işlenmez ve çarpışmaları kaydetmez. Bir nesne kısmen yatay boşluk içinde olabilir. Yatay boşluğun dışına düşen nesnelerin pikselleri, ekranın görünür kısmı içindedir ve yine de çarpışmaları kaydedebilir.

Bir Oyuncu/Füze nesnesini görünür görüntüleme alanından kaldırmak için yatay konumlar (sol) 0 ve (sağ) 222 (veya daha büyük), Oyuncu/Füze nesnesinin boyutuna bakılmaksızın hiçbir pikselin oluşturulmamasını sağlar ve böylece kasıtsız çarpışmalar olamaz. işaretli.

Son olarak, Player, Missile ve Playfield nesnelerinin çarpışma algılaması gerçek zamanlıdır ve görüntü pikselleri birleştirilip görüntülenmek üzere çıktıkça bir çarpışmayı kaydeder. Bir nesnenin çarpışma bitlerinin nesne CTIA/GTIA tarafından oluşturulmadan önce kontrol edilmesi, çarpışma olmadığını gösterecektir.

Bir kez ayarlandığında, HITCLR kaydına yazılarak temizlenene kadar çarpışmalar yürürlükte kalır . Etkili çarpışma yanıt rutinleri, hedeflenen nesneler görüntülendikten sonra veya bir karenin sonunda veya bir sonraki kare başlamadan önce çarpışmalara tepki vermek ve çarpışmaları temizlemek için Dikey Boşluk sırasında gerçekleşmelidir.

Çarpışmalar yalnızca tek bir bit olduğundan, çarpışmalar oldukça açık bir şekilde toplamsal değildir. Bir kare içinde pikseller arasında kaç kez ve farklı konumlarda çarpışma olursa olsun, çarpışma olduğunu gösteren yalnızca 1 bit vardır. Bir dizi çarpışma biti, bir programa, çarpışma konumlarını belirlemek için ilgili nesneleri inceleyebileceğini ve ardından her konum için nasıl tepki vereceğine karar verebileceğini bildirir.

HITCLR ve çarpışma algılama gerçek zamanlı olduğundan, Ekran Listesi Kesintileri, her bölümün başında kullanılan HITCLR ile ekranı bölümlere ayırabilir ve her bölümün sonunda ayrı çarpışma değerlendirmesini kullanabilir.

"Beşinci Oyuncu" seçeneği etkinleştirildiğinde (Bkz. ÖNCEKİ/GPRIOR kaydı) tek değişiklik, Füze 0'dan 3'e geçişin, ilişkili Player nesnesinin rengini görüntülemeden COLPF3 değerini görüntülemeye geçişidir. Yeni "Oyuncunun" çarpışmaları, bireysel Füzeler için rapor edilmeye devam ediyor.

Oyuncu/Füze - Playfield Çarpışmaları

Her bit, Player/Füze nesnesinin bir pikselinin, belirtilen Playfield renk nesnesinin bir pikseliyle kesiştiğini gösterir. Arka plan rengi için kayıtlı bir çarpışma yok.

Görünmez kavşaklar da çarpışmaları kaydeder. Bir Oyuncu/Füze nesnesi önceliği bir Playfield renk kaydının arkasındaysa ve başka bir Oyuncu/Füze nesnesi önceliği Playfield'dan daha yüksekse (ön plan) ve ön plandaki Oyuncu/Füze pikselleri hem Playfield'ı hem de Playfield'ın arkasındaki Oyuncu/Füze nesnesini gizlerse, daha sonra Playfield ile hem arka plan hem de ön plan Player/Füze nesneleri arasındaki çarpışma kaydedilecektir.

Yüksek çözünürlüklü, 1/2 renkli saat piksel modları ( ANTIC Mod 2, 3 ve F) farklı şekilde ele alınır. Piksel değerlerinin 0 olduğu COLPF2 olarak oluşturulan "arka plan" rengi bir çarpışma kaydetmez. Yüksek çözünürlüklü pikseller, COLPF1'den parlaklık değeri olarak işlenir . Pikseller, saat genişliğinde renk çiftlerinde birlikte gruplanır (piksel 0 ve 1, piksel 2 ve 3, piksel 318 ve 319'a devam eder). Çiftin herhangi bir pikseli 1 olduğunda, Player veya Missile pikselleri ile Playfield color COLPF2 arasında bir çarpışma algılanır .

GTIA modları 9 ve 11, oyun alanı çarpışmalarını işlemez. Playfield piksel kullandığınız yere GTIA modunda 10 Playfield çarpışmalar kaydedecektir COLPF0 aracılığıyla COLPF3

M0PF $D000 Okuma

Füze 0'dan Playfield'a çarpışmalar

M1PF $D001 Okuma

Füze 1'den Playfield'a çarpışmalar

M2PF $D002 Okuma

Füze 2'den Playfield'a çarpışmalar

M3PF $D003 Okuma

Füze 3 ile Playfield çarpışmaları

P0PF $D004 Okuma

Oyuncu 0 - Playfield çarpışmaları

P1PF $D005 Okuma

Oyuncu 1'den Playfield'a çarpışmalar

P2PF $D006 Okuma

Oyuncu 2'den Playfield'a çarpışmalar

P3PF $D007 Okuma

Oyuncu 3'ten Playfield'a çarpışmalar

7. bit 6. bit 5. bit 4. bit 3. Bit 2. bit 1. bit bit 0
- - - - COLPF3 COLPF2 COLPF1 COLPF0

Oyuncu Çarpışmalarına Füze

Füzeler Oyuncular ve Oyun Alanları ile çarpışır. Füze-Füze çarpışması yoktur.

M0PL $D008 Okuma

Füze 0 ile Oyuncu çarpışmaları

M1PL $D009 Okuma

Füze 1 ile Oyuncu çarpışmaları

M2PL $D00A Okuma

Füze 2 ile Oyuncu çarpışmaları

M3PL $D00B Okuma

Füze 3 ile Oyuncu çarpışmaları

7. bit 6. bit 5. bit 4. bit 3. Bit 2. bit 1. bit bit 0
- - - - COLPM3 COLPM2 COLPM1 COLPM0

Oyuncudan Oyuncuya Çarpışmalar

İki oyuncu arasındaki bir çarpışma, her iki Oyuncunun çarpışma kaydındaki çarpışma bitini ayarlar. Oyuncu 0 ve Oyuncu 1 çarpıştığında, Oyuncu 0'ın Oyuncu 1 için çarpışma biti ayarlanır ve Oyuncu 1'in Oyuncu 0 için çarpışma biti ayarlanır.

Bir Oyuncu kendisiyle çarpışamaz, bu nedenle biti her zaman 0'dır.

P0PL $D00C Okuma

Oyuncu 0 - Oyuncu çarpışmaları

7. bit 6. bit 5. bit 4. bit 3. Bit 2. bit 1. bit bit 0
- - - - COLPM3 COLPM2 COLPM1 0
P1PL $D00D Okuma

Oyuncu 1'den Oyuncuya çarpışmalar

7. bit 6. bit 5. bit 4. bit 3. Bit 2. bit 1. bit bit 0
- - - - COLPM3 COLPM2 0 COLPM0
P2PL $D00E Okuma

Oyuncu 2'den Oyuncuya çarpışmalar

7. bit 6. bit 5. bit 4. bit 3. Bit 2. bit 1. bit bit 0
- - - - COLPM3 0 COLPM1 COLPM0
P3PL $D00F Okuma

Oyuncu 3'ten Oyuncu çarpışmalarına

7. bit 6. bit 5. bit 4. bit 3. Bit 2. bit 1. bit bit 0
- - - - 0 COLPM2 COLPM1 COLPM0

Oyuncu/Füze ve Oyun Alanı Renk ve Parlaklık

Varsayılan CTIA/GTIA renk yorumlama modundaki tüm Oyuncu/Füze nesnelerinin pikselleri ve tüm Playfield pikselleri, rengi belirtmek için dolaylı yolu kullanır. Dolaylılık, piksel verilerinin değerlerinin doğrudan rengi belirtmediği, ancak renk için başka bir bilgi kaynağına işaret ettiği anlamına gelir. CTIA/GTIA, renkler için kullanılan değerleri ayarlayan donanım kayıtları içerir ve piksellerin bilgileri bu kayıtlara atıfta bulunur. Atari'deki palet, toplam 128 renk için 16 renkten oluşan 8 parlaklık seviyesidir. Renk dolaylı esnekliği, bir programın ekran renklerini programın gösterim amacına uyacak şekilde uyarlamasını sağlar.

Tüm donanım renk kayıtları karşılık gelen gölge kayıtlarına sahiptir.

COLPM0 $D012 Yaz

GÖLGE: PCOLOR0 $02C0

Oyuncu ve Füze 0'ın rengi/parlaklığı.

GTIA 9-renk modu etkinleştirildiğinde ( ÖNCEKİ/GPRIOR değeri 80 $) bu kayıt, COLBK yerine kenarlık ve arka plan (Playfield piksel değeri 0) için kullanılır .

COLPM1 $D013 Yaz

GÖLGE: PCOLOR1 $02C1

Oyuncu ve Füze 1'in rengi/parlaklığı.

COLPM2 $D014 Yaz

GÖLGE: PCOLOR2 $02C2

Oyuncu ve Füze 2'nin rengi/parlaklığı.

COLPM3 $D015 Yaz

GÖLGE: PCOLOR3 $02C3

Oyuncu ve Füze 3'ün rengi/parlaklığı.

COLPF0 $D016 Yaz

GÖLGE: RENK0 $02C4

Playfield 0'ın rengi/parlaklığı.

COLPF1 $D017 Yaz

GÖLGE: RENK1 $02C5

Playfield 1'in rengi/parlaklığı.

Bu kayıt, ANTİK metin modları 2 ve 3'te ve harita modu F'de ayarlanan pikseller (değer 1) için kullanılır. Yalnızca parlaklık kısmı kullanılır ve COLPF2 renk değeriyle VEYA'lanır . Diğer Karakter ve Harita modlarında bu kayıt, bir piksel için beklenen rengi ve parlaklığı sağlar.

COLPF2 $D018 Yaz

GÖLGE: RENK2 $02C6

Playfield 2'nin rengi/parlaklığı.

Bu kayıt, ANTİK metin modları 2 ve 3'ün Playfield arka plan rengi ve harita modu F için kullanılır. Yani, burada piksel değeri 0 kullanılır. Diğer Karakter ve Harita modlarında bu kayıt, bir piksel için beklenen rengi ve parlaklığı sağlar.

COLPF3 $D019 Yaz

GÖLGE: RENK3 $02C7

Playfield 3'ün rengi/parlaklığı

COLPF3 birkaç özel durumda mevcuttur:

  • Füzeler "beşinci Oyuncu"ya dönüştürüldüğünde, ilişkili Player nesnesinin rengini görüntülemekten COLPF3'ü görüntülemeye geçer ve önceliği değiştirir. ÖNCEKİ/GPRIOR kaydına bakın .
  • Playfield Metin Modları 4 ve 5. Ters video karakterleri (80 $'lık yüksek bit seti), CTIA/GTIA'nın karakter matrisindeki COLPF2 pikselleri için COLPF3 değerini değiştirmesine neden olur. (Bkz. ANTIC'in Glif Oluşturma )
  • Playfield Metin Modları 6 ve 7. Karakter değeri bit 6 ve 7'ye sahip olduğunda (karakter aralığı $C0-FF), tüm karakter piksel matrisi COLPF3'te görüntülenir. (Bkz. ANTIC'in Glif Oluşturma )
  • Bu kayıt, GTIA'nın özel 9 renk, piksel dolaylı renk modunda da mevcuttur.

COLBK $D01A Yaz

GÖLGE: RENK4 $02C8

Playfield arka planının rengi/parlaklığı.

Arka plan rengi, tüm aşırı tarama görüntüleme alanı boyunca başka hiçbir pikselin oluşmadığı yerde görüntülenir. Arka plan için aşağıdaki istisnalar oluşur:

  • ANTİK metin modları 2 ve 3'te ve harita modu F'de piksellerin oluşturulabileceği oyun alanı alanının arka planı COLPF2'dendir ve COLBK rengi oyun alanı çevresinde bir sınır olarak görünür.
  • GTIA renk yorumlama modunda 8 ABD doları (9 renk dolaylı) ekran arka plan rengi, renk kaydı COLPM0 tarafından sağlanırken, Playfield piksel değeri 8 ABD doları için COLBAK kullanılır.
  • GTIA renk yorumlama modunda $C (bir parlaklık düzeyinde 15 renk, artı arka plan), diğer tüm piksellerin parlaklık düzeyini ayarlamak için COLBK'yi kullanır (piksel değeri 1 ila $F). Ancak arka planın kendisi yalnızca COLBK kaydında ayarlanan renk bileşenini kullanır. Arka planın parlaklık değeri 0'a zorlanır.

Renk Kayıtlarının Bitleri :

7. bit 6. bit 5. bit 4. bit 3. Bit 2. bit 1. bit bit 0
renk 3 2. renk renk 1 Renk 0 parlaklık 3 parlaklık 2 parlaklık 1 (Parlaklık 0)

Renk kaydının yüksek nybble'ı 16 renkten birini belirtir ($00, $10, $20... ila $F0).

Kayıttaki düşük nybble, 16 parlaklık değerinden birini belirtir ($00, $01, $02... ila $0F).

Normal renk yorumlama modunda en düşük bit önemli değildir ve sadece 8 parlaklık değeri mevcuttur ($00, $02, $04, $06, $08, $0A, $0C, $0E), bu nedenle tüm renk paleti 128 renk değeridir.

GTIA renk yorumlama modunda $4 (yalnızca parlaklık modu), 256 renkten oluşan bir palet sağlayan Playfield pikselleri için tam 16 bit parlaklık değerleri mevcuttur. Bu modda görüntülenen tüm Oyuncu/Füze nesneleri, yine de 128 renk paletini kullanan dolaylı yoldan renklendirilir.

Normal renk yorumlama modunda, piksel değerleri 0 $ ile 3 $ arasında değişir ve normalde sırasıyla COLBK, COLPF0, COLPF1, COLPF2 renk kayıtlarına işaret eder. Renkli metin modları, belirli karakter değerleri aralıkları için COLPF3 kullanma seçeneklerini de içerir. Daha fazla bilgi için ANTIC'in grafik modlarına bakın.

Oyuncu/Füze grafik desenleri, grafik desen bitlerinin ayarlandığı yerde görüntülenmek üzere etkinleştirildiğinde, görüntülenen renk nesnelere atanan kayıtlardan gelir.

Renk üretimi ve gösterimi için istisnalar vardır:

  • ANTİK Metin modları 2 ve 3 ve Harita modu F:
    • Bu modlardaki piksel değerleri yalnızca 0 $ ve 1 $'dır. 0 $ piksel, COLPF2 renk kaydı olan Playfield arka planını belirtir. $1 piksel, COLPF2'nin renk bileşenini ve COLPF1 tarafından belirtilen parlaklığı kullanır. Playfield çevresindeki kenarlık, COLBK'dan gelen rengi kullanır.
    • ANTIC Metin modları 2 ve 3 ve Harita modu F, Oyuncu/Füze grafikleriyle diğer modlardan farklı davranır. Glif veya grafik pikselleri için kullanılan COLPF1 her zaman en yüksek önceliğe sahiptir ve Oyuncular veya Füzeler tarafından gizlenemez. COLPF1'in rengi her zaman normalde COLPF2 olan "arka plandan" gelir. Bu nedenle, Oyuncular/Füzeler ve Beşinci Oyuncunun COLPF2'ye göre önceliğe sahip olduğu durumlarda, COLPF1 glif/grafik pikselleri, en yüksek öncelikli rengin (Oyuncu veya Füze) renk bileşenini ve COLPF1'in parlaklık bileşenini kullanır. Bu davranış, Oyuncu/Füze önceliği çakışmalarının "arka plan" için gerçek siyahla sonuçlandığı durumlarda tutarlıdır. Özetle, CTIA/GTIA rengi sonunda yüksek çözünürlüklü pikselin "arkasında" kullanmayı belirler ve ardından COLPF1 ön plan glif/grafik piksellerini "renklendirmek" için kullanılır.
  • GTIA İstisnaları
    • GTIA renk yorumlama modu 8 ABD doları (9 renk dolaylı), ekran arka planı ve kenarlık rengi için renk kaydı COLPM0'ı kullanırken, Playfield piksel değeri 8 ABD doları için COLBAK kullanılır.
    • GTIA renk yorumlama modu $C (bir parlaklık düzeyinde 15 renk, artı arka plan), diğer tüm piksellerin parlaklık düzeyini ayarlamak için COLBK'yi kullanır (piksel değeri 1 ila $F). Ancak, arka planın kendisi yalnızca COLBK kaydında ayarlanan renk bileşenini kullanır. Arka planın parlaklık değeri 0'a zorlanır. Arka planın renk bileşeninin de diğer piksellerin renkleriyle VEYA'landığını unutmayın. Bu nedenle, arka plan rengi bileşeni siyah olmadığında (sayısal olarak sıfır) moddaki toplam renk sayısı azalır.
  • Oyuncu/Füze İstisnaları:
    • Oyuncu/Füze Önceliği değeri $0 (Bkz. PRIOR/GPRIOR ) çakışan Player ve Playfield piksellerinin birlikte VEYA farklı bir renk göstererek birlikte olmasına neden olur.
    • Çakışan Oyuncu/Füze Önceliği yapılandırması, çakışmaların meydana geldiği durumlarda gerçek siyahın (renk 0, luma 0) çıktısının alınmasına neden olur.
    • Oynatıcı/Füze Çok Renkli seçeneği, çakışan Oyuncu piksellerinin birlikte VEYA farklı bir renk göstererek birlikte görüntülenmesine neden olur.

ANTİK Karakter Modlarına Göre Renk Kayıtlarının Kullanımı :

Kayıt olmak ANTİK 2 ANTİK 3 ANTİK 4 ANTİK 5 ANTİK 6 ANTİK 7
COLPM0/PCOLOR0
COLPM1/PCOLOR1
COLPM2/PCOLOR2
COLPM3/PCOLOR3
COLPF0/COLOR0 glif pikseli glif pikseli glif glif
COLPF1/COLOR1 glif pikseli (luma) glif pikseli (luma) glif pikseli glif pikseli glif glif
COLPF2/COLOR2 arka fon arka fon glif pikseli glif pikseli glif glif
COLPF3/COLOR3 glif pikseli glif pikseli glif glif
ÇOLBAK/COLOR4 sınır sınır arka fon arka fon arka fon arka fon

ANTIC Harita Modlarına Göre Renk Kayıtlarının Kullanımı :

Kayıt olmak ANTİK 0 (boş satırlar) ANTİK 8 ANTİK 9 ANTİK A ANTİK B ANTİK C ANTİK D ANTİK E ANTİK F
COLPM0/PCOLOR0
COLPM1/PCOLOR1
COLPM2/PCOLOR2
COLPM3/PCOLOR3
COLPF0/COLOR0 piksel piksel piksel piksel piksel piksel piksel
COLPF1/COLOR1 piksel piksel piksel piksel piksel
COLPF2/COLOR2 piksel piksel piksel piksel arka fon
COLPF3/COLOR3
ÇOLBAK/COLOR4 arka fon arka fon arka fon arka fon arka fon arka fon arka fon arka fon sınır

GTIA Modlarına Göre Renk Kayıtlarının Kullanımı (ANTIC F) :

Kayıt olmak GTIA $4 (TEMEL 9) GTIA $8 (TEMEL 10) GTIA $C (TEMEL 11)
COLPM0/PCOLOR0 arka fon
COLPM1/PCOLOR1 piksel
COLPM2/PCOLOR2 piksel
COLPM3/PCOLOR3 piksel
COLPF0/COLOR0 piksel
COLPF1/COLOR1 piksel
COLPF2/COLOR2 piksel
COLPF3/COLOR3 piksel
ÇOLBAK/COLOR4 arka plan rengi piksel arka plan temel luma

Oyuncu/Füze renkleri, tüm modlarda Oyuncu/Füze nesneleri için her zaman mevcuttur, ancak renkler özel GTIA modları (16 ton/16 renk) etkin olduğunda değiştirilebilir.

Çeşitli Oyuncu/Füze ve GTIA Kontrolleri

ÖNCE $D01B Yaz

GÖLGE: GPRIOR $026F

Bu kayıt, birkaç CTIA/GTIA renk yönetimi özelliğini kontrol eder: GTIA Playfield renk yorumlama modu, Çok Renkli Oynatıcı nesneleri, Beşinci Oyuncu ve Oyuncu/Füze/Oyun Alanı önceliği.

7. bit 6. bit 5. bit 4. bit 3. Bit 2. bit 1. bit bit 0
GTIA Modu 1 GTIA Modu 0 Çok Renkli Oynatıcı Beşinci Oyuncu öncelik 3 Öncelik 2 Öncelik 1 Öncelik 0

GTIA Playfield Renk Yorumları
CTIA, ANTIC Playfield veri akışı için yalnızca bir varsayılan renk yorumlama modu içerir. Bu, aksi belirtilmediği sürece ANTIC ve CTIA/GTIA tartışmalarının çoğunda varsayılan temel işlevdir . GTIA, Playfield verileri için üç alternatif renk yorumlama modu içerir. Bu modlar, ANTIC'ten bitişik renk saatlerini eşleştirerek çalışır, bu nedenle GTIA tarafından üretilen pikseller her zaman iki renk saati genişliğindedir. Bu modlar, herhangi bir ANTIC Playfield Modu görüntülenirken etkinleştirilebilse de, bu GTIA renk işleme seçenekleriyle mümkün olan tam renk paleti, yalnızca 1/2 renk saati piksellerine dayalı ANTIC Modlarında gerçekleştirilir (ANTIC modları 2, 3, F.) Bunlar GTIA seçenekleri en çok Mod F ekranıyla birlikte kullanılır. Özel GTIA renk işleme modları, Oyuncu/Füze grafiklerinin görüntüsünü veya davranışını da çeşitli şekillerde değiştirir.

Renk yorumlama kontrolü, tüm ekranı etkileyen GTIA'nın global bir işlevidir. GTIA, çoğu ANTIC Playfield için gerekli olan çeşitli GTIA renk yorumlama modlarını ve varsayılan CTIA modunu tek bir ekranda karıştırma yeteneğine sahip değildir. Renk yorumlama modlarını karıştırmak, ekran oluşturulurken PRIOR kaydına yazılım yazılmasını gerektirir (genellikle, bir Ekran Listesi Kesintisi ile).

ÖNCEKİ bit 7 ve 6, renk yorumlama modlarını belirten dört değer sağlar:

GTIA Modu Bitleri [7:6] Özellik Açıklama
0 0 = 00 $ Varsayılan CTIA ile aynı. Normal renk kaydı kullanımı.
0 1 = 40 dolar GTIA/16 Tonları Arka plan renginin 16 tonu ( COLBK )
1 0 = 80 dolar GTIA/9 rengi Dokuz Playfield ve Player/Füze renk kaydının tümü Playfield'da mevcuttur. Arka plan COLPM0
1 1 = $C0 GTIA/16 Renk Arka plan kaydı ( COLBK ) tarafından ayarlanan bir parlaklık seviyesinde 15 renk artı arka plan.

16 Gölgeler
Bu mod, arka plan rengini belirlemek için COLBK kaydını kullanır. Dolaylılığı kullanmak yerine, piksel değerleri doğrudan Parlaklığı temsil eder. Bu mod, dört parlaklık bitinin tümünün Atari renk paletinde kullanılmasına izin verir ve böylece 256 renk görüntüleyebilir.

Oyuncu/Füze grafikleri (beşinci Oyuncu seçeneği olmadan) bu modda düzgün görüntülenir, ancak Playfield ile çarpışma algılama devre dışı bırakılır. Oyun alanı önceliği her zaman en alttadır. Füzeler beşinci bir Oyuncu olarak hareket edecek şekilde değiştirildiğinde, Füze nesnelerinin Oyun Alanı ile örtüştüğü yerde, Füze piksellerinin parlaklığı Playfield piksellerinin Parlaklık değeriyle birleşir.

9 Renk
Diğer iki özel GTIA modundan farklı olarak, bu mod tamamen renk dolaylı olarak yönlendirilir. Dokuz renk kaydının tamamı ekranda 0 ile 8 arasındaki piksel değerleri için çalışır. Kalan 7 piksel değeri önceki renk kayıtlarını tekrar eder.

Çıktı alındığında pikseller bir renk saati (yarı GTIA modu pikseli) kadar geciktirilir. Bu denkleştirme ilginç etkilere izin verir. Örneğin, bu mod ile farklı bir GTIA modu arasında hızla sayfa çevirme, görünürde daha yüksek çözünürlüklü ve daha fazla sayıda renkli bir ekran üretir.

Bu mod, kenarlık ve arka plan (Playfield 0 değer pikselleri) için COLBK yerine COLPM0 renk kaydı kullanması bakımından benzersizdir .

Oyuncu/Füze grafikleri, aynı renk kaydı olan COLPM0'ı kullandıkları için Player/Füze 0'ın arka plan piksellerinden ayırt edilememesi dışında düzgün bir şekilde görüntülenir . Oyuncu/Füze renklerini kullanan Playfield pikselleri, Oyuncu/Füze nesneleriymiş gibi öncelik ayarlarıyla değiştirilir ve bu nedenle Oyuncuların/Füzelerin görüntülenmesini etkileyebilir. (Oyuncu/Füze/Oyun Alanı öncelikleri hakkındaki tartışmaya daha sonra bakın).

Oyuncu/Füze renklerini kullanan Playfield pikselleri, Player/Füze nesneleri üst üste bindiğinde çarpışmaları tetiklemez. Ancak, COLPF0 ila COLPF3 Playfield renkleriyle örtüşen Oyuncu/Füze grafikleri , beklenen çarpışmayı tetikleyecektir.

16 Renk
Bu mod COLBK tüm Playfield piksellerin parlaklık belirtmek için kayıt kullanır (değerler 1 $ heks / 1 ayrışma $ F ile heks / 15'lik ayrışma ). Parlaklık değerinin en az önemli bit gözlenmez, bu yüzden sadece standart / CTIA 8 parlaklık değeri mevcuttur ($0, $2, $4, $6, $8, $A, $C, $E). Ek olarak, arka planın kendisi yalnızca COLBK kaydında ayarlanan renk bileşenini kullanır. Arka planın parlaklık değeri 0'a zorlanır. Parlaklık modunda olduğu gibi dolaylılık devre dışı bırakılır ve piksel değerleri doğrudan bir rengi temsil eder.

Arka planın renk bileşeninin de oyun alanı pikselleriyle birleştiğini unutmayın. Arka plan için siyah dışındaki renkler, modda görüntülenen toplam renk sayısını azaltır.

Oyuncu/Füze grafikleri (beşinci Oyuncu seçeneği olmadan) bu modda düzgün bir şekilde görüntülenir, ancak Playfield ile çarpışma algılama devre dışı bırakılır. Oyun alanı önceliği her zaman en alttadır. Füzeler beşinci bir Oyuncu olarak hareket edecek şekilde değiştirildiğinde, Füze nesnelerinin Oyun Alanı ile çakıştığı yerde, Füze pikselleri, Oyun Alanı piksellerinin Renk değerini devralır.

Multi-Color Player
ÖNCEKİ bit 5, değer 20 $ hex /32 dec Multi-Color Player nesnelerini etkinleştirir. İki Oyuncu/Füze nesnesinin piksellerinin çakıştığı yerde üçüncü bir renk belirir. Bu, CTIA/GTIA'nın yeni bir renk çıktısı almak için iki renkli pikselin bit düzeyinde VEYA bir kısmını gerçekleştirmesiyle sonuçlanan Player/Füze nesnesi çiftleri arasındaki öncelikli işlemeyi ortadan kaldırarak uygulanır.

Örnek: 98$ onaltılık /152 aralık (mavi) renk değerine sahip bir Player pikseli, 46$ onaltılık /70 aralık (kırmızı) renk değerine sahip bir Player pikseli ile çakışıyor ve bu da $DE onaltılık /228 aralık (açık yeşil/sarı) piksel rengiyle sonuçlanıyor .

Çok Renkli çıktı alabilen Oyuncular/Füze çiftleri:

  • Oyuncu 0 + Oyuncu 1
  • Füze 0 + Füze 1
  • Oyuncu 2 + Oyuncu 3
  • Füze 2 + Füze 3

Beşinci Oyuncu
ÖNCEKİ bit 4, 10$ onaltılık /16 aralık değeri , Füzelerin beşinci Oyuncu olmasını sağlar. Füzelerin renk işlemesi dışında Füzede herhangi bir işlevsel değişiklik olmaz. Normalde Füzeler, ilişkili Oyuncunun rengini kullanarak görüntülenir. Beşinci Oyuncu etkinleştirildiğinde, tüm Füzeler Playfield 3'ün ( COLPF3 ) rengini görüntüler . Yatay konum, boyut, dikey gecikme ve Oyuncu/Füze çarpışmaları aynı şekilde çalışmaya devam ediyor. Beşinci Oyuncu için Oyuncu nesneleri piksel kesişimlerinin önceliği COLPF3'tür, ancak Beşinci Oyuncu piksellerinin tüm Playfield renklerine göre önceliği vardır.

Renk işleme değişikliği, GTIA'nın alternatif renk modlarında Füzelerin gösterimi için de bazı istisnalara neden oluyor:

  • GTIA 16 Shades modu: Füze piksellerinin Playfield ile çakıştığı durumlarda, pikseller Playfield piksellerinin Parlaklık değerini devralır.
  • GTIA 16 Renk modu: Füze piksellerinin Playfield ile çakıştığı durumlarda, pikseller Playfield piksellerinin Color değerini devralır.

Beşinci Oyuncu, Öncelik değeri $8 (bit 1000) için bir istisna sunar (Aşağıdaki Öncelik tartışmasına bakın.)

Öncelik
ÖNCE 3 ila 0 bitleri, Oyuncu/Füze nesneleri pikselleri ve Playfield pikselleri kesiştiğinde hangi piksel değerinin görüntüleneceğini belirleyen dört Oyuncu/Füze ve Playfield öncelik değeri sağlar. Dört değer, aşağıdaki Öncelik tablosunda listelenen belirli seçenekleri sağlar. "PM", Beşinci Oyuncu olmadan normal Oyuncu/Füze uygulaması anlamına gelir. Beşinci Oyuncu, "P5", etkinleştirildiğinde önceliğinin nerede gerçekleştiği gösterilir.

Grafik, varsayılan (CTIA) renk yorumlama modunu kullanan ANTIC Playfield Karakter ve Harita modları için doğrudur. GTIA renk yorumlama modları ve yüksek çözünürlüklü, 1/2 renkli saat piksellerine dayalı ANTIC modları farklı davranır (daha sonra belirtilecektir).

Öncelikli Bitler [3:0] 0 0 0 1 = $1 0 0 1 0 = $2 0 1 0 0 = $4 1 0 0 0 = 8 dolar 0 0 0 0 = 0 $
Tepe PM0 PM0 P5/PF0 P5/PF0 PM0
PM1 PM1 PF1 PF1 PM1
PM2 P5/PF0 PF2 PM0 P5/PF0
PM3 PF1 PF3 PM1 PF1
P5/PF0 PF2 PM0 PM2 PM2
PF1 PF3 PM1 PM3 PM3
PF2 PM2 PM2 PF2 PF2
PF3 PM3 PM3 PF3 PF3
Alt KOLBK KOLBK KOLBK KOLBK KOLBK

Birden çok bit ayarlanırsa, bir çakışmanın olduğu yerde CTIA/GTIA siyah bir piksel çıkarır—Siyahın yalnızca arka plan rengi COLBK değil, gerçek siyah anlamına geldiğini unutmayın.

Beşinci Oyuncu COLPF3 değeri ile gösterilse de önceliği tüm Playfield renklerinin üzerindedir. Bu, Öncelik değeri $8 (Bit 1000) için bir istisna oluşturur. Bu modda Playfield 0 ve 1, Player'lardan daha yüksek önceliğe sahiptir ve Players, Playfield 2 ve 3'ten daha yüksek önceliğe sahiptir. Playfield 0 veya 1 piksellerinin herhangi bir Player pikseliyle kesiştiği yerde, görüntülenen sonuç Playfield pikselidir. Ancak, Beşinci oyuncu da aynı konumla kesişirse, değeri Playfield üzerinde gösterilir ve Playfield 3 en yüksek önceliğe sahipmiş gibi görünmesine neden olur. Playfield 0 veya 1 pikseli bu kesişme noktasından kaldırılırsa, Beşinci Oyuncu pikselinin geçersiz kılınacak Playfield pikseli yoktur ve bu nedenle Oyuncu piksellerinin gerisinde kalır.

Öncelik bitlerinin tümü 0 olduğunda, farklı bir efekt oluşur—Player ve Playfield pikselleri, Multi-Color Player özelliğine benzer şekilde mantıksal olarak VEYA birlikte oluşturulur. Bu durumda Oyuncular 0 ve 1 pikselleri Playfield 0 ve 1 pikselleri ile karışabilir ve Oyuncular 2 ve 3 pikselleri Playfield 2 ve 3 pikselleri ile karışabilir. Ek olarak, Çok Renkli Oynatıcı seçeneği kullanıldığında, sonuçta ortaya çıkan birleştirilmiş Oynatıcıların rengi Playfield ile karışarak daha fazla renk üretebilir. Tüm renk birleştirme olasılıkları göz önüne alındığında, CTIA/GTIA donanımı, tarama satırı başına 23 renk çıktısı verebilir. İlk renk olarak arka plan renginden başlayarak, kalan 22 renk ve renk birleştirme mümkündür:

Renk COLPM0 COLPM1 COLPF0 COLPF1 Renk COLPM2 COLPM3 COLPF2 COLPF3
1 x 12 x
2 x 13 x
3 x x 14 x x
4 x 15 x
5 x x 16 x x
6 x x 17 x x
7 x x x 18 x x x
8 x 19 x
9 x x 20 x x
10 x x 21 x x
11 x x x 22 x x x

Öncelik bitlerinin tümü 0 olduğunda, Füze renkleri yukarıda açıklandığı gibi karşılık gelen Oyuncularla aynı şekilde çalışır. Beşinci Oyuncu etkinleştirildiğinde, Füze pikselleri, yukarıdaki tabloda COLPF3 için gösterildiği gibi aynı renk birleşmesine neden olur (19'dan 22'ye kadar renkler).

Öncelik ve Yüksek Çözünürlüklü Modlar
Öncelik sonucu, yüksek çözünürlüklü, 1/2 renkli saat pikselleri kullanan Karakter ve Harita modları için farklılık gösterir – ANTIC modları 2, 3 ve F. Bu öncelik işleme farklılıklarından renkli metin veya grafikler oluşturmak için yararlanılabilir. geleneksel olarak "tek renkli" olarak düşünülen bu modlarda.

Bu ANTİK modlarda COLPF2, Playfield'ın "arka planı" olarak çıkar ve COLBK, Playfield çevresindeki sınır olarak çıkar. Grafikler veya glif pikselleri, yalnızca arka planın renk bileşeni (genellikle COLPF2) ile karıştırılan COLPF1'in parlaklık bileşeni kullanılarak çıkarılır.

Oyuncular/Füzeler ve COLPF2 arasındaki öncelik ilişkisi aşağıdaki öncelik tablosuna göre çalışır. Daha yüksek önceliklere sahip Oyuncu/Füze pikselleri, "arka plan" rengi olarak COLPF2'nin yerini alacak. COLPF1 her zaman en yüksek önceliğe sahiptir ve Oyuncular veya Füzeler tarafından gizlenemez. Glif/grafik pikselleri, en yüksek öncelikli rengin (Oynatma Alanı, Oynatıcı veya Füze) renk bileşenini ve COLPF1'in parlaklık bileşenini kullanır. Bu davranışın, Oyuncu/Füze önceliği çakışmalarının "arka plan" için gerçek siyahla sonuçlandığı durumlarda da tutarlı olduğunu unutmayın. Gerçekte, CTIA/GTIA renk değeri, sonunda COLPF1 ön plan glif/grafik piksellerini "arka plan" rengi "renk tonları" için kullanır.

Öncelikli Bitler [3:0] COLPF2 ve COLPM0 ve COLPM1 karşılaştırması COLPF2, COLPM2 ve COLPM3'e karşı
0 0 0 0 = 00 $ Oyuncu/Füze Oyuncu/Füze VEYA COLPF2 ile
0 0 0 1 = 01 $ Oyuncu/Füze Oyuncu/Füze
0 0 1 0 = 02 $ Oyuncu/Füze COLPF2
0 0 1 1 = 03 $ Oyuncu/Füze Gerçek siyah
0 1 0 0 = 04 dolar COLPF2 COLPF2
0 1 0 1 = $05 COLPF2 Gerçek siyah
0 1 1 0 = 06 dolar COLPF2 COLPF2
0 1 1 1 = 07 dolar COLPF2 Gerçek siyah
1 0 0 0 = 08 dolar Oyuncu/Füze Oyuncu/Füze
1 0 0 1 = 09 dolar Oyuncu/Füze Oyuncu/Füze
1 0 1 0 = 0A $ Oyuncu/Füze Gerçek siyah
1 0 1 1 = 0 milyar dolar Oyuncu/Füze Gerçek siyah
1 1 0 0 = 0C COLPF2 Gerçek siyah
1 1 0 1 = 0D $ COLPF2 Gerçek siyah
1 1 1 0 = 0E $ COLPF2 Gerçek siyah
1 1 1 1 = 0F COLPF2 Gerçek siyah

VDELAY $D01C Yaz

Dikey Gecikme P/M Grafikleri

7. bit 6. bit 5. bit 4. bit 3. Bit 2. bit 1. bit bit 0
oyuncu 3 oyuncu 2 oyuncu 1 oyuncu 0 füze 3 füze 2 füze 1 Füze 0

Bu kayıt, ANTIC'in DMACTL kaydında Çift Hat Oynatıcı/Füze çözünürlüğü etkinleştirildiğinde tek tarama hattı hareketi sağlamak için kullanılır . Bu, GRAF* kayıtlarındaki ANTIC DMA güncellemelerini tarama satırlarında bile maskeleyerek çalışır ve grafik deseninin bir tarama satırı aşağı kaymasına neden olur.

Tek Hat çözünürlüğü, her tarama hattında ANTİK DMA güncellemeleri gerektirdiğinden ve VDELAY, tarama hatlarındaki güncellemeleri maskelediğinden, bu bit, Tek hat Oynatıcı/Füze çözünürlüğünü Çift hat'a düşürür.

GRACTL $D01D Yaz

Grafik Kontrolü

7. bit 6. bit 5. bit 4. bit 3. Bit 2. bit 1. bit bit 0
? ? ? ? ? Tetik Mandalı Oyuncuları Etkinleştir Füzeleri Etkinleştir

GRACTL, CTIA/GTIA'nın ANTIC'den Oyuncu/Füze DMA verilerini almasını kontrol eder ve Joystick tetik girişi modunu değiştirir.

Oyuncu/Füze DMA verilerinin alınması, CTIA/GTIA'nın verileri alacak şekilde yapılandırılmasını gerektirir. Bu, ANTIC'i Oyuncu verilerini ve Füze verilerini göndermeye yönlendiren ANTIC'in DMACTL kaydındaki bir çift bitle eşleşen GRACTL'deki bir çift bit ile yapılır . GRACTL'nin Bit 0'ı, Füze verilerinin transferini sağlayan DMACTL'nin Bit 2'sine karşılık gelir. GRACTL'nin Bit 1'i, Oynatıcı verilerinin transferini sağlayan DMACTL'nin Bit 3'üne karşılık gelir. Bu bitler, GTIA'nın DMA yoluyla ANTIC'ten Oyuncu/Füze verilerini alması için ayarlanmalıdır. Oyuncu/Füze grafikleri doğrudan CPU tarafından çalıştırıldığında bu bitler kapalı olmalıdır.

Joystick tetik kayıtları, basılı/basılmamış durumunu gerçek zamanlı olarak bildirir. Bir programın giriş sorgulaması, anlık joystick düğmesine basışları yakalayacak kadar sık ​​değilse, tetikleyiciler kapalı/basılı durumda kilitlenecek ve düğme bırakıldıktan sonra bile bu durumda kalacak şekilde ayarlanabilir. GRACTL Bit 2'nin ayarlanması, tüm tetikleyicilerin kilitlenmesini sağlar. Bitin temizlenmesi, tetikleyicileri kilitlenmemiş, gerçek zamanlı davranışa döndürür.

HITCLR $D01E Yazma

Çarpışmaları Temizle

7. bit 6. bit 5. bit 4. bit 3. Bit 2. bit 1. bit bit 0
? ? ? ? ? ? ? ?

Bu kayda herhangi bir yazma, tüm Oyuncu/Füze çarpışma algılama bitlerini temizler.

Diğer CTIA/GTIA İşlevleri

Joystick Tetikleyicileri

TRIG0 $D010 Okuma

GÖLGE: STRIG0 $0284

Joystick 0 tetik

TRIG1 $D011 Okuma

GÖLGE: STRIG1 $0285

Joystick 1 tetikleyici.

TRIG2 $D012 Okuma

GÖLGE: STRIG2 $0286

Joystick 2 tetikleyici.

TRIG3 $D013 Okuma

GÖLGE: STRIG3 $0287

Joystick 3 tetik

7. bit 6. bit 5. bit 4. bit 3. Bit 2. bit 1. bit Tetiklemek
0 0 0 0 0 0 0 ?

7'den 1'e kadar olan bitler her zaman 0'dır. Bit 0, joystick tetikleyicisinin durumunu bildirir. Değer 1, tetiğe basılmadığını gösterir. 0 değeri tetiğe basıldığını gösterir.

Tetik, rapor düğmesine gerçek zamanlı olarak basıldığında kaydeder. Düğme bırakıldığında, düğmeye basılma durumu anında temizlenir.

Tetikleyiciler, basılı durumda kilitlenecek, yani kilitlenecek ve özellikle temizlenene kadar bu şekilde kalacak şekilde yapılandırılabilir. GRACTL bit 2, tüm tetikleyiciler için mandal davranışını etkinleştirir. GRACTL bit 2'nin temizlenmesi, tüm tetikleyicileri gerçek zamanlı davranışa döndürür.

PAL $D014 Okuma

PAL bayrakları.

7. bit 6. bit 5. bit 4. bit 3. Bit 2. bit 1. bit bit 0
- - - - Video 3 2. video 1. video 0 video

Bu kayıt, sistem için görüntüleme standardını bildirir. 3'ten 0'a kadar olan Bitler 1'e ayarlandığında (değer $f hex /15 dec ) sistem NTSC'de çalışıyordur. Bitler sıfır olduğunda sistem PAL modunda çalışır.

CONSPK $D01F Yazma

Konsol Hoparlörü

7. bit 6. bit 5. bit 4. bit 3. Bit 2. bit 1. bit bit 0
0 0 0 0 hoparlör - - -

Bit3, Atari 800/400'ün dahili hoparlörünü kontrol eder. Daha sonraki modellerde konsol hoparlörü çıkarılır ve ses, monitör bağlantı noktasına ve RF adaptörüne çıkış için normal POKEY ses sinyalleriyle karıştırılır. Atari OS, klavye tıklaması ve zil/zil sesini çıkarmak için konsol hoparlörünü kullanır.

İşletim Sistemi, Dikey Boş rutin sırasında hoparlör bitini ayarlar. Bit'e tekrar tekrar 0 yazmak, Dikey Boş değeri sıfırlarken 60 Hz'lik bir vızıltı sesi üretecektir. Kullanışlı tonlar, ses tonlarını korumak için CPU zamanı gerektiren bir kanal olsa da, beşinci bir ses kanalını etkin bir şekilde ekleyerek 6502 kodu kullanılarak oluşturulabilir.

CONSOL $D01F Okuma

Konsol Tuşları

7. bit 6. bit 5. bit 4. bit 3. Bit 2. bit 1. bit bit 0
- - - - - Seçenek Seçme Başlangıç

Özel konsol tuşlarının (Başlat, Seç ve Seçenek) her birinin durumunu bildirmek için bir bit atanır. Bit değeri 0 bir tuşa basıldığını ve 1 tuşa basılmadığını gösterir. Anahtar/Bit değerleri:

  • Başlat Anahtarı = Bit değeri $1
  • Anahtar Seç = Bit değeri $2
  • Seçenek Anahtarı = Bit değeri $4

Oyuncu/Füze Grafikleri (sprites) işlemi

Bir donanım " sprite " sistemi CTIA/GTIA tarafından yönetilir. Sprite sistemi için resmi ATARI adı "Oyuncu/Füze Grafikleri"dir, çünkü "oyuncu" ve silahları "füzeler" gibi hızlı hareket eden nesneler için ekran belleğini manipüle etme ihtiyacını azaltmak için tasarlanmıştır. onları vur oyunu.

Bir Oynatıcı esasen 8 piksel genişliğinde ve 256 TV satırı uzunluğunda bir gliftir ve iki renge sahiptir: arka plan (şeffaf) ( 0glifte) ve ön plan ( 1). Bir Füze nesnesi benzerdir, ancak yalnızca 2 piksel genişliğindedir. CTIA/GTIA, Player/Füze nesnelerinin piksellerini önceliklerine göre Playfield pikselleriyle birleştirir. Şeffaf ( 0) oyuncu piksellerinin Oynatma Alanı üzerinde hiçbir etkisi yoktur ve değişiklik olmaksızın bir Oynatma Alanı veya arka plan pikseli görüntüler. Tüm Oyuncu/Füze nesnelerinin normal piksel genişliği tek renkli saattir. Bir kayıt değeri, Player veya Missile piksellerinin genişliğini 1, 2 veya 4 renk saat genişliğine ayarlayabilir.

CTIA / GTIA tarafından Oynatıcı / Füze uygulama benzer TIA 's. Oynatıcı, her tarama satırı için veya kayıttaki kalıp değişene kadar otomatik olarak tekrarlanan belirli bir yatay konumda 8 bitlik bir değer veya kalıptır. Füzeler 2 bit genişliğindedir ve bir model kaydını paylaşır, böylece dört, 2 bit genişliğindeki değer 8 bitlik geniş model kaydını işgal eder, ancak her füzenin bağımsız bir yatay konumu ve boyutu vardır. Oyuncu/Füze nesneleri, ekran kenarlığı da dahil olmak üzere ekranın yüksekliğini uzatır. Yani, Oyuncu/Füze grafiklerinin CTIA/GTIA tarafından varsayılan uygulaması, ekranın aşağısındaki bir şerittir. Görünüşte sınırlı olsa da, bu yöntem Oyuncu/Füze grafiklerinin bir ekranda alternatif renkli dikey kenarlıklar veya ayırıcılar olarak kullanılmasını kolaylaştırır ve öncelik değerleri Oyuncu/Füze piksellerini oyun alanı piksellerinin arkasına koymak için ayarlandığında, bir ekrana ek renkler eklemek için kullanılabilir. Maksimum genişliğe ayarlanmış ve yan yana yerleştirilmiş tüm Oyuncular ve Füzeler, normal genişlikteki Playfield'ın tamamını kapsayabilir.

CTIA/GTIA, Oyuncu/Füze rengini kontrol eden çeşitli seçenekleri destekler. ÖNCEKİ / GPRIOR kayıt değeri, iki renkli ekran seçenekleri-her Füze (0 ila 3) ilişkili Oyuncu nesnenin rengini (3 0) ifade eden veya her Füze yazmacı rengini göstermektedir arasında dört Füze geçiş yapabilir COLPF3 / color3 . Füzeler benzer şekilde renklendirildiklerinde beşinci bir oyuncu olarak kabul edilebilirler, ancak ekranda doğru yerleştirme hala dört Füze Yatay Konum kaydının tümünde değerlerin saklanmasını gerektirir . PRIOR/GPRIOR ayrıca iki Player'ın çakışan piksellerinin üçüncü bir renk oluşturmasına neden olan ve mevcut nesnelerin sayısını azaltma pahasına çok renkli Player nesnelerine izin veren bir özelliği kontrol eder. Son olarak, PRIOR/GPRIOR , Player/Füze piksellerinin Playfield piksellerine karşı ön plan/arka plan katmanlamasını ("öncelik" olarak adlandırılır) değiştirmek için kullanılabilir ve görüntülenen renkleri tahmin edilebilir şekilde etkileyen öncelik çakışmaları oluşturabilir.

Dikey olarak değişen bir görüntü/desen içeren bir hareketli grafiğin geleneksel fikri, Oyuncu/Füze grafik sistemine de yerleştirilmiştir. ANTIC yongası, ekran oluşturulurken yeni piksel modellerini CTIA/GTIA'ya otomatik olarak beslemek için DMA gerçekleştirme özelliği içerir. Bu, her tarama satırı veya diğer her tarama satırı için yapılabilir ve bir veya iki tarama satırı uzunluğunda Oyuncu/Füze pikselleri elde edilir. Bu şekilde, Player/Füze nesnesi, ekranın yüksekliğine göre 8 bit/piksel genişliğinde, bir yazı tipinde son derece uzun bir karakter olarak kabul edilebilir.

Player/Füze nesnelerini yatay olarak hareket ettirmek, CTIA/GTIA'daki bir kaydı değiştirmek kadar basittir (Atari BASIC'te tek bir POKE ifadesi, bir oyuncuyu veya füzeyi yatay olarak hareket ettirir). Bir nesneyi dikey olarak hareket ettirmek, glifin tanımını Player veya Missile bitmap'te yeni bir konuma taşımayı bloke ederek veya tüm Player/Füze bitmap'ini (128 veya 256 bayt) döndürerek elde edilir. 6502, 8080'de bulunan bir blok taşıma talimatından yoksun olmasına rağmen, tüm bitmap'in en kötü durum döndürmesi 6502 makine dilinde hala oldukça hızlıdır. Hareketli grafik tam olarak 128 veya 256 bayt uzunluğunda olduğundan, indeksleme kolayca yerleştirilebilir. 6502'de bayt genişliğinde bir kayıt. Atari BASIC, yüksek hızlı bir bellek hareket komutundan yoksundur ve BASIC PEEK()'leri ve POKE'leri kullanan hareketli bellek, acı verecek kadar yavaştır. Oyuncu/Füze grafiklerini kullanan Atari BASIC programları, yüksek hızlı bellek hareketleri gerçekleştirmek için başka seçeneklere sahiptir. Bir yöntem, bellek hareketlerini gerçekleştirmek için USR() işlevi aracılığıyla kısa bir makine dili rutini çağırmaktır. Başka bir seçenek, Oyuncu/Füze bellek haritası olarak büyük bir dize kullanmak ve makine dili hızında bellek hareketiyle sonuçlanan dize kopyalama komutları gerçekleştirmektir.

Oyuncu/Füze grafiklerinin Atari donanımının diğer grafik özellikleriyle birlikte dikkatli kullanımı, grafik programlamayı, özellikle oyunları önemli ölçüde basitleştirebilir.

GTIA geliştirmeleri

GTIA yongası, CTIA ile geriye dönük uyumludur ve 14 "normal" ANTIC Playfield grafik modu için 3 renk yorumu ekler. CTIA çipinin normal renk yorumu, özel programlama teknikleri kullanılmadıkça, tarama çizgisi başına Harita modlarında maksimum 4 renk veya Metin modlarında 5 renk (artı Oyuncu/Füze grafikleri için 4 renk) ile sınırlıdır. GTIA'daki üç yeni renk yorumu, teorik olarak toplam 56 grafik modu sağlar (14 ANTIC modu, dört olası renk yorumuyla çarpılır). Ancak, yalnızca yüksek çözünürlüklü, 1/2 renkli saat piksellerine dayalı grafik modları (yani, Antik metin modları 2, 3 ve grafik modu F), bu 3 yeni renk yorumunun renk paletlerini tam olarak ifade edebilir. Üç ek renk yorumu, 16 renk değerinden birinde bir piksel oluşturmak için iki renk saatindeki (dört bit) bilgileri kullanır. Bu, mod F görüntüsünü piksel başına 2 renk, yatay olarak 320 piksel, mod satırı başına bir tarama satırından 16 renk ve yatay olarak 80 piksele değiştirir. Ek renk yorumları aşağıdakilere izin verir:

  • GTIA renk yorumlama modu Atari paletindeki 16 olası tondan tek bir tonun 4 - 16 tonu (arka plan rengi, COLBK tarafından belirlenir). Buna Atari BASIC'te Graphics 9 olarak da erişilebilir.
  • GTIA renk yorumlama modu 8 $ -- Bu mod, 128 renkten oluşan tüm Atari paletinden herhangi bir ton ve parlaklıkta yatay çizgi başına 9 renge izin verir. Bu, Playfield pikselleri için tüm Player/Füze ve Playfield renk kayıtları kullanılarak gerçekleştirilir. Bu modda arka plan rengi COLPM0 renk kaydı tarafından sağlanırken, Playfield piksel değeri $8 için COLBAK kullanılır. Bu moda Atari BASIC'te Graphics 10 olarak erişilebilir,
  • GTIA renk yorumlama modu $C -- Tek bir gölge/parlaklık değerinde 15 ton artı arka plan. Arka planın değeri olan COLBK, diğer tüm piksellerin parlaklık seviyesini ayarlar (piksel değeri $1 ile $F arası). Parlaklık değerinin en az anlamlı biti gözlemlenmez, bu nedenle yalnızca standart/CTIA 8 parlaklık değerleri kullanılabilir (0, $2, $4, $6, $8, $A, $C, $E). Ek olarak, arka planın kendisi yalnızca COLBK kaydında ayarlanan renk bileşenini kullanır. Arka planın parlaklık değeri 0'a zorlanır. Bu moda, Atari BASIC'te Grafik 11 olarak erişilebilir.

Bu modlardan Atari BASIC Graphics 9 özellikle dikkat çekicidir. Atari'nin düşük çözünürlüklerine rağmen o zamanlar çok etkileyici olan gri tonlamalı sayısallaştırılmış fotoğrafları görüntülemesini sağlıyor. Ek olarak, diğer grafik modlarında bulunan 8 gölge yerine tek bir tonun 16 tonuna izin vererek, Atari'nin gösterebileceği farklı renklerin miktarını 128'den 256'ya çıkarır. Ne yazık ki, bu özellik yalnızca bu modda kullanım için sınırlıdır, düşük çözünürlüğü nedeniyle yaygın olarak kullanılmamıştır.

Antic 2 ve 3 metin modları, GTIA'nın alternatif renk yorumlarını kullanırken, mod F grafikleriyle aynı renk aralıklarını görüntüleyebilir. Ancak piksel küçültme de uygulanıp 8 piksel genişliğinde, 2 renkli metni 2 piksel genişliğinde, 16 renk bloğuna dönüştürdüğünden, bu modlar gerçek metin için uygun değildir ve bu nedenle bu grafik modları demolar dışında popüler değildir. GTIA renk yorumlama özelliğinin metin modları ile etkin kullanımı, karakterleri piksel olarak ele alan dikkatli bir şekilde oluşturulmuş bir karakter seti gerektirir. Bu yöntem, bunun yerine yalnızca yaklaşık 2K (karakter seti için 1K ve ekran RAM'i ve görüntüleme listesi için 1K) kullanmak üzere normalde 8K RAM'i kaplayacak olan görünür bir GTIA "yüksek çözünürlüklü" grafik modunun görüntülenmesine izin verir.

GTIA ayrıca CTIA'da grafiklerin "yarım renk saatiyle" yanlış hizalanmasına neden olan bir hatayı düzeltti. Düzeltmenin yan etkisi, yüksek çözünürlüklü monokrom modlarda renk bozulmalarına dayanan programların farklı bir renk çifti göstermesiydi.

Atari sahipleri, BASIC komutunu çalıştırarak makinelerinin CTIA veya GTIA ile donatılmış olup olmadığını belirleyebilirler POKE 623,64. Yürütmeden sonra ekran kararırsa, makine yeni GTIA çipi ile donatılmıştır. Mavi kalırsa, makinede bunun yerine bir CTIA yongası vardır.

Hatalar

Doğu Avrupa pazarı için yapılan son Atari XE bilgisayarları Çin'de üretildi. Hepsinde buggy PAL GTIA çipi olmasa da çoğu . Grafik 9 ve üzerindeki luma değerleri hatalıdır ve şeritler halinde görünmektedir. Çipi değiştirmek sorunu çözer. Ayrıca, hatalı GTIA yongalarını bazı harici devrelerle düzeltme girişimleri de oldu .

Ayrıca bakınız

Referanslar

Dış bağlantılar