Anuncios Google

OSLib - Control de botones

Tutoriales Avanzados Homebrewes

Bueno pues viendo tutoriales de C, vi que la Libreria OSlib, estaba muy vacía, y me he dicho de continuarla de forma que a los demás pues le ayude. Bueno me dejo de rollos y vamos a la explicación.

Con este tutorial aprenderemos a manejar los controles y el analógico de nuestra PSP, lo primero que vamos a hacer es crear un archivo llamado makefile y le añadimos todo esto:

TARGET = Controles
OBJS = main.o
 
CFLAGS = -O2 -g -G0 -Wall
 
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
 
ASFLAGS = $(CFLAGS)
 
LIBDIR =
 
 
STDLIBS= -losl -lpng -lz \
	-lpsphprm -lpspsdk -lpspctrl -lpspumd -lpsprtc -lpsppower -lpspgu -lpspgum  -lpspaudiolib -lpspaudio -lpsphttp -lpspssl -lpspwlan \
	-lpspnet_adhocmatching -lpspnet_adhoc -lpspnet_adhocctl -lm -ljpeg
LIBS=$(STDLIBS)
 
LDFLAGS =
 
EXTRA_TARGETS = EBOOT.PBP
 
PSP_EBOOT_TITLE = Controles
PSPSDK=$(shell psp-config --pspsdk-path)
 
include $(PSPSDK)/lib/build.mak

Como, ya he dicho, es que lleve todas las librerías pero así siempre nos servirá para cualquier code que hagamos. Vamos con el main.c, he de decir que no explicare la sintaxis básica de C, como int, void y demás.

//Incluimos la libreria OSLIB
#include <oslib/oslib.h>
 
//Los callbacks que hacen que se establezca en modo user (Para este tuto nos servira)
PSP_MODULE_INFO("Controles", 0, 1, 1);
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);
 
int main() //La funcion principal
{
	//Iniciamos la libreria oslib
	oslInit(0);
 
	//Iniciamos el modo grafico, el primer argumento indica los bits de pantalla (32) y el segundo el buffer (0 = Simple buffer, 1= Doble buffer)
	oslInitGfx(OSL_PF_8888, 1);
 
	//Iniciamos el modo consola
	oslInitConsole();
 
	//Creamos un bucle infinito
	while (!osl_quit) 
	{
		//Iniciamos el modo de dibujar, o por decirlo de otra forma activamos la pantalla
		oslStartDrawing();
 
		//Leemos los controles
		oslReadKeys();
 
		//Limpiamos la pantalla (Util para que no se nos ponga el texto encima unos de otros
		oslCls();
 
		if (osl_keys->held.down) oslPrintf("Estas pulsando abajo"); //Leemos los controles (Mas adelante lo explico todo)
		if (osl_keys->held.up) oslPrintf("Estas pulsando arriba");
		if (osl_keys->held.left) oslPrintf("Estas pulsando Izquierda");
		if (osl_keys->held.right) oslPrintf("Estas pulsando Derecha");
                if (osl_keys->held.cross) oslPrintf("Estas pulsando X");
                if (osl_keys->held.circle) oslPrintf("Estas pulsando O");
                if (osl_keys->held.triangle) oslPrintf("Estas pulsando Triangulo");
                if (osl_keys->held.square) oslPrintf("Estas pulsando Cuadrado");
		oslPrintf_xy(0,15,"Joystick X value : %d",osl_keys->analogX); //Mas adelante lo explico
		oslPrintf_xy(0,25,"Joystick Y value : %d",osl_keys->analogY);
 
		//Terminamos de dibujar
		oslEndDrawing();
 
		//Sincronizamos la pantalla, similar a screen.flip() en lua
		oslSyncFrame();		
	}
 
	//Si arriba el bucle se rompe entonces, quitara los graficos y se saldra del programa
	oslEndGfx();
	oslQuit();
	return 0;
}

if (osl_keys->held.square) oslPrintf("Estas pulsando Cuadrado");
Aquí, decimos que si pulsamos cuadrado salga el printf diciendo lo que hemos pulsado, podemos sustituir held por pressed pero solo se veria 1 milisegundo ya que pressed es si ha pulsado.

oslPrintf_xy(0,15,"Joystick X value : ",osl_keys->analogX); Aquí, decimos el ángulo X del analógico y con %d lo transformamos a caracter para que lo lea el printf.

Bueno esto es todo, gracias por leerlo.

Un Saludo.

4.07843
Tu voto: Ninguno Votos totales: 4.1 (51 votos)

Anuncios Google

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de darkmido

Pregunta

*A la hora de compilar me da error al escribir en la linea del makefile, en esta parte -lpsphttp

se la quito y intento compilar de nuevo y luego me da error en esta otra: -lpspssl

se la quito tambien y ahora si me compila, pero queria saber porque no me reconoce esas librerias?

*Otra pregunta, me fije que a la hora de comprobar los botones se hace asi

osl_keys->held.triangle ... y a la hora de probar debia mantener el boton presionado para que me saliera el mensaje, por como dice el codigo "held" viene de mantener presionado verdad, como seria si solo quisiera detectar cuando presione un boton sin necesidad de mantenerlo presionado?
Imagen de Falconal

