Bagaimana Anda mendapatkan 1024 warna dalam CGA? Dan benarkah ada 1024?

Diluncurkan pada tahun 2015, terjemahan “Mode grafis baru: CGA dalam 1024 warna” sangat mengesankan saya, tetapi darinya saya masih tidak mengerti bagaimana trik ini bekerja, karena artikel tersebut ditulis oleh seorang profesional di bidang grafik komputer retro, dan menyarankan bahwa pembaca sudah memiliki pengetahuan di bidang ini. Meskipun komputer pertama saya ( "Pencarian" adalah klon Soviet IBM PC / XT) memiliki CGA, saya tidak menemukan monitor dengan input komposit, jadi saya harus mencari di google dan mencari tahu bagaimana video komposit bekerja. Bagi mereka yang juga tertarik dengan teknologi "dalam" 1981, di mana peluang tak berdokumen yang tidak terduga ditemukan pada 2015, saya mengumpulkan materi yang saya temukan.

1. Fitur CGA Asli


Untuk orang awam, CGA biasanya dikaitkan dengan grafik 320x200 dan palet empat warna dengan warna-warna menyeramkan, seperti pada game 1983 Alley Cat , J-bird , Lode Runner dan Tapper :




Tetapi batas 320x200x2bpp dikenakan hanya oleh jumlah memori video yang tersedia pada adaptor (16 Kb) , pada kenyataannya, ini mampu menghasilkan gambar 640x200x4bpp - dengan piksel yang sangat memanjang secara vertikal.Ini digunakan, misalnya, dalam mode teks 80x25 dengan karakter 16-warna dan latar belakang, dan matriks karakter 8x8 piksel. (Dapat dihitung bahwa penyangga layar dalam hal ini hanya membutuhkan 80x25x2 = 4000 byte.) Tetapi jika grafis dihasilkan dalam "resolusi tinggi" 640x200 ini, maka memori video 16 KB hanya cukup untuk gambar hitam putih. Mode grafis semacam itu didukung, misalnya, oleh Windows hingga versi 3.0 inklusif:



Pada output, CGA menghasilkan sinyal digital yang diciptakan antarmuka RGBI secara khusus: dua garis sinkronisasi memberi sinyal awal bingkai dan awal garis pindaian, dan empat garis sinyal video mentransmisikan warna empat-bit dari piksel saat ini. Tetapi monitor yang mampu menerima sinyal digital RGBI pada input jarang terjadi pada tahun 1981; IBM sendiri mulai memproduksi monitor digital semacam itu hanya pada tahun 1983. Untuk pengguna rumahan, CGA memiliki kesimpulan kedua - sinyal video yang sangat komposit yang digunakan para pembuat adegan demo. Ini dapat dihubungkan melalui modulator RF ke input antena dari TV Amerika konvensional, ditambah beberapa televisi memiliki input komposit khusus (untuk menghubungkan, misalnya, VCR) yang memungkinkan Anda untuk memasukkan sinyal video melewati tuner dan menghindari modulasi / demodulasi yang tidak perlu.



Bagian dari pengikat adapter video, yang membentuk sinyal komposit NTSC dari output digital (ini adalah standar Amerika untuk televisi berwarna), dimaksudkan hanya untuk tahap transisi sampai semua pengguna PC mendapatkan monitor digital. Adaptor video berikutnya dari IBM - EGA (1984) - hanya mendukung output digital (sudah enam-bit), menggunakan sepasang kontak yang sebelumnya tidak digunakan dalam antarmuka RGBI. Selain itu, mode "resolusi tinggi" tidak direkomendasikan untuk digunakan dengan output video komposit, karena 640 piksel dalam garis pemindaian melebihi kemampuan NTSC. Bagian selanjutnya menjelaskan alasannya; dan Wikipedia mengilustrasikan bagaimana teks dikaburkan dalam mode CGA 80-kolom pada monitor input komposit:




2. Fitur TV


