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
Funciona,
Lo acabo de probar y funciona perfecto
Muchisimas gracias a los dos de verdad, no pense en eso XD
Saludos
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
tachadolo 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.
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
Mi blog: http://creandomisvideojuegos.blogspot.com