TL;DR
- AnyPS5는 PS5 실행 파일을 Linux와 Windows에서 네이티브 형식으로 변환해 실행하며, 에뮬레이션이나 별도 런타임 프로세스가 필요하지 않은 도구임.
- 재링커(relinker)는 실행 파일을 대상 시스템 형식으로 바꾸고, 동적 링크에 적합한 시스템 PRX 라이브러리 구현을 제공함.
--to-intel옵션은 Zen 2 전용 명령어를 재링크 시점에 Intel 호환 명령으로 바꾸며, 기본 설정에서는 타이틀 자체의sce_module/sce_modulesPRX 파일도 게스트 모듈로 변환함.- 실행은
_start를 거쳐main에 도달하며, 셰이더 재컴파일러는 SPIR-V를 생성하고 실제 게임은 로고·메인 메뉴·오디오가 포함된 게임플레이까지 도달함. - 컨트롤러 입력을 지원하며, 키보드와 마우스는
anyps5-input.ini로 설정 가능하고 프로젝트 라이선스는 GNU GPL 버전 2 전용임.
소개
- Linux와 Windows용 실행 파일 자동 포팅 도구임.
- 재링커가 실행 파일을 대상 시스템의 네이티브 형식으로 변환하며, 동적 링크에 적합한 시스템 PRX 라이브러리 구현을 포함함.
- 에뮬레이션이나 별도 런타임 프로세스는 사용하지 않음.
--to-intel옵션은 타이틀에 포함될 수 있는 Zen 2 전용 명령어(EXTRQ,INSERTQ,MOVNTSS,MOVNTSD)를 재링크 시점에 바꿈.- 길이가 같은 Intel 인코딩이 있으면 해당 위치에서 명령어를 교체하고, 그렇지 않으면 생성된 스텁 섹션으로 점프하도록 처리해 Intel 호스트에서 런타임 에뮬레이션이 필요하지 않게 함.
- 기본 설정에서는 타이틀 자체의
sce_module/sce_modulesPRX 파일도 링크 시 우선 적용되는 게스트 모듈로 변환함. 이 모듈에는 즉시 바인딩(eager binding)이 필요함. Demon's Souls(PPSA01342)처럼 자체libc.prx가 포함된 타이틀은--skip-sce-module옵션으로 재링크함.- 해당 타이틀의
libc.prx가 프로젝트의libc.prx를 대체하면 게스트 메모리 아레나, 힙, 크래시 보고 기능을 제공하는 프로젝트 라이브러리가 대체됨. - 타이틀의
libc.prx는 구현되지 않은 커널 함수도 가져오므로, 실행 파일이 시작 단계에서 바인딩에 실패함. - 적어도 한 게임을 처음으로 완전히 실행하는 데 성공한 뒤 릴리스를 게시할 예정임.
상태
- 실행이
_start에 도달하고, 스택 언와인딩 및 예외 처리 테이블이 구성된 뒤main에 도달함. - 지원되지 않거나 예상하지 못한 상태에서는
std::runtime_error를 엄격히 발생시킴.what()내용을 표준 오류(stderr)에 출력한 뒤 프로세스를 종료함. - 셰이더 재컴파일러가 SPIR-V를 성공적으로 생성하며,
ANYPS5_ENABLE_SPIRV_TOOLS를 켜서 빌드하면Spirv-Tools로 검증함. - 실제 게임이 로고, 메인 메뉴, 오디오가 포함된 게임플레이까지 도달함.
프로젝트 기술 부채와 코드 스타일 규칙
빌드
- 재링커는 C++20 표준 라이브러리만 사용하며, 표준을 준수하는 컴파일러라면 빌드 가능해야 함.
libc.prx구현에는 컴파일러별 코드가 포함됨. Linux 빌드는 GCC에서 작동하며, Windows에서는 현재 MinGW-w64 GCC 15.2.0(winlibs-gcc15,x86_64-ucrt-posix-seh)이 필요함.- 프로젝트는 컴파일러 이식성을 극대화하는 것을 목표로 함. 추가 컴파일러 지원은 첫 게임 실행에 성공한 뒤 다룰 예정임.
입력 매핑
- SDL로 매핑된 게임 컨트롤러를 지원하며, 아날로그 스틱과 트리거도 포함됨.
- 키보드와 마우스 조작은
anyps5-input.ini파일로 설정 가능함. 지원 기기와 설정 형식은 입력 매핑 안내를 참고함.
면책 조항
- 이 프로젝트의 목적은 상호 운용성, 연구, 보존 및 호환성임.
- 저작권이 있는 소프트웨어, 펌웨어, 암호화 키 또는 독점 라이브러리를 포함하거나 배포하지 않으며, 사용을 요구하지도 않음.
- 이 프로젝트와 함께 사용할 바이너리를 관련 법률 및 각 바이너리의 라이선스 조건에 따라 확보하고 사용하는 책임은 사용자에게 있음.
라이선스
- 이 프로젝트는 GNU 일반 공중 사용 허가서 버전 2만을 따름.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요