Televisi hitam-putih diatur dengan cara yang sangat mudah: berkas elektron memotong garis layar demi baris, dan level sinyal video langsung mengendalikan kekuatan sinar. Selama flyback antara garis dan antara bingkai, sinar dimatikan, dan sinyal video mentransmisikan pulsa sinkronisasi. Karena sinyal sepenuhnya analog, resolusi horizontalnya tidak ditentukan: kecerahan dapat berubah dengan lancar di seluruh saluran. Di sisi lain, resolusi vertikal sulit diatur oleh frekuensi pemindaian horizontal (243 baris untuk NTSC).

Ilustrasi, yang digambar dengan cermat dalam MS Paint, menunjukkan bagaimana sinyal video mencari bingkai yang terdiri dari dua garis vertikal: lebar gelap dan cerah sempit. Di bagian atas, sinyal untuk satu garis secara skematis ditunjukkan, di bagian bawah, sinyal untuk urutan garis. Pulsa sinkronisasi yang "lebih hitam dari hitam" dikirim sebelum setiap saluran . Ketika televisi berwarna dibuat, penting agar televisi hitam putih yang ada menerima video berwarna yang dapat diterima. Orang Amerika datang dengan trik berikut: informasi warna ditransmisikan oleh sinyal harmonik subcarrier



ditambahkan ke sinyal luminance. Kemudian TV hitam-putih yang tidak tahu cara mengisolasi dan menganalisis harmonik subcarrier akan menyorot setiap piksel dengan kecerahan yang sesuai dengan nilai sinyal rata-rata selama waktu transmisi piksel. Jika frekuensi subcarrier cukup besar, maka sinyal tambahan tidak akan memengaruhi nilai rata-rata, mis. pada kecerahan yang ditampilkan. Sekarang kami setuju bahwa pergeseran fase subcarrier sesuai dengan rona warna, dan amplitudonya sesuai dengan saturasi; pembagian warna menjadi kecerahan, rona dan saturasi sesuai dengan model warna YIQ .

Ilustrasi kedua secara skematis menunjukkan sinyal video untuk satu garis bingkai, yang terdiri dari garis-garis vertikal berwarna. Semburan warna tambahan ditransmisikan antara jam dan awal baris., yang mengatur penerima ke fase dari mana pergeseran subcarrier akan diukur. Sekarang bagian datar dari sinyal (yaitu, dengan nol amplitudo subcarrier) akan sesuai dengan batang abu-abu (nol saturasi); area di mana subcarrier bersesuaian dalam fase burst warna ke pita kuning dengan dua nilai saturasi berbeda tergantung pada amplitudo subcarrier; plot di mana subcarrier berada dalam antiphase relatif terhadap semburan warna - bilah biru. Karena level sinyal rata-rata sama di semua area, penerima televisi hitam putih menampilkan semua pita dengan warna abu-abu yang sama. NTSC mensyaratkan bahwa sinyal tambahan bersifat sinusoidal, tetapi ini tidak begitu penting: gelombang persegi ditunjukkan dalam ilustrasi ( berliku-liku


) terdiri dari harmonisa dengan frekuensi dan fase yang diinginkan, serta aditif frekuensi tinggi yang diabaikan oleh penerima televisi. Amplitudo harmonik ini lebih besar dari amplitudo berliku di4/πkali, tetapi karena TV menggunakan amplitudo subcarrier tidak dalam nilai absolut, tetapi dalam kaitannya dengan amplitudo yang diekstraksi dari semburan warna, tampilan warna tidak terpengaruh oleh penggantian aditif sinusoidal dengan aditif empat persegi panjang. CGA dan perangkat digital primitif lainnya menghasilkan gelombang persegi persis.

