Hola!
Ahora que ya las tengo mas que probadas, os dejo la version actualizada de mi libreria, a la que he añadido soporte para fuentes de 8x16 pixeles, permitiendo la escritura de textos mas legibles en pantalla. Las funciones añadidas y cambios en la libreria son los siguientes:
- Añadido soporte para texto de 8x16 sin rotacion.
- Añadida la funcion NF_LoadTextFont16();
- Añadida la funcion NF_CreateTextLayer16();
- Añadida la funcion NF_WriteText16();
- Añadida la funcion NF_ClearTextLayer16();
- Añadido el ejemplo para textos de 8x16.
De momento, no soportan rotacion de texto, dependiendo a mis necesidades es posible que se la añada en un futuro.
En esta entrada (
NCASS) podeis ver un ejemplo practico del uso de estas fuentes.
La descarga de la libreria, aqui:
NightFox's Lib para Libnds Ver. 20100129
Un cordial saludo y a disfrutarla
NightFox
11 Comentarios:
Buenas, comentarte que ya
29 de Enero de 2010 • 18:27 — omegascark (invitado)En mi caso si he pueso que soporte los giros, pero de forma ligeramente distinta a como lo haces tu, en mi fichero no incluyo las imagenes rotadas sino que al cargar el fondo las roto es una cosa como la que sigue:
if (rotation == 0){
fread ((NF_BUFFER_BGTILES[slot] + 64), 1, (NF_TILEDBG[slot].tilesize - 64), file_id);
}else{
char caracter[64];
for (int i = 1;i < TOTAL_CHAR;i++){
fseek(file_id, i*64, SEEK_SET);
fread (caracter, 1, 64, file_id);
GirarFont( caracter, rotation);
memcpy( NF_BUFFER_BGTILES[slot] + i * 64, caracter, 64);
}
}
De este modo en la fuente solo tengo que escribir las fuentes en un sentido, la funcion GirarFont cambia la informacion de los bytes para que esten giradas.
PD: Para meter los saltos de linea tube que escribir manualmente los < br > :S
Pues si, esa es la otra
29 de Enero de 2010 • 21:45 — KnightFoxEditando fuentes
29 de Enero de 2010 • 22:02 — omegascark (invitado)escribeDepurando("Este texto es color por defecto[c=003100] verde[c=310000] rojo[/c]verde[/c] y volvemos a por defecto",4);
escribeDepurando("Y se pueden mezclar [grande]esto[c=000031] esta[c=052310] en grande con colores[/c] distintos ^_^[/grande] y esto[c=202020] otra vez chico [/c]y cambiando[/c] colores",7);
(escribeDepurando es para no compliccarme son llamadas que me ahorren alguna tonteria, no es vinculante ya que esta lo que hace es una llamada a la verdadera funcion que escribe)
Lo que obtenemos de esa entrada seria una cosa tal que asi:
Si es cierto que lo escrito en grande parece "mas abajo" de lo que esta escrito en "normal" pero eso no es para usarlo en la misma linea, sino para resaltar algo como un Nombre al principio o cualquier texto contiguo (o para escribir siempre asi)
Muchas gracias por todo esto ^_^ solo espero que la gente que lea esto se motive para investigar tb por su cuenta.
Acabo de leer lo quie
29 de Enero de 2010 • 22:08 — omegascark (invitado)void PJ_GirarFont(char *caracter, u8 rotation){
int i,j;
char copia[64];
memcpy(copia,caracter,64);
if (rotation == 1){ // Rotacion 90º a la derecha
for(i=0;i<8;i++){
for(j=0;j<8;j++){
caracter[j*8+7-i] = copia[i*8+j];
}
}
}else{// Rotacion 90º a la izquierda (rotation = 2)
for(i=0;i<8;i++){
for(j=0;j<8;j++){
caracter[(7-j)*8+i] = copia[i*8+j];
}
}
}
}
Esta funcion devuelve en el mismo parametro de entrada caracter ese mismo caracter pero girado. Nunca me cansare de repetirlo pero muchas gracias ^^
Mientras pubicavas esto
30 de Enero de 2010 • 00:09 — KnightFoxMientras pubicavas esto (que es una pasada) yo he estado añadiendo esto
http://nightfox.pastebin.com/f57598161
a mi libreria. Ya se me habia pasado por la cabeza, pero el ser vago es lo que tiene XD
Es similar a lo que has hecho tu, pero asi se puede rotar cualquier tile de cualquier fondo cargado, con lo que nos podemos divertir ^^
Wo wo genial
30 de Enero de 2010 • 00:24 — omegascark (invitado)Ahora mismo no se me ocurre nada en que usar esa funcion a parte de para rotar el texto (que si me das alguna idea mejor que mejor) y me he dado cuenta que has usado 1 y 2 para las rotaciones de 90º derecha e izquierda respectivamente para que mantenga compativilidad con las rotaciones de las fuentes :p estas en todo ^^
Yo ahora dejare un poco pausado el tema del texto de salida y mañana quizas me ponga con algo sobre teclado tactil (que hay funciones por internet pero prefiero customizarmelo aunque aun no lo he decidido. Luego una vez mas o menos "crea" que esta bien lo de meter datos con teclado tactil creo que mirare si es posible "guardar" datos (partida) dentro de la ROM mediante EFS o si tengo que hacerlo por FAT necesariamente, tu sabes ahora mas que el juego me estoy centrando en hacerme las funciones y estructuras de datos que me faciliten hacer el juego (aunque algunas estructuras mias son repetitivas mirando las tuyas, pero prefiero tener todos los datos juntos, eso y que me conozco mejor como acceder a los datos de un sprite si solo miro mi "buffer" de estructura sprnte que si tengo que mirar varios "buffer" distintos, ademas quizas me haga funciones que me autocreen los sprites sin decirle yo donde de la RAM o VRAM e incluso ID darle que los asigne solos y me los devuelva).
Pues esta y otras funciones
30 de Enero de 2010 • 00:36 — KnightFoxEsto se parece mas a un conversacion que a otra cosa
30 de Enero de 2010 • 02:53 — omegascark (invitado)Una cosa que te iba a decir, sobre la funcion de rotar TILES, el unico "inconveniente" que le veo por asi decirlo es si la usa a nivel "dinamico" es decir, si lo usas para el tema de las fuentes y al cargarlas y ver que las quieres giradas las cargas todas giradas y de escandalo, pero por ejemplo si quieres girar un TILE en uns direccion aleatoria por ejemplo por alguna razon y en funcion de otras razones restaurar su posicion original o girarlo realmente "perdemos" el saber cual es la posicion real a no ser que mantengamos una "historia"(vamos una rotacion opuesta, o suma de rotaciones opuestas) de los giros (cosa pocoviable , muchos tiles... muchos datos a guardar, aunque solo sea un dato (byte) para cada tile).
Ahora si al usarlo tienes en cuenta ese hecho, de no controlar la posicion original pues ningun problema, no se, ¿que opinas tu respecto a eso de "saber" la posicion original de cada TILE?
Buenas noches me despido por hoy (si, llego de estar con los colegas y entro aqui xD)
Ojo que el rotar los tiles
30 de Enero de 2010 • 04:09 — KnightFoxComentar tambien que he correguido un bug y ya esta añadido el soporte para rotacion al modo de texto 8x16.
Aqui teneis la lista de cambio que he incluido hoy a la libreria y estaran disponibles en la proxima revision:
- Añadida la funcion void NF_RotateTileGfx(); la cual rota el grafico de un tile en la direccion indicada.
- Dado a la funcion anterior, las fuentes para texto no necesitan mas las partes rotadas de derecha e izquierda, pero se mantiene la compatibilidad con las que ya tubieras hechas.
- Modificada la funcion NF_LoadTextFont16(); para poder cargar fuentes rotadas.
- Modificada la funcion NF_CreateTextLayer16(); para poder crear capas con el texto rotado.
- Corregido Bug en la funcion NF_WriteText(); que calculava mal la corrdenada Y en modo rotado 90º a la derecha.
Saludos a todos ^^
Posible problema de las fuentes
30 de Enero de 2010 • 14:50 — omegascark (invitado)La verdad, como dije en el otro no se si puede ser por configuraciones de teclado o lo que sea, aunque no creo porque ira por codigo UNICODE o ASCII.
Muchas gracias
Yo es que los caracteres
30 de Enero de 2010 • 15:14 — KnightFoxYo es que los caracteres tipicos de aqui ( ¿ ¡ Ñ ) evito tener que usarlos, dado que no usan un ASCII standar. Añadir la Ñ y la Ç aun aun por que en depende que idiomas son imprescindibles, pero los ¿¡ si puedo evitarlo...
Mas que nada por que si alguien fuera de españa los intenta usar, posiblemente esten con otro codigo y tampoco los encuentre. Asi que para evitar problemas...