Anuncios Google

borrar sprites libnds

buenas: como algunos ya saben estoy avanzando en libnds, mucho de esto gracias a knightfox, te lo agradezco, pero tengo un problema gordo, se crear sprites moverlos, de todo en fin, pero no como borrarlos, he intentado descargarlos de la vram y despues hacerlos invisibles y liberar espacio en la ram, pero nada no  me sale, si alguien me puede hechar una mano.

si hace falta enseño como cargo los sprites

gracias

 

EDIT:

 

he estado haciendo unas pruebas y resulta que al ahcerlo se me borran todos, lo he hecho como una funcion, haber si alguien me puede hechar una mano, aqui el codigo:

void ODI_BorrarSprite(u8 pantalla, int slot){
	if(pantalla==1){
			if(sprite_color[pantalla][slot]==1&&sprite_creado[pantalla][slot]==true){
				oamSet(&oamMain,sprite_id[pantalla][slot],sprite_x[pantalla][slot],sprite_y[pantalla][slot],sprite_capa[pantalla][slot],sprite_pal[pantalla][slot],tamano[pantalla][slot],SpriteColorFormat_256Color,
					(void*)spritegfx[pantalla][slot],0,false,true,false,false,false);
			}
			if(sprite_color[pantalla][slot]==0&&sprite_creado[pantalla][slot]==true){
				oamSet(&oamMain,sprite_id[pantalla][slot],sprite_x[pantalla][slot],sprite_y[pantalla][slot],sprite_capa[pantalla][slot],sprite_pal[pantalla][slot],tamano[pantalla][slot],SpriteColorFormat_16Color,
					(void*)spritegfx[pantalla][slot],0,false,true,false,false,false);
			}
	}
	if(pantalla==0){
			if(sprite_color[pantalla][slot]==1&&sprite_creado[pantalla][slot]==true){
				oamSet(&oamSub,sprite_id[pantalla][slot],sprite_x[pantalla][slot],sprite_y[pantalla][slot],sprite_capa[pantalla][slot],sprite_pal[pantalla][slot],tamano[pantalla][slot],SpriteColorFormat_256Color,
					(void*)spritegfx[pantalla][slot],0,false,true,false,false,false);
			}
			if(sprite_color[pantalla][slot]==0&&sprite_creado[pantalla][slot]==true){
				oamSet(&oamSub,sprite_id[pantalla][slot],sprite_x[pantalla][slot],sprite_y[pantalla][slot],sprite_capa[pantalla][slot],sprite_pal[pantalla][slot],tamano[pantalla][slot],SpriteColorFormat_16Color,
					(void*)spritegfx[slot][slot],0,false,true,false,false,false);
			}
	}	
 
	memset((void*)spritegfx[pantalla][slot],0, Sprite_size[pantalla][slot]);
 
	if(pantalla==0)memset((void*)((0x06890000) + (sprite_pal[pantalla][slot] << 9)),0, Sprite_size[pantalla][slot]);
	if(pantalla==1)memset((void*)((0x068A0000) + (sprite_pal[pantalla][slot] << 9)),0, Sprite_size[pantalla][slot]);
 
	if(pantalla==0){
		oamFreeGfx(&oamSub,(void*)spritegfx[0][slot]); 
	}
	if(pantalla==1){
		oamFreeGfx(&oamMain,(void*)spritegfx[1][slot]); 
	}
	sprite_creado[pantalla][slot]=false;
 
	Sprite[pantalla][slot]=NULL;
	Sprite_Pal[pantalla][slot]=NULL;
	Sprite_size[pantalla][slot]=0;
	Sprite_Pal_size[pantalla][slot]=0;
}


Be Libre my Friend.


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.

Estoy aprendiendo C pero al

Estoy aprendiendo C pero al ver eso no dan ganas de programar para nds xD

Imagen de Jordi1097

Lo que pasa es que en éste

Lo que pasa es que en éste tema hablan de LibNDS, la librería más avanzada para NDS que exprime todo su Hardware, aunque existen otras como PaLib o NFLib en donde los códigos no son tan extensos y si sabes usarlas consigues resultados muy buenos n.n

Eso si no lo sabia  Pero si

Eso si no lo sabia Sonrisa Pero si igualmente me resultaría un poco dificil ya que soy coder de Lua y estoy acostumbrado a hacer un image.load y image.blit y con eso ya bliteas una imagen XD

