Anuncios Google

Texto[Libnds]

buenas(otra vez):

he avanzado mucho, pero he intentado hacer un sistema de texto(a lo palib o nflib), pero por mas que intento una y otra cosa, nada.

he cargardo los tiles y pal de la fuente y el map en vacio, ya de ahí he hecho rpuebas y nada, se queda la pantalla en negro, asi que nose.

ayuda


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.
Imagen de OdnetninI

no, es que nose como hacerlo

no, es que nose como hacerlo

Imagen de kNightFox

Ya mandas el map modificado

Ya mandas el map modificado de la RAM a la VRAM despues de escribir el texto?

 

Imagen de OdnetninI

me equivoque alr esponderte,

me equivoque alr esponderte, eso si, lomando, pero para mi que lo que no se es modificarlo bien

Imagen de kNightFox

suponiendo que tengas el

suponiendo que tengas el buffer de texto (map) en RAM

buffer[(fila * ancho_del_map_en_tiles) + columna] = caracter;

O sea, escribes el texto en el map, y antes del vsync lo mandas, si es necesario actualizarlo en pantalla, a la VRAM.


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

nuevo comentario he avanzado, pero errores

EDIT:

he seguido adelante probando y he cosneguido hacer esto:

ODI_CargarPalNitroFs(1,"textFont", 0);
	ODI_CargarTilesNitroFs(1,"textFont", 0);
	ODI_Crear_Fondo(1,0,0,256,256);
 
	Map=NULL;
	text="OLA";
	u16 value;	
	u16 tsize = strlen(text);
	u8* string = (u8*) calloc (tsize, sizeof(u8));
	for (i = 0; i < tsize; i ++) {
		value = ((int)(text[i])) - 32;
		if (value < 0) value = 0;
		string[i] = value;
	}
	for(i=0;i<tsize;i++){
		Map[x+y*32]=string[i];
		x++;
		if(x>32)y++;
	}
	free(string);
	//memcpy((void*)((((0)*0x800) + 0x06000000)), Map, 1024);

asi como esta, me carga bien, no me muestra el map, ahora actualizandolo

ODI_CargarPalNitroFs(1,"textFont", 0);
	ODI_CargarTilesNitroFs(1,"textFont", 0);
	ODI_Crear_Fondo(1,0,0,256,256);
 
	Map=NULL;
	text="OLA";
	u16 value;	
	u16 tsize = strlen(text);
	u8* string = (u8*) calloc (tsize, sizeof(u8));
	for (i = 0; i < tsize; i ++) {
		value = ((int)(text[i])) - 32;
		if (value < 0) value = 0;
		string[i] = value;
	}
	for(i=0;i<tsize;i++){
		Map[x+y*32]=string[i];
		x++;
		if(x>32)y++;
	}
	free(string);
	memcpy((void*)((((0)*0x800) + 0x06000000)), Map, 1024);

se me muestra la palabra ola como oa y ademas se me ven letras raras por en medio.

asie stan las vartiables declaradas

char* Map;
int i;
char* text;
int x,y;

haber que se puede hacer,

aprobecho para decir que utilizando esta metodo para cargar el fondo 0 de cualquier peantalla, pongo solo la de arriba, no se me muestra la paleta, tengoq ue tenr otro fondo, para que se vea algo, os pongo la pantalla de arriba completa(que pasa?):

