PS1 · DexDrive .gme · RetroArch .srm / DuckStation .mcd

JAPS1ME
Just A PS1
Memory Card Editor

A fast Rust CLI for managing PlayStation 1 memory-card saves for RetroArch and DuckStation. Convert whole cards, browse saves, import, delete, copy, and install — with staged, validated writes.

Early development: commands and output may change. Back up your saves before use.

japs1me — get the source
$

GPL-3.0-or-later · Rust · Linux / Debian

Pro Evolution Soccer 2 (Europe).srm — 3 saves
SLOT  SAVE NAME              BLOCKS      SIZE
1     BESLES-03946PES-OPT    2      16.0 KiB
3     BESLES-03946PES-D2A    2      16.0 KiB
5     BESLES-03946PES-D1A    2      16.0 KiB

Free: 9 of 15 slots

Single-game card — .srm / .mcd basename matches the game

v0.2.1 — early development

.gme 134976 B3904 B header + raw card
.srm / .mcd 131072 Bsame raw card, starts with MC
15 slots8192 B blocks, link chains
Shift-JIStitles decoded, XOR-checked

Download

Download the v0.2.1 Linux or Windows x86_64 binary below. Verify its SHA-256 checksum before running.

Linux x86_64

JAPS1ME v0.2.1

JAPS1ME-v0.2.1-Linux-x86_64.tar.gz · 697853 B (681.5 KiB)

Download .tar.gz

SHA-256

a59f866237571f1a464f839d21e51236801926c0619864798baca8dd68aae68c

Verify: sha256sum JAPS1ME-v0.2.1-Linux-x86_64.tar.gz

Windows x86_64

JAPS1ME v0.2.1

JAPS1ME-v0.2.1-Windows-x86_64.zip · 1115592 B (1.1 MiB)

Download .zip

SHA-256

d97c0de7d4dd059d21d59cafb78f19bc97e225d100002b56cbc36b3817e30d26

Verify: certutil -hashfile JAPS1ME-v0.2.1-Windows-x86_64.zip SHA256

New in v0.2.1

DuckStation support for equivalent raw memory-card files.

DuckStation

Copy and install support DuckStation .mcd cards as well as RetroArch .srm; both extensions contain the same raw image.

Automatic detection

The configured path's memcards or duckstation component selects DuckStation; other paths use RetroArch. No emulator prompt.

Cross-extension matching

Matching by game basename lets a workspace .srm source select the corresponding DuckStation .mcd card.

New-card install

install --new creates a card using the configured emulator's naming convention and converts .srm/.mcd names as needed. Multi-disc RetroArch installs remind you to copy and rename for the next disc; DuckStation shares one card between discs.

What it does

Six commands. No GUI, no surprises.

Convert

Validate a DexDrive .gme (including headerless variants) and write its raw 131072-byte payload as .srm. Never overwrites; raw inputs are told to copy instead.

List

Browse .gme and raw .srm cards: slot, save name, Shift-JIS title, region, blocks, payload size, free slots.

Import

Copy one named save from .gme (or a raw card misnamed .gme) into .srm. Duplicate + free-space checks, staged + re-validated replace.

Delete

Delete by slot number or exact save name. Slots reset to formatted with fresh checksums.

Copy

Pull an emulator .srm or .mcd into this workspace for JAPS1ME work. Bare names and prefixes resolve in the saves dir; asks before overwriting.

Install

Install into RetroArch or DuckStation. The configured directory determines .srm versus .mcd; --new creates a convention-named per-game card, while overwrites are backed up.

Safety first

Read-only listing and checksums. Convert refuses to overwrite. Import/delete stage to temp files first.

Commands

Pick a command, copy the example.

List saves and free slots. Accepts .gme and raw images, detected by size + MC signature.

japs1me list save-games/pro-evolution-soccer-2.22507.gme

Convert DexDrive .gme to a raw card image such as RetroArch .srm or DuckStation .mcd. Refuses to overwrite an existing output.

japs1me convert save-games/pro-evolution-soccer-2.22507.gme pes2.srm

Import one save by exact name from .gme (or a raw card misnamed .gme) into .srm. Prompts y/n on duplicates (interactive terminals only).

japs1me import pes2.srm save-games/pro-evolution-soccer-2.22507.gme BESLES-03946PES-OPT

Delete by 1-based slot number or exact save name. .srm targets only.

japs1me delete pes2.srm BESLES-03946PES-OPT

Pull an emulator .srm or .mcd into this workspace for JAPS1ME work. Bare names and prefixes resolve in the configured saves dir; asks y/n before overwriting.

japs1me copy "ISS Pro Evolution (USA).srm" work.srm

Install into the configured RetroArch or DuckStation directory. Path detection selects .srm or .mcd; matching basenames skip the picker. Use --new (or choose n) to create a convention-named card; an existing target is backed up before overwrite.

japs1me install pes2.srm

Safety

  • Back up first. Keep an independent copy of anything irreplaceable. Keep your emulator closed while modifying or installing cards that are in use — editing a separate copy is safe.
  • Convert never overwrites. Delete or rename a previous .srm if you intend to replace it.
  • Import / delete are staged. Updated card is written to a temp file, re-validated, then replaced.
  • Install auto-backs-up. Overwritten card is copied to <card>.<ext>.japs1me-bak first; the extension reflects the emulator card.

Getting Started

Prefer building from source? You need git plus a Rust toolchain with Cargo. Four steps, copy-paste friendly.

  1. Clone the repo
    git clone https://github.com/MARKMENTAL/JAPS1ME
    cd JAPS1ME
  2. Build the release binary
    cargo build --release — binary lands at target/release/japs1me.
  3. Check the version
    target/release/japs1me --version — expect 0.2.1.
  4. List your first card
    target/release/japs1me list save-games/pro-evolution-soccer-2.22507.gme
japs1me — getting started
$ git clone https://github.com/MARKMENTAL/JAPS1ME
$ cd JAPS1ME
$ cargo build --release
$ target/release/japs1me --version

Full usage, checks, and tests in the README on GitHub.

FAQ

list reads .gme + raw. convert takes .gme only. import copies .gme (or raw misnamed .gme) into a raw card. delete edits raw cards. copy pulls .srm or .mcd into the workspace.

RetroArch and DuckStation use one card per game, with .srm and .mcd respectively. JAPS1ME infers the emulator from the configured directory, matches by game basename, and replaces contents in place so the filename stays correct.

MemcardRex is a full GUI editor — per-frame browser, VGS/VMP/MCX support, card formatting, comment editing, hardware support. JAPS1ME is a Linux-first, CLI-driven Rust utility for RetroArch and DuckStation: .gme conversion, save listing, single-save import, delete, copy, and install, with staged, validated writes.

Accepted with a warning — the documented exception. Length, MC signature, and checksums are otherwise strictly validated.

Deliberate. JAPS1ME follows the Unix philosophy: small, composable commands (list, convert, import, delete, copy, install) focused on one task, done well with the least ceremony. Plain-text output pipes and scripts cleanly; a GUI would add bulk without helping the per-game card workflow.

DuckStation support adds .mcd copy/install alongside RetroArch .srm. The configured directory path identifies the emulator and matching uses the game basename across extensions. See New in v0.2.1.