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

Ofertas en PcComponentes: Top Verano y PcCom Days
1, 2, 3, 4, 5, 6
Tengo un problema. Estoy haciendo un juego de pseudo-boxeo en plan coña, y al poner los nombres de los personajes arriba en modo texto, cuando el personaje pasa por la zona, está encima del texto. Estaba usando texto de 16bits (para ajustar mejor el tamaño), pero no encuentro la forma de que el sprite pase por debajo, ya que no encuentro forma de darle prioridad al texto, más que en qué background lo pongo, pero en cualquiera, el sprite pasa por encima.

¿Alguna idea? Gracias :)
En vez de cambiar la prioridad del texto, prueba a cambiar la prioridad del sprite, pongo en capas mas "para atrás"
judelco escribió:En vez de cambiar la prioridad del texto, prueba a cambiar la prioridad del sprite, pongo en capas mas "para atrás"

Para empezar yo le diría que no use un bg de 16 bit para esa chorrada... Es malgastar una enorme cantidad de memoria.
Es que si uso texto normal nisiquiera se ve el texto, no sé muy bien por qué. He cambiado la prioridad del sprite, pero vamos, sigo sin encontrar la solución. Gracias por las propuestas de todas formas, seguiré intentando.
y no hay otro programa mas sencillito?
Sip , un Gamemaker hecho con la librería palib :D
Pero esto es de lo más facil que encontraras xD
Hola, buenas. Ando buscando alguna página que ofrezca información sobre programar en ds, concoeis alguna que merezca la pena, he visitado varias y más o menos ya voy asimilando sus contenidos. el caso es que para lo que quiero hacer ahroa en el juego no encuentro los elementos que tengo en mente, vamos que no se escribirlo.

Sería algo así como crear un proceso hijo, dejar el otro congelado o matarlo y cuando termina este proceso resucitar el primero, mientras el hijo desaaprece. Vamos no se si me he explicado. Pero no se que debo escribir.
El problema es que a mí no me va el kit de devkitpro + palib ni a tiros... :(
Poque cuando compilo me dice:

main.c
c:/devkitPro/programas/ej01/source/main.c: In function 'main':
c:/devkitPro/programas/ej01/source/main.c:10: error: expected ')' before numeric constant
make[1]: *** [main.o] Error 1
make: *** [build] Error 2
Mafmaestro escribió:Poque cuando compilo me dice:

main.c
c:/devkitPro/programas/ej01/source/main.c: In function 'main':
c:/devkitPro/programas/ej01/source/main.c:10: error: expected ')' before numeric constant
make[1]: *** [main.o] Error 1
make: *** [build] Error 2

¿Sabéis? Los errores que salen ahí están para leerse. ¬_¬

Te falta un paréntesis en la línea 10 de "main.c"... O antes, pero el fallo está ahí.
Hola Plata (y al resto de usuarios de EOL).

Estoy siguiendo tus tutoriales sobre cómo programar en Palib, y me gusta, a pesar de que a veces me atasco un poco porque mezclo C, Javascript, PHP y Java (cosas de ser autodidacta en aquello de los lenguajes de programación). De momento voy por el paso 9 después de una semana [buenazo]

La verdad es que te estás pegando un curro de narices, pero he notado que en ninguno de tus ejemplos haces uso de la indentación o sangrado (desplazar el texto a la derecha). Personalmente a mí me da un poco igual, pero para la gente que empieza quizás pueda liarse o perderse al ver tantas líneas de código de corrido.

Por lo demás, nada que objetar, un trabajo muy bueno el que haces como "profesor" particular de Palib. Muchas gracias
Muchísimas gracias por los tutos mis ganas de programar han aumentado considerablemente :) espero impaciente los siguientes
Hola a todos e seguido todos los tutos pero tengo una duda en el ultimo tuto colgado el de funciones archivos... como hago para crear otra aplicacion lo e intentado hacer con la misma estructura que la aplicacion 1 pero no se no me sale que tengo que cambiar para que al pulsar el sprite 1 salga la aplicacion 2 por favor ayudarme. (lo del sprite lo digo porque cuando pulsas el sprite 0 sale la aplicacion 1 y tengo otro sprite con el numero 1 que quiero que habra la funcion 2 ayudarmeeeeeee)

