Anuncios Google

Duda palib (¿¿Insuficiente espacio con un sprite??)

Tras pasar unos cursillos de palib, estoy empezando con mi primer proyecto

Lo unico que llevo es un sprite, un sencillo menu (pero sencillo) y un fondo

El caso, cuando enciendo la ds (mejor dicho, cuando abro el nds) sale el menu (que no tiene fondo por cierto)

Pulso A y paso asi al juego, que es basicamente un fondo y un sprite 32x32 que lo puedes mover.

Pos bien, en ese mismo momento en el que se carga ambas cosas me sale un mensaje en la pantalla superior:

 

"Sorry, there just seems to not be enough place to put all your sprites!!!

Load less sprites, or use PA_CloneSprite or...

 

El resto del mensaje no dice nada importante, he probado cargar el sprite con 16 colores para que ocupe menos pero sigue fallando. ¿Que puede ser?

 

Y aqui os dejo el codigo:

 

#include <PA9.h>
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"

int main(int argc, char ** argv)
{
PA_Init();
PA_InitVBL();
bool Menu1;
bool Nivel;
Menu1 = true;
Nivel = false;

while (1)
{
if (Menu1 ==true){
PA_InitText(1,2);
PA_OutputSimpleText(1,5,5,"The way of Mouse");
PA_InitText(0,2);
PA_OutputSimpleText(0,10,10,"Jugar");
PA_OutputSimpleText(0,10,12,"creditos");
}

if ((Pad.Newpress.A)&& (Menu1 == true)){
Nivel = true;
Menu1 = false;
}
if ( Nivel ==true){
PA_InitText(0,2);
PA_OutputSimpleText(0,10,10,"       ");
PA_OutputSimpleText(0,10,12,"       ");
PA_EasyBgLoad(0,3,Dibujo);
PA_LoadSpritePal(0,0,(void*)ratonmb4_Pal);

PA_CreateSprite(0,0,(void*)ratonmb4_Sprite,OBJ_SIZE_32X32,1, 0,

2, 2);
PA_SetSpriteXY(0,0,Stylus.X-16,Stylus.Y-16);
PA_InitText(1,2);
PA_OutputSimpleText(1,5,5,"Nivel 1");
}
PA_WaitForVBL();
}

return 0;
}

 

Version descargable:

http://www.megaupload.com/?d=U65MYQ0A

 

Y aqui dejo el sprite por si sirve de algo:

 

 

Saludos


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.

Funciona,

Lo acabo de probar y funciona perfecto

Muchisimas gracias a los dos de verdad, no pense en eso XD

Saludos

 

Imagen de exterminator

Copete23 tiene razón,

si metes el PA_CreateSprite dentro del while, creará sprites infinitamente hasta que la memoria no puede con ellas. Lo mejor que puedes hacer es cambiar el valor de Nivel, puesto que sería infitamente true después de pulsar A. Por ejemplo, siguiendo tu source:

 

#include <PA9.h>
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"

int main(int argc, char ** argv)
{
PA_Init();
PA_InitVBL();

PA_InitText(1,2);
PA_InitText(0,2);

bool Menu1;
bool Nivel;
Menu1 = true;
Nivel = false;

PA_LoadSpritePal(0,0,(void*)ratonmb4_Pal);

while (1)
{
if (Menu1 ==true){
PA_InitText(1,2);
PA_OutputSimpleText(1,5,5,"The way of Mouse");
PA_InitText(0,2);
PA_OutputSimpleText(0,10,10,"Jugar");
PA_OutputSimpleText(0,10,12,"creditos");
}

if ((Pad.Newpress.A)&& (Menu1 == true)){
Nivel = true;
Menu1 = false;
}
if ( Nivel ==true){
PA_InitText(0,2);
PA_OutputSimpleText(0,10,10,"       ");
PA_OutputSimpleText(0,10,12,"       ");
PA_EasyBgLoad(0,3,Dibujo);
PA_LoadSpritePal(0,0,(void*)ratonmb4_Pal);

Nivel=false;

PA_CreateSprite(0,0,(void*)ratonmb4_Sprite,OBJ_SIZE_32X32,1, 0,

2, 2);

}

PA_SetSpriteXY(0,0,Stylus.X-16,Stylus.Y-16);
PA_InitText(1,2);
PA_OutputSimpleText(1,5,5,"Nivel 1");
}
PA_WaitForVBL();
}

return 0;
}

 

Así no creo que dé problema. (En negrita lo que pongo y tachado lo que quito)

Salu2


Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderás trucos para resolver tus dudas antes.

Imagen de copete23

Hola, normal que te pase

Hola, normal que te pase estas poniendo que mientras el buckle esté activo se cree un sprite

While(1){

crear sprite // error, con esto el sprite se crea una y otra vez hasta llenar la memoria

}

 

mejor pon algo así

while(1){

if(sprite_creado==false){

crear_sprite;

sprite_creado=true;

}

}

esto lo que hace es que solo si sprite_creado==false, se cree el sprite, y en el momento que sea =true dejara de crearse

así de simple XD

saludetes

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.