Dejavu Vita

From GameBrew
déjàvu
Dejavuvita2.png
General
AuthorTheFloW
TypePlugins
Version0.1
LicenseMIT License
Last Updated2020/03/05
Links
Download
Website
Source
Support Author

déjàvu is a plugin for the PlayStation Vita that allows you to make a snapshot of the RAM at any point and later restore it.

It allows you save in games where it is officially not possible. A potential use case for developers is to temporarily downgrade/update the firmware (in RAM) in order test things (this has not been tested yet).

Note: The is not 100% stable, your SD Card and/or Memory Card may be corrupted and you may lose your data. Use at your own risk.

Installation

Note: A Memory Card is required for this plugin.

To install, copy dejavu.skprx to ux0:tai/.

Edit ux0:tai/config.txt and add its path to *KERNEL as follows

*KERNEL
ux0:tai/dejavu.skprx

Reboot your device.

User guide

Save/Load State Procedure

You can save or a load a state at any point by pressing a combination of three buttons.

  • To save a state, press the R trigger.
  • To load a state, press the L trigger.

Then, select one of the six slots by pressing them:

  • SELECT
  • START
  • TRIANGLE
  • CIRCLE
  • CROSS
  • SQUARE

Finally initiate the procedure by pressing the PS button while holding the previous two buttons. At this point, the device will do a soft reset and save or load the state while the screen remains black.

Saving a state takes around 60s while loading a state takes around 40s. Depending on the file system, it can take even longer. On finish, the device will resume to the unlock screen. If you do not pay attention to your device, it may go into standby mode after a while.

In that case, press the power button to resume your device manually. During the save and load procedure, the game card LED should flash.

A snapshot of a game is around 400-500MB big and will be written to the Memory Card at ux0:savestate. When saving a state, a backup of the savedata will made and when loading a state, the current savedata will be replaced with the old savedata.

Caveats

Loading a state is not yet 100% stable.

  • Your SD Card and/or Memory Card may be corrupted and you may lose your data.
  • The system may crash.

Beware that this plugin is only experimental and may contain bugs. If you encounter any, please give a detailed feedback in Issues.

Technical Details

This plugin makes use of the soft reset feature to enter a state where all resources are suspended. At this point, a payload is executed which is mapped to address 0x1C000000. The payload flushes and disables all the caches as well as the MMU. Using FatFs and a reverse engineered and reimplemented Memory Card driver, the RAM and a few other states are written to Memory Card.

In order to reduce the size of the snapshot, only sections and pages that are referenced by the page table are stored. When loading the state, the same procedure happens, however instead of writing, all the memory is written back. A big challenge of this plugin is to refresh the file system after loading a state.

Namely, files may not exist anymore, they may be stored in different clusters or they may have a different size. All this must all be updated accordingly. Moreover, file system caches must be invalidated. This problem has still not been solved properly and hence, corruptions and crashes may still happen.

Compatibility

This plugin has only been tested on a PS Vita Slim on firmware 3.65.

Credits

External links

Advertising: