2005/08/27 土

PSPSDK による PSP 自作アプリ開発環境構築とサンプルアプリ

しばらく PSPKick と PSP Rhythm Composer で遊んでいたら、突発的に自作アプリを作りたくなったので、Mac OS X 上に PSP アプリの開発環境を構築してみました。

PSP 関連のツールはどうしても Windows 用ばかりになってしまい、開発環境もそうかと思っていました。が、PS2DEV が提供している PSPSDK を始めとする各種ツールは UNIX 系 OS で利用することを前提に作られているので、FreeBSD ベース の Mac OS X でも利用可能です。もちろん Cygwin をいれた Windows でも OK で、どの OS に入れても基本的に使い方は変わりません。

以下にその環境構築手順と使い方をまとめておきます。ついでに、PSPSDK に付属のサンプル2つを組み合わせて作ったポリゴンの立方体をアナログスティックでグルグル回して遊ぶ(?)サンプルと、偉大なる先人SEC (Saturn Expedition Commitee) の nem 氏が公開している「HelloPSP R1」を PSPSDK 環境向けに port したものを置いておきます。興味のある方はいじってみて下さい。

img2005082702.jpg img2005082701.jpg img2005082705.jpg

さて、何から作ろうかなぁ。グラフィック系のサンプルを動かしているだけでもかなり楽しい♪ Let's hack PSP !

■ PSPSDK による開発環境構築手順

最終更新日:2006.08.25 (binutils の make に関する記述を追加)

必要なモノ
  • コマンドライン操作の基本的な知識
  • gcc などの基本的な開発環境ツール (のできれば最新版)
  • AutoconfAutomake の最新版 (今回は autoconf-2.59.tar.gz と automake-1.9.6.tar.gz を落としていれた)
  • Subversion (SVN) (PSPSDK を含む各ファイルの最新版を落とすのに必要)
  • Wget (なくてもなんとかなる → 後述)
  • Doxygen (これがあると /usr/local/pspdev/psp/sdk/doc 以下にドキュメントが作られる。なくても構築は進む)

※ 上記すべて GUI 版ではダメです(^^;)。Mac OS X なら Fink を使ってインストールするのが簡単でしょう

構築手順
  1. 適当な場所に作業ディレクトリを作って、コマンドライン上からそこへ移動する
    $ mkdir psptmp
    $ cd psptmp
  2. psptoolchain と呼ばれる PSP 開発環境の自動構築ツールの最新版を、SVN を使ってチェックアウトする
    $ svn checkout svn://svn.pspdev.org/psp/trunk/psptoolchain
  3. 生成された psptoolchain ディレクトリに入り、toolchain.sh を実行する。/usr/local/pspdev 以下にインストールされるので、必要なら chown や chmod で権限を手に入れておく
    $ cd psptoolchain
    $ sh toolchain.sh
  4. 処理が終わるまでかなり時間がかかるので、PSP でもしながらしばらく待つ。このとき最初に以下のファイルをダウンロードしに行くので、あらかじめ手に入れておき psptoolchain ディレクトリにいれておくとちょっとは早いと思う。また、そうしておけば wget が入ってなくても大丈夫。gdb はデフォルトでは使わないのでなくても OK
    • binutils-2.16.1.tar.gz
    • gcc-4.0.2.tar.bz2
    • newlib-1.13.0.tar.gz
    • gdb-6.3.tar.bz
  5. エラーが出たら途中からやりなおし。toolchain.sh にオプションを渡すことで一部だけ処理できる (詳細は README.TXT 参照のこと)。ここで binutils の make に失敗する場合は、toolchain.sh を以下のように修正する
       ## Build the source.
       $MAKE clean; $MAKE || { echo "ERROR BUILDING BINUTILS"; exit; }
       ↓
       $MAKE clean; $MAKE -r || { echo "ERROR BUILDING BINUTILS"; exit; }
    
  6. 構築処理が無事終了したら /usr/local/pspdev/bin にパスを通しておく (以下は bash の例)。.bash_profile などに書いておくと便利
    $ export PSPDEV="/usr/local/pspdev"
    $ export PATH="$PATH:$PSPDEV/bin"
  7. /usr/local/pspdev/psp/sdk/samples 以下にある好きなサンプルをコンパイルしてみる。EBOOT.PBP をはじめとするいくつかのファイルができればコンパイル成功
    $ cd /usr/local/pspdev/psp/sdk/samples/controller/basic
    $ ls
    Makefile        main.c
    $ make
    (省略)
    $ ls
    EBOOT.PBP               PARAM.SFO               main.c
    Makefile                controller_basic.elf    main.o
  8. PSP のバージョンが v1.5 の人は以下のようにして v1.5 用の実行ファイルを生成する。末尾に「%」が付いたディレクトリとついてないディレクトリが生成され、それぞれの中に EBOOT.PBP が入っていれば成功
    $ make kxploit
    (省略)
    $ls
    EBOOT.PBP               controller_basic        main.c
    Makefile                controller_basic%       main.o
    PARAM.SFO               controller_basic.elf
  9. v1.0 の人は EBOOT.PBP を適当なディレクトリにいれてそのディレクトリを、v1.5 の人は前述のディレクトリ2つを、 PSP のメモリースティックの「/PSP/GAME/」に入れて、無事にサンプルアプリが起動すれば環境構築完了

■ sample/controller/basic と sample/gu/cube を組み合わせたサンプル

