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.
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!
Comentarios
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?
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
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
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!
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).
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
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
Ok cualquier cosa no dudes en
Ok cualquier cosa no dudes en preguntar saludos ;).
y como???
y como tiene que quedar en los 3 archivos?
SaLu2
Ocupas el compilador el
Ocupas el compilador el main.c y el makefile. solo lee los tutoriales y veras todo lo necesario ;).
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?
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
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.
Error compilar
Al compilar me sale un erro diciendo
make **** [main.o] error1
SOLUCIONADO:
En return 0 en vez de ; habia puesto ,
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
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.
Me da error al compilar
make:*** C/PSPDev/PSP/sdk: is a directory. stop.
ectAsi que use este makefile:
Y no me dio error aunque no veo diferencia con el del tuto
Saludos
http://tefox.zobyhost.com Twitter: @yaguat
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_PSPno 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
as instalado mal el devkitpro
as instalado mal el devkitpro regresate al tutorial y checa las vareables de entorno.
[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
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.
[DUDA]
para cuando el proximo!!!!!!!!
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:
Saludos!
Pensé en una firma buenísima, copada, ingeniosa y delirante... y también es invisible!!! Acá va:
" "
Que tal?!
lo mismo
a mi me paso lo mismo y tube que cambiar el makefile igual que tu
Si puse el makefile abajo
Si puse el makefile abajo falta que actualizen saludos.
Edita el makefile esta mal...
Es asi.
Buen tutorial, esperaré los
Buen tutorial, esperaré los siguientes, concretamente para la librería OldSchool (si harár un tuto usando esta no?).
Suerte
Ya he hecho varios tutos de
Ya he hecho varios tutos de OSLIB solo falta que los pasen a portada! Salu2
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
[RESULTO]
lo que pasava es que ponia mal el makefile ya esta todo resuelto
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
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
¿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.
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 XD
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