Pages: [1] 2   Bas de page
Imprimer
Auteur Fil de discussion: NDS Problème de programmation  (Lu 3056 fois)
0 Membres et 1 Invité sur ce fil de discussion.
fdavid664 Hors ligne
Newbie
*
Messages: 9


Voir le profil
« 03 Avril 2008, 19:20:55 »

Bonjour à tous.

Je cherche à faire une transition simple du blanc vers un fond ecran du bas vers le haut.
Si vous savez en faire, donnez moi vos codes SVP.

Merci d'avance.
Journalisée
Minishlink Hors ligne
Mega Member
***
Messages: 1439


Voir le profil WWW
Quand on veut, on peut !

« Réponse #1 : 03 Avril 2008, 20:02:51 »

Tadaa Cheesy

Code
(c):
void fadeOut(u8 screen)
{
s8 i = 0;
 
for(i = 0; i >= -8; i--)
{
PA_WaitForVBL();
if(screen == 0 || screen == 2) { PA_SetBrightness(0, i); }
if(screen == 1 || screen == 2) { PA_SetBrightness(1, i); }
}
}
 
void fadeIn(u8 screen)
{
s8 i = 0;
 
for(i = -8; i <= 0; i++)
{
PA_WaitForVBL();
if(screen == 0 || screen == 2) { PA_SetBrightness(0, i); }
if(screen == 1 || screen == 2) { PA_SetBrightness(1, i); }
}
}
Si tu veux des précisions, n'hésites pas Wink

EDIT: arf chuis allé trop vite, mais je vais me coucher je verrais ce que tu veux exactement demain; regarde si mes fonctions te vont Smiley
Journalisée

fdavid664 Hors ligne
Newbie
*
Messages: 9


Voir le profil
« Réponse #2 : 03 Avril 2008, 21:20:34 »

Serait-il possible d'avoir une transition plus longue. Voiçi mon code si besoin est. Il doit avoir des fautes car je suis peu expérimenté.

Code
(c):
// This time around, we'll scroll a background...
 
// Includes
#include <PA9.h>       // Include for PA_Lib
 
 
 
// Converted using PAGfxConverter
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"
 
void fadeOut(u8 screen)
{
s8 i = 0;
 
for(i = 0; i >= -8; i--)
{
PA_WaitForVBL();
if(screen == 0 || screen == 2) { PA_SetBrightness(0, i); }
if(screen == 1 || screen == 2) { PA_SetBrightness(1, i); }
}
}
 
void fadeIn(u8 screen)
{
s8 i = 0;
 
for(i = -8; i <= 0; i++)
{
PA_WaitForVBL();
if(screen == 0 || screen == 2) { PA_SetBrightness(0, i); }
if(screen == 1 || screen == 2) { PA_SetBrightness(1, i); }
}
}
 
// Function: main()
int main(int argc, char ** argv)
{
PA_Init();    // Initializes PA_Lib
PA_InitVBL(); // Initializes a standard VBL
 
// Load the dual background...
PA_EasyBgLoad(0,3, //bg number
generique1); //background name
 
PA_EasyBgLoad(1,3, //bg number
generique2); //background name
 
 
// Infinite loop to keep the program running
while (1)
{
fadeOut(0);
fadeIn(0);
PA_WaitForVBL();
 
 
 
}
 
return 0;
} // End of main()
 
Journalisée
The_Pimousse Hors ligne
Sr. Member
****
Messages: 353


Voir le profil
« Réponse #3 : 04 Avril 2008, 10:22:36 »

Pour ralentir la transition, tu rajoutes des "PA_WaitForVBL" a cote de celui qui est dans les fonctions fadeXxx
Journalisée

L'experience, c'est le nom que l'on donne a ses erreurs
Minishlink Hors ligne
Mega Member
***
Messages: 1439


Voir le profil WWW
Quand on veut, on peut !

« Réponse #4 : 04 Avril 2008, 12:21:56 »

Et n'oublies pas de mettre les prototypes dans ton fichier Wink
Journalisée

stravingo Hors ligne
Sr. Member
****
Messages: 301


Voir le profil WWW
« Réponse #5 : 04 Avril 2008, 14:34:58 »

Je cherche à faire une transition simple du blanc vers un fond ecran du bas vers le haut.

C'est bien une transition vers/depuis le blanc que tu souhaites faire ? Si c'est le cas, attention, minishlink t'a donné une solution qui fait une transition vers le noir. Ou plutôt vers une image plus foncée car il ne va pas jusqu'au noir (-8 au lieu de -31 en 2ème argument de PA_SetBrightness).

