Bienvenidos al Baul del Programador,en este hilo encontraras todo lo necesario para iniciarte en la Programacion para PSP y lograr crear tus propios Programas de PSP de la manera mas facil y sencilla.El objetivo de este Hilo,es que un usuario sin ningun conocimiento en programacion,consiga crear su propio Homebrew como pueden ser el XmbFlasherGui,DeadFlasher,Recovery Translator o nuestro propio Ultra Recovery.
Antes de todo,Agradecer a Dark_Alex,Mathieulh,Harleyg,Booster,Fanjita,Team280,Team C+D, noobTeam,Ookm,xTrusion y todos los Desarrolladores, que hacen que el mundo de la scene sea posible...a todos ellos,,,!!Gracias¡¡,por todos los esfuerzos realizados en la SCENE de la PSP para que todo esto fuera posible.
Archivos Adjuntos:
1º- KIT de programación para TORPES 2
2º- Libreria Personalizada Astaroth
3º- Libreria Grafica PNG
4º- Libreria Power
5º- Main.C (Mi 1º Programa)
6º- Makefile (Mi 1º Programa)
7º- Libreria Opciones (Mi 1º Programa)
8º- Main.C (Mi 1º Programa Modificado)
Web Site Oficial
Indice
- Tema I: Preparando el PC para empezar a Programar (Entorno a usar,Pspdev,Pspsdk,etc,etc)
Tema II: Tengo el PC Listo,¿Ahora qué? (El Main y el Make,Estructura del Codigo)
Tema III: Las Librerias (1º Parte)
Tema IV: Definiciones mas Comunes y Utiles (Definiciones mas Usadas en Programacion)
Tema V: Mi Primer Homebrew para PSP (La Compilacion)
Tema VI: Las Librerias (2º Parte)
Tema VII: Definiciones (2º Parte)
Tema VIII: Mi Segundo Homebrew para PSP
Tema I: Preparando el PC
Bueno Amigos,antes de comenzar a programar,lo primero que debemos tener en cuenta,es que nuestro PC este preparado para programar y compilar el software que desarrollemos.Como seguramente no este preparado el entorno,aqui os dejo como hacerlo de la manera mas rapida y sencilla.
Lo primero que debereis hacer es Descargar este Pack creado por mi,el cual incluye todo lo necesario para preparar el entorno de nuestro PC.Si quereis que todo salga a la primera,seguir las instrucciones de Instalacion al pie de la letra.
Cita: |
Proceso de Instalacion Lo primero que debemos hacer antes de nada,es cambiar las variables de entorno de nuestro PC (hablo de windows xd). Para ello seguir estos pasos. 1º Hay que añadir el path en windows: en MiPc con el botón derecho, Opciones avanzadas, Variables de entorno, en la varible PATH (si no existe, aunque es raro, la creas en nuevo) y añades al final ";C:/PSPDev/bin" (Sin las Comillas xd). Ahora creas dos variables nuevas,una con el nombre PSPSDK con valor "C:/PSPDev/psp/sdk" y otra con nombre PSPDEV con valor "C:/PSPDev". 2º Una vez tengamos las variables de entorno de windows creadas, procedemos a instalar el Pack. 3º Ejecuta el pack e instalalo en la ruta que te pide, usease,C:/Pspdev (Si cambiais la letra de la unidad del disco duro, debereis cambiarla tambien en las variables de entorno) 4º Una vez finalize la instalacion del pack,ya esta todo listo y preparado para programar y compilar. Proceso de Compilacion A la hora de compilar un codigo, simplemtente debemos copiar el archivo llamado Compilador.cmd que esta en C:/Pspdev al lado de nuestro main y make. (Ver la imagen xd) Una vez compiado el archivo Compilador.cmd al lado del main y makefile a copilar, solo debemos clickear encima de el y automaticamente saldra una ventana de ms-dos mostrando la copilacion y los archivos copilados al lado de nuestro main.
Y ya esta compis asi de facil, cada vez que queramos copilar un src, sea cual sea, copiamos el archivo Compilador.cmd al lado del main y make y pinchamos encima de el y voila, programa compilado y listo para usar. Software que incluye el pack En el pack e incluido lo siguiente: - Pspdev Win32 + SDK - Libreria devKitARm Revision 20 + SDK(La ultima xd) - Librerias SDL,SDL_MIXER,JPEG,LIBpsp2d,libmikmod,PSPGL,LibbulletML,Lib Tremor,LibPng,Zlib y LibMad - Source Codecs variados en los cuales encontraremos diversos ejemplos para nuestra iniciacion en la programacion y Src complejos como el PsarDumper330,Donwgrader 3.50,etc,etc |
Ahora vamos a realizar una pequeña prueba de comprobacion del entorno que hemos instalado en nuestro PC,de este modo comprobaremos que todo este correctamente preparado para la compilacion de nuestro programa de PSP.
Realizando Prueba de Entorno
En la carpeta c:/Pspdev encontrara un archivo llamado Compilador.cmd,copie este archivo dentro de la carpeta c:/Pspdev/Source Codec PSP/PsarDump330,(podeis copiar el archivo Compilador.cmd dentro de cualquira de los src,yo he seleccionado el psardump como ejemplo simple)
Codigo PsarDump330 Antes de ser Compilado
Hidden:
Una vez copiado el archivo Compilador.cmd al lado del main y makefile a compilar,solo debemos clickear encima de el y automaticamente saldra una ventana de Ms-Dos mostrando la compilacion y los archivos compilados al lado de nuestro main.
Imagen Ventana Ms.dos
Hidden:
PsarDump330 Compilado Correctamente
Hidden:
* Recordad el archivo Compilador.cmd esta dentro de la carpeta C:/Pspdev
Tema II: ¿Ahora qué?
Bueno una vez que ya tenemos preparado el PC con el entorno adecuado para poder comenzar a compilar nuestro software,empezamos a estudiar la estructura que forma un codigo.
El Codigo o Source Codec (SRC) se divide de tres partes.
1º - El Main.c
2º - El Makefile
3º - Las Librerias
Aqui os dejo una imagen,de la estructura del codigo del PsarDump,una aplicacion bastante buena de PSP.
Estructura del Codigo Original PsarDump330
Hidden:
Hablemos del Main.c.El archivo Main.c es el archivo donde escribiremos los comandos de programacion,dicese formaremos la estructura del programa mediantes definiciones en C+.
El archivo Main.c,es obligatorio en todos los Source Codecs,es el archivo principal del programa por asi decirlo. "No tiene por que llamarse Main Obligatoriamente"
El Makefile.El make es el archivo que especifica que formato de salida le damos a nuestro programa (Eboot.pbp,Prx,etc,etc),dicese,este archivo es obligatorio al igual que el Main.c,(En todo codigo de aver un Main.c y un Makefile).La funcion exacta del makefile,es definir la salida del formato del programa a ser compilado.Me explico si en el archivo make,lo configuramos para ELF,cuando compilemos el programa se creara en formato ELF,si el make lo configuramos para una salida en Eboot.pbp,cuando copilemos el archivo creado sera un Eboot.pbp.Tambien en el make se puede añadir las rutas del Icono,Fondo,Musica y tal para el Eboot
Archivo Makefile para dar salida en .ELF
Hidden:
En este ejemplo del Makefile,vemos com esta preparado para Compilar el codigo en .ELF
Los archivos ELF son los PRX,solo debemos Renombralos,Ejemplo: si compilamos con este make,el archivo creado seria,MiPrograma.elf el cual renombramos como MiPrograma.prx
Archivo Makefile para dar salida en Eboot.PBP
Hidden:
Aqui podemos observar como el Makefile esta preparado para crear el Programa en Eboot.pbp
Si quereis que al crear el Eboot,en el cual ya se incluya la imagen de Fondo e Icono,añadir estas lineas al Makefile
Lineas Adicionales para el Makefile (Solo salida en Eboot.PBP)
Hidden:
Añadir estas lineas debajo de la linea que pone PSP_EBOOT_TITLE = MiPrograma.y cuando compileis el Eboot se incluira el Fondo e Icono del Eboot.
Bueno es muy sencillo,recordad,todo codigo lleva el Main.c que es archivo donde vamos a escribir el codigo del programa y el Makefile que es el archivo que le da el formato de salida a nuestro codigo.
* No todos los Makes sirven para todos los Main,dependiendo de las librerias que usemos,deberos usar un Makefile ó otro.
Las librerias,son archivos adicionales que llevan funciones,las librerias se usan para tener el codigo mas ordenado,me explico mejor,las librerias son llamadas por el Main.c,nosotros podemos definir funciones en una libreria y cuando el Main lo requiera la llamara para cojer el codigo que necesite.De todos modos todo sera explicado poco a poco y a su tiempo.
Tema III: Las Librerias (1º Parte)
En este apartado haremos especial incapie en las Librerias,Como hemos dicho antes las Librerias son archivos adicionales,requeridos por el Main.c,de esta manera ahorramos escribir codigo en el Main y asi tenerlo mas ordenado,limpio y depurado.
Libreria adicional para tus Proyectos
Hidden:
Como podemos observar en la libreria arriba expuesta,la libreria contiene diverso codigo,como las funciones de flasheo,botones,bateria,etc,etc.Solo debemos escribir la funcion en el Main.c. y el se encargara de buscar el resto del codigo en las librerias,de este modo ahorramos tiempo tambien,puesto que no hay que estar definiendo completamente la funcion nuevamente.
Para incluir una libreria en la Main.c debemos escribir esto en las primeras lineas del Main.c
#include "Nombre de la Libreria a Incluir" Buscara la libreria al lado del Main.c
#include < Nombre de la Libreria a Incluir > Buscara la libreria en el sdk del Pc
bueno de momento aqui vamos a dejar el tema de las librerias,mas adelante seguiremos explicando mas,ahora es mejor ver unas definiciones y empezar a practicar.
TemaIV: Definiciones (1º Parte)
Respecto a las definiciones,vamos a ver pocas,puesto que la mejor manera de conocerlas es empezar a crear nuestro 1º Programa ya.
SceUID sceIoOpen(const char *file, int flags, SceMode mode);
Abre un archivo
int sceIoClose(SceUID fd);
Cierra el archivo
int sceIoWrite(SceUID fd, const void *data, SceSize size);
Escribe un archivo
int sceIoRemove(const char *file);
Elimina un archivo
int sceIoRead(SceUID fd, void *data, SceSize size);
Lee un archivo
int sceIoRename(const char *oldname, const char *newname);
Cambia el nombre a un archivo
int sceIoMkdir(const char *dir, SceMode mode);
Crea un nuevo directorio
int sceIoRmdir(const char *path);
Elimina un directorio
void pspDebugScreenInit(void);
Inicializa la pantalla para poder escribir en ella
void pspDebugScreenPrintf(const char *fmt, ...) __attribute__((format(printf,1,2)));
Imprime texto en pantalla
void pspDebugScreenClear(void);
Limpia la pantalla
void pspDebugScreenSetBackColor(u32 color);
Permite cambiar el color de fondo
void pspDebugScreenSetTextColor(u32 color);
Permite cambiar el color del texto
void pspDebugScreenSetXY(int x, int y);
Permite específicar en coordenadas donde se mostrará el texto
void Kprintf(const char *format, ...) __attribute__((format(printf, 1, 2)));
Imprime el texto en modo kernel
void sceKernelExitGame(void);
Finaliza el programa o el juego
int sceKernelLoadExec(const char *file, struct SceKernelLoadExecParam *param);
Ejecuta un nuevo programa
int sceKernelDelayThread(SceUInt delay);
Retardo de tiempo
* Para mas dudas y ejemplos de definiciones,mirar la libreria de Astaroth.h
Tema V: Compilando mi 1º Programa
Bien,llegado a este punto del tutorial deberiamos tener el Entorno del PC preparado para compilar cualquier programa,no vamos hacer mas incapie en definiciones y mas teoria,puesto que lo mejor para aprender es ponerse a practicar,de este modo lo entenderemos mejor todo.Por eso vamos a empezar a crear nuestro 1º Programa para PSP desde cero
* Os recuerdo que las Definiciones y Librerias espuestas anteriormente,son para crear aplicaciones en MODO USER (Validas para todos los firmwares) y en MODO KERNEL (Validas para firmwares con kernel 1.50 solamente)
Vamos a comenzar a crear nuestra primera aplicacion de PSP,la aplicacion que vamos a crear es muy simple,se trata de una aplicacion cuya funcion sera ocultar y mostrar una carpetas.Esta aplicacion la crearemos en modo user para que funcione en todos los custom firmwares.
Empezamos:
Lo primero que debemos hacer es crear una carpeta,la la podeis llamar como querais,ejemplo: "Mi Programa"
Ahora descargais la libreria Astaroth y las libreria graficas y power (Encontrareis las descargas en Archivos Adjuntos).Una vez tengamos las librerias las incluimos dentro de nuestra carpeta anteriormente creada. (ver imagen)
Preparando la Carpeta
Hidden:
Una vez tengamos la carpeta preparada con las librerias,al igual que se muestra en la imagen,creamos un nuevo txt y le llamamos MAIN.C,cambiando la extension del archivo .TXT por .C. y le metemos dentro nuestra carpeta con las librerias.
Ahora abrimos el archivo MAIN.C con el wordpad,ultraedit,etc,etc (sirve cualquier editor de texto) y escribimos en el lo siguiente:
Cita: |
|
Ahora salimos del editor de texto guardando los cambios en MAIN.C
*Este es el programa,al lado de cada funcion podeis observar un pequeño cometario explicativo,echarle un vistazo.
Ahora vamos a crear el Makefile necesario para compilar nuestro programa,para ello creamos un nuevo archivo txt y le llamamos "Makefile" (Sin extension),lo abrimos con cualquier editor de texto y escribimos lo siguiente:
Cita: |
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 |
Salimos del editor de texto y guardamos,ya tenemos nuestra primera aplicacion lista para ser Compilada.(Ver imagen)
Preparado para Compilar
Hidden:
Ya esta todo listo,ahora cojemos el Compilador.bat el cual ya deberiamos conocer y lo metemos dentro de nuestra carpeta.(Ver imagen)
Compilacion
Hidden:
Ahora solo debemos clickear 2 veces encima del Compilador.bat,se mostrara una pantalla de Ms.Dos mostrando el proceso de Compilacion y Listo!!! (Ver imagen)
Compilacion Finalizada con Exito
Hidden:
Como observareis,se ha creado un Eboot.pbp en nuestra carpeta,ese es el resultado que esperabamos,ahora a testearlo.
* Es importante que cada vez que abrais una nueva funcion,nose os olvide cerrarla,hablo de las sangrias.Ejemplo:
Void menu();
{ <- Abrimos y comenzamos a definir
Definimos funcion
} <- Cerramos
** La Aplicacion que hemos creado esta en Modo User,esto significa que no requiere kernel 1.50,por lo cual debera ir en PSP/GAME y no GAME150
*** Realmente para crear esta aplicacion,no hace falta las librerias,con el main.c y el makefile sobraria,pero las añado para una futura actualizacion de la aplicacion,de este modo solo ahi que modificar el main.c en un futuro
Tema VI: Las Librerias (2º Parte)
En este tema vamos aprender a crear nuestra propia libreria en la cual incluiremos la definicion de nuestras propias funciones.Para ello editaremos nuestro 1º programa,dejando el main.c mejor estructurado y depurado.
Vamos a crear nuestra propia libreria,para ello lo primero q debemos hacer es crear un nuevo archivo de texto en la carpeta de nuestro 1º Programa y le llamamos con el nombre que queramos Ej: "Opciones" y lo guardamos con extension ".H",al igual que las librerias que hemos visto en los temas anteriores.debera quedar asi Ej: "Opciones.h" (Ver imagen)
Nuestra Libreria
Hidden:
En esta libreria que vamos a crear,vamos a definir nuestras funciones para nuestro 1º Programa,el cual deberiamos aver compilado exitosamente en el tema anterior.
Abrimos nuestra libreria la cual esta vacia y comenzamos a definir.Vamos a crear 4 funciones
Empezamos a definir:
Cita: |
|
como podeis observar,las definiciones que antes estaban en el main.c,ahora las hemos movido a nuestra libreria,ahora tenemos q editar el MAIN.C de la siguiente manera.
Cita: |
|
Si comparais los codigos,observareis las diferencias,ahora el main.c esta mas depurado y limpio que antes.
Ahora solo queda volverlo a compilar y testearlo
* Dejo remarcado en Rojo los cambios realizados en el Main.c
Tema VII: Definiciones (2º Parte)
Tema en Proceso
Tema VIII: Compilando mi 2º Programa
Tema en Proceso
Glosario de Terminos C+
Tema en Proceso
El Baul del Programador by Astaroth,Arkarian & Marce82
Bueno poco a poco ire ampliando el hilo,
_________________
10 comentarios:
gracias por este como lo diria enorme tutorial XDDD gracias de nuevo
se hace lo que se puede,salu2
ya te falta poco
Hola marce82 aun tengo mis dudas sobre tu tutorial esta muy bien explicado pero no estaria mal que hicieras un tutorial mas a fondo sobre copiar archivos de la memorystick a la fash
Una pasada el esfuerzo que estais haciendo, ánimoss que os seguimos muy de cerca!
Feliz navidad :P
oye marce tengo un problema ya desistale e instale como 10 veces tu pack anteriormente lo tenia en mi pc con xp ahora lo instalo en vista y tengo un problema me sale esto:
Creando Archivo... Espere...
7 [main] ? (5076) C:\PSPDev\bin\make.exe: *** fatal error - system shared
memory version mismatch detected - 0x2D1E009C/0x75BE0096.
This problem is probably due to using incompatible versions of the cygwin DLL.
Search for cygwin1.dll using the Windows Start->Find/Search facility
and delete all but the most recent version. The most recent version *should*
reside in x:\cygwin\bin, where 'x' is the drive on which you have
installed the cygwin distribution. Rebooting is also suggested if you
are unable to find another cygwin DLL.
hola marce espero y me puedas responder porque no quiere quedar el pack ahora me sale lo siguiente
Creando Archivo... Espere...
psp-gcc -I. -IC:/PSPDev/psp/sdk/include -O2 -G0 -Wall -D_PSP_FW_VERSION=150 -c
-o main.o main.c
psp-gcc.exe: _spawnvp: No such file or directory
make: *** [main.o] Error 1
Terminado
Esta muy bueno pero que paso con los otros tutoriales???
A mi me sale
psp-gcc -I. -IC:/PSPDev/psp/sdk/include -O2 -G0 -Wall -D_PSP_FW_VERSION=150 -c
-o main.o main.c
psp-gcc.exe: _spawnvp: No such file or directory
make: *** [main.o] Error 1
que significa esto?por que ocurre?
Publicar un comentario