Anuncios Google

Mostrando texto en pantalla.

Tutoriales Avanzados Homebrewes

En esta toma os voy a enseñar como mostrar texto en pantalla. Esto es muy importante aprender pues todos los Homebrews deben llevar un texto para atraer al usuario a usarlo. Además, un texto bien pensado combinado con una buena imagen pueden hacer maravillas a los ojos del publico. Espero que podais entender bien este tuto. Y recordad que teneis derecho a preguntar cualquier duda que os surja por el camino. Mucha suerte.

Autores: klozzsting18.

Procedimiento

Primero abrimos nuestro programa para hacer codigos yo uso en lo personal el Notepad++ (lo podéis encontrar en PC) y le damos guardar como "main.c" (sin comillas) y lo guardamos en una carpeta que ustedes quieran pero que esté solo el archivo main.c en ella.

Ahora ponemos como se va llamar nuestro programa y y nuestro nombre o nick (opcional).

// Nombre del programa: escribir en pantalla // 
// Autor: sting18 //

¿Por que he puesto dos diagonales antes de escribir? Pues porque lo que escribas despues de dos diagonales no sera leido como codigo. Esto se llama comentario. Los comentarios sirven para especificar algo por si queremos dar una explicación para no perdernos en el codigo.

Despues hay que poner las librerias necesarias y las que necesitamos para escribir en pantalla. Son estas:

#include <pspkernel.h> 
#include <pspdebug.h>

Vamos con el siguiente paso:

PSP_MODULE_INFO("Escribir en pantalla", 0, 1, 1);

El primer atributo es el nombre del programa, pero no es realmente el nombre del programa que aparecerá (vamos a cambiar esto más adelante). Los otros valores son otros atributos (sólo lo dejan en paz), la versión principal, y la versión de menor importancia. Vamos a salir de todos estos excepto el nombre de los valores por defecto.

Ahora vamos a configurar la función que vamos a utilizar para escribir en la pantalla. Este paso es opcional, pero hace que la escritura de programas basados en texto mucho más fácil. El fundamento detrás de esta línea es para cambiar la función que está integrado en la PSP, llamado "pspDebugScreenPrintf" en algo que es mucho más fácil de escribir. Esta función se utiliza para escribir en la pantalla (que se verá más adelante). Lo que básicamente vamos a hacer aquí es cambiar el nombre de "pspDebugScreenPrintf" a "printf". Así que cada vez que utilizamos "printf" de ahora en adelante, el compilador sólo lo tratan como si ha escrito "pspDebugScreenPrintf". He aquí cómo lo haremos, vamos a definir "printf" como "pspDebugScreenPrintf" de esta manera.

#define printf pspDebugScreenPrintf

Todos somos humanos, y por ello a veces no sabemos todo. Lo que sigue la verdad todavia no se que significa exactamente pero lo pienzo averiguar. Lo que hace este pedazo de codigo es que al presionar el boton "HOME" podamos salir de nuestro programa.

int exit_callback(int arg1, int arg2, void *common) { 
sceKernelExitGame(); 
return 0; 
}
 
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; 
}

Ya agregado el codigo de salir del programa empezamos lo que será nuestro bucle principal. Comienza así:

int main() {

Al inicial cualquier programa lo primero que se lee del codigo es el "main" esto lo hace por defecto asi que todo programa empezará a leerse en en este pedazo de codigo. Al poner cualquier funcion o accion en C despues de llamar int, void, etc. tendremos que poner el nombre seguido de "()". Empezará a a leerlo despues de que pongamos "{".

Cada línea en el programa tendrá un punto y coma al final. La razón de esto es porque el compilador no ve ningún espacio en blanco. Entre líneas, puede tener 100 líneas en blanco, y el compilador no le importaría. Esto es útil porque te permite dar formato a su código de forma que desee, de manera que pueda comprender. Puede agrupar líneas, o hacer lo que quiera con su espacio en blanco. Pero, a su vez, para poner fin a una línea, se necesita un punto y coma. Así que hay que añadir estas dos líneas a su programa para la creación del mismo.

pspDebugScreenInit(); 
SetupCallbacks();

La forma en que vamos a imprimir texto en la pantalla es llamando a la "printf" (función) con un parámetro. Un parámetro es una variable que puede pasar a una función para que utilice. Estos serán útiles más tarde cuando escribas tus propias funciones. Así, para "printf" en la salida a la pantalla, tenemos que pasar una cadena a la misma. "Printf" es una función de gran alcance, porque también se puede utilizar para otras variables de salida a la pantalla. Nos gustaría pasar estos como otros parámetros, pero todo llegará a su debido tiempo. Por ahora, sólo se imprimirá "Escribi en pantalla gracias a sting18 jajaja" en la pantalla, así:

printf("Escribi en pantalla gracias sting18 jajaja");

Y ahi esta, le ha dicho "printf" en la salida a la pantalla. Ahora sólo tenemos que terminar algunas cosas y luego nuestro código fuente estará listo para compilar. Debemos hacer un alto nuestro programa para que podamos ver la salida. Si no lo hacemos, regresará al menú de PSP tan rápido que no lo podremos ni ver (el texto). Por lo tanto, hay que añadir esto para detener el programa:

sceKernelSleepThread();

Ahora tenemos que dar nuestra función de un valor de retorno, ya que cuando lo define ("int main ()"), le dijimos al compilador que se volvería un número entero. Así que sólo devuelve un "0" al hacer esto.

return 0;

Y, finalmente, para terminar la función tendremos que cerrar el "{" que pusimos al principio con "}".

}

