cygwin escribió:
Jorge@jorge-5dnlzb7ah ~/projects/ejemplo
$ make
psp-g++ -I. -I/usr/local/pspdev/psp/sdk/include -Wall -Wno-long-long -O2 -G0 -DJ
OY_YES -I/usr/local/pspdev/psp/include/SDL -Dmain=SDL_main -c -o main.o main.
cpp
csprite.h:46: error: ISO C++ forbids declaration of 'finalize' with no type
main.cpp: In function 'int SDL_main(int, char**)':
main.cpp:122: warning: too many arguments for format
make: *** [main.o] Error 1
cygwin escribió:Jorge@jorge-5dnlzb7ah ~/projects/ejemplo
$ make
psp-g++ -I. -I/usr/local/pspdev/psp/sdk/include -Wall -Wno-long-long -O2 -G0 -DJ
OY_YES -I/usr/local/pspdev/psp/include/SDL -Dmain=SDL_main -c -o main.o main.
cpp
main.cpp: In function 'int SDL_main(int, char**)':
main.cpp:122: warning: too many arguments for format
psp-g++ -I. -I/usr/local/pspdev/psp/sdk/include -Wall -Wno-long-long -O2 -G0 -DJ
OY_YES -I/usr/local/pspdev/psp/include/SDL -Dmain=SDL_main -c -o csprite.o cs
prite.cpp
csprite.cpp:53: error: ISO C++ forbids declaration of 'finalize' with no type
csprite.cpp:53: error: prototype for 'int CSprite::finalize()' does not match an
y in class 'CSprite'
csprite.h:46: error: candidate is: void CSprite::finalize()
csprite.cpp:53: error: 'int CSprite::finalize()' cannot be overloaded
csprite.h:46: error: with 'void CSprite::finalize()'
csprite.cpp: In member function 'int CSprite::finalize()':
csprite.cpp:58: warning: control reaches end of non-void function
make: *** [csprite.o] Error 1
zestt escribió:en csprite.cpp solo aparece aquí:
CSprite::finalize() {
y ahi x supuesto no le puedo añadir el void
):
cygwin escribió:Jorge@jorge-5dnlzb7ah ~/projects/ejemplo
$ make
psp-g++ -I. -I/usr/local/pspdev/psp/sdk/include -Wall -Wno-long-long -O2 -G0 -DJ
OY_YES -I/usr/local/pspdev/psp/include/SDL -Dmain=SDL_main -c -o main.o main.
cpp
main.cpp: In function 'int SDL_main(int, char**)':
main.cpp:122: warning: too many arguments for format
psp-g++ -I. -I/usr/local/pspdev/psp/sdk/include -Wall -Wno-long-long -O2 -G0 -DJ
OY_YES -I/usr/local/pspdev/psp/include/SDL -Dmain=SDL_main -c -o csprite.o cs
prite.cpp
psp-gcc -I. -I/usr/local/pspdev/psp/sdk/include -Wall -Wno-long-long -O2 -G0 -DJ
OY_YES -I/usr/local/pspdev/psp/include/SDL -Dmain=SDL_main -L. -L/usr/local/psp
dev/psp/sdk/lib main.o csprite.o -lSDL_image -lpng -ljpeg -lz -lstdc++ -lSDL_m
ixer -lvorbisidec -lSDL_gfx -lSDL -L/usr/local/pspdev/psp/lib -lSDLmain -lSDL -l
m -L/usr/local/pspdev/psp/sdk/lib -lpspdebug -lpspgu -lpspctrl -lpspge -lpspdisp
lay -lpsphprm -lpspsdk -lpsprtc -lpspaudio -lc -lpspuser -lpsputility -lpspkerne
l -lpspdebug -lpspdisplay -lpspge -lpspctrl -lpspsdk -lc -lpspnet -lpspnet_inet
-lpspnet_apctl -lpspnet_resolver -lpsputility -lpspuser -lpspkernel -o ejemplo.
elf
/usr/local/pspdev/psp/sdk/lib/libSDLmain.a(SDL_psp_main.o): In function `main':
psp/SDL_psp_main.c:178: undefined reference to `SDL_main'
collect2: ld returned 1 exit status
make: *** [ejemplo.elf] Error 1
xDDD
)
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;
}
TARGET = ejemplo
PSPSDK = $(shell psp-config --pspsdk-path)
OBJS = csprite.o main.o
CFLAGS = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
LIBS = -lstdc++ -lSDLmain -lSDL_image -lpng -ljpeg -lz -lSDL_ttf -lfreetype -lSDL_gfx -lm -lSDL -lpspvfpu -lpspdebug -lpspgu -lpspctrl -lpspge -lpspdisplay -lpsphprm -lpspsdk -lpsprtc -lpspaudio -lc -lpspuser -lpsputility -lpspkernel
ASFLAGS = $(CFLAGS)
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = ejemplo
include $(PSPSDK)/lib/build.mak
, lo he revisado un montón de veces y no me he dado cuenta xq pensando en el d ayer pensaba q ya estaba puesto.
voy a probarlo en la PSP
... aver si vuelvo a sacar el libro de la biblioteca y me lo acabo q tube q dejarlo xD
jeje era sencillamente una prueba, el codigo no es mio como ya habia dicho, es de un ejemplo de un libro de programación en SDL pero como no me compilaba ninguno escrito por mi, intenté adaptarlo para verlo en psp. Así me aseguraba q el código funcionaba y veia las diferencias entre la SDL de PC y la d psp.
en el q t pase a ti Eskema estba corregido ya creo.
// Inicializamos estados
void inicializa() {
//se me paso poner la iniciacion del joystick, es normal q no funcionara
joystick=SDL_JoystickOpen(0);
//ahora con esto deberia funcionar
jugador.x=300;
jugador.y=200;
enemigo.x=100;
enemigo.y=100;
}
void finaliza() {
// finalizamos los sprites
nave.finalize();
malo.finalize();
// cerramos el joystick
if (SDL_JoystickOpened(0)) {
SDL_JoystickClose(joystick);
}
}
// Preparamos los esprites
int InitSprites() {
fnave.load("minave.bmp");
nave.addframe(fnave);
fmalo.load("nave.bmp");
malo.addframe(fmalo);
return 0;
}
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;
}
int main(int argc, char *argv[]) {
SDL_Event event;
pspDebugScreenInit();
//Uint8 *keys; tampoco necesitas la variable keys
if (SDL_Init(SDL_INIT_VIDEO|SDL_INIT_JOYSTICK) < 0) {
printf("No se pudo iniciar SDL: %s\n",SDL_GetError());
return 1;
}
//te recomiendo (480,272,8, SDL_HWSURFACE | SDL_HWPALETTE);
screen = SDL_SetVideoMode(480, 272, 8, SDL_HWSURFACE | SDL_HWPALETTE);
if (screen == NULL) {
printf("No se puede inicializar el modo gráfico: %s\n",SDL_GetError());
return 1;
}
atexit(SDL_Quit);
inicializa();
InitSprites();
while (done == 0) {
// dibujamos el frame
DrawScene(screen);
// consultamos el estado del teclado
//no necesitas las teclas
//keys=SDL_GetKeyState(NULL);
// consultamos el estado del joystick
//perfecto updateas el joystick en cada frame asi detectas las pulsaciones :)
SDL_JoystickUpdate();
joyx = SDL_JoystickGetAxis(joystick, 0);
joyy = SDL_JoystickGetAxis(joystick, 1);
//tan solo consultamos el pad de la psp y sus respectivos botones nada mas
//analogico
// if ((SDL_JoystickGetButton(joystick, PSP_BUTTON_UP) || joyy < -10) && (jugador.y > 0)) {jugador.y=jugador.y-(5);}
// if ((SDL_JoystickGetButton(joystick, PSP_BUTTON_DOWN) || joyy > 10) && (jugador.y < 230)) {jugador.y=jugador.y+(5);}
//if ((SDL_JoystickGetButton(joystick, PSP_BUTTON_LEFT) || joyx < -10) && (jugador.x > 0)) {jugador.x=jugador.x-(5);}
// if ((SDL_JoystickGetButton(joystick, PSP_BUTTON_RIGHT) || joyx > 10) && (jugador.x < 450)) {jugador.x=jugador.x+(5);}
if (SDL_JoystickGetButton(joystick, PSP_BUTTON_UP) && (jugador.y > 0)) {jugador.y=jugador.y-(5);}
if (SDL_JoystickGetButton(joystick, PSP_BUTTON_DOWN) && (jugador.y < 230)) {jugador.y=jugador.y+(5);}
if (SDL_JoystickGetButton(joystick, PSP_BUTTON_LEFT) && (jugador.x > 0)) {jugador.x=jugador.x-(5);}
if (SDL_JoystickGetButton(joystick, PSP_BUTTON_RIGHT) && (jugador.x < 450)) {jugador.x=jugador.x+(5);}
while (SDL_PollEvent(&event)) {
if (event.type == SDL_QUIT) {done=1;}
if (event.type == SDL_JOYBUTTONDOWN) {
if (event.jbutton.button == PSP_BUTTON_START)
{
done = 1;
}
}
}
}
finaliza();
SDL_Quit(); //necesitas cerrar la sdl
sceKernelExitGame(); //y luego hacer q la psp vuelva al menu ;)
return 0;
}
en el emule tmb hay un pdf con el tuto xo los links tmb petados... asi q nos conformaremos cn el cygwin (si t sacas como instalarlo en Eclipse t hago una estatua tio).
ahora posteo si hay mejora
main.cpp escribió:/***************************************************************************
Ejemplo5_1
(C) 2003 by Alberto Garcia Serrano
Programación de videojuegos con SDL
***************************************************************************/
#include
#include
#include
#include "csprite.h"
#include "defines.h"
#include
PSP_MODULE_INFO("ejemplo", 0, 1, 1);
#include
#define printf pspDebugScreenPrintf
SDL_Surface *screen;
CFrame fnave;
CFrame fmalo;
CSprite nave(1);
CSprite malo(1);
SDL_Rect rectangulo;
SDL_Joystick *joystick;
int joyx, joyy;
int done=0;
// estructura que contiene la información
// de nuestro avión
struct minave {
int x,y;
} jugador;
// Estructura que contiene información
// del avión enemigo
struct naveenemiga {
int x,y;
} enemigo;
// Dibuja los esprites en la pantalla
void DrawScene(SDL_Surface *screen) {
// dibuja avión
nave.setx(jugador.x);
nave.sety(jugador.y);
nave.draw(screen);
// Dibuja enemigo
malo.setx(enemigo.x);
malo.sety(enemigo.y);
malo.draw(screen);
// ¿ha colisionado con la nave?
if (malo.colision(nave) == TRUE) {
done=1;
}
// Mostramos todo el frame
SDL_Flip(screen);
}
// Inicializamos estados
void inicializa() {
//se me paso poner la iniciacion del joystick, es normal q no funcionara
joystick=SDL_JoystickOpen(0);
//ahora con esto deberia funcionar
jugador.x=300;
jugador.y=200;
enemigo.x=100;
enemigo.y=100;
}
void finaliza() {
// finalizamos los sprites
nave.finalize();
malo.finalize();
// cerramos el joystick
if (SDL_JoystickOpened(0)) {
SDL_JoystickClose(joystick);
}
}
// Preparamos los esprites
int InitSprites() {
fnave.load("minave.bmp");
nave.addframe(fnave);
fmalo.load("nave.bmp");
malo.addframe(fmalo);
return 0;
}
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;
}
int main(int argc, char *argv[]) {
SDL_Event event;
pspDebugScreenInit();
//Uint8 *keys; tampoco necesitas la variable keys
if (SDL_Init(SDL_INIT_VIDEO|SDL_INIT_JOYSTICK) < 0) {
printf("No se pudo iniciar SDL: %s\n",SDL_GetError());
return 1;
}
//te recomiendo (480,272,8, SDL_HWSURFACE | SDL_HWPALETTE);
screen = SDL_SetVideoMode(480, 272, 8, SDL_HWSURFACE | SDL_HWPALETTE);
if (screen == NULL) {
printf("No se puede inicializar el modo gráfico: %s\n",SDL_GetError());
return 1;
}
atexit(SDL_Quit);
inicializa();
InitSprites();
while (done == 0) {
// dibujamos el frame
DrawScene(screen);
// consultamos el estado del teclado
//no necesitas las teclas
//keys=SDL_GetKeyState(NULL);
// consultamos el estado del joystick
//perfecto updateas el joystick en cada frame asi detectas las pulsaciones
SDL_JoystickUpdate();
joyx = SDL_JoystickGetAxis(joystick, 0);
joyy = SDL_JoystickGetAxis(joystick, 1);
//tan solo consultamos el pad de la psp y sus respectivos botones nada mas
//analogico
// if ((SDL_JoystickGetButton(joystick, PSP_BUTTON_UP) || joyy < -10) && (jugador.y > 0)) {jugador.y=jugador.y-(5);}
// if ((SDL_JoystickGetButton(joystick, PSP_BUTTON_DOWN) || joyy > 10) && (jugador.y < 230)) {jugador.y=jugador.y+(5);}
//if ((SDL_JoystickGetButton(joystick, PSP_BUTTON_LEFT) || joyx < -10) && (jugador.x > 0)) {jugador.x=jugador.x-(5);}
// if ((SDL_JoystickGetButton(joystick, PSP_BUTTON_RIGHT) || joyx > 10) && (jugador.x < 450)) {jugador.x=jugador.x+(5);}
if (SDL_JoystickGetButton(joystick, PSP_BUTTON_UP) && (jugador.y > 0)) {jugador.y=jugador.y-(5);}
if (SDL_JoystickGetButton(joystick, PSP_BUTTON_DOWN) && (jugador.y < 230)) {jugador.y=jugador.y+(5);}
if (SDL_JoystickGetButton(joystick, PSP_BUTTON_LEFT) && (jugador.x > 0)) {jugador.x=jugador.x-(5);}
if (SDL_JoystickGetButton(joystick, PSP_BUTTON_RIGHT) && (jugador.x < 450)) {jugador.x=jugador.x+(5);}
while (SDL_PollEvent(&event)) {
if (event.type == SDL_QUIT) {done=1;}
if (event.type == SDL_JOYBUTTONDOWN) {
if (event.jbutton.button == PSP_BUTTON_START)
{
done = 1;
}
}
}
}
finaliza();
SDL_Quit(); //necesitas cerrar la sdl
sceKernelExitGame(); //y luego hacer q la psp vuelva al menu
return 0;
}
makefile escribió:TARGET = ejemplo
PSPSDK = $(shell psp-config --pspsdk-path)
OBJS = csprite.o main.o
JOY = YES
CFLAGS = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
LIBS = -lstdc++ -lSDLmain -lSDL_image -lpng -ljpeg -lz -lSDL_ttf -lfreetype -lSDL_gfx -lm -lSDL -lpspvfpu -lpspdebug -lpspgu -lpspctrl -lpspge -lpspdisplay -lpsphprm -lpspsdk -lpsprtc -lpspaudio -lc -lpspuser -lpsputility -lpspkernel
ASFLAGS = $(CFLAGS)
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = ejemplo
include $(PSPSDK)/lib/build.mak
. BIEN! se puede salir del juego chocando un avión contra el otro.
: