MSX Attribute clash

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

싱클레어가 한 짓(?)은 픽셀 버퍼와 컬러 버퍼의 분리였다. 픽셀 버퍼에 해당 위치에 점이 있는지 1과 0으로 저장한다. 그리고 컬러버퍼는 8x8 픽셀로 이루어진 타일에 대해 적용시키는 것이다. (8x8이란 것은 가로 8칸, 세로 8칸 총 64칸이 같은 전경색과 배경색을 적용받는다고 보면 된다.)

일반적으로 픽셀 버퍼와 컬러 버퍼를 쓰는 경우에 하나의 타일에 대해 두가지 색상을 지정하는 방식이 흔히 사용되었다. 2가지 색상이 아닌 경우에는 대부분 2의 배수로 늘어났다. 두가지 색상을 지원하면 픽셀 버퍼의 해당 픽셀을 위한 비트에 0을 넣어 그 픽셀에 배경색을 쓰겠다고 지정하고 1을 넣어 전경색을 쓰겠다고 지정한다. 그리고 그 픽셀을 포함한 인접 영역에서 사용할 배경색과 전경 색을 컬러 버퍼에 지정한다. 8x8의 경우에는 64개의 픽셀마다 전경색과 배경색을 지정했다고 보면 된다.

당시 상당수 하드웨어가 하드웨어 가속되는 “배경 그리기”가 지원되고 있었고 두가지 색상을 사용하는 경우 배경색을 제외하면 하나의 타일에 하나의 색상으로만 그릴 수 있었던 것이라 보면 된다.

이 방식은 널리 성공해 이후 MSX 등에 사용된 TI(텍사스 인스트루먼트)의 그래픽 칩등에도 사용되었다.

MSX, 세가의 SG-1000, SG-3000, 마스터 시스템 등의 게임기에 사용된 TI의 칩셋 TMS9918 계열에서는 8x1의 제한이 사용되었다. (마스터 시스템에 쓰인 칩은 커스터마이징 된 칩이었다.) (8x1이란 의미는 가로 8 픽셀만 색상을 공유한다는 뜻이다. 8x8은 세로 방향으로 픽셀의 색상을 공유했다.)

이후 메가드라이브 (북미 Genesis)에서는 마스터 시스템의 일부 그래픽 모드를 포함하는 야마하 칩셋(Yamaha YM7101)으로 변경되었다. (이 칩셋은 TMS9918에 대한 호환성은 없음)

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

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

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

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

MSX 2부터 미려한 그래픽이 가능해진 것은 스프라이트가 16색으로 구성할 수 있었기 때문이다. MSX 2에 사용된 야마하 칩셋(Yamaha V9938)은 TMS9918에 대한 하위 호환성을 가졌다. 이 칩은 픽셀 버퍼와 컬러 버퍼가 분리되지 않은 고해상도 그래픽 모드를 지원했다. 이 세대 부터 일본 게임 특유의 그래픽이 나타나게 된다. 이 16색 스프라이트 칩으로 인해 일본 시장에서 사운드, 그래픽 칩셋에서 야마하의 영향력이 매우 막강해졌다. 야마하의 새 칩셋은 MSX 1의 그래픽 모드에 대해 8x1을 지원하지 못하고 8x8을 지원해서 MSX 1용으로 제작된 영상은 그래픽이 더 나빠지는 경우도 발생했다.

PS: 이 글은 3년전에 본인이 작성한 글의 백업입니다. 제가 처음 MSX를 쓴지는 27년이 되어가네요.