トップページgameurawaza
986コメント338KB

PSP自作ソフト開発スレ ver.10

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2009/09/20(日) 23:37:20ID:VMGMes0b
*****完全sageマターリ進行!*****

自作ソフト開発者向けスレッドです。
要望・クレクレなどは作者本人が望んだ場合以外スルーで。

前スレ
PSP自作ソフト開発スレ ver.9
http://schiphol.2ch.net/test/read.cgi/gameurawaza/1231340677/
0238名無しさん@お腹いっぱい。2009/12/10(木) 12:58:26ID:HyUO1YBO
>>237
それはただprxをビルドするだけのサンプルなので
prx側をアプリからロードして使う際に使用する関数一覧ファイル
(*.S)のエクスポートはされません

そのファイルを用意する方法が分からなくて
0239名無しさん@お腹いっぱい。2009/12/10(木) 13:04:13ID:UGwfOpNl
>>238
夕方くらいまででよければ昔やったのがあるはずなので
教えれるけど

最近使ってないので仕様変わってなければいいけど
0240名無しさん@お腹いっぱい。2009/12/10(木) 13:07:37ID:HyUO1YBO
>>239
助かります
時間はそちらの都合がつく時で構いません
お願いします
0241名無しさん@お腹いっぱい。2009/12/10(木) 18:46:13ID:gSjZmJpx
//prx本体
//ネットで転がってるサンプルだとprx内部でスレッドを起動してるのもあるけど
//そうじゃなくても動いた

#include <pspkernel.h>
#include <stdlib.h>

PSP_MODULE_INFO("TestPRX", PSP_MODULE_USER, 1, 0);
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);

void TestMain(void)
{
return;
}

int module_start(SceSize args, void *argp)
{
return 0;
}

int module_stop(void)
{
return 0;
}
0242名無しさん@お腹いっぱい。2009/12/10(木) 18:51:16ID:gSjZmJpx
//Sファイルを出力するのに必要なファイル
//インデントなしにそのまま貼り付ければOK
//カーネルモード関連の機能を使いたい場合は
//#でコメントにしてある方を使ってください。
//以下を拡張子expで保存してください

PSP_BEGIN_EXPORTS

PSP_EXPORT_START(syslib, 0, 0x8000)
PSP_EXPORT_FUNC_HASH(module_start)
PSP_EXPORT_VAR_HASH(module_info)
PSP_EXPORT_END

# カーネルメモリに読み込む場合
#PSP_EXPORT_START(TestPRX, 0, 0x4001)

# ユーザーメモリに読み込む場合
PSP_EXPORT_START(TestPRX, 0, 0x0001)
PSP_EXPORT_FUNC(TestMain)
PSP_EXPORT_END

PSP_END_EXPORTS
0243名無しさん@お腹いっぱい。2009/12/10(木) 18:53:35ID:gSjZmJpx
//makeile
//prx本体のソース名称はmain.cということになってますので
//自分の好きなように直してください。
//

TARGET = TestPRX
OBJS = main.o

INCDIR =
CFLAGS = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)

BUILD_PRX = 1
#これがSを出力するために必要
PRX_EXPORTS = $(TARGET).exp

LIBDIR =
#PSP_FW_VERSION=390
LDFLAGS = -mno-crt0 -nostartfiles
LIBS =

PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak
0244名無しさん@お腹いっぱい。2009/12/10(木) 18:56:09ID:gSjZmJpx
//ヘッダーは通常の手続きと同じです。
//module_startとmodule_stopは入れなくてOKです。
//モジュール関連の関数で呼びます。

void TestMain(void);
0245名無しさん@お腹いっぱい。2009/12/10(木) 18:56:49ID:gSjZmJpx
ミス

//ヘッダーは通常の手続きと同じです。
//module_startとmodule_stopは入れなくてOKです。
//prx関連の関数で呼びます。

void TestMain(void);
0246名無しさん@お腹いっぱい。2009/12/10(木) 18:59:42ID:gSjZmJpx
main.c
makefile
TestMain.exp
TestMain.h

