Anuncios Google

OSLib - Hello World

Tutoriales Avanzados Homebrewmex

Bueno tras ver que no hay tutoriales de el uso de la librería OSlib les pondré un poco del conocimiento que he adquirido aunque realmente no sea mucho. Primero que nada empezare con el mítico Hello World y después iré poniendo los demás.

Instalar SDK:

Primero que nada deberán tener instalado algún SDK, en mi caso uso el Kit de Programacion PSP para Torpes de marce (Configurarlo tal y como señala la noticia).

Observaciones:

Luego de tener instalado nuestro SDK tenemos que conseguir un editor de texto, realmente no importa cual uses, puedes usar el Notepad, Wordpad, el que prefieras; yo uso Notepad++. Es preferible usar un editor que sea capaz de identificar el código fuente de C debido a que la sintaxis se destaca, las opciones quedan mas claras (mucha gente de la scene usa Dev C++). Pero lo dicho, no importa cual uses, siempre que sepas utilizarlo.

La primera parte del programa debe contener comentarios para decir a cualquier persona que lea nuestro código cual es el objetivo del programa, cuando fue escrito, y quién es el autor. Los comentarios son las lineas del código fuente que se omiten del binario compilado. Los comentarios son una parte muy importante del código. Los comentarios se señalan con los caracteres // y /* */.

Comenzando:

El nombre del archivo que crearemos con nuestro editor de texto sera: Main.c.

Importamos la librería para poder desarrollar bajo OSLIB ya que sin ella no estaríamos programando bajo OSLIB solo seria C:

//importamos la libreria
#include <oslib/oslib.h> //libreria indispensable Old School Library OSLIB

Ahora lo siguiente es PSP_MODULE_INFO("Nombre del homebrew o del plugin",0,1,1); los números son la versión del homebrew, los otros valores son otras cualidades (licencia ajustada solamente), versión importante, y versión de menor importancia.

Dejaremos todo a excepción del nombre como valores por defecto. Así pues, agregamos la linea siguiente al programa:

PSP_MODULE_INFO("HelloWorld con OSLib", 0, 1, 1);
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);

Ahora iniciamos el programa el cual conlleva de nombre main en esta ocasión es un main de tipo entero y quedaría así:

int main()//Iniciamos el programa
{

Ahora con las lineas de mas abajo ya no tendremos que escribir las lineas para hacer funcional el "Callbacks" o el botón home
con esta linea la librería ya se encarga de todos los callbacks que hacíamos antes y ya no nos tenemos que preocupar por esa historia que tanto molestaba usando las librerías normales.

Ahora para para iniciar inicializarémos la librería oslib escribiendo oslInit(0);:

oslInit(0);

Iniciamos la parte gráfica indicando el formato de pixeles que queremos usar, si queremos usar doble buffer void oslInitGfx(int pixelFormat, int bDoubleBuffer); usaremos OSL_PF_8888 para una pantalla de 32 bits o OSL_PF_5650 para una pantalla de 16 bits, 0 para buffer simple, 1 para buffer doble.

oslInitGfx(OSL_PF_8888, 0);

Iniciamos la pantalla para poder escribir en ella usando oslInitConsole(); ya que sin ella no podremos escribir en pantalla:

oslInitConsole();

Escribimos en pantalla usando oslPrintf antes en C era pspDebugScreePrint("texto") ahora en OSlib es oslPrint si quisieran imprimir en determinado punto seria oslPrintf_xy(int X , int y,"texto"); que se usaria ejemplo: oslPrintf_xy(0,20,"Hola mundo"); pero eso lo veríamos en el tutorial 2, también recordar que \n se utiliza para dar saltos de linea:

oslPrintf("Hola Mundo!!\n\n");
   oslPrintf("Leccion 1: OSLIB Hello world.\n\n");
   oslPrintf("psp.scenebeta.com\n----------------------");

Esperamos a que el usuario apriete cualquier botón para salir y así no tener que ver como se ejecuta el homebrew y sale solo:

oslWaitKey();

Iniciamos la parte gráfica escribiendo oslEndGfx();:

oslEndGfx();

Sale directamente al menú de la psp con el comando oslQuit();:

oslQuit();
 
return 0;

Debemos recordar que siempre debe haber una llave que cierra, como la de a continuación ya que sin ella daría error de compilado:

}

