Compare commits

...

24 Commits

Author SHA1 Message Date
Serge
ece5606c27 Update README.md 2023-12-15 18:45:18 +01:00
Serge
e115e0f82b Ambient mode fix https://github.com/seerge/g-helper/issues/1641#issuecomment-1855661443 2023-12-15 18:44:54 +01:00
Serge
d6fe7f41c1 Remove unsupported RGB colors from GA502IU https://github.com/seerge/g-helper/issues/1740 2023-12-13 23:06:28 +01:00
Serge
4a0e9d2e41 Separated PL1/PL2 and SPL/SPPT https://github.com/seerge/g-helper/issues/1729 2023-12-13 17:16:44 +01:00
Serge
e59142140c Ambient tweaks 2023-12-13 16:46:37 +01:00
Serge
8ca043de7d Ambient mode improvements 2023-12-13 16:42:29 +01:00
Serge
9543cd400e Ultimate mode fix for FA617N 2023-12-13 12:48:22 +01:00
Serge
b808aa7619 Issue https://github.com/seerge/g-helper/issues/1734 2023-12-13 11:20:58 +01:00
Serge
6ca63bb9c5 Removed unsupported backlight options for ARCNM https://github.com/seerge/g-helper/issues/1728 2023-12-12 12:29:26 +01:00
Serge
4ba11f1f9f Version bump 2023-12-11 13:53:12 +01:00
Serge
382080922d White only keyboard detection for GA503R https://github.com/seerge/g-helper/issues/1714 2023-12-09 17:51:12 +01:00
Serge
d439d20c13 Merge branch 'main' of https://github.com/seerge/g-helper 2023-12-09 14:42:16 +01:00
Serge
24199b3036 Matrix Contrast slider https://github.com/seerge/g-helper/issues/1713 2023-12-09 14:42:14 +01:00
Serge
d45ce23d9a Update README.md 2023-12-09 00:58:00 +01:00
Serge
34ae2e536d New Crowdin updates (#1708)
* New translations strings.resx (French)

* New translations strings.resx (Chinese Simplified)
2023-12-08 13:44:42 +01:00
Serge
64e3b3bbd6 Added M16 2023 to the list of devices that support GPU enabling on shutdown https://www.reddit.com/r/ZephyrusM16/comments/18chukc/comment/kcd132i/?context=3 2023-12-07 14:31:05 +01:00
Serge
f3fd590be4 Version Bump 2023-12-07 11:25:08 +01:00
Serge
6a9d47a61d UI Fixes https://github.com/seerge/g-helper/issues/1701 2023-12-07 11:12:57 +01:00
Serge
3848ef9a43 New translations strings.resx (Polish) (#1692) 2023-12-03 21:55:37 +01:00
Serge
84c7fdb3bf Removed ACPI requirement for non-asus models https://github.com/seerge/g-helper/issues/1676 2023-12-03 12:17:07 +01:00
Serge
013c83fd60 Merge branch 'main' of https://github.com/seerge/g-helper 2023-12-03 11:23:17 +01:00
Serge
b31ed8338a G14 2023 white-only / RGB detection https://github.com/seerge/g-helper/issues/1686 2023-12-03 11:23:14 +01:00
Serge
6f9eb1e9c5 New translations strings.resx (Spanish) (#1681) 2023-12-01 22:56:15 +01:00
Hamza Rizwan
f19ea5eaf6 Update AppConfig.cs (#1682)
Added "G713RC" to the list of limited Strix RGB models
2023-12-01 22:56:01 +01:00
22 changed files with 351 additions and 122 deletions

View File

@@ -347,7 +347,10 @@ namespace GHelper.AnimeMatrix
int matrixX = AppConfig.Get("matrix_x", 0); int matrixX = AppConfig.Get("matrix_x", 0);
int matrixY = AppConfig.Get("matrix_y", 0); int matrixY = AppConfig.Get("matrix_y", 0);
int matrixZoom = AppConfig.Get("matrix_zoom", 100); int matrixZoom = AppConfig.Get("matrix_zoom", 100);
int matrixContrast = AppConfig.Get("matrix_contrast", 100);
int matrixSpeed = AppConfig.Get("matrix_speed", 50); int matrixSpeed = AppConfig.Get("matrix_speed", 50);
MatrixRotation rotation = (MatrixRotation)AppConfig.Get("matrix_rotation", 0); MatrixRotation rotation = (MatrixRotation)AppConfig.Get("matrix_rotation", 0);
@@ -368,9 +371,9 @@ namespace GHelper.AnimeMatrix
image.SelectActiveFrame(dimension, i); image.SelectActiveFrame(dimension, i);
if (rotation == MatrixRotation.Planar) if (rotation == MatrixRotation.Planar)
device.GenerateFrame(image, matrixZoom, matrixX, matrixY, matrixQuality); device.GenerateFrame(image, matrixZoom, matrixX, matrixY, matrixQuality, matrixContrast);
else else
device.GenerateFrameDiagonal(image, matrixZoom, matrixX, matrixY, matrixQuality); device.GenerateFrameDiagonal(image, matrixZoom, matrixX, matrixY, matrixQuality, matrixContrast);
device.AddFrame(); device.AddFrame();
} }
@@ -385,9 +388,9 @@ namespace GHelper.AnimeMatrix
else else
{ {
if (rotation == MatrixRotation.Planar) if (rotation == MatrixRotation.Planar)
device.GenerateFrame(image, matrixZoom, matrixX, matrixY, matrixQuality); device.GenerateFrame(image, matrixZoom, matrixX, matrixY, matrixQuality, matrixContrast);
else else
device.GenerateFrameDiagonal(image, matrixZoom, matrixX, matrixY, matrixQuality); device.GenerateFrameDiagonal(image, matrixZoom, matrixX, matrixY, matrixQuality, matrixContrast);
device.Present(); device.Present();
} }

View File

@@ -399,21 +399,21 @@ namespace Starlight.AnimeMatrix
} }
private void SetBitmapDiagonal(Bitmap bmp, int deltaX = 0, int deltaY = 0) private void SetBitmapDiagonal(Bitmap bmp, int deltaX = 0, int deltaY = 0, int contrast = 100)
{ {
for (int y = 0; y < bmp.Height; y++) for (int y = 0; y < bmp.Height; y++)
{ {
for (int x = 0; x < bmp.Width; x++) for (int x = 0; x < bmp.Width; x++)
{ {
var pixel = bmp.GetPixel(x, y); var pixel = bmp.GetPixel(x, y);
var color = (pixel.R + pixel.G + pixel.B) / 3; var color = Math.Min((pixel.R + pixel.G + pixel.B) * contrast / 300, 255);
if (color > 20) if (color > 20)
SetLedDiagonal(x, y, (byte)color, deltaX + (FullRows / 2) + 1, deltaY - (FullRows / 2) - 1); SetLedDiagonal(x, y, (byte)color, deltaX + (FullRows / 2) + 1, deltaY - (FullRows / 2) - 1);
} }
} }
} }
private void SetBitmapLinear(Bitmap bmp) private void SetBitmapLinear(Bitmap bmp, int contrast = 100)
{ {
for (int y = 0; y < bmp.Height; y++) for (int y = 0; y < bmp.Height; y++)
{ {
@@ -421,7 +421,7 @@ namespace Starlight.AnimeMatrix
if (x % 2 == y % 2) if (x % 2 == y % 2)
{ {
var pixel = bmp.GetPixel(x, y); var pixel = bmp.GetPixel(x, y);
var color = (pixel.R + pixel.G + pixel.B) / 3; var color = Math.Min((pixel.R + pixel.G + pixel.B) * contrast / 300, 255);
if (color > 20) if (color > 20)
SetLedPlanar(x / 2, y, (byte)color); SetLedPlanar(x / 2, y, (byte)color);
} }
@@ -468,7 +468,7 @@ namespace Starlight.AnimeMatrix
Present(); Present();
} }
public void GenerateFrame(Image image, float zoom = 100, int panX = 0, int panY = 0, InterpolationMode quality = InterpolationMode.Default) public void GenerateFrame(Image image, float zoom = 100, int panX = 0, int panY = 0, InterpolationMode quality = InterpolationMode.Default, int contrast = 100)
{ {
int width = MaxColumns / 2 * 6; int width = MaxColumns / 2 * 6;
int height = MaxRows; int height = MaxRows;
@@ -495,11 +495,11 @@ namespace Starlight.AnimeMatrix
} }
Clear(); Clear();
SetBitmapLinear(bmp); SetBitmapLinear(bmp, contrast);
} }
} }
public void GenerateFrameDiagonal(Image image, float zoom = 100, int panX = 0, int panY = 0, InterpolationMode quality = InterpolationMode.Default) public void GenerateFrameDiagonal(Image image, float zoom = 100, int panX = 0, int panY = 0, InterpolationMode quality = InterpolationMode.Default, int contrast = 100)
{ {
int width = MaxRows - FullRows; int width = MaxRows - FullRows;
int height = MaxRows - FullRows*2; int height = MaxRows - FullRows*2;
@@ -523,7 +523,7 @@ namespace Starlight.AnimeMatrix
} }
Clear(); Clear();
SetBitmapDiagonal(bmp, -panX, height + panY); SetBitmapDiagonal(bmp, -panX, height + panY, contrast);
} }
} }

