
Pokemon Emerald brauzerdə WebAssembly ilə 100 min FPS sürətlə işləyir
2004-cü ildə Game Boy Advance üçün çıxan Pokemon Emerald artıq brauzer nişanında işləyir. pokeemerald-wasm emulyator deyil: pret/pokeemerald dekompilyasiyasını Emscripten ilə WebAssembly-ə yenidən kompilyasiya edir və 100 min FPS-ə çatır.
2004-cü ildə Game Boy Advance üçün buraxılan Pokemon Emerald artıq brauzer nişanında işləyir — yayılan məlumata görə, saniyədə 100 000 kadr sürəti ilə. pokeemerald-wasm layihəsi 2026-cı ilin iyun ayının əvvəlində Hacker News-da gündəmə gəldi və pokeemerald.com ünvanında yerləşir; GitHub repozitoriyası 29 may 2026-cı ildə yaradılıb.
Emulyasiya deyil, kompilyasiya
Başlıqdakı rəqəmi yanlış oxumaq asandır. pokeemerald-wasm Game Boy Advance emulyatoru deyil: konsolun ARM7 prosessorunu, yaddaş xəritəsini və ya səs çiplərini simulyasiya etmir. Əvəzində o, pret/pokeemerald-ı — oyunun icma tərəfindən oxunaqlı C və ARM assembler koduna dekompilyasiyasını — götürür və bu mənbə kodunu Emscripten ilə WebAssembly-ə yenidən kompilyasiya edərək üzərinə brauzer interfeysi əlavə edir. Zəncir belədir: orijinal ROM → dekompilyasiya olunmuş C kodu → WebAssembly → brauzer. Bu zəncirin heç bir mərhələsində GBA aparatı yenidən qurulmur.
Sürəti mümkün edən məhz bu fərqdir. Emulyator hər təlimat üçün interpretasiya xərci ödəyir və aparat vaxtlamasını kadr-kadr təqlid edir; yenidən kompilyasiya olunmuş kod isə birbaşa oyunun öz məntiqidir və host onu yerli səviyyədə icra edir. Hacker News müzakirəsində bu açıq şəkildə ifadə olunub: nəticə Wasm əsaslı emulyator deyil, Wasm-a kompilyasiya olunmuş oyunun özüdür.
"100k FPS" əslində nəyi ölçür
Layihəni əhatə edən texniki icmallara görə, 100 000 FPS kadr limiti götürüldükdən sonra oyun məntiqinin məhsuldarlığına aiddir — saniyədə çəkilən 100 000 təsvirə deyil. Orijinal aparat 60 Hz yeniləmə sürətinə bağlı idi; limitin götürülməsi yenidən kompilyasiya olunmuş dövrün prosessorum icazə verdiyi maksimum sürətlə işləməsinə imkan verir, ona görə də bu rəqəm emulyasiya ilə müqayisədə performans ehtiyatının ölçüsüdür, oynanıla bilən rejim deyil. Real oyun yenidən 60 FPS-ə sinxronlaşır; artıq güc sürətli irəli çəkmə və gecikməsiz giriş üçün istifadə olunur.
Brauzer versiyası əlavə və ya yükləmə tələb etmir: idarəetmə ox düymələri ilədir, Z — A düyməsi, X — B, Enter — Start, Shift — Select.
Yadda saxlama, mobil və növbəti addımlar
Hacker News-dakı şərhçilər oyun içi yadda saxlamağın həqiqətən işlədiyini bildiriblər; bu, portun yalnız qrafik nümayişi deyil, real oyunçu vəziyyətini qoruduğunun əlamətidir. Mobildə vəziyyət daha kobuddur: Android Firefox istifadəçilərindən biri səhifənin quraşdırıla bilən PWA kimi davranmadığını qeyd edib. Oyunlar arasında mübadilə hələ işləmir və istifadəçilərin ən çox tələb etdiyi funksiya məhz budur.
Repozitoriya yalnız brauzer üçün deyil. Makefile-ın bir hədəfi WebAssembly modulunu WABT-in wasm2c aləti ilə C-yə çevirib Raylib hostu ilə birləşdirir, digəri isə Kindle Scribe e-oxuyucuları üçün Linux framebuffer interfeysi yaradır. Digər dekompilyasiya layihələrində olduğu kimi, ROM və müəllif hüququ ilə qorunan resurslar yayılmır — istifadəçi öz qanuni nüsxəsini təqdim edir.
Niyə vacibdir: tam həcmli kommersiya oyununun WebAssembly-ə yenidən kompilyasiya olunub brauzer nişanında performans ehtiyatı ilə işləyə bilməsinin işlək sübutudur — oxunaqlı mənbə kodunun oyunların qorunmasının davamlı forması olması lehinə arqument.
SiTech — AI ilə gücləndirilmiş veb hazırlanması
Sürətli və müasir saytlar qurur, AI-ı real biznes proseslərinə gətiririk. Layihəniz və ya sualınız var? Kömək etməyə hazırıq.