Pour faire une transition vers/depuis de blanc, il faut plutôt un code du style :

Code
(c):
void fadeToWhite(u8 screen)
{
for(s8 i = 0; i <=31; i++)
{
if(screen == 0 || screen == 2) { PA_SetBrightness(0, i); }
if(screen == 1 || screen == 2) { PA_SetBrightness(1, i); }
PA_WaitForVBL();
}
}
 
void fadeFromWhite(u8 screen)
{
for(s8 i = 31; i >= 0; i--)
{
if(screen == 0 || screen == 2) { PA_SetBrightness(0, i); }
if(screen == 1 || screen == 2) { PA_SetBrightness(1, i); }
PA_WaitForVBL();
}
}
 

Au passage, comme il y a plus d'itérations (32 au lieu de 8 ), la transition est 4 fois plus longue et dure 0.5 seconde.
Journalisée

Mes jeux (Ka-BoOm, Setsuzoku no Puzzle) et apps (DS Weather Report, Treasures of Gaia, Miniville DS Manager, Secret Hordes) sur DS sont disponibles sur mon devblog
Minishlink Hors ligne
Mega Member
***
Messages: 1439


Voir le profil WWW
Quand on veut, on peut !

« Réponse #6 : 04 Avril 2008, 18:33:53 »

Oui, en fait j'avais copié mes transitions de Pong Lips Sealed

Note aussi que les transitions servent à se mettre en blanc/noir (fadeToWhite) au début d'une nouvelle fonction d'affichage (si tu passes du menu au jeu par exemple) puis tu charges le tout et tu initialises les variables, ensuite tu te remets en normal (fadeFromWhite). Wink
Journalisée

fdavid664 Hors ligne
Newbie
*
Messages: 9


Voir le profil
« Réponse #7 : 04 Avril 2008, 22:49:29 »

Le problème de la transition de Stravingo est que l'image devient blanche puis redevient normal alors que je voudrais que la transition démarre en bas et qu'on la voit monter jusqu'en haut de l'image.
Journalisée
unkwar Hors ligne
Hero Member
*****
Messages: 767


Voir le profil
Oeil de L1NX

« Réponse #8 : 04 Avril 2008, 22:53:20 »

Un exemple entièrement copié collé des exemples palib  whistle:
Code
(c):
// This is basicly an example using the brightness to fade in/out...
 
 
 
// Includes
#include <PA9.h>       // Include for PA_Lib
 
#include "test.h"
s16 level = 0;
s16 fade;
u8 black = 0;
 
void HBL_function(void){
  s16 vcount = PA_GetVcount();
  vcount++;
  if(vcount > 192) vcount = 0; // Get correct vcount
  fade = (vcount+(level*4)-192)>>2;  
  if(fade < 0) fade = 0;
  if(fade > 31) fade = 31;
 
  if(black) PA_SetBrightness(0, fade-31);
  else PA_SetBrightness(0, 31-fade);
}  
 
 
// Function: main()
int main(int argc, char ** argv)
{
PA_Init();    // Initializes PA_Lib
PA_InitVBL(); // Initializes a standard VBL
 
PA_InitText(1, 0);
 
PA_SetBrightness(0, 31);
 
PA_Init8bitBg(0, 3);
PA_LoadGif(0, (void*)test);
 
 
 
irqSet(IRQ_HBLANK, HBL_function);
irqEnable(IRQ_HBLANK);
 
u8 i;
level = 0;
while(1){
  PA_OutputText(1, 8, 10, "Fading in, white  ");
for(level = 0; level < 80; level++) PA_WaitForVBL();
for(i = 0; i < 60; i++) PA_WaitForVBL(); // Wait 1 second
 
black = 1;
PA_OutputText(1, 8, 10, "Fading out, black ");
for(level = 80; level > 0; level--) PA_WaitForVBL();
for(i = 0; i < 60; i++) PA_WaitForVBL(); // Wait 1 second
 
  PA_OutputText(1, 8, 10, "Fading in, black  ");
for(level = 0; level < 80; level++) PA_WaitForVBL();
for(i = 0; i < 60; i++) PA_WaitForVBL(); // Wait 1 second
 
black = 0;
PA_OutputText(1, 8, 10, "Fading out, white ");
for(level = 80; level > 0; level--) PA_WaitForVBL();
for(i = 0; i < 60; i++) PA_WaitForVBL(); // Wait 1 second
}
 
return 0;
} // End of main()
 
Journalisée

fdavid664 Hors ligne
Newbie
*
Messages: 9


