FC2ブログ

PSPプラグイン作成の解説 

PSPプラグインの解説ってどこもやってないなあと思ったので
間違い等があったらすいません
Rボタンで電源をOFFにするプラグインのソースで解説します

main.c

   // headerの読み込み
   #include <pspkernel.h>
   #include <pspctrl.h>
   #include <psppower.h>

   // モジュール情報の設定 引数は左から順に
   // モジュール名(なんでもいい)
   // モジュール属性(PSP_MODULE_KERNELでおk)
   // major_version(よく分からないが適当でおk)
   // minor_version(よく分からないが適当でおk)

   PSP_MODULE_INFO("kernel_plugin", PSP_MODULE_KERNEL, 1, 1);

   // 関数の宣言
   int main_thread(SceSize args, void *argp);
   int module_start(SceSize args, void *argp);
   int module_stop(SceSize args, void *argp);

   // プラグインは最初にmodule_start関数が呼ばれて、最後にmodule_stop関数を    呼んで終了するらしい
   // module_start関数からメインスレッドを作成して処理を行うのが一般的

   int main_thread(SceSize args, void *argp)
   {
    SceCtrlData pad; // パッド構造体

    while(1) // 無限ループ
    {
     sceKernelDelayThread(50000); // 画面がちらつくのでディレイをかける
     sceCtrlPeekBufferPositive(&pad, 1); // ボタンを読み込む準備

     if(pad.Buttons & PSP_CTRL_RTRIGGER) // Rトリガーが押されたら
     {
      scePowerRequestStandby(); // 電源OFF
     }
    }

    return 0;
   }

   // メインスレッドの作成と実行 sceKernelCreateThread関数の引数は左から順に
   // スレッド名(なんでもいい)
   // 関数のエントリー(上のmain_thread関数を指定する)
   // スレッドの優先順位(1~32ぐらいまで
          数字が小さいほど優先順位が高い 順位は低めでおk)
   // スタックサイズ(自分が使いたいぶんだけ指定する)
   // スレッドの属性(0でおk)
   // オプション(NULLでおk)

   int module_start(SceSize args, void *argp)
   {
    int thid = sceKernelCreateThread("main_thread",
                   main_thread, 32, 0x1000, 0, NULL);

    if(thid >= 0)sceKernelStartThread(thid, args, argp);

    return 0;
   }

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


次はMakefileの解説をやります
ありがとうございました
スポンサーサイト
PSP_MODULE_INFOの最後2つはプログラムのバージョンらしいです
だから最初のバージョンだったら、(.... ,0,0)と指定してやるみたいです(うろ覚えですが)

それと僕が作った自動スリープのプラグインでは
同じようなwhileループなんですが
sceKernelDelayThread(50000); // 画面がちらつくのでディレイをかける
この部分が無いとどうも特殊ボタン(カーネルで読みとれるボタン)しか受け付けなくなりました


あと、このブログに興味を持ったので自分のブログにリンクを貼ってもいいですか?
http://addpadding.seesaa.net/
[ 2010/08/08 19:24 ] [ 編集 ]
PSP_MODULE_INFOの最後2つはプログラムのバージョンらしいです
だから最初のバージョンだったら、(.... ,0,0)と指定してやるみたいです(うろ覚えですが)

それと僕が作った自動スリープのプラグインでは
同じようなwhileループなんですが
sceKernelDelayThread(50000); // 画面がちらつくのでディレイをかける
この部分が無いとどうも特殊ボタン(カーネルで読みとれるボタン)しか受け付けなくなりました


あと、このブログに興味を持ったので自分のブログにリンクを貼ってもいいですか?
http://addpadding.seesaa.net/
[ 2010/08/08 19:25 ] [ 編集 ]
プログラム自体のバージョンでしたか
名前からして何かのバージョンだろうと思っていましたが、気づきませんでした
リンクはおkです
こちらもDadrfyさんのブログのリンクを貼ってもよろしいでしょうか?
[ 2010/08/08 19:46 ] [ 編集 ]
はい、願いします m(_ _)m,

2回投稿してしまったようですみません
[ 2010/08/08 22:30 ] [ 編集 ]
PSPのプラグインは、「PSPのplugin 欲しいのないなら作ってしまおうスレ」(http://schiphol.2ch.net/test/read.cgi/gameurawaza/1178255026/87)が詳しいですよ
2ちゃんねるなのでモリタポ購入して読みに行くといいです
[ 2010/12/03 20:56 ] [ 編集 ]
このコメントは管理者の承認待ちです
[ 2010/12/29 00:50 ] [ 編集 ]
コメントの投稿













管理者にだけ表示を許可する