GutHubで、TheFloW氏がPS Vitaでゲームプレイ中に任意のところでその状態をセーブすることができるステートセーブプラグインdéjàvuをリリースしていました。時間があれば詳しく記事書きますと書いてから2日も経ってしまってますが、とりあえず記事書いたので…詳しいかどうかは怪しいですが…
déjàvuはTheFloW氏が開発していることを公表していた新しいVitaのプラグインです。プラグインを有効化しておけば、ゲームプレイ中にその状態を丸ごとセーブデータのように保存しておくことができ、その状態をいつでもロードして復元させることができます。
déjàvuは既視感と言う意味で、デジャブやデジャヴというカタカナ日本語として使われることもあります。来たことがない場所なのに景色に見覚えがあったり、初めてのはずなのにどこかで同じ体験をしたように感じるといった場合に使いますが、プラグインとしては過去の実際の記憶を現実にするというようなニュアンスで使われているようです。TheFloW氏は以前ステートセーブプラグインの名前を募集しており、その結果déjàvuに名前が決まりました。
SaveState plugin déjàvu v0.1 released!https://t.co/fc3WyVI0F3
— Andy Nguyen (@theflow0) March 5, 2020
ステートセーブは技術的には任意のタイミングでのRAMメモリの「スナップショット」を作成し、後に任意のタイミングでそれをRAMにリストアする仕組みを利用しています。これをゲームプレイ中に利用することで、ゲーム自体が用意しているセーブポイント以外の任意のタイミングでRAMメモリごと保存することでセーブデータを保存したこととほぼ同じ状態を作り出すことができます。
また、ステートセーブではあまり出てこない話ですが、TheFloW氏は「開発者向けの使用用途の可能性の一つとしてRAM上にあるデータに限るもののファームウェアのアップデート/ダウングレードを行うことができるためテスト用途として使えるかもしれない」ことに言及しています。
déjàvuの動作にはメモリーカードが必要ですが、現状動作が安定しているとは言えないため、状況によってはメモリーカードが破損する可能性があります。普段使いのメモリーカードをバックアップも取らずに使うことは避けた方が良いでしょう。
déjàvuのインストール方法
1) GitHubから最新版のdéjàvu(dejavu.skprx)をダウンロードし、メモリーカードのux0:tai/dejavu.skprx
へコピーする。
2) ux0:tai/config.txt
をテキストエディタで開き、*KERNEL
の行に以下のように追記する。
*KERNEL
ux0:tai/dejavu.skprx
3) Vitaを再起動する。
ステートセーブデータのセーブ/ロード方法
セーブデータの保存スロットは全部で6つ用意されています。スロット選択はSELECT/START/△/○/×/□ボタンに割り当てられています。ステートセーブとステートロードはそれぞれR/Lに割り当てられ、R/Lボタンのどちらか、SELECT/START/△/○/×/□ボタンのいずれか1つと、トリガーボタンの役割になっているPSボタンの3つを同時押しすることで機能するようになっています。
1) セーブ/ロードしたい任意のポイントで以下の3つのボタンを同時押しする。
ステートロード: Lトリガー
ii) 以下の6つのステートデータ保存スロットの中から使用する1つを選択
SELECT
START
△
○
×
□
iii) 上記2つのボタンを同時押ししながらPSボタンを押す
2) この時点でVitaはソフトリセットがかかり、画面がブラックアウトしてステートセーブデータをセーブまたはロードされる。ステートセーブはおよそ60秒、ステートロードはおよそ40秒かかる。ファイルシステムによってはもっとかかる場合がある。完了するとVitaがロック解除画面になる。しばらく放っておくとスタンバイモードになる場合があるため、スタンバイモードに入ってしまったときは電源ボタンを押して手動でシステムを再開する。セーブ/ロードの実行中はゲームカードのLEDが点滅する。
ゲームのステートセーブデータ(メモリのスナップショット)は400MBから500MBと大容量で、それがux0:savestate
で読み書きされます。ステートセーブと同時にセーブデータもバックアップされ、ステートロードの際にはロード前のセーブデータは以前バックアップしたセーブデータに置き換わります。
プラグイン自体はVitaのソフトリセット機能を利用してリソースを一時停止させ、メモリの状態をメモリーカードに書き込んでいます。ロードの場合は逆の手順が行われます。このプラグインの肝はステートデータをロードしたときで、一旦ファイルシステムをリフレッシュするというところのようです。実はこのときファイルが存在しなくなったり別のクラスタに保存されたり異なるサイズで保存されたりすることがあるため、それに応じて対応しなければなりません。更にはファイルシステムキャッシュも無効化する必要があります。このあたりのことが現状確実にできていないため破損やクラッシュが発生しているそうです。
上記のことが理由で現状の最新版のバージョンはv0.1となっており、安定性が十分ではありません。SDカード(ゲームカードスロットに差すmicroSDアダプターSD2VitaのSDカードのことだと思われる)やメモリーカードが破損してデータが消失してしまったりVitaがクラッシュしてしまう可能性もあるため、現状déjàvuを使用する場合は覚悟が必要かもしれません。
TheFloW氏としてはdéjàvuは実験的なプラグインとして公開しており、テストもVita Slimの3.65でしか行っていないとしていますから検証も十分とまでは言い切れません。今後ユーザーからのフィードバックを受けて完成度が高まっていくことになるでしょう。