Imagen de OdnetninI

te digo que solo es

te digo que solo es acostumbrarse yo antes solo trabajaba en java, despues solo en basic, despues palib, despues nflib y despues linds, solo ponte y ve viendo al final es cogerle el puntillo y ver muchas veces la pagina http://libnds.devkitpro.org/


Be Libre my Friend.

Imagen de adriel0000

si

si me acuerdo en los tiempos que tu decias que nunca aprenderias libnds xD por aqullos tiempos se te resistian cosas de palib pero aora nada de nada xD sigue asi.


Mi blog: adriel0000.wordpress.com

 

un saludo.

Imagen de kNightFox

Sencillamente, para borrar el

 Sencillamente, para borrar el sprite, solo tienes que resetear el OAM de ese Sprite, sin tocar nada de la VRAM

NF_SPRITEOAM[screen][id].index = id; // Numero de Sprite
NF_SPRITEOAM[screen][id].x = 0;   // Coordenada X del Sprite (0 por defecto)
NF_SPRITEOAM[screen][id].y = 0;   // Coordenada Y del Sprite (0 por defecto)
NF_SPRITEOAM[screen][id].layer = 0;  // Prioridad en las capas (0 por defecto)
NF_SPRITEOAM[screen][id].pal = 0;  // Paleta que usaras (0 por defecto)
NF_SPRITEOAM[screen][id].size = SpriteSize_8x8;     // Tamaño del Sprite (macro) (8x8 por defecto)
NF_SPRITEOAM[screen][id].color = SpriteColorFormat_256Color; // Modo de color (macro) (256 colores)
NF_SPRITEOAM[screen][id].gfx = NULL;   // Puntero al grafico usado
NF_SPRITEOAM[screen][id].rot = -1;    // Id de rotacion (-1 ninguno) (0 - 31 Id de rotacion)
NF_SPRITEOAM[screen][id].doublesize = false; // Usar el "double size" al rotar ? ("NO" por defecto)
NF_SPRITEOAM[screen][id].hide = true;   // Ocultar el Sprite ("SI" por defecto)
NF_SPRITEOAM[screen][id].hflip = false;   // Volteado Horizontal ("NO" por defecto)
NF_SPRITEOAM[screen][id].vflip = false;   // Volteado Vertical ("NO" por defecto)
NF_SPRITEOAM[screen][id].mosaic = false;  // Mosaico ("NO" por defecto)
NF_SPRITEOAM[screen][id].gfxid = 0;    // Numero de Gfx usado
NF_SPRITEOAM[screen][id].frame = 0;    // Frame actual
NF_SPRITEOAM[screen][id].framesize = 0;   // Tamaño del frame (en bytes)
NF_SPRITEOAM[screen][id].lastframe = 0;   // Ultimo frame
NF_SPRITEOAM[screen][id].created = false;  // Esta creado este sprite ?

 
Adaptalo a tu OAM, pero es eso. Otra cosa es gestionar la VRAM, que te tocara hacerlo a mano.

 


Nuestra web oficial:
http://www.nightfoxandco.com/
 
Siguenos en facebook:
http://www.facebook.com/pages/NightFox-Co/284338634917917
 
Por favor, no useis los MP para preguntas, usar el FORO:
http://www.nightfoxandco.com/forum/
Asi nos ahorramos de contestar lo mismo 20 veces.

 

Imagen de OdnetninI

gracias knightfox, estoy

gracias knightfox, estoy aprendiendo mas contigo, no se como habras aprendido tu.

muchas gracias

Imagen de kNightFox

Yo aprendi "a ostias", vamos,

Yo aprendi "a ostias", vamos, mirando ejemplos y el metodo de "ensayo y error". No se lo deseo a nadie...

Imagen de OdnetninI

yo aprendo cualquier

yo aprendo cualquier lenguaje, con una guia de funciones, unos ejemplos y algo grande hecho con source code, de ahi consigo crear mis propias cosas, solo aprendo como se hacen las cosas y luego als adapto y las modifico para que funciones como yo quiera


Be Libre my Friend.

Imagen de adriel0000

si xD

si xD yo todo lo k  aprendo tengo que hacerlo asi. No tengo mas remedio. :) suerte.

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.