Buenos tutos

Pues la verdad me parecen muy buenos estos tutos de OSLib, con esto se nos facilita la vida a los novatos para programar en C, aparte que con estos al salir mi psp no se crashea(psp slim placa maldita 6.39 ME), ya ansío el tuto de Ad-hoc


 

 

                           Falconal was here

Imagen de Ricx-Dark

y como se pone al precionar

y como se pone al precionar dos botones a la vez???

 

Imagen de Dioni0396

Pues

if ((osl_keys->held.R) && (osl_keys->held.L)) oslPrintf("Estas presionando L y R");

Imagen de Ricx-Dark

Muchas gracias Dioni0396!!!

Muchas gracias Dioni0396!!! :)

Imagen de Dioni0396

De nada

De nada

Imagen de Abaddon Ormuz

Retomando programación C para

Retomando programación C para PSP \m/

Imagen de klozz

Como es posible que pasen los

Como es posible que pasen los tutos de dioni si los mios tienen mas tiempo?  .______________. hice varios sobre oslib que onda me quede esperando a que los pasaran a portada. Eso es molesto. 

No te ofendas dioni es bueno tu trabajo.

 

PD: Manejo de fondo y Sprites http://psp.scenebeta.com/node/71249  y uso de sonidos wav http://psp.scenebeta.com/node/83795 funciona igual con mp3


TEAM MEX Homebrew y desarrollo PSP

Metal TrooperV.Pre-Alpha (15%)Lua , 10% C .

Ubunshell VProof. (45%)C

RPG Magues (35%)Lua , 5% C


Android development for Xperia X8 ^^ mis roms en XDA-Developers ya que en Scenebeta no las publican xD

Xperience  | MIUI Pikachu | Semc debrand engine | Froyexp | Xperience walkman mod | Android 4.0.4 CN9 Crema de nieve

-- KLOZZ

Imagen de Ricx-Dark

No porfavor no dejes de crear

No porfavor no dejes de crear tutos en scenebeta; es que me gustan mucho los tutos de sting18 y de ti, ya sting18 me recomendo teamex y bien!!!!

ahhh... tengo una pregunta que diferencias hay entre estas dos librerias:

SDL_gorrister/SDL_gorrister.h
<span style="color: #339933;">#include &lt;oslib/oslib.h&gt;</span>

                                                          Ricx-Dark

  "El conocimiento es poder: no lo malgastes ni un solo dia aprende, aprende, aprende!"

           "Para un soldado el arma es su vida pero este da muerte a los demas"

Imagen de sting18

Facil ya no agas tutos para

Facil ya no agas tutos para scenebeta y listo :)

Imagen de klozz

Jajajaj pues si we :/ Eso

Jajajaj pues si we :/ Eso gana uno por querer aportar  me los llevo a la web de team mex almenos ahi si salen.

Imagen de sting18

Perfecto klozz ;)

Perfecto klozz ;)

Es solo que...

No te molestes por favor, es que he estado un tiempo sin entrar aquí y me he puesto con lo primero que he pillado.

Mis disculpas.

Me ha saltado un error...

Es este (por el makefile):

Makefile:20: *** falta un separador (¿Quiere decir TAB en vez de 8 espacios?).  Alto.

Imagen de Dioni0396

Usa el del xerpi

el # es posible que sea el error.

Pruébalo así:TARGET =

Pruébalo así:

TARGET = Controles
OBJS = main.o
 
CFLAGS = -O2 -g -G0 -Wall
 
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
 
ASFLAGS = $(CFLAGS)
 
LIBDIR =
 
 
STDLIBS= -losl -lpng -lz \
	-lpsphprm -lpspsdk -lpspctrl -lpspumd -lpsprtc -lpsppower -lpspgu -lpspgum  -lpspaudiolib -lpspaudio -lpsphttp -lpspssl -lpspwlan \
	-lpspnet_adhocmatching -lpspnet_adhoc -lpspnet_adhocctl -lm -ljpeg
LIBS=$(STDLIBS)
 
LDFLAGS =
 
EXTRA_TARGETS = EBOOT.PBP
 
PSP_EBOOT_TITLE = Controles
PSPSDK=$(shell psp-config --pspsdk-path)
 
include $(PSPSDK)/lib/build.mak

Imagen de jorge_97

by jorge_97

Pues muy bien tio: Por mi parte tiene las 5 estrellas IMPRESIONANTE.

Muy bien explicado...

Con estos tutos hasta yo podré retomar C xD.

Salu2 Dioni!!


Risa Dos años en SCENEBETA Risa

Click aquí para ver la Entrada de Bitácora.

Imagen de Dioni0396

Gracias a los 2

gdljjrod y Jorge

Imagen de gdljjrod

Buen tuto

Muy bien dioni este contenido si me gusta leer en esta web, y buena idea de agregar muchas libs para no empezar a tener conflictos a la hora de compilar por falta de algunas de estas.


 

Imagen de Dioni0396

Gracias

gracias

:s

no entendi ni caquita

Imagen de Dioni0396

Que no entendiste?

las funciones?

La sintaxis?

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.