PPU 네임테이블: 두 판 사이의 차이

편집 요약 없음
편집 요약 없음
49번째 줄: 49번째 줄:


== 함께 보기 ==
== 함께 보기 ==
+ [[PPU memory map]]
+ [[PPU 메모리 맵]]
* [[PPU 속성 테이블]]
* [[PPU 속성 테이블]]
[[분류:패미컴]]

2025년 10월 3일 (금) 22:09 판

해당 내용은 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번 수행한다:

  1. $2000-$2FFF에서 네임테이블 항목을 가져온다.
  2. $23C0-$2FFF에서 해당 속성 테이블 항목을 가져오고 동일한 행 내에서 현재 VRAM 주소를 증가시킨다.
  3. $0000-$0FF7 또는 $1000-$1FF7에서 8x1 픽셀 패턴 테이블 조각의 하위 바이트를 가져온다.
  4. 8바이트 더 높은 주소에서 이 조각의 상위 바이트를 가져온다.
  5. 속성 데이터와 패턴 테이블 데이터를 팔레트 인덱스로 변환하고, 우선 순위를 사용하여 스프라이트 데이터의 데이터와 결합한다.

또한 사용되지 않는 34번째 (네임테이블, 속성, 패턴) 튜플을 가져오지만, 일부 mapper는 타이밍 목적으로 이 가져오기에 의존한다.

함께 보기

+ PPU 메모리 맵