#25906 - pio_troland@wp.pl - Tue Aug 31, 2004 1:45 pm
How to change a backgroud?
BG1 --> PRESS START --> FLUENT EFFECT OF CHANGE TO --> BG2
BG1 --> PRESS START --> FLUENT EFFECT OF CHANGE TO --> BG2
Code: |
// Your palette memory location u16* paletteMem = (u16*)0x5000000; // some predefined colors #define WHITE 0x7FFF #define BLACK 0x0000 #define RED 0x395A // some macros to pull out specific color bits #define RGB(r,g,b) ((r)+((g)<<5)+((b)<<10)) #define REDVALUE(c) (c & 31) #define GREENVALUE(c) ((c>>5) & 31) #define BLUEVALUE(c) (c>>10) void FadeIntoColor(u16 targetColor,u16* bmpPalette,int fadeSteps) { int readX, step, red,green,blue; u16 sourceColor; for (step=0;step<=fadeSteps ;step++ ){ WaitForVblank; for(readX = 0; readX < 256; readX++) { sourceColor = bmpPalette[readX]; red = ((REDVALUE(sourceColor) * (fadeSteps-step)) + (REDVALUE(targetColor) * step)) /fadeSteps; green = ((GREENVALUE(sourceColor) * (fadeSteps-step)) + (GREENVALUE(targetColor) * step)) /fadeSteps; blue = ((BLUEVALUE(sourceColor) * (fadeSteps-step)) + (BLUEVALUE(targetColor) * step)) /fadeSteps; paletteMem[readX] = RGB( red , green , blue ); } } } void FadeFromColor(u16 targetColor,u16* bmpPalette,int fadeSteps) { int readX, step, red,green,blue; u16 sourceColor; for (step=0;step<=fadeSteps ;step++ ){ WaitForVblank(); for(readX = 0; readX < 256; readX++) { sourceColor = bmpPalette[readX]; red = ((REDVALUE(targetColor) * (fadeSteps-step)) + (REDVALUE(sourceColor) * step)) /fadeSteps; green = ((GREENVALUE(targetColor) * (fadeSteps-step)) + (GREENVALUE(sourceColor) * step)) /fadeSteps; blue = ((BLUEVALUE(targetColor) * (fadeSteps-step)) + (BLUEVALUE(sourceColor) * step)) /fadeSteps; paletteMem[readX] = RGB( red , green , blue ); } } } // Change palette to black with 15 steps of fading FadeIntoColor(BLACK,myPalettePointer,15); // here's where you'd switch around your backgrounds // Change palette back with 15 steps of fading FadeFromColor(BLACK,myPalettePointer,15); |