shendoxt / memcardrex Goto Github PK
View Code? Open in Web Editor NEWAdvanced PlayStation 1 Memory Card editor
License: GNU General Public License v3.0
Advanced PlayStation 1 Memory Card editor
License: GNU General Public License v3.0
Hi threre,
Few people had posted on your blog that PocketStation is not compatible with memcardrex.
I did some tries with memcarduino and memcardrex 1.9 and it seems to read PocketStation memory but it's totally unable to write PocketStation rom files on it.
Robson Couto seems to succeed this operation and shares his code on his github.
Maybe someone could implement this on memcardrex in order to write PocketStation *.bin files ?
Perhaps PocketStation rom files have differents extension file name, i'm not familiar with it.
Regards
Used by the PocketStation Emulator on PSVita.
According to memory card format documentation such as https://www.psdevwiki.com/ps3/PS1_Savedata and http://problemkaputt.de/psx-spx.htm#memorycarddataformat the header frame should be 'MC', 125 x 0x00 bytes and a 0x0e checksum byte. Looking at a memory card created with 1.9.2b7a018 it is just 128 x 0x00 bytes.
The multi console emulator BizHawk... for PS1 emu it generates a single memory card file
that has cards for both slot 1 and 2 combined as one file...
Any chance of adding support for reading file combined mc file format..??
Rex can at this point read card 1 of that 2 card file...
POPS starter homebrew app for emulation PS1 games on PS2 utilizes VMC format per game.
MemcardDex already supports read-write operations, but this format is missing in file select dialog. Workaround is to select all files.
Is it possible to add this filetype?
Would it be possible for memcardrex to support the PS3 memory card adapter? There are some other pieces of software that can do it, of course, but they're not nearly as versatile as memcardrex. Then again, maybe formatting a card using the adapter isn't possible?
Anyway, it would be a pretty cool addition to an already awesome utility!
As you may know I started a macOS port of MemcardRex.
Since it's basically a new application (except for the mc handling class and hw interfaces (and those got updates too))
and the new OS, I tried to (had to) do the things a bit differently, more streamlined under the hood.
That introduced a few changes in the way the application works (for the better) so I decided to port things over to the Windows build. The idea is to unify codebases in the end so the porting process for the changes would be easier in the future.
If you checked out the source you would undoubtedly noticed that it's quite a mess (especially the GUI department)
and that a lot of things could have been done way differently and better.
That's because way back in the day (2009.) I was actually learning C# as I was writing the application. Fun fact, first versions of MemcardRex were written using Visual Basic 6, then VB.NET and finally C#.
Changes:
Currently the Windows build is not in an user usable state, most of the save edit menu handling is ripped out in
order to rewrite it. The moment it becomes usable I'll update the repo.
Also, while it may look I got the dark mode down these are weeks of hacking away on WinForm controls, they are just not
dark mode friendly (looking at you listview and tabpage)... I still have to fix some bugs.
I'll use this issue to post updates on the Windows version. Feel free to chime in with your own thoughts.
May you please also post binaries along with source code?
I know it's been years this you worked on this treasure to the community (which we appreciate you dearly for), - if you're up for a bit of a challenge, the crypto on PSV and VMP was fully defeated last year by a team with tools made open source:
https://github.com/dots-tb/vita-mcr2vmp
https://github.com/dots-tb/ps3-psvresigner
https://github.com/PMStanley/PSV-Exporter
The PS community would love to see MemcardRex make a great splash again on fan news sites to kick off 2020!
Cheers Shendo. :)
Hi, I wondered if save games can be date locked?
I'm playing Pebble Beach no Hatou PLUS and restored a save game but it's not been recognised by the game.
If so, how do i get around that? Where is the verification date stored in the save game data?
Using the BIOS built-in SoundScope function to record a macro, and then saving the macro to memory card produces a save file with the product code "BPLAYSTATION" but MemcardRex only shows "LAYSTATION" and the header editor doesn't support editing text longer than 10 characters. Proper behaviour should support displaying and editing text to at least 12 characters instead.
Region also shows up as "0x5042" could probably add an human readable name for the region, either as "World", "None" or "BIOS", but more research should be done to determine if that specific region code is used on all BIOS versions or if any other game or software uses that region code.
Attached is an example MMC with a SoundScope save, produced in SCPH-101 BIOS.
There are no MacOS Versions of this .exe.
https://github.com/ShendoXT/memcardrex/blob/master/MemcardRex/Hardware/PS3MemCardAdaptor.cs#L85
I have a PS3 Memory Card adapter and a PSX memory card. I know the memory card is a PS1 because I can save games on my PSX and see the save blocks in the bios.
When I build and run memcardrex from master, my memory fails to read. I did some debugging and it seems the second byte is 0x02 instead of 0x01. (It's 0x00 when no card is inserted into the adapter)
Per readme instructions my PS3 adapter is using the generic WinUSB driver.
Also if I comment out this check and try to read from the memory card anyways, it doesnt work. This could be a separate issue.
Do you know why I get 0x02? Is there any documentation on the PS3 Memory Card Adapter's protocol?
Instructions for linux says that get mono from upstream to get newer compatibility. But mono has come such a long way that from their website or from the package manager of distros such a new build of mono is included that framework 3.5 is totally depricated.
I successfully managed to build it on fedora just fine using
xbuild /property:TargetFrameworkVersion=v4.0
mono "./MemcardRex/obj/GTKsharp debug/MemcardRex.exe"
I didn't put the program trough a full battery of tests, but I did copy a PS1 save from a PS1 save card to a USB stick using a PS2. Then copy it to the PC and make a PCSXr compatible memorycard inclduing that save and scp it to my PS Classic. And it did work.
I found an old version of MemcardRex with Russian translation. I tried to contact its author, but he does not answer me. Is it possible to add this translation to the latest version of MemcardRex? I can help with translating missing strings.
I have made an important edit at the bottom of this issue log. Please read it in its entirety before responding appropriately.
Hi, I have a couple dozen PS1 save files from my PSP that I'm trying to transfer for use with the Duckstation PS1 emulator. Roughly half have the filename of SCEVMC0 and the remaining save files are named SCEVMC1, so I assume they are for memory card slot 1 and memory card slot 2 respectively. See attached screenshot below for the filenames I am working with.
I'm looking to have all my games share the same 2 memory cards instead of each game using its own memory card, so I want to consolidate all these files into just 2 save files. (EDIT: as explained at the bottom, I now much rather prefer the saves remain separate but all batch converted and inserted into their respective folders, so please ignore this statement)
However, every time I open either the files named SCEVMC0 or the files named SCEVMC1 altogether, I get over 40 tabs opened for every single file. It would be cumbersome and time-consuming to drag and drop each file to the one I want saved.
I would much rather prefer MemcardRex to automatically detect which memory card the files are for, and then automatically combine all the .VMP save files into 1 or 2 .MCD save files, with just a few simple clicks and without requiring any dragging and dropping (EDIT: please ignore this statement). Would that be possible to implement?
EDIT (Dec 13th 2022): I would like to note that the files in the screenshots above were batch extracted by me from individual folders that the PSP made a directory for. For future users of this tool, it might actually be more useful to just batch convert each individual save and output them to their respective folders, as I have learned since that games usually have individual save files for emulation to prevent potential issues. I think it may be possible that Duckstation already searches for saves within these respective folders. Each folder has been named after the game's respective game ID. I will attach more helpful screenshots below to show both what the directory looks like as a whole, and what can be expected to be found inside each folder.
(This might not even be related to MemcardRex, but in the rare case that it is, I leave it here for posterity sake)
Background info: I have been using latest MemcardRex on my Win 11 PC to transfer savedata and PocketStation apps to my PocketStation via PS3 Memorycard Adapter, and everything has been working great. No problems whatsoever.
Prologue: The japanese version of Crash Bandicoot 3 has a PocketStation companion app called Crash Anywhere. You can "install" the app to your PocketStation via a settings menu within the Crash 3 game. Crash Anywhere app has 3 different minigames, and a feature, which allows the player to take "snapshots" of funny in-game moments, that are then saved as little 32 x 32 pixelart images to your in-game gallery. Pretty advanced, huh. When for example the player finishes a dance minigame, they earn a picture to their gallery.
Issue TL;DR: a PocketStation application transferred through MemcardRex is missing an in-game "photo" feature; possibly because a triggered anti-piracy method? When same application is transferred through an actual PS1, the said feature is present.
The issue in-depth: If the user has a real PS1 console and a copy of japanese Crash 3 (burned copy or a real one), and plugs in the PocketStation to their PS1, player is able to succesfully install the companion app to the PocketStation via in-game menus. When the user takes PocketStation out and plays the Crash Anywhere app, it works as expected and user is able to gather in-game "pixel photos" through gameplay. However, if the user instead uses emulator on their PC to emulate the japanese Crash 3 game, with DuckStation as an example, and creates a virtual .mcb-file that has the Crash Anywhere app inside, the user can then transfer the .mcb file to their PocketStation by using latest MemcardRex. The transfer finishes succesfully, and the user is able to play the Crash Anywhere app on their PocketStation, but there is a curious issue now: the events that are supposed to be triggered in game that allows user to take "photos" of said events, does no longer work. Everything else is in place. Only the "photo-feature", that appears after completing minigames etc is gone, and user can't complete the game via collecting these "digital pixel photos". Even if the user uses the same Crash 3 BIN/CUE-imagefile for emulation (the same that has been burned to disc and tried on an actual PS1), doesn't make the PocketStation app work properly.
So my hypothesis is, that there is something missing when transferring the crash 3 .mcb file to PocketStation with MemcardRex. Maybe it's a weird software glitch on MCR's part, or maybe it's some sort of rudimentary copy protection mechanism made by the game studio. Maybe there's a function written inside that can detect the way the files are written on the device, and if something is a miss, the game functions become limited. There were some copy protection methods created by PS1 devs for certain games, so it is not completely out of the question to think that there might be something similar going on here.
Has anyone else ran into similar weird issues with any other PocketStation app?
the standard psx emulator of retropie is lr-pcsx-rearmed, as you can see here:
https://retropie.org.uk/docs/Playstation-1/
this emulator uses .mcr files, but the files instead get the ".srm"-extension.
srm means eventually "Super Nintendo ROM Save File", but not in this context,
.srm files of this emulator are successfully loaded by the application.
So, can we add the extension .srm as "lrpcsx-readmed mcr-File" to the filter list of the file open dialog? would be a nice simple addition
I'm working on adding the communication with a bridged serial port over TCP/IP.
I have successfully attached a ESP8266 board to the TX and RX lines on my PSOne. The ESP8266 runs the software "esp-link" which, among many other features that are of no interested for that purpose, creates a serial bridge i.e. a client application can open a raw socket to the dedicated port and read/write from the serial port.
The first tests are promising (it works :-) ) and the development branch is currently there, I still need to implement the GUI part to setup the address and the port.
https://github.com/lmiori92/memcardrex/tree/support-for-esp-link-wifi-serial-bridge
Note: the implementation is really basic, a better design would be to split the communication-specific code in several classes with a common interface. But I don't think it's really necessary, let's see.
You cant export single saves to psv instead (right now) you have to get a mcs file of each one and put it in some converter one at a time. So if you just add like a "Save files as PSV in Zip file" then i think it would be better.
When I try to send GT2 saves to my Memory Card through Memcarduino, the data on the card will not be accepted by the game. Apparently, it gets corrupted in the process. Is it because these saves take more than a block? I hope this can be fixed. Thanks.
Hi, can i use PS2 MC readers like
https://www.amazon.es/Logic-ps2-ps3-Memory-Card-Adapter-Adaptador/dp/B000RMRNSI
and
https://www.amazon.com.au/PS2-Memory-Card-Data-Transfer/dp/B00107LDT4
with memcardrex?
greetings
I'm using Pop!_OS (Ubuntu) 21.04 / hirsute. I've installed mono-devel
from the official website, following the instructions for Ubuntu 20.04 / focal. (Using the outdated packages in Ubuntu's default repos resulted in more errors.)
When running xbuild /property:TargetFrameworkVersion=v4.0
, I get the following errors:
[stratosphere:~/Downloads/PSX/memcardrex] unilock$ xbuild /property:TargetFrameworkVersion=v4.0
>>>> xbuild tool is deprecated and will be removed in future updates, use msbuild instead <<<<
XBuild Engine Version 14.0
Mono, Version 6.12.0.122
Copyright (C) 2005-2013 Various Mono authors
Build started 11/1/2021 2:14:29 PM.
__________________________________________________
/home/unilock/Downloads/PSX/memcardrex/MemcardRex.sln: warning : Don't know how to handle GlobalSection ExtensibilityGlobals, Ignoring.
Project "/home/unilock/Downloads/PSX/memcardrex/MemcardRex.sln" (default target(s)):
Target ValidateSolutionConfiguration:
Building solution configuration "Debug|Any CPU".
Target Build:
Project "/home/unilock/Downloads/PSX/memcardrex/MemcardRex/MemcardRex.csproj" (default target(s)):
Target PrepareForBuild:
Configuration: Debug Platform: AnyCPU
Target ResolveAssemblyReferences:
/usr/lib/mono/xbuild/14.0/bin/Microsoft.Common.targets: warning : Reference 'LibUsbDotNet.LibUsbDotNet, Version=2.2.0.0, Culture=neutral, PublicKeyToken=c677239abe1e02a9, processorArchitecture=MSIL' not resolved
For searchpath {CandidateAssemblyFiles}
Warning: {CandidateAssemblyFiles} not supported currently
For searchpath {HintPathFromItem}
Considered ../packages/LibUsbDotNet.2.2.29/lib/net45/LibUsbDotNet.LibUsbDotNet.dll, but it does not exist.
For searchpath {TargetFrameworkDirectory}
Considered target framework dir /usr/lib/mono/4.0-api/, assembly named 'LibUsbDotNet.LibUsbDotNet' not found.
For searchpath {PkgConfig}
Considered LibUsbDotNet.LibUsbDotNet, Version=2.2.0.0, Culture=neutral, PublicKeyToken=c677239abe1e02a9, processorArchitecture=MSIL, but could not find in any pkg-config files.
For searchpath {GAC}
Considered LibUsbDotNet.LibUsbDotNet, Version=2.2.0.0, Culture=neutral, PublicKeyToken=c677239abe1e02a9, processorArchitecture=MSIL, but could not find in the GAC.
For searchpath {RawFileName}
Considered 'LibUsbDotNet.LibUsbDotNet, Version=2.2.0.0, Culture=neutral, PublicKeyToken=c677239abe1e02a9, processorArchitecture=MSIL' as a file, but the file does not exist
For searchpath bin/Debug/
Considered '/home/unilock/Downloads/PSX/memcardrex/MemcardRex/bin/Debug/LibUsbDotNet.LibUsbDotNet' as a file, but the file does not exist
Considered '/home/unilock/Downloads/PSX/memcardrex/MemcardRex/bin/Debug/LibUsbDotNet.LibUsbDotNet.exe' as a file, but the file does not exist
Considered '/home/unilock/Downloads/PSX/memcardrex/MemcardRex/bin/Debug/LibUsbDotNet.LibUsbDotNet.dll' as a file, but the file does not exist
Target GenerateSatelliteAssemblies:
No input files were specified for target GenerateSatelliteAssemblies, skipping.
Target _GenerateTargetFrameworkMonikerAttribute:
Skipping target "_GenerateTargetFrameworkMonikerAttribute" because its outputs are up-to-date.
Target CoreCompile:
Tool /usr/lib/mono/4.5/csc.exe execution started with arguments: /noconfig /debug:full /debug:portable /optimize- /out:obj/Debug/MemcardRex.exe /resource:obj/Debug/MemcardRex.AboutWindow.resources /resource:obj/Debug/MemcardRex.commentsWindow.resources /resource:obj/Debug/MemcardRex.compareWindow.resources /resource:obj/Debug/MemcardRex.cardReaderWindow.resources /resource:obj/Debug/MemcardRex.headerWindow.resources /resource:obj/Debug/MemcardRex.iconWindow.resources /resource:obj/Debug/MemcardRex.informationWindow.resources /resource:obj/Debug/MemcardRex.mainWindow.resources /resource:obj/Debug/MemcardRex.pluginsWindow.resources /resource:obj/Debug/MemcardRex.preferencesWindow.resources /resource:obj/Debug/MemcardRex.Properties.Resources.resources GUI/aboutWindow.cs GUI/aboutWindow.Designer.cs Hardware/CardLink.cs GUI/commentsWindow.cs GUI/commentsWindow.Designer.cs GUI/compareWindow.cs GUI/compareWindow.Designer.cs Hardware/DexDrive.cs GUI/cardReaderWindow.cs GUI/cardReaderWindow.designer.cs Extras/glassSupport.cs GUI/headerWindow.cs GUI/headerWindow.Designer.cs GUI/iconWindow.cs GUI/iconWindow.Designer.cs GUI/informationWindow.cs GUI/informationWindow.Designer.cs GUI/mainWindow.cs GUI/mainWindow.Designer.cs Hardware/MemCARDduino.cs GUI/pluginsWindow.cs GUI/pluginsWindow.Designer.cs GUI/preferencesWindow.cs GUI/preferencesWindow.Designer.cs Hardware/PS3MemCardAdaptor.cs Program.cs Properties/AssemblyInfo.cs Properties/Resources.Designer.cs xmlSettingsEditor.cs Properties/Settings.Designer.cs ps1card.cs rexPluginSystem.cs obj/Debug/.NETFramework,Version=v4.0.AssemblyAttribute.cs /target:winexe /win32icon:Resources/memcardrex.ico /define:"DEBUG;TRACE" /main:MemcardRex.Program /nostdlib /reference:/usr/lib/mono/4.0-api/Microsoft.CSharp.dll /reference:/usr/lib/mono/4.0-api/System.dll /reference:/usr/lib/mono/4.0-api/System.Data.dll /reference:/usr/lib/mono/gac/System.Deployment/4.0.0.0__b03f5f7f11d50a3a/System.Deployment.dll /reference:/usr/lib/mono/4.0-api/System.Drawing.dll /reference:/usr/lib/mono/4.0-api/System.Windows.Forms.dll /reference:/usr/lib/mono/4.0-api/System.Xml.dll /reference:/usr/lib/mono/4.0-api/System.Core.dll /reference:/usr/lib/mono/4.0-api//mscorlib.dll /warn:4
Microsoft (R) Visual C# Compiler version 3.6.0-4.20224.5 (ec77c100)
Copyright (C) Microsoft Corporation. All rights reserved.
Hardware/PS3MemCardAdaptor.cs(5,7): error CS0246: The type or namespace name 'LibUsbDotNet' could not be found (are you missing a using directive or an assembly reference?)
Hardware/PS3MemCardAdaptor.cs(6,7): error CS0246: The type or namespace name 'LibUsbDotNet' could not be found (are you missing a using directive or an assembly reference?)
Hardware/PS3MemCardAdaptor.cs(39,16): error CS0246: The type or namespace name 'ErrorCode' could not be found (are you missing a using directive or an assembly reference?)
Hardware/PS3MemCardAdaptor.cs(29,33): error CS0246: The type or namespace name 'UsbDeviceFinder' could not be found (are you missing a using directive or an assembly reference?)
Hardware/PS3MemCardAdaptor.cs(31,17): error CS0246: The type or namespace name 'UsbDevice' could not be found (are you missing a using directive or an assembly reference?)
Hardware/PS3MemCardAdaptor.cs(32,17): error CS0246: The type or namespace name 'UsbEndpointReader' could not be found (are you missing a using directive or an assembly reference?)
Hardware/PS3MemCardAdaptor.cs(33,17): error CS0246: The type or namespace name 'UsbEndpointWriter' could not be found (are you missing a using directive or an assembly reference?)
Task "Csc" execution -- FAILED
Done building target "CoreCompile" in project "/home/unilock/Downloads/PSX/memcardrex/MemcardRex/MemcardRex.csproj".-- FAILED
Done building project "/home/unilock/Downloads/PSX/memcardrex/MemcardRex/MemcardRex.csproj".-- FAILED
Task "MSBuild" execution -- FAILED
Done building target "Build" in project "/home/unilock/Downloads/PSX/memcardrex/MemcardRex.sln".-- FAILED
Done building project "/home/unilock/Downloads/PSX/memcardrex/MemcardRex.sln".-- FAILED
Build FAILED.
Warnings:
/home/unilock/Downloads/PSX/memcardrex/MemcardRex.sln: warning : Don't know how to handle GlobalSection ExtensibilityGlobals, Ignoring.
/home/unilock/Downloads/PSX/memcardrex/MemcardRex.sln (default targets) ->
(Build target) ->
/home/unilock/Downloads/PSX/memcardrex/MemcardRex/MemcardRex.csproj (default targets) ->
/usr/lib/mono/xbuild/14.0/bin/Microsoft.Common.targets (ResolveAssemblyReferences target) ->
/usr/lib/mono/xbuild/14.0/bin/Microsoft.Common.targets: warning : Reference 'LibUsbDotNet.LibUsbDotNet, Version=2.2.0.0, Culture=neutral, PublicKeyToken=c677239abe1e02a9, processorArchitecture=MSIL' not resolved
Errors:
/home/unilock/Downloads/PSX/memcardrex/MemcardRex.sln (default targets) ->
(Build target) ->
/home/unilock/Downloads/PSX/memcardrex/MemcardRex/MemcardRex.csproj (default targets) ->
/usr/lib/mono/xbuild/14.0/bin/Microsoft.CSharp.targets (CoreCompile target) ->
Hardware/PS3MemCardAdaptor.cs(5,7): error CS0246: The type or namespace name 'LibUsbDotNet' could not be found (are you missing a using directive or an assembly reference?)
Hardware/PS3MemCardAdaptor.cs(6,7): error CS0246: The type or namespace name 'LibUsbDotNet' could not be found (are you missing a using directive or an assembly reference?)
Hardware/PS3MemCardAdaptor.cs(39,16): error CS0246: The type or namespace name 'ErrorCode' could not be found (are you missing a using directive or an assembly reference?)
Hardware/PS3MemCardAdaptor.cs(29,33): error CS0246: The type or namespace name 'UsbDeviceFinder' could not be found (are you missing a using directive or an assembly reference?)
Hardware/PS3MemCardAdaptor.cs(31,17): error CS0246: The type or namespace name 'UsbDevice' could not be found (are you missing a using directive or an assembly reference?)
Hardware/PS3MemCardAdaptor.cs(32,17): error CS0246: The type or namespace name 'UsbEndpointReader' could not be found (are you missing a using directive or an assembly reference?)
Hardware/PS3MemCardAdaptor.cs(33,17): error CS0246: The type or namespace name 'UsbEndpointWriter' could not be found (are you missing a using directive or an assembly reference?)
2 Warning(s)
7 Error(s)
Time Elapsed 00:00:00.8315000
Here's what msbuild
reports:
[stratosphere:~/Downloads/PSX/memcardrex] unilock$ msbuild /property:TargetFrameworkVersion=v4.0
Microsoft (R) Build Engine version 16.6.0 for Mono
Copyright (C) Microsoft Corporation. All rights reserved.
Building the projects in this solution one at a time. To enable parallel build, please add the "-m" switch.
Build started 11/1/2021 2:18:46 PM.
Project "/home/unilock/Downloads/PSX/memcardrex/MemcardRex.sln" on node 1 (default targets).
ValidateSolutionConfiguration:
Building solution configuration "Debug|Any CPU".
Project "/home/unilock/Downloads/PSX/memcardrex/MemcardRex.sln" (1) is building "/home/unilock/Downloads/PSX/memcardrex/MemcardRex/MemcardRex.csproj" (2) on node 1 (default targets).
ResolveAssemblyReferences:
Primary reference "LibUsbDotNet.LibUsbDotNet, Version=2.2.0.0, Culture=neutral, PublicKeyToken=c677239abe1e02a9, processorArchitecture=MSIL".
/usr/lib/mono/msbuild/Current/bin/Microsoft.Common.CurrentVersion.targets(2101,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "LibUsbDotNet.LibUsbDotNet, Version=2.2.0.0, Culture=neutral, PublicKeyToken=c677239abe1e02a9, processorArchitecture=MSIL". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. [/home/unilock/Downloads/PSX/memcardrex/MemcardRex/MemcardRex.csproj]
For SearchPath "{HintPathFromItem}".
Considered "/home/unilock/Downloads/PSX/memcardrex/packages/LibUsbDotNet.2.2.29/lib/net45/LibUsbDotNet.LibUsbDotNet.dll", but it didn't exist.
For SearchPath "{TargetFrameworkDirectory}".
Considered "/usr/lib/mono/xbuild-frameworks/.NETFramework/v4.0/LibUsbDotNet.LibUsbDotNet.winmd", but it didn't exist.
Considered "/usr/lib/mono/xbuild-frameworks/.NETFramework/v4.0/LibUsbDotNet.LibUsbDotNet.dll", but it didn't exist.
Considered "/usr/lib/mono/xbuild-frameworks/.NETFramework/v4.0/LibUsbDotNet.LibUsbDotNet.exe", but it didn't exist.
Considered "/usr/lib/mono/4.0-api/LibUsbDotNet.LibUsbDotNet.winmd", but it didn't exist.
Considered "/usr/lib/mono/4.0-api/LibUsbDotNet.LibUsbDotNet.dll", but it didn't exist.
Considered "/usr/lib/mono/4.0-api/LibUsbDotNet.LibUsbDotNet.exe", but it didn't exist.
For SearchPath "{GAC}".
Considered "LibUsbDotNet.LibUsbDotNet, Version=2.2.0.0, Culture=neutral, PublicKeyToken=c677239abe1e02a9, processorArchitecture=MSIL", which was not found in the GAC.
For SearchPath "{RawFileName}".
Considered treating "LibUsbDotNet.LibUsbDotNet, Version=2.2.0.0, Culture=neutral, PublicKeyToken=c677239abe1e02a9, processorArchitecture=MSIL" as a file name, but it didn't exist.
For SearchPath "bin/Debug/".
Considered "bin/Debug/LibUsbDotNet.LibUsbDotNet.winmd", but it didn't exist.
Considered "bin/Debug/LibUsbDotNet.LibUsbDotNet.dll", but it didn't exist.
Considered "bin/Debug/LibUsbDotNet.LibUsbDotNet.exe", but it didn't exist.
CoreResGen:
No resources are out of date with respect to their source files. Skipping resource generation.
CoreCompile:
/usr/lib/mono/msbuild/Current/bin/Roslyn/csc.exe /noconfig /nowarn:1701,1702 /nostdlib+ /errorreport:prompt /warn:4 /define:DEBUG;TRACE /main:MemcardRex.Program /highentropyva- /reference:/usr/lib/mono/4.0-api/Microsoft.CSharp.dll /reference:/usr/lib/mono/4.0-api/mscorlib.dll /reference:/usr/lib/mono/4.0-api/System.Core.dll /reference:/usr/lib/mono/4.0-api/System.Data.dll /reference:/usr/lib/mono/gac/System.Deployment/4.0.0.0__b03f5f7f11d50a3a/System.Deployment.dll /reference:/usr/lib/mono/4.0-api/System.dll /reference:/usr/lib/mono/4.0-api/System.Drawing.dll /reference:/usr/lib/mono/4.0-api/System.Windows.Forms.dll /reference:/usr/lib/mono/4.0-api/System.Xml.dll /debug+ /debug:full /filealign:512 /optimize- /out:obj/Debug/MemcardRex.exe /resource:obj/Debug/MemcardRex.AboutWindow.resources /resource:obj/Debug/MemcardRex.commentsWindow.resources /resource:obj/Debug/MemcardRex.compareWindow.resources /resource:obj/Debug/MemcardRex.cardReaderWindow.resources /resource:obj/Debug/MemcardRex.headerWindow.resources /resource:obj/Debug/MemcardRex.iconWindow.resources /resource:obj/Debug/MemcardRex.informationWindow.resources /resource:obj/Debug/MemcardRex.mainWindow.resources /resource:obj/Debug/MemcardRex.pluginsWindow.resources /resource:obj/Debug/MemcardRex.preferencesWindow.resources /resource:obj/Debug/MemcardRex.Properties.Resources.resources /target:winexe /utf8output /win32icon:Resources/memcardrex.ico /win32manifest:app.manifest /langversion:7.3 GUI/aboutWindow.cs GUI/aboutWindow.Designer.cs Hardware/CardLink.cs GUI/commentsWindow.cs GUI/commentsWindow.Designer.cs GUI/compareWindow.cs GUI/compareWindow.Designer.cs Hardware/DexDrive.cs GUI/cardReaderWindow.cs GUI/cardReaderWindow.designer.cs Extras/glassSupport.cs GUI/headerWindow.cs GUI/headerWindow.Designer.cs GUI/iconWindow.cs GUI/iconWindow.Designer.cs GUI/informationWindow.cs GUI/informationWindow.Designer.cs GUI/mainWindow.cs GUI/mainWindow.Designer.cs Hardware/MemCARDduino.cs GUI/pluginsWindow.cs GUI/pluginsWindow.Designer.cs GUI/preferencesWindow.cs GUI/preferencesWindow.Designer.cs Hardware/PS3MemCardAdaptor.cs Program.cs Properties/AssemblyInfo.cs Properties/Resources.Designer.cs xmlSettingsEditor.cs Properties/Settings.Designer.cs ps1card.cs rexPluginSystem.cs "obj/Debug/.NETFramework,Version=v4.0.AssemblyAttributes.cs"
Using shared compilation with compiler from directory: /usr/lib/mono/msbuild/Current/bin/Roslyn
Hardware/PS3MemCardAdaptor.cs(5,7): error CS0246: The type or namespace name 'LibUsbDotNet' could not be found (are you missing a using directive or an assembly reference?) [/home/unilock/Downloads/PSX/memcardrex/MemcardRex/MemcardRex.csproj]
Hardware/PS3MemCardAdaptor.cs(6,7): error CS0246: The type or namespace name 'LibUsbDotNet' could not be found (are you missing a using directive or an assembly reference?) [/home/unilock/Downloads/PSX/memcardrex/MemcardRex/MemcardRex.csproj]
Hardware/PS3MemCardAdaptor.cs(39,16): error CS0246: The type or namespace name 'ErrorCode' could not be found (are you missing a using directive or an assembly reference?) [/home/unilock/Downloads/PSX/memcardrex/MemcardRex/MemcardRex.csproj]
Hardware/PS3MemCardAdaptor.cs(29,33): error CS0246: The type or namespace name 'UsbDeviceFinder' could not be found (are you missing a using directive or an assembly reference?) [/home/unilock/Downloads/PSX/memcardrex/MemcardRex/MemcardRex.csproj]
Hardware/PS3MemCardAdaptor.cs(31,17): error CS0246: The type or namespace name 'UsbDevice' could not be found (are you missing a using directive or an assembly reference?) [/home/unilock/Downloads/PSX/memcardrex/MemcardRex/MemcardRex.csproj]
Hardware/PS3MemCardAdaptor.cs(32,17): error CS0246: The type or namespace name 'UsbEndpointReader' could not be found (are you missing a using directive or an assembly reference?) [/home/unilock/Downloads/PSX/memcardrex/MemcardRex/MemcardRex.csproj]
Hardware/PS3MemCardAdaptor.cs(33,17): error CS0246: The type or namespace name 'UsbEndpointWriter' could not be found (are you missing a using directive or an assembly reference?) [/home/unilock/Downloads/PSX/memcardrex/MemcardRex/MemcardRex.csproj]
Done Building Project "/home/unilock/Downloads/PSX/memcardrex/MemcardRex/MemcardRex.csproj" (default targets) -- FAILED.
Done Building Project "/home/unilock/Downloads/PSX/memcardrex/MemcardRex.sln" (default targets) -- FAILED.
Build FAILED.
"/home/unilock/Downloads/PSX/memcardrex/MemcardRex.sln" (default target) (1) ->
"/home/unilock/Downloads/PSX/memcardrex/MemcardRex/MemcardRex.csproj" (default target) (2) ->
(ResolveAssemblyReferences target) ->
/usr/lib/mono/msbuild/Current/bin/Microsoft.Common.CurrentVersion.targets(2101,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "LibUsbDotNet.LibUsbDotNet, Version=2.2.0.0, Culture=neutral, PublicKeyToken=c677239abe1e02a9, processorArchitecture=MSIL". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. [/home/unilock/Downloads/PSX/memcardrex/MemcardRex/MemcardRex.csproj]
"/home/unilock/Downloads/PSX/memcardrex/MemcardRex.sln" (default target) (1) ->
"/home/unilock/Downloads/PSX/memcardrex/MemcardRex/MemcardRex.csproj" (default target) (2) ->
(CoreCompile target) ->
Hardware/PS3MemCardAdaptor.cs(5,7): error CS0246: The type or namespace name 'LibUsbDotNet' could not be found (are you missing a using directive or an assembly reference?) [/home/unilock/Downloads/PSX/memcardrex/MemcardRex/MemcardRex.csproj]
Hardware/PS3MemCardAdaptor.cs(6,7): error CS0246: The type or namespace name 'LibUsbDotNet' could not be found (are you missing a using directive or an assembly reference?) [/home/unilock/Downloads/PSX/memcardrex/MemcardRex/MemcardRex.csproj]
Hardware/PS3MemCardAdaptor.cs(39,16): error CS0246: The type or namespace name 'ErrorCode' could not be found (are you missing a using directive or an assembly reference?) [/home/unilock/Downloads/PSX/memcardrex/MemcardRex/MemcardRex.csproj]
Hardware/PS3MemCardAdaptor.cs(29,33): error CS0246: The type or namespace name 'UsbDeviceFinder' could not be found (are you missing a using directive or an assembly reference?) [/home/unilock/Downloads/PSX/memcardrex/MemcardRex/MemcardRex.csproj]
Hardware/PS3MemCardAdaptor.cs(31,17): error CS0246: The type or namespace name 'UsbDevice' could not be found (are you missing a using directive or an assembly reference?) [/home/unilock/Downloads/PSX/memcardrex/MemcardRex/MemcardRex.csproj]
Hardware/PS3MemCardAdaptor.cs(32,17): error CS0246: The type or namespace name 'UsbEndpointReader' could not be found (are you missing a using directive or an assembly reference?) [/home/unilock/Downloads/PSX/memcardrex/MemcardRex/MemcardRex.csproj]
Hardware/PS3MemCardAdaptor.cs(33,17): error CS0246: The type or namespace name 'UsbEndpointWriter' could not be found (are you missing a using directive or an assembly reference?) [/home/unilock/Downloads/PSX/memcardrex/MemcardRex/MemcardRex.csproj]
1 Warning(s)
7 Error(s)
Time Elapsed 00:00:01.19
Installing libusb-1.0-0-dev
did not help.
I fixed this by downloading the LibUsbDotNet NuGet package and extracting the contained lib
folder to <root of repository>/packages/LibUsbDotNet.2.2.29
. But I'm not sure how to fix this in a more sane manner.
BTW, to run on Linux, you have to run mono <root of repository>/MemcardRex/bin/Debug/MemcardRex.exe
.
Also, selecting the "Quit" button from within MemcardRex freezes the program. You then have to CTRL+C Mono. I guess one should only use the window's "X" button.
This seems like a great bit of software, but I have no idea how to open it.
Hello. I'm looking to make a plugin for editing a save. I see Plugin interface.cs
in the Plugins
folder but I think it would be beneficial to have some source code as a guide/reference?
Thanks, Kevin
I'm finding success porting this game to Windows/PlayStation VR. But I have save games that I want to use with emulators/mcr. I think this tool could be more user-friendly, but in this case (attached) it seems not to be possible to add a save game from one file to another, that already has 2 saves from the same game...
I did copy pasted (with format step) and renamed the ID to 3. Still, in the emulator, only the last/added save is detected.
No offense, but it would be good if there were simply two panels, for 2 cards, and moving saves between them works like the PlayStation's utility. I was able to use MemCardRex to get the save off of a PS3 reader, and I'm grateful for that. But how can I use it for this? Thanks :)
EDITED: For background the RetroArch emulator in both memory card modes (one is emulated by the PlayStation module) seems to modify the MCR file when it runs (it doesn't have to be saved to) so to remove the save games that it doesn't display in the game, suggesting that it doesn't understand the MCR file saved by MemCardRex.
Why is .NET Framework exactly needed in a program for editing 128KiB flash cards?
A significant number of DexDrive formatted memory card images (.GME) hosted on GameFaqs seem to have a completely zeroed header, this makes them fail to load, since openMemoryCard function assumes the header to start with "123-456-STD".
I don't know how these files come to be, but considering these seem to be uploaded by many different users, it's probably an emulator or clone dumping device not adhering completely to the DexDrive format.
A secondary fallback logic to handle such files could be to check if the file extension is GME and the card size is exactly 134976 bytes, then just start from the typical 3904 offset like the regular logic used now.
Shouldn't affect the other formats, since there's none of them with non-standard headers of this size.
Example files:
https://gamefaqs.gamespot.com/ps/582940-pro-evolution-soccer-2/saves/22507
https://gamefaqs.gamespot.com/ps/197765-the-legend-of-dragoon/saves/19636
https://gamefaqs.gamespot.com/ps/197765-the-legend-of-dragoon/saves/15054
https://gamefaqs.gamespot.com/ps/913684-digimon-world/saves/21133
https://gamefaqs.gamespot.com/ps/196885-castlevania-symphony-of-the-night/saves/26785
https://gamefaqs.gamespot.com/ps/258931-mega-man-x5/saves/26811
https://gamefaqs.gamespot.com/ps/198763-star-ocean-the-second-story/saves/8738
https://gamefaqs.gamespot.com/ps/480705-saiyuki-journey-west/saves/21061
https://gamefaqs.gamespot.com/ps/480705-saiyuki-journey-west/saves/19395
This last one seems to be a little different, the header has been filled with strange data from the user system, however, if skipping the DexDrive header like the rest, the save data seems to be fine and load:
https://gamefaqs.gamespot.com/ps/198266-parasite-eve-ii/saves/7743
This can be reproduced by exporting to a path like C:\Users\[username]\Downloads\MemcardRex.1.9.cd98032\BASLUS-006640
with BASLUS-006640
being the file name of the RAW single save.
You will instead wind up with a RAW single save called MemcardRex
under C:\Users\[username]\Downloads
This is also seen when exporting a RAW single save where the save file identifier includes a .
like in Tales of Phantasia
Exporting this save as a RAW single save attempts to name the file as BISLPSP01770.TOP.C
(on 1.9.2b7a018 at least. There's a different issue on 1.9.cd98032 when you go to export where it replaces the identifier with a seemingly random string of characters). Instead, you wind up with a file called BISLPSP01770
Hi, I recently copied all my PS1 saves from memory cards using wlaunchelf on my PS2. To make them more useable, I created .mcr files with memcardrex and started importing the saves. All my saves worked except the one attached, which shows the error:
"File could not be opened"
Did that save become corrupted?
BASLUS-00561.zip
Okay, I read my memory card with the PS3 MC Adapter, saved it as an ePSXe card, exported all the saves as a their own files just in case, then closed the card to make a new one for each game. I created a new card and imported my Parasite Eve 2 saves, then saved the card as a PCSX ReARMed/RetroArch file with the ".srm" extension, which just happens to be my initials, as well. I then closed the card, and tried to re-open it. Only to get this error:
'Parasite Eve 2' is not a supported Memory Card format.
Okay... Just to be sure it's not an issue with the program, I open up a RetroArch save. Yep, it loads in fine. Alright, create a new card, import saves, save as an ePCXe ".mcr" file. Close it, and try to open it. Same error:
'Parasite Eve 2' is not a supported Memory Card format.
The only one that opens is the original scan I saved. I've no idea where I've messed up...
I was wondering if there's any way the MCR can analyse the checksum on a save game slot?
I am playing Kero Kero King (JP PS1) and the save game was corrupted, partly zeroed out and even though i have recovered the missing bits the checksum is now incorrect. So I either have to restart or figure out how to calc the checksum?
The icons of savegames can have transparency. This is for example the case with the icons for Spyro games. The transparency effect can be seen in the memory card manager in the BIOS. More information can be found in the Noca$h documentation: http://problemkaputt.de/psx-spx.htm#memorycarddataformat
It says:
Icon Frame(s) (Block 1..15, Frame 1..3) (in first block of file only)
00h-7Fh Icon Bitmap (16x16 pixels, 4bit color depth)
Note: The icons are shown in the BIOS bootmenu (which appears when starting the PlayStation without a CDROM inserted). The icons are drawn via GP0(2Ch) command, ie. as Textured four-point polygon, opaque, with texture-blending, whereas the 24bit blending color is 808080h (so it's quite the same as raw texture without blending). As semi-transparency is disabled, Palette/CLUT values can be 0000h=FullyTransparent, or 8000h=SolidBlack (the icons are usually shown on a black background, so it doesn't make much of a difference).
I am not 100% sure what this means, but it seems that a palette color that is 0x0000 is transparent while 0x8000 is black. For other colors, the MSB does not seem to matter. Memcardrex should support this kind of transparency.
Note that I'm not sure why it says the icons are usually shown on a black background - in my BIOS, the background is bluish:
I'm guessing something's wrong with Fedora and Mono, because I was able to run MemcardRex in OpenSUSE last I checked.
I followed the instructions on mono-project.com to install the latest stable Mono per MONO.md
[arashi@control-bureau MemcardRex 1.9.cd98032]$ mono --version
Mono JIT compiler version 6.12.0.107 (tarball Wed Dec 9 21:44:58 UTC 2020)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
TLS: __thread
SIGSEGV: altstack
Notifications: epoll
Architecture: amd64
Disabled: none
Misc: softdebug
Interpreter: yes
LLVM: yes(610)
Suspend: hybrid
GC: sgen (concurrent by default)
When running mono MemcardRex.exe
with the latest release, I get this error log:
[arashi@control-bureau MemcardRex 1.9.cd98032]$ mono MemcardRex.exe
Gtk-Message: 01:07:33.511: Failed to load module "pk-gtk-module"
System.DllNotFoundException: dwmapi.dll assembly:<unknown assembly> type:<unknown type> member:(null)
at (wrapper managed-to-native) MemcardRex.glassSupport.DwmIsCompositionEnabled(bool&)
at MemcardRex.glassSupport.isGlassSupported () [0x00026] in <51d023b1534a4ef9bc3b0d1191357c9c>:0
at MemcardRex.mainWindow.applyGlass () [0x00030] in <51d023b1534a4ef9bc3b0d1191357c9c>:0
at MemcardRex.mainWindow.applySettings () [0x00034] in <51d023b1534a4ef9bc3b0d1191357c9c>:0
at MemcardRex.mainWindow.loadProgramSettings () [0x001f1] in <51d023b1534a4ef9bc3b0d1191357c9c>:0
at MemcardRex.mainWindow.Form1_Load (System.Object sender, System.EventArgs e) [0x0009c] in <51d023b1534a4ef9bc3b0d1191357c9c>:0
at System.Windows.Forms.Form.OnLoad (System.EventArgs e) [0x0001f] in <eaa3af9f3e15467aba111734e9f9f2f7>:0
at System.Windows.Forms.Form.OnLoadInternal (System.EventArgs e) [0x00023] in <eaa3af9f3e15467aba111734e9f9f2f7>:0
Running mono in debug mode and redirecting terminal output with MONO_LOG_LEVEL=debug mono MemcardRex.exe > log.txt
I get this text file:
log.txt
After installing the gtk2-engines
package, putting /usr/lib64/gtk-2.0/modules/
and /usr/lib64/gtk-2.0/modules/
into a file at /etc/ld.so.conf.d/
, and running ldconfig
:
[arashi@control-bureau MemcardRex 1.9.cd98032]$ mono MemcardRex.exe
System.DllNotFoundException: dwmapi.dll assembly:<unknown assembly> type:<unknown type> member:(null)
at (wrapper managed-to-native) MemcardRex.glassSupport.DwmIsCompositionEnabled(bool&)
at MemcardRex.glassSupport.isGlassSupported () [0x00026] in <51d023b1534a4ef9bc3b0d1191357c9c>:0
at MemcardRex.mainWindow.applyGlass () [0x00030] in <51d023b1534a4ef9bc3b0d1191357c9c>:0
at MemcardRex.mainWindow.applySettings () [0x00034] in <51d023b1534a4ef9bc3b0d1191357c9c>:0
at MemcardRex.mainWindow.loadProgramSettings () [0x001f1] in <51d023b1534a4ef9bc3b0d1191357c9c>:0
at MemcardRex.mainWindow.Form1_Load (System.Object sender, System.EventArgs e) [0x0009c] in <51d023b1534a4ef9bc3b0d1191357c9c>:0
at System.Windows.Forms.Form.OnLoad (System.EventArgs e) [0x0001f] in <eaa3af9f3e15467aba111734e9f9f2f7>:0
at System.Windows.Forms.Form.OnLoadInternal (System.EventArgs e) [0x00023] in <eaa3af9f3e15467aba111734e9f9f2f7>:0
As I understand it, dwmapi.dll should be provided by Mono. What's going on?
Thanks.
Would you please make an android port? Most people do not have a pc and wants to use memcardrex so they can manage saves on their android. Memcardrex doesn't work on exagear or winlator. So could you please make an android port?
Hi,
I have a working genuine FTDI USB serial cable (7 wire Net Yaroze mod) it works fine with nops and unirom on a retail 7xxx.
All settings are correct and working.
I tried the last release on win10, to read the memcard but I got this:
I click okay, and it goes into this error screen on the PS1:
Any suggestions, I'm happy to test any updates.
Memory cards contain 20 reserved sectors ("Alternate Sectors") in the FAT block that can be used to replace broken sectors. The respective documentation can be found here under "Broken Sector List".
It seems MemcardRex does not process this information and instead assumes that all sectors are sane. This can lead to severe problems when working with corrupted cards. An example flow I've been able to verify is exporting a single save containing a corrupted sector. MemcardRex in this case exports the save with the corrupted sector, the alternate sector is ignored. When this save is later re-imported, it remains corrupt - even though the original memory card image works fine (because it contains the alternate sector). Also, when simply saving the full image again, alternate sectors seem to be cleared - resulting in MemcardRex corrupting the original save.
My suggested treatment would be to replace the broken sectors with their alternate sectors when a memory card is loaded, and clear the alternate sectors at this point. This would effectively fix the card image and prevent inconsistencies from occurring when the card is edited. However, this solution also has a few drawbacks that I can think of:
On GNOME desktop, the button icons are invisible in these dialog boxes.
I'm not actually sure if this is a problem with this project or upstream, as there is a lot of jank going on in GTK and GNOME..
I tested with both OpenSUSE Tumbleweed and Fedora 36.
I'll attach a .txt file of when I ran MemcardRex with MONO_LOG_LEVEL=debug
.
debug_log.txt
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.