- Sega Saturn은 3D 전환기에 나온 콘솔이지만, 단일 3D 가속기 대신 듀얼 SH-2 CPU와 SCU, VDP1·VDP2, 독립 오디오·CD 서브시스템을 엮은 병렬 구조로 설계됨
- CPU는 약 28.63MHz Hitachi SH-2 2개를 master-slave 형태로 배치했지만, 외부 버스를 공유해 성능이 단순히 두 배가 되지 않았고 개발 난도가 높았음
- 그래픽은 VDP1이 사각형 기반 스프라이트를 프레임 버퍼에 그리고 VDP2가 배경·평면·레이어 합성을 맡아 2D에는 강했지만, 3D에서는 가시 표면 판정과 반투명 처리 제약이 컸음
- 오디오는 SCSP/Yamaha YMF292, Motorola 68EC000, 512KB 사운드 RAM으로 구성된 별도 컴퓨터에 가까웠고, CD-ROM 덕분에 PCM 샘플과 CD-DA 기반 고품질 사운드트랙을 활용할 수 있었음
- CD 복제에 맞서 Sega는 표준 CD 영역 밖의 링과 CD 드라이브 내부 SH-1 검증을 사용했지만, 이후 mod chip, swap trick, PseudoSaturn, Satiator, ODE 같은 우회·홈브루 실행 방식이 등장함
3D 전환기의 복잡한 콘솔 설계
- Mega Drive 이후 Sega Saturn은 3D만을 강제하기보다, 필요할 때 폴리곤 드로잉을 지원할 수 있도록 여러 하드웨어 요소를 조합한 콘솔임
- 전체 회로는 다수의 프로세서와 네 개의 주요 서브시스템으로 나뉨
- CPU 서브시스템: 메인 CPU, 메모리, SCU가 위치함
- Video 서브시스템: 그래픽 가속기들이 위치함
- Audio 서브시스템: 별도 컴퓨터에 가까운 오디오 처리 구조를 가짐
- CD-ROM 서브시스템: 복제 방지 메커니즘 때문에 폐쇄적인 구조를 가짐
- 각 서브시스템은 전용 버스에 연결되며, Video와 Audio 서브시스템은 하나의 버스를 공유함
CPU: 두 개의 SH-2와 SCU
- Sega는 차세대 게임과 3D 기능을 위해 Hitachi의 SuperH 계열 CPU를 선택함
- SuperH는 임베디드 용도를 염두에 둔 CPU였지만, 당시 RISC 계열 설계 요소를 포함했음
- load-store 아키텍처로 메모리 연산과 레지스터 연산을 분리함
- 32비트 데이터 버스와 32비트 ALU를 제공함
- 16개의 32비트 범용 레지스터를 제공함
- 32비트 주소 버스로 최대 4GB 메모리 주소 지정이 가능함
- 5단계 파이프라인으로 여러 명령을 단계별로 처리함
- 초기 SuperH에는 16비트 곱셈 유닛이 들어감
- SuperH ISA는 RISC 설계이면서도 모든 명령이 16비트 폭임
- CPU는 32비트 단위로 명령을 가져오기 때문에 한 사이클에 두 개 명령을 가져올 수 있음
- 이 방식은 RISC 아키텍처의 코드 밀도 문제를 완화함
- RISC 설계 특유의 제약도 남아 있음
- 제어 해저드 때문에 프로그램은 branch delay slot을 고려해야 함
- SuperH는 delay slot이 포함된 delayed branch instructions를 제공함
- 데이터 해저드는 CPU가 필요할 때 파이프라인을 자동으로 멈춰 처리함
SH-2 선택과 듀얼 CPU 구조
- Sega는 16비트 곱셈기가 3D 게임의 대량 데이터 처리에서 병목이 될 수 있다고 보고 Hitachi에 개선을 요구함
- Hitachi는 곱셈 유닛을 확장하고 Sega의 요구 사항을 반영한 SH-2를 만들었음
- 경쟁 콘솔의 CPU 선택을 의식한 Sega는 클럭 상승도 원했지만, 제조 단계의 칩에서 클럭을 올리는 것은 불가능했음
- Hitachi는 SH 연구 단계에서 여러 SH가 같은 시스템에서 동시에 동작할 수 있도록 최소 회로를 추가해 두었고, Sega는 Saturn에 2칩 구성을 채택함
- 최종 CPU 구성은 병렬 처리 가능성과 병목을 동시에 품고 있었음
- Hitachi SH-2 두 개가 각각 약 28.63MHz로 동작함
- 두 CPU는 물리적으로 동일하지만 master-slave 상태로 배치됨
- master CPU가 slave CPU에 명령을 보낼 수 있음
- 같은 외부 버스를 공유하므로 버스 혼잡이 생길 수 있음
- SH7604 칩에는 실행 성능을 보강하기 위한 기능이 포함됨
- 5단계 파이프라인과 확장된 SuperH ISA
- 32비트 곱셈 유닛
- 공유되는 32비트 외부 데이터 버스
- 4KB 캐시
- 32비트 나눗셈 유닛
- 내부 DMA 컨트롤러
- little endian 지원
- 두 CPU가 있다고 해서 게임이 두 배 빠르게 동작하는 것은 아니며, 효율적인 병렬 처리를 위해서는 공유 버스와 캐시 활용을 고려한 복잡한 프로그래밍이 필요함
메모리와 SCU
- CPU 서브시스템은 일반 용도의 Work RAM 2MB를 가짐
- Work RAM은 두 블록으로 나뉨
- WRAM-H: 1MB SDRAM이며 접근 속도가 높고, 버스는 다른 구성 요소와 공유됨
- WRAM-L: 1MB DRAM이며 속도는 낮지만, 버스는 메인 CPU 전용임
- CPU 그룹에는 두 SH-2 외에 Saturn Control Unit(SCU) 도 포함됨
- SCU는 데이터 이동과 계산 보조를 맡는 두 모듈로 구성됨
- DMA 컨트롤러: CPU 개입 없이 세 서브시스템 사이의 WRAM-L 접근을 중재함
- DSP: 고정소수점 지오메트리 유닛처럼 쓰이며 3D 변환과 조명 같은 행렬·벡터 계산을 SH-2보다 빠르게 수행함
- SCU DSP는 절반 속도로 동작하고 명령어 세트가 더 복잡하며, 데이터 fetch와 store에 느린 WRAM-L과 DMA를 사용함
- SCU에는 로컬 사용을 위한 32KB SRAM이 포함됨
그래픽 구조: VDP1과 VDP2
- Saturn은 서로 다른 역할을 동시에 수행하는 두 개의 독자 GPU, VDP1과 VDP2를 사용함
- 3D 세대의 그래픽 설계에서는 프레임 버퍼가 중요해짐
- GPU가 VRAM 일부에 장면 비트맵을 그린 뒤 비디오 인코더가 이를 출력함
- 프레임 버퍼 크기는 화면 해상도와 색 깊이에 비례함
- 예시로 600KB VRAM은 640×480, 32K색, 16bpp 프레임 버퍼를 담을 수 있음
- Saturn의 벡터 연산 가속은 SH-2 자체가 아니라 SCU가 담당함
VDP1: 사각형 기반 스프라이트와 프레임 버퍼
- VDP1은 기하 변환이 적용된 스프라이트를 그리고, 결과를 프레임 버퍼에 기록한 뒤 VDP2로 넘겨 표시함
- 프로그래밍은 drawing commands를 발행하는 방식임
- 명령, 텍스처·타일, 색상 룩업 테이블 등을 저장하기 위해 512KB 전용 RAM을 사용함
- 기본 도형은 사각형 quadrilateral뿐임
- 모델은 네 꼭짓점 폴리곤, 즉 스프라이트로 구성됨
- Forward Texture Mapping으로 텍스처 점을 사각형에 대응시킴
- 필터링이나 보간 기법이 없어 렌더링에 aliasing이 생김
- 제공 효과에는 Flat·Gouraud 셰이딩, anti-aliasing, clipping, transparency가 포함됨
- 256KB 프레임 버퍼 칩 두 개를 사용해 한 버퍼를 표시하는 동안 다른 버퍼에 다음 장면을 그림
- 두 번째 버퍼 렌더링이 끝나면 표시 버퍼를 전환하는 page flipping을 사용함
VDP2: 배경 평면, 레이어 합성, 원근 보정
- VDP2는 최대 4096×4096 픽셀의 대형 평면을 회전·스케일·이동 변환해 렌더링하는 데 특화됨
- 프레임 버퍼 없이 CRT 빔 진행에 맞춰 on the fly로 렌더링함
- 최대 1,670만 색상의 24비트 색을 지원함
- VDP1의 출력 버퍼도 표시하며, 이를 자체 레이어와 변환·혼합할 수 있음
- 프레임 구성은 다음 중 하나를 선택함
- 최대 네 개의 2D 평면과 하나의 3D 평면
- 또는 두 개의 3D 평면
- VDP2는 tile-map으로 평면을 구성하고 3D 텍스처 매핑에 perspective correction을 적용함
- 제공 효과에는 multi-texturing과 shadowing이 포함됨
- VDP1에서 받은 스프라이트의 밝기를 줄이고 반투명하게 섞을 수 있음
- 다만 CRT 빔 속도에 맞춘 스프라이트 스트림만 받기 때문에 인코딩과 운용이 까다로움
- VDP2에는 VDP1의 indexed colour 값을 24비트 RGB로 바꾸기 위한 4KB CRAM이 포함됨
- 3D 평면은 두 개로 제한되지만, CPU가 VDP2 VRAM을 소프트웨어 프레임 버퍼처럼 써서 추가 2D·3D 그래픽을 그릴 수 있음
2D에 강하고 3D에 까다로운 그래픽 머신
- Saturn의 2D 장면 처리 능력은 Mega Drive나 SNES보다 훨씬 넓었지만, 콘솔의 주된 판매 포인트는 아니었음
- 2D 게임에서는 VDP1이 전통적인 스프라이트를 그리고, VDP2가 배경 평면을 그린 뒤 자동 합성해 완성된 장면을 만듦
- _Mega Man X4_에서는 VDP1이 스프라이트 평면을 담당하고 VDP2가 여러 배경 평면을 구성함
- VDP2 기능을 이용하면 스케일링 효과로 열기 아지랑이 같은 장면 효과를 만들 수 있음
- 3D에서는 강점과 난점이 함께 드러남
- 8개 프로세서를 활용할 여지는 있었지만, 개발자는 짧은 상업 수명 안에 기능을 익히고 게임을 출시해야 했음
- 게임 품질은 타이틀과 스튜디오별 접근 방식에 따라 크게 달라짐
- Saturn은 임의 각도의 네 점 사각형인 distorted sprites를 정의하고 텍스처 매핑으로 면을 채움
- CPU와 SCU가 3D 세계를 구성하고 2D 공간으로 투영하면, VDP들이 이를 렌더링하고 효과를 적용한 뒤 TV로 출력함
- 어떤 VDP가 핵심 렌더링을 맡는지는 게임마다 달랐음
- 일부 개발자는 가까운 폴리곤을 VDP1에 맡기고 먼 배경을 VDP2에 맡김
- 다른 개발자는 VDP2가 가까운 폴리곤까지 그리도록 우회 기법을 만들었음
가시 표면 판정과 반투명 제약
- 3D 폴리곤을 2D 공간에 투영할 때는 카메라에서 보이는 폴리곤과 가려지는 폴리곤을 구분해야 함
- 이 문제는 Visible Surface Determination(VSD) 으로 알려져 있으며, 모델 표시 정확성·투명 효과·하드웨어 자원 사용에 영향을 줌
- Saturn의 VDP1은 VSD 기능을 구현하지 않음
- 지오메트리를 올바른 순서로 전달하지 않으면 화면이 깨질 수 있음
- Sega의 그래픽 라이브러리 SGL은 Z-sort, 또는 Painter’s algorithm을 소프트웨어로 구현함
- 카메라와의 거리에 따라 폴리곤을 먼 것부터 가까운 것 순서로 정렬함
- 이후 해당 순서대로 VDP1 명령을 발행함
- Z-sort의 Z-order 값은 근사치라 3D 환경에서 그래픽 결함이 여전히 발생할 수 있음
- 일부 프로그래머는 SGL 대신 자체 알고리듬을 구현함
- Saturn은 반투명 그래픽을 렌더링할 수 있지만 제약이 큼
- 반투명 픽셀 혼합은 VDP2만 처리할 수 있음
- VDP1은 겹친 스프라이트 구분 없이 렌더링된 버퍼를 출력하므로 반투명 스프라이트가 아래 스프라이트를 가림
- VDP1의 forward texture mapping은 distorted sprites에 반투명을 적용할 때 문제를 일으킴
- 반투명 픽셀은 그리는 데 여섯 배 더 오래 걸림
- 2D 게임은 texture의 mesh 속성을 사용해 일부 좌표를 완전 투명 처리하는 방식으로 우회할 수 있음
- composite video 신호에서는 mesh 패턴이 흐려져 반투명처럼 보이는 효과가 생김
- 이 방식도 불투명 부분이 다른 스프라이트를 가리는 문제는 남음
- _Daytona_는 반투명을 비활성화해 배경이 갑자기 나타나는 방식이 보이고, _Sonic R_은 VDP2의 mix ratio 레지스터와 조명 레벨 전환으로 반투명과 fading 효과를 구현함
오디오: 독립적인 사운드 서브시스템
- Saturn의 오디오 기능은 CD-ROM과 샘플 신시사이저가 결합된 당시의 디지털 전환 흐름 안에 있음
- 사운드 서브시스템은 SCSP/Yamaha YMF292, Motorola 68EC000, 512KB sound RAM으로 구성됨
- SCSP는 두 모듈로 나뉨
- 다기능 사운드 제너레이터: 최대 32채널을 PCM 샘플 또는 FM 채널로 처리함
- DSP: echo, reverb, chorus 같은 오디오 효과를 적용함
- PCM은 최대 16비트, 44.1kHz의 CD 품질 샘플을 지원함
- Motorola 68EC000은 오디오 구성 요소를 제어하고 메인 CPU와 인터페이스함
- Saturn의 68EC000은 11.3MHz로 동작하며 16비트 버스로 연결됨
- sound driver를 실행해 주변 모듈을 운용함
- 512KB sound RAM은 sound driver와 PCM 샘플 같은 오디오 데이터를 저장하고 DSP 작업 영역으로도 쓰임
- 오디오 파이프라인은 메인 CPU, 68EC000, SCU, CD 서브시스템이 나눠 맡음
- 메인 CPU가 오디오 구성 요소를 초기화하고 sound RAM에 sound driver를 로드함
- 이후 Motorola 68EC000을 활성화함
- 게임 중에는 SCU가 CD에서 sound RAM으로 PCM 샘플을 전송할 수 있음
- CD 서브시스템은 CD-DA 비압축 오디오를 SCSP로 직접 보낼 수 있음
- Video CD 카드가 있으면 압축 오디오를 카드에서 디코딩한 뒤 SCSP로 넘길 수 있음
- CD-ROM 채택과 PCM 처리 능력 덕분에 스튜디오는 사운드트랙을 자체 녹음·제작한 뒤 재편곡 없이 게임에 포함할 수 있게 됨
부팅, IPL, 내장 셸
- 전원을 켜면 먼저 SMPC(System Management and Peripheral Control) 가 동작함
- SMPC는 4비트 마이크로컨트롤러이며, 두 SH-2 전원을 켜고 master-slave 구성으로 설정하는 등 주변 칩 초기화를 담당함
- 이후 master SH-2의 reset vector는
0x00000000으로 설정되고, 이 주소는 512KB ROM의 Initial Program Loader(IPL)를 가리킴 - IPL은 하드웨어 초기화 이후 부팅 대상을 순서대로 확인함
- 실행 코드가 든 카트리지가 있으면 거기서 계속 부팅함
- Video CD 카드가 있으면 이를 부팅함
- 디스크가 있으면 정품 여부를 검증함
- 정품이면 게임을 부팅함
- 정품이 아니거나 디스크가 없으면 interactive shell을 실행함
- Saturn에는 게임 외에 Multiplayer라는 내장 음악 플레이어가 있음
- 여기서 저장 데이터 관리자에 접근할 수 있음
- Video CD 카드가 있으면 카드가 디코딩한 MPEG 비디오도 재생할 수 있음
- Saturn ROM은 PlayStation BIOS처럼 개발자용 API 묶음으로 주로 쓰이기보다 IPL로 불림
- 다만 IPL ROM에는 저장 데이터 관리, 전원 제어, 멀티프로세서 동기화를 위한 semaphore 같은 System program 서비스도 포함됨
게임 매체와 개발 환경
- 공식 Saturn 게임은 2x CD-ROM 드라이브에서 로드됨
- 매체는 Compact Disc의 맞춤형 변형이며, 용량은 650MB이고 ISO 9660 표준을 따름
- 많은 게임은 데이터 트랙 옆에 오디오 트랙을 포함해 게임 중 비압축 오디오를 스트리밍함
- CD는 polycarbonate 표면의 미세한 pit와 land에 정보를 기록하고, 적외선 반사를 읽어 데이터를 복원함
- CD는 저장 밀도와 동기화를 위해 여러 인코딩·오류 보정 기법을 사용함
- NRZI는 pit-land 전환 시
1을 기록하는 방식임 - EFM은 8비트 조합을 CD 리더 제약에 맞는 14비트 시퀀스로 변환함
- CIRC는 데이터를 디스크 전반에 분산하고 중복성을 추가해 손상 영역을 복구할 수 있게 함
- NRZI는 pit-land 전환 시
- Saturn은 CD-ROM XA 형식을 채택함
- 데이터, 비압축 오디오, interleaved multimedia tracks를 저장할 수 있음
- 느린 드라이브에서도 오디오와 이미지를 합리적인 속도로 스트리밍하는 데 중요함
- 비디오 재생 압축 해제에는 별도 Video CD 카드가 필요함
- 개발 환경은 초기에는 부담이 컸지만 이후 도구가 보강됨
- Sega가 충분한 소프트웨어 라이브러리와 개발 도구를 제공하지 않았고, 초기 문서에도 부정확한 부분이 있었음
- 수용 가능한 성능을 내려면 초기에 어셈블리 프로그래밍이 중요했음
- 이후 Sega는 SDK, 하드웨어 키트, I/O·그래픽 지원 라이브러리를 제공함
- Saturn 게임은 C와 여러 구성 요소별 어셈블리 언어를 조합해 작성됨
- I/O와 RTC 관리는 SMPC가 담당하며, SH-2가 명령을 보내 제어함
확장 인터페이스
- Saturn에는 여러 외부 커넥터와 인터페이스가 있음
- 드라이브 뒤쪽의 cartridge slot은 공식적으로 저장 데이터용 추가 저장소나 extra RAM 용도로 쓰임
- 일본과 미국에서는 온라인 연결을 위한 modem도 제공됨
- 후면에는 Video CD Card 슬롯이 있음
- 지원 프로그램이나 게임을 위해 MPEG 압축 해제를 수행함
- 후면의 Communication Connector는 Sega가 개발자 문서를 공개하지 않은 인터페이스임
- 리버스 엔지니어링 결과 SCSP의 MIDI 핀과 두 SH-2의 Serial Interface(SCI)에 연결된 것으로 확인됨
- Sega는 이 인터페이스를 쓰는 floppy drive를 출시함
복제 방지와 홈브루 실행
- CD 복제가 쉬웠기 때문에 Sega는 게임 유통 제어를 위해 복제 방지와 region locking을 구현함
- Saturn의 복제 방지는 표준 CD 형식에서 일부러 벗어나는 방식임
- 일반 CD burner는 Saturn 게임의 완벽한 복사본을 만들 수 없음
- Saturn 디스크 리더는 검증 과정에서 비표준 특징을 찾음
- Saturn 디스크 바깥쪽 가장자리에는 비정상적인 데이터 패턴이 눌러져 있음
- 이 패턴은 상표 라벨이 새겨진 보이는 링을 만듦
- 링은 표준 데이터 영역인 Program Area와 Lead-out 바깥에 있음
- 일반 드라이브는 이 영역에 접근하거나 복제할 수 없음
- Saturn CD 드라이브 내부에는 전용 SH-1 프로세서가 있어 링 존재 여부를 main CPU와 독립적으로 검증함
- 이 검사는 한 번만 수행됨
- 전통적인 우회 방식은 디스크 검증 과정을 속이는 데 초점을 둠
- mod chip을 설치해 어떤 디스크가 들어와도 CD 리더를 속임
- swap trick으로 정품 디스크 검증 직후 구운 디스크로 교체함
- 이후 더 정교한 홈브루 실행 방식이 등장함
- PseudoSaturn은 복제 방지 메커니즘의 exploit을 이용해 검증 없이 디스크 게임을 부팅하게 함
- 2022년 기준으로는 newer fork인 Pseudo Saturn Kai가 사용됨
- 2016년에는 Video CD add-on이 CD 드라이브를 우회해 CD 서브시스템에 암호화되지 않은 코드를 주입할 수 있다는 점을 이용한 방식이 나옴
- 이 Video CD exploit은 Satiator라는 제품으로 판매됨
- Optical Drive Emulator(ODE) 는 CD 리더를 SD 또는 SATA 어댑터로 대체하고, Saturn에는 CD를 읽는 것처럼 보이게 하면서 실제로는 디스크 이미지를 읽음