나무모에 미러 (일반/어두운 화면)
최근 수정 시각 : 2024-11-18 03:06:11

SIMCGA

파일:tetris_SIMCGA.png
MS-DOS테트리스(스펙트럼 홀로바이트)의 CGA와 SIMCGA 실행화면 비교[1]

1. 개요2. 상세
2.1. 원리2.2. 문제점
3. 기타
3.1. 다른 CGA 에뮬레이터들3.2. 하드웨어(?) 에뮬레이터3.3. SIMVGA?
4. 함께보기


SIMCGA - A CGA Simulator for Monochrome Graphics Cards

1. 개요

1980년대 IBM PC 및 그 호환 기종의 MS-DOS 환경에서 주로 게임용으로 사용된 허큘리스 그래픽 카드CGA 에뮬레이터. 그 시절에 게임을 한 사람이라면 거의 대부분이 알고 있는 프로그램이다. 후술하겠지만 이러한 허큘리스 그래픽 카드 환경에서 CGA를 에뮬레이션해 주는 프로그램은 몇 종류인가 있었는데, 이 중에서 가장 널리 사용된 소프트웨어이다.

제작자는 Chuck P. Guzis. 오리건주 유진 출신으로서 현재는 카세트테이프, 플로피 디스크 등 옛 매체의 디지털 포렌식 전문가로 활동 중이다. 여담으로 이 사람이 SIMCGA를 만들 때 창업한 Sydex는 지금도 있다. 홈페이지

2. 상세

IBMIBM PCIBM PC XT를 발매할 때 기본 그래픽 카드로 MDACGA를 옵션으로 함께 내놓았지만 MDA는 80행 24열의 미려한 단색 문자를 표현할 수 있는 대신 색깔을 사용할 수 없고 그래픽 표현도 불가능하다는 단점이 있었고 CGA는 4색 표현은 가능하지만 320×200 픽셀로 해상도가 낮다는 문제점이 있었다. 게다가 CGA에 기본적으로 내장된 글꼴은 조잡하기로 악명높았다. 그런 상황에서 IBM PC 호환 기종에서 저렴한 가격에 단색이더라도 고해상도 그래픽을 필요로 하는 계층[2]을 대상으로 시장에 나온 제품이 바로 허큘리스 그래픽 카드였다.

한글이나 한자처럼 자형이 복잡한 2바이트 문자 집합(DBCS, Double Byte code Set)[3]을 사용하였던 한국과 홍콩, 대만에서는 원활한 자국 문자 표시를 위해서 높은 해상도의 그래픽 처리가 필요했고, 자연스럽게 해상도가 낮은 CGA보다는 색상을 사용하지 못해도 2바이트 문자 집합 표시에 충분한 해상도를 가진 허큘리스 그래픽 카드가 시장의 주류가 되었다. IBM의 순정 IBM PC나 컴팩 등의 미국산 호환 기종이 거의 들어가지 않은 상태에서 현지산 호환 기종 중심으로 시장이 편성되었던 한국, 홍콩, 대만 PC 시장의 상황도 이와 무관하지는 않았을 것이다.

그러나 허큘리스 그래픽 카드는 본질적으로 서드파티 제품이다보니 바이오스 인터럽트 호출을 지원하지 않는 문제가 있었고, IBM PC의 원산지인 미국에서는 나름 '사실상 표준'(de facto standard)으로 인식될만큼 제법 잘 팔리기는 했어도 진짜 IBM 표준인 CGA를 위협할 만큼의 주류라고까지 말하기는 어려웠다.[4] 그렇다보니 게임에서는 허큘리스 그래픽 카드를 잘 지원해주지 않았다. 그런데 애매하게도 완전히 시장에서 외면하기에는 무시할 수 없는 점유율을 갖추고 있는 것 또한 사실이었다. 이러한 이유로 등장하게 된 것이 SIMCGA를 필두로 하는 CGA 에뮬레이터다.

