PPU 패턴 테이블: 두 판 사이의 차이

Root (토론 | 기여)
편집 요약 없음
편집 요약 없음
 
(사용자 2명의 중간 판 2개는 보이지 않습니다)
1번째 줄: 1번째 줄:
{{ NES }}
{{틀:NesDev발췌 | 원글링크=https://www.nesdev.org/wiki/PPU_pattern_tables }}
{{틀:NesDev발췌 | 원글링크=https://www.nesdev.org/wiki/PPU_pattern_tables }}


PPU에 연결된 메모리 영역인 '''패턴 테이블'''은 배경과 스프라이트를 구성하는 타일의 모양을 정의한다. 이 데이터는 '''CHR'''로도 알려져 있으며, 이를 포함하고 PPU에 연결된 메모리는 [[CHR ROM vs. CHR RAM|CHR-ROM 또는 CHR-RAM]]일 수 있다. ''CHR''은 "character"에서 유래했으며, 각 타일이 단일 문자 문자를 나타낼 수 있는 컴퓨터 텍스트 디스플레이와 관련이 있다.
PPU에 연결된 메모리 영역인 '''패턴 테이블'''은 배경과 스프라이트를 구성하는 타일의 모양을 정의한다. 이 데이터는 '''CHR'''로도 알려져 있으며, 이를 포함하고 PPU에 연결된 메모리는 [[CHR ROM과 CHR RAM|CHR-ROM 또는 CHR-RAM]]일 수 있다. ''CHR''은 "character"에서 유래했으며, 각 타일이 단일 문자 하나를 나타낼 수 있는 컴퓨터 텍스트 디스플레이와 관련이 있다.


[[File:One half fraction CHR.png|frame|right|½ 타일 인코딩]]
[[File:One half fraction CHR.png|frame|right|½ 타일 인코딩]]


패턴 테이블의 각 타일은 16바이트이며 두 개의 평면으로 구성된다.
== 타일 형식 ==
패턴 테이블은 [[2BPP]] [[타일]]들로 구성되며, 각 타일은 16[[바이트]]이며 두 개의 8바이트 평면으로 구성된다.
첫 번째 평면의 각 비트는 픽셀 색상 인덱스의 비트 0을 제어하고, 두 번째 평면의 해당 비트는 비트 1을 제어한다.
첫 번째 평면의 각 비트는 픽셀 색상 인덱스의 비트 0을 제어하고, 두 번째 평면의 해당 비트는 비트 1을 제어한다.


13번째 줄: 15번째 줄:
* 두 비트가 모두 1로 설정된 경우: 픽셀의 색상 인덱스는 3이다.
* 두 비트가 모두 1로 설정된 경우: 픽셀의 색상 인덱스는 3이다.


다이어그램은 ½(분수 2분의 1) 타일이 어떻게 인코딩되는지 보여주며, `.`은 투명 픽셀을 나타낸다.
그림은 ½(분수 2분의 1) 타일이 어떻게 인코딩되는지 보여주며, `.`은 투명 픽셀을 나타낸다.


  비트 평면            픽셀 패턴
  비트 평면            픽셀 패턴
66번째 줄: 68번째 줄:
일반적으로 타일은 서양식 읽기 순서에 따라 왼쪽에서 오른쪽으로, 위에서 아래로 표시된다: 왼쪽 상단에 $00, 그 오른쪽에 $01, 오른쪽 상단에 $0F, 그 다음 두 번째 줄에 $10부터 $1F까지, 오른쪽 하단에 $FF까지 이어진다.
일반적으로 타일은 서양식 읽기 순서에 따라 왼쪽에서 오른쪽으로, 위에서 아래로 표시된다: 왼쪽 상단에 $00, 그 오른쪽에 $01, 오른쪽 상단에 $0F, 그 다음 두 번째 줄에 $10부터 $1F까지, 오른쪽 하단에 $FF까지 이어진다.
일부 에뮬레이터에는 8x16 스프라이트용으로 뷰를 재정렬하는 옵션이 있다. 여기서 처음 두 행은 $00, $02, $04, ..., $1E와 $01, $03, $05, ..., $1F이고, 그 아래의 각 행 쌍은 또 다른 16개의 타일 쌍을 보여준다.
일부 에뮬레이터에는 8x16 스프라이트용으로 뷰를 재정렬하는 옵션이 있다. 여기서 처음 두 행은 $00, $02, $04, ..., $1E와 $01, $03, $05, ..., $1F이고, 그 아래의 각 행 쌍은 또 다른 16개의 타일 쌍을 보여준다.
[[분류:패미컴]]

2025년 10월 3일 (금) 22:13 기준 최신판

해당 내용은 NES에 국한된 내용입니다.
해당 문서의 내용의 일부는 NES(패미컴) 외에서는 해당 내용이 적용되지 않을 수 있습니다.
해당 문서는 NesDev의 문서를 번역했습니다.
해당 문서의 전체 또는 일부는 NesDev의 문서를 번역했습니다. 원문서는 CC0 1.0 Universal이므로 가져와도 문제가 없습니다.
원글링크: [1]

PPU에 연결된 메모리 영역인 패턴 테이블은 배경과 스프라이트를 구성하는 타일의 모양을 정의한다. 이 데이터는 CHR로도 알려져 있으며, 이를 포함하고 PPU에 연결된 메모리는 CHR-ROM 또는 CHR-RAM일 수 있다. CHR은 "character"에서 유래했으며, 각 타일이 단일 문자 하나를 나타낼 수 있는 컴퓨터 텍스트 디스플레이와 관련이 있다.

½ 타일 인코딩

타일 형식[편집]

패턴 테이블은 2BPP 타일들로 구성되며, 각 타일은 16바이트이며 두 개의 8바이트 평면으로 구성된다. 첫 번째 평면의 각 비트는 픽셀 색상 인덱스의 비트 0을 제어하고, 두 번째 평면의 해당 비트는 비트 1을 제어한다.

  • 두 비트 모두 1로 설정되지 않은 경우: 픽셀은 배경/투명이다.
  • 첫 번째 평면의 비트만 1로 설정된 경우: 픽셀의 색상 인덱스는 1이다.
  • 두 번째 평면의 비트만 1로 설정된 경우: 픽셀의 색상 인덱스는 2이다.
  • 두 비트가 모두 1로 설정된 경우: 픽셀의 색상 인덱스는 3이다.

이 그림은 ½(분수 2분의 1) 타일이 어떻게 인코딩되는지 보여주며, `.`은 투명 픽셀을 나타낸다.

비트 평면            픽셀 패턴
$0xx0=$41  01000001
$0xx1=$C2  11000010
$0xx2=$44  01000100
$0xx3=$48  01001000
$0xx4=$10  00010000
$0xx5=$20  00100000         .1.....3
$0xx6=$40  01000000         11....3.
$0xx7=$80  10000000  =====  .1...3..
                            .1..3...
$0xx8=$01  00000001  =====  ...3.22.
$0xx9=$02  00000010         ..3....2
$0xxA=$04  00000100         .3....2.
$0xxB=$08  00001000         3....222
$0xxC=$16  00010110
$0xxD=$21  00100001
$0xxE=$42  01000010
$0xxF=$87  10000111

패턴 테이블은 두 개의 256타일 섹션으로 나뉜다: 첫 번째 패턴 테이블은 $0000-$0FFF에 있고 두 번째 패턴 테이블은 $1000-$1FFF에 있다. 때때로 디버거가 있는 에뮬레이터가 표시하는 방식에 따라 "왼쪽" 및 "오른쪽" 패턴 테이블이라는 별명이 붙기도 한다. (아래 표시 규칙 참조)

mapper 기능의 중요한 측면은 패턴 테이블의 일부를 얼마나 세밀하게 뱅크 스위칭할 수 있는지이다.

주소 지정[편집]

패턴 테이블 내의 PPU 주소는 다음과 같이 디코딩할 수 있다:

DCBA98 76543210
---------------
0HNNNN NNNNPyyy
|||||| |||||+++- T: 미세 Y 오프셋, 타일 내의 행 번호
|||||| ||||+---- P: 비트 평면 (0: 하위 비트; 1: 상위 비트)
||++++-++++----- N: 네임 테이블의 타일 번호
|+-------------- H: 패턴 테이블의 절반 (0: "왼쪽"; 1: "오른쪽")
+--------------- 0: 패턴 테이블은 $0000-$1FFF에 있다

PPUCTRL ($2000)에 기록된 값은 배경과 스프라이트가 첫 번째 패턴 테이블($0000-$0FFF)을 사용할지 두 번째 패턴 테이블($1000-$1FFF)을 사용할지 제어한다. PPUCTRL 비트 4는 배경에 적용되고, 비트 3은 8x8 스프라이트에 적용되며, 각 OAM 항목의 타일 번호의 비트 0은 8x16 스프라이트에 적용된다.

예를 들어, 타일의 행 번호가 0부터 7까지인 경우, 왼쪽 패턴 테이블의 타일 $69의 1행은 평면 0이 $0691에, 평면 1이 $0699에 저장된다.

표시 규칙[편집]

Thwaite CHR ROM을 패턴 테이블 뷰어에서 본 모습

디버깅 에뮬레이터의 비디오 메모리 뷰어는 패턴 테이블을 나란히 있는 두 개의 16x16 타일 그리드로 표시하는 것이 일반적이다. 왼쪽에는 $0000-$0FFF의 패턴 테이블을, 오른쪽에는 $1000-$1FFF의 패턴 테이블을 그린다. 각 패턴 테이블은 일반적으로 16행 16타일로 구성된 128x128 픽셀 정사각형으로 표시된다. 일반적으로 타일은 서양식 읽기 순서에 따라 왼쪽에서 오른쪽으로, 위에서 아래로 표시된다: 왼쪽 상단에 $00, 그 오른쪽에 $01, 오른쪽 상단에 $0F, 그 다음 두 번째 줄에 $10부터 $1F까지, 오른쪽 하단에 $FF까지 이어진다. 일부 에뮬레이터에는 8x16 스프라이트용으로 뷰를 재정렬하는 옵션이 있다. 여기서 처음 두 행은 $00, $02, $04, ..., $1E와 $01, $03, $05, ..., $1F이고, 그 아래의 각 행 쌍은 또 다른 16개의 타일 쌍을 보여준다.