Tutorial Sobre C y C++

// Bueno en este pequeño cursillo aprenderemos C y C++

// Primero de todo tener instalado el Cygwin con todas sus librerías o el PSPide (más novatos)

// Bueno aquí os voy a explicar un poco el tema de PSP.... y os voy a enseñar a crear un homebrew

// Incluir siempre:

#include
#include
#include

// Tambien recordad de añadir

PSP_MODULE_INFO("Creador", 0, 1, 1);

// Con esta función sera mucho más fácil de escribir los textos de pantalla...

#define printf pspDebugScreenPrintf

// Esta función es para que salgas del homebrew pulsando (X):

// Llamada de salida
int exit_callback(int arg1, int arg2, void *common) {
sceKernelExitGame();
return 0;
}

// Llamada thread
int CallbackThread(SceSize args, void *argp) {
int cbid;

cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);
sceKernelRegisterExitCallback(cbid);

sceKernelSleepThreadCB();

return 0;
}

// Configura llamada thread y vuelve a su thread id
int SetupCallbacks(void) {
int thid = 0;

thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0);
if(thid >= 0) {
sceKernelStartThread(thid, 0, 0);
}

return thid;
}

int main() {
pspDebugScreenInit();
SetupCallbacks();

// Bueno pues comencemos ya con las funciones....

// Si quereis ponerle color a la fuente esta es la funcion....

pspDebugScreenSetTextColor(0x00000);

// Ahora si ustedes quereis poner algun texto solo teneis que poner:

printf("Creador de Carpetas\n");// la tecla (\n) es para hacer saltar al cursor a la línea nueva
printf("Pulsar (X) para crear la carpeta \"THEMES\"\n");// Para que impriman unas comillas teneis que poner (\" Texto\")

// Esta función es para que funcionen las teclas....

if (pad.Buttons != 0){


if (pad.Buttons & PSP_CTRL_CROSS){ // En este caso he puesto que la tecla sea (X)

// Pues despues de haber puesto todo lo anterior ponemos la función

sceIoMkdir("ms0:/PSP/THEMES",0777);// En este caso he puesto que al pulsar (X) cree la carpeta (THEMES) que se encuentra dentro de (PSP)

} // se cierra el corchete

// Si al pulsar (X) queremos que salga un texto ponemos esto:
if (pad.Buttons & PSP_CTRL_CROSS){
printf(" ");
}
printf("Carpeta Creada...\n");

// Al final añadimos:

}
}

sceKernelExitGame();
return 0;
}
// Para que funcione la función de cerrar con el botón (HOME)

// Creando el (MAKEFILE)

TARGET = creador
OBJS = main.o

INCDIR =
CFLAGS = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)

LIBDIR =
LDFLAGS =

EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Creando la carpeta THEMES

PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak

// Bueno esto es todo si hay algún fallo decirmelo ya que es mí primer tutorial sobre C y C++ y todo el mundo se puede equivocar la primera vez pero espero no tener fallos....

// Un saludo
// kat
Esto es una broma,o vas en serio?
Coolj escribió:Esto es una broma,o vas en serio?



Porque coolj¿?
Para hacer un tute de C/C++ lo primero es explicar como se usa el C/C++ para luego pasar a cosas mas "complejas" como es la PSP.

Aparte de eso este codigo tiene partes redundantes, y alguna incoherencia (por ejemplo, este comentario "// Esta función es para que funcionen las teclas...." , la psp no usa teclas usa botones).

Este codigo es repetitivo:

if (pad.Buttons != 0){ // AQUI, no hace falta poner esto ya que luego lo vuelves a chequear)


if (pad.Buttons & PSP_CTRL_CROSS) -> AQUI lo vuelves a chequear

Aparte de eso, te faltaria ponerle un bucle que analize los botones en todo momento porque el codigo este arrancaria y de inmediato acabaria, si pulsas rapido la X igual te crea la carpeta e igual muestra el texto, pero saldria tan rapido que ni lo verias.

!Ah! Y no es usar un delay para el bucle de los botones, si haces eso suspendes temporalmente el hilo entero, seria con un while(1)...lo que sea, y despues una espera de poco tiempo para no petar la cpu

Un saludo
v1rUs_X está baneado por "Faltas de respeto continuadas"
[agggtt] [agggtt] [agggtt]
pues lo dicho anteriormente, te metes en psp si explicar antes c/c++? no me cuadra la verdad
A ver señores, en la red hay tropocientos tutoriales de C/C++, asi q veo una chorrada repetir aqui esa informacion. Este señor va directo al grano enseñando como hacer cositas para la PSP, asi que un 10 para él por compartir algo y menos quejarse los demas.
Hola, no puedo probar el código pero tengo mis dudas de su corrección... sólo lo he visto por encima pero bueno

por cierto la forma normal de comprobar si se ha pulsado un boton yo recomendaría esta: Así te aseguras que está pulsada la X y no una combinación de teclas

if((pad.Buttons & PSP_CTRL_CROSS)==PSP_CTRL_CROSS)

un ejemplo
PSP_CTRL_CROSS=1000
PSP_CTRL_TRIANGLE=0100

pad.Buttons=1100
esto nos generaría los dos eventos pero si queremos tratar uno especial que sea los dos juntos lo podríamos hacer así:
if((pad.Buttons & PSP_CTRL_CROSS)==PSP_CTRL_CROSS)
{
}
else{
if((pad.Buttons & PSP_CTRL_TRIANGLE)==PSP_CTRL_TRIANGLE)
{
}
else{
if((pad.Buttons & (PSP_CTRL_TRIANGLE +PSP_CTRL_CROSS))==PSP_CTRL_TRIANGLE +PSP_CTRL_CROSS)
{

}
}
}

ale una pekeña aportación al tratamiento de máscaras...
Saulotmalo, eso que haces no tiene sentido, al hacer el and te queda lo mismo con lo que comparas(vamos que es lo mismo de antes, aunque pulses la x y el triángulo esa comparación te va a dar vedadera).Si quieres que solo la x esté pulsada comparas directamente.
if((pad.Buttons & (PSP_CTRL_TRIANGLE +PSP_CTRL_CROSS))==PSP_CTRL_TRIANGLE +PSP_CTRL_CROSS)

en esta si

las otras es por programar con homogeneidad
Es lo mismo, si lo haces con & es si los pulsas aunque hayas pulsado otros y si lo haces con == directamente es si solo pulsas la combinación. Haciendo eso que haces es como hacer el & solamente.
arcangell escribió:pues lo dicho anteriormente, te metes en psp si explicar antes c/c++? no me cuadra la verdad


La verdad esque esto es un tutorial para despues de un Hello World...
Es como si uno empieza a programar por primera vez y quiere a la semana empezar a trabajar para Microsoft...

Un Saludo
Kat
11 respuestas