これだけあればOKです
0247名無しさん@お腹いっぱい。2009/12/10(木) 22:32:14ID:qxRb0Pir
出先からなのでID変わってますが>>240です

>>241-246
詳しくありがとうございます
しかしprxビルドと同時にSファイルは
エクスポートされませんでした



>>246はロードされる側のprxをビルドする際に
必要なファイルですよね?

それなら言われてる通りですが


prxを使う側の場合はSファイルもないと
それらのファイルだけではビルド時に
リンク失敗してしまいます
0248名無しさん@お腹いっぱい。2009/12/11(金) 00:22:18ID:EeloYRHl
makefileの下記を追加修正してみてください
2つ目の修正はpsp-build-exportsの前はTABでいいのでインデント
を必ずいれてください。

LIBS =

LIBS = -lpspsdk

include $(PSPSDK)/lib/build.mak

include $(PSPSDK)/lib/build.mak

all:
psp-build-exports -s $(PRX_EXPORTS)

0249名無しさん@お腹いっぱい。2009/12/11(金) 14:32:48ID:GJFVZHiL
>>248

無事、Sファイルが作成されました
最後まで丁寧にありがとうございます
0250名無しさん@お腹いっぱい。2009/12/11(金) 17:35:51ID:y+YZK8+I
PSPSDKって何でkubridgeが同梱されてないんだろ?
0251名無しさん@お腹いっぱい。2009/12/11(金) 18:17:13ID:y+YZK8+I
kuKernelLoadModuleが気になってディスアセンブルしてみたんだが
nop
0x4c25ea72
二つの命令(?)が出てきた。二つ目をMIPSのオペコード表に照らし合わせるとMove to Loになるんだが・・・
意味がわからんorz
0252名無しさん@お腹いっぱい。2009/12/11(金) 19:52:49ID:WrjWqkzN
そもそもku系とsce系の違いがよくわからない俺
どっち使っても読み込めるし
PSPSDKに同梱しないのはCFWが追加した機能だからと予想
0253名無しさん@お腹いっぱい。2009/12/11(金) 20:43:15ID:y+YZK8+I
kuだとユーザーモードからカーネルモードの奴を呼べるらしい。
…もしかしてsceでもできる?
0254名無しさん@お腹いっぱい。2009/12/11(金) 22:50:45ID:WrjWqkzN
ユーザーモードでカーネル用の関数を呼ぶときは、カーネルモードのモジュール作って
sceで読み込んでるけど普通に使えてるなぁ
kuで呼び出してる他人のソースをsceに書き直しても普通に動いてた記憶が
0255名無しさん@お腹いっぱい。2009/12/11(金) 23:37:04ID:y+YZK8+I
まじか・・・
参考になるソース教えてくれると助かる。お願いします。
0256名無しさん@お腹いっぱい。2009/12/11(金) 23:59:02ID:WrjWqkzN
普通にkuじゃなくてsceで読み込んでるだけなんだがな…
モジュールを読み込んで実行する処理をまとめたpsp〜系の奴を主に使ってる
なんか俺違う話してるのかな…
0257名無しさん@お腹いっぱい。2009/12/12(土) 00:53:05ID:QSYSHAfn
psp〜系使った事ないんだよな・・・orz
0258名無しさん@お腹いっぱい。2009/12/12(土) 11:11:03ID:QSYSHAfn
pspLoadStartModuleだけだと動かないみたいなんだが、他に何か必要なのか?
fixupimportはユーザーモードで弾かれるから違うだろうし・・・
0259名無しさん@お腹いっぱい。2009/12/12(土) 12:21:05ID:cbMC3at6
この流れを見てたら自分も関数の一部を
プラグイン化することに興味が出てきて出来る範囲でやってみたのですが、
ロードは出来てるもののプラグイン上から関数を呼び出すと値が正しく返ってきません

その際のファイルです
ttp://www.dotup.org/uploda/www.dotup.org448652.zip.html