Para que el "}" no quede hasta abajo de nuestro codigo y pueda proporcionar errores solo damos dos o tres veces enter depues del "}".

Y eso es todo para el programa! Ahora sólo tenemos que indicar al compilador cómo queremos que este proyecto elaborado por la creación de un Makefile. Por lo tanto, hay que crear un nuevo archivo llamado "Makefile." sin extensión. Una vez que hayas hecho esto, se abre en tu editor de texto.

TARGET = hello 
OBJS = main.o
 
CFLAGS = -O2 -G0 -Wall 
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti 
ASFLAGS = $(CFLAGS)
 
EXTRA_TARGETS = EBOOT.PBP 
PSP_EBOOT_TITLE = Hello World
 
PSPSDK=$(shell psp-config --pspsdk-path) 
include $(PSPSDK)/lib/build.mak

¡Listo! Guardamos el "makefile." junto con el "main.c", copiamos el compilador del tuto pasado y lo pegamos en la carpeta que esté el "makefile." y el "main.c" y le damos doble click al compilador. Al compilar saldrá un archivo "EBOOT.PBP" ese "eboot.pbp" lo ponemos en una carpeta con el nombre que quieran y metemos la carpeta(con el EBOOT.PBP dentro) en la direccion de nuestra memoria "ms0:PSP/GAME/" y lo probamos.

Hasta aquí el tuto de imprimir texto en pantalla. ¡Suerte!

