1
0
mirror of https://github.com/blawar/GLideN64.git synced 2024-07-02 09:03:37 +00:00

Rewrite _calculateCRC():

- fixed bytes per line calculation
- fixed CRC for 32bit textures.
This commit is contained in:
Sergey Lipskiy 2014-12-16 16:30:43 +06:00
parent 40d99fd9ca
commit 232a2c0b84

View File

@ -1070,26 +1070,24 @@ struct TextureParams
static
u32 _calculateCRC(u32 t, const TextureParams & _params)
{
u32 crc;
u32 y, bpl, lineBytes, line;
u64 *src;
src = (u64*)&TMEM[gSP.textureTile[t]->tmem];
bpl = _params.width << gSP.textureTile[t]->size >> 1;
lineBytes = gSP.textureTile[t]->line << 3;
line = gSP.textureTile[t]->line;
if (gSP.textureTile[t]->size == G_IM_SIZ_32b)
line <<= 1;
crc = 0xFFFFFFFF;
for (y = 0; y < _params.height; y++)
{
crc = CRC_Calculate( crc, src, bpl );
const u32 line = gSP.textureTile[t]->line;
const u32 lineBytes = line << 3;
const u64 *src = (u64*)&TMEM[gSP.textureTile[t]->tmem];
u32 crc = 0xFFFFFFFF;
for (u32 y = 0; y < _params.height; ++y) {
crc = CRC_Calculate(crc, src, lineBytes);
src += line;
}
if (gSP.textureTile[t]->size == G_IM_SIZ_32b) {
src = (u64*)&TMEM[gSP.textureTile[t]->tmem + 256];
for (u32 y = 0; y < _params.height; ++y) {
crc = CRC_Calculate(crc, src, lineBytes);
src += line;
}
}
if (gDP.otherMode.textureLUT != G_TT_NONE || gSP.textureTile[t]->format == G_IM_FMT_CI) {
if (gSP.textureTile[t]->size == G_IM_SIZ_4b)
crc = CRC_Calculate( crc, &gDP.paletteCRC16[gSP.textureTile[t]->palette], 4 );