Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zeozeozeo/gopsx
PlayStation 1 emulator written in pure Go.
https://github.com/zeozeozeo/gopsx
emulation emulator golang playstation ps1 pure-go
Last synced: 19 days ago
JSON representation
PlayStation 1 emulator written in pure Go.
- Host: GitHub
- URL: https://github.com/zeozeozeo/gopsx
- Owner: zeozeozeo
- License: unlicense
- Created: 2022-12-18T17:26:23.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-03-30T13:35:45.000Z (9 months ago)
- Last Synced: 2024-06-20T08:08:46.245Z (6 months ago)
- Topics: emulation, emulator, golang, playstation, ps1, pure-go
- Language: Go
- Homepage:
- Size: 1.45 MB
- Stars: 18
- Watchers: 1
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# gopsx, a PlayStation 1 emulator written in Go
# TODO
- MDEC
- SPU
- Fix the CD-ROM implementation
- Fix the GTE implementation (some of the tests fail)
- Correct CPU pipeline emulation# Usage
1. Get a PlayStation 1 BIOS.
2. To boot the BIOS, run ` -bios "BIOS_PATH_HERE"`. The default BIOS path is `SCPH1001.BIN` for now.
3. To insert a disc, specify it's path with ` -disc "DISC_PATH_HERE"`. It should be a `.bin` file (`.cue` files are not supported yet)
4. You can see other arguments by running ` -h`. To set boolean arguments, use ` -arg=true` or `-arg=false`
5. You can run tests by running `go test`# Status
Implemented:
- CPU
- DMA
- Timers
- Basic CD-ROM implementation
- Gamepad (still needs testing)
- Interrupts
- GPU (not much)
- GTE (very simple implementation, can display the PlayStation logo)## Images
![Boot animation](/media/bootanim.png)
![BIOS main menu](/media/biosmenu.png)
![BIOS logo](/media/pslogo.png)
# Other
Default keyboard keymappings:
| Gamepad | Keyboard |
| :-------: | :-------------: |
| Start | Backspace |
| Select | Right Shift |
| DPadUp | Arrow Up |
| DPadRight | Arrow Right |
| DPadDown | Arrow Down |
| DPadLeft | Arrow Left |
| L2 | Keypad Divide |
| R2 | Keypad Multiply |
| L1 | Keypad 7 |
| R1 | Keypad 9 |
| Triangle | Keypad 8 |
| Circle | Keypad 6 |
| Cross | Keypad 2 |
| Square | Keypad 4 |You can change them in the `main.go` file, but it would be great to be able to do that from the CLI
# Thanks
Special thanks to [simias](https://github.com/simias) for writing [this amazing guide](https://github.com/simias/psx-guide) to writing a PlayStation emulator, and to the [Nocash PSX spec](https://problemkaputt.de/psx.htm).