Untuk menyederhanakan pemisahan sinyal utama (kecerahan) dan tambahan (warna), NTSC menstandarkan frekuensi subcarrier, 227,5 kali lebih tinggi daripada frekuensi horizontal - yaitu. untuk setiap baris, bersama dengan jarak antar baris, ada 227,5 periode subcarrier. Dengan demikian, TV berwarna Amerika memiliki resolusi horizontal tertentu: kecerahan masih dapat berubah dengan lancar di sepanjang garis, tetapi frekuensi rona warna dibatasi oleh frekuensi subcarrier. Jika sebuah televisi menerima sinyal video dengan resolusi horizontal 640 piksel, maka sekitar sepertiga dari periode subcarrier sesuai dengan masing-masing piksel, dan filter perangkat keras primitif tidak punya waktu untuk mengidentifikasi dengan benar perubahan fasa dan amplitudo subcarrier dari sinyal untuk setiap piksel. Ini mengarah ke hasil yang tidak terduga - dari kabur,seperti yang ditunjukkan pada contoh di atas, sebelum membuatWarna "Artefak" , tidak dapat dicapai dengan adaptor video biasa. (Saya benar-benar tidak suka nama "warna palsu" yang digunakanSLY_Gdalam terjemahan artikel sekitar 1024 warna; Arti utama kata artefak bahasa Inggris - "buatan manusia, dibuat secara artifisial" - membedakan warna-warna ini dengan "alami" untuk CGA, dan tidak ada hubungannya dengan parasitisme.)

Tepat dengan resolusi horizontal, bug perangkat keras dalam CGA terhubung: dalam mode 640x200 (mis. Mode. h. dalam teks 80 kolom) gambar pada monitor komposit ternyata hitam dan putih. Solusi untuk bug ini sudah diketahui: Anda perlu mengatur bingkai cokelat di sekitar gambar. Faktanya adalah bahwa pengikat yang membentuk sinyal jam menentukan durasinya dalam siklus jam adaptor video; dalam mode 640x200, jam ini setengah panjangnya dalam mode 320x200, sehingga jam di antara garis-garis bingkai juga dua kali lebih pendek dari yang dibutuhkan oleh NTSC. Akibatnya, semburan warna tidak punya waktu untuk dikirim. Tetapi jika ada bingkai coklat di sekitar gambar (coklat memiliki pergeseran fase hampir nol, kecerahan rendah, dan saturasi sesuai dengan perkiraan amplitudo untuk semburan warna), maka monitor mengambil sisi kiri bingkai sebagai warna pecah, tidak menariknya di layar, dan diatur dengan benar ke fase subcarrier warna.



3. perangkat sinyal komposit CGA


Meskipun sinyal video digital yang dihasilkan oleh CGA dapat memiliki resolusi horizontal hingga 640 piksel (yaitu 640 perubahan tingkat sinyal digital dalam satu baris), sinyal video komposit dapat dianggap memiliki resolusi 1280 "subpixels" terlepas dari mode video yang digunakan, yaitu. untuk setiap piksel dalam mode 640x200 ada dua subpiksel, dalam mode 320x200 - empat. Output level sinyal (dalam volt) oleh adaptor video untuk subpiksel saat ini dihitung dengan rumusU=0.41+I0.3+C0.75, di mana bit I (intensitas) diambil langsung dari warna piksel saat ini, dan sinyal C (chroma) dipilih oleh multiplexer tergantung pada tiga bit warna lainnya ( R, G, B ):
RGBCWarna
00000000000…hitam
00100001111…biru (~ 180 °)
01011100001…hijau (~ 45 °)
01111000011…pirus (~ 90 °)
10000111100…merah (~ 270 °)
10100011110…magenta (~ 225 °)
11011110000…kuning (~ 0 °)
11111111111…putih
Warna-warna kromatik berhubungan dengan sinyal kroma dengan periode delapan subpiksel dan dengan pergeseran fasa mendekati kelipatan 45 °, yaitu. ke nomor integer subpiksel. Berkat skema keterlambatan cerdik dalam CGA, pergeseran fase warna sedikit (dalam ± 10 °) berbeda dari kelipatan 45 ° agar lebih dekat dengan warna NTSC standar .

