AnyPS5: إعادة ربط ملفات PS5 التنفيذية بدلًا من محاكاتها

هناك فئة من المشاريع تتصدّر GitHub لأسباب لا يكتبها أحد. AnyPS5 واحد منها. يتصدّر قائمة الأسبوع بنحو 16,000 نجمة جديدة، ويقترب من 10,000 إيداع، ووصفه في سطر واحد — «أداة لنقل ملفات PS5 التنفيذية تلقائيًا إلى Linux وWindows» — جملة تجعل المحامي يمدّ يده إلى قلمه والمهندس يمدّ يده إلى زر الحفظ.
المثير ليس أنه موجود، بل ما يرفض أن يكونه.
لا محاكي، لا بيئة تشغيل، لا منصّة داخل نافذة
معظم المشاريع التي تشغّل برمجيات المنصّات على الحاسوب هي محاكيات. تبني نموذجًا للعتاد: المعالج، وكرت الرسوميات، وتخطيط الذاكرة، والتوقيت. هذا النهج معجزة إن نجح، ومسار شقاء يمتد عشر سنوات إن فشل، لأن كل لعبة تصبح تفاوضًا مع نموذج ناقص لآلة لا يملك أحد توثيقها الكامل.
يسلك AnyPS5 طريقًا آخر. يوفّر relinker يحوّل ملف PS5 التنفيذي إلى الصيغة الأصلية للمنصّة الهدف، إضافة إلى تطبيقات لمكتبات النظام prx التي يتوقع الملف الارتباط بها. ويذكر README النتيجة بصراحة: لا محاكاة، ولا عملية تشغيل منفصلة. يعمل كود اللعبة كودًا أصليًا على جهازك، مستدعيًا مكتبات نظام أُعيد تنفيذها كما كان سيستدعي مكتبات Sony.
هذا وعد أصعب بكثير في الوفاء به، وأفضل بكثير إن نجح. المحاكاة تفرض ضريبة على كل تعليمة. أما إعادة الربط فتفرضها على الحدود فقط: على تلك الاستدعاءات التي تعبر من اللعبة إلى طبقة النظام.
الجزء الذي يحدد النجاح: الشيدرات
الألعاب في معظمها شيدرات ترتدي قبعة لعبة. يحمل عنوان PS5 برامج GPU مترجمة لطبقة رسوميات معيّنة، بينما يريد جهاز Windows أو Linux شيئًا يستطيع تعريفه هضمه. يتضمن AnyPS5 مترجمًا للشيدرات يُخرج SPIR-V، ويشير المستودع إلى أن المُخرجات تُتحقَّق بـ SPIRV-Tools عندما يفعّل البناء ANYPS5_ENABLE_SPIRV_TOOLS.
التحقق من SPIR-V ليس تشغيل لعبة. إنه يعني فقط أن الوحدة الناتجة سليمة بنيويًا، وهذا هو الفرق بين «قد يعمل» و«سيرفضه التعريف على نحو يصعب تتبعه للغاية». ومن أمضى ليلة أمام شاشة سوداء يعرف قيمة هذا الفحص.
صفحة التقدّم في المشروع حذرة بشأن معنى أرقامها. تُقاس تغطية المكتبات بنسبة الدوال التي أعلنها المشروع حتى الآن، لا بنسبة كل دالة تكشفها PS5. هذا تأطير صادق، ويعني أيضًا أن النسبة ستتحرّك كلما اكتشف الفريق حجم ما لا يعرفه.
كيف يفشل، عن قصد
قرار تصميمي واحد يقول الكثير عن نضج قاعدة الشيفرة. الحالات غير المدعومة أو غير المتوقعة ترمي std::runtime_error؛ تذهب الرسالة إلى stderr وتنتهي العملية.
يبدو ذلك قاسيًا، وهو القرار الصحيح. البديل — التخمين والمتابعة وإفساد الحالة — ينتج انهيارًا بعد ثلاث إطارات، في موضع لا علاقة له بالخطأ الحقيقي. المشروع في هذه المرحلة يحتاج فشلًا صاخبًا ومبكرًا ومحددًا. هناك إيداع من منتصف أكتوبر يصلح تعليق اختبار على Windows ناتجًا عن هذا النوع من مشاكل الترتيب: على Windows، اختبار يعود من main يمر عبر exit، وexit يقتل كل الخيوط الأخرى قبل أن تعمل المدمّرات الساكنة عند فصل DLL، فمدمّر ينتظر بعد ذلك مسجّلًا ميتًا لا يعود أبدًا. الإصلاح يلفّ main على MinGW وينهي العملية عبر libc. ليس عملًا لامعًا، لكنه العمل الذي يفصل العرض التوضيحي عن الأداة.
المدخلات، والأمور الصغيرة التي تهم
تعمل أذرع التحكم المعيَّنة عبر SDL، بما فيها العصي التماثلية والزنادات. وتُضبط لوحة المفاتيح والفأرة عبر ملف anyps5-input.ini. وهناك محوّل ويب يعالج الملفات محليًا، فلا يُرفع أي شيء.
لا تُصان التوافقية لكل لعبة في README. هي موجودة على خريطة عوائق مجتمعية مبنية من بيانات GitHub العامة، مع مواضيع لكل عنوان في discussions المستودع لتقارير الاختبار. يستحسن فهم هذا قبل تنزيل أي شيء: يتتبع المشروع أين يتوقف كل عنوان، لا قائمة خضراء بالألعاب التي تعمل.
الجملة القانونية التي يجب أن تقرأها فعلًا
ينصّ إخلاء المسؤولية على أن المشروع مخصص للتشغيل البيني والبحث والحفظ والتوافقية. وينصّ على أنه لا يتضمن ولا يوزّع ولا يتطلب برمجيات محمية بحقوق النشر، ولا فيرموير، ولا مفاتيح تشفير، ولا مكتبات مملوكة. وينصّ على أن المستخدمين مسؤولون عن التأكد من أن أي ملفات ثنائية يستخدمونها قد حُصل عليها واستُخدمت بشكل قانوني.
هذا خط مرسوم بعناية، وهو كل شيء. الأداة نفسها تحت GPL-2.0-only ولا تحتوي أي بيانات لعبة. وما تطعمها به هو مشكلتك أنت، وفي معظم الأنظمة القضائية ليست «أنا أعدت ربطه بنفسي» دفاعًا جُرّب في محكمة.
أين تقع الحدود فعلًا
عمل relinker هو حلّ الرموز. يطلب الملف التنفيذي دوالًا بأسمائها، وعلى الأداة أن تضمن أن كل اسم منها يُحلّ إلى شيء قابل للاستدعاء عند التحميل، وباصطلاح الاستدعاء الصحيح، وعلى آلة ليست الآلة التي بُني لها الملف الثنائي. أخطئ في واحد وتموت العملية عند الإقلاع، عادة برسالة تذكر مكتبة ولا شيء غيرها.
لهذا فإن صفحة التغطية في المشروع هي أكثر وثيقة صادقة في المستودع. تُبلغ عن نسبة الدوال التي أعلنها المشروع والتي نُفّذت، لا عن نسبة كامل سطح واجهة PS5. الفرق هائل، ويعني أن النسبة ستنخفض كلما اكتشف الفريق مزيدًا مما لا يعرفه. معظم المشاريع تخفي هذه الديناميكية، وهذا المشروع يضع ملاحظة بجانب الرقم.
المنطق نفسه يفسّر جانب GPU. ترجمة الشيدرات ليست مشكلة واحدة، بل مشكلة مختلفة لكل شيدر، والعنوان الذي يرسم بشكل صحيح عشرين دقيقة ثم يصطدم بمسار تعليمات غير مترجم سينهار على نحو يبدو كخطأ في التعريف. خطوة التحقق من SPIR-V تلتقط المشاكل البنيوية مبكرًا. لكنها لا تستطيع التقاط الدلالية، والمشروع لا يزعم ذلك.
لذا فالسؤال العملي ليس «هل يعمل؟» بل «أين يتوقف عنواني؟»، وخريطة العوائق تجيب عن ذلك لكل لعبة، مع المشكلات المفتوحة المرفقة.
لماذا تصدّر الآن
الحفظ الرقمي يعيش لحظته. تحلّل الأقراص، وإزالة المتاجر للعناوين، وإطفاء الخوادم: حجة إبقاء البرمجيات قابلة للتشغيل لم تعد عاطفية بل عملية. وrelinker أداة حفظ بطريقة لا يكون بها المحاكي كذلك: لا يحتاج إلى نمذجة آلة، بل إلى إرضاء الواجهة التي تتوقعها البرمجية فقط.
وهناك أيضًا تفسير أبسط. المشروع ضخم، والإيداعات تصل بالمئات، وجزء كبير منها مكتوب بوضوح مع وكلاء برمجة في الحلقة — فالمستودع يضم حتى ملف AGENTS.md يسرد القواعد التي يميل الوكلاء إلى خرقها. مشاهدة مشروع بـ 10,000 إيداع يُبنى في نحو شهرين ونصف هي عرض بحد ذاتها، وتفسّر منحنى نجوم لا علاقة له بعدد الألعاب التي تُقلع.
ماذا تفعل به
إن كان لديك ملف تنفيذي حصلت عليه قانونيًا وأمسية فارغة، فالتوقع الصادق هو: ستتعلم كثيرًا عن كيفية تركيب عنوان منصّة حديث، وستفشل على الأرجح في إنهاء لعبة. اقرأ خريطة العوائق الخاصة بعنوانك أولًا. اقرأ وثيقة الدين التقني قبل أن تفتح مشكلة. واقرأ الترخيص قبل أن تنشر أي شيء مبني عليه.
تبقى النقطة الأكبر قائمة مهما كان عدد العناوين التي ستقلع. عشرين عامًا كان الجواب عن «هل يمكن تشغيل برمجيات هذه المنصّة في مكان آخر» هو «فقط إذا حاكى أحدهم الآلة». وAnyPS5 محاولة جدية لجواب ثانٍ، وكونه يُكتب علنًا، بهذه السرعة، وبهذا القدر من الأعمال غير اللامعة، هو بالضبط سبب استحقاقه صفحة الأكثر تداولًا.
مقالات ذات صلة
الخمسة الكبار يستخدمون الذكاء الاصطناعي بصمت في تصميم أغلفة الكتب
كشفت «ويرد» أن ثلاثًا من كبرى دور النشر الأميركية تولّد أغلفة ونصوص بيع بالذكاء الاصطناعي دون إفصاح أو استشارة المؤلفين.
Character.AI تطلب الحماية من الإفلاس... و«ديزني» تعرض 20 مليون دولار
Character.AI تطلب الحماية من الإفلاس، وديزني تدخل بعرض مرجعي قيمته 20 مليون دولار لأصول مختارة وترخيص براءات فقط. من جولة 150 مليون دولار لم يبقَ سوى براءات.
XERJ: محرك بحث محلي لوكلاء البرمجة يعترف بأرقامه هو
يفهرس XERJ الشيفرة محليًا بـ tree-sitter ليقرأ الوكلاء ملفات أقل: 2.7 مرة رموز أقل من grep، لا 40 كما يقول العنوان. والمشرف نفسه يعترف بذلك.
كفى تعليمًا للوكلاء كيف ينظرون إلى الشاشة: CLI-Anything يمنح كل برنامج سطر أوامر
لا حاجة لتعليم الوكلاء النظر إلى الشاشة. يولّد CLI-Anything في سبع مراحل واجهات أوامر مختبَرة وموثّقة لبرامج مثل GIMP وBlender وLibreOffice، ويكتبها الوكيل فقط.