4.458335
Tu voto: Ninguno Votos totales: 4.5 (48 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 MarioBros.

No puedo compilar

me sale el siguiente error:

 

make: *** /opt/pspdev/psp/sdk: Es un directorio.  Alto.

Es en Linux.

A qué se debe esto?

Imagen de degmi

Yo lo solucione haciendo

Tambien yo tenia ese error, parece ser que es por error del makefile. Para solucionarlo encontre entre comentarios mas abajo que usara el codigo de otro makefile y funciono bien. Puedes checarte el codigo de aca http://psp.scenebeta.com/tutorial/creando-un-menu-con-imagenes 

Imagen de by_fire

Ayuda con el

Ayuda con el compilador

cuando compilo me sale esto:

makefile:12:C/PSPDev/psp/sdk: No such file or directory

makefile:12: /lib/build.mak: No such file or directory

make:***No rule to make target `/lib/build.mak´. Stop

Normal 0 21 false false false ES X-NONE X-NONE MicrosoftInternetExplorer4 Normal 0 21 false false false ES X-NONE X-NONE MicrosoftInternetExplorer4

Bueno ya me he leído todos los comentarios de este tutorial y he hecho todo
pero no compila haber si me podéis ayudar, gracias


by_fire

Imagen de darkmido

Makefile

Yo tenia el mismo error y en mi caso las variables de entorno si estaban bien:

PSPSDK=C:\PSPDev\psp\sdk

PATH=%PATH%;C:\Pspdev\bin

 

la parte que me daba problemas era la siguiente:

PSPSDK=$(shell psp-config --pspsdk-path)

 

A proposito uso Window 7 64bits, investigando sobre los makefile aprendi lo siguiente, que en la parte de shell se puede sustituir con codigo de la consola de comando del sistema operativo que se use, por ejemplo esta parte:

PSPSDK=$(shell psp-config --pspsdk-path)

exactamente lo que sigue luego de shell: psp-config --pspsdk-path

se puede sustiruir por el resultado de algun comando de la consola, entonces sustitui lo que tenia antes por lo siguiente:

PSPSDK=$(shell echo %PSPSDK%)

y funciona perfectamente hace lo mismo que el otro comando simplemente obtener la ruta de la variable pspsdk que esta en las variables de entorno y asignarselo a la variable del lado izquierdo.
Espero les sirva y puedan probar mas cosas con ese comando para quienes les sirva.
Un Saludo!

Imagen de by_fire

Me da error con todo y las

Me da error con todo y las variables las he revisado un monton de veces por cierto tengo windows 7 32 bits

Cómo tienes las variables?

Cómo tienes las variables? (sigo terco que ese es el problema xD).

Sólo este code ta da error, o

Sólo este code ta da error, o cualquier otro que intentas compilar también? Porque si todos te dan error no tienes bien instalado el PSPSDK (seguro no están bien configuradas las variables de entorno en ese caso).

Imagen de by_fire

Las he revisado un monton de

Las he revisado un monton de veces y no veia nada y ahora me doy cuenta de que no puse C: los dos puntos no los veia,muchas gracias.


by_fire

Error en el makefile

me pone este error ''make: *** [main.o] Error 1''

 

 

Ayuda por favor

Imagen de sting18

Si lo haces igual te tiene

Si lo haces igual te tiene que salir bien le modificaste algo ?

Disculpen mi ignorancia

Disculpen mi ignorancia, ya solucione el problema, es que no coincidian los nombres del archivo del makefile con el main.c, de todas formas muchas gracias


OH YEAH

Imagen de sting18

Ok cualquier cosa no dudes en

Ok cualquier cosa no dudes en preguntar saludos ;).

Imagen de jesus.100

y como???

y como tiene que quedar en los 3 archivos?

SaLu2

Imagen de sting18

Ocupas el compilador el

Ocupas el compilador el main.c y el makefile. solo lee los tutoriales y veras todo lo necesario ;).

Imagen de Dioni0396

el makefile

de este tuto da error, tengo siempre que usar el de los samples.

Hola

Hice el compilador con la extensión BAT pero cuando lo ejecuto me dice esto:

"make" no se reconoce como un comando interno o externo, programa o archivos por lotes ejecutable.

Y luego en PAUSE

Presione una letra para continuar...

 

QUE hago mal?


 

 

Imagen de sting18

Tu make file esta mal o

Tu make file esta mal o tienes mal instaldo el entorno de programacion te recomiendo trates dee compilar estos archivos http://psp.scenebeta.com/tutorial/creando-un-menu-con-imagenes y trata de compilar si lo puedes compilar eque esta bien instaldo si no ya sabes que tyienes que hacer.


Podriais subir los main q no

Podriais subir los main q no ocupan nada para compararlos con los q hagamos y comprobar posibles errores?

 

O copiarlos en el propio articulo enteros para verlo entero...

 

Gracias

Imagen de sting18

Si esta bien ,de hecho en los

Si esta bien ,de hecho en los otros tutos ya voy agrenando los main el makefile y los archivos necesarios.

Imagen de _-Nk0-_

Error compilar

Al compilar me sale un erro diciendo 

make **** [main.o] error1

SOLUCIONADO:

En return 0 en vez de ; habia puesto ,

Imagen de freakno

error en el makefile

a mi me resulta el mismo mensaje que a los demas

las variables del entorno stan bien y no funciono pero usando el makefile del usuario yaguarflofly (gracias)

y todo de maravilla ya compile el programa

lo mismo paso en w7 de 64x y en una maquina virtual de xp ambos con las variables y el pack de programacion bien instaladas

y en ambos el resultado fue positivo usando ese  makefile


 

Imagen de sting18

Si lo se el makefile esta mal

Si lo se el makefile esta mal espero lo arreglen para que ya no tengan problemas, espero todo te valla bien saludos.

PD: abajo esta un makefile funcional.


Imagen de yaguarflofly

Me da error al compilar

Me da error al compilar y me sale esto:
make:*** C/PSPDev/PSP/sdk: is a directory. stop. ect

Asi que use este makefile:

TARGET = MiPrograma
OBJS = main.o
 
INCDIR =
CFLAGS = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)
 
LIBDIR =
LDFLAGS =
LIBS =
 
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Mi Programa de PSP
 
PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak 

Y no me dio error aunque no veo diferencia con el del tuto
Saludos
Imagen de sting18

La diferencia puede ser por

La diferencia puede ser por como lo guardas recuerda pones guardar como... y le pones de nombre "makefile." si ,al final de el nombre makefile va un punto si no lo pones no te servira para compilar y no ara nada ya que pongas el nombre bien le das guardar y listo , si tienes las variables de entorno bien funcionara perfecto :D.

en este pedaso.

PSP_EBOOT_TITLE = Mi Programa de PSPno pongas espacios mejor pon un guion bajo Mi_programa_PSP


Imagen de hbjpro

no compila

cuando inicio el compilador dice "make" no se reconoce como un comando interno o externo, programa o archivo por lotes ejecutables.

tengo windows 7


HBJPRO

Imagen de sting18

as instalado mal el devkitpro

as instalado mal el devkitpro regresate al tutorial y checa las vareables de entorno.

Imagen de Diego_Dark_256

[DUDA]

¿y si esta escribiendo una historia y el texto ocupa mas que la pantalla de tu psp como se pueden acer paginas. me refiero a cuando yege al final de la pantalla tocar derecha o R izquierda o L para pasar paina o volver a la anterior?



Canal de Youtube De "Trabajo": http://www.youtube.com/user/DiegoDark256

Canal de Youtube para divertirse ;D :http://www.youtube.com/user/Trollsofthelife

Twitter Personal: https://twitter.com/DiegoDark256

Twitter del Canal: https://twitter.com/TrollsOfTheLife


 

Imagen de sting18

Eso ya es estructura de juego

Eso ya es estructura de juego y tienes que ir acomodando como tu quieras metela en una function void para que asi se muestre todo a cada que vallas haciendo.

void pagina_2()
}

//todo tu texto los controles y cierras
}

y para llamarlo pones lo de precionar el boton que quieras y entonces que aga pagina_2(); y asi te cambiaras de funcion mostrando la que ayas abierto y ponle un bucle infinito a cada funcion para los controles y para que te muestre lo que escribiste en cada pagina.


Imagen de Diego_Dark_256

[DUDA]

para cuando el proximo!!!!!!!! Dinero boca

Imagen de 5to_jinete

No compila! [RESUELTO]

Ya hice el main.c, el makefile, y el compilador (compilador.bat) Están los 3 archivos en la misma carpeta y cuando le doy 2click al compilador, aparece una ventana que dice:

 

"C:\Documents and senting\propietario\escritorio\MAIN(esta es mi carpeta)>make

make:*** C/PSPDev/PSP/sdk: is a directory. stop.

 

C:\Documents and senting\propietario\escritorio\MAIN>pause

Presione una tecla para continuar"

y no sale el el eboot.pbp.

 

Se que este mismo error le ha dado a otros usuarios pero no se como solucionarlo.

 

He probado desinstalar el kit para tontos, borrar y re-agregar las variables de entorno pero nada. Se me acabaron las ideas...

RESUELTO: Me daba error el makefile que está en el tuto. Utilicé este:

 

TARGET = hello OBJS = main.o   CFLAGS = -O2 -G0 -Wall CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti ASFLAGS = $(CFLAGS)   EXTRA_TARGETS = EBOOT.PBP PSP_EBOOT_TITLE = Hola Mundo PSPSDK=$(shell psp-config --pspsdk-path) include $(PSPSDK)/lib/build.mak

Saludos!


Pensé en una firma buenísima, copada, ingeniosa y delirante... y también es invisible!!! Acá va:

"                                                                         "

Que tal?!

Imagen de Diego_Dark_256

lo mismo

a mi me paso lo mismo y tube que cambiar el makefile igual que tu Todo bien

Imagen de sting18

Si puse el makefile abajo

Si puse el makefile abajo falta que actualizen saludos.

Imagen de sting18

Edita el makefile esta mal...

Es asi.

TARGET = Holamundo
OBJS = main.o
 
CFLAGS = -O2 -G0 -Wall 
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti 
ASFLAGS = $(CFLAGS)
 
EXTRA_TARGETS = EBOOT.PBP 
PSP_EBOOT_TITLE = Hola-Mundo
 
PSPSDK=$(shell psp-config --pspsdk-path) 
include $(PSPSDK)/lib/build.mak


Imagen de Abaddon Ormuz

Buen tutorial, esperaré los

Buen tutorial, esperaré los siguientes, concretamente para la librería OldSchool (si harár un tuto usando esta no?).

Suerte

Imagen de klozz

Ya he hecho varios tutos de

Ya he hecho varios tutos de OSLIB solo falta que los pasen a portada! Salu2

Imagen de Diego_Dark_256

no compila

e escho todo pero el compilador no compila.

DUDA: tienen que estar el makefile y el main.c en una misma carpeta los archivos sueltos?



Canal de Youtube De "Trabajo": http://www.youtube.com/user/DiegoDark256

Canal de Youtube para divertirse ;D :http://www.youtube.com/user/Trollsofthelife

Twitter Personal: https://twitter.com/DiegoDark256

Twitter del Canal: https://twitter.com/TrollsOfTheLife


 

Imagen de Diego_Dark_256

[RESULTO]

lo que pasava es que ponia mal el makefile ya esta todo resuelto

Imagen de Diego_Dark_256

C:\Documents and

C:\Documents and senting\propietario\escritorio\MAIN(esta es mi carpeta)>make

make:*** C/PSPDev/PSP/sdk: is a directory. stop.

 

C:\Documents and senting\propietario\escritorio\MAIN>pause

PResione una tecla para continuar

:me sale esto pero no compila y mi pregunta es porque!!!!!!:



Canal de Youtube De "Trabajo": http://www.youtube.com/user/DiegoDark256

Canal de Youtube para divertirse ;D :http://www.youtube.com/user/Trollsofthelife

Twitter Personal: https://twitter.com/DiegoDark256

Twitter del Canal: https://twitter.com/TrollsOfTheLife


 

A mi me pasa lo mismo, he

A mi me pasa lo mismo, he hecho el make como dice, el compilador también, y el main.c. Estan todos en la misma carpeta, y me da el mismo error al compilar. He hecho copiar y pegar el makefile del tuto en el editor y nada, y me dice lo mismo

 

make:*** C/PSPDev/PSP/sdk: is a directory. stop.

 

C:\Documents and senting\propietario\escritorio\MAIN>pause

PResione una tecla para continuar

Una pregunta, no habrá que editar algo de lo de preparando el entorno de desarrollo?? porque asi parece como que el compilador no encuentre las librerias o algo. vosotros direis que sois los expertos

 

Imagen de Dioni0396

has modificado

las variables del sistema?

si, he añadido al Path lo que

si, he añadido al Path lo que deciais y despues he añadido las otras dos variables 

PSPSDK con valor C:/PSPDev/psp/sdk y otra con nombre PSPDEV con valor C:/PSPDev

y me sigue dando ese error

he probado con los samples

he probado con los samples del PSPdev y si que funcionan al compilar

 

solucionado, he gastado el

solucionado, he gastado el siguiente Makefile con el cual he aprobechado y le he puesto un icono y un fondo de pantalla para que se vea mejor en el menu!!

 

 

TARGET = hello_world

OBJS   = main.o

 

INCDIR   =

CFLAGS   = -G0 -Wall -O2

CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti

ASFLAGS  = $(CFLAGS)

 

LIBDIR  =

LDFLAGS =

LIBS    =

 

BUILD_PRX = 1 

 

EXTRA_TARGETS   = EBOOT.PBP

PSP_EBOOT_TITLE = Hello World

PSP_EBOOT_ICON= ICON0.png

PSP_EBOOT_PIC1= PIC1.png

PSP_EBOOT_SND0= 

 

PSPSDK=$(shell psp-config --pspsdk-path)

include $(PSPSDK)/lib/build.mak

 

Imagen de fran98

¿Has puesto el main.c y el

¿Has puesto el main.c y el Makefile dentro de la misma carpeta donde está el compilador?

 

EDITO: El problema ha sido resuelto. Ignorad este mensaje.


Imagen de Diego_Dark_256

si tranquilo que esta resulto

si tranquilo que esta resulto era el make file que ponai una cosa mal ya lo e escho bien solo que e cambiado lo que ponia en el tutorial lo del texto de la pantalla por otro texto distinto XDRisa



Canal de Youtube De "Trabajo": http://www.youtube.com/user/DiegoDark256

Canal de Youtube para divertirse ;D :http://www.youtube.com/user/Trollsofthelife

Twitter Personal: https://twitter.com/DiegoDark256

Twitter del Canal: https://twitter.com/TrollsOfTheLife


 

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.