The PCSX-Redux project is a collection of tools, research, hardware design, and libraries aiming at development and reverse engineering on the PlayStation 1. The core product itself, PCSX-Redux, is yet another fork of the Playstation emulator, PCSX.
Go to file
Nicolas Pixel Noble 4e06674ba5 Flipping compiler.
2022-04-30 21:17:41 -07:00
.github Flipping compiler. 2022-04-30 21:17:41 -07:00
.vscode Flipping compiler. 2022-04-30 21:17:41 -07:00
hardware Adding MC-Breakout project & GerberFiles. 2021-10-12 19:27:57 -07:00
i18n [Chores] Regen i18n 2022-04-19 02:45:41 +00:00
resources Adding appimage build. 2021-06-05 11:15:00 -07:00
src Compilation fix. 2022-04-30 20:25:26 -07:00
tests Test passes. 2022-03-25 22:25:18 -07:00
third_party Update vixl for newer gcc. 2022-04-30 17:28:01 -07:00
tools Bumping toolchains to latest binutils/gcc. 2022-04-25 19:17:08 -07:00
vsprojects Updating fmt. 2022-04-18 20:46:46 -07:00
.gitattributes Starting i18n stub. 2019-05-21 21:33:00 -07:00
.gitignore Adding ClangCL support. 2022-03-15 17:25:18 -07:00
.gitmodules Update vixl for newer gcc. 2022-04-30 17:28:01 -07:00
AppImageBuilder.yml Updating AppImage script. 2022-03-13 18:47:17 -07:00
AUTHORS Update AUTHORS 2022-02-28 16:44:43 -06:00
azure-pipelines-linux.yml Fixing archive name. 2021-09-08 00:14:14 -07:00
azure-pipelines-win32.yml Whatever. I don't care this much about 32bits. 2022-03-29 20:01:08 -07:00
azure-pipelines.yml Adding ClangCL support. 2022-03-15 17:25:18 -07:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2022-02-14 17:19:05 -08:00
compile_flags.txt Adding clangd hint files. 2021-11-25 09:13:30 -08:00
CONTRIBUTING.md Alter wording a bit. 2022-02-14 19:55:52 -08:00
cross-env.list [New Branch Prep] Added docker aarch64 cross-compiler files 2022-02-28 16:01:01 -06:00
distcc-make.sh Flipping compiler. 2022-04-30 21:17:41 -07:00
dockermake-cross.bat [AA64 JIT] Merge cross-compile options into Makefile and add CROSS flag in docker cross-compile scripts. 2022-03-23 16:59:40 -05:00
dockermake-cross.sh Merge branch 'aa64-collab' of http://github.com/caldog20/pcsx-redux into stuff 2022-03-25 14:13:05 +02:00
dockermake.bat Very crude mips tests infrastructure. 2020-06-03 00:56:33 -07:00
dockermake.sh No tty. 2020-05-09 20:08:49 -07:00
dockershell.bat Adding dockershell scripts. 2020-06-23 21:18:55 -07:00
dockershell.sh Fixing permissions. 2020-06-29 22:36:49 -07:00
env.list Flipping compiler. 2022-04-30 21:17:41 -07:00
LICENSE Create LICENSE 2019-01-22 01:03:03 -08:00
Makefile Fixing xgettext after fmt upgrade. 2022-04-18 22:14:47 -07:00
mips.ps1 Another typo... 2021-11-22 13:00:24 -08:00
README.md Update README.md 2022-04-02 00:32:53 +03:00
run-ide.sh Adding a separate docker file just to build pcsx-redux. 2019-07-19 18:26:29 +02:00
TODO.md Update README and TODO 2022-01-03 01:59:57 +02:00

Debugger screenshot

Platform Build status Download
Windows build Build Status Windows Intel 64-bits
Linux build Linux CI Linux Intel 64-bits (AppImage)
MacOS build MacOS CI MacOS

To discuss this emulator specifically, please join its Discord server: Discord

To discuss PlayStation1's development, hacking, and reverse engineering in general, please join the PSXDev Network Discord server: Discord

PCSX-Redux

What?

This is yet another fork of the Playstation Emulator, PCSX. While the work here is very much in progress, the goal is roughly the following:

  • Bring the codebase to more up to date code standards.
  • Get rid of the plugin system and create a single monolithic codebase that handles all aspects of the playstation emulation.
  • Write everything on top of OpenGL3+/ImGui for portability and readability.
  • Improve the debugging experience.
  • Improve the rendering experience.

Please consult the documentation pages for more information.

Where?

Download page
Windows Intel 32-bits
Windows Intel 64-bits
Linux Intel 64-bits (AppImage)
MacOS

How?

The code is meant to be built using very modern compilers. Also it's still fairly experimental, and lots of things can break. If you still want to proceed, here are instructions to build it on Linux, MacOS and Windows. The code now comes in two big parts: the emulator itself, and OpenBIOS, which can be used as an alternative to the retail, copyright protected BIOS.

Getting sources

The only location for the source is on github. Clone recursively, as the project uses submodules:

