PS2 게임, WebAssembly로 브라우저 실행
원제: Show HN: PS2 games statically recompiled to WebAssembly
왜 중요한가
정적 재컴파일 기법이 PS2 수준의 복잡한 하드웨어에서도 브라우저 실행 가능성을 입증했다는 점이 주목할 만하다.
개발자 snuri00가 PlayStation 2 게임을 에뮬레이터 없이 브라우저에서 구동하는 오픈소스 프로젝트 'ps2-web-recomp'을 공개했다. PS2의 Emotion Engine 머신 코드를 C++로 정적 변환한 뒤 WebAssembly로 컴파일하고, WebGPU 기반 런타임과 연결하는 방식이다. 첫 지원 타이틀은 Gran Turismo 4로, PAL 버전 기준 초당 50프레임으로 동작한다.
ps2-web-recomp은 PS2 게임을 정적 재컴파일(static recompilation) 방식으로 브라우저에서 실행하는 프로젝트다. 기존 에뮬레이터처럼 CPU를 동적으로 흉내 내는 방식이 아니라, 게임의 원본 머신 코드를 미리 C++로 변환하고 WebAssembly 바이너리로 빌드한다. PS2 운영체제와 하드웨어 동작은 별도로 재구현한 네이티브 런타임이 처리하며, 렌더링은 WebGPU를 사용한다.
첫 번째 타이틀로 Gran Turismo 4가 선택됐다. 이 게임은 PS2에서 가장 요구 사항이 높은 게임 중 하나로, 두 개의 벡터 유닛을 동시에 활용하고 리플레이·라이선스 테스트에서 정밀한 부동소수점 계산이 필요하다. 또한 렌더링된 이미지를 팔레트로 다시 읽는 특수 그래픽 기법도 포함된다. 현재 부팅부터 오프닝 영상, 메뉴, 레이스까지 완전 작동하며 음악·효과음 재생과 브라우저 내 메모리 카드 저장도 지원된다.
성능 측면에서 노트북 내장 GPU를 탑재한 Chrome 브라우저 기준으로 PS2 원본의 2배 해상도에서 50fps를 달성했다. 이 프로젝트는 PSP 게임을 동일 방식으로 변환하는 psp-web-recomp의 후속작이기도 하다. GitHub에 MIT 라이선스로 공개됐으며, 현재 스타 수는 254개, 포크 12개다.