|
|
|
@ -72,31 +72,20 @@ static int _compact_cache_counter;
|
|
|
|
|
|
|
|
|
|
static void CompactSpriteCache();
|
|
|
|
|
|
|
|
|
|
static bool ReadSpriteHeaderSkipData()
|
|
|
|
|
/**
|
|
|
|
|
* Skip the given amount of sprite graphics data.
|
|
|
|
|
* @param type the type of sprite (compressed etc)
|
|
|
|
|
* @param num the amount of sprites to skip
|
|
|
|
|
*/
|
|
|
|
|
void SkipSpriteData(byte type, uint16 num)
|
|
|
|
|
{
|
|
|
|
|
uint16 num = FioReadWord();
|
|
|
|
|
byte type;
|
|
|
|
|
|
|
|
|
|
if (num == 0) return false;
|
|
|
|
|
|
|
|
|
|
type = FioReadByte();
|
|
|
|
|
if (type == 0xFF) {
|
|
|
|
|
FioSkipBytes(num);
|
|
|
|
|
/* Some NewGRF files have "empty" pseudo-sprites which are 1
|
|
|
|
|
* byte long. Catch these so the sprites won't be displayed. */
|
|
|
|
|
return num != 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
FioSkipBytes(7);
|
|
|
|
|
num -= 8;
|
|
|
|
|
if (num == 0) return true;
|
|
|
|
|
|
|
|
|
|
if (type & 2) {
|
|
|
|
|
FioSkipBytes(num);
|
|
|
|
|
} else {
|
|
|
|
|
while (num > 0) {
|
|
|
|
|
int8 i = FioReadByte();
|
|
|
|
|
if (i >= 0) {
|
|
|
|
|
i = (i == 0) ? 0x80 : i;
|
|
|
|
|
num -= i;
|
|
|
|
|
FioSkipBytes(i);
|
|
|
|
|
} else {
|
|
|
|
@ -106,6 +95,29 @@ static bool ReadSpriteHeaderSkipData()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Read the sprite header data and then skip the real payload.
|
|
|
|
|
* @return true if the sprite is a pseudo sprite.
|
|
|
|
|
*/
|
|
|
|
|
static bool ReadSpriteHeaderSkipData()
|
|
|
|
|
{
|
|
|
|
|
uint16 num = FioReadWord();
|
|
|
|
|
byte type;
|
|
|
|
|
|
|
|
|
|
if (num == 0) return false;
|
|
|
|
|
|
|
|
|
|
type = FioReadByte();
|
|
|
|
|
if (type == 0xFF) {
|
|
|
|
|
FioSkipBytes(num);
|
|
|
|
|
/* Some NewGRF files have "empty" pseudo-sprites which are 1
|
|
|
|
|
* byte long. Catch these so the sprites won't be displayed. */
|
|
|
|
|
return num != 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
FioSkipBytes(7);
|
|
|
|
|
SkipSpriteData(type, num - 8);
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|