경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.스팸 방지 검사입니다. 이것을 입력하지 마세요!=== OAMDMA - 스프라이트 DMA ($4014 쓰기) === ---- 7 bit 0 ---- ---- AAAA AAAA |||| |||| ++++-++++- 소스 페이지 (소스 주소의 상위 바이트) OAMDMA는 CPU를 일시 중단하여 [[DMA]]를 사용하여 CPU 메모리 페이지를 PPU OAM으로 빠르게 복사할 수 있는 CPU 레지스터이다. 항상 256바이트를 복사하고 소스 주소는 항상 페이지 정렬($00으로 끝남)로 시작한다. 이 레지스터에 기록된 값은 소스 주소의 상위 바이트이며, 복사는 쓰기 직후 사이클에서 시작된다. 복사는 513 또는 514 사이클이 걸리며, CPU 메모리에서 읽기와 [[#OAMDATA|OAMDATA]]에 쓰기의 256 쌍으로 구현된다. vblank가 매우 짧고 [[#OAMADDR|OAMADDR]]을 변경하면 종종 OAM이 손상되기 때문에, OAM DMA는 일반적으로 매 프레임마다 스프라이트를 업데이트하는 유일한 현실적인 옵션이다. 데이터가 올바르게 정렬되고 [[Errata|손상을 피하기 위해]] DMA를 시작하기 전에 OAMADDR에 0을 써야 한다.<ref name = "OAMglitch" /> OAM DMA는 렌더링이 비활성화된 상태에서 프레임 중간에 수행할 수 있지만, 일반적으로 vblank에서만 수행된다. OAM은 동적 RAM(DRAM)으로 구성되어 있으며, 자주 새로 고치지 않으면 붕괴된다. 이는 NTSC와 PAL에서 다른 고려 사항이 필요하다. 새로 고침은 DRAM 행을 읽거나 쓸 때마다 자동으로 발생하므로, 렌더링 중 스프라이트 평가 프로세스에 의해 모든 스캔라인에서 새로 고쳐진다. NTSC에서는 vblank가 충분히 짧아서 렌더링이 다시 시작되기 전에 OAM이 붕괴되지 않으므로, OAM DMA는 vblank 중 언제든지 수행할 수 있다. PAL에서는 vblank가 훨씬 길기 때문에 그 시간 동안 붕괴를 피하기 위해 PPU는 NMI 후 24 스캔라인 후에 강제 새로 고침을 자동으로 수행하며, 이 동안에는 OAM에 쓸 수 없다. 이는 OAM DMA가 PAL의 vblank 시작으로 제한된다는 것을 의미한다. NTSC vblank는 24 PAL 스캔라인보다 짧으므로, NTSC 호환 NMI 핸들러는 강제 새로 고침 전에 완료되므로 OAM DMA 타이밍에 관계없이 PAL에서 작동해야 한다. 어느 경우든, vblank 중에 업데이트되지 않으면 OAM은 붕괴되지 않으며, 실제로 랙 프레임(CPU가 vblank 전에 작업을 완료하지 못한 프레임)에서는 불완전한 스프라이트 데이터를 PPU에 복사하는 것을 피하기 위해 일반적으로 업데이트해서는 안 된다. 요약: 한식구 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는 한식구위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요. 또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다. 저작권이 있는 내용을 허가 없이 저장하지 마세요! 자동 편집 스팸으로부터 위키를 보호하기 위해, 다음 CAPTCHA를 풀어주세요: 취소 편집 도움말 (새 창에서 열림)