Test_SCR() detect iMPdraw pictures
This commit is contained in:
parent
52ae9de584
commit
d97364a439
@ -4367,14 +4367,36 @@ void Load_GPX(T_IO_Context * context)
|
||||
*/
|
||||
void Test_SCR(T_IO_Context * context, FILE * file)
|
||||
{
|
||||
// http://orgams.wikidot.com/le-format-impdraw-v2
|
||||
// http://orgams.wikidot.com/les-fichiers-win-compatibles-ocp-art-studio
|
||||
FILE * pal_file;
|
||||
unsigned long pal_size, file_size;
|
||||
byte mode, color_anim_flag;
|
||||
word loading_address = 0;
|
||||
|
||||
File_error = 1;
|
||||
|
||||
file_size = File_length_file(file);
|
||||
if (file_size > 16384+128)
|
||||
if (CPC_check_AMSDOS(file, &loading_address, &file_size))
|
||||
{
|
||||
if (loading_address == 0x170) // iMPdraw v2
|
||||
{
|
||||
byte buffer[0x90];
|
||||
fseek(file, 128, SEEK_SET); // right after AMSDOS header
|
||||
Read_bytes(file, buffer, 0x90);
|
||||
GFX2_LogHexDump(GFX2_DEBUG, "", buffer, 0, 0x90);
|
||||
File_error = 0;
|
||||
return;
|
||||
}
|
||||
else if ((loading_address == 0x200 || loading_address == 0xc000) && file_size > 16000)
|
||||
{
|
||||
File_error = 0;
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
file_size = File_length_file(file);
|
||||
|
||||
if (file_size > 16384*2)
|
||||
return;
|
||||
|
||||
// requires the PAL file
|
||||
@ -4394,17 +4416,15 @@ void Test_SCR(T_IO_Context * context, FILE * file)
|
||||
*/
|
||||
|
||||
|
||||
pal_size = File_length_file(pal_file);
|
||||
if (pal_size == 239+128)
|
||||
{
|
||||
if (!CPC_check_AMSDOS(pal_file, NULL, NULL))
|
||||
{
|
||||
fclose(pal_file);
|
||||
return;
|
||||
}
|
||||
if (CPC_check_AMSDOS(pal_file, NULL, &pal_size))
|
||||
fseek(pal_file, 128, SEEK_SET); // right after AMSDOS header
|
||||
else
|
||||
{
|
||||
pal_size = File_length_file(pal_file);
|
||||
fseek(pal_file, 0, SEEK_SET);
|
||||
}
|
||||
else if (pal_size != 239)
|
||||
|
||||
if (pal_size != 239)
|
||||
{
|
||||
fclose(pal_file);
|
||||
return;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user