Dengan demikian, dari 227,5 periode subcarrier dalam satu garis, 160 berada dalam gambar output, dan sisanya berada dalam interval antara garis (jam, warna meledak, dan bingkai di sekitar gambar). Penting bahwa jumlah non-integer periode subcarrier beralih dari burst warna ke piksel pertama garis: piksel pertama mulai ditransmisikan pada 45 °, jadi jika garis dimulai dengan empat piksel kuning, sinyal chroma akan mengambil nilai selama transmisi delapan sub-piksel yang sesuai 11100001.

Kecerahan piksel (luma), mis. nilai rata-rata level sinyal untuk periode subcarrier, dapatkanL=0.72Cavg+0.28Idimana Cavg=RGB+RGB2: 0,5 untuk warna kromatik, 0 untuk hitam dan 1 untuk putih. Ini berarti bahwa pada monitor komposit hitam dan putih, model CGA (1981) pertama hanya dapat menampilkan enam warna abu-abu. Pada model CGA selanjutnya (sejak 1983), penambahan non-periodik pada subcarrier mulai bergantung pada keempat bit warna, sehingga kecerahannya berhubungan dengan formula yang lebih kompleks.L=0.29Cavg+0.1R+0.22G+0.07B+0.32I, yang memungkinkan kami untuk menampilkan warna abu-abu kami sendiri pada monitor hitam dan putih untuk masing-masing dari 16 nilai warna. Sebagai hasil dari penyempurnaan ini, warna yang berbeda dalam kecerahan dan lebih dekat dengan yang ditampilkan pada digital juga mulai ditampilkan pada monitor komposit warna: Bug perangkat keras dan kekurangan pada harness yang membentuk sinyal komposit dari output digital menunjukkan bahwa pengembang CGA tidak terlalu khawatir tentang penggunaannya. dengan monitor komposit, dan bahkan lebih tidak khawatir tentang bagaimana mode "resolusi tinggi" akan ditampilkan pada monitor komposit. Namun, kombinasi yang tidak didukung inilah yang memungkinkan para master demoscene memeras yang tak terbayangkan dari CGA!






4. Fitur CGA Tidak Terduga ...


4a) ... dalam mode grafis


Seperti dijelaskan di atas, bagian dari garis, diarsir dalam satu warna, dalam sinyal video komposit berubah menjadi berliku-liku dengan periode delapan subpiksel. Kebalikannya juga benar: setiap sinyal komposit yang berulang dengan periode delapan subpiksel akan ditampilkan sebagai bagian warna tunggal dari garis, karena subcarrier harmonik yang diekstraksi darinya akan memiliki pergeseran fasa konstan dan amplitudo konstan. Apa tepatnya pergeseran fase yang akan digunakan lebih sulit untuk diprediksi; Artikel tentang 1024 warna menunjukkan hasil tanpa penjelasan apa pun: Kolom Nybble menunjukkan urutan berulang empat piksel dalam mode 640x200x1bpp, mis. dari delapan subpixels. Dua dari sekuens ini ( dan



01011010) sesuai dengan berkelok-kelok dengan periode empat subpixels: tidak ada subcarrier harmonis dalam gelombang seperti itu sama sekali, sehingga warna yang dihasilkan adalah abu-abu. Empat sekuens lagi ( 0011, 0110, 1001, 1100) sesuai dengan gelombang subcarrier murni - dengan pergeseran 135 °, 225 °, 45 °, dan 315 °, masing-masing. Dua gelombang ini menetapkan warna ungu dan hijau standar, dua sisanya - biru dan oranye, tidak dapat dicapai dengan CGA biasa. Pengisian sinyal sebesar 75% (urutan0111, 1011, 1101, 1110) sesuai dengan pergeseran subcarrier fase setengah piksel, mis. pada satu subpiksel; tetapi hasilnya tidak persis cocok dengan fase warna standar - karena skema yang sangat keterlambatan yang "menarik" warna CGA standar ke warna NTSC standar. Dengan demikian, nuansa dengan sedikit perubahan diperoleh: pirus biru, pirus kehijauan, coklat kemerahan, merah ungu. Pengisian 75% meningkatkan level sinyal rata-rata, mis. kecerahan warna; tetapi tidak mempengaruhi saturasi, karena "tepi" yang lebih luas dari berliku-liku dibuat oleh harmonik frekuensi tinggi yang diabaikan oleh penerima televisi. Akhirnya, sinyal dengan isian 25% sesuai dengan rona yang sama dengan 75%, tetapi kecerahannya lebih sedikit.

