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.
Comentarios
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?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
y como se pone al precionar
y como se pone al precionar dos botones a la vez???
Pues
if ((osl_keys->held.R) && (osl_keys->held.L)) oslPrintf("Estas presionando L y R");
Muchas gracias Dioni0396!!!
Muchas gracias Dioni0396!!! :)
De nada
De nada
Retomando programación C para
Retomando programación C para PSP \m/
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
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 <oslib/oslib.h></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"
Facil ya no agas tutos para
Facil ya no agas tutos para scenebeta y listo :)
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.
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.
Usa el del xerpi
el # es posible que sea el error.
Pruébalo así:TARGET =
Pruébalo así:
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!!
Dos años en SCENEBETA
Click aquí para ver la Entrada de Bitácora.
Gracias a los 2
gdljjrod y Jorge
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.
Gracias
gracias
:s
no entendi ni caquita
Que no entendiste?
las funciones?
La sintaxis?