View File

@@ -345,7 +345,7 @@ public static class AppConfig
public static bool IsSingleColor() public static bool IsSingleColor()
{ {
return ContainsModel("GA401") || ContainsModel("FX517Z") || ContainsModel("FX516P") || ContainsModel("X13"); return ContainsModel("GA401") || ContainsModel("FX517Z") || ContainsModel("FX516P") || ContainsModel("X13") || IsARCNM() || ContainsModel("GA502IU");
} }
public static bool IsStrix() public static bool IsStrix()
@@ -355,7 +355,7 @@ public static class AppConfig
public static bool IsStrixLimitedRGB() public static bool IsStrixLimitedRGB()
{ {
return ContainsModel("G614JV") || ContainsModel("G614JZ") || ContainsModel("G512LI") || ContainsModel("G513RS") || ContainsModel("G513RM") || ContainsModel("G713PV") || ContainsModel("G513IE") || ContainsModel("G513QM"); return ContainsModel("G614JV") || ContainsModel("G614JZ") || ContainsModel("G512LI") || ContainsModel("G513R") || ContainsModel("G713PV") || ContainsModel("G513IE") || ContainsModel("G513QM") || ContainsModel("G713RC");
} }
public static bool IsStrixNumpad() public static bool IsStrixNumpad()
@@ -386,7 +386,7 @@ public static class AppConfig
public static bool NoAutoUltimate() public static bool NoAutoUltimate()
{ {
return ContainsModel("G614") || ContainsModel("GU604") || ContainsModel("FX507") || ContainsModel("G513"); return ContainsModel("G614") || ContainsModel("GU604") || ContainsModel("FX507") || ContainsModel("G513") || ContainsModel("FA617");
} }
@@ -428,7 +428,7 @@ public static class AppConfig
public static bool IsGPUFixNeeded() public static bool IsGPUFixNeeded()
{ {
return ContainsModel("GA402X") || ContainsModel("GV302") || ContainsModel("GV301") || ContainsModel("GZ301") || ContainsModel("FX506") || ContainsModel("GU603V") || ContainsModel("GU603Z"); return ContainsModel("GA402X") || ContainsModel("GV302") || ContainsModel("GV301") || ContainsModel("GZ301") || ContainsModel("FX506") || ContainsModel("GU603") || ContainsModel("GU604") || ContainsModel("G614J");
} }
public static bool IsGPUFix() public static bool IsGPUFix()
@@ -451,4 +451,8 @@ public static class AppConfig
return ContainsModel("FA507"); return ContainsModel("FA507");
} }
public static bool IsASUS()
{
return ContainsModel("ROG") || ContainsModel("TUF") || ContainsModel("Vivobook") || ContainsModel("Zenbook");
}
} }

View File

