My PSO saves were stuck on my memory card with no way of getting them onto my PC, since I had none of the original consoles anymore.
Building on https://jamchamb.github.io/2018/12/03/gamecube-memory-card-raspi.html 's work to dump memory card traffic via Raspberry Pi, I wanted to create a simple design that can be easily produced in case anyone else still has any other save games they needed extracted.
- Raspberry Pi Pico with MicroPython installed (https://www.raspberrypi.com/documentation/microcontrollers/micropython.html)
- Memory card
- Appropriate connector/breakout (Auction sites are a great resource, set an alert for "'console' memory card socket" since they tend to come and go) (You can also solder wires directly to the memory card pins in a pinch)
- Jumper wires
Going left to right:
| Pin | Signal | Pin | Signal |
|---|---|---|---|
| 1 | Sense1 | 7 | 5V |
| 2 | CLK | 8 | MOSI |
| 3 | GND | 9 | 3V3 |
| 4 | CS | 10 | INT |
| 5 | 3V3 | 11 | GND |
| 6 | MISO | 12 | Sense2 |
Connect your memory card to the Pico:
| MemoryCard Pin | Pico Pin | Notes |
|---|---|---|
| Sense1 | GND | Card detect1 |
| Int | GP21 | Interrupt |
| DI (MOSI) | GP19 | SPI Data In |
| 5V | VBUS | Power |
| DO (MISO) | GP16 | SPI Data Out |
| 3V3 | 3V3 | Logic power |
| CS | GP17 | Chip Select |
| GND | GND | Ground |
| Clk (SCK) | GP18 | SPI Clock |
| Sense2 | GP20 | Card detect2 |
- Upload
dumper.pyto your Pico using Thonny, VS Code, or your preferred method - Run the script on the Pico
- Insert your memory card into the connector when prompted
- Copy the hex output from the console to an empty text file
The script outputs the complete memory card contents as hex data:
EXI ID: 0x0004
Card ID: 123456789abc01020304
Serial: 123456789abc
Size: 16 MB
========================================
00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff...
Once this hex data is a text file e.g. memcard_dump.hex, run
tr -d '\n' < memcard_dump.hex | xxd -r -p > memcard_dump.raw
to remove any newlines that may have been captured and convert the hex values into a file made of those raw bytes.
This should now be readable as a valid memory card image.