Bahkan lebih sulit untuk memprediksi warna apa yang akan muncul ketika urutan diulang bukan dari piksel hitam dan putih, tetapi dari yang berwarna. Dalam mode 640x200x1bpp, warna latar selalu hitam, tetapi warna kedua dapat dipilih dari salah satu dari 16 standar. Dalam mode 320x200x2bpp, sebaliknya, warna latar belakang dapat dipilih dari salah satu dari 16 standar, dan tiga warna lainnya ditentukan oleh palet yang dipilih dari empat opsi. Artikel tentang 1024 warna menunjukkan dua kombinasi seperti itu, sekali lagi tanpa penjelasan. Saya meminta komentar langsung untuk ditugaskan kembali , bertanggung jawab untuk bagian teknis dari output video di 8088 MPH, serta menerapkan emulasi CGA di DOSBox; dan dia menasihati saya cgaart- Emulator CGA otonom yang ditulis olehnya, mampu bekerja dalam mode batch. Menambahkan Python mengikat sederhana ke cgaart, saya menghasilkan tabel dari semua set 16-warna yang memungkinkan "warna artefak":

Meja penuh

Kode untuk setiap set terdiri dari jumlah mode grafis ( 1Auntuk 640x200x1bpp, 0Auntuk 320x200x2bpp), jumlah palet ( 0–3), dan jumlah warna yang dapat dipilih secara bebas ( 0–F). Setiap baris tabel terdiri dari 16 kotak yang sesuai dengan urutan piksel berulang; setiap kotak terdiri dari lima band - output digital, level sinyal komposit dan output pada monitor komposit dengan model CGA pertama, output pada monitor komposit dan level sinyal komposit dengan model CGA yang dikoreksi. Level sinyal komposit ditampilkan sebagai rata-rata untuk dua subpiksel - cgaart hanya menghitung dengan ketepatan seperti itu. Mari kita perhatikan secara lebih rinci garis yang sesuai dengan dua set yang ditunjukkan dalam artikel tentang 1024 warna - ini adalah set 1A0Cdan0A01; tetapi sebelum itu, pertimbangkan set yang lebih sederhana 1A04:



Satu set 1A04- piksel merah pada latar belakang hitam - sesuai dengan sinyal dengan isian 50% dan pergeseran 270 °, yang dimodulasi oleh urutan empat piksel secara berkala. Level sinyal yang tinggi berada dalam urutan tiga piksel pertama, sehingga bit keempat tidak mempengaruhi warna yang dihasilkan: misalnya, 000xdan 001xberubah menjadi hitam murni, dan 111x- merah murni. Urutan piksel pertama yang dipusatkan ( 010xdan 011x) sesuai dengan pergeseran fase oleh satu subpiksel, yaitu -45 ° sampai magenta; Pixel kedua yang dapat disetel ulang ( 100xdan 101x) - bergeser dari 45 ° ke oranye.