@@ -1,5 +1,4 @@
using FftSharp; using GHelper;
using GHelper;
using GHelper.USB; using GHelper.USB;
using System.Management; using System.Management;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
@@ -37,7 +36,7 @@ public class AsusACPI
const uint INIT = 0x54494E49; const uint INIT = 0x54494E49;
public const uint UniversalControl = 0x00100021; public const uint UniversalControl = 0x00100021;
public const int KB_Light_Up = 0xc4; public const int KB_Light_Up = 0xc4;
public const int KB_Light_Down = 0xc5; public const int KB_Light_Down = 0xc5;
public const int Brightness_Down = 0x10; public const int Brightness_Down = 0x10;
@@ -186,6 +185,7 @@ public class AsusACPI
private static extern bool WaitForSingleObject(IntPtr hHandle, int dwMilliseconds); private static extern bool WaitForSingleObject(IntPtr hHandle, int dwMilliseconds);
private IntPtr eventHandle; private IntPtr eventHandle;
private bool _connected = false;
// still works only with asus optimization service on , if someone knows how to get ACPI events from asus without that - let me know // still works only with asus optimization service on , if someone knows how to get ACPI events from asus without that - let me know
public void RunListener() public void RunListener()
@@ -212,22 +212,33 @@ public class AsusACPI
} }
} }
public bool IsConnected()
{
return _connected;
}
public AsusACPI() public AsusACPI()
{ {
handle = CreateFile( try
FILE_NAME,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
IntPtr.Zero,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
IntPtr.Zero
);
if (handle == new IntPtr(-1))
{ {
throw new Exception("Can't connect to ACPI"); handle = CreateFile(
FILE_NAME,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
IntPtr.Zero,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
IntPtr.Zero
);
//handle = new IntPtr(-1);
//throw new Exception("ERROR");
_connected = true;
}
catch (Exception ex)
{
Logger.WriteLine($"Can't connect to ACPI: {ex.Message}");
} }
if (AppConfig.IsAdvantageEdition()) MaxTotal = 250; if (AppConfig.IsAdvantageEdition()) MaxTotal = 250;
@@ -390,7 +401,7 @@ public class AsusACPI
byte min = (byte)(curve[8] * 255 / 100); byte min = (byte)(curve[8] * 255 / 100);
byte max = (byte)(curve[15] * 255 / 100); byte max = (byte)(curve[15] * 255 / 100);
byte[] range = { min, max}; byte[] range = { min, max };
int result; int result;
switch (device) switch (device)
@@ -422,7 +433,7 @@ public class AsusACPI
// it seems to be a bug, when some old model's bios can go nuts if fan is set to 100% // it seems to be a bug, when some old model's bios can go nuts if fan is set to 100%
for (int i = 8; i < curve.Length; i++) curve[i] = (byte)(Math.Max((byte)0, Math.Min((byte)100, curve[i])) * fanScale / 100); for (int i = 8; i < curve.Length; i++) curve[i] = (byte)(Math.Max((byte)0, Math.Min((byte)100, curve[i])) * fanScale / 100);
switch (device) switch (device)
{ {
@@ -525,6 +536,7 @@ public class AsusACPI
public bool IsAllAmdPPT() public bool IsAllAmdPPT()
{ {
//return false;
return DeviceGet(PPT_CPUB0) >= 0 && DeviceGet(PPT_GPUC0) < 0; return DeviceGet(PPT_CPUB0) >= 0 && DeviceGet(PPT_GPUC0) < 0;
} }
@@ -575,7 +587,7 @@ public class AsusACPI
switch (memory) switch (memory)
{ {
case 256: case 256:
return 0; return 0;
case 258: case 258:
return 1; return 1;
@@ -626,7 +638,7 @@ public class AsusACPI
{ {
byte[] setting = new byte[6]; byte[] setting = new byte[6];
setting[0] = (byte)0xb4; setting[0] = (byte)0xb4;
setting[1] = (byte)mode; setting[1] = (byte)mode;
setting[2] = color.R; setting[2] = color.R;

View File

@@ -293,7 +293,7 @@ namespace GHelper
} }
if ((!AppConfig.IsStrix() && !AppConfig.IsZ13()) || AppConfig.IsStrixLimitedRGB()) if ((!AppConfig.IsStrix() && !AppConfig.IsZ13()) || AppConfig.IsStrixLimitedRGB() || AppConfig.IsARCNM())
{ {
labelBacklightLid.Visible = false; labelBacklightLid.Visible = false;
checkAwakeLid.Visible = false; checkAwakeLid.Visible = false;

127
app/Fans.Designer.cs generated
View File

@@ -31,14 +31,14 @@ namespace GHelper
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
ChartArea chartArea1 = new ChartArea(); ChartArea chartArea17 = new ChartArea();
Title title1 = new Title(); Title title17 = new Title();
ChartArea chartArea2 = new ChartArea(); ChartArea chartArea18 = new ChartArea();
Title title2 = new Title(); Title title18 = new Title();
ChartArea chartArea3 = new ChartArea(); ChartArea chartArea19 = new ChartArea();
Title title3 = new Title(); Title title19 = new Title();
ChartArea chartArea4 = new ChartArea(); ChartArea chartArea20 = new ChartArea();
Title title4 = new Title(); Title title20 = new Title();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Fans)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Fans));
panelFans = new Panel(); panelFans = new Panel();
labelTip = new Label(); labelTip = new Label();
@@ -141,6 +141,10 @@ namespace GHelper
buttonAdvanced = new RButton(); buttonAdvanced = new RButton();
buttonGPU = new RButton(); buttonGPU = new RButton();
buttonCPU = new RButton(); buttonCPU = new RButton();
panelA3 = new Panel();
labelA3 = new Label();
labelLeftA3 = new Label();
trackA3 = new TrackBar();
panelFans.SuspendLayout(); panelFans.SuspendLayout();
tableFanCharts.SuspendLayout(); tableFanCharts.SuspendLayout();
((System.ComponentModel.ISupportInitialize)chartGPU).BeginInit(); ((System.ComponentModel.ISupportInitialize)chartGPU).BeginInit();
@@ -195,6 +199,8 @@ namespace GHelper
((System.ComponentModel.ISupportInitialize)pictureGPU).BeginInit(); ((System.ComponentModel.ISupportInitialize)pictureGPU).BeginInit();
panelNav.SuspendLayout(); panelNav.SuspendLayout();
tableNav.SuspendLayout(); tableNav.SuspendLayout();
panelA3.SuspendLayout();
((System.ComponentModel.ISupportInitialize)trackA3).BeginInit();
SuspendLayout(); SuspendLayout();
// //
// panelFans // panelFans
@@ -251,8 +257,8 @@ namespace GHelper
// //
// chartGPU // chartGPU
// //
chartArea1.Name = "ChartArea1"; chartArea17.Name = "ChartArea1";
chartGPU.ChartAreas.Add(chartArea1); chartGPU.ChartAreas.Add(chartArea17);
chartGPU.Dock = DockStyle.Fill; chartGPU.Dock = DockStyle.Fill;
chartGPU.Location = new Point(12, 493); chartGPU.Location = new Point(12, 493);
chartGPU.Margin = new Padding(2, 10, 2, 10); chartGPU.Margin = new Padding(2, 10, 2, 10);
@@ -260,13 +266,13 @@ namespace GHelper
chartGPU.Size = new Size(782, 463); chartGPU.Size = new Size(782, 463);
chartGPU.TabIndex = 17; chartGPU.TabIndex = 17;
chartGPU.Text = "chartGPU"; chartGPU.Text = "chartGPU";
title1.Name = "Title1"; title17.Name = "Title1";
chartGPU.Titles.Add(title1); chartGPU.Titles.Add(title17);
// //
// chartCPU // chartCPU
// //
chartArea2.Name = "ChartArea1"; chartArea18.Name = "ChartArea1";
chartCPU.ChartAreas.Add(chartArea2); chartCPU.ChartAreas.Add(chartArea18);
chartCPU.Dock = DockStyle.Fill; chartCPU.Dock = DockStyle.Fill;
chartCPU.Location = new Point(12, 10); chartCPU.Location = new Point(12, 10);
chartCPU.Margin = new Padding(2, 10, 2, 10); chartCPU.Margin = new Padding(2, 10, 2, 10);
@@ -274,13 +280,13 @@ namespace GHelper
chartCPU.Size = new Size(782, 463); chartCPU.Size = new Size(782, 463);
chartCPU.TabIndex = 14; chartCPU.TabIndex = 14;
chartCPU.Text = "chartCPU"; chartCPU.Text = "chartCPU";
title2.Name = "Title1"; title18.Name = "Title1";
chartCPU.Titles.Add(title2); chartCPU.Titles.Add(title18);
// //
// chartXGM // chartXGM
// //
chartArea3.Name = "ChartAreaXGM"; chartArea19.Name = "ChartAreaXGM";
chartXGM.ChartAreas.Add(chartArea3); chartXGM.ChartAreas.Add(chartArea19);
chartXGM.Dock = DockStyle.Fill; chartXGM.Dock = DockStyle.Fill;
chartXGM.Location = new Point(12, 1459); chartXGM.Location = new Point(12, 1459);
chartXGM.Margin = new Padding(2, 10, 2, 10); chartXGM.Margin = new Padding(2, 10, 2, 10);
@@ -288,14 +294,14 @@ namespace GHelper
chartXGM.Size = new Size(782, 463); chartXGM.Size = new Size(782, 463);
chartXGM.TabIndex = 14; chartXGM.TabIndex = 14;
chartXGM.Text = "chartXGM"; chartXGM.Text = "chartXGM";
title3.Name = "Title4"; title19.Name = "Title4";
chartXGM.Titles.Add(title3); chartXGM.Titles.Add(title19);
chartXGM.Visible = false; chartXGM.Visible = false;
// //
// chartMid // chartMid
// //
chartArea4.Name = "ChartArea3"; chartArea20.Name = "ChartArea3";
chartMid.ChartAreas.Add(chartArea4); chartMid.ChartAreas.Add(chartArea20);
chartMid.Dock = DockStyle.Fill; chartMid.Dock = DockStyle.Fill;
chartMid.Location = new Point(12, 976); chartMid.Location = new Point(12, 976);
chartMid.Margin = new Padding(2, 10, 2, 10); chartMid.Margin = new Padding(2, 10, 2, 10);
@@ -303,8 +309,8 @@ namespace GHelper
chartMid.Size = new Size(782, 463); chartMid.Size = new Size(782, 463);
chartMid.TabIndex = 14; chartMid.TabIndex = 14;
chartMid.Text = "chartMid"; chartMid.Text = "chartMid";
title4.Name = "Title3"; title20.Name = "Title3";
chartMid.Titles.Add(title4); chartMid.Titles.Add(title20);
chartMid.Visible = false; chartMid.Visible = false;
// //
// panelTitleFans // panelTitleFans
@@ -523,7 +529,7 @@ namespace GHelper
panelAdvanced.Controls.Add(panelTemperature); panelAdvanced.Controls.Add(panelTemperature);
panelAdvanced.Controls.Add(panelTitleTemp); panelAdvanced.Controls.Add(panelTitleTemp);
panelAdvanced.Dock = DockStyle.Top; panelAdvanced.Dock = DockStyle.Top;
panelAdvanced.Location = new Point(10, 1520); panelAdvanced.Location = new Point(10, 1644);
panelAdvanced.Name = "panelAdvanced"; panelAdvanced.Name = "panelAdvanced";
panelAdvanced.Size = new Size(520, 888); panelAdvanced.Size = new Size(520, 888);
panelAdvanced.TabIndex = 14; panelAdvanced.TabIndex = 14;
@@ -814,6 +820,7 @@ namespace GHelper
panelPower.Controls.Add(panelApplyPower); panelPower.Controls.Add(panelApplyPower);
panelPower.Controls.Add(panelB0); panelPower.Controls.Add(panelB0);
panelPower.Controls.Add(panelC1); panelPower.Controls.Add(panelC1);
panelPower.Controls.Add(panelA3);
panelPower.Controls.Add(panelA0); panelPower.Controls.Add(panelA0);
panelPower.Controls.Add(panelTitleCPU); panelPower.Controls.Add(panelTitleCPU);
panelPower.Controls.Add(panelBoost); panelPower.Controls.Add(panelBoost);
@@ -824,7 +831,7 @@ namespace GHelper
panelPower.Location = new Point(10, 764); panelPower.Location = new Point(10, 764);
panelPower.Margin = new Padding(4); panelPower.Margin = new Padding(4);
panelPower.Name = "panelPower"; panelPower.Name = "panelPower";
panelPower.Size = new Size(520, 756); panelPower.Size = new Size(520, 880);
panelPower.TabIndex = 43; panelPower.TabIndex = 43;
// //
// panelApplyPower // panelApplyPower
@@ -832,7 +839,7 @@ namespace GHelper
panelApplyPower.AutoSize = true; panelApplyPower.AutoSize = true;
panelApplyPower.Controls.Add(checkApplyPower); panelApplyPower.Controls.Add(checkApplyPower);
panelApplyPower.Dock = DockStyle.Top; panelApplyPower.Dock = DockStyle.Top;
panelApplyPower.Location = new Point(0, 680); panelApplyPower.Location = new Point(0, 804);
panelApplyPower.Name = "panelApplyPower"; panelApplyPower.Name = "panelApplyPower";
panelApplyPower.Padding = new Padding(15); panelApplyPower.Padding = new Padding(15);
panelApplyPower.Size = new Size(520, 76); panelApplyPower.Size = new Size(520, 76);
@@ -859,7 +866,7 @@ namespace GHelper
panelB0.Controls.Add(labelLeftB0); panelB0.Controls.Add(labelLeftB0);
panelB0.Controls.Add(trackB0); panelB0.Controls.Add(trackB0);
panelB0.Dock = DockStyle.Top; panelB0.Dock = DockStyle.Top;
panelB0.Location = new Point(0, 556); panelB0.Location = new Point(0, 680);
panelB0.Margin = new Padding(4); panelB0.Margin = new Padding(4);
panelB0.MaximumSize = new Size(0, 124); panelB0.MaximumSize = new Size(0, 124);
panelB0.Name = "panelB0"; panelB0.Name = "panelB0";
@@ -908,7 +915,7 @@ namespace GHelper
panelC1.Controls.Add(labelLeftC1); panelC1.Controls.Add(labelLeftC1);
panelC1.Controls.Add(trackC1); panelC1.Controls.Add(trackC1);
panelC1.Dock = DockStyle.Top; panelC1.Dock = DockStyle.Top;
panelC1.Location = new Point(0, 432); panelC1.Location = new Point(0, 556);
panelC1.Margin = new Padding(4); panelC1.Margin = new Padding(4);
panelC1.MaximumSize = new Size(0, 124); panelC1.MaximumSize = new Size(0, 124);
panelC1.Name = "panelC1"; panelC1.Name = "panelC1";
@@ -972,7 +979,7 @@ namespace GHelper
labelA0.Name = "labelA0"; labelA0.Name = "labelA0";
labelA0.Size = new Size(116, 32); labelA0.Size = new Size(116, 32);
labelA0.TabIndex = 12; labelA0.TabIndex = 12;
labelA0.Text = "SPPT"; labelA0.Text = "SPL";
labelA0.TextAlign = ContentAlignment.TopRight; labelA0.TextAlign = ContentAlignment.TopRight;
// //
// labelLeftA0 // labelLeftA0
@@ -981,9 +988,9 @@ namespace GHelper
labelLeftA0.Location = new Point(10, 10); labelLeftA0.Location = new Point(10, 10);
labelLeftA0.Margin = new Padding(4, 0, 4, 0); labelLeftA0.Margin = new Padding(4, 0, 4, 0);
labelLeftA0.Name = "labelLeftA0"; labelLeftA0.Name = "labelLeftA0";
labelLeftA0.Size = new Size(66, 32); labelLeftA0.Size = new Size(51, 32);
labelLeftA0.TabIndex = 11; labelLeftA0.TabIndex = 11;
labelLeftA0.Text = "SPPT"; labelLeftA0.Text = "SPL";
// //
// trackA0 // trackA0
// //
@@ -1527,6 +1534,55 @@ namespace GHelper
buttonCPU.TextImageRelation = TextImageRelation.ImageBeforeText; buttonCPU.TextImageRelation = TextImageRelation.ImageBeforeText;
buttonCPU.UseVisualStyleBackColor = false; buttonCPU.UseVisualStyleBackColor = false;
// //
// panelA3
//
panelA3.AutoSize = true;
panelA3.AutoSizeMode = AutoSizeMode.GrowAndShrink;
panelA3.Controls.Add(labelA3);
panelA3.Controls.Add(labelLeftA3);
panelA3.Controls.Add(trackA3);
panelA3.Dock = DockStyle.Top;
panelA3.Location = new Point(0, 432);
panelA3.Margin = new Padding(4);
panelA3.MaximumSize = new Size(0, 124);
panelA3.Name = "panelA3";
panelA3.Size = new Size(520, 124);
panelA3.TabIndex = 51;
//
// labelA3
//
labelA3.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelA3.Location = new Point(396, 10);
labelA3.Margin = new Padding(4, 0, 4, 0);
labelA3.Name = "labelA3";
labelA3.Size = new Size(116, 32);
labelA3.TabIndex = 12;
labelA3.Text = "SPPT";
labelA3.TextAlign = ContentAlignment.TopRight;
//
// labelLeftA3
//
labelLeftA3.AutoSize = true;
labelLeftA3.Location = new Point(10, 10);
labelLeftA3.Margin = new Padding(4, 0, 4, 0);
labelLeftA3.Name = "labelLeftA3";
labelLeftA3.Size = new Size(66, 32);
labelLeftA3.TabIndex = 11;
labelLeftA3.Text = "SPPT";
//
// trackA3
//
trackA3.Location = new Point(6, 48);
trackA3.Margin = new Padding(4, 2, 4, 2);
trackA3.Maximum = 180;
trackA3.Minimum = 10;
trackA3.Name = "trackA3";
trackA3.Size = new Size(508, 90);
trackA3.TabIndex = 10;
trackA3.TickFrequency = 5;
trackA3.TickStyle = TickStyle.TopLeft;
trackA3.Value = 125;
//
// Fans // Fans
// //
AutoScaleDimensions = new SizeF(192F, 192F); AutoScaleDimensions = new SizeF(192F, 192F);
@@ -1623,6 +1679,9 @@ namespace GHelper
((System.ComponentModel.ISupportInitialize)pictureGPU).EndInit(); ((System.ComponentModel.ISupportInitialize)pictureGPU).EndInit();
panelNav.ResumeLayout(false); panelNav.ResumeLayout(false);
tableNav.ResumeLayout(false); tableNav.ResumeLayout(false);
panelA3.ResumeLayout(false);
panelA3.PerformLayout();
((System.ComponentModel.ISupportInitialize)trackA3).EndInit();
ResumeLayout(false); ResumeLayout(false);
PerformLayout(); PerformLayout();
} }
@@ -1730,5 +1789,9 @@ namespace GHelper
private TrackBar trackGPUClockLimit; private TrackBar trackGPUClockLimit;
private Label labelGPUClockLimitTitle; private Label labelGPUClockLimitTitle;
private RButton buttonCalibrate; private RButton buttonCalibrate;
private Panel panelA3;
private Label labelA3;
private Label labelLeftA3;
private TrackBar trackA3;
} }
} }

