كيف صنعت أصدقاء PlayStation 2 و PlayStation Portable (spoiler - مدمجة في محاكي واحد)

مرحبا القراء. لقد نشرت في العام الماضي محبي هواية مشروع Red Omega PS2 . كانت الفكرة هي تكييف تحكم محاكي PCSX2 الأصلي للألعاب على Surface Pro عبر Touch Screen.

تمت إعادة كتابة رمز المضاهاة PCSX2 الأصلي في شكل وحدة نمطية DLL ، وتحميلها في رمز C # مع واجهة رسومية على WPF. تحول المشروع إلى أن يكون عمليًا وناجحًا - فاينل فانتسي X وفاينل فانتسي الثاني عشر انفجر مع اثارة ضجة. لكن قبل ستة أشهر ، صادفت رابطًا إلى Valkyria Chronicles 4 على Steam. اشتريت Valkyria Chronicles الأولى على القرص و "ضربتني" ، ولكن هناك سؤال - أين الثاني والثالث!؟! تم العثور على الجواب بسرعة - هذه النتائج لم تظهر إلا على لوحات المفاتيح. تحولت الإصدارات المتوفرة لجهاز PlayStation Portable إلى أكثرها سهولة - من خلال محاكي PPSSPP. الهاتف الذكي ليس سيئًا ، لكن على جهاز Surface Pro لم يعجبني عناصر التحكم من خلال Touch. نعم ، والتحول من أوميغا الأحمر إلى PPSSPP ، والعكس بالعكس ليس مطاردة. ثم نشأت فكرة "مجنونة" - لإعادة كتابة رمز PPSSPP الأصلي في شكل وحدة نمطية DLL !!! حول أوميغا ريد إلى منصة ألعاب لأجهزة PlayStation 2 و PlayStation Portable !!!


من السهل القول ، ولكن من الصعب القيام به. يجري تطوير محاكي PPSSPP الأصلي كمشروع مفتوح المصدر ومتاح في شكل كود كامل للدراسة والتعديل. الرمز مثير للاهتمام ويمكن تشغيله على مجموعة متنوعة من واجهات برمجة التطبيقات الرسومية: OpenGL و DirectX9 و DirectX11 و Vulkan. بالإضافة إلى ذلك ، يحتوي على واجهة المستخدم الرسومية المدمجة. لكن بنية PPSSPP أكثر "وضوحًا" من PCSX2 - حيث يتم تبسيط المزيد من الوحدات والتبعيات. المفتاح الرئيسي لتحقيق فكرتي هو القدرة على تحميل قرص اللعبة وحفظه كوسيطة للبرنامج. الحل الأساسي هو إعادة كتابة الدالة EXE الإدخال في دالة DLL المصدرة. بالطبع ، ستكون هناك مشاكل في إنشاء "نافذة" ثانية ، وإعادة توجيه إخراج عارض الرسومات إلى سياق رسم WPF ، وربط رمز اللمس ، إلخ. وما إلى ذلك ، لكنني قررت بالفعل كل هذا عندما أعدت كتابة رمز PCSX2 - توجد قوالب عملية بالفعل.

ما هي النتيجة - الحل يعمل! كان من الممكن الجمع بين اثنين من المحاكيات المختلفة في حل واحد مع التبديل السلس بين الألعاب لمحاكيات مختلفة. يمكن تقييم النتيجة على الفيديو:


بالإضافة إلى ذلك ، أود أن أذكر التغييرات التالية ، مقارنة بالإصدار الأول من محاكي Red Omega PS2 :

1. تغيير نظام الألوان - أشارت التعليقات إلى إزعاج نظام ألوان الواجهة - أحمر. إزعاج غريب - لكنني قررت إضافة مجموعة مقلوبة من "الأزرق":

صورة

2. التغطية بالفسيفساء - للألعاب على PCSX2 ، تتم إضافة وظيفة "التغطية بالفسيفساء" من DirectX 11 - تتيح لك هذه الوظيفة زيادة عدد المضلعات للنماذج:

صورة

يتم تحديد التغطية بالفسيفساء من خيار "مخطط التقديم":

صورة

DEFAULT

صورة

فسيفسائي

صورة

DEFAULT

صورة

فسيفسائي

صورة

3. FXAA - للألعاب على PCSX2 ، تمت إضافة وظيفة "تمكين FXAA" لإزالة الخطوات على طول حدود المضلعات - الحل لا يعمل بشكل مثالي ، لكنه يعمل:

صورة

4. حفظ سريع - حفظ حالة المحاكي بأمر واحد:

صورة

5. التحكم في مستوى الصوت:

صورة

يتوفر البرنامج حاليًا على العنوان التالي: Omega Red وعرضه على GitHub: OmegaRed

Source: https://habr.com/ru/post/ar445022/


All Articles