1P by neo 2달전 | favorite | 댓글 1개

슈퍼 닌텐도 비디오 시스템 설계

90년대 초 TV의 내부
  • 슈퍼 닌텐도는 표준 TV 세트에 비디오를 출력함
  • TV는 안테나를 통해 아날로그 TV 방송(NTSC)을 수신하고, 튜너를 통해 신호를 받아 CRT(음극선관)에 이미지를 표시함
  • TV에는 보조 입력(AUX)이 있으며, 기본 TV 세트에는 비디오 신호를 전달하는 컴포지트 커넥터(노란색)와 스테레오 오디오 신호를 전달하는 전용 잭(흰색 및 빨간색)이 있음
CRT의 작동 원리
  • CRT는 15kHz로 작동하며 초당 약 15,000개의 선을 그림
  • CRT 내부에는 세 개의 전자포가 있으며, 전자포는 항상 정면으로 전자를 발사하고, 두 개의 자석 세트(수직 및 수평)가 전자를 위아래 및 좌우로 이동시킴
  • CRT에는 픽셀이 없으며, 전자포에서 발사된 전자는 항상 올바른 색상 스트립에 도달함
CRT 제어 방법
  • CRT는 빨강, 초록, 파랑 신호를 각각의 전자포에 연결하여 소비함
  • 동기화 신호(HSYNC 및 VSYNC)는 하나의 흰색 와이어를 통해 전달되며, 이를 합성 동기화(CSYNC)라고 함
  • CRT는 신호를 소비하고 전자포를 동기화하려고 시도함
CRT가 이미지를 그리는 방법
  • CRT는 왼쪽에서 오른쪽으로 선을 그림
  • HSYNC 이벤트를 받으면 화면의 왼쪽(X=0)으로 돌아가고, VSYNC 이벤트를 받으면 화면의 맨 위(Y=0)로 돌아감
  • CRT는 오른쪽으로 이동하면서 아래로 기울어지며 선을 그림
CRT 이해의 핵심
  • CRT의 핵심은 전자포가 화면의 오른쪽으로 이동하면서 아래로 기울어지는 것을 이해하는 것임
  • VSYNC가 마지막 HSYNC와 동시에 발생하면 선이 항상 화면의 동일한 위치에 그려짐
  • VSYNC가 두 HSYNC 사이에 발생하면 선이 교차하여 그려짐
선 내부의 내용
  • CRT는 선을 그릴 때는 디지털이지만, 선 내부의 내용은 아날로그임
  • 세 개의 전자포는 RGB 와이어에 직접 연결되어 있으며, 시스템은 색상 신호를 자유롭게 변경할 수 있음
기존 시스템 처리
  • SNES 설계자는 CRT가 처리할 수 있는 신호를 제공해야 했음
  • NTSC 신호 사양을 준수해야 했음
  • 4:3 화면 비율, 필드당 262.5개의 선, 선당 341.25개의 점, 필드 주파수 59.94Hz
닌텐도 엔지니어 되기
  • CRT가 작동하는 방식을 이해한 후, 비디오 시스템을 설계해야 했음
  • 262개의 선을 사용하여 프로그레시브 모드를 만들고, 59.94Hz의 프레임 속도를 목표로 함
  • 350개의 점을 사용하여 4:3 화면 비율을 맞추고, 5,496,498Hz의 도트 클럭이 필요함
문제 해결
  • 5,496,498Hz의 도트 클럭을 사용할 수 없었음
  • 마스터 오실레이터를 사용하여 서브 시스템이 분주기를 통해 사용해야 했음
  • 오버스캔 문제를 해결해야 했음
오버스캔 도입
  • 전자포가 수평 또는 수직으로 리셋될 때 전자를 계속 발사하면 가시적인 아티팩트가 발생함
  • TV는 화면 영역을 오버스캔하여 화면이 약간 더 크게 표시됨
  • VSYNC 및 HSYNC 후에 전자포를 멈추는 시간이 필요함
SNES 수직 해상도 선택
  • 경쟁 시스템은 224개의 가시적인 선을 사용함
  • 닌텐도는 262개의 선을 224개의 가시적인 선과 38개의 빈 선으로 나눔
SNES 수평 해상도 선택
  • 262개의 선을 사용하고, 21.47727MHz의 마스터 클럭을 사용하여 5.3693175MHz의 도트 클럭을 얻음
  • 341개의 점을 사용하여 60.098Hz의 프레임 속도를 얻음