Voir le profil
« Réponse #9 : 05 Avril 2008, 10:10:18 »

Je sais mais il faut inclure test.h qui est introuvable.
Journalisée
Copper Hors ligne
Mega Member
***
Messages: 1296


Voir le profil
« Réponse #10 : 05 Avril 2008, 11:11:21 »

test.h c'est juste pour inclure l'image de test au format GIF

Tu n'en as pas besoin si tu utilise l'effet sur ta propre image...

Il faudra également supprimer la ligne :

PA_LoadGif(0, (void*)test);
Journalisée
fdavid664 Hors ligne
Newbie
*
Messages: 9


Voir le profil
« Réponse #11 : 05 Avril 2008, 12:35:26 »

C'est parfait il manque juste quelque chose, comment je fais pour l'avoir sur l'écran supérieur ?

Merci
Journalisée
Minishlink Hors ligne
Mega Member
***
Messages: 1439


Voir le profil WWW
Quand on veut, on peut !

« Réponse #12 : 05 Avril 2008, 12:39:08 »

Tu mets à tous les PA_SetBrightness() le premier argument à 1 Smiley

Exemple:
Code
(c):
PA_SetBrightness(1, 31);
au lieu de
Code
(c):
PA_SetBrightness(0, 31);
Journalisée

fdavid664 Hors ligne
Newbie
*
Messages: 9


Voir le profil
« Réponse #13 : 05 Avril 2008, 18:21:32 »

Je sais que je suis nul donc voiçi mon code qui fait la transition que sur l'écran tactile. Où est la faute ?

Code
(c):
// This time around, we'll scroll a background...
 
// Includes
#include <PA9.h>       // Include for PA_Lib
 
 
 
// Converted using PAGfxConverter
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"
 
 
s16 level = 0;
s16 fade;
u8 black = 0;
 
void HBL_function1(void){
  s16 vcount = PA_GetVcount();
  vcount++;
  if(vcount > 192) vcount = 0; // Get correct vcount
  fade = (vcount+(level*4)-192)>>2;  
  if(fade < 0) fade = 0;
  if(fade > 31) fade = 31;
 
  if(black) PA_SetBrightness(0, fade-31);
  else PA_SetBrightness(0, 31-fade);
}
 
void HBL_function2(void){
  s16 vcount = PA_GetVcount();
  vcount++;
  if(vcount > 192) vcount = 0; // Get correct vcount
  fade = (vcount+(level*4)-192)>>2;  
  if(fade < 0) fade = 0;
  if(fade > 31) fade = 31;
 
  if(black) PA_SetBrightness(1, fade-31);
  else PA_SetBrightness(1, 31-fade);
}
 
 
 
// Function: main()
int main(int argc, char ** argv)
{
PA_Init();    // Initializes PA_Lib
PA_InitVBL(); // Initializes a standard VBL
 
// Load the dual background...
PA_EasyBgLoad(0,3, //bg number
generique1); //background name
 
PA_EasyBgLoad(1,3, //bg number
generique2); //background name
 
 
 
u8 i;
level = 0;
while(1){
 
irqSet(IRQ_HBLANK, HBL_function1);
irqEnable(IRQ_HBLANK);
 
for(level = 0; level < 80; level++) PA_WaitForVBL();
for(i = 0; i < 60; i++) PA_WaitForVBL(); // Wait 1 second
 
for(level = 0; level < 80; level++) PA_WaitForVBL();
for(i = 0; i < 60; i++) PA_WaitForVBL(); // Wait 1 second
 
irqSet(IRQ_HBLANK, HBL_function2);
irqEnable(IRQ_HBLANK);
 
for(level = 0; level < 80; level++) PA_WaitForVBL();
for(i = 0; i < 60; i++) PA_WaitForVBL(); // Wait 1 second
 
for(level = 0; level < 80; level++) PA_WaitForVBL();
for(i = 0; i < 60; i++) PA_WaitForVBL(); // Wait 1 second
 
}
return 0;
} // End of main()
 
Journalisée
Minishlink Hors ligne
Mega Member
***
Messages: 1439


Voir le profil WWW
Quand on veut, on peut !

« Réponse #14 : 05 Avril 2008, 18:39:23 »

Tu n'as pas remplacé :
Code
(c):
if(black) PA_SetBrightness(1, fade-31);
  else PA_SetBrightness(1, 31-fade);

en
Code
(c):
if(black) PA_SetBrightness(0, fade-31);
  else PA_SetBrightness(0, 31-fade);

Smiley
Journalisée

Pages: [1] 2   Haut de page
Imprimer

Aller à: