2 poin oleh GN⁺ 2024-08-22 | 1 komentar | Bagikan ke WhatsApp
  • shadPS4 adalah emulator PlayStation 4 tahap awal yang ditulis dalam C++ dan mendukung Windows, Linux, serta macOS
  • Repositori ini hanya berisi inti emulator tanpa GUI, sehingga pengguna akhir umum perlu mengunduh QtLauncher secara terpisah
  • Saat ini beberapa gim seperti Bloodborne, Dark Souls Remastered, dan Red Dead Redemption dapat dijalankan, tetapi proyek ini secara eksplisit menyatakan bahwa sulit mengharapkan pengalaman yang sepenuhnya lengkap karena masih berada pada tahap pengembangan awal
  • Panduan build disediakan melalui dokumentasi Docker, Windows, Linux, dan macOS; untuk macOS diperlukan macOS 26.0 atau lebih baru dan Intel Mac tidak didukung
  • Beberapa modul firmware PS4 harus ditempatkan di folder sys_modules agar gim dapat berjalan dengan benar, dan modul tersebut harus di-dump dari konsol PlayStation 4 yang dimiliki secara sah

Karakter shadPS4 dan target pengguna

  • shadPS4 adalah emulator PlayStation 4 tahap awal untuk Windows, Linux, dan macOS, serta ditulis dalam C++
  • Repositori ini menyediakan inti emulator dan tidak menyertakan GUI
  • Pengguna akhir yang memerlukan GUI harus menggunakan QtLauncher
  • Untuk pemecahan masalah atau memeriksa cara penggunaan, Anda dapat merujuk ke dokumen Quickstart
  • Untuk memeriksa apakah gim dapat berjalan, tersedia shadPS4 Game Compatibility

Status saat ini dan arah pengembangan

  • shadPS4 secara eksplisit menyatakan bahwa karena masih berada pada tahap pengembangan awal, sulit mengharapkan pengalaman menjalankan gim yang sempurna
  • Contoh gim yang saat ini dapat dijalankan adalah sebagai berikut
  • Proyek ini dimulai untuk bersenang-senang, dan karena waktu luang yang terbatas mungkin diperlukan waktu hingga gim yang lebih kompleks bisa dijalankan
  • Tim pengembang menyatakan akan terus merilis pembaruan kecil dan rutin

Build dan persyaratan platform

  • Build container berbasis Docker dan VSCode mengikuti Docker Build Instructions
  • Dokumentasi build per platform disediakan
  • Untuk menjalankan shadPS4 di macOS, diperlukan macOS 26.0 atau lebih baru
  • Intel Mac tidak didukung

Cara menjalankan dan input

  • Daftar perintah dan penjelasan rinci untuk tiap perintah dapat dilihat pada output --help
  • Pola eksekusi yang sering digunakan adalah sebagai berikut
    • shadPS4 CUSA00001: mencari folder CUSA00001 dari daftar folder instalasi gim lalu melakukan boot
    • shadPS4 --fullscreen true --config-clean CUSA00001: argumen gim pada dasarnya diletakkan di bagian akhir
    • shadPS4 -g CUSA00001 --fullscreen true --config-clean: dengan -g, argumen gim dapat ditentukan secara langsung
    • shadPS4 /path/to/game.elf: melakukan boot langsung pada file PS4 ELF
    • shadPS4 CUSA00001 -- -flag1 -flag2: meneruskan flag ke argv dari executable gim
  • Untuk pengujian, debugging, dan pelaporan isu, lihat Debugging documentation
  • Pintasan keyboard mendukung penghitung FPS, informasi debug video, layar penuh, tangkapan RenderDoc, dan tangkapan layar
  • Kontroler Xbox dan DualShock berfungsi tanpa konfigurasi tambahan
  • Input keyboard dan mouse dapat dikustomisasi melalui tombol Controller di menu pengaturan
    • Binding kustom disimpan per gim
    • Mendukung hingga 3 tombol per binding, tombol mouse, serta gerakan mouse yang dipetakan ke input joystick

