Saturday, December 22, 2018

Modding my PS1 - Memory card backup (PSX-VX Part 0)

I recently found my old PS1 memory cards and wondered how to retrieve the data on a computer.
This is the first article of a series on the original Playstation.
[Source code can be found here: https://github.com/electrojack/psxvx]

Step 1: Understanding the hardware
A memory card has 8 connections, all of them are linked to the corresponding ones of the controller in the same port.



(Data = grey, Command = purple, etc)

So there is VCC, GND, +7V (vibration).
The Acknowledge port is for the device to send an acknowledgement command after having received a byte.
Then Data (MISO), Command (MOSI), Attention (CS) and Clock (SCK) are standard SPI.

The rest of the info can be read there: https://problemkaputt.de/psx-spx.htm#controllerandmemorycardioports


Step 2: Software
As you can read in the PS1 Bible, talking to the memory card is pretty trivial.
Even better: Shendo created a program to flash to an AVR that talks to memory cards and a Python script that talks to this program.
That's what I used.

I adapted the .ino (C file to use with the Arduino software) program for the ATmega8535 I used for this task.
I also changed the Python script to better take errors into account.
I'll publish these in my PS1 software repo but in the mean time the Shendo's files works perfectly.

Step 3: Making it
I removed the controller/memcard block from the PS1 and soldered wires as in the first image.
MISO, MOSI, CS and SCK were connected to the ATmega8535 as expected, ATT is optional and was left alone and finally it looks like the +7V port can be connected to +3.3V without posing any problems (both with Sony memcards and third party memcards).
I used a Raspberry Pi to control the AVR chip (through RX/TX) but any UART computer would work.

And finally it's quite easy to make it work using the serial port to the chip.

$ python memcarduino.py  -p /dev/serial0 -r memcard.mcr                 
running mcduino check                                                   
passed mcduino check                                                    
Running mcr header check MCDINO                                         
Sending... \xa20001                                                     
Reading 129bytes...                                                     
passed header check                                                     
reading data from memory card...                                        
                                                                        
OK at frame 1/1024  Address:00 00 TimeTaken:0:00:00.225765              
OK at frame 2/1024  Address:00 01 TimeTaken:0:00:00.225847              
OK at frame 3/1024  Address:00 02 TimeTaken:0:00:00.225859              
...                                                                     
OK at frame 1024/1024 Address: 03 FF TimeTaken:0:00:00.225482           
SUCCESS                                                                 

Then you can use your *.mcr files as virtual memory cards in emulators and store them where you want.










1 comment:

  1. Most legitimate locksmiths play bazaar will arrive in a service vehicle. If the locksmith does not arrive in a service vehicle, you should take extra care to ensure that he is not a scam artist. Ask for identification before allowing him to begin.Satta KingThis identification should include a pocket license along with business cards.

    ReplyDelete