Hello World のビルド
PSP プログラミング2013年8月23日
では実際にプログラムを作ってみましょう!
初めは Hello World
を画面に表示させるというのが慣習ですので作ってみます。
プロジェクトの作成とビルド
- プロジェクトの作成 のとおりにプロジェクトを作成します。
「ソリューションのディレクトリを作成」のチェックを外しておきましょう。 - ソリューションが作成されたら「ソリューション エクスプローラー」でプロジェクトを右クリックして、「追加(D)」→「新しい項目(W)...」を選択します。
- 出てきたウィンドウで「C++ ファイル (.cpp)」を選び、ファイル名に「main.c」と入力します。
ファイルが作成されますので以下の枠内の内容をコピーして保存します。
#include <pspkernel.h>
#include <pspdebug.h>
PSP_MODULE_INFO("Hello World", PSP_MODULE_USER, 1, 1);
PSP_MAIN_THREAD_ATTR(PSP_THREAD_ATTR_USER);
int main(int argc, char *argv[])
{
pspDebugScreenInit();
pspDebugScreenSetXY(0, 0);
pspDebugScreenPrintf("Hello World!!");
return 0;
}
- 続いて Makefile の作成 で作成した Makefile をプロジェクトフォルダー1にコピーします。
- ソリューションを保存して「ビルド」をクリックします。
下部の「出力」でビルドが正常に完了したのを確認すると、プロジェクトフォルダー1に EBOOT.PBP
が出力されているはずです。
転送
- PC でメモリースティックを開いて「PSP」→「GAME」と開きます。
- 適当な名前 のフォルダーを半角英数字(
UPDATE
以外)で作成し、生成されたEBOOT.PBP
をその中にコピーします。
起動
- PSP を起動して XMB の「ゲーム」を開きます。
- Makefile で指定したタイトルのゲームを一覧から選択して起動します。
- 画面に以下のように黒地に白文字で
Hello World!!
と表示されれば成功です。
HOME ボタンのための処理を書いていないので、電源を切って終了します。
まとめ
PSP のプログラムを作るときは、プロジェクトを作成してから Makefile とソースコードを記述していきます。コンパイラーはこの Makefile がないとコンパイルやリンクの作業を行うことができません。
また、今回のプログラムはデバッグスクリーンという機能で文字の表示を行いました。この機能は日本語の表示には対応していませんが、デバッグ用途での文字列出力には便利に使用することができます。 CFW ではプラグインの設定画面などでも頻繁に使用されている機能です。
API リファレンス
PSP_MODULE_INFO(
const char [27] name,
unsigned short attributes,
unsigned char major_version,
unsigned char minor_version
);
モジュールの情報について指定します。必須です。
name
-プログラムの名前(半角英数字)attributes
-実行モードmajor_version
-メジャー・バージョンminor_version
-マイナー・バージョン
実行モードには次の定数が定義されています。
PSP_MODULE_KERNEL (0x1000)
- カーネルモードPSP_MODULE_USER (0)
- ユーザーモード
PSP_MAIN_THREAD_ATTR(unsigned int attr);
メインスレッドの種類を指定します。
attr
-メインスレッドの種類。
スレッドの種類には次の定数が定義されています。
PSP_THREAD_ATTR_VFPU
- VFPU(ベクトル演算を行うための FPU)へのアクセスを有効化PSP_THREAD_ATTR_USER
- ユーザーモードPSP_THREAD_ATTR_USBWLAN
- USB/無線 LAN の API を有効化PSP_THREAD_ATTR_VSH
- VSH の API を有効化PSP_THREAD_ATTR_SCRATCH_SRAM
- スクラッチパッドメモリーを使用(Ver 1.0 では使用不可)PSP_THREAD_ATTR_NO_FILLSTACK
- スタックの0xFF
クリアを無効化PSP_THREAD_ATTR_CLEAR_STACK
- スレッド削除時にスタックをクリア0
- カーネルモード
void pspDebugScreenInit(void);
デバッグスクリーン機能を初期化します。
void pspDebugScreenSetXY(int x, int y);
デバッグスクリーンの座標を指定します。
x
-出力する横位置。単位は文字で、0文字目からスタート。y
-出力する縦位置。単位は文字で、0行目からスタート。
void pspDebugScreenPrintf(const char *fmt, ...);
デバッグスクリーンで文字を出力します。
fmt
-出力する書式指定付文字列(半角英数字)。printf と同様。
void pspDebugScreenClear(void);
デバッグスクリーンをクリアします。
脚注
- 通常は「ドキュメント」→「Visual Studio 2017」→「Projects」→「プロジェクト名」になります↩