TheFloW氏はDiscordでは1月、Twitterでは2月にこのプラグインを開発している事を明かしていました。
Twitterではプラグインの名前を募集され、その結果決定した名前が déjàvu です。(tweet)
Switchのexploitと同じ名前なのはどうなんだと思って私はアンケートではomoideを選びましたが、dejavuが47%、
omoideが6.5%という散々な結果になっていました。同じ名前が良いという人が多いのでしょうか…?
déjàvuを使用する前提条件として、Vitaにメモリーカードを挿している必要があります。
ux0としてマウントしておく必要はありません。ソースコードではux0のパスが指定されているため、ステートセーブ
とステートロード中にのみ一時的にメモカをux0としてマウントしているのだと思われます。
(つまり内蔵メモリ/SD2VITA/PSVSD/USBストレージ内にはステートセーブを保存出来ません)
READMEによると、déjàvuはまずVitaのソフトリセット機能を使用してRAM内の全リソースが中断された状態にし、
ペイロードによって全キャッシュとMMUを無効にし、FatFSとリバースエンジニアリングされたメモカのドライバを
使用してRAMとその他必要なデータをステートセーブとしてメモカに保存する、という流れのようです。
この時、セーブデータ("ux0:user/00/savedata/タイトルID")もステートセーブとして保存されるようです。
ステートロードではファイルからRAMに書き戻し、セーブデータもステートセーブ内の物に置き換わるようです。
v0.1時点ではステートロードに大きな課題があるようで、100%安定しているとは言えず、SDカードやメモカ内の
ファイルの破損やシステムのクラッシュが発生する可能性があるようです。ここでSDカードというのは、おそらく
SD2VITAやPSVSDに使用しているmicroSDカードの事だと思われます。
déjàvuは実験的なプラグインとされており、TheFloW氏自身は3.65の2000でのみテストされたそうです。
とりあえず試してみたので手順等を書いておきます。
※ファイルが破損する可能性があるため、私としてはあまりオススメ出来ません。自己責任でお願いします。
●用意するもの
- PSVita - HENkaku
- メモリーカード
- dejavu.skprx
●dejavuの有効化
- dejavu.skprx を "ux0:tai/" にコピーする
- config.txtに以下のように書き足す
*KERNEL
ux0:tai/dejavu.skprx - Vitaを再起動する
●dejavuの使用方法
dejavuでは3つのボタンの同時押しによってステートセーブ/ロードを実現します。
- ステートセーブ/ロードの指定
- Rボタン:ステートセーブ
- Lボタン:ステートロード
- スロットの指定 (6スロット)
- SELECTボタン
- STARTボタン
- ○ボタン
- ×ボタン
- △ボタン
- □ボタン
- PSボタン
つまり「R + △ + PS」のようにしてステートセーブ、「L + △ + PS」のようにしてステートロードします。
ステートセーブ/ロード中は画面は真っ暗になり、ステートセーブは約60秒、ステートロードは約40秒です。
ステートセーブ/ロード中はゲームカードのランプが点灯します。
ステートセーブ/ロードが完了するとVitaはロック解除画面になるので、解除してゲームを再開します。
(ロック解除画面が存在しないVitaTVでは普通にゲームが再開します)
ステートセーブの保存場所は "ux0:savestate/" で、ファイル名は "state_ボタン名.bin" となります。
(つまりSELECTなら "state_select.bin"、△なら "state_triangle.bin")
(ファイル名から分かるように、スロットはタイトル別ではなくシステム全体で6スロットです)
ファイルサイズは約400MB~500MBです。サイズはゲームやシーンによって変わります。
(メモカをux0としてマウントしていない場合、"メモカ:savestate/" を確認してみてください)
(VitaShellの問題なのかなんなのか、Vitaを再起動するまでステートセーブのファイルが見えない事があります)
メモカ以外に保存出来ないのか、という点についてはTheFloW氏がredditで言及しています。(source)
SD2VITAに関してはSDカードのドライバのリバースエンジニアリングが必要らしく、保存場所の変更は容易では
無いそうです。内蔵メモリ/PSVSD/USBストレージに関しても同様の事が言えるのだと思います。
ファイルが破損する可能性があるため現段階ではあまりオススメ出来ませんが、Vitaでステートセーブという新たな
偉業を成し遂げたTheFloW氏はやはりすごいと思います。
READMEに書かれているので一応書いておくと、ステートロードによってRAM内で一時的にFWのダウングレードや
アップデートが実現出来るため、開発者にとってはテスト目的で役立つかもしれないとの事です。
(これに関してはテストされていないようです)
なお、このプラグインを開発するきっかけとなったのはPSPのステートセーブプラグインであるPSPStatesとの事で、
クレジットには敬意を表してかPSPStatesの開発者であるDark_AleX氏の名前も書かれています。
ちなみに私は名前募集の際にPSPStatesから取ってVitaStatesとPSP2Statesを提案しましたが、残念ながら採用は
されませんでした。
