Load_IFF(): parse DYCP and CTBL chunks found in Dynamic Hires files

This commit is contained in:
Thomas Bernard 2018-02-22 12:00:53 +01:00
parent aca95e4ca0
commit 2338e99d47

View File

@ -1488,6 +1488,12 @@ void Load_IFF(T_IO_Context * context)
fseek(IFF_file, (section_size+1)&~1, SEEK_CUR); fseek(IFF_file, (section_size+1)&~1, SEEK_CUR);
} }
} }
else if (memcmp(section, "DYCP", 4) == 0) // DYnamic Color Palette
{
// All files I've seen have 4 words (8bytes) :
// { 0, 1, 16, 0} 16 is probably the number of colors in each palette
fseek(IFF_file, (section_size+1)&~1, SEEK_CUR); // Skip it
}
else if (memcmp(section, "SHAM", 4) == 0) // Sliced HAM else if (memcmp(section, "SHAM", 4) == 0) // Sliced HAM
{ {
word version; word version;
@ -1520,7 +1526,7 @@ void Load_IFF(T_IO_Context * context)
fseek(IFF_file, (section_size+1)&~1, SEEK_CUR); fseek(IFF_file, (section_size+1)&~1, SEEK_CUR);
} }
} }
else if (memcmp(section, "BEAM", 4) == 0) else if (memcmp(section, "BEAM", 4) == 0 || memcmp(section, "CTBL", 4) == 0)
{ {
// One palette per line is stored // One palette per line is stored
if (Image_HAM >= 6) if (Image_HAM >= 6)
@ -1595,7 +1601,7 @@ void Load_IFF(T_IO_Context * context)
bpp = 12; bpp = 12;
} }
else else
Warning("inconsistant size of BEAM chunk, ignoring"); Warning("inconsistant size of BEAM/CTLB chunk, ignoring");
fseek(IFF_file, (section_size+1)&~1, SEEK_CUR); fseek(IFF_file, (section_size+1)&~1, SEEK_CUR);
} }
else if (memcmp(section, "PCHG", 4) == 0) // Palette CHanGes else if (memcmp(section, "PCHG", 4) == 0) // Palette CHanGes