From 6377df95398d330be523cdd95b22c9ebf91eba42 Mon Sep 17 00:00:00 2001 From: IanSB Date: Tue, 21 Feb 2023 17:01:10 +0000 Subject: [PATCH 01/46] Update profiles --- src/scripts/Profiles/3-12_BIT_BBC/Sharp_MZ-700.txt | 3 +++ src/scripts/Profiles/3-12_BIT_BBC_Analog/Sharp_MZ-700.txt | 3 +++ src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/CGA.txt | 5 +++++ src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Default.txt | 1 + src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/EGA_200.txt | 4 ++++ src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/EGA_350.txt | 3 +++ .../PC_HEGA_AUTO/Hercules_Gfx(640x400 alt).txt | 6 ++++++ .../6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(640x400).txt | 6 ++++++ .../6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(720x274).txt | 6 ++++++ .../6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt).txt | 6 ++++++ .../6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt10).txt | 6 ++++++ .../6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt11).txt | 6 ++++++ .../6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt12).txt | 7 +++++++ .../6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt13).txt | 6 ++++++ .../6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt14).txt | 6 ++++++ .../6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt15).txt | 6 ++++++ .../6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt16).txt | 6 ++++++ .../6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt2).txt | 6 ++++++ .../6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt3).txt | 6 ++++++ .../6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt4).txt | 6 ++++++ .../6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt5).txt | 6 ++++++ .../6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt6).txt | 6 ++++++ .../6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt7).txt | 6 ++++++ .../6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt8).txt | 6 ++++++ .../6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt9).txt | 6 ++++++ .../Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx.txt | 6 ++++++ .../Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Txt.txt | 5 +++++ src/scripts/Profiles/6-12_BIT_RGB/Sharp_MZ-700.txt | 3 +++ src/scripts/Profiles/6-12_BIT_RGB_Analog/Sharp_MZ-700.txt | 3 +++ src/scripts/Profiles/Default.txt | 2 ++ 30 files changed, 153 insertions(+) create mode 100644 src/scripts/Profiles/3-12_BIT_BBC/Sharp_MZ-700.txt create mode 100644 src/scripts/Profiles/3-12_BIT_BBC_Analog/Sharp_MZ-700.txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/CGA.txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Default.txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/EGA_200.txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/EGA_350.txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(640x400 alt).txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(640x400).txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(720x274).txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt).txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt10).txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt11).txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt12).txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt13).txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt14).txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt15).txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt16).txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt2).txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt3).txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt4).txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt5).txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt6).txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt7).txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt8).txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt9).txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx.txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Txt.txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB/Sharp_MZ-700.txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB_Analog/Sharp_MZ-700.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Sharp_MZ-700.txt b/src/scripts/Profiles/3-12_BIT_BBC/Sharp_MZ-700.txt new file mode 100644 index 00000000..b59d219f --- /dev/null +++ b/src/scripts/Profiles/3-12_BIT_BBC/Sharp_MZ-700.txt @@ -0,0 +1,3 @@ +sampling=1,1,1,1,1,1,1,0,1,0,9,0,0,0,0,0,0,0,0,0,155,256,155,256,155,256,256,256 +geometry=124,59,328,208,368,272,1,1,3,1,8867200,568,5500,312,4,0,0 +scanline_level=0 diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sharp_MZ-700.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sharp_MZ-700.txt new file mode 100644 index 00000000..b59d219f --- /dev/null +++ b/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sharp_MZ-700.txt @@ -0,0 +1,3 @@ +sampling=1,1,1,1,1,1,1,0,1,0,9,0,0,0,0,0,0,0,0,0,155,256,155,256,155,256,256,256 +geometry=124,59,328,208,368,272,1,1,3,1,8867200,568,5500,312,4,0,0 +scanline_level=0 diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/CGA.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/CGA.txt new file mode 100644 index 00000000..3d70021a --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/CGA.txt @@ -0,0 +1,5 @@ +sampling=2,2,2,2,2,2,2,0,1,0,6,0,0,0,0,0,0,1,0,0,100,256,100,256,100,256,256,256 +geometry=112,30,640,204,736,234,2,5,1,2,14318181,912,4500,262,3,0,0 +palette=RGBI_(CGA) +palette_control=2 +ntsc_phase=3 diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Default.txt new file mode 100644 index 00000000..d2b4e6bf --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Default.txt @@ -0,0 +1 @@ +auto_switch=1 diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/EGA_200.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/EGA_200.txt new file mode 100644 index 00000000..6044799d --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/EGA_200.txt @@ -0,0 +1,4 @@ +sampling=0,0,0,0,0,0,0,0,1,0,6,0,0,0,0,0,0,1,0,0,100,256,100,256,100,256,256,256 +geometry=112,30,640,204,736,234,2,5,1,1,14171000,904,4500,262,3,0,0 +palette=RrGgBb_(EGA) +scanline_level=0 diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/EGA_350.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/EGA_350.txt new file mode 100644 index 00000000..92061c83 --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/EGA_350.txt @@ -0,0 +1,3 @@ +sampling=4,4,4,4,4,4,4,0,0,0,9,0,0,0,0,0,0,1,0,0,100,256,100,256,100,256,256,256 +geometry=28,0,640,350,672,350,2,3,0,1,16257000,744,4500,365,1,6,0 +palette=RrGgBb_(EGA) diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(640x400 alt).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(640x400 alt).txt new file mode 100644 index 00000000..92b70205 --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(640x400 alt).txt @@ -0,0 +1,6 @@ +sampling=4,4,4,4,4,4,4,0,0,0,1,0,0,0,0,0,0,1,0,0,100,256,100,256,100,256,256,256 +geometry=28,1,696,402,960,540,1,1,0,1,16256396,800,4500,422,1,0,0 +palette=MDA-Hercules +contrast=146 +output_colour=2 +scanline_level=0 diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(640x400).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(640x400).txt new file mode 100644 index 00000000..d377340d --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(640x400).txt @@ -0,0 +1,6 @@ +sampling=4,4,4,4,4,4,4,0,0,0,1,0,0,0,0,0,0,1,0,0,100,256,100,256,100,256,256,256 +geometry=8,6,640,400,960,540,1,1,0,1,16256581,800,4500,416,1,0,0 +palette=MDA-Hercules +contrast=146 +output_colour=2 +scanline_level=0 diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(720x274).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(720x274).txt new file mode 100644 index 00000000..436229a2 --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(720x274).txt @@ -0,0 +1,6 @@ +sampling=4,4,4,4,4,4,4,0,0,0,1,0,0,0,0,0,0,1,0,0,100,256,100,256,100,256,256,256 +geometry=36,38,720,274,960,360,2,3,0,1,16256639,912,4500,280,1,0,0 +palette=MDA-Hercules +contrast=146 +output_colour=2 +scanline_level=0 diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt).txt new file mode 100644 index 00000000..d1767ba0 --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt).txt @@ -0,0 +1,6 @@ +sampling=4,4,4,4,4,4,4,0,0,0,1,0,0,0,0,0,0,1,0,0,100,256,100,256,100,256,256,256 +geometry=32,1,720,350,960,360,2,3,0,1,16256639,864,4500,370,1,0,0 +palette=MDA-Hercules +contrast=146 +output_colour=2 +scanline_level=0 diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt10).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt10).txt new file mode 100644 index 00000000..c110ba73 --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt10).txt @@ -0,0 +1,6 @@ +sampling=4,4,4,4,4,4,4,0,0,0,1,0,0,0,0,0,0,1,0,0,100,256,100,256,100,256,256,256 +geometry=20,6,776,264,960,360,2,3,0,1,16256508,864,4500,287,1,0,0 +palette=MDA-Hercules +contrast=146 +output_colour=2 +scanline_level=0 diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt11).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt11).txt new file mode 100644 index 00000000..e4cd47fd --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt11).txt @@ -0,0 +1,6 @@ +sampling=4,4,4,4,4,4,4,0,0,0,1,0,0,0,0,0,0,1,0,0,100,256,100,256,100,256,256,256 +geometry=32,2,720,350,960,360,2,3,0,1,16256639,864,4500,350,1,0,0 +palette=MDA-Hercules +contrast=146 +output_colour=2 +scanline_level=0 diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt12).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt12).txt new file mode 100644 index 00000000..4ee9cd6b --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt12).txt @@ -0,0 +1,7 @@ +sampling=0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,100,256,100,256,100,256,256,256 +geometry=8,16,720,350,960,360,2,3,0,1,16256639,912,4500,390,1,0,0 +palette=MDA-Hercules +contrast=146 +output_colour=2 +scanline_level=0 +genlock_mode=1 diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt13).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt13).txt new file mode 100644 index 00000000..c37fb31e --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt13).txt @@ -0,0 +1,6 @@ +sampling=4,4,4,4,4,4,4,0,0,0,1,0,0,0,0,0,0,1,0,0,100,256,100,256,100,256,256,256 +geometry=32,1,720,350,960,360,2,3,0,1,16256639,864,4500,379,1,0,0 +palette=MDA-Hercules +contrast=146 +output_colour=2 +scanline_level=0 diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt14).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt14).txt new file mode 100644 index 00000000..d4ccc3df --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt14).txt @@ -0,0 +1,6 @@ +sampling=5,5,5,5,5,5,5,0,0,0,1,0,0,0,0,0,0,1,0,0,100,256,100,256,100,256,256,256 +geometry=240,4,568,200,608,360,1,1,0,1,16256639,864,4500,250,1,0,0 +palette=MDA-Hercules +contrast=146 +output_colour=2 +scanline_level=0 diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt15).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt15).txt new file mode 100644 index 00000000..7b8c5ccf --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt15).txt @@ -0,0 +1,6 @@ +sampling=4,4,4,4,4,4,4,0,0,0,1,0,0,0,0,0,0,1,0,0,100,256,100,256,100,256,256,256 +geometry=88,1,648,200,960,360,1,1,0,1,16256639,864,4500,260,1,0,0 +palette=MDA-Hercules +contrast=146 +output_colour=2 +scanline_level=0 diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt16).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt16).txt new file mode 100644 index 00000000..31382404 --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt16).txt @@ -0,0 +1,6 @@ +sampling=4,4,4,4,4,4,4,0,0,0,1,0,0,0,0,0,0,1,0,0,100,256,100,256,100,256,256,256 +geometry=8,1,720,350,960,360,2,3,0,1,16256639,880,4500,386,1,0,0 +palette=MDA-Hercules +contrast=146 +output_colour=2 +scanline_level=0 diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt2).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt2).txt new file mode 100644 index 00000000..c90beb46 --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt2).txt @@ -0,0 +1,6 @@ +sampling=4,4,4,4,4,4,4,0,0,0,1,0,0,0,0,0,0,1,0,0,100,256,100,256,100,256,256,256 +geometry=28,2,720,350,960,360,2,3,0,1,16256639,864,4500,370,1,0,0 +palette=MDA-Hercules +contrast=146 +output_colour=2 +scanline_level=0 diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt3).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt3).txt new file mode 100644 index 00000000..846c43d8 --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt3).txt @@ -0,0 +1,6 @@ +sampling=4,4,4,4,4,4,4,0,0,0,1,0,0,0,0,0,0,1,0,0,100,256,100,256,100,256,256,256 +geometry=32,1,800,282,960,360,2,3,0,1,16256414,896,4500,287,1,0,0 +palette=MDA-Hercules +contrast=146 +output_colour=2 +scanline_level=0 diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt4).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt4).txt new file mode 100644 index 00000000..cad97168 --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt4).txt @@ -0,0 +1,6 @@ +sampling=4,4,4,4,4,4,4,0,0,0,1,0,0,0,0,0,0,1,0,0,100,256,100,256,100,256,256,256 +geometry=32,2,688,348,960,360,2,3,0,1,16256639,864,4500,368,1,0,0 +palette=MDA-Hercules +contrast=146 +output_colour=2 +scanline_level=0 diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt5).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt5).txt new file mode 100644 index 00000000..b3d64156 --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt5).txt @@ -0,0 +1,6 @@ +sampling=4,4,4,4,4,4,4,0,0,0,1,0,0,0,0,0,0,1,0,0,100,256,100,256,100,256,256,256 +geometry=4,21,728,282,960,360,2,3,0,1,16256639,912,4500,287,1,0,0 +palette=MDA-Hercules +contrast=146 +output_colour=2 +scanline_level=0 diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt6).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt6).txt new file mode 100644 index 00000000..dd446db1 --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt6).txt @@ -0,0 +1,6 @@ +sampling=4,4,4,4,4,4,4,0,0,0,1,0,0,0,0,0,0,1,0,0,100,256,100,256,100,256,256,256 +geometry=32,6,720,350,960,360,2,3,0,1,16256639,896,4500,370,1,0,0 +palette=MDA-Hercules +contrast=146 +output_colour=2 +scanline_level=0 diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt7).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt7).txt new file mode 100644 index 00000000..a613493e --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt7).txt @@ -0,0 +1,6 @@ +sampling=4,4,4,4,4,4,4,0,0,0,1,0,0,0,0,0,0,1,0,0,100,256,100,256,100,256,256,256 +geometry=20,36,760,360,960,362,2,3,0,1,16256639,864,4500,415,1,0,0 +palette=MDA-Hercules +contrast=146 +output_colour=2 +scanline_level=0 diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt8).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt8).txt new file mode 100644 index 00000000..2f3e1ad6 --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt8).txt @@ -0,0 +1,6 @@ +sampling=4,4,4,4,4,4,4,0,0,0,1,0,0,0,0,0,0,1,0,0,100,256,100,256,100,256,256,256 +geometry=20,36,720,350,800,360,2,3,0,1,16256639,912,4500,415,1,0,0 +palette=MDA-Hercules +contrast=146 +output_colour=2 +scanline_level=0 diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt9).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt9).txt new file mode 100644 index 00000000..eb745efb --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt9).txt @@ -0,0 +1,6 @@ +sampling=4,4,4,4,4,4,4,0,0,0,1,0,0,0,0,0,0,1,0,0,100,256,100,256,100,256,256,256 +geometry=0,0,720,350,960,360,2,3,0,1,16256639,880,4500,365,1,0,0 +palette=MDA-Hercules +contrast=146 +output_colour=2 +scanline_level=0 diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx.txt new file mode 100644 index 00000000..172b0833 --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx.txt @@ -0,0 +1,6 @@ +sampling=4,4,4,4,4,4,4,0,0,0,1,0,0,0,0,0,0,1,0,0,100,256,100,256,100,256,256,256 +geometry=28,4,720,350,720,350,2,3,0,1,16256639,864,4500,370,1,0,0 +palette=MDA-Hercules +contrast=146 +output_colour=2 +scanline_level=0 diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Txt.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Txt.txt new file mode 100644 index 00000000..1d752ac4 --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Txt.txt @@ -0,0 +1,5 @@ +sampling=0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,1,0,0,100,256,100,256,100,256,256,256 +geometry=12,3,720,350,720,350,2,3,0,1,16256296,882,4500,370,1,0,0 +palette=MDA-Hercules +output_colour=2 +scanline_level=0 diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Sharp_MZ-700.txt b/src/scripts/Profiles/6-12_BIT_RGB/Sharp_MZ-700.txt new file mode 100644 index 00000000..b59d219f --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB/Sharp_MZ-700.txt @@ -0,0 +1,3 @@ +sampling=1,1,1,1,1,1,1,0,1,0,9,0,0,0,0,0,0,0,0,0,155,256,155,256,155,256,256,256 +geometry=124,59,328,208,368,272,1,1,3,1,8867200,568,5500,312,4,0,0 +scanline_level=0 diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sharp_MZ-700.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sharp_MZ-700.txt new file mode 100644 index 00000000..b59d219f --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sharp_MZ-700.txt @@ -0,0 +1,3 @@ +sampling=1,1,1,1,1,1,1,0,1,0,9,0,0,0,0,0,0,0,0,0,155,256,155,256,155,256,256,256 +geometry=124,59,328,208,368,272,1,1,3,1,8867200,568,5500,312,4,0,0 +scanline_level=0 diff --git a/src/scripts/Profiles/Default.txt b/src/scripts/Profiles/Default.txt index d63e2358..682ea38f 100644 --- a/src/scripts/Profiles/Default.txt +++ b/src/scripts/Profiles/Default.txt @@ -25,6 +25,7 @@ output_colour=0 output_invert=0 scanlines=0 scanline_level=6 +yuv_pixel_double=0 powerup_message=1 crop_border=0 screencap_size=0 @@ -41,6 +42,7 @@ overclock_cpu=0 overclock_core=0 overclock_sdram=0 button_reverse=0 +nula_narrow_mode7=0 debug=0 keymap=13232 actionmap=012453 From 5881d9fef09b2fa0e57f31ff0f7b14d6230cabc4 Mon Sep 17 00:00:00 2001 From: IanSB Date: Wed, 22 Feb 2023 19:13:51 +0000 Subject: [PATCH 02/46] Add generalised menu parameter handling --- src/osd.c | 81 ++++++++++++++++------------------------------- src/osd.h | 67 +++++++++++++++++++++++++++++++++++++++ src/rgb_to_hdmi.c | 21 ++++++++++++ src/rgb_to_hdmi.h | 4 +++ 4 files changed, 119 insertions(+), 54 deletions(-) diff --git a/src/osd.c b/src/osd.c index 4978acb6..a992240f 100644 --- a/src/osd.c +++ b/src/osd.c @@ -337,64 +337,17 @@ static const char *alt_profile_names[] = { "Set 2" }; +static const char *yuv_pixel_double_names[] = { + "Off", + "Odd", + "Even" +}; // ============================================================= // Feature definitions // ============================================================= -enum { - F_AUTOSWITCH, - F_RESOLUTION, - F_REFRESH, - F_HDMI, - F_HDMI_STANDBY, - F_SCALING, - F_PROFILE, - F_SAVED, - F_SUBPROFILE, - F_PALETTE, - F_PALETTECONTROL, - F_NTSCCOLOUR, - F_NTSCPHASE, - F_NTSCTYPE, - F_NTSCFRINGE, - F_TINT, - F_SAT, - F_CONT, - F_BRIGHT, - F_GAMMA, - F_TIMINGSET, - F_M7DEINTERLACE, - F_DEINTERLACE, - F_M7SCALING, - F_NORMALSCALING, - F_FFOSD, - F_STRETCH, - F_COLOUR, - F_INVERT, - F_SCANLINES, - F_SCANLINESINT, - F_OVERSCAN, - F_CAPSCALE, - F_FONTSIZE, - F_BORDER, - F_VSYNC, - F_VLOCKMODE, - F_VLOCKLINE, - F_VLOCKSPEED, - F_VLOCKADJ, -#ifdef MULTI_BUFFER - F_NBUFFERS, -#endif - F_RETURN, - F_DEBUG, - F_DIRECTION, - F_OCLOCK_CPU, - F_OCLOCK_CORE, - F_OCLOCK_SDRAM, - F_RSTATUS, - F_FRONTEND -}; + static param_t features[] = { { F_AUTOSWITCH, "Auto Switch", "auto_switch", 0, NUM_AUTOSWITCHES - 1, 1 }, @@ -447,8 +400,11 @@ static param_t features[] = { { F_OCLOCK_CPU, "Overclock CPU", "overclock_cpu", 0, 200, 1 }, { F_OCLOCK_CORE, "Overclock Core", "overclock_core", 0, 200, 1 }, { F_OCLOCK_SDRAM, "Overclock SDRAM", "overclock_sdram", 0, 200, 1 }, - { F_RSTATUS, "Powerup Message", "powerup_message", 0, 1, 1 }, + + { F_YUV_PIXEL, "YUV Pixel Double", "yuv_pixel_double", 0, NUM_PIXEL_DOUBLE-1, 1 }, + { F_NULA_NARROW, "NuLA Narrow Mode7", "nula_narrow_mode7", 0, 1, 1 }, + { F_FRONTEND, "Interface", "interface", 0, NUM_FRONTENDS - 1, 1 }, { -1, NULL, NULL, 0, 0, 0 } }; @@ -629,6 +585,8 @@ static param_menu_item_t oclock_cpu_ref = { I_FEATURE, &features[F_OCLOCK_C static param_menu_item_t oclock_core_ref = { I_FEATURE, &features[F_OCLOCK_CORE] }; static param_menu_item_t oclock_sdram_ref = { I_FEATURE, &features[F_OCLOCK_SDRAM] }; static param_menu_item_t res_status_ref = { I_FEATURE, &features[F_RSTATUS] }; +static param_menu_item_t yuv_pixel_ref = { I_FEATURE, &features[F_YUV_PIXEL] }; +static param_menu_item_t nula_narrow_ref = { I_FEATURE, &features[F_NULA_NARROW] }; #ifndef HIDE_INTERFACE_SETTING static param_menu_item_t frontend_ref = { I_FEATURE, &features[F_FRONTEND] }; @@ -691,6 +649,7 @@ static menu_t preferences_menu = { (base_menu_item_t *) &m7scaling_ref, (base_menu_item_t *) &normalscaling_ref, (base_menu_item_t *) &capscale_ref, + (base_menu_item_t *) &yuv_pixel_ref, (base_menu_item_t *) &res_status_ref, NULL } @@ -714,6 +673,7 @@ static menu_t settings_menu = { (base_menu_item_t *) &oclock_cpu_ref, (base_menu_item_t *) &oclock_core_ref, (base_menu_item_t *) &oclock_sdram_ref, + (base_menu_item_t *) &nula_narrow_ref, (base_menu_item_t *) &debug_ref, NULL } @@ -1239,6 +1199,11 @@ static int get_feature(int num) { return sdram_overclock; case F_RSTATUS: return get_res_status(); + + case F_YUV_PIXEL: + case F_NULA_NARROW: + return get_parameter(num); + } return -1; } @@ -1466,6 +1431,12 @@ static void set_feature(int num, int value) { case F_RSTATUS: set_res_status(value); break; + + case F_NULA_NARROW: + case F_YUV_PIXEL: + set_parameter(num, value); + break; + } } @@ -1609,6 +1580,8 @@ static const char *get_param_string(param_menu_item_t *param_item) { return fringe_names[value]; case F_TIMINGSET: return alt_profile_names[value]; + case F_YUV_PIXEL: + return yuv_pixel_double_names[value]; } } else if (type == I_GEOMETRY) { const char *value_str = geometry_get_value_string(param->key); diff --git a/src/osd.h b/src/osd.h index a3ad7afd..1dfd2726 100644 --- a/src/osd.h +++ b/src/osd.h @@ -221,6 +221,73 @@ enum { NUM_NTSCTYPE }; +enum { + PIXEL_DOUBLE_OFF, + PIXEL_DOUBLE_ODD, + PIXEL_DOUBLE_EVEN, + NUM_PIXEL_DOUBLE +}; + + +enum { + F_AUTOSWITCH, + F_RESOLUTION, + F_REFRESH, + F_HDMI, + F_HDMI_STANDBY, + F_SCALING, + F_PROFILE, + F_SAVED, + F_SUBPROFILE, + F_PALETTE, + F_PALETTECONTROL, + F_NTSCCOLOUR, + F_NTSCPHASE, + F_NTSCTYPE, + F_NTSCFRINGE, + F_TINT, + F_SAT, + F_CONT, + F_BRIGHT, + F_GAMMA, + F_TIMINGSET, + F_M7DEINTERLACE, + F_DEINTERLACE, + F_M7SCALING, + F_NORMALSCALING, + F_FFOSD, + F_STRETCH, + F_COLOUR, + F_INVERT, + F_SCANLINES, + F_SCANLINESINT, + F_OVERSCAN, + F_CAPSCALE, + F_FONTSIZE, + F_BORDER, + F_VSYNC, + F_VLOCKMODE, + F_VLOCKLINE, + F_VLOCKSPEED, + F_VLOCKADJ, +#ifdef MULTI_BUFFER + F_NBUFFERS, +#endif + F_RETURN, + F_DEBUG, + F_DIRECTION, + F_OCLOCK_CPU, + F_OCLOCK_CORE, + F_OCLOCK_SDRAM, + F_RSTATUS, + F_YUV_PIXEL, + F_NULA_NARROW, + F_FRONTEND, //must be last + + MAX_PARAMETERS + +}; + int get_tint(); int get_saturation(); int get_contrast(); diff --git a/src/rgb_to_hdmi.c b/src/rgb_to_hdmi.c index 9008210f..c05c68b7 100644 --- a/src/rgb_to_hdmi.c +++ b/src/rgb_to_hdmi.c @@ -288,6 +288,9 @@ static volatile uint32_t display_list_index = 0; volatile uint32_t* display_list; volatile uint32_t* pi4_hdmi0_regs; + +static int parameters[MAX_PARAMETERS] = {0}; + #ifndef USE_ARM_CAPTURE void start_vc() { @@ -3077,6 +3080,24 @@ int get_50hz_state() { return -1; } +int get_parameter(int parameter) { + switch (parameter) { + //space for special case handling + default: + return parameters[parameter]; + break; + } +} + +void set_parameter(int parameter, int value) { + switch (parameter) { + //space for special case handling + default: + parameters[parameter] = value; + break; + } +} + void set_autoswitch(int value) { // Prevent autoswitch (to mode 7) being accidentally with the Atom CPLD, // for example by selecting the BBC_Micro profile, as this results in diff --git a/src/rgb_to_hdmi.h b/src/rgb_to_hdmi.h index 3aea0486..800f453e 100644 --- a/src/rgb_to_hdmi.h +++ b/src/rgb_to_hdmi.h @@ -79,6 +79,10 @@ int get_debug(); int get_lines_per_vsync(); int get_50hz_state(); int get_core_1_available(); + +void set_parameter(int parameter, int value); +int get_parameter(int parameter); + int show_detected_status(int line); void delay_in_arm_cycles_cpu_adjust(int cycles); void set_filtering(int filter); From e2a6e65c839c6963abfb33667cafaa70fbb16dfc Mon Sep 17 00:00:00 2001 From: IanSB Date: Fri, 24 Feb 2023 00:48:28 +0000 Subject: [PATCH 03/46] Update resolution and config files --- src/scripts/Resolutions/50Hz/1600x1200@50Hz.txt | 1 - src/scripts/Resolutions/50Hz/1680x1050@50Hz.txt | 1 - src/scripts/Resolutions/50Hz/1920x1080@50Hz.txt | 1 - src/scripts/Resolutions/50Hz/1920x1200@50Hz.txt | 1 - src/scripts/Resolutions/50Hz/2560x1440/Auto@50Hz.txt | 5 +++++ src/scripts/Resolutions/50Hz/2560x1440@50Hz.txt | 3 ++- src/scripts/Resolutions/50Hz/4K_1920x2160@50Hz.txt | 6 ++++++ src/scripts/Resolutions/50Hz/Auto@50Hz.txt | 1 - src/scripts/Resolutions/60Hz/1600x1200@60Hz.txt | 1 - src/scripts/Resolutions/60Hz/1680x1050@60Hz.txt | 1 - src/scripts/Resolutions/60Hz/1920x1080@60Hz.txt | 1 - src/scripts/Resolutions/60Hz/1920x1200@60Hz.txt | 1 - src/scripts/Resolutions/60Hz/2560x1440/Auto@60Hz.txt | 5 +++++ src/scripts/Resolutions/60Hz/2560x1440@60Hz.txt | 3 ++- src/scripts/Resolutions/60Hz/4K_1920x2160@60Hz.txt | 6 ++++++ src/scripts/Resolutions/60Hz/Auto@60Hz.txt | 1 - src/scripts/config.txt | 7 +++++-- src/scripts/configA.txt | 7 +++++-- src/scripts/default_config.txt | 7 +++++-- 19 files changed, 41 insertions(+), 18 deletions(-) create mode 100644 src/scripts/Resolutions/50Hz/2560x1440/Auto@50Hz.txt create mode 100644 src/scripts/Resolutions/50Hz/4K_1920x2160@50Hz.txt create mode 100644 src/scripts/Resolutions/60Hz/2560x1440/Auto@60Hz.txt create mode 100644 src/scripts/Resolutions/60Hz/4K_1920x2160@60Hz.txt diff --git a/src/scripts/Resolutions/50Hz/1600x1200@50Hz.txt b/src/scripts/Resolutions/50Hz/1600x1200@50Hz.txt index c3923ae2..2edc8a82 100644 --- a/src/scripts/Resolutions/50Hz/1600x1200@50Hz.txt +++ b/src/scripts/Resolutions/50Hz/1600x1200@50Hz.txt @@ -1,5 +1,4 @@ ## 1600x1200 @ 50Hz -#auto_overscan=1 hdmi_group=2 hdmi_mode=87 hdmi_timings=1600 0 64 192 304 1200 0 1 3 46 0 0 0 50 0 135000000 1 diff --git a/src/scripts/Resolutions/50Hz/1680x1050@50Hz.txt b/src/scripts/Resolutions/50Hz/1680x1050@50Hz.txt index 6aac68d0..d647dcfb 100644 --- a/src/scripts/Resolutions/50Hz/1680x1050@50Hz.txt +++ b/src/scripts/Resolutions/50Hz/1680x1050@50Hz.txt @@ -1,5 +1,4 @@ ## 1680x1050 @ 50Hz -#auto_overscan=1 hdmi_group=2 hdmi_mode=87 hdmi_cvt=1680 1050 50 5 0 0 diff --git a/src/scripts/Resolutions/50Hz/1920x1080@50Hz.txt b/src/scripts/Resolutions/50Hz/1920x1080@50Hz.txt index 92906d8f..99c7d025 100644 --- a/src/scripts/Resolutions/50Hz/1920x1080@50Hz.txt +++ b/src/scripts/Resolutions/50Hz/1920x1080@50Hz.txt @@ -1,4 +1,3 @@ ## 1920x1080 @ 50Hz -#auto_overscan=1 hdmi_group=1 hdmi_mode=31 diff --git a/src/scripts/Resolutions/50Hz/1920x1200@50Hz.txt b/src/scripts/Resolutions/50Hz/1920x1200@50Hz.txt index 84ed1d19..b08ceb6f 100644 --- a/src/scripts/Resolutions/50Hz/1920x1200@50Hz.txt +++ b/src/scripts/Resolutions/50Hz/1920x1200@50Hz.txt @@ -1,5 +1,4 @@ ## 1920x1200 @ 50Hz -#auto_overscan=1 hdmi_group=2 hdmi_mode=87 hdmi_cvt=1920 1200 50 1 0 0 0 diff --git a/src/scripts/Resolutions/50Hz/2560x1440/Auto@50Hz.txt b/src/scripts/Resolutions/50Hz/2560x1440/Auto@50Hz.txt new file mode 100644 index 00000000..0c8c3d16 --- /dev/null +++ b/src/scripts/Resolutions/50Hz/2560x1440/Auto@50Hz.txt @@ -0,0 +1,5 @@ +## Auto@50Hz +hdmi_pixel_freq_limit=340000000 +hdmi_group=2 +hdmi_mode=87 +hdmi_cvt=2560 1440 50 3 0 0 1 diff --git a/src/scripts/Resolutions/50Hz/2560x1440@50Hz.txt b/src/scripts/Resolutions/50Hz/2560x1440@50Hz.txt index b8fb2793..a629093d 100644 --- a/src/scripts/Resolutions/50Hz/2560x1440@50Hz.txt +++ b/src/scripts/Resolutions/50Hz/2560x1440@50Hz.txt @@ -1,5 +1,6 @@ ## 2560x1440 @ 50Hz -max_framebuffer_width=2560 +hdmi_pixel_freq_limit=340000000 hdmi_group=2 hdmi_mode=87 +#hdmi_timings=2560 0 8 32 40 1440 0 20 8 6 0 0 0 50 0 194568000 3 hdmi_cvt=2560 1440 50 3 0 0 1 diff --git a/src/scripts/Resolutions/50Hz/4K_1920x2160@50Hz.txt b/src/scripts/Resolutions/50Hz/4K_1920x2160@50Hz.txt new file mode 100644 index 00000000..75289ae2 --- /dev/null +++ b/src/scripts/Resolutions/50Hz/4K_1920x2160@50Hz.txt @@ -0,0 +1,6 @@ +## 3840(1920)x2160 @ 50Hz +hdmi_pixel_freq_limit=340000000 +hdmi_group=2 +hdmi_mode=87 +hdmi_timings=1920 0 48 32 80 2160 0 37 8 6 0 0 0 50 0 221100000 3 +#hdmi_cvt=1920 2160 50 3 0 0 1 diff --git a/src/scripts/Resolutions/50Hz/Auto@50Hz.txt b/src/scripts/Resolutions/50Hz/Auto@50Hz.txt index 0915823a..385a3796 100644 --- a/src/scripts/Resolutions/50Hz/Auto@50Hz.txt +++ b/src/scripts/Resolutions/50Hz/Auto@50Hz.txt @@ -1,2 +1 @@ ## Auto@50Hz -#auto_overscan=1 diff --git a/src/scripts/Resolutions/60Hz/1600x1200@60Hz.txt b/src/scripts/Resolutions/60Hz/1600x1200@60Hz.txt index b1f209a5..a5aef625 100644 --- a/src/scripts/Resolutions/60Hz/1600x1200@60Hz.txt +++ b/src/scripts/Resolutions/60Hz/1600x1200@60Hz.txt @@ -1,4 +1,3 @@ ## 1600x1200 @ 60Hz -#auto_overscan=1 hdmi_group=2 hdmi_mode=51 diff --git a/src/scripts/Resolutions/60Hz/1680x1050@60Hz.txt b/src/scripts/Resolutions/60Hz/1680x1050@60Hz.txt index ab62b185..9d4c7fc9 100644 --- a/src/scripts/Resolutions/60Hz/1680x1050@60Hz.txt +++ b/src/scripts/Resolutions/60Hz/1680x1050@60Hz.txt @@ -1,4 +1,3 @@ ## 1680x1050 @ 60Hz -#auto_overscan=1 hdmi_group=2 hdmi_mode=57 diff --git a/src/scripts/Resolutions/60Hz/1920x1080@60Hz.txt b/src/scripts/Resolutions/60Hz/1920x1080@60Hz.txt index e1b8829b..c71baa4a 100644 --- a/src/scripts/Resolutions/60Hz/1920x1080@60Hz.txt +++ b/src/scripts/Resolutions/60Hz/1920x1080@60Hz.txt @@ -1,4 +1,3 @@ ## 1920x1080 @ 60Hz -#auto_overscan=1 hdmi_group=2 hdmi_mode=82 diff --git a/src/scripts/Resolutions/60Hz/1920x1200@60Hz.txt b/src/scripts/Resolutions/60Hz/1920x1200@60Hz.txt index 66f3cda9..1dc86127 100644 --- a/src/scripts/Resolutions/60Hz/1920x1200@60Hz.txt +++ b/src/scripts/Resolutions/60Hz/1920x1200@60Hz.txt @@ -1,4 +1,3 @@ ## 1920x1200 @ 60Hz -#auto_overscan=1 hdmi_group=2 hdmi_mode=69 diff --git a/src/scripts/Resolutions/60Hz/2560x1440/Auto@60Hz.txt b/src/scripts/Resolutions/60Hz/2560x1440/Auto@60Hz.txt new file mode 100644 index 00000000..df5e2d81 --- /dev/null +++ b/src/scripts/Resolutions/60Hz/2560x1440/Auto@60Hz.txt @@ -0,0 +1,5 @@ +## Auto@60Hz +hdmi_pixel_freq_limit=270000000 +hdmi_group=2 +hdmi_mode=87 +hdmi_cvt=2560 1440 60 3 0 0 1 diff --git a/src/scripts/Resolutions/60Hz/2560x1440@60Hz.txt b/src/scripts/Resolutions/60Hz/2560x1440@60Hz.txt index e78406fc..58ee4397 100644 --- a/src/scripts/Resolutions/60Hz/2560x1440@60Hz.txt +++ b/src/scripts/Resolutions/60Hz/2560x1440@60Hz.txt @@ -1,5 +1,6 @@ ## 2560x1440 @ 60Hz -max_framebuffer_width=2560 +hdmi_pixel_freq_limit=270000000 hdmi_group=2 hdmi_mode=87 +#hdmi_timings=2560 0 8 32 40 1440 0 27 8 6 0 0 0 60 0 234590000 3 hdmi_cvt=2560 1440 60 3 0 0 1 diff --git a/src/scripts/Resolutions/60Hz/4K_1920x2160@60Hz.txt b/src/scripts/Resolutions/60Hz/4K_1920x2160@60Hz.txt new file mode 100644 index 00000000..a8e75392 --- /dev/null +++ b/src/scripts/Resolutions/60Hz/4K_1920x2160@60Hz.txt @@ -0,0 +1,6 @@ +## 1920x2160 @ 60Hz +hdmi_pixel_freq_limit=340000000 +hdmi_group=2 +hdmi_mode=87 +hdmi_timings=1920 0 8 32 40 2160 0 48 8 6 0 0 0 60 0 266640000 3 +#hdmi_cvt=1920 2160 60 3 0 0 1 diff --git a/src/scripts/Resolutions/60Hz/Auto@60Hz.txt b/src/scripts/Resolutions/60Hz/Auto@60Hz.txt index 3c390027..ba7aa9b6 100644 --- a/src/scripts/Resolutions/60Hz/Auto@60Hz.txt +++ b/src/scripts/Resolutions/60Hz/Auto@60Hz.txt @@ -1,2 +1 @@ ## Auto@60Hz -#auto_overscan=1 diff --git a/src/scripts/config.txt b/src/scripts/config.txt index d252f587..7516589d 100644 --- a/src/scripts/config.txt +++ b/src/scripts/config.txt @@ -47,7 +47,8 @@ disable_overscan=1 # Set the maximum framebuffer height to 4*2048 # (the 4x is because we allow upto quadruple buffering) -max_framebuffer_height=8192 +max_framebuffer_width=3840 +max_framebuffer_height=10240 # Set to 1 to make hdmi use DPM standby instead of just blanking the screen hdmi_blanking=1 @@ -56,7 +57,9 @@ hdmi_blanking=1 config_hdmi_boost=5 # Set max pixel freq so higher resolutions work -hdmi_pixel_freq_limit=340000000 +hdmi_pixel_freq_limit=175000000 + +#auto_overscan=1 # ====================== # Settings for Pi Models diff --git a/src/scripts/configA.txt b/src/scripts/configA.txt index 90b500c5..bb168da9 100644 --- a/src/scripts/configA.txt +++ b/src/scripts/configA.txt @@ -47,7 +47,8 @@ disable_overscan=1 # Set the maximum framebuffer height to 4*2048 # (the 4x is because we allow upto quadruple buffering) -max_framebuffer_height=8192 +max_framebuffer_width=3840 +max_framebuffer_height=10240 # Set to 1 to make hdmi use DPM standby instead of just blanking the screen hdmi_blanking=1 @@ -56,7 +57,9 @@ hdmi_blanking=1 config_hdmi_boost=5 # Set max pixel freq so higher resolutions work -hdmi_pixel_freq_limit=340000000 +hdmi_pixel_freq_limit=175000000 + +#auto_overscan=1 # ====================== # Settings for Pi Models diff --git a/src/scripts/default_config.txt b/src/scripts/default_config.txt index d252f587..7516589d 100644 --- a/src/scripts/default_config.txt +++ b/src/scripts/default_config.txt @@ -47,7 +47,8 @@ disable_overscan=1 # Set the maximum framebuffer height to 4*2048 # (the 4x is because we allow upto quadruple buffering) -max_framebuffer_height=8192 +max_framebuffer_width=3840 +max_framebuffer_height=10240 # Set to 1 to make hdmi use DPM standby instead of just blanking the screen hdmi_blanking=1 @@ -56,7 +57,9 @@ hdmi_blanking=1 config_hdmi_boost=5 # Set max pixel freq so higher resolutions work -hdmi_pixel_freq_limit=340000000 +hdmi_pixel_freq_limit=175000000 + +#auto_overscan=1 # ====================== # Settings for Pi Models From 9200a45804b29380169fc3a1d48d9c71be7d63fe Mon Sep 17 00:00:00 2001 From: IanSB Date: Fri, 24 Feb 2023 01:09:46 +0000 Subject: [PATCH 04/46] Add auto detect support for 2560x1440 monitors and improve auto overscan settings in 16bpp modes to reduce video DMA bandwidth --- src/filesystem.c | 45 ++++++++++++++++++---- src/filesystem.h | 2 +- src/geometry.c | 97 ++++++++++++++++++++++++++++++----------------- src/geometry.h | 1 + src/osd.c | 92 ++++++++++++++++++++++++++++++++++---------- src/osd.h | 2 +- src/rgb_to_hdmi.c | 65 +++++++++++++++++-------------- src/rgb_to_hdmi.h | 2 + 8 files changed, 213 insertions(+), 93 deletions(-) diff --git a/src/filesystem.c b/src/filesystem.c index e24ffd5a..bf062fc5 100644 --- a/src/filesystem.c +++ b/src/filesystem.c @@ -100,16 +100,29 @@ static int generate_png(capture_info_t *capinfo, uint8_t **png, unsigned int *pn int bottom; int png_left = 0; int png_right = 0; + int png_top = 0; + int png_bottom = 0; get_config_overscan(&left, &right, &top, &bottom); if (get_startup_overscan() != 0 && (left != 0 || right != 0) && (capscale == SCREENCAP_HALF || capscale == SCREENCAP_FULL)) { - png_left = left * png_width / get_hdisplay(); - png_right = right * png_width / get_hdisplay(); + png_left = left * png_width / (get_hdisplay() - left - right); + png_right = right * png_width / (get_hdisplay() - left - right); + png_top = top * png_height / (get_vdisplay() - top - bottom); + png_bottom = bottom * png_height / (get_vdisplay() - top - bottom); } - uint8_t png_buffer[(png_width + png_left + png_right) *3 * png_height] __attribute__((aligned(32))); + uint8_t png_buffer[(png_width + png_left + png_right) *3 * (png_height + png_top + png_bottom)] __attribute__((aligned(32))); uint8_t *pp = png_buffer; + if (png_top != 0) { + for (int i = 0; i < (png_top * (png_left + width + png_right)); i += (hdouble + 1)) { + *pp++ = 0; + *pp++ = 0; + *pp++ = 0; + } + } + + for (int y = 0; y < height; y += (vdouble + 1)) { for (int sy = 0; sy < vscale; sy++) { uint8_t *fp = capinfo->fb + capinfo->pitch * y; @@ -155,8 +168,15 @@ static int generate_png(capture_info_t *capinfo, uint8_t **png, unsigned int *pn } } + if (png_bottom != 0) { + for (int i = 0; i < (png_bottom * (png_left + width + png_right)); i += (hdouble + 1)) { + *pp++ = 0; + *pp++ = 0; + *pp++ = 0; + } + } //log_info("Encoding png %08X, %08X", png, png_buffer); - unsigned int result = lodepng_encode(png, png_len, png_buffer, (png_width + png_left + png_right), png_height, &state); + unsigned int result = lodepng_encode(png, png_len, png_buffer, (png_width + png_left + png_right), png_height + png_top + png_bottom, &state); if (result) { log_warn("lodepng_encode32 failed (result = %d)", result); return 1; @@ -945,7 +965,7 @@ int file_restore(char *dirpath, char *name, int saved_config_number) { return 1; } -int file_save_config(char *resolution_name, int refresh, int scaling, int filtering, int current_frontend, int current_hdmi_mode) { +int file_save_config(char *resolution_name, int refresh, int scaling, int filtering, int current_frontend, int current_hdmi_mode, char *auto_workaround_path) { FRESULT result; char path[MAX_STRING_SIZE]; char buffer [16384]; @@ -1008,10 +1028,19 @@ int file_save_config(char *resolution_name, int refresh, int scaling, int filter sprintf((char*)(buffer + bytes_read), "\r\n#resolution=%s\r\n", resolution_name); bytes_read += strlen((char*) (buffer + bytes_read)); - if (refresh == REFRESH_50) { - sprintf(path, "/Resolutions/50Hz/%s@50Hz.txt", resolution_name); + + if (strcmp(resolution_name, DEFAULT_RESOLUTION) == 0) { + if (refresh == REFRESH_50) { + sprintf(path, "/Resolutions/50Hz/%s%s@50Hz.txt", auto_workaround_path, resolution_name); + } else { + sprintf(path, "/Resolutions/60Hz/%s%s@60Hz.txt", auto_workaround_path, resolution_name); + } } else { - sprintf(path, "/Resolutions/60Hz/%s@60Hz.txt", resolution_name); + if (refresh == REFRESH_50) { + sprintf(path, "/Resolutions/50Hz/%s@50Hz.txt", resolution_name); + } else { + sprintf(path, "/Resolutions/60Hz/%s@60Hz.txt", resolution_name); + } } log_info("Loading file: %s", path); diff --git a/src/filesystem.h b/src/filesystem.h index 41943cbd..6b635c81 100644 --- a/src/filesystem.h +++ b/src/filesystem.h @@ -15,7 +15,7 @@ void scan_sub_profiles(char sub_profile_names[MAX_SUB_PROFILES][MAX_PROFILE_WIDT unsigned int file_read_profile(char *profile_name, int saved_config_number, char *sub_profile_name, int updatecmd, char *command_string, unsigned int buffer_size); void scan_rnames(char names[MAX_NAMES][MAX_NAMES_WIDTH], char *path, char *type, int truncate, size_t *count); -int file_save_config(char *resolution_name, int refresh, int scaling, int filtering, int current_frontend, int current_hdmi_mode); +int file_save_config(char *resolution_name, int refresh, int scaling, int filtering, int current_frontend, int current_hdmi_mode, char *auto_workaround_path); int file_load(char *path, char *buffer, unsigned int buffer_size); int file_save(char *dirpath, char *name, char *buffer, unsigned int buffer_size, int saved_config_number); int file_restore(char *dirpath, char *name, int saved_config_number); diff --git a/src/geometry.c b/src/geometry.c index 1952e9c0..ccb99f0a 100644 --- a/src/geometry.c +++ b/src/geometry.c @@ -399,27 +399,13 @@ void set_setup_mode(int mode) { } void geometry_get_fb_params(capture_info_t *capinfo) { - int left; - int right; - int top; - int bottom; - get_config_overscan(&left, &right, &top, &bottom); - int apparent_width = get_hdisplay() + left + right; - int apparent_height = get_vdisplay() + top + bottom; + int top = 0; + int bottom = 0; + int left = 0; + int right = 0; + if (get_startup_overscan() != 0) { - left = 0; - right = 0; - if (apparent_height > 1024 && geometry->fb_bpp == BPP_16 && get_scaling() < SCALING_FILLALL_SOFT) { - // if 16bpp frame buffer and widescreen there is insufficent time for screen DMA so set overscan to reduce width - if (apparent_width > 1440 && geometry->max_h_width <= 720 && geometry->max_h_width > 400 && geometry->min_h_width > 533 && (get_scaling() < SCALING_FILL43_SOFT || geometry->fb_sizex2 != 0)) { - left = (apparent_width - 1440) / 2; - right = left; - } else if (apparent_width > 1600 && geometry->min_h_width > 533) { - left = (apparent_width - 1600) / 2; - right = left; - } - } - set_config_overscan(left, right, top, bottom); + set_config_overscan(0, 0, 0, 0); } capinfo->sync_type = geometry->sync_type; @@ -571,8 +557,9 @@ void geometry_get_fb_params(capture_info_t *capinfo) { capinfo->ntscphase |= NTSC_FFOSD_ENABLE; } - int h_size = get_hdisplay(); - int v_size = get_vdisplay(); + get_config_overscan(&left, &right, &top, &bottom); + int h_size = get_hdisplay() - left - right; + int v_size = get_vdisplay() - top - bottom; double ratio = (double) h_size / v_size; int h_size43 = h_size; @@ -855,6 +842,7 @@ void geometry_get_fb_params(capture_info_t *capinfo) { capinfo->width &= 0xfffffffe; capinfo->height &= 0xfffffffe; + /* int pitchinchars = capinfo->pitch; switch(capinfo->bpp) { @@ -873,6 +861,7 @@ void geometry_get_fb_params(capture_info_t *capinfo) { //log_info("Clipping capture width to pitch: %d, %d", capinfo->chars_per_line, pitchinchars); capinfo->chars_per_line = pitchinchars; } + */ if (capinfo->nlines > (capinfo->height >> double_height)) { capinfo->nlines = (capinfo->height >> double_height); @@ -914,6 +903,49 @@ void geometry_get_fb_params(capture_info_t *capinfo) { capinfo->sizex2 &= SIZEX2_DOUBLE_WIDTH; } + + if (get_startup_overscan() != 0) { + int apparent_width = get_hdisplay(); + int apparent_height = get_vdisplay(); + double_width = (capinfo->sizex2 & SIZEX2_DOUBLE_WIDTH) >> 1; + double_height = capinfo->sizex2 & SIZEX2_DOUBLE_HEIGHT; + + if (_get_hardware_id() == _RPI && capinfo->bpp == 16) { + if (get_gscaling() == GSCALING_INTEGER) { + int actual_width = (capinfo->chars_per_line << 3); + int actual_height = capinfo->nlines; + left = (apparent_width - (actual_width * hscale)) / 2; + right = left; + top = (apparent_height - (actual_height * vscale)) / 2; + bottom = top; + + capinfo->width = actual_width << double_width; + capinfo->height = actual_height << double_height; + //log_info("sizes = %d %d %d %d %d %d %d %d %d %d", apparent_width,apparent_height,actual_width, actual_height ,hscale,vscale,left,right,top,bottom); + } else { + top = 0; + bottom = 0; + double aspect = (double) apparent_width / (double) apparent_height; + int apparent_width_limit = (apparent_width * 1600 / 1920) & ~1; + if (aspect >= 1.6 && get_scaling() < SCALING_FILLALL_SOFT) { + left = (apparent_width - apparent_width_limit) / 2; + right = left; + capinfo->width = capinfo->width * 1600 / 1920; + } else { + left = 0; + right = 0; + } + + //log_info("sizes = %d %d %d %d", apparent_width,capinfo->width, left,right); + } + } else { + left = 0; + right = 0; + top = 0; + bottom = 0; + } + set_config_overscan(left, right, top, bottom); + } } int get_hscale() { @@ -936,10 +968,6 @@ int get_hdisplay() { int h_size = (*PIXELVALVE2_HORZB) & 0xFFFF; #endif int v_size = (*PIXELVALVE2_VERTB) & 0xFFFF; - int l; - int r; - int t; - int b; if (h_size < 640 || h_size > 8192 || v_size < 480 || v_size > 4096) { log_info("HDMI readback of screen size invalid (%dx%d) - rebooting", h_size, v_size); delay_in_arm_cycles_cpu_adjust(1000000000); @@ -953,20 +981,19 @@ int get_hdisplay() { } else if (v_size == 240 || v_size == 288) { h_size >>= 1; } - - get_config_overscan(&l, &r, &t, &b); - h_size = h_size - l - r; return h_size; } int get_vdisplay() { - int l; - int r; - int t; - int b; int v_size = (*PIXELVALVE2_VERTB) & 0xFFFF; - get_config_overscan(&l, &r, &t, &b); - v_size = v_size - t - b; + if (v_size == 2160 && get_hdisplay() == 1920){ + v_size = 1080; + } + return v_size; +} + +int get_true_vdisplay() { + int v_size = (*PIXELVALVE2_VERTB) & 0xFFFF; return v_size; } diff --git a/src/geometry.h b/src/geometry.h index aae3097f..9ffad9e1 100644 --- a/src/geometry.h +++ b/src/geometry.h @@ -95,6 +95,7 @@ int get_haspect(); int get_vaspect(); int get_hdisplay(); int get_vdisplay(); +int get_true_vdisplay(); void set_setup_mode(int mode); void geometry_hide_pixel_sampling(); #endif diff --git a/src/osd.c b/src/osd.c index a992240f..8b7f8ed8 100644 --- a/src/osd.c +++ b/src/osd.c @@ -1640,6 +1640,7 @@ void osd_display_interface(int line) { } static void info_system_summary(int line) { + gpioreg = (volatile uint32_t *)(_get_peripheral_base() + 0x101000UL); sprintf(message, " Kernel Version: %s", GITVERSION); osd_set(line++, 0, message); sprintf(message, " CPLD Version: %s v%x.%x", @@ -1761,13 +1762,8 @@ static void info_test_50hz(int line) { static char osdline[256]; static int old_50hz_state = 0; int current_50hz_state = get_50hz_state(); -int left; -int right; -int top; -int bottom; -get_config_overscan(&left, &right, &top, &bottom); -int apparent_width = get_hdisplay() + left + right; -int apparent_height = get_vdisplay() + top + bottom; +int apparent_width = get_hdisplay(); +int apparent_height = get_vdisplay(); if (old_50hz_state == 1 && current_50hz_state == 0) { current_50hz_state = 1; } @@ -5915,6 +5911,9 @@ void osd_init() { int EDID_extension = 0; int supports1080i = 0; int supports1080p = 0; + int detectedwidth = 0; + int detectedheight = 0; + if (buf) { //for(int a=2;a<34;a++){ @@ -5922,7 +5921,14 @@ void osd_init() { //} memcpy(EDID_buf + EDID_bufptr, buf->data.buffer_8 + table_offset, 128); EDID_bufptr += 128; - for(int d = (table_offset + 54); d <= (table_offset + 108); d += 18) { + for(int d = (table_offset + 108); d >= (table_offset + 54); d -= 18) { + + if (buf->data.buffer_8[d] != 0 && buf->data.buffer_8[d + 1] != 0) { //search for EDID timing descriptor + detectedwidth = buf->data.buffer_8[d + 2] | ((buf->data.buffer_8[d + 4] >> 4) << 8); + detectedheight = buf->data.buffer_8[d + 5] | ((buf->data.buffer_8[d + 7] >> 4) << 8);; + log_info("Timing descriptor detected as %dx%d", detectedwidth, detectedheight); + } + if (buf->data.buffer_8[d] == 0 && buf->data.buffer_8[d + 1] == 0 && buf->data.buffer_8[d + 3] == 0xFD) { //search for EDID Display Range Limits Descriptor Vrefresh_lo = buf->data.buffer_8[d + 5]; if ((buf->data.buffer_8[d + 4] & 3) == 3) { @@ -6000,39 +6006,56 @@ void osd_init() { log_info("disable_overclock: %s", prop); disable_overclock = atoi(prop); + int overscan_detected = 0; + if (cbytes) { prop = get_prop_no_space(config_buffer, "overscan_left"); } + if (prop) { + overscan_detected++; + log_info("overscan_left: %s", prop); + } if (!prop || !cbytes) { prop = "0"; } - log_info("overscan_left: %s", prop); + int l = atoi(prop); if (cbytes) { prop = get_prop_no_space(config_buffer, "overscan_right"); } + if (prop) { + overscan_detected++; + log_info("overscan_right: %s", prop); + } if (!prop || !cbytes) { prop = "0"; } - log_info("overscan_right: %s", prop); + int r = atoi(prop); if (cbytes) { prop = get_prop_no_space(config_buffer, "overscan_top"); } + if (prop) { + overscan_detected++; + log_info("overscan_top: %s", prop); + } if (!prop || !cbytes) { prop = "0"; } - log_info("overscan_top: %s", prop); int t = atoi(prop); if (cbytes) { prop = get_prop_no_space(config_buffer, "overscan_bottom"); } + if (prop) { + overscan_detected++; + log_info("overscan_bottom: %s", prop); + } if (!prop || !cbytes) { prop = "0"; } - log_info("overscan_bottom: %s", prop); + int b = atoi(prop); set_config_overscan(l, r, t, b); @@ -6040,7 +6063,7 @@ void osd_init() { if (cbytes) { prop = get_prop_no_space(config_buffer, "#auto_overscan"); } - if (!prop || !cbytes) { + if (!prop || !cbytes || overscan_detected != 0) { prop = "0"; } log_info("#auto_overscan: %s", prop); @@ -6107,21 +6130,24 @@ void osd_init() { } if (!prop || !cbytes) { log_info("New install detected"); - prop = "Auto"; + prop = DEFAULT_RESOLUTION; force_genlock_range = GENLOCK_RANGE_SET_DEFAULT; } log_info("Read resolution: %s", prop); - if (strcmp(prop, DEFAULT_RESOLUTION) == 0 && get_refresh() == REFRESH_50) { - force_genlock_range = REFRESH_50_60; - log_info("Auto 50Hz detected"); + int auto_detected = 0; + if (strcmp(prop, DEFAULT_RESOLUTION) == 0) + { + auto_detected = 1; + if (get_refresh() == REFRESH_50) { + force_genlock_range = REFRESH_50_60; + log_info("Auto 50Hz detected"); + } } set_force_genlock_range(force_genlock_range); - - for (int i=0; i< rcount; i++) { if (strcmp(resolution_names[i], prop) == 0) { log_info("Match resolution: %d %s", i, prop); @@ -6130,6 +6156,33 @@ void osd_init() { } } + int auto_workaround = 0; + char auto_workaround_path[MAX_NAMES_WIDTH] = ""; + if (strcmp(prop, DEFAULT_RESOLUTION) == 0 && detectedwidth == 2560 && detectedheight == 1440) { //special handling for Auto in 2560x1440 as Pi won't auto detect + sprintf(auto_workaround_path, "%dx%d/", detectedwidth, detectedheight); + auto_workaround = 1; + } + + log_info("Auto %dx%d workaround = %d",detectedwidth, detectedheight, auto_workaround); + + int hdmi_mode_detected = 1; + if (cbytes) { + prop = get_prop_no_space(config_buffer, "hdmi_mode"); + } + if (!prop || !cbytes) { + hdmi_mode_detected = 0; + } + + int reboot = 0; + if (auto_detected != 0 && hdmi_mode_detected != auto_workaround) { + log_info("reboot %d %d '%s'", hdmi_mode_detected, auto_workaround, auto_workaround_path); + reboot = 1; + } else { + log_info("noreboot %d %d '%s'", hdmi_mode_detected,auto_workaround, auto_workaround_path); + } + set_auto_workaround_path(auto_workaround_path, reboot); + + if (cbytes) { prop = get_prop_no_space(config_buffer, "#scaling"); } @@ -6150,7 +6203,6 @@ void osd_init() { val = atoi(prop); set_filtering(val); - if (cbytes) { char frontname[256]; for (int i=0; i< 16; i++) { diff --git a/src/osd.h b/src/osd.h index 1dfd2726..aeea3375 100644 --- a/src/osd.h +++ b/src/osd.h @@ -285,7 +285,7 @@ enum { F_FRONTEND, //must be last MAX_PARAMETERS - + }; int get_tint(); diff --git a/src/rgb_to_hdmi.c b/src/rgb_to_hdmi.c index c05c68b7..2fd99f6d 100644 --- a/src/rgb_to_hdmi.c +++ b/src/rgb_to_hdmi.c @@ -212,6 +212,7 @@ static int hdmi_blank = 0; //static int x_resolution = 0; //static int y_resolution = 0; static char resolution_name[MAX_NAMES_WIDTH]; +static char auto_workaround_path[MAX_NAMES_WIDTH] = ""; static int scaling = -1; static int gscaling = GSCALING_INTEGER; static int filtering = DEFAULT_FILTERING; @@ -451,20 +452,23 @@ int height = 0; log_info("Width or Height differ from last FB: Setting dummy 64x64 framebuffer"); } - int adjusted_width = capinfo->width; + //last_width = capinfo->width; //last_height = capinfo->height; /* work out if overscan needed */ - int h_size = get_hdisplay(); - int v_size = get_vdisplay(); + int h_size = get_hdisplay() - config_overscan_left - config_overscan_right; + int v_size = get_vdisplay() - config_overscan_top - config_overscan_bottom; h_overscan = 0; v_overscan = 0; adj_h_overscan = 0; adj_v_overscan = 0; + int adjusted_width = capinfo->width; + int adjusted_height = capinfo->height; + if (get_gscaling() == GSCALING_INTEGER) { if (!((capinfo->mode7 && get_m7scaling() == SCALING_UNEVEN) ||(!capinfo->mode7 && get_normalscaling() == SCALING_UNEVEN))) { @@ -488,9 +492,6 @@ int height = 0; //} } - - - int left_overscan = adj_h_overscan >> 1; int right_overscan = left_overscan + (adj_h_overscan & 1); @@ -504,15 +505,14 @@ int height = 0; bottom_overscan += config_overscan_bottom; log_info("Overscan L=%d, R=%d, T=%d, B=%d",left_overscan, right_overscan, top_overscan, bottom_overscan); - /* Initialise a framebuffer... */ RPI_PropertyInit(); RPI_PropertyAddTag(TAG_ALLOCATE_BUFFER, 0x02000000); - RPI_PropertyAddTag(TAG_SET_PHYSICAL_SIZE, adjusted_width, capinfo->height); + RPI_PropertyAddTag(TAG_SET_PHYSICAL_SIZE, adjusted_width, adjusted_height); #ifdef MULTI_BUFFER - RPI_PropertyAddTag(TAG_SET_VIRTUAL_SIZE, adjusted_width, capinfo->height * NBUFFERS); + RPI_PropertyAddTag(TAG_SET_VIRTUAL_SIZE, adjusted_width, adjusted_height * NBUFFERS); #else - RPI_PropertyAddTag(TAG_SET_VIRTUAL_SIZE, adjusted_width, capinfo->height); + RPI_PropertyAddTag(TAG_SET_VIRTUAL_SIZE, adjusted_width, adjusted_height); #endif RPI_PropertyAddTag(TAG_SET_DEPTH, capinfo->bpp); RPI_PropertyAddTag(TAG_SET_OVERSCAN, top_overscan, bottom_overscan, left_overscan, right_overscan); @@ -530,7 +530,7 @@ int height = 0; if ((mp = RPI_PropertyGet(TAG_GET_PHYSICAL_SIZE))) { width = mp->data.buffer_32[0]; height = mp->data.buffer_32[1]; - if (width != adjusted_width || height != capinfo->height) { + if (width != adjusted_width || height != adjusted_height) { log_info("Invalid frame buffer dimensions - maybe HDMI not connected - rebooting"); delay_in_arm_cycles_cpu_adjust(1000000000); reboot(); @@ -2674,7 +2674,7 @@ void set_hdmi(int value, int reboot) { } } if (reboot) { - file_save_config(resolution_name, refresh, scaling, filtering, frontend, hdmi_mode); + file_save_config(resolution_name, refresh, scaling, filtering, frontend, hdmi_mode, auto_workaround_path); } } @@ -2682,6 +2682,14 @@ int get_hdmi() { return hdmi_mode; } +void set_auto_workaround_path(char *value, int reboot) { + strcpy(auto_workaround_path, value); + if (reboot) { + reboot_required |= 0x10; + file_save_config(resolution_name, refresh, scaling, filtering, frontend, hdmi_mode, auto_workaround_path); + } +} + void set_refresh(int value, int reboot) { refresh = value; if (reboot == 0) { @@ -2697,7 +2705,8 @@ void set_refresh(int value, int reboot) { } } if (reboot) { - file_save_config(resolution_name, refresh, scaling, filtering, frontend, hdmi_mode); + reboot_required |= 0x08; + file_save_config(resolution_name, refresh, scaling, filtering, frontend, hdmi_mode, auto_workaround_path); } } @@ -2720,7 +2729,7 @@ void set_resolution(int mode, const char *name, int reboot) { } } if (reboot) { - file_save_config(resolution_name, refresh, scaling, filtering, frontend, hdmi_mode); + file_save_config(resolution_name, refresh, scaling, filtering, frontend, hdmi_mode, auto_workaround_path); } } @@ -2737,8 +2746,8 @@ void set_scaling(int mode, int reboot) { if (mode == SCALING_AUTO) { geometry_set_mode(0); int width = geometry_get_value(MIN_H_WIDTH); - int h_size = get_hdisplay(); - int v_size = get_vdisplay(); + int h_size = get_hdisplay() - config_overscan_left - config_overscan_right; + int v_size = get_vdisplay() - config_overscan_top - config_overscan_bottom; double ratio = (double) h_size / v_size; int h_size43 = h_size; if (ratio > 1.34) { @@ -2819,7 +2828,7 @@ void set_scaling(int mode, int reboot) { reboot_required &= ~0x02; } if (reboot == 1 || (reboot == 2 && reboot_required)) { - file_save_config(resolution_name, refresh, scaling, filtering, frontend, hdmi_mode); + file_save_config(resolution_name, refresh, scaling, filtering, frontend, hdmi_mode, auto_workaround_path); } } @@ -2848,7 +2857,7 @@ void set_frontend(int value, int save) { } } if (save != 0) { - file_save_config(resolution_name, refresh, scaling, filtering, frontend, hdmi_mode); + file_save_config(resolution_name, refresh, scaling, filtering, frontend, hdmi_mode, auto_workaround_path); } cpld->set_frontend(frontend); } @@ -3306,7 +3315,7 @@ void rgb_to_hdmi_main() { if (simple_detected) { if ((strcmp(resolution_name, DEFAULT_RESOLUTION) != 0) || refresh != AUTO_REFRESH || hdmi_mode != DEFAULT_HDMI_MODE ) { log_info("Resetting output resolution/refresh to Auto/50Hz-60Hz"); - file_save_config(DEFAULT_RESOLUTION, AUTO_REFRESH, DEFAULT_SCALING, DEFAULT_FILTERING, frontend, DEFAULT_HDMI_MODE); + file_save_config(DEFAULT_RESOLUTION, AUTO_REFRESH, DEFAULT_SCALING, DEFAULT_FILTERING, frontend, DEFAULT_HDMI_MODE, auto_workaround_path); // Wait a while to allow UART time to empty delay_in_arm_cycles_cpu_adjust(200000000); reboot(); @@ -3314,7 +3323,7 @@ void rgb_to_hdmi_main() { } else { if ((strcmp(resolution_name, DEFAULT_RESOLUTION) != 0) || refresh != DEFAULT_REFRESH || hdmi_mode != DEFAULT_HDMI_MODE ) { log_info("Resetting output resolution/refresh to Auto/EDID"); - file_save_config(DEFAULT_RESOLUTION, DEFAULT_REFRESH, DEFAULT_SCALING, DEFAULT_FILTERING, frontend, DEFAULT_HDMI_MODE); + file_save_config(DEFAULT_RESOLUTION, DEFAULT_REFRESH, DEFAULT_SCALING, DEFAULT_FILTERING, frontend, DEFAULT_HDMI_MODE, auto_workaround_path); // Wait a while to allow UART time to empty delay_in_arm_cycles_cpu_adjust(200000000); reboot(); @@ -3355,7 +3364,7 @@ void rgb_to_hdmi_main() { if (last_subprofile != subprofile || restart_profile) { ntsc_status = (modeset << NTSC_LAST_IIGS_SHIFT) | (ntsccolour << NTSC_LAST_ARTIFACT_SHIFT); } - +geometry_get_fb_params(capinfo); restart_profile = 0; last_divider = cpld->get_divider(); last_sync_edge = cpld->get_sync_edge(); @@ -3375,7 +3384,7 @@ void rgb_to_hdmi_main() { // force recalculation of the HDMI clock (if the vlockmode property requires this) recalculate_hdmi_clock_line_locked_update(GENLOCK_FORCE); - log_info("Screen size = %dx%d",get_hdisplay() + config_overscan_left + config_overscan_right, get_vdisplay() + config_overscan_top + config_overscan_bottom); + log_info("Screen size = %dx%d", get_hdisplay(), get_vdisplay()); log_info("Pitch=%d, width=%d, height=%d, sizex2=%d, bpp=%d", capinfo->pitch, capinfo->width, capinfo->height, capinfo->sizex2, capinfo->bpp); log_info("chars=%d, nlines=%d, hoffset=%d, voffset=%d, ncapture=%d", capinfo->chars_per_line, capinfo->nlines, capinfo->h_offset, capinfo-> v_offset, capinfo->ncapture); log_info("palctrl=%d, samplewidth=%d, hadjust=%d, vadjust=%d, sync=0x%x", capinfo->palette_control, capinfo->sample_width, capinfo->h_adjust, capinfo->v_adjust, capinfo->sync_type); @@ -3482,8 +3491,8 @@ void rgb_to_hdmi_main() { if (osd_timer > 0 && osd_timer < POWERUP_MESSAGE_TIME) { if (resolution_status) { log_info("Display startup message"); - int h_size = get_hdisplay() + config_overscan_left + config_overscan_right; - int v_size = get_vdisplay() + config_overscan_top + config_overscan_bottom; + int h_size = get_hdisplay(); + int v_size = get_vdisplay(); if (sync_detected) { sprintf(osdline, "%d x %d @ %dHz", h_size, v_size, info_display_vsync_freq_hz); } else { @@ -3730,15 +3739,15 @@ int show_detected_status(int line) { osd_set(line++, 0, message); sprintf(message, " FB Bit Depth: %d", capinfo->bpp); osd_set(line++, 0, message); - int h_size = get_hdisplay() + config_overscan_left + config_overscan_right; - int v_size = get_vdisplay() + config_overscan_top + config_overscan_bottom; - sprintf(message, " Pi Resolution: %d x %d (%d x %d)", h_size, v_size, get_hdisplay() - h_overscan, get_vdisplay() - v_overscan); + int h_size = get_hdisplay() - config_overscan_left - config_overscan_right; + int v_size = get_vdisplay() - config_overscan_top - config_overscan_bottom; + sprintf(message, " Pi Resolution: %d x %d (%d x %d)", get_hdisplay(), get_true_vdisplay(), h_size, v_size); osd_set(line++, 0, message); sprintf(message, " Pi Frame rate: %d Hz (%.2f Hz)", info_display_vsync_freq_hz, info_display_vsync_freq); osd_set(line++, 0, message); sprintf(message, " Pi Overscan: %d x %d (%d x %d)", h_overscan + config_overscan_left + config_overscan_right, v_overscan + config_overscan_top + config_overscan_bottom, adj_h_overscan + config_overscan_left + config_overscan_right, adj_v_overscan + config_overscan_top + config_overscan_bottom); osd_set(line++, 0, message); - sprintf(message, " Scaling: %.2f x %.2f", ((double)(get_hdisplay() - h_overscan)) / capinfo->width, ((double)(get_vdisplay() - v_overscan)) / capinfo->height); + sprintf(message, " Scaling: %.2f x %.2f", ((double)(get_hdisplay() - h_overscan - config_overscan_left - config_overscan_right)) / capinfo->width,((double)(get_vdisplay() - v_overscan - config_overscan_top - config_overscan_bottom) / capinfo->height)); osd_set(line++, 0, message); return (line); diff --git a/src/rgb_to_hdmi.h b/src/rgb_to_hdmi.h index 800f453e..368ae8f9 100644 --- a/src/rgb_to_hdmi.h +++ b/src/rgb_to_hdmi.h @@ -17,6 +17,8 @@ int get_paletteControl(); void set_force_genlock_range(int value); void set_resolution(int mode, const char *name, int reboot); int get_resolution(); +void set_auto_workaround_path(char *value, int reboot); +void reboot(void); void set_refresh(int value, int reboot); int get_refresh(); void set_hdmi(int value, int reboot); From e5ecd18b94b48334e2ece378b5571d1366557747 Mon Sep 17 00:00:00 2001 From: IanSB Date: Fri, 24 Feb 2023 23:30:58 +0000 Subject: [PATCH 05/46] Fix issue with overscan settings not changing frame buffer --- src/rgb_to_hdmi.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/rgb_to_hdmi.c b/src/rgb_to_hdmi.c index 2fd99f6d..9ea5483a 100644 --- a/src/rgb_to_hdmi.c +++ b/src/rgb_to_hdmi.c @@ -3611,9 +3611,14 @@ geometry_get_fb_params(capinfo); clear = 0; + capinfo->width = capinfo->width - config_overscan_left - config_overscan_right; + capinfo->height = capinfo->height - config_overscan_top - config_overscan_bottom; // Possibly the size or offset has been adjusted, so update current capinfo memcpy(&last_capinfo, capinfo, sizeof last_capinfo); memcpy(&last_clkinfo, &clkinfo, sizeof last_clkinfo); + capinfo->width = capinfo->width + config_overscan_left + config_overscan_right; + capinfo->height = capinfo->height + config_overscan_top + config_overscan_bottom; + if (result & RET_EXPIRED) { ncapture = osd_key(OSD_EXPIRED); @@ -3636,7 +3641,7 @@ geometry_get_fb_params(capinfo); } capinfo->palette_control |= (get_inhibit_palette_dimming16() << 31); - fb_size_changed = (capinfo->width != last_capinfo.width) || (capinfo->height != last_capinfo.height) || (capinfo->bpp != last_capinfo.bpp) || (capinfo->sample_width != last_capinfo.sample_width || last_gscaling != gscaling); + fb_size_changed = ((capinfo->width - config_overscan_left - config_overscan_right) != last_capinfo.width) || ((capinfo->height - config_overscan_top - config_overscan_bottom) != last_capinfo.height) || (capinfo->bpp != last_capinfo.bpp) || (capinfo->sample_width != last_capinfo.sample_width || last_gscaling != gscaling); if (result & RET_INTERLACE_CHANGED) { log_info("Interlace changed, HT = %d", hsync_threshold); From d48e576fde0b0bcbb12797573ef9d2bfffad83ca Mon Sep 17 00:00:00 2001 From: IanSB Date: Sat, 25 Feb 2023 12:35:57 +0000 Subject: [PATCH 06/46] Add odd / even pixel doubling option (Primarily for Superboard II) --- src/capture_line_default_sixbits_8bpp_16bpp.S | 54 +++++++++++++++++++ ...e_line_default_sixbits_double_8bpp_16bpp.S | 37 +++++++++++++ src/cpld_yuv.c | 6 ++- src/geometry.c | 2 +- src/macros.S | 33 ++++++++++++ src/osd.c | 28 +++++----- src/osd.h | 10 +--- src/rgb_to_fb.S | 39 ++++++++++++++ src/rgb_to_fb.h | 1 + 9 files changed, 185 insertions(+), 25 deletions(-) diff --git a/src/capture_line_default_sixbits_8bpp_16bpp.S b/src/capture_line_default_sixbits_8bpp_16bpp.S index bacf495b..46f72483 100644 --- a/src/capture_line_default_sixbits_8bpp_16bpp.S +++ b/src/capture_line_default_sixbits_8bpp_16bpp.S @@ -6,6 +6,7 @@ .text .global capture_line_default_sixbits_8bpp +.global capture_line_default_odd_even_sixbits_8bpp .global capture_line_default_sixbits_16bpp .extern palette_data_16 @@ -115,6 +116,59 @@ preload_capture_line_default_sixbits_8bpp: .ltorg + + + // *** 8 bit *** + .align 6 + b preload_capture_line_default_odd_even_sixbits_8bpp +capture_line_default_odd_even_sixbits_8bpp: + push {lr} + SETUP_VSYNC_DEBUG_R11_R12 + SKIP_PSYNC_NO_OLD_CPLD + mov r1, r1, lsr #2 +loop_oe8bpp: + WAIT_FOR_PSYNC_EDGE_FAST // expects GPLEV0 in r4, result in r8 + CAPTURE_LOW_BITS_ODD_EVEN_8BPP_WIDE r11 // input in r8 + WAIT_FOR_PSYNC_EDGE_FAST // expects GPLEV0 in r4, result in r8 + CAPTURE_HIGH_BITS_ODD_EVEN_8BPP_WIDE r5 // input in r8 + WAIT_FOR_PSYNC_EDGE_FAST // expects GPLEV0 in r4, result in r8 + CAPTURE_LOW_BITS_ODD_EVEN_8BPP_WIDE r12 // input in r8 + WAIT_FOR_PSYNC_EDGE_FAST // expects GPLEV0 in r4, result in r8 + CAPTURE_HIGH_BITS_ODD_EVEN_8BPP_WIDE r6 // input in r8 + + WRITE_R5_R6_IF_LAST + cmp r1, #1 + popeq {r0, pc} + + WAIT_FOR_PSYNC_EDGE_FAST // expects GPLEV0 in r4, result in r8 + CAPTURE_LOW_BITS_ODD_EVEN_8BPP_WIDE r11 // input in r8 + WAIT_FOR_PSYNC_EDGE_FAST // expects GPLEV0 in r4, result in r8 + CAPTURE_HIGH_BITS_ODD_EVEN_8BPP_WIDE r7 // input in r8 + WAIT_FOR_PSYNC_EDGE_FAST // expects GPLEV0 in r4, result in r8 + CAPTURE_LOW_BITS_ODD_EVEN_8BPP_WIDE r12 // input in r8 + WAIT_FOR_PSYNC_EDGE_FAST // expects GPLEV0 in r4, result in r8 + CAPTURE_HIGH_BITS_ODD_EVEN_8BPP_WIDE r10 // input in r8 + + WRITE_R5_R6_R7_R10 + + subs r1, r1, #2 + bne loop_oe8bpp + + pop {r0, pc} + + +preload_capture_line_default_odd_even_sixbits_8bpp: + SETUP_DUMMY_PARAMETERS + b capture_line_default_odd_even_sixbits_8bpp + + .ltorg + + + + + + + // *** 16 bit *** .align 6 b preload_capture_line_default_sixbits_16bpp diff --git a/src/capture_line_default_sixbits_double_8bpp_16bpp.S b/src/capture_line_default_sixbits_double_8bpp_16bpp.S index 393d95f4..1095e840 100644 --- a/src/capture_line_default_sixbits_double_8bpp_16bpp.S +++ b/src/capture_line_default_sixbits_double_8bpp_16bpp.S @@ -6,6 +6,7 @@ .text .global capture_line_default_sixbits_double_8bpp +.global capture_line_default_odd_even_sixbits_double_8bpp .global capture_line_default_sixbits_double_16bpp // The capture line function is provided the following: @@ -94,6 +95,42 @@ preload_capture_line_default_sixbits_double_8bpp: b capture_line_default_sixbits_double_8bpp .ltorg + // *** 8 bit *** + .align 6 + b preload_capture_line_default_odd_even_sixbits_double_8bpp +capture_line_default_odd_even_sixbits_double_8bpp: + push {lr} + SETUP_VSYNC_DEBUG_R11_R12_DOUBLE + SKIP_PSYNC_NO_OLD_CPLD + mov r1, r1, lsr #1 +loop_oe8bpp: + WAIT_FOR_PSYNC_EDGE_FAST // expects GPLEV0 in r4, result in r8 + CAPTURE_BITS_DOUBLE_ODD_EVEN_8BPP_WIDE r11 r5 // input in r8 + WAIT_FOR_PSYNC_EDGE_FAST // expects GPLEV0 in r4, result in r8 + CAPTURE_BITS_DOUBLE_ODD_EVEN_8BPP_WIDE r12 r6 // input in r8 + + WRITE_R5_R6_IF_LAST + cmp r1, #1 + popeq {r0, pc} + + WAIT_FOR_PSYNC_EDGE_FAST // expects GPLEV0 in r4, result in r8 + CAPTURE_BITS_DOUBLE_ODD_EVEN_8BPP_WIDE r11 r7 // input in r8 + WAIT_FOR_PSYNC_EDGE_FAST // expects GPLEV0 in r4, result in r8 + CAPTURE_BITS_DOUBLE_ODD_EVEN_8BPP_WIDE r12 r10 // input in r8 + + WRITE_R5_R6_R7_R10 + + subs r1, r1, #2 + bne loop_oe8bpp + + pop {r0, pc} + + +preload_capture_line_default_odd_even_sixbits_double_8bpp: + SETUP_DUMMY_PARAMETERS + b capture_line_default_odd_even_sixbits_double_8bpp + .ltorg + // *** 16 bit *** .align 6 b preload_capture_line_default_sixbits_double_16bpp diff --git a/src/cpld_yuv.c b/src/cpld_yuv.c index 94e7700f..4cfd69a0 100644 --- a/src/cpld_yuv.c +++ b/src/cpld_yuv.c @@ -1070,7 +1070,11 @@ static void cpld_update_capture_info(capture_info_t *capinfo) { // Update the sample width capinfo->sample_width = SAMPLE_WIDTH_6; // Update the line capture function - capinfo->capture_line = capture_line_normal_6bpp_table; + if (get_parameter(F_YUV_PIXEL) == 0) { + capinfo->capture_line = capture_line_normal_6bpp_table; + } else { + capinfo->capture_line = capture_line_normal_odd_even_6bpp_table; + } } write_config(config, DAC_UPDATE); } diff --git a/src/geometry.c b/src/geometry.c index ccb99f0a..81aba4f4 100644 --- a/src/geometry.c +++ b/src/geometry.c @@ -683,7 +683,7 @@ void geometry_get_fb_params(capture_info_t *capinfo) { vscale = 1; } - if (h_aspect != 0 && v_aspect !=0) { + if (h_aspect != 0 && v_aspect !=0 && get_parameter(F_ASPECT) == 0) { int new_hs = hscale; int new_vs = vscale; double h_ratio; diff --git a/src/macros.S b/src/macros.S index 157531c7..993f1bd2 100644 --- a/src/macros.S +++ b/src/macros.S @@ -809,6 +809,26 @@ skip_psync_loop_simple_fast_loop\@: eor \reg, r10, r14, lsl #(24 - (PIXEL_BASE + 6)) .endm +.macro CAPTURE_LOW_BITS_ODD_EVEN_8BPP_WIDE reg + // Pixel 0 in GPIO 7.. 2 -> 7.. 0 + // Pixel 1 in GPIO 13.. 8 -> 15.. 8 + + and r9, r8, #(0x3f << PIXEL_BASE) + and r14, r8, #(0x3f << (PIXEL_BASE)) + eor r10, \reg, r9, lsr #(PIXEL_BASE) + eor r10, r10, r14, lsl #(8 - (PIXEL_BASE)) +.endm + +.macro CAPTURE_HIGH_BITS_ODD_EVEN_8BPP_WIDE reg + // Pixel 2 in GPIO 7.. 2 -> 23..16 + // Pixel 3 in GPIO 13.. 8 -> 31..24 + + and r9, r8, #(0x3f << PIXEL_BASE) + and r14, r8, #(0x3f << (PIXEL_BASE)) + eor r10, r10, r9, lsl #(16 - PIXEL_BASE) + eor \reg, r10, r14, lsl #(24 - (PIXEL_BASE)) +.endm + .macro CAPTURE_BITS_DOUBLE_8BPP_WIDE reg reg2 // Pixel 0 in GPIO 7.. 2 -> 7.. 0 // Pixel 1 in GPIO 13.. 8 -> 23..16 @@ -821,6 +841,19 @@ skip_psync_loop_simple_fast_loop\@: orr \reg2, r10, r10, lsl #8 .endm +.macro CAPTURE_BITS_DOUBLE_ODD_EVEN_8BPP_WIDE reg reg2 + // Pixel 0 in GPIO 7.. 2 -> 7.. 0 + // Pixel 1 in GPIO 13.. 8 -> 23..16 + + and r9, r8, #(0x3f << PIXEL_BASE) + and r14, r8, #(0x3f << (PIXEL_BASE)) + eor r10, \reg, r9, lsr #(PIXEL_BASE) + eor r10, r10, r14, lsl #(16 - (PIXEL_BASE)) + // Pixel double + orr \reg2, r10, r10, lsl #8 +.endm + + .macro CAPTURE_SIX_BITS_16BPP reg1 reg2 // Pixel 0 in GPIO 7.. 2 -> 7.. 0 // Pixel 1 in GPIO 13.. 8 -> 15.. 8 diff --git a/src/osd.c b/src/osd.c index 8b7f8ed8..d0661faf 100644 --- a/src/osd.c +++ b/src/osd.c @@ -332,16 +332,17 @@ static const char *saved_config_names[] = { "Alt 4" }; +static const char *integer_names[] = { + "Normal", + "Maximise" +}; + + static const char *alt_profile_names[] = { "Set 1", "Set 2" }; -static const char *yuv_pixel_double_names[] = { - "Off", - "Odd", - "Even" -}; // ============================================================= // Feature definitions @@ -402,8 +403,8 @@ static param_t features[] = { { F_OCLOCK_SDRAM, "Overclock SDRAM", "overclock_sdram", 0, 200, 1 }, { F_RSTATUS, "Powerup Message", "powerup_message", 0, 1, 1 }, - { F_YUV_PIXEL, "YUV Pixel Double", "yuv_pixel_double", 0, NUM_PIXEL_DOUBLE-1, 1 }, - { F_NULA_NARROW, "NuLA Narrow Mode7", "nula_narrow_mode7", 0, 1, 1 }, + { F_YUV_PIXEL, "YUV Pixel Double", "yuv_pixel_double", 0, 1, 1 }, + { F_ASPECT, "Integer Aspect", "integer_aspect", 0, 1, 1 }, { F_FRONTEND, "Interface", "interface", 0, NUM_FRONTENDS - 1, 1 }, { -1, NULL, NULL, 0, 0, 0 } @@ -586,8 +587,7 @@ static param_menu_item_t oclock_core_ref = { I_FEATURE, &features[F_OCLOCK_C static param_menu_item_t oclock_sdram_ref = { I_FEATURE, &features[F_OCLOCK_SDRAM] }; static param_menu_item_t res_status_ref = { I_FEATURE, &features[F_RSTATUS] }; static param_menu_item_t yuv_pixel_ref = { I_FEATURE, &features[F_YUV_PIXEL] }; -static param_menu_item_t nula_narrow_ref = { I_FEATURE, &features[F_NULA_NARROW] }; - +static param_menu_item_t aspect_ref = { I_FEATURE, &features[F_ASPECT] }; #ifndef HIDE_INTERFACE_SETTING static param_menu_item_t frontend_ref = { I_FEATURE, &features[F_FRONTEND] }; #endif @@ -650,6 +650,7 @@ static menu_t preferences_menu = { (base_menu_item_t *) &normalscaling_ref, (base_menu_item_t *) &capscale_ref, (base_menu_item_t *) &yuv_pixel_ref, + (base_menu_item_t *) &aspect_ref, (base_menu_item_t *) &res_status_ref, NULL } @@ -673,7 +674,6 @@ static menu_t settings_menu = { (base_menu_item_t *) &oclock_cpu_ref, (base_menu_item_t *) &oclock_core_ref, (base_menu_item_t *) &oclock_sdram_ref, - (base_menu_item_t *) &nula_narrow_ref, (base_menu_item_t *) &debug_ref, NULL } @@ -1201,7 +1201,7 @@ static int get_feature(int num) { return get_res_status(); case F_YUV_PIXEL: - case F_NULA_NARROW: + case F_ASPECT: return get_parameter(num); } @@ -1432,8 +1432,8 @@ static void set_feature(int num, int value) { set_res_status(value); break; - case F_NULA_NARROW: case F_YUV_PIXEL: + case F_ASPECT: set_parameter(num, value); break; @@ -1580,8 +1580,8 @@ static const char *get_param_string(param_menu_item_t *param_item) { return fringe_names[value]; case F_TIMINGSET: return alt_profile_names[value]; - case F_YUV_PIXEL: - return yuv_pixel_double_names[value]; + case F_ASPECT: + return integer_names[value]; } } else if (type == I_GEOMETRY) { const char *value_str = geometry_get_value_string(param->key); diff --git a/src/osd.h b/src/osd.h index aeea3375..93348127 100644 --- a/src/osd.h +++ b/src/osd.h @@ -221,14 +221,6 @@ enum { NUM_NTSCTYPE }; -enum { - PIXEL_DOUBLE_OFF, - PIXEL_DOUBLE_ODD, - PIXEL_DOUBLE_EVEN, - NUM_PIXEL_DOUBLE -}; - - enum { F_AUTOSWITCH, F_RESOLUTION, @@ -281,7 +273,7 @@ enum { F_OCLOCK_SDRAM, F_RSTATUS, F_YUV_PIXEL, - F_NULA_NARROW, + F_ASPECT, F_FRONTEND, //must be last MAX_PARAMETERS diff --git a/src/rgb_to_fb.S b/src/rgb_to_fb.S index b4e2456d..47b41430 100644 --- a/src/rgb_to_fb.S +++ b/src/rgb_to_fb.S @@ -75,6 +75,7 @@ .global capture_line_normal_1bpp_table .global capture_line_normal_3bpp_table .global capture_line_normal_6bpp_table +.global capture_line_normal_odd_even_6bpp_table .global capture_line_normal_9bpplo_table .global capture_line_normal_9bpphi_table .global capture_line_normal_12bpp_table @@ -2485,6 +2486,44 @@ capture_line_normal_6bpp_table: .word capture_line_fast_sixbits_16bpp .word capture_line_fast_sixbits_8bpp +capture_line_normal_odd_even_6bpp_table: + .word capture_line_default_sixbits_16bpp + .word capture_line_default_odd_even_sixbits_8bpp + .word capture_line_default_sixbits_16bpp // placeholder inband + .word capture_line_default_odd_even_sixbits_8bpp // placeholder inband + .word capture_line_ntsc_sixbits_16bpp_cga + .word capture_line_ntsc_sixbits_8bpp_cga + .word capture_line_ntsc_sixbits_16bpp_mono + .word capture_line_ntsc_sixbits_8bpp_mono + .word capture_line_ntsc_sixbits_16bpp_mono_auto + .word capture_line_ntsc_sixbits_8bpp_mono_auto + .word capture_line_default_sixbits_16bpp + .word capture_line_default_sixbits_8bpp + .word capture_line_default_sixbits_16bpp + .word capture_line_atari_sixbits_8bpp + .word capture_line_default_sixbits_16bpp + .word capture_line_c64lc_sixbits_8bpp + + .word capture_line_default_sixbits_double_16bpp + .word capture_line_default_odd_even_sixbits_double_8bpp + .word capture_line_default_sixbits_double_16bpp // placeholder inband + .word capture_line_default_odd_even_sixbits_double_8bpp // placeholder inband + .word capture_line_default_sixbits_double_16bpp // placeholder ntsc + .word capture_line_ntsc_sixbits_double_8bpp_mono // placeholder ntsc + .word capture_line_default_sixbits_double_16bpp // placeholder ntsc + .word capture_line_ntsc_sixbits_double_8bpp_mono // for tandy coco 1 & 2 + .word capture_line_default_sixbits_double_16bpp // placeholder ntsc + .word capture_line_ntsc_sixbits_double_8bpp_mono_auto // for tandy coco 1 & 2 auto switches if UV = no colour + .word capture_line_default_sixbits_double_16bpp + .word capture_line_default_sixbits_double_8bpp + .word capture_line_default_sixbits_double_16bpp + .word capture_line_atari_sixbits_double_8bpp + .word capture_line_default_sixbits_double_16bpp + .word capture_line_c64lc_sixbits_double_8bpp + + .word capture_line_default_sixbits_double_16bpp + .word capture_line_default_odd_even_sixbits_double_8bpp + capture_line_normal_9bpplo_table: .word capture_line_default_ninebitslo_16bpp .word capture_line_default_eightbits_8bpp diff --git a/src/rgb_to_fb.h b/src/rgb_to_fb.h index 0fc9e593..b9814210 100644 --- a/src/rgb_to_fb.h +++ b/src/rgb_to_fb.h @@ -36,6 +36,7 @@ extern int capture_line_mode7_3bpp_table(); extern int capture_line_normal_1bpp_table(); extern int capture_line_normal_3bpp_table(); extern int capture_line_normal_6bpp_table(); +extern int capture_line_normal_odd_even_6bpp_table(); extern int capture_line_normal_9bpplo_table(); extern int capture_line_normal_9bpphi_table(); extern int capture_line_normal_12bpp_table(); From ab3963c4f5a0a774c85ccbb40a8003c72b2eebdc Mon Sep 17 00:00:00 2001 From: IanSB Date: Sat, 25 Feb 2023 15:41:12 +0000 Subject: [PATCH 07/46] Refactor autoswitch, debug, powerup message & num buffers --- src/cpld_yuv.c | 2 +- src/geometry.c | 4 +- src/osd.c | 539 +++++++++++++++++++++++----------------------- src/osd.h | 72 +++---- src/rgb_to_hdmi.c | 131 +++++------ src/rgb_to_hdmi.h | 11 +- 6 files changed, 358 insertions(+), 401 deletions(-) diff --git a/src/cpld_yuv.c b/src/cpld_yuv.c index 4cfd69a0..7f99d315 100644 --- a/src/cpld_yuv.c +++ b/src/cpld_yuv.c @@ -1070,7 +1070,7 @@ static void cpld_update_capture_info(capture_info_t *capinfo) { // Update the sample width capinfo->sample_width = SAMPLE_WIDTH_6; // Update the line capture function - if (get_parameter(F_YUV_PIXEL) == 0) { + if (get_parameter(F_YUV_PIXEL_DOUBLE) == 0) { capinfo->capture_line = capture_line_normal_6bpp_table; } else { capinfo->capture_line = capture_line_normal_odd_even_6bpp_table; diff --git a/src/geometry.c b/src/geometry.c index 81aba4f4..4c7b0c28 100644 --- a/src/geometry.c +++ b/src/geometry.c @@ -411,7 +411,7 @@ void geometry_get_fb_params(capture_info_t *capinfo) { capinfo->sync_type = geometry->sync_type; capinfo->vsync_type = geometry->vsync_type; capinfo->video_type = geometry->video_type; - capinfo->autoswitch = get_autoswitch(); + capinfo->autoswitch = get_parameter(F_AUTO_SWITCH); capinfo->timingset = modeset; capinfo->sync_edge = cpld->get_sync_edge(); @@ -683,7 +683,7 @@ void geometry_get_fb_params(capture_info_t *capinfo) { vscale = 1; } - if (h_aspect != 0 && v_aspect !=0 && get_parameter(F_ASPECT) == 0) { + if (h_aspect != 0 && v_aspect !=0 && get_parameter(F_INTEGER_ASPECT) == 0) { int new_hs = hscale; int new_vs = vscale; double h_ratio; diff --git a/src/osd.c b/src/osd.c index d0661faf..12a22a16 100644 --- a/src/osd.c +++ b/src/osd.c @@ -351,62 +351,62 @@ static const char *alt_profile_names[] = { static param_t features[] = { - { F_AUTOSWITCH, "Auto Switch", "auto_switch", 0, NUM_AUTOSWITCHES - 1, 1 }, - { F_RESOLUTION, "Resolution", "resolution", 0, 0, 1 }, - { F_REFRESH, "Refresh", "refresh", 0, NUM_REFRESH - 1, 1 }, - { F_HDMI, "HDMI Mode", "hdmi_mode", 0, NUM_HDMIS - 1, 1 }, - { F_HDMI_STANDBY, "HDMI Grey Standby", "hdmi_standby", 0, 1, 1 }, - { F_SCALING, "Scaling", "scaling", 0, NUM_SCALING - 1, 1 }, - { F_PROFILE, "Profile", "profile", 0, 0, 1 }, - { F_SAVED, "Saved Config", "saved_config", 0, 4, 1 }, - { F_SUBPROFILE, "Sub-Profile", "subprofile", 0, 0, 1 }, - { F_PALETTE, "Palette", "palette", 0, 0, 1 }, - { F_PALETTECONTROL, "Palette Control", "palette_control", 0, NUM_CONTROLS - 1, 1 }, - { F_NTSCCOLOUR, "Artifact Colour", "ntsc_colour", 0, 1, 1 }, - { F_NTSCPHASE, "Artifact Phase", "ntsc_phase", 0, 3, 1 }, - { F_NTSCTYPE, "Artifact Type", "ntsc_type", 0, NUM_NTSCTYPE - 1, 1 }, - { F_NTSCFRINGE, "Artifact Quality", "ntsc_quality", 0, NUM_FRINGE - 1, 1 }, - { F_TINT, "Tint", "tint",-60, 60, 1 }, - { F_SAT, "Saturation", "saturation", 0, 200, 1 }, - { F_CONT, "Contrast", "contrast", 0, 200, 1 }, - { F_BRIGHT, "Brightness", "brightness", 0, 200, 1 }, - { F_GAMMA, "Gamma", "gamma", 10, 300, 1 }, - { F_TIMINGSET, "Timing Set", "timing_set", 0, 1, 1 }, - { F_M7DEINTERLACE,"Teletext Deinterlace","teletext_deinterlace", 0, NUM_M7DEINTERLACES - 1, 1 }, - { F_DEINTERLACE, "Normal Deinterlace", "normal_deinterlace", 0, NUM_DEINTERLACES - 1, 1 }, - { F_M7SCALING, "Teletext Scaling", "teletext_scaling", 0, NUM_ESCALINGS - 1, 1 }, - { F_NORMALSCALING, "Normal Scaling", "normal_scaling", 0, NUM_ESCALINGS - 1, 1 }, - { F_FFOSD, "FFOSD Overlay", "ffosd_overlay", 0, 1, 1 }, - { F_STRETCH,"Swap Aspect 625<>525", "swap_aspect", 0, 1, 1 }, - { F_COLOUR, "Output Colour", "output_colour", 0, NUM_COLOURS - 1, 1 }, - { F_INVERT, "Output Invert", "output_invert", 0, NUM_INVERT - 1, 1 }, - { F_SCANLINES, "Scanlines", "scanlines", 0, 1, 1 }, - { F_SCANLINESINT, "Scanline Level", "scanline_level", 0, 14, 1 }, - { F_OVERSCAN,"Crop Border (Zoom)", "crop_border", 0, NUM_OVERSCAN - 1, 1 }, - { F_CAPSCALE, "ScreenCap Size", "screencap_size", 0, NUM_SCREENCAP - 1, 1 }, - { F_FONTSIZE, "Font Size", "font_size", 0, NUM_FONTSIZE - 1, 1 }, - { F_BORDER, "Border Colour", "border_colour", 0, 255, 1 }, - { F_VSYNC, "V Sync Indicator", "vsync_indicator", 0, 1, 1 }, - { F_VLOCKMODE, "Genlock Mode", "genlock_mode", 0, NUM_HDMI - 1, 1 }, - { F_VLOCKLINE, "Genlock Line", "genlock_line",35, 312, 1 }, - { F_VLOCKSPEED, "Genlock Speed", "genlock_speed", 0, NUM_VLOCKSPEED - 1, 1 }, - { F_VLOCKADJ, "Genlock Adjust", "genlock_adjust", 0, NUM_VLOCKADJ - 1, 1 }, + { F_AUTO_SWITCH, "Auto Switch", "auto_switch", 0, NUM_AUTOSWITCHES - 1, 1 }, + { F_RESOLUTION, "Resolution", "resolution", 0, 0, 1 }, + { F_REFRESH, "Refresh", "refresh", 0, NUM_REFRESH - 1, 1 }, + { F_HDMI_MODE, "HDMI Mode", "hdmi_mode", 0, NUM_HDMIS - 1, 1 }, + { F_HDMI_MODE_STANDBY, "HDMI Grey Standby", "hdmi_standby", 0, 1, 1 }, + { F_SCALING, "Scaling", "scaling", 0, NUM_SCALING - 1, 1 }, + { F_PROFILE, "Profile", "profile", 0, 0, 1 }, + { F_SAVED_CONFIG, "Saved Config", "saved_config", 0, 4, 1 }, + { F_SUB_PROFILE, "Sub-Profile", "subprofile", 0, 0, 1 }, + { F_PALETTE, "Palette", "palette", 0, 0, 1 }, + { F_PALETTE_CONTROL, "Palette Control", "palette_control", 0, NUM_CONTROLS - 1, 1 }, + { F_NTSC_COLOUR, "Artifact Colour", "ntsc_colour", 0, 1, 1 }, + { F_NTSC_PHASE, "Artifact Phase", "ntsc_phase", 0, 3, 1 }, + { F_NTSC_TYPE, "Artifact Type", "ntsc_type", 0, NUM_NTSCTYPE - 1, 1 }, + { F_NTSC_QUALITY, "Artifact Quality", "ntsc_quality", 0, NUM_FRINGE - 1, 1 }, + { F_TINT, "Tint", "tint",-60, 60, 1 }, + { F_SAT, "Saturation", "saturation", 0, 200, 1 }, + { F_CONT, "Contrast", "contrast", 0, 200, 1 }, + { F_BRIGHT, "Brightness", "brightness", 0, 200, 1 }, + { F_GAMMA, "Gamma", "gamma", 10, 300, 1 }, + { F_TIMING_SET, "Timing Set", "timing_set", 0, 1, 1 }, + { F_MODE7_DEINTERLACE,"Teletext Deinterlace","teletext_deinterlace", 0, NUM_M7DEINTERLACES - 1, 1 }, + { F_NORMAL_DEINTERLACE, "Normal Deinterlace", "normal_deinterlace", 0, NUM_DEINTERLACES - 1, 1 }, + { F_MODE7_SCALING, "Teletext Scaling", "teletext_scaling", 0, NUM_ESCALINGS - 1, 1 }, + { F_NORMAL_SCALING, "Normal Scaling", "normal_scaling", 0, NUM_ESCALINGS - 1, 1 }, + { F_FFOSD, "FFOSD Overlay", "ffosd_overlay", 0, 1, 1 }, + { F_SWAP_ASPECT,"Swap Aspect 625<>525", "swap_aspect", 0, 1, 1 }, + { F_OUTPUT_COLOUR, "Output Colour", "output_colour", 0, NUM_COLOURS - 1, 1 }, + { F_OUTPUT_INVERT, "Output Invert", "output_invert", 0, NUM_INVERT - 1, 1 }, + { F_SCANLINES, "Scanlines", "scanlines", 0, 1, 1 }, + { F_SCANLINE_LEVEL, "Scanline Level", "scanline_level", 0, 14, 1 }, + { F_CROP_BORDER,"Crop Border (Zoom)", "crop_border", 0, NUM_OVERSCAN - 1, 1 }, + { F_SCREENCAP_SIZE, "ScreenCap Size", "screencap_size", 0, NUM_SCREENCAP - 1, 1 }, + { F_FONT_SIZE, "Font Size", "font_size", 0, NUM_FONTSIZE - 1, 1 }, + { F_BORDER_COLOUR, "Border Colour", "border_colour", 0, 255, 1 }, + { F_VSYNC_INDICATOR, "V Sync Indicator", "vsync_indicator", 0, 1, 1 }, + { F_GENLOCK_MODE, "Genlock Mode", "genlock_mode", 0, NUM_HDMI - 1, 1 }, + { F_GENLOCK_LINE, "Genlock Line", "genlock_line",35, 312, 1 }, + { F_GENLOCK_LOCKSPEED, "Genlock Speed", "genlock_speed", 0, NUM_VLOCKSPEED - 1, 1 }, + { F_VLOCKADJ, "Genlock Adjust", "genlock_adjust", 0, NUM_VLOCKADJ - 1, 1 }, #ifdef MULTI_BUFFER - { F_NBUFFERS, "Num Buffers", "num_buffers", 0, 3, 1 }, + { F_NUM_BUFFERS, "Num Buffers", "num_buffers", 0, 3, 1 }, #endif - { F_RETURN, "Return Position", "return", 0, 1, 1 }, - { F_DEBUG, "Debug", "debug", 0, 1, 1 }, - { F_DIRECTION, "Button Reverse", "button_reverse", 0, 1, 1 }, + { F_RETURN_POSITION, "Return Position", "return", 0, 1, 1 }, + { F_DEBUG, "Debug", "debug", 0, 1, 1 }, + { F_BUTTON_REVERSE, "Button Reverse", "button_reverse", 0, 1, 1 }, - { F_OCLOCK_CPU, "Overclock CPU", "overclock_cpu", 0, 200, 1 }, - { F_OCLOCK_CORE, "Overclock Core", "overclock_core", 0, 200, 1 }, - { F_OCLOCK_SDRAM, "Overclock SDRAM", "overclock_sdram", 0, 200, 1 }, - { F_RSTATUS, "Powerup Message", "powerup_message", 0, 1, 1 }, + { F_OVERCLOCK_CPU, "Overclock CPU", "overclock_cpu", 0, 200, 1 }, + { F_OVERCLOCK_CORE, "Overclock Core", "overclock_core", 0, 200, 1 }, + { F_OVERCLOCK_SDRAM, "Overclock SDRAM", "overclock_sdram", 0, 200, 1 }, + { F_POWERUP_MESSAGE, "Powerup Message", "powerup_message", 0, 1, 1 }, - { F_YUV_PIXEL, "YUV Pixel Double", "yuv_pixel_double", 0, 1, 1 }, - { F_ASPECT, "Integer Aspect", "integer_aspect", 0, 1, 1 }, + { F_YUV_PIXEL_DOUBLE, "YUV Pixel Double", "yuv_pixel_double", 0, 1, 1 }, + { F_INTEGER_ASPECT, "Integer Aspect", "integer_aspect", 0, 1, 1 }, - { F_FRONTEND, "Interface", "interface", 0, NUM_FRONTENDS - 1, 1 }, + { F_FRONTEND, "Interface", "interface", 0, NUM_FRONTENDS - 1, 1 }, { -1, NULL, NULL, 0, 0, 0 } }; @@ -537,57 +537,57 @@ static menu_t update_cpld_menu = { static param_menu_item_t profile_ref = { I_FEATURE, &features[F_PROFILE] }; -static param_menu_item_t saved_ref = { I_FEATURE, &features[F_SAVED] }; -static param_menu_item_t subprofile_ref = { I_FEATURE, &features[F_SUBPROFILE] }; +static param_menu_item_t saved_ref = { I_FEATURE, &features[F_SAVED_CONFIG] }; +static param_menu_item_t subprofile_ref = { I_FEATURE, &features[F_SUB_PROFILE] }; static param_menu_item_t resolution_ref = { I_FEATURE, &features[F_RESOLUTION] }; static param_menu_item_t refresh_ref = { I_FEATURE, &features[F_REFRESH] }; -static param_menu_item_t hdmi_ref = { I_FEATURE, &features[F_HDMI] }; -static param_menu_item_t hdmi_standby_ref = { I_FEATURE, &features[F_HDMI_STANDBY] }; +static param_menu_item_t hdmi_ref = { I_FEATURE, &features[F_HDMI_MODE] }; +static param_menu_item_t hdmi_standby_ref = { I_FEATURE, &features[F_HDMI_MODE_STANDBY] }; static param_menu_item_t scaling_ref = { I_FEATURE, &features[F_SCALING] }; -static param_menu_item_t overscan_ref = { I_FEATURE, &features[F_OVERSCAN] }; -static param_menu_item_t capscale_ref = { I_FEATURE, &features[F_CAPSCALE] }; -static param_menu_item_t border_ref = { I_FEATURE, &features[F_BORDER] }; -static param_menu_item_t palettecontrol_ref = { I_FEATURE, &features[F_PALETTECONTROL] }; -static param_menu_item_t ntsccolour_ref = { I_FEATURE, &features[F_NTSCCOLOUR] }; -static param_menu_item_t ntscphase_ref = { I_FEATURE, &features[F_NTSCPHASE] }; -static param_menu_item_t ntsctype_ref = { I_FEATURE, &features[F_NTSCTYPE] }; -static param_menu_item_t ntscfringe_ref = { I_FEATURE, &features[F_NTSCFRINGE] }; +static param_menu_item_t overscan_ref = { I_FEATURE, &features[F_CROP_BORDER] }; +static param_menu_item_t capscale_ref = { I_FEATURE, &features[F_SCREENCAP_SIZE] }; +static param_menu_item_t border_ref = { I_FEATURE, &features[F_BORDER_COLOUR] }; +static param_menu_item_t palettecontrol_ref = { I_FEATURE, &features[F_PALETTE_CONTROL] }; +static param_menu_item_t ntsccolour_ref = { I_FEATURE, &features[F_NTSC_COLOUR] }; +static param_menu_item_t ntscphase_ref = { I_FEATURE, &features[F_NTSC_PHASE] }; +static param_menu_item_t ntsctype_ref = { I_FEATURE, &features[F_NTSC_TYPE] }; +static param_menu_item_t ntscfringe_ref = { I_FEATURE, &features[F_NTSC_QUALITY] }; static param_menu_item_t tint_ref = { I_FEATURE, &features[F_TINT] }; static param_menu_item_t sat_ref = { I_FEATURE, &features[F_SAT] }; static param_menu_item_t cont_ref = { I_FEATURE, &features[F_CONT] }; static param_menu_item_t bright_ref = { I_FEATURE, &features[F_BRIGHT] }; static param_menu_item_t gamma_ref = { I_FEATURE, &features[F_GAMMA] }; -static param_menu_item_t timingset_ref = { I_FEATURE, &features[F_TIMINGSET] }; +static param_menu_item_t timingset_ref = { I_FEATURE, &features[F_TIMING_SET] }; static param_menu_item_t palette_ref = { I_FEATURE, &features[F_PALETTE] }; -static param_menu_item_t m7deinterlace_ref = { I_FEATURE, &features[F_M7DEINTERLACE] }; -static param_menu_item_t deinterlace_ref = { I_FEATURE, &features[F_DEINTERLACE] }; -static param_menu_item_t m7scaling_ref = { I_FEATURE, &features[F_M7SCALING] }; -static param_menu_item_t normalscaling_ref = { I_FEATURE, &features[F_NORMALSCALING] }; +static param_menu_item_t m7deinterlace_ref = { I_FEATURE, &features[F_MODE7_DEINTERLACE] }; +static param_menu_item_t deinterlace_ref = { I_FEATURE, &features[F_NORMAL_DEINTERLACE] }; +static param_menu_item_t m7scaling_ref = { I_FEATURE, &features[F_MODE7_SCALING] }; +static param_menu_item_t normalscaling_ref = { I_FEATURE, &features[F_NORMAL_SCALING] }; static param_menu_item_t ffosd_ref = { I_FEATURE, &features[F_FFOSD] }; -static param_menu_item_t stretch_ref = { I_FEATURE, &features[F_STRETCH] }; +static param_menu_item_t stretch_ref = { I_FEATURE, &features[F_SWAP_ASPECT] }; static param_menu_item_t scanlines_ref = { I_FEATURE, &features[F_SCANLINES] }; -static param_menu_item_t scanlinesint_ref = { I_FEATURE, &features[F_SCANLINESINT] }; -static param_menu_item_t colour_ref = { I_FEATURE, &features[F_COLOUR] }; -static param_menu_item_t invert_ref = { I_FEATURE, &features[F_INVERT] }; -static param_menu_item_t fontsize_ref = { I_FEATURE, &features[F_FONTSIZE] }; -static param_menu_item_t vsync_ref = { I_FEATURE, &features[F_VSYNC] }; -static param_menu_item_t vlockmode_ref = { I_FEATURE, &features[F_VLOCKMODE] }; -static param_menu_item_t vlockline_ref = { I_FEATURE, &features[F_VLOCKLINE] }; -static param_menu_item_t vlockspeed_ref = { I_FEATURE, &features[F_VLOCKSPEED] }; +static param_menu_item_t scanlinesint_ref = { I_FEATURE, &features[F_SCANLINE_LEVEL] }; +static param_menu_item_t colour_ref = { I_FEATURE, &features[F_OUTPUT_COLOUR] }; +static param_menu_item_t invert_ref = { I_FEATURE, &features[F_OUTPUT_INVERT] }; +static param_menu_item_t fontsize_ref = { I_FEATURE, &features[F_FONT_SIZE] }; +static param_menu_item_t vsync_ref = { I_FEATURE, &features[F_VSYNC_INDICATOR] }; +static param_menu_item_t vlockmode_ref = { I_FEATURE, &features[F_GENLOCK_MODE] }; +static param_menu_item_t vlockline_ref = { I_FEATURE, &features[F_GENLOCK_LINE] }; +static param_menu_item_t vlockspeed_ref = { I_FEATURE, &features[F_GENLOCK_LOCKSPEED] }; static param_menu_item_t vlockadj_ref = { I_FEATURE, &features[F_VLOCKADJ] }; #ifdef MULTI_BUFFER -static param_menu_item_t nbuffers_ref = { I_FEATURE, &features[F_NBUFFERS] }; +static param_menu_item_t nbuffers_ref = { I_FEATURE, &features[F_NUM_BUFFERS] }; #endif -static param_menu_item_t autoswitch_ref = { I_FEATURE, &features[F_AUTOSWITCH] }; -static param_menu_item_t return_ref = { I_FEATURE, &features[F_RETURN] }; +static param_menu_item_t autoswitch_ref = { I_FEATURE, &features[F_AUTO_SWITCH] }; +static param_menu_item_t return_ref = { I_FEATURE, &features[F_RETURN_POSITION] }; static param_menu_item_t debug_ref = { I_FEATURE, &features[F_DEBUG] }; -static param_menu_item_t direction_ref = { I_FEATURE, &features[F_DIRECTION] }; -static param_menu_item_t oclock_cpu_ref = { I_FEATURE, &features[F_OCLOCK_CPU] }; -static param_menu_item_t oclock_core_ref = { I_FEATURE, &features[F_OCLOCK_CORE] }; -static param_menu_item_t oclock_sdram_ref = { I_FEATURE, &features[F_OCLOCK_SDRAM] }; -static param_menu_item_t res_status_ref = { I_FEATURE, &features[F_RSTATUS] }; -static param_menu_item_t yuv_pixel_ref = { I_FEATURE, &features[F_YUV_PIXEL] }; -static param_menu_item_t aspect_ref = { I_FEATURE, &features[F_ASPECT] }; +static param_menu_item_t direction_ref = { I_FEATURE, &features[F_BUTTON_REVERSE] }; +static param_menu_item_t oclock_cpu_ref = { I_FEATURE, &features[F_OVERCLOCK_CPU] }; +static param_menu_item_t oclock_core_ref = { I_FEATURE, &features[F_OVERCLOCK_CORE] }; +static param_menu_item_t oclock_sdram_ref = { I_FEATURE, &features[F_OVERCLOCK_SDRAM] }; +static param_menu_item_t res_status_ref = { I_FEATURE, &features[F_POWERUP_MESSAGE] }; +static param_menu_item_t yuv_pixel_ref = { I_FEATURE, &features[F_YUV_PIXEL_DOUBLE] }; +static param_menu_item_t aspect_ref = { I_FEATURE, &features[F_INTEGER_ASPECT] }; #ifndef HIDE_INTERFACE_SETTING static param_menu_item_t frontend_ref = { I_FEATURE, &features[F_FRONTEND] }; #endif @@ -1014,36 +1014,36 @@ void set_menu_table() { main_menu.items[index++] = (base_menu_item_t *) &profile_ref; main_menu.items[index++] = (base_menu_item_t *) &autoswitch_ref; main_menu.items[index++] = (base_menu_item_t *) &subprofile_ref; - if (get_autoswitch() == AUTOSWITCH_IIGS_MANUAL || get_autoswitch() == AUTOSWITCH_MANUAL) main_menu.items[index++] = (base_menu_item_t *) &timingset_ref; + if (get_parameter(F_AUTO_SWITCH) == AUTOSWITCH_IIGS_MANUAL || get_parameter(F_AUTO_SWITCH) == AUTOSWITCH_MANUAL) main_menu.items[index++] = (base_menu_item_t *) &timingset_ref; if (single_button_mode) main_menu.items[index++] = (base_menu_item_t *) &direction_ref; main_menu.items[index++] = NULL; switch (_get_hardware_id()) { case 4: //pi 4 - features[F_OCLOCK_CPU].max = 200; - features[F_OCLOCK_CORE].max = 200; - features[F_OCLOCK_SDRAM].max = 200; + features[F_OVERCLOCK_CPU].max = 200; + features[F_OVERCLOCK_CORE].max = 200; + features[F_OVERCLOCK_SDRAM].max = 200; break; case 3: //pi zero 2 or Pi 3 - features[F_OCLOCK_CPU].max = 200; - features[F_OCLOCK_CORE].max = 100; - features[F_OCLOCK_SDRAM].max = 200; + features[F_OVERCLOCK_CPU].max = 200; + features[F_OVERCLOCK_CORE].max = 100; + features[F_OVERCLOCK_SDRAM].max = 200; break; case 2: //pi 2 - features[F_OCLOCK_CPU].max = 200; - features[F_OCLOCK_CORE].max = 175; - features[F_OCLOCK_SDRAM].max = 175; + features[F_OVERCLOCK_CPU].max = 200; + features[F_OVERCLOCK_CORE].max = 175; + features[F_OVERCLOCK_SDRAM].max = 175; break; default: if (core_clock == 250) { //pi 1 - features[F_OCLOCK_CPU].max = 100; - features[F_OCLOCK_CORE].max = 100; - features[F_OCLOCK_SDRAM].max = 175; + features[F_OVERCLOCK_CPU].max = 100; + features[F_OVERCLOCK_CORE].max = 100; + features[F_OVERCLOCK_SDRAM].max = 175; } else { //pi zero - features[F_OCLOCK_CPU].max = 75; - features[F_OCLOCK_CORE].max = 175; - features[F_OCLOCK_SDRAM].max = 175; + features[F_OVERCLOCK_CPU].max = 75; + features[F_OVERCLOCK_CORE].max = 175; + features[F_OVERCLOCK_SDRAM].max = 175; } break; } @@ -1101,53 +1101,53 @@ static int get_feature(int num) { switch (num) { case F_PROFILE: return get_profile(); - case F_SAVED: + case F_SAVED_CONFIG: return get_saved_config_number(); - case F_SUBPROFILE: + case F_SUB_PROFILE: return get_subprofile(); case F_RESOLUTION: return get_resolution(); case F_REFRESH: return get_refresh(); - case F_HDMI: + case F_HDMI_MODE: return get_hdmi(); - case F_HDMI_STANDBY: + case F_HDMI_MODE_STANDBY: return get_hdmi_standby(); case F_SCALING: return get_scaling(); case F_FRONTEND: return get_frontend(); - case F_OVERSCAN: + case F_CROP_BORDER: return get_overscan(); - case F_CAPSCALE: + case F_SCREENCAP_SIZE: return get_capscale(); - case F_BORDER: + case F_BORDER_COLOUR: return get_border(); - case F_FONTSIZE: + case F_FONT_SIZE: return get_fontsize(); - case F_M7DEINTERLACE: + case F_MODE7_DEINTERLACE: return get_m7deinterlace(); - case F_M7SCALING: + case F_MODE7_SCALING: return get_m7scaling(); - case F_DEINTERLACE: + case F_NORMAL_DEINTERLACE: return get_deinterlace(); - case F_NORMALSCALING: + case F_NORMAL_SCALING: return get_normalscaling(); case F_FFOSD: return get_ffosd(); - case F_STRETCH: + case F_SWAP_ASPECT: return get_stretch(); case F_PALETTE: return palette; - case F_PALETTECONTROL: + case F_PALETTE_CONTROL: return get_paletteControl(); - case F_NTSCCOLOUR: + case F_NTSC_COLOUR: return get_ntsccolour(); - case F_NTSCPHASE: + case F_NTSC_PHASE: return get_ntscphase(); - case F_NTSCTYPE: + case F_NTSC_TYPE: return get_ntsctype(); - case F_NTSCFRINGE: + case F_NTSC_QUALITY: return get_ntscfringe(); case F_TINT: return tint; @@ -1159,50 +1159,47 @@ static int get_feature(int num) { return brightness; case F_GAMMA: return Pgamma; - case F_TIMINGSET: + case F_TIMING_SET: return get_timingset(); case F_SCANLINES: return get_scanlines(); - case F_SCANLINESINT: + case F_SCANLINE_LEVEL: return get_scanlines_intensity(); - case F_COLOUR: + case F_OUTPUT_COLOUR: return get_colour(); - case F_INVERT: + case F_OUTPUT_INVERT: return get_invert(); - case F_VSYNC: + case F_VSYNC_INDICATOR: return get_vsync(); - case F_VLOCKMODE: + case F_GENLOCK_MODE: return get_vlockmode(); - case F_VLOCKLINE: + case F_GENLOCK_LINE: return get_vlockline(); - case F_VLOCKSPEED: + case F_GENLOCK_LOCKSPEED: return get_vlockspeed(); case F_VLOCKADJ: return get_vlockadj(); -#ifdef MULTI_BUFFER - case F_NBUFFERS: - return get_nbuffers(); -#endif - case F_AUTOSWITCH: - return get_autoswitch(); - case F_RETURN: - return return_at_end; + + + case F_NUM_BUFFERS: + case F_AUTO_SWITCH: case F_DEBUG: - return get_debug(); - case F_DIRECTION: - return button_direction; - case F_OCLOCK_CPU: + case F_POWERUP_MESSAGE: + case F_YUV_PIXEL_DOUBLE: + case F_INTEGER_ASPECT: + return get_parameter(num); + + + case F_RETURN_POSITION: + return return_at_end; + case F_OVERCLOCK_CPU: return cpu_overclock; - case F_OCLOCK_CORE: + case F_OVERCLOCK_CORE: return core_overclock; - case F_OCLOCK_SDRAM: + case F_OVERCLOCK_SDRAM: return sdram_overclock; - case F_RSTATUS: - return get_res_status(); - - case F_YUV_PIXEL: - case F_ASPECT: - return get_parameter(num); + case F_BUTTON_REVERSE: + return button_direction; } return -1; @@ -1221,17 +1218,17 @@ static void set_feature(int num, int value) { set_profile(value); load_profiles(value, 1); process_profile(value); - set_feature(F_SUBPROFILE, 0); + set_feature(F_SUB_PROFILE, 0); set_scaling(get_scaling(), 1); break; - case F_SAVED: + case F_SAVED_CONFIG: set_saved_config_number(value); load_profiles(get_profile(), 1); process_profile(get_profile()); - set_feature(F_SUBPROFILE, 0); + set_feature(F_SUB_PROFILE, 0); set_scaling(get_scaling(), 1); break; - case F_SUBPROFILE: + case F_SUB_PROFILE: set_subprofile(value); process_sub_profile(get_profile(), value); break; @@ -1241,10 +1238,10 @@ static void set_feature(int num, int value) { case F_REFRESH: set_refresh(value, 1); break; - case F_HDMI: + case F_HDMI_MODE: set_hdmi(value, 1); break; - case F_HDMI_STANDBY: + case F_HDMI_MODE_STANDBY: set_hdmi_standby(value); break; case F_SCALING: @@ -1253,34 +1250,34 @@ static void set_feature(int num, int value) { case F_FRONTEND: set_frontend(value, 1); break; - case F_M7DEINTERLACE: + case F_MODE7_DEINTERLACE: set_m7deinterlace(value); break; - case F_M7SCALING: + case F_MODE7_SCALING: set_m7scaling(value); break; - case F_DEINTERLACE: + case F_NORMAL_DEINTERLACE: set_deinterlace(value); break; - case F_NORMALSCALING: + case F_NORMAL_SCALING: set_normalscaling(value); break; case F_FFOSD: set_ffosd(value); break; - case F_STRETCH: + case F_SWAP_ASPECT: set_stretch(value); break; - case F_OVERSCAN: + case F_CROP_BORDER: set_overscan(value); break; - case F_CAPSCALE: + case F_SCREENCAP_SIZE: set_capscale(value); break; - case F_BORDER: + case F_BORDER_COLOUR: set_border(value); break; - case F_FONTSIZE: + case F_FONT_SIZE: if(active) { osd_clear(); set_fontsize(value); @@ -1293,24 +1290,24 @@ static void set_feature(int num, int value) { palette = value; osd_update_palette(); break; - case F_PALETTECONTROL: + case F_PALETTE_CONTROL: set_paletteControl(value); int hidden = (value < PALETTECONTROL_NTSCARTIFACT_CGA); - features[F_NTSCCOLOUR].hidden = hidden; - features[F_NTSCPHASE].hidden = hidden; + features[F_NTSC_COLOUR].hidden = hidden; + features[F_NTSC_PHASE].hidden = hidden; osd_update_palette(); break; - case F_NTSCCOLOUR: + case F_NTSC_COLOUR: set_ntsccolour(value); osd_update_palette(); break; - case F_NTSCPHASE: + case F_NTSC_PHASE: set_ntscphase(value); break; - case F_NTSCTYPE: + case F_NTSC_TYPE: set_ntsctype(value); break; - case F_NTSCFRINGE: + case F_NTSC_QUALITY: set_ntscfringe(value); break; case F_TINT: @@ -1337,61 +1334,66 @@ static void set_feature(int num, int value) { Pgamma = value; osd_update_palette(); break; - case F_TIMINGSET: + case F_TIMING_SET: set_timingset(value); break; case F_SCANLINES: set_scanlines(value); break; - case F_SCANLINESINT: + case F_SCANLINE_LEVEL: set_scanlines_intensity(value); break; - case F_COLOUR: + case F_OUTPUT_COLOUR: set_colour(value); osd_update_palette(); break; - case F_INVERT: + case F_OUTPUT_INVERT: set_invert(value); osd_update_palette(); break; - case F_VSYNC: + case F_VSYNC_INDICATOR: set_vsync(value); - features[F_VLOCKMODE].max = (value == 0) ? (NUM_HDMI - 5) : (NUM_HDMI - 1); + features[F_GENLOCK_MODE].max = (value == 0) ? (NUM_HDMI - 5) : (NUM_HDMI - 1); break; - case F_VLOCKMODE: + case F_GENLOCK_MODE: set_vlockmode(value); break; - case F_VLOCKLINE: + case F_GENLOCK_LINE: set_vlockline(value); break; - case F_VLOCKSPEED: + case F_GENLOCK_LOCKSPEED: set_vlockspeed(value); break; case F_VLOCKADJ: set_vlockadj(value); break; -#ifdef MULTI_BUFFER - case F_NBUFFERS: - set_nbuffers(value); - break; -#endif - case F_RETURN: - return_at_end = value; - cycle_menus(); + + + case F_NUM_BUFFERS: + case F_POWERUP_MESSAGE: + case F_YUV_PIXEL_DOUBLE: + case F_INTEGER_ASPECT: + set_parameter(num, value); break; case F_DEBUG: - set_debug(value); + set_parameter(num, value); osd_update_palette(); break; - case F_AUTOSWITCH: - set_autoswitch(value); + case F_AUTO_SWITCH: + set_parameter(num, value); set_menu_table(); osd_refresh(); break; - case F_DIRECTION: + + + case F_RETURN_POSITION: + return_at_end = value; + cycle_menus(); + break; + case F_BUTTON_REVERSE: button_direction = value; break; - case F_OCLOCK_CPU: + case F_OVERCLOCK_CPU: if ((disable_overclock & DISABLE_SETTINGS_OVERCLOCK) == DISABLE_SETTINGS_OVERCLOCK) { value = 0; } @@ -1402,7 +1404,7 @@ static void set_feature(int num, int value) { set_clock_rate_cpu((cpu_clock + cpu_overclock) * 1000000); } break; - case F_OCLOCK_CORE: + case F_OVERCLOCK_CORE: if ((disable_overclock & DISABLE_SETTINGS_OVERCLOCK) == DISABLE_SETTINGS_OVERCLOCK) { value = 0; } @@ -1421,22 +1423,13 @@ static void set_feature(int num, int value) { } #endif break; - case F_OCLOCK_SDRAM: + case F_OVERCLOCK_SDRAM: if ((disable_overclock & DISABLE_SETTINGS_OVERCLOCK) == DISABLE_SETTINGS_OVERCLOCK) { value = 0; } sdram_overclock = value; set_clock_rate_sdram((sdram_clock + sdram_overclock) * 1000000); break; - case F_RSTATUS: - set_res_status(value); - break; - - case F_YUV_PIXEL: - case F_ASPECT: - set_parameter(num, value); - break; - } } @@ -1523,64 +1516,64 @@ static const char *get_param_string(param_menu_item_t *param_item) { switch (param->key) { case F_PROFILE: return profile_names[value]; - case F_SAVED: + case F_SAVED_CONFIG: return saved_config_names[value]; - case F_SUBPROFILE: + case F_SUB_PROFILE: return sub_profile_names[value]; case F_RESOLUTION: return resolution_names[value]; case F_REFRESH: return refresh_names[value]; - case F_HDMI: + case F_HDMI_MODE: return hdmi_names[value]; case F_SCALING: return scaling_names[value]; case F_FRONTEND: return get_interface_name(); - case F_OVERSCAN: + case F_CROP_BORDER: return overscan_names[value]; - case F_COLOUR: + case F_OUTPUT_COLOUR: return colour_names[value]; - case F_INVERT: + case F_OUTPUT_INVERT: return invert_names[value]; - case F_FONTSIZE: + case F_FONT_SIZE: return fontsize_names[value]; case F_PALETTE: return palette_names[value]; - case F_PALETTECONTROL: + case F_PALETTE_CONTROL: return palette_control_names[value]; - case F_AUTOSWITCH: + case F_AUTO_SWITCH: return autoswitch_names[value]; - case F_M7DEINTERLACE: - case F_DEINTERLACE: + case F_MODE7_DEINTERLACE: + case F_NORMAL_DEINTERLACE: return deinterlace_names[value]; - case F_M7SCALING: + case F_MODE7_SCALING: return even_scaling_names[value]; - case F_NORMALSCALING: + case F_NORMAL_SCALING: return even_scaling_names[value]; - case F_CAPSCALE: + case F_SCREENCAP_SIZE: return screencap_names[value]; - case F_VLOCKMODE: + case F_GENLOCK_MODE: return vlockmode_names[value]; - case F_VLOCKSPEED: + case F_GENLOCK_LOCKSPEED: return vlockspeed_names[value]; case F_VLOCKADJ: return vlockadj_names[value]; #ifdef MULTI_BUFFER - case F_NBUFFERS: + case F_NUM_BUFFERS: return nbuffer_names[value]; #endif - case F_RETURN: + case F_RETURN_POSITION: return return_names[value]; - case F_NTSCPHASE: + case F_NTSC_PHASE: return phase_names[value]; - case F_NTSCTYPE: + case F_NTSC_TYPE: return ntsctype_names[value]; - case F_NTSCFRINGE: + case F_NTSC_QUALITY: return fringe_names[value]; - case F_TIMINGSET: + case F_TIMING_SET: return alt_profile_names[value]; - case F_ASPECT: + case F_INTEGER_ASPECT: return integer_names[value]; } } else if (type == I_GEOMETRY) { @@ -1876,7 +1869,7 @@ static void rebuild_update_cpld_menu(menu_t *menu) { int count; char cpld_dir[MAX_STRING_SIZE]; strncpy(cpld_dir, cpld_firmware_dir, MAX_STRING_LIMIT); - if (get_debug()) { + if (get_parameter(F_DEBUG)) { int cpld_design = cpld->get_version() >> VERSION_DESIGN_BIT; switch(cpld_design) { case DESIGN_ATOM: @@ -4275,7 +4268,7 @@ void osd_update_palette() { palette_data[i] = create_NTSC_artifact_colours(i & 0x3f, filtered_bitcount); } } else { - if (get_feature(F_INVERT) == INVERT_Y) { + if (get_feature(F_OUTPUT_INVERT) == INVERT_Y) { i_adj ^= 0x12; } palette_data[i] = palette_array[palette][i_adj]; @@ -4309,14 +4302,14 @@ void osd_update_palette() { b = (palette_data[i] >>16) & 0xff; m = (palette_data[i] >>24); } - if (get_feature(F_INVERT) == INVERT_RGB) { + if (get_feature(F_OUTPUT_INVERT) == INVERT_RGB) { r = 255 - r; g = 255 - g; b = 255 - b; m = 255 - m; } - if (get_feature(F_COLOUR) != COLOUR_NORMAL) { - switch (get_feature(F_COLOUR)) { + if (get_feature(F_OUTPUT_COLOUR) != COLOUR_NORMAL) { + switch (get_feature(F_OUTPUT_COLOUR)) { case COLOUR_MONO: r = m; g = m; @@ -4347,7 +4340,7 @@ void osd_update_palette() { } if ((i >= (num_colours >> 1)) && get_feature(F_SCANLINES)) { - int scanline_intensity = get_feature(F_SCANLINESINT) ; + int scanline_intensity = get_feature(F_SCANLINE_LEVEL) ; r = (r * scanline_intensity) / 15; g = (g * scanline_intensity) / 15; b = (b * scanline_intensity) / 15; @@ -4356,7 +4349,7 @@ void osd_update_palette() { palette_data[i] = 0xFF000000 | (b << 16) | (g << 8) | r; } - if (get_debug()) { + if (get_parameter(F_DEBUG)) { palette_data[i] |= 0x00101010; osd_palette_data[i] |= 0x00101010; } @@ -4407,7 +4400,7 @@ int save_profile(char *path, char *name, char *buffer, char *default_buffer, cha index = 0; } if (default_buffer != NULL) { - if (get_feature(F_AUTOSWITCH) >= AUTOSWITCH_MODE7) { + if (get_feature(F_AUTO_SWITCH) >= AUTOSWITCH_MODE7) { geometry_set_mode(MODE_SET2); cpld->set_mode(MODE_SET2); @@ -4458,9 +4451,9 @@ int save_profile(char *path, char *name, char *buffer, char *default_buffer, cha i = 0; while (features[i].key >= 0) { - if ((default_buffer != NULL && i != F_TIMINGSET && i != F_RESOLUTION && i != F_REFRESH && i != F_SCALING && i != F_FRONTEND && i != F_PROFILE && i != F_SAVED && i != F_SUBPROFILE && i!= F_DIRECTION && i != F_HDMI && (i != F_AUTOSWITCH || sub_default_buffer == NULL)) - || (default_buffer == NULL && i == F_TIMINGSET && get_feature(F_AUTOSWITCH) > AUTOSWITCH_MODE7) - || (default_buffer == NULL && i == F_AUTOSWITCH) ) { + if ((default_buffer != NULL && i != F_TIMING_SET && i != F_RESOLUTION && i != F_REFRESH && i != F_SCALING && i != F_FRONTEND && i != F_PROFILE && i != F_SAVED_CONFIG && i != F_SUB_PROFILE && i!= F_BUTTON_REVERSE && i != F_HDMI_MODE && (i != F_AUTO_SWITCH || sub_default_buffer == NULL)) + || (default_buffer == NULL && i == F_TIMING_SET && get_feature(F_AUTO_SWITCH) > AUTOSWITCH_MODE7) + || (default_buffer == NULL && i == F_AUTO_SWITCH) ) { strcpy(param_string, features[i].property_name); if (i == F_PALETTE) { sprintf(pointer, "%s=%s", param_string, palette_names[get_feature(i)]); @@ -4555,7 +4548,7 @@ void process_single_profile(char *buffer) { i = 0; while(features[i].key >= 0) { - if (i != F_RESOLUTION && i != F_REFRESH && i != F_SCALING && i != F_FRONTEND && i != F_PROFILE && i != F_SAVED && i != F_SUBPROFILE && i!= F_DIRECTION && i != F_HDMI) { + if (i != F_RESOLUTION && i != F_REFRESH && i != F_SCALING && i != F_FRONTEND && i != F_PROFILE && i != F_SAVED_CONFIG && i != F_SUB_PROFILE && i!= F_BUTTON_REVERSE && i != F_HDMI_MODE) { strcpy(param_string, features[i].property_name); prop = get_prop(buffer, param_string); if (prop) { @@ -4646,14 +4639,14 @@ void process_single_profile(char *buffer) { } // Disable CPLDv2 specific features for CPLDv1 if (cpld->old_firmware_support() & BIT_NORMAL_FIRMWARE_V1) { - features[F_M7DEINTERLACE].max = M7DEINTERLACE_MA4; - if (get_feature(F_M7DEINTERLACE) > features[F_M7DEINTERLACE].max) { - set_feature(F_M7DEINTERLACE, M7DEINTERLACE_MA1); // TODO: Decide whether this is the right fallback + features[F_MODE7_DEINTERLACE].max = M7DEINTERLACE_MA4; + if (get_feature(F_MODE7_DEINTERLACE) > features[F_MODE7_DEINTERLACE].max) { + set_feature(F_MODE7_DEINTERLACE, M7DEINTERLACE_MA1); // TODO: Decide whether this is the right fallback } } #ifdef USE_ARM_CAPTURE if (_get_hardware_id() == _RPI2 || _get_hardware_id() == _RPI3) { - set_feature(F_M7DEINTERLACE, M7DEINTERLACE_NONE); + set_feature(F_MODE7_DEINTERLACE, M7DEINTERLACE_NONE); } #endif } @@ -4718,10 +4711,10 @@ void process_profile(int profile_number) { void process_sub_profile(int profile_number, int sub_profile_number) { if (has_sub_profiles[profile_number]) { - int saved_autoswitch = get_feature(F_AUTOSWITCH); // save autoswitch so it can be disabled to manually switch sub profiles + int saved_autoswitch = get_feature(F_AUTO_SWITCH); // save autoswitch so it can be disabled to manually switch sub profiles process_single_profile(default_buffer); process_single_profile(sub_default_buffer); - set_feature(F_AUTOSWITCH, saved_autoswitch); + set_feature(F_AUTO_SWITCH, saved_autoswitch); process_single_profile(sub_profile_buffers[sub_profile_number]); cycle_menus(); } @@ -4730,7 +4723,7 @@ void process_sub_profile(int profile_number, int sub_profile_number) { void load_profiles(int profile_number, int save_selected) { unsigned int bytes ; main_buffer[0] = 0; - features[F_SUBPROFILE].max = 0; + features[F_SUB_PROFILE].max = 0; strcpy(sub_profile_names[0], NOT_FOUND_STRING); sub_profile_buffers[0][0] = 0; if (has_sub_profiles[profile_number]) { @@ -4743,14 +4736,14 @@ void load_profiles(int profile_number, int save_selected) { size_t count = 0; scan_sub_profiles(sub_profile_names, profile_names[profile_number], &count); if (count) { - features[F_SUBPROFILE].max = count - 1; + features[F_SUB_PROFILE].max = count - 1; for (int i = 0; i < count; i++) { file_read_profile(profile_names[profile_number], get_saved_config_number(), sub_profile_names[i], 0, sub_profile_buffers[i], MAX_BUFFER_SIZE - 4); get_autoswitch_geometry(sub_profile_buffers[i], i); } } } else { - features[F_SUBPROFILE].max = 0; + features[F_SUB_PROFILE].max = 0; strcpy(sub_profile_names[0], NONE_STRING); sub_profile_buffers[0][0] = 0; if (strcmp(profile_names[profile_number], NOT_FOUND_STRING) != 0) { @@ -4766,7 +4759,7 @@ int sub_profiles_available(int profile_number) { int autoswitch_detect(int one_line_time_ns, int lines_per_vsync, int sync_type) { if (has_sub_profiles[get_feature(F_PROFILE)]) { log_info("Looking for autoswitch match = %d, %d, %d", one_line_time_ns, lines_per_vsync, sync_type); - for (int i=0; i <= features[F_SUBPROFILE].max; i++) { + for (int i=0; i <= features[F_SUB_PROFILE].max; i++) { //log_info("Autoswitch test: %s (%d) = %d, %d, %d, %d", sub_profile_names[i], i, autoswitch_info[i].lower_limit, // autoswitch_info[i].upper_limit, autoswitch_info[i].lines_per_frame, autoswitch_info[i].sync_type ); if ( one_line_time_ns > autoswitch_info[i].lower_limit @@ -4834,7 +4827,7 @@ void osd_show_cpld_recovery_menu(int update) { depth = 1; osd_state = MENU; // Change the font size to the large font (no profile will be loaded) - set_feature(F_FONTSIZE, FONTSIZE_12X20); + set_feature(F_FONT_SIZE, FONTSIZE_12X20); // Bring up the menu osd_refresh(); if (!update) { @@ -4922,11 +4915,11 @@ void save_configuration() { char path[MAX_STRING_SIZE]; if (has_sub_profiles[get_feature(F_PROFILE)]) { asresult = save_profile(profile_names[get_feature(F_PROFILE)], "Default", save_buffer, NULL, NULL); - result = save_profile(profile_names[get_feature(F_PROFILE)], sub_profile_names[get_feature(F_SUBPROFILE)], save_buffer, default_buffer, sub_default_buffer); + result = save_profile(profile_names[get_feature(F_PROFILE)], sub_profile_names[get_feature(F_SUB_PROFILE)], save_buffer, default_buffer, sub_default_buffer); if (get_saved_config_number() == 0) { - sprintf(path, "%s/%s.txt", profile_names[get_feature(F_PROFILE)], sub_profile_names[get_feature(F_SUBPROFILE)]); + sprintf(path, "%s/%s.txt", profile_names[get_feature(F_PROFILE)], sub_profile_names[get_feature(F_SUB_PROFILE)]); } else { - sprintf(path, "%s/%s_%d.txt", profile_names[get_feature(F_PROFILE)], sub_profile_names[get_feature(F_SUBPROFILE)], get_saved_config_number()); + sprintf(path, "%s/%s_%d.txt", profile_names[get_feature(F_PROFILE)], sub_profile_names[get_feature(F_SUB_PROFILE)], get_saved_config_number()); } } else { result = save_profile(NULL, profile_names[get_feature(F_PROFILE)], save_buffer, default_buffer, NULL); @@ -5011,8 +5004,8 @@ int osd_key(int key) { int action; if (single_button_mode) { if (key_pressed == 0) { - if (get_autoswitch() == AUTOSWITCH_IIGS_MANUAL || get_autoswitch() == AUTOSWITCH_MANUAL) { - set_feature(F_TIMINGSET, 1 - get_feature(F_TIMINGSET)); + if (get_parameter(F_AUTO_SWITCH) == AUTOSWITCH_IIGS_MANUAL || get_parameter(F_AUTO_SWITCH) == AUTOSWITCH_MANUAL) { + set_feature(F_TIMING_SET, 1 - get_feature(F_TIMING_SET)); osd_state = TIMINGSET_MESSAGE; } else { osd_state = A1_CAPTURE; @@ -5067,12 +5060,12 @@ int osd_key(int key) { break; case A2_CLOCK_CAL: - if (get_autoswitch() == AUTOSWITCH_IIGS_MANUAL || get_autoswitch() == AUTOSWITCH_MANUAL) { - set_feature(F_TIMINGSET, 1 - get_feature(F_TIMINGSET)); + if (get_parameter(F_AUTO_SWITCH) == AUTOSWITCH_IIGS_MANUAL || get_parameter(F_AUTO_SWITCH) == AUTOSWITCH_MANUAL) { + set_feature(F_TIMING_SET, 1 - get_feature(F_TIMING_SET)); ret = 1; osd_state = TIMINGSET_MESSAGE; } else if (get_ntsccolour() && (get_paletteControl() == PALETTECONTROL_NTSCARTIFACT_CGA || get_paletteControl() == PALETTECONTROL_NTSCARTIFACT_BW || get_paletteControl() == PALETTECONTROL_NTSCARTIFACT_BW_AUTO)) { - set_feature(F_NTSCPHASE, (get_feature(F_NTSCPHASE) + 1) & 3); + set_feature(F_NTSC_PHASE, (get_feature(F_NTSC_PHASE) + 1) & 3); ret = 1; osd_state = NTSC_PHASE_MESSAGE; } else { @@ -5098,7 +5091,7 @@ int osd_key(int key) { case NTSC_PHASE_MESSAGE: clear_menu_bits(); - sprintf(message, "NTSC Phase %s",phase_names[get_feature(F_NTSCPHASE)]); + sprintf(message, "NTSC Phase %s",phase_names[get_feature(F_NTSC_PHASE)]); osd_set(0, ATTR_DOUBLE_SIZE, message); // Fire OSD_EXPIRED in 30 frames time ret = 30; @@ -5108,14 +5101,14 @@ int osd_key(int key) { case TIMINGSET_MESSAGE: clear_menu_bits(); - if (get_autoswitch() == AUTOSWITCH_MANUAL) { - if (get_feature(F_TIMINGSET)) { + if (get_parameter(F_AUTO_SWITCH) == AUTOSWITCH_MANUAL) { + if (get_feature(F_TIMING_SET)) { osd_set(0, ATTR_DOUBLE_SIZE, "Timing Set 2"); } else { osd_set(0, ATTR_DOUBLE_SIZE, "Timing Set 1"); } } else { - if (get_feature(F_TIMINGSET)) { + if (get_feature(F_TIMING_SET)) { osd_set(0, ATTR_DOUBLE_SIZE, "IIGS SHR (Set 2)"); } else { osd_set(0, ATTR_DOUBLE_SIZE, "IIGS Apple II (Set 1)"); @@ -5167,7 +5160,7 @@ int osd_key(int key) { break; case A5_NTSCCOLOUR: - set_feature(F_NTSCCOLOUR, 1 - get_feature(F_NTSCCOLOUR)); + set_feature(F_NTSC_COLOUR, 1 - get_feature(F_NTSC_COLOUR)); ret = 1; osd_state = NTSC_MESSAGE; break; @@ -5175,13 +5168,13 @@ int osd_key(int key) { case NTSC_MESSAGE: clear_menu_bits(); if (get_paletteControl() >= PALETTECONTROL_NTSCARTIFACT_CGA) { - if (get_feature(F_NTSCCOLOUR)) { + if (get_feature(F_NTSC_COLOUR)) { osd_set(0, ATTR_DOUBLE_SIZE, "NTSC Colour on"); } else { osd_set(0, ATTR_DOUBLE_SIZE, "NTSC Colour off"); } } else { - set_feature(F_NTSCCOLOUR, 0); + set_feature(F_NTSC_COLOUR, 0); osd_set(0, ATTR_DOUBLE_SIZE, "Not NTSC Artifacting"); } // Fire OSD_EXPIRED in 50 frames time @@ -5290,7 +5283,7 @@ int osd_key(int key) { // If so, then just toggle it toggle_param(param_item); // Special case the return at end parameter, to keep the cursor in the same position - if (type == I_FEATURE && param_item->param->key == F_RETURN) { + if (type == I_FEATURE && param_item->param->key == F_RETURN_POSITION) { if (return_at_end) { current_item[depth]--; } else { @@ -5373,11 +5366,11 @@ int osd_key(int key) { first_time_press = 0; if (has_sub_profiles[get_feature(F_PROFILE)]) { file_restore(profile_names[get_feature(F_PROFILE)], "Default", get_saved_config_number()); - file_restore(profile_names[get_feature(F_PROFILE)], sub_profile_names[get_feature(F_SUBPROFILE)], get_saved_config_number()); + file_restore(profile_names[get_feature(F_PROFILE)], sub_profile_names[get_feature(F_SUB_PROFILE)], get_saved_config_number()); } else { file_restore(NULL, profile_names[get_feature(F_PROFILE)], get_saved_config_number()); } - set_feature(F_SAVED, get_saved_config_number()); + set_feature(F_SAVED_CONFIG, get_saved_config_number()); force_reinit(); } break; @@ -5396,7 +5389,7 @@ int osd_key(int key) { } else { first_time_press = 0; // Generate the CPLD filename from the menu item - if (get_debug()) { + if (get_parameter(F_DEBUG)) { int cpld_design = cpld->get_version() >> VERSION_DESIGN_BIT; switch(cpld_design) { case DESIGN_ATOM: @@ -6264,7 +6257,7 @@ void osd_init() { set_profile(i); load_profiles(i, 0); process_profile(i); - set_feature(F_SUBPROFILE, 0); + set_feature(F_SUB_PROFILE, 0); log_info("Profile = %s", prop); found_profile = 1; break; @@ -6274,7 +6267,7 @@ void osd_init() { set_profile(0); load_profiles(0, 0); process_profile(0); - set_feature(F_SUBPROFILE, 0); + set_feature(F_SUB_PROFILE, 0); } } @@ -6305,7 +6298,7 @@ void osd_update(uint32_t *osd_base, int bytes_per_line, int relocate) { uint32_t *line_ptr = osd_base; int words_per_line = bytes_per_line >> 2; - if (((capinfo->sizex2 & SIZEX2_DOUBLE_HEIGHT) && capinfo->nlines > FONT_THRESHOLD * 10) && (bufferCharWidth >= LINELEN) && get_feature(F_FONTSIZE) == FONTSIZE_12X20) { // if frame buffer is large enough and not 8bpp use SAA5050 font + if (((capinfo->sizex2 & SIZEX2_DOUBLE_HEIGHT) && capinfo->nlines > FONT_THRESHOLD * 10) && (bufferCharWidth >= LINELEN) && get_feature(F_FONT_SIZE) == FONTSIZE_12X20) { // if frame buffer is large enough and not 8bpp use SAA5050 font for (int line = 0; line <= osd_hwm; line++) { int attr = attributes[line]; int len = (attr & ATTR_DOUBLE_SIZE) ? (LINELEN >> 1) : LINELEN; @@ -6531,7 +6524,7 @@ void __attribute__ ((aligned (64))) osd_update_fast(uint32_t *osd_base, int byte uint32_t *line_ptr = osd_base; int words_per_line = bytes_per_line >> 2; - if (((capinfo->sizex2 & SIZEX2_DOUBLE_HEIGHT) && capinfo->nlines > FONT_THRESHOLD * 10) && (bufferCharWidth >= LINELEN) && get_feature(F_FONTSIZE) == FONTSIZE_12X20) { // if frame buffer is large enough and not 8bpp use SAA5050 font + if (((capinfo->sizex2 & SIZEX2_DOUBLE_HEIGHT) && capinfo->nlines > FONT_THRESHOLD * 10) && (bufferCharWidth >= LINELEN) && get_feature(F_FONT_SIZE) == FONTSIZE_12X20) { // if frame buffer is large enough and not 8bpp use SAA5050 font for (int line = 0; line <= osd_hwm; line++) { int attr = attributes[line]; int len = (attr & ATTR_DOUBLE_SIZE) ? (LINELEN >> 1) : LINELEN; diff --git a/src/osd.h b/src/osd.h index 93348127..d42f05ff 100644 --- a/src/osd.h +++ b/src/osd.h @@ -222,58 +222,58 @@ enum { }; enum { - F_AUTOSWITCH, + F_AUTO_SWITCH, F_RESOLUTION, F_REFRESH, - F_HDMI, - F_HDMI_STANDBY, + F_HDMI_MODE, + F_HDMI_MODE_STANDBY, F_SCALING, F_PROFILE, - F_SAVED, - F_SUBPROFILE, + F_SAVED_CONFIG, + F_SUB_PROFILE, F_PALETTE, - F_PALETTECONTROL, - F_NTSCCOLOUR, - F_NTSCPHASE, - F_NTSCTYPE, - F_NTSCFRINGE, + F_PALETTE_CONTROL, + F_NTSC_COLOUR, + F_NTSC_PHASE, + F_NTSC_TYPE, + F_NTSC_QUALITY, F_TINT, F_SAT, F_CONT, F_BRIGHT, F_GAMMA, - F_TIMINGSET, - F_M7DEINTERLACE, - F_DEINTERLACE, - F_M7SCALING, - F_NORMALSCALING, + F_TIMING_SET, + F_MODE7_DEINTERLACE, + F_NORMAL_DEINTERLACE, + F_MODE7_SCALING, + F_NORMAL_SCALING, F_FFOSD, - F_STRETCH, - F_COLOUR, - F_INVERT, + F_SWAP_ASPECT, + F_OUTPUT_COLOUR, + F_OUTPUT_INVERT, F_SCANLINES, - F_SCANLINESINT, - F_OVERSCAN, - F_CAPSCALE, - F_FONTSIZE, - F_BORDER, - F_VSYNC, - F_VLOCKMODE, - F_VLOCKLINE, - F_VLOCKSPEED, + F_SCANLINE_LEVEL, + F_CROP_BORDER, + F_SCREENCAP_SIZE, + F_FONT_SIZE, + F_BORDER_COLOUR, + F_VSYNC_INDICATOR, + F_GENLOCK_MODE, + F_GENLOCK_LINE, + F_GENLOCK_LOCKSPEED, F_VLOCKADJ, #ifdef MULTI_BUFFER - F_NBUFFERS, + F_NUM_BUFFERS, #endif - F_RETURN, + F_RETURN_POSITION, F_DEBUG, - F_DIRECTION, - F_OCLOCK_CPU, - F_OCLOCK_CORE, - F_OCLOCK_SDRAM, - F_RSTATUS, - F_YUV_PIXEL, - F_ASPECT, + F_BUTTON_REVERSE, + F_OVERCLOCK_CPU, + F_OVERCLOCK_CORE, + F_OVERCLOCK_SDRAM, + F_POWERUP_MESSAGE, + F_YUV_PIXEL_DOUBLE, + F_INTEGER_ASPECT, F_FRONTEND, //must be last MAX_PARAMETERS diff --git a/src/rgb_to_hdmi.c b/src/rgb_to_hdmi.c index 9ea5483a..d7d32d9c 100644 --- a/src/rgb_to_hdmi.c +++ b/src/rgb_to_hdmi.c @@ -224,8 +224,6 @@ static int ntscphase = 0; static int ntsctype = 0; static int ntscfringe = 0; static int ffosd = 0; -static int debug = 0; -static int autoswitch = 2; static int scanlines = 0; static int scanlines_intensity = 0; static int colour = 0; @@ -280,7 +278,6 @@ static int ppm_range = 1; static int ppm_range_count = 0; static int powerup = 1; static int hsync_threshold_switch = 0; -static int resolution_status = 0; static int display_list_offset = 5; static int restricted_slew_rate = 0; static unsigned int framebuffer = 0; @@ -312,9 +309,6 @@ void start_vc_bench(int type) RPI_PropertyProcess(); } -#ifdef MULTI_BUFFER -static int nbuffers = 0; -#endif static int current_vlockmode = -1; static const char *sync_names[] = { @@ -888,7 +882,7 @@ void set_hsync_threshold() { } else { normal_hsync_threshold = NORMAL_HSYNC_THRESHOLD * cpuspeed / 1000; } - if (autoswitch == AUTOSWITCH_MODE7 && hsync_width < hsync_threshold_switch) { + if (parameters[F_AUTO_SWITCH] == AUTOSWITCH_MODE7 && hsync_width < hsync_threshold_switch) { hsync_threshold = BBC_HSYNC_THRESHOLD * cpuspeed / 1000; } else { hsync_threshold = normal_hsync_threshold; @@ -1991,7 +1985,7 @@ int extra_flags() { if (cpld->old_firmware_support()) { extra |= BIT_OLD_FIRMWARE_SUPPORT; } - if (autoswitch != AUTOSWITCH_MODE7) { + if (parameters[F_AUTO_SWITCH] != AUTOSWITCH_MODE7) { extra |= BIT_NO_H_SCROLL; } if (!scanlines || ((capinfo->sizex2 & SIZEX2_DOUBLE_HEIGHT) == 0) || (capinfo->mode7) || osd_active()) { @@ -2204,7 +2198,7 @@ int *diff_N_frames_by_sample(capture_info_t *capinfo, int n, int elk) { } //log_info("Total=%d, Sequential=%d", total_error_count, sequential_error_count); int line_threshold = 12; // max is 12 lines on 6847 - if (autoswitch == AUTOSWITCH_MODE7) { + if (parameters[F_AUTO_SWITCH] == AUTOSWITCH_MODE7) { line_threshold = 2; // reduce to minimum on beeb } @@ -2374,7 +2368,7 @@ signed int analyze_mode7_alignment(capture_info_t *capinfo) { signed int analyze_default_alignment(capture_info_t *capinfo) { - if (autoswitch != AUTOSWITCH_MODE7) { + if (parameters[F_AUTO_SWITCH] != AUTOSWITCH_MODE7) { return -1; } log_info("Testing default alignment"); @@ -2759,7 +2753,7 @@ void set_scaling(int mode, int reboot) { ||( video_type != VIDEO_TELETEXT && get_normalscaling() == SCALING_UNEVEN && get_haspect() == 3 && (get_vaspect() == 2 || get_vaspect() == 4))) { width = width * 4 / 3; } - if ((width > 340 && h_size43 < 1440 && (h_size43 % width) > (width / 3)) || (autoswitch == AUTOSWITCH_MODE7 && v_size == 1024)) { + if ((width > 340 && h_size43 < 1440 && (h_size43 % width) > (width / 3)) || (parameters[F_AUTO_SWITCH] == AUTOSWITCH_MODE7 && v_size == 1024)) { gscaling = GSCALING_MANUAL43; filtering = FILTERING_SOFT; set_auto_name("Auto (Interp. 4:3/Soft)"); @@ -2767,7 +2761,7 @@ void set_scaling(int mode, int reboot) { log_info("Setting 4:3 soft"); } else { gscaling = GSCALING_INTEGER; - if ((autoswitch == AUTOSWITCH_MODE7) && (v_size == 600 || v_size == 576)) { + if ((parameters[F_AUTO_SWITCH] == AUTOSWITCH_MODE7) && (v_size == 600 || v_size == 576)) { filtering = FILTERING_SOFT; set_auto_name("Auto (Integer/Soft)"); osd_refresh(); @@ -2906,13 +2900,6 @@ void set_scanlines(int on) { int get_scanlines() { return scanlines; } -void set_res_status(int value) { - resolution_status = value; -} - -int get_res_status() { - return resolution_status; -} void set_scanlines_intensity(int value) { scanlines_intensity = value; @@ -3055,23 +3042,6 @@ int get_core_1_available() { return core_1_available; } -#ifdef MULTI_BUFFER -int get_nbuffers() { - return nbuffers; -} - -void set_nbuffers(int val) { - nbuffers=val; -} -#endif - -void set_debug(int on) { - debug = on; -} - -int get_debug() { - return debug; -} int get_lines_per_vsync() { int lines = geometry_get_value(LINES_FRAME); if (lines_per_vsync > (lines - 20) && lines_per_vsync <= (lines + 1)) { @@ -3101,45 +3071,47 @@ int get_parameter(int parameter) { void set_parameter(int parameter, int value) { switch (parameter) { //space for special case handling + case F_AUTO_SWITCH: + // Prevent autoswitch (to mode 7) being accidentally with the Atom CPLD, + // for example by selecting the BBC_Micro profile, as this results in + // an unusable OSD which persists even after cycling power. + // + // Atom timing looks like Mode 7, but as we don't have 6bpp mode 7 + // line capture code, we end up using the default line capture code, + // which immediately overwrites the OSD with capture data. But because the + // mode7 flag is set, the OSD is not then repainted in the blanking interval. + // The end result is the OSD is briefly appears when a button is pressed, + // then vanishes, making it very tricky to navigate. + // + // It might be better to combine this with the cpld->old_firmware() and + // rename this to cpld->get_capabilities(). + { + int cpld_ver = (cpld->get_version() >> VERSION_DESIGN_BIT) & 0x0F; + if (value == AUTOSWITCH_MODE7 && (cpld_ver == DESIGN_ATOM || cpld_ver == DESIGN_YUV_ANALOG)) { + if (parameters[F_AUTO_SWITCH] == (AUTOSWITCH_MODE7 - 1)) { + parameters[F_AUTO_SWITCH] = AUTOSWITCH_MODE7 + 1; + } else if (parameters[F_AUTO_SWITCH] == (AUTOSWITCH_MODE7 + 1)) { + parameters[F_AUTO_SWITCH] = AUTOSWITCH_MODE7 - 1; + } else { + parameters[F_AUTO_SWITCH] = value; + } + } else { + parameters[F_AUTO_SWITCH] = value; + } + set_hsync_threshold(); + } + break; + + + + + default: parameters[parameter] = value; break; } } -void set_autoswitch(int value) { - // Prevent autoswitch (to mode 7) being accidentally with the Atom CPLD, - // for example by selecting the BBC_Micro profile, as this results in - // an unusable OSD which persists even after cycling power. - // - // Atom timing looks like Mode 7, but as we don't have 6bpp mode 7 - // line capture code, we end up using the default line capture code, - // which immediately overwrites the OSD with capture data. But because the - // mode7 flag is set, the OSD is not then repainted in the blanking interval. - // The end result is the OSD is briefly appears when a button is pressed, - // then vanishes, making it very tricky to navigate. - // - // It might be better to combine this with the cpld->old_firmware() and - // rename this to cpld->get_capabilities(). - int cpld_ver = (cpld->get_version() >> VERSION_DESIGN_BIT) & 0x0F; - if (value == AUTOSWITCH_MODE7 && (cpld_ver == DESIGN_ATOM || cpld_ver == DESIGN_YUV_ANALOG)) { - if (autoswitch == (AUTOSWITCH_MODE7 - 1)) { - autoswitch = AUTOSWITCH_MODE7 + 1; - } else if (autoswitch == (AUTOSWITCH_MODE7 + 1)) { - autoswitch = AUTOSWITCH_MODE7 - 1; - } else { - autoswitch = value; - } - } else { - autoswitch = value; - } - set_hsync_threshold(); -} - -int get_autoswitch() { - return autoswitch; -} - void action_calibrate_clocks() { // re-measure vsync and set the core/sampling clocks calibrate_sampling_clock(0); @@ -3207,7 +3179,7 @@ void setup_profile(int profile_changed) { cpld->update_capture_info(capinfo); geometry_get_fb_params(capinfo); - if (autoswitch == AUTOSWITCH_MODE7) { + if (parameters[F_AUTO_SWITCH] == AUTOSWITCH_MODE7) { capinfo->detected_sync_type = cpld->analyse(capinfo->sync_type, 0); // skips sync test if BBC and assumes non-inverted composite (saves time during mode changes) } else { capinfo->detected_sync_type = cpld->analyse(capinfo->sync_type, 1); @@ -3218,12 +3190,12 @@ void setup_profile(int profile_changed) { // Measure the frame time and set the sampling clock calibrate_sampling_clock(profile_changed); - if (resolution_status && (powerup || osd_timer > 0)) { + if (parameters[F_POWERUP_MESSAGE] && (powerup || osd_timer > 0)) { osd_set(0, 0, " "); //dummy print to turn osd on so interlaced modes can display startup resolution later } geometry_get_fb_params(capinfo); - if (autoswitch != AUTOSWITCH_OFF && sub_profiles_available(profile)) { // set window around expected time from sub-profile + if (parameters[F_AUTO_SWITCH] != AUTOSWITCH_OFF && sub_profiles_available(profile)) { // set window around expected time from sub-profile double line_time = clkinfo.line_len * 1000000000 / (double) clkinfo.clock; int window = (int) ((double) clkinfo.clock_ppm * line_time / 1000000); hsync_comparison_lo = (line_time - window) * cpuspeed / 1000; @@ -3346,7 +3318,7 @@ void rgb_to_hdmi_main() { last_subprofile = -1; } setup_profile(profile != last_profile || last_subprofile != subprofile || last_saved_config_number != saved_config_number); - if ((autoswitch != AUTOSWITCH_OFF) && sub_profiles_available(profile) && ((result & (RET_SYNC_TIMING_CHANGED | RET_SYNC_STATE_CHANGED)) || profile != last_profile || last_subprofile != subprofile || restart_profile)) { + if ((parameters[F_AUTO_SWITCH] != AUTOSWITCH_OFF) && sub_profiles_available(profile) && ((result & (RET_SYNC_TIMING_CHANGED | RET_SYNC_STATE_CHANGED)) || profile != last_profile || last_subprofile != subprofile || restart_profile)) { int new_sub_profile = autoswitch_detect(one_line_time_ns, lines_per_vsync, capinfo->detected_sync_type & SYNC_BIT_MASK); if (new_sub_profile >= 0) { if (new_sub_profile != last_subprofile || profile != last_profile || saved_config_number != last_saved_config_number || restart_profile) { @@ -3489,7 +3461,7 @@ geometry_get_fb_params(capinfo); } if (osd_timer > 0 && osd_timer < POWERUP_MESSAGE_TIME) { - if (resolution_status) { + if (parameters[F_POWERUP_MESSAGE]) { log_info("Display startup message"); int h_size = get_hdisplay(); int v_size = get_vdisplay(); @@ -3515,7 +3487,7 @@ geometry_get_fb_params(capinfo); if (vsync) { flags |= BIT_VSYNC; } - if (debug) { + if (parameters[F_DEBUG]) { flags |= BIT_DEBUG; } @@ -3530,10 +3502,10 @@ geometry_get_fb_params(capinfo); flags |= deinterlace << OFFSET_INTERLACE; } #ifdef MULTI_BUFFER - if ((capinfo->video_type == VIDEO_PROGRESSIVE || (capinfo->video_type == VIDEO_INTERLACED && !interlaced)) && osd_active() && (nbuffers == 0)) { + if ((capinfo->video_type == VIDEO_PROGRESSIVE || (capinfo->video_type == VIDEO_INTERLACED && !interlaced)) && osd_active() && (parameters[F_NUM_BUFFERS] == 0)) { flags |= 2 << OFFSET_NBUFFERS; } else { - flags |= nbuffers << OFFSET_NBUFFERS; + flags |= parameters[F_NUM_BUFFERS] << OFFSET_NBUFFERS; } //log_info("Buffers = %d", (flags & MASK_NBUFFERS) >> OFFSET_NBUFFERS); #endif @@ -3657,14 +3629,14 @@ geometry_get_fb_params(capinfo); last_modeset = modeset; - if (autoswitch == AUTOSWITCH_MODE7 || autoswitch == AUTOSWITCH_VSYNC || autoswitch == AUTOSWITCH_IIGS) { + if (parameters[F_AUTO_SWITCH] == AUTOSWITCH_MODE7 || parameters[F_AUTO_SWITCH] == AUTOSWITCH_VSYNC || parameters[F_AUTO_SWITCH] == AUTOSWITCH_IIGS) { if (result & RET_MODESET) { modeset = MODE_SET2; } else { modeset = MODE_SET1; } - } else if (autoswitch == AUTOSWITCH_MANUAL || autoswitch == AUTOSWITCH_IIGS_MANUAL) { + } else if (parameters[F_AUTO_SWITCH] == AUTOSWITCH_MANUAL || parameters[F_AUTO_SWITCH] == AUTOSWITCH_IIGS_MANUAL) { modeset = timingset; } else { modeset = MODE_SET1; @@ -3760,6 +3732,7 @@ int show_detected_status(int line) { void kernel_main(unsigned int r0, unsigned int r1, unsigned int atags) { + parameters[F_AUTO_SWITCH] = 2; char message[128]; RPI_AuxMiniUartInit(115200, 8); rpi_mailbox_property_t *mp; diff --git a/src/rgb_to_hdmi.h b/src/rgb_to_hdmi.h index 368ae8f9..8ffd2290 100644 --- a/src/rgb_to_hdmi.h +++ b/src/rgb_to_hdmi.h @@ -37,8 +37,6 @@ void set_ffosd(int value); int get_ffosd(); void set_scanlines(int on); int get_scanlines(); -void set_res_status(int value); -int get_res_status(); void set_ntsccolour(int value); int get_ntsccolour(); void set_scanlines_intensity(int value); @@ -70,14 +68,7 @@ void set_vlockspeed(int val); int get_vlockspeed(); void set_vlockadj(int val); int get_vlockadj(); -#ifdef MULTI_BUFFER -void set_nbuffers(int val); -int get_nbuffers(); -#endif -void set_autoswitch(int on); -int get_autoswitch(); -void set_debug(int on); -int get_debug(); + int get_lines_per_vsync(); int get_50hz_state(); int get_core_1_available(); From aef52cb199dd6c3ce32083e74ec62fdb11ef1da2 Mon Sep 17 00:00:00 2001 From: IanSB Date: Sat, 25 Feb 2023 16:37:51 +0000 Subject: [PATCH 08/46] Refactor genlock speed, mode, line and adjust --- src/osd.c | 70 ++++++++++------------- src/osd.h | 18 +++--- src/rgb_to_hdmi.c | 143 +++++++++++++++++++--------------------------- src/rgb_to_hdmi.h | 9 +-- 4 files changed, 98 insertions(+), 142 deletions(-) diff --git a/src/osd.c b/src/osd.c index 12a22a16..028c9d64 100644 --- a/src/osd.c +++ b/src/osd.c @@ -147,7 +147,7 @@ static const char *return_names[] = { "End" }; -static const char *vlockmode_names[] = { +static const char *genlock_mode_names[] = { "On (Locked)", "Off (Unlocked)", "1000ppm Fast", @@ -259,13 +259,13 @@ static const char *frontend_names_8[] = { "8 Bit Analog YUV Issue 5" }; -static const char *vlockspeed_names[] = { +static const char *genlock_speed_names[] = { "Slow (333PPM)", "Medium (1000PPM)", "Fast (2000PPM)" }; -static const char *vlockadj_names[] = { +static const char *genlock_adjust_names[] = { "-5% to +5%", "Unlimited" }; @@ -389,8 +389,8 @@ static param_t features[] = { { F_VSYNC_INDICATOR, "V Sync Indicator", "vsync_indicator", 0, 1, 1 }, { F_GENLOCK_MODE, "Genlock Mode", "genlock_mode", 0, NUM_HDMI - 1, 1 }, { F_GENLOCK_LINE, "Genlock Line", "genlock_line",35, 312, 1 }, - { F_GENLOCK_LOCKSPEED, "Genlock Speed", "genlock_speed", 0, NUM_VLOCKSPEED - 1, 1 }, - { F_VLOCKADJ, "Genlock Adjust", "genlock_adjust", 0, NUM_VLOCKADJ - 1, 1 }, + { F_GENLOCK_SPEED, "Genlock Speed", "genlock_speed", 0,NUM_GENLOCK_SPEED - 1, 1 }, + { F_GENLOCK_ADJUST, "Genlock Adjust", "genlock_adjust", 0,NUM_GENLOCK_ADJUST - 1, 1 }, #ifdef MULTI_BUFFER { F_NUM_BUFFERS, "Num Buffers", "num_buffers", 0, 3, 1 }, #endif @@ -571,10 +571,10 @@ static param_menu_item_t colour_ref = { I_FEATURE, &features[F_OUTPUT_C static param_menu_item_t invert_ref = { I_FEATURE, &features[F_OUTPUT_INVERT] }; static param_menu_item_t fontsize_ref = { I_FEATURE, &features[F_FONT_SIZE] }; static param_menu_item_t vsync_ref = { I_FEATURE, &features[F_VSYNC_INDICATOR] }; -static param_menu_item_t vlockmode_ref = { I_FEATURE, &features[F_GENLOCK_MODE] }; -static param_menu_item_t vlockline_ref = { I_FEATURE, &features[F_GENLOCK_LINE] }; -static param_menu_item_t vlockspeed_ref = { I_FEATURE, &features[F_GENLOCK_LOCKSPEED] }; -static param_menu_item_t vlockadj_ref = { I_FEATURE, &features[F_VLOCKADJ] }; +static param_menu_item_t genlock_mode_ref = { I_FEATURE, &features[F_GENLOCK_MODE] }; +static param_menu_item_t genlock_line_ref = { I_FEATURE, &features[F_GENLOCK_LINE] }; +static param_menu_item_t genlock_speed_ref = { I_FEATURE, &features[F_GENLOCK_SPEED] }; +static param_menu_item_t genlock_adjust_ref = { I_FEATURE, &features[F_GENLOCK_ADJUST] }; #ifdef MULTI_BUFFER static param_menu_item_t nbuffers_ref = { I_FEATURE, &features[F_NUM_BUFFERS] }; #endif @@ -663,10 +663,10 @@ static menu_t settings_menu = { (base_menu_item_t *) &back_ref, (base_menu_item_t *) &fontsize_ref, (base_menu_item_t *) &vsync_ref, - (base_menu_item_t *) &vlockmode_ref, - (base_menu_item_t *) &vlockline_ref, - (base_menu_item_t *) &vlockspeed_ref, - (base_menu_item_t *) &vlockadj_ref, + (base_menu_item_t *) &genlock_mode_ref, + (base_menu_item_t *) &genlock_line_ref, + (base_menu_item_t *) &genlock_speed_ref, + (base_menu_item_t *) &genlock_adjust_ref, (base_menu_item_t *) &nbuffers_ref, (base_menu_item_t *) &ffosd_ref, (base_menu_item_t *) &hdmi_standby_ref, @@ -1171,16 +1171,13 @@ static int get_feature(int num) { return get_invert(); case F_VSYNC_INDICATOR: return get_vsync(); - case F_GENLOCK_MODE: - return get_vlockmode(); - case F_GENLOCK_LINE: - return get_vlockline(); - case F_GENLOCK_LOCKSPEED: - return get_vlockspeed(); - case F_VLOCKADJ: - return get_vlockadj(); + + case F_GENLOCK_MODE: + case F_GENLOCK_LINE: + case F_GENLOCK_SPEED: + case F_GENLOCK_ADJUST: case F_NUM_BUFFERS: case F_AUTO_SWITCH: case F_DEBUG: @@ -1355,20 +1352,13 @@ static void set_feature(int num, int value) { set_vsync(value); features[F_GENLOCK_MODE].max = (value == 0) ? (NUM_HDMI - 5) : (NUM_HDMI - 1); break; - case F_GENLOCK_MODE: - set_vlockmode(value); - break; - case F_GENLOCK_LINE: - set_vlockline(value); - break; - case F_GENLOCK_LOCKSPEED: - set_vlockspeed(value); - break; - case F_VLOCKADJ: - set_vlockadj(value); - break; + + case F_GENLOCK_MODE: + case F_GENLOCK_LINE: + case F_GENLOCK_SPEED: + case F_GENLOCK_ADJUST: case F_NUM_BUFFERS: case F_POWERUP_MESSAGE: case F_YUV_PIXEL_DOUBLE: @@ -1554,11 +1544,11 @@ static const char *get_param_string(param_menu_item_t *param_item) { case F_SCREENCAP_SIZE: return screencap_names[value]; case F_GENLOCK_MODE: - return vlockmode_names[value]; - case F_GENLOCK_LOCKSPEED: - return vlockspeed_names[value]; - case F_VLOCKADJ: - return vlockadj_names[value]; + return genlock_mode_names[value]; + case F_GENLOCK_SPEED: + return genlock_speed_names[value]; + case F_GENLOCK_ADJUST: + return genlock_adjust_names[value]; #ifdef MULTI_BUFFER case F_NUM_BUFFERS: return nbuffer_names[value]; @@ -1763,7 +1753,7 @@ int apparent_height = get_vdisplay(); old_50hz_state = current_50hz_state; sprintf(osdline, "Current resolution = %d x %d", apparent_width, apparent_height); osd_set(line++, 0, osdline); - if (get_vlockmode() == HDMI_EXACT) { + if (get_parameter(F_GENLOCK_MODE) == HDMI_EXACT) { switch(current_50hz_state) { case 0: osd_set(line++, 0, "50Hz support is already enabled"); @@ -5206,7 +5196,7 @@ int osd_key(int key) { osd_set(0, ATTR_DOUBLE_SIZE, "Genlock Failed"); osd_state = CLOCK_CAL1; // restore the original HDMI clock - set_vlockmode(HDMI_ORIGINAL); + set_parameter(F_GENLOCK_MODE, HDMI_ORIGINAL); } else { cal_count++; } diff --git a/src/osd.h b/src/osd.h index d42f05ff..f16be2cb 100644 --- a/src/osd.h +++ b/src/osd.h @@ -154,16 +154,16 @@ enum { }; enum { - VLOCKSPEED_SLOW, - VLOCKSPEED_MEDIUM, - VLOCKSPEED_FAST, - NUM_VLOCKSPEED + GENLOCK_SPEED_SLOW, + GENLOCK_SPEED_MEDIUM, + GENLOCK_SPEED_FAST, + NUM_GENLOCK_SPEED }; enum { - VLOCKADJ_NARROW, - VLOCKADJ_165MHZ, - NUM_VLOCKADJ + GENLOCK_ADJUST_NARROW, + GENLOCK_ADJUST_165MHZ, + NUM_GENLOCK_ADJUST }; enum { @@ -260,8 +260,8 @@ enum { F_VSYNC_INDICATOR, F_GENLOCK_MODE, F_GENLOCK_LINE, - F_GENLOCK_LOCKSPEED, - F_VLOCKADJ, + F_GENLOCK_SPEED, + F_GENLOCK_ADJUST, #ifdef MULTI_BUFFER F_NUM_BUFFERS, #endif diff --git a/src/rgb_to_hdmi.c b/src/rgb_to_hdmi.c index d7d32d9c..36b3e269 100644 --- a/src/rgb_to_hdmi.c +++ b/src/rgb_to_hdmi.c @@ -233,10 +233,6 @@ static int m7deinterlace = 6; static int deinterlace = 0; static int ntsccolour = 0; static int vsync = 0; -static int vlockmode = 0; -static int vlockline = 10; -static int vlockspeed = 2; -static int vlockadj = 0; static int lines_per_2_vsyncs = 0; static int lines_per_vsync = 0; static int one_line_time_ns = 0; @@ -310,7 +306,7 @@ void start_vc_bench(int type) } -static int current_vlockmode = -1; +static int current_genlock_mode = -1; static const char *sync_names[] = { "-H-V", "+H-V", @@ -1096,12 +1092,12 @@ int calibrate_sampling_clock(int profile_changed) { } // Invalidate the current vlock mode to force an updated, as vsync_time_ns will have changed - current_vlockmode = -1; + current_genlock_mode = -1; return a; } -static void recalculate_hdmi_clock(int vlockmode, int genlock_adjust) { +static void recalculate_hdmi_clock(int genlock_mode, int genlock_adjust) { static double last_f2 = 0; // The very first time we get called, vsync_time_ns has not been set @@ -1183,7 +1179,7 @@ static void recalculate_hdmi_clock(int vlockmode, int genlock_adjust) { double f2 = pllh_clock; - if (vlockmode != HDMI_ORIGINAL && source_vsync_freq >= 48) { + if (genlock_mode != HDMI_ORIGINAL && source_vsync_freq >= 48) { f2 /= error; f2 /= 1.0 + ((double) (genlock_adjust * GENLOCK_PPM_STEP) / 1000000); } @@ -1203,7 +1199,7 @@ static void recalculate_hdmi_clock(int vlockmode, int genlock_adjust) { case GENLOCK_RANGE_NORMAL: case GENLOCK_RANGE_INHIBIT: case GENLOCK_RANGE_SET_DEFAULT: - if ((vlockadj == VLOCKADJ_NARROW) && (error_ppm < -50000 || error_ppm > 50000)) { + if ((parameters[F_GENLOCK_ADJUST] == GENLOCK_ADJUST_NARROW) && (error_ppm < -50000 || error_ppm > 50000)) { f2 = pllh_clock; vlock_limited = 1; } @@ -1211,7 +1207,7 @@ static void recalculate_hdmi_clock(int vlockmode, int genlock_adjust) { case GENLOCK_RANGE_EDID: case GENLOCK_RANGE_FORCE_LOW: if (strchr(resolution_name, '@') != 0) { //custom res file with @ in its name? - if ((vlockadj == VLOCKADJ_NARROW) && (error_ppm < -50000 || error_ppm > 50000)) { + if ((parameters[F_GENLOCK_ADJUST] == GENLOCK_ADJUST_NARROW) && (error_ppm < -50000 || error_ppm > 50000)) { f2 = pllh_clock; vlock_limited = 1; } @@ -1224,7 +1220,7 @@ static void recalculate_hdmi_clock(int vlockmode, int genlock_adjust) { break; case GENLOCK_RANGE_FORCE_ALL: //no limits above 60Hz, still limited below 48Hz if (strchr(resolution_name, '@') != 0) { //custom res file with @ in its name? - if ((vlockadj == VLOCKADJ_NARROW) && (error_ppm < -50000 || error_ppm > 50000)) { + if ((parameters[F_GENLOCK_ADJUST] == GENLOCK_ADJUST_NARROW) && (error_ppm < -50000 || error_ppm > 50000)) { f2 = pllh_clock; vlock_limited = 1; } @@ -1255,7 +1251,7 @@ static void recalculate_hdmi_clock(int vlockmode, int genlock_adjust) { //log_debug(" Original PLLH: %lf MHz", pllh_clock); //log_debug(" Target PLLH: %lf MHz", f2); source_vsync_freq_hz = (int) (source_vsync_freq + 0.5); - if (!sync_detected || vlock_limited || vlockmode != HDMI_EXACT) { + if (!sync_detected || vlock_limited || genlock_mode != HDMI_EXACT) { info_display_vsync_freq = display_vsync_freq; info_display_vsync_freq_hz = (int) (display_vsync_freq + 0.5); } else { @@ -1264,7 +1260,7 @@ static void recalculate_hdmi_clock(int vlockmode, int genlock_adjust) { } if (f2 != last_f2) { - if (vlockmode == HDMI_EXACT) { + if (genlock_mode == HDMI_EXACT) { #if defined(RPI4) double current_pllh_clock = (double) (pi4_hdmi0_regs[PI4_HDMI0_RM_OFFSET] & 0x7fffffff); #else @@ -1272,15 +1268,15 @@ static void recalculate_hdmi_clock(int vlockmode, int genlock_adjust) { #endif int ppm_diff = (int)((1 - (current_pllh_clock / f2)) * 1000000); int genlock_speed; - switch(vlockspeed) { - case VLOCKSPEED_SLOW: + switch(parameters[F_GENLOCK_SPEED]) { + case GENLOCK_SPEED_SLOW: genlock_speed = 333; break; - case VLOCKSPEED_MEDIUM: + case GENLOCK_SPEED_MEDIUM: genlock_speed = 1000; break; default: - case VLOCKSPEED_FAST: + case GENLOCK_SPEED_FAST: genlock_speed = 2000; break; } @@ -1328,7 +1324,7 @@ int __attribute__ ((aligned (64))) recalculate_hdmi_clock_line_locked_update(int if (last != jitter_offset) { log_info("Jit%d", jitter_offset); last = jitter_offset; - if (vlockmode != HDMI_EXACT) { + if (parameters[F_GENLOCK_MODE] != HDMI_EXACT) { // Return 0 if genlock disabled return 0; } else { @@ -1342,7 +1338,7 @@ int __attribute__ ((aligned (64))) recalculate_hdmi_clock_line_locked_update(int if (last_debug != debug_value) { log_info("%08X", debug_value); last_debug = debug_value; - if (vlockmode != HDMI_EXACT) { + if (parameters[F_GENLOCK_MODE] != HDMI_EXACT) { // Return 0 if genlock disabled return 0; } else { @@ -1415,7 +1411,7 @@ int __attribute__ ((aligned (64))) recalculate_hdmi_clock_line_locked_update(int ppm_range_count++; } // return without doing any genlock processing to avoid two log messages in one field. - if (vlockmode != HDMI_EXACT) { + if (parameters[F_GENLOCK_MODE] != HDMI_EXACT) { // Return 0 if genlock disabled return 0; } else { @@ -1448,12 +1444,12 @@ int __attribute__ ((aligned (64))) recalculate_hdmi_clock_line_locked_update(int if (capinfo->nlines >= GENLOCK_NLINES_THRESHOLD) { adjustment = 1; } - if (vlockmode != HDMI_EXACT) { + if (parameters[F_GENLOCK_MODE] != HDMI_EXACT) { genlocked = 0; target_difference = 0; resync_count = 0; genlock_adjust = 0; - switch (vlockmode) { + switch (parameters[F_GENLOCK_MODE]) { case HDMI_SLOW_2000PPM: genlock_adjust = 6; break; @@ -1467,27 +1463,27 @@ int __attribute__ ((aligned (64))) recalculate_hdmi_clock_line_locked_update(int genlock_adjust = -6; break; } - if (last_vlock != vlockmode) { - recalculate_hdmi_clock(vlockmode, genlock_adjust); - last_vlock = vlockmode; + if (last_vlock != parameters[F_GENLOCK_MODE]) { + recalculate_hdmi_clock(parameters[F_GENLOCK_MODE], genlock_adjust); + last_vlock = parameters[F_GENLOCK_MODE]; framecount = 0; } } else { int max_steps = GENLOCK_MAX_STEPS; int locked_threshold = GENLOCK_LOCKED_THRESHOLD; int frame_delay = GENLOCK_FRAME_DELAY; - if (vlockspeed == VLOCKSPEED_MEDIUM) { + if (parameters[F_GENLOCK_SPEED] == GENLOCK_SPEED_MEDIUM) { max_steps >>= 1; locked_threshold--; frame_delay <<= 1; } else { - if (vlockspeed == VLOCKSPEED_SLOW) { + if (parameters[F_GENLOCK_SPEED] == GENLOCK_SPEED_SLOW) { max_steps = 1; locked_threshold = 1; frame_delay <<= 1; } } - signed int difference = (vsync_line >> adjustment) - ((total_lines >> adjustment) - vlockline); + signed int difference = (vsync_line >> adjustment) - ((total_lines >> adjustment) - parameters[F_GENLOCK_LINE]); if (abs(difference) > (total_lines >> (adjustment + 1))) { difference = -difference; } @@ -1564,7 +1560,7 @@ int __attribute__ ((aligned (64))) recalculate_hdmi_clock_line_locked_update(int last_vlock = HDMI_EXACT; genlock_adjust = new_genlock_adjust; framecount = frame_delay; - //log_debug("%4d,%4d,%4d,%4d,%4d,%4d", genlocked, vlockline, vsync_line, difference, thresholds[abs(genlock_adjust)], genlock_adjust); + //log_debug("%4d,%4d,%4d,%4d,%4d,%4d", genlocked, parameters[F_GENLOCK_LINE], vsync_line, difference, thresholds[abs(genlock_adjust)], genlock_adjust); } } } @@ -1573,7 +1569,7 @@ int __attribute__ ((aligned (64))) recalculate_hdmi_clock_line_locked_update(int if (framecount != 0) { framecount --; } - if (vlockmode != HDMI_EXACT) { + if (parameters[F_GENLOCK_MODE] != HDMI_EXACT) { // Return 0 if genlock disabled return 0; } else { @@ -3003,41 +2999,6 @@ int get_vsync() { return vsync; } -void set_vlockmode(int val) { - vlockmode = val; - recalculate_hdmi_clock_line_locked_update(GENLOCK_FORCE); -} - -int get_vlockmode() { - return vlockmode; -} - -void set_vlockline(int val) { - vlockline = val; - recalculate_hdmi_clock_line_locked_update(GENLOCK_FORCE); -} - -int get_vlockline() { - return vlockline; -} - -void set_vlockadj(int val) { - vlockadj = val; - recalculate_hdmi_clock_line_locked_update(GENLOCK_FORCE); -} - -int get_vlockadj() { - return vlockadj; -} - -void set_vlockspeed(int val) { - vlockspeed = val; -} - -int get_vlockspeed() { - return vlockspeed; -} - int get_core_1_available() { return core_1_available; } @@ -3071,7 +3032,18 @@ int get_parameter(int parameter) { void set_parameter(int parameter, int value) { switch (parameter) { //space for special case handling + + + case F_GENLOCK_MODE: + case F_GENLOCK_LINE: + { + parameters[parameter] = value; + recalculate_hdmi_clock_line_locked_update(GENLOCK_FORCE); + } + break; + case F_AUTO_SWITCH: + { // Prevent autoswitch (to mode 7) being accidentally with the Atom CPLD, // for example by selecting the BBC_Micro profile, as this results in // an unusable OSD which persists even after cycling power. @@ -3085,25 +3057,23 @@ void set_parameter(int parameter, int value) { // // It might be better to combine this with the cpld->old_firmware() and // rename this to cpld->get_capabilities(). - { - int cpld_ver = (cpld->get_version() >> VERSION_DESIGN_BIT) & 0x0F; - if (value == AUTOSWITCH_MODE7 && (cpld_ver == DESIGN_ATOM || cpld_ver == DESIGN_YUV_ANALOG)) { - if (parameters[F_AUTO_SWITCH] == (AUTOSWITCH_MODE7 - 1)) { - parameters[F_AUTO_SWITCH] = AUTOSWITCH_MODE7 + 1; - } else if (parameters[F_AUTO_SWITCH] == (AUTOSWITCH_MODE7 + 1)) { - parameters[F_AUTO_SWITCH] = AUTOSWITCH_MODE7 - 1; - } else { - parameters[F_AUTO_SWITCH] = value; - } - } else { + + int cpld_ver = (cpld->get_version() >> VERSION_DESIGN_BIT) & 0x0F; + if (value == AUTOSWITCH_MODE7 && (cpld_ver == DESIGN_ATOM || cpld_ver == DESIGN_YUV_ANALOG)) { + if (parameters[F_AUTO_SWITCH] == (AUTOSWITCH_MODE7 - 1)) { + parameters[F_AUTO_SWITCH] = AUTOSWITCH_MODE7 + 1; + } else if (parameters[F_AUTO_SWITCH] == (AUTOSWITCH_MODE7 + 1)) { + parameters[F_AUTO_SWITCH] = AUTOSWITCH_MODE7 - 1; + } else { parameters[F_AUTO_SWITCH] = value; - } - set_hsync_threshold(); + } + } else { + parameters[F_AUTO_SWITCH] = value; } - break; - - + set_hsync_threshold(); + } + break; default: @@ -3116,7 +3086,7 @@ void action_calibrate_clocks() { // re-measure vsync and set the core/sampling clocks calibrate_sampling_clock(0); // set the hdmi clock property to match exactly - set_vlockmode(HDMI_EXACT); + set_parameter(F_GENLOCK_MODE, HDMI_EXACT); } void action_calibrate_auto() { @@ -3353,7 +3323,7 @@ geometry_get_fb_params(capinfo); capinfo->ncapture = ncapture; calculate_fb_adjustment(); - // force recalculation of the HDMI clock (if the vlockmode property requires this) + // force recalculation of the HDMI clock (if the genlock_mode property requires this) recalculate_hdmi_clock_line_locked_update(GENLOCK_FORCE); log_info("Screen size = %dx%d", get_hdisplay(), get_vdisplay()); @@ -3540,7 +3510,7 @@ geometry_get_fb_params(capinfo); } else { if (!reboot_required) { if (sync_detected) { - if (vlock_limited && (vlockmode != HDMI_ORIGINAL)) { + if (vlock_limited && (parameters[F_GENLOCK_MODE] != HDMI_ORIGINAL)) { if (force_genlock_range == GENLOCK_RANGE_INHIBIT) { sprintf(osdline, "Recovery mode: 50Hz disabled until reset"); } else { @@ -3655,7 +3625,7 @@ geometry_get_fb_params(capinfo); resync_count = 0; // Measure the frame time and set the sampling clock calibrate_sampling_clock(0); - // Force recalculation of the HDMI clock (if the vlockmode property requires this) + // Force recalculation of the HDMI clock (if the genlock_mode property requires this) recalculate_hdmi_clock_line_locked_update(GENLOCK_FORCE); } @@ -3733,6 +3703,9 @@ int show_detected_status(int line) { void kernel_main(unsigned int r0, unsigned int r1, unsigned int atags) { parameters[F_AUTO_SWITCH] = 2; + parameters[F_GENLOCK_LINE] = 10; + parameters[F_GENLOCK_SPEED] = 2; + char message[128]; RPI_AuxMiniUartInit(115200, 8); rpi_mailbox_property_t *mp; diff --git a/src/rgb_to_hdmi.h b/src/rgb_to_hdmi.h index 8ffd2290..76a3cc0d 100644 --- a/src/rgb_to_hdmi.h +++ b/src/rgb_to_hdmi.h @@ -60,14 +60,7 @@ void set_fontsize(int value); int get_fontsize(); void set_vsync(int on); int get_vsync(); -void set_vlockmode(int val); -int get_vlockmode(); -void set_vlockline(int val); -int get_vlockline(); -void set_vlockspeed(int val); -int get_vlockspeed(); -void set_vlockadj(int val); -int get_vlockadj(); + int get_lines_per_vsync(); int get_50hz_state(); From 3e2ca4c9db59f7cd897481f2d59886a76258efbc Mon Sep 17 00:00:00 2001 From: IanSB Date: Sat, 25 Feb 2023 17:18:53 +0000 Subject: [PATCH 09/46] Refactor vsync indicator, scanlines, scanline level, output colour & output invert --- src/geometry.c | 10 +++---- src/osd.c | 49 +++++++++++++------------------- src/rgb_to_hdmi.c | 72 ++++++++++++++--------------------------------- src/rgb_to_hdmi.h | 13 ++------- 4 files changed, 48 insertions(+), 96 deletions(-) diff --git a/src/geometry.c b/src/geometry.c index 4c7b0c28..b719ef1d 100644 --- a/src/geometry.c +++ b/src/geometry.c @@ -467,7 +467,7 @@ void geometry_get_fb_params(capture_info_t *capinfo) { if ((capinfo->detected_sync_type & SYNC_BIT_INTERLACED) && capinfo->video_type != VIDEO_PROGRESSIVE) { capinfo->sizex2 |= SIZEX2_DOUBLE_HEIGHT; } else { - if (get_scanlines() && !(menu_active() || osd_active())) { + if (get_parameter(F_SCANLINES) && !(menu_active() || osd_active())) { if ((capinfo->sizex2 & SIZEX2_DOUBLE_HEIGHT) == 0) { capinfo->sizex2 |= SIZEX2_BASIC_SCANLINES; //flag basic scanlines } @@ -534,7 +534,7 @@ void geometry_get_fb_params(capture_info_t *capinfo) { capinfo->border = get_border(); } else { capinfo->border = get_border(); - if (get_invert() == INVERT_Y) { + if (get_parameter(F_OUTPUT_INVERT) == INVERT_Y) { capinfo->border ^= 0x12; } } @@ -543,10 +543,10 @@ void geometry_get_fb_params(capture_info_t *capinfo) { } capinfo->ntscphase = get_adjusted_ntscphase() | (get_ntsccolour() << NTSC_ARTIFACT_SHIFT); - if (get_invert() == INVERT_Y) { + if (get_parameter(F_OUTPUT_INVERT) == INVERT_Y) { capinfo->ntscphase |= NTSC_Y_INVERT; } - if (get_invert() == INVERT_RGB) { + if (get_parameter(F_OUTPUT_INVERT) == INVERT_RGB) { capinfo->ntscphase |= NTSC_RGB_INVERT; } if (get_hdmi_standby()) { @@ -878,7 +878,7 @@ void geometry_get_fb_params(capture_info_t *capinfo) { caphscale >>= 1; } } else { - if (osd_active() || get_scanlines()) { + if (osd_active() || get_parameter(F_SCANLINES)) { if (double_width) { caphscale >>= 1; } diff --git a/src/osd.c b/src/osd.c index 028c9d64..9bb81975 100644 --- a/src/osd.c +++ b/src/osd.c @@ -1161,19 +1161,14 @@ static int get_feature(int num) { return Pgamma; case F_TIMING_SET: return get_timingset(); + + + case F_SCANLINES: - return get_scanlines(); case F_SCANLINE_LEVEL: - return get_scanlines_intensity(); case F_OUTPUT_COLOUR: - return get_colour(); case F_OUTPUT_INVERT: - return get_invert(); case F_VSYNC_INDICATOR: - return get_vsync(); - - - case F_GENLOCK_MODE: case F_GENLOCK_LINE: case F_GENLOCK_SPEED: @@ -1334,27 +1329,10 @@ static void set_feature(int num, int value) { case F_TIMING_SET: set_timingset(value); break; - case F_SCANLINES: - set_scanlines(value); - break; - case F_SCANLINE_LEVEL: - set_scanlines_intensity(value); - break; - case F_OUTPUT_COLOUR: - set_colour(value); - osd_update_palette(); - break; - case F_OUTPUT_INVERT: - set_invert(value); - osd_update_palette(); - break; - case F_VSYNC_INDICATOR: - set_vsync(value); - features[F_GENLOCK_MODE].max = (value == 0) ? (NUM_HDMI - 5) : (NUM_HDMI - 1); - break; - + case F_SCANLINES: + case F_SCANLINE_LEVEL: case F_GENLOCK_MODE: case F_GENLOCK_LINE: case F_GENLOCK_SPEED: @@ -1365,6 +1343,17 @@ static void set_feature(int num, int value) { case F_INTEGER_ASPECT: set_parameter(num, value); break; + + + case F_OUTPUT_COLOUR: + case F_OUTPUT_INVERT: + set_parameter(num, value); + osd_update_palette(); + break; + case F_VSYNC_INDICATOR: + set_parameter(num, value); + features[F_GENLOCK_MODE].max = (value == 0) ? (NUM_HDMI - 5) : (NUM_HDMI - 1); + break; case F_DEBUG: set_parameter(num, value); osd_update_palette(); @@ -5063,9 +5052,9 @@ int osd_key(int key) { clear_menu_bits(); osd_set(0, ATTR_DOUBLE_SIZE, "Enable Genlock"); // Record the starting value of vsync - last_vsync = get_vsync(); + last_vsync = get_parameter(F_VSYNC_INDICATOR); // Enable vsync - set_vsync(1); + set_parameter(F_VSYNC_INDICATOR, 1); // Do the actual clock calibration if (!is_genlocked()) { action_calibrate_clocks(); @@ -5204,7 +5193,7 @@ int osd_key(int key) { case CLOCK_CAL1: // Restore the original setting of vsync - set_vsync(last_vsync); + set_parameter(F_VSYNC_INDICATOR, last_vsync); osd_clear(); // back to CLOCK_IDLE osd_state = IDLE; diff --git a/src/rgb_to_hdmi.c b/src/rgb_to_hdmi.c index 36b3e269..4bd61f39 100644 --- a/src/rgb_to_hdmi.c +++ b/src/rgb_to_hdmi.c @@ -224,15 +224,10 @@ static int ntscphase = 0; static int ntsctype = 0; static int ntscfringe = 0; static int ffosd = 0; -static int scanlines = 0; -static int scanlines_intensity = 0; -static int colour = 0; -static int invert = 0; static int fontsize = 0; static int m7deinterlace = 6; static int deinterlace = 0; static int ntsccolour = 0; -static int vsync = 0; static int lines_per_2_vsyncs = 0; static int lines_per_vsync = 0; static int one_line_time_ns = 0; @@ -1984,7 +1979,7 @@ int extra_flags() { if (parameters[F_AUTO_SWITCH] != AUTOSWITCH_MODE7) { extra |= BIT_NO_H_SCROLL; } - if (!scanlines || ((capinfo->sizex2 & SIZEX2_DOUBLE_HEIGHT) == 0) || (capinfo->mode7) || osd_active()) { + if (!parameters[F_SCANLINES] || ((capinfo->sizex2 & SIZEX2_DOUBLE_HEIGHT) == 0) || (capinfo->mode7) || osd_active()) { extra |= BIT_NO_SCANLINES; } if (osd_active()) { @@ -2888,42 +2883,6 @@ int get_ffosd() { return ffosd; } -void set_scanlines(int on) { - scanlines = on; - clear = BIT_CLEAR; -} - -int get_scanlines() { - return scanlines; -} - -void set_scanlines_intensity(int value) { - scanlines_intensity = value; -} - -int get_scanlines_intensity() { - if ((geometry_get_value(FB_SIZEX2) & 1) == 0) { - return 0; // returns 0 depending on state of double height - } else { - return scanlines_intensity; - } -} - -void set_colour(int val) { - colour = val; -} - -int get_colour() { - return colour; -} - -void set_invert(int value) { - invert =value; -} - -int get_invert() { - return invert; -} void set_fontsize(int value) { fontsize=value; @@ -2991,13 +2950,7 @@ int get_timingset(){ return timingset; } -void set_vsync(int on) { - vsync = on; -} -int get_vsync() { - return vsync; -} int get_core_1_available() { return core_1_available; @@ -3023,6 +2976,18 @@ int get_50hz_state() { int get_parameter(int parameter) { switch (parameter) { //space for special case handling + + + case F_SCANLINE_LEVEL: + { + if ((geometry_get_value(FB_SIZEX2) & 1) == 0) { + return 0; // returns 0 depending on state of double height + } else { + return parameters[parameter]; + } + } + break; + default: return parameters[parameter]; break; @@ -3033,6 +2998,12 @@ void set_parameter(int parameter, int value) { switch (parameter) { //space for special case handling + case F_SCANLINES: + { + parameters[parameter] = value; + clear = BIT_CLEAR; + } + break; case F_GENLOCK_MODE: case F_GENLOCK_LINE: @@ -3075,7 +3046,6 @@ void set_parameter(int parameter, int value) { } break; - default: parameters[parameter] = value; break; @@ -3454,7 +3424,7 @@ geometry_get_fb_params(capinfo); int flags = extra_flags() | clear; - if (vsync) { + if (parameters[F_VSYNC_INDICATOR]) { flags |= BIT_VSYNC; } if (parameters[F_DEBUG]) { @@ -3537,7 +3507,7 @@ geometry_get_fb_params(capinfo); } } } - capinfo->intensity = scanlines_intensity; + capinfo->intensity = parameters[F_SCANLINE_LEVEL]; log_debug("Entering rgb_to_fb, flags=%08x", flags); result = rgb_to_fb(capinfo, flags); diff --git a/src/rgb_to_hdmi.h b/src/rgb_to_hdmi.h index 76a3cc0d..9c86c38a 100644 --- a/src/rgb_to_hdmi.h +++ b/src/rgb_to_hdmi.h @@ -35,16 +35,10 @@ void set_deinterlace(int value); int get_deinterlace(); void set_ffosd(int value); int get_ffosd(); -void set_scanlines(int on); -int get_scanlines(); + void set_ntsccolour(int value); int get_ntsccolour(); -void set_scanlines_intensity(int value); -int get_scanlines_intensity(); -void set_colour(int value); -int get_colour(); -void set_invert(int value); -int get_invert(); + void set_ntscphase(int value); int get_ntscphase(); void set_ntsctype(int value); @@ -58,8 +52,7 @@ void set_timingset(int value); int get_timingset(); void set_fontsize(int value); int get_fontsize(); -void set_vsync(int on); -int get_vsync(); + int get_lines_per_vsync(); From 39fd5ac345d6bdb4603737bed05cd798dcd763f6 Mon Sep 17 00:00:00 2001 From: IanSB Date: Sat, 25 Feb 2023 18:08:13 +0000 Subject: [PATCH 10/46] Refactor timing set, ntsc colour, phase, type and quality --- src/geometry.c | 6 +-- src/osd.c | 117 ++++++++++++++++++++------------------------- src/rgb_to_hdmi.c | 96 ++++++++++++++++--------------------- src/rgb_to_hdmi.h | 19 ++------ src/vid_cga_comp.c | 8 ++-- 5 files changed, 105 insertions(+), 141 deletions(-) diff --git a/src/geometry.c b/src/geometry.c index b719ef1d..8dd8b0f3 100644 --- a/src/geometry.c +++ b/src/geometry.c @@ -449,7 +449,7 @@ void geometry_get_fb_params(capture_info_t *capinfo) { capinfo->bpp = 4; //force 4bpp for teletext } else if (capinfo->sample_width >= SAMPLE_WIDTH_9LO && capinfo->bpp == 4) { capinfo->bpp = 8; //force at least 8bpp in 12 bit modes as no capture loops for capture into 4bpp buffer - } else if (capinfo->sample_width == SAMPLE_WIDTH_6 && (capinfo->bpp < 8 || (capinfo->bpp > 8 && (get_core_1_available() == 0 || get_ntsctype() == NTSCTYPE_SIMPLE)))) { + } else if (capinfo->sample_width == SAMPLE_WIDTH_6 && (capinfo->bpp < 8 || (capinfo->bpp > 8 && (get_core_1_available() == 0 || get_parameter(F_NTSC_TYPE) == NTSCTYPE_SIMPLE)))) { capinfo->bpp = 8; //force 8bpp in 6 bit modes as no capture loops for 6 bit capture into 4 or 16 bpp buffer } else if (capinfo->sample_width <= SAMPLE_WIDTH_3 && capinfo->bpp > 8) { capinfo->bpp = 8; //force 8bpp in 1 & 3 bit modes as no capture loops for 1 or 3 bit capture into 16bpp buffer @@ -527,7 +527,7 @@ void geometry_get_fb_params(capture_info_t *capinfo) { } if (geometry->setup_mode == SETUP_NORMAL) { - if (((get_paletteControl() == PALETTECONTROL_NTSCARTIFACT_CGA && get_ntsccolour() != 0) + if (((get_paletteControl() == PALETTECONTROL_NTSCARTIFACT_CGA && get_parameter(F_NTSC_COLOUR) != 0) || (get_paletteControl() == PALETTECONTROL_NTSCARTIFACT_BW) || (get_paletteControl() == PALETTECONTROL_NTSCARTIFACT_BW_AUTO)) && capinfo->bpp == 8 && capinfo->sample_width <= SAMPLE_WIDTH_6) { @@ -542,7 +542,7 @@ void geometry_get_fb_params(capture_info_t *capinfo) { capinfo->border = 0x12; // max green/Y } - capinfo->ntscphase = get_adjusted_ntscphase() | (get_ntsccolour() << NTSC_ARTIFACT_SHIFT); + capinfo->ntscphase = get_adjusted_ntscphase() | (get_parameter(F_NTSC_COLOUR) << NTSC_ARTIFACT_SHIFT); if (get_parameter(F_OUTPUT_INVERT) == INVERT_Y) { capinfo->ntscphase |= NTSC_Y_INVERT; } diff --git a/src/osd.c b/src/osd.c index 9bb81975..67873946 100644 --- a/src/osd.c +++ b/src/osd.c @@ -1137,33 +1137,16 @@ static int get_feature(int num) { return get_ffosd(); case F_SWAP_ASPECT: return get_stretch(); - case F_PALETTE: - return palette; + case F_PALETTE_CONTROL: return get_paletteControl(); + + case F_NTSC_COLOUR: - return get_ntsccolour(); case F_NTSC_PHASE: - return get_ntscphase(); case F_NTSC_TYPE: - return get_ntsctype(); case F_NTSC_QUALITY: - return get_ntscfringe(); - case F_TINT: - return tint; - case F_SAT: - return saturation; - case F_CONT: - return contrast; - case F_BRIGHT: - return brightness; - case F_GAMMA: - return Pgamma; case F_TIMING_SET: - return get_timingset(); - - - case F_SCANLINES: case F_SCANLINE_LEVEL: case F_OUTPUT_COLOUR: @@ -1182,6 +1165,18 @@ static int get_feature(int num) { return get_parameter(num); + case F_PALETTE: + return palette; + case F_TINT: + return tint; + case F_SAT: + return saturation; + case F_CONT: + return contrast; + case F_BRIGHT: + return brightness; + case F_GAMMA: + return Pgamma; case F_RETURN_POSITION: return return_at_end; case F_OVERCLOCK_CPU: @@ -1278,10 +1273,7 @@ static void set_feature(int num, int value) { set_fontsize(value); } break; - case F_PALETTE: - palette = value; - osd_update_palette(); - break; + case F_PALETTE_CONTROL: set_paletteControl(value); int hidden = (value < PALETTECONTROL_NTSCARTIFACT_CGA); @@ -1289,48 +1281,14 @@ static void set_feature(int num, int value) { features[F_NTSC_PHASE].hidden = hidden; osd_update_palette(); break; - case F_NTSC_COLOUR: - set_ntsccolour(value); - osd_update_palette(); - break; + + + + case F_NTSC_PHASE: - set_ntscphase(value); - break; case F_NTSC_TYPE: - set_ntsctype(value); - break; case F_NTSC_QUALITY: - set_ntscfringe(value); - break; - case F_TINT: - tint = value; - osd_update_palette(); - update_cga16_color(); - break; - case F_SAT: - saturation = value; - osd_update_palette(); - update_cga16_color(); - break; - case F_CONT: - contrast = value; - osd_update_palette(); - update_cga16_color(); - break; - case F_BRIGHT: - brightness = value; - osd_update_palette(); - update_cga16_color(); - break; - case F_GAMMA: - Pgamma = value; - osd_update_palette(); - break; case F_TIMING_SET: - set_timingset(value); - break; - - case F_SCANLINES: case F_SCANLINE_LEVEL: case F_GENLOCK_MODE: @@ -1344,7 +1302,7 @@ static void set_feature(int num, int value) { set_parameter(num, value); break; - + case F_NTSC_COLOUR: case F_OUTPUT_COLOUR: case F_OUTPUT_INVERT: set_parameter(num, value); @@ -1365,6 +1323,35 @@ static void set_feature(int num, int value) { break; + + case F_PALETTE: + palette = value; + osd_update_palette(); + break; + case F_TINT: + tint = value; + osd_update_palette(); + update_cga16_color(); + break; + case F_SAT: + saturation = value; + osd_update_palette(); + update_cga16_color(); + break; + case F_CONT: + contrast = value; + osd_update_palette(); + update_cga16_color(); + break; + case F_BRIGHT: + brightness = value; + osd_update_palette(); + update_cga16_color(); + break; + case F_GAMMA: + Pgamma = value; + osd_update_palette(); + break; case F_RETURN_POSITION: return_at_end = value; cycle_menus(); @@ -4232,7 +4219,7 @@ void osd_update_palette() { } - if (((get_paletteControl() == PALETTECONTROL_NTSCARTIFACT_CGA && get_ntsccolour() != 0) + if (((get_paletteControl() == PALETTECONTROL_NTSCARTIFACT_CGA && get_parameter(F_NTSC_COLOUR) != 0) || (get_paletteControl() == PALETTECONTROL_NTSCARTIFACT_BW) || (get_paletteControl() == PALETTECONTROL_NTSCARTIFACT_BW_AUTO)) && capinfo->bpp == 8 && capinfo->sample_width <= SAMPLE_WIDTH_6) { @@ -5043,7 +5030,7 @@ int osd_key(int key) { set_feature(F_TIMING_SET, 1 - get_feature(F_TIMING_SET)); ret = 1; osd_state = TIMINGSET_MESSAGE; - } else if (get_ntsccolour() && (get_paletteControl() == PALETTECONTROL_NTSCARTIFACT_CGA || get_paletteControl() == PALETTECONTROL_NTSCARTIFACT_BW || get_paletteControl() == PALETTECONTROL_NTSCARTIFACT_BW_AUTO)) { + } else if (get_parameter(F_NTSC_COLOUR) && (get_paletteControl() == PALETTECONTROL_NTSCARTIFACT_CGA || get_paletteControl() == PALETTECONTROL_NTSCARTIFACT_BW || get_paletteControl() == PALETTECONTROL_NTSCARTIFACT_BW_AUTO)) { set_feature(F_NTSC_PHASE, (get_feature(F_NTSC_PHASE) + 1) & 3); ret = 1; osd_state = NTSC_PHASE_MESSAGE; diff --git a/src/rgb_to_hdmi.c b/src/rgb_to_hdmi.c index 4bd61f39..56e21965 100644 --- a/src/rgb_to_hdmi.c +++ b/src/rgb_to_hdmi.c @@ -218,16 +218,11 @@ static int gscaling = GSCALING_INTEGER; static int filtering = DEFAULT_FILTERING; static int old_filtering = - 1; static int frontend = 0; -static int timingset = 0; static int border = 0; -static int ntscphase = 0; -static int ntsctype = 0; -static int ntscfringe = 0; static int ffosd = 0; static int fontsize = 0; static int m7deinterlace = 6; static int deinterlace = 0; -static int ntsccolour = 0; static int lines_per_2_vsyncs = 0; static int lines_per_vsync = 0; static int one_line_time_ns = 0; @@ -2851,13 +2846,7 @@ int get_frontend() { return frontend; } -void set_ntsccolour(int value) { - ntsccolour = value; -} -int get_ntsccolour() { - return ntsccolour; -} void set_m7deinterlace(int mode) { m7deinterlace = mode; @@ -2892,42 +2881,15 @@ int get_fontsize() { return fontsize; } -void set_ntscphase(int value) { - if (ntscphase != value) { - ntscphase = value; - osd_update_palette(); - update_cga16_color(); - } -} -int get_ntscphase() { - return ntscphase; -} -void set_ntsctype(int value) { - ntsctype = value; - update_cga16_color(); -} - -int get_ntsctype() { - return ntsctype; -} - -void set_ntscfringe(int value) { - ntscfringe = value; - update_cga16_color(); -} - -int get_ntscfringe() { - return ntscfringe; -} int get_adjusted_ntscphase() { - int phase = ntscphase; - if (ntscfringe == FRINGE_SOFT) { + int phase = parameters[F_NTSC_PHASE]; + if (parameters[F_NTSC_QUALITY] == FRINGE_SOFT) { phase |= NTSC_SOFT; } - if (ntscfringe == FRINGE_MEDIUM) { + if (parameters[F_NTSC_QUALITY] == FRINGE_MEDIUM) { phase |= NTSC_MEDIUM; } return phase; @@ -2942,15 +2904,6 @@ int get_border() { return border; } -void set_timingset(int value) { - timingset = value; -} - -int get_timingset(){ - return timingset; -} - - int get_core_1_available() { return core_1_available; @@ -2973,6 +2926,10 @@ int get_50hz_state() { return -1; } + + + + int get_parameter(int parameter) { switch (parameter) { //space for special case handling @@ -2994,10 +2951,39 @@ int get_parameter(int parameter) { } } + +void set_ntsccolour(int value) { + parameters[F_NTSC_COLOUR] = value; +} + +void set_timingset(int value) { + parameters[F_TIMING_SET] = value; +} + void set_parameter(int parameter, int value) { switch (parameter) { //space for special case handling - + case F_NTSC_PHASE: + { + if (parameters[F_NTSC_PHASE] != value) { + parameters[F_NTSC_PHASE] = value; + osd_update_palette(); + update_cga16_color(); + } + } + break; + case F_NTSC_TYPE: + { + parameters[F_NTSC_PHASE] = value; + update_cga16_color(); + } + break; + case F_NTSC_QUALITY: + { + parameters[F_NTSC_QUALITY] = value; + update_cga16_color(); + } + break; case F_SCANLINES: { parameters[parameter] = value; @@ -3108,7 +3094,7 @@ void calculate_fb_adjustment() { void setup_profile(int profile_changed) { geometry_set_mode(modeset); capinfo->palette_control = paletteControl; - if ((capinfo->palette_control == PALETTECONTROL_NTSCARTIFACT_CGA && ntsccolour == 0)) { + if ((capinfo->palette_control == PALETTECONTROL_NTSCARTIFACT_CGA && parameters[F_NTSC_COLOUR] == 0)) { capinfo->palette_control = PALETTECONTROL_OFF; } capinfo->palette_control |= (get_inhibit_palette_dimming16() << 31); @@ -3274,7 +3260,7 @@ void rgb_to_hdmi_main() { } if (last_subprofile != subprofile || restart_profile) { - ntsc_status = (modeset << NTSC_LAST_IIGS_SHIFT) | (ntsccolour << NTSC_LAST_ARTIFACT_SHIFT); + ntsc_status = (modeset << NTSC_LAST_IIGS_SHIFT) | (parameters[F_NTSC_COLOUR] << NTSC_LAST_ARTIFACT_SHIFT); } geometry_get_fb_params(capinfo); restart_profile = 0; @@ -3548,7 +3534,7 @@ geometry_get_fb_params(capinfo); cpld->update_capture_info(capinfo); geometry_get_fb_params(capinfo); capinfo->palette_control = paletteControl; - if ((capinfo->palette_control == PALETTECONTROL_NTSCARTIFACT_CGA && ntsccolour == 0)) { + if ((capinfo->palette_control == PALETTECONTROL_NTSCARTIFACT_CGA && parameters[F_NTSC_COLOUR] == 0)) { capinfo->palette_control = PALETTECONTROL_OFF; } capinfo->palette_control |= (get_inhibit_palette_dimming16() << 31); @@ -3577,7 +3563,7 @@ geometry_get_fb_params(capinfo); } } else if (parameters[F_AUTO_SWITCH] == AUTOSWITCH_MANUAL || parameters[F_AUTO_SWITCH] == AUTOSWITCH_IIGS_MANUAL) { - modeset = timingset; + modeset = parameters[F_TIMING_SET]; } else { modeset = MODE_SET1; } diff --git a/src/rgb_to_hdmi.h b/src/rgb_to_hdmi.h index 9c86c38a..0e82dbf2 100644 --- a/src/rgb_to_hdmi.h +++ b/src/rgb_to_hdmi.h @@ -36,25 +36,16 @@ int get_deinterlace(); void set_ffosd(int value); int get_ffosd(); -void set_ntsccolour(int value); -int get_ntsccolour(); - -void set_ntscphase(int value); -int get_ntscphase(); -void set_ntsctype(int value); -int get_ntsctype(); -void set_ntscfringe(int value); -int get_ntscfringe(); -int get_adjusted_ntscphase(); -void set_border(int value); -int get_border(); -void set_timingset(int value); -int get_timingset(); void set_fontsize(int value); int get_fontsize(); +void set_border(int value); +int get_border(); +void set_ntsccolour(int value); +void set_timingset(int value); +int get_adjusted_ntscphase(); int get_lines_per_vsync(); int get_50hz_state(); int get_core_1_available(); diff --git a/src/vid_cga_comp.c b/src/vid_cga_comp.c index feb52e36..7ee013ee 100644 --- a/src/vid_cga_comp.c +++ b/src/vid_cga_comp.c @@ -102,9 +102,9 @@ void update_cga16_color() { contrast = get_contrast(); saturation = get_saturation(); hue_offset = get_tint(); - ntsc_pixel_phase = ((get_ntscphase() ^ 3)) & 3; //reorder to match existing artifact code + ntsc_pixel_phase = ((get_parameter(F_NTSC_PHASE) ^ 3)) & 3; //reorder to match existing artifact code - switch(get_ntscfringe()) { + switch(get_parameter(F_NTSC_QUALITY)) { default: case FRINGE_MEDIUM: sharpness = 0; @@ -117,12 +117,12 @@ void update_cga16_color() { break; } - ntsc_type = get_ntsctype(); + ntsc_type = get_parameter(F_NTSC_TYPE); bool new_cga; //maybe add some hue or brt/cont offsets etc here - switch(get_ntsctype()) { + switch(get_parameter(F_NTSC_TYPE)) { default: case NTSCTYPE_NEW_CGA: new_cga = 1; From 529b2f86e1afc8d5c59328df6581c5470e94aa62 Mon Sep 17 00:00:00 2001 From: IanSB Date: Sat, 25 Feb 2023 18:56:18 +0000 Subject: [PATCH 11/46] Refactor border colour, font size, mode7 deinterlace, normal deinterlace, FFOSD, palette control --- src/geometry.c | 12 ++--- src/osd.c | 112 ++++++++++++++++++++-------------------------- src/rgb_to_hdmi.c | 97 ++++++++++----------------------------- src/rgb_to_hdmi.h | 15 +------ 4 files changed, 79 insertions(+), 157 deletions(-) diff --git a/src/geometry.c b/src/geometry.c index 8dd8b0f3..3b0f1e2c 100644 --- a/src/geometry.c +++ b/src/geometry.c @@ -527,13 +527,13 @@ void geometry_get_fb_params(capture_info_t *capinfo) { } if (geometry->setup_mode == SETUP_NORMAL) { - if (((get_paletteControl() == PALETTECONTROL_NTSCARTIFACT_CGA && get_parameter(F_NTSC_COLOUR) != 0) - || (get_paletteControl() == PALETTECONTROL_NTSCARTIFACT_BW) - || (get_paletteControl() == PALETTECONTROL_NTSCARTIFACT_BW_AUTO)) + if (((get_parameter(F_PALETTE_CONTROL) == PALETTECONTROL_NTSCARTIFACT_CGA && get_parameter(F_NTSC_COLOUR) != 0) + || (get_parameter(F_PALETTE_CONTROL) == PALETTECONTROL_NTSCARTIFACT_BW) + || (get_parameter(F_PALETTE_CONTROL) == PALETTECONTROL_NTSCARTIFACT_BW_AUTO)) && capinfo->bpp == 8 && capinfo->sample_width <= SAMPLE_WIDTH_6) { - capinfo->border = get_border(); + capinfo->border = get_parameter(F_BORDER_COLOUR); } else { - capinfo->border = get_border(); + capinfo->border = get_parameter(F_BORDER_COLOUR); if (get_parameter(F_OUTPUT_INVERT) == INVERT_Y) { capinfo->border ^= 0x12; } @@ -553,7 +553,7 @@ void geometry_get_fb_params(capture_info_t *capinfo) { capinfo->ntscphase |= NTSC_HDMI_BLANK_ENABLE; } - if (get_ffosd()) { + if (get_parameter(F_FFOSD)) { capinfo->ntscphase |= NTSC_FFOSD_ENABLE; } diff --git a/src/osd.c b/src/osd.c index 67873946..f8df1165 100644 --- a/src/osd.c +++ b/src/osd.c @@ -1121,27 +1121,14 @@ static int get_feature(int num) { return get_overscan(); case F_SCREENCAP_SIZE: return get_capscale(); + + case F_BORDER_COLOUR: - return get_border(); case F_FONT_SIZE: - return get_fontsize(); case F_MODE7_DEINTERLACE: - return get_m7deinterlace(); - case F_MODE7_SCALING: - return get_m7scaling(); case F_NORMAL_DEINTERLACE: - return get_deinterlace(); - case F_NORMAL_SCALING: - return get_normalscaling(); case F_FFOSD: - return get_ffosd(); - case F_SWAP_ASPECT: - return get_stretch(); - case F_PALETTE_CONTROL: - return get_paletteControl(); - - case F_NTSC_COLOUR: case F_NTSC_PHASE: case F_NTSC_TYPE: @@ -1164,6 +1151,13 @@ static int get_feature(int num) { case F_INTEGER_ASPECT: return get_parameter(num); + case F_SWAP_ASPECT: + return get_stretch(); + case F_NORMAL_SCALING: + return get_normalscaling(); + case F_MODE7_SCALING: + return get_m7scaling(); + case F_PALETTE: return palette; @@ -1237,54 +1231,20 @@ static void set_feature(int num, int value) { case F_FRONTEND: set_frontend(value, 1); break; - case F_MODE7_DEINTERLACE: - set_m7deinterlace(value); - break; - case F_MODE7_SCALING: - set_m7scaling(value); - break; - case F_NORMAL_DEINTERLACE: - set_deinterlace(value); - break; - case F_NORMAL_SCALING: - set_normalscaling(value); - break; - case F_FFOSD: - set_ffosd(value); - break; - case F_SWAP_ASPECT: - set_stretch(value); - break; + + case F_CROP_BORDER: set_overscan(value); break; case F_SCREENCAP_SIZE: set_capscale(value); break; - case F_BORDER_COLOUR: - set_border(value); - break; - case F_FONT_SIZE: - if(active) { - osd_clear(); - set_fontsize(value); - osd_refresh(); - } else { - set_fontsize(value); - } - break; - - case F_PALETTE_CONTROL: - set_paletteControl(value); - int hidden = (value < PALETTECONTROL_NTSCARTIFACT_CGA); - features[F_NTSC_COLOUR].hidden = hidden; - features[F_NTSC_PHASE].hidden = hidden; - osd_update_palette(); - break; - - + case F_FFOSD: + case F_MODE7_DEINTERLACE: + case F_NORMAL_DEINTERLACE: + case F_BORDER_COLOUR: case F_NTSC_PHASE: case F_NTSC_TYPE: case F_NTSC_QUALITY: @@ -1302,6 +1262,22 @@ static void set_feature(int num, int value) { set_parameter(num, value); break; + case F_FONT_SIZE: + if(active) { + osd_clear(); + set_parameter(num, value); + osd_refresh(); + } else { + set_parameter(num, value); + } + break; + case F_PALETTE_CONTROL: + set_parameter(num, value); + int hidden = (value < PALETTECONTROL_NTSCARTIFACT_CGA); + features[F_NTSC_COLOUR].hidden = hidden; + features[F_NTSC_PHASE].hidden = hidden; + osd_update_palette(); + break; case F_NTSC_COLOUR: case F_OUTPUT_COLOUR: case F_OUTPUT_INVERT: @@ -1322,7 +1298,15 @@ static void set_feature(int num, int value) { osd_refresh(); break; - + case F_SWAP_ASPECT: + set_stretch(value); + break; + case F_MODE7_SCALING: + set_m7scaling(value); + break; + case F_NORMAL_SCALING: + set_normalscaling(value); + break; case F_PALETTE: palette = value; @@ -4219,12 +4203,12 @@ void osd_update_palette() { } - if (((get_paletteControl() == PALETTECONTROL_NTSCARTIFACT_CGA && get_parameter(F_NTSC_COLOUR) != 0) - || (get_paletteControl() == PALETTECONTROL_NTSCARTIFACT_BW) - || (get_paletteControl() == PALETTECONTROL_NTSCARTIFACT_BW_AUTO)) + if (((get_parameter(F_PALETTE_CONTROL) == PALETTECONTROL_NTSCARTIFACT_CGA && get_parameter(F_NTSC_COLOUR) != 0) + || (get_parameter(F_PALETTE_CONTROL) == PALETTECONTROL_NTSCARTIFACT_BW) + || (get_parameter(F_PALETTE_CONTROL) == PALETTECONTROL_NTSCARTIFACT_BW_AUTO)) && capinfo->bpp == 8 && capinfo->sample_width <= SAMPLE_WIDTH_6) { if ((i & 0x7f) < 0x40) { - if (get_paletteControl() == PALETTECONTROL_NTSCARTIFACT_CGA) { + if (get_parameter(F_PALETTE_CONTROL) == PALETTECONTROL_NTSCARTIFACT_CGA) { palette_data[i] = create_NTSC_artifact_colours_palette_320(i & 0x7f); } else { palette_data[i] = palette_array[palette][i_adj]; @@ -5030,7 +5014,7 @@ int osd_key(int key) { set_feature(F_TIMING_SET, 1 - get_feature(F_TIMING_SET)); ret = 1; osd_state = TIMINGSET_MESSAGE; - } else if (get_parameter(F_NTSC_COLOUR) && (get_paletteControl() == PALETTECONTROL_NTSCARTIFACT_CGA || get_paletteControl() == PALETTECONTROL_NTSCARTIFACT_BW || get_paletteControl() == PALETTECONTROL_NTSCARTIFACT_BW_AUTO)) { + } else if (get_parameter(F_NTSC_COLOUR) && (get_parameter(F_PALETTE_CONTROL) == PALETTECONTROL_NTSCARTIFACT_CGA || get_parameter(F_PALETTE_CONTROL) == PALETTECONTROL_NTSCARTIFACT_BW || get_parameter(F_PALETTE_CONTROL) == PALETTECONTROL_NTSCARTIFACT_BW_AUTO)) { set_feature(F_NTSC_PHASE, (get_feature(F_NTSC_PHASE) + 1) & 3); ret = 1; osd_state = NTSC_PHASE_MESSAGE; @@ -5133,7 +5117,7 @@ int osd_key(int key) { case NTSC_MESSAGE: clear_menu_bits(); - if (get_paletteControl() >= PALETTECONTROL_NTSCARTIFACT_CGA) { + if (get_parameter(F_PALETTE_CONTROL) >= PALETTECONTROL_NTSCARTIFACT_CGA) { if (get_feature(F_NTSC_COLOUR)) { osd_set(0, ATTR_DOUBLE_SIZE, "NTSC Colour on"); } else { @@ -6254,7 +6238,7 @@ void osd_update(uint32_t *osd_base, int bytes_per_line, int relocate) { #endif if (capinfo->bpp == 16) { - if (capinfo->video_type == VIDEO_INTERLACED && (capinfo->sync_type & SYNC_BIT_INTERLACED) && get_deinterlace() == DEINTERLACE_NONE) { + if (capinfo->video_type == VIDEO_INTERLACED && (capinfo->sync_type & SYNC_BIT_INTERLACED) && get_parameter(F_NORMAL_DEINTERLACE) == DEINTERLACE_NONE) { clear_full_screen(); } } @@ -6482,7 +6466,7 @@ void __attribute__ ((aligned (64))) osd_update_fast(uint32_t *osd_base, int byte if (!active) { return; } - if (capinfo->bpp == 16 && capinfo->video_type == VIDEO_INTERLACED && (capinfo->detected_sync_type & SYNC_BIT_INTERLACED) && get_deinterlace() == DEINTERLACE_NONE) { + if (capinfo->bpp == 16 && capinfo->video_type == VIDEO_INTERLACED && (capinfo->detected_sync_type & SYNC_BIT_INTERLACED) && get_parameter(F_NORMAL_DEINTERLACE) == DEINTERLACE_NONE) { clear_screen(); } // SAA5050 character data is 12x20 diff --git a/src/rgb_to_hdmi.c b/src/rgb_to_hdmi.c index 56e21965..34bf099c 100644 --- a/src/rgb_to_hdmi.c +++ b/src/rgb_to_hdmi.c @@ -180,7 +180,7 @@ clk_info_t clkinfo; static capture_info_t set_capinfo __attribute__((aligned(32))); static uint32_t cpld_version_id; static int modeset; -static int paletteControl = PALETTECONTROL_INBAND; + static int interlaced; static int clear; static volatile int delay; @@ -218,11 +218,7 @@ static int gscaling = GSCALING_INTEGER; static int filtering = DEFAULT_FILTERING; static int old_filtering = - 1; static int frontend = 0; -static int border = 0; -static int ffosd = 0; -static int fontsize = 0; -static int m7deinterlace = 6; -static int deinterlace = 0; + static int lines_per_2_vsyncs = 0; static int lines_per_vsync = 0; static int one_line_time_ns = 0; @@ -2624,16 +2620,9 @@ void set_subprofile(int val) { int get_subprofile() { return subprofile; } -void set_paletteControl(int value) { - if (paletteControl != value) { - paletteControl = value; - osd_update_palette(); - } -} -int get_paletteControl() { - return paletteControl; -} + + void set_force_genlock_range(int value) { force_genlock_range = value; @@ -2848,42 +2837,6 @@ int get_frontend() { -void set_m7deinterlace(int mode) { - m7deinterlace = mode; -} - -int get_m7deinterlace() { - return m7deinterlace; -} - -void set_deinterlace(int mode) { - deinterlace = mode; -} - -int get_deinterlace() { - return deinterlace; -} - -void set_ffosd(int value) { - ffosd = value; -} - -int get_ffosd() { - return ffosd; -} - - -void set_fontsize(int value) { - fontsize=value; -} - -int get_fontsize() { - return fontsize; -} - - - - int get_adjusted_ntscphase() { int phase = parameters[F_NTSC_PHASE]; if (parameters[F_NTSC_QUALITY] == FRINGE_SOFT) { @@ -2895,15 +2848,6 @@ int get_adjusted_ntscphase() { return phase; } -void set_border(int value) { - border = value; - clear = BIT_CLEAR; -} - -int get_border() { - return border; -} - int get_core_1_available() { return core_1_available; @@ -2963,27 +2907,32 @@ void set_timingset(int value) { void set_parameter(int parameter, int value) { switch (parameter) { //space for special case handling - case F_NTSC_PHASE: + + case F_PALETTE_CONTROL: { - if (parameters[F_NTSC_PHASE] != value) { - parameters[F_NTSC_PHASE] = value; - osd_update_palette(); - update_cga16_color(); + if (parameters[parameter] != value) { + parameters[parameter] = value; + osd_update_palette(); } } break; - case F_NTSC_TYPE: + case F_NTSC_PHASE: { - parameters[F_NTSC_PHASE] = value; + if (parameters[parameter] != value) { + parameters[parameter] = value; + osd_update_palette(); update_cga16_color(); + } } break; + case F_NTSC_TYPE: case F_NTSC_QUALITY: { - parameters[F_NTSC_QUALITY] = value; + parameters[parameter] = value; update_cga16_color(); } break; + case F_BORDER_COLOUR: case F_SCANLINES: { parameters[parameter] = value; @@ -3093,7 +3042,7 @@ void calculate_fb_adjustment() { void setup_profile(int profile_changed) { geometry_set_mode(modeset); - capinfo->palette_control = paletteControl; + capinfo->palette_control = parameters[F_PALETTE_CONTROL]; if ((capinfo->palette_control == PALETTECONTROL_NTSCARTIFACT_CGA && parameters[F_NTSC_COLOUR] == 0)) { capinfo->palette_control = PALETTECONTROL_OFF; } @@ -3420,12 +3369,12 @@ geometry_get_fb_params(capinfo); //paletteFlags |= BIT_MULTI_PALETTE; // test multi palette if (capinfo->mode7) { if (capinfo->video_type == VIDEO_TELETEXT) { - flags |= m7deinterlace << OFFSET_INTERLACE; + flags |= parameters[F_MODE7_DEINTERLACE] << OFFSET_INTERLACE; } else { - flags |= (m7deinterlace & 1) << OFFSET_INTERLACE; + flags |= (parameters[F_MODE7_DEINTERLACE] & 1) << OFFSET_INTERLACE; } } else { - flags |= deinterlace << OFFSET_INTERLACE; + flags |= parameters[F_NORMAL_DEINTERLACE] << OFFSET_INTERLACE; } #ifdef MULTI_BUFFER if ((capinfo->video_type == VIDEO_PROGRESSIVE || (capinfo->video_type == VIDEO_INTERLACED && !interlaced)) && osd_active() && (parameters[F_NUM_BUFFERS] == 0)) { @@ -3533,7 +3482,7 @@ geometry_get_fb_params(capinfo); cpld->update_capture_info(capinfo); geometry_get_fb_params(capinfo); - capinfo->palette_control = paletteControl; + capinfo->palette_control = parameters[F_PALETTE_CONTROL]; if ((capinfo->palette_control == PALETTECONTROL_NTSCARTIFACT_CGA && parameters[F_NTSC_COLOUR] == 0)) { capinfo->palette_control = PALETTECONTROL_OFF; } @@ -3661,6 +3610,8 @@ void kernel_main(unsigned int r0, unsigned int r1, unsigned int atags) parameters[F_AUTO_SWITCH] = 2; parameters[F_GENLOCK_LINE] = 10; parameters[F_GENLOCK_SPEED] = 2; + parameters[F_MODE7_DEINTERLACE] = 6; + parameters[F_PALETTE_CONTROL] = PALETTECONTROL_INBAND; char message[128]; RPI_AuxMiniUartInit(115200, 8); diff --git a/src/rgb_to_hdmi.h b/src/rgb_to_hdmi.h index 0e82dbf2..4072b3e7 100644 --- a/src/rgb_to_hdmi.h +++ b/src/rgb_to_hdmi.h @@ -12,8 +12,7 @@ void set_saved_config_number(int value); int get_saved_config_number(); void set_subprofile(int value); int get_subprofile(); -void set_paletteControl(int value); -int get_paletteControl(); + void set_force_genlock_range(int value); void set_resolution(int mode, const char *name, int reboot); int get_resolution(); @@ -29,18 +28,6 @@ void set_scaling(int mode, int reboot); int get_scaling(); void set_frontend(int value, int save); int get_frontend(); -void set_m7deinterlace(int value); -int get_m7deinterlace(); -void set_deinterlace(int value); -int get_deinterlace(); -void set_ffosd(int value); -int get_ffosd(); - -void set_fontsize(int value); -int get_fontsize(); - -void set_border(int value); -int get_border(); void set_ntsccolour(int value); From 810c86365dca9038c80a36dcb8187a72e42d7207 Mon Sep 17 00:00:00 2001 From: IanSB Date: Sat, 25 Feb 2023 20:56:46 +0000 Subject: [PATCH 12/46] Refactor profile, sub-profile, saved config & hdmi standby --- src/geometry.c | 2 +- src/osd.c | 110 +++++++++++++++++++++++----------------------- src/rgb_to_hdmi.c | 89 ++++++++++++++----------------------- src/rgb_to_hdmi.h | 11 +---- 4 files changed, 89 insertions(+), 123 deletions(-) diff --git a/src/geometry.c b/src/geometry.c index 3b0f1e2c..6e25d32b 100644 --- a/src/geometry.c +++ b/src/geometry.c @@ -549,7 +549,7 @@ void geometry_get_fb_params(capture_info_t *capinfo) { if (get_parameter(F_OUTPUT_INVERT) == INVERT_RGB) { capinfo->ntscphase |= NTSC_RGB_INVERT; } - if (get_hdmi_standby()) { + if (get_parameter(F_HDMI_MODE_STANDBY)) { capinfo->ntscphase |= NTSC_HDMI_BLANK_ENABLE; } diff --git a/src/osd.c b/src/osd.c index f8df1165..8c6deaf8 100644 --- a/src/osd.c +++ b/src/osd.c @@ -1099,20 +1099,13 @@ int get_brightness(){ static int get_feature(int num) { switch (num) { - case F_PROFILE: - return get_profile(); - case F_SAVED_CONFIG: - return get_saved_config_number(); - case F_SUB_PROFILE: - return get_subprofile(); + case F_RESOLUTION: return get_resolution(); case F_REFRESH: return get_refresh(); case F_HDMI_MODE: return get_hdmi(); - case F_HDMI_MODE_STANDBY: - return get_hdmi_standby(); case F_SCALING: return get_scaling(); case F_FRONTEND: @@ -1123,6 +1116,11 @@ static int get_feature(int num) { return get_capscale(); + + case F_PROFILE: + case F_SAVED_CONFIG: + case F_SUB_PROFILE: + case F_HDMI_MODE_STANDBY: case F_BORDER_COLOUR: case F_FONT_SIZE: case F_MODE7_DEINTERLACE: @@ -1194,25 +1192,7 @@ static void set_feature(int num, int value) { value = features[num].max; } switch (num) { - case F_PROFILE: - set_saved_config_number(0); - set_profile(value); - load_profiles(value, 1); - process_profile(value); - set_feature(F_SUB_PROFILE, 0); - set_scaling(get_scaling(), 1); - break; - case F_SAVED_CONFIG: - set_saved_config_number(value); - load_profiles(get_profile(), 1); - process_profile(get_profile()); - set_feature(F_SUB_PROFILE, 0); - set_scaling(get_scaling(), 1); - break; - case F_SUB_PROFILE: - set_subprofile(value); - process_sub_profile(get_profile(), value); - break; + case F_RESOLUTION: set_resolution(value, resolution_names[value], 1); break; @@ -1222,9 +1202,6 @@ static void set_feature(int num, int value) { case F_HDMI_MODE: set_hdmi(value, 1); break; - case F_HDMI_MODE_STANDBY: - set_hdmi_standby(value); - break; case F_SCALING: set_scaling(value, 1); break; @@ -1233,14 +1210,7 @@ static void set_feature(int num, int value) { break; - case F_CROP_BORDER: - set_overscan(value); - break; - case F_SCREENCAP_SIZE: - set_capscale(value); - break; - - + case F_HDMI_MODE_STANDBY: case F_FFOSD: case F_MODE7_DEINTERLACE: case F_NORMAL_DEINTERLACE: @@ -1262,6 +1232,26 @@ static void set_feature(int num, int value) { set_parameter(num, value); break; + + case F_PROFILE: + set_parameter(F_SAVED_CONFIG, 0); + set_parameter(num, value); + load_profiles(value, 1); + process_profile(value); + set_feature(F_SUB_PROFILE, 0); + set_scaling(get_scaling(), 1); + break; + case F_SAVED_CONFIG: + set_parameter(num, value); + load_profiles(get_parameter(F_PROFILE), 1); + process_profile(get_parameter(F_PROFILE)); + set_feature(F_SUB_PROFILE, 0); + set_scaling(get_scaling(), 1); + break; + case F_SUB_PROFILE: + set_parameter(num, value); + process_sub_profile(get_parameter(F_PROFILE), value); + break; case F_FONT_SIZE: if(active) { osd_clear(); @@ -1298,6 +1288,13 @@ static void set_feature(int num, int value) { osd_refresh(); break; + + case F_CROP_BORDER: + set_overscan(value); + break; + case F_SCREENCAP_SIZE: + set_capscale(value); + break; case F_SWAP_ASPECT: set_stretch(value); break; @@ -1308,6 +1305,7 @@ static void set_feature(int num, int value) { set_normalscaling(value); break; + case F_PALETTE: palette = value; osd_update_palette(); @@ -1553,10 +1551,10 @@ void osd_display_interface(int line) { osd_set(line, 0, osdline); sprintf(osdline, "Scaling: %s", scaling_names[get_scaling()]); osd_set(line + 1, 0, osdline); - if (has_sub_profiles[get_profile()]) { - sprintf(osdline, "Profile: %s (%s)", profile_names[get_profile()], sub_profile_names[get_subprofile()]); + if (has_sub_profiles[get_parameter(F_PROFILE)]) { + sprintf(osdline, "Profile: %s (%s)", profile_names[get_parameter(F_PROFILE)], sub_profile_names[get_parameter(F_SUB_PROFILE)]); } else { - sprintf(osdline, "Profile: %s", profile_names[get_profile()]); + sprintf(osdline, "Profile: %s", profile_names[get_parameter(F_PROFILE)]); } osd_set(line + 2, 0, osdline); #ifdef USE_ARM_CAPTURE @@ -4427,7 +4425,7 @@ int save_profile(char *path, char *name, char *buffer, char *default_buffer, cha i++; } *pointer = 0; - return file_save(path, name, buffer, pointer - buffer, get_saved_config_number()); + return file_save(path, name, buffer, pointer - buffer, get_parameter(F_SAVED_CONFIG)); } void process_single_profile(char *buffer) { @@ -4677,7 +4675,7 @@ void load_profiles(int profile_number, int save_selected) { strcpy(sub_profile_names[0], NOT_FOUND_STRING); sub_profile_buffers[0][0] = 0; if (has_sub_profiles[profile_number]) { - bytes = file_read_profile(profile_names[profile_number], get_saved_config_number(), DEFAULT_STRING, save_selected, sub_default_buffer, MAX_BUFFER_SIZE - 4); + bytes = file_read_profile(profile_names[profile_number], get_parameter(F_SAVED_CONFIG), DEFAULT_STRING, save_selected, sub_default_buffer, MAX_BUFFER_SIZE - 4); if (!bytes) { //if auto switching default.txt missing put a default value in buffer strcpy(sub_default_buffer,"auto_switch=1\r\n\0"); @@ -4688,7 +4686,7 @@ void load_profiles(int profile_number, int save_selected) { if (count) { features[F_SUB_PROFILE].max = count - 1; for (int i = 0; i < count; i++) { - file_read_profile(profile_names[profile_number], get_saved_config_number(), sub_profile_names[i], 0, sub_profile_buffers[i], MAX_BUFFER_SIZE - 4); + file_read_profile(profile_names[profile_number], get_parameter(F_SAVED_CONFIG), sub_profile_names[i], 0, sub_profile_buffers[i], MAX_BUFFER_SIZE - 4); get_autoswitch_geometry(sub_profile_buffers[i], i); } } @@ -4697,7 +4695,7 @@ void load_profiles(int profile_number, int save_selected) { strcpy(sub_profile_names[0], NONE_STRING); sub_profile_buffers[0][0] = 0; if (strcmp(profile_names[profile_number], NOT_FOUND_STRING) != 0) { - file_read_profile(profile_names[profile_number], get_saved_config_number(), NULL, save_selected, main_buffer, MAX_BUFFER_SIZE - 4); + file_read_profile(profile_names[profile_number], get_parameter(F_SAVED_CONFIG), NULL, save_selected, main_buffer, MAX_BUFFER_SIZE - 4); } } } @@ -4866,17 +4864,17 @@ void save_configuration() { if (has_sub_profiles[get_feature(F_PROFILE)]) { asresult = save_profile(profile_names[get_feature(F_PROFILE)], "Default", save_buffer, NULL, NULL); result = save_profile(profile_names[get_feature(F_PROFILE)], sub_profile_names[get_feature(F_SUB_PROFILE)], save_buffer, default_buffer, sub_default_buffer); - if (get_saved_config_number() == 0) { + if (get_parameter(F_SAVED_CONFIG) == 0) { sprintf(path, "%s/%s.txt", profile_names[get_feature(F_PROFILE)], sub_profile_names[get_feature(F_SUB_PROFILE)]); } else { - sprintf(path, "%s/%s_%d.txt", profile_names[get_feature(F_PROFILE)], sub_profile_names[get_feature(F_SUB_PROFILE)], get_saved_config_number()); + sprintf(path, "%s/%s_%d.txt", profile_names[get_feature(F_PROFILE)], sub_profile_names[get_feature(F_SUB_PROFILE)], get_parameter(F_SAVED_CONFIG)); } } else { result = save_profile(NULL, profile_names[get_feature(F_PROFILE)], save_buffer, default_buffer, NULL); - if (get_saved_config_number() == 0) { + if (get_parameter(F_SAVED_CONFIG) == 0) { sprintf(path, "%s.txt", profile_names[get_feature(F_PROFILE)]); } else { - sprintf(path, "%s_%d.txt", profile_names[get_feature(F_PROFILE)], get_saved_config_number()); + sprintf(path, "%s_%d.txt", profile_names[get_feature(F_PROFILE)], get_parameter(F_SAVED_CONFIG)); } } if (result == 0) { @@ -5315,12 +5313,12 @@ int osd_key(int key) { } else { first_time_press = 0; if (has_sub_profiles[get_feature(F_PROFILE)]) { - file_restore(profile_names[get_feature(F_PROFILE)], "Default", get_saved_config_number()); - file_restore(profile_names[get_feature(F_PROFILE)], sub_profile_names[get_feature(F_SUB_PROFILE)], get_saved_config_number()); + file_restore(profile_names[get_feature(F_PROFILE)], "Default", get_parameter(F_SAVED_CONFIG)); + file_restore(profile_names[get_feature(F_PROFILE)], sub_profile_names[get_feature(F_SUB_PROFILE)], get_parameter(F_SAVED_CONFIG)); } else { - file_restore(NULL, profile_names[get_feature(F_PROFILE)], get_saved_config_number()); + file_restore(NULL, profile_names[get_feature(F_PROFILE)], get_parameter(F_SAVED_CONFIG)); } - set_feature(F_SAVED_CONFIG, get_saved_config_number()); + set_feature(F_SAVED_CONFIG, get_parameter(F_SAVED_CONFIG)); force_reinit(); } break; @@ -6199,12 +6197,12 @@ void osd_init() { val = atoi(prop); prop = get_prop_no_space(config_buffer, "profile"); } - set_saved_config_number(val); + set_parameter(F_SAVED_CONFIG, val); int found_profile = 0; if (prop) { for (int i=0; i 0 && abs(clock_error_ppm) > clkinfo.clock_ppm) || (sync_detected == 0)) { - if (old_clock > 0 && sub_profiles_available(profile) == 0) { + if (old_clock > 0 && sub_profiles_available(parameters[F_PROFILE]) == 0) { log_warn("PPM error too large, using previous clock"); new_clock = old_clock * cpld->get_divider(); if (capinfo->mode7) { @@ -2522,7 +2519,7 @@ int total_N_frames(capture_info_t *capinfo, int n, int elk) { #endif void DPMS(int dpms_state) { - if (hdmi_blank == 1) { + if (parameters[F_HDMI_MODE_STANDBY] == 1) { log_info("********************DPMS state: %d", dpms_state); // rpi_mailbox_property_t *mp; RPI_PropertyInit(); @@ -2594,36 +2591,6 @@ void get_config_overscan(int *l, int *r, int *t, int *b) { *b = config_overscan_bottom; } -void set_profile(int val) { - log_info("Setting profile to %d", val); - profile = val; -} - -int get_profile() { - return profile; -} - -void set_saved_config_number(int val) { - log_info("Setting saved config number to %d", val); - saved_config_number = val; -} - -int get_saved_config_number() { - return saved_config_number; -} - -void set_subprofile(int val) { - log_info("Setting subprofile to %d", val); - subprofile = val; -} - -int get_subprofile() { - return subprofile; -} - - - - void set_force_genlock_range(int value) { force_genlock_range = value; } @@ -2805,13 +2772,6 @@ int get_scaling() { return scaling; } -int get_hdmi_standby() { - return hdmi_blank; -} - -void set_hdmi_standby(int value) { - hdmi_blank = value; -} void set_frontend(int value, int save) { int min = cpld->frontend_info() & 0xffff; @@ -2896,11 +2856,11 @@ int get_parameter(int parameter) { } -void set_ntsccolour(int value) { +void set_ntsccolour(int value) { //called from assembler parameters[F_NTSC_COLOUR] = value; } -void set_timingset(int value) { +void set_timingset(int value) { //called from assembler parameters[F_TIMING_SET] = value; } @@ -2908,6 +2868,21 @@ void set_parameter(int parameter, int value) { switch (parameter) { //space for special case handling + case F_PROFILE: + { + parameters[parameter] = value; + log_info("Setting profile to %d", value); + } + case F_SUB_PROFILE: + { + parameters[parameter] = value; + log_info("Setting subprofile to %d", value); + } + case F_SAVED_CONFIG: + { + parameters[parameter] = value; + log_info("Setting saved config number to %d", value); + } case F_PALETTE_CONTROL: { if (parameters[parameter] != value) { @@ -3070,7 +3045,7 @@ void setup_profile(int profile_changed) { } geometry_get_fb_params(capinfo); - if (parameters[F_AUTO_SWITCH] != AUTOSWITCH_OFF && sub_profiles_available(profile)) { // set window around expected time from sub-profile + if (parameters[F_AUTO_SWITCH] != AUTOSWITCH_OFF && sub_profiles_available(parameters[F_PROFILE])) { // set window around expected time from sub-profile double line_time = clkinfo.line_len * 1000000000 / (double) clkinfo.clock; int window = (int) ((double) clkinfo.clock_ppm * line_time / 1000000); hsync_comparison_lo = (line_time - window) * cpuspeed / 1000; @@ -3189,16 +3164,16 @@ void rgb_to_hdmi_main() { } while (1) { log_info("-----------------------LOOP------------------------"); - if (profile != last_profile || last_saved_config_number != saved_config_number) { + if (parameters[F_PROFILE] != last_profile || last_saved_config_number != parameters[F_SAVED_CONFIG]) { last_subprofile = -1; } - setup_profile(profile != last_profile || last_subprofile != subprofile || last_saved_config_number != saved_config_number); - if ((parameters[F_AUTO_SWITCH] != AUTOSWITCH_OFF) && sub_profiles_available(profile) && ((result & (RET_SYNC_TIMING_CHANGED | RET_SYNC_STATE_CHANGED)) || profile != last_profile || last_subprofile != subprofile || restart_profile)) { + setup_profile(parameters[F_PROFILE] != last_profile || last_subprofile != parameters[F_SUB_PROFILE] || last_saved_config_number != parameters[F_SAVED_CONFIG]); + if ((parameters[F_AUTO_SWITCH] != AUTOSWITCH_OFF) && sub_profiles_available(parameters[F_PROFILE]) && ((result & (RET_SYNC_TIMING_CHANGED | RET_SYNC_STATE_CHANGED)) || parameters[F_PROFILE] != last_profile || last_subprofile != parameters[F_SUB_PROFILE] || restart_profile)) { int new_sub_profile = autoswitch_detect(one_line_time_ns, lines_per_vsync, capinfo->detected_sync_type & SYNC_BIT_MASK); if (new_sub_profile >= 0) { - if (new_sub_profile != last_subprofile || profile != last_profile || saved_config_number != last_saved_config_number || restart_profile) { - set_subprofile(new_sub_profile); - process_sub_profile(get_profile(), new_sub_profile); + if (new_sub_profile != last_subprofile || parameters[F_PROFILE] != last_profile || parameters[F_SAVED_CONFIG] != last_saved_config_number || restart_profile) { + set_parameter(F_SUB_PROFILE, new_sub_profile); + process_sub_profile(get_parameter(F_PROFILE), new_sub_profile); setup_profile(1); set_status_message(""); } @@ -3208,16 +3183,16 @@ void rgb_to_hdmi_main() { } } - if (last_subprofile != subprofile || restart_profile) { + if (last_subprofile != parameters[F_SUB_PROFILE] || restart_profile) { ntsc_status = (modeset << NTSC_LAST_IIGS_SHIFT) | (parameters[F_NTSC_COLOUR] << NTSC_LAST_ARTIFACT_SHIFT); } geometry_get_fb_params(capinfo); restart_profile = 0; last_divider = cpld->get_divider(); last_sync_edge = cpld->get_sync_edge(); - last_profile = profile; - last_subprofile = subprofile; - last_saved_config_number = saved_config_number; + last_profile = parameters[F_PROFILE]; + last_subprofile = parameters[F_SUB_PROFILE]; + last_saved_config_number = parameters[F_SAVED_CONFIG]; last_gscaling = gscaling; //log_info("Setting up frame buffer"); init_framebuffer(capinfo); @@ -3519,7 +3494,7 @@ geometry_get_fb_params(capinfo); mode_changed = modeset != last_modeset || capinfo->vsync_type != last_capinfo.vsync_type || capinfo->sync_type != last_capinfo.sync_type || capinfo->border != last_capinfo.border || capinfo->video_type != last_capinfo.video_type || capinfo->px_sampling != last_capinfo.px_sampling || cpld->get_sync_edge() != last_sync_edge - || profile != last_profile || saved_config_number != last_saved_config_number || last_subprofile != subprofile || cpld->get_divider() != last_divider || (result & (RET_SYNC_TIMING_CHANGED | RET_SYNC_STATE_CHANGED)); + || parameters[F_PROFILE] != last_profile || parameters[F_SAVED_CONFIG] != last_saved_config_number || last_subprofile != parameters[F_SUB_PROFILE] || cpld->get_divider() != last_divider || (result & (RET_SYNC_TIMING_CHANGED | RET_SYNC_STATE_CHANGED)); if (active_size_changed || fb_size_changed) { clear = BIT_CLEAR; diff --git a/src/rgb_to_hdmi.h b/src/rgb_to_hdmi.h index 4072b3e7..eed2c47e 100644 --- a/src/rgb_to_hdmi.h +++ b/src/rgb_to_hdmi.h @@ -6,14 +6,9 @@ void set_config_overscan(int l, int r, int t, int b); void get_config_overscan(int *l, int *r, int *t, int *b); void set_startup_overscan(int value); int get_startup_overscan(); -void set_profile(int value); -int get_profile(); -void set_saved_config_number(int value); -int get_saved_config_number(); -void set_subprofile(int value); -int get_subprofile(); - void set_force_genlock_range(int value); + + void set_resolution(int mode, const char *name, int reboot); int get_resolution(); void set_auto_workaround_path(char *value, int reboot); @@ -22,8 +17,6 @@ void set_refresh(int value, int reboot); int get_refresh(); void set_hdmi(int value, int reboot); int get_hdmi(); -void set_hdmi_standby(int value); -int get_hdmi_standby(); void set_scaling(int mode, int reboot); int get_scaling(); void set_frontend(int value, int save); From 79a1342039ab914a34a1ca1146acd55f630f6b22 Mon Sep 17 00:00:00 2001 From: IanSB Date: Sat, 25 Feb 2023 21:32:57 +0000 Subject: [PATCH 13/46] Refactor crop border, swap aspect, screencap size, mode7 scaling and normal scaling --- src/filesystem.c | 2 +- src/geometry.c | 61 +++++++---------------------------------------- src/geometry.h | 10 -------- src/osd.c | 38 +++++++++-------------------- src/rgb_to_hdmi.c | 8 +++---- 5 files changed, 25 insertions(+), 94 deletions(-) diff --git a/src/filesystem.c b/src/filesystem.c index bf062fc5..ca2d5aed 100644 --- a/src/filesystem.c +++ b/src/filesystem.c @@ -56,7 +56,7 @@ static int generate_png(capture_info_t *capinfo, uint8_t **png, unsigned int *pn int width = capinfo->width; int width43 = width; int height = capinfo->height; - int capscale = get_capscale(); + int capscale = get_parameter(F_SCREENCAP_SIZE); int hscale = get_hscale(); int vscale = get_vscale(); diff --git a/src/geometry.c b/src/geometry.c index 6e25d32b..1c8a5d06 100644 --- a/src/geometry.c +++ b/src/geometry.c @@ -114,15 +114,10 @@ static geometry_t *geometry; static geometry_t set1_geometry; static geometry_t set2_geometry; static int scaling = 0; -static int overscan = 0; -static int stretch = 0; -static int capscale = 0; static int capvscale = 1; static int caphscale = 1; static int fhaspect = 1; static int fvaspect = 1; -static int m7scaling = 0; -static int normalscaling = 0; static int use_px_sampling = 1; void geometry_init(int version) { @@ -355,44 +350,6 @@ int get_gscaling() { return scaling; } -void set_overscan(int value) { - overscan = value; -} - -int get_overscan() { - return overscan; -} - -void set_stretch(int value) { - stretch = value; -} - -int get_stretch() { - return stretch; -} - -void set_m7scaling(int value){ - m7scaling = value; -} -int get_m7scaling() { - return m7scaling; -} - -void set_normalscaling(int value){ - normalscaling = value; -} -int get_normalscaling() { - return normalscaling; -} - -void set_capscale(int value) { - capscale = value; -} - -int get_capscale() { - return capscale; -} - void set_setup_mode(int mode) { geometry_set_value(SETUP_MODE, mode); //log_info("setup mode = %d", mode); @@ -484,7 +441,7 @@ void geometry_get_fb_params(capture_info_t *capinfo) { int h_aspect = geometry->h_aspect; int v_aspect = geometry->v_aspect; - if (stretch) { + if (get_parameter(F_SWAP_ASPECT)) { if (geometry->lines_per_frame > 287) { if (h_aspect == v_aspect) { h_aspect = 4; @@ -507,7 +464,7 @@ void geometry_get_fb_params(capture_info_t *capinfo) { } } - //if (overscan == OVERSCAN_AUTO && (geometry->setup_mode == SETUP_NORMAL || geometry->setup_mode == SETUP_CLOCK)) { + //if (get_parameter(F_CROP_BORDER) == OVERSCAN_AUTO && (geometry->setup_mode == SETUP_NORMAL || geometry->setup_mode == SETUP_CLOCK)) { //reduce max area by 4% to hide offscreen imperfections // geometry_max_h_width = ((geometry_max_h_width * 96) / 100) & 0xfffffff8; // geometry_max_v_height = ((geometry_max_v_height * 96) / 100) & 0xfffffffe; @@ -630,8 +587,8 @@ void geometry_get_fb_params(capture_info_t *capinfo) { scaled_min_h_width = geometry_min_h_width; } } - geometry_max_h_width = (geometry_max_h_width - ((geometry_max_h_width - scaled_min_h_width) * overscan / (NUM_OVERSCAN - 1))) & 0xfffffff8; - geometry_max_v_height = (geometry_max_v_height - ((geometry_max_v_height - scaled_min_v_height) * overscan / (NUM_OVERSCAN - 1))) & 0xfffffffe; + geometry_max_h_width = (geometry_max_h_width - ((geometry_max_h_width - scaled_min_h_width) * get_parameter(F_CROP_BORDER) / (NUM_OVERSCAN - 1))) & 0xfffffff8; + geometry_max_v_height = (geometry_max_v_height - ((geometry_max_v_height - scaled_min_v_height) * get_parameter(F_CROP_BORDER) / (NUM_OVERSCAN - 1))) & 0xfffffffe; if (geometry_max_h_width < geometry_min_h_width) { geometry_max_h_width = geometry_min_h_width; } @@ -662,8 +619,8 @@ void geometry_get_fb_params(capture_info_t *capinfo) { //log_info("adjusted integer = %d, %d, %d, %d, %d, %d", geometry_h_offset, geometry_v_offset, geometry_min_h_width, geometry_min_v_height, geometry_max_h_width, geometry_max_v_height); int h_size43_adj = h_size43; - if ((capinfo->mode7 && m7scaling == SCALING_UNEVEN) - || (!capinfo->mode7 && normalscaling == SCALING_UNEVEN && geometry->h_aspect == 3 && (geometry->v_aspect == 2 || geometry->v_aspect == 4))) { + if ((capinfo->mode7 && get_parameter(F_MODE7_SCALING) == SCALING_UNEVEN) + || (!capinfo->mode7 && get_parameter(F_NORMAL_SCALING) == SCALING_UNEVEN && geometry->h_aspect == 3 && (geometry->v_aspect == 2 || geometry->v_aspect == 4))) { h_size43_adj = h_size43 * 3 / 4; if (h_aspect == 3 && v_aspect == 2) { h_aspect = 1; @@ -812,12 +769,12 @@ void geometry_get_fb_params(capture_info_t *capinfo) { capinfo->width = adjusted_width + hborder; capinfo->height = adjusted_height + vborder; - if ((capinfo->mode7 && m7scaling == SCALING_UNEVEN) // workaround mode 7 width so it looks like other modes - ||(!capinfo->mode7 && normalscaling == SCALING_UNEVEN && geometry->h_aspect == 3 && (geometry->v_aspect == 2 || geometry->v_aspect == 4))) { + if ((capinfo->mode7 && get_parameter(F_MODE7_SCALING) == SCALING_UNEVEN) // workaround mode 7 width so it looks like other modes + ||(!capinfo->mode7 && get_parameter(F_NORMAL_SCALING) == SCALING_UNEVEN && geometry->h_aspect == 3 && (geometry->v_aspect == 2 || geometry->v_aspect == 4))) { capinfo->width = capinfo->width * 3 / 4; } - if (capscale == SCREENCAP_FULL || capscale == SCREENCAP_FULL43) { + if (get_parameter(F_SCREENCAP_SIZE) == SCREENCAP_FULL || get_parameter(F_SCREENCAP_SIZE) == SCREENCAP_FULL43) { caphscale = ((h_size << double_width) / capinfo->width); capvscale = ((v_size << double_height) / capinfo->height); } diff --git a/src/geometry.h b/src/geometry.h index 9ffad9e1..989ae1eb 100644 --- a/src/geometry.h +++ b/src/geometry.h @@ -79,16 +79,6 @@ void geometry_get_fb_params(capture_info_t *capinfo); void geometry_get_clk_params(clk_info_t *clkinfo); void set_gscaling(int value); int get_gscaling(); -void set_overscan(int value); -int get_overscan(); -void set_stretch(int value); -int get_stretch(); -void set_m7scaling(int value); -int get_m7scaling(); -void set_normalscaling(int value); -int get_normalscaling(); -void set_capscale(int value); -int get_capscale(); int get_hscale(); int get_vscale(); int get_haspect(); diff --git a/src/osd.c b/src/osd.c index 8c6deaf8..e0532ff8 100644 --- a/src/osd.c +++ b/src/osd.c @@ -1110,13 +1110,13 @@ static int get_feature(int num) { return get_scaling(); case F_FRONTEND: return get_frontend(); - case F_CROP_BORDER: - return get_overscan(); - case F_SCREENCAP_SIZE: - return get_capscale(); - + case F_CROP_BORDER: + case F_SCREENCAP_SIZE: + case F_SWAP_ASPECT: + case F_NORMAL_SCALING: + case F_MODE7_SCALING: case F_PROFILE: case F_SAVED_CONFIG: case F_SUB_PROFILE: @@ -1149,12 +1149,7 @@ static int get_feature(int num) { case F_INTEGER_ASPECT: return get_parameter(num); - case F_SWAP_ASPECT: - return get_stretch(); - case F_NORMAL_SCALING: - return get_normalscaling(); - case F_MODE7_SCALING: - return get_m7scaling(); + case F_PALETTE: @@ -1210,6 +1205,11 @@ static void set_feature(int num, int value) { break; + case F_CROP_BORDER: + case F_SCREENCAP_SIZE: + case F_SWAP_ASPECT: + case F_MODE7_SCALING: + case F_NORMAL_SCALING: case F_HDMI_MODE_STANDBY: case F_FFOSD: case F_MODE7_DEINTERLACE: @@ -1289,22 +1289,6 @@ static void set_feature(int num, int value) { break; - case F_CROP_BORDER: - set_overscan(value); - break; - case F_SCREENCAP_SIZE: - set_capscale(value); - break; - case F_SWAP_ASPECT: - set_stretch(value); - break; - case F_MODE7_SCALING: - set_m7scaling(value); - break; - case F_NORMAL_SCALING: - set_normalscaling(value); - break; - case F_PALETTE: palette = value; diff --git a/src/rgb_to_hdmi.c b/src/rgb_to_hdmi.c index 9c2ddff9..eba0b04e 100644 --- a/src/rgb_to_hdmi.c +++ b/src/rgb_to_hdmi.c @@ -443,8 +443,8 @@ int height = 0; int adjusted_height = capinfo->height; if (get_gscaling() == GSCALING_INTEGER) { - if (!((capinfo->mode7 && get_m7scaling() == SCALING_UNEVEN) - ||(!capinfo->mode7 && get_normalscaling() == SCALING_UNEVEN))) { + if (!((capinfo->mode7 && parameters[F_MODE7_SCALING] == SCALING_UNEVEN) + ||(!capinfo->mode7 && parameters[F_NORMAL_SCALING] == SCALING_UNEVEN))) { int width = adjusted_width >> ((capinfo->sizex2 & SIZEX2_DOUBLE_WIDTH) >> 1); int hscale = h_size / width; h_overscan = h_size - (hscale * width); @@ -2691,8 +2691,8 @@ void set_scaling(int mode, int reboot) { } int video_type = geometry_get_value(VIDEO_TYPE); geometry_set_mode(modeset); - if ((video_type == VIDEO_TELETEXT && get_m7scaling() == SCALING_UNEVEN) // workaround mode 7 width so it looks like other modes - ||( video_type != VIDEO_TELETEXT && get_normalscaling() == SCALING_UNEVEN && get_haspect() == 3 && (get_vaspect() == 2 || get_vaspect() == 4))) { + if ((video_type == VIDEO_TELETEXT && parameters[F_MODE7_SCALING] == SCALING_UNEVEN) // workaround mode 7 width so it looks like other modes + ||( video_type != VIDEO_TELETEXT && parameters[F_NORMAL_SCALING] == SCALING_UNEVEN && get_haspect() == 3 && (get_vaspect() == 2 || get_vaspect() == 4))) { width = width * 4 / 3; } if ((width > 340 && h_size43 < 1440 && (h_size43 % width) > (width / 3)) || (parameters[F_AUTO_SWITCH] == AUTOSWITCH_MODE7 && v_size == 1024)) { From 9027eaad1188f41a415a23e08ee59ed911a6b887 Mon Sep 17 00:00:00 2001 From: IanSB Date: Sat, 25 Feb 2023 23:56:53 +0000 Subject: [PATCH 14/46] Refactor palette, tint, saturation, contrast, brightness gamma, return position, button reversal --- src/osd.c | 133 ++++++++++++++------------------------------- src/osd.h | 5 +- src/rgb_to_hdmi.c | 29 +++++++++- src/vid_cga_comp.c | 8 +-- 4 files changed, 75 insertions(+), 100 deletions(-) diff --git a/src/osd.c b/src/osd.c index e0532ff8..cc187427 100644 --- a/src/osd.c +++ b/src/osd.c @@ -907,9 +907,6 @@ static menu_t *current_menu[MAX_MENU_DEPTH]; // Index to the currently selected menu static int current_item[MAX_MENU_DEPTH]; -// Currently selected palette setting -static int palette = PALETTE_RGB; - //osd high water mark (highest line number used) static int osd_hwm = 0; @@ -935,7 +932,6 @@ static int key_value_dec = OSD_SW2; static int key_value_inc = OSD_SW3; // Whether the menu back pointer is at the start (0) or end (1) of the menu -static int return_at_end = 0; static char config_buffer[MAX_CONFIG_BUFFER_SIZE]; static char save_buffer[MAX_BUFFER_SIZE]; static char default_buffer[MAX_BUFFER_SIZE]; @@ -954,14 +950,10 @@ static uint32_t osd_palette_data[256]; static char palette_names[MAX_NAMES][MAX_NAMES_WIDTH]; static uint32_t palette_array[MAX_NAMES][256]; static int ntsc_palette = 0; -static double tint = 0; -static double saturation = 100; -static double contrast = 100; -static double brightness = 100; -static double Pgamma = 100; + static int inhibit_palette_dimming = 0; static int single_button_mode = 0; -static int button_direction = 0; + static int disable_overclock = 0; static unsigned int cpu_clock = 1000; @@ -1060,7 +1052,7 @@ static void cycle_menu(menu_t *menu) { base_menu_item_t *first = *(menu->items); base_menu_item_t *last = *(menu->items + nitems); base_menu_item_t *back = (base_menu_item_t *)&back_ref; - if (return_at_end) { + if (get_parameter(F_RETURN_POSITION)) { if (first == back) { for (int i = 0; i < nitems; i++) { *(menu->items + i) = *(menu->items + i + 1); @@ -1084,18 +1076,6 @@ static void cycle_menus() { cycle_menu(&settings_menu); } -int get_tint(){ - return tint; -} -int get_saturation(){ - return saturation; -} -int get_contrast(){ - return contrast; -} -int get_brightness(){ - return brightness; -} static int get_feature(int num) { switch (num) { @@ -1111,7 +1091,14 @@ static int get_feature(int num) { case F_FRONTEND: return get_frontend(); - + case F_PALETTE: + case F_TINT: + case F_SAT: + case F_CONT: + case F_BRIGHT: + case F_GAMMA: + case F_RETURN_POSITION: + case F_BUTTON_REVERSE: case F_CROP_BORDER: case F_SCREENCAP_SIZE: case F_SWAP_ASPECT: @@ -1152,28 +1139,14 @@ static int get_feature(int num) { - case F_PALETTE: - return palette; - case F_TINT: - return tint; - case F_SAT: - return saturation; - case F_CONT: - return contrast; - case F_BRIGHT: - return brightness; - case F_GAMMA: - return Pgamma; - case F_RETURN_POSITION: - return return_at_end; + case F_OVERCLOCK_CPU: return cpu_overclock; case F_OVERCLOCK_CORE: return core_overclock; case F_OVERCLOCK_SDRAM: return sdram_overclock; - case F_BUTTON_REVERSE: - return button_direction; + } return -1; @@ -1205,6 +1178,13 @@ static void set_feature(int num, int value) { break; + case F_PALETTE: + case F_TINT: + case F_SAT: + case F_CONT: + case F_BRIGHT: + case F_GAMMA: + case F_BUTTON_REVERSE: case F_CROP_BORDER: case F_SCREENCAP_SIZE: case F_SWAP_ASPECT: @@ -1232,7 +1212,10 @@ static void set_feature(int num, int value) { set_parameter(num, value); break; - + case F_RETURN_POSITION: + set_parameter(num, value); + cycle_menus(); + break; case F_PROFILE: set_parameter(F_SAVED_CONFIG, 0); set_parameter(num, value); @@ -1290,41 +1273,9 @@ static void set_feature(int num, int value) { - case F_PALETTE: - palette = value; - osd_update_palette(); - break; - case F_TINT: - tint = value; - osd_update_palette(); - update_cga16_color(); - break; - case F_SAT: - saturation = value; - osd_update_palette(); - update_cga16_color(); - break; - case F_CONT: - contrast = value; - osd_update_palette(); - update_cga16_color(); - break; - case F_BRIGHT: - brightness = value; - osd_update_palette(); - update_cga16_color(); - break; - case F_GAMMA: - Pgamma = value; - osd_update_palette(); - break; - case F_RETURN_POSITION: - return_at_end = value; - cycle_menus(); - break; - case F_BUTTON_REVERSE: - button_direction = value; - break; + + + case F_OVERCLOCK_CPU: if ((disable_overclock & DISABLE_SETTINGS_OVERCLOCK) == DISABLE_SETTINGS_OVERCLOCK) { value = 0; @@ -1765,7 +1716,7 @@ static void info_cal_raw(int line) { static void rebuild_menu(menu_t *menu, item_type_t type, param_t *param_ptr) { int i = 0; - if (!return_at_end) { + if (!get_parameter(F_RETURN_POSITION)) { menu->items[i++] = (base_menu_item_t *)&back_ref; } while (param_ptr->key >= 0) { @@ -1777,7 +1728,7 @@ static void rebuild_menu(menu_t *menu, item_type_t type, param_t *param_ptr) { } param_ptr++; } - if (return_at_end) { + if (get_parameter(F_RETURN_POSITION)) { menu->items[i++] = (base_menu_item_t *)&back_ref; } // Add a terminator, in case the menu has had items removed @@ -1962,7 +1913,7 @@ uint32_t osd_get_palette(int index) { int normalised_gamma_correct(int old_value) { if (old_value >= 0) { double value = (double) old_value; - double normalised_gamma = 1 / ((double)Pgamma / 100); + double normalised_gamma = 1 / ((double)get_parameter(F_GAMMA) / 100); value = value < 0 ? 0 : value; value = pow(value, normalised_gamma) * 255; value = round(value); @@ -1984,23 +1935,23 @@ double gamma_correct(double value, double normalised_gamma) { } int adjust_palette(int palette) { - if (tint !=0 || saturation != 100 || contrast != 100 || brightness != 100 || Pgamma != 100) { + if (get_parameter(F_TINT) !=0 || get_parameter(F_SAT) != 100 || get_parameter(F_CONT) != 100 || get_parameter(F_BRIGHT) != 100 || get_parameter(F_GAMMA) != 100) { double R = (double)(palette & 0xff) / 255; double G = (double)((palette >> 8) & 0xff) / 255; double B = (double)((palette >> 16) & 0xff) / 255; double M = (double)((palette >> 24) & 0xff) / 255; - double normalised_contrast = (double)contrast / 100; - double normalised_brightness = (double)brightness / 200 - 0.5f; - double normalised_saturation = (double)saturation / 100; - double normalised_gamma = 1 / ((double)Pgamma / 100); + double normalised_contrast = (double)get_parameter(F_CONT) / 100; + double normalised_brightness = (double)get_parameter(F_BRIGHT) / 200 - 0.5f; + double normalised_saturation = (double)get_parameter(F_SAT) / 100; + double normalised_gamma = 1 / ((double)get_parameter(F_GAMMA) / 100); double Y = 0.299 * R + 0.587 * G + 0.114 * B; double U = -0.14713 * R - 0.28886 * G + 0.436 * B; double V = 0.615 * R - 0.51499 * G - 0.10001 * B; Y = (Y + normalised_brightness) * normalised_contrast; - double hue = tint * PI / 180.0f; + double hue = get_parameter(F_TINT) * PI / 180.0f; double U2 = (U * cos(hue) + V * sin(hue)) * normalised_saturation * normalised_contrast; double V2 = (V * cos(hue) - U * sin(hue)) * normalised_saturation * normalised_contrast; @@ -4193,7 +4144,7 @@ void osd_update_palette() { if (get_parameter(F_PALETTE_CONTROL) == PALETTECONTROL_NTSCARTIFACT_CGA) { palette_data[i] = create_NTSC_artifact_colours_palette_320(i & 0x7f); } else { - palette_data[i] = palette_array[palette][i_adj]; + palette_data[i] = palette_array[get_parameter(F_PALETTE)][i_adj]; } } else { int filtered_bitcount = ((i & 0x3f) >> 4) + 1; @@ -4203,7 +4154,7 @@ void osd_update_palette() { if (get_feature(F_OUTPUT_INVERT) == INVERT_Y) { i_adj ^= 0x12; } - palette_data[i] = palette_array[palette][i_adj]; + palette_data[i] = palette_array[get_parameter(F_PALETTE)][i_adj]; } palette_data[i] = adjust_palette(palette_data[i]); } @@ -5177,7 +5128,7 @@ int osd_key(int key) { key = key_enter; set_key_down_duration(last_key, 1); } else { - if (button_direction) { + if (get_parameter(F_BUTTON_REVERSE)) { key = key_menu_up; } else { key = key_menu_down; @@ -5216,7 +5167,7 @@ int osd_key(int key) { toggle_param(param_item); // Special case the return at end parameter, to keep the cursor in the same position if (type == I_FEATURE && param_item->param->key == F_RETURN_POSITION) { - if (return_at_end) { + if (get_parameter(F_RETURN_POSITION)) { current_item[depth]--; } else { current_item[depth]++; @@ -5250,7 +5201,7 @@ int osd_key(int key) { osd_state = IDLE; } else { depth--; - if (return_at_end == 0) + if (get_parameter(F_RETURN_POSITION) == 0) current_item[depth] = 0; osd_clear_no_palette(); redraw_menu(); @@ -5425,7 +5376,7 @@ int osd_key(int key) { key = key_enter; set_key_down_duration(last_key, 1); } else { - if (button_direction) { + if (get_parameter(F_BUTTON_REVERSE)) { key = key_value_dec; } else { key = key_value_inc; diff --git a/src/osd.h b/src/osd.h index f16be2cb..ea76941e 100644 --- a/src/osd.h +++ b/src/osd.h @@ -280,10 +280,7 @@ enum { }; -int get_tint(); -int get_saturation(); -int get_contrast(); -int get_brightness(); + void osd_init(); void osd_clear(); void osd_write_palette(int new_active); diff --git a/src/rgb_to_hdmi.c b/src/rgb_to_hdmi.c index eba0b04e..4bd32883 100644 --- a/src/rgb_to_hdmi.c +++ b/src/rgb_to_hdmi.c @@ -28,6 +28,7 @@ #include "vid_cga_comp.h" #include "videocore.c" #include "gitversion.h" +#include "vid_cga_comp.h" // #define INSTRUMENT_CAL #define NUM_CAL_PASSES 1 @@ -2868,21 +2869,41 @@ void set_parameter(int parameter, int value) { switch (parameter) { //space for special case handling + case F_PALETTE: + { + parameters[parameter] = value; + osd_update_palette(); + } + break; + case F_TINT: + case F_SAT: + case F_CONT: + case F_BRIGHT: + case F_GAMMA: + { + parameters[parameter] = value; + osd_update_palette(); + update_cga16_color(); + } + break; case F_PROFILE: { parameters[parameter] = value; log_info("Setting profile to %d", value); } + break; case F_SUB_PROFILE: { parameters[parameter] = value; log_info("Setting subprofile to %d", value); } + break; case F_SAVED_CONFIG: { parameters[parameter] = value; log_info("Setting saved config number to %d", value); } + break; case F_PALETTE_CONTROL: { if (parameters[parameter] != value) { @@ -2957,7 +2978,9 @@ void set_parameter(int parameter, int value) { break; default: - parameters[parameter] = value; + if (parameter < MAX_PARAMETERS) { + parameters[parameter] = value; + } break; } } @@ -3587,6 +3610,10 @@ void kernel_main(unsigned int r0, unsigned int r1, unsigned int atags) parameters[F_GENLOCK_SPEED] = 2; parameters[F_MODE7_DEINTERLACE] = 6; parameters[F_PALETTE_CONTROL] = PALETTECONTROL_INBAND; + parameters[F_BRIGHT] = 100; + parameters[F_SAT] = 100; + parameters[F_CONT] = 100; + parameters[F_GAMMA] = 100; char message[128]; RPI_AuxMiniUartInit(115200, 8); diff --git a/src/vid_cga_comp.c b/src/vid_cga_comp.c index 7ee013ee..29e545d4 100644 --- a/src/vid_cga_comp.c +++ b/src/vid_cga_comp.c @@ -98,10 +98,10 @@ void update_cga16_color() { static const double bi = -1.1069; static const double bq = 1.7046; - brightness = get_brightness() - 100; - contrast = get_contrast(); - saturation = get_saturation(); - hue_offset = get_tint(); + brightness = get_parameter(F_BRIGHT) - 100; + contrast = get_parameter(F_CONT); + saturation = get_parameter(F_SAT); + hue_offset = get_parameter(F_TINT); ntsc_pixel_phase = ((get_parameter(F_NTSC_PHASE) ^ 3)) & 3; //reorder to match existing artifact code switch(get_parameter(F_NTSC_QUALITY)) { From 4eeb72e8a32970d62f3c4ad6bfd51f7eca309f2b Mon Sep 17 00:00:00 2001 From: IanSB Date: Sun, 26 Feb 2023 00:40:36 +0000 Subject: [PATCH 15/46] Refactor cpu, core & sdram overclock --- src/osd.c | 101 +++++++++++++++++++++++------------------------------- 1 file changed, 42 insertions(+), 59 deletions(-) diff --git a/src/osd.c b/src/osd.c index cc187427..f28a1c39 100644 --- a/src/osd.c +++ b/src/osd.c @@ -960,9 +960,6 @@ static unsigned int cpu_clock = 1000; static unsigned int core_clock = 400; static unsigned int sdram_clock = 450; -static unsigned int cpu_overclock = 0; -static unsigned int core_overclock = 0; -static unsigned int sdram_overclock = 0; static char EDID_buf[32768]; static unsigned int EDID_bufptr = 0; typedef struct { @@ -1091,6 +1088,11 @@ static int get_feature(int num) { case F_FRONTEND: return get_frontend(); + + + case F_OVERCLOCK_CPU: + case F_OVERCLOCK_CORE: + case F_OVERCLOCK_SDRAM: case F_PALETTE: case F_TINT: case F_SAT: @@ -1135,19 +1137,6 @@ static int get_feature(int num) { case F_YUV_PIXEL_DOUBLE: case F_INTEGER_ASPECT: return get_parameter(num); - - - - - - case F_OVERCLOCK_CPU: - return cpu_overclock; - case F_OVERCLOCK_CORE: - return core_overclock; - case F_OVERCLOCK_SDRAM: - return sdram_overclock; - - } return -1; } @@ -1212,6 +1201,43 @@ static void set_feature(int num, int value) { set_parameter(num, value); break; + case F_OVERCLOCK_CPU: + if ((disable_overclock & DISABLE_SETTINGS_OVERCLOCK) == DISABLE_SETTINGS_OVERCLOCK) { + value = 0; + } + set_parameter(num, value);set_parameter(F_OVERCLOCK_CPU, value); + if ((disable_overclock & DISABLE_PI1_PI2_OVERCLOCK) != DISABLE_PI1_PI2_OVERCLOCK && cpu_clock == 700) { + set_clock_rate_cpu((cpu_clock + value + 200) * 1000000); //overclock to 900 + } else { + set_clock_rate_cpu((cpu_clock + value) * 1000000); + } + break; + case F_OVERCLOCK_CORE: + if ((disable_overclock & DISABLE_SETTINGS_OVERCLOCK) == DISABLE_SETTINGS_OVERCLOCK) { + value = 0; + } + set_parameter(num, value); +#ifdef RPI4 + if (value > 100) { //pi 4 core is already 500 Mhz (all others 400Mhz) so don't overclock unless overclock >100Mhz + set_clock_rate_core((core_clock + value - 100) * 1000000); + } else { + set_clock_rate_core(core_clock * 1000000); + } +#else + if ((disable_overclock & DISABLE_PI1_PI2_OVERCLOCK) != DISABLE_PI1_PI2_OVERCLOCK && core_clock == 250) { + set_clock_rate_core((core_clock + value + 150) * 1000000); + } else { + set_clock_rate_core((core_clock + value) * 1000000); + } +#endif + break; + case F_OVERCLOCK_SDRAM: + if ((disable_overclock & DISABLE_SETTINGS_OVERCLOCK) == DISABLE_SETTINGS_OVERCLOCK) { + value = 0; + } + set_parameter(num, value); + set_clock_rate_sdram((sdram_clock + value) * 1000000); + break; case F_RETURN_POSITION: set_parameter(num, value); cycle_menus(); @@ -1270,49 +1296,6 @@ static void set_feature(int num, int value) { set_menu_table(); osd_refresh(); break; - - - - - - - case F_OVERCLOCK_CPU: - if ((disable_overclock & DISABLE_SETTINGS_OVERCLOCK) == DISABLE_SETTINGS_OVERCLOCK) { - value = 0; - } - cpu_overclock = value; - if ((disable_overclock & DISABLE_PI1_PI2_OVERCLOCK) != DISABLE_PI1_PI2_OVERCLOCK && cpu_clock == 700) { - set_clock_rate_cpu((cpu_clock + cpu_overclock + 200) * 1000000); //overclock to 900 - } else { - set_clock_rate_cpu((cpu_clock + cpu_overclock) * 1000000); - } - break; - case F_OVERCLOCK_CORE: - if ((disable_overclock & DISABLE_SETTINGS_OVERCLOCK) == DISABLE_SETTINGS_OVERCLOCK) { - value = 0; - } - core_overclock = value; -#ifdef RPI4 - if (core_overclock > 100) { //pi 4 core is already 500 Mhz (all others 400Mhz) so don't overclock unless overclock >100Mhz - set_clock_rate_core((core_clock + core_overclock - 100) * 1000000); - } else { - set_clock_rate_core(core_clock * 1000000); - } -#else - if ((disable_overclock & DISABLE_PI1_PI2_OVERCLOCK) != DISABLE_PI1_PI2_OVERCLOCK && core_clock == 250) { - set_clock_rate_core((core_clock + core_overclock + 150) * 1000000); - } else { - set_clock_rate_core((core_clock + core_overclock) * 1000000); - } -#endif - break; - case F_OVERCLOCK_SDRAM: - if ((disable_overclock & DISABLE_SETTINGS_OVERCLOCK) == DISABLE_SETTINGS_OVERCLOCK) { - value = 0; - } - sdram_overclock = value; - set_clock_rate_sdram((sdram_clock + sdram_overclock) * 1000000); - break; } } From dcad46b614f5802d3fe4f1b78b8a7e67115d2867 Mon Sep 17 00:00:00 2001 From: IanSB Date: Sun, 26 Feb 2023 01:52:40 +0000 Subject: [PATCH 16/46] Refactor resolution, refresh, scaling, hdmi mode & frontend --- src/geometry.c | 2 +- src/osd.c | 82 ++---------------- src/rgb_to_hdmi.c | 213 +++++++++++++++++++++------------------------- src/rgb_to_hdmi.h | 11 +-- 4 files changed, 107 insertions(+), 201 deletions(-) diff --git a/src/geometry.c b/src/geometry.c index 1c8a5d06..b317ec63 100644 --- a/src/geometry.c +++ b/src/geometry.c @@ -884,7 +884,7 @@ void geometry_get_fb_params(capture_info_t *capinfo) { bottom = 0; double aspect = (double) apparent_width / (double) apparent_height; int apparent_width_limit = (apparent_width * 1600 / 1920) & ~1; - if (aspect >= 1.6 && get_scaling() < SCALING_FILLALL_SOFT) { + if (aspect >= 1.6 && get_gscaling() != GSCALING_MANUAL) { left = (apparent_width - apparent_width_limit) / 2; right = left; capinfo->width = capinfo->width * 1600 / 1920; diff --git a/src/osd.c b/src/osd.c index f28a1c39..cc30cbdc 100644 --- a/src/osd.c +++ b/src/osd.c @@ -982,7 +982,7 @@ static char cpld_firmware_dir[MIN_STRING_SIZE] = DEFAULT_CPLD_FIRMWARE_DIR; void set_menu_table() { int index = 0; - int frontend = get_frontend(); + int frontend = get_parameter(F_FRONTEND); main_menu.items[index++] = (base_menu_item_t *) &back_ref; main_menu.items[index++] = (base_menu_item_t *) &info_menu_ref; if (frontend != FRONTEND_SIMPLE) main_menu.items[index++] = (base_menu_item_t *) &palette_menu_ref; @@ -1075,70 +1075,7 @@ static void cycle_menus() { static int get_feature(int num) { - switch (num) { - - case F_RESOLUTION: - return get_resolution(); - case F_REFRESH: - return get_refresh(); - case F_HDMI_MODE: - return get_hdmi(); - case F_SCALING: - return get_scaling(); - case F_FRONTEND: - return get_frontend(); - - - - case F_OVERCLOCK_CPU: - case F_OVERCLOCK_CORE: - case F_OVERCLOCK_SDRAM: - case F_PALETTE: - case F_TINT: - case F_SAT: - case F_CONT: - case F_BRIGHT: - case F_GAMMA: - case F_RETURN_POSITION: - case F_BUTTON_REVERSE: - case F_CROP_BORDER: - case F_SCREENCAP_SIZE: - case F_SWAP_ASPECT: - case F_NORMAL_SCALING: - case F_MODE7_SCALING: - case F_PROFILE: - case F_SAVED_CONFIG: - case F_SUB_PROFILE: - case F_HDMI_MODE_STANDBY: - case F_BORDER_COLOUR: - case F_FONT_SIZE: - case F_MODE7_DEINTERLACE: - case F_NORMAL_DEINTERLACE: - case F_FFOSD: - case F_PALETTE_CONTROL: - case F_NTSC_COLOUR: - case F_NTSC_PHASE: - case F_NTSC_TYPE: - case F_NTSC_QUALITY: - case F_TIMING_SET: - case F_SCANLINES: - case F_SCANLINE_LEVEL: - case F_OUTPUT_COLOUR: - case F_OUTPUT_INVERT: - case F_VSYNC_INDICATOR: - case F_GENLOCK_MODE: - case F_GENLOCK_LINE: - case F_GENLOCK_SPEED: - case F_GENLOCK_ADJUST: - case F_NUM_BUFFERS: - case F_AUTO_SWITCH: - case F_DEBUG: - case F_POWERUP_MESSAGE: - case F_YUV_PIXEL_DOUBLE: - case F_INTEGER_ASPECT: - return get_parameter(num); - } - return -1; + return get_parameter(num); } static void set_feature(int num, int value) { @@ -1166,7 +1103,6 @@ static void set_feature(int num, int value) { set_frontend(value, 1); break; - case F_PALETTE: case F_TINT: case F_SAT: @@ -1248,14 +1184,14 @@ static void set_feature(int num, int value) { load_profiles(value, 1); process_profile(value); set_feature(F_SUB_PROFILE, 0); - set_scaling(get_scaling(), 1); + set_scaling(get_parameter(F_SCALING), 1); break; case F_SAVED_CONFIG: set_parameter(num, value); load_profiles(get_parameter(F_PROFILE), 1); process_profile(get_parameter(F_PROFILE)); set_feature(F_SUB_PROFILE, 0); - set_scaling(get_scaling(), 1); + set_scaling(get_parameter(F_SCALING), 1); break; case F_SUB_PROFILE: set_parameter(num, value); @@ -1365,9 +1301,9 @@ static void toggle_param(param_menu_item_t *param_item) { static const char *get_interface_name() { if (eight_bit_detected()) { - return frontend_names_8[get_frontend()]; + return frontend_names_8[get_parameter(F_FRONTEND)]; } else { - return frontend_names_6[get_frontend()]; + return frontend_names_6[get_parameter(F_FRONTEND)]; } } @@ -1467,7 +1403,7 @@ void osd_display_interface(int line) { char osdline[256]; sprintf(osdline, "Interface: %s", get_interface_name()); osd_set(line, 0, osdline); - sprintf(osdline, "Scaling: %s", scaling_names[get_scaling()]); + sprintf(osdline, "Scaling: %s", scaling_names[get_parameter(F_SCALING)]); osd_set(line + 1, 0, osdline); if (has_sub_profiles[get_parameter(F_PROFILE)]) { sprintf(osdline, "Profile: %s (%s)", profile_names[get_parameter(F_PROFILE)], sub_profile_names[get_parameter(F_SUB_PROFILE)]); @@ -1481,7 +1417,7 @@ void osd_display_interface(int line) { osd_set(line + 3, 0, "GPU Capture Version"); #endif - if (get_frontend() != FRONTEND_SIMPLE) { + if (get_parameter(F_FRONTEND) != FRONTEND_SIMPLE) { osd_set(line + 5, 0, "Use Auto Calibrate Video Sampling or"); osd_set(line + 6, 0, "adjust sampling phase to fix noise"); } @@ -5999,7 +5935,7 @@ void osd_init() { if (strcmp(prop, DEFAULT_RESOLUTION) == 0) { auto_detected = 1; - if (get_refresh() == REFRESH_50) { + if (get_parameter(F_REFRESH) == REFRESH_50) { force_genlock_range = REFRESH_50_60; log_info("Auto 50Hz detected"); } diff --git a/src/rgb_to_hdmi.c b/src/rgb_to_hdmi.c index 4bd32883..dbe3e864 100644 --- a/src/rgb_to_hdmi.c +++ b/src/rgb_to_hdmi.c @@ -201,22 +201,17 @@ static int last_divider = -1; // OSD parameters // ============================================================= -static int refresh = 0; + static int old_refresh = -1; -static int resolution = -1; static int old_resolution = -1; -static int hdmi_mode = 0; static int old_hdmi_mode = -1; //static int x_resolution = 0; //static int y_resolution = 0; static char resolution_name[MAX_NAMES_WIDTH]; static char auto_workaround_path[MAX_NAMES_WIDTH] = ""; -static int scaling = -1; static int gscaling = GSCALING_INTEGER; static int filtering = DEFAULT_FILTERING; static int old_filtering = - 1; -static int frontend = 0; - static int lines_per_2_vsyncs = 0; static int lines_per_vsync = 0; static int one_line_time_ns = 0; @@ -2596,14 +2591,60 @@ void set_force_genlock_range(int value) { force_genlock_range = value; } +void set_auto_workaround_path(char *value, int reboot) { + strcpy(auto_workaround_path, value); + if (reboot) { + reboot_required |= 0x10; + file_save_config(resolution_name, parameters[F_REFRESH], parameters[F_SCALING], filtering, parameters[F_FRONTEND], parameters[F_HDMI_MODE], auto_workaround_path); + } +} + +void set_filtering(int filter) { + filtering = filter; + old_filtering = filter; +} + +int get_adjusted_ntscphase() { + int phase = parameters[F_NTSC_PHASE]; + if (parameters[F_NTSC_QUALITY] == FRINGE_SOFT) { + phase |= NTSC_SOFT; + } + if (parameters[F_NTSC_QUALITY] == FRINGE_MEDIUM) { + phase |= NTSC_MEDIUM; + } + return phase; +} + +int get_core_1_available() { + return core_1_available; +} + +int get_lines_per_vsync() { + int lines = geometry_get_value(LINES_FRAME); + if (lines_per_vsync > (lines - 20) && lines_per_vsync <= (lines + 1)) { + return lines_per_vsync; + } else { + return lines; + } + +} + +int get_50hz_state() { + if (source_vsync_freq_hz == 50) { + return vlock_limited; + } + return -1; +} + + void set_hdmi(int value, int reboot) { - hdmi_mode = value; + parameters[F_HDMI_MODE] = value; if (reboot == 0) { - old_hdmi_mode = hdmi_mode; + old_hdmi_mode = parameters[F_HDMI_MODE]; } else { - if (hdmi_mode != old_hdmi_mode) { + if (parameters[F_HDMI_MODE] != old_hdmi_mode) { reboot_required |= 0x04; - log_info("Requesting hdmi reboot %d", hdmi_mode); + log_info("Requesting hdmi reboot %d", parameters[F_HDMI_MODE]); resolution_warning = 1; } else { reboot_required &= ~0x04; @@ -2611,30 +2652,18 @@ void set_hdmi(int value, int reboot) { } } if (reboot) { - file_save_config(resolution_name, refresh, scaling, filtering, frontend, hdmi_mode, auto_workaround_path); - } -} - -int get_hdmi() { - return hdmi_mode; -} - -void set_auto_workaround_path(char *value, int reboot) { - strcpy(auto_workaround_path, value); - if (reboot) { - reboot_required |= 0x10; - file_save_config(resolution_name, refresh, scaling, filtering, frontend, hdmi_mode, auto_workaround_path); + file_save_config(resolution_name, parameters[F_REFRESH], parameters[F_SCALING], filtering, parameters[F_FRONTEND], parameters[F_HDMI_MODE], auto_workaround_path); } } void set_refresh(int value, int reboot) { - refresh = value; + parameters[F_REFRESH] = value; if (reboot == 0) { - old_refresh = refresh; + old_refresh = parameters[F_REFRESH]; } else { - if (refresh != old_refresh) { + if (parameters[F_REFRESH] != old_refresh) { reboot_required |= 0x08; - log_info("Requesting refresh reboot %d", refresh); + log_info("Requesting refresh reboot %d", parameters[F_REFRESH]); resolution_warning = 1; } else { reboot_required &= ~0x08; @@ -2643,21 +2672,17 @@ void set_refresh(int value, int reboot) { } if (reboot) { reboot_required |= 0x08; - file_save_config(resolution_name, refresh, scaling, filtering, frontend, hdmi_mode, auto_workaround_path); + file_save_config(resolution_name, parameters[F_REFRESH], parameters[F_SCALING], filtering, parameters[F_FRONTEND], parameters[F_HDMI_MODE], auto_workaround_path); } } -int get_refresh() { - return refresh; -} - -void set_resolution(int mode, const char *name, int reboot) { - resolution = mode; +void set_resolution(int value, const char *name, int reboot) { + parameters[F_RESOLUTION] = value; strcpy(resolution_name, name); if (reboot == 0) { - old_resolution = resolution; + old_resolution = parameters[F_RESOLUTION]; } else { - if (resolution != old_resolution) { + if (parameters[F_RESOLUTION] != old_resolution) { reboot_required |= 0x01; resolution_warning = 1; } else { @@ -2666,21 +2691,13 @@ void set_resolution(int mode, const char *name, int reboot) { } } if (reboot) { - file_save_config(resolution_name, refresh, scaling, filtering, frontend, hdmi_mode, auto_workaround_path); + file_save_config(resolution_name, parameters[F_REFRESH], parameters[F_SCALING], filtering, parameters[F_FRONTEND], parameters[F_HDMI_MODE], auto_workaround_path); } } -int get_resolution() { - return resolution; -} - -void set_filtering(int filter) { - filtering = filter; - old_filtering = filter; -} -void set_scaling(int mode, int reboot) { - if (mode == SCALING_AUTO) { +void set_scaling(int value, int reboot) { + if (value == SCALING_AUTO) { geometry_set_mode(0); int width = geometry_get_value(MIN_H_WIDTH); int h_size = get_hdisplay() - config_overscan_left - config_overscan_right; @@ -2717,7 +2734,7 @@ void set_scaling(int mode, int reboot) { } } } else { - switch (mode) { + switch (value) { default: case SCALING_INTEGER_SHARP: gscaling = GSCALING_INTEGER; @@ -2755,7 +2772,7 @@ void set_scaling(int mode, int reboot) { break; } } - scaling = mode; + parameters[F_SCALING] = value; set_gscaling(gscaling); if (reboot != 0 && filtering != old_filtering) { @@ -2765,81 +2782,32 @@ void set_scaling(int mode, int reboot) { reboot_required &= ~0x02; } if (reboot == 1 || (reboot == 2 && reboot_required)) { - file_save_config(resolution_name, refresh, scaling, filtering, frontend, hdmi_mode, auto_workaround_path); + file_save_config(resolution_name, parameters[F_REFRESH], parameters[F_SCALING], filtering, parameters[F_FRONTEND], parameters[F_HDMI_MODE], auto_workaround_path); } } -int get_scaling() { - return scaling; -} - - void set_frontend(int value, int save) { int min = cpld->frontend_info() & 0xffff; int max = cpld->frontend_info() >> 16; if (value >= min && value <= max) { - frontend = value; + parameters[F_FRONTEND] = value; } else { if (value == 0 || value > max) { - frontend = min; + parameters[F_FRONTEND] = min; } else { - frontend = max; + parameters[F_FRONTEND] = max; } } if (save != 0) { - file_save_config(resolution_name, refresh, scaling, filtering, frontend, hdmi_mode, auto_workaround_path); + file_save_config(resolution_name, parameters[F_REFRESH], parameters[F_SCALING], filtering, parameters[F_FRONTEND], parameters[F_HDMI_MODE], auto_workaround_path); } - cpld->set_frontend(frontend); + cpld->set_frontend(parameters[F_FRONTEND]); } -int get_frontend() { - return frontend; -} - - - -int get_adjusted_ntscphase() { - int phase = parameters[F_NTSC_PHASE]; - if (parameters[F_NTSC_QUALITY] == FRINGE_SOFT) { - phase |= NTSC_SOFT; - } - if (parameters[F_NTSC_QUALITY] == FRINGE_MEDIUM) { - phase |= NTSC_MEDIUM; - } - return phase; -} - - -int get_core_1_available() { - return core_1_available; -} - -int get_lines_per_vsync() { - int lines = geometry_get_value(LINES_FRAME); - if (lines_per_vsync > (lines - 20) && lines_per_vsync <= (lines + 1)) { - return lines_per_vsync; - } else { - return lines; - } - -} - -int get_50hz_state() { - if (source_vsync_freq_hz == 50) { - return vlock_limited; - } - return -1; -} - - - - int get_parameter(int parameter) { switch (parameter) { //space for special case handling - - case F_SCANLINE_LEVEL: { if ((geometry_get_value(FB_SIZEX2) & 1) == 0) { @@ -2851,20 +2819,15 @@ int get_parameter(int parameter) { break; default: + if (parameter < MAX_PARAMETERS) { return parameters[parameter]; + } else { + return 0; + } break; } } - -void set_ntsccolour(int value) { //called from assembler - parameters[F_NTSC_COLOUR] = value; -} - -void set_timingset(int value) { //called from assembler - parameters[F_TIMING_SET] = value; -} - void set_parameter(int parameter, int value) { switch (parameter) { //space for special case handling @@ -2985,6 +2948,18 @@ void set_parameter(int parameter, int value) { } } + + +void set_ntsccolour(int value) { //called from assembler + parameters[F_NTSC_COLOUR] = value; +} + +void set_timingset(int value) { //called from assembler + parameters[F_TIMING_SET] = value; +} + + + void action_calibrate_clocks() { // re-measure vsync and set the core/sampling clocks calibrate_sampling_clock(0); @@ -3158,24 +3133,24 @@ void rgb_to_hdmi_main() { sw1_power_up = 1; force_genlock_range = GENLOCK_RANGE_INHIBIT; if (simple_detected) { - if ((strcmp(resolution_name, DEFAULT_RESOLUTION) != 0) || refresh != AUTO_REFRESH || hdmi_mode != DEFAULT_HDMI_MODE ) { + if ((strcmp(resolution_name, DEFAULT_RESOLUTION) != 0) || parameters[F_REFRESH] != AUTO_REFRESH || parameters[F_HDMI_MODE] != DEFAULT_HDMI_MODE ) { log_info("Resetting output resolution/refresh to Auto/50Hz-60Hz"); - file_save_config(DEFAULT_RESOLUTION, AUTO_REFRESH, DEFAULT_SCALING, DEFAULT_FILTERING, frontend, DEFAULT_HDMI_MODE, auto_workaround_path); + file_save_config(DEFAULT_RESOLUTION, AUTO_REFRESH, DEFAULT_SCALING, DEFAULT_FILTERING, parameters[F_FRONTEND], DEFAULT_HDMI_MODE, auto_workaround_path); // Wait a while to allow UART time to empty delay_in_arm_cycles_cpu_adjust(200000000); reboot(); } } else { - if ((strcmp(resolution_name, DEFAULT_RESOLUTION) != 0) || refresh != DEFAULT_REFRESH || hdmi_mode != DEFAULT_HDMI_MODE ) { + if ((strcmp(resolution_name, DEFAULT_RESOLUTION) != 0) || parameters[F_REFRESH] != DEFAULT_REFRESH || parameters[F_HDMI_MODE] != DEFAULT_HDMI_MODE ) { log_info("Resetting output resolution/refresh to Auto/EDID"); - file_save_config(DEFAULT_RESOLUTION, DEFAULT_REFRESH, DEFAULT_SCALING, DEFAULT_FILTERING, frontend, DEFAULT_HDMI_MODE, auto_workaround_path); + file_save_config(DEFAULT_RESOLUTION, DEFAULT_REFRESH, DEFAULT_SCALING, DEFAULT_FILTERING, parameters[F_FRONTEND], DEFAULT_HDMI_MODE, auto_workaround_path); // Wait a while to allow UART time to empty delay_in_arm_cycles_cpu_adjust(200000000); reboot(); } } } - set_scaling(get_scaling(), 2); + set_scaling(parameters[F_SCALING], 2); resolution_warning = 0; clear = BIT_CLEAR; if (_get_hardware_id() >= _RPI2) { @@ -3605,6 +3580,8 @@ int show_detected_status(int line) { void kernel_main(unsigned int r0, unsigned int r1, unsigned int atags) { + parameters[F_RESOLUTION] = -1; + parameters[F_SCALING] = -1; parameters[F_AUTO_SWITCH] = 2; parameters[F_GENLOCK_LINE] = 10; parameters[F_GENLOCK_SPEED] = 2; diff --git a/src/rgb_to_hdmi.h b/src/rgb_to_hdmi.h index eed2c47e..9298ff74 100644 --- a/src/rgb_to_hdmi.h +++ b/src/rgb_to_hdmi.h @@ -7,21 +7,14 @@ void get_config_overscan(int *l, int *r, int *t, int *b); void set_startup_overscan(int value); int get_startup_overscan(); void set_force_genlock_range(int value); - - -void set_resolution(int mode, const char *name, int reboot); -int get_resolution(); void set_auto_workaround_path(char *value, int reboot); void reboot(void); + +void set_resolution(int mode, const char *name, int reboot); void set_refresh(int value, int reboot); -int get_refresh(); void set_hdmi(int value, int reboot); -int get_hdmi(); void set_scaling(int mode, int reboot); -int get_scaling(); void set_frontend(int value, int save); -int get_frontend(); - void set_ntsccolour(int value); void set_timingset(int value); From 8716874219a642308e2080a8c6d6187aa0c7f15f Mon Sep 17 00:00:00 2001 From: IanSB Date: Sun, 26 Feb 2023 02:11:13 +0000 Subject: [PATCH 17/46] Refactor set_feature --- src/osd.c | 39 ++++----------------------------------- 1 file changed, 4 insertions(+), 35 deletions(-) diff --git a/src/osd.c b/src/osd.c index cc30cbdc..35e0bd66 100644 --- a/src/osd.c +++ b/src/osd.c @@ -1087,6 +1087,10 @@ static void set_feature(int num, int value) { } switch (num) { + default: + set_parameter(num, value); + break; + case F_RESOLUTION: set_resolution(value, resolution_names[value], 1); break; @@ -1102,41 +1106,6 @@ static void set_feature(int num, int value) { case F_FRONTEND: set_frontend(value, 1); break; - - case F_PALETTE: - case F_TINT: - case F_SAT: - case F_CONT: - case F_BRIGHT: - case F_GAMMA: - case F_BUTTON_REVERSE: - case F_CROP_BORDER: - case F_SCREENCAP_SIZE: - case F_SWAP_ASPECT: - case F_MODE7_SCALING: - case F_NORMAL_SCALING: - case F_HDMI_MODE_STANDBY: - case F_FFOSD: - case F_MODE7_DEINTERLACE: - case F_NORMAL_DEINTERLACE: - case F_BORDER_COLOUR: - case F_NTSC_PHASE: - case F_NTSC_TYPE: - case F_NTSC_QUALITY: - case F_TIMING_SET: - case F_SCANLINES: - case F_SCANLINE_LEVEL: - case F_GENLOCK_MODE: - case F_GENLOCK_LINE: - case F_GENLOCK_SPEED: - case F_GENLOCK_ADJUST: - case F_NUM_BUFFERS: - case F_POWERUP_MESSAGE: - case F_YUV_PIXEL_DOUBLE: - case F_INTEGER_ASPECT: - set_parameter(num, value); - break; - case F_OVERCLOCK_CPU: if ((disable_overclock & DISABLE_SETTINGS_OVERCLOCK) == DISABLE_SETTINGS_OVERCLOCK) { value = 0; From f2c73e8a0abc38f52343619ecb8176dba18acb7d Mon Sep 17 00:00:00 2001 From: IanSB Date: Mon, 27 Feb 2023 23:33:13 +0000 Subject: [PATCH 18/46] Update resolutions --- src/scripts/Resolutions/60Hz/1920x1200@60Hz.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scripts/Resolutions/60Hz/1920x1200@60Hz.txt b/src/scripts/Resolutions/60Hz/1920x1200@60Hz.txt index 1dc86127..878dbc5c 100644 --- a/src/scripts/Resolutions/60Hz/1920x1200@60Hz.txt +++ b/src/scripts/Resolutions/60Hz/1920x1200@60Hz.txt @@ -1,3 +1,3 @@ ## 1920x1200 @ 60Hz hdmi_group=2 -hdmi_mode=69 +hdmi_mode=68 From 8a12a94246b88646f8d30d45eaa7330b8016335d Mon Sep 17 00:00:00 2001 From: IanSB Date: Tue, 28 Feb 2023 01:11:04 +0000 Subject: [PATCH 19/46] Update profiles in preparation for new select profile menu option --- .../Amiga_2000_CPLD_Setup/Profiles/Default.txt | 3 +++ .../Amiga_2000_CPLD_Setup/profile_6-12_BIT_RGB.txt | 2 +- .../Amiga_CPLD_Setup/Profiles/Default.txt | 3 +++ .../Amiga_CPLD_Setup/profile_3-12_BIT_BBC.txt | 2 +- .../Amiga_CPLD_Setup/profile_6-12_BIT_RGB.txt | 2 +- .../Profiles/3-12_BIT_BBC/{ => Acorn}/Acorn_Atom_TTL.txt | 0 .../3-12_BIT_BBC/{ => Acorn}/Acorn_Communicator.txt | 0 .../Profiles/3-12_BIT_BBC/{ => Acorn}/Acorn_Electron.txt | 0 .../Profiles/3-12_BIT_BBC/{ => Acorn}/Acorn_Teletext.txt | 0 .../Profiles/3-12_BIT_BBC/{ => Acorn}/BBC_Master.txt | 0 .../Profiles/3-12_BIT_BBC/{ => Acorn}/BBC_Micro.txt | 0 .../3-12_BIT_BBC/{ => Acorn}/BBC_NuLA_12bpp_Mode7.txt | 0 .../3-12_BIT_BBC/{ => Acorn}/BBC_NuLA_3bpp_Mode7.txt | 2 +- .../3-12_BIT_BBC/{ => Amstrad}/Amstrad_CPC_PLUS.txt | 0 .../{ => Apple}/Apple_IIc_TTL/Apple_IIc_50Hz.txt | 0 .../{ => Apple}/Apple_IIc_TTL/Apple_IIc_60Hz.txt | 0 .../{Amiga => Apple/Apple_IIc_TTL}/Default.txt | 0 .../{ => Apple}/Apple_IIe_TTL/Apple_IIe_50Hz.txt | 0 .../{ => Apple}/Apple_IIe_TTL/Apple_IIe_60Hz.txt | 0 .../{Apple_IIc_TTL => Apple/Apple_IIe_TTL}/Default.txt | 0 .../3-12_BIT_BBC/{ => Commodore}/Amiga/Amiga_50Hz.txt | 0 .../{ => Commodore}/Amiga/Amiga_50Hz_NTSC.txt | 0 .../3-12_BIT_BBC/{ => Commodore}/Amiga/Amiga_60Hz.txt | 0 .../3-12_BIT_BBC/{ => Commodore}/Amiga/Amiga_60Hz_PAL.txt | 0 .../{Apple_IIe_TTL => Commodore/Amiga}/Default.txt | 0 .../Profiles/3-12_BIT_BBC/{ => Sinclair}/Sinclair_QL.txt | 0 .../3-12_BIT_BBC/{ => Sinclair}/ZX80_TTL/Default.txt | 0 .../3-12_BIT_BBC/{ => Sinclair}/ZX80_TTL/ZX80_50Hz.txt | 0 .../3-12_BIT_BBC/{ => Sinclair}/ZX80_TTL/ZX80_60Hz.txt | 0 .../Profiles/3-12_BIT_BBC/{ => _Other}/Camputers_Lynx.txt | 0 .../3-12_BIT_BBC/{ => _Other}/Colour Test/Black.txt | 0 .../3-12_BIT_BBC/{ => _Other}/Colour Test/Blue.txt | 0 .../3-12_BIT_BBC/{ => _Other}/Colour Test/Cyan.txt | 0 .../3-12_BIT_BBC/{ => _Other}/Colour Test/Default.txt | 0 .../3-12_BIT_BBC/{ => _Other}/Colour Test/Green.txt | 0 .../3-12_BIT_BBC/{ => _Other}/Colour Test/Magenta.txt | 0 .../3-12_BIT_BBC/{ => _Other}/Colour Test/Red.txt | 0 .../3-12_BIT_BBC/{ => _Other}/Colour Test/White.txt | 0 .../3-12_BIT_BBC/{ => _Other}/Colour Test/Yellow.txt | 0 src/scripts/Profiles/3-12_BIT_BBC/{ => _Other}/Custom.txt | 0 src/scripts/Profiles/3-12_BIT_BBC/{ => _Other}/Oric.txt | 0 .../Profiles/3-12_BIT_BBC/{ => _Other}/RML_480Z.txt | 0 .../Profiles/3-12_BIT_BBC/{ => _Other}/Sam_Coupe.txt | 0 .../Profiles/3-12_BIT_BBC/{ => _Other}/Sharp_MZ-700.txt | 0 .../3-12_BIT_BBC_Analog/{ => Acorn}/Acorn_Electron.txt | 0 .../3-12_BIT_BBC_Analog/{ => Acorn}/Acorn_Teletext.txt | 0 .../3-12_BIT_BBC_Analog/{ => Acorn}/BBC_Master.txt | 0 .../3-12_BIT_BBC_Analog/{ => Acorn}/BBC_Micro.txt | 0 .../3-12_BIT_BBC_Analog/{ => Amstrad}/Amstrad_CPC.txt | 0 .../3-12_BIT_BBC_Analog/{ => Sinclair}/Harlequin_128K.txt | 0 .../3-12_BIT_BBC_Analog/{ => Sinclair}/Sinclair_QL.txt | 0 .../{ => Sinclair}/Spectrum_+2A_+3_Nuvo.txt | 0 .../{ => Sinclair}/Spectrum_128_+2(Grey).txt | 0 .../{ => Sinclair}/Spectrum_48K+c0pperdragon.txt | 0 .../3-12_BIT_BBC_Analog/{ => _Other}/Analog_CGA.txt | 0 .../3-12_BIT_BBC_Analog/{ => _Other}/Camputers_Lynx.txt | 0 .../Profiles/3-12_BIT_BBC_Analog/{ => _Other}/Custom.txt | 0 .../Profiles/3-12_BIT_BBC_Analog/{ => _Other}/Oric.txt | 0 .../3-12_BIT_BBC_Analog/{ => _Other}/RML_480Z.txt | 0 .../3-12_BIT_BBC_Analog/{ => _Other}/Sharp_MZ-700.txt | 0 .../Profiles/6-12_BIT_RGB/{ => Acorn}/Acorn_Atom_TTL.txt | 0 .../Profiles/6-12_BIT_RGB/{ => Acorn}/Acorn_Electron.txt | 0 .../6-12_BIT_RGB/{ => Amstrad}/Amstrad_CPC_PLUS.txt | 0 .../{ => Apple}/Apple_II-IIe_TTL/Apple_II-IIe_50Hz.txt | 0 .../{ => Apple}/Apple_II-IIe_TTL/Apple_II-IIe_60Hz.txt | 0 .../{Amiga => Apple/Apple_II-IIe_TTL}/Default.txt | 0 .../{ => Apple}/Apple_IIGS/Apple_IIGS_50Hz.txt | 0 .../{ => Apple}/Apple_IIGS/Apple_IIGS_60Hz.txt | 0 .../6-12_BIT_RGB/{ => Apple}/Apple_IIGS/Default.txt | 0 .../{ => Apple}/Apple_IIc_TTL/Apple_IIc_50Hz.txt | 0 .../{ => Apple}/Apple_IIc_TTL/Apple_IIc_60Hz.txt | 0 .../{Amiga_2000 => Apple/Apple_IIc_TTL}/Default.txt | 0 .../Profiles/6-12_BIT_RGB/{ => Apple}/Apple_Lisa_TTL.txt | 0 .../Profiles/6-12_BIT_RGB/{ => Apple}/Mac_Classic.txt | 0 .../6-12_BIT_RGB/{ => Atari}/Atari_ST/Atari_ST_50Hz.txt | 0 .../6-12_BIT_RGB/{ => Atari}/Atari_ST/Atari_ST_60Hz.txt | 0 .../6-12_BIT_RGB/{ => Atari}/Atari_ST/Atari_ST_Mono.txt | 0 .../{Apple_II-IIe_TTL => Atari/Atari_ST}/Default.txt | 0 .../6-12_BIT_RGB/{ => Atari}/Atari_STE/Atari_STE_50Hz.txt | 0 .../6-12_BIT_RGB/{ => Atari}/Atari_STE/Atari_STE_60Hz.txt | 0 .../6-12_BIT_RGB/{ => Atari}/Atari_STE/Atari_STE_Mono.txt | 0 .../{Apple_IIc_TTL => Atari/Atari_STE}/Default.txt | 0 .../6-12_BIT_RGB/{ => Commodore}/Amiga/Amiga_50Hz.txt | 0 .../{ => Commodore}/Amiga/Amiga_50Hz_NTSC.txt | 0 .../6-12_BIT_RGB/{ => Commodore}/Amiga/Amiga_60Hz.txt | 0 .../6-12_BIT_RGB/{ => Commodore}/Amiga/Amiga_60Hz_PAL.txt | 0 .../{Atari_ST => Commodore/Amiga}/Default.txt | 0 .../{ => Commodore}/Amiga_2000/Amiga_2000_50Hz.txt | 0 .../{ => Commodore}/Amiga_2000/Amiga_2000_50Hz_NTSC.txt | 0 .../{ => Commodore}/Amiga_2000/Amiga_2000_60Hz.txt | 0 .../{ => Commodore}/Amiga_2000/Amiga_2000_60Hz_PAL.txt | 0 .../{Atari_STE => Commodore/Amiga_2000}/Default.txt | 0 .../{ => Commodore}/Commodore_128-80/Cmd_128_50Hz.txt | 0 .../{ => Commodore}/Commodore_128-80/Cmd_128_60Hz.txt | 0 .../{ => Commodore}/Commodore_128-80/Cmd_128_60Hz_Alt.txt | 0 .../{ => Commodore}/Commodore_128-80/Default.txt | 0 .../{ => Commodore}/Commodore_128-80/Text-NTSC_264.txt | 0 .../{ => Commodore}/Commodore_128-80/Text-PAL_320.txt | 0 .../{ => Commodore}/Commodore_128-80/VDC-FLI_295.txt | 0 .../{ => Commodore}/Commodore_128-80/VDC-HFLI_426.txt | 0 .../{ => Commodore}/Commodore_128-80/VDC-IHFLI_266.txt | 0 .../{ => Commodore}/Commodore_128-80/VDC-IM800_651i.txt | 0 .../{ => Commodore}/Commodore_128-80/VDC-IMONO_749i.txt | 0 .../Commodore_128-80/VDC-IMONO_749i_V1.txt | 0 .../{ => Commodore}/Commodore_128-80/VDC-ITFLI_315.txt | 0 .../Commodore_PET/40-Col-CRTC-Business.txt | 0 .../{ => Commodore}/Commodore_PET/40-Col-CRTC-Graphic.txt | 0 .../{ => Commodore}/Commodore_PET/Default.txt | 0 .../6-12_BIT_RGB/{Intellivision => PC/PC-98}/Default.txt | 0 .../6-12_BIT_RGB/{ => PC}/PC-98/PC-98_200_lines.txt | 4 ++-- .../6-12_BIT_RGB/{ => PC}/PC-98/PC-98_400_lines.txt | 8 ++++---- .../Profiles/6-12_BIT_RGB/{ => PC}/PC_CGA_(IBM_New).txt | 0 .../Profiles/6-12_BIT_RGB/{ => PC}/PC_CGA_(IBM_Old).txt | 0 .../Profiles/6-12_BIT_RGB/{ => PC}/PC_EGA/Default.txt | 0 .../Profiles/6-12_BIT_RGB/{ => PC}/PC_EGA/EGA_(Mode1).txt | 0 .../6-12_BIT_RGB/{ => PC}/PC_EGA/EGA_(Mode2-40).txt | 0 .../6-12_BIT_RGB/{ => PC}/PC_EGA/EGA_(Mode2-80).txt | 0 .../6-12_BIT_RGB/{ => PC}/PC_EGA_Wonder_800+/Default.txt | 0 .../{ => PC}/PC_EGA_Wonder_800+/EGA_Mode1.txt | 0 .../{ => PC}/PC_EGA_Wonder_800+/EGA_Mode2.txt | 0 .../Profiles/6-12_BIT_RGB/{ => PC}/PC_ET3000AX/CGA.txt | 0 .../Profiles/6-12_BIT_RGB/{ => PC}/PC_ET3000AX/CGA2.txt | 0 .../6-12_BIT_RGB/{ => PC}/PC_ET3000AX/CGA_on_VGA.txt | 0 .../6-12_BIT_RGB/{ => PC}/PC_ET3000AX/Default.txt | 0 .../Profiles/6-12_BIT_RGB/{ => PC}/PC_ET3000AX/EGA.txt | 0 .../6-12_BIT_RGB/{ => PC}/PC_ET3000AX/EGA_on_VGA_25.txt | 0 .../6-12_BIT_RGB/{ => PC}/PC_ET3000AX/EGA_on_VGA_28.txt | 0 .../6-12_BIT_RGB/{ => PC}/PC_ET3000AX/VGA_Graphics.txt | 0 .../6-12_BIT_RGB/{ => PC}/PC_ET3000AX/VGA_Text.txt | 0 .../Profiles/6-12_BIT_RGB/{ => PC}/PC_HEGA_AUTO/CGA.txt | 0 .../6-12_BIT_RGB/{ => PC}/PC_HEGA_AUTO/Default.txt | 0 .../6-12_BIT_RGB/{ => PC}/PC_HEGA_AUTO/EGA_200.txt | 0 .../6-12_BIT_RGB/{ => PC}/PC_HEGA_AUTO/EGA_350.txt | 0 .../{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(640x400 alt).txt | 0 .../{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(640x400).txt | 0 .../{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(720x274).txt | 0 .../{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(alt).txt | 0 .../{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(alt10).txt | 0 .../{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(alt11).txt | 0 .../{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(alt12).txt | 0 .../{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(alt13).txt | 0 .../{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(alt14).txt | 0 .../{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(alt15).txt | 0 .../{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(alt16).txt | 0 .../{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(alt2).txt | 0 .../{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(alt3).txt | 0 .../{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(alt4).txt | 0 .../{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(alt5).txt | 0 .../{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(alt6).txt | 0 .../{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(alt7).txt | 0 .../{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(alt8).txt | 0 .../{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(alt9).txt | 0 .../6-12_BIT_RGB/{ => PC}/PC_HEGA_AUTO/Hercules_Gfx.txt | 0 .../6-12_BIT_RGB/{ => PC}/PC_HEGA_AUTO/Hercules_Txt.txt | 0 .../6-12_BIT_RGB/{ => PC}/PC_Hercules/Default.txt | 0 .../6-12_BIT_RGB/{ => PC}/PC_Hercules/Hercules_Gfx.txt | 0 .../6-12_BIT_RGB/{ => PC}/PC_Hercules/Hercules_Txt.txt | 0 src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_MDA.txt | 0 .../Profiles/6-12_BIT_RGB/{ => PC}/PC_NEC_MDA/Default.txt | 0 .../Profiles/6-12_BIT_RGB/{ => PC}/PC_NEC_MDA/NEC_Gfx.txt | 0 .../Profiles/6-12_BIT_RGB/{ => PC}/PC_NEC_MDA/NEC_Txt.txt | 0 .../Profiles/6-12_BIT_RGB/{ => PC}/PC_OTIVGA/CGA_40.txt | 0 .../Profiles/6-12_BIT_RGB/{ => PC}/PC_OTIVGA/CGA_80.txt | 0 .../6-12_BIT_RGB/{ => PC}/PC_OTIVGA/CGA_on_VGA.txt | 0 .../Profiles/6-12_BIT_RGB/{ => PC}/PC_OTIVGA/Default.txt | 0 .../6-12_BIT_RGB/{ => PC}/PC_OTIVGA/EGA_(Mode2-40).txt | 0 .../6-12_BIT_RGB/{ => PC}/PC_OTIVGA/EGA_(Mode2-80).txt | 0 .../Profiles/6-12_BIT_RGB/{ => PC}/PC_OTIVGA/EGA_Alt.txt | 0 .../6-12_BIT_RGB/{ => PC}/PC_OTIVGA/EGA_on_VGA_25.txt | 0 .../6-12_BIT_RGB/{ => PC}/PC_OTIVGA/EGA_on_VGA_28.txt | 0 .../Profiles/6-12_BIT_RGB/{ => PC}/PC_OTIVGA/MDA.txt | 0 .../6-12_BIT_RGB/{ => PC}/PC_OTIVGA/VGA_Graphics.txt | 0 .../Profiles/6-12_BIT_RGB/{ => PC}/PC_OTIVGA/VGA_Text.txt | 0 .../6-12_BIT_RGB/{ => PC}/PC_VIDEO7_MDA/Default.txt | 0 .../6-12_BIT_RGB/{ => PC}/PC_VIDEO7_MDA/VIdeo7_Gfx.txt | 0 .../6-12_BIT_RGB/{ => PC}/PC_VIDEO7_MDA/Video7_Txt.txt | 0 .../Profiles/6-12_BIT_RGB/{ => Sinclair}/Sinclair_QL.txt | 0 .../6-12_BIT_RGB/{ => Sinclair}/Spectrum_128_+2(Grey).txt | 0 .../{TRS_80_Model_3 => Sinclair/ZX80_TTL}/Default.txt | 0 .../6-12_BIT_RGB/{ => Sinclair}/ZX80_TTL/ZX80_50Hz.txt | 0 .../6-12_BIT_RGB/{ => Sinclair}/ZX80_TTL/ZX80_60Hz.txt | 0 .../{ZX80_TTL => Tandy/TRS_80_Model_3}/Default.txt | 0 .../TRS_80_Model_3/TRS_80_M3_50Hz_DEHJKLVWBBCC.txt | 0 .../TRS_80_Model_3/TRS_80_M3_60Hz_DEHJKLVWBBCC.txt | 0 .../6-12_BIT_RGB/{ => Tandy}/TRS_80_Model_4/Default.txt | 0 .../{ => Tandy}/TRS_80_Model_4/TRS_80_Model_4_60Hz.txt | 0 .../6-12_BIT_RGB/{ => Tandy}/Tandy_1000_200_lines.txt | 0 .../6-12_BIT_RGB/{ => Tandy}/Tandy_1000_225_lines.txt | 0 src/scripts/Profiles/6-12_BIT_RGB/{ => _Other}/ABC80.txt | 8 ++++---- .../Profiles/6-12_BIT_RGB/{ => _Other}/Aquarius.txt | 0 .../Profiles/6-12_BIT_RGB/{ => _Other}/Camputers_Lynx.txt | 0 .../6-12_BIT_RGB/{ => _Other}/Colour Test/Black.txt | 0 .../6-12_BIT_RGB/{ => _Other}/Colour Test/Blue.txt | 0 .../6-12_BIT_RGB/{ => _Other}/Colour Test/Cyan.txt | 0 .../6-12_BIT_RGB/{ => _Other}/Colour Test/Default.txt | 0 .../6-12_BIT_RGB/{ => _Other}/Colour Test/Green.txt | 0 .../6-12_BIT_RGB/{ => _Other}/Colour Test/Magenta.txt | 0 .../6-12_BIT_RGB/{ => _Other}/Colour Test/Red.txt | 0 .../6-12_BIT_RGB/{ => _Other}/Colour Test/White.txt | 0 .../6-12_BIT_RGB/{ => _Other}/Colour Test/Yellow.txt | 0 .../Profiles/6-12_BIT_RGB/{ => _Other}/Colour_Genie.txt | 0 src/scripts/Profiles/6-12_BIT_RGB/{ => _Other}/Custom.txt | 0 .../Profiles/6-12_BIT_RGB/{ => _Other}/Enterprise.txt | 0 .../_Other/Intellivision}/Default.txt | 0 .../{ => _Other}/Intellivision/Intellivision_50Hz.txt | 0 .../{ => _Other}/Intellivision/Intellivision_60Hz.txt | 0 .../Profiles/6-12_BIT_RGB/{ => _Other}/Laser_128.txt | 0 .../6-12_BIT_RGB/{ => _Other}/Olivetti Prodest-PC1.txt | 0 src/scripts/Profiles/6-12_BIT_RGB/{ => _Other}/Oric.txt | 0 .../Profiles/6-12_BIT_RGB/{ => _Other}/RML_480Z.txt | 0 .../Profiles/6-12_BIT_RGB/{ => _Other}/Sam_Coupe.txt | 0 .../Profiles/6-12_BIT_RGB/{ => _Other}/Sharp_MZ-700.txt | 0 .../Profiles/6-12_BIT_RGB/{ => _Other}/Tektronix_571.txt | 0 .../Profiles/6-12_BIT_RGB/{ => _Other}/Videopac_C52.txt | 0 .../6-12_BIT_RGB_Analog/{ => Acorn}/Acorn_Electron.txt | 0 .../6-12_BIT_RGB_Analog/{ => Amstrad}/Amstrad_CPC.txt | 0 .../6-12_BIT_RGB_Analog/{ => Sinclair}/Harlequin_128K.txt | 0 .../6-12_BIT_RGB_Analog/{ => Sinclair}/Sinclair_QL.txt | 0 .../{ => Sinclair}/Spectrum_+2A_+3_Nuvo.txt | 0 .../{ => Sinclair}/Spectrum_128_+2(Grey).txt | 0 .../{ => Sinclair}/Spectrum_48K+c0pperdragon.txt | 0 .../{ => Tandy}/U7_Tandy_CoCo3_50Hz_hires.txt | 0 .../{ => Tandy}/U7_Tandy_CoCo3_50Hz_lowres.txt | 0 .../{ => Tandy}/U7_Tandy_CoCo_3_60Hz.txt | 0 .../6-12_BIT_RGB_Analog/{ => _Other}/Analog_CGA.txt | 0 .../6-12_BIT_RGB_Analog/{ => _Other}/Camputers_Lynx.txt | 0 .../Profiles/6-12_BIT_RGB_Analog/{ => _Other}/Custom.txt | 0 .../Profiles/6-12_BIT_RGB_Analog/{ => _Other}/Oric.txt | 0 .../6-12_BIT_RGB_Analog/{ => _Other}/RML_480Z.txt | 0 .../6-12_BIT_RGB_Analog/{ => _Other}/Sharp_MZ-700.txt | 0 .../{ => Apple}/Apple_II-IIe_TTL/Apple_II-IIe_50Hz.txt | 0 .../{ => Apple}/Apple_II-IIe_TTL/Apple_II-IIe_60Hz.txt | 0 .../{Apple_IIc_TTL => Apple/Apple_II-IIe_TTL}/Default.txt | 0 .../{ => Apple}/Apple_IIc_TTL/Apple_IIc_50Hz.txt | 0 .../{ => Apple}/Apple_IIc_TTL/Apple_IIc_60Hz.txt | 0 .../{TRS_80_Model_3 => Apple/Apple_IIc_TTL}/Default.txt | 0 .../6-12_BIT_YUV/{ => Sinclair}/ZX80_TTL/Default.txt | 0 .../6-12_BIT_YUV/{ => Sinclair}/ZX80_TTL/ZX80_50Hz.txt | 0 .../6-12_BIT_YUV/{ => Sinclair}/ZX80_TTL/ZX80_60Hz.txt | 0 .../Tandy/TRS_80_Model_3}/Default.txt | 0 .../TRS_80_Model_3/TRS_80_M3_50Hz_DEHJKLVWBBCC.txt | 0 .../TRS_80_Model_3/TRS_80_M3_60Hz_DEHJKLVWBBCC.txt | 0 .../6-12_BIT_YUV/{ => Tandy}/TRS_80_Model_4/Default.txt | 0 .../{ => Tandy}/TRS_80_Model_4/TRS_80_Model_4_60Hz.txt | 0 src/scripts/Profiles/6-12_BIT_YUV/{ => _Other}/UK_101.txt | 0 .../6-12_BIT_YUV_Analog/{ => Acorn}/Acorn_Atom.txt | 0 .../6-12_BIT_YUV_Analog/{ => Acorn}/Acorn_System_5.txt | 0 .../Profiles/6-12_BIT_YUV_Analog/{ => Apple}/Apple_I.txt | 0 .../{ => Apple}/Apple_II/Apple_II_50Hz.txt | 0 .../{ => Apple}/Apple_II/Apple_II_60Hz.txt | 0 .../{Atari_800 => Apple/Apple_II}/Default.txt | 0 .../6-12_BIT_YUV_Analog/{ => Apple}/Apple_Lisa.txt | 0 .../{ => Atari}/Atari_800/Atari_800_50Hz.txt | 0 .../{ => Atari}/Atari_800/Atari_800_60Hz.txt | 0 .../{C64_LumaCode => Atari/Atari_800}/Default.txt | 0 .../{ => Commodore}/C64_LumaCode/C64LC_50Hz.txt | 0 .../{ => Commodore}/C64_LumaCode/C64LC_60Hz.txt | 0 .../{Commodore_64 => Commodore/C64_LumaCode}/Default.txt | 0 .../{ => Commodore}/Commodore_64/CMD_64_50Hz.txt | 0 .../{ => Commodore}/Commodore_64/CMD_64_60Hz.txt | 0 .../{Nascom_II => Commodore/Commodore_64}/Default.txt | 0 .../{ => Sinclair}/Spectrum_48K/Default.txt | 0 .../{ => Sinclair}/Spectrum_48K/Spectrum_48K_50Hz.txt | 0 .../{ => Sinclair}/Spectrum_48K/Spectrum_48K_60Hz.txt | 0 .../ZX80_Composite}/Default.txt | 0 .../{ => Sinclair}/ZX80_Composite/ZX80_50Hz.txt | 0 .../{ => Sinclair}/ZX80_Composite/ZX80_60Hz.txt | 0 .../ZX81_(ULA)}/Default.txt | 0 .../{ => Sinclair}/ZX81_(ULA)/ZX81_(ULA)_50Hz.txt | 0 .../{ => Sinclair}/ZX81_(ULA)/ZX81_(ULA)_60Hz.txt | 0 .../ZX81_Composite}/Default.txt | 0 .../{ => Sinclair}/ZX81_Composite/ZX81_50Hz.txt | 0 .../{ => Sinclair}/ZX81_Composite/ZX81_60Hz.txt | 0 .../TRS_80_Model_1}/Default.txt | 0 .../{ => Tandy}/TRS_80_Model_1/TRS_80_50Hz.txt | 0 .../{ => Tandy}/TRS_80_Model_1/TRS_80_60Hz.txt | 0 .../TRS_80_Modified_1}/Default.txt | 0 .../{ => Tandy}/TRS_80_Modified_1/TRS_80_Mod_50Hz.txt | 0 .../{ => Tandy}/TRS_80_Modified_1/TRS_80_Mod_60Hz.txt | 0 .../{ZX80_Composite => Tandy/Tandy_CoCo_1-2}/Default.txt | 0 .../{ => Tandy}/Tandy_CoCo_1-2/Tandy_CoCo_1-2_50Hz.txt | 0 .../{ => Tandy}/Tandy_CoCo_1-2/Tandy_CoCo_1-2_60Hz.txt | 0 .../6-12_BIT_YUV_Analog/{ => Tandy}/Tandy_MC10_50Hz.txt | 0 .../6-12_BIT_YUV_Analog/{ => Tandy}/Tandy_MC10_60Hz.txt | 0 .../Profiles/6-12_BIT_YUV_Analog/{ => _Other}/Custom.txt | 0 .../Profiles/6-12_BIT_YUV_Analog/{ => _Other}/Dragon.txt | 0 .../{ => _Other}/Jupiter_ACE_Composite.txt | 0 .../{ZX81_(ULA) => _Other/Nascom_II}/Default.txt | 0 .../{ => _Other}/Nascom_II/Nascom_II_50Hz.txt | 0 .../{ => _Other}/Nascom_II/Nascom_II_60Hz.txt | 0 .../Superboard_II_32x32}/Default.txt | 0 .../Superboard_II_32x32/Superboard_II_50Hz.txt | 0 .../Superboard_II_32x32/Superboard_II_60Hz.txt | 0 .../_Other/Superboard_II_64x32}/Default.txt | 0 .../Superboard_II_64x32/Superboard_II_64_50Hz.txt | 0 .../Superboard_II_64x32/Superboard_II_64_60Hz.txt | 0 .../{ => _Other}/U7_Colecovision_50Hz.txt | 0 .../{ => _Other}/U7_Sega_SC3000_50Hz.txt | 0 .../{ => _Other}/U7_SpectraVideo_328_50Hz.txt | 0 .../6-12_BIT_YUV_Analog/{ => _Other}/U7_TI99-4a_50Hz.txt | 0 .../Profiles/6-12_BIT_YUV_Analog/{ => _Other}/UK_101.txt | 0 src/scripts/Profiles/Atom/{ => Acorn}/Acorn_Atom.txt | 0 src/scripts/Profiles/Default.txt | 2 +- .../Legacy_3_BIT/{ => Acorn}/Acorn_Atom_v10-v20.txt | 0 .../Legacy_3_BIT/{ => Acorn}/Acorn_Atom_v21-v23.txt | 0 .../Legacy_3_BIT/{ => Acorn}/Acorn_Atom_v24-v62.txt | 0 .../Legacy_3_BIT/{ => Acorn}/BBC_Micro_v10-v20.txt | 0 .../Legacy_3_BIT/{ => Acorn}/BBC_Micro_v21-v23.txt | 0 .../Profiles/Legacy_3_BIT/{ => Acorn}/BBC_Micro_v24.txt | 0 .../Legacy_3_BIT/{ => Acorn}/BBC_Micro_v30-v62.txt | 0 .../Legacy_3_BIT/{ => Acorn}/Colour Test/Black.txt | 0 .../Legacy_3_BIT/{ => Acorn}/Colour Test/Blue.txt | 0 .../Legacy_3_BIT/{ => Acorn}/Colour Test/Cyan.txt | 0 .../Legacy_3_BIT/{ => Acorn}/Colour Test/Default.txt | 0 .../Legacy_3_BIT/{ => Acorn}/Colour Test/Green.txt | 0 .../Legacy_3_BIT/{ => Acorn}/Colour Test/Magenta.txt | 0 .../Profiles/Legacy_3_BIT/{ => Acorn}/Colour Test/Red.txt | 0 .../Legacy_3_BIT/{ => Acorn}/Colour Test/White.txt | 0 .../Legacy_3_BIT/{ => Acorn}/Colour Test/Yellow.txt | 0 .../Simple/{ => Atari}/Atari_ST/Atari_ST_50Hz.txt | 0 .../Simple/{ => Atari}/Atari_ST/Atari_ST_60Hz.txt | 0 .../Simple/{ => Atari}/Atari_ST/Atari_ST_Mono.txt | 0 .../Profiles/Simple/{ => Atari}/Atari_ST/Default.txt | 0 .../Simple/{ => Atari}/Atari_STE/Atari_STE_50Hz.txt | 0 .../Simple/{ => Atari}/Atari_STE/Atari_STE_60Hz.txt | 0 .../Simple/{ => Atari}/Atari_STE/Atari_STE_Mono.txt | 0 .../Profiles/Simple/{ => Atari}/Atari_STE/Default.txt | 0 .../Profiles/Simple/{ => Commodore}/Amiga/Amiga_50Hz.txt | 0 .../Simple/{ => Commodore}/Amiga/Amiga_50Hz_NTSC.txt | 0 .../Profiles/Simple/{ => Commodore}/Amiga/Amiga_60Hz.txt | 0 .../Simple/{ => Commodore}/Amiga/Amiga_60Hz_PAL.txt | 0 .../PC-98 => Simple/Commodore/Amiga}/Default.txt | 2 +- .../3-12_BIT_BBC/{ => _Test}/Test_12BPP-Comp.txt | 0 .../3-12_BIT_BBC/{ => _Test}/Test_3BPP-Comp(BBC).txt | 0 .../3-12_BIT_BBC_Analog/{ => _Test}/Test_3LVL_NoTerm.txt | 0 .../3-12_BIT_BBC_Analog/{ => _Test}/Test_3LVL_Term.txt | 0 .../3-12_BIT_BBC_Analog/{ => _Test}/Test_4LVL_Term.txt | 0 .../6-12_BIT_RGB/{ => _Test}/Test_12BPP+H+V.txt | 0 .../6-12_BIT_RGB/{ => _Test}/Test_12BPP-Comp.txt | 0 .../6-12_BIT_RGB/{ => _Test}/Test_3BPP-Comp(BBC).txt | 0 .../6-12_BIT_RGB/{ => _Test}/Test_4BPP-Comp(Spec).txt | 0 .../6-12_BIT_RGB/{ => _Test}/Test_6BPP+H+V(PC).txt | 0 .../6-12_BIT_RGB_Analog/{ => _Test}/Test_3LVL_NoTerm.txt | 0 .../{ => _Test}/Test_3LVL_Term+Clamp.txt | 0 .../6-12_BIT_RGB_Analog/{ => _Test}/Test_3LVL_Term.txt | 0 .../6-12_BIT_RGB_Analog/{ => _Test}/Test_4LVL_Term.txt | 0 .../6-12_BIT_YUV/{ => _Test}/Test_4BPP-Comp(Spec).txt | 0 .../6-12_BIT_YUV/{ => _Test}/Test_6BPP+H+V(PC).txt | 0 .../6-12_BIT_YUV_Analog/{ => _Test}/Test_3LVL_NoTerm.txt | 0 .../{ => _Test}/Test_3LVL_Term+Clamp.txt | 0 .../6-12_BIT_YUV_Analog/{ => _Test}/Test_3LVL_Term.txt | 0 .../6-12_BIT_YUV_Analog/{ => _Test}/Test_4LVL_Term.txt | 0 src/scripts/Test_Profiles/Default.txt | 2 ++ 353 files changed, 24 insertions(+), 16 deletions(-) rename src/scripts/Profiles/3-12_BIT_BBC/{ => Acorn}/Acorn_Atom_TTL.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{ => Acorn}/Acorn_Communicator.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{ => Acorn}/Acorn_Electron.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{ => Acorn}/Acorn_Teletext.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{ => Acorn}/BBC_Master.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{ => Acorn}/BBC_Micro.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{ => Acorn}/BBC_NuLA_12bpp_Mode7.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{ => Acorn}/BBC_NuLA_3bpp_Mode7.txt (80%) rename src/scripts/Profiles/3-12_BIT_BBC/{ => Amstrad}/Amstrad_CPC_PLUS.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{ => Apple}/Apple_IIc_TTL/Apple_IIc_50Hz.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{ => Apple}/Apple_IIc_TTL/Apple_IIc_60Hz.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{Amiga => Apple/Apple_IIc_TTL}/Default.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{ => Apple}/Apple_IIe_TTL/Apple_IIe_50Hz.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{ => Apple}/Apple_IIe_TTL/Apple_IIe_60Hz.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{Apple_IIc_TTL => Apple/Apple_IIe_TTL}/Default.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{ => Commodore}/Amiga/Amiga_50Hz.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{ => Commodore}/Amiga/Amiga_50Hz_NTSC.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{ => Commodore}/Amiga/Amiga_60Hz.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{ => Commodore}/Amiga/Amiga_60Hz_PAL.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{Apple_IIe_TTL => Commodore/Amiga}/Default.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{ => Sinclair}/Sinclair_QL.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{ => Sinclair}/ZX80_TTL/Default.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{ => Sinclair}/ZX80_TTL/ZX80_50Hz.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{ => Sinclair}/ZX80_TTL/ZX80_60Hz.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{ => _Other}/Camputers_Lynx.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{ => _Other}/Colour Test/Black.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{ => _Other}/Colour Test/Blue.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{ => _Other}/Colour Test/Cyan.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{ => _Other}/Colour Test/Default.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{ => _Other}/Colour Test/Green.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{ => _Other}/Colour Test/Magenta.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{ => _Other}/Colour Test/Red.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{ => _Other}/Colour Test/White.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{ => _Other}/Colour Test/Yellow.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{ => _Other}/Custom.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{ => _Other}/Oric.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{ => _Other}/RML_480Z.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{ => _Other}/Sam_Coupe.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{ => _Other}/Sharp_MZ-700.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC_Analog/{ => Acorn}/Acorn_Electron.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC_Analog/{ => Acorn}/Acorn_Teletext.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC_Analog/{ => Acorn}/BBC_Master.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC_Analog/{ => Acorn}/BBC_Micro.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC_Analog/{ => Amstrad}/Amstrad_CPC.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC_Analog/{ => Sinclair}/Harlequin_128K.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC_Analog/{ => Sinclair}/Sinclair_QL.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC_Analog/{ => Sinclair}/Spectrum_+2A_+3_Nuvo.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC_Analog/{ => Sinclair}/Spectrum_128_+2(Grey).txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC_Analog/{ => Sinclair}/Spectrum_48K+c0pperdragon.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC_Analog/{ => _Other}/Analog_CGA.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC_Analog/{ => _Other}/Camputers_Lynx.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC_Analog/{ => _Other}/Custom.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC_Analog/{ => _Other}/Oric.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC_Analog/{ => _Other}/RML_480Z.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC_Analog/{ => _Other}/Sharp_MZ-700.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Acorn}/Acorn_Atom_TTL.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Acorn}/Acorn_Electron.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Amstrad}/Amstrad_CPC_PLUS.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Apple}/Apple_II-IIe_TTL/Apple_II-IIe_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Apple}/Apple_II-IIe_TTL/Apple_II-IIe_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{Amiga => Apple/Apple_II-IIe_TTL}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Apple}/Apple_IIGS/Apple_IIGS_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Apple}/Apple_IIGS/Apple_IIGS_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Apple}/Apple_IIGS/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Apple}/Apple_IIc_TTL/Apple_IIc_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Apple}/Apple_IIc_TTL/Apple_IIc_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{Amiga_2000 => Apple/Apple_IIc_TTL}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Apple}/Apple_Lisa_TTL.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Apple}/Mac_Classic.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Atari}/Atari_ST/Atari_ST_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Atari}/Atari_ST/Atari_ST_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Atari}/Atari_ST/Atari_ST_Mono.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{Apple_II-IIe_TTL => Atari/Atari_ST}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Atari}/Atari_STE/Atari_STE_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Atari}/Atari_STE/Atari_STE_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Atari}/Atari_STE/Atari_STE_Mono.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{Apple_IIc_TTL => Atari/Atari_STE}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Commodore}/Amiga/Amiga_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Commodore}/Amiga/Amiga_50Hz_NTSC.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Commodore}/Amiga/Amiga_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Commodore}/Amiga/Amiga_60Hz_PAL.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{Atari_ST => Commodore/Amiga}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Commodore}/Amiga_2000/Amiga_2000_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Commodore}/Amiga_2000/Amiga_2000_50Hz_NTSC.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Commodore}/Amiga_2000/Amiga_2000_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Commodore}/Amiga_2000/Amiga_2000_60Hz_PAL.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{Atari_STE => Commodore/Amiga_2000}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Commodore}/Commodore_128-80/Cmd_128_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Commodore}/Commodore_128-80/Cmd_128_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Commodore}/Commodore_128-80/Cmd_128_60Hz_Alt.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Commodore}/Commodore_128-80/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Commodore}/Commodore_128-80/Text-NTSC_264.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Commodore}/Commodore_128-80/Text-PAL_320.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Commodore}/Commodore_128-80/VDC-FLI_295.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Commodore}/Commodore_128-80/VDC-HFLI_426.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Commodore}/Commodore_128-80/VDC-IHFLI_266.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Commodore}/Commodore_128-80/VDC-IM800_651i.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Commodore}/Commodore_128-80/VDC-IMONO_749i.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Commodore}/Commodore_128-80/VDC-IMONO_749i_V1.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Commodore}/Commodore_128-80/VDC-ITFLI_315.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Commodore}/Commodore_PET/40-Col-CRTC-Business.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Commodore}/Commodore_PET/40-Col-CRTC-Graphic.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Commodore}/Commodore_PET/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{Intellivision => PC/PC-98}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC-98/PC-98_200_lines.txt (98%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC-98/PC-98_400_lines.txt (97%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_CGA_(IBM_New).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_CGA_(IBM_Old).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_EGA/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_EGA/EGA_(Mode1).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_EGA/EGA_(Mode2-40).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_EGA/EGA_(Mode2-80).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_EGA_Wonder_800+/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_EGA_Wonder_800+/EGA_Mode1.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_EGA_Wonder_800+/EGA_Mode2.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_ET3000AX/CGA.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_ET3000AX/CGA2.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_ET3000AX/CGA_on_VGA.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_ET3000AX/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_ET3000AX/EGA.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_ET3000AX/EGA_on_VGA_25.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_ET3000AX/EGA_on_VGA_28.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_ET3000AX/VGA_Graphics.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_ET3000AX/VGA_Text.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_HEGA_AUTO/CGA.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_HEGA_AUTO/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_HEGA_AUTO/EGA_200.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_HEGA_AUTO/EGA_350.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(640x400 alt).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(640x400).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(720x274).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(alt).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(alt10).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(alt11).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(alt12).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(alt13).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(alt14).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(alt15).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(alt16).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(alt2).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(alt3).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(alt4).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(alt5).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(alt6).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(alt7).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(alt8).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_HEGA_AUTO/Hercules_Gfx(alt9).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_HEGA_AUTO/Hercules_Gfx.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_HEGA_AUTO/Hercules_Txt.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_Hercules/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_Hercules/Hercules_Gfx.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_Hercules/Hercules_Txt.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_MDA.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_NEC_MDA/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_NEC_MDA/NEC_Gfx.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_NEC_MDA/NEC_Txt.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_OTIVGA/CGA_40.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_OTIVGA/CGA_80.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_OTIVGA/CGA_on_VGA.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_OTIVGA/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_OTIVGA/EGA_(Mode2-40).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_OTIVGA/EGA_(Mode2-80).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_OTIVGA/EGA_Alt.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_OTIVGA/EGA_on_VGA_25.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_OTIVGA/EGA_on_VGA_28.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_OTIVGA/MDA.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_OTIVGA/VGA_Graphics.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_OTIVGA/VGA_Text.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_VIDEO7_MDA/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_VIDEO7_MDA/VIdeo7_Gfx.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => PC}/PC_VIDEO7_MDA/Video7_Txt.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Sinclair}/Sinclair_QL.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Sinclair}/Spectrum_128_+2(Grey).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{TRS_80_Model_3 => Sinclair/ZX80_TTL}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Sinclair}/ZX80_TTL/ZX80_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Sinclair}/ZX80_TTL/ZX80_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ZX80_TTL => Tandy/TRS_80_Model_3}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Tandy}/TRS_80_Model_3/TRS_80_M3_50Hz_DEHJKLVWBBCC.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Tandy}/TRS_80_Model_3/TRS_80_M3_60Hz_DEHJKLVWBBCC.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Tandy}/TRS_80_Model_4/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Tandy}/TRS_80_Model_4/TRS_80_Model_4_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Tandy}/Tandy_1000_200_lines.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => Tandy}/Tandy_1000_225_lines.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => _Other}/ABC80.txt (97%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => _Other}/Aquarius.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => _Other}/Camputers_Lynx.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => _Other}/Colour Test/Black.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => _Other}/Colour Test/Blue.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => _Other}/Colour Test/Cyan.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => _Other}/Colour Test/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => _Other}/Colour Test/Green.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => _Other}/Colour Test/Magenta.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => _Other}/Colour Test/Red.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => _Other}/Colour Test/White.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => _Other}/Colour Test/Yellow.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => _Other}/Colour_Genie.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => _Other}/Custom.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => _Other}/Enterprise.txt (100%) rename src/scripts/Profiles/{6-12_BIT_YUV/Apple_II-IIe_TTL => 6-12_BIT_RGB/_Other/Intellivision}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => _Other}/Intellivision/Intellivision_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => _Other}/Intellivision/Intellivision_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => _Other}/Laser_128.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => _Other}/Olivetti Prodest-PC1.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => _Other}/Oric.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => _Other}/RML_480Z.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => _Other}/Sam_Coupe.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => _Other}/Sharp_MZ-700.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => _Other}/Tektronix_571.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{ => _Other}/Videopac_C52.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB_Analog/{ => Acorn}/Acorn_Electron.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB_Analog/{ => Amstrad}/Amstrad_CPC.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB_Analog/{ => Sinclair}/Harlequin_128K.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB_Analog/{ => Sinclair}/Sinclair_QL.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB_Analog/{ => Sinclair}/Spectrum_+2A_+3_Nuvo.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB_Analog/{ => Sinclair}/Spectrum_128_+2(Grey).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB_Analog/{ => Sinclair}/Spectrum_48K+c0pperdragon.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB_Analog/{ => Tandy}/U7_Tandy_CoCo3_50Hz_hires.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB_Analog/{ => Tandy}/U7_Tandy_CoCo3_50Hz_lowres.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB_Analog/{ => Tandy}/U7_Tandy_CoCo_3_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB_Analog/{ => _Other}/Analog_CGA.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB_Analog/{ => _Other}/Camputers_Lynx.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB_Analog/{ => _Other}/Custom.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB_Analog/{ => _Other}/Oric.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB_Analog/{ => _Other}/RML_480Z.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB_Analog/{ => _Other}/Sharp_MZ-700.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV/{ => Apple}/Apple_II-IIe_TTL/Apple_II-IIe_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV/{ => Apple}/Apple_II-IIe_TTL/Apple_II-IIe_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV/{Apple_IIc_TTL => Apple/Apple_II-IIe_TTL}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV/{ => Apple}/Apple_IIc_TTL/Apple_IIc_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV/{ => Apple}/Apple_IIc_TTL/Apple_IIc_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV/{TRS_80_Model_3 => Apple/Apple_IIc_TTL}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV/{ => Sinclair}/ZX80_TTL/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV/{ => Sinclair}/ZX80_TTL/ZX80_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV/{ => Sinclair}/ZX80_TTL/ZX80_60Hz.txt (100%) rename src/scripts/Profiles/{6-12_BIT_YUV_Analog/Apple_II => 6-12_BIT_YUV/Tandy/TRS_80_Model_3}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV/{ => Tandy}/TRS_80_Model_3/TRS_80_M3_50Hz_DEHJKLVWBBCC.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV/{ => Tandy}/TRS_80_Model_3/TRS_80_M3_60Hz_DEHJKLVWBBCC.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV/{ => Tandy}/TRS_80_Model_4/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV/{ => Tandy}/TRS_80_Model_4/TRS_80_Model_4_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV/{ => _Other}/UK_101.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => Acorn}/Acorn_Atom.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => Acorn}/Acorn_System_5.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => Apple}/Apple_I.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => Apple}/Apple_II/Apple_II_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => Apple}/Apple_II/Apple_II_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Atari_800 => Apple/Apple_II}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => Apple}/Apple_Lisa.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => Atari}/Atari_800/Atari_800_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => Atari}/Atari_800/Atari_800_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{C64_LumaCode => Atari/Atari_800}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => Commodore}/C64_LumaCode/C64LC_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => Commodore}/C64_LumaCode/C64LC_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Commodore_64 => Commodore/C64_LumaCode}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => Commodore}/Commodore_64/CMD_64_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => Commodore}/Commodore_64/CMD_64_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Nascom_II => Commodore/Commodore_64}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => Sinclair}/Spectrum_48K/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => Sinclair}/Spectrum_48K/Spectrum_48K_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => Sinclair}/Spectrum_48K/Spectrum_48K_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Superboard_II_32x32 => Sinclair/ZX80_Composite}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => Sinclair}/ZX80_Composite/ZX80_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => Sinclair}/ZX80_Composite/ZX80_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Superboard_II_64x32 => Sinclair/ZX81_(ULA)}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => Sinclair}/ZX81_(ULA)/ZX81_(ULA)_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => Sinclair}/ZX81_(ULA)/ZX81_(ULA)_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{TRS_80_Model_1 => Sinclair/ZX81_Composite}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => Sinclair}/ZX81_Composite/ZX81_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => Sinclair}/ZX81_Composite/ZX81_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{TRS_80_Modified_1 => Tandy/TRS_80_Model_1}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => Tandy}/TRS_80_Model_1/TRS_80_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => Tandy}/TRS_80_Model_1/TRS_80_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Tandy_CoCo_1-2 => Tandy/TRS_80_Modified_1}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => Tandy}/TRS_80_Modified_1/TRS_80_Mod_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => Tandy}/TRS_80_Modified_1/TRS_80_Mod_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ZX80_Composite => Tandy/Tandy_CoCo_1-2}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => Tandy}/Tandy_CoCo_1-2/Tandy_CoCo_1-2_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => Tandy}/Tandy_CoCo_1-2/Tandy_CoCo_1-2_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => Tandy}/Tandy_MC10_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => Tandy}/Tandy_MC10_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => _Other}/Custom.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => _Other}/Dragon.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => _Other}/Jupiter_ACE_Composite.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ZX81_(ULA) => _Other/Nascom_II}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => _Other}/Nascom_II/Nascom_II_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => _Other}/Nascom_II/Nascom_II_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ZX81_Composite => _Other/Superboard_II_32x32}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => _Other}/Superboard_II_32x32/Superboard_II_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => _Other}/Superboard_II_32x32/Superboard_II_60Hz.txt (100%) rename src/scripts/Profiles/{Simple/Amiga => 6-12_BIT_YUV_Analog/_Other/Superboard_II_64x32}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => _Other}/Superboard_II_64x32/Superboard_II_64_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => _Other}/Superboard_II_64x32/Superboard_II_64_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => _Other}/U7_Colecovision_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => _Other}/U7_Sega_SC3000_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => _Other}/U7_SpectraVideo_328_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => _Other}/U7_TI99-4a_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{ => _Other}/UK_101.txt (100%) rename src/scripts/Profiles/Atom/{ => Acorn}/Acorn_Atom.txt (100%) rename src/scripts/Profiles/Legacy_3_BIT/{ => Acorn}/Acorn_Atom_v10-v20.txt (100%) rename src/scripts/Profiles/Legacy_3_BIT/{ => Acorn}/Acorn_Atom_v21-v23.txt (100%) rename src/scripts/Profiles/Legacy_3_BIT/{ => Acorn}/Acorn_Atom_v24-v62.txt (100%) rename src/scripts/Profiles/Legacy_3_BIT/{ => Acorn}/BBC_Micro_v10-v20.txt (100%) rename src/scripts/Profiles/Legacy_3_BIT/{ => Acorn}/BBC_Micro_v21-v23.txt (100%) rename src/scripts/Profiles/Legacy_3_BIT/{ => Acorn}/BBC_Micro_v24.txt (100%) rename src/scripts/Profiles/Legacy_3_BIT/{ => Acorn}/BBC_Micro_v30-v62.txt (100%) rename src/scripts/Profiles/Legacy_3_BIT/{ => Acorn}/Colour Test/Black.txt (100%) rename src/scripts/Profiles/Legacy_3_BIT/{ => Acorn}/Colour Test/Blue.txt (100%) rename src/scripts/Profiles/Legacy_3_BIT/{ => Acorn}/Colour Test/Cyan.txt (100%) rename src/scripts/Profiles/Legacy_3_BIT/{ => Acorn}/Colour Test/Default.txt (100%) rename src/scripts/Profiles/Legacy_3_BIT/{ => Acorn}/Colour Test/Green.txt (100%) rename src/scripts/Profiles/Legacy_3_BIT/{ => Acorn}/Colour Test/Magenta.txt (100%) rename src/scripts/Profiles/Legacy_3_BIT/{ => Acorn}/Colour Test/Red.txt (100%) rename src/scripts/Profiles/Legacy_3_BIT/{ => Acorn}/Colour Test/White.txt (100%) rename src/scripts/Profiles/Legacy_3_BIT/{ => Acorn}/Colour Test/Yellow.txt (100%) rename src/scripts/Profiles/Simple/{ => Atari}/Atari_ST/Atari_ST_50Hz.txt (100%) rename src/scripts/Profiles/Simple/{ => Atari}/Atari_ST/Atari_ST_60Hz.txt (100%) rename src/scripts/Profiles/Simple/{ => Atari}/Atari_ST/Atari_ST_Mono.txt (100%) rename src/scripts/Profiles/Simple/{ => Atari}/Atari_ST/Default.txt (100%) rename src/scripts/Profiles/Simple/{ => Atari}/Atari_STE/Atari_STE_50Hz.txt (100%) rename src/scripts/Profiles/Simple/{ => Atari}/Atari_STE/Atari_STE_60Hz.txt (100%) rename src/scripts/Profiles/Simple/{ => Atari}/Atari_STE/Atari_STE_Mono.txt (100%) rename src/scripts/Profiles/Simple/{ => Atari}/Atari_STE/Default.txt (100%) rename src/scripts/Profiles/Simple/{ => Commodore}/Amiga/Amiga_50Hz.txt (100%) rename src/scripts/Profiles/Simple/{ => Commodore}/Amiga/Amiga_50Hz_NTSC.txt (100%) rename src/scripts/Profiles/Simple/{ => Commodore}/Amiga/Amiga_60Hz.txt (100%) rename src/scripts/Profiles/Simple/{ => Commodore}/Amiga/Amiga_60Hz_PAL.txt (100%) rename src/scripts/Profiles/{6-12_BIT_RGB/PC-98 => Simple/Commodore/Amiga}/Default.txt (93%) rename src/scripts/Test_Profiles/3-12_BIT_BBC/{ => _Test}/Test_12BPP-Comp.txt (100%) rename src/scripts/Test_Profiles/3-12_BIT_BBC/{ => _Test}/Test_3BPP-Comp(BBC).txt (100%) rename src/scripts/Test_Profiles/3-12_BIT_BBC_Analog/{ => _Test}/Test_3LVL_NoTerm.txt (100%) rename src/scripts/Test_Profiles/3-12_BIT_BBC_Analog/{ => _Test}/Test_3LVL_Term.txt (100%) rename src/scripts/Test_Profiles/3-12_BIT_BBC_Analog/{ => _Test}/Test_4LVL_Term.txt (100%) rename src/scripts/Test_Profiles/6-12_BIT_RGB/{ => _Test}/Test_12BPP+H+V.txt (100%) rename src/scripts/Test_Profiles/6-12_BIT_RGB/{ => _Test}/Test_12BPP-Comp.txt (100%) rename src/scripts/Test_Profiles/6-12_BIT_RGB/{ => _Test}/Test_3BPP-Comp(BBC).txt (100%) rename src/scripts/Test_Profiles/6-12_BIT_RGB/{ => _Test}/Test_4BPP-Comp(Spec).txt (100%) rename src/scripts/Test_Profiles/6-12_BIT_RGB/{ => _Test}/Test_6BPP+H+V(PC).txt (100%) rename src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/{ => _Test}/Test_3LVL_NoTerm.txt (100%) rename src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/{ => _Test}/Test_3LVL_Term+Clamp.txt (100%) rename src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/{ => _Test}/Test_3LVL_Term.txt (100%) rename src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/{ => _Test}/Test_4LVL_Term.txt (100%) rename src/scripts/Test_Profiles/6-12_BIT_YUV/{ => _Test}/Test_4BPP-Comp(Spec).txt (100%) rename src/scripts/Test_Profiles/6-12_BIT_YUV/{ => _Test}/Test_6BPP+H+V(PC).txt (100%) rename src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/{ => _Test}/Test_3LVL_NoTerm.txt (100%) rename src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/{ => _Test}/Test_3LVL_Term+Clamp.txt (100%) rename src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/{ => _Test}/Test_3LVL_Term.txt (100%) rename src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/{ => _Test}/Test_4LVL_Term.txt (100%) diff --git a/src/scripts/Amiga_CPLD_Readme/Amiga_2000_CPLD_Setup/Profiles/Default.txt b/src/scripts/Amiga_CPLD_Readme/Amiga_2000_CPLD_Setup/Profiles/Default.txt index 6cca1f98..18dac68e 100644 --- a/src/scripts/Amiga_CPLD_Readme/Amiga_2000_CPLD_Setup/Profiles/Default.txt +++ b/src/scripts/Amiga_CPLD_Readme/Amiga_2000_CPLD_Setup/Profiles/Default.txt @@ -8,6 +8,7 @@ palette=RGB palette_control=0 ntsc_colour=0 ntsc_phase=0 +ntsc_type=0 ntsc_quality=0 tint=0 saturation=100 @@ -24,6 +25,8 @@ output_colour=0 output_invert=0 scanlines=0 scanline_level=6 +yuv_pixel_double=0 +integer_aspect=0 powerup_message=1 crop_border=0 screencap_size=0 diff --git a/src/scripts/Amiga_CPLD_Readme/Amiga_2000_CPLD_Setup/profile_6-12_BIT_RGB.txt b/src/scripts/Amiga_CPLD_Readme/Amiga_2000_CPLD_Setup/profile_6-12_BIT_RGB.txt index b811aad1..dd5d95b4 100644 --- a/src/scripts/Amiga_CPLD_Readme/Amiga_2000_CPLD_Setup/profile_6-12_BIT_RGB.txt +++ b/src/scripts/Amiga_CPLD_Readme/Amiga_2000_CPLD_Setup/profile_6-12_BIT_RGB.txt @@ -1,2 +1,2 @@ -profile=Amiga_2000 +profile=Commodore/Amiga_2000 saved_profile=0 diff --git a/src/scripts/Amiga_CPLD_Readme/Amiga_CPLD_Setup/Profiles/Default.txt b/src/scripts/Amiga_CPLD_Readme/Amiga_CPLD_Setup/Profiles/Default.txt index 6cca1f98..18dac68e 100644 --- a/src/scripts/Amiga_CPLD_Readme/Amiga_CPLD_Setup/Profiles/Default.txt +++ b/src/scripts/Amiga_CPLD_Readme/Amiga_CPLD_Setup/Profiles/Default.txt @@ -8,6 +8,7 @@ palette=RGB palette_control=0 ntsc_colour=0 ntsc_phase=0 +ntsc_type=0 ntsc_quality=0 tint=0 saturation=100 @@ -24,6 +25,8 @@ output_colour=0 output_invert=0 scanlines=0 scanline_level=6 +yuv_pixel_double=0 +integer_aspect=0 powerup_message=1 crop_border=0 screencap_size=0 diff --git a/src/scripts/Amiga_CPLD_Readme/Amiga_CPLD_Setup/profile_3-12_BIT_BBC.txt b/src/scripts/Amiga_CPLD_Readme/Amiga_CPLD_Setup/profile_3-12_BIT_BBC.txt index 81cc937e..a8a867e3 100644 --- a/src/scripts/Amiga_CPLD_Readme/Amiga_CPLD_Setup/profile_3-12_BIT_BBC.txt +++ b/src/scripts/Amiga_CPLD_Readme/Amiga_CPLD_Setup/profile_3-12_BIT_BBC.txt @@ -1,2 +1,2 @@ -profile=Amiga +profile=Commodore/Amiga saved_profile=0 diff --git a/src/scripts/Amiga_CPLD_Readme/Amiga_CPLD_Setup/profile_6-12_BIT_RGB.txt b/src/scripts/Amiga_CPLD_Readme/Amiga_CPLD_Setup/profile_6-12_BIT_RGB.txt index 81cc937e..a8a867e3 100644 --- a/src/scripts/Amiga_CPLD_Readme/Amiga_CPLD_Setup/profile_6-12_BIT_RGB.txt +++ b/src/scripts/Amiga_CPLD_Readme/Amiga_CPLD_Setup/profile_6-12_BIT_RGB.txt @@ -1,2 +1,2 @@ -profile=Amiga +profile=Commodore/Amiga saved_profile=0 diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Acorn_Atom_TTL.txt b/src/scripts/Profiles/3-12_BIT_BBC/Acorn/Acorn_Atom_TTL.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Acorn_Atom_TTL.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Acorn/Acorn_Atom_TTL.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Acorn_Communicator.txt b/src/scripts/Profiles/3-12_BIT_BBC/Acorn/Acorn_Communicator.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Acorn_Communicator.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Acorn/Acorn_Communicator.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Acorn_Electron.txt b/src/scripts/Profiles/3-12_BIT_BBC/Acorn/Acorn_Electron.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Acorn_Electron.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Acorn/Acorn_Electron.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Acorn_Teletext.txt b/src/scripts/Profiles/3-12_BIT_BBC/Acorn/Acorn_Teletext.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Acorn_Teletext.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Acorn/Acorn_Teletext.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/BBC_Master.txt b/src/scripts/Profiles/3-12_BIT_BBC/Acorn/BBC_Master.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/BBC_Master.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Acorn/BBC_Master.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/BBC_Micro.txt b/src/scripts/Profiles/3-12_BIT_BBC/Acorn/BBC_Micro.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/BBC_Micro.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Acorn/BBC_Micro.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/BBC_NuLA_12bpp_Mode7.txt b/src/scripts/Profiles/3-12_BIT_BBC/Acorn/BBC_NuLA_12bpp_Mode7.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/BBC_NuLA_12bpp_Mode7.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Acorn/BBC_NuLA_12bpp_Mode7.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/BBC_NuLA_3bpp_Mode7.txt b/src/scripts/Profiles/3-12_BIT_BBC/Acorn/BBC_NuLA_3bpp_Mode7.txt similarity index 80% rename from src/scripts/Profiles/3-12_BIT_BBC/BBC_NuLA_3bpp_Mode7.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Acorn/BBC_NuLA_3bpp_Mode7.txt index d583d18b..c4478dd9 100644 --- a/src/scripts/Profiles/3-12_BIT_BBC/BBC_NuLA_3bpp_Mode7.txt +++ b/src/scripts/Profiles/3-12_BIT_BBC/Acorn/BBC_NuLA_3bpp_Mode7.txt @@ -1,4 +1,4 @@ -sampling2=3,3,3,3,3,3,3,0,3,0,3,0,0,0,0,0,0,0,0,0,120,256,120,256,120,256,256,256 +sampling2=2,2,2,2,2,2,2,0,3,0,4,0,0,0,0,0,0,0,0,0,120,256,120,256,120,256,256,256 geometry2=152,26,480,256,576,288,3,4,1,0,12000000,768,5000,312,4,0,2 sampling=4,4,4,4,4,4,4,0,1,0,6,0,0,0,0,0,0,5,0,0,120,256,120,256,120,256,256,256 geometry=180,29,640,256,720,270,1,2,1,2,16000000,1024,5000,312,4,0,0 diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Amstrad_CPC_PLUS.txt b/src/scripts/Profiles/3-12_BIT_BBC/Amstrad/Amstrad_CPC_PLUS.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Amstrad_CPC_PLUS.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Amstrad/Amstrad_CPC_PLUS.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Apple_IIc_TTL/Apple_IIc_50Hz.txt b/src/scripts/Profiles/3-12_BIT_BBC/Apple/Apple_IIc_TTL/Apple_IIc_50Hz.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Apple_IIc_TTL/Apple_IIc_50Hz.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Apple/Apple_IIc_TTL/Apple_IIc_50Hz.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Apple_IIc_TTL/Apple_IIc_60Hz.txt b/src/scripts/Profiles/3-12_BIT_BBC/Apple/Apple_IIc_TTL/Apple_IIc_60Hz.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Apple_IIc_TTL/Apple_IIc_60Hz.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Apple/Apple_IIc_TTL/Apple_IIc_60Hz.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Amiga/Default.txt b/src/scripts/Profiles/3-12_BIT_BBC/Apple/Apple_IIc_TTL/Default.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Amiga/Default.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Apple/Apple_IIc_TTL/Default.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Apple_IIe_TTL/Apple_IIe_50Hz.txt b/src/scripts/Profiles/3-12_BIT_BBC/Apple/Apple_IIe_TTL/Apple_IIe_50Hz.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Apple_IIe_TTL/Apple_IIe_50Hz.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Apple/Apple_IIe_TTL/Apple_IIe_50Hz.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Apple_IIe_TTL/Apple_IIe_60Hz.txt b/src/scripts/Profiles/3-12_BIT_BBC/Apple/Apple_IIe_TTL/Apple_IIe_60Hz.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Apple_IIe_TTL/Apple_IIe_60Hz.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Apple/Apple_IIe_TTL/Apple_IIe_60Hz.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Apple_IIc_TTL/Default.txt b/src/scripts/Profiles/3-12_BIT_BBC/Apple/Apple_IIe_TTL/Default.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Apple_IIc_TTL/Default.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Apple/Apple_IIe_TTL/Default.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Amiga/Amiga_50Hz.txt b/src/scripts/Profiles/3-12_BIT_BBC/Commodore/Amiga/Amiga_50Hz.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Amiga/Amiga_50Hz.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Commodore/Amiga/Amiga_50Hz.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Amiga/Amiga_50Hz_NTSC.txt b/src/scripts/Profiles/3-12_BIT_BBC/Commodore/Amiga/Amiga_50Hz_NTSC.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Amiga/Amiga_50Hz_NTSC.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Commodore/Amiga/Amiga_50Hz_NTSC.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Amiga/Amiga_60Hz.txt b/src/scripts/Profiles/3-12_BIT_BBC/Commodore/Amiga/Amiga_60Hz.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Amiga/Amiga_60Hz.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Commodore/Amiga/Amiga_60Hz.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Amiga/Amiga_60Hz_PAL.txt b/src/scripts/Profiles/3-12_BIT_BBC/Commodore/Amiga/Amiga_60Hz_PAL.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Amiga/Amiga_60Hz_PAL.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Commodore/Amiga/Amiga_60Hz_PAL.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Apple_IIe_TTL/Default.txt b/src/scripts/Profiles/3-12_BIT_BBC/Commodore/Amiga/Default.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Apple_IIe_TTL/Default.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Commodore/Amiga/Default.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Sinclair_QL.txt b/src/scripts/Profiles/3-12_BIT_BBC/Sinclair/Sinclair_QL.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Sinclair_QL.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Sinclair/Sinclair_QL.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/ZX80_TTL/Default.txt b/src/scripts/Profiles/3-12_BIT_BBC/Sinclair/ZX80_TTL/Default.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/ZX80_TTL/Default.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Sinclair/ZX80_TTL/Default.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/ZX80_TTL/ZX80_50Hz.txt b/src/scripts/Profiles/3-12_BIT_BBC/Sinclair/ZX80_TTL/ZX80_50Hz.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/ZX80_TTL/ZX80_50Hz.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Sinclair/ZX80_TTL/ZX80_50Hz.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/ZX80_TTL/ZX80_60Hz.txt b/src/scripts/Profiles/3-12_BIT_BBC/Sinclair/ZX80_TTL/ZX80_60Hz.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/ZX80_TTL/ZX80_60Hz.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Sinclair/ZX80_TTL/ZX80_60Hz.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Camputers_Lynx.txt b/src/scripts/Profiles/3-12_BIT_BBC/_Other/Camputers_Lynx.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Camputers_Lynx.txt rename to src/scripts/Profiles/3-12_BIT_BBC/_Other/Camputers_Lynx.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Colour Test/Black.txt b/src/scripts/Profiles/3-12_BIT_BBC/_Other/Colour Test/Black.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Colour Test/Black.txt rename to src/scripts/Profiles/3-12_BIT_BBC/_Other/Colour Test/Black.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Colour Test/Blue.txt b/src/scripts/Profiles/3-12_BIT_BBC/_Other/Colour Test/Blue.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Colour Test/Blue.txt rename to src/scripts/Profiles/3-12_BIT_BBC/_Other/Colour Test/Blue.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Colour Test/Cyan.txt b/src/scripts/Profiles/3-12_BIT_BBC/_Other/Colour Test/Cyan.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Colour Test/Cyan.txt rename to src/scripts/Profiles/3-12_BIT_BBC/_Other/Colour Test/Cyan.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Colour Test/Default.txt b/src/scripts/Profiles/3-12_BIT_BBC/_Other/Colour Test/Default.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Colour Test/Default.txt rename to src/scripts/Profiles/3-12_BIT_BBC/_Other/Colour Test/Default.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Colour Test/Green.txt b/src/scripts/Profiles/3-12_BIT_BBC/_Other/Colour Test/Green.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Colour Test/Green.txt rename to src/scripts/Profiles/3-12_BIT_BBC/_Other/Colour Test/Green.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Colour Test/Magenta.txt b/src/scripts/Profiles/3-12_BIT_BBC/_Other/Colour Test/Magenta.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Colour Test/Magenta.txt rename to src/scripts/Profiles/3-12_BIT_BBC/_Other/Colour Test/Magenta.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Colour Test/Red.txt b/src/scripts/Profiles/3-12_BIT_BBC/_Other/Colour Test/Red.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Colour Test/Red.txt rename to src/scripts/Profiles/3-12_BIT_BBC/_Other/Colour Test/Red.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Colour Test/White.txt b/src/scripts/Profiles/3-12_BIT_BBC/_Other/Colour Test/White.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Colour Test/White.txt rename to src/scripts/Profiles/3-12_BIT_BBC/_Other/Colour Test/White.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Colour Test/Yellow.txt b/src/scripts/Profiles/3-12_BIT_BBC/_Other/Colour Test/Yellow.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Colour Test/Yellow.txt rename to src/scripts/Profiles/3-12_BIT_BBC/_Other/Colour Test/Yellow.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Custom.txt b/src/scripts/Profiles/3-12_BIT_BBC/_Other/Custom.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Custom.txt rename to src/scripts/Profiles/3-12_BIT_BBC/_Other/Custom.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Oric.txt b/src/scripts/Profiles/3-12_BIT_BBC/_Other/Oric.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Oric.txt rename to src/scripts/Profiles/3-12_BIT_BBC/_Other/Oric.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/RML_480Z.txt b/src/scripts/Profiles/3-12_BIT_BBC/_Other/RML_480Z.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/RML_480Z.txt rename to src/scripts/Profiles/3-12_BIT_BBC/_Other/RML_480Z.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Sam_Coupe.txt b/src/scripts/Profiles/3-12_BIT_BBC/_Other/Sam_Coupe.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Sam_Coupe.txt rename to src/scripts/Profiles/3-12_BIT_BBC/_Other/Sam_Coupe.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Sharp_MZ-700.txt b/src/scripts/Profiles/3-12_BIT_BBC/_Other/Sharp_MZ-700.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Sharp_MZ-700.txt rename to src/scripts/Profiles/3-12_BIT_BBC/_Other/Sharp_MZ-700.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/Acorn_Electron.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/Acorn/Acorn_Electron.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC_Analog/Acorn_Electron.txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/Acorn/Acorn_Electron.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/Acorn_Teletext.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/Acorn/Acorn_Teletext.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC_Analog/Acorn_Teletext.txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/Acorn/Acorn_Teletext.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/BBC_Master.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/Acorn/BBC_Master.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC_Analog/BBC_Master.txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/Acorn/BBC_Master.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/BBC_Micro.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/Acorn/BBC_Micro.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC_Analog/BBC_Micro.txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/Acorn/BBC_Micro.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/Amstrad_CPC.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/Amstrad/Amstrad_CPC.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC_Analog/Amstrad_CPC.txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/Amstrad/Amstrad_CPC.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/Harlequin_128K.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Harlequin_128K.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC_Analog/Harlequin_128K.txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Harlequin_128K.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair_QL.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Sinclair_QL.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair_QL.txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Sinclair_QL.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/Spectrum_+2A_+3_Nuvo.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Spectrum_+2A_+3_Nuvo.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC_Analog/Spectrum_+2A_+3_Nuvo.txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Spectrum_+2A_+3_Nuvo.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/Spectrum_128_+2(Grey).txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Spectrum_128_+2(Grey).txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC_Analog/Spectrum_128_+2(Grey).txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Spectrum_128_+2(Grey).txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/Spectrum_48K+c0pperdragon.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Spectrum_48K+c0pperdragon.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC_Analog/Spectrum_48K+c0pperdragon.txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Spectrum_48K+c0pperdragon.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/Analog_CGA.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/_Other/Analog_CGA.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC_Analog/Analog_CGA.txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/_Other/Analog_CGA.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/Camputers_Lynx.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/_Other/Camputers_Lynx.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC_Analog/Camputers_Lynx.txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/_Other/Camputers_Lynx.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/Custom.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/_Other/Custom.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC_Analog/Custom.txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/_Other/Custom.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/Oric.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/_Other/Oric.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC_Analog/Oric.txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/_Other/Oric.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/RML_480Z.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/_Other/RML_480Z.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC_Analog/RML_480Z.txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/_Other/RML_480Z.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sharp_MZ-700.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/_Other/Sharp_MZ-700.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC_Analog/Sharp_MZ-700.txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/_Other/Sharp_MZ-700.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Acorn_Atom_TTL.txt b/src/scripts/Profiles/6-12_BIT_RGB/Acorn/Acorn_Atom_TTL.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Acorn_Atom_TTL.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Acorn/Acorn_Atom_TTL.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Acorn_Electron.txt b/src/scripts/Profiles/6-12_BIT_RGB/Acorn/Acorn_Electron.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Acorn_Electron.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Acorn/Acorn_Electron.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Amstrad_CPC_PLUS.txt b/src/scripts/Profiles/6-12_BIT_RGB/Amstrad/Amstrad_CPC_PLUS.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Amstrad_CPC_PLUS.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Amstrad/Amstrad_CPC_PLUS.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Apple_II-IIe_TTL/Apple_II-IIe_50Hz.txt b/src/scripts/Profiles/6-12_BIT_RGB/Apple/Apple_II-IIe_TTL/Apple_II-IIe_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Apple_II-IIe_TTL/Apple_II-IIe_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Apple/Apple_II-IIe_TTL/Apple_II-IIe_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Apple_II-IIe_TTL/Apple_II-IIe_60Hz.txt b/src/scripts/Profiles/6-12_BIT_RGB/Apple/Apple_II-IIe_TTL/Apple_II-IIe_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Apple_II-IIe_TTL/Apple_II-IIe_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Apple/Apple_II-IIe_TTL/Apple_II-IIe_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Amiga/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/Apple/Apple_II-IIe_TTL/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Amiga/Default.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Apple/Apple_II-IIe_TTL/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Apple_IIGS/Apple_IIGS_50Hz.txt b/src/scripts/Profiles/6-12_BIT_RGB/Apple/Apple_IIGS/Apple_IIGS_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Apple_IIGS/Apple_IIGS_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Apple/Apple_IIGS/Apple_IIGS_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Apple_IIGS/Apple_IIGS_60Hz.txt b/src/scripts/Profiles/6-12_BIT_RGB/Apple/Apple_IIGS/Apple_IIGS_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Apple_IIGS/Apple_IIGS_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Apple/Apple_IIGS/Apple_IIGS_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Apple_IIGS/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/Apple/Apple_IIGS/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Apple_IIGS/Default.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Apple/Apple_IIGS/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Apple_IIc_TTL/Apple_IIc_50Hz.txt b/src/scripts/Profiles/6-12_BIT_RGB/Apple/Apple_IIc_TTL/Apple_IIc_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Apple_IIc_TTL/Apple_IIc_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Apple/Apple_IIc_TTL/Apple_IIc_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Apple_IIc_TTL/Apple_IIc_60Hz.txt b/src/scripts/Profiles/6-12_BIT_RGB/Apple/Apple_IIc_TTL/Apple_IIc_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Apple_IIc_TTL/Apple_IIc_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Apple/Apple_IIc_TTL/Apple_IIc_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Amiga_2000/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/Apple/Apple_IIc_TTL/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Amiga_2000/Default.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Apple/Apple_IIc_TTL/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Apple_Lisa_TTL.txt b/src/scripts/Profiles/6-12_BIT_RGB/Apple/Apple_Lisa_TTL.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Apple_Lisa_TTL.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Apple/Apple_Lisa_TTL.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Mac_Classic.txt b/src/scripts/Profiles/6-12_BIT_RGB/Apple/Mac_Classic.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Mac_Classic.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Apple/Mac_Classic.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Atari_ST/Atari_ST_50Hz.txt b/src/scripts/Profiles/6-12_BIT_RGB/Atari/Atari_ST/Atari_ST_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Atari_ST/Atari_ST_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Atari/Atari_ST/Atari_ST_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Atari_ST/Atari_ST_60Hz.txt b/src/scripts/Profiles/6-12_BIT_RGB/Atari/Atari_ST/Atari_ST_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Atari_ST/Atari_ST_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Atari/Atari_ST/Atari_ST_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Atari_ST/Atari_ST_Mono.txt b/src/scripts/Profiles/6-12_BIT_RGB/Atari/Atari_ST/Atari_ST_Mono.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Atari_ST/Atari_ST_Mono.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Atari/Atari_ST/Atari_ST_Mono.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Apple_II-IIe_TTL/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/Atari/Atari_ST/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Apple_II-IIe_TTL/Default.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Atari/Atari_ST/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Atari_STE/Atari_STE_50Hz.txt b/src/scripts/Profiles/6-12_BIT_RGB/Atari/Atari_STE/Atari_STE_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Atari_STE/Atari_STE_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Atari/Atari_STE/Atari_STE_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Atari_STE/Atari_STE_60Hz.txt b/src/scripts/Profiles/6-12_BIT_RGB/Atari/Atari_STE/Atari_STE_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Atari_STE/Atari_STE_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Atari/Atari_STE/Atari_STE_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Atari_STE/Atari_STE_Mono.txt b/src/scripts/Profiles/6-12_BIT_RGB/Atari/Atari_STE/Atari_STE_Mono.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Atari_STE/Atari_STE_Mono.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Atari/Atari_STE/Atari_STE_Mono.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Apple_IIc_TTL/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/Atari/Atari_STE/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Apple_IIc_TTL/Default.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Atari/Atari_STE/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Amiga/Amiga_50Hz.txt b/src/scripts/Profiles/6-12_BIT_RGB/Commodore/Amiga/Amiga_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Amiga/Amiga_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Commodore/Amiga/Amiga_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Amiga/Amiga_50Hz_NTSC.txt b/src/scripts/Profiles/6-12_BIT_RGB/Commodore/Amiga/Amiga_50Hz_NTSC.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Amiga/Amiga_50Hz_NTSC.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Commodore/Amiga/Amiga_50Hz_NTSC.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Amiga/Amiga_60Hz.txt b/src/scripts/Profiles/6-12_BIT_RGB/Commodore/Amiga/Amiga_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Amiga/Amiga_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Commodore/Amiga/Amiga_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Amiga/Amiga_60Hz_PAL.txt b/src/scripts/Profiles/6-12_BIT_RGB/Commodore/Amiga/Amiga_60Hz_PAL.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Amiga/Amiga_60Hz_PAL.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Commodore/Amiga/Amiga_60Hz_PAL.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Atari_ST/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/Commodore/Amiga/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Atari_ST/Default.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Commodore/Amiga/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Amiga_2000/Amiga_2000_50Hz.txt b/src/scripts/Profiles/6-12_BIT_RGB/Commodore/Amiga_2000/Amiga_2000_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Amiga_2000/Amiga_2000_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Commodore/Amiga_2000/Amiga_2000_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Amiga_2000/Amiga_2000_50Hz_NTSC.txt b/src/scripts/Profiles/6-12_BIT_RGB/Commodore/Amiga_2000/Amiga_2000_50Hz_NTSC.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Amiga_2000/Amiga_2000_50Hz_NTSC.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Commodore/Amiga_2000/Amiga_2000_50Hz_NTSC.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Amiga_2000/Amiga_2000_60Hz.txt b/src/scripts/Profiles/6-12_BIT_RGB/Commodore/Amiga_2000/Amiga_2000_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Amiga_2000/Amiga_2000_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Commodore/Amiga_2000/Amiga_2000_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Amiga_2000/Amiga_2000_60Hz_PAL.txt b/src/scripts/Profiles/6-12_BIT_RGB/Commodore/Amiga_2000/Amiga_2000_60Hz_PAL.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Amiga_2000/Amiga_2000_60Hz_PAL.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Commodore/Amiga_2000/Amiga_2000_60Hz_PAL.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Atari_STE/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/Commodore/Amiga_2000/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Atari_STE/Default.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Commodore/Amiga_2000/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Commodore_128-80/Cmd_128_50Hz.txt b/src/scripts/Profiles/6-12_BIT_RGB/Commodore/Commodore_128-80/Cmd_128_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Commodore_128-80/Cmd_128_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Commodore/Commodore_128-80/Cmd_128_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Commodore_128-80/Cmd_128_60Hz.txt b/src/scripts/Profiles/6-12_BIT_RGB/Commodore/Commodore_128-80/Cmd_128_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Commodore_128-80/Cmd_128_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Commodore/Commodore_128-80/Cmd_128_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Commodore_128-80/Cmd_128_60Hz_Alt.txt b/src/scripts/Profiles/6-12_BIT_RGB/Commodore/Commodore_128-80/Cmd_128_60Hz_Alt.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Commodore_128-80/Cmd_128_60Hz_Alt.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Commodore/Commodore_128-80/Cmd_128_60Hz_Alt.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Commodore_128-80/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/Commodore/Commodore_128-80/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Commodore_128-80/Default.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Commodore/Commodore_128-80/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Commodore_128-80/Text-NTSC_264.txt b/src/scripts/Profiles/6-12_BIT_RGB/Commodore/Commodore_128-80/Text-NTSC_264.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Commodore_128-80/Text-NTSC_264.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Commodore/Commodore_128-80/Text-NTSC_264.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Commodore_128-80/Text-PAL_320.txt b/src/scripts/Profiles/6-12_BIT_RGB/Commodore/Commodore_128-80/Text-PAL_320.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Commodore_128-80/Text-PAL_320.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Commodore/Commodore_128-80/Text-PAL_320.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Commodore_128-80/VDC-FLI_295.txt b/src/scripts/Profiles/6-12_BIT_RGB/Commodore/Commodore_128-80/VDC-FLI_295.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Commodore_128-80/VDC-FLI_295.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Commodore/Commodore_128-80/VDC-FLI_295.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Commodore_128-80/VDC-HFLI_426.txt b/src/scripts/Profiles/6-12_BIT_RGB/Commodore/Commodore_128-80/VDC-HFLI_426.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Commodore_128-80/VDC-HFLI_426.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Commodore/Commodore_128-80/VDC-HFLI_426.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Commodore_128-80/VDC-IHFLI_266.txt b/src/scripts/Profiles/6-12_BIT_RGB/Commodore/Commodore_128-80/VDC-IHFLI_266.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Commodore_128-80/VDC-IHFLI_266.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Commodore/Commodore_128-80/VDC-IHFLI_266.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Commodore_128-80/VDC-IM800_651i.txt b/src/scripts/Profiles/6-12_BIT_RGB/Commodore/Commodore_128-80/VDC-IM800_651i.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Commodore_128-80/VDC-IM800_651i.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Commodore/Commodore_128-80/VDC-IM800_651i.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Commodore_128-80/VDC-IMONO_749i.txt b/src/scripts/Profiles/6-12_BIT_RGB/Commodore/Commodore_128-80/VDC-IMONO_749i.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Commodore_128-80/VDC-IMONO_749i.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Commodore/Commodore_128-80/VDC-IMONO_749i.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Commodore_128-80/VDC-IMONO_749i_V1.txt b/src/scripts/Profiles/6-12_BIT_RGB/Commodore/Commodore_128-80/VDC-IMONO_749i_V1.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Commodore_128-80/VDC-IMONO_749i_V1.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Commodore/Commodore_128-80/VDC-IMONO_749i_V1.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Commodore_128-80/VDC-ITFLI_315.txt b/src/scripts/Profiles/6-12_BIT_RGB/Commodore/Commodore_128-80/VDC-ITFLI_315.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Commodore_128-80/VDC-ITFLI_315.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Commodore/Commodore_128-80/VDC-ITFLI_315.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Commodore_PET/40-Col-CRTC-Business.txt b/src/scripts/Profiles/6-12_BIT_RGB/Commodore/Commodore_PET/40-Col-CRTC-Business.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Commodore_PET/40-Col-CRTC-Business.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Commodore/Commodore_PET/40-Col-CRTC-Business.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Commodore_PET/40-Col-CRTC-Graphic.txt b/src/scripts/Profiles/6-12_BIT_RGB/Commodore/Commodore_PET/40-Col-CRTC-Graphic.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Commodore_PET/40-Col-CRTC-Graphic.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Commodore/Commodore_PET/40-Col-CRTC-Graphic.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Commodore_PET/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/Commodore/Commodore_PET/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Commodore_PET/Default.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Commodore/Commodore_PET/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Intellivision/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC-98/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Intellivision/Default.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC-98/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC-98/PC-98_200_lines.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC-98/PC-98_200_lines.txt similarity index 98% rename from src/scripts/Profiles/6-12_BIT_RGB/PC-98/PC-98_200_lines.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC-98/PC-98_200_lines.txt index 6b429d3e..3622b37a 100644 --- a/src/scripts/Profiles/6-12_BIT_RGB/PC-98/PC-98_200_lines.txt +++ b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC-98/PC-98_200_lines.txt @@ -1,2 +1,2 @@ -sampling=4,4,4,4,4,4,4,0,0,0,5,0,0,0,0,0,0,0,0,0,100,256,100,256,100,256,256,256 -geometry=128,35,640,200,640,200,1,2,1,1,14318180,896,5000,260,0,0,0 +sampling=4,4,4,4,4,4,4,0,0,0,5,0,0,0,0,0,0,0,0,0,100,256,100,256,100,256,256,256 +geometry=128,35,640,200,640,200,1,2,1,1,14318180,896,5000,260,0,0,0 diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC-98/PC-98_400_lines.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC-98/PC-98_400_lines.txt similarity index 97% rename from src/scripts/Profiles/6-12_BIT_RGB/PC-98/PC-98_400_lines.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC-98/PC-98_400_lines.txt index 70f85aeb..c8d25951 100644 --- a/src/scripts/Profiles/6-12_BIT_RGB/PC-98/PC-98_400_lines.txt +++ b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC-98/PC-98_400_lines.txt @@ -1,4 +1,4 @@ -sampling=3,3,3,3,3,3,3,0,0,0,5,0,0,0,0,0,0,0,0,0,100,256,100,256,100,256,256,256 -geometry=80,25,640,400,640,400,1,1,0,1,21052600,848,5000,440,0,0,0 -scanline_level=0 -genlock_adjust=1 +sampling=3,3,3,3,3,3,3,0,0,0,5,0,0,0,0,0,0,0,0,0,100,256,100,256,100,256,256,256 +geometry=80,25,640,400,640,400,1,1,0,1,21052600,848,5000,440,0,0,0 +scanline_level=0 +genlock_adjust=1 diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_CGA_(IBM_New).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_CGA_(IBM_New).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_CGA_(IBM_New).txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_CGA_(IBM_New).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_CGA_(IBM_Old).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_CGA_(IBM_Old).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_CGA_(IBM_Old).txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_CGA_(IBM_Old).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_EGA/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_EGA/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_EGA/Default.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_EGA/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_EGA/EGA_(Mode1).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_EGA/EGA_(Mode1).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_EGA/EGA_(Mode1).txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_EGA/EGA_(Mode1).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_EGA/EGA_(Mode2-40).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_EGA/EGA_(Mode2-40).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_EGA/EGA_(Mode2-40).txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_EGA/EGA_(Mode2-40).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_EGA/EGA_(Mode2-80).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_EGA/EGA_(Mode2-80).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_EGA/EGA_(Mode2-80).txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_EGA/EGA_(Mode2-80).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_EGA_Wonder_800+/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_EGA_Wonder_800+/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_EGA_Wonder_800+/Default.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_EGA_Wonder_800+/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_EGA_Wonder_800+/EGA_Mode1.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_EGA_Wonder_800+/EGA_Mode1.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_EGA_Wonder_800+/EGA_Mode1.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_EGA_Wonder_800+/EGA_Mode1.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_EGA_Wonder_800+/EGA_Mode2.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_EGA_Wonder_800+/EGA_Mode2.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_EGA_Wonder_800+/EGA_Mode2.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_EGA_Wonder_800+/EGA_Mode2.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_ET3000AX/CGA.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/CGA.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_ET3000AX/CGA.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/CGA.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_ET3000AX/CGA2.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/CGA2.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_ET3000AX/CGA2.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/CGA2.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_ET3000AX/CGA_on_VGA.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/CGA_on_VGA.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_ET3000AX/CGA_on_VGA.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/CGA_on_VGA.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_ET3000AX/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_ET3000AX/Default.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_ET3000AX/EGA.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/EGA.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_ET3000AX/EGA.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/EGA.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_ET3000AX/EGA_on_VGA_25.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/EGA_on_VGA_25.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_ET3000AX/EGA_on_VGA_25.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/EGA_on_VGA_25.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_ET3000AX/EGA_on_VGA_28.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/EGA_on_VGA_28.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_ET3000AX/EGA_on_VGA_28.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/EGA_on_VGA_28.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_ET3000AX/VGA_Graphics.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/VGA_Graphics.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_ET3000AX/VGA_Graphics.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/VGA_Graphics.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_ET3000AX/VGA_Text.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/VGA_Text.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_ET3000AX/VGA_Text.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/VGA_Text.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/CGA.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/CGA.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/CGA.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/CGA.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Default.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/EGA_200.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/EGA_200.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/EGA_200.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/EGA_200.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/EGA_350.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/EGA_350.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/EGA_350.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/EGA_350.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(640x400 alt).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(640x400 alt).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(640x400 alt).txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(640x400 alt).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(640x400).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(640x400).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(640x400).txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(640x400).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(720x274).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(720x274).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(720x274).txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(720x274).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt).txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt10).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt10).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt10).txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt10).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt11).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt11).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt11).txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt11).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt12).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt12).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt12).txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt12).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt13).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt13).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt13).txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt13).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt14).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt14).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt14).txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt14).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt15).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt15).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt15).txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt15).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt16).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt16).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt16).txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt16).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt2).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt2).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt2).txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt2).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt3).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt3).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt3).txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt3).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt4).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt4).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt4).txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt4).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt5).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt5).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt5).txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt5).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt6).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt6).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt6).txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt6).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt7).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt7).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt7).txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt7).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt8).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt8).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt8).txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt8).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt9).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt9).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx(alt9).txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt9).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Gfx.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Txt.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Txt.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_HEGA_AUTO/Hercules_Txt.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Txt.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_Hercules/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_Hercules/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_Hercules/Default.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_Hercules/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_Hercules/Hercules_Gfx.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_Hercules/Hercules_Gfx.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_Hercules/Hercules_Gfx.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_Hercules/Hercules_Gfx.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_Hercules/Hercules_Txt.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_Hercules/Hercules_Txt.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_Hercules/Hercules_Txt.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_Hercules/Hercules_Txt.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_MDA.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_MDA.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_MDA.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_MDA.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_NEC_MDA/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_NEC_MDA/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_NEC_MDA/Default.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_NEC_MDA/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_NEC_MDA/NEC_Gfx.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_NEC_MDA/NEC_Gfx.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_NEC_MDA/NEC_Gfx.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_NEC_MDA/NEC_Gfx.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_NEC_MDA/NEC_Txt.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_NEC_MDA/NEC_Txt.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_NEC_MDA/NEC_Txt.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_NEC_MDA/NEC_Txt.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_OTIVGA/CGA_40.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/CGA_40.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_OTIVGA/CGA_40.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/CGA_40.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_OTIVGA/CGA_80.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/CGA_80.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_OTIVGA/CGA_80.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/CGA_80.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_OTIVGA/CGA_on_VGA.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/CGA_on_VGA.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_OTIVGA/CGA_on_VGA.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/CGA_on_VGA.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_OTIVGA/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_OTIVGA/Default.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_OTIVGA/EGA_(Mode2-40).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/EGA_(Mode2-40).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_OTIVGA/EGA_(Mode2-40).txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/EGA_(Mode2-40).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_OTIVGA/EGA_(Mode2-80).txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/EGA_(Mode2-80).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_OTIVGA/EGA_(Mode2-80).txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/EGA_(Mode2-80).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_OTIVGA/EGA_Alt.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/EGA_Alt.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_OTIVGA/EGA_Alt.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/EGA_Alt.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_OTIVGA/EGA_on_VGA_25.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/EGA_on_VGA_25.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_OTIVGA/EGA_on_VGA_25.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/EGA_on_VGA_25.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_OTIVGA/EGA_on_VGA_28.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/EGA_on_VGA_28.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_OTIVGA/EGA_on_VGA_28.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/EGA_on_VGA_28.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_OTIVGA/MDA.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/MDA.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_OTIVGA/MDA.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/MDA.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_OTIVGA/VGA_Graphics.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/VGA_Graphics.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_OTIVGA/VGA_Graphics.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/VGA_Graphics.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_OTIVGA/VGA_Text.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/VGA_Text.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_OTIVGA/VGA_Text.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/VGA_Text.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_VIDEO7_MDA/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_VIDEO7_MDA/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_VIDEO7_MDA/Default.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_VIDEO7_MDA/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_VIDEO7_MDA/VIdeo7_Gfx.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_VIDEO7_MDA/VIdeo7_Gfx.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_VIDEO7_MDA/VIdeo7_Gfx.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_VIDEO7_MDA/VIdeo7_Gfx.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC_VIDEO7_MDA/Video7_Txt.txt b/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_VIDEO7_MDA/Video7_Txt.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC_VIDEO7_MDA/Video7_Txt.txt rename to src/scripts/Profiles/6-12_BIT_RGB/PC/PC_VIDEO7_MDA/Video7_Txt.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Sinclair_QL.txt b/src/scripts/Profiles/6-12_BIT_RGB/Sinclair/Sinclair_QL.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Sinclair_QL.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Sinclair/Sinclair_QL.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Spectrum_128_+2(Grey).txt b/src/scripts/Profiles/6-12_BIT_RGB/Sinclair/Spectrum_128_+2(Grey).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Spectrum_128_+2(Grey).txt rename to src/scripts/Profiles/6-12_BIT_RGB/Sinclair/Spectrum_128_+2(Grey).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/TRS_80_Model_3/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/Sinclair/ZX80_TTL/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/TRS_80_Model_3/Default.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Sinclair/ZX80_TTL/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/ZX80_TTL/ZX80_50Hz.txt b/src/scripts/Profiles/6-12_BIT_RGB/Sinclair/ZX80_TTL/ZX80_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/ZX80_TTL/ZX80_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Sinclair/ZX80_TTL/ZX80_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/ZX80_TTL/ZX80_60Hz.txt b/src/scripts/Profiles/6-12_BIT_RGB/Sinclair/ZX80_TTL/ZX80_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/ZX80_TTL/ZX80_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Sinclair/ZX80_TTL/ZX80_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/ZX80_TTL/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/Tandy/TRS_80_Model_3/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/ZX80_TTL/Default.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Tandy/TRS_80_Model_3/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/TRS_80_Model_3/TRS_80_M3_50Hz_DEHJKLVWBBCC.txt b/src/scripts/Profiles/6-12_BIT_RGB/Tandy/TRS_80_Model_3/TRS_80_M3_50Hz_DEHJKLVWBBCC.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/TRS_80_Model_3/TRS_80_M3_50Hz_DEHJKLVWBBCC.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Tandy/TRS_80_Model_3/TRS_80_M3_50Hz_DEHJKLVWBBCC.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/TRS_80_Model_3/TRS_80_M3_60Hz_DEHJKLVWBBCC.txt b/src/scripts/Profiles/6-12_BIT_RGB/Tandy/TRS_80_Model_3/TRS_80_M3_60Hz_DEHJKLVWBBCC.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/TRS_80_Model_3/TRS_80_M3_60Hz_DEHJKLVWBBCC.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Tandy/TRS_80_Model_3/TRS_80_M3_60Hz_DEHJKLVWBBCC.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/TRS_80_Model_4/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/Tandy/TRS_80_Model_4/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/TRS_80_Model_4/Default.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Tandy/TRS_80_Model_4/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/TRS_80_Model_4/TRS_80_Model_4_60Hz.txt b/src/scripts/Profiles/6-12_BIT_RGB/Tandy/TRS_80_Model_4/TRS_80_Model_4_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/TRS_80_Model_4/TRS_80_Model_4_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Tandy/TRS_80_Model_4/TRS_80_Model_4_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Tandy_1000_200_lines.txt b/src/scripts/Profiles/6-12_BIT_RGB/Tandy/Tandy_1000_200_lines.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Tandy_1000_200_lines.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Tandy/Tandy_1000_200_lines.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Tandy_1000_225_lines.txt b/src/scripts/Profiles/6-12_BIT_RGB/Tandy/Tandy_1000_225_lines.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Tandy_1000_225_lines.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Tandy/Tandy_1000_225_lines.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/ABC80.txt b/src/scripts/Profiles/6-12_BIT_RGB/_Other/ABC80.txt similarity index 97% rename from src/scripts/Profiles/6-12_BIT_RGB/ABC80.txt rename to src/scripts/Profiles/6-12_BIT_RGB/_Other/ABC80.txt index fc05d592..6f68c80d 100644 --- a/src/scripts/Profiles/6-12_BIT_RGB/ABC80.txt +++ b/src/scripts/Profiles/6-12_BIT_RGB/_Other/ABC80.txt @@ -1,4 +1,4 @@ -sampling=3,3,3,3,3,3,3,0,1,0,0,0,0,0,0,0,0,2,0,0,100,256,100,256,100,256,256,256 -geometry=200,58,512,204,608,276,3,5,1,1,11980800,768,5000,312,4,0,0 -palette=Mono_(2_level) -output_colour=1 +sampling=3,3,3,3,3,3,3,0,1,0,0,0,0,0,0,0,0,2,0,0,100,256,100,256,100,256,256,256 +geometry=200,58,512,204,608,276,3,5,1,1,11980800,768,5000,312,4,0,0 +palette=Mono_(2_level) +output_colour=1 diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Aquarius.txt b/src/scripts/Profiles/6-12_BIT_RGB/_Other/Aquarius.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Aquarius.txt rename to src/scripts/Profiles/6-12_BIT_RGB/_Other/Aquarius.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Camputers_Lynx.txt b/src/scripts/Profiles/6-12_BIT_RGB/_Other/Camputers_Lynx.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Camputers_Lynx.txt rename to src/scripts/Profiles/6-12_BIT_RGB/_Other/Camputers_Lynx.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Colour Test/Black.txt b/src/scripts/Profiles/6-12_BIT_RGB/_Other/Colour Test/Black.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Colour Test/Black.txt rename to src/scripts/Profiles/6-12_BIT_RGB/_Other/Colour Test/Black.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Colour Test/Blue.txt b/src/scripts/Profiles/6-12_BIT_RGB/_Other/Colour Test/Blue.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Colour Test/Blue.txt rename to src/scripts/Profiles/6-12_BIT_RGB/_Other/Colour Test/Blue.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Colour Test/Cyan.txt b/src/scripts/Profiles/6-12_BIT_RGB/_Other/Colour Test/Cyan.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Colour Test/Cyan.txt rename to src/scripts/Profiles/6-12_BIT_RGB/_Other/Colour Test/Cyan.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Colour Test/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/_Other/Colour Test/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Colour Test/Default.txt rename to src/scripts/Profiles/6-12_BIT_RGB/_Other/Colour Test/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Colour Test/Green.txt b/src/scripts/Profiles/6-12_BIT_RGB/_Other/Colour Test/Green.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Colour Test/Green.txt rename to src/scripts/Profiles/6-12_BIT_RGB/_Other/Colour Test/Green.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Colour Test/Magenta.txt b/src/scripts/Profiles/6-12_BIT_RGB/_Other/Colour Test/Magenta.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Colour Test/Magenta.txt rename to src/scripts/Profiles/6-12_BIT_RGB/_Other/Colour Test/Magenta.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Colour Test/Red.txt b/src/scripts/Profiles/6-12_BIT_RGB/_Other/Colour Test/Red.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Colour Test/Red.txt rename to src/scripts/Profiles/6-12_BIT_RGB/_Other/Colour Test/Red.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Colour Test/White.txt b/src/scripts/Profiles/6-12_BIT_RGB/_Other/Colour Test/White.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Colour Test/White.txt rename to src/scripts/Profiles/6-12_BIT_RGB/_Other/Colour Test/White.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Colour Test/Yellow.txt b/src/scripts/Profiles/6-12_BIT_RGB/_Other/Colour Test/Yellow.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Colour Test/Yellow.txt rename to src/scripts/Profiles/6-12_BIT_RGB/_Other/Colour Test/Yellow.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Colour_Genie.txt b/src/scripts/Profiles/6-12_BIT_RGB/_Other/Colour_Genie.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Colour_Genie.txt rename to src/scripts/Profiles/6-12_BIT_RGB/_Other/Colour_Genie.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Custom.txt b/src/scripts/Profiles/6-12_BIT_RGB/_Other/Custom.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Custom.txt rename to src/scripts/Profiles/6-12_BIT_RGB/_Other/Custom.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Enterprise.txt b/src/scripts/Profiles/6-12_BIT_RGB/_Other/Enterprise.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Enterprise.txt rename to src/scripts/Profiles/6-12_BIT_RGB/_Other/Enterprise.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV/Apple_II-IIe_TTL/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/_Other/Intellivision/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV/Apple_II-IIe_TTL/Default.txt rename to src/scripts/Profiles/6-12_BIT_RGB/_Other/Intellivision/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Intellivision/Intellivision_50Hz.txt b/src/scripts/Profiles/6-12_BIT_RGB/_Other/Intellivision/Intellivision_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Intellivision/Intellivision_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_RGB/_Other/Intellivision/Intellivision_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Intellivision/Intellivision_60Hz.txt b/src/scripts/Profiles/6-12_BIT_RGB/_Other/Intellivision/Intellivision_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Intellivision/Intellivision_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_RGB/_Other/Intellivision/Intellivision_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Laser_128.txt b/src/scripts/Profiles/6-12_BIT_RGB/_Other/Laser_128.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Laser_128.txt rename to src/scripts/Profiles/6-12_BIT_RGB/_Other/Laser_128.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Olivetti Prodest-PC1.txt b/src/scripts/Profiles/6-12_BIT_RGB/_Other/Olivetti Prodest-PC1.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Olivetti Prodest-PC1.txt rename to src/scripts/Profiles/6-12_BIT_RGB/_Other/Olivetti Prodest-PC1.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Oric.txt b/src/scripts/Profiles/6-12_BIT_RGB/_Other/Oric.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Oric.txt rename to src/scripts/Profiles/6-12_BIT_RGB/_Other/Oric.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/RML_480Z.txt b/src/scripts/Profiles/6-12_BIT_RGB/_Other/RML_480Z.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/RML_480Z.txt rename to src/scripts/Profiles/6-12_BIT_RGB/_Other/RML_480Z.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Sam_Coupe.txt b/src/scripts/Profiles/6-12_BIT_RGB/_Other/Sam_Coupe.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Sam_Coupe.txt rename to src/scripts/Profiles/6-12_BIT_RGB/_Other/Sam_Coupe.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Sharp_MZ-700.txt b/src/scripts/Profiles/6-12_BIT_RGB/_Other/Sharp_MZ-700.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Sharp_MZ-700.txt rename to src/scripts/Profiles/6-12_BIT_RGB/_Other/Sharp_MZ-700.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Tektronix_571.txt b/src/scripts/Profiles/6-12_BIT_RGB/_Other/Tektronix_571.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Tektronix_571.txt rename to src/scripts/Profiles/6-12_BIT_RGB/_Other/Tektronix_571.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Videopac_C52.txt b/src/scripts/Profiles/6-12_BIT_RGB/_Other/Videopac_C52.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Videopac_C52.txt rename to src/scripts/Profiles/6-12_BIT_RGB/_Other/Videopac_C52.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/Acorn_Electron.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Acorn/Acorn_Electron.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/Acorn_Electron.txt rename to src/scripts/Profiles/6-12_BIT_RGB_Analog/Acorn/Acorn_Electron.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/Amstrad_CPC.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Amstrad/Amstrad_CPC.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/Amstrad_CPC.txt rename to src/scripts/Profiles/6-12_BIT_RGB_Analog/Amstrad/Amstrad_CPC.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/Harlequin_128K.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Harlequin_128K.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/Harlequin_128K.txt rename to src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Harlequin_128K.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair_QL.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Sinclair_QL.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair_QL.txt rename to src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Sinclair_QL.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/Spectrum_+2A_+3_Nuvo.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_+2A_+3_Nuvo.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/Spectrum_+2A_+3_Nuvo.txt rename to src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_+2A_+3_Nuvo.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/Spectrum_128_+2(Grey).txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_128_+2(Grey).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/Spectrum_128_+2(Grey).txt rename to src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_128_+2(Grey).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/Spectrum_48K+c0pperdragon.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_48K+c0pperdragon.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/Spectrum_48K+c0pperdragon.txt rename to src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_48K+c0pperdragon.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/U7_Tandy_CoCo3_50Hz_hires.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Tandy/U7_Tandy_CoCo3_50Hz_hires.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/U7_Tandy_CoCo3_50Hz_hires.txt rename to src/scripts/Profiles/6-12_BIT_RGB_Analog/Tandy/U7_Tandy_CoCo3_50Hz_hires.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/U7_Tandy_CoCo3_50Hz_lowres.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Tandy/U7_Tandy_CoCo3_50Hz_lowres.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/U7_Tandy_CoCo3_50Hz_lowres.txt rename to src/scripts/Profiles/6-12_BIT_RGB_Analog/Tandy/U7_Tandy_CoCo3_50Hz_lowres.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/U7_Tandy_CoCo_3_60Hz.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Tandy/U7_Tandy_CoCo_3_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/U7_Tandy_CoCo_3_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_RGB_Analog/Tandy/U7_Tandy_CoCo_3_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/Analog_CGA.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/_Other/Analog_CGA.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/Analog_CGA.txt rename to src/scripts/Profiles/6-12_BIT_RGB_Analog/_Other/Analog_CGA.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/Camputers_Lynx.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/_Other/Camputers_Lynx.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/Camputers_Lynx.txt rename to src/scripts/Profiles/6-12_BIT_RGB_Analog/_Other/Camputers_Lynx.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/Custom.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/_Other/Custom.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/Custom.txt rename to src/scripts/Profiles/6-12_BIT_RGB_Analog/_Other/Custom.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/Oric.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/_Other/Oric.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/Oric.txt rename to src/scripts/Profiles/6-12_BIT_RGB_Analog/_Other/Oric.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/RML_480Z.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/_Other/RML_480Z.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/RML_480Z.txt rename to src/scripts/Profiles/6-12_BIT_RGB_Analog/_Other/RML_480Z.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sharp_MZ-700.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/_Other/Sharp_MZ-700.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/Sharp_MZ-700.txt rename to src/scripts/Profiles/6-12_BIT_RGB_Analog/_Other/Sharp_MZ-700.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV/Apple_II-IIe_TTL/Apple_II-IIe_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV/Apple/Apple_II-IIe_TTL/Apple_II-IIe_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV/Apple_II-IIe_TTL/Apple_II-IIe_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV/Apple/Apple_II-IIe_TTL/Apple_II-IIe_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV/Apple_II-IIe_TTL/Apple_II-IIe_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV/Apple/Apple_II-IIe_TTL/Apple_II-IIe_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV/Apple_II-IIe_TTL/Apple_II-IIe_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV/Apple/Apple_II-IIe_TTL/Apple_II-IIe_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV/Apple_IIc_TTL/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV/Apple/Apple_II-IIe_TTL/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV/Apple_IIc_TTL/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV/Apple/Apple_II-IIe_TTL/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV/Apple_IIc_TTL/Apple_IIc_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV/Apple/Apple_IIc_TTL/Apple_IIc_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV/Apple_IIc_TTL/Apple_IIc_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV/Apple/Apple_IIc_TTL/Apple_IIc_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV/Apple_IIc_TTL/Apple_IIc_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV/Apple/Apple_IIc_TTL/Apple_IIc_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV/Apple_IIc_TTL/Apple_IIc_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV/Apple/Apple_IIc_TTL/Apple_IIc_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV/TRS_80_Model_3/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV/Apple/Apple_IIc_TTL/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV/TRS_80_Model_3/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV/Apple/Apple_IIc_TTL/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV/ZX80_TTL/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV/Sinclair/ZX80_TTL/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV/ZX80_TTL/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV/Sinclair/ZX80_TTL/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV/ZX80_TTL/ZX80_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV/Sinclair/ZX80_TTL/ZX80_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV/ZX80_TTL/ZX80_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV/Sinclair/ZX80_TTL/ZX80_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV/ZX80_TTL/ZX80_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV/Sinclair/ZX80_TTL/ZX80_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV/ZX80_TTL/ZX80_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV/Sinclair/ZX80_TTL/ZX80_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Apple_II/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV/Tandy/TRS_80_Model_3/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Apple_II/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV/Tandy/TRS_80_Model_3/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV/TRS_80_Model_3/TRS_80_M3_50Hz_DEHJKLVWBBCC.txt b/src/scripts/Profiles/6-12_BIT_YUV/Tandy/TRS_80_Model_3/TRS_80_M3_50Hz_DEHJKLVWBBCC.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV/TRS_80_Model_3/TRS_80_M3_50Hz_DEHJKLVWBBCC.txt rename to src/scripts/Profiles/6-12_BIT_YUV/Tandy/TRS_80_Model_3/TRS_80_M3_50Hz_DEHJKLVWBBCC.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV/TRS_80_Model_3/TRS_80_M3_60Hz_DEHJKLVWBBCC.txt b/src/scripts/Profiles/6-12_BIT_YUV/Tandy/TRS_80_Model_3/TRS_80_M3_60Hz_DEHJKLVWBBCC.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV/TRS_80_Model_3/TRS_80_M3_60Hz_DEHJKLVWBBCC.txt rename to src/scripts/Profiles/6-12_BIT_YUV/Tandy/TRS_80_Model_3/TRS_80_M3_60Hz_DEHJKLVWBBCC.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV/TRS_80_Model_4/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV/Tandy/TRS_80_Model_4/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV/TRS_80_Model_4/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV/Tandy/TRS_80_Model_4/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV/TRS_80_Model_4/TRS_80_Model_4_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV/Tandy/TRS_80_Model_4/TRS_80_Model_4_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV/TRS_80_Model_4/TRS_80_Model_4_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV/Tandy/TRS_80_Model_4/TRS_80_Model_4_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV/UK_101.txt b/src/scripts/Profiles/6-12_BIT_YUV/_Other/UK_101.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV/UK_101.txt rename to src/scripts/Profiles/6-12_BIT_YUV/_Other/UK_101.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Acorn_Atom.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Acorn/Acorn_Atom.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Acorn_Atom.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Acorn/Acorn_Atom.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Acorn_System_5.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Acorn/Acorn_System_5.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Acorn_System_5.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Acorn/Acorn_System_5.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Apple_I.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Apple/Apple_I.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Apple_I.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Apple/Apple_I.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Apple_II/Apple_II_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Apple/Apple_II/Apple_II_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Apple_II/Apple_II_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Apple/Apple_II/Apple_II_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Apple_II/Apple_II_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Apple/Apple_II/Apple_II_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Apple_II/Apple_II_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Apple/Apple_II/Apple_II_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Atari_800/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Apple/Apple_II/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Atari_800/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Apple/Apple_II/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Apple_Lisa.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Apple/Apple_Lisa.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Apple_Lisa.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Apple/Apple_Lisa.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Atari_800/Atari_800_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Atari/Atari_800/Atari_800_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Atari_800/Atari_800_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Atari/Atari_800/Atari_800_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Atari_800/Atari_800_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Atari/Atari_800/Atari_800_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Atari_800/Atari_800_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Atari/Atari_800/Atari_800_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/C64_LumaCode/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Atari/Atari_800/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/C64_LumaCode/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Atari/Atari_800/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/C64_LumaCode/C64LC_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Commodore/C64_LumaCode/C64LC_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/C64_LumaCode/C64LC_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Commodore/C64_LumaCode/C64LC_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/C64_LumaCode/C64LC_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Commodore/C64_LumaCode/C64LC_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/C64_LumaCode/C64LC_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Commodore/C64_LumaCode/C64LC_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Commodore_64/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Commodore/C64_LumaCode/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Commodore_64/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Commodore/C64_LumaCode/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Commodore_64/CMD_64_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Commodore/Commodore_64/CMD_64_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Commodore_64/CMD_64_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Commodore/Commodore_64/CMD_64_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Commodore_64/CMD_64_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Commodore/Commodore_64/CMD_64_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Commodore_64/CMD_64_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Commodore/Commodore_64/CMD_64_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Nascom_II/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Commodore/Commodore_64/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Nascom_II/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Commodore/Commodore_64/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Spectrum_48K/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/Spectrum_48K/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Spectrum_48K/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/Spectrum_48K/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Spectrum_48K/Spectrum_48K_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/Spectrum_48K/Spectrum_48K_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Spectrum_48K/Spectrum_48K_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/Spectrum_48K/Spectrum_48K_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Spectrum_48K/Spectrum_48K_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/Spectrum_48K/Spectrum_48K_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Spectrum_48K/Spectrum_48K_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/Spectrum_48K/Spectrum_48K_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard_II_32x32/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX80_Composite/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard_II_32x32/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX80_Composite/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/ZX80_Composite/ZX80_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX80_Composite/ZX80_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/ZX80_Composite/ZX80_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX80_Composite/ZX80_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/ZX80_Composite/ZX80_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX80_Composite/ZX80_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/ZX80_Composite/ZX80_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX80_Composite/ZX80_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard_II_64x32/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_(ULA)/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard_II_64x32/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_(ULA)/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/ZX81_(ULA)/ZX81_(ULA)_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_(ULA)/ZX81_(ULA)_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/ZX81_(ULA)/ZX81_(ULA)_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_(ULA)/ZX81_(ULA)_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/ZX81_(ULA)/ZX81_(ULA)_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_(ULA)/ZX81_(ULA)_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/ZX81_(ULA)/ZX81_(ULA)_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_(ULA)/ZX81_(ULA)_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/TRS_80_Model_1/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_Composite/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/TRS_80_Model_1/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_Composite/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/ZX81_Composite/ZX81_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_Composite/ZX81_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/ZX81_Composite/ZX81_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_Composite/ZX81_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/ZX81_Composite/ZX81_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_Composite/ZX81_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/ZX81_Composite/ZX81_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_Composite/ZX81_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/TRS_80_Modified_1/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/TRS_80_Model_1/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/TRS_80_Modified_1/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/TRS_80_Model_1/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/TRS_80_Model_1/TRS_80_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/TRS_80_Model_1/TRS_80_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/TRS_80_Model_1/TRS_80_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/TRS_80_Model_1/TRS_80_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/TRS_80_Model_1/TRS_80_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/TRS_80_Model_1/TRS_80_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/TRS_80_Model_1/TRS_80_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/TRS_80_Model_1/TRS_80_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy_CoCo_1-2/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/TRS_80_Modified_1/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy_CoCo_1-2/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/TRS_80_Modified_1/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/TRS_80_Modified_1/TRS_80_Mod_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/TRS_80_Modified_1/TRS_80_Mod_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/TRS_80_Modified_1/TRS_80_Mod_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/TRS_80_Modified_1/TRS_80_Mod_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/TRS_80_Modified_1/TRS_80_Mod_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/TRS_80_Modified_1/TRS_80_Mod_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/TRS_80_Modified_1/TRS_80_Mod_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/TRS_80_Modified_1/TRS_80_Mod_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/ZX80_Composite/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/Tandy_CoCo_1-2/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/ZX80_Composite/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/Tandy_CoCo_1-2/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy_CoCo_1-2/Tandy_CoCo_1-2_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/Tandy_CoCo_1-2/Tandy_CoCo_1-2_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy_CoCo_1-2/Tandy_CoCo_1-2_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/Tandy_CoCo_1-2/Tandy_CoCo_1-2_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy_CoCo_1-2/Tandy_CoCo_1-2_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/Tandy_CoCo_1-2/Tandy_CoCo_1-2_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy_CoCo_1-2/Tandy_CoCo_1-2_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/Tandy_CoCo_1-2/Tandy_CoCo_1-2_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy_MC10_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/Tandy_MC10_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy_MC10_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/Tandy_MC10_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy_MC10_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/Tandy_MC10_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy_MC10_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/Tandy_MC10_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Custom.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Custom.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Custom.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Custom.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Dragon.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Dragon.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Dragon.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Dragon.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Jupiter_ACE_Composite.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Jupiter_ACE_Composite.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Jupiter_ACE_Composite.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Jupiter_ACE_Composite.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/ZX81_(ULA)/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Nascom_II/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/ZX81_(ULA)/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Nascom_II/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Nascom_II/Nascom_II_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Nascom_II/Nascom_II_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Nascom_II/Nascom_II_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Nascom_II/Nascom_II_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Nascom_II/Nascom_II_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Nascom_II/Nascom_II_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Nascom_II/Nascom_II_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Nascom_II/Nascom_II_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/ZX81_Composite/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Superboard_II_32x32/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/ZX81_Composite/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Superboard_II_32x32/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard_II_32x32/Superboard_II_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Superboard_II_32x32/Superboard_II_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard_II_32x32/Superboard_II_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Superboard_II_32x32/Superboard_II_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard_II_32x32/Superboard_II_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Superboard_II_32x32/Superboard_II_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard_II_32x32/Superboard_II_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Superboard_II_32x32/Superboard_II_60Hz.txt diff --git a/src/scripts/Profiles/Simple/Amiga/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Superboard_II_64x32/Default.txt similarity index 100% rename from src/scripts/Profiles/Simple/Amiga/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Superboard_II_64x32/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard_II_64x32/Superboard_II_64_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Superboard_II_64x32/Superboard_II_64_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard_II_64x32/Superboard_II_64_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Superboard_II_64x32/Superboard_II_64_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard_II_64x32/Superboard_II_64_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Superboard_II_64x32/Superboard_II_64_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard_II_64x32/Superboard_II_64_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Superboard_II_64x32/Superboard_II_64_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/U7_Colecovision_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/U7_Colecovision_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/U7_Colecovision_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/U7_Colecovision_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/U7_Sega_SC3000_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/U7_Sega_SC3000_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/U7_Sega_SC3000_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/U7_Sega_SC3000_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/U7_SpectraVideo_328_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/U7_SpectraVideo_328_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/U7_SpectraVideo_328_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/U7_SpectraVideo_328_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/U7_TI99-4a_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/U7_TI99-4a_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/U7_TI99-4a_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/U7_TI99-4a_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/UK_101.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/UK_101.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/UK_101.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/UK_101.txt diff --git a/src/scripts/Profiles/Atom/Acorn_Atom.txt b/src/scripts/Profiles/Atom/Acorn/Acorn_Atom.txt similarity index 100% rename from src/scripts/Profiles/Atom/Acorn_Atom.txt rename to src/scripts/Profiles/Atom/Acorn/Acorn_Atom.txt diff --git a/src/scripts/Profiles/Default.txt b/src/scripts/Profiles/Default.txt index 682ea38f..be7fddc2 100644 --- a/src/scripts/Profiles/Default.txt +++ b/src/scripts/Profiles/Default.txt @@ -26,6 +26,7 @@ output_invert=0 scanlines=0 scanline_level=6 yuv_pixel_double=0 +integer_aspect=0 powerup_message=1 crop_border=0 screencap_size=0 @@ -42,7 +43,6 @@ overclock_cpu=0 overclock_core=0 overclock_sdram=0 button_reverse=0 -nula_narrow_mode7=0 debug=0 keymap=13232 actionmap=012453 diff --git a/src/scripts/Profiles/Legacy_3_BIT/Acorn_Atom_v10-v20.txt b/src/scripts/Profiles/Legacy_3_BIT/Acorn/Acorn_Atom_v10-v20.txt similarity index 100% rename from src/scripts/Profiles/Legacy_3_BIT/Acorn_Atom_v10-v20.txt rename to src/scripts/Profiles/Legacy_3_BIT/Acorn/Acorn_Atom_v10-v20.txt diff --git a/src/scripts/Profiles/Legacy_3_BIT/Acorn_Atom_v21-v23.txt b/src/scripts/Profiles/Legacy_3_BIT/Acorn/Acorn_Atom_v21-v23.txt similarity index 100% rename from src/scripts/Profiles/Legacy_3_BIT/Acorn_Atom_v21-v23.txt rename to src/scripts/Profiles/Legacy_3_BIT/Acorn/Acorn_Atom_v21-v23.txt diff --git a/src/scripts/Profiles/Legacy_3_BIT/Acorn_Atom_v24-v62.txt b/src/scripts/Profiles/Legacy_3_BIT/Acorn/Acorn_Atom_v24-v62.txt similarity index 100% rename from src/scripts/Profiles/Legacy_3_BIT/Acorn_Atom_v24-v62.txt rename to src/scripts/Profiles/Legacy_3_BIT/Acorn/Acorn_Atom_v24-v62.txt diff --git a/src/scripts/Profiles/Legacy_3_BIT/BBC_Micro_v10-v20.txt b/src/scripts/Profiles/Legacy_3_BIT/Acorn/BBC_Micro_v10-v20.txt similarity index 100% rename from src/scripts/Profiles/Legacy_3_BIT/BBC_Micro_v10-v20.txt rename to src/scripts/Profiles/Legacy_3_BIT/Acorn/BBC_Micro_v10-v20.txt diff --git a/src/scripts/Profiles/Legacy_3_BIT/BBC_Micro_v21-v23.txt b/src/scripts/Profiles/Legacy_3_BIT/Acorn/BBC_Micro_v21-v23.txt similarity index 100% rename from src/scripts/Profiles/Legacy_3_BIT/BBC_Micro_v21-v23.txt rename to src/scripts/Profiles/Legacy_3_BIT/Acorn/BBC_Micro_v21-v23.txt diff --git a/src/scripts/Profiles/Legacy_3_BIT/BBC_Micro_v24.txt b/src/scripts/Profiles/Legacy_3_BIT/Acorn/BBC_Micro_v24.txt similarity index 100% rename from src/scripts/Profiles/Legacy_3_BIT/BBC_Micro_v24.txt rename to src/scripts/Profiles/Legacy_3_BIT/Acorn/BBC_Micro_v24.txt diff --git a/src/scripts/Profiles/Legacy_3_BIT/BBC_Micro_v30-v62.txt b/src/scripts/Profiles/Legacy_3_BIT/Acorn/BBC_Micro_v30-v62.txt similarity index 100% rename from src/scripts/Profiles/Legacy_3_BIT/BBC_Micro_v30-v62.txt rename to src/scripts/Profiles/Legacy_3_BIT/Acorn/BBC_Micro_v30-v62.txt diff --git a/src/scripts/Profiles/Legacy_3_BIT/Colour Test/Black.txt b/src/scripts/Profiles/Legacy_3_BIT/Acorn/Colour Test/Black.txt similarity index 100% rename from src/scripts/Profiles/Legacy_3_BIT/Colour Test/Black.txt rename to src/scripts/Profiles/Legacy_3_BIT/Acorn/Colour Test/Black.txt diff --git a/src/scripts/Profiles/Legacy_3_BIT/Colour Test/Blue.txt b/src/scripts/Profiles/Legacy_3_BIT/Acorn/Colour Test/Blue.txt similarity index 100% rename from src/scripts/Profiles/Legacy_3_BIT/Colour Test/Blue.txt rename to src/scripts/Profiles/Legacy_3_BIT/Acorn/Colour Test/Blue.txt diff --git a/src/scripts/Profiles/Legacy_3_BIT/Colour Test/Cyan.txt b/src/scripts/Profiles/Legacy_3_BIT/Acorn/Colour Test/Cyan.txt similarity index 100% rename from src/scripts/Profiles/Legacy_3_BIT/Colour Test/Cyan.txt rename to src/scripts/Profiles/Legacy_3_BIT/Acorn/Colour Test/Cyan.txt diff --git a/src/scripts/Profiles/Legacy_3_BIT/Colour Test/Default.txt b/src/scripts/Profiles/Legacy_3_BIT/Acorn/Colour Test/Default.txt similarity index 100% rename from src/scripts/Profiles/Legacy_3_BIT/Colour Test/Default.txt rename to src/scripts/Profiles/Legacy_3_BIT/Acorn/Colour Test/Default.txt diff --git a/src/scripts/Profiles/Legacy_3_BIT/Colour Test/Green.txt b/src/scripts/Profiles/Legacy_3_BIT/Acorn/Colour Test/Green.txt similarity index 100% rename from src/scripts/Profiles/Legacy_3_BIT/Colour Test/Green.txt rename to src/scripts/Profiles/Legacy_3_BIT/Acorn/Colour Test/Green.txt diff --git a/src/scripts/Profiles/Legacy_3_BIT/Colour Test/Magenta.txt b/src/scripts/Profiles/Legacy_3_BIT/Acorn/Colour Test/Magenta.txt similarity index 100% rename from src/scripts/Profiles/Legacy_3_BIT/Colour Test/Magenta.txt rename to src/scripts/Profiles/Legacy_3_BIT/Acorn/Colour Test/Magenta.txt diff --git a/src/scripts/Profiles/Legacy_3_BIT/Colour Test/Red.txt b/src/scripts/Profiles/Legacy_3_BIT/Acorn/Colour Test/Red.txt similarity index 100% rename from src/scripts/Profiles/Legacy_3_BIT/Colour Test/Red.txt rename to src/scripts/Profiles/Legacy_3_BIT/Acorn/Colour Test/Red.txt diff --git a/src/scripts/Profiles/Legacy_3_BIT/Colour Test/White.txt b/src/scripts/Profiles/Legacy_3_BIT/Acorn/Colour Test/White.txt similarity index 100% rename from src/scripts/Profiles/Legacy_3_BIT/Colour Test/White.txt rename to src/scripts/Profiles/Legacy_3_BIT/Acorn/Colour Test/White.txt diff --git a/src/scripts/Profiles/Legacy_3_BIT/Colour Test/Yellow.txt b/src/scripts/Profiles/Legacy_3_BIT/Acorn/Colour Test/Yellow.txt similarity index 100% rename from src/scripts/Profiles/Legacy_3_BIT/Colour Test/Yellow.txt rename to src/scripts/Profiles/Legacy_3_BIT/Acorn/Colour Test/Yellow.txt diff --git a/src/scripts/Profiles/Simple/Atari_ST/Atari_ST_50Hz.txt b/src/scripts/Profiles/Simple/Atari/Atari_ST/Atari_ST_50Hz.txt similarity index 100% rename from src/scripts/Profiles/Simple/Atari_ST/Atari_ST_50Hz.txt rename to src/scripts/Profiles/Simple/Atari/Atari_ST/Atari_ST_50Hz.txt diff --git a/src/scripts/Profiles/Simple/Atari_ST/Atari_ST_60Hz.txt b/src/scripts/Profiles/Simple/Atari/Atari_ST/Atari_ST_60Hz.txt similarity index 100% rename from src/scripts/Profiles/Simple/Atari_ST/Atari_ST_60Hz.txt rename to src/scripts/Profiles/Simple/Atari/Atari_ST/Atari_ST_60Hz.txt diff --git a/src/scripts/Profiles/Simple/Atari_ST/Atari_ST_Mono.txt b/src/scripts/Profiles/Simple/Atari/Atari_ST/Atari_ST_Mono.txt similarity index 100% rename from src/scripts/Profiles/Simple/Atari_ST/Atari_ST_Mono.txt rename to src/scripts/Profiles/Simple/Atari/Atari_ST/Atari_ST_Mono.txt diff --git a/src/scripts/Profiles/Simple/Atari_ST/Default.txt b/src/scripts/Profiles/Simple/Atari/Atari_ST/Default.txt similarity index 100% rename from src/scripts/Profiles/Simple/Atari_ST/Default.txt rename to src/scripts/Profiles/Simple/Atari/Atari_ST/Default.txt diff --git a/src/scripts/Profiles/Simple/Atari_STE/Atari_STE_50Hz.txt b/src/scripts/Profiles/Simple/Atari/Atari_STE/Atari_STE_50Hz.txt similarity index 100% rename from src/scripts/Profiles/Simple/Atari_STE/Atari_STE_50Hz.txt rename to src/scripts/Profiles/Simple/Atari/Atari_STE/Atari_STE_50Hz.txt diff --git a/src/scripts/Profiles/Simple/Atari_STE/Atari_STE_60Hz.txt b/src/scripts/Profiles/Simple/Atari/Atari_STE/Atari_STE_60Hz.txt similarity index 100% rename from src/scripts/Profiles/Simple/Atari_STE/Atari_STE_60Hz.txt rename to src/scripts/Profiles/Simple/Atari/Atari_STE/Atari_STE_60Hz.txt diff --git a/src/scripts/Profiles/Simple/Atari_STE/Atari_STE_Mono.txt b/src/scripts/Profiles/Simple/Atari/Atari_STE/Atari_STE_Mono.txt similarity index 100% rename from src/scripts/Profiles/Simple/Atari_STE/Atari_STE_Mono.txt rename to src/scripts/Profiles/Simple/Atari/Atari_STE/Atari_STE_Mono.txt diff --git a/src/scripts/Profiles/Simple/Atari_STE/Default.txt b/src/scripts/Profiles/Simple/Atari/Atari_STE/Default.txt similarity index 100% rename from src/scripts/Profiles/Simple/Atari_STE/Default.txt rename to src/scripts/Profiles/Simple/Atari/Atari_STE/Default.txt diff --git a/src/scripts/Profiles/Simple/Amiga/Amiga_50Hz.txt b/src/scripts/Profiles/Simple/Commodore/Amiga/Amiga_50Hz.txt similarity index 100% rename from src/scripts/Profiles/Simple/Amiga/Amiga_50Hz.txt rename to src/scripts/Profiles/Simple/Commodore/Amiga/Amiga_50Hz.txt diff --git a/src/scripts/Profiles/Simple/Amiga/Amiga_50Hz_NTSC.txt b/src/scripts/Profiles/Simple/Commodore/Amiga/Amiga_50Hz_NTSC.txt similarity index 100% rename from src/scripts/Profiles/Simple/Amiga/Amiga_50Hz_NTSC.txt rename to src/scripts/Profiles/Simple/Commodore/Amiga/Amiga_50Hz_NTSC.txt diff --git a/src/scripts/Profiles/Simple/Amiga/Amiga_60Hz.txt b/src/scripts/Profiles/Simple/Commodore/Amiga/Amiga_60Hz.txt similarity index 100% rename from src/scripts/Profiles/Simple/Amiga/Amiga_60Hz.txt rename to src/scripts/Profiles/Simple/Commodore/Amiga/Amiga_60Hz.txt diff --git a/src/scripts/Profiles/Simple/Amiga/Amiga_60Hz_PAL.txt b/src/scripts/Profiles/Simple/Commodore/Amiga/Amiga_60Hz_PAL.txt similarity index 100% rename from src/scripts/Profiles/Simple/Amiga/Amiga_60Hz_PAL.txt rename to src/scripts/Profiles/Simple/Commodore/Amiga/Amiga_60Hz_PAL.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC-98/Default.txt b/src/scripts/Profiles/Simple/Commodore/Amiga/Default.txt similarity index 93% rename from src/scripts/Profiles/6-12_BIT_RGB/PC-98/Default.txt rename to src/scripts/Profiles/Simple/Commodore/Amiga/Default.txt index 3565146e..d2b4e6bf 100644 --- a/src/scripts/Profiles/6-12_BIT_RGB/PC-98/Default.txt +++ b/src/scripts/Profiles/Simple/Commodore/Amiga/Default.txt @@ -1 +1 @@ -auto_switch=1 +auto_switch=1 diff --git a/src/scripts/Test_Profiles/3-12_BIT_BBC/Test_12BPP-Comp.txt b/src/scripts/Test_Profiles/3-12_BIT_BBC/_Test/Test_12BPP-Comp.txt similarity index 100% rename from src/scripts/Test_Profiles/3-12_BIT_BBC/Test_12BPP-Comp.txt rename to src/scripts/Test_Profiles/3-12_BIT_BBC/_Test/Test_12BPP-Comp.txt diff --git a/src/scripts/Test_Profiles/3-12_BIT_BBC/Test_3BPP-Comp(BBC).txt b/src/scripts/Test_Profiles/3-12_BIT_BBC/_Test/Test_3BPP-Comp(BBC).txt similarity index 100% rename from src/scripts/Test_Profiles/3-12_BIT_BBC/Test_3BPP-Comp(BBC).txt rename to src/scripts/Test_Profiles/3-12_BIT_BBC/_Test/Test_3BPP-Comp(BBC).txt diff --git a/src/scripts/Test_Profiles/3-12_BIT_BBC_Analog/Test_3LVL_NoTerm.txt b/src/scripts/Test_Profiles/3-12_BIT_BBC_Analog/_Test/Test_3LVL_NoTerm.txt similarity index 100% rename from src/scripts/Test_Profiles/3-12_BIT_BBC_Analog/Test_3LVL_NoTerm.txt rename to src/scripts/Test_Profiles/3-12_BIT_BBC_Analog/_Test/Test_3LVL_NoTerm.txt diff --git a/src/scripts/Test_Profiles/3-12_BIT_BBC_Analog/Test_3LVL_Term.txt b/src/scripts/Test_Profiles/3-12_BIT_BBC_Analog/_Test/Test_3LVL_Term.txt similarity index 100% rename from src/scripts/Test_Profiles/3-12_BIT_BBC_Analog/Test_3LVL_Term.txt rename to src/scripts/Test_Profiles/3-12_BIT_BBC_Analog/_Test/Test_3LVL_Term.txt diff --git a/src/scripts/Test_Profiles/3-12_BIT_BBC_Analog/Test_4LVL_Term.txt b/src/scripts/Test_Profiles/3-12_BIT_BBC_Analog/_Test/Test_4LVL_Term.txt similarity index 100% rename from src/scripts/Test_Profiles/3-12_BIT_BBC_Analog/Test_4LVL_Term.txt rename to src/scripts/Test_Profiles/3-12_BIT_BBC_Analog/_Test/Test_4LVL_Term.txt diff --git a/src/scripts/Test_Profiles/6-12_BIT_RGB/Test_12BPP+H+V.txt b/src/scripts/Test_Profiles/6-12_BIT_RGB/_Test/Test_12BPP+H+V.txt similarity index 100% rename from src/scripts/Test_Profiles/6-12_BIT_RGB/Test_12BPP+H+V.txt rename to src/scripts/Test_Profiles/6-12_BIT_RGB/_Test/Test_12BPP+H+V.txt diff --git a/src/scripts/Test_Profiles/6-12_BIT_RGB/Test_12BPP-Comp.txt b/src/scripts/Test_Profiles/6-12_BIT_RGB/_Test/Test_12BPP-Comp.txt similarity index 100% rename from src/scripts/Test_Profiles/6-12_BIT_RGB/Test_12BPP-Comp.txt rename to src/scripts/Test_Profiles/6-12_BIT_RGB/_Test/Test_12BPP-Comp.txt diff --git a/src/scripts/Test_Profiles/6-12_BIT_RGB/Test_3BPP-Comp(BBC).txt b/src/scripts/Test_Profiles/6-12_BIT_RGB/_Test/Test_3BPP-Comp(BBC).txt similarity index 100% rename from src/scripts/Test_Profiles/6-12_BIT_RGB/Test_3BPP-Comp(BBC).txt rename to src/scripts/Test_Profiles/6-12_BIT_RGB/_Test/Test_3BPP-Comp(BBC).txt diff --git a/src/scripts/Test_Profiles/6-12_BIT_RGB/Test_4BPP-Comp(Spec).txt b/src/scripts/Test_Profiles/6-12_BIT_RGB/_Test/Test_4BPP-Comp(Spec).txt similarity index 100% rename from src/scripts/Test_Profiles/6-12_BIT_RGB/Test_4BPP-Comp(Spec).txt rename to src/scripts/Test_Profiles/6-12_BIT_RGB/_Test/Test_4BPP-Comp(Spec).txt diff --git a/src/scripts/Test_Profiles/6-12_BIT_RGB/Test_6BPP+H+V(PC).txt b/src/scripts/Test_Profiles/6-12_BIT_RGB/_Test/Test_6BPP+H+V(PC).txt similarity index 100% rename from src/scripts/Test_Profiles/6-12_BIT_RGB/Test_6BPP+H+V(PC).txt rename to src/scripts/Test_Profiles/6-12_BIT_RGB/_Test/Test_6BPP+H+V(PC).txt diff --git a/src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/Test_3LVL_NoTerm.txt b/src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/_Test/Test_3LVL_NoTerm.txt similarity index 100% rename from src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/Test_3LVL_NoTerm.txt rename to src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/_Test/Test_3LVL_NoTerm.txt diff --git a/src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/Test_3LVL_Term+Clamp.txt b/src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/_Test/Test_3LVL_Term+Clamp.txt similarity index 100% rename from src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/Test_3LVL_Term+Clamp.txt rename to src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/_Test/Test_3LVL_Term+Clamp.txt diff --git a/src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/Test_3LVL_Term.txt b/src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/_Test/Test_3LVL_Term.txt similarity index 100% rename from src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/Test_3LVL_Term.txt rename to src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/_Test/Test_3LVL_Term.txt diff --git a/src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/Test_4LVL_Term.txt b/src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/_Test/Test_4LVL_Term.txt similarity index 100% rename from src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/Test_4LVL_Term.txt rename to src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/_Test/Test_4LVL_Term.txt diff --git a/src/scripts/Test_Profiles/6-12_BIT_YUV/Test_4BPP-Comp(Spec).txt b/src/scripts/Test_Profiles/6-12_BIT_YUV/_Test/Test_4BPP-Comp(Spec).txt similarity index 100% rename from src/scripts/Test_Profiles/6-12_BIT_YUV/Test_4BPP-Comp(Spec).txt rename to src/scripts/Test_Profiles/6-12_BIT_YUV/_Test/Test_4BPP-Comp(Spec).txt diff --git a/src/scripts/Test_Profiles/6-12_BIT_YUV/Test_6BPP+H+V(PC).txt b/src/scripts/Test_Profiles/6-12_BIT_YUV/_Test/Test_6BPP+H+V(PC).txt similarity index 100% rename from src/scripts/Test_Profiles/6-12_BIT_YUV/Test_6BPP+H+V(PC).txt rename to src/scripts/Test_Profiles/6-12_BIT_YUV/_Test/Test_6BPP+H+V(PC).txt diff --git a/src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/Test_3LVL_NoTerm.txt b/src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/_Test/Test_3LVL_NoTerm.txt similarity index 100% rename from src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/Test_3LVL_NoTerm.txt rename to src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/_Test/Test_3LVL_NoTerm.txt diff --git a/src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/Test_3LVL_Term+Clamp.txt b/src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/_Test/Test_3LVL_Term+Clamp.txt similarity index 100% rename from src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/Test_3LVL_Term+Clamp.txt rename to src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/_Test/Test_3LVL_Term+Clamp.txt diff --git a/src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/Test_3LVL_Term.txt b/src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/_Test/Test_3LVL_Term.txt similarity index 100% rename from src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/Test_3LVL_Term.txt rename to src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/_Test/Test_3LVL_Term.txt diff --git a/src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/Test_4LVL_Term.txt b/src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/_Test/Test_4LVL_Term.txt similarity index 100% rename from src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/Test_4LVL_Term.txt rename to src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/_Test/Test_4LVL_Term.txt diff --git a/src/scripts/Test_Profiles/Default.txt b/src/scripts/Test_Profiles/Default.txt index d63e2358..be7fddc2 100644 --- a/src/scripts/Test_Profiles/Default.txt +++ b/src/scripts/Test_Profiles/Default.txt @@ -25,6 +25,8 @@ output_colour=0 output_invert=0 scanlines=0 scanline_level=6 +yuv_pixel_double=0 +integer_aspect=0 powerup_message=1 crop_border=0 screencap_size=0 From 833f8bf00845ac6f68ec0386dc119e0fe8f33306 Mon Sep 17 00:00:00 2001 From: IanSB Date: Tue, 28 Feb 2023 02:14:48 +0000 Subject: [PATCH 20/46] Add select profile menu option --- src/cpld_atom.c | 2 +- src/cpld_null.c | 10 +-- src/cpld_rgb.c | 18 ++-- src/cpld_simple.c | 2 +- src/cpld_yuv.c | 4 +- src/defs.h | 4 +- src/filesystem.c | 97 +++++++++++++++------ src/filesystem.h | 3 +- src/osd.c | 217 +++++++++++++++++++++++++++++++++++++++++++--- 9 files changed, 300 insertions(+), 57 deletions(-) diff --git a/src/cpld_atom.c b/src/cpld_atom.c index 8a9201d8..d202d10d 100644 --- a/src/cpld_atom.c +++ b/src/cpld_atom.c @@ -279,7 +279,7 @@ static void cpld_set_frontend(int value) { cpld_t cpld_atom = { .name = "Atom", - .default_profile = "Acorn_Atom", + .default_profile = "Acorn/Acorn_Atom", .init = cpld_init, .get_version = cpld_get_version, .calibrate = cpld_calibrate, diff --git a/src/cpld_null.c b/src/cpld_null.c index 59b50ecd..3e2de27e 100644 --- a/src/cpld_null.c +++ b/src/cpld_null.c @@ -92,7 +92,7 @@ static void cpld_set_frontend(int value) cpld_t cpld_null_atom = { .name = "Atom", - .default_profile = "Atom", + .default_profile = "Acorn/Atom", .init = cpld_init, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -117,7 +117,7 @@ cpld_t cpld_null_atom = { cpld_t cpld_null_3bit = { .name = "3-12_BIT_BBC", - .default_profile = "BBC_Micro", + .default_profile = "Acorn/BBC_Micro", .init = cpld_init, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -142,7 +142,7 @@ cpld_t cpld_null_3bit = { cpld_t cpld_null_6bit = { .name = "3-12_BIT_BBC", - .default_profile = "BBC_Micro", + .default_profile = "Acorn/BBC_Micro", .init = cpld_init, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -167,7 +167,7 @@ cpld_t cpld_null_6bit = { cpld_t cpld_null_simple = { .name = "Simple", - .default_profile = "Amiga", + .default_profile = "Commodore/Amiga", .init = cpld_init, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -192,7 +192,7 @@ cpld_t cpld_null_simple = { cpld_t cpld_null = { .name = "3-12_BIT_BBC", - .default_profile = "BBC_Micro", + .default_profile = "Acorn/BBC_Micro", .init = cpld_init, .get_version = cpld_get_version, .calibrate = cpld_calibrate, diff --git a/src/cpld_rgb.c b/src/cpld_rgb.c index 38666d8c..5617e15d 100644 --- a/src/cpld_rgb.c +++ b/src/cpld_rgb.c @@ -2194,7 +2194,7 @@ static int cpld_frontend_info_bbc() { cpld_t cpld_bbc = { .name = "3-12_BIT_BBC", - .default_profile = "BBC_Micro", + .default_profile = "Acorn/BBC_Micro", .init = cpld_init_bbc, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -2219,7 +2219,7 @@ cpld_t cpld_bbc = { cpld_t cpld_bbcv10v20 = { .name = "Legacy_3_BIT", - .default_profile = "BBC_Micro_v10-v20", + .default_profile = "Acorn/BBC_Micro_v10-v20", .init = cpld_init_bbc, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -2244,7 +2244,7 @@ cpld_t cpld_bbcv10v20 = { cpld_t cpld_bbcv21v23 = { .name = "Legacy_3_BIT", - .default_profile = "BBC_Micro_v21-v23", + .default_profile = "Acorn/BBC_Micro_v21-v23", .init = cpld_init_bbc, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -2269,7 +2269,7 @@ cpld_t cpld_bbcv21v23 = { cpld_t cpld_bbcv24 = { .name = "Legacy_3_BIT", - .default_profile = "BBC_Micro_v24", + .default_profile = "Acorn/BBC_Micro_v24", .init = cpld_init_bbc, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -2294,7 +2294,7 @@ cpld_t cpld_bbcv24 = { cpld_t cpld_bbcv30v62 = { .name = "Legacy_3_BIT", - .default_profile = "BBC_Micro_v30-v62", + .default_profile = "Acorn/BBC_Micro_v30-v62", .init = cpld_init_bbc, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -2333,7 +2333,7 @@ static int cpld_frontend_info_rgb_ttl() { cpld_t cpld_rgb_ttl = { .name = "6-12_BIT_RGB", - .default_profile = "Acorn_Electron", + .default_profile = "Acorn/Acorn_Electron", .init = cpld_init_rgb_ttl, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -2358,7 +2358,7 @@ cpld_t cpld_rgb_ttl = { cpld_t cpld_rgb_ttl_24mhz = { .name = "3-12_BIT_BBC", - .default_profile = "BBC_Micro", + .default_profile = "Acorn/BBC_Micro", .init = cpld_init_rgb_ttl, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -2407,7 +2407,7 @@ static void cpld_set_frontend_rgb_analog(int value) { cpld_t cpld_rgb_analog = { .name = "6-12_BIT_RGB_Analog", - .default_profile = "Amstrad_CPC", + .default_profile = "Amstrad/Amstrad_CPC", .init = cpld_init_rgb_analog, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -2433,7 +2433,7 @@ cpld_t cpld_rgb_analog = { cpld_t cpld_rgb_analog_24mhz = { .name = "3-12_BIT_BBC_Analog", - .default_profile = "BBC_Micro", + .default_profile = "Acorn/BBC_Micro", .init = cpld_init_rgb_analog, .get_version = cpld_get_version, .calibrate = cpld_calibrate, diff --git a/src/cpld_simple.c b/src/cpld_simple.c index 8320cab4..a27ad32a 100644 --- a/src/cpld_simple.c +++ b/src/cpld_simple.c @@ -522,7 +522,7 @@ static void cpld_set_frontend(int value) cpld_t cpld_simple = { .name = "Simple", - .default_profile = "Amiga", + .default_profile = "Commodore/Amiga", .init = cpld_init, .get_version = cpld_get_version, .calibrate = cpld_calibrate, diff --git a/src/cpld_yuv.c b/src/cpld_yuv.c index 7f99d315..e279ae44 100644 --- a/src/cpld_yuv.c +++ b/src/cpld_yuv.c @@ -1427,7 +1427,7 @@ static void cpld_init_ttl(int value) { cpld_t cpld_yuv_analog = { .name = "6-12_BIT_YUV_Analog", - .default_profile = "Apple_II", + .default_profile = "Apple/Apple_II", .init = cpld_init_analog, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -1451,7 +1451,7 @@ cpld_t cpld_yuv_analog = { cpld_t cpld_yuv_ttl = { .name = "6-12_BIT_YUV", - .default_profile = "Apple_IIc_TTL", + .default_profile = "Apple/Apple_IIc_TTL", .init = cpld_init_ttl, .get_version = cpld_get_version, .calibrate = cpld_calibrate, diff --git a/src/defs.h b/src/defs.h index 7d0f0680..52cdee9d 100644 --- a/src/defs.h +++ b/src/defs.h @@ -312,9 +312,9 @@ typedef struct { #define MAX_CPLD_FILENAMES 24 #define MAX_FILENAME_WIDTH 40 -#define MAX_PROFILES 64 +#define MAX_PROFILES 256 #define MAX_SUB_PROFILES 32 -#define MAX_PROFILE_WIDTH 32 +#define MAX_PROFILE_WIDTH 256 #define MAX_BUFFER_SIZE 2048 #define MAX_CONFIG_BUFFER_SIZE 8192 #define DEFAULT_STRING "Default" diff --git a/src/filesystem.c b/src/filesystem.c index ca2d5aed..0bf8a3bc 100644 --- a/src/filesystem.c +++ b/src/filesystem.c @@ -400,13 +400,24 @@ void capture_screenshot(capture_info_t *capinfo, char *profile) { result = f_mkdir(CAPTURE_BASE); if (result != FR_OK && result != FR_EXIST) { - log_warn("Failed to create dir %s (result = %d)",CAPTURE_BASE, result); + log_warn("Failed to create dir1 %s (result = %d)",CAPTURE_BASE, result); + } + + strcpy(filepath, profile); + char *index = strchr(filepath, '/'); + if (index) { + *index = 0; + } + sprintf(path, "%s/%s", CAPTURE_BASE, filepath); + result = f_mkdir(path); + if (result != FR_OK && result != FR_EXIST) { + log_warn("Failed to create dir2 %s (result = %d)",path, result); } sprintf(path, "%s/%s", CAPTURE_BASE, profile); result = f_mkdir(path); if (result != FR_OK && result != FR_EXIST) { - log_warn("Failed to create dir %s (result = %d)", path, result); + log_warn("Failed to create dir3 %s (result = %d)", path, result); } initialize_capture_id(path); @@ -593,8 +604,7 @@ void scan_cpld_filenames(char cpld_filenames[MAX_CPLD_FILENAMES][MAX_FILENAME_WI close_filesystem(); } - -void scan_profiles(char profile_names[MAX_PROFILES][MAX_PROFILE_WIDTH], int has_sub_profiles[MAX_PROFILES], char *path, size_t *count) { +void scan_profiles(char manufacturer_names[MAX_PROFILES][MAX_PROFILE_WIDTH], char profile_names[MAX_PROFILES][MAX_PROFILE_WIDTH], int has_sub_profiles[MAX_PROFILES], char *path, size_t *mcount, size_t *count) { FRESULT res; DIR dir; FIL file; @@ -605,39 +615,64 @@ void scan_profiles(char profile_names[MAX_PROFILES][MAX_PROFILE_WIDTH], int has_ if (res == FR_OK) { for (;;) { res = f_readdir(&dir, &fno); - if (res != FR_OK || fno.fname[0] == 0 || *count == MAX_PROFILES) break; + if (res != FR_OK || fno.fname[0] == 0 || *mcount == MAX_PROFILES) break; if (fno.fattrib & AM_DIR && strcmp(fno.fname, PAXHEADER) != 0) { fno.fname[MAX_PROFILE_WIDTH - 1] = 0; - strcpy(profile_names[*count], fno.fname); - (*count)++; - } else { - if (fno.fname[0] != '.' && strlen(fno.fname) > 4 && strcmp(fno.fname, DEFAULTTXT_STRING) != 0) { - char* filetype = fno.fname + strlen(fno.fname)-4; - if (strcmp(filetype, ".txt") == 0) { - fno.fname[MAX_PROFILE_WIDTH - 1] = 0; - strcpy(profile_names[*count], fno.fname); - profile_names[*count][strlen(fno.fname) - 4] = 0; - (*count)++; - } - } + strcpy(manufacturer_names[*mcount], fno.fname); + log_info("manufname: %s", manufacturer_names[*mcount]); + (*mcount)++; } } f_closedir(&dir); - qsort(profile_names, *count, sizeof *profile_names, string_compare); - for (int i = 0; i < (*count); i++) { - sprintf(fpath, "%s/%s.txt", path, profile_names[i]); - res = f_open(&file, fpath, FA_READ); + qsort(manufacturer_names, *mcount, sizeof *manufacturer_names, string_compare); + for (int i = 0; i < *mcount; i++) { + sprintf(fpath, "%s/%s", path, manufacturer_names[i]); + log_info("scanning %s", fpath); + res = f_opendir(&dir, fpath); + log_info("result %X", res); if (res == FR_OK) { - f_close(&file); - has_sub_profiles[i] = 0; + for (;;) { + res = f_readdir(&dir, &fno); + if (res != FR_OK || fno.fname[0] == 0 || *count == MAX_PROFILES) break; + if (fno.fattrib & AM_DIR && strcmp(fno.fname, PAXHEADER) != 0) { + fno.fname[MAX_PROFILE_WIDTH - 1] = 0; + sprintf(profile_names[*count], "%s/%s", manufacturer_names[i], fno.fname); + log_info("profiles: %s", profile_names[*count]); + (*count)++; + } else { + if (fno.fname[0] != '.' && strlen(fno.fname) > 4 && strcmp(fno.fname, DEFAULTTXT_STRING) != 0) { + char* filetype = fno.fname + strlen(fno.fname)-4; + if (strcmp(filetype, ".txt") == 0) { + fno.fname[MAX_PROFILE_WIDTH - 1] = 0; + fno.fname[strlen(fno.fname) - 4] = 0; + sprintf(profile_names[*count], "%s/%s", manufacturer_names[i], fno.fname); + log_info("profiles: %s", profile_names[*count]); + (*count)++; + } + } + } + } + f_closedir(&dir); + qsort(profile_names, *count, sizeof *profile_names, string_compare); + for (int i = 0; i < (*count); i++) { + sprintf(fpath, "%s/%s.txt", path, profile_names[i]); + res = f_open(&file, fpath, FA_READ); + if (res == FR_OK) { + f_close(&file); + has_sub_profiles[i] = 0; + } else { + has_sub_profiles[i] = 1; + } + } } else { - has_sub_profiles[i] = 1; + break; } } } close_filesystem(); } + void scan_sub_profiles(char sub_profile_names[MAX_SUB_PROFILES][MAX_PROFILE_WIDTH], char *sub_path, size_t *count) { FRESULT res; DIR dir; @@ -792,14 +827,24 @@ int file_save(char *dirpath, char *name, char *buffer, unsigned int buffer_size, result = f_mkdir(path); if (result != FR_OK && result != FR_EXIST) { - log_warn("Failed to create dir %s (result = %d)",path, result); + log_warn("Failed to create dir1 %s (result = %d)",path, result); + } + strcpy(temp_buffer, name); + char *index = strchr(temp_buffer, '/'); + if (index) { + *index = 0; + } + sprintf(path, "%s/%s/%s", SAVED_PROFILE_BASE, cpld->name, temp_buffer); + result = f_mkdir(path); + if (result != FR_OK && result != FR_EXIST) { + log_warn("Failed to create dir2 %s (result = %d)",path, result); } if (dirpath != NULL) { sprintf(path, "%s/%s/%s", SAVED_PROFILE_BASE, cpld->name, dirpath); result = f_mkdir(path); if (result != FR_OK && result != FR_EXIST) { - log_warn("Failed to create dir %s (result = %d)", dirpath, result); + log_warn("Failed to create dir3 %s (result = %d)", dirpath, result); } if (saved_config_number == 0) { sprintf(path, "%s/%s/%s/%s.txt", SAVED_PROFILE_BASE, cpld->name, dirpath, name); diff --git a/src/filesystem.h b/src/filesystem.h index 6b635c81..ef847b92 100644 --- a/src/filesystem.h +++ b/src/filesystem.h @@ -10,7 +10,8 @@ void capture_screenshot(capture_info_t *capinfo, char *profile); void close_filesystem(); void scan_cpld_filenames(char cpld_filenames[MAX_CPLD_FILENAMES][MAX_FILENAME_WIDTH], char *path, int *count); -void scan_profiles(char profile_names[MAX_PROFILES][MAX_PROFILE_WIDTH], int has_sub_profiles[MAX_PROFILES], char *path, size_t *count); +void scan_profiles(char manufacturer_names[MAX_PROFILES][MAX_PROFILE_WIDTH], char profile_names[MAX_PROFILES][MAX_PROFILE_WIDTH], int has_sub_profiles[MAX_PROFILES], char *path, size_t *mcount, size_t *count); + void scan_sub_profiles(char sub_profile_names[MAX_SUB_PROFILES][MAX_PROFILE_WIDTH], char *sub_path, size_t *count); unsigned int file_read_profile(char *profile_name, int saved_config_number, char *sub_profile_name, int updatecmd, char *command_string, unsigned int buffer_size); diff --git a/src/osd.c b/src/osd.c index 35e0bd66..367177c4 100644 --- a/src/osd.c +++ b/src/osd.c @@ -425,6 +425,8 @@ typedef enum { I_SAVE, // Item is a saving profile option I_RESTORE, // Item is a restoring a profile option I_UPDATE, // Item is a cpld update + I_PICKMAN, // Item is a pick manufacturer + I_PICKPRO, // Item is a pick profile I_CALIBRATE,// Item is a calibration update I_TEST // Item is a 50 Hz test option } item_type_t; @@ -478,6 +480,8 @@ static void info_test_50hz(int line); static void rebuild_geometry_menu(menu_t *menu); static void rebuild_sampling_menu(menu_t *menu); static void rebuild_update_cpld_menu(menu_t *menu); +static void rebuild_manufacturer_menu(menu_t *menu); +static void rebuild_profile_menu(menu_t *menu); static info_menu_item_t source_summary_ref = { I_INFO, "Source Summary", info_source_summary}; static info_menu_item_t system_summary_ref = { I_INFO, "System Summary", info_system_summary}; @@ -533,8 +537,83 @@ static menu_t update_cpld_menu = { } }; +static menu_t manufacturer_menu = { + "Select Profile", + rebuild_manufacturer_menu, + { + // Allow space for max 30 params + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL + } +}; - +static menu_t profile_menu = { + "Select Profile", + rebuild_profile_menu, + { + // Allow space for max 30 params + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL + } +}; static param_menu_item_t profile_ref = { I_FEATURE, &features[F_PROFILE] }; static param_menu_item_t saved_ref = { I_FEATURE, &features[F_SAVED_CONFIG] }; @@ -599,6 +678,7 @@ static menu_t info_menu = { (base_menu_item_t *) &back_ref, (base_menu_item_t *) &source_summary_ref, (base_menu_item_t *) &system_summary_ref, + (base_menu_item_t *) &test_50hz_ref, (base_menu_item_t *) &cal_summary_ref, (base_menu_item_t *) &cal_detail_ref, (base_menu_item_t *) &cal_raw_ref, @@ -797,6 +877,7 @@ static child_menu_item_t settings_menu_ref = { I_MENU, &settings_menu }; static child_menu_item_t geometry_menu_ref = { I_MENU, &geometry_menu }; static child_menu_item_t sampling_menu_ref = { I_MENU, &sampling_menu }; static child_menu_item_t update_cpld_menu_ref = { I_MENU, &update_cpld_menu }; +static child_menu_item_t manufacturer_menu_ref = { I_MENU, &manufacturer_menu }; static menu_t main_menu = { "Main Menu", @@ -891,6 +972,8 @@ static char message[MAX_STRING_SIZE]; // Temporary filename for assembling OSD lines static char filename[MAX_STRING_SIZE]; +static char selected_manufacturer[MAX_STRING_SIZE]; + // Is the OSD currently active static int active = 0; static int old_active = -1; @@ -939,6 +1022,7 @@ static char main_buffer[MAX_BUFFER_SIZE]; static char sub_default_buffer[MAX_BUFFER_SIZE]; static char sub_profile_buffers[MAX_SUB_PROFILES][MAX_BUFFER_SIZE]; static int has_sub_profiles[MAX_PROFILES]; +static char manufacturer_names[MAX_PROFILES][MAX_PROFILE_WIDTH]; static char profile_names[MAX_PROFILES][MAX_PROFILE_WIDTH]; static char sub_profile_names[MAX_SUB_PROFILES][MAX_PROFILE_WIDTH]; static char resolution_names[MAX_NAMES][MAX_NAMES_WIDTH]; @@ -953,7 +1037,7 @@ static int ntsc_palette = 0; static int inhibit_palette_dimming = 0; static int single_button_mode = 0; - +static int manufacturer_count = 0; static int disable_overclock = 0; static unsigned int cpu_clock = 1000; @@ -994,7 +1078,6 @@ void set_menu_table() { main_menu.items[index++] = (base_menu_item_t *) &save_ref; main_menu.items[index++] = (base_menu_item_t *) &restore_ref; if (frontend != FRONTEND_SIMPLE) main_menu.items[index++] = (base_menu_item_t *) &cal_sampling_ref; - main_menu.items[index++] = (base_menu_item_t *) &test_50hz_ref; main_menu.items[index++] = (base_menu_item_t *) &hdmi_ref; main_menu.items[index++] = (base_menu_item_t *) &resolution_ref; main_menu.items[index++] = (base_menu_item_t *) &refresh_ref; @@ -1004,6 +1087,7 @@ void set_menu_table() { main_menu.items[index++] = (base_menu_item_t *) &autoswitch_ref; main_menu.items[index++] = (base_menu_item_t *) &subprofile_ref; if (get_parameter(F_AUTO_SWITCH) == AUTOSWITCH_IIGS_MANUAL || get_parameter(F_AUTO_SWITCH) == AUTOSWITCH_MANUAL) main_menu.items[index++] = (base_menu_item_t *) &timingset_ref; + main_menu.items[index++] = (base_menu_item_t *) &manufacturer_menu_ref; if (single_button_mode) main_menu.items[index++] = (base_menu_item_t *) &direction_ref; main_menu.items[index++] = NULL; @@ -1213,6 +1297,8 @@ static const char *item_name(base_menu_item_t *item) { case I_GEOMETRY: case I_UPDATE: case I_PARAM: + case I_PICKPRO: + case I_PICKMAN: return ((param_menu_item_t *)item)->param->label; case I_INFO: case I_TEST: @@ -1634,6 +1720,8 @@ static void rebuild_sampling_menu(menu_t *menu) { static char cpld_filenames[MAX_CPLD_FILENAMES][MAX_FILENAME_WIDTH]; static param_t cpld_filename_params[MAX_CPLD_FILENAMES]; +static param_t manufacturer_params[MAX_PROFILES]; +static param_t profile_params[MAX_PROFILES]; static void rebuild_update_cpld_menu(menu_t *menu) { int i; @@ -1670,6 +1758,30 @@ static void rebuild_update_cpld_menu(menu_t *menu) { rebuild_menu(menu, I_UPDATE, cpld_filename_params); } +static void rebuild_manufacturer_menu(menu_t *menu) { + int i; + for (i = 0; i < manufacturer_count; i++) { + manufacturer_params[i].key = i; + manufacturer_params[i].label = manufacturer_names[i]; + } + manufacturer_params[i].key = -1; + rebuild_menu(menu, I_PICKMAN, manufacturer_params); +} + +static void rebuild_profile_menu(menu_t *menu) { + int i; + int j = 0; + for (i = 0; i <= features[F_PROFILE].max; i++) { + if (strncmp(selected_manufacturer, profile_names[i], strlen(selected_manufacturer)) == 0) { + log_info("Found %s", profile_names[i]); + profile_params[j].key = i; + profile_params[j].label = profile_names[i]; + j++; + } + } + profile_params[j].key = -1; + rebuild_menu(menu, I_PICKPRO, profile_params); +} static void redraw_menu() { menu_t *menu = current_menu[depth]; @@ -1686,7 +1798,7 @@ static void redraw_menu() { line += 2; info_item->show_info(line); } - } else if (osd_state == MENU || osd_state == PARAM) { + } else if (osd_state == MENU || osd_state == PARAM) { osd_set_noupdate(line, ATTR_DOUBLE_SIZE, menu->name); line += 2; // Work out the longest item name @@ -1707,9 +1819,36 @@ static void redraw_menu() { char sel_close = (i == current) ? '<' : sel_none; const char *name = item_name(item); *mp++ = (osd_state != PARAM) ? sel_open : sel_none; - strcpy(mp, name); + if ((item)->type == I_PICKMAN) { + ; + if (name[0] == '_') { + strcpy(mp, name + 1); + } else { + strcpy(mp, name); + } + for (int j=0; j < strlen(mp); j++) { + if (*(mp+j) == '_') { + *(mp+j) = ' '; + } + } + } else if ((item)->type == I_PICKPRO) { + char *index = strchr(name, '/'); + if (index) { + strcpy(mp, index + 1); + } else { + strcpy(mp, name); + } + for (int j=0; j < strlen(mp); j++) { + if (*(mp+j) == '_') { + *(mp+j) = ' '; + } + } + } else { + strcpy(mp, name); + } + mp += strlen(mp); - if ((item)->type == I_FEATURE || (item)->type == I_GEOMETRY || (item)->type == I_PARAM || (item)->type == I_PARAM) { + if ((item)->type == I_FEATURE || (item)->type == I_GEOMETRY || (item)->type == I_PARAM) { int len = strlen(name); while (len < max) { *mp++ = ' '; @@ -1718,7 +1857,16 @@ static void redraw_menu() { *mp++ = ' '; *mp++ = '='; *mp++ = (osd_state == PARAM) ? sel_open : sel_none; - strcpy(mp, get_param_string((param_menu_item_t *)item)); + if ((item)->type == I_FEATURE && ((param_menu_item_t *)item)->param->key == F_PROFILE) { + char *index = strchr(get_param_string((param_menu_item_t *)item), '/'); + if (index) { + strcpy(mp, index + 1); + } else { + strcpy(mp, get_param_string((param_menu_item_t *)item)); + } + } else { + strcpy(mp, get_param_string((param_menu_item_t *)item)); + } int param_len = strlen(mp); for (int j=0; j < param_len; j++) { if (*mp == '_') { @@ -1727,6 +1875,8 @@ static void redraw_menu() { mp++; } } + + *mp++ = sel_close; *mp++ = '\0'; osd_set_noupdate(line++, 0, message); @@ -5034,6 +5184,7 @@ int osd_key(int key) { last_up_down_key = 0; // ENTER switch (type) { + case I_MENU: depth++; current_menu[depth] = child_item->child; @@ -5045,6 +5196,41 @@ int osd_key(int key) { osd_clear_no_palette(); redraw_menu(); break; + + case I_PICKMAN: + strcpy(selected_manufacturer, item_name(item)); + log_info("Selected Manufacturer = %s", selected_manufacturer); + depth++; + current_menu[depth] = &profile_menu; + current_item[depth] = 0; + // Rebuild dynamically populated menus, e.g. the sampling and geometry menus that are mode specific + osd_refresh(); + osd_clear_no_palette(); + redraw_menu(); + break; + case I_PICKPRO: + log_info("Selected Profile = %s", item_name(item)); + depth = 0; + current_menu[depth] = &main_menu; + current_item[depth] = 0; + + for (int i=0; i<= features[F_PROFILE].max; i++) { + if (strcmp(profile_names[i], item_name(item)) == 0) { + set_parameter(F_PROFILE, i); + load_profiles(i, 1); + process_profile(i); + set_feature(F_SUB_PROFILE, 0); + log_info("Profile now = %s", item_name(item)); + break; + } + } + + // Rebuild dynamically populated menus, e.g. the sampling and geometry menus that are mode specific + osd_refresh(); + osd_clear_no_palette(); + redraw_menu(); + break; + case I_FEATURE: case I_GEOMETRY: case I_PARAM: @@ -5073,6 +5259,7 @@ int osd_key(int key) { } redraw_menu(); break; + case I_INFO: osd_state = INFO; osd_clear_no_palette(); @@ -5088,8 +5275,13 @@ int osd_key(int key) { osd_clear(); osd_state = IDLE; } else { - depth--; - if (get_parameter(F_RETURN_POSITION) == 0) + if (current_menu[depth] == &profile_menu) { + depth--; + osd_refresh(); + } else { + depth--; + } + if (get_parameter(F_RETURN_POSITION) == 0 && current_menu[depth] != &manufacturer_menu) current_item[depth] = 0; osd_clear_no_palette(); redraw_menu(); @@ -5194,6 +5386,7 @@ int osd_key(int key) { if (first_time_press == 1) { first_time_press = 2; osd_clear(); + clear_menu_bits(); osd_set(0, ATTR_DOUBLE_SIZE, "Auto Calibration"); osd_set(1, 0, "Video must be static during calibration"); action_calibrate_auto(); @@ -5359,6 +5552,8 @@ int osd_key(int key) { } break; + + default: log_warn("Illegal osd state %d reached", osd_state); osd_state = IDLE; @@ -5996,9 +6191,11 @@ void osd_init() { unsigned int bytes = file_read_profile(ROOT_DEFAULT_STRING, 0, NULL, 0, default_buffer, MAX_BUFFER_SIZE - 4); if (bytes != 0) { size_t count = 0; - scan_profiles(profile_names, has_sub_profiles, path, &count); + size_t mcount = 0; + scan_profiles(manufacturer_names, profile_names, has_sub_profiles, path, &mcount, &count); if (count != 0) { features[F_PROFILE].max = count - 1; + manufacturer_count = mcount; for (int i = 0; i < count; i++) { if (has_sub_profiles[i]) { log_info("FOUND SUB-FOLDER: %s", profile_names[i]); From 0c875c05af036fc8c7983c8bffcd0178e5fb4ad8 Mon Sep 17 00:00:00 2001 From: IanSB Date: Tue, 28 Feb 2023 22:37:08 +0000 Subject: [PATCH 21/46] Improve select profile menu to display profiles from all CPLD variants --- src/cpld.h | 3 + src/cpld_atom.c | 3 + src/cpld_null.c | 15 +++++ src/cpld_rgb.c | 27 ++++++++ src/cpld_simple.c | 3 + src/cpld_yuv.c | 6 ++ src/defs.h | 5 ++ src/filesystem.c | 92 ++++++++++++++++----------- src/filesystem.h | 4 +- src/geometry.c | 2 +- src/osd.c | 155 +++++++++++++++++++++++++++++++++++++--------- 11 files changed, 248 insertions(+), 67 deletions(-) diff --git a/src/cpld.h b/src/cpld.h index e65c5197..09910781 100644 --- a/src/cpld.h +++ b/src/cpld.h @@ -30,6 +30,9 @@ typedef struct { // for the two different CPLD implementations typedef struct { const char *name; + const char *nameBBC; + const char *nameRGB; + const char *nameYUV; const char *default_profile; void (*init)(int cpld_version); int (*get_version)(); diff --git a/src/cpld_atom.c b/src/cpld_atom.c index d202d10d..fcf461c1 100644 --- a/src/cpld_atom.c +++ b/src/cpld_atom.c @@ -279,6 +279,9 @@ static void cpld_set_frontend(int value) { cpld_t cpld_atom = { .name = "Atom", + .nameBBC = "Atom", + .nameRGB = "Atom", + .nameYUV = "Atom", .default_profile = "Acorn/Acorn_Atom", .init = cpld_init, .get_version = cpld_get_version, diff --git a/src/cpld_null.c b/src/cpld_null.c index 3e2de27e..6eb570ed 100644 --- a/src/cpld_null.c +++ b/src/cpld_null.c @@ -92,6 +92,9 @@ static void cpld_set_frontend(int value) cpld_t cpld_null_atom = { .name = "Atom", + .nameBBC = "Atom", + .nameRGB = "Atom", + .nameYUV = "Atom", .default_profile = "Acorn/Atom", .init = cpld_init, .get_version = cpld_get_version, @@ -117,6 +120,9 @@ cpld_t cpld_null_atom = { cpld_t cpld_null_3bit = { .name = "3-12_BIT_BBC", + .nameBBC = "3-12_BIT_BBC", + .nameRGB = "3-12_BIT_BBC", + .nameYUV = "3-12_BIT_BBC", .default_profile = "Acorn/BBC_Micro", .init = cpld_init, .get_version = cpld_get_version, @@ -142,6 +148,9 @@ cpld_t cpld_null_3bit = { cpld_t cpld_null_6bit = { .name = "3-12_BIT_BBC", + .nameBBC = "3-12_BIT_BBC", + .nameRGB = "6-12_BIT_RGB", + .nameYUV = "6-12_BIT_YUV", .default_profile = "Acorn/BBC_Micro", .init = cpld_init, .get_version = cpld_get_version, @@ -167,6 +176,9 @@ cpld_t cpld_null_6bit = { cpld_t cpld_null_simple = { .name = "Simple", + .nameBBC = "Simple", + .nameRGB = "Simple", + .nameYUV = "Simple", .default_profile = "Commodore/Amiga", .init = cpld_init, .get_version = cpld_get_version, @@ -192,6 +204,9 @@ cpld_t cpld_null_simple = { cpld_t cpld_null = { .name = "3-12_BIT_BBC", + .nameBBC = "3-12_BIT_BBC", + .nameRGB = "6-12_BIT_RGB", + .nameYUV = "6-12_BIT_YUV", .default_profile = "Acorn/BBC_Micro", .init = cpld_init, .get_version = cpld_get_version, diff --git a/src/cpld_rgb.c b/src/cpld_rgb.c index 5617e15d..af9977e0 100644 --- a/src/cpld_rgb.c +++ b/src/cpld_rgb.c @@ -2194,6 +2194,9 @@ static int cpld_frontend_info_bbc() { cpld_t cpld_bbc = { .name = "3-12_BIT_BBC", + .nameBBC = "3-12_BIT_BBC", + .nameRGB = "3-12_BIT_BBC", + .nameYUV = "3-12_BIT_BBC", .default_profile = "Acorn/BBC_Micro", .init = cpld_init_bbc, .get_version = cpld_get_version, @@ -2219,6 +2222,9 @@ cpld_t cpld_bbc = { cpld_t cpld_bbcv10v20 = { .name = "Legacy_3_BIT", + .nameBBC = "Legacy_3_BIT", + .nameRGB = "Legacy_3_BIT", + .nameYUV = "Legacy_3_BIT", .default_profile = "Acorn/BBC_Micro_v10-v20", .init = cpld_init_bbc, .get_version = cpld_get_version, @@ -2244,6 +2250,9 @@ cpld_t cpld_bbcv10v20 = { cpld_t cpld_bbcv21v23 = { .name = "Legacy_3_BIT", + .nameBBC = "Legacy_3_BIT", + .nameRGB = "Legacy_3_BIT", + .nameYUV = "Legacy_3_BIT", .default_profile = "Acorn/BBC_Micro_v21-v23", .init = cpld_init_bbc, .get_version = cpld_get_version, @@ -2269,6 +2278,9 @@ cpld_t cpld_bbcv21v23 = { cpld_t cpld_bbcv24 = { .name = "Legacy_3_BIT", + .nameBBC = "Legacy_3_BIT", + .nameRGB = "Legacy_3_BIT", + .nameYUV = "Legacy_3_BIT", .default_profile = "Acorn/BBC_Micro_v24", .init = cpld_init_bbc, .get_version = cpld_get_version, @@ -2294,6 +2306,9 @@ cpld_t cpld_bbcv24 = { cpld_t cpld_bbcv30v62 = { .name = "Legacy_3_BIT", + .nameBBC = "Legacy_3_BIT", + .nameRGB = "Legacy_3_BIT", + .nameYUV = "Legacy_3_BIT", .default_profile = "Acorn/BBC_Micro_v30-v62", .init = cpld_init_bbc, .get_version = cpld_get_version, @@ -2333,6 +2348,9 @@ static int cpld_frontend_info_rgb_ttl() { cpld_t cpld_rgb_ttl = { .name = "6-12_BIT_RGB", + .nameBBC = "3-12_BIT_BBC", + .nameRGB = "6-12_BIT_RGB", + .nameYUV = "6-12_BIT_YUV", .default_profile = "Acorn/Acorn_Electron", .init = cpld_init_rgb_ttl, .get_version = cpld_get_version, @@ -2358,6 +2376,9 @@ cpld_t cpld_rgb_ttl = { cpld_t cpld_rgb_ttl_24mhz = { .name = "3-12_BIT_BBC", + .nameBBC = "3-12_BIT_BBC", + .nameRGB = "6-12_BIT_RGB", + .nameYUV = "6-12_BIT_YUV", .default_profile = "Acorn/BBC_Micro", .init = cpld_init_rgb_ttl, .get_version = cpld_get_version, @@ -2407,6 +2428,9 @@ static void cpld_set_frontend_rgb_analog(int value) { cpld_t cpld_rgb_analog = { .name = "6-12_BIT_RGB_Analog", + .nameBBC = "3-12_BIT_BBC_Analog", + .nameRGB = "6-12_BIT_RGB_Analog", + .nameYUV = "6-12_BIT_YUV_Analog", .default_profile = "Amstrad/Amstrad_CPC", .init = cpld_init_rgb_analog, .get_version = cpld_get_version, @@ -2433,6 +2457,9 @@ cpld_t cpld_rgb_analog = { cpld_t cpld_rgb_analog_24mhz = { .name = "3-12_BIT_BBC_Analog", + .nameBBC = "3-12_BIT_BBC_Analog", + .nameRGB = "6-12_BIT_RGB_Analog", + .nameYUV = "6-12_BIT_YUV_Analog", .default_profile = "Acorn/BBC_Micro", .init = cpld_init_rgb_analog, .get_version = cpld_get_version, diff --git a/src/cpld_simple.c b/src/cpld_simple.c index a27ad32a..79fd775f 100644 --- a/src/cpld_simple.c +++ b/src/cpld_simple.c @@ -522,6 +522,9 @@ static void cpld_set_frontend(int value) cpld_t cpld_simple = { .name = "Simple", + .nameBBC = "Simple", + .nameRGB = "Simple", + .nameYUV = "Simple", .default_profile = "Commodore/Amiga", .init = cpld_init, .get_version = cpld_get_version, diff --git a/src/cpld_yuv.c b/src/cpld_yuv.c index e279ae44..4e79cf2f 100644 --- a/src/cpld_yuv.c +++ b/src/cpld_yuv.c @@ -1427,6 +1427,9 @@ static void cpld_init_ttl(int value) { cpld_t cpld_yuv_analog = { .name = "6-12_BIT_YUV_Analog", + .nameBBC = "3-12_BIT_BBC_Analog", + .nameRGB = "6-12_BIT_RGB_Analog", + .nameYUV = "6-12_BIT_YUV_Analog", .default_profile = "Apple/Apple_II", .init = cpld_init_analog, .get_version = cpld_get_version, @@ -1451,6 +1454,9 @@ cpld_t cpld_yuv_analog = { cpld_t cpld_yuv_ttl = { .name = "6-12_BIT_YUV", + .nameBBC = "3-12_BIT_BBC", + .nameRGB = "6-12_BIT_RGB", + .nameYUV = "6-12_BIT_YUV", .default_profile = "Apple/Apple_IIc_TTL", .init = cpld_init_ttl, .get_version = cpld_get_version, diff --git a/src/defs.h b/src/defs.h index 52cdee9d..2d559a0b 100644 --- a/src/defs.h +++ b/src/defs.h @@ -333,6 +333,11 @@ typedef struct { #define FORCE_UPDATE_FILE_MESSAGE "Deleting this file will force a CPLD update check on the next reset\r\n" #define BLANK_FILE "/cpld_firmware/recovery/blank/BLANK.xsvf" +#define BBC_CPLD_HEADER "(BBC) " +#define RGB_CPLD_HEADER "(RGB) " +#define YUV_CPLD_HEADER "(YUV) " +#define CPLD_HEADER_LENGTH 6 + #define PAXHEADER "PaxHeader" #define NTSC_SOFT 0x04 diff --git a/src/filesystem.c b/src/filesystem.c index 0bf8a3bc..01b1cb45 100644 --- a/src/filesystem.c +++ b/src/filesystem.c @@ -466,23 +466,20 @@ void capture_screenshot(capture_info_t *capinfo, char *profile) { } -unsigned int file_read_profile(char *profile_name, int saved_config_number, char *sub_profile_name, int updatecmd, char *command_string, unsigned int buffer_size) { +void write_profile_choice(char *profile_name, int saved_config_number, char *cpld_name) { FRESULT result; - char path[MAX_STRING_SIZE]; - char cmdline[100]; FIL file; - unsigned int bytes_read = 0; unsigned int num_written = 0; + char path[MAX_STRING_SIZE]; + char cmdline[MAX_STRING_SIZE]; init_filesystem(); - - if (updatecmd) { - char name[100]; - sprintf(name, "/profile_%s.txt", cpld->name); - result = f_open(&file, name, FA_WRITE | FA_CREATE_ALWAYS); + sprintf(path, "/profile_%s.txt", cpld_name); + log_info("Writing: %s", path); + result = f_open(&file, path, FA_WRITE | FA_CREATE_ALWAYS); if (result != FR_OK) { log_warn("Failed to open %s (result = %d)", path, result); close_filesystem(); - return 0; + return; } else { sprintf(cmdline, "profile=%s\r\n", profile_name); @@ -494,22 +491,34 @@ unsigned int file_read_profile(char *profile_name, int saved_config_number, char if (result != FR_OK) { log_warn("Failed to write %s (result = %d)", path, result); close_filesystem(); - return 0; + return; } else if (num_written != cmdlength) { log_warn("%s is incomplete (%d < %d bytes)", path, num_written, cmdlength); close_filesystem(); - return 0; + return; } result = f_close(&file); if (result != FR_OK) { log_warn("Failed to close %s (result = %d)", path, result); close_filesystem(); - return 0; + return; } } + close_filesystem(); + } + +unsigned int file_read_profile(char *profile_name, int saved_config_number, char *sub_profile_name, int updatecmd, char *command_string, unsigned int buffer_size) { + FRESULT result; + char path[MAX_STRING_SIZE]; + FIL file; + unsigned int bytes_read = 0; + if (updatecmd) { + write_profile_choice(profile_name, saved_config_number, (char*)cpld->name); } + init_filesystem(); + if (saved_config_number == 0) { if (sub_profile_name != NULL) { sprintf(path, "%s/%s/%s/%s.txt", SAVED_PROFILE_BASE, cpld->name, profile_name, sub_profile_name); @@ -604,7 +613,8 @@ void scan_cpld_filenames(char cpld_filenames[MAX_CPLD_FILENAMES][MAX_FILENAME_WI close_filesystem(); } -void scan_profiles(char manufacturer_names[MAX_PROFILES][MAX_PROFILE_WIDTH], char profile_names[MAX_PROFILES][MAX_PROFILE_WIDTH], int has_sub_profiles[MAX_PROFILES], char *path, size_t *mcount, size_t *count) { +void scan_profiles(char prefix[MAX_PROFILE_WIDTH], char manufacturer_names[MAX_PROFILES][MAX_PROFILE_WIDTH], char profile_names[MAX_PROFILES][MAX_PROFILE_WIDTH], int has_sub_profiles[MAX_PROFILES], char *path, size_t *mcount, size_t *count) { + int initial_count = *count; FRESULT res; DIR dir; FIL file; @@ -618,26 +628,38 @@ void scan_profiles(char manufacturer_names[MAX_PROFILES][MAX_PROFILE_WIDTH], cha if (res != FR_OK || fno.fname[0] == 0 || *mcount == MAX_PROFILES) break; if (fno.fattrib & AM_DIR && strcmp(fno.fname, PAXHEADER) != 0) { fno.fname[MAX_PROFILE_WIDTH - 1] = 0; - strcpy(manufacturer_names[*mcount], fno.fname); - log_info("manufname: %s", manufacturer_names[*mcount]); - (*mcount)++; + int duplicate = 0; + if (*mcount != 0) { + for (int k = 0; k < *mcount; k++) { + if (strcmp(fno.fname, manufacturer_names[k]) == 0) { + duplicate = 1; + break; + } + } + } + + if (duplicate == 0) { + strcpy(manufacturer_names[*mcount], fno.fname); + (*mcount)++; + } else { + } } } f_closedir(&dir); qsort(manufacturer_names, *mcount, sizeof *manufacturer_names, string_compare); for (int i = 0; i < *mcount; i++) { sprintf(fpath, "%s/%s", path, manufacturer_names[i]); - log_info("scanning %s", fpath); + log_info("Scanning folder: %s", fpath); res = f_opendir(&dir, fpath); - log_info("result %X", res); + //log_info("result %X", res); if (res == FR_OK) { for (;;) { res = f_readdir(&dir, &fno); if (res != FR_OK || fno.fname[0] == 0 || *count == MAX_PROFILES) break; if (fno.fattrib & AM_DIR && strcmp(fno.fname, PAXHEADER) != 0) { fno.fname[MAX_PROFILE_WIDTH - 1] = 0; - sprintf(profile_names[*count], "%s/%s", manufacturer_names[i], fno.fname); - log_info("profiles: %s", profile_names[*count]); + sprintf(profile_names[*count], "%s%s/%s", prefix, manufacturer_names[i], fno.fname); + log_info("Found profile: %s", profile_names[*count]); (*count)++; } else { if (fno.fname[0] != '.' && strlen(fno.fname) > 4 && strcmp(fno.fname, DEFAULTTXT_STRING) != 0) { @@ -645,27 +667,27 @@ void scan_profiles(char manufacturer_names[MAX_PROFILES][MAX_PROFILE_WIDTH], cha if (strcmp(filetype, ".txt") == 0) { fno.fname[MAX_PROFILE_WIDTH - 1] = 0; fno.fname[strlen(fno.fname) - 4] = 0; - sprintf(profile_names[*count], "%s/%s", manufacturer_names[i], fno.fname); - log_info("profiles: %s", profile_names[*count]); + sprintf(profile_names[*count], "%s%s/%s", prefix, manufacturer_names[i], fno.fname); + log_info("Found profile: %s", profile_names[*count]); (*count)++; } } } } f_closedir(&dir); - qsort(profile_names, *count, sizeof *profile_names, string_compare); - for (int i = 0; i < (*count); i++) { - sprintf(fpath, "%s/%s.txt", path, profile_names[i]); - res = f_open(&file, fpath, FA_READ); - if (res == FR_OK) { - f_close(&file); - has_sub_profiles[i] = 0; - } else { - has_sub_profiles[i] = 1; - } - } + } + } + if (*count > initial_count) { + qsort(profile_names[initial_count], (*count) - initial_count, sizeof *profile_names, string_compare); + } + for (int i = initial_count; i < (*count); i++) { + sprintf(fpath, "%s/%s.txt", path, profile_names[i]); + res = f_open(&file, fpath, FA_READ); + if (res == FR_OK) { + f_close(&file); + has_sub_profiles[i] = 0; } else { - break; + has_sub_profiles[i] = 1; } } } diff --git a/src/filesystem.h b/src/filesystem.h index ef847b92..ae5201c8 100644 --- a/src/filesystem.h +++ b/src/filesystem.h @@ -10,10 +10,10 @@ void capture_screenshot(capture_info_t *capinfo, char *profile); void close_filesystem(); void scan_cpld_filenames(char cpld_filenames[MAX_CPLD_FILENAMES][MAX_FILENAME_WIDTH], char *path, int *count); -void scan_profiles(char manufacturer_names[MAX_PROFILES][MAX_PROFILE_WIDTH], char profile_names[MAX_PROFILES][MAX_PROFILE_WIDTH], int has_sub_profiles[MAX_PROFILES], char *path, size_t *mcount, size_t *count); +void scan_profiles(char prefix[MAX_PROFILE_WIDTH], char manufacturer_names[MAX_PROFILES][MAX_PROFILE_WIDTH], char profile_names[MAX_PROFILES][MAX_PROFILE_WIDTH], int has_sub_profiles[MAX_PROFILES], char *path, size_t *mcount, size_t *count); void scan_sub_profiles(char sub_profile_names[MAX_SUB_PROFILES][MAX_PROFILE_WIDTH], char *sub_path, size_t *count); - +void write_profile_choice(char *profile_name, int saved_config_number, char* cpld_name); unsigned int file_read_profile(char *profile_name, int saved_config_number, char *sub_profile_name, int updatecmd, char *command_string, unsigned int buffer_size); void scan_rnames(char names[MAX_NAMES][MAX_NAMES_WIDTH], char *path, char *type, int truncate, size_t *count); int file_save_config(char *resolution_name, int refresh, int scaling, int filtering, int current_frontend, int current_hdmi_mode, char *auto_workaround_path); diff --git a/src/geometry.c b/src/geometry.c index b317ec63..427e0991 100644 --- a/src/geometry.c +++ b/src/geometry.c @@ -861,7 +861,7 @@ void geometry_get_fb_params(capture_info_t *capinfo) { } - if (get_startup_overscan() != 0) { + if (get_startup_overscan() != 0 && capinfo->mode7 == 0) { int apparent_width = get_hdisplay(); int apparent_height = get_vdisplay(); double_width = (capinfo->sizex2 & SIZEX2_DOUBLE_WIDTH) >> 1; diff --git a/src/osd.c b/src/osd.c index 367177c4..c42efb03 100644 --- a/src/osd.c +++ b/src/osd.c @@ -1038,6 +1038,7 @@ static int ntsc_palette = 0; static int inhibit_palette_dimming = 0; static int single_button_mode = 0; static int manufacturer_count = 0; +static int full_profile_count = 0; static int disable_overclock = 0; static unsigned int cpu_clock = 1000; @@ -1773,12 +1774,22 @@ static void rebuild_profile_menu(menu_t *menu) { int j = 0; for (i = 0; i <= features[F_PROFILE].max; i++) { if (strncmp(selected_manufacturer, profile_names[i], strlen(selected_manufacturer)) == 0) { - log_info("Found %s", profile_names[i]); + log_info("Found: %s", profile_names[i]); profile_params[j].key = i; profile_params[j].label = profile_names[i]; j++; } } + if (full_profile_count > (features[F_PROFILE].max + 1)) { + for (i = features[F_PROFILE].max + 1; i < full_profile_count; i++) { + if (strncmp(selected_manufacturer, profile_names[i] + CPLD_HEADER_LENGTH, strlen(selected_manufacturer)) == 0) { + log_info("Found other CPLD: %s", profile_names[i]); + profile_params[j].key = i; + profile_params[j].label = profile_names[i]; + j++; + } + } + } profile_params[j].key = -1; rebuild_menu(menu, I_PICKPRO, profile_params); } @@ -1833,8 +1844,22 @@ static void redraw_menu() { } } else if ((item)->type == I_PICKPRO) { char *index = strchr(name, '/'); + if (index) { - strcpy(mp, index + 1); + int offset = 0; + if (strncmp(name, BBC_CPLD_HEADER, CPLD_HEADER_LENGTH) == 0) { + strcpy(mp, BBC_CPLD_HEADER); + offset = CPLD_HEADER_LENGTH; + } + if (strncmp(name, RGB_CPLD_HEADER, CPLD_HEADER_LENGTH) == 0) { + strcpy(mp, RGB_CPLD_HEADER); + offset = CPLD_HEADER_LENGTH; + } + if (strncmp(name, YUV_CPLD_HEADER, CPLD_HEADER_LENGTH) == 0) { + strcpy(mp, YUV_CPLD_HEADER); + offset = CPLD_HEADER_LENGTH; + } + strcpy(mp + offset, index + 1); } else { strcpy(mp, name); } @@ -5210,26 +5235,66 @@ int osd_key(int key) { break; case I_PICKPRO: log_info("Selected Profile = %s", item_name(item)); - depth = 0; - current_menu[depth] = &main_menu; - current_item[depth] = 0; - - for (int i=0; i<= features[F_PROFILE].max; i++) { - if (strcmp(profile_names[i], item_name(item)) == 0) { - set_parameter(F_PROFILE, i); - load_profiles(i, 1); - process_profile(i); - set_feature(F_SUB_PROFILE, 0); - log_info("Profile now = %s", item_name(item)); - break; - } + if (strncmp(BBC_CPLD_HEADER, item_name(item), CPLD_HEADER_LENGTH) == 0 || strncmp(RGB_CPLD_HEADER, item_name(item), CPLD_HEADER_LENGTH) == 0 || strncmp(YUV_CPLD_HEADER, item_name(item), CPLD_HEADER_LENGTH) == 0) { + char msg[256]; + if (first_time_press == 0) { + int major = (cpld->get_version() >> VERSION_MAJOR_BIT) & 0xF; + int minor = (cpld->get_version() >> VERSION_MINOR_BIT) & 0xF; + if (major == 0x0f && minor == 0x0f) { + sprintf(msg, "Current=BLANK: Confirm?"); + } else { + sprintf(msg, "Current=%s v%x.%x: Confirm?", cpld->name, major, minor); + } + set_status_message(msg); + first_time_press = 1; + } else { + first_time_press = 0; + if (strncmp(BBC_CPLD_HEADER, item_name(item), CPLD_HEADER_LENGTH) == 0) { + write_profile_choice((char*)item_name(item) + CPLD_HEADER_LENGTH, 0, (char*)cpld->nameBBC); + } + if (strncmp(RGB_CPLD_HEADER, item_name(item), CPLD_HEADER_LENGTH) == 0) { + write_profile_choice((char*)item_name(item) + CPLD_HEADER_LENGTH, 0, (char*)cpld->nameRGB); + } + if (strncmp(YUV_CPLD_HEADER, item_name(item), CPLD_HEADER_LENGTH) == 0) { + write_profile_choice((char*)item_name(item) + CPLD_HEADER_LENGTH, 0, (char*)cpld->nameYUV); + } + int count; + char cpld_dir[MAX_STRING_SIZE]; + strncpy(cpld_dir, cpld_firmware_dir, MAX_STRING_LIMIT); + scan_cpld_filenames(cpld_filenames, cpld_dir, &count); + char cpld_type[MAX_STRING_SIZE]; + strncpy(cpld_type, item_name(item) + 1, CPLD_HEADER_LENGTH - 3); + cpld_type[CPLD_HEADER_LENGTH - 3] = 0; + for(int i = 0; i < count; i++) { + if(strstr(cpld_filenames[i], cpld_type) != 0) { + sprintf(filename, "%s/%s.xsvf", cpld_firmware_dir, cpld_filenames[i]); + // Reprograme the CPLD + update_cpld(filename, 1); + break; + } + } + sprintf(msg, "CPLD update failed"); + } + } else { + depth = 0; + current_menu[depth] = &main_menu; + current_item[depth] = 0; + for (int i=0; i<= features[F_PROFILE].max; i++) { + if (strcmp(profile_names[i], item_name(item)) == 0) { + set_parameter(F_PROFILE, i); + load_profiles(i, 1); + process_profile(i); + set_feature(F_SUB_PROFILE, 0); + log_info("Profile now = %s", item_name(item)); + break; + } + } + // Rebuild dynamically populated menus, e.g. the sampling and geometry menus that are mode specific + osd_refresh(); + osd_clear_no_palette(); + redraw_menu(); } - - // Rebuild dynamically populated menus, e.g. the sampling and geometry menus that are mode specific - osd_refresh(); - osd_clear_no_palette(); - redraw_menu(); - break; + break; case I_FEATURE: case I_GEOMETRY: @@ -6183,8 +6248,18 @@ void osd_init() { default_buffer[0] = 0; has_sub_profiles[0] = 0; - char path[100] = "/Profiles/"; - strncat(path, cpld->name, 80); + char cpld_path[100] = "/Profiles/"; + char bbcpath[100] = "/Profiles/"; + char rgbpath[100] = "/Profiles/"; + char yuvpath[100] = "/Profiles/"; + + strncat(cpld_path, cpld->name, 80); + strncat(bbcpath, cpld->nameBBC, 80); + strncat(rgbpath, cpld->nameRGB, 80); + strncat(yuvpath, cpld->nameYUV, 80); + + log_info("%s %s %s %s", cpld_path, bbcpath, rgbpath, yuvpath); + char name[100]; // pre-read default profile @@ -6192,17 +6267,39 @@ void osd_init() { if (bytes != 0) { size_t count = 0; size_t mcount = 0; - scan_profiles(manufacturer_names, profile_names, has_sub_profiles, path, &mcount, &count); - if (count != 0) { - features[F_PROFILE].max = count - 1; - manufacturer_count = mcount; - for (int i = 0; i < count; i++) { + scan_profiles("", manufacturer_names, profile_names, has_sub_profiles, cpld_path, &mcount, &count); + features[F_PROFILE].max = count - 1; + + if (strcmp(cpld_path, bbcpath) != 0) { + log_info("Scanning BBC extra profiles"); + scan_profiles(BBC_CPLD_HEADER, manufacturer_names, profile_names, has_sub_profiles, bbcpath, &mcount, &count); + } + if (strcmp(cpld_path, rgbpath) != 0) { + log_info("Scanning RGB extra profiles"); + scan_profiles(RGB_CPLD_HEADER, manufacturer_names, profile_names, has_sub_profiles, rgbpath, &mcount, &count); + } + if (strcmp(cpld_path, yuvpath) != 0) { + log_info("Scanning YUV extra profiles"); + scan_profiles(YUV_CPLD_HEADER, manufacturer_names, profile_names, has_sub_profiles, yuvpath, &mcount, &count); + } + manufacturer_count = mcount; + full_profile_count = count; + + //for (int i = 0; i < full_profile_count; i++) { + //log_info("%s", profile_names[i]); + //} + + if (features[F_PROFILE].max != 0) { + +/* + for (int i = 0; i <= features[F_PROFILE].max; i++) { if (has_sub_profiles[i]) { log_info("FOUND SUB-FOLDER: %s", profile_names[i]); } else { log_info("FOUND PROFILE: %s", profile_names[i]); } } +*/ // The default profile is provided by the CPLD prop = cpld->default_profile; val = 0; @@ -6220,7 +6317,7 @@ void osd_init() { set_parameter(F_SAVED_CONFIG, val); int found_profile = 0; if (prop) { - for (int i=0; i Date: Tue, 28 Feb 2023 22:41:24 +0000 Subject: [PATCH 22/46] Update profiles for updated select profile menu option --- .../3-12_BIT_BBC/Acorn/{Acorn_Atom_TTL.txt => Atom_TTL.txt} | 0 .../Acorn/{Acorn_Communicator.txt => Communicator.txt} | 0 .../3-12_BIT_BBC/Acorn/{Acorn_Electron.txt => Electron.txt} | 0 .../Acorn/{Acorn_Teletext.txt => System_Teletext.txt} | 0 .../{_Other => Camputers_+_Oric_+_Sharp}/Camputers_Lynx.txt | 0 .../{_Other => Camputers_+_Oric_+_Sharp}/Oric.txt | 0 .../{_Other => Camputers_+_Oric_+_Sharp}/Sharp_MZ-700.txt | 0 .../{_Other => Colour_Genie_+_ABC_80_+_RML}/RML_480Z.txt | 0 .../{Amstrad => Sinclair_+_Amstrad}/Amstrad_CPC_PLUS.txt | 0 .../{Sinclair => Sinclair_+_Amstrad}/Sinclair_QL.txt | 0 .../{Sinclair => Sinclair_+_Amstrad}/ZX80_TTL/Default.txt | 0 .../{Sinclair => Sinclair_+_Amstrad}/ZX80_TTL/ZX80_50Hz.txt | 0 .../{Sinclair => Sinclair_+_Amstrad}/ZX80_TTL/ZX80_60Hz.txt | 0 .../Acorn/{Acorn_Electron.txt => Electron.txt} | 0 .../Acorn/{Acorn_Teletext.txt => System_Teletext.txt} | 0 .../{_Other => Camputers_+_Oric}/Camputers_Lynx.txt | 0 .../3-12_BIT_BBC_Analog/{_Other => Camputers_+_Oric}/Oric.txt | 0 .../3-12_BIT_BBC_Analog/{_Other => RML_+_Sharp}/RML_480Z.txt | 0 .../{_Other => RML_+_Sharp}/Sharp_MZ-700.txt | 0 .../{Amstrad => Sinclair_+_Amstrad}/Amstrad_CPC.txt | 0 .../{Sinclair => Sinclair_+_Amstrad}/Harlequin_128K.txt | 0 .../{Sinclair => Sinclair_+_Amstrad}/Sinclair_QL.txt | 0 .../{Sinclair => Sinclair_+_Amstrad}/Spectrum_+2A_+3_Nuvo.txt | 0 .../Spectrum_128_+2(Grey).txt | 0 .../Spectrum_48K+c0pperdragon.txt | 0 .../6-12_BIT_RGB/Acorn/{Acorn_Atom_TTL.txt => Atom_TTL.txt} | 0 .../6-12_BIT_RGB/Acorn/{Acorn_Electron.txt => Electron.txt} | 0 .../{_Other => Camputers_+_Oric_+_Sharp}/Camputers_Lynx.txt | 0 .../{_Other => Camputers_+_Oric_+_Sharp}/Oric.txt | 0 .../{_Other => Camputers_+_Oric_+_Sharp}/Sharp_MZ-700.txt | 0 .../{_Other => Colour_Genie_+_ABC_80_+_RML}/ABC80.txt | 0 .../{_Other => Colour_Genie_+_ABC_80_+_RML}/Colour_Genie.txt | 0 .../{_Other => Colour_Genie_+_ABC_80_+_RML}/RML_480Z.txt | 0 .../{_Other => Enterprise_+_Sam Coupe}/Enterprise.txt | 0 .../Enterprise_+_Sam Coupe}/Sam_Coupe.txt | 0 .../CGA_(IBM_New).txt} | 0 .../CGA_(IBM_Old).txt} | 0 .../{PC/PC-98 => IBM PC Compatible/EGA}/Default.txt | 0 .../{PC/PC_EGA => IBM PC Compatible/EGA}/EGA_(Mode1).txt | 0 .../{PC/PC_EGA => IBM PC Compatible/EGA}/EGA_(Mode2-40).txt | 0 .../{PC/PC_EGA => IBM PC Compatible/EGA}/EGA_(Mode2-80).txt | 0 .../PC_EGA => IBM PC Compatible/EGA_Wonder_800+}/Default.txt | 0 .../EGA_Wonder_800+}/EGA_Mode1.txt | 0 .../EGA_Wonder_800+}/EGA_Mode2.txt | 0 .../{PC/PC_ET3000AX => IBM PC Compatible/ET3000AX}/CGA.txt | 0 .../{PC/PC_ET3000AX => IBM PC Compatible/ET3000AX}/CGA2.txt | 0 .../PC_ET3000AX => IBM PC Compatible/ET3000AX}/CGA_on_VGA.txt | 0 .../ET3000AX}/Default.txt | 0 .../{PC/PC_ET3000AX => IBM PC Compatible/ET3000AX}/EGA.txt | 0 .../ET3000AX}/EGA_on_VGA_25.txt | 0 .../ET3000AX}/EGA_on_VGA_28.txt | 0 .../ET3000AX}/VGA_Graphics.txt | 0 .../PC_ET3000AX => IBM PC Compatible/ET3000AX}/VGA_Text.txt | 0 .../{PC/PC_HEGA_AUTO => IBM PC Compatible/HEGA_AUTO}/CGA.txt | 0 .../PC_ET3000AX => IBM PC Compatible/HEGA_AUTO}/Default.txt | 0 .../PC_HEGA_AUTO => IBM PC Compatible/HEGA_AUTO}/EGA_200.txt | 0 .../PC_HEGA_AUTO => IBM PC Compatible/HEGA_AUTO}/EGA_350.txt | 0 .../HEGA_AUTO}/Hercules_Gfx(640x400 alt).txt | 0 .../HEGA_AUTO}/Hercules_Gfx(640x400).txt | 0 .../HEGA_AUTO}/Hercules_Gfx(720x274).txt | 0 .../HEGA_AUTO}/Hercules_Gfx(alt).txt | 0 .../HEGA_AUTO}/Hercules_Gfx(alt10).txt | 0 .../HEGA_AUTO}/Hercules_Gfx(alt11).txt | 0 .../HEGA_AUTO}/Hercules_Gfx(alt12).txt | 0 .../HEGA_AUTO}/Hercules_Gfx(alt13).txt | 0 .../HEGA_AUTO}/Hercules_Gfx(alt14).txt | 0 .../HEGA_AUTO}/Hercules_Gfx(alt15).txt | 0 .../HEGA_AUTO}/Hercules_Gfx(alt16).txt | 0 .../HEGA_AUTO}/Hercules_Gfx(alt2).txt | 0 .../HEGA_AUTO}/Hercules_Gfx(alt3).txt | 0 .../HEGA_AUTO}/Hercules_Gfx(alt4).txt | 0 .../HEGA_AUTO}/Hercules_Gfx(alt5).txt | 0 .../HEGA_AUTO}/Hercules_Gfx(alt6).txt | 0 .../HEGA_AUTO}/Hercules_Gfx(alt7).txt | 0 .../HEGA_AUTO}/Hercules_Gfx(alt8).txt | 0 .../HEGA_AUTO}/Hercules_Gfx(alt9).txt | 0 .../HEGA_AUTO}/Hercules_Gfx.txt | 0 .../HEGA_AUTO}/Hercules_Txt.txt | 0 .../PC_HEGA_AUTO => IBM PC Compatible/Hercules}/Default.txt | 0 .../Hercules}/Hercules_Gfx.txt | 0 .../Hercules}/Hercules_Txt.txt | 0 .../6-12_BIT_RGB/{PC/PC_MDA.txt => IBM PC Compatible/MDA.txt} | 0 .../{PC/PC_Hercules => IBM PC Compatible/NEC_MDA}/Default.txt | 0 .../{PC/PC_NEC_MDA => IBM PC Compatible/NEC_MDA}/NEC_Gfx.txt | 0 .../{PC/PC_NEC_MDA => IBM PC Compatible/NEC_MDA}/NEC_Txt.txt | 0 .../{PC/PC_OTIVGA => IBM PC Compatible/OTIVGA}/CGA_40.txt | 0 .../{PC/PC_OTIVGA => IBM PC Compatible/OTIVGA}/CGA_80.txt | 0 .../{PC/PC_OTIVGA => IBM PC Compatible/OTIVGA}/CGA_on_VGA.txt | 0 .../{PC/PC_NEC_MDA => IBM PC Compatible/OTIVGA}/Default.txt | 0 .../PC_OTIVGA => IBM PC Compatible/OTIVGA}/EGA_(Mode2-40).txt | 0 .../PC_OTIVGA => IBM PC Compatible/OTIVGA}/EGA_(Mode2-80).txt | 0 .../{PC/PC_OTIVGA => IBM PC Compatible/OTIVGA}/EGA_Alt.txt | 0 .../PC_OTIVGA => IBM PC Compatible/OTIVGA}/EGA_on_VGA_25.txt | 0 .../PC_OTIVGA => IBM PC Compatible/OTIVGA}/EGA_on_VGA_28.txt | 0 .../{PC/PC_OTIVGA => IBM PC Compatible/OTIVGA}/MDA.txt | 0 .../PC_OTIVGA => IBM PC Compatible/OTIVGA}/VGA_Graphics.txt | 0 .../{PC/PC_OTIVGA => IBM PC Compatible/OTIVGA}/VGA_Text.txt | 0 .../{_Other => IBM PC Compatible}/Olivetti Prodest-PC1.txt | 0 .../{PC/PC_OTIVGA => IBM PC Compatible/PC-98}/Default.txt | 0 .../{PC => IBM PC Compatible}/PC-98/PC-98_200_lines.txt | 0 .../{PC => IBM PC Compatible}/PC-98/PC-98_400_lines.txt | 0 .../VIDEO7_MDA}/Default.txt | 0 .../VIDEO7_MDA}/VIdeo7_Gfx.txt | 0 .../VIDEO7_MDA}/Video7_Txt.txt | 0 .../Intellivision}/Default.txt | 0 .../Intellivision/Intellivision_50Hz.txt | 0 .../Intellivision/Intellivision_60Hz.txt | 0 .../{_Other => Intellivision_+_Videopac C52}/Videopac_C52.txt | 0 .../{Amstrad => Sinclair_+_Amstrad}/Amstrad_CPC_PLUS.txt | 0 .../{Sinclair => Sinclair_+_Amstrad}/Sinclair_QL.txt | 0 .../Spectrum_128_+2(Grey).txt | 0 .../Intellivision => Sinclair_+_Amstrad/ZX80_TTL}/Default.txt | 0 .../{Sinclair => Sinclair_+_Amstrad}/ZX80_TTL/ZX80_50Hz.txt | 0 .../{Sinclair => Sinclair_+_Amstrad}/ZX80_TTL/ZX80_60Hz.txt | 0 .../{_Other => UK101_+_Laser 128_+_Aquarius}/Aquarius.txt | 0 .../{_Other => UK101_+_Laser 128_+_Aquarius}/Laser_128.txt | 0 src/scripts/Profiles/6-12_BIT_RGB/_Other/Sam_Coupe.txt | 4 ---- .../Acorn/{Acorn_Electron.txt => Electron.txt} | 0 .../{_Other => Camputers_+_Oric}/Camputers_Lynx.txt | 0 .../6-12_BIT_RGB_Analog/{_Other => Camputers_+_Oric}/Oric.txt | 0 .../6-12_BIT_RGB_Analog/{_Other => RML_+_Sharp}/RML_480Z.txt | 0 .../{_Other => RML_+_Sharp}/Sharp_MZ-700.txt | 0 .../{Amstrad => Sinclair_+_Amstrad}/Amstrad_CPC.txt | 0 .../{Sinclair => Sinclair_+_Amstrad}/Harlequin_128K.txt | 0 .../{Sinclair => Sinclair_+_Amstrad}/Sinclair_QL.txt | 0 .../{Sinclair => Sinclair_+_Amstrad}/Spectrum_+2A_+3_Nuvo.txt | 0 .../Spectrum_128_+2(Grey).txt | 0 .../Spectrum_48K+c0pperdragon.txt | 0 .../{Tandy => Tandy_+_Dragon}/U7_Tandy_CoCo3_50Hz_hires.txt | 0 .../{Tandy => Tandy_+_Dragon}/U7_Tandy_CoCo3_50Hz_lowres.txt | 0 .../{Tandy => Tandy_+_Dragon}/U7_Tandy_CoCo_3_60Hz.txt | 0 .../{Sinclair => Sinclair_+_Amstrad}/ZX80_TTL/Default.txt | 0 .../{Sinclair => Sinclair_+_Amstrad}/ZX80_TTL/ZX80_50Hz.txt | 0 .../{Sinclair => Sinclair_+_Amstrad}/ZX80_TTL/ZX80_60Hz.txt | 0 .../{_Other => UK101_+_Laser 128_+_Aquarius}/UK_101.txt | 0 .../6-12_BIT_YUV_Analog/Acorn/{Acorn_Atom.txt => Atom.txt} | 0 .../Acorn/{Acorn_System_5.txt => System_5.txt} | 0 .../Jupiter_ACE_Composite.txt | 0 .../Nascom_II}/Default.txt | 0 .../Nascom_II/Nascom_II_50Hz.txt | 0 .../Nascom_II/Nascom_II_60Hz.txt | 0 .../Spectrum_48K}/Default.txt | 0 .../Spectrum_48K/Spectrum_48K_50Hz.txt | 0 .../Spectrum_48K/Spectrum_48K_60Hz.txt | 0 .../ZX80_Composite}/Default.txt | 0 .../ZX80_Composite/ZX80_50Hz.txt | 0 .../ZX80_Composite/ZX80_60Hz.txt | 0 .../ZX81_(ULA)}/Default.txt | 0 .../ZX81_(ULA)/ZX81_(ULA)_50Hz.txt | 0 .../ZX81_(ULA)/ZX81_(ULA)_60Hz.txt | 0 .../ZX81_Composite}/Default.txt | 0 .../ZX81_Composite/ZX81_50Hz.txt | 0 .../ZX81_Composite/ZX81_60Hz.txt | 0 .../Superboard_II_32x32}/Default.txt | 0 .../Superboard_II_32x32/Superboard_II_50Hz.txt | 0 .../Superboard_II_32x32/Superboard_II_60Hz.txt | 0 .../Superboard_II_64x32}/Default.txt | 0 .../Superboard_II_64x32/Superboard_II_64_50Hz.txt | 0 .../Superboard_II_64x32/Superboard_II_64_60Hz.txt | 0 .../{_Other => Superboard II + UK101}/UK_101.txt | 0 .../6-12_BIT_YUV_Analog/{_Other => Tandy + Dragon}/Dragon.txt | 0 .../Nascom_II => Tandy + Dragon/TRS_80_Model_1}/Default.txt | 0 .../{Tandy => Tandy + Dragon}/TRS_80_Model_1/TRS_80_50Hz.txt | 0 .../{Tandy => Tandy + Dragon}/TRS_80_Model_1/TRS_80_60Hz.txt | 0 .../TRS_80_Modified_1}/Default.txt | 0 .../TRS_80_Modified_1/TRS_80_Mod_50Hz.txt | 0 .../TRS_80_Modified_1/TRS_80_Mod_60Hz.txt | 0 .../Tandy_CoCo_1-2}/Default.txt | 0 .../Tandy_CoCo_1-2/Tandy_CoCo_1-2_50Hz.txt | 0 .../Tandy_CoCo_1-2/Tandy_CoCo_1-2_60Hz.txt | 0 .../{Tandy => Tandy + Dragon}/Tandy_MC10_50Hz.txt | 0 .../{Tandy => Tandy + Dragon}/Tandy_MC10_60Hz.txt | 0 172 files changed, 4 deletions(-) rename src/scripts/Profiles/3-12_BIT_BBC/Acorn/{Acorn_Atom_TTL.txt => Atom_TTL.txt} (100%) rename src/scripts/Profiles/3-12_BIT_BBC/Acorn/{Acorn_Communicator.txt => Communicator.txt} (100%) rename src/scripts/Profiles/3-12_BIT_BBC/Acorn/{Acorn_Electron.txt => Electron.txt} (100%) rename src/scripts/Profiles/3-12_BIT_BBC/Acorn/{Acorn_Teletext.txt => System_Teletext.txt} (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{_Other => Camputers_+_Oric_+_Sharp}/Camputers_Lynx.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{_Other => Camputers_+_Oric_+_Sharp}/Oric.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{_Other => Camputers_+_Oric_+_Sharp}/Sharp_MZ-700.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{_Other => Colour_Genie_+_ABC_80_+_RML}/RML_480Z.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{Amstrad => Sinclair_+_Amstrad}/Amstrad_CPC_PLUS.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{Sinclair => Sinclair_+_Amstrad}/Sinclair_QL.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{Sinclair => Sinclair_+_Amstrad}/ZX80_TTL/Default.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{Sinclair => Sinclair_+_Amstrad}/ZX80_TTL/ZX80_50Hz.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{Sinclair => Sinclair_+_Amstrad}/ZX80_TTL/ZX80_60Hz.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC_Analog/Acorn/{Acorn_Electron.txt => Electron.txt} (100%) rename src/scripts/Profiles/3-12_BIT_BBC_Analog/Acorn/{Acorn_Teletext.txt => System_Teletext.txt} (100%) rename src/scripts/Profiles/3-12_BIT_BBC_Analog/{_Other => Camputers_+_Oric}/Camputers_Lynx.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC_Analog/{_Other => Camputers_+_Oric}/Oric.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC_Analog/{_Other => RML_+_Sharp}/RML_480Z.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC_Analog/{_Other => RML_+_Sharp}/Sharp_MZ-700.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC_Analog/{Amstrad => Sinclair_+_Amstrad}/Amstrad_CPC.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC_Analog/{Sinclair => Sinclair_+_Amstrad}/Harlequin_128K.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC_Analog/{Sinclair => Sinclair_+_Amstrad}/Sinclair_QL.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC_Analog/{Sinclair => Sinclair_+_Amstrad}/Spectrum_+2A_+3_Nuvo.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC_Analog/{Sinclair => Sinclair_+_Amstrad}/Spectrum_128_+2(Grey).txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC_Analog/{Sinclair => Sinclair_+_Amstrad}/Spectrum_48K+c0pperdragon.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/Acorn/{Acorn_Atom_TTL.txt => Atom_TTL.txt} (100%) rename src/scripts/Profiles/6-12_BIT_RGB/Acorn/{Acorn_Electron.txt => Electron.txt} (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{_Other => Camputers_+_Oric_+_Sharp}/Camputers_Lynx.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{_Other => Camputers_+_Oric_+_Sharp}/Oric.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{_Other => Camputers_+_Oric_+_Sharp}/Sharp_MZ-700.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{_Other => Colour_Genie_+_ABC_80_+_RML}/ABC80.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{_Other => Colour_Genie_+_ABC_80_+_RML}/Colour_Genie.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{_Other => Colour_Genie_+_ABC_80_+_RML}/RML_480Z.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{_Other => Enterprise_+_Sam Coupe}/Enterprise.txt (100%) rename src/scripts/Profiles/{3-12_BIT_BBC/_Other => 6-12_BIT_RGB/Enterprise_+_Sam Coupe}/Sam_Coupe.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_CGA_(IBM_New).txt => IBM PC Compatible/CGA_(IBM_New).txt} (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_CGA_(IBM_Old).txt => IBM PC Compatible/CGA_(IBM_Old).txt} (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC-98 => IBM PC Compatible/EGA}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_EGA => IBM PC Compatible/EGA}/EGA_(Mode1).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_EGA => IBM PC Compatible/EGA}/EGA_(Mode2-40).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_EGA => IBM PC Compatible/EGA}/EGA_(Mode2-80).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_EGA => IBM PC Compatible/EGA_Wonder_800+}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_EGA_Wonder_800+ => IBM PC Compatible/EGA_Wonder_800+}/EGA_Mode1.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_EGA_Wonder_800+ => IBM PC Compatible/EGA_Wonder_800+}/EGA_Mode2.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_ET3000AX => IBM PC Compatible/ET3000AX}/CGA.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_ET3000AX => IBM PC Compatible/ET3000AX}/CGA2.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_ET3000AX => IBM PC Compatible/ET3000AX}/CGA_on_VGA.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_EGA_Wonder_800+ => IBM PC Compatible/ET3000AX}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_ET3000AX => IBM PC Compatible/ET3000AX}/EGA.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_ET3000AX => IBM PC Compatible/ET3000AX}/EGA_on_VGA_25.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_ET3000AX => IBM PC Compatible/ET3000AX}/EGA_on_VGA_28.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_ET3000AX => IBM PC Compatible/ET3000AX}/VGA_Graphics.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_ET3000AX => IBM PC Compatible/ET3000AX}/VGA_Text.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_HEGA_AUTO => IBM PC Compatible/HEGA_AUTO}/CGA.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_ET3000AX => IBM PC Compatible/HEGA_AUTO}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_HEGA_AUTO => IBM PC Compatible/HEGA_AUTO}/EGA_200.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_HEGA_AUTO => IBM PC Compatible/HEGA_AUTO}/EGA_350.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_HEGA_AUTO => IBM PC Compatible/HEGA_AUTO}/Hercules_Gfx(640x400 alt).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_HEGA_AUTO => IBM PC Compatible/HEGA_AUTO}/Hercules_Gfx(640x400).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_HEGA_AUTO => IBM PC Compatible/HEGA_AUTO}/Hercules_Gfx(720x274).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_HEGA_AUTO => IBM PC Compatible/HEGA_AUTO}/Hercules_Gfx(alt).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_HEGA_AUTO => IBM PC Compatible/HEGA_AUTO}/Hercules_Gfx(alt10).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_HEGA_AUTO => IBM PC Compatible/HEGA_AUTO}/Hercules_Gfx(alt11).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_HEGA_AUTO => IBM PC Compatible/HEGA_AUTO}/Hercules_Gfx(alt12).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_HEGA_AUTO => IBM PC Compatible/HEGA_AUTO}/Hercules_Gfx(alt13).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_HEGA_AUTO => IBM PC Compatible/HEGA_AUTO}/Hercules_Gfx(alt14).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_HEGA_AUTO => IBM PC Compatible/HEGA_AUTO}/Hercules_Gfx(alt15).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_HEGA_AUTO => IBM PC Compatible/HEGA_AUTO}/Hercules_Gfx(alt16).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_HEGA_AUTO => IBM PC Compatible/HEGA_AUTO}/Hercules_Gfx(alt2).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_HEGA_AUTO => IBM PC Compatible/HEGA_AUTO}/Hercules_Gfx(alt3).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_HEGA_AUTO => IBM PC Compatible/HEGA_AUTO}/Hercules_Gfx(alt4).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_HEGA_AUTO => IBM PC Compatible/HEGA_AUTO}/Hercules_Gfx(alt5).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_HEGA_AUTO => IBM PC Compatible/HEGA_AUTO}/Hercules_Gfx(alt6).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_HEGA_AUTO => IBM PC Compatible/HEGA_AUTO}/Hercules_Gfx(alt7).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_HEGA_AUTO => IBM PC Compatible/HEGA_AUTO}/Hercules_Gfx(alt8).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_HEGA_AUTO => IBM PC Compatible/HEGA_AUTO}/Hercules_Gfx(alt9).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_HEGA_AUTO => IBM PC Compatible/HEGA_AUTO}/Hercules_Gfx.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_HEGA_AUTO => IBM PC Compatible/HEGA_AUTO}/Hercules_Txt.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_HEGA_AUTO => IBM PC Compatible/Hercules}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_Hercules => IBM PC Compatible/Hercules}/Hercules_Gfx.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_Hercules => IBM PC Compatible/Hercules}/Hercules_Txt.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_MDA.txt => IBM PC Compatible/MDA.txt} (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_Hercules => IBM PC Compatible/NEC_MDA}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_NEC_MDA => IBM PC Compatible/NEC_MDA}/NEC_Gfx.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_NEC_MDA => IBM PC Compatible/NEC_MDA}/NEC_Txt.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_OTIVGA => IBM PC Compatible/OTIVGA}/CGA_40.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_OTIVGA => IBM PC Compatible/OTIVGA}/CGA_80.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_OTIVGA => IBM PC Compatible/OTIVGA}/CGA_on_VGA.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_NEC_MDA => IBM PC Compatible/OTIVGA}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_OTIVGA => IBM PC Compatible/OTIVGA}/EGA_(Mode2-40).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_OTIVGA => IBM PC Compatible/OTIVGA}/EGA_(Mode2-80).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_OTIVGA => IBM PC Compatible/OTIVGA}/EGA_Alt.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_OTIVGA => IBM PC Compatible/OTIVGA}/EGA_on_VGA_25.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_OTIVGA => IBM PC Compatible/OTIVGA}/EGA_on_VGA_28.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_OTIVGA => IBM PC Compatible/OTIVGA}/MDA.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_OTIVGA => IBM PC Compatible/OTIVGA}/VGA_Graphics.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_OTIVGA => IBM PC Compatible/OTIVGA}/VGA_Text.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{_Other => IBM PC Compatible}/Olivetti Prodest-PC1.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_OTIVGA => IBM PC Compatible/PC-98}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC => IBM PC Compatible}/PC-98/PC-98_200_lines.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC => IBM PC Compatible}/PC-98/PC-98_400_lines.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_VIDEO7_MDA => IBM PC Compatible/VIDEO7_MDA}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_VIDEO7_MDA => IBM PC Compatible/VIDEO7_MDA}/VIdeo7_Gfx.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{PC/PC_VIDEO7_MDA => IBM PC Compatible/VIDEO7_MDA}/Video7_Txt.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{Sinclair/ZX80_TTL => Intellivision_+_Videopac C52/Intellivision}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{_Other => Intellivision_+_Videopac C52}/Intellivision/Intellivision_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{_Other => Intellivision_+_Videopac C52}/Intellivision/Intellivision_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{_Other => Intellivision_+_Videopac C52}/Videopac_C52.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{Amstrad => Sinclair_+_Amstrad}/Amstrad_CPC_PLUS.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{Sinclair => Sinclair_+_Amstrad}/Sinclair_QL.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{Sinclair => Sinclair_+_Amstrad}/Spectrum_128_+2(Grey).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{_Other/Intellivision => Sinclair_+_Amstrad/ZX80_TTL}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{Sinclair => Sinclair_+_Amstrad}/ZX80_TTL/ZX80_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{Sinclair => Sinclair_+_Amstrad}/ZX80_TTL/ZX80_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{_Other => UK101_+_Laser 128_+_Aquarius}/Aquarius.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{_Other => UK101_+_Laser 128_+_Aquarius}/Laser_128.txt (100%) delete mode 100644 src/scripts/Profiles/6-12_BIT_RGB/_Other/Sam_Coupe.txt rename src/scripts/Profiles/6-12_BIT_RGB_Analog/Acorn/{Acorn_Electron.txt => Electron.txt} (100%) rename src/scripts/Profiles/6-12_BIT_RGB_Analog/{_Other => Camputers_+_Oric}/Camputers_Lynx.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB_Analog/{_Other => Camputers_+_Oric}/Oric.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB_Analog/{_Other => RML_+_Sharp}/RML_480Z.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB_Analog/{_Other => RML_+_Sharp}/Sharp_MZ-700.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB_Analog/{Amstrad => Sinclair_+_Amstrad}/Amstrad_CPC.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB_Analog/{Sinclair => Sinclair_+_Amstrad}/Harlequin_128K.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB_Analog/{Sinclair => Sinclair_+_Amstrad}/Sinclair_QL.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB_Analog/{Sinclair => Sinclair_+_Amstrad}/Spectrum_+2A_+3_Nuvo.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB_Analog/{Sinclair => Sinclair_+_Amstrad}/Spectrum_128_+2(Grey).txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB_Analog/{Sinclair => Sinclair_+_Amstrad}/Spectrum_48K+c0pperdragon.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB_Analog/{Tandy => Tandy_+_Dragon}/U7_Tandy_CoCo3_50Hz_hires.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB_Analog/{Tandy => Tandy_+_Dragon}/U7_Tandy_CoCo3_50Hz_lowres.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB_Analog/{Tandy => Tandy_+_Dragon}/U7_Tandy_CoCo_3_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV/{Sinclair => Sinclair_+_Amstrad}/ZX80_TTL/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV/{Sinclair => Sinclair_+_Amstrad}/ZX80_TTL/ZX80_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV/{Sinclair => Sinclair_+_Amstrad}/ZX80_TTL/ZX80_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV/{_Other => UK101_+_Laser 128_+_Aquarius}/UK_101.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/Acorn/{Acorn_Atom.txt => Atom.txt} (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/Acorn/{Acorn_System_5.txt => System_5.txt} (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{_Other => Nascom_+_Jupiter_Ace}/Jupiter_ACE_Composite.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair/Spectrum_48K => Nascom_+_Jupiter_Ace/Nascom_II}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{_Other => Nascom_+_Jupiter_Ace}/Nascom_II/Nascom_II_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{_Other => Nascom_+_Jupiter_Ace}/Nascom_II/Nascom_II_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair/ZX80_Composite => Sinclair + Amstrad/Spectrum_48K}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair => Sinclair + Amstrad}/Spectrum_48K/Spectrum_48K_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair => Sinclair + Amstrad}/Spectrum_48K/Spectrum_48K_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair/ZX81_(ULA) => Sinclair + Amstrad/ZX80_Composite}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair => Sinclair + Amstrad}/ZX80_Composite/ZX80_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair => Sinclair + Amstrad}/ZX80_Composite/ZX80_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair/ZX81_Composite => Sinclair + Amstrad/ZX81_(ULA)}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair => Sinclair + Amstrad}/ZX81_(ULA)/ZX81_(ULA)_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair => Sinclair + Amstrad}/ZX81_(ULA)/ZX81_(ULA)_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Tandy/TRS_80_Model_1 => Sinclair + Amstrad/ZX81_Composite}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair => Sinclair + Amstrad}/ZX81_Composite/ZX81_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair => Sinclair + Amstrad}/ZX81_Composite/ZX81_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Tandy/TRS_80_Modified_1 => Superboard II + UK101/Superboard_II_32x32}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{_Other => Superboard II + UK101}/Superboard_II_32x32/Superboard_II_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{_Other => Superboard II + UK101}/Superboard_II_32x32/Superboard_II_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Tandy/Tandy_CoCo_1-2 => Superboard II + UK101/Superboard_II_64x32}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{_Other => Superboard II + UK101}/Superboard_II_64x32/Superboard_II_64_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{_Other => Superboard II + UK101}/Superboard_II_64x32/Superboard_II_64_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{_Other => Superboard II + UK101}/UK_101.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{_Other => Tandy + Dragon}/Dragon.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{_Other/Nascom_II => Tandy + Dragon/TRS_80_Model_1}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Tandy => Tandy + Dragon}/TRS_80_Model_1/TRS_80_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Tandy => Tandy + Dragon}/TRS_80_Model_1/TRS_80_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{_Other/Superboard_II_32x32 => Tandy + Dragon/TRS_80_Modified_1}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Tandy => Tandy + Dragon}/TRS_80_Modified_1/TRS_80_Mod_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Tandy => Tandy + Dragon}/TRS_80_Modified_1/TRS_80_Mod_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{_Other/Superboard_II_64x32 => Tandy + Dragon/Tandy_CoCo_1-2}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Tandy => Tandy + Dragon}/Tandy_CoCo_1-2/Tandy_CoCo_1-2_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Tandy => Tandy + Dragon}/Tandy_CoCo_1-2/Tandy_CoCo_1-2_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Tandy => Tandy + Dragon}/Tandy_MC10_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Tandy => Tandy + Dragon}/Tandy_MC10_60Hz.txt (100%) diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Acorn/Acorn_Atom_TTL.txt b/src/scripts/Profiles/3-12_BIT_BBC/Acorn/Atom_TTL.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Acorn/Acorn_Atom_TTL.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Acorn/Atom_TTL.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Acorn/Acorn_Communicator.txt b/src/scripts/Profiles/3-12_BIT_BBC/Acorn/Communicator.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Acorn/Acorn_Communicator.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Acorn/Communicator.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Acorn/Acorn_Electron.txt b/src/scripts/Profiles/3-12_BIT_BBC/Acorn/Electron.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Acorn/Acorn_Electron.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Acorn/Electron.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Acorn/Acorn_Teletext.txt b/src/scripts/Profiles/3-12_BIT_BBC/Acorn/System_Teletext.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Acorn/Acorn_Teletext.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Acorn/System_Teletext.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/_Other/Camputers_Lynx.txt b/src/scripts/Profiles/3-12_BIT_BBC/Camputers_+_Oric_+_Sharp/Camputers_Lynx.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/_Other/Camputers_Lynx.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Camputers_+_Oric_+_Sharp/Camputers_Lynx.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/_Other/Oric.txt b/src/scripts/Profiles/3-12_BIT_BBC/Camputers_+_Oric_+_Sharp/Oric.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/_Other/Oric.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Camputers_+_Oric_+_Sharp/Oric.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/_Other/Sharp_MZ-700.txt b/src/scripts/Profiles/3-12_BIT_BBC/Camputers_+_Oric_+_Sharp/Sharp_MZ-700.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/_Other/Sharp_MZ-700.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Camputers_+_Oric_+_Sharp/Sharp_MZ-700.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/_Other/RML_480Z.txt b/src/scripts/Profiles/3-12_BIT_BBC/Colour_Genie_+_ABC_80_+_RML/RML_480Z.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/_Other/RML_480Z.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Colour_Genie_+_ABC_80_+_RML/RML_480Z.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Amstrad/Amstrad_CPC_PLUS.txt b/src/scripts/Profiles/3-12_BIT_BBC/Sinclair_+_Amstrad/Amstrad_CPC_PLUS.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Amstrad/Amstrad_CPC_PLUS.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Sinclair_+_Amstrad/Amstrad_CPC_PLUS.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Sinclair/Sinclair_QL.txt b/src/scripts/Profiles/3-12_BIT_BBC/Sinclair_+_Amstrad/Sinclair_QL.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Sinclair/Sinclair_QL.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Sinclair_+_Amstrad/Sinclair_QL.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Sinclair/ZX80_TTL/Default.txt b/src/scripts/Profiles/3-12_BIT_BBC/Sinclair_+_Amstrad/ZX80_TTL/Default.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Sinclair/ZX80_TTL/Default.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Sinclair_+_Amstrad/ZX80_TTL/Default.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Sinclair/ZX80_TTL/ZX80_50Hz.txt b/src/scripts/Profiles/3-12_BIT_BBC/Sinclair_+_Amstrad/ZX80_TTL/ZX80_50Hz.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Sinclair/ZX80_TTL/ZX80_50Hz.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Sinclair_+_Amstrad/ZX80_TTL/ZX80_50Hz.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Sinclair/ZX80_TTL/ZX80_60Hz.txt b/src/scripts/Profiles/3-12_BIT_BBC/Sinclair_+_Amstrad/ZX80_TTL/ZX80_60Hz.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Sinclair/ZX80_TTL/ZX80_60Hz.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Sinclair_+_Amstrad/ZX80_TTL/ZX80_60Hz.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/Acorn/Acorn_Electron.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/Acorn/Electron.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC_Analog/Acorn/Acorn_Electron.txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/Acorn/Electron.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/Acorn/Acorn_Teletext.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/Acorn/System_Teletext.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC_Analog/Acorn/Acorn_Teletext.txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/Acorn/System_Teletext.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/_Other/Camputers_Lynx.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/Camputers_+_Oric/Camputers_Lynx.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC_Analog/_Other/Camputers_Lynx.txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/Camputers_+_Oric/Camputers_Lynx.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/_Other/Oric.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/Camputers_+_Oric/Oric.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC_Analog/_Other/Oric.txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/Camputers_+_Oric/Oric.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/_Other/RML_480Z.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/RML_+_Sharp/RML_480Z.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC_Analog/_Other/RML_480Z.txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/RML_+_Sharp/RML_480Z.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/_Other/Sharp_MZ-700.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/RML_+_Sharp/Sharp_MZ-700.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC_Analog/_Other/Sharp_MZ-700.txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/RML_+_Sharp/Sharp_MZ-700.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/Amstrad/Amstrad_CPC.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair_+_Amstrad/Amstrad_CPC.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC_Analog/Amstrad/Amstrad_CPC.txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair_+_Amstrad/Amstrad_CPC.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Harlequin_128K.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair_+_Amstrad/Harlequin_128K.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Harlequin_128K.txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair_+_Amstrad/Harlequin_128K.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Sinclair_QL.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair_+_Amstrad/Sinclair_QL.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Sinclair_QL.txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair_+_Amstrad/Sinclair_QL.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Spectrum_+2A_+3_Nuvo.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair_+_Amstrad/Spectrum_+2A_+3_Nuvo.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Spectrum_+2A_+3_Nuvo.txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair_+_Amstrad/Spectrum_+2A_+3_Nuvo.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Spectrum_128_+2(Grey).txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair_+_Amstrad/Spectrum_128_+2(Grey).txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Spectrum_128_+2(Grey).txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair_+_Amstrad/Spectrum_128_+2(Grey).txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Spectrum_48K+c0pperdragon.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair_+_Amstrad/Spectrum_48K+c0pperdragon.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Spectrum_48K+c0pperdragon.txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair_+_Amstrad/Spectrum_48K+c0pperdragon.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Acorn/Acorn_Atom_TTL.txt b/src/scripts/Profiles/6-12_BIT_RGB/Acorn/Atom_TTL.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Acorn/Acorn_Atom_TTL.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Acorn/Atom_TTL.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Acorn/Acorn_Electron.txt b/src/scripts/Profiles/6-12_BIT_RGB/Acorn/Electron.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Acorn/Acorn_Electron.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Acorn/Electron.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/_Other/Camputers_Lynx.txt b/src/scripts/Profiles/6-12_BIT_RGB/Camputers_+_Oric_+_Sharp/Camputers_Lynx.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/_Other/Camputers_Lynx.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Camputers_+_Oric_+_Sharp/Camputers_Lynx.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/_Other/Oric.txt b/src/scripts/Profiles/6-12_BIT_RGB/Camputers_+_Oric_+_Sharp/Oric.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/_Other/Oric.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Camputers_+_Oric_+_Sharp/Oric.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/_Other/Sharp_MZ-700.txt b/src/scripts/Profiles/6-12_BIT_RGB/Camputers_+_Oric_+_Sharp/Sharp_MZ-700.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/_Other/Sharp_MZ-700.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Camputers_+_Oric_+_Sharp/Sharp_MZ-700.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/_Other/ABC80.txt b/src/scripts/Profiles/6-12_BIT_RGB/Colour_Genie_+_ABC_80_+_RML/ABC80.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/_Other/ABC80.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Colour_Genie_+_ABC_80_+_RML/ABC80.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/_Other/Colour_Genie.txt b/src/scripts/Profiles/6-12_BIT_RGB/Colour_Genie_+_ABC_80_+_RML/Colour_Genie.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/_Other/Colour_Genie.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Colour_Genie_+_ABC_80_+_RML/Colour_Genie.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/_Other/RML_480Z.txt b/src/scripts/Profiles/6-12_BIT_RGB/Colour_Genie_+_ABC_80_+_RML/RML_480Z.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/_Other/RML_480Z.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Colour_Genie_+_ABC_80_+_RML/RML_480Z.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/_Other/Enterprise.txt b/src/scripts/Profiles/6-12_BIT_RGB/Enterprise_+_Sam Coupe/Enterprise.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/_Other/Enterprise.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Enterprise_+_Sam Coupe/Enterprise.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/_Other/Sam_Coupe.txt b/src/scripts/Profiles/6-12_BIT_RGB/Enterprise_+_Sam Coupe/Sam_Coupe.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/_Other/Sam_Coupe.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Enterprise_+_Sam Coupe/Sam_Coupe.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_CGA_(IBM_New).txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/CGA_(IBM_New).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_CGA_(IBM_New).txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/CGA_(IBM_New).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_CGA_(IBM_Old).txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/CGA_(IBM_Old).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_CGA_(IBM_Old).txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/CGA_(IBM_Old).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC-98/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/EGA/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC-98/Default.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/EGA/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_EGA/EGA_(Mode1).txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/EGA/EGA_(Mode1).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_EGA/EGA_(Mode1).txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/EGA/EGA_(Mode1).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_EGA/EGA_(Mode2-40).txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/EGA/EGA_(Mode2-40).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_EGA/EGA_(Mode2-40).txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/EGA/EGA_(Mode2-40).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_EGA/EGA_(Mode2-80).txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/EGA/EGA_(Mode2-80).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_EGA/EGA_(Mode2-80).txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/EGA/EGA_(Mode2-80).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_EGA/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/EGA_Wonder_800+/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_EGA/Default.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/EGA_Wonder_800+/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_EGA_Wonder_800+/EGA_Mode1.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/EGA_Wonder_800+/EGA_Mode1.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_EGA_Wonder_800+/EGA_Mode1.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/EGA_Wonder_800+/EGA_Mode1.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_EGA_Wonder_800+/EGA_Mode2.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/EGA_Wonder_800+/EGA_Mode2.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_EGA_Wonder_800+/EGA_Mode2.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/EGA_Wonder_800+/EGA_Mode2.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/CGA.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/ET3000AX/CGA.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/CGA.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/ET3000AX/CGA.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/CGA2.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/ET3000AX/CGA2.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/CGA2.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/ET3000AX/CGA2.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/CGA_on_VGA.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/ET3000AX/CGA_on_VGA.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/CGA_on_VGA.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/ET3000AX/CGA_on_VGA.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_EGA_Wonder_800+/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/ET3000AX/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_EGA_Wonder_800+/Default.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/ET3000AX/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/EGA.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/ET3000AX/EGA.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/EGA.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/ET3000AX/EGA.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/EGA_on_VGA_25.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/ET3000AX/EGA_on_VGA_25.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/EGA_on_VGA_25.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/ET3000AX/EGA_on_VGA_25.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/EGA_on_VGA_28.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/ET3000AX/EGA_on_VGA_28.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/EGA_on_VGA_28.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/ET3000AX/EGA_on_VGA_28.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/VGA_Graphics.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/ET3000AX/VGA_Graphics.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/VGA_Graphics.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/ET3000AX/VGA_Graphics.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/VGA_Text.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/ET3000AX/VGA_Text.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/VGA_Text.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/ET3000AX/VGA_Text.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/CGA.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/CGA.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/CGA.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/CGA.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_ET3000AX/Default.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/EGA_200.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/EGA_200.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/EGA_200.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/EGA_200.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/EGA_350.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/EGA_350.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/EGA_350.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/EGA_350.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(640x400 alt).txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(640x400 alt).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(640x400 alt).txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(640x400 alt).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(640x400).txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(640x400).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(640x400).txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(640x400).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(720x274).txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(720x274).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(720x274).txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(720x274).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt).txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(alt).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt).txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(alt).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt10).txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(alt10).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt10).txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(alt10).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt11).txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(alt11).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt11).txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(alt11).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt12).txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(alt12).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt12).txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(alt12).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt13).txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(alt13).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt13).txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(alt13).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt14).txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(alt14).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt14).txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(alt14).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt15).txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(alt15).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt15).txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(alt15).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt16).txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(alt16).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt16).txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(alt16).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt2).txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(alt2).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt2).txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(alt2).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt3).txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(alt3).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt3).txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(alt3).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt4).txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(alt4).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt4).txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(alt4).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt5).txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(alt5).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt5).txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(alt5).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt6).txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(alt6).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt6).txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(alt6).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt7).txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(alt7).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt7).txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(alt7).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt8).txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(alt8).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt8).txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(alt8).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt9).txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(alt9).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx(alt9).txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx(alt9).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Gfx.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Gfx.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Txt.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Txt.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Hercules_Txt.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/HEGA_AUTO/Hercules_Txt.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/Hercules/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_HEGA_AUTO/Default.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/Hercules/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_Hercules/Hercules_Gfx.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/Hercules/Hercules_Gfx.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_Hercules/Hercules_Gfx.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/Hercules/Hercules_Gfx.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_Hercules/Hercules_Txt.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/Hercules/Hercules_Txt.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_Hercules/Hercules_Txt.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/Hercules/Hercules_Txt.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_MDA.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/MDA.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_MDA.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/MDA.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_Hercules/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/NEC_MDA/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_Hercules/Default.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/NEC_MDA/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_NEC_MDA/NEC_Gfx.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/NEC_MDA/NEC_Gfx.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_NEC_MDA/NEC_Gfx.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/NEC_MDA/NEC_Gfx.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_NEC_MDA/NEC_Txt.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/NEC_MDA/NEC_Txt.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_NEC_MDA/NEC_Txt.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/NEC_MDA/NEC_Txt.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/CGA_40.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/OTIVGA/CGA_40.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/CGA_40.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/OTIVGA/CGA_40.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/CGA_80.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/OTIVGA/CGA_80.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/CGA_80.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/OTIVGA/CGA_80.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/CGA_on_VGA.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/OTIVGA/CGA_on_VGA.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/CGA_on_VGA.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/OTIVGA/CGA_on_VGA.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_NEC_MDA/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/OTIVGA/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_NEC_MDA/Default.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/OTIVGA/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/EGA_(Mode2-40).txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/OTIVGA/EGA_(Mode2-40).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/EGA_(Mode2-40).txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/OTIVGA/EGA_(Mode2-40).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/EGA_(Mode2-80).txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/OTIVGA/EGA_(Mode2-80).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/EGA_(Mode2-80).txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/OTIVGA/EGA_(Mode2-80).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/EGA_Alt.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/OTIVGA/EGA_Alt.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/EGA_Alt.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/OTIVGA/EGA_Alt.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/EGA_on_VGA_25.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/OTIVGA/EGA_on_VGA_25.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/EGA_on_VGA_25.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/OTIVGA/EGA_on_VGA_25.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/EGA_on_VGA_28.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/OTIVGA/EGA_on_VGA_28.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/EGA_on_VGA_28.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/OTIVGA/EGA_on_VGA_28.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/MDA.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/OTIVGA/MDA.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/MDA.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/OTIVGA/MDA.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/VGA_Graphics.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/OTIVGA/VGA_Graphics.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/VGA_Graphics.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/OTIVGA/VGA_Graphics.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/VGA_Text.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/OTIVGA/VGA_Text.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/VGA_Text.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/OTIVGA/VGA_Text.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/_Other/Olivetti Prodest-PC1.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/Olivetti Prodest-PC1.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/_Other/Olivetti Prodest-PC1.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/Olivetti Prodest-PC1.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/PC-98/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_OTIVGA/Default.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/PC-98/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC-98/PC-98_200_lines.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/PC-98/PC-98_200_lines.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC-98/PC-98_200_lines.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/PC-98/PC-98_200_lines.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC-98/PC-98_400_lines.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/PC-98/PC-98_400_lines.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC-98/PC-98_400_lines.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/PC-98/PC-98_400_lines.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_VIDEO7_MDA/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/VIDEO7_MDA/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_VIDEO7_MDA/Default.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/VIDEO7_MDA/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_VIDEO7_MDA/VIdeo7_Gfx.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/VIDEO7_MDA/VIdeo7_Gfx.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_VIDEO7_MDA/VIdeo7_Gfx.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/VIDEO7_MDA/VIdeo7_Gfx.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/PC/PC_VIDEO7_MDA/Video7_Txt.txt b/src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/VIDEO7_MDA/Video7_Txt.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/PC/PC_VIDEO7_MDA/Video7_Txt.txt rename to src/scripts/Profiles/6-12_BIT_RGB/IBM PC Compatible/VIDEO7_MDA/Video7_Txt.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Sinclair/ZX80_TTL/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/Intellivision_+_Videopac C52/Intellivision/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Sinclair/ZX80_TTL/Default.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Intellivision_+_Videopac C52/Intellivision/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/_Other/Intellivision/Intellivision_50Hz.txt b/src/scripts/Profiles/6-12_BIT_RGB/Intellivision_+_Videopac C52/Intellivision/Intellivision_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/_Other/Intellivision/Intellivision_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Intellivision_+_Videopac C52/Intellivision/Intellivision_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/_Other/Intellivision/Intellivision_60Hz.txt b/src/scripts/Profiles/6-12_BIT_RGB/Intellivision_+_Videopac C52/Intellivision/Intellivision_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/_Other/Intellivision/Intellivision_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Intellivision_+_Videopac C52/Intellivision/Intellivision_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/_Other/Videopac_C52.txt b/src/scripts/Profiles/6-12_BIT_RGB/Intellivision_+_Videopac C52/Videopac_C52.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/_Other/Videopac_C52.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Intellivision_+_Videopac C52/Videopac_C52.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Amstrad/Amstrad_CPC_PLUS.txt b/src/scripts/Profiles/6-12_BIT_RGB/Sinclair_+_Amstrad/Amstrad_CPC_PLUS.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Amstrad/Amstrad_CPC_PLUS.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Sinclair_+_Amstrad/Amstrad_CPC_PLUS.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Sinclair/Sinclair_QL.txt b/src/scripts/Profiles/6-12_BIT_RGB/Sinclair_+_Amstrad/Sinclair_QL.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Sinclair/Sinclair_QL.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Sinclair_+_Amstrad/Sinclair_QL.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Sinclair/Spectrum_128_+2(Grey).txt b/src/scripts/Profiles/6-12_BIT_RGB/Sinclair_+_Amstrad/Spectrum_128_+2(Grey).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Sinclair/Spectrum_128_+2(Grey).txt rename to src/scripts/Profiles/6-12_BIT_RGB/Sinclair_+_Amstrad/Spectrum_128_+2(Grey).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/_Other/Intellivision/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/Sinclair_+_Amstrad/ZX80_TTL/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/_Other/Intellivision/Default.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Sinclair_+_Amstrad/ZX80_TTL/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Sinclair/ZX80_TTL/ZX80_50Hz.txt b/src/scripts/Profiles/6-12_BIT_RGB/Sinclair_+_Amstrad/ZX80_TTL/ZX80_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Sinclair/ZX80_TTL/ZX80_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Sinclair_+_Amstrad/ZX80_TTL/ZX80_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Sinclair/ZX80_TTL/ZX80_60Hz.txt b/src/scripts/Profiles/6-12_BIT_RGB/Sinclair_+_Amstrad/ZX80_TTL/ZX80_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Sinclair/ZX80_TTL/ZX80_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Sinclair_+_Amstrad/ZX80_TTL/ZX80_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/_Other/Aquarius.txt b/src/scripts/Profiles/6-12_BIT_RGB/UK101_+_Laser 128_+_Aquarius/Aquarius.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/_Other/Aquarius.txt rename to src/scripts/Profiles/6-12_BIT_RGB/UK101_+_Laser 128_+_Aquarius/Aquarius.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/_Other/Laser_128.txt b/src/scripts/Profiles/6-12_BIT_RGB/UK101_+_Laser 128_+_Aquarius/Laser_128.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/_Other/Laser_128.txt rename to src/scripts/Profiles/6-12_BIT_RGB/UK101_+_Laser 128_+_Aquarius/Laser_128.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/_Other/Sam_Coupe.txt b/src/scripts/Profiles/6-12_BIT_RGB/_Other/Sam_Coupe.txt deleted file mode 100644 index 8e44e49e..00000000 --- a/src/scripts/Profiles/6-12_BIT_RGB/_Other/Sam_Coupe.txt +++ /dev/null @@ -1,4 +0,0 @@ -sampling=0,0,0,0,0,0,0,0,1,0,6,0,0,0,0,0,0,2,0,0,100,256,100,256,100,256,256,256 -geometry=120,58,512,204,608,276,3,5,1,1,12000000,768,5000,312,4,0,0 -palette=RrGgBbI_(SAM) -ffosd_overlay=1 diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/Acorn/Acorn_Electron.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Acorn/Electron.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/Acorn/Acorn_Electron.txt rename to src/scripts/Profiles/6-12_BIT_RGB_Analog/Acorn/Electron.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/_Other/Camputers_Lynx.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Camputers_+_Oric/Camputers_Lynx.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/_Other/Camputers_Lynx.txt rename to src/scripts/Profiles/6-12_BIT_RGB_Analog/Camputers_+_Oric/Camputers_Lynx.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/_Other/Oric.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Camputers_+_Oric/Oric.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/_Other/Oric.txt rename to src/scripts/Profiles/6-12_BIT_RGB_Analog/Camputers_+_Oric/Oric.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/_Other/RML_480Z.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/RML_+_Sharp/RML_480Z.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/_Other/RML_480Z.txt rename to src/scripts/Profiles/6-12_BIT_RGB_Analog/RML_+_Sharp/RML_480Z.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/_Other/Sharp_MZ-700.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/RML_+_Sharp/Sharp_MZ-700.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/_Other/Sharp_MZ-700.txt rename to src/scripts/Profiles/6-12_BIT_RGB_Analog/RML_+_Sharp/Sharp_MZ-700.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/Amstrad/Amstrad_CPC.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair_+_Amstrad/Amstrad_CPC.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/Amstrad/Amstrad_CPC.txt rename to src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair_+_Amstrad/Amstrad_CPC.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Harlequin_128K.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair_+_Amstrad/Harlequin_128K.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Harlequin_128K.txt rename to src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair_+_Amstrad/Harlequin_128K.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Sinclair_QL.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair_+_Amstrad/Sinclair_QL.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Sinclair_QL.txt rename to src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair_+_Amstrad/Sinclair_QL.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_+2A_+3_Nuvo.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair_+_Amstrad/Spectrum_+2A_+3_Nuvo.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_+2A_+3_Nuvo.txt rename to src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair_+_Amstrad/Spectrum_+2A_+3_Nuvo.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_128_+2(Grey).txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair_+_Amstrad/Spectrum_128_+2(Grey).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_128_+2(Grey).txt rename to src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair_+_Amstrad/Spectrum_128_+2(Grey).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_48K+c0pperdragon.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair_+_Amstrad/Spectrum_48K+c0pperdragon.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_48K+c0pperdragon.txt rename to src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair_+_Amstrad/Spectrum_48K+c0pperdragon.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/Tandy/U7_Tandy_CoCo3_50Hz_hires.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Tandy_+_Dragon/U7_Tandy_CoCo3_50Hz_hires.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/Tandy/U7_Tandy_CoCo3_50Hz_hires.txt rename to src/scripts/Profiles/6-12_BIT_RGB_Analog/Tandy_+_Dragon/U7_Tandy_CoCo3_50Hz_hires.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/Tandy/U7_Tandy_CoCo3_50Hz_lowres.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Tandy_+_Dragon/U7_Tandy_CoCo3_50Hz_lowres.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/Tandy/U7_Tandy_CoCo3_50Hz_lowres.txt rename to src/scripts/Profiles/6-12_BIT_RGB_Analog/Tandy_+_Dragon/U7_Tandy_CoCo3_50Hz_lowres.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/Tandy/U7_Tandy_CoCo_3_60Hz.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Tandy_+_Dragon/U7_Tandy_CoCo_3_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/Tandy/U7_Tandy_CoCo_3_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_RGB_Analog/Tandy_+_Dragon/U7_Tandy_CoCo_3_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV/Sinclair/ZX80_TTL/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV/Sinclair_+_Amstrad/ZX80_TTL/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV/Sinclair/ZX80_TTL/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV/Sinclair_+_Amstrad/ZX80_TTL/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV/Sinclair/ZX80_TTL/ZX80_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV/Sinclair_+_Amstrad/ZX80_TTL/ZX80_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV/Sinclair/ZX80_TTL/ZX80_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV/Sinclair_+_Amstrad/ZX80_TTL/ZX80_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV/Sinclair/ZX80_TTL/ZX80_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV/Sinclair_+_Amstrad/ZX80_TTL/ZX80_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV/Sinclair/ZX80_TTL/ZX80_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV/Sinclair_+_Amstrad/ZX80_TTL/ZX80_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV/_Other/UK_101.txt b/src/scripts/Profiles/6-12_BIT_YUV/UK101_+_Laser 128_+_Aquarius/UK_101.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV/_Other/UK_101.txt rename to src/scripts/Profiles/6-12_BIT_YUV/UK101_+_Laser 128_+_Aquarius/UK_101.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Acorn/Acorn_Atom.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Acorn/Atom.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Acorn/Acorn_Atom.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Acorn/Atom.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Acorn/Acorn_System_5.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Acorn/System_5.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Acorn/Acorn_System_5.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Acorn/System_5.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Jupiter_ACE_Composite.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Nascom_+_Jupiter_Ace/Jupiter_ACE_Composite.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Jupiter_ACE_Composite.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Nascom_+_Jupiter_Ace/Jupiter_ACE_Composite.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/Spectrum_48K/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Nascom_+_Jupiter_Ace/Nascom_II/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/Spectrum_48K/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Nascom_+_Jupiter_Ace/Nascom_II/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Nascom_II/Nascom_II_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Nascom_+_Jupiter_Ace/Nascom_II/Nascom_II_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Nascom_II/Nascom_II_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Nascom_+_Jupiter_Ace/Nascom_II/Nascom_II_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Nascom_II/Nascom_II_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Nascom_+_Jupiter_Ace/Nascom_II/Nascom_II_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Nascom_II/Nascom_II_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Nascom_+_Jupiter_Ace/Nascom_II/Nascom_II_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX80_Composite/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/Spectrum_48K/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX80_Composite/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/Spectrum_48K/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/Spectrum_48K/Spectrum_48K_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/Spectrum_48K/Spectrum_48K_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/Spectrum_48K/Spectrum_48K_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/Spectrum_48K/Spectrum_48K_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/Spectrum_48K/Spectrum_48K_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/Spectrum_48K/Spectrum_48K_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/Spectrum_48K/Spectrum_48K_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/Spectrum_48K/Spectrum_48K_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_(ULA)/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX80_Composite/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_(ULA)/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX80_Composite/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX80_Composite/ZX80_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX80_Composite/ZX80_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX80_Composite/ZX80_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX80_Composite/ZX80_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX80_Composite/ZX80_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX80_Composite/ZX80_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX80_Composite/ZX80_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX80_Composite/ZX80_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_Composite/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX81_(ULA)/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_Composite/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX81_(ULA)/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_(ULA)/ZX81_(ULA)_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX81_(ULA)/ZX81_(ULA)_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_(ULA)/ZX81_(ULA)_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX81_(ULA)/ZX81_(ULA)_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_(ULA)/ZX81_(ULA)_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX81_(ULA)/ZX81_(ULA)_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_(ULA)/ZX81_(ULA)_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX81_(ULA)/ZX81_(ULA)_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/TRS_80_Model_1/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX81_Composite/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/TRS_80_Model_1/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX81_Composite/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_Composite/ZX81_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX81_Composite/ZX81_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_Composite/ZX81_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX81_Composite/ZX81_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_Composite/ZX81_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX81_Composite/ZX81_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_Composite/ZX81_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX81_Composite/ZX81_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/TRS_80_Modified_1/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II + UK101/Superboard_II_32x32/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/TRS_80_Modified_1/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II + UK101/Superboard_II_32x32/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Superboard_II_32x32/Superboard_II_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II + UK101/Superboard_II_32x32/Superboard_II_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Superboard_II_32x32/Superboard_II_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II + UK101/Superboard_II_32x32/Superboard_II_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Superboard_II_32x32/Superboard_II_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II + UK101/Superboard_II_32x32/Superboard_II_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Superboard_II_32x32/Superboard_II_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II + UK101/Superboard_II_32x32/Superboard_II_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/Tandy_CoCo_1-2/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II + UK101/Superboard_II_64x32/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/Tandy_CoCo_1-2/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II + UK101/Superboard_II_64x32/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Superboard_II_64x32/Superboard_II_64_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II + UK101/Superboard_II_64x32/Superboard_II_64_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Superboard_II_64x32/Superboard_II_64_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II + UK101/Superboard_II_64x32/Superboard_II_64_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Superboard_II_64x32/Superboard_II_64_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II + UK101/Superboard_II_64x32/Superboard_II_64_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Superboard_II_64x32/Superboard_II_64_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II + UK101/Superboard_II_64x32/Superboard_II_64_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/UK_101.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II + UK101/UK_101.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/UK_101.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II + UK101/UK_101.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Dragon.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/Dragon.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Dragon.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/Dragon.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Nascom_II/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/TRS_80_Model_1/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Nascom_II/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/TRS_80_Model_1/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/TRS_80_Model_1/TRS_80_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/TRS_80_Model_1/TRS_80_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/TRS_80_Model_1/TRS_80_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/TRS_80_Model_1/TRS_80_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/TRS_80_Model_1/TRS_80_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/TRS_80_Model_1/TRS_80_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/TRS_80_Model_1/TRS_80_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/TRS_80_Model_1/TRS_80_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Superboard_II_32x32/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/TRS_80_Modified_1/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Superboard_II_32x32/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/TRS_80_Modified_1/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/TRS_80_Modified_1/TRS_80_Mod_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/TRS_80_Modified_1/TRS_80_Mod_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/TRS_80_Modified_1/TRS_80_Mod_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/TRS_80_Modified_1/TRS_80_Mod_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/TRS_80_Modified_1/TRS_80_Mod_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/TRS_80_Modified_1/TRS_80_Mod_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/TRS_80_Modified_1/TRS_80_Mod_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/TRS_80_Modified_1/TRS_80_Mod_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Superboard_II_64x32/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/Tandy_CoCo_1-2/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/_Other/Superboard_II_64x32/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/Tandy_CoCo_1-2/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/Tandy_CoCo_1-2/Tandy_CoCo_1-2_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/Tandy_CoCo_1-2/Tandy_CoCo_1-2_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/Tandy_CoCo_1-2/Tandy_CoCo_1-2_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/Tandy_CoCo_1-2/Tandy_CoCo_1-2_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/Tandy_CoCo_1-2/Tandy_CoCo_1-2_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/Tandy_CoCo_1-2/Tandy_CoCo_1-2_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/Tandy_CoCo_1-2/Tandy_CoCo_1-2_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/Tandy_CoCo_1-2/Tandy_CoCo_1-2_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/Tandy_MC10_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/Tandy_MC10_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/Tandy_MC10_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/Tandy_MC10_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/Tandy_MC10_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/Tandy_MC10_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy/Tandy_MC10_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/Tandy_MC10_60Hz.txt From e90e3138f9641794c6a12edb8b01ded4b0fe0113 Mon Sep 17 00:00:00 2001 From: IanSB Date: Tue, 28 Feb 2023 23:38:40 +0000 Subject: [PATCH 23/46] Fix profile folder names --- .../Spectrum_48K/Default.txt | 0 .../Spectrum_48K/Spectrum_48K_50Hz.txt | 0 .../Spectrum_48K/Spectrum_48K_60Hz.txt | 0 .../ZX80_Composite/Default.txt | 0 .../ZX80_Composite/ZX80_50Hz.txt | 0 .../ZX80_Composite/ZX80_60Hz.txt | 0 .../ZX81_(ULA)/Default.txt | 0 .../ZX81_(ULA)/ZX81_(ULA)_50Hz.txt | 0 .../ZX81_(ULA)/ZX81_(ULA)_60Hz.txt | 0 .../ZX81_Composite/Default.txt | 0 .../ZX81_Composite/ZX81_50Hz.txt | 0 .../ZX81_Composite/ZX81_60Hz.txt | 0 .../Superboard_II_32x32/Default.txt | 0 .../Superboard_II_32x32/Superboard_II_50Hz.txt | 0 .../Superboard_II_32x32/Superboard_II_60Hz.txt | 0 .../Superboard_II_64x32/Default.txt | 0 .../Superboard_II_64x32/Superboard_II_64_50Hz.txt | 0 .../Superboard_II_64x32/Superboard_II_64_60Hz.txt | 0 .../{Superboard II + UK101 => Superboard II_+_UK101}/UK_101.txt | 0 .../{Tandy + Dragon => Tandy_+_Dragon}/Dragon.txt | 0 .../{Tandy + Dragon => Tandy_+_Dragon}/TRS_80_Model_1/Default.txt | 0 .../TRS_80_Model_1/TRS_80_50Hz.txt | 0 .../TRS_80_Model_1/TRS_80_60Hz.txt | 0 .../TRS_80_Modified_1/Default.txt | 0 .../TRS_80_Modified_1/TRS_80_Mod_50Hz.txt | 0 .../TRS_80_Modified_1/TRS_80_Mod_60Hz.txt | 0 .../{Tandy + Dragon => Tandy_+_Dragon}/Tandy_CoCo_1-2/Default.txt | 0 .../Tandy_CoCo_1-2/Tandy_CoCo_1-2_50Hz.txt | 0 .../Tandy_CoCo_1-2/Tandy_CoCo_1-2_60Hz.txt | 0 .../{Tandy + Dragon => Tandy_+_Dragon}/Tandy_MC10_50Hz.txt | 0 .../{Tandy + Dragon => Tandy_+_Dragon}/Tandy_MC10_60Hz.txt | 0 31 files changed, 0 insertions(+), 0 deletions(-) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair + Amstrad => Sinclair_+_Amstrad}/Spectrum_48K/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair + Amstrad => Sinclair_+_Amstrad}/Spectrum_48K/Spectrum_48K_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair + Amstrad => Sinclair_+_Amstrad}/Spectrum_48K/Spectrum_48K_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair + Amstrad => Sinclair_+_Amstrad}/ZX80_Composite/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair + Amstrad => Sinclair_+_Amstrad}/ZX80_Composite/ZX80_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair + Amstrad => Sinclair_+_Amstrad}/ZX80_Composite/ZX80_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair + Amstrad => Sinclair_+_Amstrad}/ZX81_(ULA)/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair + Amstrad => Sinclair_+_Amstrad}/ZX81_(ULA)/ZX81_(ULA)_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair + Amstrad => Sinclair_+_Amstrad}/ZX81_(ULA)/ZX81_(ULA)_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair + Amstrad => Sinclair_+_Amstrad}/ZX81_Composite/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair + Amstrad => Sinclair_+_Amstrad}/ZX81_Composite/ZX81_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair + Amstrad => Sinclair_+_Amstrad}/ZX81_Composite/ZX81_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Superboard II + UK101 => Superboard II_+_UK101}/Superboard_II_32x32/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Superboard II + UK101 => Superboard II_+_UK101}/Superboard_II_32x32/Superboard_II_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Superboard II + UK101 => Superboard II_+_UK101}/Superboard_II_32x32/Superboard_II_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Superboard II + UK101 => Superboard II_+_UK101}/Superboard_II_64x32/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Superboard II + UK101 => Superboard II_+_UK101}/Superboard_II_64x32/Superboard_II_64_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Superboard II + UK101 => Superboard II_+_UK101}/Superboard_II_64x32/Superboard_II_64_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Superboard II + UK101 => Superboard II_+_UK101}/UK_101.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Tandy + Dragon => Tandy_+_Dragon}/Dragon.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Tandy + Dragon => Tandy_+_Dragon}/TRS_80_Model_1/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Tandy + Dragon => Tandy_+_Dragon}/TRS_80_Model_1/TRS_80_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Tandy + Dragon => Tandy_+_Dragon}/TRS_80_Model_1/TRS_80_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Tandy + Dragon => Tandy_+_Dragon}/TRS_80_Modified_1/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Tandy + Dragon => Tandy_+_Dragon}/TRS_80_Modified_1/TRS_80_Mod_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Tandy + Dragon => Tandy_+_Dragon}/TRS_80_Modified_1/TRS_80_Mod_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Tandy + Dragon => Tandy_+_Dragon}/Tandy_CoCo_1-2/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Tandy + Dragon => Tandy_+_Dragon}/Tandy_CoCo_1-2/Tandy_CoCo_1-2_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Tandy + Dragon => Tandy_+_Dragon}/Tandy_CoCo_1-2/Tandy_CoCo_1-2_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Tandy + Dragon => Tandy_+_Dragon}/Tandy_MC10_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Tandy + Dragon => Tandy_+_Dragon}/Tandy_MC10_60Hz.txt (100%) diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/Spectrum_48K/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/Spectrum_48K/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/Spectrum_48K/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/Spectrum_48K/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/Spectrum_48K/Spectrum_48K_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/Spectrum_48K/Spectrum_48K_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/Spectrum_48K/Spectrum_48K_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/Spectrum_48K/Spectrum_48K_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/Spectrum_48K/Spectrum_48K_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/Spectrum_48K/Spectrum_48K_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/Spectrum_48K/Spectrum_48K_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/Spectrum_48K/Spectrum_48K_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX80_Composite/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX80_Composite/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX80_Composite/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX80_Composite/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX80_Composite/ZX80_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX80_Composite/ZX80_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX80_Composite/ZX80_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX80_Composite/ZX80_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX80_Composite/ZX80_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX80_Composite/ZX80_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX80_Composite/ZX80_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX80_Composite/ZX80_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX81_(ULA)/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX81_(ULA)/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX81_(ULA)/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX81_(ULA)/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX81_(ULA)/ZX81_(ULA)_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX81_(ULA)/ZX81_(ULA)_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX81_(ULA)/ZX81_(ULA)_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX81_(ULA)/ZX81_(ULA)_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX81_(ULA)/ZX81_(ULA)_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX81_(ULA)/ZX81_(ULA)_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX81_(ULA)/ZX81_(ULA)_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX81_(ULA)/ZX81_(ULA)_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX81_Composite/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX81_Composite/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX81_Composite/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX81_Composite/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX81_Composite/ZX81_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX81_Composite/ZX81_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX81_Composite/ZX81_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX81_Composite/ZX81_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX81_Composite/ZX81_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX81_Composite/ZX81_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair + Amstrad/ZX81_Composite/ZX81_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX81_Composite/ZX81_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II + UK101/Superboard_II_32x32/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II_+_UK101/Superboard_II_32x32/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II + UK101/Superboard_II_32x32/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II_+_UK101/Superboard_II_32x32/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II + UK101/Superboard_II_32x32/Superboard_II_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II_+_UK101/Superboard_II_32x32/Superboard_II_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II + UK101/Superboard_II_32x32/Superboard_II_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II_+_UK101/Superboard_II_32x32/Superboard_II_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II + UK101/Superboard_II_32x32/Superboard_II_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II_+_UK101/Superboard_II_32x32/Superboard_II_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II + UK101/Superboard_II_32x32/Superboard_II_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II_+_UK101/Superboard_II_32x32/Superboard_II_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II + UK101/Superboard_II_64x32/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II_+_UK101/Superboard_II_64x32/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II + UK101/Superboard_II_64x32/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II_+_UK101/Superboard_II_64x32/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II + UK101/Superboard_II_64x32/Superboard_II_64_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II_+_UK101/Superboard_II_64x32/Superboard_II_64_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II + UK101/Superboard_II_64x32/Superboard_II_64_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II_+_UK101/Superboard_II_64x32/Superboard_II_64_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II + UK101/Superboard_II_64x32/Superboard_II_64_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II_+_UK101/Superboard_II_64x32/Superboard_II_64_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II + UK101/Superboard_II_64x32/Superboard_II_64_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II_+_UK101/Superboard_II_64x32/Superboard_II_64_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II + UK101/UK_101.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II_+_UK101/UK_101.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II + UK101/UK_101.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Superboard II_+_UK101/UK_101.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/Dragon.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy_+_Dragon/Dragon.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/Dragon.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy_+_Dragon/Dragon.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/TRS_80_Model_1/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy_+_Dragon/TRS_80_Model_1/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/TRS_80_Model_1/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy_+_Dragon/TRS_80_Model_1/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/TRS_80_Model_1/TRS_80_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy_+_Dragon/TRS_80_Model_1/TRS_80_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/TRS_80_Model_1/TRS_80_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy_+_Dragon/TRS_80_Model_1/TRS_80_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/TRS_80_Model_1/TRS_80_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy_+_Dragon/TRS_80_Model_1/TRS_80_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/TRS_80_Model_1/TRS_80_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy_+_Dragon/TRS_80_Model_1/TRS_80_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/TRS_80_Modified_1/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy_+_Dragon/TRS_80_Modified_1/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/TRS_80_Modified_1/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy_+_Dragon/TRS_80_Modified_1/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/TRS_80_Modified_1/TRS_80_Mod_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy_+_Dragon/TRS_80_Modified_1/TRS_80_Mod_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/TRS_80_Modified_1/TRS_80_Mod_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy_+_Dragon/TRS_80_Modified_1/TRS_80_Mod_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/TRS_80_Modified_1/TRS_80_Mod_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy_+_Dragon/TRS_80_Modified_1/TRS_80_Mod_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/TRS_80_Modified_1/TRS_80_Mod_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy_+_Dragon/TRS_80_Modified_1/TRS_80_Mod_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/Tandy_CoCo_1-2/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy_+_Dragon/Tandy_CoCo_1-2/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/Tandy_CoCo_1-2/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy_+_Dragon/Tandy_CoCo_1-2/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/Tandy_CoCo_1-2/Tandy_CoCo_1-2_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy_+_Dragon/Tandy_CoCo_1-2/Tandy_CoCo_1-2_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/Tandy_CoCo_1-2/Tandy_CoCo_1-2_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy_+_Dragon/Tandy_CoCo_1-2/Tandy_CoCo_1-2_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/Tandy_CoCo_1-2/Tandy_CoCo_1-2_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy_+_Dragon/Tandy_CoCo_1-2/Tandy_CoCo_1-2_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/Tandy_CoCo_1-2/Tandy_CoCo_1-2_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy_+_Dragon/Tandy_CoCo_1-2/Tandy_CoCo_1-2_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/Tandy_MC10_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy_+_Dragon/Tandy_MC10_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/Tandy_MC10_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy_+_Dragon/Tandy_MC10_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/Tandy_MC10_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy_+_Dragon/Tandy_MC10_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy + Dragon/Tandy_MC10_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Tandy_+_Dragon/Tandy_MC10_60Hz.txt From 4542678c10b08e3645c497bd6933a1402df890ae Mon Sep 17 00:00:00 2001 From: IanSB Date: Tue, 28 Feb 2023 23:47:48 +0000 Subject: [PATCH 24/46] Fix profile save bug --- src/filesystem.c | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/src/filesystem.c b/src/filesystem.c index 01b1cb45..fea4f497 100644 --- a/src/filesystem.c +++ b/src/filesystem.c @@ -851,18 +851,18 @@ int file_save(char *dirpath, char *name, char *buffer, unsigned int buffer_size, if (result != FR_OK && result != FR_EXIST) { log_warn("Failed to create dir1 %s (result = %d)",path, result); } - strcpy(temp_buffer, name); - char *index = strchr(temp_buffer, '/'); - if (index) { - *index = 0; - } - sprintf(path, "%s/%s/%s", SAVED_PROFILE_BASE, cpld->name, temp_buffer); - result = f_mkdir(path); - if (result != FR_OK && result != FR_EXIST) { - log_warn("Failed to create dir2 %s (result = %d)",path, result); - } if (dirpath != NULL) { + strcpy(temp_buffer, dirpath); + char *index = strchr(temp_buffer, '/'); + if (index) { + *index = 0; + } + sprintf(path, "%s/%s/%s", SAVED_PROFILE_BASE, cpld->name, temp_buffer); + result = f_mkdir(path); + if (result != FR_OK && result != FR_EXIST) { + log_warn("Failed to create dir2 %s (result = %d)",path, result); + } sprintf(path, "%s/%s/%s", SAVED_PROFILE_BASE, cpld->name, dirpath); result = f_mkdir(path); if (result != FR_OK && result != FR_EXIST) { @@ -875,6 +875,17 @@ int file_save(char *dirpath, char *name, char *buffer, unsigned int buffer_size, } sprintf(comparison_path, "%s/%s/%s/%s.txt", PROFILE_BASE, cpld->name, dirpath, name); } else { + strcpy(temp_buffer, name); + char *index = strchr(temp_buffer, '/'); + if (index) { + *index = 0; + } + sprintf(path, "%s/%s/%s", SAVED_PROFILE_BASE, cpld->name, temp_buffer); + result = f_mkdir(path); + if (result != FR_OK && result != FR_EXIST) { + log_warn("Failed to create dir2 %s (result = %d)",path, result); + } + if (saved_config_number == 0) { sprintf(path, "%s/%s/%s.txt", SAVED_PROFILE_BASE, cpld->name, name); } else { From 985db7b260f874e6850681a84911d156b6c4bbb6 Mon Sep 17 00:00:00 2001 From: IanSB Date: Wed, 1 Mar 2023 15:37:16 +0000 Subject: [PATCH 25/46] Fix mode7 width bug with 16bpp overscan adjustment --- src/geometry.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/geometry.c b/src/geometry.c index 427e0991..68eea191 100644 --- a/src/geometry.c +++ b/src/geometry.c @@ -861,7 +861,7 @@ void geometry_get_fb_params(capture_info_t *capinfo) { } - if (get_startup_overscan() != 0 && capinfo->mode7 == 0) { + if (get_startup_overscan() != 0) { //for 16bpp modes reduce the screen area to the actual capture size and make up the rest with overscan on Pi zero due to bandwidth issues int apparent_width = get_hdisplay(); int apparent_height = get_vdisplay(); double_width = (capinfo->sizex2 & SIZEX2_DOUBLE_WIDTH) >> 1; @@ -871,13 +871,19 @@ void geometry_get_fb_params(capture_info_t *capinfo) { if (get_gscaling() == GSCALING_INTEGER) { int actual_width = (capinfo->chars_per_line << 3); int actual_height = capinfo->nlines; + + if ((capinfo->mode7 && get_parameter(F_MODE7_SCALING) == SCALING_UNEVEN) + || (!capinfo->mode7 && get_parameter(F_NORMAL_SCALING) == SCALING_UNEVEN && geometry->h_aspect == 3 && (geometry->v_aspect == 2 || geometry->v_aspect == 4))) { + actual_width = actual_width * 4 / 3; + } + left = (apparent_width - (actual_width * hscale)) / 2; right = left; top = (apparent_height - (actual_height * vscale)) / 2; bottom = top; - capinfo->width = actual_width << double_width; - capinfo->height = actual_height << double_height; + capinfo->width = (capinfo->chars_per_line << 3) << double_width; + capinfo->height = capinfo->nlines << double_height; //log_info("sizes = %d %d %d %d %d %d %d %d %d %d", apparent_width,apparent_height,actual_width, actual_height ,hscale,vscale,left,right,top,bottom); } else { top = 0; From 3fc12db7d025729bb25f22ead546e1ceaaaab691 Mon Sep 17 00:00:00 2001 From: IanSB Date: Wed, 1 Mar 2023 17:07:09 +0000 Subject: [PATCH 26/46] Further mode7 width bugfix --- src/geometry.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/geometry.c b/src/geometry.c index 68eea191..4c1846a6 100644 --- a/src/geometry.c +++ b/src/geometry.c @@ -860,6 +860,7 @@ void geometry_get_fb_params(capture_info_t *capinfo) { capinfo->sizex2 &= SIZEX2_DOUBLE_WIDTH; } + int uneven = ((capinfo->mode7 && get_parameter(F_MODE7_SCALING) == SCALING_UNEVEN) ||(!capinfo->mode7 && get_parameter(F_NORMAL_SCALING) == SCALING_UNEVEN)); if (get_startup_overscan() != 0) { //for 16bpp modes reduce the screen area to the actual capture size and make up the rest with overscan on Pi zero due to bandwidth issues int apparent_width = get_hdisplay(); @@ -867,23 +868,16 @@ void geometry_get_fb_params(capture_info_t *capinfo) { double_width = (capinfo->sizex2 & SIZEX2_DOUBLE_WIDTH) >> 1; double_height = capinfo->sizex2 & SIZEX2_DOUBLE_HEIGHT; - if (_get_hardware_id() == _RPI && capinfo->bpp == 16) { + if (_get_hardware_id() == _RPI && capinfo->bpp == 16 && !uneven) { if (get_gscaling() == GSCALING_INTEGER) { int actual_width = (capinfo->chars_per_line << 3); int actual_height = capinfo->nlines; - - if ((capinfo->mode7 && get_parameter(F_MODE7_SCALING) == SCALING_UNEVEN) - || (!capinfo->mode7 && get_parameter(F_NORMAL_SCALING) == SCALING_UNEVEN && geometry->h_aspect == 3 && (geometry->v_aspect == 2 || geometry->v_aspect == 4))) { - actual_width = actual_width * 4 / 3; - } - left = (apparent_width - (actual_width * hscale)) / 2; right = left; top = (apparent_height - (actual_height * vscale)) / 2; bottom = top; - - capinfo->width = (capinfo->chars_per_line << 3) << double_width; - capinfo->height = capinfo->nlines << double_height; + capinfo->width = actual_width << double_width; + capinfo->height = actual_height << double_height; //log_info("sizes = %d %d %d %d %d %d %d %d %d %d", apparent_width,apparent_height,actual_width, actual_height ,hscale,vscale,left,right,top,bottom); } else { top = 0; From 5f04b1dfe6a438c7281d53e2685f3db0a5be6774 Mon Sep 17 00:00:00 2001 From: IanSB Date: Wed, 1 Mar 2023 18:19:01 +0000 Subject: [PATCH 27/46] Fix mode7 OSD not clearing under certain conditions --- src/osd.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/osd.c b/src/osd.c index c42efb03..4385b4fd 100644 --- a/src/osd.c +++ b/src/osd.c @@ -4316,7 +4316,7 @@ void osd_update_palette() { void osd_clear() { if (active) { memset(buffer, 32, sizeof(buffer)); - osd_update((uint32_t *) (capinfo->fb + capinfo->pitch * capinfo->height * get_current_display_buffer() + capinfo->pitch * capinfo->v_adjust + capinfo->h_adjust), capinfo->pitch, 0); + osd_update((uint32_t *) (capinfo->fb + capinfo->pitch * capinfo->height * get_current_display_buffer() + capinfo->pitch * capinfo->v_adjust + capinfo->h_adjust), capinfo->pitch, 1); memset(buffer, 0, sizeof(buffer)); active = 0; osd_update_palette(); @@ -5451,7 +5451,6 @@ int osd_key(int key) { if (first_time_press == 1) { first_time_press = 2; osd_clear(); - clear_menu_bits(); osd_set(0, ATTR_DOUBLE_SIZE, "Auto Calibration"); osd_set(1, 0, "Video must be static during calibration"); action_calibrate_auto(); From e67488e8dadd189c769e8367d2630ba7a9dfee18 Mon Sep 17 00:00:00 2001 From: IanSB Date: Thu, 2 Mar 2023 04:43:30 +0000 Subject: [PATCH 28/46] Add recently used option to profile selection menu --- src/cpld.h | 4 ++ src/cpld_atom.c | 6 +- src/cpld_null.c | 34 +++++++--- src/cpld_rgb.c | 54 +++++++++++++--- src/cpld_simple.c | 6 +- src/defs.h | 11 ++-- src/filesystem.c | 53 ++++++++-------- src/osd.c | 156 ++++++++++++++++++++++++++++++++++------------ 8 files changed, 236 insertions(+), 88 deletions(-) diff --git a/src/cpld.h b/src/cpld.h index 09910781..0ab9c361 100644 --- a/src/cpld.h +++ b/src/cpld.h @@ -33,6 +33,10 @@ typedef struct { const char *nameBBC; const char *nameRGB; const char *nameYUV; + const char *nameprefix; + const char *nameBBCprefix; + const char *nameRGBprefix; + const char *nameYUVprefix; const char *default_profile; void (*init)(int cpld_version); int (*get_version)(); diff --git a/src/cpld_atom.c b/src/cpld_atom.c index fcf461c1..d4b9417c 100644 --- a/src/cpld_atom.c +++ b/src/cpld_atom.c @@ -282,7 +282,11 @@ cpld_t cpld_atom = { .nameBBC = "Atom", .nameRGB = "Atom", .nameYUV = "Atom", - .default_profile = "Acorn/Acorn_Atom", + .nameprefix = "Atom ", + .nameBBCprefix = "Atom ", + .nameRGBprefix = "Atom ", + .nameYUVprefix = "Atom ", + .default_profile = "Atom Acorn/Acorn_Atom", .init = cpld_init, .get_version = cpld_get_version, .calibrate = cpld_calibrate, diff --git a/src/cpld_null.c b/src/cpld_null.c index 6eb570ed..f111df2d 100644 --- a/src/cpld_null.c +++ b/src/cpld_null.c @@ -95,7 +95,11 @@ cpld_t cpld_null_atom = { .nameBBC = "Atom", .nameRGB = "Atom", .nameYUV = "Atom", - .default_profile = "Acorn/Atom", + .nameprefix = "Atom ", + .nameBBCprefix = "Atom ", + .nameRGBprefix = "Atom ", + .nameYUVprefix = "Atom ", + .default_profile = "Atom Acorn/Acorn_Atom", .init = cpld_init, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -123,7 +127,11 @@ cpld_t cpld_null_3bit = { .nameBBC = "3-12_BIT_BBC", .nameRGB = "3-12_BIT_BBC", .nameYUV = "3-12_BIT_BBC", - .default_profile = "Acorn/BBC_Micro", + .nameprefix = "(BBC) ", + .nameBBCprefix = "(BBC) ", + .nameRGBprefix = "(BBC) ", + .nameYUVprefix = "(BBC) ", + .default_profile = "(BBC) Acorn/BBC_Micro", .init = cpld_init, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -151,7 +159,11 @@ cpld_t cpld_null_6bit = { .nameBBC = "3-12_BIT_BBC", .nameRGB = "6-12_BIT_RGB", .nameYUV = "6-12_BIT_YUV", - .default_profile = "Acorn/BBC_Micro", + .nameprefix = "(BBC) ", + .nameBBCprefix = "(BBC) ", + .nameRGBprefix = "(RGB) ", + .nameYUVprefix = "(YUV) ", + .default_profile = "(BBC) Acorn/BBC_Micro", .init = cpld_init, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -179,7 +191,11 @@ cpld_t cpld_null_simple = { .nameBBC = "Simple", .nameRGB = "Simple", .nameYUV = "Simple", - .default_profile = "Commodore/Amiga", + .nameprefix = "Simple", + .nameBBCprefix = "Simple", + .nameRGBprefix = "Simple", + .nameYUVprefix = "Simple", + .default_profile = "SimpleCommodore/Amiga", .init = cpld_init, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -205,9 +221,13 @@ cpld_t cpld_null_simple = { cpld_t cpld_null = { .name = "3-12_BIT_BBC", .nameBBC = "3-12_BIT_BBC", - .nameRGB = "6-12_BIT_RGB", - .nameYUV = "6-12_BIT_YUV", - .default_profile = "Acorn/BBC_Micro", + .nameRGB = "3-12_BIT_BBC", + .nameYUV = "3-12_BIT_BBC", + .nameprefix = "(BBC) ", + .nameBBCprefix = "(BBC) ", + .nameRGBprefix = "(BBC) ", + .nameYUVprefix = "(BBC) ", + .default_profile = "(BBC) Acorn/BBC_Micro", .init = cpld_init, .get_version = cpld_get_version, .calibrate = cpld_calibrate, diff --git a/src/cpld_rgb.c b/src/cpld_rgb.c index af9977e0..709ae7ea 100644 --- a/src/cpld_rgb.c +++ b/src/cpld_rgb.c @@ -2197,7 +2197,11 @@ cpld_t cpld_bbc = { .nameBBC = "3-12_BIT_BBC", .nameRGB = "3-12_BIT_BBC", .nameYUV = "3-12_BIT_BBC", - .default_profile = "Acorn/BBC_Micro", + .nameprefix = "(BBC) ", + .nameBBCprefix = "(BBC) ", + .nameRGBprefix = "(BBC) ", + .nameYUVprefix = "(BBC) ", + .default_profile = "(BBC) Acorn/BBC_Micro", .init = cpld_init_bbc, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -2225,7 +2229,11 @@ cpld_t cpld_bbcv10v20 = { .nameBBC = "Legacy_3_BIT", .nameRGB = "Legacy_3_BIT", .nameYUV = "Legacy_3_BIT", - .default_profile = "Acorn/BBC_Micro_v10-v20", + .nameprefix = "(BBC) ", + .nameBBCprefix = "(BBC) ", + .nameRGBprefix = "(BBC) ", + .nameYUVprefix = "(BBC) ", + .default_profile = "(BBC) Acorn/BBC_Micro_v10-v20", .init = cpld_init_bbc, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -2253,7 +2261,11 @@ cpld_t cpld_bbcv21v23 = { .nameBBC = "Legacy_3_BIT", .nameRGB = "Legacy_3_BIT", .nameYUV = "Legacy_3_BIT", - .default_profile = "Acorn/BBC_Micro_v21-v23", + .nameprefix = "(BBC) ", + .nameBBCprefix = "(BBC) ", + .nameRGBprefix = "(BBC) ", + .nameYUVprefix = "(BBC) ", + .default_profile = "(BBC) Acorn/BBC_Micro_v21-v23", .init = cpld_init_bbc, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -2281,7 +2293,11 @@ cpld_t cpld_bbcv24 = { .nameBBC = "Legacy_3_BIT", .nameRGB = "Legacy_3_BIT", .nameYUV = "Legacy_3_BIT", - .default_profile = "Acorn/BBC_Micro_v24", + .nameprefix = "(BBC) ", + .nameBBCprefix = "(BBC) ", + .nameRGBprefix = "(BBC) ", + .nameYUVprefix = "(BBC) ", + .default_profile = "(BBC) Acorn/BBC_Micro_v24", .init = cpld_init_bbc, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -2309,7 +2325,11 @@ cpld_t cpld_bbcv30v62 = { .nameBBC = "Legacy_3_BIT", .nameRGB = "Legacy_3_BIT", .nameYUV = "Legacy_3_BIT", - .default_profile = "Acorn/BBC_Micro_v30-v62", + .nameprefix = "(BBC) ", + .nameBBCprefix = "(BBC) ", + .nameRGBprefix = "(BBC) ", + .nameYUVprefix = "(BBC) ", + .default_profile = "(BBC) Acorn/BBC_Micro_v30-v62", .init = cpld_init_bbc, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -2351,7 +2371,11 @@ cpld_t cpld_rgb_ttl = { .nameBBC = "3-12_BIT_BBC", .nameRGB = "6-12_BIT_RGB", .nameYUV = "6-12_BIT_YUV", - .default_profile = "Acorn/Acorn_Electron", + .nameprefix = "(RGB) ", + .nameBBCprefix = "(BBC) ", + .nameRGBprefix = "(RGB) ", + .nameYUVprefix = "(YUV) ", + .default_profile = "(RGB) Acorn/Electron", .init = cpld_init_rgb_ttl, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -2379,7 +2403,11 @@ cpld_t cpld_rgb_ttl_24mhz = { .nameBBC = "3-12_BIT_BBC", .nameRGB = "6-12_BIT_RGB", .nameYUV = "6-12_BIT_YUV", - .default_profile = "Acorn/BBC_Micro", + .nameprefix = "(BBC) ", + .nameBBCprefix = "(BBC) ", + .nameRGBprefix = "(RGB) ", + .nameYUVprefix = "(YUV) ", + .default_profile = "(BBC) Acorn/BBC_Micro", .init = cpld_init_rgb_ttl, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -2431,7 +2459,11 @@ cpld_t cpld_rgb_analog = { .nameBBC = "3-12_BIT_BBC_Analog", .nameRGB = "6-12_BIT_RGB_Analog", .nameYUV = "6-12_BIT_YUV_Analog", - .default_profile = "Amstrad/Amstrad_CPC", + .nameprefix = "(RGB) ", + .nameBBCprefix = "(BBC) ", + .nameRGBprefix = "(RGB) ", + .nameYUVprefix = "(YUV) ", + .default_profile = "(RGB) Amstrad/Amstrad_CPC", .init = cpld_init_rgb_analog, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -2460,7 +2492,11 @@ cpld_t cpld_rgb_analog_24mhz = { .nameBBC = "3-12_BIT_BBC_Analog", .nameRGB = "6-12_BIT_RGB_Analog", .nameYUV = "6-12_BIT_YUV_Analog", - .default_profile = "Acorn/BBC_Micro", + .nameprefix = "(BBC) ", + .nameBBCprefix = "(BBC) ", + .nameRGBprefix = "(RGB) ", + .nameYUVprefix = "(YUV) ", + .default_profile = "(BBC) Acorn/BBC_Micro", .init = cpld_init_rgb_analog, .get_version = cpld_get_version, .calibrate = cpld_calibrate, diff --git a/src/cpld_simple.c b/src/cpld_simple.c index 79fd775f..4120a9b0 100644 --- a/src/cpld_simple.c +++ b/src/cpld_simple.c @@ -525,7 +525,11 @@ cpld_t cpld_simple = { .nameBBC = "Simple", .nameRGB = "Simple", .nameYUV = "Simple", - .default_profile = "Commodore/Amiga", + .nameprefix = "Simple", + .nameBBCprefix = "Simple", + .nameRGBprefix = "Simple", + .nameYUVprefix = "Simple", + .default_profile = "SimpleCommodore/Amiga", .init = cpld_init, .get_version = cpld_get_version, .calibrate = cpld_calibrate, diff --git a/src/defs.h b/src/defs.h index 2d559a0b..caa3eda4 100644 --- a/src/defs.h +++ b/src/defs.h @@ -313,13 +313,17 @@ typedef struct { #define MAX_CPLD_FILENAMES 24 #define MAX_FILENAME_WIDTH 40 #define MAX_PROFILES 256 -#define MAX_SUB_PROFILES 32 +#define MAX_SUB_PROFILES 64 +#define MAX_FAVOURITES 10 #define MAX_PROFILE_WIDTH 256 #define MAX_BUFFER_SIZE 2048 #define MAX_CONFIG_BUFFER_SIZE 8192 #define DEFAULT_STRING "Default" -#define ROOT_DEFAULT_STRING "../Default" +#define ROOT_DEFAULT_STRING " ../Default" #define DEFAULTTXT_STRING "Default.txt" +#define FAVOURITES_PATH "/favourites.txt" +#define FAVOURITES_MENU "Recently used" +#define FAVOURITES_MENU_CLEAR "Clear recently used" #define NOT_FOUND_STRING "Not Found" #define NONE_STRING "None" #define MAX_NAMES 64 @@ -333,9 +337,6 @@ typedef struct { #define FORCE_UPDATE_FILE_MESSAGE "Deleting this file will force a CPLD update check on the next reset\r\n" #define BLANK_FILE "/cpld_firmware/recovery/blank/BLANK.xsvf" -#define BBC_CPLD_HEADER "(BBC) " -#define RGB_CPLD_HEADER "(RGB) " -#define YUV_CPLD_HEADER "(YUV) " #define CPLD_HEADER_LENGTH 6 #define PAXHEADER "PaxHeader" diff --git a/src/filesystem.c b/src/filesystem.c index fea4f497..467b4e17 100644 --- a/src/filesystem.c +++ b/src/filesystem.c @@ -521,24 +521,24 @@ unsigned int file_read_profile(char *profile_name, int saved_config_number, char if (saved_config_number == 0) { if (sub_profile_name != NULL) { - sprintf(path, "%s/%s/%s/%s.txt", SAVED_PROFILE_BASE, cpld->name, profile_name, sub_profile_name); + sprintf(path, "%s/%s/%s/%s.txt", SAVED_PROFILE_BASE, cpld->name, profile_name + CPLD_HEADER_LENGTH, sub_profile_name); } else { - sprintf(path, "%s/%s/%s.txt", SAVED_PROFILE_BASE, cpld->name, profile_name); + sprintf(path, "%s/%s/%s.txt", SAVED_PROFILE_BASE, cpld->name, profile_name + CPLD_HEADER_LENGTH); } } else { if (sub_profile_name != NULL) { - sprintf(path, "%s/%s/%s/%s_%d.txt", SAVED_PROFILE_BASE, cpld->name, profile_name, sub_profile_name, saved_config_number); + sprintf(path, "%s/%s/%s/%s_%d.txt", SAVED_PROFILE_BASE, cpld->name, profile_name + CPLD_HEADER_LENGTH, sub_profile_name, saved_config_number); } else { - sprintf(path, "%s/%s/%s_%d.txt", SAVED_PROFILE_BASE, cpld->name, profile_name, saved_config_number); + sprintf(path, "%s/%s/%s_%d.txt", SAVED_PROFILE_BASE, cpld->name, profile_name + CPLD_HEADER_LENGTH, saved_config_number); } } result = f_open(&file, path, FA_READ); if (result != FR_OK) { if (sub_profile_name != NULL) { - sprintf(path, "%s/%s/%s/%s.txt", PROFILE_BASE, cpld->name, profile_name, sub_profile_name); + sprintf(path, "%s/%s/%s/%s.txt", PROFILE_BASE, cpld->name, profile_name + CPLD_HEADER_LENGTH, sub_profile_name); } else { - sprintf(path, "%s/%s/%s.txt", PROFILE_BASE, cpld->name, profile_name); + sprintf(path, "%s/%s/%s.txt", PROFILE_BASE, cpld->name, profile_name + CPLD_HEADER_LENGTH); } result = f_open(&file, path, FA_READ); if (result != FR_OK) { @@ -613,8 +613,9 @@ void scan_cpld_filenames(char cpld_filenames[MAX_CPLD_FILENAMES][MAX_FILENAME_WI close_filesystem(); } -void scan_profiles(char prefix[MAX_PROFILE_WIDTH], char manufacturer_names[MAX_PROFILES][MAX_PROFILE_WIDTH], char profile_names[MAX_PROFILES][MAX_PROFILE_WIDTH], int has_sub_profiles[MAX_PROFILES], char *path, size_t *mcount, size_t *count) { +void scan_profiles(char *prefix, char manufacturer_names[MAX_PROFILES][MAX_PROFILE_WIDTH], char profile_names[MAX_PROFILES][MAX_PROFILE_WIDTH], int has_sub_profiles[MAX_PROFILES], char *path, size_t *mcount, size_t *count) { int initial_count = *count; + int initial_mcount = *mcount; FRESULT res; DIR dir; FIL file; @@ -646,7 +647,7 @@ void scan_profiles(char prefix[MAX_PROFILE_WIDTH], char manufacturer_names[MAX_P } } f_closedir(&dir); - qsort(manufacturer_names, *mcount, sizeof *manufacturer_names, string_compare); + qsort(manufacturer_names[initial_mcount], *mcount - initial_mcount, sizeof *manufacturer_names, string_compare); for (int i = 0; i < *mcount; i++) { sprintf(fpath, "%s/%s", path, manufacturer_names[i]); log_info("Scanning folder: %s", fpath); @@ -681,7 +682,7 @@ void scan_profiles(char prefix[MAX_PROFILE_WIDTH], char manufacturer_names[MAX_P qsort(profile_names[initial_count], (*count) - initial_count, sizeof *profile_names, string_compare); } for (int i = initial_count; i < (*count); i++) { - sprintf(fpath, "%s/%s.txt", path, profile_names[i]); + sprintf(fpath, "%s/%s.txt", path, profile_names[i] + CPLD_HEADER_LENGTH); res = f_open(&file, fpath, FA_READ); if (res == FR_OK) { f_close(&file); @@ -702,7 +703,7 @@ void scan_sub_profiles(char sub_profile_names[MAX_SUB_PROFILES][MAX_PROFILE_WIDT char path[100] = "/Profiles/"; strncat(path, cpld->name, 80); strncat(path, "/", 80); - strncat(path, sub_path, 80); + strncat(path, sub_path + CPLD_HEADER_LENGTH, 80); init_filesystem(); res = f_opendir(&dir, path); if (res == FR_OK) { @@ -853,7 +854,7 @@ int file_save(char *dirpath, char *name, char *buffer, unsigned int buffer_size, } if (dirpath != NULL) { - strcpy(temp_buffer, dirpath); + strcpy(temp_buffer, dirpath + CPLD_HEADER_LENGTH); char *index = strchr(temp_buffer, '/'); if (index) { *index = 0; @@ -863,19 +864,19 @@ int file_save(char *dirpath, char *name, char *buffer, unsigned int buffer_size, if (result != FR_OK && result != FR_EXIST) { log_warn("Failed to create dir2 %s (result = %d)",path, result); } - sprintf(path, "%s/%s/%s", SAVED_PROFILE_BASE, cpld->name, dirpath); + sprintf(path, "%s/%s/%s", SAVED_PROFILE_BASE, cpld->name, dirpath + CPLD_HEADER_LENGTH); result = f_mkdir(path); if (result != FR_OK && result != FR_EXIST) { - log_warn("Failed to create dir3 %s (result = %d)", dirpath, result); + log_warn("Failed to create dir3 %s (result = %d)", dirpath + CPLD_HEADER_LENGTH, result); } if (saved_config_number == 0) { - sprintf(path, "%s/%s/%s/%s.txt", SAVED_PROFILE_BASE, cpld->name, dirpath, name); + sprintf(path, "%s/%s/%s/%s.txt", SAVED_PROFILE_BASE, cpld->name, dirpath + CPLD_HEADER_LENGTH, name); } else { - sprintf(path, "%s/%s/%s/%s_%d.txt", SAVED_PROFILE_BASE, cpld->name, dirpath, name, saved_config_number); + sprintf(path, "%s/%s/%s/%s_%d.txt", SAVED_PROFILE_BASE, cpld->name, dirpath + CPLD_HEADER_LENGTH, name, saved_config_number); } - sprintf(comparison_path, "%s/%s/%s/%s.txt", PROFILE_BASE, cpld->name, dirpath, name); + sprintf(comparison_path, "%s/%s/%s/%s.txt", PROFILE_BASE, cpld->name, dirpath + CPLD_HEADER_LENGTH, name); } else { - strcpy(temp_buffer, name); + strcpy(temp_buffer, name + CPLD_HEADER_LENGTH); char *index = strchr(temp_buffer, '/'); if (index) { *index = 0; @@ -887,11 +888,11 @@ int file_save(char *dirpath, char *name, char *buffer, unsigned int buffer_size, } if (saved_config_number == 0) { - sprintf(path, "%s/%s/%s.txt", SAVED_PROFILE_BASE, cpld->name, name); + sprintf(path, "%s/%s/%s.txt", SAVED_PROFILE_BASE, cpld->name, name + CPLD_HEADER_LENGTH); } else { - sprintf(path, "%s/%s/%s_%d.txt", SAVED_PROFILE_BASE, cpld->name, name, saved_config_number); + sprintf(path, "%s/%s/%s_%d.txt", SAVED_PROFILE_BASE, cpld->name, name + CPLD_HEADER_LENGTH, saved_config_number); } - sprintf(comparison_path, "%s/%s/%s.txt", PROFILE_BASE, cpld->name, name); + sprintf(comparison_path, "%s/%s/%s.txt", PROFILE_BASE, cpld->name, name + CPLD_HEADER_LENGTH); } log_info("Loading comparison file %s", comparison_path); @@ -1014,21 +1015,21 @@ int file_restore(char *dirpath, char *name, int saved_config_number) { } if (dirpath != NULL) { - sprintf(path, "%s/%s/%s", SAVED_PROFILE_BASE, cpld->name, dirpath); + sprintf(path, "%s/%s/%s", SAVED_PROFILE_BASE, cpld->name, dirpath + CPLD_HEADER_LENGTH); result = f_mkdir(path); if (result != FR_OK && result != FR_EXIST) { - log_warn("Failed to create dir %s (result = %d)", dirpath, result); + log_warn("Failed to create dir %s (result = %d)", dirpath + CPLD_HEADER_LENGTH, result); } if (saved_config_number == 0) { - sprintf(path, "%s/%s/%s/%s.txt", SAVED_PROFILE_BASE, cpld->name, dirpath, name); + sprintf(path, "%s/%s/%s/%s.txt", SAVED_PROFILE_BASE, cpld->name, dirpath + CPLD_HEADER_LENGTH, name); } else { - sprintf(path, "%s/%s/%s/%s_%d.txt", SAVED_PROFILE_BASE, cpld->name, dirpath, name, saved_config_number); + sprintf(path, "%s/%s/%s/%s_%d.txt", SAVED_PROFILE_BASE, cpld->name, dirpath + CPLD_HEADER_LENGTH, name, saved_config_number); } } else { if (saved_config_number == 0) { - sprintf(path, "%s/%s/%s.txt", SAVED_PROFILE_BASE, cpld->name, name); + sprintf(path, "%s/%s/%s.txt", SAVED_PROFILE_BASE, cpld->name, name + CPLD_HEADER_LENGTH); } else { - sprintf(path, "%s/%s/%s_%d.txt", SAVED_PROFILE_BASE, cpld->name, name, saved_config_number); + sprintf(path, "%s/%s/%s_%d.txt", SAVED_PROFILE_BASE, cpld->name, name + CPLD_HEADER_LENGTH, saved_config_number); } } log_info("File restored by deleting %s", path); diff --git a/src/osd.c b/src/osd.c index 4385b4fd..558c5d82 100644 --- a/src/osd.c +++ b/src/osd.c @@ -1026,6 +1026,8 @@ static char manufacturer_names[MAX_PROFILES][MAX_PROFILE_WIDTH]; static char profile_names[MAX_PROFILES][MAX_PROFILE_WIDTH]; static char sub_profile_names[MAX_SUB_PROFILES][MAX_PROFILE_WIDTH]; static char resolution_names[MAX_NAMES][MAX_NAMES_WIDTH]; +static char favourite_names[MAX_FAVOURITES][MAX_PROFILE_WIDTH]; +static char current_cpld_header[MAX_PROFILE_WIDTH]; static uint32_t palette_data[256]; static uint32_t osd_palette_data[256]; @@ -1039,6 +1041,7 @@ static int inhibit_palette_dimming = 0; static int single_button_mode = 0; static int manufacturer_count = 0; static int full_profile_count = 0; +static int favourites_count = 0; static int disable_overclock = 0; static unsigned int cpu_clock = 1000; @@ -1772,24 +1775,33 @@ static void rebuild_manufacturer_menu(menu_t *menu) { static void rebuild_profile_menu(menu_t *menu) { int i; int j = 0; - for (i = 0; i <= features[F_PROFILE].max; i++) { - if (strncmp(selected_manufacturer, profile_names[i], strlen(selected_manufacturer)) == 0) { - log_info("Found: %s", profile_names[i]); - profile_params[j].key = i; - profile_params[j].label = profile_names[i]; - j++; - } - } - if (full_profile_count > (features[F_PROFILE].max + 1)) { - for (i = features[F_PROFILE].max + 1; i < full_profile_count; i++) { + if (strcmp(selected_manufacturer, FAVOURITES_MENU) == 0) { + for (i = 0; i < (favourites_count + 1); i++) { + profile_params[j].key = i; + profile_params[j].label = favourite_names[i]; + j++; + } + } else { + for (i = 0; i <= features[F_PROFILE].max; i++) { if (strncmp(selected_manufacturer, profile_names[i] + CPLD_HEADER_LENGTH, strlen(selected_manufacturer)) == 0) { - log_info("Found other CPLD: %s", profile_names[i]); + log_info("Found: %s", profile_names[i]); profile_params[j].key = i; profile_params[j].label = profile_names[i]; j++; } } + if (full_profile_count > (features[F_PROFILE].max + 1)) { + for (i = features[F_PROFILE].max + 1; i < full_profile_count; i++) { + if (strncmp(selected_manufacturer, profile_names[i] + CPLD_HEADER_LENGTH, strlen(selected_manufacturer)) == 0) { + log_info("Found other CPLD: %s", profile_names[i]); + profile_params[j].key = i; + profile_params[j].label = profile_names[i]; + j++; + } + } + } } + profile_params[j].key = -1; rebuild_menu(menu, I_PICKPRO, profile_params); } @@ -1847,17 +1859,19 @@ static void redraw_menu() { if (index) { int offset = 0; - if (strncmp(name, BBC_CPLD_HEADER, CPLD_HEADER_LENGTH) == 0) { - strcpy(mp, BBC_CPLD_HEADER); - offset = CPLD_HEADER_LENGTH; - } - if (strncmp(name, RGB_CPLD_HEADER, CPLD_HEADER_LENGTH) == 0) { - strcpy(mp, RGB_CPLD_HEADER); - offset = CPLD_HEADER_LENGTH; - } - if (strncmp(name, YUV_CPLD_HEADER, CPLD_HEADER_LENGTH) == 0) { - strcpy(mp, YUV_CPLD_HEADER); - offset = CPLD_HEADER_LENGTH; + if (strncmp(name, current_cpld_header, CPLD_HEADER_LENGTH) != 0) { + if (strncmp(name, (char*)cpld->nameBBCprefix, CPLD_HEADER_LENGTH) == 0) { + strcpy(mp, (char*)cpld->nameBBCprefix); + offset = CPLD_HEADER_LENGTH; + } + if (strncmp(name, (char*)cpld->nameRGBprefix, CPLD_HEADER_LENGTH) == 0) { + strcpy(mp, (char*)cpld->nameRGBprefix); + offset = CPLD_HEADER_LENGTH; + } + if (strncmp(name, (char*)cpld->nameYUVprefix, CPLD_HEADER_LENGTH) == 0) { + strcpy(mp, (char*)cpld->nameYUVprefix); + offset = CPLD_HEADER_LENGTH; + } } strcpy(mp + offset, index + 1); } else { @@ -5234,8 +5248,42 @@ int osd_key(int key) { redraw_menu(); break; case I_PICKPRO: - log_info("Selected Profile = %s", item_name(item)); - if (strncmp(BBC_CPLD_HEADER, item_name(item), CPLD_HEADER_LENGTH) == 0 || strncmp(RGB_CPLD_HEADER, item_name(item), CPLD_HEADER_LENGTH) == 0 || strncmp(YUV_CPLD_HEADER, item_name(item), CPLD_HEADER_LENGTH) == 0) { + log_info("Selected Profile = %s %s", item_name(item), favourite_names[favourites_count]); + if (strcmp(favourite_names[favourites_count], item_name(item)) == 0) { + favourites_count = 0; + strcpy(favourite_names[favourites_count], FAVOURITES_MENU_CLEAR); + depth--; + osd_refresh(); + osd_clear_no_palette(); + redraw_menu(); + } else { + int duplicate = 0; + for(int i = 0; i < favourites_count; i++) { + if (strcmp(favourite_names[i], item_name(item)) == 0) { + duplicate = 1; + break; + } + } + if (!duplicate) { + if (favourites_count >= MAX_FAVOURITES) { + for (int i = 1; i < MAX_FAVOURITES; i++) { + strcpy(favourite_names[i - 1], favourite_names[i]); + } + favourites_count--; + } + strcpy(favourite_names[favourites_count], item_name(item)); + favourites_count++; + unsigned int bytes_written = 0; + for(int i = 0; i < favourites_count; i++) { + sprintf((char*)(config_buffer + bytes_written), "favourite%d=%s\r\n", i, favourite_names[i]); + log_info("Writing favourite%d=%s", i, favourite_names[i]); + bytes_written += strlen((char*) (config_buffer + bytes_written)); + } + file_save_bin(FAVOURITES_PATH, config_buffer, bytes_written); + } + strcpy(favourite_names[favourites_count], FAVOURITES_MENU_CLEAR); + + if (strncmp(current_cpld_header, item_name(item), CPLD_HEADER_LENGTH) != 0) { char msg[256]; if (first_time_press == 0) { int major = (cpld->get_version() >> VERSION_MAJOR_BIT) & 0xF; @@ -5249,14 +5297,14 @@ int osd_key(int key) { first_time_press = 1; } else { first_time_press = 0; - if (strncmp(BBC_CPLD_HEADER, item_name(item), CPLD_HEADER_LENGTH) == 0) { - write_profile_choice((char*)item_name(item) + CPLD_HEADER_LENGTH, 0, (char*)cpld->nameBBC); + if (strncmp((char*)cpld->nameBBCprefix, item_name(item), CPLD_HEADER_LENGTH) == 0) { + write_profile_choice((char*)item_name(item), 0, (char*)cpld->nameBBC); } - if (strncmp(RGB_CPLD_HEADER, item_name(item), CPLD_HEADER_LENGTH) == 0) { - write_profile_choice((char*)item_name(item) + CPLD_HEADER_LENGTH, 0, (char*)cpld->nameRGB); + if (strncmp((char*)cpld->nameRGBprefix, item_name(item), CPLD_HEADER_LENGTH) == 0) { + write_profile_choice((char*)item_name(item), 0, (char*)cpld->nameRGB); } - if (strncmp(YUV_CPLD_HEADER, item_name(item), CPLD_HEADER_LENGTH) == 0) { - write_profile_choice((char*)item_name(item) + CPLD_HEADER_LENGTH, 0, (char*)cpld->nameYUV); + if (strncmp((char*)cpld->nameYUVprefix, item_name(item), CPLD_HEADER_LENGTH) == 0) { + write_profile_choice((char*)item_name(item), 0, (char*)cpld->nameYUV); } int count; char cpld_dir[MAX_STRING_SIZE]; @@ -5289,11 +5337,14 @@ int osd_key(int key) { break; } } - // Rebuild dynamically populated menus, e.g. the sampling and geometry menus that are mode specific - osd_refresh(); - osd_clear_no_palette(); - redraw_menu(); } + + + // Rebuild dynamically populated menus, e.g. the sampling and geometry menus that are mode specific + osd_refresh(); + osd_clear_no_palette(); + redraw_menu(); + } break; case I_FEATURE: @@ -6241,6 +6292,26 @@ void osd_init() { } set_frontend(all_frontends[(cpld->get_version() >> VERSION_DESIGN_BIT) & 0x0F], 0); + favourites_count = 0; + char favname[MAX_STRING_SIZE]; + cbytes = file_load(FAVOURITES_PATH, config_buffer, MAX_CONFIG_BUFFER_SIZE); + config_buffer[cbytes] = 0; + if (cbytes) { + for(int i = 0; i < MAX_FAVOURITES; i++) { + sprintf(favname, "favourite%d", i); + prop = get_prop_no_space(config_buffer, favname); + if (prop) { + strcpy(favourite_names[favourites_count], prop); + log_info("Reading favourite%d=%s", i, favourite_names[favourites_count]); + favourites_count++; + } + + } + } + strcpy(favourite_names[favourites_count], FAVOURITES_MENU_CLEAR); + + + // default profile entry of not found features[F_PROFILE].max = 0; strcpy(profile_names[0], NOT_FOUND_STRING); @@ -6260,27 +6331,32 @@ void osd_init() { log_info("%s %s %s %s", cpld_path, bbcpath, rgbpath, yuvpath); char name[100]; - + sprintf(current_cpld_header, "%s", (char*)cpld->nameprefix); + log_info("current cpld header = '%s'", current_cpld_header); // pre-read default profile unsigned int bytes = file_read_profile(ROOT_DEFAULT_STRING, 0, NULL, 0, default_buffer, MAX_BUFFER_SIZE - 4); if (bytes != 0) { size_t count = 0; size_t mcount = 0; - scan_profiles("", manufacturer_names, profile_names, has_sub_profiles, cpld_path, &mcount, &count); + scan_profiles(current_cpld_header, manufacturer_names, profile_names, has_sub_profiles, cpld_path, &mcount, &count); features[F_PROFILE].max = count - 1; if (strcmp(cpld_path, bbcpath) != 0) { log_info("Scanning BBC extra profiles"); - scan_profiles(BBC_CPLD_HEADER, manufacturer_names, profile_names, has_sub_profiles, bbcpath, &mcount, &count); + scan_profiles((char*)cpld->nameBBCprefix, manufacturer_names, profile_names, has_sub_profiles, bbcpath, &mcount, &count); } if (strcmp(cpld_path, rgbpath) != 0) { log_info("Scanning RGB extra profiles"); - scan_profiles(RGB_CPLD_HEADER, manufacturer_names, profile_names, has_sub_profiles, rgbpath, &mcount, &count); + scan_profiles((char*)cpld->nameRGBprefix, manufacturer_names, profile_names, has_sub_profiles, rgbpath, &mcount, &count); } if (strcmp(cpld_path, yuvpath) != 0) { log_info("Scanning YUV extra profiles"); - scan_profiles(YUV_CPLD_HEADER, manufacturer_names, profile_names, has_sub_profiles, yuvpath, &mcount, &count); + scan_profiles((char*)cpld->nameYUVprefix, manufacturer_names, profile_names, has_sub_profiles, yuvpath, &mcount, &count); } + + strcpy(manufacturer_names[mcount], FAVOURITES_MENU); + mcount++; + manufacturer_count = mcount; full_profile_count = count; @@ -6299,6 +6375,7 @@ void osd_init() { } } */ + // The default profile is provided by the CPLD prop = cpld->default_profile; val = 0; @@ -6336,6 +6413,7 @@ void osd_init() { } } + } set_menu_table(); } From 1976d6fde55edd4b68f2a3fce70db0ea8ed8061d Mon Sep 17 00:00:00 2001 From: IanSB Date: Thu, 2 Mar 2023 17:43:51 +0000 Subject: [PATCH 29/46] Rework cpld name prefix handling --- src/cpld_atom.c | 10 ++-- src/cpld_null.c | 42 +++++++-------- src/cpld_rgb.c | 90 +++++++++++++++---------------- src/cpld_simple.c | 2 +- src/cpld_yuv.c | 8 +++ src/defs.h | 4 +- src/filesystem.c | 69 +++++++++++------------- src/filesystem.h | 8 +-- src/osd.c | 131 +++++++++++++++++++++++++++------------------- 9 files changed, 191 insertions(+), 173 deletions(-) diff --git a/src/cpld_atom.c b/src/cpld_atom.c index d4b9417c..bd2d4baf 100644 --- a/src/cpld_atom.c +++ b/src/cpld_atom.c @@ -282,11 +282,11 @@ cpld_t cpld_atom = { .nameBBC = "Atom", .nameRGB = "Atom", .nameYUV = "Atom", - .nameprefix = "Atom ", - .nameBBCprefix = "Atom ", - .nameRGBprefix = "Atom ", - .nameYUVprefix = "Atom ", - .default_profile = "Atom Acorn/Acorn_Atom", + .nameprefix = "Atom", + .nameBBCprefix = "Atom", + .nameRGBprefix = "Atom", + .nameYUVprefix = "Atom", + .default_profile = "Acorn/Acorn_Atom", .init = cpld_init, .get_version = cpld_get_version, .calibrate = cpld_calibrate, diff --git a/src/cpld_null.c b/src/cpld_null.c index f111df2d..5e5f3a65 100644 --- a/src/cpld_null.c +++ b/src/cpld_null.c @@ -95,11 +95,11 @@ cpld_t cpld_null_atom = { .nameBBC = "Atom", .nameRGB = "Atom", .nameYUV = "Atom", - .nameprefix = "Atom ", - .nameBBCprefix = "Atom ", - .nameRGBprefix = "Atom ", - .nameYUVprefix = "Atom ", - .default_profile = "Atom Acorn/Acorn_Atom", + .nameprefix = "Atom", + .nameBBCprefix = "Atom", + .nameRGBprefix = "Atom", + .nameYUVprefix = "Atom", + .default_profile = "Acorn/Acorn_Atom", .init = cpld_init, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -127,11 +127,11 @@ cpld_t cpld_null_3bit = { .nameBBC = "3-12_BIT_BBC", .nameRGB = "3-12_BIT_BBC", .nameYUV = "3-12_BIT_BBC", - .nameprefix = "(BBC) ", - .nameBBCprefix = "(BBC) ", - .nameRGBprefix = "(BBC) ", - .nameYUVprefix = "(BBC) ", - .default_profile = "(BBC) Acorn/BBC_Micro", + .nameprefix = "BBC", + .nameBBCprefix = "BBC", + .nameRGBprefix = "BBC", + .nameYUVprefix = "BBC", + .default_profile = "Acorn/BBC_Micro", .init = cpld_init, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -159,11 +159,11 @@ cpld_t cpld_null_6bit = { .nameBBC = "3-12_BIT_BBC", .nameRGB = "6-12_BIT_RGB", .nameYUV = "6-12_BIT_YUV", - .nameprefix = "(BBC) ", - .nameBBCprefix = "(BBC) ", - .nameRGBprefix = "(RGB) ", - .nameYUVprefix = "(YUV) ", - .default_profile = "(BBC) Acorn/BBC_Micro", + .nameprefix = "BBC", + .nameBBCprefix = "BBC", + .nameRGBprefix = "RGB", + .nameYUVprefix = "YUV", + .default_profile = "Acorn/BBC_Micro", .init = cpld_init, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -195,7 +195,7 @@ cpld_t cpld_null_simple = { .nameBBCprefix = "Simple", .nameRGBprefix = "Simple", .nameYUVprefix = "Simple", - .default_profile = "SimpleCommodore/Amiga", + .default_profile = "Commodore/Amiga", .init = cpld_init, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -223,11 +223,11 @@ cpld_t cpld_null = { .nameBBC = "3-12_BIT_BBC", .nameRGB = "3-12_BIT_BBC", .nameYUV = "3-12_BIT_BBC", - .nameprefix = "(BBC) ", - .nameBBCprefix = "(BBC) ", - .nameRGBprefix = "(BBC) ", - .nameYUVprefix = "(BBC) ", - .default_profile = "(BBC) Acorn/BBC_Micro", + .nameprefix = "BBC", + .nameBBCprefix = "BBC", + .nameRGBprefix = "BBC", + .nameYUVprefix = "BBC", + .default_profile = "Acorn/BBC_Micro", .init = cpld_init, .get_version = cpld_get_version, .calibrate = cpld_calibrate, diff --git a/src/cpld_rgb.c b/src/cpld_rgb.c index 709ae7ea..c4f98656 100644 --- a/src/cpld_rgb.c +++ b/src/cpld_rgb.c @@ -2197,11 +2197,11 @@ cpld_t cpld_bbc = { .nameBBC = "3-12_BIT_BBC", .nameRGB = "3-12_BIT_BBC", .nameYUV = "3-12_BIT_BBC", - .nameprefix = "(BBC) ", - .nameBBCprefix = "(BBC) ", - .nameRGBprefix = "(BBC) ", - .nameYUVprefix = "(BBC) ", - .default_profile = "(BBC) Acorn/BBC_Micro", + .nameprefix = "BBC", + .nameBBCprefix = "BBC", + .nameRGBprefix = "BBC", + .nameYUVprefix = "BBC", + .default_profile = "Acorn/BBC_Micro", .init = cpld_init_bbc, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -2229,11 +2229,11 @@ cpld_t cpld_bbcv10v20 = { .nameBBC = "Legacy_3_BIT", .nameRGB = "Legacy_3_BIT", .nameYUV = "Legacy_3_BIT", - .nameprefix = "(BBC) ", - .nameBBCprefix = "(BBC) ", - .nameRGBprefix = "(BBC) ", - .nameYUVprefix = "(BBC) ", - .default_profile = "(BBC) Acorn/BBC_Micro_v10-v20", + .nameprefix = "BBC", + .nameBBCprefix = "BBC", + .nameRGBprefix = "BBC", + .nameYUVprefix = "BBC", + .default_profile = "Acorn/BBC_Micro_v10-v20", .init = cpld_init_bbc, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -2261,11 +2261,11 @@ cpld_t cpld_bbcv21v23 = { .nameBBC = "Legacy_3_BIT", .nameRGB = "Legacy_3_BIT", .nameYUV = "Legacy_3_BIT", - .nameprefix = "(BBC) ", - .nameBBCprefix = "(BBC) ", - .nameRGBprefix = "(BBC) ", - .nameYUVprefix = "(BBC) ", - .default_profile = "(BBC) Acorn/BBC_Micro_v21-v23", + .nameprefix = "BBC", + .nameBBCprefix = "BBC", + .nameRGBprefix = "BBC", + .nameYUVprefix = "BBC", + .default_profile = "Acorn/BBC_Micro_v21-v23", .init = cpld_init_bbc, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -2293,11 +2293,11 @@ cpld_t cpld_bbcv24 = { .nameBBC = "Legacy_3_BIT", .nameRGB = "Legacy_3_BIT", .nameYUV = "Legacy_3_BIT", - .nameprefix = "(BBC) ", - .nameBBCprefix = "(BBC) ", - .nameRGBprefix = "(BBC) ", - .nameYUVprefix = "(BBC) ", - .default_profile = "(BBC) Acorn/BBC_Micro_v24", + .nameprefix = "BBC", + .nameBBCprefix = "BBC", + .nameRGBprefix = "BBC", + .nameYUVprefix = "BBC", + .default_profile = "Acorn/BBC_Micro_v24", .init = cpld_init_bbc, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -2325,11 +2325,11 @@ cpld_t cpld_bbcv30v62 = { .nameBBC = "Legacy_3_BIT", .nameRGB = "Legacy_3_BIT", .nameYUV = "Legacy_3_BIT", - .nameprefix = "(BBC) ", - .nameBBCprefix = "(BBC) ", - .nameRGBprefix = "(BBC) ", - .nameYUVprefix = "(BBC) ", - .default_profile = "(BBC) Acorn/BBC_Micro_v30-v62", + .nameprefix = "BBC", + .nameBBCprefix = "BBC", + .nameRGBprefix = "BBC", + .nameYUVprefix = "BBC", + .default_profile = "Acorn/BBC_Micro_v30-v62", .init = cpld_init_bbc, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -2371,11 +2371,11 @@ cpld_t cpld_rgb_ttl = { .nameBBC = "3-12_BIT_BBC", .nameRGB = "6-12_BIT_RGB", .nameYUV = "6-12_BIT_YUV", - .nameprefix = "(RGB) ", - .nameBBCprefix = "(BBC) ", - .nameRGBprefix = "(RGB) ", - .nameYUVprefix = "(YUV) ", - .default_profile = "(RGB) Acorn/Electron", + .nameprefix = "RGB", + .nameBBCprefix = "BBC", + .nameRGBprefix = "RGB", + .nameYUVprefix = "YUV", + .default_profile = "Acorn/Electron", .init = cpld_init_rgb_ttl, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -2403,11 +2403,11 @@ cpld_t cpld_rgb_ttl_24mhz = { .nameBBC = "3-12_BIT_BBC", .nameRGB = "6-12_BIT_RGB", .nameYUV = "6-12_BIT_YUV", - .nameprefix = "(BBC) ", - .nameBBCprefix = "(BBC) ", - .nameRGBprefix = "(RGB) ", - .nameYUVprefix = "(YUV) ", - .default_profile = "(BBC) Acorn/BBC_Micro", + .nameprefix = "BBC", + .nameBBCprefix = "BBC", + .nameRGBprefix = "RGB", + .nameYUVprefix = "YUV", + .default_profile = "Acorn/BBC_Micro", .init = cpld_init_rgb_ttl, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -2459,11 +2459,11 @@ cpld_t cpld_rgb_analog = { .nameBBC = "3-12_BIT_BBC_Analog", .nameRGB = "6-12_BIT_RGB_Analog", .nameYUV = "6-12_BIT_YUV_Analog", - .nameprefix = "(RGB) ", - .nameBBCprefix = "(BBC) ", - .nameRGBprefix = "(RGB) ", - .nameYUVprefix = "(YUV) ", - .default_profile = "(RGB) Amstrad/Amstrad_CPC", + .nameprefix = "RGB", + .nameBBCprefix = "BBC", + .nameRGBprefix = "RGB", + .nameYUVprefix = "YUV", + .default_profile = "Amstrad/Amstrad_CPC", .init = cpld_init_rgb_analog, .get_version = cpld_get_version, .calibrate = cpld_calibrate, @@ -2492,11 +2492,11 @@ cpld_t cpld_rgb_analog_24mhz = { .nameBBC = "3-12_BIT_BBC_Analog", .nameRGB = "6-12_BIT_RGB_Analog", .nameYUV = "6-12_BIT_YUV_Analog", - .nameprefix = "(BBC) ", - .nameBBCprefix = "(BBC) ", - .nameRGBprefix = "(RGB) ", - .nameYUVprefix = "(YUV) ", - .default_profile = "(BBC) Acorn/BBC_Micro", + .nameprefix = "BBC", + .nameBBCprefix = "BBC", + .nameRGBprefix = "RGB", + .nameYUVprefix = "YUV", + .default_profile = "Acorn/BBC_Micro", .init = cpld_init_rgb_analog, .get_version = cpld_get_version, .calibrate = cpld_calibrate, diff --git a/src/cpld_simple.c b/src/cpld_simple.c index 4120a9b0..e25be536 100644 --- a/src/cpld_simple.c +++ b/src/cpld_simple.c @@ -529,7 +529,7 @@ cpld_t cpld_simple = { .nameBBCprefix = "Simple", .nameRGBprefix = "Simple", .nameYUVprefix = "Simple", - .default_profile = "SimpleCommodore/Amiga", + .default_profile = "Commodore/Amiga", .init = cpld_init, .get_version = cpld_get_version, .calibrate = cpld_calibrate, diff --git a/src/cpld_yuv.c b/src/cpld_yuv.c index 4e79cf2f..5bd881ca 100644 --- a/src/cpld_yuv.c +++ b/src/cpld_yuv.c @@ -1430,6 +1430,10 @@ cpld_t cpld_yuv_analog = { .nameBBC = "3-12_BIT_BBC_Analog", .nameRGB = "6-12_BIT_RGB_Analog", .nameYUV = "6-12_BIT_YUV_Analog", + .nameprefix = "YUV", + .nameBBCprefix = "BBC", + .nameRGBprefix = "RGB", + .nameYUVprefix = "YUV", .default_profile = "Apple/Apple_II", .init = cpld_init_analog, .get_version = cpld_get_version, @@ -1457,6 +1461,10 @@ cpld_t cpld_yuv_ttl = { .nameBBC = "3-12_BIT_BBC", .nameRGB = "6-12_BIT_RGB", .nameYUV = "6-12_BIT_YUV", + .nameprefix = "YUV", + .nameBBCprefix = "BBC", + .nameRGBprefix = "RGB", + .nameYUVprefix = "YUV", .default_profile = "Apple/Apple_IIc_TTL", .init = cpld_init_ttl, .get_version = cpld_get_version, diff --git a/src/defs.h b/src/defs.h index caa3eda4..e714fd9c 100644 --- a/src/defs.h +++ b/src/defs.h @@ -319,7 +319,7 @@ typedef struct { #define MAX_BUFFER_SIZE 2048 #define MAX_CONFIG_BUFFER_SIZE 8192 #define DEFAULT_STRING "Default" -#define ROOT_DEFAULT_STRING " ../Default" +#define ROOT_DEFAULT_STRING "../Default" #define DEFAULTTXT_STRING "Default.txt" #define FAVOURITES_PATH "/favourites.txt" #define FAVOURITES_MENU "Recently used" @@ -337,8 +337,6 @@ typedef struct { #define FORCE_UPDATE_FILE_MESSAGE "Deleting this file will force a CPLD update check on the next reset\r\n" #define BLANK_FILE "/cpld_firmware/recovery/blank/BLANK.xsvf" -#define CPLD_HEADER_LENGTH 6 - #define PAXHEADER "PaxHeader" #define NTSC_SOFT 0x04 diff --git a/src/filesystem.c b/src/filesystem.c index 467b4e17..50058937 100644 --- a/src/filesystem.c +++ b/src/filesystem.c @@ -403,21 +403,17 @@ void capture_screenshot(capture_info_t *capinfo, char *profile) { log_warn("Failed to create dir1 %s (result = %d)",CAPTURE_BASE, result); } - strcpy(filepath, profile); - char *index = strchr(filepath, '/'); - if (index) { - *index = 0; - } - sprintf(path, "%s/%s", CAPTURE_BASE, filepath); - result = f_mkdir(path); - if (result != FR_OK && result != FR_EXIST) { - log_warn("Failed to create dir2 %s (result = %d)",path, result); + char *position = strchr(profile, '/'); + if (position) { + strcpy(filepath, position + 1); + } else { + strcpy(filepath, profile); } - sprintf(path, "%s/%s", CAPTURE_BASE, profile); + sprintf(path, "%s/%s", CAPTURE_BASE, filepath); result = f_mkdir(path); if (result != FR_OK && result != FR_EXIST) { - log_warn("Failed to create dir3 %s (result = %d)", path, result); + log_warn("Failed to create dir2 %s (result = %d)", path, result); } initialize_capture_id(path); @@ -521,24 +517,24 @@ unsigned int file_read_profile(char *profile_name, int saved_config_number, char if (saved_config_number == 0) { if (sub_profile_name != NULL) { - sprintf(path, "%s/%s/%s/%s.txt", SAVED_PROFILE_BASE, cpld->name, profile_name + CPLD_HEADER_LENGTH, sub_profile_name); + sprintf(path, "%s/%s/%s/%s.txt", SAVED_PROFILE_BASE, cpld->name, profile_name, sub_profile_name); } else { - sprintf(path, "%s/%s/%s.txt", SAVED_PROFILE_BASE, cpld->name, profile_name + CPLD_HEADER_LENGTH); + sprintf(path, "%s/%s/%s.txt", SAVED_PROFILE_BASE, cpld->name, profile_name); } } else { if (sub_profile_name != NULL) { - sprintf(path, "%s/%s/%s/%s_%d.txt", SAVED_PROFILE_BASE, cpld->name, profile_name + CPLD_HEADER_LENGTH, sub_profile_name, saved_config_number); + sprintf(path, "%s/%s/%s/%s_%d.txt", SAVED_PROFILE_BASE, cpld->name, profile_name, sub_profile_name, saved_config_number); } else { - sprintf(path, "%s/%s/%s_%d.txt", SAVED_PROFILE_BASE, cpld->name, profile_name + CPLD_HEADER_LENGTH, saved_config_number); + sprintf(path, "%s/%s/%s_%d.txt", SAVED_PROFILE_BASE, cpld->name, profile_name, saved_config_number); } } result = f_open(&file, path, FA_READ); if (result != FR_OK) { if (sub_profile_name != NULL) { - sprintf(path, "%s/%s/%s/%s.txt", PROFILE_BASE, cpld->name, profile_name + CPLD_HEADER_LENGTH, sub_profile_name); + sprintf(path, "%s/%s/%s/%s.txt", PROFILE_BASE, cpld->name, profile_name, sub_profile_name); } else { - sprintf(path, "%s/%s/%s.txt", PROFILE_BASE, cpld->name, profile_name + CPLD_HEADER_LENGTH); + sprintf(path, "%s/%s/%s.txt", PROFILE_BASE, cpld->name, profile_name); } result = f_open(&file, path, FA_READ); if (result != FR_OK) { @@ -615,7 +611,6 @@ void scan_cpld_filenames(char cpld_filenames[MAX_CPLD_FILENAMES][MAX_FILENAME_WI void scan_profiles(char *prefix, char manufacturer_names[MAX_PROFILES][MAX_PROFILE_WIDTH], char profile_names[MAX_PROFILES][MAX_PROFILE_WIDTH], int has_sub_profiles[MAX_PROFILES], char *path, size_t *mcount, size_t *count) { int initial_count = *count; - int initial_mcount = *mcount; FRESULT res; DIR dir; FIL file; @@ -647,7 +642,7 @@ void scan_profiles(char *prefix, char manufacturer_names[MAX_PROFILES][MAX_PROFI } } f_closedir(&dir); - qsort(manufacturer_names[initial_mcount], *mcount - initial_mcount, sizeof *manufacturer_names, string_compare); + qsort(manufacturer_names, *mcount, sizeof *manufacturer_names, string_compare); for (int i = 0; i < *mcount; i++) { sprintf(fpath, "%s/%s", path, manufacturer_names[i]); log_info("Scanning folder: %s", fpath); @@ -682,7 +677,7 @@ void scan_profiles(char *prefix, char manufacturer_names[MAX_PROFILES][MAX_PROFI qsort(profile_names[initial_count], (*count) - initial_count, sizeof *profile_names, string_compare); } for (int i = initial_count; i < (*count); i++) { - sprintf(fpath, "%s/%s.txt", path, profile_names[i] + CPLD_HEADER_LENGTH); + sprintf(fpath, "%s/%s.txt", path, profile_names[i] + strlen(prefix)); res = f_open(&file, fpath, FA_READ); if (res == FR_OK) { f_close(&file); @@ -703,7 +698,7 @@ void scan_sub_profiles(char sub_profile_names[MAX_SUB_PROFILES][MAX_PROFILE_WIDT char path[100] = "/Profiles/"; strncat(path, cpld->name, 80); strncat(path, "/", 80); - strncat(path, sub_path + CPLD_HEADER_LENGTH, 80); + strncat(path, sub_path, 80); init_filesystem(); res = f_opendir(&dir, path); if (res == FR_OK) { @@ -854,7 +849,7 @@ int file_save(char *dirpath, char *name, char *buffer, unsigned int buffer_size, } if (dirpath != NULL) { - strcpy(temp_buffer, dirpath + CPLD_HEADER_LENGTH); + strcpy(temp_buffer, dirpath); char *index = strchr(temp_buffer, '/'); if (index) { *index = 0; @@ -864,19 +859,19 @@ int file_save(char *dirpath, char *name, char *buffer, unsigned int buffer_size, if (result != FR_OK && result != FR_EXIST) { log_warn("Failed to create dir2 %s (result = %d)",path, result); } - sprintf(path, "%s/%s/%s", SAVED_PROFILE_BASE, cpld->name, dirpath + CPLD_HEADER_LENGTH); + sprintf(path, "%s/%s/%s", SAVED_PROFILE_BASE, cpld->name, dirpath); result = f_mkdir(path); if (result != FR_OK && result != FR_EXIST) { - log_warn("Failed to create dir3 %s (result = %d)", dirpath + CPLD_HEADER_LENGTH, result); + log_warn("Failed to create dir3 %s (result = %d)", dirpath, result); } if (saved_config_number == 0) { - sprintf(path, "%s/%s/%s/%s.txt", SAVED_PROFILE_BASE, cpld->name, dirpath + CPLD_HEADER_LENGTH, name); + sprintf(path, "%s/%s/%s/%s.txt", SAVED_PROFILE_BASE, cpld->name, dirpath, name); } else { - sprintf(path, "%s/%s/%s/%s_%d.txt", SAVED_PROFILE_BASE, cpld->name, dirpath + CPLD_HEADER_LENGTH, name, saved_config_number); + sprintf(path, "%s/%s/%s/%s_%d.txt", SAVED_PROFILE_BASE, cpld->name, dirpath, name, saved_config_number); } - sprintf(comparison_path, "%s/%s/%s/%s.txt", PROFILE_BASE, cpld->name, dirpath + CPLD_HEADER_LENGTH, name); + sprintf(comparison_path, "%s/%s/%s/%s.txt", PROFILE_BASE, cpld->name, dirpath, name); } else { - strcpy(temp_buffer, name + CPLD_HEADER_LENGTH); + strcpy(temp_buffer, name); char *index = strchr(temp_buffer, '/'); if (index) { *index = 0; @@ -888,11 +883,11 @@ int file_save(char *dirpath, char *name, char *buffer, unsigned int buffer_size, } if (saved_config_number == 0) { - sprintf(path, "%s/%s/%s.txt", SAVED_PROFILE_BASE, cpld->name, name + CPLD_HEADER_LENGTH); + sprintf(path, "%s/%s/%s.txt", SAVED_PROFILE_BASE, cpld->name, name); } else { - sprintf(path, "%s/%s/%s_%d.txt", SAVED_PROFILE_BASE, cpld->name, name + CPLD_HEADER_LENGTH, saved_config_number); + sprintf(path, "%s/%s/%s_%d.txt", SAVED_PROFILE_BASE, cpld->name, name, saved_config_number); } - sprintf(comparison_path, "%s/%s/%s.txt", PROFILE_BASE, cpld->name, name + CPLD_HEADER_LENGTH); + sprintf(comparison_path, "%s/%s/%s.txt", PROFILE_BASE, cpld->name, name); } log_info("Loading comparison file %s", comparison_path); @@ -1015,21 +1010,21 @@ int file_restore(char *dirpath, char *name, int saved_config_number) { } if (dirpath != NULL) { - sprintf(path, "%s/%s/%s", SAVED_PROFILE_BASE, cpld->name, dirpath + CPLD_HEADER_LENGTH); + sprintf(path, "%s/%s/%s", SAVED_PROFILE_BASE, cpld->name, dirpath); result = f_mkdir(path); if (result != FR_OK && result != FR_EXIST) { - log_warn("Failed to create dir %s (result = %d)", dirpath + CPLD_HEADER_LENGTH, result); + log_warn("Failed to create dir %s (result = %d)", dirpath, result); } if (saved_config_number == 0) { - sprintf(path, "%s/%s/%s/%s.txt", SAVED_PROFILE_BASE, cpld->name, dirpath + CPLD_HEADER_LENGTH, name); + sprintf(path, "%s/%s/%s/%s.txt", SAVED_PROFILE_BASE, cpld->name, dirpath, name); } else { - sprintf(path, "%s/%s/%s/%s_%d.txt", SAVED_PROFILE_BASE, cpld->name, dirpath + CPLD_HEADER_LENGTH, name, saved_config_number); + sprintf(path, "%s/%s/%s/%s_%d.txt", SAVED_PROFILE_BASE, cpld->name, dirpath, name, saved_config_number); } } else { if (saved_config_number == 0) { - sprintf(path, "%s/%s/%s.txt", SAVED_PROFILE_BASE, cpld->name, name + CPLD_HEADER_LENGTH); + sprintf(path, "%s/%s/%s.txt", SAVED_PROFILE_BASE, cpld->name, name); } else { - sprintf(path, "%s/%s/%s_%d.txt", SAVED_PROFILE_BASE, cpld->name, name + CPLD_HEADER_LENGTH, saved_config_number); + sprintf(path, "%s/%s/%s_%d.txt", SAVED_PROFILE_BASE, cpld->name, name, saved_config_number); } } log_info("File restored by deleting %s", path); diff --git a/src/filesystem.h b/src/filesystem.h index ae5201c8..9cec7b9d 100644 --- a/src/filesystem.h +++ b/src/filesystem.h @@ -4,14 +4,10 @@ #include "defs.h" #include "osd.h" void init_filesystem(); - void capture_screenshot(capture_info_t *capinfo, char *profile); - void close_filesystem(); - void scan_cpld_filenames(char cpld_filenames[MAX_CPLD_FILENAMES][MAX_FILENAME_WIDTH], char *path, int *count); -void scan_profiles(char prefix[MAX_PROFILE_WIDTH], char manufacturer_names[MAX_PROFILES][MAX_PROFILE_WIDTH], char profile_names[MAX_PROFILES][MAX_PROFILE_WIDTH], int has_sub_profiles[MAX_PROFILES], char *path, size_t *mcount, size_t *count); - +void scan_profiles(char *prefix, char manufacturer_names[MAX_PROFILES][MAX_PROFILE_WIDTH], char profile_names[MAX_PROFILES][MAX_PROFILE_WIDTH], int has_sub_profiles[MAX_PROFILES], char *path, size_t *mcount, size_t *count); void scan_sub_profiles(char sub_profile_names[MAX_SUB_PROFILES][MAX_PROFILE_WIDTH], char *sub_path, size_t *count); void write_profile_choice(char *profile_name, int saved_config_number, char* cpld_name); unsigned int file_read_profile(char *profile_name, int saved_config_number, char *sub_profile_name, int updatecmd, char *command_string, unsigned int buffer_size); @@ -20,7 +16,7 @@ int file_save_config(char *resolution_name, int refresh, int scaling, int filter int file_load(char *path, char *buffer, unsigned int buffer_size); int file_save(char *dirpath, char *name, char *buffer, unsigned int buffer_size, int saved_config_number); int file_restore(char *dirpath, char *name, int saved_config_number); -int create_and_scan_palettes(char names[MAX_NAMES][MAX_NAMES_WIDTH], uint32_t palette_array[MAX_NAMES][MAX_PALETTE_ENTRIES]); + int create_and_scan_palettes(char names[MAX_NAMES][MAX_NAMES_WIDTH], uint32_t palette_array[MAX_NAMES][MAX_PALETTE_ENTRIES]); int file_save_bin(char *path, char *buffer, unsigned int buffer_size); int check_file(char* file_path, char* string); int test_file(char* file_path); diff --git a/src/osd.c b/src/osd.c index 558c5d82..2a14af9d 100644 --- a/src/osd.c +++ b/src/osd.c @@ -1027,7 +1027,11 @@ static char profile_names[MAX_PROFILES][MAX_PROFILE_WIDTH]; static char sub_profile_names[MAX_SUB_PROFILES][MAX_PROFILE_WIDTH]; static char resolution_names[MAX_NAMES][MAX_NAMES_WIDTH]; static char favourite_names[MAX_FAVOURITES][MAX_PROFILE_WIDTH]; -static char current_cpld_header[MAX_PROFILE_WIDTH]; +static char current_cpld_prefix[MAX_PROFILE_WIDTH]; +static char BBC_cpld_prefix[MAX_PROFILE_WIDTH]; +static char RGB_cpld_prefix[MAX_PROFILE_WIDTH]; +static char YUV_cpld_prefix[MAX_PROFILE_WIDTH]; +static int cpld_prefix_length = 0; static uint32_t palette_data[256]; static uint32_t osd_palette_data[256]; @@ -1464,10 +1468,17 @@ void osd_display_interface(int line) { osd_set(line, 0, osdline); sprintf(osdline, "Scaling: %s", scaling_names[get_parameter(F_SCALING)]); osd_set(line + 1, 0, osdline); + char profile_name[MAX_PROFILE_WIDTH]; + char *position = strchr(profile_names[get_parameter(F_PROFILE)], '/'); + if (position) { + strcpy(profile_name, position + 1); + } else { + strcpy(profile_name, profile_names[get_parameter(F_PROFILE)] + cpld_prefix_length); + } if (has_sub_profiles[get_parameter(F_PROFILE)]) { - sprintf(osdline, "Profile: %s (%s)", profile_names[get_parameter(F_PROFILE)], sub_profile_names[get_parameter(F_SUB_PROFILE)]); + sprintf(osdline, "Profile: %s (%s)", profile_name, sub_profile_names[get_parameter(F_SUB_PROFILE)]); } else { - sprintf(osdline, "Profile: %s", profile_names[get_parameter(F_PROFILE)]); + sprintf(osdline, "Profile: %s", profile_name); } osd_set(line + 2, 0, osdline); #ifdef USE_ARM_CAPTURE @@ -1783,7 +1794,7 @@ static void rebuild_profile_menu(menu_t *menu) { } } else { for (i = 0; i <= features[F_PROFILE].max; i++) { - if (strncmp(selected_manufacturer, profile_names[i] + CPLD_HEADER_LENGTH, strlen(selected_manufacturer)) == 0) { + if (strncmp(selected_manufacturer, profile_names[i] + cpld_prefix_length, strlen(selected_manufacturer)) == 0) { log_info("Found: %s", profile_names[i]); profile_params[j].key = i; profile_params[j].label = profile_names[i]; @@ -1792,7 +1803,7 @@ static void rebuild_profile_menu(menu_t *menu) { } if (full_profile_count > (features[F_PROFILE].max + 1)) { for (i = features[F_PROFILE].max + 1; i < full_profile_count; i++) { - if (strncmp(selected_manufacturer, profile_names[i] + CPLD_HEADER_LENGTH, strlen(selected_manufacturer)) == 0) { + if (strncmp(selected_manufacturer, profile_names[i] + cpld_prefix_length, strlen(selected_manufacturer)) == 0) { log_info("Found other CPLD: %s", profile_names[i]); profile_params[j].key = i; profile_params[j].label = profile_names[i]; @@ -1859,18 +1870,18 @@ static void redraw_menu() { if (index) { int offset = 0; - if (strncmp(name, current_cpld_header, CPLD_HEADER_LENGTH) != 0) { - if (strncmp(name, (char*)cpld->nameBBCprefix, CPLD_HEADER_LENGTH) == 0) { - strcpy(mp, (char*)cpld->nameBBCprefix); - offset = CPLD_HEADER_LENGTH; + if (strncmp(name, current_cpld_prefix, cpld_prefix_length) != 0) { + if (strncmp(name, BBC_cpld_prefix, cpld_prefix_length) == 0) { + strcpy(mp, BBC_cpld_prefix); + offset = cpld_prefix_length; } - if (strncmp(name, (char*)cpld->nameRGBprefix, CPLD_HEADER_LENGTH) == 0) { - strcpy(mp, (char*)cpld->nameRGBprefix); - offset = CPLD_HEADER_LENGTH; + if (strncmp(name, RGB_cpld_prefix, cpld_prefix_length) == 0) { + strcpy(mp, RGB_cpld_prefix); + offset = cpld_prefix_length; } - if (strncmp(name, (char*)cpld->nameYUVprefix, CPLD_HEADER_LENGTH) == 0) { - strcpy(mp, (char*)cpld->nameYUVprefix); - offset = CPLD_HEADER_LENGTH; + if (strncmp(name, YUV_cpld_prefix, cpld_prefix_length) == 0) { + strcpy(mp, YUV_cpld_prefix); + offset = cpld_prefix_length; } } strcpy(mp + offset, index + 1); @@ -4437,7 +4448,11 @@ int save_profile(char *path, char *name, char *buffer, char *default_buffer, cha i++; } *pointer = 0; - return file_save(path, name, buffer, pointer - buffer, get_parameter(F_SAVED_CONFIG)); + if (path != NULL) { + return file_save(path + cpld_prefix_length, name, buffer, pointer - buffer, get_parameter(F_SAVED_CONFIG)); + } else { + return file_save(path, name + cpld_prefix_length, buffer, pointer - buffer, get_parameter(F_SAVED_CONFIG)); + } } void process_single_profile(char *buffer) { @@ -4687,18 +4702,18 @@ void load_profiles(int profile_number, int save_selected) { strcpy(sub_profile_names[0], NOT_FOUND_STRING); sub_profile_buffers[0][0] = 0; if (has_sub_profiles[profile_number]) { - bytes = file_read_profile(profile_names[profile_number], get_parameter(F_SAVED_CONFIG), DEFAULT_STRING, save_selected, sub_default_buffer, MAX_BUFFER_SIZE - 4); + bytes = file_read_profile(profile_names[profile_number] + cpld_prefix_length, get_parameter(F_SAVED_CONFIG), DEFAULT_STRING, save_selected, sub_default_buffer, MAX_BUFFER_SIZE - 4); if (!bytes) { //if auto switching default.txt missing put a default value in buffer strcpy(sub_default_buffer,"auto_switch=1\r\n\0"); log_info("Sub-profile default.txt missing, substituting %s", sub_default_buffer); } size_t count = 0; - scan_sub_profiles(sub_profile_names, profile_names[profile_number], &count); + scan_sub_profiles(sub_profile_names, profile_names[profile_number] + cpld_prefix_length, &count); if (count) { features[F_SUB_PROFILE].max = count - 1; for (int i = 0; i < count; i++) { - file_read_profile(profile_names[profile_number], get_parameter(F_SAVED_CONFIG), sub_profile_names[i], 0, sub_profile_buffers[i], MAX_BUFFER_SIZE - 4); + file_read_profile(profile_names[profile_number] + cpld_prefix_length, get_parameter(F_SAVED_CONFIG), sub_profile_names[i], 0, sub_profile_buffers[i], MAX_BUFFER_SIZE - 4); get_autoswitch_geometry(sub_profile_buffers[i], i); } } @@ -4707,7 +4722,7 @@ void load_profiles(int profile_number, int save_selected) { strcpy(sub_profile_names[0], NONE_STRING); sub_profile_buffers[0][0] = 0; if (strcmp(profile_names[profile_number], NOT_FOUND_STRING) != 0) { - file_read_profile(profile_names[profile_number], get_parameter(F_SAVED_CONFIG), NULL, save_selected, main_buffer, MAX_BUFFER_SIZE - 4); + file_read_profile(profile_names[profile_number] + cpld_prefix_length, get_parameter(F_SAVED_CONFIG), NULL, save_selected, main_buffer, MAX_BUFFER_SIZE - 4); } } } @@ -4890,7 +4905,7 @@ void save_configuration() { } } if (result == 0) { - sprintf(msg, "Saved: %s", path); + sprintf(msg, "Saved: %s", path + cpld_prefix_length); } else { if (result == -1) { if (asresult == 0) { @@ -5005,7 +5020,7 @@ int osd_key(int key) { case A1_CAPTURE_SUB: // Capture screen shot - capture_screenshot(capinfo, profile_names[get_feature(F_PROFILE)]); + capture_screenshot(capinfo, profile_names[get_feature(F_PROFILE)] + cpld_prefix_length); // Fire OSD_EXPIRED in 50 frames time ret = 4; // come back to IDLE @@ -5283,7 +5298,7 @@ int osd_key(int key) { } strcpy(favourite_names[favourites_count], FAVOURITES_MENU_CLEAR); - if (strncmp(current_cpld_header, item_name(item), CPLD_HEADER_LENGTH) != 0) { + if (strncmp(current_cpld_prefix, item_name(item), cpld_prefix_length) != 0) { char msg[256]; if (first_time_press == 0) { int major = (cpld->get_version() >> VERSION_MAJOR_BIT) & 0xF; @@ -5297,22 +5312,22 @@ int osd_key(int key) { first_time_press = 1; } else { first_time_press = 0; - if (strncmp((char*)cpld->nameBBCprefix, item_name(item), CPLD_HEADER_LENGTH) == 0) { - write_profile_choice((char*)item_name(item), 0, (char*)cpld->nameBBC); + if (strncmp(BBC_cpld_prefix, item_name(item), cpld_prefix_length) == 0) { + write_profile_choice((char*)item_name(item) + cpld_prefix_length, 0, (char*)cpld->nameBBC); } - if (strncmp((char*)cpld->nameRGBprefix, item_name(item), CPLD_HEADER_LENGTH) == 0) { - write_profile_choice((char*)item_name(item), 0, (char*)cpld->nameRGB); + if (strncmp(RGB_cpld_prefix, item_name(item), cpld_prefix_length) == 0) { + write_profile_choice((char*)item_name(item) + cpld_prefix_length, 0, (char*)cpld->nameRGB); } - if (strncmp((char*)cpld->nameYUVprefix, item_name(item), CPLD_HEADER_LENGTH) == 0) { - write_profile_choice((char*)item_name(item), 0, (char*)cpld->nameYUV); + if (strncmp(YUV_cpld_prefix, item_name(item), cpld_prefix_length) == 0) { + write_profile_choice((char*)item_name(item) + cpld_prefix_length, 0, (char*)cpld->nameYUV); } int count; char cpld_dir[MAX_STRING_SIZE]; strncpy(cpld_dir, cpld_firmware_dir, MAX_STRING_LIMIT); scan_cpld_filenames(cpld_filenames, cpld_dir, &count); char cpld_type[MAX_STRING_SIZE]; - strncpy(cpld_type, item_name(item) + 1, CPLD_HEADER_LENGTH - 3); - cpld_type[CPLD_HEADER_LENGTH - 3] = 0; + strcpy(cpld_type, item_name(item) + 1); + cpld_type[strlen(cpld->nameprefix)] = 0; for(int i = 0; i < count; i++) { if(strstr(cpld_filenames[i], cpld_type) != 0) { sprintf(filename, "%s/%s.xsvf", cpld_firmware_dir, cpld_filenames[i]); @@ -5444,10 +5459,10 @@ int osd_key(int key) { } else { first_time_press = 0; if (has_sub_profiles[get_feature(F_PROFILE)]) { - file_restore(profile_names[get_feature(F_PROFILE)], "Default", get_parameter(F_SAVED_CONFIG)); - file_restore(profile_names[get_feature(F_PROFILE)], sub_profile_names[get_feature(F_SUB_PROFILE)], get_parameter(F_SAVED_CONFIG)); + file_restore(profile_names[get_feature(F_PROFILE)] + cpld_prefix_length, "Default", get_parameter(F_SAVED_CONFIG)); + file_restore(profile_names[get_feature(F_PROFILE)] + cpld_prefix_length, sub_profile_names[get_feature(F_SUB_PROFILE)], get_parameter(F_SAVED_CONFIG)); } else { - file_restore(NULL, profile_names[get_feature(F_PROFILE)], get_parameter(F_SAVED_CONFIG)); + file_restore(NULL, profile_names[get_feature(F_PROFILE)] + cpld_prefix_length, get_parameter(F_SAVED_CONFIG)); } set_feature(F_SAVED_CONFIG, get_parameter(F_SAVED_CONFIG)); force_reinit(); @@ -6292,6 +6307,28 @@ void osd_init() { } set_frontend(all_frontends[(cpld->get_version() >> VERSION_DESIGN_BIT) & 0x0F], 0); + + char name[100]; + char cpld_path[100] = "/Profiles/"; + char bbcpath[100] = "/Profiles/"; + char rgbpath[100] = "/Profiles/"; + char yuvpath[100] = "/Profiles/"; + + strncat(cpld_path, cpld->name, 80); + strncat(bbcpath, cpld->nameBBC, 80); + strncat(rgbpath, cpld->nameRGB, 80); + strncat(yuvpath, cpld->nameYUV, 80); + + sprintf (current_cpld_prefix, "(%s)_", cpld->nameprefix); + sprintf (BBC_cpld_prefix, "(%s)_", cpld->nameBBCprefix); + sprintf (RGB_cpld_prefix, "(%s)_", cpld->nameRGBprefix); + sprintf (YUV_cpld_prefix, "(%s)_", cpld->nameYUVprefix); + + cpld_prefix_length = strlen(current_cpld_prefix); + + log_info("%s %s %s %s", current_cpld_prefix, BBC_cpld_prefix, RGB_cpld_prefix, YUV_cpld_prefix); + log_info("current cpld prefix = '%s', %d", current_cpld_prefix, cpld_prefix_length); + favourites_count = 0; char favname[MAX_STRING_SIZE]; cbytes = file_load(FAVOURITES_PATH, config_buffer, MAX_CONFIG_BUFFER_SIZE); @@ -6310,48 +6347,32 @@ void osd_init() { } strcpy(favourite_names[favourites_count], FAVOURITES_MENU_CLEAR); - - // default profile entry of not found features[F_PROFILE].max = 0; strcpy(profile_names[0], NOT_FOUND_STRING); default_buffer[0] = 0; has_sub_profiles[0] = 0; - char cpld_path[100] = "/Profiles/"; - char bbcpath[100] = "/Profiles/"; - char rgbpath[100] = "/Profiles/"; - char yuvpath[100] = "/Profiles/"; - - strncat(cpld_path, cpld->name, 80); - strncat(bbcpath, cpld->nameBBC, 80); - strncat(rgbpath, cpld->nameRGB, 80); - strncat(yuvpath, cpld->nameYUV, 80); - - log_info("%s %s %s %s", cpld_path, bbcpath, rgbpath, yuvpath); - char name[100]; - sprintf(current_cpld_header, "%s", (char*)cpld->nameprefix); - log_info("current cpld header = '%s'", current_cpld_header); // pre-read default profile unsigned int bytes = file_read_profile(ROOT_DEFAULT_STRING, 0, NULL, 0, default_buffer, MAX_BUFFER_SIZE - 4); if (bytes != 0) { size_t count = 0; size_t mcount = 0; - scan_profiles(current_cpld_header, manufacturer_names, profile_names, has_sub_profiles, cpld_path, &mcount, &count); + scan_profiles(current_cpld_prefix, manufacturer_names, profile_names, has_sub_profiles, cpld_path, &mcount, &count); features[F_PROFILE].max = count - 1; if (strcmp(cpld_path, bbcpath) != 0) { log_info("Scanning BBC extra profiles"); - scan_profiles((char*)cpld->nameBBCprefix, manufacturer_names, profile_names, has_sub_profiles, bbcpath, &mcount, &count); + scan_profiles(BBC_cpld_prefix, manufacturer_names, profile_names, has_sub_profiles, bbcpath, &mcount, &count); } if (strcmp(cpld_path, rgbpath) != 0) { log_info("Scanning RGB extra profiles"); - scan_profiles((char*)cpld->nameRGBprefix, manufacturer_names, profile_names, has_sub_profiles, rgbpath, &mcount, &count); + scan_profiles(RGB_cpld_prefix, manufacturer_names, profile_names, has_sub_profiles, rgbpath, &mcount, &count); } if (strcmp(cpld_path, yuvpath) != 0) { log_info("Scanning YUV extra profiles"); - scan_profiles((char*)cpld->nameYUVprefix, manufacturer_names, profile_names, has_sub_profiles, yuvpath, &mcount, &count); + scan_profiles(YUV_cpld_prefix, manufacturer_names, profile_names, has_sub_profiles, yuvpath, &mcount, &count); } strcpy(manufacturer_names[mcount], FAVOURITES_MENU); @@ -6394,7 +6415,7 @@ void osd_init() { int found_profile = 0; if (prop) { for (int i=0; i<= features[F_PROFILE].max; i++) { - if (strcmp(profile_names[i], prop) == 0) { + if (strcmp(profile_names[i] + cpld_prefix_length, prop) == 0) { set_parameter(F_PROFILE, i); load_profiles(i, 0); process_profile(i); From 58b9d5297204e9e0ae30fc0347b00ef7411dab81 Mon Sep 17 00:00:00 2001 From: IanSB Date: Thu, 2 Mar 2023 19:30:35 +0000 Subject: [PATCH 30/46] Fix bug that stopped dedicated Atom converter from loading its profile --- src/osd.c | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/src/osd.c b/src/osd.c index 2a14af9d..b676a33e 100644 --- a/src/osd.c +++ b/src/osd.c @@ -6353,14 +6353,13 @@ void osd_init() { default_buffer[0] = 0; has_sub_profiles[0] = 0; - // pre-read default profile unsigned int bytes = file_read_profile(ROOT_DEFAULT_STRING, 0, NULL, 0, default_buffer, MAX_BUFFER_SIZE - 4); if (bytes != 0) { size_t count = 0; size_t mcount = 0; scan_profiles(current_cpld_prefix, manufacturer_names, profile_names, has_sub_profiles, cpld_path, &mcount, &count); - features[F_PROFILE].max = count - 1; + features[F_PROFILE].max = count; if (strcmp(cpld_path, bbcpath) != 0) { log_info("Scanning BBC extra profiles"); @@ -6381,22 +6380,8 @@ void osd_init() { manufacturer_count = mcount; full_profile_count = count; - //for (int i = 0; i < full_profile_count; i++) { - //log_info("%s", profile_names[i]); - //} - if (features[F_PROFILE].max != 0) { - -/* - for (int i = 0; i <= features[F_PROFILE].max; i++) { - if (has_sub_profiles[i]) { - log_info("FOUND SUB-FOLDER: %s", profile_names[i]); - } else { - log_info("FOUND PROFILE: %s", profile_names[i]); - } - } -*/ - + features[F_PROFILE].max--; //max is actually count-1 // The default profile is provided by the CPLD prop = cpld->default_profile; val = 0; From c32fb448ceee1710ef70a3ac2621afd470aec575 Mon Sep 17 00:00:00 2001 From: IanSB Date: Thu, 2 Mar 2023 20:31:22 +0000 Subject: [PATCH 31/46] Move CPLD menu to settings and restore Test 50Hz to main menu --- src/osd.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/osd.c b/src/osd.c index b676a33e..819846ea 100644 --- a/src/osd.c +++ b/src/osd.c @@ -671,6 +671,8 @@ static param_menu_item_t aspect_ref = { I_FEATURE, &features[F_INTEGER_ static param_menu_item_t frontend_ref = { I_FEATURE, &features[F_FRONTEND] }; #endif +static child_menu_item_t update_cpld_menu_ref = { I_MENU, &update_cpld_menu }; + static menu_t info_menu = { "Info Menu", NULL, @@ -678,7 +680,6 @@ static menu_t info_menu = { (base_menu_item_t *) &back_ref, (base_menu_item_t *) &source_summary_ref, (base_menu_item_t *) &system_summary_ref, - (base_menu_item_t *) &test_50hz_ref, (base_menu_item_t *) &cal_summary_ref, (base_menu_item_t *) &cal_detail_ref, (base_menu_item_t *) &cal_raw_ref, @@ -755,6 +756,7 @@ static menu_t settings_menu = { (base_menu_item_t *) &oclock_core_ref, (base_menu_item_t *) &oclock_sdram_ref, (base_menu_item_t *) &debug_ref, + (base_menu_item_t *) &update_cpld_menu_ref, NULL } }; @@ -876,7 +878,6 @@ static child_menu_item_t preferences_menu_ref = { I_MENU, &preferences_menu }; static child_menu_item_t settings_menu_ref = { I_MENU, &settings_menu }; static child_menu_item_t geometry_menu_ref = { I_MENU, &geometry_menu }; static child_menu_item_t sampling_menu_ref = { I_MENU, &sampling_menu }; -static child_menu_item_t update_cpld_menu_ref = { I_MENU, &update_cpld_menu }; static child_menu_item_t manufacturer_menu_ref = { I_MENU, &manufacturer_menu }; static menu_t main_menu = { @@ -1082,10 +1083,10 @@ void set_menu_table() { main_menu.items[index++] = (base_menu_item_t *) &settings_menu_ref; main_menu.items[index++] = (base_menu_item_t *) &geometry_menu_ref; main_menu.items[index++] = (base_menu_item_t *) &sampling_menu_ref; - if (frontend != FRONTEND_SIMPLE) main_menu.items[index++] = (base_menu_item_t *) &update_cpld_menu_ref; main_menu.items[index++] = (base_menu_item_t *) &save_ref; main_menu.items[index++] = (base_menu_item_t *) &restore_ref; if (frontend != FRONTEND_SIMPLE) main_menu.items[index++] = (base_menu_item_t *) &cal_sampling_ref; + main_menu.items[index++] = (base_menu_item_t *) &test_50hz_ref, main_menu.items[index++] = (base_menu_item_t *) &hdmi_ref; main_menu.items[index++] = (base_menu_item_t *) &resolution_ref; main_menu.items[index++] = (base_menu_item_t *) &refresh_ref; From 26ffd24accba94337801fc468a0f5d095c622789 Mon Sep 17 00:00:00 2001 From: IanSB Date: Thu, 2 Mar 2023 20:32:40 +0000 Subject: [PATCH 32/46] Rename and move some profiles plus add test profiles --- .../{Sinclair_+_Amstrad => Amstrad}/Amstrad_CPC_PLUS.txt | 0 .../{Sinclair_+_Amstrad => Sinclair}/Sinclair_QL.txt | 0 .../{Sinclair_+_Amstrad => Sinclair}/ZX80_TTL/Default.txt | 0 .../{Sinclair_+_Amstrad => Sinclair}/ZX80_TTL/ZX80_50Hz.txt | 0 .../{Sinclair_+_Amstrad => Sinclair}/ZX80_TTL/ZX80_60Hz.txt | 0 src/scripts/Profiles/3-12_BIT_BBC/_Test/Test_12BPP-Comp.txt | 5 +++++ .../Profiles/3-12_BIT_BBC/_Test/Test_3BPP-Comp(B).txt | 3 +++ .../{Sinclair_+_Amstrad => Amstrad}/Amstrad_CPC.txt | 0 .../{Sinclair_+_Amstrad => Sinclair}/Harlequin_128K.txt | 0 .../{Sinclair_+_Amstrad => Sinclair}/Sinclair_QL.txt | 0 .../Spectrum_+2A_+3_Nuvo.txt => Sinclair/Spectrum_+2A.txt} | 0 .../Spectrum_+2_(Grey).txt} | 0 .../Sinclair/Spectrum_+3.txt} | 0 .../Sinclair/Spectrum_128_(Diode lead).txt} | 0 .../Spectrum_48K+c0pperdragon.txt | 0 .../Profiles/3-12_BIT_BBC_Analog/Sinclair/Spectrum_Nuvo.txt | 3 +++ .../Profiles/3-12_BIT_BBC_Analog/_Test/Test_3LVL_NoTerm.txt | 4 ++++ .../Profiles/3-12_BIT_BBC_Analog/_Test/Test_3LVL_Term.txt | 4 ++++ .../Profiles/3-12_BIT_BBC_Analog/_Test/Test_4LVL_Term.txt | 4 ++++ .../{Sinclair_+_Amstrad => Amstrad}/Amstrad_CPC_PLUS.txt | 0 .../{Sinclair_+_Amstrad => Sinclair}/Sinclair_QL.txt | 0 .../Spectrum_+2_(Grey).txt} | 0 src/scripts/Profiles/6-12_BIT_RGB/Sinclair/Spectrum_128.txt | 3 +++ .../{Sinclair_+_Amstrad => Sinclair}/ZX80_TTL/Default.txt | 0 .../{Sinclair_+_Amstrad => Sinclair}/ZX80_TTL/ZX80_50Hz.txt | 0 .../{Sinclair_+_Amstrad => Sinclair}/ZX80_TTL/ZX80_60Hz.txt | 0 src/scripts/Profiles/6-12_BIT_RGB/_Test/Test_12BPP+H+V.txt | 5 +++++ src/scripts/Profiles/6-12_BIT_RGB/_Test/Test_12BPP-Comp.txt | 5 +++++ .../Profiles/6-12_BIT_RGB/_Test/Test_3BPP-Comp(B).txt | 3 +++ .../Profiles/6-12_BIT_RGB/_Test/Test_4BPP-Comp(S).txt | 4 ++++ src/scripts/Profiles/6-12_BIT_RGB/_Test/Test_6BPP+H+V(P).txt | 4 ++++ .../{Sinclair_+_Amstrad => Amstrad}/Amstrad_CPC.txt | 0 .../{Sinclair_+_Amstrad => Sinclair}/Harlequin_128K.txt | 0 .../{Sinclair_+_Amstrad => Sinclair}/Sinclair_QL.txt | 0 .../Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_+2A.txt | 3 +++ .../6-12_BIT_RGB_Analog/Sinclair/Spectrum_+2_(Grey).txt | 3 +++ .../Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_+3.txt | 3 +++ .../Sinclair/Spectrum_128_(Diode_lead).txt | 3 +++ .../Spectrum_48K+c0pperdragon.txt | 0 .../Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_Nuvo.txt | 3 +++ .../Profiles/6-12_BIT_RGB_Analog/_Test/Test_3LVL_NoTerm.txt | 4 ++++ .../6-12_BIT_RGB_Analog/_Test/Test_3LVL_Term+Clamp.txt | 4 ++++ .../Profiles/6-12_BIT_RGB_Analog/_Test/Test_3LVL_Term.txt | 4 ++++ .../Profiles/6-12_BIT_RGB_Analog/_Test/Test_4LVL_Term.txt | 4 ++++ .../{Sinclair_+_Amstrad => Sinclair}/ZX80_TTL/Default.txt | 0 .../{Sinclair_+_Amstrad => Sinclair}/ZX80_TTL/ZX80_50Hz.txt | 0 .../{Sinclair_+_Amstrad => Sinclair}/ZX80_TTL/ZX80_60Hz.txt | 0 .../Profiles/6-12_BIT_YUV/_Test/Test_4BPP-Comp(S).txt | 4 ++++ src/scripts/Profiles/6-12_BIT_YUV/_Test/Test_6BPP+H+V(P).txt | 4 ++++ .../Spectrum_48K_(9_colours)}/Default.txt | 0 .../Spectrum_48K_(9_colours)}/Spectrum_48K_50Hz.txt | 0 .../Spectrum_48K_(9_colours)}/Spectrum_48K_60Hz.txt | 0 .../ZX80_Composite/Default.txt | 0 .../ZX80_Composite/ZX80_50Hz.txt | 0 .../ZX80_Composite/ZX80_60Hz.txt | 0 .../{Sinclair_+_Amstrad => Sinclair}/ZX81_(ULA)/Default.txt | 0 .../ZX81_(ULA)/ZX81_(ULA)_50Hz.txt | 0 .../ZX81_(ULA)/ZX81_(ULA)_60Hz.txt | 0 .../ZX81_Composite/Default.txt | 0 .../ZX81_Composite/ZX81_50Hz.txt | 0 .../ZX81_Composite/ZX81_60Hz.txt | 0 .../Profiles/6-12_BIT_YUV_Analog/_Test/Test_3LVL_NoTerm.txt | 4 ++++ .../6-12_BIT_YUV_Analog/_Test/Test_3LVL_Term+Clamp.txt | 4 ++++ .../Profiles/6-12_BIT_YUV_Analog/_Test/Test_3LVL_Term.txt | 4 ++++ .../Profiles/6-12_BIT_YUV_Analog/_Test/Test_4LVL_Term.txt | 4 ++++ 65 files changed, 102 insertions(+) rename src/scripts/Profiles/3-12_BIT_BBC/{Sinclair_+_Amstrad => Amstrad}/Amstrad_CPC_PLUS.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{Sinclair_+_Amstrad => Sinclair}/Sinclair_QL.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{Sinclair_+_Amstrad => Sinclair}/ZX80_TTL/Default.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{Sinclair_+_Amstrad => Sinclair}/ZX80_TTL/ZX80_50Hz.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC/{Sinclair_+_Amstrad => Sinclair}/ZX80_TTL/ZX80_60Hz.txt (100%) create mode 100644 src/scripts/Profiles/3-12_BIT_BBC/_Test/Test_12BPP-Comp.txt create mode 100644 src/scripts/Profiles/3-12_BIT_BBC/_Test/Test_3BPP-Comp(B).txt rename src/scripts/Profiles/3-12_BIT_BBC_Analog/{Sinclair_+_Amstrad => Amstrad}/Amstrad_CPC.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC_Analog/{Sinclair_+_Amstrad => Sinclair}/Harlequin_128K.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC_Analog/{Sinclair_+_Amstrad => Sinclair}/Sinclair_QL.txt (100%) rename src/scripts/Profiles/3-12_BIT_BBC_Analog/{Sinclair_+_Amstrad/Spectrum_+2A_+3_Nuvo.txt => Sinclair/Spectrum_+2A.txt} (100%) rename src/scripts/Profiles/3-12_BIT_BBC_Analog/{Sinclair_+_Amstrad/Spectrum_128_+2(Grey).txt => Sinclair/Spectrum_+2_(Grey).txt} (100%) rename src/scripts/Profiles/{6-12_BIT_RGB_Analog/Sinclair_+_Amstrad/Spectrum_+2A_+3_Nuvo.txt => 3-12_BIT_BBC_Analog/Sinclair/Spectrum_+3.txt} (100%) rename src/scripts/Profiles/{6-12_BIT_RGB_Analog/Sinclair_+_Amstrad/Spectrum_128_+2(Grey).txt => 3-12_BIT_BBC_Analog/Sinclair/Spectrum_128_(Diode lead).txt} (100%) rename src/scripts/Profiles/3-12_BIT_BBC_Analog/{Sinclair_+_Amstrad => Sinclair}/Spectrum_48K+c0pperdragon.txt (100%) create mode 100644 src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Spectrum_Nuvo.txt create mode 100644 src/scripts/Profiles/3-12_BIT_BBC_Analog/_Test/Test_3LVL_NoTerm.txt create mode 100644 src/scripts/Profiles/3-12_BIT_BBC_Analog/_Test/Test_3LVL_Term.txt create mode 100644 src/scripts/Profiles/3-12_BIT_BBC_Analog/_Test/Test_4LVL_Term.txt rename src/scripts/Profiles/6-12_BIT_RGB/{Sinclair_+_Amstrad => Amstrad}/Amstrad_CPC_PLUS.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{Sinclair_+_Amstrad => Sinclair}/Sinclair_QL.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{Sinclair_+_Amstrad/Spectrum_128_+2(Grey).txt => Sinclair/Spectrum_+2_(Grey).txt} (100%) create mode 100644 src/scripts/Profiles/6-12_BIT_RGB/Sinclair/Spectrum_128.txt rename src/scripts/Profiles/6-12_BIT_RGB/{Sinclair_+_Amstrad => Sinclair}/ZX80_TTL/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{Sinclair_+_Amstrad => Sinclair}/ZX80_TTL/ZX80_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB/{Sinclair_+_Amstrad => Sinclair}/ZX80_TTL/ZX80_60Hz.txt (100%) create mode 100644 src/scripts/Profiles/6-12_BIT_RGB/_Test/Test_12BPP+H+V.txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB/_Test/Test_12BPP-Comp.txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB/_Test/Test_3BPP-Comp(B).txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB/_Test/Test_4BPP-Comp(S).txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB/_Test/Test_6BPP+H+V(P).txt rename src/scripts/Profiles/6-12_BIT_RGB_Analog/{Sinclair_+_Amstrad => Amstrad}/Amstrad_CPC.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB_Analog/{Sinclair_+_Amstrad => Sinclair}/Harlequin_128K.txt (100%) rename src/scripts/Profiles/6-12_BIT_RGB_Analog/{Sinclair_+_Amstrad => Sinclair}/Sinclair_QL.txt (100%) create mode 100644 src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_+2A.txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_+2_(Grey).txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_+3.txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_128_(Diode_lead).txt rename src/scripts/Profiles/6-12_BIT_RGB_Analog/{Sinclair_+_Amstrad => Sinclair}/Spectrum_48K+c0pperdragon.txt (100%) create mode 100644 src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_Nuvo.txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB_Analog/_Test/Test_3LVL_NoTerm.txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB_Analog/_Test/Test_3LVL_Term+Clamp.txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB_Analog/_Test/Test_3LVL_Term.txt create mode 100644 src/scripts/Profiles/6-12_BIT_RGB_Analog/_Test/Test_4LVL_Term.txt rename src/scripts/Profiles/6-12_BIT_YUV/{Sinclair_+_Amstrad => Sinclair}/ZX80_TTL/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV/{Sinclair_+_Amstrad => Sinclair}/ZX80_TTL/ZX80_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV/{Sinclair_+_Amstrad => Sinclair}/ZX80_TTL/ZX80_60Hz.txt (100%) create mode 100644 src/scripts/Profiles/6-12_BIT_YUV/_Test/Test_4BPP-Comp(S).txt create mode 100644 src/scripts/Profiles/6-12_BIT_YUV/_Test/Test_6BPP+H+V(P).txt rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair_+_Amstrad/Spectrum_48K => Sinclair/Spectrum_48K_(9_colours)}/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair_+_Amstrad/Spectrum_48K => Sinclair/Spectrum_48K_(9_colours)}/Spectrum_48K_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair_+_Amstrad/Spectrum_48K => Sinclair/Spectrum_48K_(9_colours)}/Spectrum_48K_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair_+_Amstrad => Sinclair}/ZX80_Composite/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair_+_Amstrad => Sinclair}/ZX80_Composite/ZX80_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair_+_Amstrad => Sinclair}/ZX80_Composite/ZX80_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair_+_Amstrad => Sinclair}/ZX81_(ULA)/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair_+_Amstrad => Sinclair}/ZX81_(ULA)/ZX81_(ULA)_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair_+_Amstrad => Sinclair}/ZX81_(ULA)/ZX81_(ULA)_60Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair_+_Amstrad => Sinclair}/ZX81_Composite/Default.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair_+_Amstrad => Sinclair}/ZX81_Composite/ZX81_50Hz.txt (100%) rename src/scripts/Profiles/6-12_BIT_YUV_Analog/{Sinclair_+_Amstrad => Sinclair}/ZX81_Composite/ZX81_60Hz.txt (100%) create mode 100644 src/scripts/Profiles/6-12_BIT_YUV_Analog/_Test/Test_3LVL_NoTerm.txt create mode 100644 src/scripts/Profiles/6-12_BIT_YUV_Analog/_Test/Test_3LVL_Term+Clamp.txt create mode 100644 src/scripts/Profiles/6-12_BIT_YUV_Analog/_Test/Test_3LVL_Term.txt create mode 100644 src/scripts/Profiles/6-12_BIT_YUV_Analog/_Test/Test_4LVL_Term.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Sinclair_+_Amstrad/Amstrad_CPC_PLUS.txt b/src/scripts/Profiles/3-12_BIT_BBC/Amstrad/Amstrad_CPC_PLUS.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Sinclair_+_Amstrad/Amstrad_CPC_PLUS.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Amstrad/Amstrad_CPC_PLUS.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Sinclair_+_Amstrad/Sinclair_QL.txt b/src/scripts/Profiles/3-12_BIT_BBC/Sinclair/Sinclair_QL.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Sinclair_+_Amstrad/Sinclair_QL.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Sinclair/Sinclair_QL.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Sinclair_+_Amstrad/ZX80_TTL/Default.txt b/src/scripts/Profiles/3-12_BIT_BBC/Sinclair/ZX80_TTL/Default.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Sinclair_+_Amstrad/ZX80_TTL/Default.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Sinclair/ZX80_TTL/Default.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Sinclair_+_Amstrad/ZX80_TTL/ZX80_50Hz.txt b/src/scripts/Profiles/3-12_BIT_BBC/Sinclair/ZX80_TTL/ZX80_50Hz.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Sinclair_+_Amstrad/ZX80_TTL/ZX80_50Hz.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Sinclair/ZX80_TTL/ZX80_50Hz.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/Sinclair_+_Amstrad/ZX80_TTL/ZX80_60Hz.txt b/src/scripts/Profiles/3-12_BIT_BBC/Sinclair/ZX80_TTL/ZX80_60Hz.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC/Sinclair_+_Amstrad/ZX80_TTL/ZX80_60Hz.txt rename to src/scripts/Profiles/3-12_BIT_BBC/Sinclair/ZX80_TTL/ZX80_60Hz.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC/_Test/Test_12BPP-Comp.txt b/src/scripts/Profiles/3-12_BIT_BBC/_Test/Test_12BPP-Comp.txt new file mode 100644 index 00000000..3ea30392 --- /dev/null +++ b/src/scripts/Profiles/3-12_BIT_BBC/_Test/Test_12BPP-Comp.txt @@ -0,0 +1,5 @@ +sampling=6,6,6,6,6,6,6,0,1,0,4,0,0,0,0,0,0,5,0,0,100,256,100,256,100,256,0,256 +geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,4,0,0 +palette=RrGgBb_(EGA) +overclock_core=50 +powerup_message=0 diff --git a/src/scripts/Profiles/3-12_BIT_BBC/_Test/Test_3BPP-Comp(B).txt b/src/scripts/Profiles/3-12_BIT_BBC/_Test/Test_3BPP-Comp(B).txt new file mode 100644 index 00000000..ef9e790a --- /dev/null +++ b/src/scripts/Profiles/3-12_BIT_BBC/_Test/Test_3BPP-Comp(B).txt @@ -0,0 +1,3 @@ +sampling=5,5,5,5,5,5,5,0,1,0,4,0,0,0,0,0,0,0,0,0,100,256,100,256,100,256,0,256 +geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,4,0,0 +powerup_message=0 diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair_+_Amstrad/Amstrad_CPC.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/Amstrad/Amstrad_CPC.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair_+_Amstrad/Amstrad_CPC.txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/Amstrad/Amstrad_CPC.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair_+_Amstrad/Harlequin_128K.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Harlequin_128K.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair_+_Amstrad/Harlequin_128K.txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Harlequin_128K.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair_+_Amstrad/Sinclair_QL.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Sinclair_QL.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair_+_Amstrad/Sinclair_QL.txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Sinclair_QL.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair_+_Amstrad/Spectrum_+2A_+3_Nuvo.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Spectrum_+2A.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair_+_Amstrad/Spectrum_+2A_+3_Nuvo.txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Spectrum_+2A.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair_+_Amstrad/Spectrum_128_+2(Grey).txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Spectrum_+2_(Grey).txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair_+_Amstrad/Spectrum_128_+2(Grey).txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Spectrum_+2_(Grey).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair_+_Amstrad/Spectrum_+2A_+3_Nuvo.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Spectrum_+3.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair_+_Amstrad/Spectrum_+2A_+3_Nuvo.txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Spectrum_+3.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair_+_Amstrad/Spectrum_128_+2(Grey).txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Spectrum_128_(Diode lead).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair_+_Amstrad/Spectrum_128_+2(Grey).txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Spectrum_128_(Diode lead).txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair_+_Amstrad/Spectrum_48K+c0pperdragon.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Spectrum_48K+c0pperdragon.txt similarity index 100% rename from src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair_+_Amstrad/Spectrum_48K+c0pperdragon.txt rename to src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Spectrum_48K+c0pperdragon.txt diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Spectrum_Nuvo.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Spectrum_Nuvo.txt new file mode 100644 index 00000000..89abe50e --- /dev/null +++ b/src/scripts/Profiles/3-12_BIT_BBC_Analog/Sinclair/Spectrum_Nuvo.txt @@ -0,0 +1,3 @@ +sampling=3,3,3,3,3,3,3,0,0,0,6,0,0,0,0,0,0,1,1,0,120,50,120,50,50,256,256,256 +geometry=92,48,272,208,344,288,1,1,3,1,7093800,456,5000,312,4,0,0 +palette=RGBrgb_(Spectrum) diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/_Test/Test_3LVL_NoTerm.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/_Test/Test_3LVL_NoTerm.txt new file mode 100644 index 00000000..20df7c7a --- /dev/null +++ b/src/scripts/Profiles/3-12_BIT_BBC_Analog/_Test/Test_3LVL_NoTerm.txt @@ -0,0 +1,4 @@ +sampling=7,7,7,7,7,7,7,0,1,0,4,0,0,0,0,0,0,1,0,0,190,55,190,55,100,256,256,87 +geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,4,0,0 +palette=RGBrgb_(Amstrad) +powerup_message=0 diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/_Test/Test_3LVL_Term.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/_Test/Test_3LVL_Term.txt new file mode 100644 index 00000000..6ad69fa0 --- /dev/null +++ b/src/scripts/Profiles/3-12_BIT_BBC_Analog/_Test/Test_3LVL_Term.txt @@ -0,0 +1,4 @@ +sampling=6,6,6,6,6,6,6,0,1,0,4,0,0,0,0,0,0,1,1,0,55,16,55,16,100,256,256,17 +geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,4,0,0 +palette=RGBrgb_(Amstrad) +powerup_message=0 diff --git a/src/scripts/Profiles/3-12_BIT_BBC_Analog/_Test/Test_4LVL_Term.txt b/src/scripts/Profiles/3-12_BIT_BBC_Analog/_Test/Test_4LVL_Term.txt new file mode 100644 index 00000000..c6e634cc --- /dev/null +++ b/src/scripts/Profiles/3-12_BIT_BBC_Analog/_Test/Test_4LVL_Term.txt @@ -0,0 +1,4 @@ +sampling=6,6,6,6,6,6,6,0,1,0,4,0,0,0,0,0,0,7,1,0,55,16,55,16,100,34,34,34 +geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,4,0,0 +palette=RrGgBb_(EGA) +powerup_message=0 diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Sinclair_+_Amstrad/Amstrad_CPC_PLUS.txt b/src/scripts/Profiles/6-12_BIT_RGB/Amstrad/Amstrad_CPC_PLUS.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Sinclair_+_Amstrad/Amstrad_CPC_PLUS.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Amstrad/Amstrad_CPC_PLUS.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Sinclair_+_Amstrad/Sinclair_QL.txt b/src/scripts/Profiles/6-12_BIT_RGB/Sinclair/Sinclair_QL.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Sinclair_+_Amstrad/Sinclair_QL.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Sinclair/Sinclair_QL.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Sinclair_+_Amstrad/Spectrum_128_+2(Grey).txt b/src/scripts/Profiles/6-12_BIT_RGB/Sinclair/Spectrum_+2_(Grey).txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Sinclair_+_Amstrad/Spectrum_128_+2(Grey).txt rename to src/scripts/Profiles/6-12_BIT_RGB/Sinclair/Spectrum_+2_(Grey).txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Sinclair/Spectrum_128.txt b/src/scripts/Profiles/6-12_BIT_RGB/Sinclair/Spectrum_128.txt new file mode 100644 index 00000000..edd5eeca --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB/Sinclair/Spectrum_128.txt @@ -0,0 +1,3 @@ +sampling=1,1,1,1,1,1,1,0,0,0,6,0,0,0,0,0,0,1,0,0,100,256,100,256,100,256,256,256 +geometry=92,48,272,208,384,288,1,1,3,1,7093800,456,5000,312,4,0,0 +palette=RGBI_(Spectrum) diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Sinclair_+_Amstrad/ZX80_TTL/Default.txt b/src/scripts/Profiles/6-12_BIT_RGB/Sinclair/ZX80_TTL/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Sinclair_+_Amstrad/ZX80_TTL/Default.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Sinclair/ZX80_TTL/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Sinclair_+_Amstrad/ZX80_TTL/ZX80_50Hz.txt b/src/scripts/Profiles/6-12_BIT_RGB/Sinclair/ZX80_TTL/ZX80_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Sinclair_+_Amstrad/ZX80_TTL/ZX80_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Sinclair/ZX80_TTL/ZX80_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/Sinclair_+_Amstrad/ZX80_TTL/ZX80_60Hz.txt b/src/scripts/Profiles/6-12_BIT_RGB/Sinclair/ZX80_TTL/ZX80_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB/Sinclair_+_Amstrad/ZX80_TTL/ZX80_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_RGB/Sinclair/ZX80_TTL/ZX80_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB/_Test/Test_12BPP+H+V.txt b/src/scripts/Profiles/6-12_BIT_RGB/_Test/Test_12BPP+H+V.txt new file mode 100644 index 00000000..382c732f --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB/_Test/Test_12BPP+H+V.txt @@ -0,0 +1,5 @@ +sampling=5,5,5,5,5,5,5,0,1,0,4,0,0,0,0,0,0,5,0,0,100,256,100,256,100,256,0,256 +geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,3,0,0 +palette=RrGgBb_(EGA) +overclock_core=50 +powerup_message=0 diff --git a/src/scripts/Profiles/6-12_BIT_RGB/_Test/Test_12BPP-Comp.txt b/src/scripts/Profiles/6-12_BIT_RGB/_Test/Test_12BPP-Comp.txt new file mode 100644 index 00000000..3ea30392 --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB/_Test/Test_12BPP-Comp.txt @@ -0,0 +1,5 @@ +sampling=6,6,6,6,6,6,6,0,1,0,4,0,0,0,0,0,0,5,0,0,100,256,100,256,100,256,0,256 +geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,4,0,0 +palette=RrGgBb_(EGA) +overclock_core=50 +powerup_message=0 diff --git a/src/scripts/Profiles/6-12_BIT_RGB/_Test/Test_3BPP-Comp(B).txt b/src/scripts/Profiles/6-12_BIT_RGB/_Test/Test_3BPP-Comp(B).txt new file mode 100644 index 00000000..ef9e790a --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB/_Test/Test_3BPP-Comp(B).txt @@ -0,0 +1,3 @@ +sampling=5,5,5,5,5,5,5,0,1,0,4,0,0,0,0,0,0,0,0,0,100,256,100,256,100,256,0,256 +geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,4,0,0 +powerup_message=0 diff --git a/src/scripts/Profiles/6-12_BIT_RGB/_Test/Test_4BPP-Comp(S).txt b/src/scripts/Profiles/6-12_BIT_RGB/_Test/Test_4BPP-Comp(S).txt new file mode 100644 index 00000000..f2bef79e --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB/_Test/Test_4BPP-Comp(S).txt @@ -0,0 +1,4 @@ +sampling=6,6,6,6,6,6,6,0,1,0,4,0,0,0,0,0,0,1,0,0,100,256,100,256,100,256,0,256 +geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,4,0,0 +palette=RGBrgb_(Spectrum) +powerup_message=0 diff --git a/src/scripts/Profiles/6-12_BIT_RGB/_Test/Test_6BPP+H+V(P).txt b/src/scripts/Profiles/6-12_BIT_RGB/_Test/Test_6BPP+H+V(P).txt new file mode 100644 index 00000000..08c1fefd --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB/_Test/Test_6BPP+H+V(P).txt @@ -0,0 +1,4 @@ +sampling=5,5,5,5,5,5,5,0,1,0,4,0,0,0,0,0,0,1,0,0,100,256,100,256,100,256,0,256 +geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,3,0,0 +palette=RrGgBb_(EGA) +powerup_message=0 diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair_+_Amstrad/Amstrad_CPC.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Amstrad/Amstrad_CPC.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair_+_Amstrad/Amstrad_CPC.txt rename to src/scripts/Profiles/6-12_BIT_RGB_Analog/Amstrad/Amstrad_CPC.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair_+_Amstrad/Harlequin_128K.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Harlequin_128K.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair_+_Amstrad/Harlequin_128K.txt rename to src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Harlequin_128K.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair_+_Amstrad/Sinclair_QL.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Sinclair_QL.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair_+_Amstrad/Sinclair_QL.txt rename to src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Sinclair_QL.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_+2A.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_+2A.txt new file mode 100644 index 00000000..89abe50e --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_+2A.txt @@ -0,0 +1,3 @@ +sampling=3,3,3,3,3,3,3,0,0,0,6,0,0,0,0,0,0,1,1,0,120,50,120,50,50,256,256,256 +geometry=92,48,272,208,344,288,1,1,3,1,7093800,456,5000,312,4,0,0 +palette=RGBrgb_(Spectrum) diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_+2_(Grey).txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_+2_(Grey).txt new file mode 100644 index 00000000..d4e902a8 --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_+2_(Grey).txt @@ -0,0 +1,3 @@ +sampling=1,1,1,1,1,1,1,0,1,0,6,0,0,0,0,0,0,1,0,0,255,77,255,77,58,256,256,256 +geometry=92,48,272,208,344,288,1,1,3,1,7093800,456,5000,312,4,0,0 +palette=RGBrgb_(Spectrum) diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_+3.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_+3.txt new file mode 100644 index 00000000..89abe50e --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_+3.txt @@ -0,0 +1,3 @@ +sampling=3,3,3,3,3,3,3,0,0,0,6,0,0,0,0,0,0,1,1,0,120,50,120,50,50,256,256,256 +geometry=92,48,272,208,344,288,1,1,3,1,7093800,456,5000,312,4,0,0 +palette=RGBrgb_(Spectrum) diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_128_(Diode_lead).txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_128_(Diode_lead).txt new file mode 100644 index 00000000..d4e902a8 --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_128_(Diode_lead).txt @@ -0,0 +1,3 @@ +sampling=1,1,1,1,1,1,1,0,1,0,6,0,0,0,0,0,0,1,0,0,255,77,255,77,58,256,256,256 +geometry=92,48,272,208,344,288,1,1,3,1,7093800,456,5000,312,4,0,0 +palette=RGBrgb_(Spectrum) diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair_+_Amstrad/Spectrum_48K+c0pperdragon.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_48K+c0pperdragon.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair_+_Amstrad/Spectrum_48K+c0pperdragon.txt rename to src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_48K+c0pperdragon.txt diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_Nuvo.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_Nuvo.txt new file mode 100644 index 00000000..89abe50e --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB_Analog/Sinclair/Spectrum_Nuvo.txt @@ -0,0 +1,3 @@ +sampling=3,3,3,3,3,3,3,0,0,0,6,0,0,0,0,0,0,1,1,0,120,50,120,50,50,256,256,256 +geometry=92,48,272,208,344,288,1,1,3,1,7093800,456,5000,312,4,0,0 +palette=RGBrgb_(Spectrum) diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/_Test/Test_3LVL_NoTerm.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/_Test/Test_3LVL_NoTerm.txt new file mode 100644 index 00000000..20df7c7a --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB_Analog/_Test/Test_3LVL_NoTerm.txt @@ -0,0 +1,4 @@ +sampling=7,7,7,7,7,7,7,0,1,0,4,0,0,0,0,0,0,1,0,0,190,55,190,55,100,256,256,87 +geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,4,0,0 +palette=RGBrgb_(Amstrad) +powerup_message=0 diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/_Test/Test_3LVL_Term+Clamp.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/_Test/Test_3LVL_Term+Clamp.txt new file mode 100644 index 00000000..8b46bab9 --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB_Analog/_Test/Test_3LVL_Term+Clamp.txt @@ -0,0 +1,4 @@ +sampling=6,6,6,6,6,6,6,0,1,0,4,0,0,0,0,0,0,1,1,1,65,26,55,16,100,256,10,17 +geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,4,0,0 +palette=RGBrgb_(Amstrad) +powerup_message=0 diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/_Test/Test_3LVL_Term.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/_Test/Test_3LVL_Term.txt new file mode 100644 index 00000000..6ad69fa0 --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB_Analog/_Test/Test_3LVL_Term.txt @@ -0,0 +1,4 @@ +sampling=6,6,6,6,6,6,6,0,1,0,4,0,0,0,0,0,0,1,1,0,55,16,55,16,100,256,256,17 +geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,4,0,0 +palette=RGBrgb_(Amstrad) +powerup_message=0 diff --git a/src/scripts/Profiles/6-12_BIT_RGB_Analog/_Test/Test_4LVL_Term.txt b/src/scripts/Profiles/6-12_BIT_RGB_Analog/_Test/Test_4LVL_Term.txt new file mode 100644 index 00000000..c6e634cc --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_RGB_Analog/_Test/Test_4LVL_Term.txt @@ -0,0 +1,4 @@ +sampling=6,6,6,6,6,6,6,0,1,0,4,0,0,0,0,0,0,7,1,0,55,16,55,16,100,34,34,34 +geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,4,0,0 +palette=RrGgBb_(EGA) +powerup_message=0 diff --git a/src/scripts/Profiles/6-12_BIT_YUV/Sinclair_+_Amstrad/ZX80_TTL/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV/Sinclair/ZX80_TTL/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV/Sinclair_+_Amstrad/ZX80_TTL/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV/Sinclair/ZX80_TTL/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV/Sinclair_+_Amstrad/ZX80_TTL/ZX80_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV/Sinclair/ZX80_TTL/ZX80_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV/Sinclair_+_Amstrad/ZX80_TTL/ZX80_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV/Sinclair/ZX80_TTL/ZX80_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV/Sinclair_+_Amstrad/ZX80_TTL/ZX80_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV/Sinclair/ZX80_TTL/ZX80_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV/Sinclair_+_Amstrad/ZX80_TTL/ZX80_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV/Sinclair/ZX80_TTL/ZX80_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV/_Test/Test_4BPP-Comp(S).txt b/src/scripts/Profiles/6-12_BIT_YUV/_Test/Test_4BPP-Comp(S).txt new file mode 100644 index 00000000..f2bef79e --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_YUV/_Test/Test_4BPP-Comp(S).txt @@ -0,0 +1,4 @@ +sampling=6,6,6,6,6,6,6,0,1,0,4,0,0,0,0,0,0,1,0,0,100,256,100,256,100,256,0,256 +geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,4,0,0 +palette=RGBrgb_(Spectrum) +powerup_message=0 diff --git a/src/scripts/Profiles/6-12_BIT_YUV/_Test/Test_6BPP+H+V(P).txt b/src/scripts/Profiles/6-12_BIT_YUV/_Test/Test_6BPP+H+V(P).txt new file mode 100644 index 00000000..08c1fefd --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_YUV/_Test/Test_6BPP+H+V(P).txt @@ -0,0 +1,4 @@ +sampling=5,5,5,5,5,5,5,0,1,0,4,0,0,0,0,0,0,1,0,0,100,256,100,256,100,256,0,256 +geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,3,0,0 +palette=RrGgBb_(EGA) +powerup_message=0 diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/Spectrum_48K/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/Spectrum_48K_(9_colours)/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/Spectrum_48K/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/Spectrum_48K_(9_colours)/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/Spectrum_48K/Spectrum_48K_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/Spectrum_48K_(9_colours)/Spectrum_48K_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/Spectrum_48K/Spectrum_48K_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/Spectrum_48K_(9_colours)/Spectrum_48K_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/Spectrum_48K/Spectrum_48K_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/Spectrum_48K_(9_colours)/Spectrum_48K_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/Spectrum_48K/Spectrum_48K_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/Spectrum_48K_(9_colours)/Spectrum_48K_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX80_Composite/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX80_Composite/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX80_Composite/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX80_Composite/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX80_Composite/ZX80_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX80_Composite/ZX80_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX80_Composite/ZX80_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX80_Composite/ZX80_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX80_Composite/ZX80_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX80_Composite/ZX80_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX80_Composite/ZX80_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX80_Composite/ZX80_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX81_(ULA)/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_(ULA)/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX81_(ULA)/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_(ULA)/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX81_(ULA)/ZX81_(ULA)_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_(ULA)/ZX81_(ULA)_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX81_(ULA)/ZX81_(ULA)_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_(ULA)/ZX81_(ULA)_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX81_(ULA)/ZX81_(ULA)_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_(ULA)/ZX81_(ULA)_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX81_(ULA)/ZX81_(ULA)_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_(ULA)/ZX81_(ULA)_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX81_Composite/Default.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_Composite/Default.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX81_Composite/Default.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_Composite/Default.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX81_Composite/ZX81_50Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_Composite/ZX81_50Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX81_Composite/ZX81_50Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_Composite/ZX81_50Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX81_Composite/ZX81_60Hz.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_Composite/ZX81_60Hz.txt similarity index 100% rename from src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair_+_Amstrad/ZX81_Composite/ZX81_60Hz.txt rename to src/scripts/Profiles/6-12_BIT_YUV_Analog/Sinclair/ZX81_Composite/ZX81_60Hz.txt diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Test/Test_3LVL_NoTerm.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Test/Test_3LVL_NoTerm.txt new file mode 100644 index 00000000..b49a0ba0 --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Test/Test_3LVL_NoTerm.txt @@ -0,0 +1,4 @@ +sampling=4,4,4,4,4,4,4,0,1,0,4,0,0,0,0,0,0,1,0,0,190,55,190,55,100,256,256,87 +geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,4,0,0 +palette=RGBrgb_(Amstrad) +powerup_message=0 diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Test/Test_3LVL_Term+Clamp.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Test/Test_3LVL_Term+Clamp.txt new file mode 100644 index 00000000..1e613ec5 --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Test/Test_3LVL_Term+Clamp.txt @@ -0,0 +1,4 @@ +sampling=4,4,4,4,4,4,4,0,1,0,4,0,0,0,0,0,0,1,1,1,65,26,55,16,100,256,10,17 +geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,4,0,0 +palette=RGBrgb_(Amstrad) +powerup_message=0 diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Test/Test_3LVL_Term.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Test/Test_3LVL_Term.txt new file mode 100644 index 00000000..375b9bff --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Test/Test_3LVL_Term.txt @@ -0,0 +1,4 @@ +sampling=4,4,4,4,4,4,4,0,1,0,4,0,0,0,0,0,0,1,1,0,55,16,55,16,100,256,256,17 +geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,4,0,0 +palette=RGBrgb_(Amstrad) +powerup_message=0 diff --git a/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Test/Test_4LVL_Term.txt b/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Test/Test_4LVL_Term.txt new file mode 100644 index 00000000..77831be0 --- /dev/null +++ b/src/scripts/Profiles/6-12_BIT_YUV_Analog/_Test/Test_4LVL_Term.txt @@ -0,0 +1,4 @@ +sampling=4,4,4,4,4,4,4,0,1,0,4,0,0,0,0,3,0,2,1,0,55,34,55,34,100,15,15,15 +geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,4,0,0 +palette=RrGgBb_(EGA) +powerup_message=0 From a380d465af01ee9848e2ad0fd786c0b453479365 Mon Sep 17 00:00:00 2001 From: IanSB Date: Thu, 2 Mar 2023 20:44:44 +0000 Subject: [PATCH 33/46] Remove Test_Profiles folder and adjust build script --- .../3-12_BIT_BBC/_Test/Test_12BPP-Comp.txt | 5 -- .../_Test/Test_3BPP-Comp(BBC).txt | 3 -- .../_Test/Test_3LVL_NoTerm.txt | 4 -- .../_Test/Test_3LVL_Term.txt | 4 -- .../_Test/Test_4LVL_Term.txt | 4 -- .../6-12_BIT_RGB/_Test/Test_12BPP+H+V.txt | 5 -- .../6-12_BIT_RGB/_Test/Test_12BPP-Comp.txt | 5 -- .../_Test/Test_3BPP-Comp(BBC).txt | 3 -- .../_Test/Test_4BPP-Comp(Spec).txt | 4 -- .../6-12_BIT_RGB/_Test/Test_6BPP+H+V(PC).txt | 4 -- .../_Test/Test_3LVL_NoTerm.txt | 4 -- .../_Test/Test_3LVL_Term+Clamp.txt | 4 -- .../_Test/Test_3LVL_Term.txt | 4 -- .../_Test/Test_4LVL_Term.txt | 4 -- .../_Test/Test_4BPP-Comp(Spec).txt | 4 -- .../6-12_BIT_YUV/_Test/Test_6BPP+H+V(PC).txt | 4 -- .../_Test/Test_3LVL_NoTerm.txt | 4 -- .../_Test/Test_3LVL_Term+Clamp.txt | 4 -- .../_Test/Test_3LVL_Term.txt | 4 -- .../_Test/Test_4LVL_Term.txt | 4 -- src/scripts/Test_Profiles/Default.txt | 51 ------------------- src/scripts/release.sh | 1 - 22 files changed, 133 deletions(-) delete mode 100644 src/scripts/Test_Profiles/3-12_BIT_BBC/_Test/Test_12BPP-Comp.txt delete mode 100644 src/scripts/Test_Profiles/3-12_BIT_BBC/_Test/Test_3BPP-Comp(BBC).txt delete mode 100644 src/scripts/Test_Profiles/3-12_BIT_BBC_Analog/_Test/Test_3LVL_NoTerm.txt delete mode 100644 src/scripts/Test_Profiles/3-12_BIT_BBC_Analog/_Test/Test_3LVL_Term.txt delete mode 100644 src/scripts/Test_Profiles/3-12_BIT_BBC_Analog/_Test/Test_4LVL_Term.txt delete mode 100644 src/scripts/Test_Profiles/6-12_BIT_RGB/_Test/Test_12BPP+H+V.txt delete mode 100644 src/scripts/Test_Profiles/6-12_BIT_RGB/_Test/Test_12BPP-Comp.txt delete mode 100644 src/scripts/Test_Profiles/6-12_BIT_RGB/_Test/Test_3BPP-Comp(BBC).txt delete mode 100644 src/scripts/Test_Profiles/6-12_BIT_RGB/_Test/Test_4BPP-Comp(Spec).txt delete mode 100644 src/scripts/Test_Profiles/6-12_BIT_RGB/_Test/Test_6BPP+H+V(PC).txt delete mode 100644 src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/_Test/Test_3LVL_NoTerm.txt delete mode 100644 src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/_Test/Test_3LVL_Term+Clamp.txt delete mode 100644 src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/_Test/Test_3LVL_Term.txt delete mode 100644 src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/_Test/Test_4LVL_Term.txt delete mode 100644 src/scripts/Test_Profiles/6-12_BIT_YUV/_Test/Test_4BPP-Comp(Spec).txt delete mode 100644 src/scripts/Test_Profiles/6-12_BIT_YUV/_Test/Test_6BPP+H+V(PC).txt delete mode 100644 src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/_Test/Test_3LVL_NoTerm.txt delete mode 100644 src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/_Test/Test_3LVL_Term+Clamp.txt delete mode 100644 src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/_Test/Test_3LVL_Term.txt delete mode 100644 src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/_Test/Test_4LVL_Term.txt delete mode 100644 src/scripts/Test_Profiles/Default.txt diff --git a/src/scripts/Test_Profiles/3-12_BIT_BBC/_Test/Test_12BPP-Comp.txt b/src/scripts/Test_Profiles/3-12_BIT_BBC/_Test/Test_12BPP-Comp.txt deleted file mode 100644 index 3ea30392..00000000 --- a/src/scripts/Test_Profiles/3-12_BIT_BBC/_Test/Test_12BPP-Comp.txt +++ /dev/null @@ -1,5 +0,0 @@ -sampling=6,6,6,6,6,6,6,0,1,0,4,0,0,0,0,0,0,5,0,0,100,256,100,256,100,256,0,256 -geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,4,0,0 -palette=RrGgBb_(EGA) -overclock_core=50 -powerup_message=0 diff --git a/src/scripts/Test_Profiles/3-12_BIT_BBC/_Test/Test_3BPP-Comp(BBC).txt b/src/scripts/Test_Profiles/3-12_BIT_BBC/_Test/Test_3BPP-Comp(BBC).txt deleted file mode 100644 index ef9e790a..00000000 --- a/src/scripts/Test_Profiles/3-12_BIT_BBC/_Test/Test_3BPP-Comp(BBC).txt +++ /dev/null @@ -1,3 +0,0 @@ -sampling=5,5,5,5,5,5,5,0,1,0,4,0,0,0,0,0,0,0,0,0,100,256,100,256,100,256,0,256 -geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,4,0,0 -powerup_message=0 diff --git a/src/scripts/Test_Profiles/3-12_BIT_BBC_Analog/_Test/Test_3LVL_NoTerm.txt b/src/scripts/Test_Profiles/3-12_BIT_BBC_Analog/_Test/Test_3LVL_NoTerm.txt deleted file mode 100644 index 20df7c7a..00000000 --- a/src/scripts/Test_Profiles/3-12_BIT_BBC_Analog/_Test/Test_3LVL_NoTerm.txt +++ /dev/null @@ -1,4 +0,0 @@ -sampling=7,7,7,7,7,7,7,0,1,0,4,0,0,0,0,0,0,1,0,0,190,55,190,55,100,256,256,87 -geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,4,0,0 -palette=RGBrgb_(Amstrad) -powerup_message=0 diff --git a/src/scripts/Test_Profiles/3-12_BIT_BBC_Analog/_Test/Test_3LVL_Term.txt b/src/scripts/Test_Profiles/3-12_BIT_BBC_Analog/_Test/Test_3LVL_Term.txt deleted file mode 100644 index 6ad69fa0..00000000 --- a/src/scripts/Test_Profiles/3-12_BIT_BBC_Analog/_Test/Test_3LVL_Term.txt +++ /dev/null @@ -1,4 +0,0 @@ -sampling=6,6,6,6,6,6,6,0,1,0,4,0,0,0,0,0,0,1,1,0,55,16,55,16,100,256,256,17 -geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,4,0,0 -palette=RGBrgb_(Amstrad) -powerup_message=0 diff --git a/src/scripts/Test_Profiles/3-12_BIT_BBC_Analog/_Test/Test_4LVL_Term.txt b/src/scripts/Test_Profiles/3-12_BIT_BBC_Analog/_Test/Test_4LVL_Term.txt deleted file mode 100644 index c6e634cc..00000000 --- a/src/scripts/Test_Profiles/3-12_BIT_BBC_Analog/_Test/Test_4LVL_Term.txt +++ /dev/null @@ -1,4 +0,0 @@ -sampling=6,6,6,6,6,6,6,0,1,0,4,0,0,0,0,0,0,7,1,0,55,16,55,16,100,34,34,34 -geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,4,0,0 -palette=RrGgBb_(EGA) -powerup_message=0 diff --git a/src/scripts/Test_Profiles/6-12_BIT_RGB/_Test/Test_12BPP+H+V.txt b/src/scripts/Test_Profiles/6-12_BIT_RGB/_Test/Test_12BPP+H+V.txt deleted file mode 100644 index 382c732f..00000000 --- a/src/scripts/Test_Profiles/6-12_BIT_RGB/_Test/Test_12BPP+H+V.txt +++ /dev/null @@ -1,5 +0,0 @@ -sampling=5,5,5,5,5,5,5,0,1,0,4,0,0,0,0,0,0,5,0,0,100,256,100,256,100,256,0,256 -geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,3,0,0 -palette=RrGgBb_(EGA) -overclock_core=50 -powerup_message=0 diff --git a/src/scripts/Test_Profiles/6-12_BIT_RGB/_Test/Test_12BPP-Comp.txt b/src/scripts/Test_Profiles/6-12_BIT_RGB/_Test/Test_12BPP-Comp.txt deleted file mode 100644 index 3ea30392..00000000 --- a/src/scripts/Test_Profiles/6-12_BIT_RGB/_Test/Test_12BPP-Comp.txt +++ /dev/null @@ -1,5 +0,0 @@ -sampling=6,6,6,6,6,6,6,0,1,0,4,0,0,0,0,0,0,5,0,0,100,256,100,256,100,256,0,256 -geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,4,0,0 -palette=RrGgBb_(EGA) -overclock_core=50 -powerup_message=0 diff --git a/src/scripts/Test_Profiles/6-12_BIT_RGB/_Test/Test_3BPP-Comp(BBC).txt b/src/scripts/Test_Profiles/6-12_BIT_RGB/_Test/Test_3BPP-Comp(BBC).txt deleted file mode 100644 index ef9e790a..00000000 --- a/src/scripts/Test_Profiles/6-12_BIT_RGB/_Test/Test_3BPP-Comp(BBC).txt +++ /dev/null @@ -1,3 +0,0 @@ -sampling=5,5,5,5,5,5,5,0,1,0,4,0,0,0,0,0,0,0,0,0,100,256,100,256,100,256,0,256 -geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,4,0,0 -powerup_message=0 diff --git a/src/scripts/Test_Profiles/6-12_BIT_RGB/_Test/Test_4BPP-Comp(Spec).txt b/src/scripts/Test_Profiles/6-12_BIT_RGB/_Test/Test_4BPP-Comp(Spec).txt deleted file mode 100644 index f2bef79e..00000000 --- a/src/scripts/Test_Profiles/6-12_BIT_RGB/_Test/Test_4BPP-Comp(Spec).txt +++ /dev/null @@ -1,4 +0,0 @@ -sampling=6,6,6,6,6,6,6,0,1,0,4,0,0,0,0,0,0,1,0,0,100,256,100,256,100,256,0,256 -geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,4,0,0 -palette=RGBrgb_(Spectrum) -powerup_message=0 diff --git a/src/scripts/Test_Profiles/6-12_BIT_RGB/_Test/Test_6BPP+H+V(PC).txt b/src/scripts/Test_Profiles/6-12_BIT_RGB/_Test/Test_6BPP+H+V(PC).txt deleted file mode 100644 index 08c1fefd..00000000 --- a/src/scripts/Test_Profiles/6-12_BIT_RGB/_Test/Test_6BPP+H+V(PC).txt +++ /dev/null @@ -1,4 +0,0 @@ -sampling=5,5,5,5,5,5,5,0,1,0,4,0,0,0,0,0,0,1,0,0,100,256,100,256,100,256,0,256 -geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,3,0,0 -palette=RrGgBb_(EGA) -powerup_message=0 diff --git a/src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/_Test/Test_3LVL_NoTerm.txt b/src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/_Test/Test_3LVL_NoTerm.txt deleted file mode 100644 index 20df7c7a..00000000 --- a/src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/_Test/Test_3LVL_NoTerm.txt +++ /dev/null @@ -1,4 +0,0 @@ -sampling=7,7,7,7,7,7,7,0,1,0,4,0,0,0,0,0,0,1,0,0,190,55,190,55,100,256,256,87 -geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,4,0,0 -palette=RGBrgb_(Amstrad) -powerup_message=0 diff --git a/src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/_Test/Test_3LVL_Term+Clamp.txt b/src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/_Test/Test_3LVL_Term+Clamp.txt deleted file mode 100644 index 8b46bab9..00000000 --- a/src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/_Test/Test_3LVL_Term+Clamp.txt +++ /dev/null @@ -1,4 +0,0 @@ -sampling=6,6,6,6,6,6,6,0,1,0,4,0,0,0,0,0,0,1,1,1,65,26,55,16,100,256,10,17 -geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,4,0,0 -palette=RGBrgb_(Amstrad) -powerup_message=0 diff --git a/src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/_Test/Test_3LVL_Term.txt b/src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/_Test/Test_3LVL_Term.txt deleted file mode 100644 index 6ad69fa0..00000000 --- a/src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/_Test/Test_3LVL_Term.txt +++ /dev/null @@ -1,4 +0,0 @@ -sampling=6,6,6,6,6,6,6,0,1,0,4,0,0,0,0,0,0,1,1,0,55,16,55,16,100,256,256,17 -geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,4,0,0 -palette=RGBrgb_(Amstrad) -powerup_message=0 diff --git a/src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/_Test/Test_4LVL_Term.txt b/src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/_Test/Test_4LVL_Term.txt deleted file mode 100644 index c6e634cc..00000000 --- a/src/scripts/Test_Profiles/6-12_BIT_RGB_Analog/_Test/Test_4LVL_Term.txt +++ /dev/null @@ -1,4 +0,0 @@ -sampling=6,6,6,6,6,6,6,0,1,0,4,0,0,0,0,0,0,7,1,0,55,16,55,16,100,34,34,34 -geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,4,0,0 -palette=RrGgBb_(EGA) -powerup_message=0 diff --git a/src/scripts/Test_Profiles/6-12_BIT_YUV/_Test/Test_4BPP-Comp(Spec).txt b/src/scripts/Test_Profiles/6-12_BIT_YUV/_Test/Test_4BPP-Comp(Spec).txt deleted file mode 100644 index f2bef79e..00000000 --- a/src/scripts/Test_Profiles/6-12_BIT_YUV/_Test/Test_4BPP-Comp(Spec).txt +++ /dev/null @@ -1,4 +0,0 @@ -sampling=6,6,6,6,6,6,6,0,1,0,4,0,0,0,0,0,0,1,0,0,100,256,100,256,100,256,0,256 -geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,4,0,0 -palette=RGBrgb_(Spectrum) -powerup_message=0 diff --git a/src/scripts/Test_Profiles/6-12_BIT_YUV/_Test/Test_6BPP+H+V(PC).txt b/src/scripts/Test_Profiles/6-12_BIT_YUV/_Test/Test_6BPP+H+V(PC).txt deleted file mode 100644 index 08c1fefd..00000000 --- a/src/scripts/Test_Profiles/6-12_BIT_YUV/_Test/Test_6BPP+H+V(PC).txt +++ /dev/null @@ -1,4 +0,0 @@ -sampling=5,5,5,5,5,5,5,0,1,0,4,0,0,0,0,0,0,1,0,0,100,256,100,256,100,256,0,256 -geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,3,0,0 -palette=RrGgBb_(EGA) -powerup_message=0 diff --git a/src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/_Test/Test_3LVL_NoTerm.txt b/src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/_Test/Test_3LVL_NoTerm.txt deleted file mode 100644 index b49a0ba0..00000000 --- a/src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/_Test/Test_3LVL_NoTerm.txt +++ /dev/null @@ -1,4 +0,0 @@ -sampling=4,4,4,4,4,4,4,0,1,0,4,0,0,0,0,0,0,1,0,0,190,55,190,55,100,256,256,87 -geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,4,0,0 -palette=RGBrgb_(Amstrad) -powerup_message=0 diff --git a/src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/_Test/Test_3LVL_Term+Clamp.txt b/src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/_Test/Test_3LVL_Term+Clamp.txt deleted file mode 100644 index 1e613ec5..00000000 --- a/src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/_Test/Test_3LVL_Term+Clamp.txt +++ /dev/null @@ -1,4 +0,0 @@ -sampling=4,4,4,4,4,4,4,0,1,0,4,0,0,0,0,0,0,1,1,1,65,26,55,16,100,256,10,17 -geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,4,0,0 -palette=RGBrgb_(Amstrad) -powerup_message=0 diff --git a/src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/_Test/Test_3LVL_Term.txt b/src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/_Test/Test_3LVL_Term.txt deleted file mode 100644 index 375b9bff..00000000 --- a/src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/_Test/Test_3LVL_Term.txt +++ /dev/null @@ -1,4 +0,0 @@ -sampling=4,4,4,4,4,4,4,0,1,0,4,0,0,0,0,0,0,1,1,0,55,16,55,16,100,256,256,17 -geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,4,0,0 -palette=RGBrgb_(Amstrad) -powerup_message=0 diff --git a/src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/_Test/Test_4LVL_Term.txt b/src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/_Test/Test_4LVL_Term.txt deleted file mode 100644 index 77831be0..00000000 --- a/src/scripts/Test_Profiles/6-12_BIT_YUV_Analog/_Test/Test_4LVL_Term.txt +++ /dev/null @@ -1,4 +0,0 @@ -sampling=4,4,4,4,4,4,4,0,1,0,4,0,0,0,0,3,0,2,1,0,55,34,55,34,100,15,15,15 -geometry=188,33,640,256,720,280,1,2,1,2,16000000,1024,15000,312,4,0,0 -palette=RrGgBb_(EGA) -powerup_message=0 diff --git a/src/scripts/Test_Profiles/Default.txt b/src/scripts/Test_Profiles/Default.txt deleted file mode 100644 index be7fddc2..00000000 --- a/src/scripts/Test_Profiles/Default.txt +++ /dev/null @@ -1,51 +0,0 @@ -sampling2=6,6,6,6,6,6,6,0,1,0,12,0,0,0,0,0,0,0,0,0,100,256,100,256,100,256,256,256 -geometry2=140,26,520,256,576,288,3,4,1,0,12000000,768,5000,312,4,0,2 -sampling=3,3,3,3,3,3,3,0,0,0,5,0,0,0,0,0,0,0,0,0,100,256,100,256,100,256,256,256 -geometry=180,29,640,256,768,288,1,2,1,1,16000000,1024,5000,312,4,0,0 -auto_switch=0 -timing_set=0 -palette=RGB -palette_control=0 -ntsc_colour=0 -ntsc_phase=0 -ntsc_type=0 -ntsc_quality=0 -tint=0 -saturation=100 -contrast=100 -brightness=100 -gamma=100 -teletext_deinterlace=6 -teletext_scaling=1 -normal_deinterlace=0 -ffosd_overlay=0 -normal_scaling=0 -swap_aspect=0 -output_colour=0 -output_invert=0 -scanlines=0 -scanline_level=6 -yuv_pixel_double=0 -integer_aspect=0 -powerup_message=1 -crop_border=0 -screencap_size=0 -border_colour=0 -font_size=1 -vsync_indicator=0 -genlock_mode=0 -genlock_line=50 -genlock_speed=2 -genlock_adjust=0 -num_buffers=0 -hdmi_standby=0 -overclock_cpu=0 -overclock_core=0 -overclock_sdram=0 -button_reverse=0 -debug=0 -keymap=13232 -actionmap=012453 -return=0 -single_button_mode=0 -cpld_firmware_dir=/cpld_firmware/6-12_bit diff --git a/src/scripts/release.sh b/src/scripts/release.sh index 700cf606..711183f5 100755 --- a/src/scripts/release.sh +++ b/src/scripts/release.sh @@ -50,7 +50,6 @@ cp -a default_config.txt ${DIR} cp -a firmware/* ${DIR} cp -a cpld_firmware ${DIR} cp -a Profiles ${DIR} -cp -a Test_Profiles ${DIR} cp -a Resolutions ${DIR} cp -a Amiga_CPLD_Readme ${DIR} From 3d5921e7ace38680cfebcc14d7b74ff9fca920f7 Mon Sep 17 00:00:00 2001 From: IanSB Date: Fri, 3 Mar 2023 01:32:01 +0000 Subject: [PATCH 34/46] Fix CPLD recovery menu --- src/osd.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/osd.c b/src/osd.c index 819846ea..ae768b13 100644 --- a/src/osd.c +++ b/src/osd.c @@ -756,7 +756,7 @@ static menu_t settings_menu = { (base_menu_item_t *) &oclock_core_ref, (base_menu_item_t *) &oclock_sdram_ref, (base_menu_item_t *) &debug_ref, - (base_menu_item_t *) &update_cpld_menu_ref, + (base_menu_item_t *) &update_cpld_menu_ref, NULL } }; @@ -4798,9 +4798,11 @@ void osd_show_cpld_recovery_menu(int update) { update_cpld_menu.name = name; current_menu[0] = &main_menu; current_item[0] = 0; - current_menu[1] = &update_cpld_menu; + current_menu[1] = &settings_menu; current_item[1] = 0; - depth = 1; + current_menu[2] = &update_cpld_menu; + current_item[2] = 0; + depth = 2; osd_state = MENU; // Change the font size to the large font (no profile will be loaded) set_feature(F_FONT_SIZE, FONTSIZE_12X20); From 2b67fa629e361f95dda4f1734efc8d6ae4fa757b Mon Sep 17 00:00:00 2001 From: IanSB Date: Fri, 3 Mar 2023 01:49:22 +0000 Subject: [PATCH 35/46] Clear saved config when changing profile --- src/osd.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/osd.c b/src/osd.c index ae768b13..c4c01277 100644 --- a/src/osd.c +++ b/src/osd.c @@ -5347,10 +5347,12 @@ int osd_key(int key) { current_item[depth] = 0; for (int i=0; i<= features[F_PROFILE].max; i++) { if (strcmp(profile_names[i], item_name(item)) == 0) { + set_parameter(F_SAVED_CONFIG, 0); set_parameter(F_PROFILE, i); load_profiles(i, 1); process_profile(i); set_feature(F_SUB_PROFILE, 0); + set_scaling(get_parameter(F_SCALING), 1); log_info("Profile now = %s", item_name(item)); break; } From 7bb274a9c6cdf970397a3c504b1d02927bedefc9 Mon Sep 17 00:00:00 2001 From: IanSB Date: Fri, 3 Mar 2023 12:24:50 +0000 Subject: [PATCH 36/46] Add 4K@25-30Hz resolution and update 1920x2160 resolution --- src/scripts/Resolutions/50Hz/4K(1920x2160)@50Hz.txt | 7 +++++++ src/scripts/Resolutions/50Hz/4K(25-30Hz)@50Hz.txt | 5 +++++ src/scripts/Resolutions/50Hz/4K_1920x2160@50Hz.txt | 6 ------ src/scripts/Resolutions/60Hz/4K(1920x2160)@60Hz.txt | 7 +++++++ src/scripts/Resolutions/60Hz/4K(25-30Hz)@60Hz.txt | 5 +++++ src/scripts/Resolutions/60Hz/4K_1920x2160@60Hz.txt | 6 ------ 6 files changed, 24 insertions(+), 12 deletions(-) create mode 100644 src/scripts/Resolutions/50Hz/4K(1920x2160)@50Hz.txt create mode 100644 src/scripts/Resolutions/50Hz/4K(25-30Hz)@50Hz.txt delete mode 100644 src/scripts/Resolutions/50Hz/4K_1920x2160@50Hz.txt create mode 100644 src/scripts/Resolutions/60Hz/4K(1920x2160)@60Hz.txt create mode 100644 src/scripts/Resolutions/60Hz/4K(25-30Hz)@60Hz.txt delete mode 100644 src/scripts/Resolutions/60Hz/4K_1920x2160@60Hz.txt diff --git a/src/scripts/Resolutions/50Hz/4K(1920x2160)@50Hz.txt b/src/scripts/Resolutions/50Hz/4K(1920x2160)@50Hz.txt new file mode 100644 index 00000000..9b95261c --- /dev/null +++ b/src/scripts/Resolutions/50Hz/4K(1920x2160)@50Hz.txt @@ -0,0 +1,7 @@ +## 3840(1920)x2160 @ 50Hz +hdmi_pixel_freq_limit=340000000 +hdmi_group=2 +hdmi_mode=87 +hdmi_drive=2 +#hdmi_timings=1920 0 48 32 80 2160 0 37 8 6 0 0 0 50 0 221100000 3 +hdmi_cvt=1920 2160 50 3 0 0 1 diff --git a/src/scripts/Resolutions/50Hz/4K(25-30Hz)@50Hz.txt b/src/scripts/Resolutions/50Hz/4K(25-30Hz)@50Hz.txt new file mode 100644 index 00000000..557ca279 --- /dev/null +++ b/src/scripts/Resolutions/50Hz/4K(25-30Hz)@50Hz.txt @@ -0,0 +1,5 @@ +## 4K@25-30Hz @ 50Hz +hdmi_pixel_freq_limit=340000000 +hdmi_group=1 +hdmi_mode=94 +hdmi_drive=2 diff --git a/src/scripts/Resolutions/50Hz/4K_1920x2160@50Hz.txt b/src/scripts/Resolutions/50Hz/4K_1920x2160@50Hz.txt deleted file mode 100644 index 75289ae2..00000000 --- a/src/scripts/Resolutions/50Hz/4K_1920x2160@50Hz.txt +++ /dev/null @@ -1,6 +0,0 @@ -## 3840(1920)x2160 @ 50Hz -hdmi_pixel_freq_limit=340000000 -hdmi_group=2 -hdmi_mode=87 -hdmi_timings=1920 0 48 32 80 2160 0 37 8 6 0 0 0 50 0 221100000 3 -#hdmi_cvt=1920 2160 50 3 0 0 1 diff --git a/src/scripts/Resolutions/60Hz/4K(1920x2160)@60Hz.txt b/src/scripts/Resolutions/60Hz/4K(1920x2160)@60Hz.txt new file mode 100644 index 00000000..cb2dbd0a --- /dev/null +++ b/src/scripts/Resolutions/60Hz/4K(1920x2160)@60Hz.txt @@ -0,0 +1,7 @@ +## 1920x2160 @ 60Hz +hdmi_pixel_freq_limit=340000000 +hdmi_group=2 +hdmi_mode=87 +hdmi_drive=2 +#hdmi_timings=1920 0 8 32 40 2160 0 48 8 6 0 0 0 60 0 266640000 3 +hdmi_cvt=1920 2160 60 3 0 0 1 diff --git a/src/scripts/Resolutions/60Hz/4K(25-30Hz)@60Hz.txt b/src/scripts/Resolutions/60Hz/4K(25-30Hz)@60Hz.txt new file mode 100644 index 00000000..6e894a80 --- /dev/null +++ b/src/scripts/Resolutions/60Hz/4K(25-30Hz)@60Hz.txt @@ -0,0 +1,5 @@ +## 4K@25-30Hz @ 60Hz +hdmi_pixel_freq_limit=340000000 +hdmi_group=1 +hdmi_mode=95 +hdmi_drive=2 diff --git a/src/scripts/Resolutions/60Hz/4K_1920x2160@60Hz.txt b/src/scripts/Resolutions/60Hz/4K_1920x2160@60Hz.txt deleted file mode 100644 index a8e75392..00000000 --- a/src/scripts/Resolutions/60Hz/4K_1920x2160@60Hz.txt +++ /dev/null @@ -1,6 +0,0 @@ -## 1920x2160 @ 60Hz -hdmi_pixel_freq_limit=340000000 -hdmi_group=2 -hdmi_mode=87 -hdmi_timings=1920 0 8 32 40 2160 0 48 8 6 0 0 0 60 0 266640000 3 -#hdmi_cvt=1920 2160 60 3 0 0 1 From 012bc05d663f3b2ffd782f5ccd98d194add75abe Mon Sep 17 00:00:00 2001 From: IanSB Date: Fri, 3 Mar 2023 13:13:19 +0000 Subject: [PATCH 37/46] Update resolution names --- .../50Hz/{4K(25-30Hz)@50Hz.txt => Full_4K(25-30Hz)@50Hz.txt} | 0 .../50Hz/{4K(1920x2160)@50Hz.txt => Half_4K(1920x2160)@50Hz.txt} | 0 .../60Hz/{4K(25-30Hz)@60Hz.txt => Full_4K(25-30Hz)@60Hz.txt} | 0 .../60Hz/{4K(1920x2160)@60Hz.txt => Half_4K(1920x2160)@60Hz.txt} | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename src/scripts/Resolutions/50Hz/{4K(25-30Hz)@50Hz.txt => Full_4K(25-30Hz)@50Hz.txt} (100%) rename src/scripts/Resolutions/50Hz/{4K(1920x2160)@50Hz.txt => Half_4K(1920x2160)@50Hz.txt} (100%) rename src/scripts/Resolutions/60Hz/{4K(25-30Hz)@60Hz.txt => Full_4K(25-30Hz)@60Hz.txt} (100%) rename src/scripts/Resolutions/60Hz/{4K(1920x2160)@60Hz.txt => Half_4K(1920x2160)@60Hz.txt} (100%) diff --git a/src/scripts/Resolutions/50Hz/4K(25-30Hz)@50Hz.txt b/src/scripts/Resolutions/50Hz/Full_4K(25-30Hz)@50Hz.txt similarity index 100% rename from src/scripts/Resolutions/50Hz/4K(25-30Hz)@50Hz.txt rename to src/scripts/Resolutions/50Hz/Full_4K(25-30Hz)@50Hz.txt diff --git a/src/scripts/Resolutions/50Hz/4K(1920x2160)@50Hz.txt b/src/scripts/Resolutions/50Hz/Half_4K(1920x2160)@50Hz.txt similarity index 100% rename from src/scripts/Resolutions/50Hz/4K(1920x2160)@50Hz.txt rename to src/scripts/Resolutions/50Hz/Half_4K(1920x2160)@50Hz.txt diff --git a/src/scripts/Resolutions/60Hz/4K(25-30Hz)@60Hz.txt b/src/scripts/Resolutions/60Hz/Full_4K(25-30Hz)@60Hz.txt similarity index 100% rename from src/scripts/Resolutions/60Hz/4K(25-30Hz)@60Hz.txt rename to src/scripts/Resolutions/60Hz/Full_4K(25-30Hz)@60Hz.txt diff --git a/src/scripts/Resolutions/60Hz/4K(1920x2160)@60Hz.txt b/src/scripts/Resolutions/60Hz/Half_4K(1920x2160)@60Hz.txt similarity index 100% rename from src/scripts/Resolutions/60Hz/4K(1920x2160)@60Hz.txt rename to src/scripts/Resolutions/60Hz/Half_4K(1920x2160)@60Hz.txt From 0271c6f014e05496379b8979d12e3b54257be9c9 Mon Sep 17 00:00:00 2001 From: IanSB Date: Fri, 3 Mar 2023 13:40:57 +0000 Subject: [PATCH 38/46] Genlock now works with half frame rate modes --- src/rgb_to_fb.S | 2 +- src/rgb_to_hdmi.c | 27 +++++++++++++++++++-------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/rgb_to_fb.S b/src/rgb_to_fb.S index 47b41430..0edf7829 100644 --- a/src/rgb_to_fb.S +++ b/src/rgb_to_fb.S @@ -755,7 +755,7 @@ is_elk: ldr r6, param_nlines add r5, r5, r6 str r5, total_lines - str r5, vsync_line // default for vsync line if undetectable in blanking area + //str r5, vsync_line // default for vsync line if undetectable in blanking area skip_line_loop: cmp r5, r6 ble skip_line_loop_exit diff --git a/src/rgb_to_hdmi.c b/src/rgb_to_hdmi.c index dbe3e864..4456aee4 100644 --- a/src/rgb_to_hdmi.c +++ b/src/rgb_to_hdmi.c @@ -189,6 +189,7 @@ static double pllh_clock = 0; static int genlocked = 0; static int resync_count = 0; static int target_difference = 0; +static int half_frame_rate = 0; static int source_vsync_freq_hz = 0; static int info_display_vsync_freq_hz = 0; static double source_vsync_freq = 0; @@ -1153,6 +1154,11 @@ static void recalculate_hdmi_clock(int genlock_mode, int genlock_adjust) { // Calculate the error between the HDMI VSync and the Source VSync source_vsync_freq = 2e9 / ((double) vsync_time_ns); display_vsync_freq = 1e6 * pixel_clock / ((double) htotal) / ((double) vtotal); + if (display_vsync_freq < 35.0f) { //allow genlock to work with half frame rate modes + display_vsync_freq *= 2; + half_frame_rate = 1; + } + double error = display_vsync_freq / source_vsync_freq; double error_ppm = 1e6 * (error - 1.0); @@ -3314,7 +3320,7 @@ geometry_get_fb_params(capinfo); int h_size = get_hdisplay(); int v_size = get_vdisplay(); if (sync_detected) { - sprintf(osdline, "%d x %d @ %dHz", h_size, v_size, info_display_vsync_freq_hz); + sprintf(osdline, "%d x %d @ %dHz", h_size, v_size, info_display_vsync_freq_hz >> half_frame_rate); } else { sprintf(osdline, "%d x %d", h_size, v_size); } @@ -3396,15 +3402,20 @@ geometry_get_fb_params(capinfo); } osd_set(1, 0, osdline); } else { -#ifdef USE_ARM_CAPTURE - if ((_get_hardware_id() == _RPI2 || _get_hardware_id() == _RPI3) && capinfo->sample_width >= SAMPLE_WIDTH_9LO) { - osd_set(1, 0, "Use GPU capture version for 9/12BPP"); + if (half_frame_rate != 0) { + sprintf(osdline, "Warning: Monitor refresh = %dHz", info_display_vsync_freq_hz >> 1); + osd_set(1, 0, osdline); } else { - osd_set(1, 0, ""); - } +#ifdef USE_ARM_CAPTURE + if ((_get_hardware_id() == _RPI2 || _get_hardware_id() == _RPI3) && capinfo->sample_width >= SAMPLE_WIDTH_9LO) { + osd_set(1, 0, "Use GPU capture version for 9/12BPP"); + } else { + osd_set(1, 0, ""); + } #else - osd_set(1, 0, ""); + osd_set(1, 0, ""); #endif + } } } else { osd_set(1, 0, "No sync detected"); @@ -3568,7 +3579,7 @@ int show_detected_status(int line) { int v_size = get_vdisplay() - config_overscan_top - config_overscan_bottom; sprintf(message, " Pi Resolution: %d x %d (%d x %d)", get_hdisplay(), get_true_vdisplay(), h_size, v_size); osd_set(line++, 0, message); - sprintf(message, " Pi Frame rate: %d Hz (%.2f Hz)", info_display_vsync_freq_hz, info_display_vsync_freq); + sprintf(message, " Pi Frame rate: %d Hz (%.2f Hz)", info_display_vsync_freq_hz >> half_frame_rate, info_display_vsync_freq / (half_frame_rate + 1) ); osd_set(line++, 0, message); sprintf(message, " Pi Overscan: %d x %d (%d x %d)", h_overscan + config_overscan_left + config_overscan_right, v_overscan + config_overscan_top + config_overscan_bottom, adj_h_overscan + config_overscan_left + config_overscan_right, adj_v_overscan + config_overscan_top + config_overscan_bottom); osd_set(line++, 0, message); From f9c45f97caf1e5bf344b93c2c2cb08442107daa6 Mon Sep 17 00:00:00 2001 From: IanSB Date: Fri, 3 Mar 2023 16:51:06 +0000 Subject: [PATCH 39/46] Ensure stable phase relationship between source and Pi syncs when 4K 25Hz or 30Hz output in use --- src/rgb_to_fb.S | 7 +++++++ src/rgb_to_fb.h | 1 + src/rgb_to_hdmi.c | 5 ++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/rgb_to_fb.S b/src/rgb_to_fb.S index 0edf7829..5db2706f 100644 --- a/src/rgb_to_fb.S +++ b/src/rgb_to_fb.S @@ -46,6 +46,7 @@ .global palette_data_16 .global core_1_available .global start_core_1_code +.global wait_for_source_fieldsync .global field_type_threshold .global elk_lo_field_sync_threshold @@ -2310,6 +2311,12 @@ gpu_bench: rsbmi r0, r0, #1 pop {r1-r12, pc} +wait_for_source_fieldsync: + push {r0-r12, lr} + bl _get_GPLEV0_r4 + // wait for vsync + bl wait_for_vsync + pop {r0-r12, pc} .ltorg #ifdef USE_MULTICORE diff --git a/src/rgb_to_fb.h b/src/rgb_to_fb.h index b9814210..97f010b8 100644 --- a/src/rgb_to_fb.h +++ b/src/rgb_to_fb.h @@ -103,6 +103,7 @@ void osd_update_palette(); void delay_in_arm_cycles(int delay); void wait_for_pi_fieldsync(); +void wait_for_source_fieldsync(); int scan_for_single_pixels_4bpp(uint32_t * start, int length); int scan_for_single_pixels_12bpp(uint32_t * start, int length); void scan_for_diffs_12bpp(uint32_t *fbp, uint32_t *lastp, int length, int diff[NUM_OFFSETS]); diff --git a/src/rgb_to_hdmi.c b/src/rgb_to_hdmi.c index 4456aee4..cdaaa566 100644 --- a/src/rgb_to_hdmi.c +++ b/src/rgb_to_hdmi.c @@ -3427,7 +3427,10 @@ geometry_get_fb_params(capinfo); } } capinfo->intensity = parameters[F_SCANLINE_LEVEL]; - + if (half_frame_rate) { + wait_for_pi_fieldsync(); //when half frame rate display detected (4K @ 25Hz / 30Hz), ensure that the source and Pi frames are in a repeatable phase relationship + wait_for_source_fieldsync(); + } log_debug("Entering rgb_to_fb, flags=%08x", flags); result = rgb_to_fb(capinfo, flags); log_debug("Leaving rgb_to_fb, result=%04x", result); From e436c99e8bbdb18efae09325ff639331add84a02 Mon Sep 17 00:00:00 2001 From: IanSB Date: Fri, 3 Mar 2023 17:24:50 +0000 Subject: [PATCH 40/46] Drop alternate frames when display is 4K@ 25/30Hz to prevent tearing --- src/rgb_to_hdmi.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/rgb_to_hdmi.c b/src/rgb_to_hdmi.c index cdaaa566..2752250f 100644 --- a/src/rgb_to_hdmi.c +++ b/src/rgb_to_hdmi.c @@ -3427,13 +3427,25 @@ geometry_get_fb_params(capinfo); } } capinfo->intensity = parameters[F_SCANLINE_LEVEL]; - if (half_frame_rate) { - wait_for_pi_fieldsync(); //when half frame rate display detected (4K @ 25Hz / 30Hz), ensure that the source and Pi frames are in a repeatable phase relationship + + int old_palette_control = capinfo->palette_control; + int old_flags = flags; + if (half_frame_rate) { //half frame rate display detected (4K @ 25Hz / 30Hz) + if (capinfo->vsync_type != VSYNC_NONINTERLACED_DEJITTER) { //inhibit alternate frame dropping when using the vertical dejitter mode as that stops it working + if ((flags & BIT_OSD) == 0) { + capinfo->palette_control |= INHIBIT_PALETTE_DIMMING_16_BIT; //if OSD not enabled then stop screen dimming when blank OSD turned on below + flags |= BIT_OSD; //turn on OSD even though it is blank to force dropping of alternate frames to eliminate tear + } + + } + wait_for_pi_fieldsync(); //ensure that the source and Pi frames are in a repeatable phase relationship wait_for_source_fieldsync(); } log_debug("Entering rgb_to_fb, flags=%08x", flags); result = rgb_to_fb(capinfo, flags); log_debug("Leaving rgb_to_fb, result=%04x", result); + capinfo->palette_control = old_palette_control; + flags = old_flags; if (result & RET_SYNC_TIMING_CHANGED) { log_info("Timing exceeds window: H=%d, V=%d, Lines=%d, VSync=%d", hsync_period * 1000 / cpuspeed, (int)((double)vsync_period * 1000 / cpuspeed), (int) (((double)vsync_period/hsync_period) + 0.5), (result & RET_VSYNC_POLARITY_CHANGED) ? 1 : 0); From c3bf702cd198b1067956194c1e3878348cf21c7b Mon Sep 17 00:00:00 2001 From: IanSB Date: Fri, 3 Mar 2023 18:25:46 +0000 Subject: [PATCH 41/46] Update resolutions --- src/scripts/Resolutions/50Hz/2560x1440/Auto@50Hz.txt | 1 + src/scripts/Resolutions/50Hz/2560x1440@50Hz.txt | 1 + src/scripts/Resolutions/50Hz/Full_4K(25-30Hz)@50Hz.txt | 2 +- src/scripts/Resolutions/50Hz/Half_4K(1920x2160)@50Hz.txt | 2 +- src/scripts/Resolutions/60Hz/2560x1440/Auto@60Hz.txt | 1 + src/scripts/Resolutions/60Hz/2560x1440@60Hz.txt | 1 + src/scripts/Resolutions/60Hz/Full_4K(25-30Hz)@60Hz.txt | 2 +- src/scripts/Resolutions/60Hz/Half_4K(1920x2160)@60Hz.txt | 2 +- 8 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/scripts/Resolutions/50Hz/2560x1440/Auto@50Hz.txt b/src/scripts/Resolutions/50Hz/2560x1440/Auto@50Hz.txt index 0c8c3d16..22c14aa4 100644 --- a/src/scripts/Resolutions/50Hz/2560x1440/Auto@50Hz.txt +++ b/src/scripts/Resolutions/50Hz/2560x1440/Auto@50Hz.txt @@ -2,4 +2,5 @@ hdmi_pixel_freq_limit=340000000 hdmi_group=2 hdmi_mode=87 +hdmi_drive=2 hdmi_cvt=2560 1440 50 3 0 0 1 diff --git a/src/scripts/Resolutions/50Hz/2560x1440@50Hz.txt b/src/scripts/Resolutions/50Hz/2560x1440@50Hz.txt index a629093d..b8e2bef6 100644 --- a/src/scripts/Resolutions/50Hz/2560x1440@50Hz.txt +++ b/src/scripts/Resolutions/50Hz/2560x1440@50Hz.txt @@ -2,5 +2,6 @@ hdmi_pixel_freq_limit=340000000 hdmi_group=2 hdmi_mode=87 +hdmi_drive=2 #hdmi_timings=2560 0 8 32 40 1440 0 20 8 6 0 0 0 50 0 194568000 3 hdmi_cvt=2560 1440 50 3 0 0 1 diff --git a/src/scripts/Resolutions/50Hz/Full_4K(25-30Hz)@50Hz.txt b/src/scripts/Resolutions/50Hz/Full_4K(25-30Hz)@50Hz.txt index 557ca279..3c5fb159 100644 --- a/src/scripts/Resolutions/50Hz/Full_4K(25-30Hz)@50Hz.txt +++ b/src/scripts/Resolutions/50Hz/Full_4K(25-30Hz)@50Hz.txt @@ -1,4 +1,4 @@ -## 4K@25-30Hz @ 50Hz +## Full_4K(25-30Hz)@50Hz hdmi_pixel_freq_limit=340000000 hdmi_group=1 hdmi_mode=94 diff --git a/src/scripts/Resolutions/50Hz/Half_4K(1920x2160)@50Hz.txt b/src/scripts/Resolutions/50Hz/Half_4K(1920x2160)@50Hz.txt index 9b95261c..80401292 100644 --- a/src/scripts/Resolutions/50Hz/Half_4K(1920x2160)@50Hz.txt +++ b/src/scripts/Resolutions/50Hz/Half_4K(1920x2160)@50Hz.txt @@ -1,4 +1,4 @@ -## 3840(1920)x2160 @ 50Hz +## Half_4K(1920x2160)@50Hz hdmi_pixel_freq_limit=340000000 hdmi_group=2 hdmi_mode=87 diff --git a/src/scripts/Resolutions/60Hz/2560x1440/Auto@60Hz.txt b/src/scripts/Resolutions/60Hz/2560x1440/Auto@60Hz.txt index df5e2d81..d72ca0ef 100644 --- a/src/scripts/Resolutions/60Hz/2560x1440/Auto@60Hz.txt +++ b/src/scripts/Resolutions/60Hz/2560x1440/Auto@60Hz.txt @@ -2,4 +2,5 @@ hdmi_pixel_freq_limit=270000000 hdmi_group=2 hdmi_mode=87 +hdmi_drive=2 hdmi_cvt=2560 1440 60 3 0 0 1 diff --git a/src/scripts/Resolutions/60Hz/2560x1440@60Hz.txt b/src/scripts/Resolutions/60Hz/2560x1440@60Hz.txt index 58ee4397..1aff49c0 100644 --- a/src/scripts/Resolutions/60Hz/2560x1440@60Hz.txt +++ b/src/scripts/Resolutions/60Hz/2560x1440@60Hz.txt @@ -2,5 +2,6 @@ hdmi_pixel_freq_limit=270000000 hdmi_group=2 hdmi_mode=87 +hdmi_drive=2 #hdmi_timings=2560 0 8 32 40 1440 0 27 8 6 0 0 0 60 0 234590000 3 hdmi_cvt=2560 1440 60 3 0 0 1 diff --git a/src/scripts/Resolutions/60Hz/Full_4K(25-30Hz)@60Hz.txt b/src/scripts/Resolutions/60Hz/Full_4K(25-30Hz)@60Hz.txt index 6e894a80..5ea948bc 100644 --- a/src/scripts/Resolutions/60Hz/Full_4K(25-30Hz)@60Hz.txt +++ b/src/scripts/Resolutions/60Hz/Full_4K(25-30Hz)@60Hz.txt @@ -1,4 +1,4 @@ -## 4K@25-30Hz @ 60Hz +## Full_4K(25-30Hz)@60Hz hdmi_pixel_freq_limit=340000000 hdmi_group=1 hdmi_mode=95 diff --git a/src/scripts/Resolutions/60Hz/Half_4K(1920x2160)@60Hz.txt b/src/scripts/Resolutions/60Hz/Half_4K(1920x2160)@60Hz.txt index cb2dbd0a..e06fff4d 100644 --- a/src/scripts/Resolutions/60Hz/Half_4K(1920x2160)@60Hz.txt +++ b/src/scripts/Resolutions/60Hz/Half_4K(1920x2160)@60Hz.txt @@ -1,4 +1,4 @@ -## 1920x2160 @ 60Hz +## Half_4K(1920x2160)@60Hz hdmi_pixel_freq_limit=340000000 hdmi_group=2 hdmi_mode=87 From f5debdaedb0901c74250004bd6a192db2a98308a Mon Sep 17 00:00:00 2001 From: IanSB Date: Fri, 3 Mar 2023 18:36:16 +0000 Subject: [PATCH 42/46] Revert "Update resolutions" This reverts commit c3bf702cd198b1067956194c1e3878348cf21c7b. --- src/scripts/Resolutions/50Hz/2560x1440/Auto@50Hz.txt | 1 - src/scripts/Resolutions/50Hz/2560x1440@50Hz.txt | 1 - src/scripts/Resolutions/50Hz/Full_4K(25-30Hz)@50Hz.txt | 2 +- src/scripts/Resolutions/50Hz/Half_4K(1920x2160)@50Hz.txt | 2 +- src/scripts/Resolutions/60Hz/2560x1440/Auto@60Hz.txt | 1 - src/scripts/Resolutions/60Hz/2560x1440@60Hz.txt | 1 - src/scripts/Resolutions/60Hz/Full_4K(25-30Hz)@60Hz.txt | 2 +- src/scripts/Resolutions/60Hz/Half_4K(1920x2160)@60Hz.txt | 2 +- 8 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/scripts/Resolutions/50Hz/2560x1440/Auto@50Hz.txt b/src/scripts/Resolutions/50Hz/2560x1440/Auto@50Hz.txt index 22c14aa4..0c8c3d16 100644 --- a/src/scripts/Resolutions/50Hz/2560x1440/Auto@50Hz.txt +++ b/src/scripts/Resolutions/50Hz/2560x1440/Auto@50Hz.txt @@ -2,5 +2,4 @@ hdmi_pixel_freq_limit=340000000 hdmi_group=2 hdmi_mode=87 -hdmi_drive=2 hdmi_cvt=2560 1440 50 3 0 0 1 diff --git a/src/scripts/Resolutions/50Hz/2560x1440@50Hz.txt b/src/scripts/Resolutions/50Hz/2560x1440@50Hz.txt index b8e2bef6..a629093d 100644 --- a/src/scripts/Resolutions/50Hz/2560x1440@50Hz.txt +++ b/src/scripts/Resolutions/50Hz/2560x1440@50Hz.txt @@ -2,6 +2,5 @@ hdmi_pixel_freq_limit=340000000 hdmi_group=2 hdmi_mode=87 -hdmi_drive=2 #hdmi_timings=2560 0 8 32 40 1440 0 20 8 6 0 0 0 50 0 194568000 3 hdmi_cvt=2560 1440 50 3 0 0 1 diff --git a/src/scripts/Resolutions/50Hz/Full_4K(25-30Hz)@50Hz.txt b/src/scripts/Resolutions/50Hz/Full_4K(25-30Hz)@50Hz.txt index 3c5fb159..557ca279 100644 --- a/src/scripts/Resolutions/50Hz/Full_4K(25-30Hz)@50Hz.txt +++ b/src/scripts/Resolutions/50Hz/Full_4K(25-30Hz)@50Hz.txt @@ -1,4 +1,4 @@ -## Full_4K(25-30Hz)@50Hz +## 4K@25-30Hz @ 50Hz hdmi_pixel_freq_limit=340000000 hdmi_group=1 hdmi_mode=94 diff --git a/src/scripts/Resolutions/50Hz/Half_4K(1920x2160)@50Hz.txt b/src/scripts/Resolutions/50Hz/Half_4K(1920x2160)@50Hz.txt index 80401292..9b95261c 100644 --- a/src/scripts/Resolutions/50Hz/Half_4K(1920x2160)@50Hz.txt +++ b/src/scripts/Resolutions/50Hz/Half_4K(1920x2160)@50Hz.txt @@ -1,4 +1,4 @@ -## Half_4K(1920x2160)@50Hz +## 3840(1920)x2160 @ 50Hz hdmi_pixel_freq_limit=340000000 hdmi_group=2 hdmi_mode=87 diff --git a/src/scripts/Resolutions/60Hz/2560x1440/Auto@60Hz.txt b/src/scripts/Resolutions/60Hz/2560x1440/Auto@60Hz.txt index d72ca0ef..df5e2d81 100644 --- a/src/scripts/Resolutions/60Hz/2560x1440/Auto@60Hz.txt +++ b/src/scripts/Resolutions/60Hz/2560x1440/Auto@60Hz.txt @@ -2,5 +2,4 @@ hdmi_pixel_freq_limit=270000000 hdmi_group=2 hdmi_mode=87 -hdmi_drive=2 hdmi_cvt=2560 1440 60 3 0 0 1 diff --git a/src/scripts/Resolutions/60Hz/2560x1440@60Hz.txt b/src/scripts/Resolutions/60Hz/2560x1440@60Hz.txt index 1aff49c0..58ee4397 100644 --- a/src/scripts/Resolutions/60Hz/2560x1440@60Hz.txt +++ b/src/scripts/Resolutions/60Hz/2560x1440@60Hz.txt @@ -2,6 +2,5 @@ hdmi_pixel_freq_limit=270000000 hdmi_group=2 hdmi_mode=87 -hdmi_drive=2 #hdmi_timings=2560 0 8 32 40 1440 0 27 8 6 0 0 0 60 0 234590000 3 hdmi_cvt=2560 1440 60 3 0 0 1 diff --git a/src/scripts/Resolutions/60Hz/Full_4K(25-30Hz)@60Hz.txt b/src/scripts/Resolutions/60Hz/Full_4K(25-30Hz)@60Hz.txt index 5ea948bc..6e894a80 100644 --- a/src/scripts/Resolutions/60Hz/Full_4K(25-30Hz)@60Hz.txt +++ b/src/scripts/Resolutions/60Hz/Full_4K(25-30Hz)@60Hz.txt @@ -1,4 +1,4 @@ -## Full_4K(25-30Hz)@60Hz +## 4K@25-30Hz @ 60Hz hdmi_pixel_freq_limit=340000000 hdmi_group=1 hdmi_mode=95 diff --git a/src/scripts/Resolutions/60Hz/Half_4K(1920x2160)@60Hz.txt b/src/scripts/Resolutions/60Hz/Half_4K(1920x2160)@60Hz.txt index e06fff4d..cb2dbd0a 100644 --- a/src/scripts/Resolutions/60Hz/Half_4K(1920x2160)@60Hz.txt +++ b/src/scripts/Resolutions/60Hz/Half_4K(1920x2160)@60Hz.txt @@ -1,4 +1,4 @@ -## Half_4K(1920x2160)@60Hz +## 1920x2160 @ 60Hz hdmi_pixel_freq_limit=340000000 hdmi_group=2 hdmi_mode=87 From 3f8db678cc173b650e0823ed895308c7f3cbcdf7 Mon Sep 17 00:00:00 2001 From: IanSB Date: Fri, 3 Mar 2023 18:45:31 +0000 Subject: [PATCH 43/46] Update resolutions again --- src/scripts/Resolutions/50Hz/Half_4K(1920x2160)@50Hz.txt | 1 - src/scripts/Resolutions/60Hz/Half_4K(1920x2160)@60Hz.txt | 1 - 2 files changed, 2 deletions(-) diff --git a/src/scripts/Resolutions/50Hz/Half_4K(1920x2160)@50Hz.txt b/src/scripts/Resolutions/50Hz/Half_4K(1920x2160)@50Hz.txt index 9b95261c..e93f6338 100644 --- a/src/scripts/Resolutions/50Hz/Half_4K(1920x2160)@50Hz.txt +++ b/src/scripts/Resolutions/50Hz/Half_4K(1920x2160)@50Hz.txt @@ -2,6 +2,5 @@ hdmi_pixel_freq_limit=340000000 hdmi_group=2 hdmi_mode=87 -hdmi_drive=2 #hdmi_timings=1920 0 48 32 80 2160 0 37 8 6 0 0 0 50 0 221100000 3 hdmi_cvt=1920 2160 50 3 0 0 1 diff --git a/src/scripts/Resolutions/60Hz/Half_4K(1920x2160)@60Hz.txt b/src/scripts/Resolutions/60Hz/Half_4K(1920x2160)@60Hz.txt index cb2dbd0a..96c25db8 100644 --- a/src/scripts/Resolutions/60Hz/Half_4K(1920x2160)@60Hz.txt +++ b/src/scripts/Resolutions/60Hz/Half_4K(1920x2160)@60Hz.txt @@ -2,6 +2,5 @@ hdmi_pixel_freq_limit=340000000 hdmi_group=2 hdmi_mode=87 -hdmi_drive=2 #hdmi_timings=1920 0 8 32 40 2160 0 48 8 6 0 0 0 60 0 266640000 3 hdmi_cvt=1920 2160 60 3 0 0 1 From 7c7991c02cd965c27cd8c8aa4e43a84cc27f7af9 Mon Sep 17 00:00:00 2001 From: IanSB Date: Fri, 3 Mar 2023 20:12:24 +0000 Subject: [PATCH 44/46] Correct startup resolution --- src/rgb_to_hdmi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rgb_to_hdmi.c b/src/rgb_to_hdmi.c index 2752250f..369d71cc 100644 --- a/src/rgb_to_hdmi.c +++ b/src/rgb_to_hdmi.c @@ -3318,7 +3318,7 @@ geometry_get_fb_params(capinfo); if (parameters[F_POWERUP_MESSAGE]) { log_info("Display startup message"); int h_size = get_hdisplay(); - int v_size = get_vdisplay(); + int v_size = get_true_vdisplay(); if (sync_detected) { sprintf(osdline, "%d x %d @ %dHz", h_size, v_size, info_display_vsync_freq_hz >> half_frame_rate); } else { From 2457af1dd3eb1515e3a389f1f3487de9e8f1149d Mon Sep 17 00:00:00 2001 From: IanSB Date: Sat, 4 Mar 2023 18:46:26 +0000 Subject: [PATCH 45/46] Tab to space --- src/rgb_to_hdmi.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/rgb_to_hdmi.c b/src/rgb_to_hdmi.c index 369d71cc..3a50e4ac 100644 --- a/src/rgb_to_hdmi.c +++ b/src/rgb_to_hdmi.c @@ -338,9 +338,9 @@ void delay_in_arm_cycles_cpu_adjust(int cycles) { } void reboot() { - *PM_WDOG = PM_PASSWORD | 1; - *PM_RSTC = PM_PASSWORD | PM_RSTC_WRCFG_FULL_RESET; - while(1); + *PM_WDOG = PM_PASSWORD | 1; + *PM_RSTC = PM_PASSWORD | PM_RSTC_WRCFG_FULL_RESET; + while(1); } // 0 0 Hz Ground From 92171c3d002472efd3fa16a122631f3bce399e0b Mon Sep 17 00:00:00 2001 From: IanSB Date: Sun, 5 Mar 2023 00:09:50 +0000 Subject: [PATCH 46/46] Whitespace --- src/rgb_to_hdmi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rgb_to_hdmi.c b/src/rgb_to_hdmi.c index 3a50e4ac..b8f65bdb 100644 --- a/src/rgb_to_hdmi.c +++ b/src/rgb_to_hdmi.c @@ -3190,7 +3190,7 @@ void rgb_to_hdmi_main() { if (last_subprofile != parameters[F_SUB_PROFILE] || restart_profile) { ntsc_status = (modeset << NTSC_LAST_IIGS_SHIFT) | (parameters[F_NTSC_COLOUR] << NTSC_LAST_ARTIFACT_SHIFT); } -geometry_get_fb_params(capinfo); + geometry_get_fb_params(capinfo); restart_profile = 0; last_divider = cpld->get_divider(); last_sync_edge = cpld->get_sync_edge();