簡単で構わないので間違っているところがありましたら教えて下さい
0260名無しさん@お腹いっぱい。2009/12/12(土) 12:39:57ID:QSYSHAfn
ああ・・・うん・・・動いた。
まさかと思って戻り値じゃなくてポインタ渡しで値を取得したら普通に値が帰ってきました。
WrjWqkzN氏、こんなアフォにつきあってくれてありがとうございました。
0261名無しさん@お腹いっぱい。2009/12/12(土) 12:46:52ID:Jq60wD1H
ちょっと見ただけだがprxを使う側が拡張子がSのファイルを
結合してなさそうだな

prxの場合動的に読み込みするのでSファイルでどういうエントリが
あるか教える必要があるんだがそれを組み込まなければ正常に
動かないよ
0262名無しさん@お腹いっぱい。2009/12/12(土) 12:50:20ID:cbMC3at6
>>261
Sファイルはprx側(include/prx)をmakeすると作成されます
その後、prxをロードする側のメインアプリをmakeすれば
そのSファイルを取り込んでコンパイル完了します
0263名無しさん@お腹いっぱい。2009/12/12(土) 12:56:30ID:Jq60wD1H
このMyLib.oてのがそのSファイルのこと?
0264名無しさん@お腹いっぱい。2009/12/12(土) 13:01:22ID:Jq60wD1H
仕様が変わってないという前提になるけどうちの古いサンプルは
sceKernelLoadModuleは使ってないな

pspSdkLoadStartModuleでやってる
使い方はほぼ一緒だけど以前みたときは中でいろいろやってたな
0265名無しさん@お腹いっぱい。2009/12/12(土) 13:02:32ID:Jq60wD1H
サンプルにあわせると

loadResult = sceKernelLoadModule(path, 0, NULL);


loadResult = pspSdkLoadStartModule(path, PSP_MEMORY_PARTITION_USER);
とかかな
0266名無しさん@お腹いっぱい。2009/12/12(土) 13:07:46ID:cbMC3at6
>>263
そのファイルがそうです

>>265
その方法でprxをロードさせて試してみます
0267名無しさん@お腹いっぱい。2009/12/12(土) 13:25:15ID:cbMC3at6
prxをロードする部分を
pspSdkLoadStartModule("ms0:/TestPRX.prx", PSP_MEMORY_PARTITION_KERNEL);
に変えてやってみましたが

プラグイン上のaddTest関数(2つの引数をただ足した値を返す)を呼び出した際

ret = addTest(2,7);
//実行結果
printf("addTest(2,7) = %d\n",ret);

としたとき 2+7 の 9 はなく、まったく違った値が返ってきます
0268名無しさん@お腹いっぱい。2009/12/12(土) 14:09:11ID:Jq60wD1H
expの自前関数を定義するところなんだけど

PSP_EXPORT_FUNC_HASH(addTest)

PSP_EXPORT_FUNC(addTest)

かなあ
0269名無しさん@お腹いっぱい。2009/12/12(土) 14:29:02ID:cbMC3at6
>>268
前調べた時に PSP_EXPORT_FUNC は
結局 PSP_EXPORT_FUNC_HASH を呼び出してるので
動作に変化はなかったです
0270名無しさん@お腹いっぱい。2009/12/12(土) 14:34:59ID:Jq60wD1H
じゃあmakefileにこれを入れてみて

LIBDIR下あたりに

LDFLAGS = -mno-crt0 -nostartfiles
LIBS = -lpspsdk
0271名無しさん@お腹いっぱい。2009/12/12(土) 14:44:03ID:cI7LvUlB
すみません、変化なしです

作る前に他人のコードを色々見てましたが
prx側の各関数の書き方はどれも普通に書いてる物がほとんどなので
アドレス渡しとかしなくても動くはずなのですが、上手くいかないです
0272名無しさん@お腹いっぱい。2009/12/12(土) 14:50:43ID:ihgLYVOI
PSARdumperのソースだとsceKernelStartModule使ってるなあ

