「DX Library Portable」を改造してみた

05-28,2013

いろいろと落ち着いてきた感じなので、ちょっとPSP関係の記事書いてみます。

yreeen さんにより開発されている DXライブラリPortable についてですが
1年以上?開発ストップしている状態です。
(そういえばDXPのC++版を作るみたいな話がでてた気がするけどどうなったんだろ?)

さらに 後藤 さんが機能追加をした「DX Library Portable Kai」も更新がなく
公開していたblog自体消したみたいでもうDLできません。

そういうわけでDXPは更新が完全に止まってるみたいですが
某所でOGG対応してほしいよーという話になったので
後藤さんのをさらに改造とかバグ修正とかいろいろ弄ってみました。
(今更PSPの需要があるのかが疑問だけど)

https://github.com/mafu9/dxlibp-kai

弄る前から結構コーディングスタイルが混在してたので
時間があったら書き直したいなーと思っていますが
いかんせんそこまで時間がとれません。

詳細はdocディレクトリ内のれどめやコミットログを読んでください。
要望・バグ修正はできる範囲なら対応するつもりです。

COMMENT

こんにちは、初めまして。
PSPでSimpleColockを作った作者なんですが、
ぜひ使わせていただきたいと思いますので、よろしくお願いします!
2013/05/28(火) 22:32:34 |URL|satoshifukusima #- [EDIT]
>>satoshifukusimaさん
はじめまして。
どうぞどうぞ、と言いたいところですが
音声再生で最後にノイズが入るみたいなのでお気をつけください。
原因は目下調査中です……。
2013/06/07(金) 00:15:59 |URL|mafu #- [EDIT]
音声ノイズは確か確保したメモリのゼロクリア処理を追加することで直るはずです…
記憶が曖昧ですいませんm(__)m
2013/07/26(金) 03:19:10 |URL|Dadrfy #- [EDIT]
>>Dadrfyさん
情報ありがとうございます!(というかこちらこそ勝手に弄っちゃってすいません)
実はゼロクリア処理はすでにあるんですよね…(sound/sound.cの154行目)
OGGとWAVだとWAVのほうがノイズがひどいので
その辺りが手がかりだと思うんですがよくわかんないです^^;
2013/07/27(土) 21:45:32 |URL|mafu #- [EDIT]
遅くなりましたが、音声ノイズバグの修正しました
バッファサイズの計算ミスでバッファオーバーランを引き起こしていたのが原因でした
2013/09/15(日) 01:11:19 |URL|mafu #- [EDIT]
mafuさんお久しぶりです&更新お疲れさまです~ ありがたく使わせていただきます(*´ω`*)
2013/09/24(火) 23:30:53 |URL|pan_nyaa #- [EDIT]
はじめまして
こんにちは。
DXlibraryPortableの更新が止まったことが前から残念に思ってましたが、このブログを見つけて、とても嬉しく思いました。
早速ダウンロードさせて頂きましたが、文字化けしてしまって上手くビルドが出来ません^^;
誠に申し訳ございませんが、他のアップローダーにアップロードをお願いしていいですか?
宜しくお願いします。
2013/11/11(月) 00:46:35 |URL|メカ #- [EDIT]
すみませんm(__)m
文字化け解決しました。
しかし何故か今まで出来ていたLoadSoundMemとPlaySoundMemでのmp3の再生
CreakHitKeyAll(?)の全てのキーの状態
が出来なくなっていました。
他の皆さんは出来ているのでしょうか?
2013/11/13(水) 00:30:38 |URL|メカ #- [EDIT]
>> pan_nyaaさん
お久しぶりですー


>> メカさん
はじめまして
文字化けの方は解決したようでなによりです

> LoadSoundMemとPlaySoundMemでのmp3の再生
えーと DX_SOUNDDATATYPE は何に設定しましたか?

> CreakHitKeyAll(?)の全てのキーの状態
たぶん CheakHitKeyAll のことだと思うんですが
入力関連は全く弄っていないので以前と動作が変わるということはないはずなのですが…

両方とも調べてみますが現時点ではちょっとわかんないです…すいませんm(__)m
2013/11/13(水) 01:34:34 |URL|mafu #- [EDIT]
すいません
原因分かりました(汗)
私の作ったプログラムで音楽再生時にCreakHitKeyAllの処理をするようにしてましたのでキーの方は何の問題もありませんでしたm(__)m
wavに変換すると音楽も再生され、CreakHitKeyAllも反応しました。
おそらくmp3の再生が出来ないバグが入っていると思います。
また、CheckSoundFile(?)によりサウンドの再生が終わるとサウンドハンドルを自動で停止、消去をするプログラムを作り、以前までは異常なく動いてましたが、wavを再生すると再生の途中で停止、消去の処理をするようになりました。
多分これもバグだと思います。
2013/11/13(水) 23:38:56 |URL|メカ #- [EDIT]
ちょっと分からないことがあるので質問ですが、pngを展開するのにかなりメモリ食うと聞きましたが、pngとjpegとbmpではどれが一番メモリ負担が少ないのでしょうか?また、サウンド系(mp3やwav)も教えて頂けると助かります。
PSPのメモリ不足には何年も苦しみました(汗)
何度も書き込みをしてごめんなさいm(__)m
2013/11/13(水) 23:47:13 |URL|メカ #- [EDIT]
>>メカさん
バグの状況がよくわからないので、SetCreateSoundDataTypeでなにを指定したなどもう少し具体的に教えていただけませんか?
できればその関数のソースコードを見せて頂けると一番わかりやすいのですが…。

>pngとjpegとbmpではどれが一番メモリ負担が少ないのでしょうか?
読み込んでしまえば最終的なメモリの使用量はどれも変わりません。
メモリ使用量を少なくしたいなら、
できるだけパレット画像を使うようにするか、
読み込んだ後にConvertGraphFormatで16bit形式(DXP_FMT_4444,DXP_FMT_5551,DXP_FMT_5650)に変換するなどをしてください。
サウンド系についてですが、
効果音などでDX_SOUNDDATATYPE_MEMNOPRESSを使用する場合はmp3もデコードされて意味がないのでwavでOKです。
BGMなどでDX_SOUNDDATATYPE_FILEやDX_SOUNDDATATYPE_MEMPRESSを使用する場合はmp3のほうがいいです。
2013/11/16(土) 14:14:25 |URL|mafu #- [EDIT]
返信遅れました
スマホで打っているのでコードなど詳しく打てなくて申し訳ないですが出来る限り分かりやすく説明いたします。
mp3のバグですが、DX_PLAYTYPE_BACKと
DX_PLAYTYPE_LOOPの両方を試しましたがどちらも再生出来ませんでした。
また、SetCreateSoundTypeも全て確かめましたがやはり再生されませんでした。

また、セーブ関数を使用した後に普通にゲームをプレイしているとメモリ不足らしき現象が起こりますが、セーブ関数を一度でも使用するとメモリも消費されるのでしょうか?
また、そのバグはwavの再生です。再生出来ずにそれでも無理して再生しようとするとフリーズします。
2013/11/24(日) 23:46:37 |URL|メカ #- [EDIT]
>>メカさん
おそらく音声関係は修正できたと思うので再度最新版をDLしてみてください。
セーブ関数を軽く試してみましたがメモリ不足は確認できませんでしたので、
(DXPとメカさんのコードのどちらかはわかりませんが)別のところでメモリがうまく開放されていないか、単純にメモリの使いすぎだと思われます。
GetMemoryFreeSize関数で怪しいところの空きメモリのログをとってみると、どこが原因かわかると思います。
2013/11/27(水) 05:02:54 |URL|mafu #- [EDIT]
わざわざ有難うございます!
SetSaveResourceの使い方が分からなかったので私が自分でicon0.pngなどのファイルをコピーするコードを作ったのを思い出しました
恐らくこれが原因かもしれないですm(__)m
すみませんがSetSaveResourceの使い方を分かりやすく教えて頂けないでしょうか
私はまだまだ初心者でヘッダーファイルの説明では分かりませんでした(汗
"Data/SAVE/ICON0.PNG"を設定したい時はどのようなコードを打てばいいのでしょうか?
2013/11/27(水) 21:46:57 |URL|メカ #- [EDIT]
>>メカさん
SetSaveResource(DXP_SAVE_RESOURCE_ICON0, ICON0ファイルのデータバッファのポインタ, ICON0ファイルのデータサイズ);
と指定してあげればOKです。
こんな感じでShowSaveDialogの拡張版を作ってあげるとすごく便利だと思います。
引数のicon0に"Data/SAVE/ICON0.PNG"を渡してあげればOKです。
http://ideone.com/vvisdO
2013/11/27(水) 22:42:46 |URL|mafu #- [EDIT]
返事遅くなりましたm(__)m
Ex関数分かりやすくて初心者の私でも使うことが出来ました(^^)
ありがとうございます。

また、まだmp3の再生が出来ませんでした(汗)
wavとoggは問題なく再生出来ました。
ひょっとして私だけなのでしょうか?
個人的にはoggを使っているので私だけでしたら特に問題はありません(^^)

また、バグの原因がわかりましたのでご報告しておきます。
バグの原因はメモリ不足ではなくダイアログ系の関数が原因でした。
ShowSaveDialogやShowTextDialogなどの関数使用後にPlaySoundMemを実行するとフリーズなどのバグが発生しました。
また、忙しくて時間が無かったため、実験したのはこの二つの関数だけなので詳細は分かりません
2013/12/23(月) 23:40:40 |URL|メカ #- [EDIT]

COMMENT FORM

  • URL:
  • comment:
  • password:
  • secret:
  • 管理者にだけ表示を許可する