맨위로가기

모드 13h

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

모드 13h는 VGA 그래픽 모드 중 하나로, 320x200 픽셀 해상도와 256색을 지원한다. 이 모드는 18비트 색상(RGB 채널당 6비트)을 사용하며, 색상 팔레트는 DAC 레지스터를 통해 수정된다. 기술적으로 모드 13h는 VGA의 평면 메모리 배열을 "체인 4" 설정을 통해 프로그래머가 선형 방식으로 접근할 수 있도록 한다. BIOS를 통해 그래픽 모드를 설정하거나 32비트 보호 모드에서 전환하는 것도 가능하다. 모드 13h의 변형 모드인 모드 X는 다른 평면 256색 모드를 제공하며, x86 어셈블리 언어에서는 BIOS INT 10h를 사용하여 활성화된다.

더 읽어볼만한 페이지

  • 컴퓨터 디스플레이 표준 - 해상도
    해상도는 1인치당 픽셀 또는 점의 수를 나타내는 지표로, 이미지의 선명도를 결정하며 DPI와 PPI 단위를 사용하고, 높을수록 섬세한 표현이 가능하다.
  • 컴퓨터 디스플레이 표준 - QVGA
    QVGA는 320×240 픽셀 해상도를 가진 저해상도 디스플레이 표준이며, 가로 길이를 확장한 QVGA+, 와이드 QVGA, 와이드 QVGA+, 풀 와이드 QVGA 등 다양한 파생 규격들이 존재한다.
모드 13h
명칭
명칭모드 13h
다른 이름320x200x256 모드
256색 모드
VGA 256색 모드
VGA 모드 13h
기술 정보
개발IBM
하드웨어VGA 또는 SVGA 호환 어댑터
해상도320x200
색상 수256색
메모리 요구 사항64KiB
메모리 주소0xA0000
인터럽트INT 10h
설명VGA 그래픽 카드의 표준 256색 모드
특징
메모리 구조평면형 (Planar) 또는 뱅크형 (Banked) 메모리 구조 사용 가능
페이지 플립핑페이지 플립핑 지원으로 부드러운 애니메이션 구현 가능
호환성DOS 운영체제에서 널리 사용됨
사용 예시
게임다양한 DOS 게임에서 사용됨
데모컴퓨터 데모 제작에 사용됨
기타그래픽 편집 도구, 프레젠테이션 소프트웨어 등

2. 기술적 세부 사항

모드 13h는 VGA가 본래 평면 구조를 사용하는 것과 달리, 프로그래머가 비디오 메모리를 선형(chunky|청키eng) 방식으로 쉽게 접근할 수 있게 해주는 독특한 그래픽 모드이다. 이는 VGA의 '체인 4' 설정을 통해 구현되며, 메모리 주소가 화면 픽셀 위치와 순서대로 대응되어 프로그래밍이 간편해지는 장점이 있다. 하지만 이 방식은 주소 지정 방식의 한계로 인해 VGA 메모리 256 KiB 중 64 KiB만 사용할 수 있다는 단점이 있다.

색상 표현 방식으로는 MCGA 비디오 모드 중 하나로서 18비트 색상(RGB 각 채널당 6비트)을 사용한다. 색상 팔레트 정보는 비디오 메모리에 직접 저장되지 않고, I/O 포트를 통해 DAC 레지스터에 접근하여 관리해야 한다.

일반적으로 BIOS를 통해 그래픽 모드를 설정하지만, 프로그래머가 직접 VGA 컨트롤러 레지스터를 조작하여 모드 13h로 전환하는 것도 가능하다. 이는 특히 32비트 보호 모드 환경에서 유용하게 사용될 수 있다.

2. 1. 메모리 구조

모드 13h의 메모리 구조는 VGA의 일반적인 방식과 달라 독특한 특징을 가진다. 기본적으로 VGA는 256 KiB의 비디오 메모리를 4개의 64 KiB 평면으로 나누어 관리한다. 이 평면 구조는 특정 픽셀에 접근하기 위해 해당 평면을 선택해야 하므로 프로그래밍이 다소 복잡할 수 있다.

그러나 모드 13h는 VGA의 "체인 4" 설정을 활용하여 이러한 복잡성을 해결한다. 체인 4 설정 덕분에 프로그래머는 비디오 메모리를 마치 하나의 연속된, 즉 선형(청키, chunky)적인 공간처럼 다룰 수 있게 된다. 메모리 주소가 화면상의 픽셀 위치와 순서대로 대응되므로 프로그래밍이 훨씬 간편해진다.

