TMS9918

TMS9918은 1979년에 출시된 텍사스 인스트루먼트가 제조한 비디오 디스플레이 컨트롤러(VDC)이다. TI의 매뉴얼에서는 이를 "비디오 디스플레이 프로세서"(VDP)라고 부른다. TMS9918과 그 변형은 카시오 PV-2000, Coleco Adam, 콜레코비전, 크리에이티비전, 하니멕스 펜슬 II, MSX, Memotech MTX, 나부 퍼스널 컴퓨터, PECOS, SG-1000, SC-3000, SV-318, SV-328, Sord M5, TI-99/4, Tatung Einstein, 그리고 Tomy Tutor에 사용되었다.

TMS9918은 그 시대에 진보된 디자인이었다. 기본 256x192 픽셀 레이아웃을 기반으로 한 4가지 그래픽 모드를 가지고 있었는데, 40x24 문자 디스플레이, 256x192 픽셀 디스플레이 또는 더 적은 메모리를 사용하는 64x48 픽셀 디스플레이로 사용될 수 있었다. 15가지 색상과 투명색을 포함하는 고정 색상 팔레트를 가졌다. 또한 0부터 31까지 번호가 매겨진 32개의 단색 8x8 또는 16x16 픽셀 스프라이트를 지원했으며, 번호가 낮은 스프라이트가 번호가 높은 스프라이트 위에 나타났다. 이를 통해 레이어링 및 원근 효과가 가능했다. 또한 비디오 입력 및 동기화 핀을 특징으로 하여 다른 소스의 비디오가 칩에 의해 생성된 그래픽 아래에 나타날 수 있었다. 이것은 여러 9918의 출력을 계층화하거나, 9918을 다른 비디오 소스에 제목과 오버레이를 위한 시스템으로 사용하는 데 사용될 수 있었다.

이 고급 기능 세트를 지원하기 위해 9918은 메모리에 빠르게 액세스해야 했다. 이를 위해 컴퓨터의 메인 메모리와 분리된 전용 16 KB의 RAM 풀이 주어졌다. TI는 이를 VRAM이라고 불렀다. 이는 CPU가 전용 8비트 데이터 버스를 통해서만 비디오 디스플레이를 업데이트할 수 있었으며, VDP가 버스의 데이터를 전용 RAM으로 이동시켰다는 것을 의미한다. 이는 CPU와 9918이 통신할 수 있는 속도를 제한했다. 또한 비디오 칩을 사용하여 메모리 리프레시하는 일반적인 해결책을 사용할 수 없었으며, 별도의 하드웨어로 구현해야 했다는 것을 의미했다. 이러한 점들은 단일 풀에서 메모리를 공유하는 시스템에 비해 사소한 복잡성을 나타냈지만, 그 결과 훨씬 더 다채로운 디스플레이를 제공했고 아케이드 게임 수준의 디스플레이와 어느 정도 동등한 수준을 제공했다.

야마하 V9938은 TMS9918의 향상된 버전이다.

설명
일반 정보
섬네일|VDP TMS9918A
섬네일|TMS9918A 핀 배치도
TMS9918은 40핀 이중 직렬 패키지(DIP)로 포장되었다. 전원은 핀 33, V에 +5V로, 핀 12, V에 접지로 제공되었다. NTSC 컬러버스트 주파수의 세 배인 10.7386 MHz로 작동하는 수정 발진기는 핀 40(XT1)과 핀 39(XT2) 사이에 연결되었다. 비디오 출력은 핀 36(COMVID)에 있었고, 입력(사용된 경우)은 핀 35(EXTV)에 있었으며, 해당 커넥터의 차폐 연결은 접지에 연결되었다.

풀컬러 작동을 지원하는 데 필요한 메모리 성능을 달성하기 위해, 시스템은 VRAM이라고 부르는 DRAM의 전용 영역을 사용했다. 이 메모리를 작동시키기 위해, 시스템은 핀 3(AD7)부터 10(AD0)까지 8비트 주소 버스를 형성하는 별도의 핀 세트와 핀 25(RD7)부터 32(RD0)까지 8비트 데이터 버스를 포함했으며, 핀 11의 읽기/쓰기 제어와 핀 1과 2의 RAS 및 CAS에 의해 지원되었다.

