Hola a todos,
He emprezado a trastear con la programación en la NDS y he encontrado un tema bastante molesto, los acentos. A base de trastear con las imagen de la fuente he encontrado los espacios en los que deberían estar los caracteres acentuados y la ñ, hasta ahí bien. Pero cuado los incluyo en un texto con la función PA_BoxText, añade un espacio en blanco antes de la letra. Tengo la impresión de que pasa dos caracterés digamos "acute + Ó" y escribe el caracter que está 3 posiciones por debajo de la c minúscula.
Alguien tiene una idea a que caracter o a que ascci puede corresponder esto.
Muchas gracias por la ayuda.
Ya lo tengo
Lo primero gracias a todos por vuestras aportaciones, os comento la solución que he encontrado:
Como decia la función PA_BoxText recorre todo el texto que le pasas y lo escribe caracter por caracter, al escribir caracteres normales escribe uno y nada más, pero si lleva un acento, diéresis o es una ñ escribe 2 caracteres. El primero se corresponede con el 3º espacio por debajo de la c minúscuala y el siguiente con la ñ o con la vocal acentuada. El codigo numérico del caracter extraño es 195, entonces en el lugar en el que la función añade cada letra, le he puesto una condición para que lo ignore.
Espero que esto os sea útil.
Saludos a todos.
¿No os estais liando un
¿No os estais liando un poco? en la carpeta Palib hay otra llamada tools, en esta ultima hay un programita llamado dsfont, que lo que hace es crearte un mapa de caracteres con la fuente que quieras, despues te crea un bmp que puedes añadir a tu proyecto, mediante la función PA_InitCustomText, y listo, no hay mas :) Buscando por google encontrarás mas programas de este tipo, que te pasan fuentes tipo ttf a mapa de caracteres.
saludos
Mi blog: http://creandomisvideojuegos.blogspot.com
Mapa de caracteres
Hola de nuevo
Entiendo que el mapa de caracteres está en <code>const unsigned short PA_text_Map</code> que define un array de coordenadas, lo he torturado hasta la saciedad, modificando los valores pero esto no se traduce en ningun cambio visible al escribir un alfabeto.
Voy a cambiar la linea de ataque, estoy tunendo la funcion PA_BoxText en PA_TextSpecial.c, la funcion recibe un texto como parametro, lo recorre letra por letra y lo va escribiendo en memoria con PA_SetTileLetter y lo saca a pantalla cuando acaba con PA_SetTextTileCol.
La idea es hacer que escriba en la otra pantalla los codigos ascii de las letras que escribe, en el momento en que localicemos cual es el que escribe delante de las vocales acentuadas o de las eñes solo necesitaremos comparar y saltarnoslo al escribir.
con lo facil que es hacerse
con lo facil que es hacerse una fuente customizada y cambiar el @ i # (por ejemplo) por la Ñ y ñ....
Buena idea pero...
Hola MasterSonic,
La idea me parece buena, pero una vez he llegado al directorio he editado como medio millon de archivos y no acabo de ver donde está el mapa de caracteres, si sabes a que archivo debo atacar lo tendremos hecho.
Muchas gracias de nuevo
Lo mejor que puedes hacer es
Lo mejor que puedes hacer es ir a:
c:/devkitpro/palib/lib/lib/arm9/PA o a c:/devkitpro/palib/lib/include/arm9/
y intentar añadir la ñ en el codigo porque date cuenta de que palib esta en ingles y en ingles la ñ no existe.
salu2