Control de usuario
Estadísticas
Miembros:
364.433
Online:
2.064
Hilos:
1.472.966
Mensajes:
27.972.055
Stats

Índice de foros NDS Scene

[Programación en NDS][Recopilación de tutoriales Palib y Voc

Foro dedicado a las aplicaciones y hardware de la scene (no flash carts)

Moderador: eGladiator

judelco
Avatar de usuario
Scarlet Devil
 
Mensajes: 2446
Registrado: 21 Jun 2007
Ubicación: Málaga!!!

Re:

Mensajepor judelco 09 Jun 2009 09:56

Sebaguti escribió:Hola Judelco

Lo que me interesa seria los archivos graficos en si, por que el code sigue disponible en el foro; Segun recuerdo serian como de 8 a 10 sprites que simulan las ventanas en su ejemplo. Si por ahi los consigues, mucho se agradeceria [plas] .

Salu2


Emmm... si estamos hablando del tutorial #10, realmente no hay sprites, plata solo a usado 2 fondos (bg), lo demás es codigo. En su día no puso ninguna imagen, solo el codigo, unas screenshots (que no las imagenes, ojo) de SU compilación y el ejemplo, que eso es lo unico que se a perdido.

:-?
Imagen

Sebaguti
Novato
 
Mensajes: 20
Registrado: 30 Ago 2008

Re: Re:

Mensajepor Sebaguti 09 Jun 2009 13:45

judelco escribió:
Sebaguti escribió:Hola Judelco

Lo que me interesa seria los archivos graficos en si, por que el code sigue disponible en el foro; Segun recuerdo serian como de 8 a 10 sprites que simulan las ventanas en su ejemplo. Si por ahi los consigues, mucho se agradeceria [plas] .

Salu2


Emmm... si estamos hablando del tutorial #10, realmente no hay sprites, plata solo a usado 2 fondos (bg), lo demás es codigo. En su día no puso ninguna imagen, solo el codigo, unas screenshots (que no las imagenes, ojo) de SU compilación y el ejemplo, que eso es lo unico que se a perdido.

:-?


Deberia haber sido mas especifico; Mira el code del archivo Funciones.h en "[NDS][Programación con Palib] 10. Menus, funciones y archivo" y veras las siguientes cargas :

Código: Seleccionar todo
PA_CreateSprite(0, 1, (void*)ventapp1_Sprite, OBJ_SIZE_64X64, 1, 0, 1, 2);
PA_CreateSprite(0, 2, (void*)ventapp2_Sprite, OBJ_SIZE_64X64, 1, 0, 64, 2);
PA_CreateSprite(0, 3, (void*)ventapp3_Sprite, OBJ_SIZE_64X64, 1, 0, 128, 2);
PA_CreateSprite(0, 4, (void*)ventapp4_Sprite, OBJ_SIZE_64X64, 1, 0, 192, 2);
PA_CreateSprite(0, 5, (void*)ventapp5_Sprite, OBJ_SIZE_64X64, 1, 0, 1, 66);
PA_CreateSprite(0, 6, (void*)ventapp6_Sprite, OBJ_SIZE_64X64, 1, 0, 64, 66);
PA_CreateSprite(0, 8, (void*)ventapp8_Sprite, OBJ_SIZE_64X64, 1, 0, 192, 66);
PA_CreateSprite(0, 7, (void*)ventapp7_Sprite, OBJ_SIZE_64X64, 1, 0, 128, 66);


Seguramente en el directorio GFX debe haber 7 sprites que representan las ventanas.
Hay un link para bajar el ejemplo completo, pero esta vacio :

http://www.zonahomebrew.com/modules.php?name=Downloads&d_op=getit&lid=79

judelco
Avatar de usuario
Scarlet Devil
 
Mensajes: 2446
Registrado: 21 Jun 2007
Ubicación: Málaga!!!

Re: Re:

Mensajepor judelco 09 Jun 2009 16:22

Sebaguti escribió:Deberia haber sido mas especifico; Mira el code del archivo Funciones.h en "[NDS][Programación con Palib] 10. Menus, funciones y archivo" y veras las siguientes cargas :

Código: Seleccionar todo
PA_CreateSprite(0, 1, (void*)ventapp1_Sprite, OBJ_SIZE_64X64, 1, 0, 1, 2);
PA_CreateSprite(0, 2, (void*)ventapp2_Sprite, OBJ_SIZE_64X64, 1, 0, 64, 2);
PA_CreateSprite(0, 3, (void*)ventapp3_Sprite, OBJ_SIZE_64X64, 1, 0, 128, 2);
PA_CreateSprite(0, 4, (void*)ventapp4_Sprite, OBJ_SIZE_64X64, 1, 0, 192, 2);
PA_CreateSprite(0, 5, (void*)ventapp5_Sprite, OBJ_SIZE_64X64, 1, 0, 1, 66);
PA_CreateSprite(0, 6, (void*)ventapp6_Sprite, OBJ_SIZE_64X64, 1, 0, 64, 66);
PA_CreateSprite(0, 8, (void*)ventapp8_Sprite, OBJ_SIZE_64X64, 1, 0, 192, 66);
PA_CreateSprite(0, 7, (void*)ventapp7_Sprite, OBJ_SIZE_64X64, 1, 0, 128, 66);


Seguramente en el directorio GFX debe haber 7 sprites que representan las ventanas.
Hay un link para bajar el ejemplo completo, pero esta vacio :

http://www.zonahomebrew.com/modules.php?name=Downloads&d_op=getit&lid=79


Lo siento, he rebuscado por todo mi PC pero no tengo esos archivos, luego he buscado en toda la web, pero solo estaba los tutos de Plata en EOL y en la web es que está caida, por lo que no hay manera de recuperar el ejemplo.

Solución: Como la parte de sprites ya la has dado, no hace falta para que aprendas nada nuevo, así que te recomiendo quitar esos sprites y poner un Bg con la ventana ya pintada, será lo mismo.

;)
Imagen

