Hacker News Digest

07 октября 2026 г. в 11:27 • github.com • ⭐ 225 • 💬 111

Original • HN

#c++#emulation#god-of-war#mips#mit-license#offscreencanvas#ppsspp#psp#webassembly#webgl2

God of War on PSP, recompiled to WebAssembly and running in the browser

Проект psp-web-recomp позволяет запускать игры для PSP в браузере без эмулятора, используя статическую рекомпиляцию машинного кода MIPS в C++, который затем компилируется в WebAssembly. Игра взаимодействует с высокоуровневой эмуляцией ядра PSP (HLE), реализованной в C++, которая обеспечивает работу потоков, файловой системы (с потоковой загрузкой данных диска через HTTP Range-запросы), контроллера, аудио и сохранений. Графический чип GE эмулируется на CPU, где обрабатываются дисплей-листы, а результаты рендеринга передаются в WebGL2 через OffscreenCanvas в отдельном рабочем потоке, что позволяет достичь 60 FPS даже при увеличенном разрешении (до четырёх раз нативного 480×272). Звук, включая музыку и речь, декодируется через портированный ATRAC3/ATRAC3+ декодер из PPSSPP. Для работы требуется кросс-ориентированная изоляция (COOP и COEP), обеспечиваемая локальным сервером с нужными заголовками. Пользователь предоставляет собственный образ диска игры, после чего скрипты генерируют локальную веб-страницу. На данный момент успешно запущены God of War: Chains of Olympus и God of War: Ghost of Sparta, работающие на ноутбуках и смартфонах с сенсорным управлением, хотя видеовставки пока пропускаются. Весь код проекта распространяется под MIT-лицензией, за исключением сторонних компонентов с их собственными лицензиями. Важно: полученный WebAssembly и C++ считаются производными от оригинальной игры и должны храниться только локально.