SIMCGA는 램 상주(TSR, Terminate and Stay Resident) 프로그램이므로 게임을 시작하기 전에 SIMCGA.COM 파일을 미리 실행시켜 놓기만 하면 된다.[5] 이후 램에 상주하고 있는 프로그램이 자동으로 현재 그래픽 카드가 CGA인 것처럼 에뮬레이션해서 동작한다.

당시 국내에 널리 퍼졌던 버전은 크게 2가지가 있었는데 'SIMCGA 4.0'과 'SIMCGA 6.0'으로 불렸다. 이것이 실제 제작자 측에서 제대로 붙인 버전 번호였는지는 알 길이 없으나 어쨌든 이런 이름으로 알려졌다. 4.0은 화면비 조정 기능이 들어가 있었는지 표시영역 전체에 화면이 꽉 차게 표시되었으나 그 때문인지 화면이 움직일때 잔상이 남으면서 움직여 지저분한 느낌이 많이 들었다. 반대로 6.0은 풀화면 표시를 포기한 대신 원래 해상도로 중앙에 화면을 표시하여, 잔상도 없으면서 깔끔한 화면을 보여주었다. 사람에 따라 작은 화면이라도 깔끔한 것이 좋다면 6.0을, 잔상을 감수하고도 큰 화면을 보고 싶었다면 4.0을 선택해 CGA 화면을 즐길 수 있었다. [6]

허큘리스 그래픽 카드가 시장의 주류였던 1980년대 말~1990년대 초의 대한민국 PC 시장에서는 PC 게이머의 필수품이었지만 1991~2년을 기점으로 286~386급 PC와 VGA급 컬러 그래픽스가 일반화되고 게임에서 CGA 지원도 점차 제외되기 시작하면서 SIMCGA 역시 쓰임새가 급격히 줄어들어갔고 멀티미디어 PC의 유행과 함께 시장이 VGA로 본격적으로 넘어가면서 허큘리스 그래픽 카드가 도태되며 CGA 에뮬레이터 역시 완벽하게 자취를 감추게 됐다.

2.1. 원리

허큘리스 그래픽 카드는 원래 64 KB의 비디오 메모리를 가지고 있으며 B0000h~B7FFFhB8000h~BFFFFh의 2개의 영역으로 32 KB씩 프레임 버퍼가 분할되어 있는데, 한 개의 페이지를 화면에 표시할 때 B0000h~B7FFFF 영역이 표시된다. CGA는 원래 16 KB의 비디오 메모리를 가지는데 공교롭게도 허큘리스의 두 번째 프레임 버퍼 영역 안에 포함되는 B8000h~BBFFFh 영역을 프레임 버퍼로 사용한다.

따라서 SIMCGA(를 비롯한 CGA 에뮬레이터)가 하는 일은 램 상주 상태로 있으면서 허큘리스의 두 번째 프레임 버퍼 안에 있는 CGA의 프레임 버퍼 데이터를 허큘리스의 첫 번째 프레임 버퍼로 복사하는 것이다. 거기에 추가적으로 해상도 차이에 맞추어 비율을 조정한다던지 CGA의 4색 대신 디더링으로 표현한다던지 하는 처리를 한다.

참고로 허큘리스 그래픽 카드를 지원하는 게임들도 직접 지원하는 것이 아니라 CGA를 지원하도록 게임을 제작하고 허큘리스 모드에서는 내부적으로 SIMCGA와 똑같이 CGA 영역에 있는 데이터를 허큘리스의 첫 프레임 버퍼로 복사하는 식으로 구현한 경우가 대부분이다. 요약하자면 게임 자체적으로 CGA 에뮬레이터를 내장한 것이다. 직접 허큘리스를 지원하도록 만든 게임은 드물었다. 오히려 허큘리스 직접 지원 게임은 한국처럼 허큘리스 보급률이 높고 CGA 보급률은 낮은 지역에서 만들어진 경우가 많다. 상당히 특이한 예시로 원숭이 섬의 비밀이 있는데, 이 게임은 CGA 보급률이 높은 북미에서 출시되었는데도 허큘리스 그래픽 카드를 CGA 에뮬레이션이 아닌 네이티브로 지원한다. 실제로 돌려보면 CGA와 같은 화면이 나오지 않고, EGA 그래픽을 디더링하고 해상도를 조정하여 단색으로 만든 그래픽이 나온다.