Sebaguti
Novato
 
Mensajes: 20
Registrado: 30 Ago 2008

Mensajepor Sebaguti 09 Jun 2009 17:57

Sips tienes razon que alli ya no hay nada nuevo que aprender; Solo que parecia interesante esa "simulacion" de ventanas por asi decirlo. Gracias de todos modos por el esfuerzo.

Saludos

magic black 2009
Avatar de usuario
Programador Novato
 
Mensajes: 1039
Registrado: 08 May 2009

Mensajepor magic black 2009 09 Jun 2009 18:28

¿plata, podrías poner nuevos tutos para el sonido, que me han dicho que ha cambiado totalmente desde que los redactastes? XD [tadoramo]
¿Quieres estar totalmente informado sobre el universo 3DS? Visita Magic3DS
Todas las novedades y las noticias de 3DS las encontraréis en Twitter: @Magic3DS

Mis proyectos: Where is the Star? - El Juego Más Difícil del Mundo PRO NDS
Traduciendo Cyanide and Happiness: C&H en castellano
HILOS 3DS: En busca del cromo - [Hilo Oficial] Dragon Ball Heroes Ultimate Mission
[PARCHES] Distribuciones Pokémon 2011

Código de amigo 3DS: 1204-0380-7831 (MP si me agregáis).

Tratos C/V:
Tratos positivos (4): santiw, Kirby Konata, PabloH_Snake, Scylla.
Tratos negativos: Ninguno ^^


judelco
Avatar de usuario
Scarlet Devil
 
Mensajes: 2446
Registrado: 21 Jun 2007
Ubicación: Málaga!!!

Re:

Mensajepor judelco 09 Jun 2009 18:34

magic black 2009 escribió:¿plata, podrías poner nuevos tutos para el sonido, que me han dicho que ha cambiado totalmente desde que los redactastes? XD [tadoramo]


Si ya lo he dicho yo antes, más arriba.... aqui:

judelco escribió:PLATA, podrías adaptar o crear tutos nuevos para el apartado de sonido? Las palib han cambiado muchísimo y ya no se usa las antiguas librerias, ahora hay que usar ASLIB... xD (y encima hay 3 variantes)
[bye]
Imagen

Sebaguti
Novato
 
Mensajes: 20
Registrado: 30 Ago 2008

Re:

Mensajepor Sebaguti 09 Jun 2009 20:57