File firmware dan persyaratan hukum

  • shadPS4 dapat memuat sebagian file firmware PlayStation 4
  • Modul firmware yang didukung harus ditempatkan di folder sys_modules milik shadPS4
  • Modul yang didukung mencakup libSceAudiodec.sprx, libSceFont.sprx, libSceJpegDec.sprx, libSceJson.sprx, libSceLibcInternal.sprx, libScePngEnc.sprx, libSceRtc.sprx, libSceXml.sprx, dan lainnya
  • Modul tersebut diperlukan agar gim dapat berjalan dengan benar
  • Modul firmware harus di-dump dari konsol PlayStation 4 yang dimiliki secara sah

Kontribusi dan proyek rujukan

  • Untuk berkontribusi, baca CONTRIBUTING.md lalu buka PR
  • Proyek ini menyampaikan terima kasih kepada tim dan proyek berikut
    • Panda3DS: membantu memahami dan menyelesaikan masalah yang muncul saat menjalankan kode x64 dari biner PS4 secara native
    • fpPS4: membantu memahami bagian kompleks dari sistem operasi dan pustaka PS4
    • yuzu: compiler shader shadPS4 menjadikan compiler Hades milik yuzu sebagai cetak biru
    • felix86: emulator ruang pengguna Linux x86-64 → RISC-V
    • emudev.org: jaringan orang-orang yang tertarik pada dokumentasi, emulasi, simulasi, dan reimplementasi perangkat keras yang nyaris punah
  • Lisensinya adalah GPL-2.0 license