이러한 간편함에는 대가가 따른다. 체인 4 설정은 주소 지정 방식의 특성상 전체 256 KiB 메모리 중 64 KiB만 사용할 수 있도록 제한한다. 각 평면의 일부 영역은 모드 13h에서 활용되지 못한다.

색상 정보 관리 방식도 특징적이다. 모드 13h는 18비트 색상을 사용하며, 색상 팔레트 정보는 비디오 메모리에 직접 저장되지 않고 I/O 포트를 통해 DAC 레지스터에 접근하여 관리된다.

2. 1. 1. 평면 메모리 배열

모드 13h는 VGA가 평면 구조를 사용하기 때문에 일반적인 방식과는 다소 차이가 있다. VGA는 총 256 KiB의 비디오 메모리를 가지며, 이는 각각 64 KiB 크기의 평면(plane) 4개로 구성된다. IBM 문서에서는 이를 '맵(map)'이라고도 부른다. 평면 메모리 구조에서는 화면의 픽셀이 가로 방향으로 4개의 그룹으로 나뉘어 각 평면에 저장된다. 따라서 특정 픽셀에 접근하려면 PC의 64 KiB 메모리 주소 공간 내에서 해당 픽셀이 속한 평면을 먼저 선택해야 한다. 하나의 메모리 주소는 서로 다른 평면에 있는 4개의 픽셀에 대응될 수 있다. 이 방식은 프로그래머 입장에서 다소 복잡하지만, VGA의 256 KiB 메모리 전체에 접근할 수 있다는 장점이 있으며, 모드 X와 같은 다른 기술적 활용도 가능하게 한다.

하지만 모드 13h는 프로그래머가 VGA 메모리를 '청키(chunky)' 즉, 선형적인 방식으로 접근할 수 있게 해준다. 이 방식에서는 메모리 주소가 화면상의 픽셀 위치와 순서대로 일대일 대응된다. 따라서 복잡하게 평면을 선택할 필요 없이, 메모리 주소를 순차적으로 증가시키며 화면의 픽셀에 쉽게 접근하고 수정할 수 있다. 이는 VGA의 '체인 4(Chain 4)' 설정을 통해 구현된다. 이 설정에서는 16비트 메모리 주소의 하위 2비트가 자동으로 4개의 평면 중 하나를 선택하는 데 사용된다. 결과적으로 프로그래머는 매우 단순화된 메모리 접근 모델을 사용할 수 있다.

그러나 이 방식의 단점은 각 평면당 주소 공간의 하위 14비트(214 = 16 KiB)만 사용하게 되어, 총 접근 가능한 메모리가 64 KiB (4 × 16 KiB)로 제한된다는 점이다. 주소의 나머지 2비트는 평면 선택에 사용되기 때문이다. 결국 각 평면의 나머지 48 KiB 영역은 모드 13h에서 사용되지 않는다.

모드 13h는 MCGA 비디오 모드 중 하나로, 18비트 색상(RGB 각 채널당 6비트)을 사용한다. 이는 SVGA 등 이후의 그래픽 표준과는 차이가 있다. 색상 팔레트 정보는 비디오 메모리에 직접 저장되지 않고, I/O 포트를 통해 DAC 레지스터에 직접 접근하여 읽거나 써야 한다. 실제로, 화면 데이터를 저장한 뒤 I/O 포트를 통해 팔레트 정보를 읽어와, 화면 데이터가 저장된 메모리 영역 바로 뒤에 추가로 저장하는 방식이 흔히 사용되었다. 이렇게 하면 픽셀 데이터와 색상 정보를 함께 보관할 수 있다.

모드 13h의 화면 데이터는 320x200 해상도에 해당하는 64,000개의 바이트로 구성되며, 각 바이트 값(0~255)은 특정 팔레트 내 색상의 인덱스를 나타낸다. 만약 팔레트 정보가 없거나 잘못 적용되면, 원래 녹색이어야 할 픽셀이 파란색이나 전혀 다른 색으로 표시될 수 있다. 이는 해당 인덱스 값이 실제 어떤 색상으로 매핑되었는지에 따라 달라지기 때문이다. 이러한 메모리 구조 덕분에 화면 데이터(64,000 바이트) 뒤의 메모리 영역(세그먼트 0xA000의 오프셋 64000부터)을 추가 데이터 저장에 활용할 수 있었다. 특히 768바이트(256색 × 3채널)는 팔레트 정보를 저장하기에 충분한 공간이다. 이렇게 저장된 팔레트 정보는 이미지를 다시 불러올 때 읽어들여, DAC 레지스터에 설정함으로써 원래 색상을 복원하는 데 사용되었다. 이 외에도 전역 팔레트를 사용하거나, 다른 팔레트를 사용하는 이미지를 불러올 때 기존 색상과 가장 유사한 색상을 찾아 픽셀의 인덱스 값을 변경하는 방법도 사용되었다. 하지만 이 경우 색상이 완벽하게 일치하지 않아 그라데이션 표현이 부자연스러워지거나 아티팩트가 발생하는 단점이 있었다.

