AI Neo Lab
스킬

PS5 게임을 PC로 자동 이식하는 AnyPS5, 2.7만 개 스타가 증명한 작동 원리

PS5 전용 게임을 에뮬레이터 없이 리눅스와 윈도우 네이티브 실행 파일로 자동 변환해주는 AnyPS5가 2.7만 개 스타를 모으며 주목받고 있습니다. 독자적인 리링커와 동적 라이브러리 구현으로 셰이더까지 SPIR-V로 재컴파일해 GTX 1050 Ti급 하드웨어에서도 60프레임 구동이 가능합니다. 이 글은 AnyPS5의 구조부터 빌드·실행 단계, 검증된 타이틀 목록, 현재 한계점까지 한눈에 정리합니다.

에뮬레이터 없이 PS5 실행 파일을 PC 네이티브 바이너리로 바꿔주는 AnyPS5가 공개 2개월 만에 2.7만 개 스타를 기록했습니다. C++로 작성된 리링커와 시스템 라이브러리 구현만으로 상용 2D 플랫포머가 구형 GPU에서도 60fps를 내는 현장을 확인해 보세요.

AnyPS5가 무엇인가요

PS5 게임을 PC에서 돌리려면 보통 에뮬레이터를 떠올리지만, AnyPS5는 전혀 다른 길을 택했습니다. PS5 전용 실행 파일(ELF)을 리눅스·윈도우 네이티브 실행 파일로 자동 변환해주는 도구로, 에뮬레이션이나 별도 런타임 프로세스 없이 타깃 OS에서 직접 돌게 만듭니다. 저장소는 boykopovar/AnyPS5, 핵심 언어는 C++이며 2.7만 개 스타와 2,321 포크를 기록 중입니다(2026년 8월 첫 공개, 2026년 10월 최근 업데이트). GPL-2.0 라이선스로 배포됩니다.

어떻게 동작하나요

내부에 릴링커(relinker)가 있어 PS5 ELF를 리눅스 ELF나 윈도우 PE/COFF로 재배치하고, 시스템 PRX 라이브러리(core/libs/prx)를 동적 링크 가능한 형태로 제공합니다. 그래픽스 명령은 셰이더 리컴파일러가 SPIR-V로 변환해 벌칸(Vulkan)으로 넘기며, 검증은 SPIRV-Tools로 수행합니다(ANYPS5_ENABLE_SPIRV_TOOLS 빌드 옵션). 지원하지 않는 상태나 예외는 std::runtime_error로 던져 stderr에 출력 후 프로세스를 종료합니다.

빌드 예시 (README 참고)
cmake -B build -DANYPS5_ENABLE_SPIRV_TOOLS=ON
cmake --build build --config Release

호환성·성능 스냅샷

  • 검증된 게임 목록: docs/user/COMPATIBILITY.md에서 확인 가능
  • 2D 플랫포머 *Dreaming Sarah*가 GTX 1050 Ti / i5-7500 환경에서 안정 60 fps 기록
  • 시스템 라이브러리 커버리지는 ‘선언된 함수 비율’ 기준이며, 함수 선언이 늘수록 자동으로 상승
자주 묻는 질문

Q. 에뮬레이터와 뭐가 다른가요? A. 하드웨어 에뮬레이션 없이 실행 파일을 네이티브 포맷으로 변환·링크하므로 오버헤드가 낮고, 호스트 GPU 드라이버(벌칸)를 직접 씁니다.

Q. 모든 PS5 게임이 되나요? A. 아직은 검증된 타이틀 위주입니다. 호환성 문서에서 지원 여부를 확인하세요.

Q. 윈도우에서도 빌드되나요? A. 네, 릴링커가 PE/COFF 출력을 지원하므로 윈도우 네이티브 실행 파일을 생성합니다.

왜 쓰나요 — 에뮬레이터와 다른 점