Suikoden77 escribió:yo tengo una duda sobre sprites, en concreto con alpha blending. La cuestion es que en mi juego quiero que un sprite se enrojezca, y para ello había pensado encima del sprite crear uno igual con el mismo contorno que el sprite a enrojecer pero de color rojo completo, y luego variar el alpha de ese ultimo sprite. Sin embargo, a la hora de correrlo en la nds, el sprite que queda detrás desaparece y el sprite completo en rojo hace alpha blending sobre el background de detras. Alguna manera de solucionar esto?


Una forma seria modificando la paleta directamente. El mollusk.png de este ejemplo lo coges de los ejemplos que se instalan con las Palib.

Saludos

Código: Seleccionar todo
#include <PA9.h>
// PAGfx Include
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"

int main(void){

   PA_Init(); //PAlib inits
   PA_InitVBL();
      
   PA_LoadSpritePal(0, // Screen
               0, // Palette number
               (void*)sprite0_Pal);   // Palette name
         
   PA_CreateSprite(0, // Screen
               0, // Sprite number
               (void*)mollusk_Sprite, // Sprite name
               OBJ_SIZE_32X32, // Sprite size
               1, // 256 color mode
               0, // Sprite palette number
               50, 50); // X and Y position on the screen
            
   PA_LoadSpritePal(1, // Screen
               0, // Palette number
               (void*)sprite0_Pal);   // Palette name

   PA_CreateSprite(1, // Screen
               0, // Sprite number
               (void*)mollusk_Sprite, // Sprite name
               OBJ_SIZE_32X32, // Sprite size
               1, // 256 color mode
               0, // Sprite palette number
               100, 100); // X and Y position on the screen

   u8 np;
   u16 r, g, b;
   for (np = 0; np <= 254 ; np++ )
   {
      r = sprite0_Pal[np]&31;
      g = (sprite0_Pal[np]>>5)&31;
      b = (sprite0_Pal[np]>>10)&31;
      if ( !(r == 0 && g == 0 && b == 0) ) //Si no es el color transparente
      {
         r = r + 12; if ( r > 31 ) r = 31; //Aumenta su rojo
      }
      PA_SetSpritePalCol(0, 0, np, PA_RGB(r,g,b));
   }

   while(1) // Infinite loops
   {
      PA_WaitForVBL();
   }
   
return 0;
}

Suikoden77
Avatar de usuario
Adicto
 
Mensajes: 351
Registrado: 22 Mar 2008
Ubicación: Valladolid
Fotos: 5

Re: Re:

Mensajepor Suikoden77 11 Jun 2009 16:53

Sebaguti escribió:
Suikoden77 escribió:yo tengo una duda sobre sprites, en concreto con alpha blending. La cuestion es que en mi juego quiero que un sprite se enrojezca, y para ello había pensado encima del sprite crear uno igual con el mismo contorno que el sprite a enrojecer pero de color rojo completo, y luego variar el alpha de ese ultimo sprite. Sin embargo, a la hora de correrlo en la nds, el sprite que queda detrás desaparece y el sprite completo en rojo hace alpha blending sobre el background de detras. Alguna manera de solucionar esto?


Una forma seria modificando la paleta directamente. El mollusk.png de este ejemplo lo coges de los ejemplos que se instalan con las Palib.

Saludos

Código: Seleccionar todo
#include <PA9.h>
// PAGfx Include
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"

int main(void){

   PA_Init(); //PAlib inits
   PA_InitVBL();
      
   PA_LoadSpritePal(0, // Screen
               0, // Palette number
               (void*)sprite0_Pal);   // Palette name
         
   PA_CreateSprite(0, // Screen
               0, // Sprite number
               (void*)mollusk_Sprite, // Sprite name
               OBJ_SIZE_32X32, // Sprite size
               1, // 256 color mode
               0, // Sprite palette number
               50, 50); // X and Y position on the screen
            
   PA_LoadSpritePal(1, // Screen
               0, // Palette number
               (void*)sprite0_Pal);   // Palette name

   PA_CreateSprite(1, // Screen
               0, // Sprite number
               (void*)mollusk_Sprite, // Sprite name
               OBJ_SIZE_32X32, // Sprite size
               1, // 256 color mode
               0, // Sprite palette number
               100, 100); // X and Y position on the screen

   u8 np;
   u16 r, g, b;
   for (np = 0; np <= 254 ; np++ )
   {
      r = sprite0_Pal[np]&31;
      g = (sprite0_Pal[np]>>5)&31;
      b = (sprite0_Pal[np]>>10)&31;
      if ( !(r == 0 && g == 0 && b == 0) ) //Si no es el color transparente
      {
         r = r + 12; if ( r > 31 ) r = 31; //Aumenta su rojo
      }
      PA_SetSpritePalCol(0, 0, np, PA_RGB(r,g,b));
   }

   while(1) // Infinite loops
   {
      PA_WaitForVBL();
   }
   
return 0;
}


