უკან დაბრუნება
Pokemon Emerald ბრაუზერში WebAssembly-ით 100 000 FPS-ზე გაეშვა
SiTech AI Team3 წთ. საკითხავი

Pokemon Emerald ბრაუზერში WebAssembly-ით 100 000 FPS-ზე გაეშვა

2004 წლის Game Boy Advance-ის თამაში Pokemon Emerald ბრაუზერში მუშაობს. პროექტი pokeemerald-wasm ემულატორი არ არის: ის pret/pokeemerald-ის დეკომპილაციას Emscripten-ით WebAssembly-ზე გადააკომპილირებს და 100 000 FPS-ის მაჩვენებელს აღწევს.

2004 წლის Game Boy Advance-ის თამაში Pokemon Emerald ახლა ბრაუზერის ჩანართში მუშაობს — გავრცელებული ცნობებით, წამში 100 000 კადრის სიჩქარით. პროექტი pokeemerald-wasm 2026 წლის ივნისის დასაწყისში Hacker News-ზე გამოჩნდა და მისამართზე pokeemerald.com არის განთავსებული; მისი GitHub-ის რეპოზიტორია 2026 წლის 29 მაისს შეიქმნა და მას შემდეგ ასობით ვარსკვლავი მოიპოვა.

კომპილირებულია, არა ემულირებული

სათაურის რიცხვი ადვილად იწვევს გაუგებრობას. pokeemerald-wasm Game Boy Advance-ის ემულატორი არ არის: ის არ ახდენს კონსოლის ARM7 პროცესორის, მეხსიერების რუკისა და ხმის ჩიპების სიმულაციას. სამაგიეროდ, ის იღებს pret/pokeemerald-ს — საზოგადოების მიერ შექმნილ დეკომპილაციას წაკითხვად C და ARM ასემბლერის კოდში — და ამ კოდს Emscripten-ით WebAssembly-ზე გადააკომპილირებს, შემდეგ კი ბრაუზერის ინტერფეისს ამატებს. ჯაჭვი ასე გამოიყურება: ორიგინალი ROM → დეკომპილირებული C კოდი → WebAssembly → ბრაუზერი. ამ ჯაჭვის არც ერთ საფეხურზე GBA-ის ტექნიკური აპარატურა არ იქმნება.

სწორედ ეს განსხვავება ხსნის სისწრაფეს. ემულატორი ყოველ ინსტრუქციაზე ინტერპრეტაციის ხარჯს იხდის და კადრობრივად აპარატურის დროით ქცევას ბაძავს; გადაკომპილირებული კოდი კი თავად თამაშის ლოგიკაა, რომელსაც ჰოსტი პირდაპირ ასრულებს. Hacker News-ის განხილვაში ამას პირდაპირ აფორმულირებენ: ეს თავად თამაშია Wasm-ზე კომპილირებული და არა Wasm-ზე დაფუძნებული ემულატორი.

რას ზომავს „100k FPS“

პროექტის ტექნიკური მიმოხილვების მიხედვით, 100 000 FPS ეხება თამაშის ლოგიკის გამტარუნარიანობას კადრების ლიმიტის მოხსნის შემდეგ და არა წამში 100 000 რეალურად დახატულ სურათს. ორიგინალი აპარატურა 60 ჰც-ის განახლებაზე იყო მიბმული; ლიმიტის მოხსნა გადაკომპილირებულ ციკლს პროცესორის მაქსიმალური სისწრაფით მუშაობის საშუალებას აძლევს, ამიტომ ეს რიცხვი ემულაციასთან შედარებით რეზერვის საზომია და არა სათამაშო რეჟიმი. რეალური თამაში ისევ 60 FPS-ზე სინქრონდება, ხოლო ჭარბი სიმძლავრე სწრაფ აჩქარებას, შეყვანის მყისიერ რეაქციას და სუსტ მოწყობილობებზე მუშაობას ხმარდება.

ბრაუზერში ვერსია დამატებებსა და ჩამოტვირთვას არ საჭიროებს: მართვა ისრებით, Z — ღილაკი A, X — B, Enter — Start, Shift — Select.

შენახვა, მობილური და შემდეგი ნაბიჯები

Hacker News-ის კომენტატორები ადასტურებენ, რომ თამაშის შენახვა ნამდვილად მუშაობს — ეს იმის ნიშანია, რომ პორტი რეალურ პროგრესს ინახავს და არა მხოლოდ გრაფიკულ დემონსტრაციას წარმოადგენს. მობილურზე სიტუაცია უფრო უხეშია: Android-ის Firefox-ის ერთმა მომხმარებელმა აღნიშნა, რომ გვერდი დასაყენებელი PWA-სავით არ იქცევა, და მას ბრაუზერის „Add to home“ ფუნქცია ურჩიეს. თამაშებს შორის გაცვლა ჯერ არ მუშაობს — სწორედ ამას ითხოვენ მომხმარებლები ყველაზე ხშირად.

რეპოზიტორია მხოლოდ ბრაუზერისთვის არ არის განკუთვნილი. Makefile-ის ერთი სამიზნე WebAssembly-ის მოდულს WABT-ის wasm2c-ით C-ად გარდაქმნის და Raylib-ის ჰოსტს უკავშირებს, მეორე კი Linux-ის framebuffer-ის ინტერფეისს ქმნის jailbreak-გაკეთებული Kindle Scribe-ის ელექტრონული წიგნისთვის. სხვა დეკომპილაციის პროექტების მსგავსად, ROM და საავტორო უფლებებით დაცული რესურსები არ ვრცელდება — მომხმარებელი საკუთარ ლეგალურ ასლს იყენებს.

რატომ არის ეს მნიშვნელოვანი: ეს არის მომუშავე დემონსტრაცია იმისა, რომ სრულფასოვანი კომერციული თამაში შეიძლება WebAssembly-ზე გადაკომპილირდეს და ბრაუზერის ჩანართში რეზერვით იმუშაოს — არგუმენტი წაკითხვადი კოდის სასარგებლოდ, როგორც თამაშების შენარჩუნების ხანგრძლივი ფორმისა.

SSiTech

SiTech — AI-გაძლიერებული ვებ დეველოპმენტი

ვქმნით სწრაფ, თანამედროვე ვებსაიტებს და AI-ს ვაერთიანებთ ქართული ბიზნესებისთვის. გაქვთ პროექტი ან კითხვა? სიამოვნებით დაგეხმარებით.