에뮬레이터는 CPU·GPU 명령어를 소프트웨어로 흉내 내느라 오버헤드가 큽니다. AnyPS5는 PS5 전용 ELF 실행 파일을 PC 네이티브 PE/ELF로 동적 링킹만 다시 걸어주고, 셰이더만 SPIR-V로 재컴파일하면 끝납니다. 별도 런타임 프로세스도, 명령어 에뮬레이션도 없습니다. 그 결과 GTX 1050 Ti + i5-7500 환경에서 2D 플랫포머 <Dreaming Sarah>가 안정적인 60 fps로 돌아갑니다.

기술적 차별점 3가지

  • Relinker(core/relinker): PS5 ELF → Windows PE / Linux ELF로 기계어 수준에서 포맷만 변환
  • PRX 시스템 라이브러리(core/libs/prx): 동적 링킹으로 네이티브 함수 호출, 미구현 함수는 std::runtime_error로 즉시 종료
  • 셰이더 재컴파일러(core/shader/recompiler): PS5 셰이더 → SPIR-V, ANYPS5_ENABLE_SPIRV_TOOLS=ON 빌드 시 Spirv-Tools로 자동 검증
SPIR-V 검증 포함 빌드
cmake -B build -DANYPS5_ENABLE_SPIRV_TOOLS=ON
항목에뮬레이터AnyPS5
CPU 명령어 처리인터프리터 / JIT네이티브 실행 (링킹만 변경)
런타임 프로세스별도 에뮬레이터 프로세스 필요없음 (게임 프로세스 단독 실행)
GPU 셰이더런타임 번역·캐시빌드 시점 SPIR-V 재컴파일 + 검증
예외 처리크래시·행 가능성미구현 API는 std::runtime_error로 즉시 종료

이 방식 덕분에 2.7만 개 스타가 증명하듯, 호환 타이틀이 늘수록 에뮬레이터 대비 월등한 프레임·전력 효율을 보여줍니다. 단, 미구현 시스템 콜이 있으면 즉시 멈추므로 <a href="https://github.com/boykopovar/AnyPS5/blob/main/docs/user/COMPATIBILITY.md" target="_blank">호환 리스트</a> 확인 후 시도하세요.

설치·빌드·첫 실행 5단계

AnyPS5를 직접 빌드해보려면 저장소를 내려받고 CMake로 구성한 뒤 의존성을 해결하면 됩니다. 순서대로 따라 하면 5단계 만에 테스트 게임까지 띄울 수 있어요.

  1. 1. 저장소 클론 및 서브모듈 초기화

    git clone --recurse-submodules https://github.com/boykopovar/AnyPS5.git && cd AnyPS5로 전체 소스와 서드파티 라이브러리를 한 번에 가져옵니다.

  2. 2. 빌드 디렉터리 생성 및 SPIR-V 도구 활성화

    cmake -B build -DANYPS5_ENABLE_SPIRV_TOOLS=ON 명령으로 빌드 폴더를 만들고 셰이더 리컴파일러 검증에 쓰는 SPIRV-Tools를 켭니다.

  3. 3. 의존성 설치 및 빌드

    Linux라면 sudo apt install vulkan-dev spirv-tools-dev(또는 배포판 대응 패키지)로 Vulkan·SPIRV 헤더·라이브러리를 넣고, cmake --build build --config Release로 컴파일합니다. Windows에선 vcpkg로 vulkan spirv-tools를 설치한 뒤 같은 빌드 명령을 쓰세요.

  4. 4. 바이너리 위치 확인

    빌드가 성공하면 build/bin/ 아래 anyps5 실행 파일(Windows면 anyps5.exe)이 생깁니다. 이 파일이 ELF→PE/ELF 변환과 런타임 라이브러리 후킹을 모두 담당합니다.

  5. 5. 테스트 게임 구동

    ./anyps5 /path/to/game.elf 형태로 PS5 전용 ELF를 넘기면 변환 후 네이티브 프로세스로 실행됩니다. README에 나온 ‘Dreaming Sarah’ 같은 검증 타이틀로 먼저 돌려보고, 호환성 문서(docs/user/COMPATIBILITY.md)에서 지원 범위를 확인하세요.

