diff --git a/src/miscfileformats.c b/src/miscfileformats.c index f3cb3193..0437b341 100644 --- a/src/miscfileformats.c +++ b/src/miscfileformats.c @@ -3223,6 +3223,42 @@ void Load_CM5(T_IO_Context* context) int mod=0; short line = 0; int tx, ty; + static const T_Components CPC_Hw_Palette[] = { + {0x6E, 0x7D, 0x6B}, // 0x40 + {0x6E, 0x7B, 0x6B}, // 0x41 + {0, 0xF3, 0x6B}, + {0xF3, 0xF3, 0x6D}, + {0, 2, 0x6B}, + {0xF0, 2, 0x68}, + {0, 0x78, 0x68}, + {0xF3, 0x7D, 0x6B}, + + {0xF3, 0x02, 0x68}, // 0x48 + {0xF3, 0xF3, 0x6B}, + {0xF3, 0xF3, 0xD}, + {255, 0xF3, 0xF9}, + {0xF3, 5, 6}, + {0xF3, 2, 0xF4}, + {0xF3, 0x7D, 0xD}, + {0xFA, 0x80, 0xF9}, + + {0x00, 0x02, 0x68}, // 0x50 + {0x02, 0xF3, 0x6B}, + {2, 0xF0, 1}, + {0xF, 0xF3, 0xF2}, + {0, 2, 1}, + {0x0C, 2, 0xF4}, + {2, 0x78, 1}, + {0xC, 0x7B, 0xF4}, + {0x69, 2, 0x68}, // 0x58 + {0x71, 0xF3, 0x6B}, + {0x71, 0xF5, 4}, + {0x71, 0xF3, 0xF4}, + {0x6C, 2, 1}, + {0x6C, 2, 0xF2}, + {0x6E, 0x7B, 1}, + {0x6E, 0x7B, 0xF6} + }; // for preview : byte ink0; byte ink1[256]; @@ -3241,45 +3277,7 @@ void Load_CM5(T_IO_Context* context) memset(context->Palette,0,sizeof(T_Palette)); // Setup the palette (amstrad hardware palette) - context->Palette[0x40].R = 0x6E; context->Palette[0x40].G = 0x7D; context->Palette[0x40].B = 0x6B; - - context->Palette[0x41].R = 0x6E; context->Palette[0x41].G = 0x7B; context->Palette[0x41].B = 0x6B; - - context->Palette[0x42].R = 0; context->Palette[0x42].G = 0xF3; context->Palette[0x42].B = 0x6B; - context->Palette[0x43].R = 0xF3; context->Palette[0x43].G = 0xF3; context->Palette[0x43].B = 0x6D; - context->Palette[0x44].R = 0; context->Palette[0x44].G = 2; context->Palette[0x44].B = 0x6B; - context->Palette[0x45].R = 0xF0; context->Palette[0x45].G = 2; context->Palette[0x45].B = 0x68; - context->Palette[0x46].R = 0; context->Palette[0x46].G = 0x78; context->Palette[0x46].B = 0x68; - context->Palette[0x47].R = 0xF3; context->Palette[0x47].G = 0x7D; context->Palette[0x47].B = 0x6B; - - context->Palette[0x48].R = 0xF3; context->Palette[0x48].G = 0x02; context->Palette[0x48].B = 0x68; - context->Palette[0x49].R = 0xF3; context->Palette[0x49].G = 0xF3; context->Palette[0x49].B = 0x6B; - - context->Palette[0x4A].R = 0xF3; context->Palette[0x4A].G = 0xF3; context->Palette[0x4A].B = 0xD; - context->Palette[0x4B].R = 255; context->Palette[0x4B].G = 0xF3; context->Palette[0x4B].B = 0xF9; - context->Palette[0x4C].R = 0xF3; context->Palette[0x4C].G = 5; context->Palette[0x4C].B = 6; - context->Palette[0x4D].R = 0xF3; context->Palette[0x4D].G = 2; context->Palette[0x4D].B = 0xF4; - context->Palette[0x4E].R = 0xF3; context->Palette[0x4E].G = 0x7D; context->Palette[0x4E].B = 0xD; - context->Palette[0x4F].R = 0xFA; context->Palette[0x4F].G = 0x80; context->Palette[0x4F].B = 0xF9; - - context->Palette[0x50].R = 0x00; context->Palette[0x50].G = 0x02; context->Palette[0x50].B = 0x68; - context->Palette[0x51].R = 0x02; context->Palette[0x51].G = 0xF3; context->Palette[0x51].B = 0x6B; - - context->Palette[0x52].R = 2; context->Palette[0x52].G = 0xF0; context->Palette[0x52].B = 1; - context->Palette[0x53].R = 0xF; context->Palette[0x53].G = 0xF3; context->Palette[0x53].B = 0xF2; - context->Palette[0x54].R = 0; context->Palette[0x54].G = 2; context->Palette[0x54].B = 1; - context->Palette[0x55].R = 0x0C; context->Palette[0x55].G = 2; context->Palette[0x55].B = 0xF4; - context->Palette[0x56].R = 2; context->Palette[0x56].G = 0x78; context->Palette[0x56].B = 1; - context->Palette[0x57].R = 0xC; context->Palette[0x57].G = 0x7B; context->Palette[0x57].B = 0xF4; - context->Palette[0x58].R = 0x69; context->Palette[0x58].G = 2; context->Palette[0x58].B = 0x68; - context->Palette[0x59].R = 0x71; context->Palette[0x59].G = 0xF3; context->Palette[0x59].B = 0x6B; - context->Palette[0x5A].R = 0x71; context->Palette[0x5A].G = 0xF5; context->Palette[0x5A].B = 4; - context->Palette[0x5B].R = 0x71; context->Palette[0x5B].G = 0xF3; context->Palette[0x5B].B = 0xF4; - context->Palette[0x5C].R = 0x6C; context->Palette[0x5C].G = 2; context->Palette[0x5C].B = 1; - context->Palette[0x5D].R = 0x6C; context->Palette[0x5D].G = 2; context->Palette[0x5D].B = 0xF2; - context->Palette[0x5E].R = 0x6E; context->Palette[0x5E].G = 0x7B; context->Palette[0x5E].B = 1; - context->Palette[0x5F].R = 0x6E; context->Palette[0x5F].G = 0x7B; context->Palette[0x5F].B = 0xF6; - + memcpy(context->Palette + 0x40, CPC_Hw_Palette, sizeof(CPC_Hw_Palette)); if (!Read_byte(file, &ink0)) File_error = 2;