Anuncios Google

Entrega 2. Hola nena. (Curso desde 0 de programacion C bajo PSP por THC_Hack)

Entrega 2. Hola nena.

 

¿Por qué escoger C?

Antes de entrar a saco con nuestro primer programa, Hola nena, nombraremos los principales motivos por los que escoger C.

  • Es un lenguaje de propósito general. Es decir, vale para programar cualquier cosa ¡Incluso Linux!
  • Es un lenguaje de medio nivel. Tiene prestaciones de los lenguajes de alto y bajo nivel. Es decir, máxima eficiencia y control absoluto.
  • Es portable. Un programa bien escrito en C es facilmente portable, ya que existen compiladores de C para casi cualquier plataforma.

No es dificil aprender C, de hecho solo tiene 32 palabras clave. Lo laborioso es dominarlo pero para eso estoy aquí, para ayudarte a dominar C con buenos ejemplos y consejos.

¿Como crear un programa?

Todo programa en C para PSP tiene como mínimo dos elementos. El main.c y el makefile. El main.c es el archivo en el que escribes el programa. El makefile es el archivo en el que escribes por ejemplo el nombre con el que se va a mostrar el programa en la PSP y distintos parámetros. (En la siguiente entrega pondre las definiciones originales, esto es solo para que no os comais el coco).

Una vez ya has escrito el main.c y el makefile, compilamos el programa en un EBOOT.PBP y metemos este EBOOT.PBP en una carpeta dentro de ms0:/PSP/GAME.

No te asustes, verás como es muchísimo más facil de lo que piensas ;)

Compilando mi primer programa, Hola nena.

Lo primero que debes hacer es crear una carpeta en el Escritorio (o donde tú prefieras) y guardar dentro desde el editor de textos un archivo main.c y otro makefile (date cuenta de que makefile no tiene extensión).

Ahora copia y pega en cada archivo lo siguiente (más tarde entraremos en detalles, ahora vamos a comprobar que el compilador nos funciona correctamente).

main.c

#include <pspkernel.h>
#include <pspdebug.h>
 
#define printf pspDebugScreenPrintf
 
PSP_MODULE_INFO("Hola nena", 0, 1, 1);
PSP_MAIN_THREAD_ATTR(PSP_THREAD_ATTR_USER);
 
int main (int argc, char **argv)
{
  pspDebugScreenInit ();
  printf ("Hola nena");
  return 0;
}

makefile

TARGET = THC_Hack
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 = Hola nena
PSPSDK=$(shell psp-config --pspsdk-path)
 
include $(PSPSDK)/lib/build.mak

Ahora mediante la terminal y con el comando cd accede a la carpeta en la que tienes el main.c y el makefile e introduce la orden make. OK, acabas de compilar tu primer programa :)

Para probar el programa (EBOOT.PBP) introducelo dentro de una carpeta en ms0:/PSP/GAME ¡OJO! no le cambies el nombre a EBOOT.PBP.

Ahora vete a Juego -> Memory Stick -> [nombre de tu EBOOT.PBP, osea, de tu programa]. Pulsas X y ¡Tachan! Ahí está tu primer homebrew (los programas caseros se llaman homebrews, que significa 'echo en casa'). Acabas de verificar que estás listo para programar cualquier tipo de programa en C para PSP. ¡Enhorabuena!

 

Esto es todo de momento. En la siguiente entrega aprenderás paso por paso a escribir un programa y comprenderás lo que has copiado y pegado para probar el compilador. ¡Nos vemos!


Entrega 1. Inicio.

Entrega 3. Entendiendo 'Hola nena'.



Anuncios Google

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 Dioni0396

ese makefile

es identico al de mis tutoriales.

Imagen de User170294

¿Cual es el problema?

¿Cual es el problema? Saludos.

Imagen de Dioni0396

ninguno

ninguno. Un Saludo

Bien!

Veamos que tan bueno eres en explicar asi vuelvo a C xD

Salu2 THC_Hack

Imagen de User170294

Intentaré hacerlo lo mejor

Intentaré hacerlo lo mejor que sepa. Si ves que en alguna cosa debería de haber puesto más detenimiento o algo está mal explicado no dudes en decirmelo y lo corrijo. Saludos.


Imagen de gdljjrod

Genial

He visto que has empezado a tocar temas sencillos para todos, claro de un nivel principiante y veo que ya tienes varios de estos tutoriales que vas agregando por lo que se ve ya tienes claro y organizado a los puntos que vas....Excelente Gracias ya que siempre es bueno tener más opciones para poder aprender...


 

Imagen de m.rr

Esto funcionaría?: #include

