PS3 Apollo save tool (development thread)

at least I can confirm that the ps2 ".xps" (Xploder) and ".sps" (Sharkport) formats are the same. (Actually both extensions are scanned/detected by Apollo)
From what I understand, they're just the same application by Datel but with different names for the Euro and US markets.

I guess that Berion knows better about this topic and can share more info about duplicate formats :)

Same happens with memory card files for PS1. There are many file extensions used by different emulators and tools, but in general they are the same "MC" format with different file extension and/or with some bytes added as header.

An easy method to support many of them is check for "MC" at (file_size - 128KB).
 
  • PSX VMC (1:1 which means exaclty 128KiB): *.bin, *.ddf, *.mcd, *.mci, *.mcr, *.ps, *.psm, *.srm (RetroArch PSX cores), *.vmc (emulator on PS2), *.vm1 (emulators on PS3)
  • PSX VMC (custom abominations): *.mem/*.vgs (both the same, cut first 0x40), *.gme (cut first 0x0F40), *.saveram :P (both "slots" 1:1 merged onto one file, exactly 256KiB), *.vmp (cut first 0x80, Sony junk, emulators on PSP/PSV)
  • PSX saves: *.psv (Sony junk), *.mcs (raw + simple header to determine IDs), *.raw (it is just 8KiB*n)
  • PS2 VMC (without ECC, exactly 8MiB): *.ps2, *.bin+*.mci, *.vmc
  • PS2 VMC (with ECC, little larger): *.vm2
  • PS2 VMC (with ECC but encrypted): *.vme
The best way for handle VMCs is checking only size (because file extension duplicating i.e MCI can be PSX VMC but also blocks descriptor (~16B) for PS2 VMC). Or in case of PSX, just look for "MC" string (memory card must start from it, just like "SC" for saves).

I forgot now how all ;) PS2 saves looks like. I'm pretty sure all are covered by PS2 Save Converter and PS2 Save Builder. For PSX: PSX Game Edit and MemCardRex.

If You have to much free time, You could also add import saves from "save states" in case of PSX (decompressing (mostly using gzip) VRAM dump (4MiB if remember correctly) + looking for "SC" string multiply times (because there are games which using more than 8KiB saves, i.e Duke Nukem 3D Total Meltdown or Diablo using almost whole mc, GT using 5 blocks etc.)).


Apollo Ultimate Save Tool. :D
 
Last edited:
just for the record, latest Apollo version is mostly handling PS1/PS2 single savegame formats (except for the VME encrypt/decrypt)

with some additional iterations, handling these full "memcard images" could be added too, as it's mostly copying the file (to .VM1 or .VM2) and removing some header (or adding the ECC for ps2). I think it could be an option under "User Backup", called 'Import PS1/PS2 memory cards'

the only issue is that unless you already have a virtual memcard created with the same name on the PS3, even after Apollo imports the memcard to the HDD, the XMB won't show it (requires a db-rebuild). If you have the card created, then you can use the dummy save trick to refresh the contents.

oh, I forgot that a dummy for PS1 would also need to be included. Haven't tested it but I think it will work fine as with PS2 virtual memcards.
 
just for the record, latest Apollo version is mostly handling PS1/PS2 single savegame formats (except for the VME encrypt/decrypt)

with some additional iterations, handling these full "memcard images" could be added too, as it's mostly copying the file (to .VM1 or .VM2) and removing some header (or adding the ECC for ps2). I think it could be an option under "User Backup", called 'Import PS1/PS2 memory cards'

the only issue is that unless you already have a virtual memcard created with the same name on the PS3, even after Apollo imports the memcard to the HDD, the XMB won't show it (requires a db-rebuild). If you have the card created, then you can use the dummy save trick to refresh the contents.

oh, I forgot that a dummy for PS1 would also need to be included. Haven't tested it but I think it will work fine as with PS2 virtual memcards.
I was thinking in it while reading apollo v1.4.0 changelog, there are only 2 kind of conversions missing:
-Convert full memory card images to either VM1 or VM2 (or VME)
-Convert single PSV saves to the non-official formats

The second one about converting PSV saves is not going to be much popular, and it could be a mess because are a lot
The first one could be handy, if is just a matter of removing some bytes from the header or just changing file extension i guess is going to be easy

The heuristic searchs looks like are going to work fine, but i think is better to have a definition in the code for everyone of the formats, kind of thing that needs to be made patiently and no hurry
You just need a sample of everyone of them to take a look at which kind of modifications are needed specifically for it

Btw berion, or anyone interested in helping... if some of you have some samples of that herd of fileformats related with PS1 and PS2 saves please send a sample to bucanero
 
There is no need to convert PSV to anything else than PSU. No one using other formats, really.

The problem is, there is no way to check what format is by data inside. You can check by file extension (which is flaw in this case because limiting usage), but if You checking just size, You will cover all future "renaming cases" used by foreign emulators. This could be just idiot-proof. Whatever approach will be taken, this in no big deal anyway, because if files will be checking by file extension, user still can just rename it to appear in Apollo.

Samples can be made by mentioned by me above programs. All doing it in proper way (PS2 Save Builder have bug in SJIS codding, it badly writing blank spaces, but this is not related to save conversions).

For none-ECC VMC, You can use my FMCB backups (with broken symlinks ;p and subdirs which is beyond PS2 standard for saves but maybe can be useful for error handling tests):

https://www.sendspace.com/file/2y3cwe

CRC32: E4547059
MD5: 3BEDA6B99A9873532D85955FFE9DCFA1
SHA3-512: 3A235CD8730F1BADC341AC6B0E753F15C5707E897965E64122E24FFDE063591D083BB47FD61F8A17A112A4545377F710ADDDE8023B896B18F37F3BAEEC5DC74A
 
Last edited:
I was thinking in it while reading apollo v1.4.0 changelog, there are only 2 kind of conversions missing:
-Convert full memory card images to either VM1 or VM2 (or VME)
-Convert single PSV saves to the non-official formats

for simplicity, I think that the .psv conversion could be trimmed down to:
(ps2) .PSV to .PSU
(ps1) .PSV to .MCS

(not sure if there's a "most popular" format for PS1, but from Berion's feedback, the PS2's popular one is .PSU)

Samples can be made by mentioned by me above programs. All doing it in proper way (PS2 Save Builder have bug in SJIS codding, it badly writing blank spaces, but this is not related to save conversions).

For none-ECC VMC, You can use my FMCB backups (with broken symlinks ;p and subdirs which is beyond PS2 standard for saves but maybe can be useful for error handling tests):

https://www.sendspace.com/file/2y3cwe

thanks for sharing Berion :encouragement:

talking about ECC stuff, the code to handle it is already in my Github repo... I just didn't enable it from the UI :D
from my tests everything was already working, I could "remove" ECC from a .VM2, and add the missing ECC to raw images properly.

btw, would make any sense to allow "exporting" a .VM2 to a raw image without ECC?
 
MCS have all what PSX saves needs, however, peoples using just whole memory card images. *.mcs is more like choice for archivists. But if we have/would we have export to PSU and all code is already there, so why not also doing it the same for PSX? ^^

OPL (game loader to run games from USB/IDE/SMB on PS2) and PCSX2 (PS2 emulator on PC) doesn't using VMC with ECC (I'm not fully sure about PCSX2 because I didn't use it for ages, maybe something has changed in last 10 years).
 
I have checked this today and PCSX2 using VMC with ECC. So export to standard VMC (none-ECC) can be handy in case of:
  • user want use card with OPL (Open PS2 Loader)
  • user want write vmc to real card via MCA (Memory Card Annihilator)
Sizes:
  • ECC: 8448B
  • None-ECC: 8192B

In attachment: "REFRESH_VMC1" (following by @sandungas naming convention ^^), with of course proper icon. SJIS makes me sick to convert, but then I realize that PS2 Save Builder allow edit icon.sys which using the same encoding so I wrote there Apollo and transplant to PSX save via hex editor. :D I have checked and works.
 

Attachments

Last edited:
I have checked this today and PCSX2 using VMC with ECC. So export to standard VMC (none-ECC) can be handy in case of:
  • user want use card with OPL (Open PS2 Loader)
  • user want write vmc to real card via MCA (Memory Card Annihilator)
Sizes:
  • ECC: 8448B
  • None-ECC: 8192B

In attachment: "REFRESH_VMC1" (following by @sandungas naming convention ^^), with of course proper icon. SJIS makes me sick to convert, but then I realize that PS2 Save Builder allow edit icon.sys which using the same encoding so I wrote there Apollo and transplant to PSX save via hex editor. :D I have checked and works.

thanks a lot Berion! :encouragement: yeah Shift-JIS is painful, I had to dig around stackoverflow to find an example to turn s-jis to UTF-8, so I could show properly the names and kanjis on Apollo's UI.
also, thanks for confirmation about ECC/non-ecc .vm2 files

some updates on my side: I have the .psv to .mcs (ps1), and .psv to .psu (ps2) code ready, I just need to run some tests with a few files to be sure I didn't miss anything. Then I'll focus on the vm2 export to raw binary (non-ecc)

also, I'm starting a new job next Monday, so I'm aiming to release this small update in the next few days, as I assume that I won't be able to focus too much on homebrew development for a while
 
Even if You will stop developing Apollo, in current shape (except GUI implementation, this blur and stretching hurting my eyes, the same as no longer greeny drown Acropolis :D) is a holy grail for all peoples who still playing on PS3. It saves a LOT of headache for new comers and for sure will be one and the best app for save management on PS3 and it's emulators. Thanks for Your time.
 
also, I'm starting a new job next Monday, so I'm aiming to release this small update in the next few days, as I assume that I won't be able to focus too much on homebrew development for a while

This is a fantastic news! Honestly, I was worried about you when you commented months ago that you were not working.

Congratulations pal! :chicken::chewie::lock::cheese::pineapple:
 
This is a fantastic news! Honestly, I was worried about you when you commented months ago that you were not working.

Congratulations pal! :chicken::chewie::lock::cheese::pineapple:

thanks mate! yes, it wasn't the best time to be unemployed (with all this virus outbreak), but I have to say that focusing on homebrew development was a good way for me to stay positive and doing nice things, while I was on the lookout for new jobs.

So in a way, the PS3 saved me from being sad/worried , and kept my mind sharp solving some "code puzzles" :D

I'd say that Apollo is a proof that even in bad times, you can do good things to make the world a bit better ;)
 
Even if You will stop developing Apollo, in current shape (except GUI implementation, this blur and stretching hurting my eyes, the same as no longer greeny drown Acropolis :D) is a holy grail for all peoples who still playing on PS3. It saves a LOT of headache for new comers and for sure will be one and the best app for save management on PS3 and it's emulators. Thanks for Your time.

hahaha well I won't mess with the tiny3d UI for now, but I'm pretty sure a "berion-build" could be made with the original green background, and perhaps changing some text colours to match your design.

do you have the ps1lght sdk? I can guide you on how to replace the image and rebuild the EBOOT if you want :)
 
That's am able to do it, don't worry. I have more in mind necessary changes in library which are beyond my knowledge. ^^ That's the main reason why I didn't change theme yet to the "stone" one (and second reason, You have mentioned before about skin implementation). So I will just wait until more important stuff will be added and maybe at the end You will back to GUI stuff. After first release with "new gui" I have checked if all resources can be replaced back. :D

And of course take Your time. Job and life is more important than some homebrew of course.
 
thanks mate! yes, it wasn't the best time to be unemployed (with all this virus outbreak), but I have to say that focusing on homebrew development was a good way for me to stay positive and doing nice things, while I was on the lookout for new jobs.

So in a way, the PS3 saved me from being sad/worried , and kept my mind sharp solving some "code puzzles" :D

I'd say that Apollo is a proof that even in bad times, you can do good things to make the world a bit better ;)

I know what it feels like... I have been unemployed for a long period too and it's very depressive...
That's the main reason why I was worried about you. Thanks God, you got a new job and soon everything will return to normal (or better).

Now it's time for the community to take care of these awesome -OPEN SOURCE- projects!
 
I've added the .VM2 to raw conversion (raw = memory card image without ECC) and the .raw to vm2 too (adds the ECC to a no-ECC image)

my code should also support memory card images of 16MB and 32MB (if anyone has such images, feel free to try it out).
btw, 64MB images are actually detected and rejected from these conversions, because as far as I know the PS3 can't handle 64MB .vm2 files.
I wonder if after converting a 32MB .vm2 and encrypting it to .VME they will work on the PS2 classic emulator. :D

I have also updated the Readme and docs, listing all the paths that Apollo uses /scans for files, vmcs, isos, etc: https://apollo.psdev.tk/

keep an eye for the new version! :)
 
v1.4.2 is out: https://github.com/bucanero/apollo-ps3/releases/tag/v1.4.2

about the memcards, Apollo will look for "*.raw" files, so you'll have to rename extensions as needed. But in any case, Apollo will also check the file size of the .raw file, so for example, if it's 8Mb without ECC, then it will add ECC. If it has ECC, it will leave it as is.

Exported .raw memcards will be "non-ECC" .raw files. (if you need the ECC memcard image, just copy the .VM2 file with your backup manager)
 
Actually RAW files are mc images with ECC (*.ps2, *.VM2) while *.vmc and *.bin are just stripped version of them. ^^ I could compare it to i.e HDD where user can read data from it via standard ATA commands but HDD firmware have access also to ECC/EDC.

But thanks for the update.
 

Similar threads

Back
Top