호스트 컴퓨터와의 통신은 핀 17부터 24까지의 D7에서 D0까지의 별도의 8비트 데이터 버스를 통해 이루어졌다. 핀 13(MODE)은 해당 버스의 데이터가 주소인지 데이터인지 제어한다. TMS9918에 쓰기 위해, CPU는 먼저 모드를 설정하고 내부 주소 레지스터에 데이터를 쓴 다음, 버스에 데이터를 쓰고 모드를 변경하여 해당 주소에 데이터가 저장되도록 한다. 데이터 바이트가 읽힌 후, TMS9918은 주소 레지스터의 포인터를 증가시켜 일련의 바이트를 연속적으로 쓸 수 있게 한다.

TMS9918은 그래픽을 논리적으로 여러 레이어로 배열하는데, 맨 위에 32개의 스프라이트 레이어, 그래픽 또는 텍스트 레이어, 화면을 단색으로 채우는 "배경" 레이어, 그리고 마지막으로 외부 비디오 레이어가 있다. 배경 평면은 다른 평면보다 약간 커서 화면을 완전히 채운다. 시스템은 투명색인 색상 0과 함께 15가지 색상 팔레트를 사용한다. 화면의 어떤 픽셀 위치에서든, 시스템은 특정 객체가 해당 위치에 있는지, 그리고 투명으로 설정되어 있는지 여부를 확인한다. 만약 투명하다면 다음 객체를 보고, 이런 식으로 외부 비디오 레이어(대부분 사용되지 않음)에 도달할 때까지 계속한다. 다음 설명들은 이와 동일한 방식으로 정렬된다.

스프라이트
9918 시리즈의 주요 특징은 강력한 스프라이트 지원이었다. VRAM에 8x8 픽셀 스프라이트 패턴을 저장하기 위해 8바이트를 사용했으며, 각 8개 픽셀 라인에 1바이트씩 사용했다. 또한 16x16 픽셀 스프라이트 모드도 있었는데, 한 줄당 2바이트, 16줄로 구성되었다. 또한, 어느 크기의 스프라이트든 두 배로 확대하여 화면에 더 크게 표시할 수 있었다. 8 또는 32바이트 길이의 스프라이트 패턴 데이터는 스프라이트 생성기 테이블(SGT)이라는 메모리 블록에 저장되었다.

패턴을 담는 8 또는 32바이트 길이의 항목 외에, 데이터를 어떻게 해석하고 표시할지를 정의하는 별도의 스프라이트 속성 테이블(SAT)이 있었다. 여기에는 스프라이트의 가로 및 세로 위치를 나타내는 8비트 값, SGT에 있는 해당 스프라이트 데이터의 시작점을 가리키는 포인터(이것을 이름이라고 불렀다), 그리고 하위 4비트에 색상 코드가 포함되어, 총 스프라이트당 4바이트, SAT에 총 128바이트를 차지했다.

화면의 특정 픽셀에 어떤 색상을 표시할지 결정하기 위해, 시스템은 해당 위치에서 어떤 스프라이트가 보이는지 확인한 다음, 패턴을 따라 검색하여 해당 위치에 1을 포함하는 첫 번째 스프라이트를 찾은 다음, 해당 픽셀에 SAT에서 찾은 색상을 그렸다. 이는 스프라이트가 순서대로 표시되도록 하여, 번호가 낮은 스프라이트가 번호가 높은 스프라이트 위에 나타나게 했다. 예를 들어, 스프라이트 0은 항상 맨 위에 나타났다. 해당 위치에 1이 있는 스프라이트가 화면에 없으면, 해당 픽셀은 투명했으며, 대신 배경 그래픽이 표시되었다.

스프라이트가 순서대로 그려지기 때문에, 원하는 레이어링 효과를 내기 위해 가끔 그 순서를 변경해야 할 필요가 있다. 이것이 SAT의 "이름" 필드 항목의 목적이다. 예를 들어, 스프라이트 10이 5보다 앞에 나타나도록 디스플레이를 변경하고 싶다면, 두 스프라이트의 이름 필드 항목 값을 교환하여 패턴 데이터를 이동할 필요가 없도록 할 수 있다. 스프라이트 순서를 신중하게 배열함으로써, 시스템은 의사 3D 및 시차 스크롤링 효과를 쉽게 만들어낼 수 있다.

