- Added Podfile for iOS dependencies and configuration. - Created ARMSXModule for native module integration with React Native. - Implemented loadEmu method in ARMSXModule to start the emulator. - Configured Metro bundler for project structure. - Developed main App component with UI for emulator actions. - Added app.json for project metadata. - Registered main application component in index.js. - Defined package.json with project dependencies and scripts for running the app.
6.1 KiB
psxe
A simple and portable Sony PlayStation emulator and emulation library written in C
Screenshots
| Windows | Ubuntu | macOS |
|---|---|---|
CI status
Running
You can download the latest automated build for your platform on Releases. If your system isn't supported, you can easily build the emulator from source, instructions on "Building" below.
In order to run the emulator, you will need a BIOS file. You can either get one from the internet or dump it from your own console.
Most BIOS versions are confirmed to work.
Use the -b or --bios setting to configure the BIOS file.
Progress
All components have been implemented, Memory card support is temporarily disabled.
CPU
DMA
GPU
SPU
MDEC
GTE
Timers
CDROM
Memory cards
Building
Building the emulator should be easy, just use the scripts provided in this repo.
On Windows, the build-deps.ps1 script downloads SDL2 and unzips it. If you want to run the emulator standalone, you will have to move the SDL2 DLL to the same folder where the executable is located.
If you already have SDL2 on your system, you can skip running build-deps.ps1. Though you will have to edit build-win.ps1 to point the SDL2_DIR variable to your installation path.
On Ubuntu, you will also need to install libsdl2-dev, you can get it from apt like so:
sudo apt update
sudo apt upgrade
sudo apt install libsdl2-dev
Building on macOS requires installing SDL2 and dylibbundler, this can be done using brew:
brew install sdl2
brew install dylibbundler
Assuming you did everything described above, you should be able to build the emulator by using the following commands.
Windows
git clone https://github.com/allkern/psxe
cd psxe
./build-deps
./build-win64.ps1
On rare cases these scripts might not work (PowerShell/Windows bugs). If so, please open an issue on the issues tab with information about your system so we can make sure we cover the maximum amount of systems.
Ubuntu
git clone https://github.com/allkern/psxe
cd psxe
make clean && make
macOS
git clone https://github.com/allkern/psxe
cd psxe
./build.sh
Configuration
A settings.toml is generated on first run under SDL's pref path (SDL_GetPrefPath("nanodata", "armsx")), falling back to the working directory if unavailable. CLI flags always override file settings for a session.
Settings file keys
psxe_version(string, managed by PSXE)
[bios]
search_path(string): directory to search for BIOS filespreferred_model(string): default model (e.g.SCPH-1001)override_file(string): explicit BIOS path; leave empty to use search/model
[console]
region(string):ntsc,pal, orauto
[video]
texture_scale_mode(bool): enable SDL texture scale mode; toggle bilinear via F4 when supported
CLI flags (override settings)
psxe [options] path-to-cdrom
-a, --use-args: ignore settings file-b, --bios=<str>: BIOS file-B, --bios-folder: BIOS search folder-c, --console-source=<str>: auto | null | kernel | atcons-e, --exp-rom=<str>: expansion ROM file-L, --log-level=<int>: 0=trace .. 5=fatal-M, --model=<str>: console model (SCPH-XXXX)-r, --region=<str>: console region-s, --scale=<int>: display scaling factor-S, --settings-file=<str>: settings file path-q, --quiet: silence logs-x, --exe=<str>: PS-X EXE to boot--cdrom=<str>: CDROM image-h/--help|--help-model|--help-region|-v/--version: info helpers
Acknowledgements
This project uses external open source code that can be found on the following GitHub repos:
- argparse.c: https://github.com/cofyc/argparse
- log.c (slightly modified): https://github.com/rxi/log.c
- tomlc99: https://github.com/cktan/tomlc99
Their original licenses are respected and apply to the code in this project.
As always, thanks to all original developers for their amazing work.