BIOS를 통하지 않고도 프로그래머가 직접 VGA 컨트롤러 레지스터를 조작하여 모드 13h로 전환하는 것이 가능하다. 이는 특히 32비트 보호 모드 환경에서 유용하게 사용될 수 있다.

2. 1. 2. 체인 4 설정

모드 13h는 VGA가 일반적으로 사용하는 평면 구조와는 다른 방식으로 동작하여 다소 특이하다. VGA 메모리는 본래 4개의 64KiB 뱅크(평면 또는 IBM 문서에서는 '맵'이라고도 함)로 구성되어 총 256KiB 크기를 가지며, 픽셀 데이터는 이 평면들에 나뉘어 저장된다. 특정 픽셀에 접근하려면 해당 평면을 선택해야 하므로 프로그래밍이 복잡해지지만, 이 방식은 사용 가능한 모든 비디오 메모리에 접근할 수 있게 해준다는 장점이 있다(모드 X 참조).

하지만 모드 13h는 VGA의 "체인 4" 설정을 이용하여 프로그래머가 비디오 메모리를 마치 하나의 연속된 공간처럼, 즉 선형(청키, chunky) 방식으로 다룰 수 있게 해준다. 이 방식에서는 메모리의 연속된 주소가 화면의 연속된 픽셀에 직접 대응하므로, 픽셀을 다루기 위해 복잡하게 평면을 계산할 필요가 없어진다.

체인 4 설정은 16비트 메모리 주소의 하위 2비트를 사용하여 접근할 4개의 평면 중 하나를 선택하는 방식으로 작동한다. 이 덕분에 프로그래머는 훨씬 간단한 메모리 접근 모델을 사용할 수 있다는 장점이 있다. 그러나 단점도 존재한다. 주소 비트 중 2개가 평면 선택에 사용되므로, 각 평면당 주소 지정 가능한 공간은 214, 즉 16KiB로 줄어든다. 결과적으로 모드 13h에서는 4개 평면을 합쳐 총 64KiB(4 × 16KiB)의 메모리만 사용할 수 있으며, 각 평면의 나머지 상위 48KiB 영역은 이 모드에서 사용되지 않는다.

모드 13h는 MCGA 비디오 모드 집합의 일부이며, 18비트 색상(RGB 각 채널당 6비트)을 지원한다. 색상 정보는 색상 팔레트 형태로 관리된다. 이 팔레트 데이터는 메모리에 직접 저장되는 것이 아니라, 낮은 수준의 I/O 포트 호출을 통해 DAC 레지스터에서 수정, 읽기 및 쓰기가 이루어진다.

2. 2. 색상 처리

모드 13h는 MCGA 비디오 모드 중 하나로, 18비트 색상 체계를 사용한다. 이는 빨강(R), 초록(G), 파랑(B) 각 채널당 6비트를 할당하여 총 218 (262,144)가지 색상을 표현할 수 있다.

SVGA 등 후속 그래픽 표준과 달리, 모드 13h의 색상 팔레트 정보는 비디오 메모리에 직접 저장되지 않는다. 대신, 프로그래머는 I/O 포트를 통해 DAC 레지스터에 직접 접근하여 256개의 팔레트 항목 각각에 대한 RGB 값을 설정해야 한다. 화면의 각 픽셀은 이 256색 팔레트 중 하나의 인덱스(0~255) 값을 가지며, 실제 출력되는 색상은 DAC에 설정된 팔레트 정보에 따라 결정된다. 따라서 팔레트 정보가 잘못되면 의도치 않은 색상으로 표시될 수 있다. 예를 들어 녹색이 파란색으로 보이는 식이다.

2. 2. 1. 색상 팔레트 저장 및 복원