Es lo ultimo que pense, aunque no lo probe porque pense que afectaria a todos los objetos cargados con la misma paleta. Ahora lo pruebo, y si funciona, te estaré eternamente agradecido!
Descarga aquí la beta de Plants Vs Zombies para NDS. Visita este hilo para informarte de las últimas actualizaciones.

Visita aquí el hilo del juego para NDS, "Roma" (Cartas, estrategia, 2 jugadores)

Sebaguti
Novato
 
Mensajes: 20
Registrado: 30 Ago 2008

Mensajepor Sebaguti 11 Jun 2009 18:27

Claro, al modificar la paleta afectas a todos los sprites que usan el mismo nro. de paleta en esa pantalla; Pero se permite hasta 16 paletas por pantalla, por lo que para el caracter que va a enrojecer simplemente le creas otra paleta (la cargas con otro numero).

En el ejemplo modificado de abajo mas o menos como que esa es la idea. (Ojo que el code asume que el color transparente es el negro RGB(0,0,0) no el magenta RGB(255,0,255) )

Código: Seleccionar todo
#include <PA9.h>

// PAGfx Include
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"

int main(void){

   PA_Init(); //PAlib inits
   PA_InitVBL();
      
   PA_LoadSpritePal(0, // Screen
               0, // Palette number
               (void*)sprite0_Pal);   // Palette name
         
   PA_LoadSpritePal(0, // Screen
               1, // Palette number , se esta creando una 2da. paleta en la pantalla 0
               (void*)sprite0_Pal);   // Palette name

   PA_CreateSprite(0, // Screen
               0, // Sprite number
               (void*)mollusk_Sprite, // Sprite name
               OBJ_SIZE_32X32, // Sprite size
               1, // 256 color mode
               0, // Sprite palette number
               50, 50); // X and Y position on the screen
            
   PA_CreateSprite(0, // Screen
               1, // Sprite number
               (void*)mollusk_Sprite, // Sprite name
               OBJ_SIZE_32X32, // Sprite size
               1, // 256 color mode
               1, // Para el Sprite 1 uso la paleta 1, no la 0
               150, 150); // X and Y position on the screen

   PA_LoadSpritePal(1, // Screen
               0, // Palette number
               (void*)sprite0_Pal);   // Palette name

   PA_CreateSprite(1, // Screen
               0, // Sprite number
               (void*)mollusk_Sprite, // Sprite name
               OBJ_SIZE_32X32, // Sprite size
               1, // 256 color mode
               0, // Sprite palette number
               100, 100); // X and Y position on the screen

   u8 np;
   u16 r, g, b;
   for (np = 0; np <= 254 ; np++ )
   {
      r = sprite0_Pal[np]&31;
      g = (sprite0_Pal[np]>>5)&31;
      b = (sprite0_Pal[np]>>10)&31;
      if ( !(r == 0 && g == 0 && b == 0) ) //Si no es el color transparente
      {
         r = r + 12; if ( r > 31 ) r = 31; //Aumenta su rojo
      }
      PA_SetSpritePalCol(0, 0, np, PA_RGB(r,g,b)); //Afecta solo a la paleta del Sprite 0 en la Pantalla 0, que es la paleta 0.
   }

   while(1) // Infinite loops
   {
      PA_WaitForVBL();
   }
   
return 0;
}

ANTONIOND
Avatar de usuario
EOL user
 
Mensajes: 2837
Registrado: 23 Ago 2007

Re: Re:

Mensajepor ANTONIOND 12 Jun 2009 16:44

judelco escribió:
magic black 2009 escribió:¿plata, podrías poner nuevos tutos para el sonido, que me han dicho que ha cambiado totalmente desde que los redactastes? XD [tadoramo]


