Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Libuv | 22,241 | 13 | a day ago | 2 | May 09, 2018 | 173 | mit | C | ||
Cross-platform asynchronous I/O | ||||||||||
Mumble | 5,620 | a day ago | 510 | other | C++ | |||||
Mumble is an open-source, low-latency, high quality voice chat software. | ||||||||||
Play | 1,864 | 3 days ago | 152 | other | C++ | |||||
Play! - PlayStation2 Emulator | ||||||||||
Uxplay | 1,028 | 4 days ago | 68 | gpl-3.0 | C | |||||
AirPlay Unix mirroring server | ||||||||||
Dirent | 943 | 24 days ago | mit | C | ||||||
C/C++ library for retrieving information on files and directories | ||||||||||
Medusa | 910 | 4 years ago | 28 | other | C++ | |||||
An open source interactive disassembler | ||||||||||
Exiv2 | 792 | 2 days ago | 3 | March 28, 2021 | 157 | other | C++ | |||
Image metadata library and tools | ||||||||||
Mmoserver | 233 | 2 years ago | 3 | gpl-3.0 | C++ | |||||
SWG:ANH - MMOServer | ||||||||||
Libcvd | 228 | 7 months ago | 9 | other | C++ | |||||
libcvd - efficient and easy to use C++ computer vision library. | ||||||||||
Eternity | 200 | 2 months ago | 202 | gpl-3.0 | C++ | |||||
The Eternity Engine |
Play! is a PlayStation2 emulator for Windows, macOS, UNIX, Android, iOS & web browser platforms.
Compatibility information is available on the official Compatibility Tracker. If a specific game doesn't work with the emulator, please create a new issue there.
For more information, please visit purei.org.
You can try the experimental web browser version here: playjs.purei.org.
For general discussion, you're welcome to join our Discord: https://discord.gg/HygQnQP.
The following command line options are available:
-disc "disc image path"
: Boots a disc image.-elf "elf file path"
: Boots a ELF file.-arcade "arcade id"
: Boots an arcade game.-state "slot number"
: Loads a state from slot number.-fullscreen
: Starts the emulator in fullscreen mode.This emulator uses JIT code generation to speed things up. This is not supported by default by iOS, thus, there are some extra requirements:
If these requirements are not met, there are still ways to enable JIT through other means. Here is a guide explaining how JIT can be enabled:
https://spidy123222.github.io/iOS-Debugging-JIT-Guides/
Play! implements automatic JIT activation through AltServer, which requires AltServer to be running on the same network as your iOS device. This can be enabled in the Settings menu of the emulator.
You can also build the emulator yourself and launch it through Xcode's debugger, but you will need to be tethered to your Mac while playing. You will also need a paid developer license to do that.
If you try to play a game without JIT enabled, you will experience a crash when you launch the game.
The files required to run arcade games should be placed inside the arcaderoms
subdirectory of your Play! Data Files
directory.
arcaderoms/
bldyr3b.zip
bldyr3b/
bldyr3b.chd
tekken4.zip
tekken4/
tef1dvd0.chd
Some arcade specific actions are mapped to these buttons on the PS2 controller mappings:
For games that support light guns, the following buttons are mapped:
The mouse's cursor position on the emulator's window will be used for the gun's position. It's also possible to map mouse buttons to CIRCLE or TRIANGLE in controller settings for a better experience.
Note for Time Crisis 3: This game requires prior calibration of the light gun in service menu. Hold the Test buttons, go in "I/O Test" then "Gun Initialize" and press the Pedal button to calibrate the gun (shoot at the center). This only needs to be done once.
For Taiko no Tatsujin games, the following buttons are mapped:
For driving games, the following buttons are mapped:
Please make sure your CHD files are in the proper format. It's possible to use chdman
to verify whether your CDVD image is really a CDVD image.
chdman info -i image.chd
If you see a GDDD
metadata in there, it means your CDVD image needs to be converted. It can be done this way:
mv image.chd image.chd.orig
chdman extracthd -i image.chd.orig -o image.iso
chdman createcd -i image.iso -o image.chd
First you'll need to clone this repo which contains the emulator source code, alongside the submodules required to build Play!:
git clone --recurse-submodules https://github.com/jpd002/Play-.git
cd Play-
The easiest way to build the project on Windows is to open Qt Creator and direct it to the Cmake file in /project/dir/Play-/CMakeLists.txt
.
You can also build the project using Visual Studio or cmdline, for that you must follow these instructions:
To build for Windows you will need to have CMake installed on your system.
mkdir build
cd build
# Not specifying -G will automatically generate 32-bit projects.
cmake .. -G "Visual Studio 15 2017 Win64" -DCMAKE_PREFIX_PATH="C:\Qt\5.10.1\msvc2017_64" -DUSE_QT=YES
You can now build the project by opening the generated Visual Studio Solution or continue through cmdline:
cmake --build . --config Release
Note: --config
can be Release
, Debug
, or RelWithDebInfo
.
If you don't have CMake installed, you can install it using Homebrew with the following command:
brew install cmake
There are two ways to generate a build for macOS. Either by using Makefiles, or Xcode:
mkdir build
cd build
# Not specifying -G will automatically pick Makefiles
cmake .. -G Xcode -DCMAKE_PREFIX_PATH=~/Qt/5.1.0/clang_64/
cmake --build . --config Release
# OR
cmake .. -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=~/Qt/5.1.0/clang_64/
cmake --build .
To generate a build for iOS, you will need to add the following parameters to the CMake invocation:
-DCMAKE_TOOLCHAIN_FILE=../../../Dependencies/cmake-ios/ios.cmake -DTARGET_IOS=ON
iOS build doesn't use Qt, so omit -DCMAKE_PREFIX_PATH=...
Example:
cmake .. -G Xcode -DCMAKE_TOOLCHAIN_FILE=../deps/Dependencies/cmake-ios/ios.cmake -DTARGET_IOS=ON
Note: iOS builds generated with Makefiles will not be FAT binaries.
To test your iOS builds on a device, you will need to setup code signing:
CODE_SIGNING_ALLOWED
to YES
on the Play
target.To build with Vulkan on macOS, just make sure the $VULKAN_SDK
environment variable is set with the proper path.
On iOS, you will need to add this to your CMake command line:
-DCMAKE_PREFIX_PATH=$VULKAN_SDK
if you don't have Cmake or OpenAL lib installed, you'll also require Qt. (preferably version 5.6)
You can install it using your OS packaging tool, e.g Ubuntu: apt install cmake libalut-dev qt5-default libevdev-dev libqt5x11extras5-dev libsqlite3-dev
On UNIX systems there are 3 ways to setup a build. Using Qt creator, makefile or Ninja:
QT Creator
Play/CMakeLists.txt
Makefile/Ninja:
mkdir build
cd build
# Not specifying -G will automatically pick Makefiles
cmake .. -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/opt/qt56/
cmake --build .
# OR
cmake .. -G Ninja -DCMAKE_PREFIX_PATH=/opt/qt56/
cmake --build . --config Release
The above example uses a backport repo to install Qt5.6 on Ubuntu Trusty.
Note: CMAKE_PREFIX_PATH
refers to the Qt directory containing bin/libs folder. If you install Qt from their official website, your CMAKE_PREFIX_PATH
might look like this: ~/Qt5.6.0/5.6/gcc_64/
Building for Android has been tested on macOS and UNIX environments.
Android can be built using Android Studio, or Gradle:
Play/build_android
Play/build_android/local.properties
ndk.dir=/Users/USER_NAME/Library/Android/sdk/ndk-bundle
replacing USER_NAME
with your macOS usernamendk.dir=~/Android/Sdk/ndk-bundle
C:\Users\USER_NAME\AppData\Local\Android\sdk\ndk-bundle
Note: These examples are only valid if you installed NDK through Android Studio's SDK manager. Otherwise, you must specify the correct location to the Android NDK.
Once this is done, you can start the build:
Play/build_android/local.properties
sdk.dir=/Users/USER_NAME/Library/Android/sdk
replacing USER_NAME
with your macOS usernamendk.dir=/Users/USER_NAME/Library/Android/sdk/ndk-bundle
replacing USER_NAME
with your macOS usernamesdk.dir=~/Android/Sdk
ndk.dir=~/Android/Sdk/ndk-bundle
sdk.dir=C:\Users\USER_NAME\AppData\Local\Android\sdk
ndk.dir=C:\Users\USER_NAME\AppData\Local\Android\sdk\ndk-bundle
Note: These examples are only valid if you installed NDK through Android Studio's SDK manager. Otherwise you must specify the correct location to Android NDK. Once this is done, you can start the build:
cd Play/build_android
sh gradlew assembleDebug
Building through Android Studio, you have the option to “Generate Signed APK”.
When building through Gradle, make sure these variables are defined in a gradle.properties
file, either in your project directory or in your GRADLE_USER_HOME
directory:
PLAY_RELEASE_STORE_FILE=/location/to/my/key.jks
PLAY_RELEASE_STORE_PASSWORD=mysuperhardpassword
PLAY_RELEASE_KEY_ALIAS=myalias
PLAY_RELEASE_KEY_PASSWORD=myevenharderpassword
Then, you should be able to use assembleRelease
to generate a signed release build.
cd Play/build_android
sh gradlew assembleRelease
# or on Windows
gradlew.bat assembleRelease
Building for the web browser environment requires emscripten.
Use emcmake
to generate the project:
mkdir build
cd build
emcmake cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=OFF -DBUILD_PLAY=ON -DBUILD_PSFPLAYER=ON -DUSE_QT=OFF
Upon completion, you can build the JavaScript/WebAssembly files using this command line:
cmake --build . --config Release
This will generate the JavaScript glue code and the WebAssembly module required for the web application located in js/play_browser
. Here's where the output files from emscripten need to be copied:
build_cmake/build/Source/ui_js/Play.js -> js/play_browser/src/Play.js
build_cmake/build/Source/ui_js/Play.wasm -> js/play_browser/public/Play.wasm
build_cmake/build/Source/ui_js/Play.js -> js/play_browser/public/Play.js
build_cmake/build/Source/ui_js/Play.worker.js -> js/play_browser/public/Play.worker.js
Once this is done, you should be able to go in the js/play_browser
folder and run the following to get a local version running in your web browser:
npm install
npm start