/* Declaración de funciones */
void fadeIn(u8 screen, u8 segundos); //Max 255 segundos
void fadeOut(u8 screen, u8 segundos); //Max 255 segundos
/* Función para hacer un fadein, pone la pantalla en negro y poco a poco pasa a brillo normal.
** Le paso el número de la pantalla y en cuántos segundos quiero que haga el fade
*/
void fadeIn(u8 screen, u8 segundos) {
u8 cc = 0;
s8 brillo = -32;
u8 paso = (segundos*60)/30;
for (cc=0; cc<(segundos*60); cc++) {
if ((cc % paso)==0) {
brillo++; //Aumento el brillo
PA_SetBrightness(screen,brillo);
}
PA_WaitForVBL();
}
PA_SetBrightness(screen,0); //restauro el brillo normal
PA_WaitForVBL();
}
/* Función opuesta a la anterior, pasa de la pantalla normal a una pantalla en negro poco a poco */
void fadeOut(u8 screen, u8 segundos) {
u8 cc = 0;
s8 brillo = 0;
u8 paso = (segundos*60)/30;
for (cc=0; cc<(segundos*60); cc++) {
if ((cc % paso)==0) {
brillo--; //Disminuyo el brillo
PA_SetBrightness(screen,brillo);
}
PA_WaitForVBL();
}
PA_SetBrightness(screen,-32); //restauro el brillo normal
PA_WaitForVBL();
}
/* Declaración de la función */
void esperar(u8 segundos); //Max 255 segundos
/* Función que hace una pausa en el juego */
void esperar(u8 segundos) {
u16 cuenta = 1;
while (cuenta<(segundos*60)) { cuenta++; PA_WaitForVBL();}
}
/* Función para reemplazar todas las apariciones del caracter 'origen' por 'sustituto' en la cadena src */
char* replaceChar(char const* src, char origen, char sustituto) {
char c;
char *output = (char *) malloc(1000);
do {
c = *src++;
if (c!=origen) *output++ = c;
else *output++ = sustituto;
} while(c);
return output;
}
u8 paso = (segundos*60)/30;
u8 paso = segundos*2;
void apaga(s8 pantalla)
{
s8 i;
for(i=0; i > -32; i--)
{
if(pantalla == 2)
{
PA_SetBrightness(1,i);
PA_SetBrightness(0,i);
}
else
PA_SetBrightness(pantalla, i);
PA_WaitForVBL();
}
}
void enciende(s8 pantalla)
{
s8 i;
for(i=-31; i <= 0; i++)
{
if(pantalla == 2)
{
PA_SetBrightness(1,i);
PA_SetBrightness(0,i);
}
else
PA_SetBrightness(pantalla, i);
PA_WaitForVBL();
}
}
Alber_h escribió:Gracias por tu aporte, seguro que vienen bien a mucha gente .
Analizando un poco el código del fadein/fadeout veo que la comprobación del resto de "cc" entre "paso" lo que hace es disminuir la velocidad a la que el brillo es cambiado, está bien pensado, pero no crees que ganarías rendimiento si la cantidad de segundos la multiplicas por 60 en vez de hacerlo en cada comprobación? (No se si me he explicado bien)
Quiero decir, asignar como valor a la variable: segundos *= 60;
y ya en el for lo compruebas directamente, sin tener que hacer la operación cada vez ( ...; cc < segundos;... )
Quizás no se note mucho pero ganar seguro que gana .
Por otra parte, decirte que esto:sería lo mismo que éstou8 paso = (segundos*60)/30;
con lo cual te ahorras esas 2 operaciones "grandes" (a la DS eso... buf) a cambio de esa mas simple.u8 paso = segundos*2;
Un consejo: Mejor que escribas las funciones en inglés, te va a salir mucho más profesional
alexpowerup escribió:Un consejo: Mejor que escribas las funciones en inglés, te va a salir mucho más profesional
Alber_h escribió:alexpowerup escribió:Un consejo: Mejor que escribas las funciones en inglés, te va a salir mucho más profesional
Así quedaría mucho más "internacional", pero no creo que aporte profesionalidad al código .
Además para cosas así que vas a ver tu y 3 más, que más dá.
Salu2!
alexpowerup escribió:Pues yo no sufro, disfruto