Si ya lo he dicho yo antes, más arriba.... aqui:

judelco escribió:PLATA, podrías adaptar o crear tutos nuevos para el apartado de sonido? Las palib han cambiado muchísimo y ya no se usa las antiguas librerias, ahora hay que usar ASLIB... xD (y encima hay 3 variantes)
[bye]

Con PAlib vienen muuuchos ejemplos de casi todo, no se que le pasa a la gente, que parece no los quiere ver, supongo que serán demasiado trabajo de descifrar, ¿no? Como es una tontería ver un código e intentar entenderlo... Y más uno fácil... En serio, intentad mirar los ejemplos, son muy sencillos y se ven muchas cosas rápido. Además, así se aprende...

Y aunque no se a que 3 variantes te refieres... Supongo que será a lo de iniciar el sonido, que se puede iniciar en modo mp3 o en modo de raw. En serio, ¿te compensa usar aslib? ¿Vas a usar mp3? Si no vas a usar mp3, es una tontería usar aslib, usa maxmod, que viene con libnds. Por supuesto, para esto necesitas las PAlib beta de aquí, que creo que son las que te bajaste, o eso me pareció que me dijiste. http://forum.palib.info/index.php?topic=7048.0 Y por ser beta no quiere decir que sea inestable. Solo se ha cambiado un poco el sistema de comunicación de los procesadores (porque les ha obligado un cambio de libnds) y se han eliminado cosas obsoletas, como PAFS.
Dejad de pedir a plata tutoriales y demás, que hace muchísimo que dejó de hacerlos y tendrá sus motivos. Buscaos un poco la vida, que así es como más se aprende, y lo digo por experiencia. ¿Que quereis programar y no teneis ni idea y necesitáis tutoriales? ¿Sabes inglés? Si la respuesta es no, lo llevas claro. En programación el 99% de las cosas están en inglés. Aquí unos tutos de PAlib en inglés y bastante actualizados (aunque hay bastante parte traducida al español, pero parte es de versiones viejas). http://www.palib.info/wiki/ En cuanto acabes los tutoriales verás que no te encuentras NADA mas para seguir. ¿Por qué? Porque a partir de conocer las librerías que vas a usar y saber programar (ojo, no saber usar variables y condicionales, que eso es no tener ni idea) se da por hecho que tienes que ser suficientemente listo como para arreglartelas tu solo. Empieza haciendo un pong. "Bah, pero eso es una mierda, para eso no programo nada..." ERROR. Si no empiezas por algo muy fácil jamás aprenderás nada. ¿Nunca has programado y ya pretendes un RPG? El proceso de aprender a programar es gradual. Si pretendes hacer algo fuera de tu alcance pueden pasar dos cosas: 1. Está un poco por encima de tu nivel, eres capaz de hacer casi todo pero hay partes que no sabes. Esto si se consigue acabar, porque esa parte la acabarás por intuir tarde o temprano. Aprenderás, y la próxima vez aplicaras tus nuevos conocimientos. 2. Está muy por encima de tu nivel. Esto no lo acabas ni de coña, te frustras y a mandas a la mierda la programación (y un favor que haces a los demás programadores porque no les vas a pedir más ayuda...).

En resumen, si no hay información en un lado, buscadla por otro lado. Los ejemplos de PAlib y libnds han sido para mí una fuente muy importante de ayuda. También viene bien mirarse la documentación de las librerías, así descubres a veces funciones interesantes que no te imaginabas que estaban ahí. No pasa nada por preguntar, pero solo hay que preguntar cuando no tienes otra opción, si no jamás aprenderás.

PD: No se a cuento de que escribo esto, pero ya que lo he escrito ahí se queda... [+risas] No es nada personal, si es lo que pensais ahora mismo. Es que no os imagináis la de gente que pregunta como hacer cosas y cuando le respondes no tienen ni idea de lo que estás diciendo porque no saben nada del lenguaje que usan, en este caso C, o simplemente que no saben nada de programar. Necesitaba deshaogarme. [carcajad]

PrevioSiguiente

Volver a Scene

¿Quién está conectado?

Usuarios navegando por este foro: No hay usuarios registrados visitando el foro y 0 invitados