성능 문제로 인해 한 스캔 라인에는 최대 4개의 스프라이트만 표시될 수 있다. 주어진 라인에 더 많은 스프라이트가 지정되면 단순히 표시되지 않는다. VDP에는 드롭되어야 했던 첫 번째 스프라이트의 번호를 보고하는 상태 레지스터가 있다. 이 제한에 도달하지 않도록 시스템을 설계하는 것은 프로그래머에게 달려 있다. 한 라인에 더 많은 스프라이트를 에뮬레이트하는 한 가지 방법은 매 프레임마다 이름 값을 교환하여 우선순위를 변경하는 것으로, 한 프레임에 8개 세트가 표시되고 다음 프레임에 다른 세트가 표시되도록 한다. 이렇게 하면 최대 8개의 스프라이트가 가능하지만, 눈에 띄는 깜빡임이 발생한다.

스프라이트 충돌 플래그는 두 스프라이트의 비제로 패턴 비트가 일치할 때 설정되며, 어느 스프라이트가 투명 색상을 가졌는지 여부와는 상관없다. VDP는 어떤 스프라이트가 충돌했는지 나타내지 않고, 단지 최소 두 개가 충돌했다는 것만 표시한다. 이는 일반적으로 소프트웨어 내에서 더 고급 충돌 감지 루틴을 트리거하는 데 사용되며, 이 루틴은 충돌의 정확한 위치를 결정하고 이에 따라 조치할 수 있다.

그래픽 모드
9918의 그래픽은 256 폭, 192 높이 픽셀의 기본 레이아웃을 기반으로 했다. 이 숫자는 순차 주사 방식 디스플레이에 아날로그 비디오 신호를 출력으로 사용하는 시대의 시스템에 전형적이다. 이는 NTSC 무선 주파수 신호의 복잡성 때문에 약 320x240이었던 시대의 텔레비전에서 달성된 최대 해상도에 가깝다.

그래픽 레이어를 사용할 수 있는 네 가지 방법이 있었다:

모드 0, 또는 텍스트 모드는 화면을 40x24의 "블록" 레이아웃으로 나누었는데, 각 블록은 폭 6픽셀, 높이 8픽셀이었다. 각 블록은 0부터 255까지의 값을 가질 수 있었고, 일반적으로 확장된 ASCII 문자 집합을 나타냈다. 256개 문자의 각 패턴은 VRAM에 저장되었으며, CPU를 사용하여 VRAM 값을 로드함으로써 변경할 수 있었다. 문자의 각 라인은 한 바이트당 한 라인에 저장된 "켜짐" 또는 "꺼짐" 픽셀 시리즈로 정의되었으며, 문자당 8바이트였다. 블록은 화면에서 6x8이었기 때문에, 디자이너는 문자 사이에 공간을 남기기 위해 5x7 그리드로 문자를 배치해야 했다. 패턴에서 "켜짐" 및 "꺼짐" 비트의 색상은 사용 가능한 15가지 색상 중 하나일 수 있었으며, VRAM에 저장되었다.

모드 1 또는 그래픽 I은 본질적으로 텍스트 모드의 수정으로, 화면을 32x24 레이아웃으로 나누어 각 블록이 6x8이 아닌 8x8 픽셀이 되도록 했다. 화면의 특정 픽셀 패턴은 텍스트 모드에서 문자를 담는 것과 동일한 256개 항목의 비트 패턴 테이블에서 찾아졌다. 가능한 위치가 768개이고 가능한 패턴이 256개뿐이었기 때문에, 이 모드는 생성할 수 있는 디스플레이 종류에 제한이 있었다. 그래픽 I은 또한 모든 주어진 블록의 켜짐 및 꺼짐 픽셀에 대한 색상 값을 담는 VRAM의 별도 섹션을 추가했는데, 768개 항목이 있었다. 이는 8x8 픽셀의 모든 블록이 자체 두 가지 색상을 가질 수 있었지만, 어떤 블록 내의 픽셀은 모두 동일해야 한다는 것을 의미했다. 이것은 당시 흔치 않은 해결책이 아니며, 셀의 가장자리가 보이지 않도록 색상을 선택할 수 없을 때 속성 충돌이라는 잘 알려진 문제로 이어진다.

