A Playstation One (PS1) emulator fully written in Jam
0

Configure Feed

Select the types of activity you want to include in your feed.

Makefile 0.4%
Other 99.6%
133 1 0

Clone this repository

https://git.vm.fail/rapha.land/jamstation https://git.vm.fail/did:plc:3thmiedccsijx24dfxefmsgh
ssh://git@knot1.tangled.sh:2222/rapha.land/jamstation ssh://git@knot1.tangled.sh:2222/did:plc:3thmiedccsijx24dfxefmsgh

For self-hosted knots, clone URLs may differ based on your setup.


README.md

JamStation: PSOne Emulator written in Jam#

A PlayStation 1 emulator written in Jam Programming Language. It uses SDL2 for rendering.

Passes JaCzekanski/ps1-tests.

Kindly reminder that Jam lang is experimental yet.

# LIBRARY_PATH should be where SDL2 is located, in this case is an example in MacOS
LIBRARY_PATH=/opt/homebrew/lib jam -lSDL2 -C opt-level=3 -o jamstation main.jam

# Run: jamstation <BIOS_PATH> [GAME_PATH]
./jamstation /path/to/SCPH1001.BIN "/path/to/Brave Fencer Musashi (USA).cue"

# BIOS only — boots to the PlayStation shell:
./jamstation /path/to/SCPH1001.BIN
  • BIOS_PATH - the PSX BIOS image. The original Sony BIOS (e.g. SCPH1001.BIN) is copyrighted; if you don't own one, the PCSX-Redux OpenBIOS is a free, open-source replacement that boots most software.
  • GAME_PATH - optional, dispatched by extension:
    • .cue / .bin (disc image); the BIOS bootstraps it off the disc. Pass the .cue, not the game folder, its .bin tracks are resolved relative to the cue (multi-track and spaces in the name are fine, so quote paths with spaces).
    • .exe - a PS-X executable, sideloaded after the BIOS boots.

Tested on x86 and macOS arm#

Suikoden 2 running on jamstation

Controls#

PS1 DualShock Controller

Keyboard maps to a digital PSX controller in slot 1:

PSX button Key
D-pad ↑ Up arrow
D-pad ↓ Down arrow
D-pad ← Left arrow
D-pad → Right arrow
╳ Cross Z
◯ Circle X
▢ Square A
△ Triangle S
L1 Q
R1 W
L2 1
R2 2
Start Return
Select Right Shift
Quit Esc

Memory cards#

JamStation emulates a standard 128 KB PlayStation memory card in slot 1, so games save and load exactly as they would on real hardware.

The card is backed by a file named slot1.mcd in the current working directory:

  • On startup it's loaded if present (you'll see Loaded memcard: ./slot1.mcd).
  • On a clean exit: press Esc or close the window, the card is written back, so saves persist across runs.

It's a raw 128 KB image (the common headerless .mcd / .mcr format), so cards are interchangeable with emulators like PCSX-Redux and DuckStation. To start fresh, delete slot1.mcd; a blank card shows up as unformatted, and the BIOS Memory Card manager (or the game) will offer to format it.

References#

License#

JamStation is released under the MIT License.

Disclaimers#

"PlayStation" and "PSX" are registered trademarks of Sony Interactive Entertainment Europe Limited. This project is not affiliated in any way with Sony Interactive Entertainment.