View File

@@ -106,6 +106,9 @@ namespace GHelper
trackA0.Maximum = AsusACPI.MaxTotal; trackA0.Maximum = AsusACPI.MaxTotal;
trackA0.Minimum = AsusACPI.MinTotal; trackA0.Minimum = AsusACPI.MinTotal;
trackA3.Maximum = AsusACPI.MaxTotal;
trackA3.Minimum = AsusACPI.MinTotal;
trackB0.Maximum = AsusACPI.MaxCPU; trackB0.Maximum = AsusACPI.MaxCPU;
trackB0.Minimum = AsusACPI.MinCPU; trackB0.Minimum = AsusACPI.MinCPU;
@@ -115,10 +118,12 @@ namespace GHelper
trackC1.Scroll += TrackPower_Scroll; trackC1.Scroll += TrackPower_Scroll;
trackB0.Scroll += TrackPower_Scroll; trackB0.Scroll += TrackPower_Scroll;
trackA0.Scroll += TrackPower_Scroll; trackA0.Scroll += TrackPower_Scroll;
trackA3.Scroll += TrackPower_Scroll;
trackC1.MouseUp += TrackPower_MouseUp; trackC1.MouseUp += TrackPower_MouseUp;
trackB0.MouseUp += TrackPower_MouseUp; trackB0.MouseUp += TrackPower_MouseUp;
trackA0.MouseUp += TrackPower_MouseUp; trackA0.MouseUp += TrackPower_MouseUp;
trackA3.MouseUp += TrackPower_MouseUp;
checkApplyFans.Click += CheckApplyFans_Click; checkApplyFans.Click += CheckApplyFans_Click;
checkApplyPower.Click += CheckApplyPower_Click; checkApplyPower.Click += CheckApplyPower_Click;
@@ -800,19 +805,28 @@ namespace GHelper
labelLeftA0.Text = "Platform (CPU + GPU)"; labelLeftA0.Text = "Platform (CPU + GPU)";
labelLeftB0.Text = "CPU"; labelLeftB0.Text = "CPU";
panelC1.Visible = false; panelC1.Visible = false;
panelA3.Visible = false;
} }
else else
{ {
if (RyzenControl.IsAMD()) if (RyzenControl.IsAMD())
labelLeftA0.Text = "CPU Slow (SPL + sPPT)"; {
labelLeftA0.Text = "CPU Sustained (SPL)";
labelLeftA3.Text = "CPU Slow (sPPT)";
labelLeftC1.Text = "CPU Fast (fPPT)";
panelC1.Visible = modeC1;
}
else else
labelLeftA0.Text = "CPU (PL1 + PL2)"; {
labelLeftA0.Text = "CPU Slow (PL1)";
labelLeftA3.Text = "CPU Fast (PL2)";
panelC1.Visible = false;
}
labelLeftC1.Text = "CPU Fast (fPPT)";
panelC1.Visible = modeC1;
} }
int limit_total; int limit_total;
int limit_slow;
int limit_cpu; int limit_cpu;
int limit_fast; int limit_fast;
@@ -821,12 +835,14 @@ namespace GHelper
if (changed) if (changed)
{ {
limit_total = trackA0.Value; limit_total = trackA0.Value;
limit_slow = trackA3.Value;
limit_cpu = trackB0.Value; limit_cpu = trackB0.Value;
limit_fast = trackC1.Value; limit_fast = trackC1.Value;
} }
else else
{ {
limit_total = AppConfig.GetMode("limit_total"); limit_total = AppConfig.GetMode("limit_total");
limit_slow = AppConfig.GetMode("limit_slow");
limit_cpu = AppConfig.GetMode("limit_cpu"); limit_cpu = AppConfig.GetMode("limit_cpu");
limit_fast = AppConfig.GetMode("limit_fast"); limit_fast = AppConfig.GetMode("limit_fast");
} }
@@ -840,21 +856,28 @@ namespace GHelper
if (limit_cpu < AsusACPI.MinCPU) limit_cpu = AsusACPI.MinCPU; if (limit_cpu < AsusACPI.MinCPU) limit_cpu = AsusACPI.MinCPU;
if (limit_cpu > limit_total) limit_cpu = limit_total; if (limit_cpu > limit_total) limit_cpu = limit_total;
if (limit_slow < 0) limit_slow = limit_total;
if (limit_slow > AsusACPI.MaxTotal) limit_slow = AsusACPI.MaxTotal;
if (limit_slow < AsusACPI.MinTotal) limit_slow = AsusACPI.MinTotal;
if (limit_fast < 0) limit_fast = AsusACPI.DefaultTotal; if (limit_fast < 0) limit_fast = AsusACPI.DefaultTotal;
if (limit_fast > AsusACPI.MaxTotal) limit_fast = AsusACPI.MaxTotal; if (limit_fast > AsusACPI.MaxTotal) limit_fast = AsusACPI.MaxTotal;
if (limit_fast < AsusACPI.MinTotal) limit_fast = AsusACPI.MinTotal; if (limit_fast < AsusACPI.MinTotal) limit_fast = AsusACPI.MinTotal;
trackA0.Value = limit_total; trackA0.Value = limit_total;
trackA3.Value = limit_slow;
trackB0.Value = limit_cpu; trackB0.Value = limit_cpu;
trackC1.Value = limit_fast; trackC1.Value = limit_fast;
checkApplyPower.Checked = apply; checkApplyPower.Checked = apply;
labelA0.Text = trackA0.Value.ToString() + "W"; labelA0.Text = trackA0.Value.ToString() + "W";
labelA3.Text = trackA3.Value.ToString() + "W";
labelB0.Text = trackB0.Value.ToString() + "W"; labelB0.Text = trackB0.Value.ToString() + "W";
labelC1.Text = trackC1.Value.ToString() + "W"; labelC1.Text = trackC1.Value.ToString() + "W";
AppConfig.SetMode("limit_total", limit_total); AppConfig.SetMode("limit_total", limit_total);
AppConfig.SetMode("limit_slow", limit_slow);
AppConfig.SetMode("limit_cpu", limit_cpu); AppConfig.SetMode("limit_cpu", limit_cpu);
AppConfig.SetMode("limit_fast", limit_fast); AppConfig.SetMode("limit_fast", limit_fast);