int LoadStartModule(char *module, int partition)
{
SceUID mod = kuKernelLoadModule(module, 0, NULL);

if (mod < 0)
return mod;

return sceKernelStartModule(mod, 0, NULL, NULL, NULL);
}
0273名無しさん@お腹いっぱい。2009/12/12(土) 15:21:48ID:Jq60wD1H
同時に二人prx関連の質問してるのか?
0274名無しさん@お腹いっぱい。2009/12/12(土) 15:35:02ID:cI7LvUlB
いえ、パソコン再起動したらIP変わってしまっただけで
質問してるのは私だけだと思います

関数から値が正常に返ってこない原因が
なんとか分かればいいのですが
0275名無しさん@お腹いっぱい。2009/12/12(土) 15:38:14ID:Jq60wD1H
とりあえずユーザーモードで動かすようにしてどうなるか
確認してみては?

0276名無しさん@お腹いっぱい。2009/12/12(土) 15:44:44ID:cI7LvUlB
>>275
実はユーザーモードの方は先日試してダメで
カーネルモードに変えたのが今の状態です

>>259のファイルを皆さんの環境でビルドした物を動作させた場合は
addTest(2,7) を呼び出すとちゃんと 9 と返ってきますか?
0277名無しさん@お腹いっぱい。2009/12/12(土) 15:48:06ID:cI7LvUlB
>>259をビルドする際は
include/prx/ 内のプラグイン側を先にmakeして
その後、メインの方をmakeして下さい

あとはEBOOT.PBP を適当なディレクトリに入れてGAME へコピー
TestPRX.prx はMSのルートへコピーすれば実行出来るはずです
0278名無しさん@お腹いっぱい。2009/12/12(土) 16:02:35ID:Jq60wD1H
あとは・・・
関係なさそうだけど気になったのは自作関数が最後にあったことかな
module_startの前に持ってきてはどうかな?
0279名無しさん@お腹いっぱい。2009/12/12(土) 16:22:50ID:9gu7xibb
>>260
fixupimportとか俺には何かわからない別の話をしてるかと思ってたが
俺の勘違いじゃないようで安心したw
結局kuはなんだったんだ…

>>265
それだと後のsceKernelStartModuleで二重に読み込むことになる

というか呼び出し側に問題はない
addTestの戻り値をよく見てみ
どうみてもPSPのエラーコードで、ライブラリがリンクされてねえぞって言ってる
というわけでprx側のMakefile見てみたが色々おかしい
もう一度SDKに付いてるサンプルを元に書き直してみ
0280名無しさん@お腹いっぱい。2009/12/12(土) 16:32:07ID:FVlJxpCz
>>279
そこまで指摘しないといけないのかねw
先生にネット全体で検索するようにお願いすれば
海外のサイトとかでいっぱいでてくるんだけどなw
0281名無しさん@お腹いっぱい。2009/12/12(土) 16:33:31ID:FVlJxpCz
ああ、そうだ
俺はID:Jq60wD1Hね

今借り物のマシンでメインの方は故障中で開発環境入れれないので
テストできないのでできる人やってあげてくれ
0282名無しさん@お腹いっぱい。2009/12/12(土) 16:38:12ID:9gu7xibb
おk、もう質問には答えないようにするよ
検索してわかるなら最初からやってろよ…
0283名無しさん@お腹いっぱい。2009/12/12(土) 16:46:45ID:FVlJxpCz
pspSdkLoadStartModule
こっちでぐぐるとゴミが大量に引っかかるので

PSP_EXPORT_FUNC
こっちで検索がいいな
この辺とかそのまんまprxの作り方と起動かけるアプリのサンプルが載ってる
http://forums.ps2dev.org/viewtopic.php?p=64110&sid=8c1ff281b8d5ea4f1f5e8fce2bc35d4b
0284名無しさん@お腹いっぱい。2009/12/13(日) 20:04:48ID:BezMxPl2
結局うまく行ったのだろうか
その辺の情報も欲しいな
0285名無しさん@お腹いっぱい。2009/12/13(日) 20:59:16ID:HO5s6cZ4
嫉妬した馬鹿のせいで流れが止まったが、MakefileをSDKと同じように書き直したら
普通に9が返って来たよ
0286QSYSHAfn2009/12/14(月) 00:48:38ID:KfDMvN/g
戻り値がfloat型だとうまくいかないぽ・・・
0287名無しさん@お腹いっぱい。2009/12/14(月) 10:36:50ID:0MH/5tzb
>>259のファイル見てて思ったけど
プラグイン起動時に何もさせない場合に

