From 792c329ba19c898811d8b964ffb2d637bb98cd20 Mon Sep 17 00:00:00 2001 From: Thomas Bernard Date: Wed, 21 Nov 2018 12:01:32 +0100 Subject: [PATCH] Load_C64() support for Micro Illustrator and Run Paint files --- src/loadsave.c | 4 ++-- src/miscfileformats.c | 16 +++++++++++++++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/loadsave.c b/src/loadsave.c index 83a22416..5b021be5 100644 --- a/src/loadsave.c +++ b/src/loadsave.c @@ -89,7 +89,7 @@ void Load_Recoil_Image(T_IO_Context *); const T_Format File_formats[] = { {FORMAT_ALL_IMAGES, "(all)", NULL, NULL, NULL, 0, 0, 0, "", "gif;png;bmp;2bp;pcx;pkm;iff;lbm;ilbm;sham;ham;ham6;ham8;acbm;pic;anim;img;sci;scq;scf;scn;sco;pi1;pc1;cel;neo;" - "c64;p64;a64;pi;rp;aas;art;dd;iph;ipt;hpc;ocp;koa;koala;fli;bml;cdu;prg;pmg;" + "c64;p64;a64;pi;rp;aas;art;dd;iph;ipt;hpc;ocp;koa;koala;fli;bml;cdu;prg;pmg;rpm;" "tga;pnm;xpm;xcf;jpg;jpeg;tif;tiff;ico;ic2;cur;cm5;pph;info;flc;bin;map"}, {FORMAT_ALL_PALETTES, "(pal)", NULL, NULL, NULL, 1, 0, 0, "", "kcf;pal;gpl"}, {FORMAT_ALL_FILES, "(*.*)", NULL, NULL, NULL, 0, 0, 0, "", "*"}, @@ -113,7 +113,7 @@ const T_Format File_formats[] = { {FORMAT_PAL, " pal", Test_PAL, Load_PAL, Save_PAL, 1, 0, 0, "pal", "pal"}, {FORMAT_GPL, " gpl", Test_GPL, Load_GPL, Save_GPL, 1, 0, 0, "gpl", "gpl"}, {FORMAT_C64, " c64", Test_C64, Load_C64, Save_C64, 0, 1, 0, "c64", - "c64;p64;a64;pi;rp;aas;art;dd;iph;ipt;hpc;ocp;koa;koala;fli;bml;cdu;prg;pmg"}, + "c64;p64;a64;pi;rp;aas;art;dd;iph;ipt;hpc;ocp;koa;koala;fli;bml;cdu;prg;pmg;rpm"}, {FORMAT_SCR, " cpc", NULL, NULL, Save_SCR, 0, 0, 0, "cpc", "cpc;scr"}, {FORMAT_CM5, " cm5", Test_CM5, Load_CM5, Save_CM5, 0, 0, 1, "cm5", "cm5"}, {FORMAT_PPH, " pph", Test_PPH, Load_PPH, Save_PPH, 0, 0, 1, "pph", "pph"}, diff --git a/src/miscfileformats.c b/src/miscfileformats.c index fc7e7af3..ba6b60bb 100644 --- a/src/miscfileformats.c +++ b/src/miscfileformats.c @@ -2315,8 +2315,12 @@ void Test_C64(T_IO_Context * context, FILE * file) // $6000 => Koala Painter case 10004: // $4000 => Face Paint (.fpt) + case 10006: + // $6000 => Run Paint (.rpm) case 10018: // $2000 => Advanced Art Studio + case 10022: + // $18DC => Micro Illustrator (uncompressed) case 10050: // $1800 => Picasso64 case 10218: @@ -2795,6 +2799,7 @@ void Load_C64(T_IO_Context * context) case 10003: // multicolor + loadaddr case 10004: // extra byte is border color + case 10006: // Run Paint hasLoadAddr=1; loadFormat=F_multi; bitmap=file_buffer+2; // length: 8000 @@ -2813,6 +2818,14 @@ void Load_C64(T_IO_Context * context) background=file_buffer+9001+2; // only 1 break; + case 10022: // Micro Illustrator (.mil) + hasLoadAddr=1; + loadFormat=F_multi; + screen_ram=file_buffer+20+2; + color_ram=file_buffer+1000+20+2; + bitmap=file_buffer+2*1000+20+2; + break; + case 10049: // unpacked DrazPaint hasLoadAddr=1; loadFormat=F_multi; @@ -2977,7 +2990,8 @@ void Load_C64(T_IO_Context * context) Load_C64_fli(context,bitmap,screen_ram,color_ram,background); break; case F_multi: - Load_C64_multi(context,bitmap,screen_ram,color_ram,*background); + Load_C64_multi(context,bitmap,screen_ram,color_ram, + (background==NULL) ? 0 : *background); break; default: Load_C64_hires(context,bitmap,screen_ram);