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)
참조: PPU memory map

미러링

틀:Mirroring 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 rendering 개념적으로 PPU는 각 스캔라인에 대해 이 작업을 33번 수행한다:

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

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

함께 보기