2 पॉइंट द्वारा GN⁺ 2024-08-22 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • shadPS4 C++ में लिखा गया शुरुआती चरण का PlayStation 4 एमुलेटर है और Windows, Linux, macOS को सपोर्ट करता है
  • repository में केवल emulator core शामिल है, GUI नहीं है, इसलिए आम end users को अलग से QtLauncher डाउनलोड करना होगा
  • अभी Bloodborne, Dark Souls Remastered, Red Dead Redemption जैसे कुछ गेम चलाए जा सकते हैं, लेकिन project शुरुआती development stage में है, इसलिए पूरा अनुभव मिलने की उम्मीद करना मुश्किल बताया गया है
  • build के लिए Docker, Windows, Linux, macOS documents में निर्देश दिए गए हैं; macOS के लिए macOS 26.0 या उससे ऊपर चाहिए और Intel Mac support नहीं है
  • कुछ PS4 firmware modules को sys_modules folder में रखना जरूरी है ताकि game ठीक से चले; इन modules को कानूनी रूप से स्वामित्व वाले PlayStation 4 console से dump करना होगा

shadPS4 की प्रकृति और उपयोगकर्ता

  • shadPS4 Windows, Linux, macOS पर चलने वाला शुरुआती PlayStation 4 emulator है और C++ में लिखा गया है
  • यह repository emulator core देती है और GUI शामिल नहीं करती
  • जिन end users को GUI चाहिए, उन्हें QtLauncher इस्तेमाल करना होगा
  • troubleshooting या usage देखने के लिए Quickstart document देख सकते हैं
  • games चलेंगे या नहीं, यह देखने के लिए shadPS4 Game Compatibility उपलब्ध है

मौजूदा काम करने की स्थिति और development दिशा

  • shadPS4 शुरुआती development stage में है, इसलिए perfect execution experience की उम्मीद करना मुश्किल बताया गया है
  • अभी चलाए जा सकने वाले games के उदाहरण ये हैं
  • project मज़े के लिए शुरू किया गया था, और सीमित खाली समय के कारण ज़्यादा complex games चलाने में समय लग सकता है
  • development team ने कहा है कि वे छोटे और नियमित updates जारी रखेंगे

build और platform requirements

  • Docker और VSCode आधारित container build के लिए Docker Build Instructions follow करें
  • platform-specific build documents उपलब्ध हैं
  • macOS पर shadPS4 चलाने के लिए macOS 26.0 या उससे ऊपर चाहिए
  • Intel Mac support नहीं है

चलाने का तरीका और input

  • commands की list और हर command की detailed explanation --help output में देखी जा सकती है
  • अक्सर इस्तेमाल होने वाले execution patterns ये हैं
    • shadPS4 CUSA00001: game installation folder list में CUSA00001 folder ढूंढकर boot करता है
    • shadPS4 --fullscreen true --config-clean CUSA00001: game argument आमतौर पर आखिर में रखा जाता है
    • shadPS4 -g CUSA00001 --fullscreen true --config-clean: -g से game argument सीधे specify किया जा सकता है
    • shadPS4 /path/to/game.elf: PS4 ELF file को सीधे boot करता है
    • shadPS4 CUSA00001 -- -flag1 -flag2: game executable के argv में flags pass करता है
  • testing, debugging और issue reporting के लिए Debugging documentation देखें
  • keyboard shortcuts FPS counter, video debug info, fullscreen, RenderDoc capture और screenshot capture को support करते हैं
  • Xbox और DualShock controllers बिना अलग setup के काम करते हैं
  • keyboard और mouse input को settings menu के Controller button से customize किया जा सकता है
    • custom bindings हर game के लिए अलग save होते हैं
    • हर binding में अधिकतम 3 keys, mouse buttons, joystick input में map होने वाली mouse movement आदि support हैं

firmware files और legal conditions

  • shadPS4 कुछ PlayStation 4 firmware files load कर सकता है
  • supported firmware modules को shadPS4 के sys_modules folder में रखना होगा
  • supported modules में libSceAudiodec.sprx, libSceFont.sprx, libSceJpegDec.sprx, libSceJson.sprx, libSceLibcInternal.sprx, libScePngEnc.sprx, libSceRtc.sprx, libSceXml.sprx आदि शामिल हैं
  • game ठीक से चलाने के लिए ये modules जरूरी हैं
  • firmware modules को कानूनी रूप से स्वामित्व वाले PlayStation 4 console से dump करना होगा

