動作環境

PSP で動作する自作プログラムは、その経緯からシステムソフトウェア 2.00 以上の標準の PSP では動作しません。次のいずれかの条件を満たす PSP が必要になります。

  • カスタムファームウェア(CFW/LCFW)の導入された PSP
  • システムソフトウェア 1.00/1.50 の PSP-1000
  • Half-Byte Loader などを使用して上記の環境を再現できる PSP

プログラムがクラッシュするなどして PSP が強制終了する場合があるので CFW 環境を推奨します。

プログラミング言語

PSP 開発ではC言語、C++、Objective-C および Objective-C++ が利用可能です。現状ではC言語で書かれる場合が多いため、ここでもC言語のコードを扱います。

PSP 開発の歴史

SONY 製のゲーム機 PSP で、現在のような開発が行えるようになった経緯をみていきます。

もともと、PSP で起動することのできるソフトウェアは、SONY によって電子署名されたソフトウェアのみでした。電子署名は暗号化されており、任意のソフトウェアを起動することは不可能だと思われていたのです。しかし、PSP のシステムソフトウェア 1.00 に、署名のないソフトウェアを実行できる脆弱性が存在しており、一部のハッカーによりこの脆弱性が発見されたことによって、現在の PSP 開発の基盤が築かれました。システムソフトウェア 1.51 でこの不具合は修正されましたが、以後ハッカーと SONY のいたちごっこが続くことになります。

このような状況下で、スペイン人ハッカーの Dark AleX 氏により「カスタムファームウェア(CFW)」が発表されます。これは、公式のシステムソフトウェアをベースにして、未署名のソフトウェアを実行できるように改造を施したシステムソフトウェアで、現在ではこの仕組みが主流です。 Dark AleX 氏は活動を休止しましたが、PSP ハッカーのチームはその後も多く生まれ、CFW にはさまざまな亜種が存在します。 2014 年 3 月現在で最新のシステムソフトウェアである、バージョン 6.60 にもカスタムファームウェアが存在し、自作ソフトウェアの起動が可能になっています。

さらに、「署名」自体を根底から揺るがす事態が起こります―SONY がソフトウェアの署名に使用していた暗号が解析されたのです。現在ではこれにより、ユーザーモード(後述)の自作ソフトウェアの多くが標準(未改造)のシステムソフトウェアで起動することができるようになりました。

PSP のソフトウェア

PSP は「署名済みソフトウェア」と「未署名のソフトウェア」を区別しており、未改造のシステムソフトウェアでは署名されていないソフトウェアを起動することはできません。また PSP のソフトウェアには実行モードという機能があり、モードによって実行できる機能に制限がかけられています。

  • 署名済みソフトウェア
    • アップデーター
    • ユーザーモードのアプリケーション
  • 未署名のソフトウェア
    • ユーザーモードのアプリケーション
    • カーネルモードのアプリケーション

「ユーザーモード」は、ゲームやファイル管理ソフトなどが使用するモードです。ほとんどのソフトウェアはこのモードで起動しますが、フラッシュメモリへの書き込みや、システムの特定領域へのアクセスが制限されています。

「カーネルモード」は、システムの全領域へのアクセスが可能なモードですが、実行には 1.00/1.50 の PSP か、1.50 カーネルアドオンの導入された PSP-1000 が必要になります。カスタムファームウェアの導入された PSP でもこれを満たさない場合は実行できません。

カスタムファームウェアには、PSP で内部的に使用されているモジュールを直接読み込む機能があります。モジュールはカーネルアドオンが導入されていなくても、「ユーザーモード」、「カーネルモード」の両方で起動することができるため、「ユーザーモード」のソフトウェアから「カーネルモード」のモジュールを呼び出すことで、システムレベルの特権が必要な機能を使用することができます。