Makefile

TARGET = HelloWorld
OBJS = main.o  
 
INCDIR =
CFLAGS = -G4 -Wall -O2
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)
 
LIBDIR =
LDFLAGS =
STDLIBS= -losl -lpng -lz \
  -lpspsdk -lpspctrl -lpspumd -lpsprtc -lpsppower -lpspgu -lpspaudiolib -lpspaudio -lm
LIBS=$(STDLIBS)$(YOURLIBS)
 
 
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = OSlib Hello World
 
 
PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak

Ahora les dejo el main completo :)

/importamos la librería
#include <oslib/oslib.h> //librería indispensable Old School Library OSLIB
 
PSP_MODULE_INFO("HelloWorld con OSLib", 0, 1, 1);
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);
 
int main()//Iniciamos el programa
{
    //con esta linea la librería ya se encarga de todos los callbacks
    //que haciamos antes y ya no nos tenemos que preocupar por esa historia que tanto molestaba usando las librerías normales 
 
    oslInit(0);
 
   //iniciamos la parte gráfica indicando el formato de pixels que queremos usar y si queremos usar doble buffer
    //void oslInitGfx(int pixelFormat, int bDoubleBuffer);
    //usaremos OSL_PF_8888 para una pantalla de 32 bits o OSL_PF_5650 para 16
    //0 para buffer simple, 1 para buffer doble
 
    oslInitGfx(OSL_PF_8888, 0);
 
    //iniciamos la pantalla para poder escribir en ella
 
    oslInitConsole();
 
   //escribimos
 
    oslPrintf("Hola Mundo!!\n\n");
   oslPrintf("Leccion 1: OSLIB Hello world.\n\n");
   oslPrintf("psp.scenebeta.com\n----------------------");
 
    //esperamos a que el usuario apriete cualquier botón para salir.
 
    oslWaitKey();
 
   //finaliza la parte gráfica
 
    oslEndGfx();
 
   //sale directamente al menú de l la psp
 
    oslQuit();
 
    return 0;
}   

Descargar OSLib - Hello World  (Solo Usuarios Registrados).

4.096385
Tu voto: Ninguno Votos totales: 4.1 (83 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 arielnmz

error al compilar

esto devuelve la consola...

C:\PSPApps\TutorialOSLibHelloWorldPSP\SRC>make
psp-gcc -I. -IC:/PSPDev/psp/sdk/include -G4 -Wall -O2 -D_PSP_FW_VERSION=150  -L.
 -LC:/PSPDev/psp/sdk/lib   main.o -losl -lpng -lz -lpspsdk -lpspctrl -lpspumd -l
psprtc -lpsppower -lpspgu -lpspaudiolib -lpspaudio -lm -lpspdebug -lpspdisplay -
lpspge -lpspctrl -lpspsdk -lc -lpspnet -lpspnet_inet -lpspnet_apctl -lpspnet_res
olver -lpsputility -lpspuser -lpspkernel -o HelloWorld.elf
c:/pspdev/bin/../lib/gcc/psp/4.3.5/../../../../psp/lib\libosl.a(keys.o): In func
tion `oslIsRemoteExist':
c:\MinGW\msys\1.0\home\builder\minpspw\devpaks\045_oslibmod\build\trunk/keys.c:1
32: undefined reference to `sceHprmIsRemoteExist'
c:/pspdev/bin/../lib/gcc/psp/4.3.5/../../../../psp/lib\libosl.a(keys.o): In func
tion `oslReadRemoteKeys':
c:\MinGW\msys\1.0\home\builder\minpspw\devpaks\045_oslibmod\build\trunk/keys.c:8
9: undefined reference to `sceHprmIsRemoteExist'
c:\MinGW\msys\1.0\home\builder\minpspw\devpaks\045_oslibmod\build\trunk/keys.c:9
7: undefined reference to `sceHprmPeekCurrentKey'
make: *** [HelloWorld.elf] Error 1
 
C:\PSPApps\TutorialOSLibHelloWorldPSP\SRC>

Imagen de NEKERAFA

Errores al compilar

Hola a tod@s.

Al final he podido instalar el entorno de programación de PSP en Ubuntu, y todo bien con los tutoriales básicos de C, pero al compilar este tutorial me lanza el siguiente error:

/home/neque/pspdev/psp/sdk/lib/libosl.a(keys.o): En la función `oslIsRemoteExist':
/home/user/PSP/OSLib_MOD/OSLib_MOD/keys.c:132: referencia a `sceHprmIsRemoteExist' sin definir
/home/neque/pspdev/psp/sdk/lib/libosl.a(keys.o): En la función `oslReadRemoteKeys':
/home/user/PSP/OSLib_MOD/OSLib_MOD/keys.c:89: referencia a `sceHprmIsRemoteExist' sin definir
/home/user/PSP/OSLib_MOD/OSLib_MOD/keys.c:97: referencia a `sceHprmPeekCurrentKey' sin definir
collect2: ld returned 1 exit status
make: *** [HelloWorld.elf] Error 1

No sé yo pero creo que las rutas tipo /home/user/... están mal.

¿Cual es el error?


NekeOS, el nuevo shell para PSP

PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.

Sony Xperia Z1 Compact con Android 5.1.1

Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).

