VHBL、PS VitaとPSPエミュレータの技術的情報

wololo.netで、wololo氏がVHBLの技術的な情報を公開していました。

VHBLの開発はほとんどwololo氏にお任せだったのですが、そのwololo氏が今後のためにシェアして置いた方がいいと感じた情報が掲載されています。

wololo氏はVHBLの開発をPSP-1000で行い、テストをPS Vitaで行って来ました。その際に通常のPSPの6.60とPSPエミュレータの6.60との違いに気が付いたそうです。以下はwololo氏の記事の翻訳です。

PS VitaでのPSPエミュレータ

PSPエミュレータではPSP/GAMEフォルダ内にあるEBOOT.PBPという名称のファイル名はコピーできません。例えばPSP/GAME/Wagic/EBOOT.PBPのようなEBOOT.PBPを作ることができません。間違ってPSPのゲームを消したりしないようにするためのプロテクトなのでしょうか。元々EBOOT.PBPだったwMenuは”install.zip”を解凍する際にwmenu.binというファイル名に変更することでこのプロテクトを回避しています。EBOOT.PBPが利用できないことにより、コンテンツ管理でHomebrewが破損と表示されてしまうようです。PSP/SAVEDATAフォルダに関してはこの問題が発生しません。

APIが”readdir”をコールしても”.”や”..”のフォルダを返しません。当初はVHBL移植に問題があったのかと思っていましたが、PSPでVHBLを起動させると問題がないためPSPエミュレータにだけ発生するようです。そのためエミュレータなどでは、エミュレータ本体と同一階層以外に配置されたROMは読み込めません。開発者の皆さんは、VHBLに対応させるためにはフォルダをブラウズするためには別の方法を検討してもらわなければなりません。wMenuの場合はreaddirに頼らずパスの”/”の数を数えています。それによって通常Homebrewの互換性に問題が出たりはしませんが、逆に動作がおかしくなる可能性もあります。

また、PSPエミュレータではms0:/にしかアクセスできません。PSPエミュレータからPS Vitaの専用メモリーカードのコンテンツ全てにアクセスできるようになるとは思っていませんが、flashが全く見えません。私が言ったからと言って正しいとは思わないで欲しいのですが、PSP Filerで見た分にはダメなようです。但し、yosh氏含めて何人かからflash0フォルダのフォントは読めたとは聞いています。

コンテンツ管理アシスタント(CMA)と、その制限

CMAは使うのに不便なだけでなくセキュリティホール対策と制限だらけで不自由この上ありません。PSPにexploitとHomebrewをインストールするのは比較的簡単ですが、これはPSPがPC上でUSBドライブとして認識されるためで、単にドライブにコピーするだけでインストールが終わってしまいます。これに対してCMAは複雑です。CMAでは画像とビデオ、音楽、PSPのセーブデータ、Vita/PSPのゲームしかコピーできません。まだ確認できていませんが、破損していると判断されたデータはコピーすることすらできません(画像やビデオ、音楽ファイルはそうでもなさそうですが)。また、コピーする場所もCMAが決めてしまっています。例えばmp3ファイルであってもPSPエミュレータがアクセスできるような場所を自分で選んでコピーなどは全くできません。

つまり、Vitaで動作させるためにはHBLの構造を変えざるを得ませんでした。PSPエミュレータでアクセスできるような場所、要するにPSPのゲームかセーブデータのフォルダ内にファイルを入れなければならなかったのです。PSPのゲームはVitaでは、まだ調べてもいませんが特殊な方法でパッケージ化され署名されています。今までのHBLはメモリースティックのルートにインストールされていましたが、CMAがあるがためにインストール場所を変えざるを得ず、結局セーブデータの中に全て入れることになりました。加えてCMAはセーブデータ内のサブフォルダをコピーさせてくれないのでファイルを直接セーブデータフォルダに全て直接入れなければなりませんでした。全てのファイルが並列に並ぶということは、PS VitaでHBLを動かすに当たって根本的に構造を変える羽目になりました。

CMAはPSPのセーブデータ内のサブフォルダをコピーしてくれないので、そして全てのファイルをセーブデータフォルダに入れなければならないので、サブフォルダを使うことが多いHomebrewにはあまり向かないということになってしまいました。そこで浮かんだアイディアは、単純にHomebrewをzipファイルにまとめてしまおうという単純な発想でした。それをセーブデータフォルダに入れてメモリースティックのセーブデータフォルダにCMAでコピーしてしまおうというものです。そしてzipをHBL内で解凍すればいいのです。このためにHomebrewのインストールの方法が複雑になってしまっていますが、他の方法があればwMenuではないそれに対応した別のVHBLメニューを作る必要があります。

wMenuは今までの経緯からオープンソースではありません。しかしHBLのSVNにはzipの解凍やHomebrewインストールの仕組みをサポートすることもできるベーシックなメニューのソースコードが含まれています。VHBLのメニューが他にも出てくることを楽しみにしています。

ネットワークと妄想

CMAはファイルをコピーするのにもネットワーク接続を要求します。当初それを知った時、コピーするためにネットワーク接続は全く必要ないためその対応に腹が立ちました。更にPS Vita自体もユーザーがどんなことをしているのかを常に監視されている可能性もあるのです。私の場合”エラーログ”のシステムが問題でした。それは名前の通り問題が起こるとクラッシュレポートが毎回作成されるのです。おそらくそのログはPS Vitaがオンライン状態になったら定期的にソニーのサーバーへ送信されています(証拠はありませんが、そういう仕組みになっているはずです。もし私が間違っていることを証明できるのであれば教えてください)。この仕組みはソニーが迅速にアプリケーションやゲームで発生した問題を改良するためのものでしょう。ただし私の場合VHBL開発段階でクラッシュするたびにソニーへどのゲームで開発を進めているのか教えているリスクをしょっているようなものです。これがゲーム名を一般公開する前からゲーム名を知っていた人達に対してもVHBLファイルを配布しなかった理由です。知らない間に危険な情報をソニーに漏らしてしまう危険性があったのです。

Vita_Log_Report
ログはPS Vitaで最初にVHBLを起動させた時に採取されています。
これが1日以内にソニーが情報を把握できた理由でしょうか。

CMAのネットワークの問題に対処するために、VHBL開発段階で利用したのはopenCMAでした。クラッシュログシステムのためにネットワークへの接続は可能な限り最小限にする以外手はありませんでした。このネットワークの問題を考えるとSKFU’s Vita Pr0xyは将来Vitaでモニタリングされたくない人にはきっと必需品になるでしょう。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする