motoharu-gosuto / psvgamesd

User application and kernel plugin that allow to produce game card dumps and run them.
MIT License
104 stars 12 forks source link

PS Vita - Virtual Game Card

User application and kernel plugin that allow to produce game card dumps and run them.

Introduction

This application is designed for two main tasks:

Aplication consists of user application that manages the driver settings and kernel plugin that is used to emulate game card.

Dumper comparsion (Thanks to Yifan)

https://gist.github.com/yifanlu/bcc8ebb102704ae136c650a912c6f70c

Requirements

Legal Disclaimer

Relation to Cobra Blackfin

I see that lots of people are trying to relate my research and project to the Cobra Blackfin. This happens in two major ways.

Relation to Cobra Blackfin research

Some are trying to relate to so called "leak" that was recently published here: http://wololo.net/2017/09/13/vita-reverse-engineering-leak-cobra-blackfin-part-1/ I can claim that there is nothing new for me in that "leak". My research was always open to the public and is completely independent from Cobra Blackfin. During the developement I have stated and explained this many times. You can also check it here in my first publication that happened year ago: https://github.com/motoharu-gosuto/psvcd. Please read closely the Introduction.

Relation to Cobra Blackfin .psv format

Others are trying to relate to the .psv format of Cobra Blackfin. I can claim that the format that we have develped with Yifan and devnoname120 is a completely independent format and has nothing to do with Cobra Blackfin. I hope you can make the differences by reading this: https://github.com/motoharu-gosuto/psvgamesd/blob/master/driver/psv_types.h As well as checking this developement thread: https://gist.github.com/yifanlu/d546e687f751f951b1109ffc8dd8d903

Compatibility with sd2vita adapter

This plugin is not compatible with sd2vita adapter and corresponding gamesd.skprx plugin.

This plugin is not compatible with any other kernel plugin that is derived from gamesd.skprx.

If you are going to use this plugin - disable gamesd.skprx

Ideally it is recommented to remove sd2vita adapter. However when inserted - it should be ignored by this plugin.

Integration with sd2vita is planned for next release.

Compatibility with game cards that have grw0: partition

There are some game cards that have write partition. It allows to write on game card.

Currently such game cards are not supported. This is planned for next release.

If you want to help me with this issue, please drop a comment at: https://github.com/motoharu-gosuto/psvgamesd/issues/10

Installation

Install kernel plugin

Install user app

User Interface / Controls description

Upon launching user app you will be presented with console UI.

Physical MMC mode - Producing Game Card Dumps

Virtual MMC mode / Virtual SD mode - Running Game Card Dump

Physical SD mode - Running Game Card Dump

Use cases

Typical Emulation use case

Typical Physical Storage use case

Huge dump size, trimming, compression etc

Trimming zeroes

I see quite a lot of complaints about size of the .psv files. I guess I should have explained it from the start. Initial design of the format assumes that 1 to 1 dumps are produced. However you have a total freedom to derive a trimmed version of the dump from the original file. Ideal solution is to create a tool that does the trimming. Solution for experienced users is to remove zeroes in the end of the file using hex editor. However you have to make sure that you are only deleting zeroes. You also have to keep in mind that data is 512 byte aligned. After trimming - you can set corresponding FLAG_TRIMMED flag in the header of the file.

Compression

At this point in time compression does not make much sense since data in the dump is encrypted.

Reporting issues

Feel free to report bugs/issues here: https://github.com/motoharu-gosuto/psvgamesd/issues

Legacy ways to dump the came card

Custom board

Use custom board. You can check how it can be built here: https://github.com/motoharu-gosuto/psvcd

There are two modes that can be used there.

For second approach you will need kirk plugins that are located here https://github.com/motoharu-gosuto/psvkirk

Code for second approach is not finished. It only does cmd56 handshake. However you can use the code from first approach to dump the card. Only little changes are required.

PSVEMMC client

https://github.com/motoharu-gosuto/psvemmc

Unfortunately dumping client is not finished. It is only capable of doing a dump per partition. It does not dump SCEI MBR and does not combine partition dumps into single binary file. However only little changes are required to make it dump SCEI MBR. You can then combine dumps with your favorite hex editor.

CMD56 handshake

Data from the handshake is required to pass signature checks and obtain klicensee. It is integrated into dump file. When game card is inserted in physical mmc mode signature and keys are intercepted and saved to dump file later.

Special thanks