터미널에서 실행(Linux 예시)
git clone --recurse-submodules https://github.com/boykopovar/AnyPS5.git
cd AnyPS5
cmake -B build -DANYPS5_ENABLE_SPIRV_TOOLS=ON
cmake --build build --config Release
./build/bin/anyps5 /path/to/game.elf
단계핵심 명령
클론git clone --recurse-submodules ...
CMake 구성cmake -B build -DANYPS5_ENABLE_SPIRV_TOOLS=ON
빌드cmake --build build --config Release
실행./build/bin/anyps5 game.elf

한눈에 보는 호환성 현황

AnyPS5가 현재까지 검증한 게임은 Dreaming Sarah 한 종목입니다. 이 2D 플랫포머는 GTX 1050 Ti와 i5-7500 3.4 GHz 환경에서 안정적인 60 fps로 동작이 확인됐습니다. 호환성 표는 프로젝트 문서 docs/user/COMPATIBILITY.md에 계속 갱신되며, 아직 다른 타이틀은 공식 검증 리스트에 올라오지 않았습니다.

구분내용
공식 검증 게임Dreaming Sarah (2D platformer)
테스트 환경GTX 1050 Ti / i5-7500 3.4 GHz
측정 프레임안정적 60 fps
호환성 문서docs/user/COMPATIBILITY.md

시스템 라이브러리 구현률은 프로젝트가 현재까지 선언한 함수( `core/libs/prx` ) 대비 구현된 비율로 표시됩니다. PS5 전체 시스템 함수가 분모가 아니므로, 신규 함수가 선언되면 분모가 커지면서 수치가 변동할 수 있습니다. 미구현 기능이나 예기치 않은 상태에 도달하면 `std::runtime_error` 예외를 던지며 `what()` 메시지를 stderr로 출력하고 프로세스를 즉시 종료합니다. 셰이더 리컴파일러는 SPIR-V를 정상 생성하며, ANYPS5_ENABLE_SPIRV_TOOLS=ON으로 빌드하면 Spirv-Tools로 유효성 검증까지 수행합니다.

  1. 호환성 문서 확인

    docs/user/COMPATIBILITY.md에서 최신 검증 리스트 보기

  2. 빌드 시 검증 활성화

    cmake -B build -DANYPS5_ENABLE_SPIRV_TOOLS=ON으로 SPIR-V 검증 켜기

  3. 런타임 에러 로그 수집

    stderr에 찍히는 what() 메시지로 미구현 함수 식별

자주 묻는 질문

Q. 전체 PS5 라이브러리 커버리지는 알 수 없나요? A. README는 “선언된 함수 대비 비율”만 명시합니다. 전체 함수 수 기준 통계는 제공되지 않습니다.

Q. Dreaming Sarah 외 다른 게임도 돌려볼 수 있나요? A. 소스 트리의 호환성 문서에 추가되기 전이라도 직접 테스트는 가능하지만, 미구현 기능에서 런타임 에러로 종료될 가능성이 높습니다.

주의할 점과 현재 한계

AnyPS5는 GPL-2.0 라이선스로 배포되므로, 수정한 소스를 공개하지 않고 제품을 배포할 수 없습니다. 상업적 활용이나 비공개 포크를 염두에 둔다면 라이선스 의무를 먼저 검토하세요.

미선언 시스템 함수와 런타임 종료

PS5 시스템 라이브러리(PRX) 중 프로젝트에 선언되지 않은 함수를 호출하면 즉시 std::runtime_error가 던져지며 프로세스가 종료됩니다. 현재 선언된 함수 비율은 전체 시스템 함수가 아니라 프로젝트가 아는 함수 대비 비율입니다. 미구현 함수가 많은 타이틀일수록 실행 도중 중단될 확률이 높습니다.

