msx-attribute-clash

초기 8비트 시절을 이야기할 때 빼어먹을 수 없는 회사가 있는데 싱클레어 리서치다. 영국 캠프리지에 있던 작은 회사는 PC 산업이 성공하는데 혁신적인 발명을 했다. (이상하게 영국 캠브리지는 컴퓨터 그래픽과 연관이 깊은 지역인 것 같다. 최근 게임들을 위한 실시간 글로벌 일루미네이션 (광역 조명)도 이 지역에서 많이 연구되었다.)

싱클레어가 한 짓(?)은 픽셀 버퍼와 컬러 버퍼의 분리였다. 픽셀 버퍼에 해당 위치에 점이 있는지 1과 0으로 저장한다. 그리고 컬러버퍼는 8×8 픽셀로 이루어진 타일에 대해 적용시키는 것이다. 하나의 타일에 대해 두가지 색상을 지정하는 방식이 흔히 사용되었다. 그 당시 상당수 하드웨어가 하드웨어 가속되는 “배경 그리기"가 지원되고 있었고 사실상 하나의 타일에 하나의 색상으로만 그릴 수 있었던 것. 이 방식은 널리 성공해 MSX 등에 사용된 TI(텍사스 인스트루먼트)의 그래픽 칩등에도 사용되었다.

(MSX, 세가의 SG-1000, SG-3000, 마스터 시스템 등의 게임기에 사용된 TI의 칩셋 TMS9918 계열에서는 8×1의 제한이 사용되었다. (마스터 시스템에 쓰인 칩은 커스터마이징 된 칩이었다.) 이후 메가드라이브 (북미 Genesis)에서는 마스터 시스템의 일부 그래픽 모드를 포함하는 야마하 칩셋(Yamaha YM7101)으로 변경되었다. (이 칩셋은 TMS9918에 대한 호환성은 없음) 반면에 MSX 2에 사용된 야마하 칩셋(Yamaha V9938)은 TMS9918에 대한 하위 호환성을 가졌다. 이 칩은 픽셀 버퍼와 컬러 버퍼가 분리되지 않은 고해상도 그래픽 모드를 지원했으나 기존 TI9918 계열을 흉내낼 때는 8×8로 흉내내는 제약이 있었다.)

이 때문에 MSX는 좀 황당한 문제가 있었는데 색 번짐이라는 아티팩츠였다. (아티팩츠를 어떤 한국어로 해야할지 잘 모르겠는데, 눈에 띄는 이상한 그래픽 정도의 의미이다.) 보다 정확히는 Attribute clash라고 불렀다. 재연은 다음과 같이 할 수 있다. 배경을 먼저 그린 다음 각각 다른 색상을 가진 2개의 선의 교점을 만드는 것이다. 그럼 색번짐이 일어난다.

8비트 하드웨어의 상당수는 스프라이트란 개념을 가지고 있었는데 그 시절엔 주로 단색의 스프라이트가 사용되었다. 사각형내에 1과 0으로 그림을 그리면 0인 부분을 투명하게 처리하고 1인 영역을 지정된 컬러로 하여 정해진 좌표로 변환하여 화면에 그려주는 기능이다. 이 스프라이트가 하나의 컬러 밖에 그리지 못하는 것은 위의 컬러버퍼와는 또 다른 문제였다. 스프라이트는 한 스캔 라인당 4개를 그릴 수 있는데 이 스프라이트가 겹치는 경우에 컬러 번짐이 발생하지 않았다.

렌더링 처리가 모두 하드웨어에 의해 이루어졌기 때문에 캐릭터나 오브젝트를 화면에서 움직이는 것이 매우 빨랐고, 스프라이트 충돌을 검증하여 손쉽게 충돌 처리를 할 수 있었다.

8비트 시절에 특유의 그래픽이 이런 하드웨어 특성 때문에 나타났는데 충돌 처리가 쉬워서 움직이는 오브젝트의 활용이 많았고, 스프라이트들이 단색이었기 때문에 캐릭터의 부위별로 다른 색상의 스프라이트로 만들어 조합하는 형태가 흔했다. (이렇게 하지 않으면 갤러그 같은 그래픽이 된다.) 하지만 상당 수 일본 외 게임에서는 스프라이트를 잘 쓰지 않고 8×8을 쓰던 싱클레어용 콘텐츠를 그대로 써서 싱클레어의 제약이 그대로 적용되기도 했다.

MSX 2부터 미려한 그래픽이 가능해진 것은 스프라이트가 16색으로 구성할 수 있었기 때문이다. 이 세대 부터 일본 게임 특유의 그래픽이 나타나게 된다. 이 16색 스프라이트 칩(Ymamaha V9938)을 만든 회사는 야마하였고 그 시절 일본 시장에서 사운드, 그래픽 칩셋의 영향력이 매우 막강해졌다. 야마하의 새 칩셋은 MSX 1의 그래픽 모드에 대해 8×1을 지원하지 못하고 8×8을 지원해서 MSX 1용으로 제작된 영상은 그래픽이 더 나빠지는 경우도 발생했다.

PS: 이 글은 3년전에 본인이 작성한 글의 백업입니다.