Set1A0C- piksel merah terang pada latar belakang hitam - sesuai dengan sinyal yang sama, tetapi dengan tambahan non-periodik, sehingga level rendahnya sekarang lebih tinggi daripada hitam. Sebagai hasil dari urutan ini 0001, 0010, 0011dikonversi ke warna yang sama (hijau, biru kehijauan, biru dan biryuzovato biru) seperti dalam kasus piksel putih, tapi sekarang dengan kecerahan yang lebih rendah banyak, karena sumber sinyal tingkat rendah memainkan peran tingkat tinggi untuk dihasilkan. Urutan yang tersisa mempertahankan level tinggi dari sinyal asli, dan nuansa warna yang sesuai diperoleh dekat dengan set 1A04, meskipun kecerahan sekarang lebih tinggi karena tingkat rata-rata yang lebih tinggi.

Akhirnya diatur0A01- latar belakang biru, palet hijau-merah-coklat, empat subpiksel di setiap piksel, dua piksel dalam urutan berulang - berisi empat warna standar (urutan 00, 11, 22, 33tidak menyebabkan artefak) dan campuran berpasangannya: jika Anda menambahkan dua meander, maka pergeseran subcarrier harmonik pada sinyal yang dihasilkan akan berada di tengah-tengah antara pergeseran ketentuan. Namun demikian, kecerahan dan saturasi hasil tergantung pada urutan persyaratan: misalnya, merah memiliki tingkat tinggi subpiksel 1-4, hijau memiliki 6-1, sehingga urutan 12sepenuhnya memotong tingkat tinggi istilah merah, dan setengah hijau ; sedangkan urutannya21sepenuhnya mempertahankan tingkat tinggi istilah merah, dan setengah hijau. Rona dalam kedua kasus berubah menjadi kuning, tetapi untuk urutan 12- jenuh dan sangat gelap, sedangkan untuk 21- tidak jenuh dan sangat terang.

Jadi, ada 80 set 16 warna yang tersedia secara bersamaan. Apa resolusi aktualnya? Warna hanya dapat diubah di antara blok 8 subpiksel, mis. 160 kali per baris; tetapi kecerahan diatur untuk setiap piksel secara independen. Artikel tentang 1024 warna memperingatkan bahwa mode-mode ini tidak dapat disebut "16-warna 160x200," karena "resolusi horizontal adalah pertanyaan terbuka, itu tergantung pada pengambilan sampel dan penyaringan sinyal, dan bervariasi tergantung pada apa bentuk sinyal warna yang Anda gunakan" ( transferSLY_G) Namun demikian, mudah untuk memastikan bahwa bahkan dengan nada warna yang konstan, monitor komposit tidak menampilkan fluktuasi kecerahan dalam 8 blok sub-pixel: perhatikan, misalnya, ke set 0A0Adi tabel penuh, dan di dalamnya untuk urutan 01dan 10sesuai dengan piksel hijau ke cahaya latar belakang hijau. Baik kecerahan dan rona warna dianalisis blok demi blok dengan monitor komposit, jadi alih-alih piksel hijau bolak-balik dari dua tingkat kecerahan, piksel monoton dengan tingkat kecerahan rata-rata diperoleh. Untuk urutan, 10hasilnya kurang jenuh daripada persyaratan, karena urutan ini memotong level rendah dari istilah hijau gelap. Oleh karena itu, menurut pendapat saya, ketika menggunakan warna artefak, ada alasan untuk mempertimbangkan 160x200 sebagai resolusi aktual.

4a) ... dalam mode teks


Seperti yang disebutkan di awal, CGA mendukung mode teks 16-warna 80x25 dengan matriks karakter 8x8 piksel, dan hanya seperempat memori video yang digunakan dalam mode ini. Pengrajin menemukan cara tidak berdokumenalihkan output ke baris teks baru setiap dua baris piksel, mis. output dari setiap karakter hanya dua baris piksel teratas. Dalam mode 100-teks "setengah teks" yang dihasilkan, semua 16 KB memori video digunakan, dan gambar 16-warna dengan resolusi 640x200 piksel. Tetapi dibandingkan dengan mode grafis, dalam semi-teks ada batasan yang cukup ketat: pertama, dalam setiap keakraban 8x2 piksel, hanya dua warna berbeda yang dapat digunakan; kedua, urutan piksel "utama" dan "latar belakang" di masing-masing keakraban harus sesuai dengan dua baris atas dari salah satu dari 256 karakter, yang ditampilkan dalam ROM CGA. Bahkan dengan keterbatasan ini, menggabungkan ketidaknyamanan pixel art dan teks pseudo-grafis, para penyihir berhasil membuat gambar 16-warna yang luar biasa:



