{"id":15029992,"url":"https://github.com/jpd002/play-","last_synced_at":"2025-05-14T03:06:25.235Z","repository":{"id":14394239,"uuid":"17104739","full_name":"jpd002/Play-","owner":"jpd002","description":"Play! - PlayStation2 Emulator","archived":false,"fork":false,"pushed_at":"2025-04-07T14:35:17.000Z","size":22691,"stargazers_count":2302,"open_issues_count":211,"forks_count":289,"subscribers_count":194,"default_branch":"master","last_synced_at":"2025-04-10T23:58:38.412Z","etag":null,"topics":["cpp","emulation","emulator","playstation-2"],"latest_commit_sha":null,"homepage":"http://purei.org","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jpd002.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"License.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["jpd002"],"patreon":"jpd002"}},"created_at":"2014-02-23T08:45:33.000Z","updated_at":"2025-04-07T12:48:48.000Z","dependencies_parsed_at":"2024-11-06T23:37:28.646Z","dependency_job_id":null,"html_url":"https://github.com/jpd002/Play-","commit_stats":null,"previous_names":[],"tags_count":43,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpd002%2FPlay-","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpd002%2FPlay-/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpd002%2FPlay-/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpd002%2FPlay-/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jpd002","download_url":"https://codeload.github.com/jpd002/Play-/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248317704,"owners_count":21083528,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","emulation","emulator","playstation-2"],"created_at":"2024-09-24T20:12:10.419Z","updated_at":"2025-04-10T23:58:44.187Z","avatar_url":"https://github.com/jpd002.png","language":"C++","funding_links":["https://github.com/sponsors/jpd002","https://patreon.com/jpd002"],"categories":[],"sub_categories":[],"readme":"# Play! #\nPlay! is a PlayStation2 emulator for Windows, macOS, UNIX, Android, iOS \u0026 web browser platforms.\n\nCompatibility information is available on the official [Compatibility Tracker](https://github.com/jpd002/Play-Compatibility).\nIf a specific game doesn't work with the emulator, please create a new issue there.\n\nFor more information, please visit [purei.org](https://purei.org).\n\nYou can try the experimental web browser version here: [playjs.purei.org](https://playjs.purei.org).\n\nFor general discussion, you're welcome to join our Discord: https://discord.gg/HygQnQP.\n\n## Command Line Options (Windows/macOS/Linux) ##\n\nThe following command line options are available:\n- `--disc \"disc image path\"` : Boots a disc image.\n- `--elf \"elf file path\"` : Boots a ELF file.\n- `--arcade \"arcade id\"` : Boots an arcade game.\n- `--state \"slot number\"` : Loads a state from slot number.\n- `--fullscreen` : Starts the emulator in fullscreen mode.\n\n## Running on Windows ##\n\nPlease make sure you have the latest VC++ redistributable package installed on your machine. Here are the links if you need to install them:\n- x86-64: https://aka.ms/vs/17/release/vc_redist.x64.exe\n- x86-32: https://aka.ms/vs/17/release/vc_redist.x86.exe\n\n## Running on iOS ##\n\nThis emulator uses JIT code generation to speed things up. This is not supported by default by iOS, thus, there are some extra requirements:\n\n- Have a device running iOS 13 or less, or an arm64e device running iOS 14.2/14.3.\n- Have a jailbroken device.\n\nIf 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:\n\nhttps://spidy123222.github.io/iOS-Debugging-JIT-Guides/\n\nPlay! 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.\n\nYou can also build the emulator yourself and launch it through Xcode's debugger to enable JIT. This will require installing the iOS SDK. If you don't want to be tethered to Xcode, you can use the \"Detach\" button in the \"Debug\" section after attaching the debugger to the app process. After you detach the debugger, the debug process will stay on the app until the app's process ends.\n\n**If you try to play a game without JIT enabled, you will experience a crash when you launch the game.**\n\n### Adding games to the library ###\n\nPlease refer to the following guides for instructions regarding adding your disc images to the Play! application on your iOS device:\n- https://support.apple.com/HT201301\n- https://support.apple.com/HT210598\n\nIf your device is jailbroken, the emulator will look through all bootable files in the `/private/var/mobile` directory and all of its subdirectories.\n\n## Namco System 2x6 Arcade Support ##\n\n### Placing dongle images and disc images ###\n\nThe files required to run arcade games should be placed inside the `arcaderoms` subdirectory of your `Play! Data Files` directory.\n\n```\narcaderoms/\n  bldyr3b.zip\n  bldyr3b/\n    bldyr3b.chd\n  tekken4.zip\n  tekken4/\n    tef1dvd0.chd  \n```\n\n## Arcade Specific Controls ##\n\nSome arcade specific actions are mapped to these buttons on the PS2 controller mappings:\n\n- Service/Coin: SELECT\n- Test: L3 \u0026 R3 pressed at the same time\n\n### Light Gun Support ###\n\nFor games that support light guns, the following buttons are mapped:\n\n- Gun Trigger: CIRCLE\n- Pedal: TRIANGLE\n\nThe 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.\n\n**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.\n\n### Taiko Drum Support ###\n\nFor Taiko no Tatsujin games, the following buttons are mapped:\n\n- Left Men (面) : L1\n- Left Fuchi (ふち) : L2\n- Right Men (面) : R1\n- Right Fuchi (ふち) : R2\n\n### Driving Support ###\n\nFor driving games, the following buttons are mapped:\n\n- Wheel : Left Analog Stick X +/-\n- Gaz Pedal : Left Analog Stick Y +\n- Brake Pedal : Right Analog Stick X +\n\n## General Troubleshooting ##\n\n#### Failed to open CHD file ####\n\nPlease 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.\n\n```\nchdman info -i image.chd\n```\n\nIf you see a `GDDD` metadata in there, it means your CDVD image needs to be converted. It can be done this way:\n\n```\nmv image.chd image.chd.orig\nchdman extracthd -i image.chd.orig -o image.iso\nchdman createcd -i image.iso -o image.chd\n```\n\n## Building ##\n\n### Getting Started ###\nFirst you'll need to clone this repo which contains the emulator source code, alongside the submodules required to build Play!:\n ```\n git clone --recurse-submodules https://github.com/jpd002/Play-.git\n cd Play-\n ```\n\n### Building for Windows ###\nThe 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`.\nYou can also build the project using Visual Studio or cmdline, for that you must follow these instructions:\n\nTo build for Windows you will need to have CMake installed on your system.\n ```cmd\n mkdir build\n cd build\n ```\n ```\n # Not specifying -G will automatically generate 32-bit projects.\n cmake .. -G \"Visual Studio 15 2017 Win64\" -DCMAKE_PREFIX_PATH=\"C:\\Qt\\5.10.1\\msvc2017_64\" -DUSE_QT=YES\n ```\nYou can now build the project by opening the generated Visual Studio Solution or continue through cmdline:\n ```cmd\n cmake --build . --config Release\n ```\nNote: `--config` can be `Release`, `Debug`, or `RelWithDebInfo`.\n\n### Building for macOS \u0026 iOS ###\nIf you don't have CMake installed, you can install it using [Homebrew](https://brew.sh) with the following command:\n ```bash\n brew install cmake\n ```\n\nThere are two ways to generate a build for macOS. Either by using Makefiles, or Xcode:\n ```bash\n mkdir build\n cd build\n ```\n ```\n # Not specifying -G will automatically pick Makefiles\n cmake .. -G Xcode -DCMAKE_PREFIX_PATH=~/Qt/5.1.0/clang_64/\n cmake --build . --config Release\n # OR\n cmake .. -G \"Unix Makefiles\" -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=~/Qt/5.1.0/clang_64/\n cmake --build .\n ```\nTo generate a build for iOS, you will need to add the following parameters to the CMake invocation:\n ```bash\n -DCMAKE_TOOLCHAIN_FILE=../../../Dependencies/cmake-ios/ios.cmake -DTARGET_IOS=ON\n ```\n\niOS build doesn't use Qt, so omit `-DCMAKE_PREFIX_PATH=...`\n\nExample:\n ```bash\n cmake .. -G Xcode -DCMAKE_TOOLCHAIN_FILE=../deps/Dependencies/cmake-ios/ios.cmake -DTARGET_IOS=ON\n ```\n\nNote: iOS builds generated with Makefiles will not be FAT binaries.\n\nTo test your iOS builds on a device, you will need to setup code signing:\n- Set `CODE_SIGNING_ALLOWED` to `YES` on the `Play` target.\n- Set your code signing parameters in Signing \u0026 Capabilities tab in Xcode.\n\nTo build with Vulkan on macOS, just make sure the `$VULKAN_SDK` environment variable is set with the proper path.\n\nOn iOS, you will need to add this to your CMake command line:\n ```bash\n -DCMAKE_PREFIX_PATH=$VULKAN_SDK\n ```\n\n### Building for UNIX ###\nif you don't have Cmake or OpenAL lib installed, you'll also require Qt. (preferably version 5.6)\nYou can install it using your OS packaging tool, e.g Ubuntu: `apt install cmake libalut-dev qt5-default libevdev-dev libqt5x11extras5-dev libsqlite3-dev`\n\nOn UNIX systems there are 3 ways to setup a build. Using Qt creator, makefile or Ninja:\n - QT Creator\n    - Open Project -\u003e `Play/CMakeLists.txt`\n\n - Makefile/Ninja:\n   ```bash\n   mkdir build\n   cd build\n   ```\n   ```\n   # Not specifying -G will automatically pick Makefiles\n   cmake .. -G \"Unix Makefiles\" -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/opt/qt56/\n   cmake --build .\n   # OR\n   cmake .. -G Ninja -DCMAKE_PREFIX_PATH=/opt/qt56/\n   cmake --build . --config Release\n   ```\nThe above example uses a backport repo to install Qt5.6 on Ubuntu Trusty.\n\nNote: `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/`\n\n### Building for Android ###\nBuilding for Android has been tested on macOS and UNIX environments.\n\nAndroid can be built using Android Studio, or Gradle:\n - Android Studio:\n   - Files-\u003e Open Projects-\u003e Directory To `Play/build_android`\n   - Install NDK using SDK manager\n     - Edit/create `Play/build_android/local.properties`\n     - OSX: Add a new line: `ndk.dir=/Users/USER_NAME/Library/Android/sdk/ndk-bundle` replacing `USER_NAME` with your macOS username\n     - UNIX: Add a new line: `ndk.dir=~/Android/Sdk/ndk-bundle`\n     - Windows: Add a new line: `C:\\Users\\USER_NAME\\AppData\\Local\\Android\\sdk\\ndk-bundle`\n     - Please leave an empty new line at the end of the file.\n\nNote: These examples are only valid if you installed NDK through Android Studio's SDK manager.\nOtherwise, you must specify the correct location to the Android NDK.\n\nOnce this is done, you can start the build:\n - Gradle: Prerequisite Android SDK \u0026 NDK (Both can be installed through Android Studio)\n   - edit/create `Play/build_android/local.properties`\n     - OSX:\n       - Add a new line: `sdk.dir=/Users/USER_NAME/Library/Android/sdk` replacing `USER_NAME` with your macOS username\n       - Add a new line: `ndk.dir=/Users/USER_NAME/Library/Android/sdk/ndk-bundle` replacing `USER_NAME` with your macOS username\n     - UNIX:\n       - Add a new line: `sdk.dir=~/Android/Sdk`\n       - Add a new line: `ndk.dir=~/Android/Sdk/ndk-bundle`\n     - Windows:\n       - Add a new line: `sdk.dir=C:\\Users\\USER_NAME\\AppData\\Local\\Android\\sdk`\n       - Add a new line: `ndk.dir=C:\\Users\\USER_NAME\\AppData\\Local\\Android\\sdk\\ndk-bundle`\n     - Please leave an empty new line at the end of the file.\n\nNote: These examples are only valid if you installed NDK through Android Studio's SDK manager.\nOtherwise you must specify the correct location to Android NDK.\nOnce this is done, you can start the build:\n ```bash\n cd Play/build_android\n sh gradlew assembleDebug\n ```\n\n##### About Release/Signed builds #####\nBuilding through Android Studio, you have the option to “Generate Signed APK”.\n\nWhen 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:\n\n ```\n PLAY_RELEASE_STORE_FILE=/location/to/my/key.jks\n PLAY_RELEASE_STORE_PASSWORD=mysuperhardpassword\n PLAY_RELEASE_KEY_ALIAS=myalias\n PLAY_RELEASE_KEY_PASSWORD=myevenharderpassword\n ```\n\nThen, you should be able to use `assembleRelease` to generate a signed release build.\n ```\n cd Play/build_android\n sh gradlew assembleRelease\n # or on Windows\n gradlew.bat assembleRelease\n ```\n\n### Building for Web Browsers ###\n\nBuilding for the web browser environment requires [emscripten](https://emscripten.org/).\n\nUse `emcmake` to generate the project:\n\n```\nmkdir build\ncd build\nemcmake cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=OFF -DBUILD_PLAY=ON -DBUILD_PSFPLAYER=ON -DUSE_QT=OFF\n```\n\nUpon completion, you can build the JavaScript/WebAssembly files using this command line:\n\n```\ncmake --build . --config Release\n```\n\nThis 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:\n\n```\nbuild_cmake/build/Source/ui_js/Play.js -\u003e js/play_browser/src/Play.js\nbuild_cmake/build/Source/ui_js/Play.wasm -\u003e js/play_browser/public/Play.wasm\nbuild_cmake/build/Source/ui_js/Play.js -\u003e js/play_browser/public/Play.js\n```\n\nOnce 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:\n\n```\nnpm install\nnpm start\n```\n\n##### Browser environment caveats #####\n- Write protection on memory pages is not supported, thus, games loading modules on the EE might not work properly since JIT cache can't be invalidated.\n- No control over floating point environment, default rounding mode is used, which can cause issues in some games.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjpd002%2Fplay-","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjpd002%2Fplay-","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjpd002%2Fplay-/lists"}