cuando intento cargar mi homebrew me sale;
Cita NDS:
Sprite GFX
1 not in VRAM
Erro code 111
Que es lo que hago mal?
// Includes propietarios NDS #include <nds.h> // Includes librerias propias #include <nf_lib.h> /* ------------------------------------------------- Main() - Bloque general del programa ------------------------------------------------- */ int main(void) { consoleDemoInit(); // Inicializa la consola de texto consoleClear(); // Borra la pantalla setBrightness(3, 0); // Restaura el brillo NF_SetRootFolder("NITROFS");//Elegimos nitrofiles como carpeta inicial NF_Set2D(1, 0);//Inicio el sistema de 2D inferior NF_Set2D(0, 0);//Inicio el sistema de 2D superior NF_InitTiledBgBuffers();//Inicio los bufers de los fondos tileados NF_InitTiledBgSys(1);//Inicio el sistema de fondos inferior NF_InitTiledBgSys(0);//Inicio el sistema de fondos superior NF_InitSpriteBuffers();//Inicio los buffers de los sprites NF_InitSpriteSys(0);//Inicio el sistema de sprites inferior NF_InitSpriteSys(1);//Inicio el sistema de sprites superior NF_InitTextSys(0);//Inicio el sistema de texto superior NF_InitTextSys(1);//Inicio el sistema de texto inferior NF_ResetSpriteBuffers();//Reseteo los Sprites NF_ResetTiledBgBuffers();//Reseteo los fondos NF_LoadTextFont("fnt/default", "normal", 256, 256, 0);//Cargo la primera fuente NF_LoadTextFont("fnt/default", "normal1", 256, 256, 0);//Cargo la segunda fuente NF_CreateTextLayer(0, 0, 0,"normal");//Paso la fuente a la pantalla superior NF_CreateTextLayer(1, 0, 0,"normal1");//Paso la fuente a la pantalla inferior iprintf("\n Funcionando si esto se ve"); // Bucle (repite para siempre) NF_LoadSpriteGfx("sprites/Dibujo", 0, 64, 64); // Personaje NF_VramSpriteGfx(1, 0, 2, true); NF_LoadSpriteGfx("sprites/chomp", 1, 64, 64); // Personaje NF_VramSpriteGfx(1, 1, 3, true); NF_CreateSprite(1, 1, 0, 1, 31, 82); NF_CreateSprite(1, 1, 1, 1, 36+64, 82); NF_LoadSpritePal("sprites/Dibujo", 1); NF_VramSpritePal(1, 0, 1); NF_LoadSpritePal("sprites/chomp", 3); NF_VramSpritePal(1, 1, 3); while(1) { NF_SpriteOamSet(0); NF_SpriteOamSet(1); swiWaitForVBlank(); oamUpdate(&oamMain); oamUpdate(&oamSub); } }
Bueno aquí tienes varios
Bueno aquí tienes varios errores:
- El primero es: cargas los sprites en las posiciones 0 y 1 de la RAM, luego los cargas en las posiciones 2 y 3 de la VRAM. El error que te da te lo da por que en
le dices que te dibuje el sprite que se encuentra en el slot 1 cuando ahí no hay nada.
- El segundo es que cargas los dos sprites en el mismo id : aunque no pasa nada solo verás el último que cargues.
- El tercero es que a los dos les pones la misma paleta: no te darán error ni la DS ni el compilador pero verás uno de los dos sprite con colores que no le pertencen.
- Cuarto: Para no liarte recomiendo cargar las paletas primero (aunque da igual prefiero hacerlo antes así fuera peligros)
Como te veo un poco despistado en el tema te haré una representación de lo lo que ocurre:
-Prog(programador):" cargame Dibujo en el Slot 0 de la RAM"
-DS: "vale"
-Prog: "cargame el sprite del Slot 0 en RAM al Slot 2 en VRAM"
-DS: "vale"
-Prog: "cargame chomp en el Slot 0 de la RAM"
-DS: "vale"
-Prog: "cargame el Slot 0 de la RAM al Slot 3 de la VRAM"
-DS: "vale"
-Prog: "ahora dibuja en la x 31 en y 82 usando la paleta del slot 1 en el hueco 1 de sprite el Slot 0 de la VRAM"
-DS: " no lo puedo hacer por que el Slot 0 de la VRAM está vacío"
Recomendaciones:
- En caso de duda consulta el manual de NFlib dentro de la carpeta docs dentro de la carpeta principal de NFlib (no es la que tienes en la carpeta de tu proyecto)
- Por cierto si 36+64=100 ponlo directamente le ahorrará un pelín de trabajo a la máquina.