View File

@@ -15,7 +15,7 @@
<PlatformTarget>AnyCPU</PlatformTarget> <PlatformTarget>AnyCPU</PlatformTarget>
<ProduceReferenceAssembly>False</ProduceReferenceAssembly> <ProduceReferenceAssembly>False</ProduceReferenceAssembly>
<AllowUnsafeBlocks>True</AllowUnsafeBlocks> <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
<AssemblyVersion>0.135</AssemblyVersion> <AssemblyVersion>0.138</AssemblyVersion>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -181,6 +181,12 @@ namespace GHelper.Gpu
Program.modeControl.SetGPUClocks(false); Program.modeControl.SetGPUClocks(false);
} }
if (AppConfig.Is("mode_reapply"))
{
await Task.Delay(TimeSpan.FromMilliseconds(3000));
Program.modeControl.AutoPerformance();
}
}); });

View File

@@ -26,6 +26,38 @@ namespace GHelper.Helpers
(color1.B + color2.B) / 2); (color1.B + color2.B) / 2);
} }
public static Color GetDominantColor(Bitmap bmp)
{
//Used for tally
int r = 0;
int g = 0;
int b = 0;
int total = 0;
for (int x = 0; x < bmp.Width; x++)
{
for (int y = 0; y < bmp.Height; y++)
{
Color clr = bmp.GetPixel(x, y);
r += clr.R;
g += clr.G;
b += clr.B;
total++;
}
}
//Calculate average
r /= total;
g /= total;
b /= total;
return Color.FromArgb(r, g, b);
}
public class HSV public class HSV
{ {
public double Hue { get; set; } public double Hue { get; set; }

67
app/Matrix.Designer.cs generated
View File

@@ -35,6 +35,10 @@
panelMain = new Panel(); panelMain = new Panel();
panelButtons = new Panel(); panelButtons = new Panel();
buttonReset = new UI.RButton(); buttonReset = new UI.RButton();
panelContrast = new Panel();
labelContrast = new Label();
labelContrastTitle = new Label();
trackContrast = new TrackBar();
panelRotation = new Panel(); panelRotation = new Panel();
comboRotation = new UI.RComboBox(); comboRotation = new UI.RComboBox();
labelRotation = new Label(); labelRotation = new Label();
@@ -49,6 +53,8 @@
panelPicture.SuspendLayout(); panelPicture.SuspendLayout();
panelMain.SuspendLayout(); panelMain.SuspendLayout();
panelButtons.SuspendLayout(); panelButtons.SuspendLayout();
panelContrast.SuspendLayout();
((System.ComponentModel.ISupportInitialize)trackContrast).BeginInit();
panelRotation.SuspendLayout(); panelRotation.SuspendLayout();
panelScaling.SuspendLayout(); panelScaling.SuspendLayout();
panelZoom.SuspendLayout(); panelZoom.SuspendLayout();
@@ -111,6 +117,7 @@
// //
panelMain.AutoSize = true; panelMain.AutoSize = true;
panelMain.Controls.Add(panelButtons); panelMain.Controls.Add(panelButtons);
panelMain.Controls.Add(panelContrast);
panelMain.Controls.Add(panelRotation); panelMain.Controls.Add(panelRotation);
panelMain.Controls.Add(panelScaling); panelMain.Controls.Add(panelScaling);
panelMain.Controls.Add(panelZoom); panelMain.Controls.Add(panelZoom);
@@ -118,7 +125,7 @@
panelMain.Dock = DockStyle.Top; panelMain.Dock = DockStyle.Top;
panelMain.Location = new Point(20, 20); panelMain.Location = new Point(20, 20);
panelMain.Name = "panelMain"; panelMain.Name = "panelMain";
panelMain.Size = new Size(834, 814); panelMain.Size = new Size(834, 959);
panelMain.TabIndex = 5; panelMain.TabIndex = 5;
// //
// panelButtons // panelButtons
@@ -126,7 +133,7 @@
panelButtons.Controls.Add(buttonReset); panelButtons.Controls.Add(buttonReset);
panelButtons.Controls.Add(buttonPicture); panelButtons.Controls.Add(buttonPicture);
panelButtons.Dock = DockStyle.Top; panelButtons.Dock = DockStyle.Top;
panelButtons.Location = new Point(0, 720); panelButtons.Location = new Point(0, 865);
panelButtons.Name = "panelButtons"; panelButtons.Name = "panelButtons";
panelButtons.Size = new Size(834, 94); panelButtons.Size = new Size(834, 94);
panelButtons.TabIndex = 6; panelButtons.TabIndex = 6;
@@ -150,6 +157,53 @@
buttonReset.TextImageRelation = TextImageRelation.ImageBeforeText; buttonReset.TextImageRelation = TextImageRelation.ImageBeforeText;
buttonReset.UseVisualStyleBackColor = false; buttonReset.UseVisualStyleBackColor = false;
// //
// panelContrast
//
panelContrast.AutoSize = true;
panelContrast.Controls.Add(labelContrast);
panelContrast.Controls.Add(labelContrastTitle);
panelContrast.Controls.Add(trackContrast);
panelContrast.Dock = DockStyle.Top;
panelContrast.Location = new Point(0, 720);
panelContrast.Name = "panelContrast";
panelContrast.Size = new Size(834, 145);
panelContrast.TabIndex = 6;
//
// labelContrast
//
labelContrast.Anchor = AnchorStyles.Top | AnchorStyles.Right;
labelContrast.AutoSize = true;
labelContrast.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point);
labelContrast.Location = new Point(705, 17);
labelContrast.Name = "labelContrast";
labelContrast.Size = new Size(103, 32);
labelContrast.TabIndex = 4;
labelContrast.Text = "Contrast";
//
// labelContrastTitle
//
labelContrastTitle.AutoSize = true;
labelContrastTitle.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelContrastTitle.Location = new Point(16, 17);
labelContrastTitle.Name = "labelContrastTitle";
labelContrastTitle.Size = new Size(111, 32);
labelContrastTitle.TabIndex = 3;
labelContrastTitle.Text = "Contrast";
//
// trackContrast
//
trackContrast.LargeChange = 50;
trackContrast.Location = new Point(16, 52);
trackContrast.Maximum = 200;
trackContrast.Minimum = 10;
trackContrast.Name = "trackContrast";
trackContrast.Size = new Size(782, 90);
trackContrast.SmallChange = 10;
trackContrast.TabIndex = 2;
trackContrast.TickFrequency = 20;
trackContrast.TickStyle = TickStyle.TopLeft;
trackContrast.Value = 100;
//
// panelRotation // panelRotation
// //
panelRotation.Controls.Add(comboRotation); panelRotation.Controls.Add(comboRotation);
@@ -256,7 +310,7 @@
AutoScaleDimensions = new SizeF(192F, 192F); AutoScaleDimensions = new SizeF(192F, 192F);
AutoScaleMode = AutoScaleMode.Dpi; AutoScaleMode = AutoScaleMode.Dpi;
AutoSize = true; AutoSize = true;
ClientSize = new Size(874, 978); ClientSize = new Size(874, 1006);
Controls.Add(panelMain); Controls.Add(panelMain);
MaximizeBox = false; MaximizeBox = false;
MinimizeBox = false; MinimizeBox = false;
@@ -272,6 +326,9 @@
panelMain.ResumeLayout(false); panelMain.ResumeLayout(false);
panelMain.PerformLayout(); panelMain.PerformLayout();
panelButtons.ResumeLayout(false); panelButtons.ResumeLayout(false);
panelContrast.ResumeLayout(false);
panelContrast.PerformLayout();
((System.ComponentModel.ISupportInitialize)trackContrast).EndInit();
panelRotation.ResumeLayout(false); panelRotation.ResumeLayout(false);
panelRotation.PerformLayout(); panelRotation.PerformLayout();
panelScaling.ResumeLayout(false); panelScaling.ResumeLayout(false);
@@ -300,5 +357,9 @@
private Panel panelRotation; private Panel panelRotation;
private UI.RComboBox comboRotation; private UI.RComboBox comboRotation;
private Label labelRotation; private Label labelRotation;
private Panel panelContrast;
private Label labelContrast;
private Label labelContrastTitle;
private TrackBar trackContrast;
} }
} }