2.2. 문제점

SIMCGA는 CGA 그래픽 데이터를 허큘리스에서도 처리해주는 에뮬레이터일 뿐, 단색 그래픽 카드인 허큘리스와 단색 모니터에서 색깔이 표시될 리는 없었다. 색 끼리의 차이는 허큘리스의 고해상도를 이용해서 디더링으로 처리해서 구분했다. 문제는 허큘리스가 CGA보다는 고해상도이기는 하지만 차이가 큰 건 아니다 보니 CGA의 픽셀 1개가 허큘리스의 픽셀 2개에 대응되는 방식이 쓰였고 결과적으로 중간 밝기인 색 2개는 SIMCGA에서 픽셀의 위치(01과 10)로만 차이가 나서 눈으로 봐서는 사실상 구분이 불가능하다는 것. 물론 당시의 허큘리스 사용자들은 그것만으로도 감지덕지했고 이 자체가 문제점이라고 할 수는 없으나, 게임 제작자 입장에서는 직접 지원하지 않는 단색 그래픽 카드 사용자까지 배려할 리가 없으므로 간혹 게임을 진행하다보면 디더링만으로는 색상을 구분할 수 없는 경우가 생겼다. 예를 들면 인디아나 존스와 최후의 성전에서는 도서관 바닥의 타일에 그려진 로마자를 보고 입구를 찾아야 하는데 SIMCGA 사용자는 도저히 찾을 수가 없어 일일이 노가다로 타일을 찍어서 인디의 코멘트를 통해 숫자를 확인하는 근성 플레이가 요구되었고 페르시아의 왕자처럼 아예 색상을 구분하는 것이 게임 진행의 키가 되는 게임은 답이 없다.

CGA와 허큘리스의 해상도 차이가 정수비가 아니었기 때문에 해상도 변경에도 문제가 있었다. CGA의 해상도는 320×200인데 허큘리스 그래픽 카드는 베이스가 MDA다보니 해상도가 640×400이 아닌 720×348이었고 때문에 CGA의 화상을 정확하게 2배로 확대할 수 없었다.[7] SIMCGA가 택한 방법은 가로, 세로 2번씩 반복해서 표현하되, 가로의 매 4번째 줄마다 2번이 아닌 3번 반복을 했고, 세로의 매 4번째 줄마다 2번 반복 표현을 생략하는 것이었다. 요즘에도 비정수비 확대 방식으로 비슷한 방법을 사용하지만 당시의 PC 성능 문제로 자연스럽게 보이도록 추가적인 필터링을 하기 어려웠기 때문에 SIMCGA를 사용하면 화면이 묘하게 지저분하게 보인다.[8]

잔상 문제도 당시에 많이 문제시 되던 이슈였는데 마치 인터레이스 화면을 보듯이 움직이는 동작에서 지저분한 잔상이 남는다. 이는 PC의 성능 문제와 CGA와 허큘리스의 화면 주사율 차이가 원인이다. SIMCGA는 상술했듯이 CGA의 화면 데이터를 읽고 고유의 알고리즘으로 허큘리스 그래픽 카드의 해상도 720×348로 화면을 꽉 차게 표현할 수 있도록 확대한 뒤 화면에 표시하는 과정을 가지고 있다. 아무래도 이 과정에서 처리 시간이 필요한데, 4.77~10MHz 남짓한 8088 CPU의 성능으로는 CGA에서 기존 프레임 렌더링이 끝나고 다음 프레임 렌더링이 시작되기 전까지 화면 표시를 완료시킬 수가 없었다.

