HLE, उच्च-स्तरीय फ़र्मवेयर एम्युलेशन
HLE वह तरीक़ा है जिससे PS5PCEM गेम द्वारा इम्पोर्ट की गई फ़र्मवेयर कॉल का जवाब देता है। हर संख्यात्मक NID होस्ट स्टैक पर चलने वाला Zig फ़ंक्शन बनता है, और Windows पर भी गेस्ट का System V कॉलिंग कन्वेंशन बना रहता है।
10 अक्टूबर 2026 तक के रिपॉज़िटरी नोट्स
फ़र्मवेयर गेम में क्यों नहीं होता
PlayStation 5 का गेम वह ऑपरेटिंग सिस्टम साथ नहीं लाता जिसे वह कॉल करता है। उसके इम्पोर्ट 11-अक्षर के पहचानकर्ता होते हैं। PS5PCEM हर पहचानकर्ता एक्सपोर्ट नाम से निकालता है: नाम और एक तय सॉल्ट का SHA-1, फिर डाइजेस्ट के पहले आठ बाइट base64 के एक रूप में। कोई इम्प्लीमेंटेशन पढ़ने योग्य नाम से पंजीकृत होता है और यह माँग सकता है कि उस नाम से कौन-सा पहचानकर्ता बनना चाहिए, इसलिए ग़लत लिखा एक्सपोर्ट मॉड्यूल बनाते समय ही विफल हो जाता है।
डायनामिक लिंकर पहचानकर्ता को लाइब्रेरी, मॉड्यूल और उनके संस्करणों के साथ खोजता है। एक ही पहचानकर्ता एक से ज़्यादा लाइब्रेरी में हो सकता है। जिन इम्पोर्ट में उपयोगी मेटाडेटा नहीं होता उनके लिए केवल पहचानकर्ता से खोज भी है, और अस्पष्ट होने के कारण इस फ़ॉलबैक को आख़िरी उपाय माना जाता है।
कॉल होस्ट स्टैक पर चलती है
गेस्ट फ़र्मवेयर को सीधे कॉल करता है, इसलिए कॉल गेस्ट थ्रेड के स्टैक पर शुरू होती है, जो अक्सर एक मेगाबाइट का होता है क्योंकि गेम ने यही माँगा था। फ़ाइल खोलने जैसे होस्ट काम को कहीं बड़ा फ़्रेम चाहिए। कम्पाइलर वह फ़्रेम प्रवेश पर ही, किसी भी जल्दी लौटने से पहले, आरक्षित कर देता है। इसलिए फ़र्मवेयर का शरीर उस पंक्ति तक पहुँचने से पहले ही गेस्ट स्टैक से बाहर निकल सकता है जिसे जगह चाहिए थी, और फ़ॉल्ट हर गेस्ट मैपिंग के बाहर पड़ता है।
हर HLE कॉल होस्ट काम की अवधि के लिए प्रति-थ्रेड होस्ट स्टैक पर चली जाती है। आर्ग्युमेंट मेमोरी से होकर जाते हैं, इसलिए फ़्लोटिंग-पॉइंट और समग्र रिटर्न समेत हर सिग्नेचर के लिए एक ही असेंबली स्टब काम करता है। नेस्टेड फ़र्मवेयर कॉल बाहरी कॉल द्वारा बनाए गए स्टैक पर ही रहती हैं। Windows पर गेस्ट System V AMD64 कन्वेंशन और होस्ट Microsoft x64 इस्तेमाल करता है, इसलिए गेस्ट द्वारा कॉल किया जा सकने वाला हर फ़ंक्शन गेस्ट कन्वेंशन के साथ घोषित होता है। यह घोषणा छूट जाए तो कोड फिर भी कम्पाइल हो जाता है, और फिर ग़लत रजिस्टर से आर्ग्युमेंट पढ़ता है।
HLE सतह क्या कवर करती है
इस व्यवस्था के ऊपर फ़र्मवेयर लाइब्रेरी डायरेक्ट और फ़्लेक्सिबल मेमोरी, मॉड्यूल हैंडल, pthread, सिंक्रोनाइज़ेशन, फ़ाइलें, सेव डेटा, फ़ाइबर, फ़ॉन्ट, PNG, घड़ी, पैड, AudioOut, AJM, NGS2, ACM, AvPlayer, APR और AMPR देती हैं। नेटवर्क, SSL और NP Web API अपने कॉन्टेक्स्ट और अनुरोध का जीवनकाल बनाए रखते हैं और निश्चित ऑफ़लाइन त्रुटियाँ लौटाते हैं। सिस्टम शेल की ज़रूरत वाले डायलॉग एक सुसंगत हेडलेस नतीजे के साथ तुरंत ख़त्म हो जाते हैं।
10 अक्टूबर के सत्यापन रन ने पूरे ReleaseSafe HLE सूट के 606 में से 606 टेस्ट पास किए। यह संख्या फ़र्मवेयर सूट की है। यह अपने आप में कोई नई फ़्रेम दर या नया पूरा किया गया प्लेथ्रू दर्ज नहीं करती।
क्या लागू है
- NID गणना, संस्करण वाली सिंबल रजिस्ट्री और हर फ़र्मवेयर कॉल के लिए होस्ट स्टैक पर स्विच।
- Windows पर गेस्ट System V कॉल, जहाँ होस्ट कन्वेंशन Microsoft x64 है।
- मेमोरी, फ़ाइलें, थ्रेडिंग, सेव डेटा, मीडिया, ऑडियो कोडेक और APR/AMPR कमांड पथ।
- हेडलेस डायलॉग और ऐसी ऑफ़लाइन नेटवर्क प्रोफ़ाइल जो होस्ट सॉकेट नहीं खोलती।
क्या अब भी बाक़ी है
- गेम द्वारा इम्पोर्ट की गई और PS5PCEM में लागू न की गई लाइब्रेरी अब भी इम्पोर्ट में विफल होती हैं।
- प्रकाशित ग्राफ़ में न होने वाले मॉड्यूल की सच्ची ऑन-डिमांड लोडिंग त्रुटि लौटाती है।
- असली शेल, खाते या नेटवर्क साथी की ज़रूरत वाली प्लेटफ़ॉर्म सेवाएँ उपलब्ध नहीं रहतीं।
संबंधित तंत्र
ये पेज क्या हैं