편집 요약 없음 |
편집 요약 없음 |
||
| (사용자 3명의 중간 판 6개는 보이지 않습니다) | |||
| 1번째 줄: | 1번째 줄: | ||
== | {{ NES }} | ||
{{ NesDev발췌 | 원글링크=https://www.nesdev.org/w/index.php?title=PPU_memory_map }} | |||
[[PPU]]는 CPU의 주소 버스와 완전히 분리된 14비트(16kB) 주소 공간, $0000-$3FFF를 주소 지정한다. PPU 자체에서 직접 접근하거나, $2006과 $2007에 있는 [[PPU 레지스터|메모리 매핑된 레지스터]]를 통해 CPU로 접근할 수 있다. | [[PPU]]는 CPU의 주소 버스와 완전히 분리된 14비트(16kB) 주소 공간, $0000-$3FFF를 주소 지정한다. PPU 자체에서 직접 접근하거나, $2006과 $2007에 있는 [[PPU 레지스터|메모리 매핑된 레지스터]]를 통해 CPU로 접근할 수 있다. | ||
{| class=" | {| class="wikitable" | ||
! 주소 범위 || 크기 || 설명 || 매핑 주체 | ! 주소 범위 || 크기 || 설명 || 매핑 주체 | ||
|- | |- | ||
| 10번째 줄: | 11번째 줄: | ||
| $1000-$1FFF || $1000 || 패턴 테이블 1 || 카트리지 | | $1000-$1FFF || $1000 || 패턴 테이블 1 || 카트리지 | ||
|- | |- | ||
| $2000-$23BF || $03c0 || [[PPU | | $2000-$23BF || $03c0 || [[PPU 네임테이블]] 0 || 카트리지 | ||
|- | |- | ||
| $23C0-$23FF || $0040 || [[PPU attribute tables|속성 테이블]] 0 || 카트리지 | | $23C0-$23FF || $0040 || [[PPU attribute tables|속성 테이블]] 0 || 카트리지 | ||
| 39번째 줄: | 40번째 줄: | ||
* $0000-1FFF는 일반적으로 카트리지에 의해 [[CHR ROM vs. CHR RAM|CHR-ROM 또는 CHR-RAM]]에 매핑되며, 종종 뱅크 스위칭 메커니즘이 있다. | * $0000-1FFF는 일반적으로 카트리지에 의해 [[CHR ROM vs. CHR RAM|CHR-ROM 또는 CHR-RAM]]에 매핑되며, 종종 뱅크 스위칭 메커니즘이 있다. | ||
* $2000-2FFF는 일반적으로 2kB NES 내부 VRAM에 매핑되어 카트리지에 의해 제어되는 [[ | * $2000-2FFF는 일반적으로 2kB NES 내부 VRAM에 매핑되어 카트리지에 의해 제어되는 [[미러링#네임테이블 미러링|미러링]] 구성으로 2개의 네임테이블을 제공하지만, 카트리지의 ROM 또는 RAM에 부분적으로 또는 완전히 다시 매핑될 수 있어 최대 4개의 동시 네임테이블을 허용한다. | ||
* $3000-3EFF는 일반적으로 $2000-2EFF의 2kB 영역의 미러이다. PPU는 이 주소 범위에서 렌더링하지 않으므로 이 공간은 거의 사용되지 않는다. | * $3000-3EFF는 일반적으로 $2000-2EFF의 2kB 영역의 미러이다. PPU는 이 주소 범위에서 렌더링하지 않으므로 이 공간은 거의 사용되지 않는다. | ||
| 48번째 줄: | 49번째 줄: | ||
또한 PPU는 내부에 [[PPU OAM|객체 속성 메모리]]로 알려진 256바이트의 메모리를 포함하고 있으며, 이는 스프라이트가 렌더링되는 방식을 결정한다. CPU는 [[OAMADDR]] ($2003), [[OAMDATA]] ($2004), [[OAMDMA]] ($4014)의 [[PPU registers|메모리 매핑된 레지스터]]를 통해 이 메모리를 조작할 수 있다. OAM은 64개의 항목이 있는 배열로 볼 수 있다. 각 항목에는 스프라이트 Y 좌표, 스프라이트 타일 번호, 스프라이트 속성, 스프라이트 X 좌표의 4바이트가 있다. | 또한 PPU는 내부에 [[PPU OAM|객체 속성 메모리]]로 알려진 256바이트의 메모리를 포함하고 있으며, 이는 스프라이트가 렌더링되는 방식을 결정한다. CPU는 [[OAMADDR]] ($2003), [[OAMDATA]] ($2004), [[OAMDMA]] ($4014)의 [[PPU registers|메모리 매핑된 레지스터]]를 통해 이 메모리를 조작할 수 있다. OAM은 64개의 항목이 있는 배열로 볼 수 있다. 각 항목에는 스프라이트 Y 좌표, 스프라이트 타일 번호, 스프라이트 속성, 스프라이트 X 좌표의 4바이트가 있다. | ||
{| class=" | {| class="wikitable" | ||
! 주소 하위 니블 || 설명 | ! 주소 하위 니블 || 설명 | ||
|- | |- | ||
| 59번째 줄: | 60번째 줄: | ||
| $3, $7, $B, $F || 스프라이트 X 좌표 | | $3, $7, $B, $F || 스프라이트 X 좌표 | ||
|} | |} | ||
[[분류:패미컴]] | |||
2025년 10월 3일 (금) 22:10 기준 최신판
| 해당 내용은 NES에 국한된 내용입니다. 해당 문서의 내용의 일부는 NES(패미컴) 외에서는 해당 내용이 적용되지 않을 수 있습니다. |
| 해당 문서는 NesDev의 문서를 번역했습니다. 해당 문서의 전체 또는 일부는 NesDev의 문서를 번역했습니다. 원문서는 CC0 1.0 Universal이므로 가져와도 문제가 없습니다. 원글링크: [1] |
PPU는 CPU의 주소 버스와 완전히 분리된 14비트(16kB) 주소 공간, $0000-$3FFF를 주소 지정한다. PPU 자체에서 직접 접근하거나, $2006과 $2007에 있는 메모리 매핑된 레지스터를 통해 CPU로 접근할 수 있다.
| 주소 범위 | 크기 | 설명 | 매핑 주체 |
|---|---|---|---|
| $0000-$0FFF | $1000 | 패턴 테이블 0 | 카트리지 |
| $1000-$1FFF | $1000 | 패턴 테이블 1 | 카트리지 |
| $2000-$23BF | $03c0 | PPU 네임테이블 0 | 카트리지 |
| $23C0-$23FF | $0040 | 속성 테이블 0 | 카트리지 |
| $2400-$27BF | $03c0 | 네임테이블 1 | 카트리지 |
| $27C0-$27FF | $0040 | 속성 테이블 1 | 카트리지 |
| $2800-$2BBF | $03c0 | 네임테이블 2 | 카트리지 |
| $2BC0-$2BFF | $0040 | 속성 테이블 2 | 카트리지 |
| $2C00-$2FBF | $03c0 | 네임테이블 3 | 카트리지 |
| $2FC0-$2FFF | $0040 | 속성 테이블 3 | 카트리지 |
| $3000-$3EFF | $0F00 | 사용되지 않음 | 카트리지 |
| $3F00-$3F1F | $0020 | 팔레트 RAM 인덱스 | PPU 내부 |
| $3F20-$3FFF | $00E0 | $3F00-$3F1F의 미러 | PPU 내부 |
하드웨어 매핑[편집]
NES에는 PPU 전용 2kB의 RAM이 있으며, 일반적으로 $2000-$2FFF의 네임테이블 주소 공간에 매핑되지만, 사용자 지정 카트리지 배선을 통해 재라우팅될 수 있다. 위의 매핑은 렌더링 중에 PPU가 데이터를 가져오는 데 사용하는 주소이다. PPU가 패턴, 네임테이블 및 속성 테이블 데이터를 가져오는 실제 장치는 카트리지에 의해 구성된다.
- $0000-1FFF는 일반적으로 카트리지에 의해 CHR-ROM 또는 CHR-RAM에 매핑되며, 종종 뱅크 스위칭 메커니즘이 있다.
- $2000-2FFF는 일반적으로 2kB NES 내부 VRAM에 매핑되어 카트리지에 의해 제어되는 미러링 구성으로 2개의 네임테이블을 제공하지만, 카트리지의 ROM 또는 RAM에 부분적으로 또는 완전히 다시 매핑될 수 있어 최대 4개의 동시 네임테이블을 허용한다.
- $3000-3EFF는 일반적으로 $2000-2EFF의 2kB 영역의 미러이다. PPU는 이 주소 범위에서 렌더링하지 않으므로 이 공간은 거의 사용되지 않는다.
- $3F00-3FFF는 구성할 수 없으며 항상 내부 팔레트 제어에 매핑된다.
OAM[편집]
또한 PPU는 내부에 객체 속성 메모리로 알려진 256바이트의 메모리를 포함하고 있으며, 이는 스프라이트가 렌더링되는 방식을 결정한다. CPU는 OAMADDR ($2003), OAMDATA ($2004), OAMDMA ($4014)의 메모리 매핑된 레지스터를 통해 이 메모리를 조작할 수 있다. OAM은 64개의 항목이 있는 배열로 볼 수 있다. 각 항목에는 스프라이트 Y 좌표, 스프라이트 타일 번호, 스프라이트 속성, 스프라이트 X 좌표의 4바이트가 있다.
| 주소 하위 니블 | 설명 |
|---|---|
| $0, $4, $8, $C | 스프라이트 Y 좌표 |
| $1, $5, $9, $D | 스프라이트 타일 # |
| $2, $6, $A, $E | 스프라이트 속성 |
| $3, $7, $B, $F | 스프라이트 X 좌표 |