THIS REPOSITORY HAS BEEN MOVED TO https://github.com/obhq/obliteration
Obliteration is an experimental PS4 emulator for Windows, Linux and macOS. The project is under development and cannot run any games yet. The reason it take so long is because we decided to go with the correct path without stubbing as much as possible.
This project started as a hard-fork from Kyty. Then we decided to rewrite the whole project from scratch by using Kyty and Uplift as a reference to help us getting started with the project. How Obliteration work is totally different from Kyty because we decided to go with the same path as Uplift (and Spine?) instead of Kyty. This is the reason why Obliteration required firmware files from the PS4 in order to work while Kyty does not.
You can download binaries from the latest commits here. You MUST sign in to GitHub otherwise you will not be able to download files.
Thanks to VocalFan for the awesome icon!
We have a Discord server for discussion about Obliteration and its development. You can join the server here.
msvcp140.dll
, vcruntime140.dll
, or vcruntime140_1.dll
that means you need to install this manually. It's likely your system already has it, so try to run Obliteration first.Obliteration supports only 4KB/8KB/16KB pages. Most people should not have any problem with this because 4KB is the default for most distros.
Desktop development with C++
workload is requiredAdd CMake to the system PATH
selected when installingYou need to install Qt 6 on your system before you proceed. The minimum version is 6.5.
You need Qt Online Installer
for open-source to install Qt, downloaded from https://www.qt.io. The installer will ask you to sign in with a Qt account, which you can create for free. You need to check Custom installation
and do not check Qt for desktop development
that is using the MinGW toolchain. Make sure you have checked the MSVC 2019 64-bit
component in the Select Components
page for the version you wish to install and uncheck all of the other components.
Once installation is completed you need to set the CMAKE_PREFIX_PATH
environment variable to the full path of the installed version (e.g. C:\Qt\6.5.1\msvc2019_64
). To set an environment variable:
sysdm.cpl
then click OK
.Advanced
tab then click on Environment Variables...
.New...
to create a new environment variable. Just create for either User variables
or System variables
, not both.brew install qt@6
cmake --preset PRESET .
The value of PRESET
will depend on your platform and the build configuration you want to use. The current available presets are:
If all you want is to use the emulator, choose [YOUR-PLATFORM]-release
for optimized outputs. But if you want to edit the code, choose *-debug
.
cmake --build --preset PRESET
You can use -j
to enable parallel building (e.g. cmake --build --preset PRESET -j 2
). Each parallel build on Linux consumes a lot of memory so don't use the number of your CPU cores otherwise your system might crash due to out of memory. On Windows and macOS it seems like it is safe to use the number of your CPU cores.
Before proceeding, make sure the build preset you are using is *-debug
. We recommend Visual Studio Code as a code editor with the following extensions:
Then open this folder with VS Code. It will ask which CMake preset to use and you need to choose the same one that you were using when building. Everything should work out of the box (e.g. code completion, debugging, etc).
If you can't launch or debug Obliteration from VS Code, try this solution.
If you don't have a PS4 application for testing you can download PS Scene Quiz for free here.
usize
are always 64-bits.Arc
. Just make sure you don't create a reference cycle that will never be dropped.Just follow how Qt is written (e.g. coding style, etc.). Always prefers Qt classes over std
when possible so you don't need to handle exceptions. Do not use the Qt ui
file to design the UI because it will break on a high-DPI screen.
The application consists of 2 binaries:
src/main.cpp
.src/kernel/src/main.rs
.Create .kernel-debug
in the root of the repository. The contents of this file is YAML and the kernel will deserialize it to the Args
struct in src/kernel/src/main.rs
when passing the --debug
flag to the kernel. See Args
struct for available options.
We already provide a launch configuration for VS Code so all you need to do is choose Debug - Kernel
as the configuration and start debugging.
We use icons from https://materialdesignicons.com for UI (e.g. on the menu and toolbar).
PS4 Developer Wiki has a lot of useful information about the PS4 internal. We also have a PS4 reverse engineering project.
If you want to make some contributions but don't know what to work on you can look for TODO
comment or todo!
macro invocation in the source code. You can also take a look on the unassigned issues.
src/ansi_escape.hpp
, src/ansi_escape.cpp
, src/log_formatter.hpp
and src/log_formatter.cpp
are licensed under GPL-3.0 only.src/param
, src/pfs
and src/pkg
are licensed under LGPL-3.0 license.