Esto funcionaría?:

#include <pspkernel.h>
#include <pspdebug.h>
 
#define imprime pspDebugScreenPrintf
 
PSP_MODULE_INFO("Hola nena", 0, 1, 1);
PSP_MAIN_THREAD_ATTR(PSP_THREAD_ATTR_USER);
 
int main (int argc, char **argv)
{
  pspDebugScreenInit ();
  imprime ("Hola nena");
  return 0;
}

Imagen de User170294

Exacto ;) Con #define

Exacto ;)

Con #define [nuevo_nombre] [nombre_de_la_funcion] lo que haces es algo así como crear un acceso directo a la función. En tu caso sería lo mismo poner imprime ("Hola nena"); que poner pspDebugScreenPrintf ("Hola nena");. Puedes escoger cualquier nombre para la función respetando siempre que el primer caracter del nombre de la variable sea una letra o una barrabaja. Saludos m.rr.


Imagen de sting18

Como saldras al menu XMB?

Como saldras al menu XMB?

Imagen de User170294

Pués en este caso reiniciando

Pués en este caso reiniciando la PSP. He decidido no marear con los callbacks a los noobs. Tampoco con más funciones. Eso ya se explicara en siguientes entregas. Saludos.


Imagen de sting18

Ok pero sabes lo incommodo

Ok pero sabes lo incommodo que es aun seas nob tener que estar que estar usando el recobery a cada rato? pero bueno tu sabras suerte amigo :D.


Imagen de Guitripio

ummmm

Sting18 - Escribio

Ok pero sabes lo incommodo

Ok pero sabes lo incommodo que es aun seas nob tener que estar que estar usando el recobery a cada rato? pero bueno tu sabras suerte amigo.

eso, traducido al correcto español ---->

Ok, pero sabes lo incomodo que es, aunque seas noob ( principiante ),es bastante tedioso estar entrando y saliendo del recovery a cada rato.

Saludos perdido....!!!


===========

2 Pasos a la libertad.

sudo apt-get remove Windows
sudo apt-get install Gnu/Linux

==================================================

Linux se crea y no se destruye, solo se transforma.

Imagen de Chimecho

Ni tan correcto

Guitripio escribió:

Sting18 - Escribio

eso, traducido al correcto español ---->

Ok, pero sabes lo incomodo que es, aunque seas noob ( principiante ),es bastante tedioso estar entrando y saliendo del recovery a cada rato.

- Escribio -> Escribió

- eso -> Eso [Estás empezando una oración, va con mayúsculas]

- Ok no es una palabra en español, sería "Bien" o "Bueno"

- incomodo -> incómodo

- ( principiante ) -> (principiante) [No hay necesidad de poner espacios entre la palabra y el paréntesis]

- (principiante),es bastante -> (principiante). Es bastante [Normalmente va un espacio después de la coma. Por otro lado estás separando dos oraciones]



PSP FAT [5.00 M33-6] [6.60 ME] [Hard Moded] / Nintendo Wii [4.1U] [cIOS Hermes] [D2X cIOS] / iPhone 3G [4.2.1] [BB 05.13.04] [redsn0w] / iPod Touch 4 [6.1] [evasi0n]

07/05/10: Tuve el placer de llamarle con todo derecho "N00B" a molotovi xDDD

Recuerda: Sé el intérprete -_-

Imagen de User170294

¿Quieres café? ¡¡Pues toma

¿Quieres café? ¡¡Pues toma seis tazas!! Saludos.

Imagen de Guitripio

jajajaja

Sin azucar, por favor...!!!!

jajajaja jajjaajaj

Saludos.

Imagen de Dioni0396

para que quiero

en la funcion principal los argumentos int argc y char **argv si en esa funcion no se usa.

Ten en cuenta que es para gente inexperta, esos argumentos les puede confundir.

PD: Si veo que los tutoriales tienen sustancia, te los pasare a portada.

Imagen de User170294

Copio y pego: "Esto es todo

Copio y pego: "Esto es todo de momento. En la siguiente entrega aprenderás paso por
paso a escribir un programa y comprenderás lo que has copiado y pegado
para probar el compilador
. ¡Nos vemos!
"

Tan solo es una prueba para probar el correcto funcionamiento del compilador.

La manera "internacional" de declarar el main es mediante:

int main (int argc /*Este es el número de argumentos que le pasamos a main ()*/, char argv[] /*Este es un array que almacena los argumentos*/)
{
    //Aquí lo que va dentro del main
    return (0); //Devolbemos el valor int 0
}

Mi objetivo es que los tutoriales tengan substancia como para hacer un buen zumo ;) Saludos.


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.