2009年3月11日水曜日

音楽再生

音楽再生機能の再構成作業を目下作業中です。
ストリーム再生と通常再生の実装をうまいことかみ合わせるのが難しいですね・・・
そろそろ部分的にソースコードを開示していこうかと思っています。まだ汚いソースコードですが、だいぶマシになったので。

 


 

/*
* DXライブラリPortable 入力管理部 Ver1.00
* 製作者 :夢瑞憂煉
*
* 備考 :
* 占有メモリの目安はおよそ40Byteです。
*/
#include <pspctrl.h>
#include "dxlibp.h"

int InitInput();  /*初期化*/
int RenewInput();  /*更新*/
int GetInputState(); /*取得*/
int GetAnalogInput(int *XBuf,int *YBuf);/*アナログデータの取得*/

static struct SceCtrlData CtrlData;  /*入力データ RenewInputで更新される*/


int InitInput()
{
    sceCtrlSetSamplingCycle(0);
    sceCtrlSetSamplingMode(PSP_CTRL_MODE_ANALOG);
    return 0;
}
int RenewInput()
{
    return sceCtrlReadBufferPositive(&CtrlData,1) < 0 ? -1 : 0;
}
int GetInputState()
{
    return CtrlData.Buttons;
}
int GetAnalogInput(int *XBuf,int *YBuf)
{
    *XBuf = CtrlData.Lx * 7.8125;
    *YBuf = CtrlData.Ly * 7.8125;
    return 0;
}


 

入力の受付はこれだけです。GetInputState関数を呼ぶたびに入力を再取得してしまうと処理が重くなるだけでなく、プログラマの意図しない動作を起こしやすくなるのでRenewInput関数で取得した値を保持し、それをGetXXXX関数でそのまま返すようになっています。

・・・この辺りは何のヒネリもないです。

0 件のコメント:

コメントを投稿