God of War PSP 두 작품, WebAssembly로 재컴파일돼 브라우저에서 실행
- PSP용 God of War 두 작품이 WebAssembly로 재컴파일돼 브라우저에서 실행됨. 게임의 MIPS 기계어를 C++로 옮겨 Emscripten으로 빌드하고, PSP 운영체제와 그래픽 칩을 고수준으로 재구현한 코드에 링크하는 구조임.
- 두 번째 작품 Ghost of Sparta는 PGD 복호화와 시스템 콜 몇 개, ambient alpha 수정을 거쳐 같은 파이프라인에 올렸음.
- 렌더링은 별도 스레드에서 도는 WebGL2/OpenGL ES 3 백엔드가 맡고, 디스크는 HTTP Range 요청으로 스트리밍하며, 음악은 PPSSPP의 FFmpeg 디코더로 ATRAC3+를 재생함. 페이지에 터치 컨트롤도 붙어 있음.
- scripts/setup.sh가 PSPRecomp을 고정 커밋 f6e7d41로 받아 patches/를 적용하고 Emscripten SDK를 설치하며, port.sh가 디스크 이미지 추출부터 복호화, 재컴파일, 스트리밍 매니페스트, 빌드까지 처리함. serve.py는 Range와 SharedArrayBuffer 헤더를 붙여 서빙함.
- 저장소에 게임 에셋은 없고 사용자가 자기 PSP 디스크를 넣어야 함. 디버깅용으로 PSPWEB_SKIP_PRIMS가 쉼표로 구분한 프리미티브 범위를 건너뛰고, 네이티브 러너는 --stick frame:x,y:length로 아날로그 스틱을 고정함.
Hacker News 의견들
PSP 게임을 WebGL로 디컴파일한다는 게 말이 되나. 2006년에 ePSXe 돌리려면 펜티엄급 괴물 PC가 필요했는데.
AI가 이걸 잘하는 건 함수 단위로 void* 지옥 같은 C 코드를 계속 뽑아보고 컴파일된 md5가 원본 바이너리랑 맞을 때까지 반복할 수 있어서임. 결과 소스는 읽을 수 없게 되지만 컴파일러랑 플랫폼에 안 묶임. sm64 디컴프 품질 좀 봐, 사람이 아직 낫다니까.
디컴파일할 필요도 없음. 나도 옛날 펜티엄 MMX 급 게임용으로 x86-32 to WASM 다이나렉을 바이브코딩했는데 Zen2 PC 파이어폭스에서 1k MIPS 넘게 나왔음. 아직도 믿기지 않음.
뭔 소리야, 예전에도 HLE 같은 걸로 미친 에뮬레이션 했는데. 드림캐스트에서 bleem 에뮬레이터가 PS1 게임 돌렸다고.
AI가 에뮬레이션 판을 완전히 뒤집고 있음. 이제 에뮬레이팅도 아니고 리버스 엔지니어링해서 게임을 직접 포팅하는 거임. IP를 안 풀어주는 회사들 보면 이런 작업이 고맙지.
그거 리버스 엔지니어링해서 공유하는 거 기술적으로 불법 아님? 멋있긴 한데 대기업들이 로비해서 법을 더 세게 만들 것 같음. Claude가 이런 걸 허용하는 것도 신기하고.
아무 일도 안 일어남.
나도 게임큐브 슈퍼 스매시브라더스 미리 같은 걸 만들고 있음. 브라우저에서 돌아가고 돌핀을 오라클로 써서 AI로 기계적으로 80% 정도 했음.
나는 이 타임라인이 좋지만은 않음. AI 때문에 다들 각자 만들고 하나의 디컴프 프로젝트에 모여 기여하는 대신 조잡한 바이브코딩 포트가 산더미로 쌓이는 게 오픈소스 전체에서 걱정됨.
보존이 아니라 사실상 리마스터임. 원본 게임의 데이터와 소스 에셋, 소스 코드를 최대한 보존해야 하고. 불법성은 상관없는데 abandonware 법적 정의가 있으면 좋겠음.
데누보도 작년에 AI로 계속 크랙돼서 회사가 익명 크래커를 고소하려 했음. 크랙 판도 같이 뒤집히는 중.
이건 그냥 에뮬레이터에 단계만 추가한 거 아님? 게임별 패치가 필요한 나쁜 에뮬레이터고 게임 바이너리랑 같이 묶어버린 거임. 그냥 쓰레기.
게임별 패치 비판은 좀, AI 코딩에는 bitter lesson 비슷한 게 있어서 아무나 버튼 눌러 맞춤형을 몇 분 만에 뽑는데 플랫폼을 예쁘게 만들 이유가 없음. 게임하는 사람은 에뮬레이터 우아함에 관심 없고 버그 있으면 AI로 고쳐서 계속 하면 됨.
PSP 게임을 에뮬레이터 없이 브라우저에서 돌린다는 설명, 엄밀히 말하면 이건 에뮬레이션 스택임. 많은 에뮬레이터가 이미 대상 기계어를 리프트하고 JIT 함. WASM을 거치지 않을 뿐.
보통 AOT나 정적 재컴파일은 전통적인 에뮬레이션이라고 안 봄.
WINE도 사실상 그렇지 않음. Windows 유저스페이스를 재구현하고 DirectX를 Vulkan/OpenGL로 번역하는데 에뮬레이터가 아니라고 함. 그럼 x86을 ARM으로 AOT 번역해서 WINE으로 돌리면 그건 에뮬레이터인가.
레지스터 파일과 PSP 메모리 모델 위에서 코드가 돈다는 README 문장을 보면 내가 보기엔 에뮬레이터임.
10년 전 i7 노트북에서 이 게임 에뮬레이션 하면 15 FPS 나왔음. 지금 이건 마법 같음.
저장소에 게임 에셋이 없고 자기 PSP 디스크를 넣어야 한다는데, 소니가 언제 내릴지 궁금함.
PSP용 God of War 두 작품은 당시 플랫폼에서 그래픽이 제일 좋았음. 2008년과 2010년에 나왔고 IGN 리뷰는 PS2 게임 상당수보다 낫다고 했음. 나도 해봤는데 PS2 게임 축소판 느낌이었음.
상용 소프트웨어가 언제쯤 전부 서버사이드 렌더링이나 스트리밍으로 갈까. 스타디아 다시 켜겠네.