모드 2 또는 그래픽 II는 그래픽 I의 추가 수정으로, 768개의 모든 블록에 대해 별도의 패턴을 허용하고, 블록 내의 각 라인에 대해 별도의 색상 설정을 허용했다. 이는 어떤 블록이든 15가지 색상을 모두 사용할 수 있음을 의미했지만, 라인당 두 가지 색상으로 제한되었다. 이 디스플레이는 어떤 이미지든 그릴 수 있고 더 많은 색상을 표시할 수 있어, 픽셀 주소 지정이 가능하고 임의의 이미지를 고해상도로 그리는 데 적합한 디스플레이를 생성한다. 비용은 192개 라인 각각에 대해 32개의 색상 항목과 768개의 별도 항목이 있는 확장된 패턴 맵이 필요하여, 모든 데이터를 담는 데 필요한 VRAM이 약 12 KB로 증가한다는 것이다.

모드 3 또는 멀티컬러 모드는 화면을 64x48 블록으로 나누어 총 3072개의 블록을 만들었다. 이 모드에는 패턴이 없었고, 전체 셀이 켜지거나 꺼지는 방식이었다. 각 블록에 대한 색상 테이블 항목이 있어서, 모든 블록이 자체 색상을 선택할 수 있었다. 이는 3KB 미만의 VRAM을 사용하여 저해상도이지만 고색상 디스플레이를 생성했다.

이 시스템의 한계는 하드웨어 미세 스크롤링을 지원하지 않았으며, 일반적으로 8줄 높이의 셀 경계를 따라서만 스크롤할 수 있었다. 스크롤링은 VRAM에 이미 저장된 패턴을 이동한 다음 새 라인 또는 열에 대한 데이터를 추가하는 방식으로 이루어졌는데, 이는 수행하는 데 시간이 걸렸다. 또한 모든 그래픽 모드가 본질적으로 각 셀에 사용자 정의 문자가 있는 문자 모드였기 때문에, 선이나 원과 같이 셀에 걸쳐 있는 패턴은 특정 셀의 각 라인에 대한 픽셀을 계산하고 해당 값을 문자 세트에 업로드해야 했다.

 화면 모드 2 세부 사항 
기술적으로 모드 2는 다채로운 문자 집합을 가진 문자 모드이다. 화면은 세 개의 256×64 픽셀 영역으로 수평으로 나뉘며, 각 영역은 자체 문자 집합을 가진다. 모든 세 영역에서 문자 0부터 255까지를 순차적으로 인쇄함으로써, 프로그램은 각 픽셀을 개별적으로 설정할 수 있는 그래픽 모드를 시뮬레이션할 수 있다. 그러나 결과적인 프레임버퍼는 비선형적이다.

프로그램은 또한 세 개의 동일한 문자 집합을 사용할 수 있으며, 그 다음 화면을 다채로운 문자 집합을 가진 텍스트 모드처럼 다룰 수 있다. 배경 패턴과 스프라이트는 다채로운 문자로 구성된다. 이것은 일반적으로 게임에서 사용되었는데, 화면 전체를 채우고 스크롤하는 데 32×24 바이트만 이동하면 되었기 때문이다.

TMS9918 모드 2 사용의 어려움은 모든 8×1 픽셀 영역이 전경과 배경 두 가지 색상만 가질 수 있다는 것이었다. 16색 팔레트에서 자유롭게 선택할 수 있었지만, 각 8×1 영역에는 두 가지 색상만 존재할 수 있었다. 베이직에서 LINE 명령을 사용하여 화면을 조작할 때, 8×1 영역당 최대 2가지 색상을 쉽게 초과하여 "컬러 오버플로"가 발생할 수 있었다.

 문서화되지 않은 모드 
텍사스 인스트루먼트는 원래 위에 나열된 네 가지 모드만 문서화했다. 그러나 모드 2를 활성화하는 비트는 실제로 다른 모드에 대한 수정 비트이다. 이를 활성화하면 세 가지 일이 발생한다.

 각 셀에 대한 항목을 저장하도록 색상 테이블 크기를 확장한다.
 화면을 수평으로 삼등분한다.
 패턴 및 색상 테이블의 두 주소 비트를 마스크 비트로 변경하여, 화면의 각 삼등분 영역이 자체 패턴 및 색상 테이블을 갖는지(모드 2) 또는 갖지 않는지(모드 1)를 제어한다.

