GN⁺: 슈퍼 닌텐도 카트리지 내부 분석
(fabiensanglard.net)Here is a summary of the key points from the article on Super Nintendo cartridges, translated into Korean and organized using Markdown syntax:
수퍼 닌텐도 카트리지 내부 구조
- 수퍼 닌텐도 게임 카트리지는 ROM 칩에 명령어와 에셋 외에도 추가적인 요소들을 포함할 수 있음.
- CIC 복사 방지 칩, SRAM, 심지어 "성능 향상 프로세서"도 PCB 내부에서 찾아볼 수 있음.
CIC (복사 방지)
- SNES의 복사 방지 메커니즘은 콘솔과 카트리지에 있는 두 개의 칩이 동기화된 상태로 통신하는 방식으로 동작함.
- 콘솔의 CIC가 이상 동작을 감지하면 모든 프로세서를 리셋시킴.
ROM: 명령어 & 에셋
- 게임 ROM 크기는 과거에는 바이트 대신 비트 단위로 표시되었음 (예: 젤다의 전설3는 8Mb).
- 가장 큰 용량의 게임은 Star Ocean (48Mb)이며, 슈퍼 마리오 월드 같은 명작은 4Mb ROM 하나만 사용함.
- 저자가 직접 만든 CSV에 3,378개 타이틀의 ROM 사용량 추정치가 정리되어 있음.
SRAM (저장 기능)
- 일부 게임들은 SRAM 칩과 배터리를 이용해 진행 상황 저장 기능을 제공함.
- 콘솔 전원이 꺼지면 SRAM은 저전력 모드로 전환되어 배터리 소모를 줄임.
성능 향상 프로세서 (Enhancement Processor)
- 가장 유명한 것은 1993년 스타폭스에 사용된 Super FX (별칭 "MARIO", "GSU-1")임.
- 위키피디아와 snescentral.com에 성능 향상 칩을 사용한 SNES 게임들의 전체 목록이 있음.
- 총 13종의 칩이 72개 게임에 사용됨.
SA-1
- "Super Accelerator 1"은 성능 향상 칩의 MVP로 34개 카트리지에 사용됨.
- 콘솔과 동일한 65C816 CPU이지만 4배 빠른 10.74Mhz로 동작함.
- 2KB SRAM과 내장 CIC를 갖추고 있음.
- SA-1은 3가지 동작 모드 (가속, 병렬 처리, 혼합 처리)를 가짐. 가장 강력한 설정에서는 시스템 전체 성능을 5배 향상시킴.
- 레트로 게이밍 커뮤니티에서는 SA-1을 이용해 느려지는 문제가 있던 과거 게임들 (마리오월드, 그라디우스3, 콘트라3 등)의 게임플레이를 개선함.
CX4
- CX4는 캡콤의 작품으로 록맨 X2, X3에서 사용됨.
- 3D 와이어프레임 렌더링과 다양한 연산, 스프라이트 스케일/회전 기능을 VRAM에 제공함.
- 와이어프레임 효과로 유명하지만 전체 게임에서 모든 스프라이트 처리에 사용되어 화면 깜빡임 없이 더 많은 스프라이트를 표시할 수 있게 해줌.
기타 Enhancement Processor
-
CS-DD1
: 스프라이트 압축 해제 칩. 2개 게임에서 사용됨. -
DSP
시리즈: 16개 게임에 사용. 고속 16비트 곱셈, sin/cos 등의 명령어 제공. -
OBC-1
: 1개 게임에서 사용. (스프라이트 조작 관련 추측만 있음) -
S-RTC
: 실시간 시계 기능 제공. 1개 게임에서 사용. -
SPC7110
: 데이터 압축 해제 칩. 3개 게임에서 사용됨. -
ST-010
,ST-011
,ST-018
: SETA사의 AI 개선 목적 칩. 각각 1~2개 게임에서 사용됨.
SUPERFX (GSU-1, GSU-2)
- GSU-1은 StarFox 등 5개 게임에서 사용됨.
- 10.74Mhz로 동작, 512바이트 명령어 캐시로 SNES CPU를 굶주리지 않고 동작함.
- SNES PPU가 타일/스프라이트 중심인데 반해 SuperFX는 픽셀 렌더링과 폴리곤 래스터화에 특화됨.
- 보통 카트리지의 프레임버퍼에 렌더링하고 VSYNC시 VRAM으로 전송함.
- GSU-2는 GSU-1을 21.47Mhz full speed로 동작시킨 것임. 요시아일랜드, 둠 등 3개 게임에서 사용됨.
- SNES 커뮤니티에서는 GSU-1, GSU-2를 이용해 과거 게임들을 개선하는 프로젝트 진행중.
성능 향상 칩과 에뮬레이터
- 성능 향상 칩은 플레이 경험을 크게 개선하고 퍼블리셔의 비용을 줄여주었지만, 후에는 에뮬레이터 개발자들에게 골칫거리가 됨.
- 일부 게임은 특이한 칩에 의존해 2012년에야 제대로 에뮬레이션 되었음.
- 에뮬레이터를 위해서는 칩을 리버스 엔지니어링 하는 많은 노력이 필요했음.
- 내부 ROM을 가진 칩(ARM 기반)은 에뮬레이터에 BIOS 파일을 제공해야 함.
- 2020년 현재에도 일부 희귀 칩의 에뮬레이션은 완료되지 않았음.
GN⁺의 의견
- 성능 향상 칩들은 하드웨어 설계와 게임 개발의 역사에서 흥미로운 사례임. 한정된 하드웨어 성능을 최대한 활용하기 위한 다양한 아이디어와 노력이 돋보임.
- 오늘날 에뮬레이터 개발 관점에서 보면 성가신 존재지만, 당시에는 게임 퀄리티를 높이고 개발 비용을 아끼는 효과적인 방법이었음.
- 업계에서 비슷한 사례로는 세가 메가드라이브/제네시스의 각종 추가 칩들 (SVP, Sega Virtua Processor 등), 네오지오의 메모리 카드 슬롯 등이 있음.
- 이런 확장 칩들은 콘솔 수명주기 후반부에 등장하는 경우가 많은데, 이는 한계에 부딪힌 하드웨어 스펙을 극복하려는 시도로 보임. 동시에 새로운 콘솔 출시를 준비하는 과도기이기도 함.
- 레트로 게이밍 커뮤니티에서 오래된 게임 성능을 개선하는 프로젝트가 진행되는 것이 인상적임. 옛 제작진의 의도를 살리면서 현대적 시각으로 게임을 재해석하는 작업이라 볼 수 있음.
Hacker News 의견
- 과거 게임기의 카트리지는 PC의 PCI 확장 카드와 유사하게 버스에 직접 연결되어 다양한 기능을 구현할 수 있었음. 그러나 GBA 이후로는 단순 데이터 저장 용도로만 사용됨.
- 최신 기술을 이용하면 레이트레이싱 칩이나 MSU1 확장 칩 등을 카트리지에 탑재하여 게임기 성능을 크게 향상시킬 수 있음. 실제 물리적인 칩 제조도 이론적으로 가능함.
- SNES의 CPU는 보통 3.58MHz로 동작하지만, 일부 저가형 슬로우롬 카트리지를 사용하면 2.68MHz로 속도가 낮아짐. 이를 패치로 개선하려는 모딩 커뮤니티도 있음.
- SNES의 복사방지는 콘솔과 카트리지의 CIC 칩이 동기화되어 동작하는 방식이었으나, 백업 장치를 통해 쉽게 우회할 수 있었음.
- 과거 게임 개발자들이 블로그 형태로 상세한 기술을 공유하는 것이 유튜브 영상보다 정보 밀도가 높음.
- 슈퍼 마리오 월드는 360KB 용량에 다양한 캐릭터, 스프라이트, 스테이지를 담은 걸작임.
- SNES의 확장 칩 방식을 현대 기술과 결합하면 더 발전된 그래픽 구현도 가능할 것임. SuperFX 칩은 자체 프레임버퍼를 가지고 VRAM에 복사하는 방식이었음.
- SNES용 둠 포팅 작업자는 GSU 칩이나 둠 소스코드에 대한 문서 없이 모두 리버스 엔지니어링으로 개발함.
- 과거 게임 가격의 상당 부분이 카트리지 제조 비용이었음. 최근에는 게임 배포 비용이 거의 들지 않음.
- 요시 아일랜드에서는 특정 상황에서 프레임 속도 저하가 관찰됨.
- 게임 용량은 롬 칩 크기에 맞춰 2의 거듭제곱 단위로 나옴. 문서에 나온 정확한 바이트 수의 출처는 불분명함.
- SNES 확장 칩은 콘솔 기본 성능을 크게 뛰어넘는 게임을 가능케 했음. 특히 SA-1 칩은 주 CPU보다 4배 빠른 성능을 보였음.
- 비공식 게임들은 복사방지를 우회하기 위해 정품 카트리지를 꽂아야만 하는 등 다양한 편법을 사용했음.
- 게임 용량과 다른 요소들 간의 상관관계를 분석하면 SNES 게임 개발에 대한 흥미로운 통찰을 얻을 수 있을 것임.