buenas
he estado volviendo a programar de nuevo, bueno a aprender de nuevo libnds y resulta que por mas que intento cargar dos capas de fondos en la misma pantalla, pos o se cambia la paleta o no funiones o se queda negro u otros problemas.
deberia aparecer madera en 3 plano y en segundo un fondo magenta con letras, lo que mas me he acercado es que se me cargo el magenta encima, pero ya no consegui
este es el codigo actual
/*--------------------------------------------------------------------------------- ---------------------------------------------------------------------------------*/ #include <nds.h> #include <stdio.h> #include <string.h> #include "woodTiles_bin.h" #include "woodMap_bin.h" #include "woodPal_bin.h" #include "fondo2Tiles_bin.h" #include "fondo2Map_bin.h" #include "fondo2Pal_bin.h" #include "fondo1Tiles_bin.h" #include "fondo1Map_bin.h" #include "fondo1Pal_bin.h" #include "fondo0Tiles_bin.h" #include "fondo0Map_bin.h" #include "fondo0Pal_bin.h" //--------------------------------------------------------------------------------- int main(void) { //--------------------------------------------------------------------------------- irqInit(); irqEnable(IRQ_VBLANK); //Modo de Video REG_DISPCNT = MODE_0_2D | DISPLAY_BG0_ACTIVE | DISPLAY_BG1_ACTIVE | DISPLAY_BG2_ACTIVE | DISPLAY_BG3_ACTIVE; REG_BG0CNT = BG_32x32 | BG_COLOR_256 | BG_MAP_BASE(0) | BG_TILE_BASE(1) | BG_PRIORITY(0); REG_BG1CNT = BG_32x32 | BG_COLOR_256 | BG_MAP_BASE(1) | BG_TILE_BASE(2) | BG_PRIORITY(1); REG_BG2CNT = BG_32x32 | BG_COLOR_256 | BG_MAP_BASE(2) | BG_TILE_BASE(3) | BG_PRIORITY(2); REG_BG3CNT = BG_32x32 | BG_COLOR_256 | BG_MAP_BASE(3) | BG_TILE_BASE(4) | BG_PRIORITY(3); REG_DISPCNT_SUB = MODE_0_2D | DISPLAY_BG0_ACTIVE | DISPLAY_BG1_ACTIVE | DISPLAY_BG2_ACTIVE | DISPLAY_BG3_ACTIVE; REG_BG0CNT_SUB = BG_32x32 | BG_COLOR_256 | BG_MAP_BASE(0) | BG_TILE_BASE(1) | BG_PRIORITY(0); REG_BG1CNT_SUB = BG_32x32 | BG_COLOR_256 | BG_MAP_BASE(1) | BG_TILE_BASE(2) | BG_PRIORITY(1); REG_BG2CNT_SUB = BG_32x32 | BG_COLOR_256 | BG_MAP_BASE(2) | BG_TILE_BASE(3) | BG_PRIORITY(2); REG_BG3CNT_SUB = BG_32x32 | BG_COLOR_256 | BG_MAP_BASE(3) | BG_TILE_BASE(4) | BG_PRIORITY(3); //Memoria Vram vramSetBankA(VRAM_A_MAIN_BG); vramSetBankE(VRAM_E_LCD); vramSetBankC(VRAM_C_SUB_BG); vramSetBankH(VRAM_H_LCD); //Cargar fondos pantalla arriba memcpy((void*)BG_TILE_RAM(1), woodTiles_bin, woodTiles_bin_size); memcpy((void*)BG_MAP_RAM(0), woodMap_bin, woodMap_bin_size); memcpy((void*)BG_PALETTE, woodPal_bin, woodPal_bin_size); memcpy((void*)BG_TILE_RAM(2), fondo2Tiles_bin, fondo2Tiles_bin_size); memcpy((void*)BG_MAP_RAM(1), fondo2Map_bin, fondo2Map_bin_size); memcpy((void*)BG_PALETTE, fondo2Pal_bin, fondo2Pal_bin_size); //Cargar fondos pantalla abajo memcpy((void*)BG_TILE_RAM_SUB(1), woodTiles_bin, woodTiles_bin_size); memcpy((void*)BG_MAP_RAM_SUB(0), woodMap_bin, woodMap_bin_size); memcpy((void*)BG_PALETTE_SUB, woodPal_bin, woodPal_bin_size); while(1) { swiWaitForVBlank(); } }
ayuda pliss
Inicializa en sub engine con
Inicializa en sub engine con los valores sub.
Si no usas paletas extendidas (no te pase nada), los fondos de cada pantalla deben usar LA MISMA, paleta.
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.
si te refieres a
si te refieres a esto:
Ponerlo con sub, lo hago enseguida, aunque no se que te refieres, porque yo creo que al ponerle el comando sub ya esta en el, pero lo de la spaletas extendidas, lo puse y el homebrew se queda en negro y no se porque solo añadi lo de activar paletas extendidas(no me acuerdo ahora mismo) al, apartado de iniciar y nada. No se porque, te paso de nuevo el source con las correcciones que he hecho y me dices, proque no entiendo el porqué de esto.
se me queda la pantalla en negro, asi que tu diras
Be Libre my Friend.
Para empezar, de momento,
Para empezar, de momento, olvidate de las paletas extendidas, libnds no tiene soporte nativo para ella, (no hay comandos para hacerlo directamente, se tiene que hacer a mano)
Despues indexa todos los fondos de cada pantalla con la misma paleta, o intentalo con un solo fondo.
Las linas con
REG_BG0CNT = BG_32x32 | BG_COLOR_256 | BG_MAP_BASE(0) | BG_TILE_BASE(1) | BG_PRIORITY(0);
Cambialo por
REG_BG0CNT = BgType_Text8bpp | BG_32x32 | BG_COLOR_256 | BG_MAP_BASE(0) | BG_TILE_BASE(1) | BG_PRIORITY(0);
Mas que nada para asegurarte que entiende que vas a usar fondos tileados.
Cuando esto de funciona, continuaremos. Mas que nada por que yo no uso los macros de libnds para la VRAM y voy directo a los registros, pero el codigo parece correcto, quita solo todo lo de paletas extendidas (usa solo los bancos A y C) y lo de la copia de datos a la VRAM parece correcto. Creo que todo el lio que tienes es con la paleta.
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.
ya va casi del todo, lo que
ya va casi del todo, lo que no se es como usar las paletas extendidas, si me lo puedieras explicar, te lo agradeceria.
todo genial menos eso, ya queda menos
Be Libre my Friend.
Basicamente seria: //
Basicamente seria:
Adaptalo a tu gusto.
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.
gracias, ya he cosneguido
gracias, ya he cosneguido cargar 4 fondos en cada pantalla, y he aprovechado para pasar las direcciones sin el macro, pero va genial. Mañana me pondre con sprites. gracias knightfox.
EDIT:
ya he hecho lo de los sprites, me ha salido a la segunda y encima los puedo duplicar y mover, pero no se como modificar el codigo para poder crear barios sprites, te paso aunque he probado de todo lo que se me ocurria.
gracias por tu esfuerzo
Be Libre my Friend.
El puntero al grafico usado
El puntero al grafico usado no puede ser 0. Tiene que ser la direccion en VRAM donde has almacenado el grafico para ese sprite.
te refieres a
te refieres a esto?
Be Libre my Friend.
exacto, le tienes que indicar
exacto, le tienes que indicar al oam donde esta el grafico de cada sprite en la vram
ok, pero la vram de sprites
ok, pero la vram de sprites tiene 128kbs y no se utilizarla entera, antes los fondos tenian macros determinados, pero para almacenar 128 sprites no se que usar.
EDIT
Ya he conseguid aprender a mover fondos y sprites, pero no como crear sprites diferentes.
ya lo consegui he utilizado el oamAllocateGfx
Be Libre my Friend.
Puedes usar el allocate que
Puedes usar el allocate que lleva libnds o gestionarlo tu mismo. Como has dicho tienes 128kb para sprites, donde copies el gfx le da igual, solo se lo tienes que indicar al OAM. En otras palabras, tienes que gestionar tu a mano la VRAM de sprites.
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.
voy avanzando, he consegudi
voy avanzando, he consegudi hacer scroll a los fondos y mover sprites y animarlos, estoy intentando cargarlos desde nitrofs, ya voy avanzando, aunque una vez que le pillas el trucos libnds es sencillo
garcias por tu ayuda
Be Libre my Friend.