int module_start(SceSize args, void *argp)
{
    return 0;
}

こうすると確かにビルド失敗するね
なんでも良いから適当な命令入れると通るけど謎だ
0288名無しさん@お腹いっぱい。2009/12/14(月) 10:43:25ID:qE7oyJuo
>>287
makeに

LDFLAGS = -mno-crt0 -nostartfiles

入れておけば問題なかったような
0289名無しさん@お腹いっぱい。2009/12/14(月) 10:56:22ID:KfDMvN/g
>>287
たぶんそれコンパイラの最適化が悪さしてると思う
0290名無しさん@お腹いっぱい。2009/12/14(月) 11:00:15ID:0MH/5tzb
そうなんだ、モヤモヤ解消できたthx


あ、それと上でも言ってる人いるけどカーネルモードで
USE_KERNEL_LIBC=1
にすると、リンクされるのが最小ライブラリになるから
float とか扱えなくなって困る・・・・
0291名無しさん@お腹いっぱい。2009/12/14(月) 11:03:02ID:qE7oyJuo
なんで全部をカーネルモードprxに押し込めるのやら
0292名無しさん@お腹いっぱい。2009/12/14(月) 11:14:50ID:0MH/5tzb
>>291
カーネルだと最上級の権限得られてるから
Hackしてるなぁと言う爽快感、みたいな

呼び出す側がカーネルモードの場合はファイル構成がおかしくない限り
ユーザーモードのprxは確実に呼び出せる?

それなら必要な部分はラッパー関数をユーザーモードのprxで作っておいて
呼び出すのが一番いいのかな
0293名無しさん@お腹いっぱい。2009/12/14(月) 11:15:49ID:KfDMvN/g
prxでデータを取得する程度に留めるか、処理までやって結果を呼び出し元に返すのかは設計思想の問題・・・かな?
0294名無しさん@お腹いっぱい。2009/12/14(月) 11:17:33ID:qE7oyJuo
>>292
確か
# カーネルメモリに読み込む場合
#PSP_EXPORT_START(TestPRX, 0, 0x4001)
これで作ったprxはユーザーモードのprxはアプリと普通に
やり取りできたはずなんだよね