Imagen de Dioni0396

Faltan librerias

en el makefile

Solucion, ponlas todas.

Imagen de Ricx-Dark

Viste klozz te dije que

Viste klozz te dije que siguieras con tus tutos en scenebeta ya aparece y quisiera que continuaras

Imagen de klozz

Pues este es el unico que

Pues este es el unico que habian subido a portada .____. xD ahora solo dividieron la seccion jajaa

Imagen de Dioni0396

Te los estan subiendo

De los tutoriales mios y tuyos tendremos la dosi a reventar.

Imagen de gdljjrod

En efecto

Así que vamos por mas tutoriales....

Imagen de arielnmz

como hago para que

como hago para que "oslWaitKey()" espere solo a que apriete (X) y no cualuier tecla??

Imagen de klozz

puedes hacer una funcion que

puedes hacer una funcion que espere al ser presionado X

#define wait oslWaitKey

void pressedX()//pressedX() la mandas llamar en el main del programa en donde estava oslWaitKey(); pones

//pressedX();

{

if (osl_keys->held.cross) wait();

}

 

mas o menos podrias hacerla asi saludos


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 arielnmz

y no puedo usar los terminos

y no puedo usar los terminos definidos en keys.h ???? 

Imagen de klozz

pues y porque no pruebas a

pues y porque no pruebas a experimentar ???? yo solo te di una opcion xDD mientras mas experimentes se te hara mas facil xD un saludo


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

Excelente!!!

Es precisamente lo k estaba buscando, cuando son las otras lecciones? donde puedo aprender mas??

Tengo experiencia con código para web, html, css, php, jquery, pero tengo mi psp y me encantaria desarrollar algunos proyectos, 

Por donde me recomendan empezar,

Espero ansioso las siguientes lecciones...

Salu2

Imagen de klozz

ya estan escritas varias

ya estan escritas varias lecciones solo es cuestion de que las pasen a portada algun editor pero cuando sean pasadas te enteraras y podras seguir aprendiendo más saludos


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 bandido58

Gracias man, comenzare con

Gracias man, comenzare con esto... 

Imagen de isaacsinn

un gran trabajo

gracias por el trabajo

lo are

Imagen de klozz

=O que bueno que lo han

=O que bueno que lo han pasado a portada :D gracias n.n 

boy a tratar de aserlo xD

boy a tratar de aserlo xD

Imagen de friz97

Interesante

Se ve interesanteTodo bien

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.