Pues estaba practicando unas cosas del tuto de Almamu sobre Nflib cuando fui a probar la función para tocar un sprite, pero al compilar me dio error. Seguramente sea un error tonto de hacerlo deprisa y corriendo, pero no soy capaz de resolverlo -.-.
Este es el código:
/* ------------------------------------------------- Includes ------------------------------------------------- */ // Includes c/c++ #include <stdio.h> // Includes propietarios NDS #include <nds.h> // Includes librerias propias #include <nf_lib.h> // Includes SpriteTouched #include <spritetouched.h> /* ------------------------------------------------- Main() - Bloque general del programa ------------------------------------------------- */ // Includes c/c++ #include <stdio.h> // Includes propietarios NDS #include <nds.h> // Includes librerias propias #include <nf_lib.h> /* ------------------------------------------------- Main() - Bloque general del programa ------------------------------------------------- */ int main(int argc, char **argv) { NF_Set2D(0, 0); NF_Set2D(1, 0); consoleDemoInit(); // Inicializa la consola de texto iprintf("\n NitroFS init. Please wait.\n\n"); iprintf(" Iniciando NitroFS,\n por favor, espere.\n\n"); swiWaitForVBlank(); NF_SetRootFolder("NITROFS"); // Define la carpeta ROOT para usar NITROFS NF_Set2D(0, 0); // Modo 2D_0 en ambas pantallas NF_Set2D(1, 0); NF_InitSpriteBuffers(); // Inicializa los buffers para almacenar fondos NF_InitSpriteSys(0); // Inicializa los fondos Tileados para la pantalla superior NF_InitSpriteSys(1); NF_InitTiledBgBuffers(); // Inicializa los buffers para almacenar fondos NF_InitTiledBgSys(0); // Inicializa los fondos Tileados para la pantalla superior NF_InitTiledBgSys(1); // Iniciliaza los fondos Tileados para la pantalla inferior NF_LoadTiledBg("bg/bg0", "bg0", 256, 256); NF_LoadTiledBg("bg/fondo", "fondo", 256, 256); NF_CreateTiledBg(0, 3, "bg0"); NF_CreateTiledBg(1, 3, "fondo"); NF_LoadSpriteGfx("sprite/sprite1", 0, 16, 16); // Personaje NF_VramSpriteGfx(1, 0, 0, true); NF_LoadSpritePal("sprite/sprite1", 0); NF_VramSpritePal(1, 0, 0); NF_CreateSprite(1, 0, 0, 0, 20, 30); // Bucle (repite para siempre) while(1) { NF_SpriteOamSet(1); if(_SpriteTouched(0)){ iprintf("Has tocado el sprite"); } swiWaitForVBlank(); // Espera al sincronismo vertical oamUpdate(&oamMain); oamUpdate(&oamSub); } return 0; }
Y aquí, el código del archivo .h que creé en la carpeta source:
bool _SpriteTouched(u8 n){ touchPosition sprTouch; if((sprTouch.px>=NF_SPRITEOAM[0][n].x) && (sprTouch.py>=NF_SPRITEOAM[0][n].y) && (sprTouch.px<=NF_SPRITEOAM[0][n].x+NF_SPR256VRAM[0][n].width) && (sprTouch.py<=NF_SPRITEOAM[0][n].y+NF_SPR256VRAM[0][n].height)){ return 1; }else{ return 0; } }
Seguramente, como dije antes, seguramente sea un error tonto por mi parte, pero espero que me podais ayudar si sois tan amables. Gracias por vuestra atención.
EDIT: Hola, hoy estaba haciendo esto con las funciones de textos de las NFlib y al probarlo en mi DS, el bg de la pantalla superior se cargó, pero en la inferior, no se cargó nada, solo dio este error:
"Text layer on screen.
nError code 114"
Y el código que usé era este:
/* ------------------------------------------------- Includes ------------------------------------------------- */ // Includes c/c++ #include <stdio.h> // Includes propietarios NDS #include <nds.h> // Includes librerias propias #include <nf_lib.h> // Includes SpriteTouched #include <spritetouched.h> /* ------------------------------------------------- Main() - Bloque general del programa ------------------------------------------------- */ int main(int argc, char **argv) { NF_Set2D(0, 0); NF_Set2D(1, 0); consoleDemoInit(); // Inicializa la consola de texto iprintf("\n NitroFS init. Please wait.\n\n"); iprintf(" Iniciando NitroFS,\n por favor, espere.\n\n"); swiWaitForVBlank(); NF_SetRootFolder("NITROFS"); // Define la carpeta ROOT para usar NITROFS NF_Set2D(0, 0); // Modo 2D_0 en ambas pantallas NF_Set2D(1, 0); NF_InitSpriteBuffers(); // Inicializa los buffers para almacenar fondos NF_InitSpriteSys(0); // Inicializa los fondos Tileados para la pantalla superior NF_InitSpriteSys(1); NF_InitTiledBgBuffers(); // Inicializa los buffers para almacenar fondos NF_InitTiledBgSys(0); // Inicializa los fondos Tileados para la pantalla superior NF_InitTiledBgSys(1); // Iniciliaza los fondos Tileados para la pantalla inferior NF_InitTextSys(0);//Inicio el sistema de texto superior NF_InitTextSys(1);//Inicio el sistema de texto inferior NF_LoadTiledBg("bg/bg0", "bg0", 256, 256); NF_LoadTiledBg("bg/fondo", "fondo", 256, 256); NF_CreateTiledBg(0, 3, "bg0"); NF_CreateTiledBg(1, 3, "fondo"); NF_LoadSpriteGfx("sprite/sprite1", 0, 16, 16); // Personaje NF_VramSpriteGfx(1, 0, 0, true); NF_LoadSpritePal("sprite/sprite1", 0); NF_VramSpritePal(1, 0, 0); NF_CreateSprite(1, 0, 0, 0, 20, 30); // Bucle (repite para siempre) while(1) { NF_SpriteOamSet(1); if(_SpriteTouched(0)){ NF_WriteText(0, 0, 0, 0, "Hola mundo!"); NF_UpdateTextLayers(); } swiWaitForVBlank(); // Espera al sincronismo vertical oamUpdate(&oamMain); oamUpdate(&oamSub); } return 0; }
Espero que me podais volver a ayudar.
Salu2
¿Quieres estar totalmente informado sobre el universo 3DS? Visita Magic3DS.
También puedes estar al tanto de toda la actualidad de 3DS en Twitter: @Magic3DS
Nuevo problema -.-
Tengo un nuevo fallo con otra cosa, haber si me podeis ayudar si sois tan amables:
Estaba haciendo esto con las funciones de textos de las NFlib y al probarlo en mi DS, el bg de la pantalla superior se cargó, pero en la inferior, no se cargó nada, solo dio este error:
"Text layer on screen.
nError code 114"
Y el código que usé era este:
Siento ser tan pesado, seguramente sea un fallo tonto, pero espero que me podais volver a ayudar. Gracias por vuestra atención.
Salu2
¿Quieres estar totalmente informado sobre el universo 3DS? Visita Magic3DS.
También puedes estar al tanto de toda la actualidad de 3DS en Twitter: @Magic3DS
NF_WriteText(0, 0, 0, 0,
NF_WriteText(0, 0, 0, 0, "Hola mundo!");
NF_UpdateTextLayers();
Ni has cargado ninguna fuente antes, ni has creado las capas de texto para poder escribir. Repasate el ejemplo de textos de la libreria,
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.
Te falta cargar
O eso creo, las fuentes.
Mira el ejemplo de texto (no me acuerdo si lo hay xD) de texto, copia la fuente a nitrofiles y cargala.
Si siguen los problemas, avisa, que no veo ningun error mas.
Street Fighter X Tekken Mobile CMV 2
Teneis razón -.-
Me salté eso por completo, sería por la emoción del partido xD.
Gracias a los dos, ahora mismo lo cambio y os comento que tal va.
EDIT: Teniais razón, me faltaba eso para que me funcionase, ahora si que funciona. Muchísimas gracias a los dos.
Salu2
¿Quieres estar totalmente informado sobre el universo 3DS? Visita Magic3DS.
También puedes estar al tanto de toda la actualidad de 3DS en Twitter: @Magic3DS
has puesto codigo en un
has puesto codigo en un .H.... ahi madre XD.
Bueno bueno, antes que saque la bola magica, que tal si posteas el error?
Un saludo!
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.
No, yo también la cagué xD
El fallo tuyo, pues estaba ahí, pero no era precisamente eso lo que me daba error al compilar la primera vez xD. Me explico:
Por lo que fue más fallo mío que tuyo xD. De todas formas, gracias por ayudarme, ya está solucionado.
Salu2
¿Quieres estar totalmente informado sobre el universo 3DS? Visita Magic3DS.
También puedes estar al tanto de toda la actualidad de 3DS en Twitter: @Magic3DS
Gracias por solucinarlo :P
Gracias por solucionarme el fallo tan rápido. Pensé que sería fallo mío :P.
Muchísimas gracias.
Salu2