코드에서 이 비트를 토글함으로써 세 가지 추가 모드가 가능하다. 정품 TMS9918A 칩은 이러한 모드를 지원하지만, 복제품 및 에뮬레이터는 지원하지 않을 수 있음에 유의해야 한다.
 모드 0 (텍스트) + 모드 2 (그래픽 2): 비트맵 텍스트 모드라고 알려져 있다. 이 모드는 색상 테이블 없이 두 가지 색상의 비트맵 이미지를 허용한다. 이는 약간 줄어든 수평 해상도(텍스트 모드는 그래픽 모드처럼 256픽셀 대신 240픽셀의 수평 해상도를 가짐)를 희생하여 메모리를 절약한다.
 모드 1 (그래픽 1) + 모드 2 (그래픽 2): 하프 비트맵 모드라고 알려져 있다. 텍사스 인스트루먼트는 실제로 "Video Display Processors Programmers Guide SPPU004"라는 매뉴얼에서 이 "문서화되지 않은" 화면 모드를 문서화했다. 섹션 8.4.2, "Playing Games with VRAM Addressing"에서 이 모드가 모드 1의 메모리 절약과 모드 2의 색상 세부 사항을 어떻게 결합하는지 설명한다. 그러나 그들은 이 모드가 표시할 수 있는 스프라이트 수를 32개 대신 8개로 제한한다고 말한다. 따라서 이 모드를 설명하는 데 사용되는 "문서화되지 않은"이라는 용어는 잘못된 명칭이다. 그러나 이 매뉴얼이 널리 알려지지 않았기 때문에, 이 모드는 일반적으로 문서화되지 않은 모드 중 하나로 간주된다. 일반적으로 모드 2 대신 이 모드를 사용하는 유일한 이유는 메모리 소비를 줄이기 위해서이다.
 모드 3 (멀티컬러) + 모드 2 (그래픽 2): 비트맵 멀티컬러 모드라고 알려져 있다. 이 모드는 표준 멀티컬러 모드가 이미 할 수 있는 것 외에는 아무것도 제공하지 않으므로, 더 신기한 모드이다.

외부 비디오
9918 시리즈의 또 다른 주요 특징은 외부 비디오 소스를 읽고 그 위의 모든 객체가 투명하다고 가정하고 그 신호를 출력으로 전달하는 기능이었다. 이를 통해 시스템은 비디오 카메라나 비디오테이프와 같은 아날로그 소스 위에 그래픽을 오버레이할 수 있었다. 두 디스플레이가 제대로 정렬되도록 하려면 외부 소스의 클록도 입력해야 하며, 이는 일반적으로 수정 발진기에 의해 생성되는 클록 신호를 대체한다. 입력 신호의 출력 강도를 출력과 일치시키기 위한 어떤 시스템도 제공되어야 한쪽 신호가 다른 신호를 압도하지 않도록 한다.

색상
TMS9918 계열 칩은 컴포지트 비디오 팔레트를 사용했다. 색상은 TMS9918A의 휘도 및 색차 값과 TMS9928A/9929A의 Y, U (B-Y) 및 V (R-Y) 값의 조합을 기반으로 생성되었다.

데이터시트 값
TMS9918은 15개의 표시 색상과 "투명" 색상, 즉 색상 0으로 구성된 고정 16색 팔레트를 가지고 있다.

 스프라이트에 "투명"이 사용되면 그래픽 평면을 표시한다.
 텍스트/그래픽 평면에 "투명"이 사용되면 배경을 표시한다.
 배경에 "투명"이 사용되면 외부 비디오 신호(활성화된 경우)를 표시하고 그렇지 않으면 검정색을 표시한다.

데이터시트의 "Table 2.3 - Color Assignments"에 따르면 출력 레벨은 다음과 같다:

참고: 색상은 단지 예시일 뿐이다. BT.601 표준 공식을 사용하고 U와 V가 0.5를 중립으로 하는 0-1 범위로 정규화되었다고 가정하여 YUV를 sRGB로 변환한다. SMPTE C 색상 측정법은 고려되지 않았다. 다른 색상 변환에 대해서는 다음 섹션을 참조하라.

제품군
이 계열의 모든 IC는 일반적으로 TMS9918이라는 이름으로 불리며, 때로는 "A" 접미사가 붙는다. "A"는 새로운 기능, 특히 비트맵 모드(그래픽 II)의 추가를 나타내는 칩의 두 번째 버전을 의미한다.

