래스터 인터럽트
Raster interrupt래스터 인터럽트(수평 공백 인터럽트라고도 함)는 컴퓨터 시스템에서 디스플레이 타이밍에 사용되는 인터럽트 신호다.프레임의 스캔 라인을 모니터로 전송하여 디스플레이를 위해 판독할 때, 일반적으로 항상은 아니지만 시스템의 그래픽 칩에 의해 생성된다.
그러한 인터럽트는 그래픽 레지스터가 중간 프레임으로 변경될 수 있는 메커니즘을 제공하므로 인터럽트 포인트 위와 아래에서 다른 값을 갖는다.이를 통해 단일 색상의 물체는 예를 들어 여러 개의 수평 색 띠를 가질 수 있고, 또는 스프라이트를 재배치하여 시스템이 지원하는 것보다 더 많은 스프라이트가 있는 것처럼 착각할 수 있다.제한사항은 변경사항이 인터럽트 아래의 표시장치 부분에만 영향을 미친다는 것이다.그들은 단일 스캔 라인에서 더 많은 색상이나 더 많은 스프라이트를 허용하지 않는다.
래스터 인터럽트를 지원하는 시스템
몇몇 인기 있는 가정용 컴퓨터와 비디오 게임 콘솔은 래스터 인터럽트를 지원하는 그래픽 칩을 포함하거나 래스터 인터럽트처럼 작동하도록 결합할 수 있는 기능을 가지고 있었다.
밸리 애스트로케이드 (1977년)
아타리 8비트 제품군(ANTIC 칩, 1979년)
아타리 8비트 패밀리가 사용하는 ANTIC 칩에는 디스플레이를 그릴 때 트리거되는 디스플레이 목록 인터럽트(DLIs)가 포함된다.[1][2]ANTIC 칩 자체는 상당히 강력하고 본질적으로 다른 시스템들이 복제하기 위해 래스터 인터럽트를 필요로 하는 많은 기능을 할 수 있다.ANTIC는 화면에서 여러 그래픽 모드를 혼합하여 수평 및 수직 오버스캔 그래픽을 표시하고 선택한 수평 영역을 미세 스크롤할 수 있다.아타리의 DLI는 일반적으로 디스플레이에 색을 추가하고 플레이어/미사일 그래픽 요소를 재사용하는 데 사용된다.
Commodore 64(MOS Technology VIC-II 칩, 1982년)
C64의 VIC-II에는 유연한 래스터 인터럽트 시스템이 있다.래스터 인터럽트와 CPU 개입은 화면에서 스프라이트를 재사용하고 그래픽 모드를 혼합하며 화면 영역을 선택적으로 스크롤하기 위해 필요하다.
닌텐도 엔터테인먼트 시스템(PPPU 칩, 1983년)
닌텐도 엔터테인먼트 시스템의 PPU 그래픽 칩은 진정한 래스터 인터럽트를 지원하지 않는다 - 수직 빈 간격 동안 트리거하도록 인터럽트를 설정할 수 있지만 임의의 스캔 라인에서는 설정할 수 없다 - 대신 첫 스프라이트가 그려질 때를 나타내는 "히트 플래그" 폴링이 필요했다.슈퍼 마리오브라더스, 캐슬바니아, 젤다의 레전드 같은 초기 게임들이 이 방법으로 효과적인 분할 화면 스크롤을 만들어냈지만 CPU 집약적이다.이후 일부 카트리지에는 PPU의 주소와 데이터 라인을 추적하는 MMC 회로(가장 두드러지게 닌텐도의 MMC3 칩)가 통합되어 래스터 인터럽트가 생성되었다.
MSX2(야마하 V9938, 1985년)
MSX2 컴퓨터에는 NES와 마찬가지로 '수직 공백 인터럽트'를 지원하지만 '수평 공백 인터럽트'에 대한 폴링이 필요한 전용 Yamaha V9938 VDP(Video Display Processor)가 탑재되어 있다.스플릿 스크린을 만들고, 한 화면에서 여러 개의 비디오 모드를 함께 섞고, 공식 사양을 넘어 스크린의 고유 색상을 늘리는 데 주로 사용됐다.대표적인 사용 사례로는 알레스트 시리즈와 코나미의 스페이스 맨보우가 있다.
아미가 코모도어 (코퍼칩, 1985년)
아미가 컴퓨터에는 래스터 인터럽트 서비스 전용 코퍼라는 사용자 정의 코프로세서가 포함되어 있다.Copper는 특정 수직 스캔 라인 및 수평 빔 위치를 기다린 다음 사용자 지정 칩 하드웨어 레지스터의 내용을 업데이트하도록 지시하는 간단한 명령 프로그램을 실행한다.이것은 일반적으로 디스플레이 모드 혼합, 스프라이트 재사용 또는 색상 레지스터 변경과 같은 표시 파라미터를 수정하는 데 사용되지만 CPU 인터럽트를 트리거하는 데도 사용할 수 있다.
닌텐도 게임보이(PPPU 칩, 1989년)
게임보이 PPU는 네 가지 래스터 인터럽트를 지원한다.[3] 즉, 지정된 스캔라인 시작, 스캔라인 끝(수평 블랭킹), 모든 스캔라인 시작 또는 수직 블랭킹 시작에서 트리거하도록 설정할 수 있다.그것의 가장 큰 단점은 첫 번째 세 가지에 동일한 인터럽트 핸들러를 사용한다는 것인데, 두 가지 이상의 조건을 사용할 경우 "분산" 코드를 사용해야 한다.
참조
- ^ De Re Atari. Atari, Inc. 1982.
- ^ Watson, Alan (1982). "An Introduction To Display List Interrupts". COMPUTE!'s Second Book of Atari.
- ^ "Video Display". GBDev Wiki. Retrieved 20 October 2017.