8bits: set Thomson and CPC palettes
Also properly scroll the palette, and select relevant background and foreground colors
This commit is contained in:
parent
8b32b5141a
commit
40bd0fc1c7
@ -43,6 +43,7 @@
|
|||||||
#include "windows.h"
|
#include "windows.h"
|
||||||
#include "tiles.h"
|
#include "tiles.h"
|
||||||
#include "oldies.h"
|
#include "oldies.h"
|
||||||
|
#include "palette.h"
|
||||||
|
|
||||||
//---------- Menu dans lequel on tagge des couleurs (genre Stencil) ----------
|
//---------- Menu dans lequel on tagge des couleurs (genre Stencil) ----------
|
||||||
void Menu_tag_colors(char * window_title, byte * table, byte * mode, byte can_cancel, const char *help_section, word close_shortcut)
|
void Menu_tag_colors(char * window_title, byte * table, byte * mode, byte can_cancel, const char *help_section, word close_shortcut)
|
||||||
@ -399,33 +400,98 @@ void Button_Constraint_menu(void)
|
|||||||
switch (Selected_Constraint_Mode)
|
switch (Selected_Constraint_Mode)
|
||||||
{
|
{
|
||||||
case IMAGE_MODE_ZX:
|
case IMAGE_MODE_ZX:
|
||||||
|
memset(Main.palette, 0, sizeof(T_Palette));
|
||||||
ZX_Spectrum_set_palette(Main.palette);
|
ZX_Spectrum_set_palette(Main.palette);
|
||||||
First_color_in_palette = 0;
|
First_color_in_palette = 0;
|
||||||
|
Fore_color = 7;
|
||||||
|
Back_color = 0;
|
||||||
|
break;
|
||||||
|
case IMAGE_MODE_THOMSON:
|
||||||
|
{
|
||||||
|
static const T_MultipleChoice moto_choices[] = {
|
||||||
|
{ MACHINE_TO7, "TO7 / TO7/70", "16 colors" },
|
||||||
|
{ MACHINE_MO5, "MO5", "16 colors" },
|
||||||
|
{ MACHINE_TO8, "TO9/TO8/TO9+", "4096 colors" },
|
||||||
|
{ MACHINE_MO6, "MO6", "4096 colors" },
|
||||||
|
{ -1, NULL, NULL }
|
||||||
|
};
|
||||||
|
int machine = Dialog_multiple_choice("Select machine", moto_choices, -1);
|
||||||
|
if (machine >= 0)
|
||||||
|
{
|
||||||
|
memset(Main.palette, 0, sizeof(T_Palette));
|
||||||
|
if (machine == MACHINE_MO5 || machine == MACHINE_MO6)
|
||||||
|
MOTO_set_MO5_palette(Main.palette);
|
||||||
|
else
|
||||||
|
MOTO_set_TO7_palette(Main.palette);
|
||||||
|
if (machine == MACHINE_MO6 || machine == MACHINE_TO8)
|
||||||
|
{
|
||||||
|
Set_palette_Gamma(Config.MOTO_gamma);
|
||||||
|
Set_palette_RGB_scale(16);
|
||||||
|
}
|
||||||
|
First_color_in_palette = 0;
|
||||||
|
Fore_color = 7;
|
||||||
|
Back_color = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
//case IMAGE_MODE_THOMSON:
|
|
||||||
/// @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:
|
||||||
|
{
|
||||||
|
static const T_MultipleChoice cpc_choices[] = {
|
||||||
|
{ 1, "CPC", "27 colors" },
|
||||||
|
{ 2, "CPC+", "4096 colors" },
|
||||||
|
{ -1, NULL, NULL }
|
||||||
|
};
|
||||||
|
int machine = Dialog_multiple_choice("Select machine", cpc_choices, -1);
|
||||||
|
if (machine >= 0)
|
||||||
|
{
|
||||||
|
memset(Main.palette, 0, sizeof(T_Palette));
|
||||||
|
CPC_set_default_BASIC_palette(Main.palette);
|
||||||
|
First_color_in_palette = 0;
|
||||||
|
Fore_color = 1;
|
||||||
|
Back_color = 0;
|
||||||
|
if (machine == 2)
|
||||||
|
Set_palette_RGB_scale(16);
|
||||||
|
else
|
||||||
|
Set_palette_RGB_scale(3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
case IMAGE_MODE_MODE5:
|
case IMAGE_MODE_MODE5:
|
||||||
case IMAGE_MODE_RASTER:
|
case IMAGE_MODE_RASTER:
|
||||||
|
memset(Main.palette, 0, sizeof(T_Palette));
|
||||||
|
// setup colors 0,1,2,3 to see something in the thumbnail preview of layer 5
|
||||||
|
Main.palette[1].R = 60;
|
||||||
|
Main.palette[2].B = 60;
|
||||||
|
Main.palette[3].G = 60;
|
||||||
CPC_set_HW_palette(Main.palette + 0x40);
|
CPC_set_HW_palette(Main.palette + 0x40);
|
||||||
CPC_set_default_BASIC_palette(Main.palette);
|
First_color_in_palette = 64;
|
||||||
First_color_in_palette = (Selected_Constraint_Mode >= IMAGE_MODE_MODE5) ? 64 : 0;
|
Fore_color = 0x4b;
|
||||||
|
Back_color = 0x54;
|
||||||
break;
|
break;
|
||||||
case IMAGE_MODE_C64HIRES:
|
case IMAGE_MODE_C64HIRES:
|
||||||
case IMAGE_MODE_C64MULTI:
|
case IMAGE_MODE_C64MULTI:
|
||||||
case IMAGE_MODE_C64FLI:
|
case IMAGE_MODE_C64FLI:
|
||||||
|
memset(Main.palette, 0, sizeof(T_Palette));
|
||||||
C64_set_palette(Main.palette);
|
C64_set_palette(Main.palette);
|
||||||
First_color_in_palette = 0;
|
First_color_in_palette = 0;
|
||||||
|
Fore_color = 1;
|
||||||
|
Back_color = 0;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
for (i = 0; i < 4; i++)
|
||||||
|
memcpy(Main.palette + 252 + i, Favorite_GUI_color(i), sizeof(T_Components));
|
||||||
// Refresh palette
|
// Refresh palette
|
||||||
Set_palette(Main.palette);
|
Set_palette(Main.palette);
|
||||||
//Compute_optimal_menu_colors(Main.palette); // I'm not sure this is needed
|
Compute_optimal_menu_colors(Main.palette);
|
||||||
Display_menu_palette();
|
Remap_screen_after_menu_colors_change();
|
||||||
|
Redraw_layered_image();
|
||||||
|
Check_menu_mode();
|
||||||
|
Display_all_screen();
|
||||||
|
//Display_menu_palette();
|
||||||
|
Display_menu();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user