SNES 수평 오버스캔 선택
  • 341개의 점 중 256개의 가시적인 점을 사용하고, 85개의 점을 HBLANK로 사용함
  • 화면 비율은 8:7로 약간의 왜곡이 발생함
고해상도 모드: 인터레이싱
  • 수직 해상도를 448개의 선으로 두 배로 늘릴 수 있음
  • 수평 해상도를 두 배로 늘리는 것은 어려움
PAL 대 NTSC
  • 유럽에서는 NTSC 대신 PAL을 사용하고, 프랑스에서는 SECAM을 사용함
  • PAL은 50Hz의 프레임 속도와 필드당 312.5개의 선을 사용함
  • PAL 버전의 SNES는 17.7344750MHz의 마스터 클럭을 사용함
  • 가시적인 해상도는 224개의 선과 256개의 점을 사용하고, 프레임 속도는 50.00697891Hz임
출력
  • SNES는 CRT 신호를 컴포지트 및 S-Video로 변환함
  • AV 커넥터를 통해 순수 "RGB/CSync" 신호, "Composite" 신호, 및 S-Video 신호를 제공함

GN⁺의 정리

  • 이 글은 슈퍼 닌텐도 비디오 시스템의 설계 과정을 설명하며, CRT의 작동 원리와 신호 처리 방식을 다룸
  • CRT의 동작 방식과 신호 처리에 대한 이해를 통해 SNES 비디오 시스템의 설계 결정을 설명함
  • 이 글은 비디오 게임 콘솔의 하드웨어 설계에 관심이 있는 사람들에게 유익하며, CRT 기술의 역사와 작동 원리를 이해하는 데 도움이 됨
  • 비슷한 기능을 가진 다른 프로젝트로는 Sega Genesis와 Neo-Geo AES가 있음
Hacker News 의견
  • 224는 16으로 나누어 떨어지는 숫자라서 그래픽 렌더링 파이프라인 타일맵과 잘 맞음

    • CGA/EGA/VGA는 모두 320x200 모드를 가졌음
    • NES는 256x224였고, SNES도 마찬가지였음
    • Pac-man은 아케이드에서 288x224였음
    • PC에서 Pacman 클론은 항상 이상하게 보였음
    • 기계의 세부 사항을 배우고 나서야 이해하게 되었음
    • 픽셀이 PC 해상도에서 정사각형이 아님
    • Pacman 포트나 클론을 보면 세계 크기, 타일 크기, 스프라이트 크기를 알아내려고 했음
  • 59.94Hz는 이상한 숫자임

    • 북미와 몇몇 다른 지역은 60Hz 전력망을 사용함
  • 8:7 아트워크 비율은 다른 플랫폼으로 포팅된 SFC/SNES 게임에서 볼 수 있음

    • PSX/Saturn/PC 버전은 원본 아트를 유지하고 4:3으로 패딩을 추가함
    • Saturn 버전의 스크린샷을 보면 모든 것이 약간 너무 날씬해 보임
  • 유럽 게임은 50.00697891Hz에서 VSYNC가 발생하여 게임이 의도보다 17% 느리게 실행됨

    • Sonic the Hedgehog를 Mega Drive에서 처음 플레이했을 때 실망했음
    • NTSC와 PAL의 속도 차이를 유튜브를 통해 알게 되었음
    • 음악도 PAL에서 끔찍하게 들림
    • SNES의 DooM은 NTSC 버전이 더 큰 화면을 가졌음
    • NES에서 Punch-Out을 잘했지만, 미국에서 경쟁했다면 첫 라운드에서 패배했을 것임
  • TFA에 오타가 있음; 8:6 비율은 4:3과 같음

    • RF 출력을 사용하여 SNES와 TV 안테나를 전환했음
  • 256x224 (8:7) 출력 해상도가 4:3 이미지로 확장됨

    • SNES의 도트 속도는 ATSC 표준의 정사각형 픽셀 속도보다 느림
    • 픽셀이 가로로 8/7로 확장되어 8:7 해상도가 64:49로 확장됨
    • 224*(4/3) = 298 가시 도트가 됨
    • 224*(7/6) = 261.33... 가시 도트가 더 가까움
  • CRT 외관을 정확하게 시뮬레이션하는 에뮬레이터가 있는지 궁금함

    • GPU 셰이더로 성능적으로 가능할 것임
  • 이로 인해 상징적인 게임 디자인이 어떻게 이루어졌는지에 대한 통찰을 기대했음

    • SNES를 사랑했지만 부모님을 설득하지 못했음
    • 글 작성에 감사함. 매우 흥미로웠음