Saludos y gracias de antemano.
yaguar escribió:Hola a todos e seguido todos los tutos pero tengo una duda en el ultimo tuto colgado el de funciones archivos... como hago para crear otra aplicacion lo e intentado hacer con la misma estructura que la aplicacion 1 pero no se no me sale que tengo que cambiar para que al pulsar el sprite 1 salga la aplicacion 2 por favor ayudarme. (lo del sprite lo digo porque cuando pulsas el sprite 0 sale la aplicacion 1 y tengo otro sprite con el numero 1 que quiero que habra la funcion 2 ayudarmeeeeeee)

Saludos y gracias de antemano.


ufff esque era un ejemplo para mostrar lo de los if's, multiarchivo, fundiones y demas, una especie de mejunje de todo, pero no es para nada funcional... seria cosa de editar el codigo y meter una estructura para hacer eso, igual con una variable para distingir entre las ventanas te vale, pero ese codigo no sirve para nada, es una chorrada... xD Si quieres hacer lo que dices de cargar la aplicacion dos, seria cambiar donde le das al sprite del ejecutable, la funcion que aparece por la tuya... tampoco me acuerdo muy bien de como era ese source, no me acuerdo si a las funciones le añadi algo pasra poder distingir entre varias app o lo deje asi.

salu2
para guardar lo que escribo con el teclado en formato .txt
me da este error si alguien sabe lo que significa que por favor me lo diga gracias.
error:
main.c
arm-eabi-gcc.exe: and: No such file or directory
arm-eabi-gcc.exe: Settings/Fernando/Mis: No such file or directory
arm-eabi-gcc.exe: documentos/devkitPro/PAlib/include/nds: No such file or directory
make[1]: *** [main.o] Error 1
make: *** [build] Error 2

SOLUCIONADO
creo ke si algo deje claro es que no cambiase nadie la ruta de instalacion, aunque veo ke ya te as dado cuenta tu solo...

Al que preguntava sobre el teclado, pues guardas lo que escrive el teclado en una char y despues pasas la char a un documente de texto usando las libfat... mirate un poco como funcionan, es lo mismo que guardar un texto normal en un txt solo que haces, que cuando pulses a por ejemplo, enved de guardar un texto, guarde la variable...
para cuando empezamos las 2D :P estoy impacienteeee jeje ese plataaaaa
lo estas aciendo muy bien de aki a na tenemos un juego echo jeje aer cuando pones el siguiente...por favor
Por ejemplo para hacer un menu y dando por ejemplo entre las posicion x=20 y x=45 y entre las posiciones y=50 e y=80 cambie a otro menu que dando al resto de la pantalla como se haria????
Como pongo enemigos????amos que como hago que se muevan solos los enemigos.
Yo estoy siguiendo los tutoriales y también los de la wiki oficial de Palib (en Inglés), estoy espectante esperando una nueva entrega :p
Se podría hacer una combinación de botones con PALIB??? Me explico, para que la nintendo haga una cosa cuando se le da a un botón sería este código: if (Pad.Newpress.Botón) Orden, en donde Botón sería el botón que quieres pulsar y haga esa orden y Orden es lo que quieres que haga. Pues me pregunto si se podría decir que al pulsar A y B a la vez, por ejemplo, hiciese una cosa???????
Alber96 escribió:Se podría hacer una combinación de botones con PALIB??? Me explico, para que la nintendo haga una cosa cuando se le da a un botón sería este código: if (Pad.Newpress.Botón) Orden, en donde Botón sería el botón que quieres pulsar y haga esa orden y Orden es lo que quieres que haga. Pues me pregunto si se podría decir que al pulsar A y B a la vez, por ejemplo, hiciese una cosa???????

Sí, se puede hacer.
Sería algo así como (Si mis conocimientos no se han oxidado...)

if ((Pad.Newpress.A)||(Pad.Newpress.B))
else blablabla...


