العودة
بوكيمون إميرالد يعمل في المتصفح عبر WebAssembly بمعدل 100 ألف إطار في الثانية
SiTech AI Team3 دقيقة قراءة

بوكيمون إميرالد يعمل في المتصفح عبر WebAssembly بمعدل 100 ألف إطار في الثانية

لعبة Pokemon Emerald الصادرة عام 2004 لأجهزة Game Boy Advance تعمل الآن داخل تبويب في المتصفح. مشروع pokeemerald-wasm ليس محاكياً: فهو يعيد ترجمة فك تجميع pret/pokeemerald إلى WebAssembly عبر Emscripten.

لعبة Pokemon Emerald، التي صدرت عام 2004 لأجهزة Game Boy Advance، تعمل الآن داخل تبويب في المتصفح، وبحسب ما تتناقله التغطية بمعدل 100 ألف إطار في الثانية. ظهر مشروع pokeemerald-wasm على Hacker News في أوائل يونيو 2026، وهو مستضاف على العنوان pokeemerald.com؛ وقد أُنشئ مستودعه على GitHub في 29 مايو 2026 وجمع منذ ذلك الحين مئات النجوم.

مُترجَم لا مُحاكى

يسهل إساءة قراءة الرقم الوارد في العنوان. فـ pokeemerald-wasm ليس محاكياً لجهاز Game Boy Advance: فهو لا يحاكي معالج ARM7 ولا خريطة الذاكرة ولا شرائح الصوت في الجهاز. بدلاً من ذلك يأخذ المشروع pret/pokeemerald — وهو فك تجميع مجتمعي للعبة إلى شيفرة C ولغة تجميع ARM قابلة للقراءة — ويعيد ترجمة هذه الشيفرة إلى WebAssembly باستخدام Emscripten، ثم يضيف واجهة متصفح. السلسلة هي: ROM الأصلي ← شيفرة C المفكوكة ← WebAssembly ← المتصفح. ولا يُعاد بناء عتاد الجهاز الأصلي في أي خطوة منها.

هذا الفارق تحديداً هو ما يجعل السرعة ممكنة. فالمحاكي يدفع كلفة تفسير مع كل تعليمة ويقلّد توقيت العتاد إطاراً بإطار، أما الشيفرة المُعاد ترجمتها فهي منطق اللعبة نفسه ينفذه المضيف مباشرة. وقد صيغ ذلك بوضوح في نقاش Hacker News: النتيجة هي اللعبة نفسها مُترجَمة إلى Wasm، لا محاكياً مبنياً على Wasm.

ما الذي يقيسه «100k FPS» فعلاً

وفقاً لتغطية تقنية للمشروع، يشير الرقم 100 ألف إطار في الثانية إلى معدل تمرير منطق اللعبة بعد إزالة سقف الإطارات، وليس إلى 100 ألف صورة مرسومة فعلياً في الثانية. كان العتاد الأصلي مقيّداً بتحديث 60 هرتز؛ وإزالة السقف تسمح للحلقة المُعاد ترجمتها بالعمل بأقصى سرعة يسمح بها المعالج، لذا فإن الرقم مقياس للهامش المتاح مقارنة بالمحاكاة وليس وضع لعب. اللعب الفعلي يعود للتزامن عند 60 إطاراً في الثانية، ويُستهلك الفائض في التسريع واستجابة الإدخال الفورية والأجهزة الضعيفة.

لا تحتاج النسخة العاملة في المتصفح إلى إضافات أو تنزيلات: التحكم بمفاتيح الأسهم، وZ زر A، وX زر B، وEnter زر Start، وShift زر Select.

الحفظ والهواتف والخطوات التالية

أفاد معلّقون على Hacker News بأن الحفظ داخل اللعبة يعمل فعلاً، وهي إشارة إلى أن المنفذ يحافظ على حالة لاعب حقيقية لا على عرض رسومي فحسب. أما على الهواتف فالوضع أقل سلاسة: ذكر أحد مستخدمي Firefox على أندرويد أن الصفحة لا تتصرف كتطبيق PWA قابلاً للتثبيت، فنُصح باستخدام خيار «Add to home» في المتصفح. أما التبادل بين النسخ فلم يعمل بعد، وهو الميزة الأكثر طلباً من المستخدمين.

المستودع ليس للمتصفح وحده. أحد أهداف Makefile يبني ملفاً تنفيذياً أصلياً بتحويل وحدة WebAssembly إلى C عبر wasm2c من WABT وربطها بمضيف Raylib، وهدف آخر يبني واجهة framebuffer لنظام لينكس موجهة لقارئات Kindle Scribe المخترقة. وكما في مشاريع فك التجميع الأخرى، لا يُوزَّع ROM ولا أي أصول محمية بحقوق النشر — بل يوفّر المستخدم نسخته القانونية الخاصة.

ولماذا يهم ذلك: إنه برهان عملي على أن لعبة تجارية كاملة يمكن إعادة ترجمتها إلى WebAssembly وتشغيلها في تبويب متصفح مع هامش أداء — وهو حجة لصالح الشيفرة القابلة للقراءة كشكل مستدام للحفاظ على الألعاب.

SSiTech

SiTech — تطوير ويب مدعوم بالذكاء الاصطناعي

نبني مواقع سريعة وعصرية وندمج الذكاء الاصطناعي في سير عمل الشركات. لديك مشروع أو سؤال؟ يسعدنا مساعدتك.