git clone --recursive https://github.com/grumpycoders/pcsx-redux.git

Windows

Install Visual Studio 2022 Community Edition using the Desktop development with C++ workload. Open the file vsprojects\pcsx-redux.sln, select pcsx-redux -> pcsx-redux, right click, Set as Startup Project, and hit F7 to build. The project follows the open-and-build paradigm with no extra step, so no specific dependency ought to be needed, as NuGet will take care of downloading them automatically for you on the first build.

Note: If you get an error saying hresult e_fail has been returned from a call to a com component, you might need to delete the .suo file in vsproject/vs, restart Visual Studio and retry.

If you want to compile OpenBIOS or other PS1 software, you need to install a MIPS toolchain on Windows. You can do this by copy-pasting the following into a command prompt:

powershell -c "& { iwr https://raw.githubusercontent.com/grumpycoders/pcsx-redux/main/mips.ps1 | iex }"

Then, open a new command prompt, and type the following:

mips install 11.2.0

Linux

Run ./dockermake.sh. You need docker for this to work. You will also need a few libraries on your system for this to work. Check the Dockerfile for a list of library packages to install.

GNU/Linux Dependencies

If you're only interested in compiling psx code, you can simply clone the pcsx-redux repo, then install g++-mipsel-linux-gnu cpp-mipsel-linux-gnu binutils-mipsel-linux-gnu then follow the instructions in /pcsx-redux/src/mips/psyq/README.md to convert the PsyQ libraries. You might find them pre-compiled online.

  • Debian derivatives ( for full emulator compilation ):
sudo apt-get install -y build-essential git make pkg-config clang g++ g++-mipsel-linux-gnu cpp-mipsel-linux-gnu binutils-mipsel-linux-gnu libcapstone-dev libfreetype-dev libavcodec-dev libavformat-dev libavutil-dev libcurl4-openssl-dev libglfw3-dev libswresample-dev libuv1-dev zlib1g-dev
  • Arch derivatives :

The pcsx-redux-git package can be installed from the AUR using your AUR helper of choice (e.g., paru):

paru -S pcsx-redux-git

Alternatively, the following steps describe how to install dependencies and compile manually:

sudo pacman -S capstone clang git make pkg-config ffmpeg libuv zlib glfw-x11 curl xorg-server-xvfb

The mipsel environment can be installed from AUR : cross-mipsel-linux-gnu-binutils and cross-mipsel-linux-gnu-gcc using your AURhelper of choice:

trizen -S cross-mipsel-linux-gnu-binutils cross-mipsel-linux-gnu-gcc

You can then just enter the 'pcsx-redux' directory and compile without using docker with make.

Building OpenBIOS on Linux can be done with ./dockermake.sh -C src/mips/openbios, or using the g++-mipsel-linux-gnu package with make -C src/mips/openbios. If you have a different mips compiler, you'll need to override some variables, such as PREFIX=mipsel-none-elf FORMAT=elf32-littlemips.

MacOS

You need MacOS Catalina with the latest XCode to build, as well as a few homebrew packages. Run the brew installation script to get all the necessary dependencies. Simply run make to build.

Compiling OpenBIOS will require a mips compiler, that you can generate using the following commands:

brew install ./tools/macos-mips/mipsel-none-elf-binutils.rb
brew install ./tools/macos-mips/mipsel-none-elf-gcc.rb

Then, you can compile OpenBIOS using make -C ./src/mips/openbios.

Who?

I used to contribute to the PCSX codebase. It is very likely that a sourceforge account of mine still has write access to the old cvs repository for PCSX. A long time ago, I contributed the telnet debugger, and the parallel port support. This means I am fairly familiar with this codebase, and I am also ashamed of the contributions I have done 15+ years ago, as one should.

Why?

When Sony released the Playstation mini recently, I came to realize two things: first, the state of the Playstation emulation isn't that great, and second, the only half-decent debugging tool still available for this console is that old telnet debugger I wrote eons ago, while other emulators out there for other consoles gained a lot of debugging superpowers. I think it was time for the Playstation emulation to get to better standards with regards to debuggability. I also felt I had a responsability to cleaning up some of the horrors I've introduced myself in the codebase long ago, and that made me cry a little looking at them. Hopefully, I got better at programming. Hopefully.

Status?

The codebase still requires a lot of cleanup, and the current product isn't properly usable yet. Despite that, a lot can already be achieved using the product in its current state. If you want to help with localization, you can find the translation project on transifex.

What works?

  • Dynamic Recompiler (x86-32, x86-64, experimental arm64 support)
  • interpreted CPU
  • software GPU
  • VRAM viewer and debugger
  • fully featured MIPS debugger
  • memory cards
  • memory card manager
  • XBox controller support
  • digital and analog controller emulation, Playstation Mouse emulation
  • Lua scripting
  • SPU debugger
  • in-app shader editor and built-in crt-lottes shader
  • customizable UI
  • save states

What still requires some work?

  • GLSL GPU
  • proper SPU multithreaded code
  • better customization
  • more generic dynarec
  • hook more emulator functions to Lua
  • ...

Redux definition