svgamesd – Game Backups Done The Right Way – #HENkaku #Enso
The enigmatic and wonderful motoharu has released psvgamesd, which is a Homebrew application and Plugin that allows you to create 1.1 copies of the games you own.
Here is a simple explanation of what this Homebrew does:
This application is designed for two main tasks:
- Produce 1 to 1 dumps of game cards.
- Introduce functionality that allows to run these dumps.
Application consists of user application that manages the driver settings and kernel plugin that is used to emulate game card.
Here is a little something written by @Yifan Lu:
- STOP using Vitamin/MaiDumpTool. Those tools were hacked together before taiHEN was ready and therefore depends on hacks around the fact that there was no kernel access. Game executable metadata was not preserved and creates lots of compatibility issues including corrupting saves while in suspend mode.
- psvgamesd creates .psv files which will be the standard archival format for Vita games (like .iso or .nds but for Vita). These files are not trimmed or compressed and therefore will take a lot of storage to save. Until trimming/compression features are implemented, a way to use the best of both psvgamesd and NoNpDrm is to save your raw dumps on your computer (for backup) and when needed (like if you lose access to your cart), you can use psvgamesd to mount the image once, then use NoNpDrm to “install” it as a bubble (saving space) and finally delete the original .psv from your Vita.
- psvgamesd allows you to backup your 3.61+ games for use if/once later firmware are hacked.
- psvgamesd currently does not support backing up digital games but the .psv format will eventually be used to archive digital games as well. More information on the format is here.
- When a .psv is mounted with psvgamesd, you can run any other tool (including NoNpDrm and Vitamin) on it, so until existing workflow (such as game translation) is upgraded to not depend on legacy dumps, it is always possible to go from .psv to any other format but not the other way around! You must dump the original cart to create a .psv!
Motivation: One unified .psv format for archiving (preserving) Vita games.
The goal is to preserve as much of the original game structure while ensuring
the all the information needed to decrypt and extract data can be derived
from just the file and a hacked Vita.
We want something akin to .nds or .3ds/.cia or .iso but for Vita games. The
unique challenge is that Vita cart games require a per-cart key to decrypt
and digital games require a similar key from activation. With just the raw
game image, it is not possible to extract the game data.
What’s wrong with using .vpk? VPK is designed for homebrew. The patches to
enable homebrew strips out a lot of the game executable metadata as well as
change the system state to be different than a Vita running an original game.
This leads to many subtle as well as major bugs (saves not working, some
games require additional patches to run, saves are not compatible with
non-hacked Vitas, etc).
Why not just ZIP the original files? Why not strip PFS as well to make data
mining/emulation easy? Why not make a compressed format? One reason is that
by stripping more than necessary (like, for example PFS), we might be losing
information that we currently do not think is important. An example of this
is when SNES games are first dumped and Earthbound was not dumped properly
and people did not know about the anti-piracy checks until much later. There
may be, for example, games that do timing checks or checks on the file
modification time or something. Either explicitly for anti-piracy or
implicitly due to bad programming (a lot of older consoles are infamous for
the latter case). By preserving as much of the original structure as
possible, we ensure that we can somehow play these games in a future where no
more Vitas exist.
Different tools (data extraction, backup loaders, archival storage, etc)
might require different use cases. Someone might for example want to strip
PFS and compress the game data for more efficient storage. We invite them to
extend this format though flags BUT just as you shouldn’t store all your
photos in level-9 compressed JPEG, your code in executables, or any data you
care about in a lossy format, you should archive your games in its original
form. You can easily go from a RAW image to a JPEG but you cannot go back.