(Dalam artikel sekitar 1024 warna, hanya seperempat dari gambar ini ditampilkan, tetapi versi lengkapnya diterbitkan secara terpisah - langsung dalam bentuk dump memori video.)

Tanpa peretasan 100 baris - yaitu.e. jika matriks masing-masing karakter diterjemahkan sepenuhnya, bagian tengah gambar akan terlihat seperti ini:



Di sebelah kanan adalah tabel karakter yang dijahit dalam ROM, di mana dua baris atas setiap karakter, tersedia untuk digunakan dalam mode semi-teks, disorot dengan warna kuning.

Untuk pertama kalinya, Macrocom memutuskan untuk menggabungkan hack 100-line dan teks pseudo-grafis, yang merilis game "ICON: The Quest for the Ring" pada tahun 1984 dengan resolusi 320x200x4bpp yang tampaknya luar biasa untuk CGA. Namun, bahkan screensaver statisMacrocom ditarik jauh lebih buruk daripada VileR; dan selama permainan grafis digunakan lebih primitif.




(Paradoksnya adalah bahwa meskipun ini adalah mode teks, menampilkan teks di dalamnya sangat nontrivial: Anda harus mengumpulkan setiap karakter dari “memo” firmware dalam ROM.)

Batasan signifikan lain dari mode semi-teks adalah bahwa gambar pada monitor komposit dikaburkan menjadi penampilan yang agak jelek. . Misalnya, gambar VileR akan terlihat seperti ini:



Tapi Anda bisa mendapat manfaat dari kabur ini - untuk menghasilkan sejumlah besar warna artefak dalam mode semi-teks! Seperti dijelaskan di bagian sebelumnya, urutan piksel yang berulang dengan periode 8 subpiksel berubah menjadi warna artefak padat setengah lebar karakter dalam mode 80-kolom. Ini berarti bahwa dalam mode semi-teks - ketika warna utama dan latar belakang untuk setiap karakter dapat dipilih secara sewenang-wenang dari 16 warna standar - untuk membuat warna artefak Anda memerlukan karakter yang memiliki

  1. dua baris piksel teratas adalah sama;
  2. bagian kiri dan kanan dari kedua garis ini adalah sama.

ROM CGA menemukan karakter yang cocok untuk dua urutan periodik - 1100dan 0110. Urutan pertama memungkinkan Anda untuk mendapatkan warna artefak yang sesuai dengan dua piksel berulang dalam mode 320x200, yaitu. setiap warna dari baris 0Axxdi tabel penuh; yang kedua adalah warna dari kotak No. 6 dan No. 9 dalam garis 1A0x, ketika urutan 0110ditampilkan dengan simbol berwarna pada latar belakang hitam atau simbol hitam pada latar belakang berwarna, masing-masing. Dalam hal ini, resolusi sebenarnya adalah 80x100: area minimum yang dapat Anda atur warnanya sesuai dengan keakraban "terpangkas".

Jadi, berapa banyak warna artefak yang dapat ditampilkan dalam mode semi-teks secara bersamaan? Semua kombinasi dari 16 warna primer, 16 warna latar belakang, dan dua karakter yang cocok tersedia, jadi penulis trik ini berseru: “512 warna! Tentu saja, sebenarnya ada lebih sedikit dari mereka, ada duplikat dan nuansa yang sedikit berbeda. " Ketika warna utama dan latar belakang bertepatan, jelas bahwa dengan simbol apa pun hasilnya akan sama, oleh karena itu, pada output digital kami memiliki 496 urutan periodik berbeda dari delapan piksel. Mengubah output ini menjadi komposit mengarah pada fakta bahwa beberapa sekuens berubah menjadi sinyal video yang sama; misalnya, 0110abu-abu hitam, abu-abu ungu, dan hijau muda ungu - berubah menjadi warna ungu gelap yang sama:



