عن المشروع

PocketHLE هو محاكي عالي المستوى تجريبي (HLE) لألعاب Pocket PC 2002/2003 وWindows Mobile 5/6، يستهدف ملفات ARM Windows CE التنفيذية الأصلية المعبأة في أرشيفات .CAB. بدلاً من محاكاة جهاز Windows CE كامل، يقوم بتحميل ملف اللعبة التنفيذي الأصلي، وتشغيل شيفرته ARM عبر خلفية CPU، وتوفير تطبيقات نظيفة (clean-room) على الجانب المضيف لواجهات Windows CE API التي تتوقعها اللعبة. وهو مستوحى من touchHLE وEKA2L1، مع سير عمل مشغّل/مكتبة متأثر بـ j2me-loader. تشمل القدرات الموصوفة في README: استيراد وفك ضغط أرشيفات .CAB؛ استعادة أسماء الملفات الطويلة ومسارات التثبيت من _setup.xml أو ترويسة تثبيت MSCE الثنائية؛ اختيار ملف اللعبة التنفيذي المقصود؛ تحميل صور ARM وMIPS PE الأصلية وفحص الاستيرادات؛ تنفيذ شيفرة ARM عبر خلفية Unicorn Engine؛ اعتراض استدعاءات DLL المستوردة من Windows CE عبر HLE thunks؛ حل الأرقام التسلسلية إلى أسماء لـ coredll.dll وaygshell.dll؛ محاكاة مسارات النوافذ الأساسية وGDI وGAPI والسجل ونظام الملفات والتوقيت والإدخال والصوت؛ عرض framebuffers البرمجية في واجهة سطح المكتب وواجهة Android SurfaceView/OpenGL؛ مكتبة ألعاب مشتركة مع إعدادات لكل لعبة على سطح المكتب وAndroid؛ وبناءات Linux/Windows/Android عبر GitHub Actions. يذكر المشروع أن إثباته القابل للتكرار الحالي يغطي Asphalt 4 بدقة WVGA مع صوت PCM ملتقط، وإقلاع شاشة عنوان Call of Duty 2 عبر طبقة OpenGL ES؛ أما العناوين الأخرى (Zuma Deluxe وBejeweled وAsphalt 2 3D وCrazy Taxi وDiamond Twister وSplinter Cell Conviction) فلديها أعمال توافق أو اختبارات تحت proof/، لكن README يحذر من وصفها بأنها موثّقة بالكامل. ويشير صراحةً إلى أن PocketHLE ليس محاكياً كاملاً لـ Windows CE: بعض الألعاب تتوقف أثناء تهيئة CRT أو الاستيرادات الديناميكية أو إعداد خيوط العمل أو واجهات API غير المنفذة، كما أن نجاح الإقلاع أو الإطار الأول لا يعني أن اللعبة قابلة للعب من البداية إلى النهاية. مكونات البنية: pocket-cli (واجهة سطر الأوامر/التقاطات)، pocket-desktop (مشغّل egui)، pocket-android (Kotlin + JNI)، pocket-core (المحاكي/VFS)، pocket-cab (مثبّت CAB)، pocket-pe (ARM/MIPS PE)، pocket-library (قاعدة بيانات الألعاب)، pocket-kernel (العملية/GDI/إرسال HLE)، pocket-cpu (stub/Unicorn)، pocket-winceapi (coredll/gx/hss). تدفق بدء التشغيل: استخراج CAB وإعادة بناء السجل، تحليل PE، تعيين الصورة مع ترقيع IAT إلى HLE thunks، تنفيذ شيفرة الضيف، إرسال API إلى معالجات Rust، وعرض framebuffer مع تمرير إدخال المضيف. الاستخدام: نزّل أرشيف إصدار، واستورد ملف .CAB تم الحصول عليه بشكل قانوني، واختر اللعبة في مشغّل سطح المكتب أو Android. تشمل أمثلة سطر الأوامر inspect-cab، والتشغيل مع --cpu unicorn و--dump-frames-to و--max-frames، بالإضافة إلى pe-info؛ يتم دعم مدخلات .exe و.zip، و--cpu stub مخصص لاختبارات التتبع/المحمّل فقط. تغطي تعليمات البناء Linux (Rust 1.85+، تبعيات GTK/X11/Wayland الأصلية، cargo build/test، بناءات ميزة unicorn)، وWindows (سلسلة أدوات MSVC + CMake)، وAndroid (Android Studio Iguana+، NDK r26+، cargo-ndk، Gradle). يستخدم تخطيط المكتبة library.json وconfig.json ومجلدات لكل لعبة تحتوي على game.json وsource.cab والملفات المستخرجة؛ الموقع الافتراضي هو ~/.local/share/PocketHLE/library أو ما يعادله حسب المنصة. تشمل عناصر خارطة الطريق إكمال مسارات بدء CRT وARM القديمة، وتوسيع توافق الاستيراد الديناميكي والخيوط/وقت التشغيل، وتحسين تغطية الموارد/GDI/الحوارات، وتعيين أوسع لوحدات التحكم/لوحة المفاتيح/اللمس، وخلط الصوت، والمزيد من التقاطات التوافق القابلة للتكرار، وتجربة المستخدم والتشخيصات على سطح المكتب وAndroid. يتضمن README إشعاراً قانونياً بأنه لا يتم توزيع أي DLLs نظام Microsoft محمية بحقوق النشر أو برامج ثابتة أو أصول ألعاب، وأن طبقة API هي إعادة تنفيذ نظيفة؛ المستخدمون مسؤولون عن نسخ ألعابهم الخاصة. الترخيص مزدوج Apache-2.0 أو MIT. تُرحّب المساهمات وتقارير التوافق والتتبعات عبر Discord الخاص بالمشروع.