Set default CPC palette

This commit is contained in:
Thomas Bernard 2018-11-22 13:45:35 +01:00
parent ab5d26897f
commit 119a5afbf6
No known key found for this signature in database
GPG Key ID: 0FF11B67A5C0863C
3 changed files with 64 additions and 39 deletions

View File

@ -309,12 +309,14 @@ void Button_Constraint_menu(void)
ZX_Spectrum_set_palette(Main.palette); ZX_Spectrum_set_palette(Main.palette);
break; break;
//case IMAGE_MODE_THOMSON: //case IMAGE_MODE_THOMSON:
// ask TO7/70, MO5 or MO6 / TO8/TO9 /// @todo set palette for Thomson.
/// ask TO7/70, MO5 or MO6 / TO8/TO9
case IMAGE_MODE_EGX: case IMAGE_MODE_EGX:
case IMAGE_MODE_EGX2: case IMAGE_MODE_EGX2:
case IMAGE_MODE_MODE5: case IMAGE_MODE_MODE5:
case IMAGE_MODE_RASTER: case IMAGE_MODE_RASTER:
// TODO : CPC CPC_set_HW_palette(Main.palette + 0x40);
CPC_set_default_BASIC_palette(Main.palette);
break; break;
case IMAGE_MODE_C64HIRES: case IMAGE_MODE_C64HIRES:
case IMAGE_MODE_C64MULTI: case IMAGE_MODE_C64MULTI:

View File

@ -462,48 +462,64 @@ void ZX_Spectrum_set_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}
};
void CPC_set_HW_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)); memcpy(palette, CPC_Hw_Palette, sizeof(CPC_Hw_Palette));
} }
void CPC_set_default_BASIC_palette(T_Components * palette)
{
static const byte basic_colors[] = {
0x44/*0x50*/, 0x4a, 0x53, 0x4c,
0x4b, 0x54, 0x55, 0x4d,
0x46, 0x5e, 0x5f, 0x47,
0x52, 0x59, 0x4a, 0x47
};
unsigned int i;
for (i = 0; i < sizeof(basic_colors) / sizeof(byte); i++)
memcpy(palette + i,
CPC_Hw_Palette + basic_colors[i] - 0x40,
sizeof(T_Components));
}
int CPC_check_AMSDOS(FILE * file, word * loading_address, unsigned long * file_length) int CPC_check_AMSDOS(FILE * file, word * loading_address, unsigned long * file_length)
{ {
int i; int i;

View File

@ -73,6 +73,13 @@ void ZX_Spectrum_set_palette(T_Components * palette);
*/ */
void CPC_set_HW_palette(T_Components * palette); void CPC_set_HW_palette(T_Components * palette);
/**
* Set 16 color default Amstrad CPC BASIC palette
*
* @note INK 14 and 15 are blinking on the real hardware.
*/
void CPC_set_default_BASIC_palette(T_Components * palette);
/** /**
* Check AMSDOS header * Check AMSDOS header
* *