switch (capa){
			case 0:
				REG_BG0CNT = BgType_Text8bpp | bg | BG_COLOR_256 | BG_MAP_BASE(0) | BG_TILE_BASE(1) | BG_PRIORITY(0);
				vramSetBankE(VRAM_E_LCD);
				memcpy((void*)((((1)*0x4000) + 0x06000000)), TILES[pantalla][slot], tiles_size[pantalla][slot]);
				if(ancho==256&&alto==256){
					memcpy((void*)((((0)*0x800) + 0x06000000)), MAP[pantalla][slot], map_size[pantalla][slot]);
				}
				if(ancho==512&&alto==256){
					memcpy((void*)((((0)*0x800) + 0x06000000)), MAP[pantalla][slot], 4096);
				}
				if(ancho==256&&alto==512){
					memcpy((void*)((((0)*0x800) + 0x06000000)), MAP[pantalla][slot], 4096);
				}
				if(ancho==512&&alto==512){
					memcpy((void*)((((0)*0x800) + 0x06000000)), MAP[pantalla][slot], 4096);
					u16 siguiente;
					siguiente = ((((ancho - 1) >> 8) + 1) << 11);
					memcpy((void*)(((((0)*0x800) + 0x06000000))+4096), MAP[pantalla][slot]+siguiente, 4096);
				}
				memcpy((void*)((0x06880000) + (0 << 13)), PAL[pantalla][slot], pal_size[pantalla][slot]);
				//vramSetBankE(VRAM_E_BG_EXT_PALETTE);
				break;
 
			case 1:
				REG_BG1CNT = BgType_Text8bpp | bg | BG_COLOR_256 | BG_MAP_BASE(1) | BG_TILE_BASE(2) | BG_PRIORITY(1);
				vramSetBankE(VRAM_E_LCD);
				memcpy((void*)((((2)*0x4000) + 0x06000000)), TILES[pantalla][slot], tiles_size[pantalla][slot]);
				if(ancho==256&&alto==256){
					memcpy((void*)((((1)*0x800) + 0x06000000)), MAP[pantalla][slot], map_size[pantalla][slot]);
				}
				if(ancho==512&&alto==256){
					memcpy((void*)((((1)*0x800) + 0x06000000)), MAP[pantalla][slot], 4096);
				}
				if(ancho==256&&alto==512){
					memcpy((void*)((((1)*0x800) + 0x06000000)), MAP[pantalla][slot], 4096);
				}
				if(ancho==512&&alto==512){
					memcpy((void*)((((1)*0x800) + 0x06000000)), MAP[pantalla][slot], 4096);
					u16 siguiente;
					siguiente = ((((ancho - 1) >> 8) + 1) << 11);
					memcpy((void*)(((((1)*0x800) + 0x06000000))+4096), MAP[pantalla][slot]+siguiente, 4096);
				}
				memcpy((void*)((0x06880000) + (1 << 13)), PAL[pantalla][slot], pal_size[pantalla][slot]);
				//vramSetBankE(VRAM_E_BG_EXT_PALETTE);
				break;
 
			case 2:
				REG_BG2CNT = BgType_Text8bpp | bg | BG_COLOR_256 | BG_MAP_BASE(2) | BG_TILE_BASE(3) | BG_PRIORITY(2);
				vramSetBankE(VRAM_E_LCD);
				memcpy((void*)((((3)*0x4000) + 0x06000000)), TILES[pantalla][slot], tiles_size[pantalla][slot]);
				if(ancho==256&&alto==256){
					memcpy((void*)((((2)*0x800) + 0x06000000)), MAP[pantalla][slot], map_size[pantalla][slot]);
				}
				if(ancho==512&&alto==256){
					memcpy((void*)((((2)*0x800) + 0x06000000)), MAP[pantalla][slot], 4096);
				}
				if(ancho==256&&alto==512){
					memcpy((void*)((((2)*0x800) + 0x06000000)), MAP[pantalla][slot], 4096);
				}
				if(ancho==512&&alto==512){
					memcpy((void*)((((2)*0x800) + 0x06000000)), MAP[pantalla][slot], 4096);
					u16 siguiente;
					siguiente = ((((ancho - 1) >> 8) + 1) << 11);
					memcpy((void*)(((((2)*0x800) + 0x06000000))+4096), MAP[pantalla][slot]+siguiente, 4096);
				}
				memcpy((void*)((0x06880000) + (2 << 13)), PAL[pantalla][slot], pal_size[pantalla][slot]);
				//vramSetBankE(VRAM_E_BG_EXT_PALETTE);
				break;
 
			case 3:
				REG_BG3CNT = BgType_Text8bpp | bg | BG_COLOR_256 | BG_MAP_BASE(3) | BG_TILE_BASE(4) | BG_PRIORITY(3);
				vramSetBankE(VRAM_E_LCD);
				memcpy((void*)((((4)*0x4000) + 0x06000000)), TILES[pantalla][slot], tiles_size[pantalla][slot]);
				if(ancho==256&&alto==256){
					memcpy((void*)((((3)*0x800) + 0x06000000)), MAP[pantalla][slot], map_size[pantalla][slot]);
				}
				if(ancho==512&&alto==256){
					memcpy((void*)((((3)*0x800) + 0x06000000)), MAP[pantalla][slot], 4096);
				}
				if(ancho==256&&alto==512){
					memcpy((void*)((((3)*0x800) + 0x06000000)), MAP[pantalla][slot], 4096);
				}
				if(ancho==512&&alto==512){
					memcpy((void*)((((3)*0x800) + 0x06000000)), MAP[pantalla][slot], 4096);
					u16 siguiente;
					siguiente = ((((ancho - 1) >> 8) + 1) << 11);
					memcpy((void*)((((3)*0x800) + 0x06000000)+4096), MAP[pantalla][slot]+siguiente, 4096);
				}
				memcpy((void*)((0x05000000)), PAL[pantalla][slot], pal_size[pantalla][slot]);
				//vramSetBankE(VRAM_E_BG_EXT_PALETTE);
				break;
		}

haber si sacamos algo en claro, llevo 3 semanas iuntendo solucionar lod e los fondos y mas de 1 con el texto

 


Be Libre my Friend.

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.