View File

@@ -37,9 +37,13 @@ namespace GHelper
trackZoom.MouseUp += TrackZoom_MouseUp; trackZoom.MouseUp += TrackZoom_MouseUp;
trackZoom.ValueChanged += TrackZoom_Changed; trackZoom.ValueChanged += TrackZoom_Changed;
trackZoom.Value = Math.Min(trackZoom.Maximum, AppConfig.Get("matrix_zoom", 100)); trackZoom.Value = Math.Min(trackZoom.Maximum, AppConfig.Get("matrix_zoom", 100));
VisualiseZoom();
trackContrast.MouseUp += TrackContrast_MouseUp; ;
trackContrast.ValueChanged += TrackContrast_ValueChanged; ;
trackContrast.Value = Math.Min(trackContrast.Maximum, AppConfig.Get("matrix_contrast", 100));
VisualiseMatrix();
comboScaling.DropDownStyle = ComboBoxStyle.DropDownList; comboScaling.DropDownStyle = ComboBoxStyle.DropDownList;
comboScaling.SelectedIndex = AppConfig.Get("matrix_quality", 0); comboScaling.SelectedIndex = AppConfig.Get("matrix_quality", 0);
@@ -55,6 +59,17 @@ namespace GHelper
} }
private void TrackContrast_ValueChanged(object? sender, EventArgs e)
{
VisualiseMatrix();
}
private void TrackContrast_MouseUp(object? sender, MouseEventArgs e)
{
AppConfig.Set("matrix_contrast", trackContrast.Value);
SetMatrixPicture();
}
private void ComboRotation_SelectedValueChanged(object? sender, EventArgs e) private void ComboRotation_SelectedValueChanged(object? sender, EventArgs e)
{ {
AppConfig.Set("matrix_rotation", comboRotation.SelectedIndex); AppConfig.Set("matrix_rotation", comboRotation.SelectedIndex);
@@ -77,18 +92,21 @@ namespace GHelper
GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced); GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced);
} }
private void VisualiseZoom() private void VisualiseMatrix()
{ {
labelZoom.Text = trackZoom.Value + "%"; labelZoom.Text = trackZoom.Value + "%";
labelContrast.Text = trackContrast.Value + "%";
} }
private void ButtonReset_Click(object? sender, EventArgs e) private void ButtonReset_Click(object? sender, EventArgs e)
{ {
AppConfig.Set("matrix_contrast", 100);
AppConfig.Set("matrix_zoom", 100); AppConfig.Set("matrix_zoom", 100);
AppConfig.Set("matrix_x", 0); AppConfig.Set("matrix_x", 0);
AppConfig.Set("matrix_y", 0); AppConfig.Set("matrix_y", 0);
trackZoom.Value = 100; trackZoom.Value = 100;
trackContrast.Value = 100;
SetMatrixPicture(); SetMatrixPicture();
@@ -102,7 +120,7 @@ namespace GHelper
private void TrackZoom_Changed(object? sender, EventArgs e) private void TrackZoom_Changed(object? sender, EventArgs e)
{ {
VisualiseZoom(); VisualiseMatrix();
} }
@@ -195,7 +213,6 @@ namespace GHelper
int matrixY = AppConfig.Get("matrix_y", 0); int matrixY = AppConfig.Get("matrix_y", 0);
int matrixZoom = AppConfig.Get("matrix_zoom", 100); int matrixZoom = AppConfig.Get("matrix_zoom", 100);
float scale = Math.Min((float)panelPicture.Width / (float)width, (float)panelPicture.Height / (float)height) * matrixZoom / 100; float scale = Math.Min((float)panelPicture.Width / (float)width, (float)panelPicture.Height / (float)height) * matrixZoom / 100;
pictureMatrix.Width = (int)(width * scale); pictureMatrix.Width = (int)(width * scale);

View File

@@ -239,10 +239,15 @@ namespace GHelper.Mode
public void SetPower(bool launchAsAdmin = false) public void SetPower(bool launchAsAdmin = false)
{ {
bool allAMD = Program.acpi.IsAllAmdPPT();
int limit_total = AppConfig.GetMode("limit_total"); int limit_total = AppConfig.GetMode("limit_total");
int limit_cpu = AppConfig.GetMode("limit_cpu"); int limit_cpu = AppConfig.GetMode("limit_cpu");
int limit_slow = AppConfig.GetMode("limit_slow");
int limit_fast = AppConfig.GetMode("limit_fast"); int limit_fast = AppConfig.GetMode("limit_fast");
if (limit_slow < 0 || allAMD) limit_slow = limit_total;
if (limit_total > AsusACPI.MaxTotal) return; if (limit_total > AsusACPI.MaxTotal) return;
if (limit_total < AsusACPI.MinTotal) return; if (limit_total < AsusACPI.MinTotal) return;
@@ -252,11 +257,14 @@ namespace GHelper.Mode
if (limit_fast > AsusACPI.MaxTotal) return; if (limit_fast > AsusACPI.MaxTotal) return;
if (limit_fast < AsusACPI.MinTotal) return; if (limit_fast < AsusACPI.MinTotal) return;
// SPL + SPPT togeher in one slider if (limit_slow > AsusACPI.MaxTotal) return;
if (limit_slow < AsusACPI.MinTotal) return;
// SPL and SPPT
if (Program.acpi.DeviceGet(AsusACPI.PPT_TotalA0) >= 0) if (Program.acpi.DeviceGet(AsusACPI.PPT_TotalA0) >= 0)
{ {
Program.acpi.DeviceSet(AsusACPI.PPT_TotalA0, limit_total, "PowerLimit A0"); Program.acpi.DeviceSet(AsusACPI.PPT_TotalA0, limit_total, "PowerLimit A0");
Program.acpi.DeviceSet(AsusACPI.PPT_APUA3, limit_total, "PowerLimit A3"); Program.acpi.DeviceSet(AsusACPI.PPT_APUA3, limit_slow, "PowerLimit A3");
customPower = limit_total; customPower = limit_total;
} }
else if (RyzenControl.IsAMD()) else if (RyzenControl.IsAMD())

View File

@@ -39,9 +39,9 @@
"mode_base", "mode_base",
"mode_name", "mode_name",
"limit_total", "limit_total",
"limit_slow",
"limit_fast", "limit_fast",
"limit_cpu", "limit_cpu",
"limit_total",
"fan_profile_cpu", "fan_profile_cpu",
"fan_profile_gpu", "fan_profile_gpu",
"fan_profile_mid", "fan_profile_mid",

View File

@@ -64,11 +64,12 @@ namespace GHelper
ProcessHelper.CheckAlreadyRunning(); ProcessHelper.CheckAlreadyRunning();
try Logger.WriteLine("------------");
{ Logger.WriteLine("App launched: " + AppConfig.GetModel() + " :" + Assembly.GetExecutingAssembly().GetName().Version.ToString() + CultureInfo.CurrentUICulture + (ProcessHelper.IsUserAdministrator() ? "." : ""));
acpi = new AsusACPI();
} acpi = new AsusACPI();
catch
if (!acpi.IsConnected() && AppConfig.IsASUS())
{ {
DialogResult dialogResult = MessageBox.Show(Properties.Strings.ACPIError, Properties.Strings.StartupError, MessageBoxButtons.YesNo); DialogResult dialogResult = MessageBox.Show(Properties.Strings.ACPIError, Properties.Strings.StartupError, MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes) if (dialogResult == DialogResult.Yes)
@@ -80,9 +81,6 @@ namespace GHelper
return; return;
} }
Logger.WriteLine("------------");
Logger.WriteLine("App launched: " + AppConfig.GetModel() + " :" + Assembly.GetExecutingAssembly().GetName().Version.ToString() + CultureInfo.CurrentUICulture + (ProcessHelper.IsUserAdministrator() ? "." : ""));
Application.EnableVisualStyles(); Application.EnableVisualStyles();
HardwareControl.RecreateGpuControl(); HardwareControl.RecreateGpuControl();
@@ -154,6 +152,7 @@ namespace GHelper
} }
private static void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e) private static void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e)
{ {
gpuControl.StandardModeFix(); gpuControl.StandardModeFix();

View File

@@ -124,10 +124,10 @@
<value>No se pudo conectar con ASUS ACPI. La aplicación no puede funcionar sin el recurso. Instale Asus System Control Interface</value> <value>No se pudo conectar con ASUS ACPI. La aplicación no puede funcionar sin el recurso. Instale Asus System Control Interface</value>
</data> </data>
<data name="AlertAPUMemoryRestart" xml:space="preserve"> <data name="AlertAPUMemoryRestart" xml:space="preserve">
<value>Restart your device to apply changes</value> <value>Reinicia el dispositivo para aplicar los cambios</value>
</data> </data>
<data name="AlertAPUMemoryRestartTitle" xml:space="preserve"> <data name="AlertAPUMemoryRestartTitle" xml:space="preserve">
<value>Restart now?</value> <value>¿Reiniciar ahora?</value>
</data> </data>
<data name="AlertDGPU" xml:space="preserve"> <data name="AlertDGPU" xml:space="preserve">
<value>Detectado uso intensivo de la GPU, ¿deshabilitarla?</value> <value>Detectado uso intensivo de la GPU, ¿deshabilitarla?</value>
@@ -169,7 +169,7 @@
<value>Autoajustar plan de energía Windows</value> <value>Autoajustar plan de energía Windows</value>
</data> </data>
<data name="APUMemory" xml:space="preserve"> <data name="APUMemory" xml:space="preserve">
<value>Memory Assigned to GPU</value> <value>Memoria asignada a GPU</value>
</data> </data>
<data name="AsusServicesRunning" xml:space="preserve"> <data name="AsusServicesRunning" xml:space="preserve">
<value>Servicios de Asus en ejecución</value> <value>Servicios de Asus en ejecución</value>

View File

@@ -414,7 +414,7 @@ Voulez-vous continuer ?</value>
<value>Arrêter toutes les applications utilisant la dGPU lors du passage au mode Eco</value> <value>Arrêter toutes les applications utilisant la dGPU lors du passage au mode Eco</value>
</data> </data>
<data name="LaptopBacklight" xml:space="preserve"> <data name="LaptopBacklight" xml:space="preserve">
<value>Rétroéclairage de l'ordinateur</value> <value>Rétroéclairage du clavier</value>
</data> </data>
<data name="LaptopKeyboard" xml:space="preserve"> <data name="LaptopKeyboard" xml:space="preserve">
<value>Clavier de l'ordinateur</value> <value>Clavier de l'ordinateur</value>

View File

@@ -124,10 +124,10 @@
<value>Nie można odnaleźć sterownika ASUS ACPI. Aplikacja nie może bez niego funkcjonować. Spróbuj zainstalować Asus System Control Interface</value> <value>Nie można odnaleźć sterownika ASUS ACPI. Aplikacja nie może bez niego funkcjonować. Spróbuj zainstalować Asus System Control Interface</value>
</data> </data>
<data name="AlertAPUMemoryRestart" xml:space="preserve"> <data name="AlertAPUMemoryRestart" xml:space="preserve">
<value>Restart your device to apply changes</value> <value>Uruchom ponownie, aby zastosować ustawienia</value>
</data> </data>
<data name="AlertAPUMemoryRestartTitle" xml:space="preserve"> <data name="AlertAPUMemoryRestartTitle" xml:space="preserve">
<value>Restart now?</value> <value>Uruchomić ponownie teraz?</value>
</data> </data>
<data name="AlertDGPU" xml:space="preserve"> <data name="AlertDGPU" xml:space="preserve">
<value>Wygląda na to, że GPU jest mocno obciążone. Wyłączyć?</value> <value>Wygląda na to, że GPU jest mocno obciążone. Wyłączyć?</value>
@@ -169,7 +169,7 @@
<value>Dostosuj systemowy Tryb Zasilania</value> <value>Dostosuj systemowy Tryb Zasilania</value>
</data> </data>
<data name="APUMemory" xml:space="preserve"> <data name="APUMemory" xml:space="preserve">
<value>Memory Assigned to GPU</value> <value>Pamięć przypisana do GPU</value>
</data> </data>
<data name="AsusServicesRunning" xml:space="preserve"> <data name="AsusServicesRunning" xml:space="preserve">
<value>Uruchomione usługi Asus</value> <value>Uruchomione usługi Asus</value>

View File

@@ -124,10 +124,10 @@
<value>无法连接到ASUS ACPI。 没有它应用程序将无法运行。 请尝试安装Asus System Control Interface驱动。</value> <value>无法连接到ASUS ACPI。 没有它应用程序将无法运行。 请尝试安装Asus System Control Interface驱动。</value>
</data> </data>
<data name="AlertAPUMemoryRestart" xml:space="preserve"> <data name="AlertAPUMemoryRestart" xml:space="preserve">
<value>Restart your device to apply changes</value> <value>重新启动您的设备以应用更改</value>
</data> </data>
<data name="AlertAPUMemoryRestartTitle" xml:space="preserve"> <data name="AlertAPUMemoryRestartTitle" xml:space="preserve">
<value>Restart now?</value> <value>现在重启?</value>
</data> </data>
<data name="AlertDGPU" xml:space="preserve"> <data name="AlertDGPU" xml:space="preserve">
<value>看起来 GPU 正在被重度使用,是否禁用?</value> <value>看起来 GPU 正在被重度使用,是否禁用?</value>
@@ -169,7 +169,7 @@
<value>自动调整Windows电源模式</value> <value>自动调整Windows电源模式</value>
</data> </data>
<data name="APUMemory" xml:space="preserve"> <data name="APUMemory" xml:space="preserve">
<value>Memory Assigned to GPU</value> <value>分配给 GPU 的内存</value>
</data> </data>
<data name="AsusServicesRunning" xml:space="preserve"> <data name="AsusServicesRunning" xml:space="preserve">
<value>正在运行的 Asus 服务</value> <value>正在运行的 Asus 服务</value>

View File

@@ -134,8 +134,9 @@ namespace GHelper.USB
{ {
var device = AsusHid.FindDevices(AsusHid.AURA_ID).FirstOrDefault(); var device = AsusHid.FindDevices(AsusHid.AURA_ID).FirstOrDefault();
if (device is null) return; if (device is null) return;
Logger.WriteLine($"GA402: {device.ReleaseNumberBcd} {device.ReleaseNumber}"); Logger.WriteLine($"USB Version: {device.ReleaseNumberBcd} {device.ReleaseNumber}");
if (device.ReleaseNumberBcd >= 22) isSingleColor = true;
if (device.ReleaseNumberBcd >= 22 && device.ReleaseNumberBcd <= 25) isSingleColor = true;
} }
} }
@@ -632,14 +633,13 @@ namespace GHelper.USB
bound.Y += bound.Height / 3; bound.Y += bound.Height / 3;
bound.Height -= (int)Math.Round(bound.Height * (0.33f + 0.022f)); // cut 1/3 of the top screen + windows panel bound.Height -= (int)Math.Round(bound.Height * (0.33f + 0.022f)); // cut 1/3 of the top screen + windows panel
Bitmap screen_low = screen_low = AmbientData.CamptureScreen(bound, 512, 288); //quality decreases greatly if it is less 512 ; Bitmap screen_low = AmbientData.CamptureScreen(bound, 512, 288); //quality decreases greatly if it is less 512 ;
Bitmap screeb_pxl; Bitmap screeb_pxl = AmbientData.ResizeImage(screen_low, 4, 2); // 4x2 zone. top for keyboard and bot for lightbar;
int zones = AURA_ZONES; int zones = AURA_ZONES;
if (isStrix) // laptop with lightbar if (isStrix) // laptop with lightbar
{ {
screeb_pxl = AmbientData.ResizeImage(screen_low, 4, 2); // 4x2 zone. top for keyboard and bot for lightbar
var mid_left = ColorUtils.GetMidColor(screeb_pxl.GetPixel(0, 1), screeb_pxl.GetPixel(1, 1)); var mid_left = ColorUtils.GetMidColor(screeb_pxl.GetPixel(0, 1), screeb_pxl.GetPixel(1, 1));
var mid_right = ColorUtils.GetMidColor(screeb_pxl.GetPixel(2, 1), screeb_pxl.GetPixel(3, 1)); var mid_right = ColorUtils.GetMidColor(screeb_pxl.GetPixel(2, 1), screeb_pxl.GetPixel(3, 1));
@@ -654,12 +654,12 @@ namespace GHelper.USB
else else
{ {
zones = 1; zones = 1;
screeb_pxl = AmbientData.ResizeImage(screen_low, 1, 1); AmbientData.Colors[0].RGB = ColorUtils.HSV.UpSaturation(ColorUtils.GetDominantColor(screeb_pxl), (float)0.3);
AmbientData.Colors[0].RGB = ColorUtils.HSV.UpSaturation(screeb_pxl.GetPixel(0, 0), (float)0.3);
} }
//screen_low.Save("big.jpg", ImageFormat.Jpeg);
//screeb_pxl.Save("small.jpg", ImageFormat.Jpeg);
//screeb_pxl.Save("test.jpg", ImageFormat.Jpeg);
screen_low.Dispose(); screen_low.Dispose();
screeb_pxl.Dispose(); screeb_pxl.Dispose();

View File

@@ -55,10 +55,10 @@ namespace GHelper
tableBios.AutoSize = true; tableBios.AutoSize = true;
tableBios.AutoSizeMode = AutoSizeMode.GrowAndShrink; tableBios.AutoSizeMode = AutoSizeMode.GrowAndShrink;
tableBios.ColumnCount = 4; tableBios.ColumnCount = 4;
tableBios.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 20F)); tableBios.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 23F));
tableBios.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 40F)); tableBios.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 40F));
tableBios.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 15F)); tableBios.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 15F));
tableBios.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F)); tableBios.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 22F));
tableBios.Dock = DockStyle.Top; tableBios.Dock = DockStyle.Top;
tableBios.Location = new Point(20, 20); tableBios.Location = new Point(20, 20);
tableBios.Margin = new Padding(4); tableBios.Margin = new Padding(4);
@@ -99,14 +99,14 @@ namespace GHelper
panelBiosTitle.Location = new Point(0, 0); panelBiosTitle.Location = new Point(0, 0);
panelBiosTitle.Margin = new Padding(4); panelBiosTitle.Margin = new Padding(4);
panelBiosTitle.Name = "panelBiosTitle"; panelBiosTitle.Name = "panelBiosTitle";
panelBiosTitle.Size = new Size(1256, 62); panelBiosTitle.Size = new Size(1294, 62);
panelBiosTitle.TabIndex = 3; panelBiosTitle.TabIndex = 3;
// //
// labelUpdates // labelUpdates
// //
labelUpdates.Anchor = AnchorStyles.Top | AnchorStyles.Right; labelUpdates.Anchor = AnchorStyles.Top | AnchorStyles.Right;
labelUpdates.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point); labelUpdates.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelUpdates.Location = new Point(810, 23); labelUpdates.Location = new Point(848, 23);
labelUpdates.Name = "labelUpdates"; labelUpdates.Name = "labelUpdates";
labelUpdates.Size = new Size(245, 32); labelUpdates.Size = new Size(245, 32);
labelUpdates.TabIndex = 4; labelUpdates.TabIndex = 4;
@@ -122,7 +122,7 @@ namespace GHelper
buttonRefresh.FlatAppearance.BorderSize = 0; buttonRefresh.FlatAppearance.BorderSize = 0;
buttonRefresh.FlatStyle = FlatStyle.Flat; buttonRefresh.FlatStyle = FlatStyle.Flat;
buttonRefresh.Image = Properties.Resources.icons8_refresh_32; buttonRefresh.Image = Properties.Resources.icons8_refresh_32;
buttonRefresh.Location = new Point(1183, 14); buttonRefresh.Location = new Point(1221, 14);
buttonRefresh.Name = "buttonRefresh"; buttonRefresh.Name = "buttonRefresh";
buttonRefresh.Secondary = true; buttonRefresh.Secondary = true;
buttonRefresh.Size = new Size(52, 46); buttonRefresh.Size = new Size(52, 46);
@@ -138,7 +138,7 @@ namespace GHelper
panelBios.Margin = new Padding(4); panelBios.Margin = new Padding(4);
panelBios.Name = "panelBios"; panelBios.Name = "panelBios";
panelBios.Padding = new Padding(20); panelBios.Padding = new Padding(20);
panelBios.Size = new Size(1256, 40); panelBios.Size = new Size(1294, 40);
panelBios.TabIndex = 4; panelBios.TabIndex = 4;
// //
// panelDrivers // panelDrivers
@@ -150,7 +150,7 @@ namespace GHelper
panelDrivers.Margin = new Padding(4); panelDrivers.Margin = new Padding(4);
panelDrivers.Name = "panelDrivers"; panelDrivers.Name = "panelDrivers";
panelDrivers.Padding = new Padding(20); panelDrivers.Padding = new Padding(20);
panelDrivers.Size = new Size(1256, 40); panelDrivers.Size = new Size(1294, 40);
panelDrivers.TabIndex = 6; panelDrivers.TabIndex = 6;
// //
// tableDrivers // tableDrivers
@@ -158,10 +158,10 @@ namespace GHelper
tableDrivers.AutoSize = true; tableDrivers.AutoSize = true;
tableDrivers.AutoSizeMode = AutoSizeMode.GrowAndShrink; tableDrivers.AutoSizeMode = AutoSizeMode.GrowAndShrink;
tableDrivers.ColumnCount = 4; tableDrivers.ColumnCount = 4;
tableDrivers.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 20F)); tableDrivers.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 23F));
tableDrivers.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 40F)); tableDrivers.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 40F));
tableDrivers.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 15F)); tableDrivers.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 15F));
tableDrivers.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F)); tableDrivers.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 22F));
tableDrivers.Dock = DockStyle.Top; tableDrivers.Dock = DockStyle.Top;
tableDrivers.Location = new Point(20, 20); tableDrivers.Location = new Point(20, 20);
tableDrivers.Margin = new Padding(4); tableDrivers.Margin = new Padding(4);
@@ -178,7 +178,7 @@ namespace GHelper
panelDriversTitle.Location = new Point(0, 102); panelDriversTitle.Location = new Point(0, 102);
panelDriversTitle.Margin = new Padding(4); panelDriversTitle.Margin = new Padding(4);
panelDriversTitle.Name = "panelDriversTitle"; panelDriversTitle.Name = "panelDriversTitle";
panelDriversTitle.Size = new Size(1256, 44); panelDriversTitle.Size = new Size(1294, 44);
panelDriversTitle.TabIndex = 5; panelDriversTitle.TabIndex = 5;
// //
// labelDrivers // labelDrivers
@@ -208,7 +208,7 @@ namespace GHelper
AutoScaleDimensions = new SizeF(192F, 192F); AutoScaleDimensions = new SizeF(192F, 192F);
AutoScaleMode = AutoScaleMode.Dpi; AutoScaleMode = AutoScaleMode.Dpi;
AutoScroll = true; AutoScroll = true;
ClientSize = new Size(1256, 690); ClientSize = new Size(1294, 690);
Controls.Add(panelDrivers); Controls.Add(panelDrivers);
Controls.Add(panelDriversTitle); Controls.Add(panelDriversTitle);
Controls.Add(panelBios); Controls.Add(panelBios);

