멀티 메모리 컨트롤러

**멀티 메모리 컨트롤러**(Multi Memory Controller)는 닌텐도 패밀리 컴퓨터(NES)의 게임 카트리지에 사용된 메모리 관리 칩으로 **메모리 매니지먼트 컨트롤러**(Memory Management Controller)라고도 부르며 줄여서 **MMC**라고도 한다. 그리고 NES 에뮬레이터에서는 이들 칩을 매퍼(mapper)라고 부른다. 패밀리 컴퓨터는 한번에 최대 32KB의 메모리를 사용할 수 있었는데 MMC를 사용하여 메모리 뱅크 스위칭으로 더 많은 메모리를 사용할 수 있으며 큰 용량의 게임을 제작할 수 있었다. 일부 MMC는 메모리 관리 기능 뿐만 아니라 추가 사운드나 그래픽 기능을 가지고 있었다.

## MMC 칩 목록
### MMC1
* 제조사 : 닌텐도
* 사용된 게임 : 젤다의 전설, 메트로이드 등등
* 프로그램 ROM : 16KB, 32KB 뱅크로 256KB 사용 가능
* 프로그램 RAM : 8KB
* 캐릭터 용량 : 8KB, 4KB 뱅크로 128KB ROM 또는 8KB RAM 사용 가능
* 24핀 DIP 패키지
MMC1은 MMC1A, MMC1B1, MMC1B2, MMC1B3, MMC1C 등의 5 종류가 있는데 A버전은 세이브데이터 저장용의 프로그램 램을 항상 사용 가능하도록 설정되어 있으며 B버전은 초기 상태(default)에서 사용 가능, C버전은 초기 상태에서는 사용 불가능한 것이 차이점이다. MMC1은 독특하게 시리얼 입력 방식을 사용하기 때문에 회로에 명령을 전달하려면 비트 시프트로 5번 연속해서 쓰기를 해야 한다.