여기에 CGA와 허큘리스 그래픽 카드는 화면의 주사율에도 차이가 있었다. CGA는 수평 주사율(HSYNC)이 15.7kHz, 수직 주사율(VSYNC)이 60Hz이지만, 허큘리스 그래픽 카드는 MDA와 동일하게 각각 18.4kHz, 50Hz이다. 이것은 모니터도 마찬가지라, 모니터도 서로 호환이 되지 않는다.[9] 이러한 원인으로 인해 이전 프레임의 일부가 한 박자 늦게 갱신된 상태로 화면으로 출력되어 잔상으로 보이게 된다.

3. 기타

3.1. 다른 CGA 에뮬레이터들

SIMCGA가 대표적이고 가장 대중적인 CGA 에뮬레이터이긴 했지만 당시에 이런 종류의 소프트웨어는 꽤 많이 존재하고 있었다. 몇 가지 간단하게 소개하면 아래와 같다.

3.2. 하드웨어(?) 에뮬레이터

주로 한국에서는 SIMCGA가 게이머의 필수품이었지만 일부 대기업 PC는 허큘리스와 CGA를 동시에 호환하는 그래픽 카드와 모니터를 달아 SIMCGA 없이도 CGA 게임을 할 수 있었던 컴퓨터들이 있었다. 이걸 사용하면 호환성과 속도, 화면 크기, 그리고 비주얼 면에서 에뮬레이터를 사용하는 것과 비교할 수 없을 정도로 편리하다. 예를 들어 삼국지 2의 지도 갱신 속도는 SIMCGA 사용시 유난히 느렸는데, 아래 컴퓨터들은 그런 일이 없었다. 또한 인디아나 존스와 최후의 성전 플레이 때에도 남들은 일일이 도서관 바닥을 클릭해 가며 숫자를 확인할 때, 화면만 보고 필요한 타일을 찾아내는 기쁨을 누렸다. 다만 하드웨어 방식이므로 해당 컴퓨터 전용이라는 제약이 있었다.

예를 들면 삼성전자 알라딘 286이 이런 식이었다. 이 컴퓨터들은 640×400 해상도로 출력할 수 있는 일종의 확장 CGA[13]를 개발해 넣었는데, 허큘리스 그래픽 카드 호환 기능까지 넣어 한글 BIOS에서 그래픽 모드를 선택할 수 있게 해놓았다. 삼성전자는 허큘리스 그래픽 카드와 CGA를 동시에 지원하는 단색 모니터를 판매하기도 했는데, 색깔 표시는 안 되지만 단색조(Greyscale)로 표시할 수 있었기 때문에 SIMCGA처럼 디더링으로 인해 일부 색이 구별이 안 되는 문제가 없었다. 삼성전자는 이 그래픽 카드를 MCGA라고 이름 붙였지만, 물론 IBM PS/2 Model 25에 들어간 MCGA와는 다른 물건이다.

대우전자의 IBM PC XT 호환 기종인 아이큐 슈퍼(코로나 PC의 직계 후속) 일부 컴퓨터에도 이런 식의 처리가 들어가 있다. KCHM이라는 단색 모니터에서 단색조로 표현할 수 있는 그래픽카드를 내장했다. 초기 컴퓨터에는 없고 CPC-4000A 이후 계열에만 들어있는데, 평소에는 허큘리스 그래픽 카드처럼 동작하지만 CGA로 동작하는 프로그램을 실행하면 CGA 화면을 단색조로 보여주는 기능이 활성화된다. CPC-4000A를 뜯어보면 그래서 이전 컴퓨터에선 메인보드에 실장돼 있던 MDA/허큘리스 관련 부품들이 제거되어 있고 ISA 슬롯 중 하나에 KCHM 카드가 따로 장착되어 있다. 다만 이 카드를 다른 PC에 장착하면 전용 제품이라는 경고만 나오고 동작이 되지 않는 걸로 봐서 주변 기기로 별매할 생각은 없었던 것으로 보인다.