por ejemplo [buenazo]
Alber96 escribió:Se podría hacer una combinación de botones con PALIB??? Me explico, para que la nintendo haga una cosa cuando se le da a un botón sería este código: if (Pad.Newpress.Botón) Orden, en donde Botón sería el botón que quieres pulsar y haga esa orden y Orden es lo que quieres que haga. Pues me pregunto si se podría decir que al pulsar A y B a la vez, por ejemplo, hiciese una cosa???????


if((Pad.Newpress.A)&&(Pad.Newpress.B)){
//lo que quieras que ejecute
}


Salu2

P.D: NO, no he muerto xD
Plata escribió:
Alber96 escribió:Se podría hacer una combinación de botones con PALIB??? Me explico, para que la nintendo haga una cosa cuando se le da a un botón sería este código: if (Pad.Newpress.Botón) Orden, en donde Botón sería el botón que quieres pulsar y haga esa orden y Orden es lo que quieres que haga. Pues me pregunto si se podría decir que al pulsar A y B a la vez, por ejemplo, hiciese una cosa???????


if((Pad.Newpress.A)&&(Pad.Newpress.B)){
//lo que quieras que ejecute
}


Salu2

P.D: NO, no he muerto xD

Mierda, pues mis conocimientos sí se han oxidao un poco xD
Plata eres un maquina, tenia ganas de aprender a programar para una cosola y tus tutoriales estan perfectos XD, sigue asin.
Rigle escribió:
Plata escribió:
Alber96 escribió:Se podría hacer una combinación de botones con PALIB??? Me explico, para que la nintendo haga una cosa cuando se le da a un botón sería este código: if (Pad.Newpress.Botón) Orden, en donde Botón sería el botón que quieres pulsar y haga esa orden y Orden es lo que quieres que haga. Pues me pregunto si se podría decir que al pulsar A y B a la vez, por ejemplo, hiciese una cosa???????


if((Pad.Newpress.A)&&(Pad.Newpress.B)){
//lo que quieras que ejecute
}


Salu2

P.D: NO, no he muerto xD

Mierda, pues mis conocimientos sí se han oxidao un poco xD


1º gracias xD
2º ajajjajaja ya lo estaba empexando a pensar plata xD
3º casi rigle xD
4º espero con mucha impaciencia el 2D y muy buenos tutoriales xD
Rigle escribió:
Plata escribió:
if((Pad.Newpress.A)&&(Pad.Newpress.B)){
//lo que quieras que ejecute
}


Salu2

P.D: NO, no he muerto xD

Mierda, pues mis conocimientos sí se han oxidao un poco xD

En realidad... Lo que pongas ahí no se ejecutará prácticamente nunca. Solo se ejecutará si en el mismo frame pulsas los botones A y B. Si tenemos en cuenta que la DS va a 60 fps, es muy dificil que la pulsación de los 2 coincida. Con Pad.Held.XXX no estaría ese problema, pero se ejecutaria siempre que mantengas pulsados los botones... [+risas]
(mensaje borrado)
Hola, supongo que esta es una pregunta que ya se ha contestado, pero no encuentro la respuesta:

¿Como hago para guardar las partidas en un archivo .sav?
Rigle escribió:
Plata escribió:
if((Pad.Newpress.A)&&(Pad.Newpress.B)){
//lo que quieras que ejecute
}


Salu2

P.D: NO, no he muerto xD

Mierda, pues mis conocimientos sí se han oxidao un poco xD

En realidad... Lo que pongas ahí no se ejecutará prácticamente nunca. Solo se ejecutará si en el mismo frame pulsas los botones A y B. Si tenemos en cuenta que la DS va a 60 fps, es muy dificil que la pulsación de los 2 coincida. Con Pad.Held.XXX no estaría ese problema, pero se ejecutaria siempre que mantengas pulsados los botones... [+risas][/quote]


ok lo probare muchas gracias a todos por vuestras respuestas, plata muy buenos tutoriales los sigo todos y como que ya me toy quedando corto sin el 2D entero xDxD peo sin prisas graxias
Hola Amigos