모드 13h는 MCGA 비디오 모드 중 하나로, 18비트 색상(RGB 각 6비트)을 지원한다. 색상 팔레트 데이터는 비디오 메모리에 직접 저장되지 않고, 낮은 수준의 입출력 포트 호출을 통해 DAC 레지스터에서 설정하고 읽어온다.

화면 데이터를 저장할 때, 팔레트 정보도 함께 저장하는 기법이 흔히 사용되었다. 모드 13h 화면은 320x200 해상도에 256색을 사용하므로, 화면 데이터는 각 픽셀의 색상 인덱스(0~255)를 나타내는 64,000 바이트로 구성된다. 팔레트 데이터 자체는 256가지 색상 각각에 대한 RGB 값(색상당 3바이트)으로 총 768바이트(256 × 3)이다. 이 768바이트의 팔레트 데이터를 화면 데이터(64,000 바이트) 바로 뒤에 이어서 저장하는 방식이다. 이는 VGA 메모리 주소 공간에서 모드 13h가 사용하지 않는 영역(세그먼트 0xA000의 오프셋 64000 이후)을 활용한 것이다. 이렇게 하면 화면 이미지와 해당 이미지에 맞는 색상 팔레트를 하나의 파일로 묶어 관리할 수 있다.

저장된 이미지를 다시 불러올 때는, 파일 끝에 저장된 768바이트의 팔레트 데이터를 읽어 DAC 레지스터에 다시 기록하여 원래의 색상을 복원한다. 만약 팔레트 정보가 없거나 잘못된 팔레트가 적용되면, 이미지의 색상이 완전히 다르게 표시될 수 있다. 예를 들어 녹색 잎이 파란색으로 보이는 식이다.

여러 이미지 간의 색상 표현을 통일하기 위해 전역 팔레트를 사용하는 방법도 있었다. 이는 미리 정의된 하나의 공통 팔레트를 사용하고, 개별 이미지의 색상을 이 전역 팔레트에 가장 가깝게 대응시키는 방식이다. 즉, 각 픽셀의 색상 인덱스를 조정하여 원래 색상과 가장 유사한 전역 팔레트의 색상을 가리키도록 변경한다. 하지만 이 방법은 제한된 색상으로 다양한 이미지를 표현해야 하므로, 색상 표현의 정밀도가 떨어져 그라데이션이 부자연스러워지거나 예상치 못한 아티팩트가 발생하는 단점이 있었다.

2. 3. 변형 모드

체인 4 모드를 비활성화(언체인)하여 사용할 수 있는 다른 평면 256색 모드가 있다. 이 기술을 사용하여 생성된 비디오 모드를 통칭하여 모드 X라고 부른다. 원래 이 용어는 정사각형 픽셀을 가진 VGA 모드를 지칭하는 데 사용되었다. 이러한 모드들과 다른 많은 가능한 VGA 모드들은 IBM에서 구체적으로 문서화하지는 않았다. 그러나 이를 구현하는 데 사용된 VGA 하드웨어 기능은 1988년 이전에 "PS/2 하드웨어 인터페이스 기술 참조"라는 문서를 통해 이미 알려져 있었다.

3. 표기법

x86 어셈블리 언어에서는 모드 13h를 설정할 때, 레지스터 AL에 13h를, AH에 0을 넣고 BIOS INT 10h 인터럽트를 호출한다.[2] 이때 숫자 뒤에 붙는 'h'는 16진수를 나타내는 표기법이다. 하지만 퀵베이직과 같이 'h' 표기법을 지원하지 않는 언어에서는 이 'h'를 생략하기도 한다. 예를 들어, 퀵베이직과 그 파생 언어에서는 모드 13h를 '화면 모드 13'이라고 부른다.[3] 퀵베이직은 자체적인 화면 모드 번호 체계를 가지고 있어서, 많은 퀵베이직 화면 모드는 실제 BIOS 모드 번호와 다른 번호를 사용한다.[4]

C 언어와 같이 C 문법의 영향을 받은 여러 프로그래밍 언어에서는 16진수 13을 `0x13`과 같이 숫자 앞에 `0x`를 붙여 표기한다.

참조

[1] 서적 GAME ENGINE BLACK BOOK: WOLFENSTEIN 3D https://fabiensangla[...]
[2] 웹사이트 Ralf Brown's Interrupt List http://www.ctyme.com[...] 2018-08-24
[3] 웹사이트 Microsoft QuickBasic 4.5 Advisor http://www.qbasicnew[...] Microsoft 1990
[4] 문서
[5] 서적 GAME ENGINE BLACK BOOK: WOLFENSTEIN 3D https://fabiensangla[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com