편집 요약 없음 |
잔글 →함께 보기 |
||
| (사용자 3명의 중간 판 6개는 보이지 않습니다) | |||
| 1번째 줄: | 1번째 줄: | ||
{{ NES }} | |||
{{ NesDev발췌 | 원글링크=https://www.nesdev.org/wiki/PPU_nametables }} | |||
PPU가 배경을 배치하는 데 사용하는 1024바이트 메모리 영역을 '''네임테이블'''이라고 한다. | PPU가 배경을 배치하는 데 사용하는 1024바이트 메모리 영역을 '''네임테이블'''이라고 한다. | ||
각 네임테이블의 바이트는 하나의 8x8 픽셀 문자 셀을 제어하며, 각 네임테이블에는 30개의 행에 각각 32개의 타일이 있어 960($3C0)바이트가 된다. 나머지 64($40)바이트는 각 네임테이블의 [[PPU | 각 네임테이블의 바이트는 하나의 8x8 픽셀 문자 셀을 제어하며, 각 네임테이블에는 30개의 행에 각각 32개의 타일이 있어 960($3C0)바이트가 된다. 나머지 64($40)바이트는 각 네임테이블의 [[PPU 속성 테이블|속성 테이블]]에서 사용된다. | ||
각 타일이 8x8 픽셀이므로, 이는 하나의 맵에서 총 256x240 픽셀이 되며, 이는 전체 화면 크기와 같다. | 각 타일이 8x8 픽셀이므로, 이는 하나의 맵에서 총 256x240 픽셀이 되며, 이는 전체 화면 크기와 같다. | ||
| 20번째 줄: | 23번째 줄: | ||
(0,479) (256,479) (511,479) | (0,479) (256,479) (511,479) | ||
</div> | </div> | ||
==미러링== | ==미러링== | ||
: ''참조: [[미러링]]'' | |||
NES에는 2x2 패턴으로 배열된 4개의 논리적 네임테이블이 있다. 각 네임테이블은 PPU 주소 공간의 1KiB 청크를 차지하며, 왼쪽 상단부터 $2000, 오른쪽 상단 $2400, 왼쪽 하단 $2800, 오른쪽 하단 $2C00 순서이다. | NES에는 2x2 패턴으로 배열된 4개의 논리적 네임테이블이 있다. 각 네임테이블은 PPU 주소 공간의 1KiB 청크를 차지하며, 왼쪽 상단부터 $2000, 오른쪽 상단 $2400, 왼쪽 하단 $2800, 오른쪽 하단 $2C00 순서이다. | ||
| 33번째 줄: | 37번째 줄: | ||
== 배경 평가 == | == 배경 평가 == | ||
[[PPU 렌더링]] | |||
개념적으로 PPU는 각 스캔라인에 대해 이 작업을 33번 수행한다: | 개념적으로 PPU는 각 스캔라인에 대해 이 작업을 33번 수행한다: | ||
| 45번째 줄: | 49번째 줄: | ||
== 함께 보기 == | == 함께 보기 == | ||
* [[PPU 메모리 맵]] | |||
* [[PPU 속성 테이블]] | |||
[[분류:패미컴]] | |||
2025년 10월 3일 (금) 22:10 기준 최신판
| 해당 내용은 NES에 국한된 내용입니다. 해당 문서의 내용의 일부는 NES(패미컴) 외에서는 해당 내용이 적용되지 않을 수 있습니다. |
| 해당 문서는 NesDev의 문서를 번역했습니다. 해당 문서의 전체 또는 일부는 NesDev의 문서를 번역했습니다. 원문서는 CC0 1.0 Universal이므로 가져와도 문제가 없습니다. 원글링크: [1] |
PPU가 배경을 배치하는 데 사용하는 1024바이트 메모리 영역을 네임테이블이라고 한다. 각 네임테이블의 바이트는 하나의 8x8 픽셀 문자 셀을 제어하며, 각 네임테이블에는 30개의 행에 각각 32개의 타일이 있어 960($3C0)바이트가 된다. 나머지 64($40)바이트는 각 네임테이블의 속성 테이블에서 사용된다. 각 타일이 8x8 픽셀이므로, 이는 하나의 맵에서 총 256x240 픽셀이 되며, 이는 전체 화면 크기와 같다.
(0,0) (256,0) (511,0)
+-----------+-----------+
| | |
| | |
| $2000 | $2400 |
| | |
| | |
(0,240)+-----------+-----------+(511,240)
| | |
| | |
| $2800 | $2C00 |
| | |
| | |
+-----------+-----------+
(0,479) (256,479) (511,479)
미러링[편집]
- 참조: 미러링
NES에는 2x2 패턴으로 배열된 4개의 논리적 네임테이블이 있다. 각 네임테이블은 PPU 주소 공간의 1KiB 청크를 차지하며, 왼쪽 상단부터 $2000, 오른쪽 상단 $2400, 왼쪽 하단 $2800, 오른쪽 하단 $2C00 순서이다.
하지만 NES 시스템 보드 자체에는 2KiB의 VRAM(별도의 SRAM 칩에 저장된 CIRAM이라고 함)만 있어 두 개의 물리적 네임테이블만 저장할 수 있다. 카트리지의 하드웨어는 CIRAM의 주소 비트 10을 제어하여 하나의 네임테이블을 다른 네임테이블 위에 매핑한다.
- 수평 배열: $2000과 $2800은 첫 번째 네임테이블을, $2400과 $2C00은 두 번째 네임테이블을 포함한다(예: 슈퍼 마리오 브라더스). 이는 CIRAM A10을 PPU A10에 연결하여 수행된다.
- 수직 배열: $2000과 $2400은 첫 번째 네임테이블을, $2800과 $2C00은 두 번째 네임테이블을 포함한다(예: 키드 이카루스). 이는 CIRAM A10을 PPU A11에 연결하여 수행된다.
- 단일 화면: 모든 네임테이블은 주어진 시간에 동일한 메모리를 참조하며, 매퍼는 CIRAM A10을 직접 조작한다(예: AxROM을 사용하는 많은 Rare 게임).
- 4화면 네임테이블: 카트리지에는 모든 네임테이블에 사용되는 추가 VRAM이 포함되어 있다(예: 건틀릿, 래드 레이서 2).
- 기타: 일부 고급 매퍼는 네임테이블 영역에 CIRAM, VRAM 또는 CHR ROM의 임의 조합을 제공할 수 있다. 이러한 특이한 설정은 거의 사용되지 않는다.
배경 평가[편집]
PPU 렌더링 개념적으로 PPU는 각 스캔라인에 대해 이 작업을 33번 수행한다:
- $2000-$2FFF에서 네임테이블 항목을 가져온다.
- $23C0-$2FFF에서 해당 속성 테이블 항목을 가져오고 동일한 행 내에서 현재 VRAM 주소를 증가시킨다.
- $0000-$0FF7 또는 $1000-$1FF7에서 8x1 픽셀 패턴 테이블 조각의 하위 바이트를 가져온다.
- 8바이트 더 높은 주소에서 이 조각의 상위 바이트를 가져온다.
- 속성 데이터와 패턴 테이블 데이터를 팔레트 인덱스로 변환하고, 우선 순위를 사용하여 스프라이트 데이터의 데이터와 결합한다.
또한 사용되지 않는 34번째 (네임테이블, 속성, 패턴) 튜플을 가져오지만, 일부 mapper는 타이밍 목적으로 이 가져오기에 의존한다.