PSPlayground Forum Index PSPlayground
Welcome to PSPlayground
 

The PSP controls:

 
       PSPlayground Forum Index -> PSP tutorials
Author Message
2.6,CRACKED!



Sun Apr 02, 2006 8:25 pm   The PSP controls:  

The PSP controls:

In this tutorial you will make text appear after pressing a button.

First things first, include your comments; Author; Date; Program etc.

/*

* Author:

* Date:

* Program made:

*/

We now tell the psp to include the header files (.h)

#include <pspkernel.h>

#include <pspdebug.h>

#include <pspctrl.h>

#include <stdlib.h>

#include <string.h>



Now we define the module info section, the numbers mean (?, major version, minor version).

PSP_MODULE_INFO("CONTROLTEST", 0, 1, 1);



We now define printf (the text that will appear)

#define printf pspDebugScreenPrintf



Now we do a long tedious (but necessary) function.

void dump_threadstatus(void);

int done = 0;

/* Exit callback */

int exit_callback(int arg1, int arg2, void *common)

{

done = 1;

return 0;

}

/* Callback thread */

int CallbackThread(SceSize args, void *argp)

{

int cbid;

cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);

sceKernelRegisterExitCallback(cbid);

sceKernelSleepThreadCB();

return 0;

}

Now this sets up the callback thread and returns its thread id

int SetupCallbacks(void)

{

int thid = 0;

thid = sceKernelCreateThread("update_thread", CallbackThread,

0x11, 0xFA0, 0, 0);

if(thid >= 0)

{

sceKernelStartThread(thid, 0, 0);

}

return thid;

}

Aha now, this is the cool bit, this is where we tell the psp on e.g, x button, show text.

int main(void)

{

SceCtrlData pad;

pspDebugScreenInit();

SetupCallbacks();

sceCtrlSetSampling (0);

sceCtrlSetSamplingMode(PSP_CTRL_MODE_ANALOG);

while(!done){

pspDebugScreenSetXY(0, 2);

sceCtrlReadBufferPositive(&pad, 1);

printf("Analog X = %d ", pad.Lx);

printf("Analog Y = %d \n", pad.Ly);

if (pad.Buttons != 0){



if (pad.Buttons & PSP_CTRL_SQUARE){

printf("Square pressed \n");

}

if (pad.Buttons & PSP_CTRL_TRIANGLE){



printf("Triangle pressed \n");

}



if (pad.Buttons & PSP_CTRL_CIRCLE){

printf("Cicle pressed \n");

}



if (pad.Buttons & PSP_CTRL_CROSS){

printf("Cross pressed \n");

}



if (pad.Buttons & PSP_CTRL_UP){

printf("Up pressed \n");

}



if (pad.Buttons & PSP_CTRL_DOWN){

printf("Down pressed \n");

}

if (pad.Buttons & PSP_CTRL_LEFT){

printf("Left pressed \n");

}

if (pad.Buttons & PSP_CTRL_RIGHT){



printf("Right pressed \n");

}



if (pad.Buttons & PSP_CTRL_START){

printf("Start pressed \n");

}

if (pad.Buttons & PSP_CTRL_SELECT){



printf("Select pressed \n");

}

if (pad.Buttons & PSP_CTRL_LTRIGGER){



printf("L-trigger pressed \n");

}

if (pad.Buttons & PSP_CTRL_RTRIGGER){



printf("R-trigger pressed \n");

}

}

}

sceKernelExitGame();

return 0;

}

The end! You can now control the psp!

You should have your main.c like this;

/*

* Author:

* Date:

* Program made:

*/

#include <pspkernel.h>

#include <pspdebug.h>

#include <pspctrl.h>

#include <stdlib.h>

#include <string.h>

PSP_MODULE_INFO("CONTROLTEST", 0, 1, 1);

#define printf pspDebugScreenPrintf

void dump_threadstatus(void);

int done = 0;

/* Exit callback */

int exit_callback(int arg1, int arg2, void *common)

{

done = 1;

return 0;

}

/* Callback thread */

int CallbackThread(SceSize args, void *argp)

{

int cbid;

cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);

sceKernelRegisterExitCallback(cbid);

sceKernelSleepThreadCB();

return 0;

}

int SetupCallbacks(void)

{

int thid = 0;

thid = sceKernelCreateThread("update_thread", CallbackThread,

0x11, 0xFA0, 0, 0);

if(thid >= 0)

{

sceKernelStartThread(thid, 0, 0);

}

return thid;

}

int main(void)

{

SceCtrlData pad;

pspDebugScreenInit();

SetupCallbacks();

sceCtrlSetSamplingCycle(0);

sceCtrlSetSamplingMode(PSP_CTRL_MODE_ANALOG);

while(!done){

pspDebugScreenSetXY(0, 2);

sceCtrlReadBufferPositive(&pad, 1);

printf("Analog X = %d ", pad.Lx);

printf("Analog Y = %d \n", pad.Ly);

if (pad.Buttons != 0){

if (pad.Buttons & PSP_CTRL_SQUARE){

printf("Square pressed \n");

}

if (pad.Buttons & PSP_CTRL_TRIANGLE){

printf("Triangle pressed \n");

}

if (pad.Buttons & PSP_CTRL_CIRCLE){

printf("Cicle pressed \n");

}

if (pad.Buttons & PSP_CTRL_CROSS){

printf("Cross pressed \n");

}

if (pad.Buttons & PSP_CTRL_UP){

printf("Up pressed \n");

}

if (pad.Buttons & PSP_CTRL_DOWN){

printf("Down pressed \n");

}

if (pad.Buttons & PSP_CTRL_LEFT){

printf("Left pressed \n");

}

if (pad.Buttons & PSP_CTRL_RIGHT){

printf("Right pressed \n");

}

if (pad.Buttons & PSP_CTRL_START){

printf("Start pressed \n");

}

if (pad.Buttons & PSP_CTRL_SELECT){

printf("Select pressed \n");

}

if (pad.Buttons & PSP_CTRL_LTRIGGER){

printf("L-trigger pressed \n");

}

if (pad.Buttons & PSP_CTRL_RTRIGGER){

printf("R-trigger pressed \n");

}

}

}

sceKernelExitGame();

return 0;

}

DOWNLOAD HERE:
http://www.freewebs.com/psp_homebrew/controller%20rename%202%20main.c
 
Admin



Sun Apr 02, 2006 8:34 pm    

Nice tuturiol
These are always good to have on the forums :mrgreen:
Getting sticked
 
 
       PSPlayground Forum Index -> PSP tutorials
Page 1 of 1


This page is a free forum hosting archive page from a ForumWise free forum.
Powered by phpBB ©