### MMC2
* 제조사 : 닌텐도
* 사용된 게임 : 마이크 타이슨의 펀치 아웃 (Mike Tyson's Punch-Out!!)
* 프로그램 ROM : 8KB 뱅크로 128KB
* 캐릭터 ROM : 4KB 뱅크로 128KB
* 40핀 DIP 패키지
MMC2는 마이크 타이슨의 펀치 아웃(나중에 펀치 아웃으로 이름 변경)에만 사용되었다. 단일 8KB 뱅크로 프로그램 롬을 선택하며 프로그램 롬은 2쌍의 4KB 뱅크를 사용해 선택하는데 메모리에서 특정한 그래픽 타일을 로드하면 자동으로 스위칭되기 때문에 게임 프로그램에서 수동으로 스위칭 할 필요가 없이 화면에 큰 그래픽을 표시할 수 있다.

### MMC3
* 제조사 : 닌텐도
* 사용된 게임 : 슈퍼 마리오브라더스 2, 슈퍼 마리오브라더스 3, 파이널 판타지 3 등등
* 프로그램 ROM : 8KB 뱅크로 512KB
* 프로그램 RAM : 8KB
* 캐릭터 용량 : 1KB, 2KB 뱅크로 128KB ROM 또는 8KB RAM 사용 가능
* 스캔라인 기반의 IRQ 카운터
* 44핀 TQFP 패키지
MMC3는 MMC칩 중에서 가장 널리 사용된 칩으로 MMC3A, B, C 버전이 있지만 차이점은 없다. MMC3에는 스캔라인 기반의 IRQ 카운터로 분할된 화면을 쉽게 스크롤할 수 있었는데 주로 게임에서 위, 아래의 캐릭터 상태바를 그대로 둔 채 배경화면을 스크롤하는데 사용되었다. 또한 8KB 프로그램 롬 뱅크 2개와 2KB 2개 +1KB 4개의 캐릭터 롬 뱅크를 선택할 수 있다.

### MMC4
* 제조사 : 닌텐도
* 사용된 게임 : 파이어 엠블럼, 파이어 엠블럼 외전, 패미컴 워즈
* 프로그램 ROM : 16KB 뱅크로 256KB 사용 가능
* 프로그램 RAM : 8KB
* 캐릭터 ROM : 4KB 뱅크로 128KB 사용 가능
* 44핀 TQFP 패키지
MMC4는 인텔리전트 시스템즈(Intelligent Systems)에서 개발되어 세가지 게임에만 사용되었는데 모두 일본판 패미컴용으로 발매되었다. 이 칩은 MMC2와 동일한 칩으로 차이점은 8KB 뱅크 대신 16KB 뱅크를 사용하며 게임 데이터를 세이브하기 위한 배터리 백업 SRAM을 지원한다.

### MMC5
* 제조사 : 닌텐도
* 사용된 게임 : 캐슬배니아 III 드라큘라의 저주(악마성 전설의 미국, 미국/유럽판), 저스트 브리드, 메탈 슬래이더 글로리, 건 사이트, 우주경비대 SDF, 노부나가의 야망 II, 수호전, 삼국지 II, 대항해시대
* 프로그램 ROM : 8KB, 16KB, 32KB 뱅크로 1024KB 사용 가능
* 프로그램 RAM : 64KB
* 캐릭터 ROM : 1KB, 2KB, 4KB, 8KB 뱅크로 1024KB 사용 가능
* 펄스 사운드 2채널과 8비트 DPCM 채널 추가
* 1KB RAM 내장, 8비트 곱셈기, 스캔라인 기반의 IRQ 카운터 등등
* 100핀 TQFP 패키지
MMC5는 닌텐도의 MMC 중에서 가장 많은 메모리 용량을 지원한다. MMC5는 매우 비싸기 때문에 많은 게임 개발사에서 사용을 꺼려했으며 코에이가 유일하게 여러 게임에서 이 칩을 사용했다. MMC5는 1KB의 램을 내장하고 있으며 NES 사운드와 동일한 펄스파 2채널과 8비트 PCM 1채널이 추가되었다.(PCM 채널을 사용한 게임은 없다.) 그리고 스캔라인 기반의 IRQ카운터, 수직 분할 화면 스크롤과 한번에 16384개의 배경화면 타일을 사용 가능하며 각각의 타일마다 색상 팔레트 설정을 할 수 있는 등 향상된 그래픽 기능도 추가되었다.

### MMC6
* 제조사 : 닌텐도
* 사용된 게임 : 스타트로픽스(StarTropics), 조다의 복수 - 스타트로픽스 II
* 프로그램 ROM : 8KB 뱅크로 512KB
* 프로그램 RAM : 1KB (칩에 내장)
* 캐릭터 ROM : 1KB, 2KB 뱅크로 256KB
* 64핀 TQFP 패키지
MMC6은 MMC3와 동일한 칩으로 추가로 내장된 1KB의 램은 배터리 백업으로 게임 데이터를 저장할 수 있다.

### 패미컴 [[디스크 시스템]]
* 제조사 : 닌텐도
* 사용된 게임 : 알마나의 기적, 애전사 니콜(愛戦士ニコル), 바이오미라클 나는 우파(ぼくってウパ), 익사이팅 바스켓, 팔시온(Falsion), 미궁사원 다바바, 수수께끼의 벽(謎の壁 ブロックくずし), 리사의 요정전설, 렐릭스 암흑요새, 빅 챌린지! 독파이트 스피릿, 패미컴 탐정구락부 파트 II, 젤다의 전설 II, 메트로이드(일본판), 수수께끼의 무라사메성, 광신화 팔데나의 거울(키드 이카루스 FDS 버전), 프로 레스링, 신 도깨비 섬(新 鬼ヶ島), Vs. 익사이트바이크 FDS, 유유기(遊遊記), 젤다의 전설, 기기괴계 등등
* 32KB 프로그램 RAM, 8KB 캐릭터 RAM, 추가 PWM 사운드 채널

### AOROM
* 제조사 : 닌텐도
* 사용된 게임 : 배틀토드, 전설의 기사 엘론드(Wizards & Warriors), 코브라 트라이앵글, Jeopardy!
* 프로그램 ROM : 32KB 뱅크로 128KB 또는 256KB
* 캐릭터 RAM : 8KB
AOROM 매퍼는 Rare Ltd의 크리스 스탬퍼가 개발한 칩으로 AMROM, ANROM, AOROM 카트리지 보드에 사용되었다. 이 칩은 레어, 트레이드웨스트, 게임텍, 어클레임, 밀튼 브래들리 등의 개발사에서 제작한 게임에 사용되었다. 다른 칩들과는 달리 싱글 스크린 미러링을 사용한다.

## 서드파티 칩
퍼스트파티 하드웨어는 북아메리카와 유럽에만 허가되어 있으며 서드파티 칩은 일본에서만 사용된다고 알려져 있지만 최근에는 북아메리카의 몇몇 게임에서도 사용되었다.

### VRC2
* 제조사 : 코나미
* 사용된 게임 : 콘트라(일본판), 타이니툰 어드벤처(일본판), 악마성 스페셜 - 보쿠드라큐라군
* 프로그램 ROM : 8KB 뱅크 스위칭
* 캐릭터 ROM : 1KB 뱅크 스위칭
VRC2은 코나미에서 개발한 칩으로 프로그램 롬은 8KB 뱅크로 스위칭 할 수 있으며 캐릭터 롬은 1KB 뱅크로 스위칭 할 수 있다. 이 칩은 VRC2a 와 VRC2b 등 2가지 버전이 있다.

### VRC4
* 제조사 : 코나미
* 사용된 게임 : 간바레 고에몽 외전, 그라디우스 2, 트윈비 3 등등
* 프로그램 ROM : 8KB 뱅크 스위칭
* 프로그램 RAM : 8KB
* 캐릭터 ROM : 1KB 뱅크 스위칭
* 40핀 DIP 패키지
코나미 VRC2와 비슷하지만 용량이 더 크다.

### VRC6
* 제조사 : 코나미
* 사용된 게임 : 악마성 전설, 마다라, 에스퍼 드림 II, 나이젤 만셀의 월드 챌린지
* 프로그램 ROM : 16KB, 8KB 뱅크로 256KB 사용 가능
* 프로그램 RAM : 8KB
* 캐릭터 ROM : 1KB 뱅크로 256KB 사용 가능
* 추가 3채널 사운드 (펄스파 2채널과 톱니파 1채널)
* 스캔라인 기반의 IRQ 카운터
* 48핀 DIP 패키지
VRC6(Virtual Rom Controller)은 코나미의 향상된 MMC 칩으로 프로그램 코드와 그래픽에서 뱅크 스위칭을 지원하며 스캔라인 기반의 IRQ 카운터도 내장하고 있다. 이 칩은 3채널(펄스파 2채널과 삼각파 1채널)의 사운드도 추가로 지원한다. 이 칩은 악마성 전설(캐슬배니아 III 드라큘라의 저주 - 일본판)에 사용되었으며 북미/유럽판(NES)에는 닌텐도의 MMC5가 사용되었다. NES 카트리지에는 음성 입출력 단자가 없기 때문에 추가 사운드를 사용할 수 없었다. 그래서 사운드트랙을 NES의 5채널에 맞춰 다시 제작하였다. 나이젤 만셀의 월드 챌린지에도 VRC6 칩이 사용되었지만 추가 사운드는 사용하지 않았다.

### VRC7
* 제조사 : 코나미
* 사용된 게임 : 라그레인지 포인트 (Lagrange Point)
* 프로그램 ROM : 8KB 뱅크로 512KB 사용 가능
* 프로그램 RAM : 8KB
* 캐릭터 ROM : 1KB 뱅크(롬 대신 램으로 스왑 가능)
* 추가 6채널 FM 음원(2op)
* 48핀 DIP 패키지
VRC7은 VRC6과 같이 뱅크 스위칭과 IRQ 카운트 기능과 추가로 YM2413(OPLL)과 비슷한 2오퍼레이터의 6채널 FM 사운드를 지원한다. OPLL과 다른 점은 리듬 채널이 제외되었다는 것과 내장된 음색이 다르며 상태 레지스터 등에서 차이가 있다. 추가 사운드는 패미컴 게임 라그레인지 포인트에서만 사용되었다. 일본판 타이니툰 어드벤처 2에도 VRC7이 사용되었지만 추가 사운드를 사용하지는 않았다.

### NAMCOT 163
* 제조사 : 남코
* 사용된 게임 : 에리카와 사토루의 꿈속 모험, 파이널 랩, 킹 오브 킹즈, 마피 키즈, 여신전생 II, 삼국지 II 패왕의 대륙, 요괴도중기 등등
* 프로그램 ROM : 8KB 뱅크 스위칭
* 캐릭터 ROM : 1KB 뱅크 스위칭
* 추가 8채널 사운드 (4비트 샘플 테이블 음원)

### FME-7
* 제조사 : 선소프트(Sunsoft)
* 사용된 게임 : 배트맨 - 리턴 투 더 조커
FME-7은 선소프트에서 개발한 메모리 매퍼로 프로그램 롬은 8KB 뱅크, 캐릭터 롬은 1KB 뱅크로 스위칭 할 수 있다.또 CPU 클럭에 따라 IRQ 신호를 생성할 수 있어서 최소한의 프로세싱 파워로 화면 분할 효과를 사용할 수 있다.

### Sunsoft 5B
*제조사:선소프트
FME-7과 비슷하나  3채널이 추가된 버전이다.
* 사용된 게임: 기믹!(gimmick!)

## 언라이센스/홈브루 MMC
라이센스를 받지 못한 개발사와 개인이 제작한 매퍼로 대부분은 간단히 메모리 확장 기능만 가지고 있다.

### 228
* 제조사 : Active Enterprises
* 사용된 게임 : 액션 52, 치타맨 II
228은 단순한 뱅크 스위칭 매퍼로 AVGN이 극혐할정도로 질낮은 게임으로 유명한 액션 52와 치타맨 II에 사용되었다. 이 칩은 네임테이블 컨트롤 비트가 없다. 액션 52에서는 게임에서 나가기 위한 메뉴 선택 용도의 작은 16비트 레지스터를 포함하고 있다.

## 참조 문서

## 외부 링크
* Comprehensive NES Mapper Document v0.80 by \Firebug\
* Bigass NES Mapper List 0.1

분류:반도체 소자
분류:전자 회로
분류:집적 회로
분류:닌텐도의 하드웨어