योगदान और reference projects

  • योगदान देने के लिए CONTRIBUTING.md पढ़ें और PR खोलें
  • project ने निम्न teams और projects का आभार जताया है
    • Panda3DS: PS4 binaries के x64 code को natively execute करते समय आई समस्याओं को समझने और हल करने में मदद की
    • fpPS4: PS4 operating system और libraries के complex हिस्सों को समझने में मदद की
    • yuzu: shadPS4 का shader compiler yuzu के Hades compiler को blueprint मानता है
    • felix86: x86-64 → RISC-V Linux user-space emulator
    • emudev.org: विलुप्ति के करीब hardware के documentation, emulation, simulation और reimplementation में रुचि रखने वालों का network
  • license GPL-2.0 license है

1 टिप्पणियां

 
GN⁺ 2024-08-22
Hacker News की राय
  • सच में जानना चाहता हूँ: अंदरूनी तौर पर यह PCSX2 जैसे emulator के ज़्यादा करीब है, या Wine जैसी compatibility layer के?
    अगर PS4 लगभग एक x86 कंप्यूटर ही है, तो मुश्किल हिस्सा ज़्यादातर PS4 के system/graphics API को implement करना होगा। या x86 PC और PS4 के बीच कोई बड़े hardware अंतर भी हैं जिन्हें handle करना पड़ता है?

    • PS4 और PC के बीच कई अंतर Marcan की 2016 CCC presentation में देखे जा सकते हैं: https://youtu.be/QMiubC6LdTA
    • Console पर सभी shaders उस platform के लिए पहले से compiled रूप में distribute किए जाते हैं, इसलिए shader recompiler-आधारित architecture चाहिए होगा
      कम-से-कम इस हिस्से को ही देखें तो यह Wine की तुलना में काफ़ी ज़्यादा काम करता है
    • ज़्यादातर PS4 emulators Wine जैसी ही पद्धति से काम करते हैं
  • यह Bloodborne की character screen तक पहुँचने वाला पहला PS4 emulator लगता है

  • Emulators कैसे design किए जाते हैं, यह जानने की जिज्ञासा है। सीखने के लिए कोई अच्छे resources हैं?

    • यह इस पर बहुत निर्भर करता है कि आप किस hardware को emulate करना चाहते हैं। आम तौर पर दो प्रकार होते हैं: पूरे system का emulation और system API emulation
      पहले में NES जैसे target system के CPU को instruction interpreter तरीके से emulate करने वाला code लिखा जाता है। दूसरे में Wine की तरह target system के APIs को फिर से implement किया जाता है। अगर target system अलग CPU architecture इस्तेमाल करता है, तो PS3 की तरह JIT compiler की ज़रूरत पड़ सकती है
      अधिकांश modern console emulators बाद वाले के ज़्यादा करीब हैं, क्योंकि modern consoles का काम करने का तरीका PC जैसा होता है: उनमें operating system kernel और applications के लिए user-mode libraries होती हैं
      बाद वाला भी फिर दो प्रकारों में बंटता है। एक तरीका user-mode libraries को emulate करना है, और दूसरा console kernel को फिर से implement करते हुए console की अपनी system libraries को reuse करना है
    • https://rylev.github.io/DMG-01/public/book/ यह resource पढ़ने में अच्छा है
    • अगर सीखना चाहते हैं, तो documentation अच्छी हो और अपेक्षाकृत simple हो, ऐसे पुराने Game Boy emulator जैसी चीज़ से शुरू करना अच्छा रहेगा
    • YouTube पर javidx9, यानी OneLoneCoder ने NES emulator को scratch से लिखने पर काफ़ी अच्छी series बनाई है: https://www.youtube.com/watch?v=nViZg02IMQo&list=PLrOv9FMX8x...
    • Game Boy emulator लिखने के लिए online बहुत resources हैं, और architecture इतना simple है कि follow करना आसान है
      अपनी पसंद की language में वहीं से शुरू करने की सलाह दूँगा
  • क्या कोई design document या material है जो पिछले attempts या prior work, और यह project क्यों अलग है, दिखाता हो?

  • Follow करने लायक एक दिलचस्प project लगता है। Sony के पास इस समय portable options की कमी को देखते हुए, जानना चाहूँगा कि यह Steam Deck पर कैसे चलेगा

    • मुझे लगता है यह बिल्कुल impossible है। Steam Deck कुछ PS3 emulation games में ठीक-ठाक frames देता है[0], लेकिन वे games चलाना मुश्किल है जिन्हें लोग सच में PS4 से खेलना चाहेंगे
      0: https://www.reddit.com/r/SteamDeck/comments/wodw8x/i_tested_...
    • अगर यह compatibility layer approach अपनाता है, तो यह Switch emulator से भी बेहतर चल सकता है
  • क्या इसका मतलब है कि उन्होंने Gnm/Gnmx के लिए DXVK counterpart बनाया है?[0]
    [0] https://en.wikipedia.org/wiki/PlayStation_4_system_software#...

  • Bloodborne की latest progress यह है। शायद ज़्यादातर लोग इसी का इंतज़ार कर रहे होंगे:
    इस developer का YouTube: https://www.youtube.com/watch?v=wC6s0avpQRE
    समझ नहीं आता कि Sony इस S-tier cultural significance वाले game को अब तक लगभग malicious तरीके से क्यों छोड़े हुए है। क्या वे इसे PS6 launch title के रूप में इस्तेमाल करने के लिए इंतज़ार कर रहे हैं?

    • Sony games मुझे हमेशा पसंद रहे हैं, लेकिन यह बात नहीं भूल सकता कि Sony ने PS4 में backward compatibility नहीं डाली और दावा किया कि किसी को परवाह नहीं है, फिर बाद में पुराने games को subscription-based PSNOW service पर खेलने को कहा
      कुछ download किए जा सकते हैं, लेकिन बाकी सिर्फ streaming से चल सकते हैं, इसलिए PS2 games खेलने के लिए अच्छी internet connection चाहिए। यह बेतुका है
      पुराने games खेलने की मांग हमेशा रहेगी, और इसलिए ऐसे emulators मौजूद हैं
  • आजकल modern consoles असल में छोटे PC systems जैसे बनते जा रहे हैं; सोचता हूँ क्या इससे emulation development आसान हो रहा है

    • पिछली generations के बारे में पक्का नहीं, लेकिन PS4 emulation कैसे संभव है, यह समझा सकता हूँ। पहला step यह समझना है कि console games को कैसे execute करता है
      सौभाग्य से PS4 hack हो चुका है, और लगभग सभी files और information decrypt होकर dump हो चुकी हैं। Official PS4 SDK भी leak हो चुका है
      अब पता चल गया कि console games को कैसे execute करता है, और अगला step इस information का इस्तेमाल करके console के बाहर game चलाना है। PS4 system FreeBSD का modified version है, इसलिए इसका काम करने का तरीका PC से बहुत मिलता-जुलता है। PS4 executable बस एक custom ELF file है
      इसलिए console के बाहर PS4 game चलाने के लिए game executable को सीधे map करना होगा, और ज़रूरी symbols किसी न किसी तरीके से provide करने होंगे। जैसे उन्हें खुद implement करके या PS4 libraries को reuse करके
    • Internet की वजह से वही काम कर रहे लोगों तक पहुँचना आसान है, और ऐसे systems कैसे काम करते हैं यह पता लगाने की computing power भी बेहतर हो गई है
      फिर भी information accessibility बड़ा factor लगता है
    • Shared instruction set architecture निश्चित रूप से मदद करता है। इससे console operating system boot किए बिना ही game images को सीधे execute करने और नीचे ज़रूरी dependencies डालने का रास्ता खुलता है। यानी WINE के तरीके जैसा
      कुल मिलाकर industry में binary translation भी काफ़ी आगे बढ़ी है। Rosetta 2 इसका उदाहरण है। यह binaries को किसी दूसरे host environment में लाने के लिए इस्तेमाल किया जा सकने वाला एक और tool बन गया है
    • सही है। अगर generations के बीच architecture कुछ हद तक similar हो, तो काम तेज़ हो जाता है
  • कुछ साल पहले Spine नाम का एक और PS4 emulator भी चर्चा में आया था, याद है। सोचता हूँ उस project का क्या हुआ
    https://github.com/devofspine/spine
    Source code नहीं है, केवल binary है