이 칩의 주요 기능은 칼 구태그(Karl Guttag, 설계자 중 한 명)가 1980년 발표에서 강조한 바와 같다:

 화면당 256x192 풀 컬러 픽셀
 15가지 색상 및 음영
 비인터레이스 컬러 컴포지트 비디오 출력
 RAS/CAS 유형 동적 램에 직접 배선
 동적 램 자동 리프레시
 일반 8비트 메모리 매핑 유형 CPU 인터페이스
 CPU는 VDP를 통해 RAM에 액세스한다(DMA 불필요)
 화면당 32개의 동적 문자
 한 줄당 32개의 8x8 패턴, 화면당 24줄
 한 줄당 40개의 6x8 패턴을 가진 텍스트 모드
 64x48 메모리 매핑 가능 컬러 사각형을 가진 멀티컬러 모드
 외부 비디오 입력 및 제어
 단일 +5V 전원 작동
 표준 N-채널 실리콘 게이트 기술

TMS9918
TMS9918은 TI-99/4에만 사용되었으며, TI-99/4A와 다른 컴퓨터들은 A 버전 VDC를 사용했다.

 TMS9918A, TMS9928A 및 TMS9929A 
섬네일|VDP TMS9928A
TMS9918A와 TMS9928A는 60 Hz 비디오 신호를 출력하는 반면, TMS9929A는 50 Hz를 출력한다. "TMS9918A"와 "TMS9928A"의 "1"과 "2"의 차이점은 "1" 버전이 컴포지트 NTSC 비디오를 출력하는 반면, "2" 버전(TMS9929A 포함)은 아날로그 루마 휘도와 R-Y 및 B-Y 색차 신호를 출력한다는 것이다. 후자의 필요성은 PAL 및 SÉCAM과 같은 다른 비디오 신호 표준 때문에 유럽을 포함한 50 Hz 세계에서 지배적이었다. RF 변조기에서 Y, R-Y 및 B-Y를 출력하고 이를 PAL 또는 SECAM으로 인코딩하는 것이 각기 다른 색상 표준에 대해 다른 콘솔을 가지려고 노력하는 것보다 비용 효율적이었다. "1" 버전은 또한 외부 컴포지트 비디오 입력을 특징으로 하여 비디오 위에 텍스트나 그래픽을 오버레이할 수 있는 비디오 "타이틀러"에 사용하기 편리한 칩이었지만, "2" 버전은 그렇지 않다.

TMS9918의 원래 변종은 공핍형 부하 NMOS였으며 4.5 μm 공정으로 제조되었다. 이는 3개의 공급 전압이 필요했던 구형 인핸스먼트 부하 NMOS 공정을 사용한 TMS9900 마이크로프로세서와는 대조적으로 텍사스 인스트루먼트가 제조한 최초의 공핍형 부하 NMOS 칩 중 하나였다. 큰 다이 크기와 상대적으로 높은 내부 속도 때문에 TMS9918은 히트싱크가 필요할 정도로 뜨거워졌다. 대만의 DINA 콘솔(하이브리드 콜레코비전/SG-1000)과 같은 일부 장치는 히트싱크를 설치하지 않아 칩 오작동을 겪었다. 1983년까지 텍사스 인스트루먼트는 다이 크기를 3 μm로 줄여 더 시원하게 작동했고 더 이상 히트싱크가 필요하지 않았다. MSX 기기와 SG-1000는 새로운 3 μm TMS9918을 사용했고, 대부분의 콜레코비전은 원래의 4.5 μm 변형을 사용했다(1985년에 생산된 콘솔의 마지막 생산분은 새로운 모델 TMS9918을 사용했다).

TMS9118, TMS9128 및 TMS9129
섬네일|VDP TMP9118NL 프로토타입
TMS9918 시리즈 칩의 후기 변형인 TMS9118, TMS9128 및 TMS9129는 1980년대 중후반에 출시되었지만, 결코 인기가 많지 않았다. 한 핀의 기능이 변경되었고, 비디오 메모리 매핑은 TMS99xx에 필요한 8개의 16K×1비트 칩 대신 두 개의 16K×4비트 칩을 사용할 수 있게 한다. 그 외에는 이 칩들이 각각 TMS9918A, TMS9928A 및 TMS9929A와 완전히 동일하다.

CRT 디스플레이
Y, R-Y, B-Y를 RGB로 변환하려면 Y가 어떻게 생성되었는지 고려해야 한다:
 Y = R * 0.30 + G * 0.59 + B * 0.11

이는 다음 공식을 유도한다:
 R = R-Y + Y
 B = B-Y + Y
 G = (Y - 0.30 * R - 0.11 * B) / 0.59

