PDA

Просмотр полной версии : Помогите разобраться..


LeshiyGS
13.10.2009, 01:32
Я новичек в этом деле, но никак не могу получить обработку кнопок в prx плагине, если на этом сайте есть человек который может помочь, пожалуйста ответе... а если есть возможность то просто выложите код prx плагина который при нажатие на оба тригера пишет на экране например hello world.. заранее большое спасибо..

l3VGV
13.10.2009, 01:39
Опрос кнопок по таймеру не работает?



int InputThread(SceSize args, void *argp)
{

while(run)
{

sceCtrlPeekBufferPositive(&pad, 1);
sceKernelDelayThread(1);

if (pad.Buttons & PSP_CTRL_HOME)
run = 0;
}

return 0;
}



void SetupInput( void)
{
SceUID itid = sceKernelCreateThread("Input thread",
InputThread,
0x18, 256 * 1024, PSP_THREAD_ATTR_USER, 0);
if (itid >= 0)
sceKernelStartThread(itid, 0, 0);
}

LeshiyGS
13.10.2009, 01:42
хм... опрос по таймеру это как перерыл кучу примеров но по таймеру не видел..
самый обычный способ.. проверка SceCtrlData pad; if (pad.Buttons != 0) и так далее...

l3VGV
13.10.2009, 01:45
ну вот я тебе кусок кода дал. вызываешь сетуп инпут в начале работы модуля, а там пишешь что надо в глобальные переменные. ну а потом гдето в основном потоке из проверяешь. можно и без отдельного потока, но тогда во время тяжёлой работы система не будет реагировать на кнопки. а это бесит.

LeshiyGS
13.10.2009, 01:47
мда)) легко тебе говорить.. я 50% написаного тобой только понял))
InputThread - понял
SetupInput - почти не понял
)))

l3VGV
13.10.2009, 01:49
общая идея в том что ничем работа в модуле не отличается от обычной. либо тебе основное приложение будет сигналить о вводе или сам определяешь. там 2 типа функций, котрорый удаляет из очереди и который оставляет. в доках есть.

LeshiyGS
13.10.2009, 01:54
на доки ссылку можно? я так понял что во второй функции ты создаешь Thead который говорит о том нажата кнопка или нет.. вот только я не пойму как спросить нажата ли.. я полный новичек))

l3VGV
13.10.2009, 01:57
Доки есть в комплекте к сдк, они компилятся или устанавливаются из комплекта мингвовского минималиста. там есть и коды кнопок и как работать с буфером нажатий.

LeshiyGS
13.10.2009, 02:22
как спросить о нажатии я так и не вьехал(( кстати при юзании SetupInput xmb виснет

LeshiyGS добавил 13-10-2009 в 02:22
уу спс получилось и без второй функции

LeshiyGS
19.10.2009, 00:22
#include <pspkernel.h>
#include <pspdebug.h>
#include <pspctrl.h>
#include <string.h>

PSP_MODULE_INFO("TESTPRX", 0x1000, 1, 1);

typedef unsigned char byte;
int menu = 0;

#define RGB(r,g,B) ((u32)((byte)(r)|((byte)(g) << 8)|((byte)(B) << 16)))
#define printf pspDebugScreenPrintf

SceCtrlData pad;

int main(int argc, char **argv)
{


pspDebugScreenInit();
while (1)
{
sceKernelDelayThread(1000);
sceCtrlReadBufferPositive(&pad, 1);
if (pad.Buttons & PSP_CTRL_RTRIGGER){
if (menu) menu = 0;
else menu = 1;
}
if (menu){
pspDebugScreenSetXY(0, 0);
pspDebugScreenSetBackColor(RGB(255, 0, 0));
printf("First Menu");
pspDebugScreenSetXY(0, 1);
printf("Play Station Portable");
}
}
sceKernelSleepThread();
return 0;
}
void* getModuleInfo(void)
{
return (void *) &module_info;
}

int main_thread (void) {
return 0;
}

int module_stop (void) {
return 0;
}



Подскажите почему так.. кроме плагина неработает ничего.. это раз.. фон моргает это 2 и еще отклик от кнопки работает как то странно это 3((