1 komentar

 
GN⁺ 2024-08-22
Pendapat Hacker News
  • Saya benar-benar penasaran, secara internal ini lebih mirip emulator seperti PCSX2, atau lebih mirip lapisan kompatibilitas seperti Wine?
    Kalau PS4 pada dasarnya hampir seperti komputer x86, sepertinya sebagian besar bagian sulitnya adalah implementasi API sistem/grafis PS4. Atau memang ada perbedaan hardware besar antara PC x86 dan PS4 yang harus ditangani?

    • Untuk berbagai perbedaan antara PS4 dan PC, lihat presentasi CCC 2016 dari Marcan: https://youtu.be/QMiubC6LdTA
    • Di konsol, semua shader didistribusikan dalam kondisi sudah dikompilasi sebelumnya untuk platform tersebut, jadi sepertinya harus ada arsitektur berbasis recompiler shader
      Bahkan hanya dari bagian itu saja, pekerjaannya jauh lebih banyak daripada yang dilakukan Wine
    • Sebagian besar emulator PS4 bekerja dengan cara yang sama seperti Wine
  • Sepertinya ini emulator PS4 pertama yang berhasil sampai ke layar karakter Bloodborne

  • Saya penasaran bagaimana emulator dirancang. Ada materi bagus untuk dipelajari?

    • Ini sangat bergantung pada hardware apa yang ingin diemulasikan. Biasanya ada dua jenis: emulasi sistem penuh dan emulasi API sistem
      Yang pertama menulis kode untuk mengemulasikan CPU sistem target dengan gaya interpreter instruksi, seperti NES. Yang kedua mengimplementasikan ulang API sistem target, seperti Wine. Jika sistem target memakai arsitektur CPU yang berbeda, mungkin perlu compiler JIT seperti PS3
      Sebagian besar emulator konsol modern lebih dekat ke yang kedua, karena cara kerja konsol modern mirip dengan PC: ada kernel sistem operasi dan library mode pengguna untuk aplikasi
      Yang kedua juga terbagi lagi menjadi dua jenis. Salah satunya mengemulasikan library mode pengguna, dan yang lain mengimplementasikan ulang kernel konsol sambil menggunakan kembali library sistem milik konsol itu sendiri
    • https://rylev.github.io/DMG-01/public/book/ materi ini enak dibaca
    • Kalau ingin belajar, sepertinya bagus mulai dari sesuatu seperti emulator Game Boy lama yang terdokumentasi dengan baik dan relatif sederhana
    • javidx9 di YouTube, alias OneLoneCoder, membuat seri yang cukup bagus tentang menulis emulator NES dari nol: https://www.youtube.com/watch?v=nViZg02IMQo&list=PLrOv9FMX8x...
    • Ada banyak materi online tentang menulis emulator Game Boy, dan arsitekturnya cukup sederhana sehingga mudah diikuti
      Saya sarankan mulai dari sana dengan bahasa yang Anda inginkan
  • Ada dokumen desain atau materi yang menunjukkan upaya sebelumnya atau pekerjaan pendahulu, dan mengapa proyek ini berbeda?

  • Sepertinya proyek menarik untuk diikuti. Mengingat Sony saat ini kurang punya opsi portabel, saya penasaran bagaimana ini akan berjalan di Steam Deck

    • Saya rasa jelas tidak mungkin. Steam Deck memang bisa menghasilkan frame rate yang lumayan di beberapa game emulasi PS3[0], tapi menjalankan game yang benar-benar diinginkan orang dari PS4 akan terlalu berat
      0: https://www.reddit.com/r/SteamDeck/comments/wodw8x/i_tested_...
    • Kalau memakai pendekatan lapisan kompatibilitas, mungkin bisa berjalan lebih baik daripada emulator Switch
  • Apakah ini berarti mereka membuat padanan DXVK untuk Gnm/Gnmx?[0]
    [0] https://en.wikipedia.org/wiki/PlayStation_4_system_software#...

  • Ini progres terbaru untuk Bloodborne. Sepertinya inilah yang ditunggu kebanyakan orang:
    YouTube pengembang ini: https://www.youtube.com/watch?v=wC6s0avpQRE
    Saya benar-benar tidak mengerti kenapa Sony masih saja membiarkan game dengan makna budaya kelas-S ini terbengkalai hampir seperti disengaja dengan niat buruk. Apakah mereka menunggu untuk menjadikannya judul peluncuran PS6?

    • Saya selalu menyukai game Sony, tapi saya tidak bisa melupakan saat Sony tidak memasukkan kompatibilitas mundur di PS4 sambil mengklaim tidak ada yang peduli, lalu belakangan membuat orang memainkan game lama lewat layanan PSNOW berbasis langganan
      Sebagian bisa diunduh, tetapi yang lain hanya bisa streaming, sehingga untuk memainkan game PS2 diperlukan koneksi internet yang bagus. Tidak masuk akal
      Permintaan untuk memainkan game lama akan selalu ada, dan karena itulah emulator seperti ini ada
  • Saya penasaran apakah pengembangan emulasi jadi lebih mudah sekarang karena konsol modern pada dasarnya telah menjadi sistem PC yang diperkecil

    • Saya tidak tahu soal generasi sebelumnya, tetapi saya bisa menjelaskan bagaimana emulasi PS4 dimungkinkan. Langkah pertama adalah memahami bagaimana konsol menjalankan game
      Untungnya PS4 sudah diretas, dan hampir semua file serta informasinya telah didekripsi dan di-dump. SDK resmi PS4 juga bocor
      Sekarang kita tahu bagaimana konsol menjalankan game, dan langkah berikutnya adalah menggunakan informasi ini untuk menjalankan game di luar konsol. Sistem PS4 adalah versi FreeBSD yang dimodifikasi, sehingga cara kerjanya sangat mirip PC. File executable PS4 hanyalah file ELF kustom
      Jadi untuk menjalankan game PS4 di luar konsol, kita harus memetakan executable game secara langsung dan menyediakan simbol yang diperlukan dengan cara tertentu. Misalnya dengan mengimplementasikannya sendiri atau menggunakan kembali library PS4
    • Berkat internet, lebih mudah menjangkau orang-orang yang melakukan hal yang sama, dan daya komputasi untuk mencari tahu cara kerja sistem semacam ini juga semakin baik
      Meski begitu, aksesibilitas informasi tampaknya menjadi faktor besar
    • Arsitektur set instruksi yang sama jelas membantu. Itu membuka jalan untuk menjalankan image game secara langsung tanpa mem-boot sistem operasi konsol, lalu menyisipkan dependensi yang dibutuhkan di bawahnya. Dengan kata lain, mirip cara kerja WINE
      Secara umum, industri juga sudah banyak maju dalam translasi biner. Rosetta 2 adalah contohnya. Itu menjadi alat lain yang bisa dipakai untuk membawa biner ke lingkungan host lain
    • Benar. Jika arsitektur antargenerasi cukup mirip, prosesnya jadi lebih cepat
  • Saya teringat emulator PS4 lain bernama Spine yang sempat mendapat perhatian beberapa tahun lalu. Penasaran apa yang terjadi dengan proyek itu
    https://github.com/devofspine/spine
    Tidak ada kode sumber, hanya biner