Your browser tab is now a PlayStation 2. We built TabStationToo to see how far WebAssembly can go!
WebAssembly로 브라우저에서 PS2 구동하는 TabStationToo, 일부 게임은 실기 속도 근접
TabStationToo는 PCSX2를 WebAssembly로 옮겨 브라우저에서 PS2 게임을 실행하는 실험 프로젝트입니다. 자체 JIT와 WebGPU를 활용해 일부 게임 장면에서 실기 속도에 근접했지만, 성능 기록은 특정 기기와 게임 구간에서 측정한 결과입니다.
- 주제
본문
TabStationToo는 PCSX2 기반 PS2 에뮬레이터를 WebAssembly로 빌드해 브라우저에서 실행합니다. 브라우저에서 네이티브 코드를 생성할 수 없는 제약을 자체 JIT로 우회해 PS2의 EE·IOP·VU0·VU1 코드를 실행 중 WebAssembly 모듈로 컴파일합니다. 그래픽은 WebGPU로 처리하고 SharedArrayBuffer 기반 스레드도 사용합니다.
프로젝트의 성능 기록은 Apple M1 Max에서 Chrome으로 측정한 사례를 포함합니다. Guitar Hero는 곡 재생 중 거의 대부분 실기 속도인 100%를 기록했고, GTA San Andreas는 특정 도보 구간에서 평균 94.8%를 보였습니다. Tekken Tag Tournament의 특정 대전 장면은 평균 87.3%였습니다. 측정값은 게임 전체의 성능이 아니라 정해진 장면과 조건에서 나온 결과입니다.
게임을 실행하려면 사용자가 BIOS와 디스크 이미지를 준비해야 합니다. 프로젝트는 BIOS를 제공하거나 내려받지 않으며, 디스크 이미지는 필요한 부분을 사용자 파일에서 읽는다고 설명합니다. BIOS와 메모리 카드 저장 데이터는 브라우저에 보관됩니다. 게임 커버 이미지를 시리얼 번호로 가져오는 요청은 발생합니다.
프로젝트는 초기 실험 단계입니다. CHD 부모 이미지와 여러 파일로 구성된 BIN/CUE, 휴대전화는 지원하지 않습니다. Linux의 Chromium 계열 브라우저에서는 대부분의 GPU에서 WebGPU가 꺼져 있어 소프트웨어 렌더러로 전환될 수 있습니다. 이때 그래픽 성능은 달라질 수 있습니다. 프로젝트는 PCSX2와 별개로 운영되며 GPL v3.0으로 공개됐습니다.
자료: Reddit, GitHub TabStationToo / 정리·해설: Trawling
참고 자료
- TabStationToo/docs/web-port/PERFORMANCE.md at wasm · TabStationToo/TabStationToo · GitHub — https://github.com/TabStationToo/TabStationToo/blob/wasm/docs/web-port/PERFORMANCE.md