キー入力とポリゴン表示で遊んでみたくて作ったサンプルです。sample/controller/basic と sample/gu/cube を組み合わせています。テクスチャを交換している以外はほぼそのままマージという(^^;

ダウンロード:cubecontrol.tgz

詳しい使い方は README.txt をご覧下さい。

■ PSPSDK 版「HelloPSP R1」

偉大なる先人である SEC (Saturn Expedition Commitee) の nem 氏が公開している「HelloPSP」を、psptoolchain でコンパイルしやすいようにどなたかが変更して PSPwiki にアップされたモノに修正を加え、PSPSDK 環境でコンパイルできるようにしたものです。以下の点を変更しました。

  • pg.c 内の psp〜 で始まる関数を pspdisplay.h を include した上で sce〜 に変更
  • 起動処理や START による終了処理などを PSPSDK に合わせる
  • font.c のバグ(?)を解消
  • Makefile を PSPSDK のサンプルを参考に用意

この port にどれだけの意味があるかはわかりませんが(^^;)。ただ、初期のころに作られたアプリはこの HelloPSP がベースになっているものが多く、公開されているソースを参考にしようと思っても PSPSDK 環境ではコンパイルが通らなかったりします。そういう場合は上のように修正すれば大抵は動くようになるかと思います。また、outpatch と elf2pbp を使わないようになっています。

ダウンロード:hellopsp_pspsdk.tgz

詳しい使い方は README.txt をご覧下さい。てゆうか、既出だったらごめんなさい(^^;

■ EBOOT.PBP や PARAM.SFO をいじる

今回の手順で開発環境をインストールすると、PBP ファイルや SFO ファイルをいじるツールも一緒に付いてきます。mksfo で SFO ファイルの生成、pack-pbp で SFO ファイルやアイコンファイル (PNG ファイル) から EBOOT.PBP を生成、unpack-pbp で EBOOT.PBP の分解ができます。これらを組み合わせれば v1.0 用の EBOOT.PBP を v1.5 用に変換したり、その逆をやったり、アイコンや背景画像、アプリ名を変更したりできるのでなかなか重宝しますよ。スクリプトにも組み込めて便利です。

pack-pbp と unpack-pbp は oopo.net consoledev から単体で完結している C ソースが落とせるので、単体でコンパイルしても使うことができます。開発環境を入れる気はないけど、Windows 用の変換ツールばかりでうんざりな人や、GUI が嫌いな人は使ってみましょう。

■ 上記以外の参考サイト

■ いま作ってるモノ

5x5 より大きいサイズで遊べるルービックキューブか、やっぱり自分が納得できる(←ここ重要)テトリスが作りたくっていろいろ実験中です。とりあえず PNG ファイルのスライドショーみたいなのとか、1カ所しか動かないルービックキューブ未満なのとか、変なサンプルをたくさん作ってます。

img2005082703.jpg img2005082704.jpg

グラフィック関係は 2D、3D とも大分わかってきた感じ。CG 検定1級が意外なところで役に立ってますw 音関係はまだ未着手。普通にデータ流せば鳴るのかな…?

Posted by ooba at 08:08 | Comments (1) | TrackBacks (6) | このエントリーを含むはてなブックマーク
Trackbacks
TrackBack URL: http://www.bricklife.com/mt/mt-tb.cgi/490
LUMINES remixer 製作記 #1 〜 LUMINES をしゃぶりつくそう
Excerpt: PSP アプリの開発環境を導入してからというもの、PSP に触る機会が非常に多くなってきました。ゲームは「LUMINES」と「WIPEOUT PURE」しか持っ...
Weblog: bricklife.*
Tracked: 2005年9月16日 04:46
LUMINES remixer 製作記 #2 〜 作り始める前に
Excerpt: 白 PSP が発売されて、ますます v2.0 の PSP が欲しくなってきた今日この頃です。今回例の「□ボタン」の構造も改善されて、初期型ユーザとしてはかなり心...
Weblog: bricklife.*
Tracked: 2005年9月16日 04:48
[PSP]PSPの開発環境をLinuxに構築
Excerpt: 学園祭にPSPアプリを出したいので、久しぶりにPSPの環境構築。以前インストールしたときはかなり苦戦したので、今回も相当の覚悟をしていたのだけど、拍子抜けするほ...
Weblog: はてな?ダイアリー
Tracked: 2005年10月 3日 00:06
PSPにウィルス感染?!
Excerpt: ニュースサイトを見ていると、びっくりする記事がありました。 PSPを狙う初のトロ
Weblog: にゃんたこす!徒然草。
Tracked: 2005年10月 7日 21:58
Wellbutrin.
Excerpt: Where can i purchase wellbutrin. Wellbutrin sr.
Weblog: Using wellbutrin after heart attack.
Tracked: 2007年11月 4日 17:07
Medication ultram.
Excerpt: Ultram. Ultram er.
Weblog: Ultram.
Tracked: 2007年11月 6日 00:02
Comments
1 : name: ミュー date: 2010/02/03 21:24 [RES]

PSP改造好きの中三です。
PSPの自作アプリが作りたいのですが説明してるサイトがすくなくこのサイトにたどり着き参考にさせてもらい今PSPの自作アプリ開発環境をubuntuに導入しています。質問ですが
@ubuntu:~/psptmp/psptoolchain$ sh toolchain.sh
のところまではこのサイト通りできたのですがこれを入力すると
toolchain.sh: 14: Syntax error: "(" unexpected
とエラーがでてtoolchain.shを
## Build the source.
$MAKE clean; $MAKE || { echo "ERROR BUILDING BINUTILS"; exit; }

$MAKE clean; $MAKE -r || { echo "ERROR BUILDING BINUTILS"; exit; }
と書き換えようとしてもそのような記述が見当たりません。どうすればいいのでしょうか。教えてください

Post a comment




Powered by Movable Type 4.0