3.3. SIMVGA?

1991~2년경 즈음에 하이텔, 천리안 등의 PC통신 자료실에 SIMCGA처럼 허큘리스에서 EGAVGA 그래픽을 에뮬레이팅해 준다는 SIMEGA, SIMVGA라는 프로그램이 올라오기 시작했다. 그러나 이 소프트웨어는 가짜였다. 정확히는 텍스트로 SIMVGA 어쩌고 하는 메시지만 표시해주고 실제로는 아무런 동작도 하지 않는 가짜 프로그램이었다. 바이러스였다고 기술된 문서나 혹은 그렇게 회고하는 유저들도 있는데, 아마도 악의를 가진 사람이 이 가짜 프로그램에 바이러스를 감염시켜서 배포한 경우로 추정된다. 이 시기는 점차 시장이 VGA로 넘어가며 점차 SIMCGA로 할 수 없는 게임이 늘어나고 있었지만 아직 기존의 허큘리스 사용자들도 제법 남아있던 시기였으므로 이런 게임시장의 변화를 아쉬워하는 허큘리스 사용자들을 낚기에 딱 좋은 소재였다.

해외에도 같은 발상을 한 사람이 있긴 한지 DOS 게임 관련 포럼을 찾아보면 EGA/VGA의 허큘리스 에뮬레이션 여부에 대한 주제가 올라와 있는데, 그 당시 허큘리스에서 EGA/VGA 에뮬레이션은 실용적으로 불가능했다고 한다. 이것은 SIMCGA 등의 CGA 에뮬레이터가 허큘리스에서 CGA 그래픽 데이터를 표시하는 원리와도 관련이 있는데(상기한 원리 문단 참조), EGA의 경우는 64 KB, VGA는 256 KB의 비디오 메모리를 가지고 있고 둘 다 공히 프레임 버퍼로 64 KB를 사용하므로 CGA처럼 허큘리스의 두 번째 32 KB 영역에 데이터를 올려놓고 첫 번째 32 KB로 블럭 전송하는 방식을 사용할 수가 없다. 프레임 버퍼 영역도 A0000h~AFFFFh로 허큘리스와 전혀 겹치지 않는다.[14] 굳이 에뮬레이션을 하고자 한다면 램 상주 프로그램이 EGA/VGA의 프레임 버퍼와 다른 비디오 데이터들을 메인 메모리로 전송하고 다시 색상과 해상도에 맞추어 가공한 다음 허큘리스의 프레임 버퍼로 전송하거나 하는 무식한 방법을 사용할 수도 있겠지만 이런 복잡한 방법으로는(특히 메인 메모리를 거치는 방법으로는) 당시의 하드웨어에서 SIMCGA처럼 실용적인 속도는 때려죽여도 얻을 수 없다.

4. 함께보기


