PSP自作ソフト開発スレ ver.13
■ このスレッドは過去ログ倉庫に格納されています
*****完全sageマターリ進行!*****
自作ソフト開発者向けスレッドです。
要望・クレクレなどは作者本人が望んだ場合以外スルーで。
前スレ
PSP自作ソフト開発スレ ver.12
http://yuzuru.2ch.net/test/read.cgi/gameurawaza/1298123458/ >>477
使うなら必要だし、使わないなら必要ない。
PSP自作ソフトプログラミング/開発wiki の過去ログを辿ってきたんですが、
psptoolchainの質問はここでおkですか?
このスレでも何度か名前の挙がっている、Wololo氏のサイトに関するものなのですが。 http://wololo.net/wagic/2010/07/10/compiling-aquaria-on-the-psp-download-included/
またお前か! と言われかねないのですが、Wololo氏の上記ページに記されている作業を、
素人なりに自力だったり助力を得たりしつつ後追いしながらやってます
質問は、上記ページ Tweaking the Makefile 項目内の、
004-newlib-1.16.0.shの再インストールで手詰まりしてまして、
どのようにしたら良いかアドバイスをもらえないか、という事でさせていただきました
エラー内容は ターミナルで psptoolchain/scripts に移動後、
sudo ./004-newlib-1.16.0.sh を行うと、最後に
/bin/bash psp-cc: ファイルが見つかりません というエラーが出てしまいます
スクリーンショット
http://www5.puny.jp/uploader/download/1327649795.png (パス2ch)
ここまでやった全作業をテキストにまとめたもの
http://www5.puny.jp/uploader/download/1327649421.txt (パス2ch)
解決方法わかる方いらっしゃいましたら、アドバイスをお願いしたいです ccとcppとc++は拡張子が違うだけ というような記述をネットで得たので、
cp コマンドで psp-cppなどを /binに移動し、
rename で psp-cc と改名したら、ファイルが見つからないではなく別のエラーになったので、
素人知恵ながら、この方面でいいのかな、と予測していますが、どうなのでしょうか
また、その直後の作業で、
psptoolchain/scripts/newlib-1.16.0/newlib/stdlib.h
psptoolchain/scripts/newlib-1.16.0/newlib/libc/stdlib/strtod.c
の2つを編集する必要があると思うのですが、004-newlib-1.16.0を再インストールできていないからか、
この2つが該当ディレクトリ存在していないようです
長文になってしまったので、二分割になりました
宜しくお願いします >>487
psp-cc: psp-cc: "-c"はプリプロセッサに対する正常なオプションではありません
リネームの必要のない /usr/local/pspdev/psp/bash/psp-cc を /bash へコピーしても同じでした もしubuntuを使ってるならreadme-ubuntu.txtの通りにやれば出来るはずだけど。
.profileか.bashrcにpathの記述してないとかは無いと思うけど。 どうしてもこの作業を最後までやりとげたいので、もう一度最初からやってみます
sceGumMatrixMode( GU_MODEL );
sceGumLoadIdentity();
sceGumRotateX( X );
sceGuDrawArray( GU_SPRITES, GU_TEXTURE_32BITF|GU_COLOR_8888|GU_VERTEX_32BITF|GU_TRANSFORM_2D, 2, 0, v );
こういった感じのコードを書いたんですけど
何故か回転してくれません(描画自体はされます)
何か回転を無効化する関数などがあるのでしょうか
原因に思い当たる節のある方が居らっしゃるようでしたら教えてください
お願いします × sceGuDrawArray
○ sceGumDrawArray
つC:/pspsdk/psp/sdk/samples/gu/cube/cube.c >>493
その関数について調べてみたら正にそれが原因だと思われたので
早速sceGumDrawArrayに書き換えて実行してみたのですが何故か回転してくれませんでした…
とはいえ貴重かつ重要な情報ありがとうございました
GU_SPRITESやGU_DEPTH_TEST周辺の関係も調べてみます GU_TRANSFORM_3Dじゃないと、座標変換されないんじゃね? >>495
どうしてこんなことにも気付かないのかと落ち込みながら実行してみたのですが駄目でした。
まず初めにGU_TRANSFORM_2DからGU_TRANSFORM_3Dへの書き換えのみで
実行してみたのですが表示自体されなくなってしまいました
また深度バッファを疑い、sceGuDisable(GU_DEPTH_TEST)を加筆
vertex構造体のzが0.0fになっているのを確認し再度実行してみるも変わらず
ワールド変換の方法がいけないのかと思い
sceGumMatrixMode(GU_PROJECTION);
sceGumLoadIdentity();
sceGumOrtho(0, 480, 272, 0, -1, 1500);
を加えて再度実行してみたのですが相変わらず表示されません
他にも表示したい対象に sceGumTranslate や sceGuColor を試したのですが表示されませんでした
難しく考え過ぎでしょうか…何かもっと基本的なところに見落としがありそうな気がします
とにかく>>495さん貴重なアドバイスありがとうございました
他の見落としの可能性を探ってみます >>496
前やったことあるけどなぜか3DだとGU_SPRITESはうまく表示されなかった。
(やり方が間違ってたかもしれないが、3DサンプルでもGU_SPRITESは見たことない)
ほかのGU_TRIANGLESとかだと表示できたから一度試してみたら? >>497
はい。それらも既に試していますがやはり表示されませんでした
GU_SPRITESのサンプルはGUフォルダのspriteにあるのがそうです
GU_SPRITESはPC上のエミュレータで実行すると回転も出来るのですがPSP上だと正常に回転してくれません
PSP上では表示する時に頂点座標同士の関係が3軸それぞれに対して平行、または垂直になるように
自動補正されるのが原因のようです >>498
これ以上はもう少し具体的にコード晒してくれないと
断片的過ぎて原因わかんない。 >>499
やはりそうですか
と言っても実はintraFontに回転機能を付けようとしていただけなんです
ですが一応ソースファイルを貼っておきます
http://www1.axfc.net/uploader/Sc/so/320356.zip
私には何が原因か分かりませんでした
分かる方どうか啓蒙の一言をお願いします。
>>500
アップしたソースからは削り忘れてしまいましたが
sceGuEnable(GU_CULL_FACE)は使用していないので恐らくその線は無いかと思います libmenuで画面に文字表示しようと思ってるんですが、うまくいきません。(*.prx)
ビルドは通るんですが、いざPSPに入れて有効にすると何も表示されない
詳しい方教えて下さい
http://pastebin.com/ggpNCAhu 自分ではlibmInitBuffersの使い方が怪しいんだけど、よく分からない・・・ >>502
while(1)
{
libmInitBuffers(LIBM_DRAW_BLEND,PSP_DISPLAY_SETBUF_NEXTFRAME);
libmPrintXY(0,0,0xff20C0E6,0,"TEST");
sceDisplayWaitVblankStart();
sceKernelDelayThread(10000);
}
これでおk >>504
ありがとう
だがそうしてみたが動かなかった。。。 PSP_MODULE_INFO( "printf", PSP_MODULE_USER, 0, 0 );
のPSP_MODULE_USEをPSP_MODULE_KERNELに変える必要がある。
あと、delayは多いとちらつくので注意 >>505
libmenu付属のサンプルをいじって勉強してみるといいんじゃないかな
一から全て自分でやろうとすると打ち間違いや勘違いで動かない PSPプログラミングに半年ぶりに追加しました。
時刻の取得です。世界時計を作ってみました。
ぜひご覧ください。
http://chitoku.symphonic-net.com/pspprograming/
また、エラーコード一覧も作成しましたのでこちらもぜひご覧ください。 時計といえばさ、win7みたいなアナログ時計プラグインって無いよね scePowerTick
……って何に使うの??? >>513
1. 電源の操作をする関数の前に呼ぶ。
2. ディスプレイの節電モードから復帰。ループで呼べばずっと明るいまま。
今度記事書きます。 cmlibMenuの使い方が全然わかんねぇ…
サンプルもなにやらごちゃごちゃ
文字表示だけでいいから誰か教えてくださいぃぃぃ… もし具体的に質問できるならツイッターで聞けばいいんじゃね? >>516
「readme」があるなら読め!
それでも分からないなら、お前には無理だから諦めろ。 いまexploit探ししてるんだけど
改造したセーブデータ読み込めるんだけど
その後画面が真っ暗な状態が続いてどうしようもなくなる
BGMは流れ続ける
これはフリーズ? とても初歩的な質問で申し訳ないのですが、
ボタンの長押し対策はどのようにすればいいのでしょうか? 長押し対策というとボタンを押したときだけ反応させるって事かな?
前回のボタン状態を記憶しておき、今回と前回とでボタン状態に変化があって
尚かつ今回はボタンを押しているなら処理を行う、ってことをやればボタンを押した
瞬間を検出できるよ
ただし複数のボタンが同時に押されている場合にどう対応するかで実装の仕方が
分かれるでしょうね 他とちょっと違う所で確かPSPはボタンの状態取得の関数でボタンの押し下げてる時間も取得出来なかったか みのむしってどうなった?
最近はツイッターで誰かとやり取りしてる様子もないよな
フォローしてるひと報告よろ C++でprx作ったら
psp-ld: warning: cannot find entry symbol module_start; defaulting to 0000000000000000
ってワーニングがでるんですが、どうすればいいでしょうか プラグインのエントリポイントを作ってやればいいんじゃないかな ただでさえカーネルメモリ少ないから
肥大化しやすいC++はプラグインでは使わない方が… ゲーム中でもイヤホンとスピーカーの切り替えできるプラグインある?
Audioboostはゲーム中できない >>542
名前だけでも教えてもらえる?
参考にしたい mhp3plus誰か更新してくれんかね?nidの取得方法教えてくれたら自分でやる。どっちかお願い。 もしかしてscegublendfuncの引数ってglのblendfuncと逆だったりしますか? >>547
この関数を使ったプログラムを作った事ありますか? >>548
あるけど
第一引数を間違えてるんじゃないか?
一応両方の比較書いとくわ
OpenGLでのアルファブレンド
glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
PSPでのアルファブレンド
sceGuBlendFunc( GU_ADD, GU_SRC_ALPHA, GU_ONE_MINUS_SRC_ALPHA, 0, 0 ); >>549
ありがとうございます
この場合glBlendFuncの第一引数とsceGuBlendFuncの第二引数は新たに追加するフラグメントのα
glBlendFuncの第二引数とsceGuBlendFuncの第三引数は元々のフラグメントのα
元々のフラグメントのαはαの最大値から追加するフラグメントのαを引いたα値で描画される
という認識で間違いないでしょうか
またsceGuBlendFuncのコメントに書かれているフラグメント(のα)とは頂点構造体で指定したcolorのα
又はsendCommandiの88番で指定する値であってテクスチャそのものが持つα値で無いですよね? >>550
GEのコマンドには詳しくないけど
sendCommandiの88番はsceGuColorのことならその認識で合ってると思うよ
テクスチャがもつ色の扱いはsceGuTexFuncで設定するからね メモリースティックのアダプターに32GBのmicroSDを入れて使ったら異様に待ち時間が増えました
どうも空き容量を計算するのに手間取っているようです
空き容量はどうせいっぱいあるので、1GBとか適当に嘘の答えを一瞬で返すような
プラグインは作れませんか >>551
リファレンスにもあまり詳しく載ってるわけではないのでその辺りの事が良く分からないんですよね
srcが具体的に何を意味するのかが分からないとdstの意味も良くわからない >>554
グラ知識皆無だった自分が以前やったことだけど
PSPのGUはOpenGLライクだから
関数の仕様が分からない時はOpenGLでの同等の関数の解説読むとか
いっそ一度OpenGLでいろいろ遊んでみるとかして学んだよ >>555
やはり根底に3Dの知識が無いのに手を出したのはまずかったのでしょうか
マテリアル関連の情報をいろいろ集めてサンプルを弄って試してみたりはしているのですが
テクスチャや光の設定、頂点色等の要素が加わると
何が原因で現在の物が表示されているのか分からなくなります
windows環境でopenGLですか
遠回りに見えてそれが一番の近道なのかもしれません PSP-HUDとかだと sceDisplaySetFrameBuf関数 をフックして画面が描画される前にVRAMに書き込んでちらつきを防止する
っていうのを聞いたんだが、具体的にはいったいどんな処理をしているんでしょうか? sceDisplaySetFrameBufの引数としてバックバッファのアドレスが渡される
それ使って描画すればちらつかない >>560
ありがとうございます! 一応出来たのでソースのせときます
int sceDisplaySetFrameBuf_Ex(void *topaddr, int bufferwidth, int pixelformat, int sync){
if(hide == 1){
int offset = (0 + 25 * bufferwidth),n;
for(n = offset; n < (offset + bufferwidth * 2); n++){
*((int*)topaddr + n) = 0xFF0000FF; //y座標25に赤色の横線を引く
}
}
sceDisplaySetFrameBuf(topaddr,bufferwidth,pixelformat,sync);
return 0;
}
※plum氏のソースの一部を参考にさせてていただきました ロック時すべてのボタンを有効にするか、ロック機能を丸々潰すプラグインというが欲しいのですが
探しても見つからないので作ろうと思い、環境を整えたのですが
言語自体が未経験で何からすればいいのか分かりません そもそもすべてのボタンを有効にするんだったら、
HOLDにしなきゃいいだけだろ… 質問スレで勝手にホールドになっちゃうって嘆いてた子か? >>566
その人とは違いますが、ログ見たら同じような症状で質問があり
そういうプラグインは聞いたことがないと言うような流れだったのでこちらの知恵を借りに来ました >>561 の者ですが…
cmlibMenuで
int sceDisplaySetFrameBuf_Ex(void *topaddr, int bufferwidth, int pixelformat, int sync){
if(hide == 1){
dinfo.vinfo->buffer = topaddr;
libmPrintXY(0,264,WHITE,BLACK,"Hello World!",&dinfo);
}
sceDisplaySetFrameBuf(topaddr, bufferwidth, pixelformat, sync);
return 0;
}
でフックするとちらつかずに表示は出来ても、表示したままスリープが出来なくなってしまいました
どのような対処法がありますか? >>569
スリープする時に表示を消して、復帰後に表示を再開するようにしてみては? >>569
if( hide == 1 && topaddr != NULL){ >>569
ありがとうございます。おかげでできました。 連投スマセン
>>571
でした… お恥ずかしい… >>568
こんなニッチな要望に答えていただきありがとうございました。 逆汗したPspStates Experiment v1 for PSP SLIMのソースコード
http://www1.axfc.net/uploader/Sc/so/365969 逆汗したPspStates Experiment v1-v2 for PSP SLIMのソースコード
>>575はv1を少し修正したので削除しました
http://www1.axfc.net/uploader/Sc/so/366277 ■ このスレッドは過去ログ倉庫に格納されています