PSP自作ソフトプログラミング/開発wiki
http://w.atwiki.jp/pspprogram/
PSP自作ソフトプログラミング/開発wiki
ja
2022-08-07T22:33:41+09:00
1659879221
-
対BOX
https://w.atwiki.jp/pspprogram/pages/76.html
な
2022-08-07T22:33:41+09:00
1659879221
-
メニュー
https://w.atwiki.jp/pspprogram/pages/2.html
**メニュー
-[[トップページ]]
-[[PSPのスペック]]
-[[開発環境のインストール>開発環境]]
--[[Windows>開発環境/cygwin]]
---[[Visual C++>開発環境/Visual C++]]
--[[Mac OSX>>開発環境/Mac OSX]]
--[[Linux>開発環境/linux]]
---[[Ubuntu-8.10>開発環境/linux/ubuntu-8.10]]
---[[Ubuntu-9.04>開発環境/linux/ubuntu-9.04]]
---[[Ubuntu-10.10>開発環境/linux/ubuntu-10.10]]
---[[Fedora-14>開発環境/linux/Fedora-14]]
----[[PSPLINK>開発環境/linux/ubuntu-9.04/PSPLINK]]
----[[Eclipse>開発環境/linux/ubuntu-9.04/Eclipse]]
-[[実行ファイルの作成]]
--[[PBPファイル>実行ファイルの作成/PBPファイル]]
--[[elfファイル>実行ファイルの作成/elfファイル]]
--[[prxファイル(プラグイン)]]
-[[チュートリアル]]
--[[SDKsample>チュートリアル/sample]]
--[[基本的なプログラム>チュートリアル/基本的なプログラム]]
#right() {#openclose(show=表示) {#left() {-[[文字の表示>チュートリアル/基本的なプログラム/文字の表示]]
-[[キー入力>http://www7.atwiki.jp/pspprogram/pages/73.html]]
-ドットを打つ
-bmpを表示
-wavを再生(オンメモリ)
-wavを再生(バッファリング)
}
}
}
-[[ライブラリのインストール>ライブラリ]]
-[[helloworldとか]]
-[[API]]
-[[過去ログ]]
-[[参考サイト]]
----
#openclose(show=最近更新されたページ){
#recent(10)
}
** @wiki
-[[プラグイン紹介>プラグイン]]
-[[まとめサイト作成支援ツール]]
-[[メニュー]]
-[[メニュー2]]
----
**リンク
-[[@wiki>>http://atwiki.jp]]
-[[@wikiご利用ガイド>>http://atwiki.jp/guide/]]
**他のサービス
-[[無料ホームページ作成>>http://atpages.jp]]
-[[無料ブログ作成>>http://atword.jp]]
-[[2ch型掲示板レンタル>>http://atchs.jp]]
-[[無料掲示板レンタル>>http://atbbs.jp]]
-[[お絵かきレンタル>>http://atpaint.jp/]]
-[[無料ソーシャルプロフ>>http://sns.atfb.jp/]]
// リンクを張るには "[" 2つで文字列を括ります。
// ">" の左側に文字、右側にURLを記述するとリンクになります
//**更新履歴
&link_editmenu(text=ここを編集)
PSP 自作
2013-12-14T15:31:59+09:00
1387002719
-
開発環境/linux/ubuntu-10.10
https://w.atwiki.jp/pspprogram/pages/74.html
*開発環境/linux/Ubuntu-10.10
ubuntu-10.10-desktop-amd64(VMware Player および Atom 510実機上でインストールまで確認)
記事の体裁を合わせるため一部記事内容を引き継いでいます。
**psptoolchainダウンロード前の準備
作業用ディレクトリを作っておくと後始末が楽です。
他のバージョンの記事参照。
他のバージョンに合わせてpsptmpとします。
>$ mkdir psptmp
>$ cd psptmp
**psptoolchainのダウンロード
適当な場所にディレクトリを作り、以下のコマンドを実行します。
>$ svn checkout http://psp.jim.sh/svn/psp/trunk/psptoolchain
**psptoolchainインストール前の準備
ダウンロードが正常に終了したらダウンロードされたファイル群の中のreadme-ubuntu.txtにしたがい以下のコマンドを実行します。
>$ sudo apt-get install build-essential autoconf automake bison flex libncurses5-dev libreadline-dev libusb-dev texinfo libgmp3-dev libmpfr-dev subversion
.bashrcファイルを編集しPATHを通します。
以下のコマンドでエディタに.bashrcを渡して、
>$ gedit ~/.bashrc
次の三行を追加、
>export PSPDEV="/usr/local/pspdev"
>export PSPSDK="$PSPDEV/psp/sdk"
>export PATH="$PATH:$PSPDEV/bin:$PSPSDK/bin"
以下のコマンドで変更を適用します。
>source ~/.bashrc
そのままではsvnコマンドでエラーを吐いて止まってしまうので、
それを防ぐために以下のコマンドを実行します。
>$ cd psptoolchain
>$ find ./ -name "*.sh" -exec sed -i 's%svn://svn\.ps2dev\.org%http://psp\.jim\.sh/svn%g' {} \;
>$ cd scripts
>$ find ./ -name "*.sh" -exec sed -i 's%svn://svn\.ps2dev\.org%http://psp\.jim\.sh/svn%g' {} \;
>$ cd ../
**psptoolchainのインストール
以下のコマンドでインストールします。
>$ sudo ./toolchain-sudo.sh
インストールができているか確認。
>$ psp-gcc -v
正しくインストールされていれば、
>Using built-in specs.
>Target: psp
>コンフィグオプション: ../configure --prefix=/usr/local/pspdev >--target=psp --enable-languages=c,c++ --with-newlib --with-gmp >--with-mpfr --enable-cxx-flags=-G0
>スレッドモデル: single
>gcc version 4.3.2 (GCC)
と表示されます。
**psplibrariesと関連ファイルのダウンロード
適当な場所に保存します。
>$ svn checkout http://psp.jim.sh/svn/psp/trunk/psplibraries
>$ sudo apt-get install libtool
**psplibrariesのインストール
以下のコマンドを実行します。
>$ cd psplibraries
>$ find ./ -name "*.sh" -exec sed -i 's%svn://svn\.ps2dev\.org%http://psp\.jim\.sh/svn%g' {} \;
>$ cd scripts
>$ find ./ -name "*.sh" -exec sed -i 's%svn://svn\.ps2dev\.org%http://psp\.jim\.sh/svn%g' {} \;
>$ cd ../
以下のコマンドでインストールします。
>sudo ./libraries-sudo.sh
お疲れさまでした。
誤字脱字、内容間違いなどあったら修正してください。
2011-05-05T21:56:15+09:00
1304600175
-
開発環境/linux
https://w.atwiki.jp/pspprogram/pages/16.html
*開発環境/linux
このページは、ある程度Linux(+それを取り巻くソフトウェア)についての知識があることを前提に書かれています。わからないことがあったら、うやむやにせず、すぐに調べましょう。
**psptoolchainをインストール・使用するのに
psptoolchainをインストールしてみればわかります。が、必要そうなソフト一覧を書いておきます。
-依存しているソフト/Devel
>-autoconf
>-automake
>-binutils
>-bison
>-doxygen
>-flex
>-gcc
>-make
>-readline
>-subversion
-依存しているソフト/Docs
>-texinfo
-依存しているソフト/Libs
>-ncurses
>-gmp
>-libgmp-devel
>-mpfr
>-libmpfr-devel
-依存しているソフト/Utils
>-patch
-依存しているソフト/Web
>-wget
**psptoolchainのインストールの前に
環境変数を設定する必要があったりなかったり。~/.profileか/etc/profileの最後の方に
>PSPDEV=/usr/local/pspdev
>PATH=$PATH:$PSPDEV/bin
>export PSPDEV PATH
と追加してください。
**psptoolchainのダウンロード
適当な場所にディレクトリを作り、以下のコマンドを実行します。
>$ svn checkout http://psp.jim.sh/svn/psp/trunk/psptoolchain
ずら〜っと、ダウンロードしたファイルの一覧が出力されます。
コマンドを実行したディレクトリに、psptoolchainというディレクトリができていれば成功だと思います。
**psptoolchainのインストール
root権限が必要になります。
># cd psptoolchain
># find ./ -name "*.sh" -exec sed -i 's%svn://svn\.ps2dev\.org%http://psp\.jim\.sh/svn%g' {} \;
># cd scripts
># find ./ -name "*.sh" -exec sed -i 's%svn://svn\.ps2dev\.org%http://psp\.jim\.sh/svn%g' {} \;
># cd ../
># sh ./toolchain.sh
エラーが表示されなければ成功です。
**エラーが起きたら
筆者の環境(Slackware Linux 12.1をフルインストール)ではエラーはありませんでしたが、エラーが起きる場合があるかもしれないです。まずエラーメッセージを調べ、何がいけなかったのか、どうすれば良いのかを調べ、自分で解決をしようと努力をしてみてください。
努力をしない奴は2chの開発スレで質問をしても回答が貰えない可能性があります。
もう自分で問題を解決する事は不可能だと感じたら、10分くらい悩んだ後に2chの開発スレで相談をしてみるのも良いでしょう。
2011-05-05T21:23:36+09:00
1304598216
-
PSPのスペック
https://w.atwiki.jp/pspprogram/pages/12.html
*PSPのスペック
**仕様
-CPU(Allegrex)
--MIPS 32bitコア R4000
--周波数:1〜333MHz
--浮動小数点計算能力:2.6Gflops(333MHz駆動時時)
--VFPU有り
---便利な定数がハードコード済み
----無限大, sqrt(2), sqrt(0.5), 2/sqrt(pi)
----pi, 2/pi, 1/pi, pi/4, pi/2, e
----log2(e), log10(e), ln(2), ln(10)
----2pi, pi/6, log10(2), log2(10)
----sqrt(3)/2
-サブCPU(MediaEngine)
--MIPS 32bitコア R4000
--周波数 : 1〜166MHz
--VFPU無し
-メインメモリ
--PSP-1000:32MB
--PSP-2000〜:64MB
-スクラッチパッド
--SRAM 16KB
--0x00010000 - 0x00014000
-ディスプレイ
--解像度:480x272
--色数:1,677万色(24bitカラー)
---ディザリングにより24bitカラーを実現
-GE(Graphics Engine)
--出力色数 : 32768, 65536, 1677万色のいずれか
--VRAM : 2MB
--テクスチャ
---最大テクスチャサイズ : 512x512
---最大ミップマップレベル数 : 8
---テクスチャ色数 : 16, 256, 32768, 65536, 1677万色のいずれか
---トライリニア補間
---クランプ/折り返し
---「swizzle」によるテクスチャキャッシュ効率改善
--パターンディザリング
---パターンは変更可能
--アルファブレンド
---さまざまなブレンド関数
--アルファテスト
--Z(デプス)テスト
--ステンシルテスト
--アンチエイリアシング
--カラーテスト
--ロジカルオペレーション
--スムースシェーディング
--長方形切り取り(Scissor)
--メインメモリ←→VRAM DMA転送
--指令リスト DMA転送
--ハードウェア Transform and Lighting
---最大ライト数 : 4
---クリッププレーン
---カリング
---線形フォグ
---頂点スキニング
---頂点ブレンディング
---高次パッチ
---4系統の行列(Projection, View, World, Texture)
---光沢を滑らかにする技術?
---法線の自動反転
---テクスチャ座標自動生成
-I/O
--IEEE 802.11b
--USB 2.0 High-speed
--MS Duo
--赤外線(IrDA) &bold(){(1000のみ)}
--リモコン端子
**注意点とかいろいろ
-CPU
--デフォルトでは222MHzで動作する。
--サブCPUはME(MediaEngine)と呼ばれている
---MediaEngineだからと言って、音楽再生などに特化しているのではない。
---メインメモリにはアクセス不可。
---MediaEngine内蔵SRAMのみが使用できる。
---メインCPUと同じ。処理に時間がかかる音楽や画像関係を処理すると便利。
---サブCPUの使用には、カーネルモードに入る必要があります。
---あるいは、sceMp3系のAPIを使用します。
--浮動小数点処理能力をフルに発揮するには、sceGum系のAPIか、インラインアセンブラによって、VFPUを使用する必要があります。
--整列されていないアドレスへのアクセスは、バスエラーを発生します。
---たとえば、int x=*(int *)0x10001;とすると、0x10001がsizeof(int)=4の倍数ではないので、バスエラーになります。
--メモリキャッシュの利用効率を上げるために、メモリ使用を局所化するか節約してください。
---キャッシュミスを起こした場合、メモリへのアクセスは68倍の時間がかかります。
-メインメモリ
--システムがメモリを8MBほど使用していて、実際は24MB程度しか使えない。
--PSP-2000で増えた32MBは、UMDのディスクキャッシュとして使用される。
--PSP-2000で増えた32MBを使用するには、対応したライブラリが必要とかなんとか。
-スクラッチパッド
--キャッシュミスの場合は、メインメモリよりも若干アクセスが速くなります。
--ただし、32KBしかないので慎重に使いましょう。
-ディスプレイ
--CPUの性能の関係か、VRAM直描きだとfpsが出ない。
--GUを使えば速度が出る。
---GUは「slice」や「swizzle」を使い、データを最適化しないとfpsが出ない。
---メモリ-VRAM間転送は、VRAM-VRAM間転送の1/10倍の速度しかでません。
--PSP-3000の画面で横線が入るのは仕様です。
-I/O
--MS Duo
---書き込み速度は、ある条件に基づいてsceIoWriteを使用すれば、改善されます。
---PCからフォーマットした場合(特にFAT32を使用した場合)、アクセスが遅くなる可能性があります。
--赤外線(IrDA) &bold(){(1000のみ)}
---公式ソフトでは使用されてない。(はず)
---自作ソフトではリモコンとかキーボード接続とかに使用されている。
--リモコン端子
---実はシリアルポートらしい。
---キーボードをつなげたりした人がいるとか。
---アナログ音声入力にもなる。
--USB
---PSPは必ずUSB機器として作動する(ホストとしては作動しない)。
2011-05-04T10:11:07+09:00
1304471467
-
チュートリアル/基本的なプログラム
https://w.atwiki.jp/pspprogram/pages/63.html
*チュートリアル/基本的なプログラム
このページでは、簡単なゲームが作れる程度の知識についてまとめます。
**[[文字の表示>チュートリアル/基本的なプログラム/文字の表示]]
pspDebugScreen*を使った文字表示。
**[[キー入力>チュートリアル/基本的なプログラム/キー入力]]
キーパッドを使ったキー入力。
**ドットを打つ
VRAMにアクセスして、画面にドットを打つ。
**bmpを表示
bmpファイルをメモリ上に展開し、VRAMにコピーして画面に表示します。
**wavを再生(オンメモリ)
wavファイルをメモリ上にコピーし、サウンドバッファにコピーします。
**wavを再生(バッファリング)
バッファを使い、読み込みに時間をかけないようにし、メモリ消費量を減らします。
2011-03-24T15:03:49+09:00
1300946629
-
開発環境/linux/Fedora-14
https://w.atwiki.jp/pspprogram/pages/75.html
*開発環境/linux/Fedora-14
Fedora-14
(編集者はwin7とのデュアルブートです)
記事の体裁を合わせるため一部記事内容を引き継いでいます。
**psptoolchainダウンロード前の準備
作業用ディレクトリを作っておくと後始末が楽です。
他のバージョンの記事参照。
他のバージョンに合わせてpsptmpとします。
>$ mkdir psptmp
>$ cd psptmp
**psptoolchainのダウンロード
適当な場所にディレクトリを作り、以下のコマンドを実行します。
>$ svn checkout http://psp.jim.sh/svn/psp/trunk/psptoolchain
**psptoolchainインストール前の準備
Ubuntuと違いyumコマンドを使います
>$ sudo yum install build-essential autoconf automake bison flex libncurses5-dev libreadline-dev libusb-dev texinfo libgmp3-dev libmpfr-dev subversion
.bashrcファイルを編集しPATHを通します。
以下のコマンドでエディタに.bashrcを渡して、
>$ gedit ~/.bashrc
次の三行を追加、
>export PSPDEV="/usr/local/pspdev"
>export PSPSDK="$PSPDEV/psp/sdk"
>export PATH="$PATH:$PSPDEV/bin:$PSPSDK/bin"
以下のコマンドで変更を適用します。
>source ~/.bashrc
そのままではsvnコマンドでエラーを吐いて止まってしまうので、
それを防ぐために以下のコマンドを実行します。
>$ cd psptoolchain
>$ find ./ -name "*.sh" -exec sed -i 's%svn://svn\.pspdev\.org%http://psp\.jim\.sh/svn%g' {} \;
>$ cd scripts
>$ find ./ -name "*.sh" -exec sed -i 's%svn://svn\.pspdev\.org%http://psp\.jim\.sh/svn%g' {} \;
>$ cd ../
(編集者は自力で書き換えましたw)
自力で書き換える場合は
>svn://svn.pspdev.org
のところを
>http://psp.jim.sh/svn
に書き換えてください
**psptoolchainのインストール
以下のコマンドでインストールします。
>$ sudo ./toolchain-sudo.sh
インストールができているか確認。
>$ psp-gcc -v
正しくインストールされていれば、
>Using built-in specs.
>Target: psp
>コンフィグオプション: ../configure --prefix=/usr/local/pspdev >--target=psp --enable-languages=c,c++ --with-newlib --with-gmp >--with-mpfr --enable-cxx-flags=-G0
>スレッドモデル: single
>gcc version 4.3.2 (GCC)
と表示されます。
**psplibrariesと関連ファイルのダウンロード
適当な場所に保存します。
>$ svn checkout http://psp.jim.sh/svn/psp/trunk/psplibraries
>$ sudo yum install libtool
**psplibrariesのインストール
以下のコマンドを実行します。
>$ cd psplibraries
>$ find ./ -name "*.sh" -exec sed -i 's%svn://svn\.pspdev\.org%http://psp\.jim\.sh/svn%g' {} \;
>$ cd scripts
>$ find ./ -name "*.sh" -exec sed -i 's%svn://svn\.pspdev\.org%http://psp\.jim\.sh/svn%g' {} \;
>$ cd ../
(前回と同じく書き換えました)
以下のコマンドでインストールします。
>sudo ./libraries-sudo.sh
お疲れさまでした。
誤字脱字、内容間違いなどあったら修正してください。
この記事は[[ここ>http://www7.atwiki.jp/pspprogram/pages/74.html]]を元に作らせていただきました
2011-03-15T22:34:06+09:00
1300196046
-
プラグイン/アーカイブ
https://w.atwiki.jp/pspprogram/pages/7.html
* アーカイブ
@wikiのwikiモードでは
#archive_log()
と入力することで、特定のウェブページを保存しておくことができます。
詳しくはこちらをご覧ください。
=>http://atwiki.jp/guide/25_171_ja.html
-----
たとえば、#archive_log()と入力すると以下のように表示されます。
保存したいURLとサイト名を入力して"アーカイブログ"をクリックしてみよう
- [[ぽぽぽ>http://www7.atwiki.jp/pspprogram/archive/20110217/154551da90584a22708bc82610468c5f]] (2011-02-17 02:30:50)
#archive_log()
2011-02-17T02:30:50+09:00
1297877450
-
チュートリアル/基本的なプログラム/キー入力
https://w.atwiki.jp/pspprogram/pages/73.html
#define printf pspDebugScreenPrintf
int main(void)
{
//コントローラーの状態を保存する構造体
SceCtrlData pad;
pspDebugScreenInit();
SetupCallbacks();
sceCtrlSetSamplingCycle(0);
//アナログパットの方つかうよ
sceCtrlSetSamplingMode(PSP_CTRL_MODE_ANALOG);
while(1){
pspDebugScreenSetXY(0, 2);
//押されてるボタン調べる
sceCtrlReadBufferPositive(&pad, 1);
//アナログスティックのx座標
printf("Analog X = %d ", pad.Lx);
//アナログのy座標
printf("Analog Y = %d \n", pad.Ly);
if (pad.Buttons != 0){
if (pad.Buttons & PSP_CTRL_SQUARE){
//四角ボタン押されてるときの処理
printf("Square pressed \n");
}
if (pad.Buttons & PSP_CTRL_TRIANGLE){
//三角ボタン押されてるときの処理 以下同じ
printf("Triangle pressed \n");
}
if (pad.Buttons & PSP_CTRL_CIRCLE){
printf("Cicle pressed \n");
}
if (pad.Buttons & PSP_CTRL_CROSS){
printf("Cross pressed \n");
}
if (pad.Buttons & PSP_CTRL_UP){
printf("Up pressed \n");
}
if (pad.Buttons & PSP_CTRL_DOWN){
printf("Down pressed \n");
}
if (pad.Buttons & PSP_CTRL_LEFT){
printf("Left pressed \n");
}
if (pad.Buttons & PSP_CTRL_RIGHT){
printf("Right pressed \n");
}
if (pad.Buttons & PSP_CTRL_START){
printf("Start pressed \n");
}
if (pad.Buttons & PSP_CTRL_SELECT){
printf("Select pressed \n");
}
if (pad.Buttons & PSP_CTRL_LTRIGGER){
printf("L-trigger pressed \n");
}
if (pad.Buttons & PSP_CTRL_RTRIGGER){
printf("R-trigger pressed \n");
}
}
}
sceKernelExitGame();
return 0;
}
2010-09-13T11:28:41+09:00
1284344921
-
API/utility
https://w.atwiki.jp/pspprogram/pages/72.html
***PSP API Reference: Utils API
-PSP API Reference: MT199937 API
sceKernelUtilsMt19937Init : MT コンテキストを初期化する
sceKernelUtilsMt19937UInt : MT 疑似乱数を生成する
-PSP API Reference: MD5 API
sceKernelUtilsMd5Digest : MD5 ハッシュを計算取得する
sceKernelUtilsMd5BlockInit : MD5 コンテキストを初期化する
sceKernelUtilsMd5BlockUpdate : MD5 ハッシュを更新する
sceKernelUtilsMd5BlockResult : MD5 ハッシュを取得する
-PSP API Reference: SHA1 API
sceKernelUtilsSha1Digest : SHA1 ハッシュを計算取得する
sceKernelUtilsSha1BlockInit : SHA1 コンテキストを初期化する
sceKernelUtilsSha1BlockUpdate : SHA1 ハッシュを更新する
sceKernelUtilsSha1BlockResult : SHA1 ハッシュを取得する
2010-09-13T11:23:49+09:00
1284344629