PlayStation GPU의 Affine Texture Mapping은 X/Y 2D 좌표만 사용하고 depth를 버리므로 perspective correction을 하지 않음
texture filtering은 구현되지 않았고, scale 보정에는 nearest neighbour를 사용해 빠르고 저렴하지만 texture 모델이 blocky하게 보이는 원인이 됨
GPU는 삼각형에 semi-transparency와 dithering 효과를 지원하며, PlayStation은 이 효과들에서 뛰어난 편으로 묘사됨
VRAM 운용과 시각적 한계
1MB VRAM 전체를 frame buffer에 크게 쓰는 구상은 TV 표준 형식으로 재조정이 필요하고 texture·colour table 공간을 줄이며, GPU 자체도 최대 640×480픽셀 16비트 색상 frame buffer만 렌더링할 수 있음
640×480 16비트 buffer는 424KB VRAM을 재료용으로 남기지만, 당시 가정용 TV에서는 높은 해상도 이점이 특히 두드러지지 않는다는 문제가 있음
adjustable frame-buffer는 체감이 작은 해상도에 VRAM을 낭비하지 않고 frame buffer 크기를 줄여 texture와 colour lookup table 공간을 늘리는 방식임
Halkun의 Gears Episode 2 데모는 640×480 frame buffer를 두 개의 320×480 buffer로 나누고 page flipping을 사용해 한 장면을 표시하는 동안 다른 장면을 렌더링하는 구성을 보임
이 layout은 600KB VRAM만 소비하고, 나머지 424KB를 colour lookup table과 texture에 사용할 수 있으며, 2KB texture cache와 함께 효율적인 구성이 됨
VRAM은 여러 colour depth를 동시에 매핑할 수 있어 16bpp frame buffer 옆에 FMV frame에 흔히 쓰이는 24bpp bitmap을 배치할 수 있음
rasteriser는 픽셀 단위만 처리하고 triangle이 pixel fraction을 얼마나 차지했는지 추적하지 않기 때문에, 모델 외곽선 점프와 triangle 교차부 flicker·overlap이 생길 수 있음
ordering table은 어느 geometry가 앞에 있는지 결정하는 부담을 개발자나 프로그램에 맡기며, 성능을 위해 근사 계산이 많으면 flickering이나 가려진 표면 문제가 생길 수 있음
affine transformation은 depth 감각이 없어 카메라가 모델에 가깝고 시선에 수직일 때 texture warping을 만들 수 있으며, 일부 게임은 tessellation이나 solid colour 대체로 왜곡을 줄임
pre-rendered 배경은 실시간 GPU 표현보다 사실적인 장면이 필요할 때 MDEC로 스트리밍한 영상을 두 개의 삼각형에 얹는 방식으로 활용됨
오디오와 CD 기반 게임
SPU는 44.1kHz Audio CD 품질의 16비트 ADPCM sample 24채널을 지원함
SPU는 pitch modulation, frequency modulation, ADSR envelope, looping, digital reverb 기능을 제공함
오디오 버퍼인 Sound RAM은 512KB DRAM이며, 게임은 sample 저장용으로 508KB만 사용할 수 있고 reverb를 켜면 사용 가능 용량이 더 줄어듦
CD controller는 오디오 버퍼나 CPU 개입 없이 sample을 audio mixer로 직접 보낼 수 있으며, XA encoding으로 압축된 sample은 SPU가 실시간으로 디코딩할 수 있음
CD-ROM 매체는 PS1 게임에 620MB 저장공간, 풍부한 오디오 품질, 2x drive의 비교적 빠른 읽기 속도를 제공함
1997년까지 출시된 PS1 revision은 결함 있는 CD drive laser로 FMV와 Audio CD skip이 잦은 것으로 알려졌으며, 이후 모델은 laser unit과 housing을 개선해 문제를 완화함
I/O, BIOS, 개발 환경
초기 PlayStation에는 add-on용 Serial과 Parallel I/O 포트가 있었지만, 낮은 채택률과 copy protection 우회 우려로 이후 revision에서 제거됨
CD subsystem은 motor·laser·RF 신호를 제어하는 DSP, Motorola 68HC05 microcontroller와 512B RAM·16KB ROM으로 구성된 Sub-CPU, main CPU와 CD subsystem 사이를 중계하는 CD Controller, 32KB SRAM buffer로 구성됨
Sub-CPU의 ROM 프로그램은 copy-protection 절차를 구현하며, main CPU 의사와 관계없이 이를 강제함
전면에는 controller 2개와 Memory Card 2개를 위한 소켓 4개가 있으며, 네 slot은 전기적으로 동일하고 주소가 하드코딩되어 있음
시스템은 512KB ROM에 BIOS를 저장하며, BIOS는 startup, user shell, I/O routine을 제공함
BIOS ROM 접근은 8비트 데이터 버스 때문에 매우 느리므로, API는 boot 중 main RAM으로 복사되는 Kernel 형태로 제공되며 64KB main RAM이 PlayStation OS용으로 예약됨
boot 과정은 BIOS ROM 실행, PlayStation OS 로드, splash 표시, CD 진위 확인, SYSTEM.CNF 확인과 실행 또는 shell 표시 순서로 진행됨
shell은 Memory Card save 복사·삭제와 Audio CD 재생을 제공하는 단순한 그래픽 인터페이스임
Sony SDK는 C compiler와 library를 포함했고, library는 hardware access를 위해 BIOS routine에 연결됨
studio용 DTL-H2000은 PS1 내부와 I/O, debugging 회로를 담은 dual-slot ISA card이며, Windows 3.1 또는 95가 설치된 PC에서 동작하는 소프트웨어를 요구함
hobbyist용 Net Yaroze는 toolkit, manual, 검은색 PS1 console을 제공했으며, CD drive 접근이 없어 homebrew software가 main RAM 안에 모두 들어가야 하는 제약을 가짐
복제 방지와 지역 잠금
Sony의 copy protection은 CD의 Table of Contents가 특정 주파수로 새겨진 Wobble Groove를 가지는지 Sub-CPU가 확인하는 방식임
Wobble Groove는 mastering 과정에서 도입되며 일반 CD burner로 복제할 수 없고, TOC는 CD의 Lead-In 영역에 있으며 fault tolerance를 위해 여러 번 반복됨
game TOC에는 SCEA, SCEE, SCEI 문자열 중 하나가 들어가며, 이 방식은 region-locking에도 사용됨
검사는 시작 시 한 번만 수행되므로 인증 직후 disc를 수동으로 바꾸는 swap trick으로 우회할 수 있지만, drive 손상 위험이 있음
일부 game은 gameplay 중 drive를 다시 초기화해 검사를 반복함으로써 swap trick을 막으려 했음
Modchip은 Wobble Groove 신호를 흉내 내도록 프로그래밍된 작은 보드이며, console에 납땜해 사용됐고 법적으로 논쟁적이지만 매우 인기를 얻음
이후 game들은 modchip, CD burner, emulator 확산에 대응해 checksum 중심의 자체 보호 수단을 추가함
Sony의 Libcrypt는 특정 sector checksum을 disc sub-channel에 저장하는 hardware 측 접근과, game 곳곳에 checksum을 가져와 다른 값과 섞어 검증하는 software 측 routine을 결합함