피드로 돌아가기
Building an NES Emulator in C: Part 1 – Emulating the 6502 CPU
Dev.toDev.to
Infrastructure

C 언어 기반 6502 CPU 에뮬레이션을 통한 NES 핵심 아키텍처 구현

Building an NES Emulator in C: Part 1 – Emulating the 6502 CPU

Benjamin Vachon2026년 6월 21일7intermediate

Context

NES 게임 구동을 위해 MOS 6502 CPU의 동작 방식을 소프트웨어적으로 재현하는 설계 필요. 하드웨어 레지스터와 메모리 주소 체계의 정확한 매핑을 통한 명령어 실행 환경 구축이 핵심 과제.

Technical Solution

  • 6502 CPU의 A, X, Y 레지스터 및 Program Counter, Stack Pointer를 포함한 cpu_6502 구조체 설계
  • 2바이트 Program Counter를 통한 64KB(65,536 bytes) 규모의 가상 메모리 공간을 uint8_t 배열로 구현
  • Opcode별 동작을 정의한 step 함수 내 Switch-case 문을 통한 Instruction Decoding 로직 구축
  • LDA, TAX, JSR 등 56종의 Opcode를 통해 레지스터 상태를 변경하고 Program Counter를 제어하는 상태 머신 설계
  • power_upreset 함수를 통한 CPU 초기 상태 정의 및 특정 메모리 주소(0xFFFC, 0xFFFD) 기반의 실행 지점 설정

- CPU 에뮬레이션 시 하드웨어 레지스터를 구조체로 캡슐화하여 상태 관리 효율성 확보 - 명령어 세트(Instruction Set) 구현 시 Switch-case 문을 통한 명확한 Dispatcher 패턴 적용 - 가상 메모리 맵핑 시 실제 하드웨어의 주소 범위와 데이터 타입을 일치시켜 오버플로우 및 주소 계산 오류 방지

원문 읽기