Claude를 활용해 플레이스테이션 1을 정복한 방법
How Claude cracked the Playstation 1 open for me
핵심 요약
LLM을 활용해 Rust 기반의 PS1 개발 환경(PSoXide)을 직접 구축하고 게임을 포팅한 개발자의 성공 사례.
- PS1 개발 환경 — Rust로 에뮬레이터, SDK, 에디터를 직접 구축함.
- Claude 활용 — MCP 서버를 통해 하드웨어 상태를 실시간으로 디버깅함.
- Celeste 포팅 — 실제 하드웨어에서 구동되는 PS1용 Celeste 게임을 출시함.
- 창의성 증폭 — LLM이 단순 반복 작업이 아닌 창의적인 개발을 가능하게 함.
보안 소프트웨어 엔지니어이자 게임 개발자를 꿈꾸는 사람이야.
예전에는 주로 PICO-8을 가지고 놀면서 제한된 하드웨어 성능을 극한까지 뽑아내는 데 푹 빠져 있었어. 오래전부터 구형 플랫폼용 게임을 개발하는 게 꿈이었는데, PS1을 쓰면서 자란 세대라 특히 더 끌리더라고. 기존 툴이나 SDK를 써보려고 했는데, 전부 C++ 기반이라 시작부터 너무 빡세더라. 그래서 그냥 에라 모르겠다 싶어서 내가 직접 만들기로 했지. PS1 개발 환경을 바닥부터 새로 짜는, 그야말로 엄청난 삽질을 시작한 거야. 수년간 꿈꿔왔던 일인데, LLM 없었으면 절대 불가능했을 거야.
어떻게 할지는 이미 머릿속에 있었어.
- 원래 하드웨어랑 최대한 똑같이 돌아가는 에뮬레이터. 그래야 개발 속도가 미친 듯이 빠르니까. 지금은 R3000A CPU, GPU, GTE, CD-ROM, DMA, SPU, 타이머, MDEC까지 기기 전체를 에뮬레이팅해. 제대로 만들려고 65개 이상의 베어메탈 하드웨어 테스트 ROM(PeterLemon, Amidog, ps1-tests)으로 테스트 스위트를 짰고, VRAM 해싱을 통해 검증된 레퍼런스랑 비교해. 실제 PS1 기기에서 하드웨어 테스트 CD를 돌려서 값을 읽어온 다음, 실제 실리콘 칩이랑 똑같이 작동하도록 튜닝도 했지.
- 모든 하드웨어 기능을 깔끔하게 다룰 수 있는 SDK. PS1은 보통 BIOS를 통해 기능을 노출하는데(기존 SDK들이 이걸 엄청 써먹지), 나는 정반대로 성능을 최대로 뽑아내려고 하드웨어랑 직접 대화하게 설계했어.
no_std환경이고mipsel-sony-psx를 타겟으로 해. GPU(프레임버퍼, 오더링 테이블, 프리미티브, DMA, 폰트), GTE(3D 변환을 위한 COP2 워드 인코딩), 컨트롤러, SPU 오디오(ADPCM), CD-ROM 및 ISO9660, 메모리 카드용 모듈도 다 따로 만들었어. 제일 쩌는 건 공유 프로토콜 레이어인데, SDK 인코더랑 에뮬레이터 디코더가 똑같은 타입 정의를 써. 그래서 인코딩이 안 맞으면 런타임에 버그 찾느라 고생할 필요 없이 컴파일 단계에서 바로 에러가 나. - SDK 위에 얹은 꽤 현대적인 레이어. 덕분에 복잡한 GTE 워드나 오더링 테이블 대신 카메라나 씬 단위로 생각하면서 개발할 수 있어.
- 이 모든 걸 하나로 묶어주는 에디터. wgpu랑 egui로 만들었고, 에뮬레이터가 쓰는 하드웨어 렌더러를 그대로 써. 그래서 에디터에서 보는 화면이 콘솔에서 돌아가는 화면이랑 똑같아. 제일 신나는 건 에뮬레이터를 Claude랑 바로 연결했다는 거야. MCP 서버가 디버그 엔드포인트 25개 정도를 노출해서, 작업하는 동안 모델이 CPU 상태나 VRAM, 레지스터를 직접 들여다볼 수 있어. Claude한테 하드웨어 상태 좀 확인해달라고 해서 PS1 게임 디버깅하는 건 진짜 꿈만 같은 경험이야.
무조건 Rust로만 짜야 한다는 게 내 고집이었는데, 와, 진짜 꿈만 같아. 이제 Cargo 명령어 하나로 테스트, 2개 타겟(MIPS, ARM) 빌드, 심지어 PS1 호환 .bin/.cue 파일 생성하고 CD 굽는 것까지 다 되거든!
효과가 엄청나. 최근에 Celeste 게임 2개를 포팅해서 냈고(실제 기기에서 돌아가는 거 여기 보여줄게), 지금은 3D 아티스트랑 같이 PS1용 소울라이크 게임을 새로 만들고 있어. 사이드 프로젝트로 시작한 거라 코드가 처음부터 깔끔하진 않을 수도 있지만, AI 이전 세대부터 일해온 엔지니어라 코드를 유지보수 가능하고 확장성 있게 관리하는 법은 잘 알아.



