diff --git a/src/miscfileformats.c b/src/miscfileformats.c index 1a1fad7e..1c42cce8 100644 --- a/src/miscfileformats.c +++ b/src/miscfileformats.c @@ -3829,42 +3829,6 @@ 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]; @@ -3883,7 +3847,7 @@ void Load_CM5(T_IO_Context* context) memset(context->Palette,0,sizeof(T_Palette)); // Setup the palette (amstrad hardware palette) - memcpy(context->Palette + 0x40, CPC_Hw_Palette, sizeof(CPC_Hw_Palette)); + CPC_set_HW_palette(context->Palette + 0x40); if (!Read_byte(file, &ink0)) File_error = 2; diff --git a/src/oldies.c b/src/oldies.c index 38c4b921..0c684e32 100644 --- a/src/oldies.c +++ b/src/oldies.c @@ -462,6 +462,48 @@ void ZX_Spectrum_set_palette(T_Components * palette) } } +void CPC_set_HW_palette(T_Components * palette) +{ + 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} + }; + + memcpy(palette, CPC_Hw_Palette, sizeof(CPC_Hw_Palette)); +} + int DECB_Check_binary_file(FILE * f) { byte code; diff --git a/src/oldies.h b/src/oldies.h index 462c24ea..5638725a 100644 --- a/src/oldies.h +++ b/src/oldies.h @@ -60,6 +60,21 @@ void ZX_Spectrum_set_palette(T_Components * palette); /** @}*/ +/** @defgroup cpc Amstrad CPC + * + * @{ + */ + +/** + * Set 32 color HW Amstrad CPC palette + * + * The palette is in fact 27 colors, with some duplicates. + * http://www.cpcwiki.eu/index.php/CPC_Palette + */ +void CPC_set_HW_palette(T_Components * palette); + +/** @}*/ + /** @defgroup decb DECB binary format * * The DECB binary format was used on 6809 based machines :