Dibandingkan dengan tabel penuh, di sini kuadrat digandakan untuk kejelasan, yang memungkinkan kita untuk menandatangani nilai setiap strip di dalam kuadrat langsung pada diagram. Dapat dilihat bahwa urutan 0110sepenuhnya memotong tingkat tinggi latar belakang magenta, sehingga latar belakang menjadi tidak bisa dibedakan dari hitam. Warna hijau berbeda dalam fase dari magenta dengan 180 °, sehingga urutan ini memotong tingkat tinggi karakter hijau dengan cara yang sama, dan karakter hijau muda menjadi tidak bisa dibedakan dari yang abu-abu. Di bagan warnaDalam artikel tentang 1024 warna, Anda dapat melihat bahwa garis No. 0 dan No. 5, yang sesuai dengan latar belakang hitam dan ungu, hampir tidak dapat dibedakan; kolom 8 dan 10, sesuai dengan simbol abu-abu dan hijau muda, juga hampir tidak bisa dibedakan. Menurut perhitungan cgaart, corak lilac gelap yang sesuai dengan tiga kombinasi parameter yang disebutkan bersamaan; dengan model CGA yang dikoreksi, seperti yang dapat dilihat di bagian bawah kotak pada diagram, ketiga corak ini berbeda.

Selain ketiga kombinasi ini, model CGA pertama sama-sama menampilkan urutan 0110berwarna hitam magenta terang dan abu-abu; abu-abu di magenta terang memberikan abu-abu standar, dan hitam di magenta memberikan hitam standar. Akhirnya, seperti yang ditunjukkan pada sisi kanan diagram, urutannya1100abu-abu pada merah terang memberikan warna abu-abu yang hampir sama standarnya karena urutannya 0110hijau muda dengan ungu muda. Secara total, dengan model CGA pertama, tersedia 490 warna yang berbeda, tetapi dengan yang dikoreksi - semuanya 496.

Puncak dari sebuah artikel sekitar 1024 warna adalah cara yang diciptakan untuk ditampilkan dalam mode semi-teks hanya satu baris atas piksel untuk setiap karakter, tetapi ulangi baris ini dua kali. Sulit untuk memanggil " mode grafis baru", Karena itu memerlukan perubahan konstan - di awal setiap pemindaian - perubahan pengaturan CGA, yang menempati prosesor 8088 sepenuhnya, dan tidak meninggalkan peluang untuk melakukan hal lain secara paralel dengan menampilkan gambar 1024 warna, misalnya, untuk menyiapkan animasi. Namun berkat trik ini, menjadi mungkin untuk menggunakan urutan 0010dan 0101selain dua yang ditunjukkan di atas. Dengan menggunakan empat simbol yang berbeda, dimungkinkan untuk mendapatkan 976 urutan periodik berbeda dari delapan piksel pada output digital. Dan berapa banyak warna berbeda yang akan diperoleh setelah konversi ke sinyal video komposit? Saya menghitung 950 dengan CGA pertama, dan 973 dengan yang sudah diperbaiki.

Sebagai kesimpulan, saya memberikan tabel semua warna yang dapat diperoleh dalam mode semi-teks. VileR memiliki tabel serupa, tetapi dikelompokkan berdasarkan jenis monitor, dan bukan berdasarkan urutan output piksel, seperti milik saya. Mejanya nyaman bagi seorang seniman yang bekerja dengan perangkat tertentu; milikku adalah untuk ahli teori yang ingin memahami bagaimana warna ini atau itu muncul di monitor.

Meja penuh

All Articles