MemCARDuino - Arduino PlayStation 1 Memory Card reader

Start a work log and update it occasionally with your projects progress
soulgriever
Interested PSXDEV User
Interested PSXDEV User
Posts: 5
Joined: Sep 11, 2017

Post by soulgriever » September 29th, 2017, 2:43 am

FINALLY! got it working with my pc last night and am ecstatic. I plan to try it on my raspberry pi tonight

@shendo a few things

1st Thank you for such and amazing project.

2nd I am able to get both aftermarket memory cards to work just fine but the Sony memory card doesn't communicate with the ardruino. Any thoughts? All work with my ps1.

3rd I may have had an older version of memcardrex 1.8 but the MemCARDuino distributed with MCR 1.8 is the version that doesn't work with the newer ardruino SDK. Could you update the zip file. Took me an hour to figure out I had an older version lol.

soulgriever
Interested PSXDEV User
Interested PSXDEV User
Posts: 5
Joined: Sep 11, 2017

Post by soulgriever » September 29th, 2017, 2:57 am

temper999 wrote:A little bit of overkill but I wanted a nicer hardware solution:

Image
Image
Is that a ps1 controller/memory card interface? Also what else it on the board?

bludreid
What is PSXDEV?
What is PSXDEV?
Posts: 1
Joined: Jan 17, 2019

Post by bludreid » January 17th, 2019, 9:16 pm

Hi soulgriever, I'm interested on this project of yours. How was it? Did you get to finish it?

Meta
Active PSXDEV User
Active PSXDEV User
Posts: 38
Joined: Dec 14, 2015

Post by Meta » March 8th, 2021, 7:27 am

Hello:

Where is the program and source code of the project to read the "Memory Card" of PS1 made with Visual C #?

Kind regards.

L10N37
Curious PSXDEV User
Curious PSXDEV User
Posts: 14
Joined: Jun 17, 2021

Post by L10N37 » June 17th, 2021, 9:54 am

To Meta above: On GITHUB - its the first link if you google "memcarduino"

Ok guys - so I am here to basically make sure no one gets frustrated with this project, I appreciate the dev sharing it! A dexdrive is 70AUD at the moment - theres a new one on ebay - an arduino and parts laying around is, well 8 bucks for the Arduino clone free post.

In the end if time is money, I'd have been much better off with the dexdrive - but i finally have a working memcarduino for the cost of 8 bucks and some scraps. Well 15 (23 total) including the 9v USB Step-up cable.

so some points to make since the creator bailed on this:

I calculated the resistor dividers required to make use of resistors I had on hand - by using some in paralell and some in series I was able to get perfect 7.6v and a 3.8v (not sure what happened there! but the calculator showed 3.6). I split this off on the 9v USB cable to a little screw down barrel adapter - godamm it looked neat for what it was. Then came the frustration


The 1.9 version of the memcardrex comes packaged with an old INO file that won't do anything - use the one off github - im sure memcardrex 1.8 works fine too.

Clone arduinos need the CH340 driver and the "old bootloader"
If you use version 1.0.5 to write the INO off Github you won't need to select the "old bootloader" as the new one didn't exist yet.

The volages (I'm not sure how) are not correct

And finally,when he says Pin 13,12,11,10,2 he actually means D13,12,11,10,2 - if you connect via the arduinos Pin numbers, this is wrong.

I have LOTS of memory cards and none worked, genuine ones wouldn't read or write at all - nothing on the progress bar
Aftermarket ones would say they read and write but do nothing after completion.

So what got me suspect was on this thread is he mentions using 5v - but he says in multiple locations to use 3.6v (github, his project page, the PDF he made)

In the end what fixed it is removing the voltage dividers altogether and the power barrell / step up cable

use 5v in place of 7.6v - aftermarkets now work
use 3.3v in place of 3.6v - genuine cards now work

Best of all, you can grab these both straight off the the arduino, i have a double sided taped arduino sitting on top of a removed controller port/ memory card unit that wouldn't work in a PS1 (could have being the motherboard though)

Easy peasy

PS: no disrespect to the dev, this just drove me nuts and people may still be interested in these considering Tonyhax/ how easy it is to give yourself a trillion dollars and unlock everything in a save file using a hex editor. I was sick of using my PS2 to do everything, and having to switch between so many apps (i.e 2tb ULE breaks PS1 memcard compatiblity, launching memory card annihilator form a shortcut in the apps section of OPL makes it open in a different language than english and so on)

commanderfloor
What is PSXDEV?
What is PSXDEV?
Posts: 1
Joined: May 05, 2022

Post by commanderfloor » May 23rd, 2022, 7:27 pm

I've tried to communicate with an Arduino UNO SMD rev3 that uses the ATmega328 and when I send it GETID or GETVER it responds with backward question marks and I've made sure that the baud rate is 38400 and have tried it with multiple pcs some with older versions of the Arduino SDK with various versions of the communication drivers have gone into device manager to set communication rates to 38400 baud have tried all baud rates in the serial monitor have reflashed and verified on these various pcs but the problem persists

User avatar
Shendo
Verified
C Programming Expert
C Programming Expert
Posts: 250
Joined: Mar 21, 2012
I am a: Programmer
Motto: Never settle
PlayStation Model: SCPH-7502
Discord: ShendoXT
Location: Croatia, EU

Post by Shendo » January 12th, 2023, 12:20 pm

I added support for a couple of the boards I had laying around on my table (eg. ESP8266, ESP32, etc..) but probably even more boards are supported as I'm using SPI library now instead of Atmega specific ports.

Check first post for more info.

@L10N37: As you have discovered yourself everything is trial and error. I can test every card that I have and have it work
perfectly and then someone will come and say that it doesn't work for them...

Some third party cards don't even step down voltages for their 5V flash, forcing them to work at 7.6 or in your case 9V if you connected it to 9V. Might be the reason "voltages are not correct". So by connecting 7.6 VCC to 5V you are actually using that flash at proper voltage. Other cards might have a step down to 5V from 7.6V. So connecting those cards to 5v wont work.

Also I'm trying to protect users from frying their cards by telling them to stay away from powering 3.6V line with 5V.
I'm learning too as I go and have been told that voltage dividers are only for reference voltages and not powering stuff as device also has some resistance and the voltage drops way below 3.6V, my bad.

Some official cards as I have found out need stronger pullups to achieve 250Khz but will work if connected to 5V but I would not recommend that in the long run.

While I could instruct users to use external 1K pullups I also value simplicity and would like to use internal pullups (often 10K-50K).

So, I found out if I drop the speed to 125Khz it all works for official cards at 3.3V.
In the end, because I switched to 115200bps for serial transfer, even though SPI clock is half speed v0.6 is now actually faster then previous versions.

Also, some 3rd party cards don't support 125Khz but will happily accept 500Khz, go figure...

So, in the end as I've come to learn as of now for high success rate we should emulate PS1 as close as we can:
Have 1K external pullups on Cmd, Data, Att, Clk and Ack lines and use 7.6V and 3.6V power supplies with 250Khz SPI clock
with artificially introduced delays between commands copied from studying the PS1 BIOS comm sequences.

@commanderfloor: GETID is not ASCII, it's command's name, actual data is "0xA0", check this file for more info.
Dev console: SCPH-7502, FreePSXBoot, CH340 serial cable.

Post Reply

Who is online

Users browsing this forum: No registered users and 2 guests