THE PSP攻略+α ~SONYへの挑戦状~

PSP関連ブログ?いいえ、ただのゆとりブログです

スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
[ --/--/-- --:-- ] スポンサー広告 | トラックバック(-) | コメント(-)

PSPのデバッグ用テキストをGUで表示してみたわけだが 

メイン処理の時間計測だけでなく、デバッグ用テキストを表示する時間を計測してみると、2ms以上も使っていたという話。
60fpsだと1フレームに使える時間は16.666...msなので、約1/8(1割以上)を占めることになる。
画面にすぐ反映させる必要があるので、キャッシュを介さずに直接メモリに書き込む必要があり、速度が遅くなってしまう模様。
また、GUと同時に使う場合は、GUの書き込みを待ってからテキストを書き込む必要があるので、そこでも無駄が発生してると思われる。
というわけで、GUを使ってテキストを描画してみたわけだが…

大して速くなんねぇwww
最近気づいたのだが、GUに送る座標とかの頂点情報(って名前なのか?)の書き込みが非常に遅い。
メイン部分はそこら辺を改良することで多少速度が速くなったりしたのだが、やはり遅い。
VRAMに直接書く場合は、処理はシンプルだが、VRAMへの書き込みが遅い。
GUを使って書く場合は、画面への転送は早いが、頂点情報の書き込みが遅い。
結局はメモリの書き込み速度をどうにかしない限り、速くならないのね…
あらかじめ256文字分の座標を代入した頂点情報を用意したら早くね?とか思って試したら表示が酷いことになった。
そりゃ同じ文字を複数の箇所で使おうと思ったら後に書き込んだ座標になる罠…
GU側で書き込み先のオフセットをずらしたり出来たような出来なかったような。
未だにGUの使い方がよくわからん。

まあ、一応数字上では多少は速くなってるので良いかな。
キャッシュの関係か、処理速度のばらつきが多少なくなってる気もする。
それでも昨日の作業時間は非常に惜しいですw

以下比較画像
高速化とか色々試してるので、配布してるものとは少し処理速度が違う。テキスト表示速度も2ms以下になっている。
雛の処理を追加したバイナリだと、111MHzで弾数を多くしたケロちゃんの弾幕が60fps以下になってしまってるが、高速化により60fpsで動作するようになってる。
内部仕様の変化についてはまた今度にでも。
ケロちゃんGUテキストテスト1
VRAMに直接書いたもの。
tがメインの使用時間で、pがこれらのテキストの表示時間。
合計時間は15435us = 15.4msで60fpsで収まる時間なのだが、フレームごとの時間にばらつきがあるので、56fpsとなっている。

ケロちゃんGUテキストテスト2
GUで描画したもの。
4bitのCLUT(カラールックアップテーブル)を使用。(つまり1バイトに2ピクセル分のデータを含んだパレット画像。おそらく最も転送速度が速い)
4bitだと16色使えるのだが、SDKで使ってるビットマップフォントを利用してるので、2色で十分。
というわけで少々元のデータを改変して影の表示を出来るようにした。
背景が黒っぽいから分かり辛いけど^^;
まだ13色も余ってるから文字をグラデーションっぽくしたら格好良いかもね。
弾と重なってる部分をよく見ればわかるが、背景を半透明で合成している。
文字色、背景色、影の色は32bitで指定できるので、こういった半透明合成もできる。
VRAM直書きでも、自前で計算すればできるけど…

処理時間についてだが、tは文字表示時間も含めている。
GUの描画待ち時間とか表示しようとすると、結局VRAMに直接書く必要があるんだよね…
文字表示に使ってる時間は"7"なので、1257us。
VRAM直書きに比べると550us程度早い。
だが、SDKのデバッグ関数で表示した文字の処理速度は含まれて居ない。(影のついてないもの)
つまり、処理速度は大して変わってない^^;
処理速度は安定しているので、60fpsを保っている。

ケロちゃんGUテキストテスト3
フォントデータに記号やら罫線が含まれていたので、使ってみた。
変数の名前からしてMSXのフォント?
ちょっとウィンドウっぽくなってかっこよくなった希ガスw


ライブラリ化できるように個別に作ってあるので、欲しい人が居れば配布します。
ただし、私は関数名を考えるのが苦手なので、格好良い名前を考えることw
文字表示前に1回だけ呼ぶテクスチャの切り替え関数、表示位置の設定関数(列、行を指定)、文字色設定関数、背景色設定関数、影の色設定関数、printfチックな文字表示関数で構成されてます。


所詮デバッグ用なんで、プレイ時には表示しないからVRAM直書きでも良かったかもね。
次はShift_JISに対応した全角文字が必要になってくるかなぁ…
やっぱり東雲フォントが定番なんだろうか。Windows標準のフォントはライセンス的に駄目なんだろうね。
GUだとテクスチャーの切り替えで大分遅くなりそうだな…
SDL_ttfでも使われてるfreetypeとやらが便利そうだが、使い方わかんね。
ところでマイクロセカンドはusでいいのか?ここんところもよくわからんw
[ 2009/07/21 13:21 ] 自作ソフト類 | TB(0) | CM(14)
No.783
風雨に負けずなんですが
PSP-2000で起動しますか?

なんどもやってるけどなんか起動→メモステ読み込み→メモステ読み込みでフリーズorブラックアウトになっちゃうんですが

