ShadPS4 – Trình giả lập PlayStation 4
(github.com/shadps4-emu)- shadPS4 là trình giả lập PlayStation 4 giai đoạn đầu được viết bằng C++, hỗ trợ Windows, Linux và macOS
- Kho lưu trữ chỉ bao gồm lõi giả lập, không có GUI, nên người dùng cuối thông thường cần tải riêng QtLauncher
- Hiện có thể chạy một số game như Bloodborne, Dark Souls Remastered, Red Dead Redemption, v.v., nhưng dự án nêu rõ rằng do vẫn ở giai đoạn phát triển ban đầu nên khó có thể kỳ vọng một trải nghiệm hoàn chỉnh
- Việc build được hướng dẫn qua tài liệu Docker, Windows, Linux, macOS; macOS yêu cầu macOS 26.0 trở lên và không hỗ trợ Intel Mac
- Một số module firmware PS4 phải được đặt vào thư mục
sys_modulesđể game hoạt động đúng; các module này phải được dump từ máy PlayStation 4 mà bạn sở hữu hợp pháp
Bản chất của shadPS4 và đối tượng sử dụng
- shadPS4 là trình giả lập PlayStation 4 giai đoạn đầu chạy trên Windows, Linux và macOS, được viết bằng C++
- Kho lưu trữ này cung cấp lõi giả lập và không bao gồm GUI
- Người dùng cuối cần GUI nên dùng QtLauncher
- Có thể tham khảo tài liệu Quickstart để xử lý sự cố hoặc xem cách sử dụng
- shadPS4 Game Compatibility được cung cấp để kiểm tra game có hoạt động hay không
Trạng thái hoạt động hiện tại và hướng phát triển
- shadPS4 nêu rõ rằng vì đang ở giai đoạn phát triển ban đầu, khó có thể kỳ vọng trải nghiệm chạy hoàn hảo
- Ví dụ về các game hiện có thể chạy như sau
- Bloodborne
- Dark Souls Remastered
- Red Dead Redemption
- và nhiều game khác
- Dự án bắt đầu vì niềm vui, và do thời gian rảnh hạn chế nên có thể cần thêm thời gian để chạy được các game phức tạp hơn
- Nhóm phát triển cho biết sẽ tiếp tục thực hiện các bản cập nhật nhỏ và đều đặn
Build và điều kiện nền tảng
- Build container dựa trên Docker và VSCode tuân theo Docker Build Instructions
- Có tài liệu build theo từng nền tảng
- Để chạy shadPS4 trên macOS cần macOS 26.0 trở lên
- Không hỗ trợ Intel Mac
Cách chạy và nhập liệu
- Có thể xem danh sách lệnh và mô tả chi tiết của từng lệnh trong output
--help - Các mẫu chạy thường dùng như sau
shadPS4 CUSA00001: tìm thư mụcCUSA00001trong danh sách thư mục cài đặt game và bootshadPS4 --fullscreen true --config-clean CUSA00001: đối số game mặc định đặt ở cuốishadPS4 -g CUSA00001 --fullscreen true --config-clean: có thể chỉ định trực tiếp đối số game bằng-gshadPS4 /path/to/game.elf: boot trực tiếp file PS4 ELFshadPS4 CUSA00001 -- -flag1 -flag2: truyền các flag vàoargvcủa file thực thi game
- Với kiểm thử, debug và báo cáo issue, tham khảo Debugging documentation
- Phím tắt bàn phím hỗ trợ bộ đếm FPS, thông tin debug video, toàn màn hình, chụp RenderDoc và chụp ảnh màn hình
- Tay cầm Xbox và DualShock hoạt động mà không cần cấu hình riêng
- Có thể tùy chỉnh nhập liệu bàn phím và chuột từ nút Controller trong menu cài đặt
- Binding tùy chỉnh được lưu theo từng game
- Hỗ trợ tối đa 3 phím cho mỗi binding, nút chuột, chuyển động chuột được ánh xạ thành input joystick, v.v.
File firmware và điều kiện pháp lý
- shadPS4 có thể load một số file firmware PlayStation 4
- Các module firmware được hỗ trợ phải được đặt trong thư mục
sys_modulescủa shadPS4 - Các module được hỗ trợ bao gồm
libSceAudiodec.sprx,libSceFont.sprx,libSceJpegDec.sprx,libSceJson.sprx,libSceLibcInternal.sprx,libScePngEnc.sprx,libSceRtc.sprx,libSceXml.sprx, v.v. - Các module này cần thiết để chạy game đúng cách
- Module firmware phải được dump từ máy PlayStation 4 mà bạn sở hữu hợp pháp
Đóng góp và các dự án tham khảo
- Để đóng góp, hãy đọc CONTRIBUTING.md và mở PR
- Dự án gửi lời cảm ơn tới các nhóm và dự án sau
- Panda3DS: giúp hiểu và giải quyết các vấn đề phát sinh khi chạy native mã x64 của binary PS4
- fpPS4: giúp hiểu các phần phức tạp của hệ điều hành và thư viện PS4
- yuzu: trình biên dịch shader của shadPS4 lấy trình biên dịch Hades của yuzu làm bản thiết kế
- felix86: trình giả lập không gian người dùng Linux x86-64 → RISC-V
- emudev.org: mạng lưới những người quan tâm đến việc lập tài liệu, giả lập, mô phỏng và tái triển khai phần cứng gần như đang đứng trước nguy cơ biến mất
- Giấy phép là GPL-2.0 license
1 bình luận
Ý kiến Hacker News
Thực sự khá tò mò, về mặt nội bộ thì nó gần với trình giả lập như PCSX2 hơn hay gần với lớp tương thích như Wine hơn?
Nếu PS4 gần như là một máy tính x86, thì có vẻ phần khó chủ yếu sẽ là triển khai các API hệ thống/đồ họa của PS4. Hay là giữa PC x86 và PS4 vẫn còn những khác biệt phần cứng lớn cần xử lý?
Chỉ riêng phần đó thôi cũng đã là làm nhiều việc hơn đáng kể so với Wine
Có vẻ đây là trình giả lập PS4 đầu tiên đi tới được màn hình nhân vật của Bloodborne
https://x.com/shadps4/status/1825669017392107971?s=46
Tò mò không biết người ta thiết kế trình giả lập như thế nào. Có tài liệu nào đáng học không?
Loại đầu tiên là viết mã giả lập CPU của hệ thống đích theo kiểu thông dịch lệnh, như với NES. Loại thứ hai là tái triển khai API của hệ thống đích như Wine. Nếu hệ thống đích dùng kiến trúc CPU khác thì có thể cần trình biên dịch JIT như PS3
Phần lớn trình giả lập console hiện đại gần với loại thứ hai hơn, vì cách hoạt động của console hiện đại khá giống PC, có kernel hệ điều hành và các thư viện chế độ người dùng cho ứng dụng
Loại thứ hai lại chia thành hai kiểu. Một là giả lập các thư viện chế độ người dùng, và hai là tái triển khai kernel của console trong khi tái sử dụng các thư viện hệ thống của chính console đó
Khuyên nên bắt đầu từ đó bằng ngôn ngữ bạn muốn
Có tài liệu thiết kế hay tư liệu nào cho thấy các nỗ lực trước đây hoặc công việc nền tảng, cũng như lý do dự án này khác biệt không?
Trông như một dự án thú vị đáng để theo dõi. Xét việc Sony hiện thiếu lựa chọn máy chơi game cầm tay, khá tò mò nó sẽ chạy thế nào trên Steam Deck
0: https://www.reddit.com/r/SteamDeck/comments/wodw8x/i_tested_...
Ý này có nghĩa là họ đã tạo ra một phiên bản tương đương DXVK cho Gnm/Gnmx phải không?[0]
[0] https://en.wikipedia.org/wiki/PlayStation_4_system_software#...
Đây là tiến triển mới nhất của Bloodborne. Có lẽ đây là thứ mà đa số mọi người đang chờ:
YouTube của nhà phát triển này: https://www.youtube.com/watch?v=wC6s0avpQRE
Tôi thật sự không hiểu vì sao Sony vẫn gần như cố tình bỏ mặc tựa game hạng S có ý nghĩa văn hóa này. Họ đang chờ để dùng nó làm game ra mắt cho PS6 sao?
Một số game có thể tải về, nhưng số khác chỉ chơi được qua streaming, nên muốn chơi game PS2 thì phải có kết nối internet tốt. Thật vô lý
Nhu cầu chơi game cũ sẽ luôn tồn tại, và đó là lý do những trình giả lập như thế này tồn tại
Tò mò không biết việc console hiện đại giờ về cơ bản đã trở thành những hệ thống PC thu gọn có đang khiến việc phát triển giả lập trở nên dễ hơn không
May mắn là PS4 đã bị hack, và gần như mọi tệp cũng như thông tin đều đã được giải mã và dump ra. Bộ SDK PS4 chính thức cũng đã bị rò rỉ
Giờ thì người ta đã biết console chạy game thế nào, và bước tiếp theo là dùng thông tin đó để chạy game bên ngoài console. Hệ thống PS4 là một phiên bản FreeBSD đã được chỉnh sửa nên cách hoạt động rất giống PC. Tệp thực thi của PS4 chỉ là các tệp ELF tùy biến
Vì vậy để chạy game PS4 bên ngoài console, bạn chỉ cần ánh xạ trực tiếp tệp thực thi của game và cung cấp các symbol cần thiết bằng cách nào đó. Ví dụ như tự triển khai hoặc tái sử dụng các thư viện PS4
Dù vậy, có lẽ khả năng tiếp cận thông tin vẫn là yếu tố lớn
Nhìn rộng hơn, ngành này cũng đã tiến bộ nhiều về dịch nhị phân. Rosetta 2 là một ví dụ. Nó trở thành thêm một công cụ có thể dùng để đưa nhị phân sang môi trường host khác
Nhớ là vài năm trước một trình giả lập PS4 khác tên là Spine cũng từng được chú ý. Không biết dự án đó giờ ra sao
https://github.com/devofspine/spine
Không có mã nguồn, chỉ có file nhị phân