그러나 색차가 없는 모든 색상(즉, 검정, 회색, 흰색)의 경우 R-Y와 B-Y는 0%가 아니라 모두 47%의 오프셋을 가진다. 따라서 이 오프셋은 모든 R-Y 및 B-Y 값에서 먼저 빼야 한다. 실제로 이 한 단계만 단독으로 수행되지 않기 때문에 일부 결과가 음수가 되더라도 문제가 되지 않는다.

다음은 RGB 변환이다. 모든 결과는 0%에서 100% 범위 내에 있어야 한다.

"밝은 빨강" 색상의 R 값이 113%인 오류는 데이터시트 내의 오타에서 비롯된 것으로 보일 수 있으며, R-Y는 80%를 초과해서는 안 된다. 그러나 오실로스코프로 칩의 출력 신호를 측정하면 테이블의 모든 값이 정확하다는 것을 알 수 있다. 따라서 오류는 칩 내부에 있으며 빨간색 신호를 포화시킨다. 이 때문에 이 값은 100%로 수정해야 한다.

그때까지 컴퓨터 모니터와 텔레비전 모두 음극선관만 사용할 수 있었고, 이러한 CRT는 감마를 가졌다. TMS9918 시리즈 칩은 텔레비전과 함께 작동하도록 설계되었으며, 이들의 CRT는 1.6의 감마를 가졌다(참고: 매킨토시 모니터의 CRT는 1.8, PC 모니터의 CRT는 2.2). 디지털 평면 패널은 감마를 가지지 않는다. 이 때문에 TMS9918의 색상은 위 첫 번째 표에서처럼 다소 희미하게 보인다. 아래 표는 감마 보정된 값을 사용하며, 이는 (16진수로 작성):

사용된 단계는 다음과 같다: 모든 값을 소수점 이하 둘째 자리까지 반올림한 다음, 감마 보정을 위해 1.6의 거듭제곱으로 올리고, 마지막으로 값 범위를 0...100에서 0...255로 변환한다.

사양
 비디오 RAM: 4, 8 또는 16 KB에 직접 연결
 텍스트 모드: 40 × 24 및 32 × 24
 해상도: 256 × 192
 색상: 15가지 색상 + 투명
 스프라이트: 32개, 1가지 색상, 가로 라인당 최대 4개

유산

텍사스 인스트루먼트의 TMS9918A는 야마하 V9938로 계승되었는데, 이는 추가적인 비트맵 모드, 더 다채로운 스프라이트, 수직 전체 화면 스크롤 레지스터, 수직 및 수평 오프셋 레지스터, 하드웨어 블리터 및 사용자 정의 가능한 팔레트를 추가했다. V9938은 MSX2 표준 컴퓨터용으로 설계되었으며, 나중에 TI-99/4A의 타사 업그레이드인 Geneve 9640 "컴퓨터 온 카드"에 사용되었다.

V9938은 차례로 V9958로 계승되었는데, 이는 몇 가지 추가적인 고색상 모드와 수평 두 페이지 스크롤 레지스터를 추가했다. 이 칩들은 MSX2+/터보R 시스템에 사용되었다.

도시바는 그래픽 2 모드에서 문서화되지 않은 패턴/색상 테이블 마스킹 기능을 지원하지 않는 T6950이라는 클론을 만들었다. 나중에 도시바는 작동하는 마스킹 기능을 갖춘 VDP가 내장된 T7937A MSX-엔진을 출시했다. 도시바의 두 VDP는 TI VDP와 약간 다른(더 생생한 색상) 팔레트를 특징으로 한다.

세가 마스터 시스템 게임 콘솔의 VDP는 TMS9918의 발전형이다. 이는 메가 드라이브 게임 콘솔의 VDP로 더욱 발전하여, 마스터 시스템 VDP의 대부분의 그래픽 모드를 더 유능한 버전으로 대체했다.

 같이 보기 
 TMS34010, 전용 그래픽 명령어를 가진 1986년 마이크로프로세서
 아타리 8비트 제품군은 같은 해에 출시된 유사한 그래픽 하드웨어를 가지고 있다
 모토로라 6845, 8비트 컴퓨터에 널리 사용된 디스플레이 컨트롤러
 모토로라 6847
 야마하 V9938
 야마하 V9958
 8비트 컴퓨터 하드웨어 그래픽스 목록

내용주

 각주 
인용

참고 문헌
 

 외부 링크 
 데이터시트
 프로그래머 가이드
 F18A 현대식 대체품
 TMS9x18 VRAM용 SRAM 대체품

분류:콜레코의 콘솔
분류:그래픽스 칩