SPIR-V 검증 의존성

셰이더 리컴파일러가 생성한 SPIR-V는 SPIRV-Tools로 검증합니다. CMake 옵션 ANYPS5_ENABLE_SPIRV_TOOLS=ON으로 빌드하지 않으면 검증 단계가 빠져 런타임에 드라이버 오류로 나타날 수 있습니다. 검증 도구 자체가 최신 SPIR-V 스펙을 따라가므로, 드라이버·툴체인 버전 불일치 시 거짓 음성/양성 모두 발생 가능합니다.

검증 포함 빌드 예시
cmake -B build -DANYPS5_ENABLE_SPIRV_TOOLS=ON
cmake --build build --config Release

실사용 전 체크리스트

  • GPL-2.0 소스 공개 의무 수용 여부 확인
  • 대상 게임이 사용하는 PRX 함수가 core/libs/prx에 선언돼 있는지 사전 조사
  • 빌드 머신에 SPIRV-Tools 최신판이 설치돼 있는지 확인
  • 예외 처리 로직(catch (std::runtime_error))을 감싸는 래퍼 필요 여부 판단
  • 호환성 목록(docs/user/COMPATIBILITY.md) 최신 버전과 대조

정리 — 다음에 시도해 볼 것

AnyPS5를 더 깊이 들여다보고 싶다면 저장소가 이미 잘 정리해 둔 문서부터 훑어보세요. 아키텍처 개요(docs/dev/ARCHITECTURE.md)는 릴링커와 PRX 라이브러리가 어떻게 얽혀 있는지 보여주고, 빌드 가이드(docs/dev/BUILD.md)는 SPIR-V 툴 체인(-DANYPS5_ENABLE_SPIRV_TOOLS=ON)을 켜는 옵션까지 담고 있습니다. 기여 규칙(CONTRIBUTING.md)과 코드 컨벤션(docs/dev/CONVENTIONS.md)도 미리 읽어두면 PR을 낼 때 리뷰 시간을 아낄 수 있습니다.

다음에 포팅해 볼 게임 고르기

현재 검증된 타이틀은 Dreaming Sarah 한 종목뿐이지만, 호환성 목록(docs/user/COMPATIBILITY.md)은 계속 갱신됩니다. 직접 테스트할 후보를 고를 때는 다음 체크리스트를 참고하세요.

  • PS5 네이티브 ELF가 공개·추출 가능한 인디·소규모 타이틀부터 시작
  • GPU 의존도가 낮은 2D·픽셀 아트 장르를 1순위로
  • 시스템 라이브러리 호출이 적고 스레드 구조가 단순한 실행 파일 선호
  • std::runtime_error로 떨어지는 미구현 함수가 로그에 몇 개 뜨는지 먼저 확인
  1. 호환성 문서 열기

    docs/user/COMPATIBILITY.md에서 미검증·부분 지원 게임 목록을 살핀다

  2. ELF 추출·릴링크 테스트

    릴링커 단독 실행으로 타겟 포맷 변환이 깨지지 않는지 확인

  3. 셰이더 리컴파일 검증

    ANYPS5_ENABLE_SPIRV_TOOLS=ON 빌드 후 SPIR-V 검증 통과 여부 확인

  4. 실행·프로파일링

    GTX 1050 Ti급 하드웨어에서 60 fps 안정 여부 측정

자주 묻는 질문

Q. 상업용 게임도 포팅 가능한가요? A. GPL-2.0 라이선스와 소니 저작권 정책을 모두 준수해야 하므로, 비상업·연구 목적 외에는 배포를 권장하지 않습니다.

Q. 윈도우·리눅스 외에 macOS 지원 계획은? A. 현재 README·아키텍처 문서에 별도 언급이 없습니다. Vulkan 레이어 구현 상태를 먼저 확인하세요.


이런 글도 있어요