[1] 단, 이 스크린 샷은 실기가 아닌 도스박스 에뮬레이터에서 각각 CGA 모드와 허큘리스 그래픽 카드 모드+SIMCGA 4.1로 실행하여 캡처한 것이다.[2] 1980년대 당시에는 컬러 디스플레이가 가격이 상당히 비싼 물건이었기에 기기 자체에 컬러 그래픽스 기능을 내장한 애플 II코모도어 64 같은 8비트 PC들도 저렴한 단색 디스플레이 장치를 달아 쓰거나 TV를 디스플레이 장치 대용으로 물려 쓰는 경우가 흔했다.[3] 자형이 단순한 알파벳이나 가나를 표현하는 데는 8×8 픽셀이면 충분하지만 한글, 한자는 적어도 16×16 픽셀은 필요하다.[4] 이 점이 허큘리스 호환 보드가 그래픽 카드 시장의 절대다수를 차지했던 한국을 비롯한 동아시아권 국가들과의 차이점이다.[5] 램 상주 상태에서 SIMCGA를 제거할 때는 RMVCGA.COM 이라는 파일을 실행하면 되지만 보통 한국에서는 SIMCGA의 패키지 내용물 중 핵심파일인 SIMCGA.COM 파일만 게임 디스켓에 포함해서 유통되는 바람에 잘 알려지진 않았다. 반드시 SIMCGA를 제거해야 하는 상황은 별로 없지만 정말로 제거해야 한다면 컴퓨터를 재부팅하는 수밖에...[6] 당시에는 모니터가 CRT방식으로, 현재의 LCD와 같은 픽셀 매칭 형식이 아니었기 때문에 화면 스트레칭을 마음대로 할 수 있었다. 화면이 작으면 모니터 아래에 있는 노브를 돌려서 잘 키워서 하면 되긴 했다. 물론 그러고 다시 허큘리스 화면으로 나오면 뻥튀기된 화면때문에 커서키가 모니터 밖으로 나가버려서 안 보였지만... AUTOEXEC.BAT를 잘 조정한 디스켓이 있으면 켜자마자 자동실행되니까 의외로 상관없었다.[7] MDA의 해상도가 원래 9×14 픽셀의 알파벳을 80×25로 출력하였기 때문에 720×350에 해당한다. 한국에서 사용된 변종 클론은 16×16 크기의 한글을 40×25로 쓰기 위해 640×400 해상도 지원이 되었지만 정품 허큘리스는 이를 지원하지 않는다.[8] 문서 상단에 첨부된 스크린샷에서는 잘 보이지 않지만 일부 게임에서는 매우 도드라져 보인다.[9] 현대의 모니터와 TV는 다양한 주사율 모드를 지원하지만, 1980년대 초 당시 모니터는 한 종류의 주사율 모드만 지원했다. 모니터가 두 종류 이상의 주사율 모드를 지원하기 시작한 것은 IBM PC 기종의 경우 1984년 EGA를 발표하면서 CGA 호환 모드를 구현하면서였다.[10] 단, 이 약자만 보고 중국인 또는 한국인 여부를 확신하기는 쉽지가 않다. 중국인으로 보자니 중국은 예전부터 이름을 로마자로 표기할 때 성을 앞에 표기하는 원칙을 지키고 있다는 사실이 걸리고, 그렇다고 한국인이라고 보자니 표기법상 성 빼고는 L이 약자로 나올 일이 거의 없으며 굳이 L, R을 섞어가며 ㄹ이 연속 음절로 나오는 것도 매우 이상하기 때문이다. 또한 한국계는 창(성씨)을 성으로 사용하는 사람이 극히 드물기 때문에 "장"씨일 확률이 높은데, 장(성씨)의 로마자 표기는 매큔-라이샤워 표기법을 쓸 때나 지금이나 Jang이 압도적인 주류이며 Chang은 매우 빈도가 낮다. 이런 부분을 감안하면 영어식 이름을 사용하는 중국계였을 확률이 가장 높아 보인다. 중국계라 해도 해외에 진출했거나 아예 외국 거주자들은 현지식 표기법을 곧잘 따르기 때문. 재키 챈, 리사 수와 같은 예만 봐도 그렇다.[11] 이상한 표기처럼 보이지만 당시에는 th를 발음 관계없이 'ㄷ'으로 흔히 표기했다. 대처, 맥아더 등을 통해 아직도 잔재를 확인할 수 있다.[12] 다만 The Third Wave(제3의 물결)는 1980년부터 전세계적으로 유행한 표현이기 때문에 세계 어디든 저런 이름의 회사가 있어도 이상할 것은 없다.[13] 원래 CGA는 단색이라고 해도 640×200까지만 출력할 수 있다.[14] 역으로 이 특징을 이용해 허큘리스와 EGA/VGA를 따로 달아 듀얼 디스플레이를 구현하는 기법도 있었다.