Alguien podria enviarme los codigos y graficos que corresponden al tutor 10? ; El site :
http://www.zonahomebrew.com parece que ya no los tiene. Es cierto que puedo copiar y pegar los codigos de los listados, pero los gráficos (sprites) en este ejemplo son bastantes y tenerlos me ayudaria a entender mejor este ejemplo.

Gracias
Sebastian
sebastigutierrez@gmail.com


¿Nadie? [mamaaaaa]
Bueno, pues hay buenas y malas noticias. Las buenas, ayer saque un poco de fuerza de voluntad para sacar de un cd donde tenia guardado el primer tuto de 2d su contenido (quien me conozca sabe que eso es mucho esfuerzo para tanto vago xD), lo malo que no funciona el disco (ta rayao, error de rebundancia ciclica al intentar copiarlo), lo peor que no me acuerdo de que era lo que queria ir enseñando (lo tenia ya planeao xD), asi que una cosa mejor para todos, me contais que quereis que incluya en los tutos y a partir de hay ya hago los tutos. Solo una cosa, quien lo valla a seguir que aprenda un poco de estructuras (arrays, matrices, como quieras llamarlo, en poco se diferencian entre ellos) por su cuenta, ya que es muy util para esto (almenos yo lo uso para practicamente todo) y no me voy a parar a explicarlo.

salu2
ok gracias x la info y una sugerencia (e dixo sugerencia) es que podrias empezar en el 2D con los conocimientos basicos de por ejemplo el fondo en movimiento las distintas capas de fondo y sprites y ya de paso poner el famoso ejemplo de un juego de plataformas al estilo Mario (como no xD) y a partir de ahi las colisiones, etc





gracias por escucharme y de todas maneras seguiré los tutos (mas bien gracias por leerlo xD)
Plata escribió:Bueno, pues hay buenas y malas noticias. Las buenas, ayer saque un poco de fuerza de voluntad para sacar de un cd donde tenia guardado el primer tuto de 2d su contenido (quien me conozca sabe que eso es mucho esfuerzo para tanto vago xD), lo malo que no funciona el disco (ta rayao, error de rebundancia ciclica al intentar copiarlo), lo peor que no me acuerdo de que era lo que queria ir enseñando (lo tenia ya planeao xD), asi que una cosa mejor para todos, me contais que quereis que incluya en los tutos y a partir de hay ya hago los tutos. Solo una cosa, quien lo valla a seguir que aprenda un poco de estructuras (arrays, matrices, como quieras llamarlo, en poco se diferencian entre ellos) por su cuenta, ya que es muy util para esto (almenos yo lo uso para practicamente todo) y no me voy a parar a explicarlo.

salu2


Plata , aprovecho el mail para preguntarte si tenes los codigos fuentes del tutorial 10 (Ese en que se hace un pseudo-mini Windows); Justo el mas interesante y no lo puedo hacer.

Salu2
Esto esta parado con lo interesante que es programar la Ds, Plata eres un maquina por hacer estos tutoriales pero donde esta los siguientes me he comido ya los que has puesto. Nada mas solo dartes las gracias.
Sebaguti escribió:Plata , aprovecho el mail para preguntarte si tenes los codigos fuentes del tutorial 10 (Ese en que se hace un pseudo-mini Windows); Justo el mas interesante y no lo puedo hacer.

Salu2


Vale, no soy Plata... xD

Yo, ya que siempre hago lo mismo XD , guardo TODO lo que veo que es de interés en mi PC, así que... yo tengo casi todo lo que habia en el Tuto 10, que buscas realmente? El hilo que se ha borrado y necesitas el tuto en sí ? O los archivos de ejemplo que aún no he encontrado en mi pc ?

Si es el propio tuto, cojo y lo posteo aqui sin problemas ;) (en "code" para que no sea kilometrico)

----------

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]
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?
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
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.

:-?
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 :

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
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 :

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.

;)
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
¿plata, podrías poner nuevos tutos para el sonido, que me han dicho que ha cambiado totalmente desde que los redactastes? XD [tadoramo]
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]
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

#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;
}
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

#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!
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) )

#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;
}
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]
283 respuestas
1, 2, 3, 4, 5, 6