理由わかりますか?

なんどもやったけどダメでした

できればでいいのでフォルダ構成を教えてください


[ 2009/07/27(月) 22:25 ] [ 編集 ]
No.784
当方はPSP-1000しか所持していないので、それ以外はわからないですが、CFW(3.71以降)さえ入っていれば動くはずです。
ブラックアウトの原因は、ファイルが足りない(有無のチェックを行っていない)、サウンドの形式が間違ってる(ライブラリの仕様)の2つが有力です。
エスパーの資格を持っていないのでこれ以上はわかりません。
フォルダ構造といっても、ただすべてのファイルを同じところに突っ込むだけなので、大して特殊ではないです。
[ 2009/07/28(火) 06:48 ] [ 編集 ]
No.785
あと一つ
bmpファイルの画像がバグ(?)っぽくなってしまうのは仕様ですか?
[ 2009/07/28(火) 09:51 ] [ 編集 ]
No.786
仕様です。
[ 2009/07/28(火) 14:53 ] [ 編集 ]
No.787
ttp://www1.axfc.net/uploader/Img/so/53729

これがPSPフォルダの構成なんですが
これであってますか?

これであってるならできるともうんですが
できないんです
[ 2009/07/28(火) 17:53 ] [ 編集 ]
No.788
ファイルは足りてますね。
上でも書いたように、後はサウンド周りの問題しか予測はできません。
wav、mp3共に指定のフォーマットに正常に変換されてるか確認してみてください。
[ 2009/07/28(火) 19:09 ] [ 編集 ]
No.789
何度やってもダメですね・・・

なにか特定なkbbsじゃないと認識しないなどの設定はしてますか?

度々申し訳ありません
[ 2009/07/29(水) 00:33 ] [ 編集 ]
No.790
kbbsとは何でしょうか?
ビットレート(bps)のことを言っているのなら、他の方が作成したライブラリを使用してますが、CBRだけでなくVBRにも対応してるので、不定なものでも再生できるかと思います。
当方ではMPEG1-layer3の128kbpsのCBRとABRで動作を確認してます。
変換後のwav、mp3のフォーマットを調べて、指定のフォーマットになっているのならこれ以上はわかりません。
[ 2009/07/29(水) 11:27 ] [ 編集 ]
No.791
はい
わかりました

自分でもCFWのバージョンを下げたり

メモステのフォーマットなどをして
試行錯誤してみます

度々応えていただいてありがとうございました

私はあなたに協力・応援しようと思います

なにか協力できるようなことがあったら
できるだけ協力させて下さい
[ 2009/07/29(水) 12:30 ] [ 編集 ]
No.792
すみません

自分のPSPでメモステのフォーマットしたらできました

こういうことは得意なほうなのに・・・・・・・・・・・恥ずかしい

いろいろ迷惑をかけてしまって本当に申し訳ありませんでした
[ 2009/07/29(水) 20:22 ] [ 編集 ]
No.793
ハードに問題があるのは非常に確率が低いので気付き辛いですからね…
PSP向けのプログラムを組むときも、よくハードの仕様に引っかかりますw
無事に起動できたようでよかったです。
[ 2009/07/29(水) 21:26 ] [ 編集 ]
No.794
質問ばかりで申し訳ありませんが

ループ地点が微妙なのは仕様ですか?

それともPSPが対応しきれてないだけ?
[ 2009/07/29(水) 23:22 ] [ 編集 ]
No.795
ループ地点はサンプル単位で指定できるので、綺麗なループになるはずです。
ファイルの終端まで来たらループ地点まで戻る仕組みなので、元ファイルが長すぎるとループ地点が狂います。
おそらく、抽出時かエンコード時にずれてる可能性があります。
当方ではTHxxBGMのNative形式で出力で動作を確認しています。
[ 2009/07/30(木) 08:17 ] [ 編集 ]
No.796
ループ地点が狂っているというか

ループ地点はあっているけど
曲終了~ループ開始地点まで

1秒くらい間が空いているんですよね

俺のPSPでも画面が録画できればいいなぁ

・・・

まぁこちらもがんばってみます^^;

これからもがんばってください
[ 2009/07/31(金) 00:02 ] [ 編集 ]
コメントの投稿













管理者にだけ表示を許可する
プロフィール

七次元

Author:七次元
永遠の18才
夢を追い求める学生
プログラミング初心者(笑)
愛用言語はHSP(スイーツ)
プログラマーを目指すものの「C言語?読むだけ^^」「C++?知らんがな。クラスって何?おいしいの?」
というゆとりっぷり。
Delphi入れたりVC++2008入れたり迷走中。
夢はコミケで何かやりたい。一般参加すらしたこと無いけど。
PSP-1000(CFW)持ち。PSP-4000マダー?
よく難波周辺のゲーセンに出没するらしい。
STGも格げーも初心者。
ろ、ロリコンちゃうわ!!!

連絡先:homepage_touroku[a]yahoo.co.jp
(メールはほとんど確認してません。掲示板に書き込むのが確実です)

関連リンク
そふとうぇあこうかいじょ
公開したファイルが置いてあります。

掲示板
連絡やら雑談やら適当にどうぞ。
カウンター



現在の閲覧者数:
ブロとも申請フォーム


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。