>>293
思想は確かにあるが仕様上できないことがあるのに思想(キリで
先に進まなければ意味ないと思うけどw
0295名無しさん@お腹いっぱい。2009/12/14(月) 11:18:16ID:qE7oyJuo
>これで作ったprxはユーザーモードのprxはアプリと普通に
これで作ったprxはユーザーモードのprxやアプリと普通に
0296名無しさん@お腹いっぱい。2009/12/14(月) 11:25:33ID:KfDMvN/g
>>294
そだねw
さて、prx周りの疑問が解けた事だし色々作るかな

#000000がちょうどprxに関わりそうな事を言っているので(偶然か?)試してみる
0297名無しさん@お腹いっぱい。2009/12/14(月) 11:27:48ID:qE7oyJuo
>>296
本人でしょ
先日質問がここであったときに久々に調べてたら
MyLib.oとprxが一致したのであそこの人だと思ってたけど
0298名無しさん@お腹いっぱい。2009/12/14(月) 11:30:33ID:qE7oyJuo
たぶんDXLPをprxで提供とかだったんじゃないかな?
0299名無しさん@お腹いっぱい。2009/12/14(月) 11:31:00ID:0MH/5tzb
>>294
悩みが全て解消された、ありがと
ちょっとユーザーモードでラッパー関数作ってくる
0300名無しさん@お腹いっぱい。2009/12/14(月) 11:32:35ID:KfDMvN/g
違うよ
俺はDXLP使ってるからRSSでチェックしてるだけ
0301名無しさん@お腹いっぱい。2009/12/14(月) 11:34:28ID:0MH/5tzb
申し訳ない、もう一つだけあった
内容としては簡単な物なのだけど続けて聞いても良い?
0302名無しさん@お腹いっぱい。2009/12/14(月) 11:36:20ID:qE7oyJuo
最近やってないので覚えてる範囲でのヒントなら可
0303名無しさん@お腹いっぱい。2009/12/14(月) 11:46:03ID:KfDMvN/g
CPU使用率の算出prxできた。
でもCWCが提示する値と1%ぐらいずれるw

適当に初期化してpspDebugProfilerGetRegsとpspDebugProfilerClearを交互に呼んで、CPUのサイクル数をシステムのサイクル数で割ったんだが・・・
他に何か必要な要素があるのかな
0304 ◆yreeen/0R2 2009/12/14(月) 11:46:14ID:dBxOks5e
ども。
prx関連あんまり把握してなかったのでここ数日のログに助けられました^^
なので、>>296さんの仰る通り偶然というわけでもないです。


0305名無しさん@お腹いっぱい。2009/12/14(月) 11:48:55ID:0MH/5tzb
では言葉に甘えて
存在しないフォルダを作る処理で階層が深い場合は一気に作れないから
自分なりに作ってみたのだけど、これよりも無駄がないスマートな方法あるかな?

使い方としては CreateDir("ms0:/Test/Sub/"); のような感じです

void CreateDir(const char* dir)
{
        char path[256],*p ,*sp = (char*)dir;
        int fd;
       
        // ms0:/ の後ろまで飛ばす
        *p = strstr(dir,"/");
        p++;
       
        // ms0:/ 以降にあるフォルダの階層をだどる
       
        while(*p && (p = strstr(p,"/")) != NULL)
        {
                // パスを作る
                strcpy(path,dir);
                path[p-sp] = '\0';
               
                //フォルダが存在するかどうか
                fd = sceIoDopen(path,);
                   
                if (fd < 0)
                {
                        //存在しない、フォルダ作成
                        sceIoMkdir(path, 0777);
                }
                   
                    sceIoDclose(fd);
                   
                p++;
         }
}
0306名無しさん@お腹いっぱい。2009/12/14(月) 11:51:43ID:0MH/5tzb
記述ミス、余分な,が入ってました

×  fd = sceIoDopen(path,);
○  fd = sceIoDopen(path);
0307名無しさん@お腹いっぱい。2009/12/14(月) 11:52:22ID:qE7oyJuo
それはこのスレじゃなくC言語関連の初心者対応のところで聞く話しじゃないか?

前提条件として自前で順番にフォルダを作る必要がある・・・ということにして

あとPSPの開発環境で再現してる標準関数でできたりはしない?
0308 ◆yreeen/0R2 2009/12/14(月) 11:52:13ID:dBxOks5e
>>303
私も微妙にずれます。が、1%程度なら問題ないと思います
プロファイラの値を同時に使っている所為かもしれないですね
0309名無しさん@お腹いっぱい。2009/12/14(月) 11:54:50ID:qq3gww8Y
>>303
そのCPU使用率の算出コード、参考にしたいです
公開とかされませんか?
0310名無しさん@お腹いっぱい。2009/12/14(月) 12:03:55ID:KfDMvN/g
>yreeen氏
お世話になってるぜ
原因それかもしれない。検証・・・できない気がするが

>>309
おk
module_startでpspDebugProfilerEnableとpspDebugProfilerClearを呼ぶ。

CpuUsageRateとかいう関数作る。内部はこんな感じ
pspDebugProfilerGetRegs(®s);
pspDebugProfilerClear():
return 100 * regs.cpuck / regs.systemck;

で、グローバル変数としてstatic PspDebugProfilerRegs regs;とか宣言すればいい
module_stopでpspDebugProfilerDisableを呼ぶようにすればモジュール開放時にプロファイラが止まってくれる
0311名無しさん@お腹いっぱい。2009/12/14(月) 12:08:14ID:KfDMvN/g
挙動

モジュールを読み込んだ瞬間からプロファイラの機能が有効になる
CpuUsageRateが呼ばれる度に、前回の呼び出し(またはモジュールを読み込んだ瞬間)から今回の呼び出しまでの平均CPU使用率が出る。
モジュールを開放した時点でプロファイラの機能が無効化される

バグ

二重に読み込むと何が起こるかわからん。バグというより仕様だなこれは
0312名無しさん@お腹いっぱい。2009/12/14(月) 12:08:40ID:qq3gww8Y
>>310
助かりました、自分でも試してみます
0313名無しさん@お腹いっぱい。2009/12/14(月) 12:10:39ID:qE7oyJuo
>>311
>二重に読み込むと何が起こるかわからん。バグというより仕様だなこれは
中で二重読み込みを防止するための管理とかしてないのかね?w
0314名無しさん@お腹いっぱい。2009/12/14(月) 12:17:18ID:KfDMvN/g
実際のところどうなるか試してないから分からん。
まぁ同じprxを二重にロードするなんて普通起きないと思うが・・・
0315名無しさん@お腹いっぱい。2009/12/14(月) 12:20:55ID:qE7oyJuo
>>314
prx側というより関数側ね

prx側はまあ自分で面倒みろって話だけどさw
0316名無しさん@お腹いっぱい。2009/12/15(火) 10:40:13ID:+yBFUqqH
セーブデータの暗号化を無効にして
生データをそのままセーブ、ロードも可能
おまけにGameKeyのDump機能付き

こんなプラグインを作ったのだが需要ある?


まだBeta段階だから機能は最低限のしかない
いずれはメニュー表示や、さらに独自暗号化してるデータに対して
各自がスクリプトでデータ処理出来るような機能も付けるつもり
0317名無しさん@お腹いっぱい。2009/12/15(火) 11:11:20ID:7RL9GCLh
ここって改造板の中でもかなりレベルの高い会話してるよなw
0318名無しさん@お腹いっぱい。2009/12/15(火) 11:56:51ID:X6qrx4ZJ
これくらいのレベルでないと俺満たされないw
0319名無しさん@お腹いっぱい。2009/12/15(火) 12:01:33ID:vC5Aes/1
PSPの開発って下火になってると思ってたから
先日のスレの伸びに驚いたくらい

0320名無しさん@お腹いっぱい。2009/12/15(火) 12:12:15ID:X6qrx4ZJ
ryushi氏やyreeen氏、猫山猫宗氏なんかが表立って開発してるかな
あとはこの辺で名前を出さずに色々やっている人がゴロゴロと
0321名無しさん@お腹いっぱい。2009/12/15(火) 14:47:07ID:NZpcYFHc
upgpspも忘れるなw
0322名無しさん@お腹いっぱい。2009/12/15(火) 15:38:33ID:8wTdzokl
作ったライブラリを利用したソフト作る際
最小限のリンクで済むように(ファイルサイズを小さく)するにはどうすれば良い?
0323名無しさん@お腹いっぱい。2009/12/15(火) 17:11:52ID:uEQlmyTB
関数ごとに一つのソースコードにすればいい。DXLPの作者もそう言ってる
0324名無しさん@お腹いっぱい。2009/12/15(火) 17:33:38ID:LHRt/u06
>>316
うpよろしく
0325名無しさん@お腹いっぱい。2009/12/15(火) 18:19:29ID:86/pxb1n
>>316
>GameKeyのDump機能付き
これの方が重要w
できればソース公開していただきたい・・・
0326名無しさん@お腹いっぱい。2009/12/15(火) 18:25:54ID:YWAw6ZHW
>>322
ar d hoge.a fuga.o
0327名無しさん@お腹いっぱい。2009/12/15(火) 18:49:30ID:1eKuIvhF
スルーされてたけど
>>316の人、さりげなく凄い発言してるw
自分も是非そのプラグイン欲しい
0328名無しさん@お腹いっぱい。2009/12/15(火) 19:27:34ID:X6qrx4ZJ
>>326
それ意味ない
0329名無しさん@お腹いっぱい。2009/12/15(火) 22:24:59ID:X3g8+oRY
>>317
初歩的な質問ばっかりでそれは無いわw
外部の技術者がたまに何か投下するぐらいだろ
それとも皮肉で言ったのか

>>320
憂煉はDXLPとか作ってるが、猫山とかでたらめ記事しか書いて無いじゃん
0330名無しさん@お腹いっぱい。2009/12/16(水) 09:56:59ID:u5p2bC9W
>>324-325
>>327

一応は需要あるみたいかな
今まだ調整中だけど今日中には配布出来そう
ちなみにまだBeta段階

ソースコードはライセンスをどうするかとか
その他も色々面倒なので公開する予定ないです
03312992009/12/16(水) 13:06:24ID:ePYIr0iC
あれからユーザーモードの prx をロードさせようと
色々やってみたのだけど上手くいかないです
カーネルモードだと正常にロードされます


ユーザーモードのprxをロードしようとすると

//pspSdkLoadStartModule 、 カーネルエリアに読込を試みる
pspSdkLoadStartModule(user_prx,PSP_MEMORY_PARTITION_KERNEL);
戻り値: 0x80020132 (SCE_KERNEL_ERROR_PARTITION_MISMATCH)
       
//pspSdkLoadStartModule 、 ユーザーエリアに読込を試みる
pspSdkLoadStartModule(user_prx,PSP_MEMORY_PARTITION_USER);
戻り値: 0x80020132 (SCE_KERNEL_ERROR_ILLEGAL_LIBRARY )


mod = sceKernelLoadModule(user_prx, 0, NULL);
sceKernelStartModule(mod, 0, NULL, 0, NULL);
戻り値: エラーコードではない値

となり、最後はエラーコードではないもののロードされていません



ロードする側(EBOOT.PBP)、ロードされる側(prx)のソースです
ttp://www1.axfc.net/uploader/Sc/so/64477.zip

自分ではもうお手上げなので、何か分かる方いましたら教えて下さい
0332名無しさん@お腹いっぱい。2009/12/16(水) 13:13:44ID:Ws/KbU9Y
# user_prx/MyLib.S が変更されるから、呼び出す側も再 make が必要 !?
属性と呼んでいいのかわからんがユーザーモードで利用するか
カーネルモードで利用するかを変えた場合は
Sの中身が変わってる可能性あるので当然Sを取り込む側も
再度makeしなおさないとだめじゃないかな?

prxの属性は変えずに関数の中だけいじったとかなら
prx側の再度makeでOKだったと思うけど
0333名無しさん@お腹いっぱい。2009/12/16(水) 13:16:33ID:ePYIr0iC
>>332
それはユーザーモード属性のままでカーネルモードのが動作したので
そう書いてあるだけで、実際は毎回Sファイルに合わせてEBOOT側もmakeし直してます
それでもロード出来なくて
0334名無しさん@お腹いっぱい。2009/12/16(水) 13:21:53ID:XPJJnMmi
今IWanaBetheGuyをPSP用に作ってんだけどところどころでフリーズしやがる…何が原因なんだ…
0335名無しさん@お腹いっぱい。2009/12/16(水) 13:22:37ID:Ws/KbU9Y
リカバリーモードのカーネルが1.50かそうじゃないか
とかも関係なかったっけ?
0336名無しさん@お腹いっぱい。2009/12/16(水) 13:30:42ID:ePYIr0iC
>>335
CFWが1.50のカーネルも含んでないといけないということですか?

ユーザーモードのprxロードについて参考になる資料を
"Google Code" や "PS2DEV Forum" のPSPスレッドで探してはみたものの
カーネルモードの解説ばかりで…

最新のCFW 5.50 GEN にて
>>331のコードを修正してユーザーモードの user.prx が
EBOOT.PBP側からロード出来た方がいました
どうかアドバイスを
0337名無しさん@お腹いっぱい。2009/12/16(水) 14:02:35ID:Ws/KbU9Y
あと相変わらずというかなんというか
動かない動かない騒ぐ割に動いてる物はこうだよと指摘されてるところ
はあわせて見るとかしないのかな?
PSP_EXPORT_FUNCのところは指摘されてるだろうに
■ このスレッドは過去ログ倉庫に格納されています