NEVERHOOD: Fix palette fading

The palette didn't fade all the way to white when using the
shrinking machine, which caused visible glitches. I've verified
against a YouTube "Let's Play" that in the original it did fade
all the way. Whether or not it did it in this exact way I do not
know, but... close enough.
This commit is contained in:
Torbjörn Andersson 2014-01-06 19:34:07 +01:00
parent 62246364c3
commit cd2e204d99
2 changed files with 11 additions and 3 deletions

View File

@ -119,7 +119,7 @@ void Palette::startFadeToBlack(int counter) {
_fadeToG = 0;
_fadeToB = 0;
_palCounter = counter;
_fadeStep = 255 / counter;
_fadeStep = calculateFadeStep(counter);
_status = 1;
}
@ -131,7 +131,7 @@ void Palette::startFadeToWhite(int counter) {
_fadeToG = 255;
_fadeToB = 255;
_palCounter = counter;
_fadeStep = 255 / counter;
_fadeStep = calculateFadeStep(counter);
_status = 1;
}
@ -140,7 +140,7 @@ void Palette::startFadeToPalette(int counter) {
if (counter == 0)
counter = 1;
_palCounter = counter;
_fadeStep = 255 / counter;
_fadeStep = calculateFadeStep(counter);
_status = 2;
}
@ -203,4 +203,11 @@ void Palette::fadeColor(byte *rgb, byte toR, byte toG, byte toB) {
#undef FADE
}
int Palette::calculateFadeStep(int counter) {
int fadeStep = 255 / counter;
if (255 % counter)
fadeStep++;
return fadeStep;
}
} // End of namespace Neverhood

View File

@ -61,6 +61,7 @@ protected:
int _fadeStep;
void update();
void fadeColor(byte *rgb, byte toR, byte toG, byte toB);
int calculateFadeStep(int counter);
};
} // End of namespace Neverhood