Skip to content

Commit

Permalink
add a failsafe for vram check
Browse files Browse the repository at this point in the history
  • Loading branch information
SandeMC committed Jan 19, 2024
1 parent 0052e32 commit d10f9fe
Show file tree
Hide file tree
Showing 2 changed files with 76 additions and 42 deletions.
111 changes: 72 additions & 39 deletions GTAIVSetupUtility/MainWindow.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
using GTAIVSetupUtilityWPF.Common;
using GTAIVSetupUtilityWPF.Functions;
using System.Threading.Tasks;
using PromptDialog;
// hi here, i'm an awful coder, so please clean up for me if it really bothers you

namespace GTAIVSetupUtilityWPF
Expand Down Expand Up @@ -540,8 +541,6 @@ private void setuplaunchoptions_Click(object sender, RoutedEventArgs e)
if (nomemrestrictcheck.IsChecked == true) { launchoptions.Add("-nomemrestrict"); Logger.Debug(" Added -nomemrestrict."); }
if (windowedcheck.IsEnabled)
{
Logger.Debug(" Setting up Borderless Windowed...");

IniEditor iniParser = new IniEditor(iniModify);
string borderlessWindowedValue;
if (ffix)
Expand Down Expand Up @@ -588,57 +587,91 @@ private void setuplaunchoptions_Click(object sender, RoutedEventArgs e)
if (vidmemcheck.IsChecked == true)
{
Logger.Debug(" -availablevidmem checked, quering user's VRAM...");
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_VideoController");
foreach (var tempvram in from ManagementObject obj in searcher.Get()
let adapterRAM = obj["AdapterRAM"] != null ? obj["AdapterRAM"].ToString() : "N/A"
let tempvram = System.Convert.ToInt16(ByteSize.FromBytes(System.Convert.ToDouble(adapterRAM)).MebiBytes + 1)
select tempvram)
try
{
if (firstgpu)
{
vram1 = tempvram;
firstgpu = false;
}
else if (tempvram > vram1 || tempvram > vram2)
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_VideoController");
foreach (var tempvram in from ManagementObject obj in searcher.Get()
let adapterRAM = obj["AdapterRAM"] != null ? obj["AdapterRAM"].ToString() : "N/A"
let tempvram = System.Convert.ToInt16(ByteSize.FromBytes(System.Convert.ToDouble(adapterRAM)).MebiBytes + 1)
select tempvram)
{
vram2 = tempvram;
if (firstgpu)
{
vram1 = tempvram;
firstgpu = false;
}
else if (tempvram > vram1 || tempvram > vram2)
{
vram2 = tempvram;
}
}
}

if (resultvk.Item3 || resultvk.Item4)
{
if (gb3check.IsChecked == true)
if (resultvk.Item3 || resultvk.Item4)
{
if (vram1 > 3072) vram1 = 3072;
if (gb3check.IsChecked == true)
{
if (vram1 > 3072) vram1 = 3072;
}
else
{
if (vram1 > 4096) vram1 = 4096;
}
launchoptions.Add($"-availablevidmem {vram1}");
Logger.Debug($" Added -availablevidmem {vram1}.");
}
else
{
if (vram1 > 4096) vram1 = 4096;
int vram;
if (!dxvkonigpu)
{
vram = Math.Max(vram1, vram2);
}
else
{
vram = Math.Min(vram1, vram2);
}
if (gb3check.IsChecked == true)
{
if (vram > 3072) vram = 3072;
}
else
{
if (vram > 4096) vram = 4096;
}
launchoptions.Add($"-availablevidmem {vram}");
Logger.Debug($" Added -availablevidmem {vram}.");
}
launchoptions.Add($"-availablevidmem {vram1}");
Logger.Debug($" Added -availablevidmem {vram1}.");
}
else if (!resultvk.Item3 && !resultvk.Item4)
catch (Exception ex)
{
int vram;
if (!dxvkonigpu)
{
vram = Math.Max(vram1, vram2);
}
else
{
vram = Math.Min(vram1, vram2);
}
if (gb3check.IsChecked == true)
// i know this is an awful and unoptimized and full of bad practices implementation, plz forgib
Logger.Error(ex, "Had some weird error during quering vram; asking the user for manual input");
bool noerror = false;
int vram = 0;
while (!noerror)
{
try
{
vram = Convert.ToInt16(PromptDialog.Dialog.Prompt("VRAM could not be queried automatically.\n\nInput your VRAM value (in MB):", "Failsafe VRAM input"));
noerror = true;
}
catch
{
Logger.Error("Didn't receive a number, requesting again");
MessageBox.Show("Not a number, try again...");
}

}
if (gb3check.IsChecked == true)
{
if (vram > 3072) vram = 3072;
}
else
{
}
else
{
if (vram > 4096) vram = 4096;
}
launchoptions.Add($"-availablevidmem {vram}");
Logger.Debug($" Added -availablevidmem {vram}.");
}
launchoptions.Add($"-availablevidmem {vram}");
Logger.Debug($" Added -availablevidmem {vram}.");
}
}
if (monitordetailcheck.IsChecked == true)
Expand Down
7 changes: 4 additions & 3 deletions GTAIVSetupUtilityWPF.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<UseWPF>true</UseWPF>
<DebugType>embedded</DebugType>
<IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>
<Version>1.4.3</Version>
<Version>1.4.4</Version>
<ApplicationIcon>Assets\ivlogo.ico</ApplicationIcon>
<AssemblyName>$(MSBuildProjectName)</AssemblyName>
<Title>Gillian's GTA IV Setup Utility</Title>
Expand All @@ -32,9 +32,10 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="ByteSize" Version="2.1.1" />
<PackageReference Include="ByteSize" Version="2.1.2" />
<PackageReference Include="Microsoft-WindowsAPICodePack-Shell" Version="1.1.5" />
<PackageReference Include="NLog" Version="5.2.7" />
<PackageReference Include="NLog" Version="5.2.8" />
<PackageReference Include="PromptDialog" Version="1.0.0" />
<PackageReference Include="SharpZipLib" Version="1.4.2" />
<PackageReference Include="System.Management" Version="8.0.0" />
</ItemGroup>
Expand Down

0 comments on commit d10f9fe

Please sign in to comment.