View File

@@ -80,6 +80,7 @@ Each BIOS mode is paired with matching Windows Power Mode. You can adjust this s
- ROG Harpe Ace Aim Lab Edition - ROG Harpe Ace Aim Lab Edition
- ROG Keris Wireless - ROG Keris Wireless
- ROG Chakram X (P708) - ROG Chakram X (P708)
- ROG Chakram Core (P511)
- ROG Strix III Gladius III Aimpoint Wireless (P711) - ROG Strix III Gladius III Aimpoint Wireless (P711)
- ROG Gladius III - ROG Gladius III
- ROG Gladius III Wireless - ROG Gladius III Wireless
@@ -96,7 +97,7 @@ Stop ``ArmouryCrateControlInterface`` service under windows Services app or you
#### Battery charge limiter is not working #### Battery charge limiter is not working
It could be that Asus services are overwriting this limit after. You may want to stop them by clicking "Stop" in the Asus Services section (under Extra). It could be that Asus services are overwriting this limit after. You may want to stop them by clicking "Stop" in the Asus Services section (under Extra).
Please note: For some devices not every charge limit % may be working. Try to set standard **80%** to be sure. Please note: For some devices not every charge limit % may be working. Some models support only 80% limit, so try to set standard **80%** to be sure.
#### I don't see GPU modes section #### I don't see GPU modes section
Some older models (for example G14 2020) don't support disabling GPU on hardware level, therefore GPU section makes no sense for them and will be hidden Some older models (for example G14 2020) don't support disabling GPU on hardware level, therefore GPU section makes no sense for them and will be hidden