1
0
Fork 0
mirror of https://github.com/atom0s/Steamless.git synced 2024-12-19 23:07:41 +01:00

Updated the project README.md

Updated the AboutView.
This commit is contained in:
atom0s 2022-03-27 00:19:57 -07:00
parent d97e1a4426
commit 6b7fa1d977
No known key found for this signature in database
GPG key ID: 37D5FD3494D79AF8
3 changed files with 318 additions and 252 deletions

View file

@ -1,63 +1,71 @@
# Steamless # Steamless
[![Support via Github Sponsors](https://img.shields.io/badge/Github-Become%20a%20Sponsor-ff69b4.svg?style=flat&logo=GitHub)](https://github.com/users/atom0s/sponsorship) [![Support via PayPal](https://cdn.rawgit.com/twolfson/paypal-github-button/1.0.0/dist/button.svg)](https://www.paypal.me/atom0s) Steamless is a DRM remover of the various SteamStub variants applied to applications and games released on Steam via the DRM tool in the Steamworks SDK.
Steamless is a DRM remover of the SteamStub variants. Steamless aims to be a single solution for unpacking all variants of the SteamStub DRM, ranging from the very first version to the most recently released.
The goal of Steamless is to make a single solution for unpacking all Steam DRM packed files. Steamless aims to support as many games as possible.<br> _However, due to personal limited funds, I cannot test every game myself._
However, due to personal limited funds, I cannot test every game myself.
# Donations
# What Steamless Wont Do For You Want to say thanks for my work on Steamless? Feel free to donate or sponsor me:
Steamless removes the SteamStub DRM protection from games that have it, nothing more.<br> * **GitHub:** https://github.com/users/atom0s/sponsorship
If the game you are unpacking makes use of the Steamworks API, Steamless **WILL NOT** remove this layer of DRM. * **Paypal:** https://www.paypal.me/atom0s
* **Patreon:** https://www.patreon.com/atom0s
* Steamless will not remove the Steamworks API integrations in any game. # What Steamless Will Do
* Steamless will not handle CEG (Custom Executable Generation) DRM that is used by some games.
* Steamless is not made to assist with piracy.
* Steamless is not made to assist with bypassing anti-cheats or other protections.
This project makes static analysis on the games files that are protected with SteamStub possible.<br> Steamless will remove the SteamStub DRM protection layer that is applied via the DRM tool from the Steamworks SDK.
Will this allow some games to run without Steam? Yes. But I do not promote piracy and will not help with it at all.
Do not contact me or any contributor to this project with assistance on how to make a game work without Steam. # What Steamless Wont Do
Steamless **WILL NEVER** do any of the following:
* Steamless will never remove the Steamworks API integration. (via steam_api.dll/steam_api64.dll)
* Steamless will never include or distribute any emulator for the Steamworks API integration.
* Steamless will never handle Valve's CEG (Custom Executable Generation) DRM that is used on some older games.
* Steamless will never promote, encourage, or assist with piracy.
* Steamless will never assist with bypassing anti-cheats or other protections in place by games.
Do not ask for help with running games without Steam. Your requests will be ignored/blocked.
That is not the scope or goal of this project.
# What is SteamStub DRM? # What is SteamStub DRM?
``` From the Steamworks documentation:
Steamworks Digital Rights Management wraps your game's compiled executable and checks to make sure that it is running under an authenticated instance of Steam. This DRM solution is the same as the one used to protect games like Half-Life 2 and Counter-Strike: Source. Steamworks DRM has been heavily road-tested and is customer-friendly.
In addition to DRM solutions, Steamworks also offers protection for game through day one release by shipping encrypted media to stores worldwide. There's no worry that your game will leak early from the manufacturing path, because your game stays encrypted until the moment you decide to release it. This protection can be added to your game simply by handing us finished bits or a gold master.
ref: hxxps://partner.steamgames.com/documentation/api > Steamworks Digital Rights Management wraps your game's compiled executable and checks to make sure that it is running under an authenticated instance of Steam. This DRM solution is the same as the one used to protect games like Half-Life 2 and Counter-Strike: Source. Steamworks DRM has been heavily road-tested and is customer-friendly.
``` > In addition to DRM solutions, Steamworks also offers protection for game through day one release by shipping encrypted media to stores worldwide. There's no worry that your game will leak early from the manufacturing path, because your game stays encrypted until the moment you decide to release it. This protection can be added to your game simply by handing us finished bits or a gold master. <br><br>
> ref: hxxps://partner.steamgames.com/documentation/api
# Supported Versions # Supported Versions
Steamless currently supports the following SteamStub DRM variants: Steamless currently supports the following SteamStub DRM variants:
* **SteamStub Variant 1** * **SteamStub Variant 1**
* There is currently no support for this version of the DRM. * 32bit version is supported. _(Support for this is only tested with 1 file so far.)_
* **SteamStub Variant 2** * **SteamStub Variant 2**
* **Variant 2.0.0** * **v2.0.0**
* 32bit version of this variant is supported. * 32bit version is supported.
* **Variant 2.0.1** * **v2.0.1**
* 32bit version of this variant is supported. * 32bit version is supported.
* **SteamStub Variant 3** * **SteamStub Variant 3**
* **Variant 3.0.0** * **v3.0.0**
* 32bit version of this variant is supported. * 32bit version is supported.
* 64bit version of this variant is supported. * 64bit version is supported.
* **Variant 3.0.1** * **v3.0.1**
* 32bit version of this variant is supported. * 32bit version is supported.
* 64bit version of this variant is supported. * 64bit version is supported.
* **Variant 3.1.0** * **v3.1.0**
* 32bit version of this variant is supported. * 32bit version is supported.
* 64bit version of this variant is supported. * 64bit version is supported.
* **Variant 3.1.2** * **v3.1.2**
* 32bit version of this variant is supported. * 32bit version is supported.
* 64bit version of this variant is supported. * 64bit version is supported.
*Please note; these version numbers are superficial. They are an assumed version based on major changes to the DRM over its lifespan.* _**Note:** Version numbers are not 'real'. They are superficial and are simply assumed versions based on major changes to the DRM and what has been observed in the various submitted file samples. A better versioning system may come at a later date._
# Legal # Legal
@ -90,7 +98,7 @@ You can find his information here: http://pcgamingwiki.com/wiki/User:Cyanic/Stea
# Compiling Steamless # Compiling Steamless
Steamless is coded using Visual Studio 2015 (Update 3) at this time.<br> Steamless is coded using Visual Studio 2022.<br>
To compile, you should only need to load the sln file and compile as-is. To compile, you should only need to load the sln file and compile as-is.
No changes should be needed to the solution or source. No changes should be needed to the solution or source.

View file

@ -997,6 +997,12 @@ Special Thanks
<Canvas Width="48" Height="48" Clip="F1 M 0,0L 48,0L 48,48L 0,48L 0,0" UseLayoutRounding="False" x:Key="appbar_paypal"> <Canvas Width="48" Height="48" Clip="F1 M 0,0L 48,0L 48,48L 0,48L 0,0" UseLayoutRounding="False" x:Key="appbar_paypal">
<Path Width="28.5" Height="29" Canvas.Left="9.5" Canvas.Top="9" Stretch="Fill" Fill="#FFFFFFFF" Data="F1 M 38,18.5C 38,23.1944 33.9706,29 29,29L 21.4038,29L 19.5,38L 12.5,38L 12.8702,36.25L 18.25,36.25L 20.1538,27.25L 27.75,27.25C 32.7206,27.25 36.75,21.4444 36.75,16.75C 36.75,15.7661 36.573,14.909 36.2474,14.169C 37.3489,15.1928 38,16.613 38,18.5 Z M 15,9L 26,9L 27,9L 27,9.02539C 31.4999,9.25893 35,12 35,15.5C 35,21 30.9706,26 26,26L 18.6538,26L 16.75,35L 9.5,35L 15,9 Z M 28.25,17C 28.1335,15.6019 27.4084,14.8816 26.2616,14.5L 21.0865,14.5L 19.6058,21.5L 23.4968,21.5C 26.4615,20.5978 28.25,18.6388 28.25,17 Z " /> <Path Width="28.5" Height="29" Canvas.Left="9.5" Canvas.Top="9" Stretch="Fill" Fill="#FFFFFFFF" Data="F1 M 38,18.5C 38,23.1944 33.9706,29 29,29L 21.4038,29L 19.5,38L 12.5,38L 12.8702,36.25L 18.25,36.25L 20.1538,27.25L 27.75,27.25C 32.7206,27.25 36.75,21.4444 36.75,16.75C 36.75,15.7661 36.573,14.909 36.2474,14.169C 37.3489,15.1928 38,16.613 38,18.5 Z M 15,9L 26,9L 27,9L 27,9.02539C 31.4999,9.25893 35,12 35,15.5C 35,21 30.9706,26 26,26L 18.6538,26L 16.75,35L 9.5,35L 15,9 Z M 28.25,17C 28.1335,15.6019 27.4084,14.8816 26.2616,14.5L 21.0865,14.5L 19.6058,21.5L 23.4968,21.5C 26.4615,20.5978 28.25,18.6388 28.25,17 Z " />
</Canvas> </Canvas>
<Canvas Width="48" Height="48" Clip="F1 M 0,0L 48,0L 48,48L 0,48L 0,0" UseLayoutRounding="False" x:Key="appbar_github">
<Path Width="30" Height="30" Canvas.Left="0" Canvas.Top="0" Stretch="Fill" Fill="#FFFFFFFF" Data="M15,3C8.373,3,3,8.373,3,15c0,5.623,3.872,10.328,9.092,11.63C12.036,26.468,12,26.28,12,26.047v-2.051 c-0.487,0-1.303,0-1.508,0c-0.821,0-1.551-0.353-1.905-1.009c-0.393-0.729-0.461-1.844-1.435-2.526 c-0.289-0.227-0.069-0.486,0.264-0.451c0.615,0.174,1.125,0.596,1.605,1.222c0.478,0.627,0.703,0.769,1.596,0.769 c0.433,0,1.081-0.025,1.691-0.121c0.328-0.833,0.895-1.6,1.588-1.962c-3.996-0.411-5.903-2.399-5.903-5.098 c0-1.162,0.495-2.286,1.336-3.233C9.053,10.647,8.706,8.73,9.435,8c1.798,0,2.885,1.166,3.146,1.481C13.477,9.174,14.461,9,15.495,9 c1.036,0,2.024,0.174,2.922,0.483C18.675,9.17,19.763,8,21.565,8c0.732,0.731,0.381,2.656,0.102,3.594 c0.836,0.945,1.328,2.066,1.328,3.226c0,2.697-1.904,4.684-5.894,5.097C18.199,20.49,19,22.1,19,23.313v2.734 c0,0.104-0.023,0.179-0.035,0.268C23.641,24.676,27,20.236,27,15C27,8.373,21.627,3,15,3z" />
</Canvas>
<Canvas Width="48" Height="48" Clip="F1 M 0,0L 48,0L 48,48L 0,48L 0,0" UseLayoutRounding="False" x:Key="appbar_patreon">
<Path Width="30" Height="30" Canvas.Left="0" Canvas.Top="0" Stretch="Fill" Fill="#FFFFFFFF" Data="M15.386.524c-4.764 0-8.64 3.876-8.64 8.64 0 4.75 3.876 8.613 8.64 8.613 4.75 0 8.614-3.864 8.614-8.613C24 4.4 20.136.524 15.386.524M.003 23.537h4.22V.524H.003" />
</Canvas>
<Canvas Width="48" Height="48" Clip="F1 M 0,0L 48,0L 48,48L 0,48L 0,0" x:Key="appbar_people_status"> <Canvas Width="48" Height="48" Clip="F1 M 0,0L 48,0L 48,48L 0,48L 0,0" x:Key="appbar_people_status">
<Path Width="22" Height="27" Canvas.Left="13" Canvas.Top="11" Stretch="Fill" Fill="#FFFFFFFF" Data="F1 M 34,37L 29,37C 28.4477,37 28,36.5523 28,36L 28,31C 28,30.4477 28.4477,30 29,30L 34,30C 34.5522,30 35,30.4477 35,31L 35,36C 35,36.5523 34.5522,37 34,37 Z M 24,11C 26.7614,11 29,13.2386 29,16C 29,18.7614 26.7614,21 24,21C 21.2386,21 19,18.7614 19,16C 19,13.2386 21.2386,11 24,11 Z M 19,28C 18.3333,28.3333 17,30.9999 17,30.9999C 17,30.9999 16.3333,32 16,36L 13,35L 14,30C 14,30 16,23 20,23.0001L 27.9999,23.0001C 30.5884,23 32.3393,25.9312 33.2528,28L 29,28L 27.9999,28C 26.8954,28 25.9999,28.8955 25.9999,30L 26,37.9176L 24.5,38C 22.3912,38 20.3954,37.5165 18.6173,36.6543L 19,28 Z " /> <Path Width="22" Height="27" Canvas.Left="13" Canvas.Top="11" Stretch="Fill" Fill="#FFFFFFFF" Data="F1 M 34,37L 29,37C 28.4477,37 28,36.5523 28,36L 28,31C 28,30.4477 28.4477,30 29,30L 34,30C 34.5522,30 35,30.4477 35,31L 35,36C 35,36.5523 34.5522,37 34,37 Z M 24,11C 26.7614,11 29,13.2386 29,16C 29,18.7614 26.7614,21 24,21C 21.2386,21 19,18.7614 19,16C 19,13.2386 21.2386,11 24,11 Z M 19,28C 18.3333,28.3333 17,30.9999 17,30.9999C 17,30.9999 16.3333,32 16,36L 13,35L 14,30C 14,30 16,23 20,23.0001L 27.9999,23.0001C 30.5884,23 32.3393,25.9312 33.2528,28L 29,28L 27.9999,28C 26.8954,28 25.9999,28.8955 25.9999,30L 26,37.9176L 24.5,38C 22.3912,38 20.3954,37.5165 18.6173,36.6543L 19,28 Z " />
</Canvas> </Canvas>

View file

@ -28,12 +28,22 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
mc:Ignorable="d" d:DesignHeight="600" d:DesignWidth="450" SnapsToDevicePixels="True"> mc:Ignorable="d" d:DesignHeight="600" d:DesignWidth="450"
SnapsToDevicePixels="True">
<!-- Main Content --> <!-- Main Content -->
<Grid x:Name="LayoutRoot" SnapsToDevicePixels="True"> <Grid x:Name="LayoutRoot" SnapsToDevicePixels="True">
<StackPanel VerticalAlignment="Top" HorizontalAlignment="Stretch" Margin="0,20,0,0" SnapsToDevicePixels="True"> <Grid.RowDefinitions>
<!-- Logo --> <RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<!-- Logo -->
<StackPanel Grid.Row="0" Margin="0">
<Image Source="../Assets/steam.png" Width="150" Margin="0" /> <Image Source="../Assets/steam.png" Width="150" Margin="0" />
<Label Content="Steamless" FontSize="32" FontWeight="Bold" HorizontalAlignment="Center" Margin="0" Padding="0" SnapsToDevicePixels="True" RenderOptions.EdgeMode="Aliased"> <Label Content="Steamless" FontSize="32" FontWeight="Bold" HorizontalAlignment="Center" Margin="0" Padding="0" SnapsToDevicePixels="True" RenderOptions.EdgeMode="Aliased">
<Label.Foreground> <Label.Foreground>
@ -47,126 +57,221 @@
</Label.Effect> </Label.Effect>
</Label> </Label>
<TextBlock Foreground="#F7F7F7" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding MainWindow.SteamlessVersion, Source={StaticResource ViewModelLocator}, FallbackValue='0.0.0.0', StringFormat={}Version: {0}}" /> <TextBlock Foreground="#F7F7F7" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding MainWindow.SteamlessVersion, Source={StaticResource ViewModelLocator}, FallbackValue='0.0.0.0', StringFormat={}Version: {0}}" />
</StackPanel>
<!-- Project Links --> <!-- Project Links -->
<Border Margin="0,15,0,0" Background="#80000000" BorderBrush="#40595959" BorderThickness="0,1,0,1" ClipToBounds="True"> <Border Grid.Row="1" Margin="0,15,0,0" Background="#80000000" BorderBrush="#40595959" BorderThickness="0,1,0,1" ClipToBounds="True">
<Border Background="Transparent" BorderBrush="#40595959" BorderThickness="0,10,0,0" Margin="0,-11,0,2"> <Border Background="Transparent" BorderBrush="#40595959" BorderThickness="0,10,0,0" Margin="0,-11,0,2">
<Border.Effect> <Border.Effect>
<DropShadowEffect ShadowDepth="0" BlurRadius="10"/> <DropShadowEffect ShadowDepth="0" BlurRadius="10"/>
</Border.Effect> </Border.Effect>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center"> <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Label Margin="2"> <Label Margin="2">
<Label.Style> <Label.Style>
<Style TargetType="Label"> <Style TargetType="Label">
<Style.Triggers> <Style.Triggers>
<Trigger Property="IsMouseOver" Value="True"> <Trigger Property="IsMouseOver" Value="True">
<Setter Property="Cursor" Value="Hand" /> <Setter Property="Cursor" Value="Hand" />
<Setter Property="Background" Value="#0F000000" /> <Setter Property="Background" Value="#0F000000" />
</Trigger> </Trigger>
</Style.Triggers> </Style.Triggers>
</Style> </Style>
</Label.Style> </Label.Style>
<Hyperlink NavigateUri="http://atom0s.com/" Foreground="#c0dd65">Homepage <Hyperlink NavigateUri="https://atom0s.com/" Foreground="#c0dd65">Homepage
<Hyperlink.TextDecorations> <Hyperlink.TextDecorations>
<TextDecorationCollection> <TextDecorationCollection>
<TextDecoration PenThicknessUnit="FontRecommended" PenOffset="3"> <TextDecoration PenThicknessUnit="FontRecommended" PenOffset="3">
<TextDecoration.Pen> <TextDecoration.Pen>
<Pen Thickness="2" Brush="#88A825"> <Pen Thickness="2" Brush="#88A825">
<Pen.DashStyle> <Pen.DashStyle>
<DashStyle Dashes="2"/> <DashStyle Dashes="2"/>
</Pen.DashStyle> </Pen.DashStyle>
</Pen> </Pen>
</TextDecoration.Pen> </TextDecoration.Pen>
</TextDecoration> </TextDecoration>
</TextDecorationCollection> </TextDecorationCollection>
</Hyperlink.TextDecorations> </Hyperlink.TextDecorations>
<i:Interaction.Triggers> <i:Interaction.Triggers>
<i:EventTrigger EventName="RequestNavigate"> <i:EventTrigger EventName="RequestNavigate">
<i:InvokeCommandAction Command="{Binding Path=MainWindow.OnOpenHyperlinkCommand, Source={StaticResource ViewModelLocator}}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Hyperlink}}}" /> <i:InvokeCommandAction Command="{Binding Path=MainWindow.OnOpenHyperlinkCommand, Source={StaticResource ViewModelLocator}}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Hyperlink}}}" />
</i:EventTrigger> </i:EventTrigger>
</i:Interaction.Triggers> </i:Interaction.Triggers>
</Hyperlink> </Hyperlink>
</Label> </Label>
<BulletDecorator HorizontalAlignment="Center" VerticalAlignment="Center"> <BulletDecorator HorizontalAlignment="Center" VerticalAlignment="Center">
<BulletDecorator.Bullet> <BulletDecorator.Bullet>
<Ellipse Height="3" Width="3" Fill="White" Margin="2" /> <Ellipse Height="3" Width="3" Fill="White" Margin="2" />
</BulletDecorator.Bullet> </BulletDecorator.Bullet>
</BulletDecorator> </BulletDecorator>
<Label Margin="2"> <Label Margin="2">
<Label.Style> <Label.Style>
<Style TargetType="Label"> <Style TargetType="Label">
<Style.Triggers> <Style.Triggers>
<Trigger Property="IsMouseOver" Value="True"> <Trigger Property="IsMouseOver" Value="True">
<Setter Property="Cursor" Value="Hand" /> <Setter Property="Cursor" Value="Hand" />
<Setter Property="Background" Value="#0F000000" /> <Setter Property="Background" Value="#0F000000" />
</Trigger> </Trigger>
</Style.Triggers> </Style.Triggers>
</Style> </Style>
</Label.Style> </Label.Style>
<Hyperlink NavigateUri="http://atom0s.com/forums/" Foreground="#c0dd65">Forums <Hyperlink NavigateUri="https://twitter.com/atom0s" Foreground="#c0dd65">Twitter
<Hyperlink.TextDecorations> <Hyperlink.TextDecorations>
<TextDecorationCollection> <TextDecorationCollection>
<TextDecoration PenThicknessUnit="FontRecommended" PenOffset="3"> <TextDecoration PenThicknessUnit="FontRecommended" PenOffset="3">
<TextDecoration.Pen> <TextDecoration.Pen>
<Pen Thickness="2" Brush="#88A825"> <Pen Thickness="2" Brush="#88A825">
<Pen.DashStyle> <Pen.DashStyle>
<DashStyle Dashes="2"/> <DashStyle Dashes="2"/>
</Pen.DashStyle> </Pen.DashStyle>
</Pen> </Pen>
</TextDecoration.Pen> </TextDecoration.Pen>
</TextDecoration> </TextDecoration>
</TextDecorationCollection> </TextDecorationCollection>
</Hyperlink.TextDecorations> </Hyperlink.TextDecorations>
<i:Interaction.Triggers> <i:Interaction.Triggers>
<i:EventTrigger EventName="RequestNavigate"> <i:EventTrigger EventName="RequestNavigate">
<i:InvokeCommandAction Command="{Binding Path=MainWindow.OnOpenHyperlinkCommand, Source={StaticResource ViewModelLocator}}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Hyperlink}}}" /> <i:InvokeCommandAction Command="{Binding Path=MainWindow.OnOpenHyperlinkCommand, Source={StaticResource ViewModelLocator}}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Hyperlink}}}" />
</i:EventTrigger> </i:EventTrigger>
</i:Interaction.Triggers> </i:Interaction.Triggers>
</Hyperlink> </Hyperlink>
</Label> </Label>
<BulletDecorator HorizontalAlignment="Center" VerticalAlignment="Center"> <BulletDecorator HorizontalAlignment="Center" VerticalAlignment="Center">
<BulletDecorator.Bullet> <BulletDecorator.Bullet>
<Ellipse Height="3" Width="3" Fill="White" Margin="2" /> <Ellipse Height="3" Width="3" Fill="White" Margin="2" />
</BulletDecorator.Bullet> </BulletDecorator.Bullet>
</BulletDecorator> </BulletDecorator>
<Label Margin="2"> <Label Margin="2">
<Label.Style> <Label.Style>
<Style TargetType="Label"> <Style TargetType="Label">
<Style.Triggers> <Style.Triggers>
<Trigger Property="IsMouseOver" Value="True"> <Trigger Property="IsMouseOver" Value="True">
<Setter Property="Cursor" Value="Hand" /> <Setter Property="Cursor" Value="Hand" />
<Setter Property="Background" Value="#0F000000" /> <Setter Property="Background" Value="#0F000000" />
</Trigger> </Trigger>
</Style.Triggers> </Style.Triggers>
</Style> </Style>
</Label.Style> </Label.Style>
<Hyperlink NavigateUri="http://git.atom0s.com/" Foreground="#c0dd65">Repositories <Hyperlink NavigateUri="https://github.com/atom0s/Steamless" Foreground="#c0dd65">GitHub Repository
<Hyperlink.TextDecorations> <Hyperlink.TextDecorations>
<TextDecorationCollection> <TextDecorationCollection>
<TextDecoration PenThicknessUnit="FontRecommended" PenOffset="3"> <TextDecoration PenThicknessUnit="FontRecommended" PenOffset="3">
<TextDecoration.Pen> <TextDecoration.Pen>
<Pen Thickness="2" Brush="#88A825"> <Pen Thickness="2" Brush="#88A825">
<Pen.DashStyle> <Pen.DashStyle>
<DashStyle Dashes="2"/> <DashStyle Dashes="2"/>
</Pen.DashStyle> </Pen.DashStyle>
</Pen> </Pen>
</TextDecoration.Pen> </TextDecoration.Pen>
</TextDecoration> </TextDecoration>
</TextDecorationCollection> </TextDecorationCollection>
</Hyperlink.TextDecorations> </Hyperlink.TextDecorations>
<i:Interaction.Triggers> <i:Interaction.Triggers>
<i:EventTrigger EventName="RequestNavigate"> <i:EventTrigger EventName="RequestNavigate">
<i:InvokeCommandAction Command="{Binding Path=MainWindow.OnOpenHyperlinkCommand, Source={StaticResource ViewModelLocator}}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Hyperlink}}}" /> <i:InvokeCommandAction Command="{Binding Path=MainWindow.OnOpenHyperlinkCommand, Source={StaticResource ViewModelLocator}}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Hyperlink}}}" />
</i:EventTrigger> </i:EventTrigger>
</i:Interaction.Triggers> </i:Interaction.Triggers>
</Hyperlink> </Hyperlink>
</Label> </Label>
</StackPanel> </StackPanel>
</Border>
</Border> </Border>
</Border>
<!-- Credits --> <!-- Donation Info -->
<StackPanel HorizontalAlignment="Center" Margin="0,10,0,0"> <StackPanel Grid.Row="2" HorizontalAlignment="Center" Margin="0,0,0,0">
<StackPanel.Resources>
<Style x:Key="StackPanelLabelCenter" TargetType="{x:Type Label}">
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="Padding" Value="1" />
</Style>
<Style BasedOn="{StaticResource StackPanelLabelCenter}" TargetType="{x:Type Label}" />
</StackPanel.Resources>
<Label Content="Donations" FontSize="18" FontWeight="Bold" Margin="0" Padding="0" />
<StackPanel Orientation="Horizontal">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Label ToolTip="Donate via Paypal" Width="18" Height="18" Background="#0689c1" Margin="1" HorizontalAlignment="Center" VerticalAlignment="Center">
<Label.OpacityMask>
<VisualBrush Visual="{StaticResource appbar_paypal}" />
</Label.OpacityMask>
<Hyperlink NavigateUri="https://www.paypal.me/atom0s" Foreground="Transparent" FontSize="24">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
<i:Interaction.Triggers>
<i:EventTrigger EventName="RequestNavigate">
<i:InvokeCommandAction Command="{Binding Path=MainWindow.OnOpenHyperlinkCommand, Source={StaticResource ViewModelLocator}}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Hyperlink}}}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Hyperlink>
</Label>
<Label ToolTip="Donate via Paypal" Margin="1" HorizontalAlignment="Center" VerticalAlignment="Center">
<Hyperlink NavigateUri="https://www.paypal.me/atom0s" Foreground="#c0dd65" >Donate via Paypal
<i:Interaction.Triggers>
<i:EventTrigger EventName="RequestNavigate">
<i:InvokeCommandAction Command="{Binding Path=MainWindow.OnOpenHyperlinkCommand, Source={StaticResource ViewModelLocator}}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Hyperlink}}}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Hyperlink>
</Label>
</StackPanel>
<BulletDecorator HorizontalAlignment="Center" VerticalAlignment="Center">
<BulletDecorator.Bullet>
<Ellipse Height="3" Width="3" Fill="White" Margin="5" />
</BulletDecorator.Bullet>
</BulletDecorator>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Label ToolTip="Sponsor via GitHub" Width="18" Height="18" Background="#FFFFFF" Margin="1" HorizontalAlignment="Center" VerticalAlignment="Center">
<Label.OpacityMask>
<VisualBrush Visual="{StaticResource appbar_github}" />
</Label.OpacityMask>
<Hyperlink NavigateUri="https://github.com/sponsors/atom0s" Foreground="Transparent" FontSize="24">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
<i:Interaction.Triggers>
<i:EventTrigger EventName="RequestNavigate">
<i:InvokeCommandAction Command="{Binding Path=MainWindow.OnOpenHyperlinkCommand, Source={StaticResource ViewModelLocator}}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Hyperlink}}}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Hyperlink>
</Label>
<Label ToolTip="Sponsor via GitHub" Margin="1" HorizontalAlignment="Center" VerticalAlignment="Center">
<Hyperlink NavigateUri="https://github.com/sponsors/atom0s" Foreground="#c0dd65" >Sponsor via GitHub
<i:Interaction.Triggers>
<i:EventTrigger EventName="RequestNavigate">
<i:InvokeCommandAction Command="{Binding Path=MainWindow.OnOpenHyperlinkCommand, Source={StaticResource ViewModelLocator}}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Hyperlink}}}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Hyperlink>
</Label>
</StackPanel>
<BulletDecorator HorizontalAlignment="Center" VerticalAlignment="Center">
<BulletDecorator.Bullet>
<Ellipse Height="3" Width="3" Fill="White" Margin="5" />
</BulletDecorator.Bullet>
</BulletDecorator>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Label ToolTip="Sponsor via Patreon" Width="18" Height="18" Background="#FF424D" Margin="1" HorizontalAlignment="Center" VerticalAlignment="Center">
<Label.OpacityMask>
<VisualBrush Visual="{StaticResource appbar_patreon}" />
</Label.OpacityMask>
<Hyperlink NavigateUri="https://www.patreon.com/atom0s" Foreground="Transparent" FontSize="24">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
<i:Interaction.Triggers>
<i:EventTrigger EventName="RequestNavigate">
<i:InvokeCommandAction Command="{Binding Path=MainWindow.OnOpenHyperlinkCommand, Source={StaticResource ViewModelLocator}}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Hyperlink}}}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Hyperlink>
</Label>
<Label ToolTip="Sponsor via Patreon" Margin="1" HorizontalAlignment="Center" VerticalAlignment="Center">
<Hyperlink NavigateUri="https://www.patreon.com/atom0s" Foreground="#c0dd65" >Sponsor via Patreon
<i:Interaction.Triggers>
<i:EventTrigger EventName="RequestNavigate">
<i:InvokeCommandAction Command="{Binding Path=MainWindow.OnOpenHyperlinkCommand, Source={StaticResource ViewModelLocator}}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Hyperlink}}}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Hyperlink>
</Label>
</StackPanel>
</StackPanel>
</StackPanel>
<!-- Credits -->
<StackPanel Grid.Row="3" Margin="0">
<StackPanel HorizontalAlignment="Center" Margin="0,0,0,0">
<StackPanel.Resources> <StackPanel.Resources>
<Style x:Key="StackPanelLabelCenter" TargetType="{x:Type Label}"> <Style x:Key="StackPanelLabelCenter" TargetType="{x:Type Label}">
<Setter Property="HorizontalAlignment" Value="Center" /> <Setter Property="HorizontalAlignment" Value="Center" />
@ -191,97 +296,45 @@
<Label Content="Mahapps.Metro &amp; Newtonsoft Json" /> <Label Content="Mahapps.Metro &amp; Newtonsoft Json" />
<Label Content="Oren Nachman, Massimo Savazzi, Templarian - XAML Icons" /> <Label Content="Oren Nachman, Massimo Savazzi, Templarian - XAML Icons" />
</StackPanel> </StackPanel>
</StackPanel>
<!-- Donation Info --> <!-- Important Information, Legal, Notes -->
<Border BorderThickness="0,0,0,1.5" Margin="5" Padding="0"> <Border Grid.Row="4" BorderBrush="#595959" BorderThickness="1" Margin="5">
<Border.BorderBrush> <Border.Background>
<LinearGradientBrush StartPoint="0,1" EndPoint="1,0" Opacity="0.7"> <LinearGradientBrush StartPoint=".5,0" EndPoint=".5,1" RenderOptions.EdgeMode="Aliased">
<GradientStop Offset="0.2" Color="#00000000"/> <GradientStop Color="#252525" Offset="0" RenderOptions.EdgeMode="Aliased" />
<GradientStop Offset="0.5" Color="White"/> <GradientStop Color="#161616" Offset="0.9" RenderOptions.EdgeMode="Aliased" />
<GradientStop Offset="0.8" Color="#00000000"/> </LinearGradientBrush>
</LinearGradientBrush> </Border.Background>
</Border.BorderBrush> <ScrollViewer Margin="1" BorderBrush="Transparent" BorderThickness="1" VerticalAlignment="Stretch">
</Border> <StackPanel>
<StackPanel HorizontalAlignment="Center" Margin="0,0,0,0"> <StackPanel.Resources>
<StackPanel.Resources> <Style x:Key="LegalInformationLabelHeader" TargetType="{x:Type Label}">
<Style x:Key="StackPanelLabelCenter" TargetType="{x:Type Label}"> <Setter Property="FontSize" Value="18" />
<Setter Property="HorizontalAlignment" Value="Center" /> <Setter Property="FontWeight" Value="Bold" />
<Setter Property="Padding" Value="1" /> <Setter Property="Foreground" Value="#FFA8A8A8" />
</Style> <Setter Property="HorizontalAlignment" Value="Left" />
<Style BasedOn="{StaticResource StackPanelLabelCenter}" TargetType="{x:Type Label}" /> </Style>
</StackPanel.Resources> <Style x:Key="LegalInformationTextBlock" TargetType="{x:Type TextBlock}">
<Label Content="Donations" FontSize="18" FontWeight="Bold" Margin="0" Padding="0" /> <Setter Property="Foreground" Value="#E0FFFFFF" />
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center"> <Setter Property="HorizontalAlignment" Value="Left" />
<Label ToolTip="Donate via Paypal" Width="24" Height="24" Background="#0689c1" Margin="1" HorizontalAlignment="Center" VerticalAlignment="Center"> <Setter Property="Margin" Value="10,0,10,10" />
<Label.OpacityMask> <Setter Property="TextWrapping" Value="Wrap" />
<VisualBrush Visual="{StaticResource appbar_paypal}" /> </Style>
</Label.OpacityMask> <Style BasedOn="{StaticResource LegalInformationTextBlock}" TargetType="{x:Type TextBlock}" />
<Hyperlink NavigateUri="https://www.paypal.me/atom0s" Foreground="Transparent" FontSize="24">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </StackPanel.Resources>
<i:Interaction.Triggers>
<i:EventTrigger EventName="RequestNavigate">
<i:InvokeCommandAction Command="{Binding Path=MainWindow.OnOpenHyperlinkCommand, Source={StaticResource ViewModelLocator}}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Hyperlink}}}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Hyperlink>
</Label>
<Label ToolTip="Donate via Paypal" Margin="1" HorizontalAlignment="Center" VerticalAlignment="Center">
<Hyperlink NavigateUri="https://www.paypal.me/atom0s" Foreground="#c0dd65" >Donate via Paypal
<i:Interaction.Triggers>
<i:EventTrigger EventName="RequestNavigate">
<i:InvokeCommandAction Command="{Binding Path=MainWindow.OnOpenHyperlinkCommand, Source={StaticResource ViewModelLocator}}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Hyperlink}}}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Hyperlink>
</Label>
</StackPanel>
<Border BorderThickness="0,0,0,1.5" Margin="5" Padding="0">
<Border.BorderBrush>
<LinearGradientBrush StartPoint="0,1" EndPoint="1,0" Opacity="0.7">
<GradientStop Offset="0.2" Color="#00000000"/>
<GradientStop Offset="0.5" Color="White"/>
<GradientStop Offset="0.8" Color="#00000000"/>
</LinearGradientBrush>
</Border.BorderBrush>
</Border>
</StackPanel>
<!-- Important Information, Legal, Notes --> <!-- Donation Information -->
<Border BorderBrush="#595959" BorderThickness="1" Margin="5"> <Label Content="Donations" Style="{StaticResource LegalInformationLabelHeader}" />
<Border.Background> <TextBlock>
<LinearGradientBrush StartPoint=".5,0" EndPoint=".5,1" RenderOptions.EdgeMode="Aliased">
<GradientStop Color="#252525" Offset="0" RenderOptions.EdgeMode="Aliased" />
<GradientStop Color="#161616" Offset="0.9" RenderOptions.EdgeMode="Aliased" />
</LinearGradientBrush>
</Border.Background>
<ScrollViewer Margin="1" BorderBrush="Transparent" BorderThickness="1" Height="125">
<StackPanel>
<StackPanel.Resources>
<Style x:Key="LegalInformationLabelHeader" TargetType="{x:Type Label}">
<Setter Property="FontSize" Value="18" />
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="Foreground" Value="#FFA8A8A8" />
<Setter Property="HorizontalAlignment" Value="Left" />
</Style>
<Style x:Key="LegalInformationTextBlock" TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="#E0FFFFFF" />
<Setter Property="HorizontalAlignment" Value="Left" />
<Setter Property="Margin" Value="10,0,10,10" />
<Setter Property="TextWrapping" Value="Wrap" />
</Style>
<Style BasedOn="{StaticResource LegalInformationTextBlock}" TargetType="{x:Type TextBlock}" />
</StackPanel.Resources>
<!-- Donation Information -->
<Label Content="Donations" Style="{StaticResource LegalInformationLabelHeader}" />
<TextBlock>
Steamless is provided, as-is, for free. Donations are a way for users to show their support for my work. Steamless is provided, as-is, for free. Donations are a way for users to show their support for my work.
I do not accept donations in the attempt to assist with pirating games or other illegal activities. Do I do not accept donations in the attempt to assist with pirating games or other illegal activities. Do
not contact me attempting to get help with pirating a game or any other illegal activity, I will not respond. not contact me attempting to get help with pirating a game or any other illegal activity, I will not respond.
</TextBlock> </TextBlock>
<!-- Legal Information --> <!-- Legal Information -->
<Label Content="Legal Information / Warranty" Style="{StaticResource LegalInformationLabelHeader}" /> <Label Content="Legal Information / Warranty" Style="{StaticResource LegalInformationLabelHeader}" />
<TextBlock> <TextBlock>
Steamless is released under the following license: Steamless is released under the following license:
<LineBreak /> <LineBreak />
Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International
@ -303,14 +356,13 @@
<LineBreak /> <LineBreak />
All work is original and done for educational purposes. All work is original and done for educational purposes.
<LineBreak /><LineBreak /> <LineBreak /><LineBreak />
Steam © 2003 - 2020 Valve Corporation. All rights reserved. Steam © 2003 - 2022 Valve Corporation. All rights reserved.
</TextBlock> </TextBlock>
</StackPanel> </StackPanel>
</ScrollViewer> </ScrollViewer>
</Border> </Border>
<!-- Close Button --> <!-- Close Button -->
<Button Content="Close" Width="125" Margin="2,2,2,12" HorizontalAlignment="Center" VerticalAlignment="Center" Command="{Binding MainWindow.OnShowAboutViewCommand, Source={StaticResource ViewModelLocator}}" /> <Button Grid.Row="5" Content="Close" Width="125" Margin="4" HorizontalAlignment="Center" VerticalAlignment="Center" Command="{Binding MainWindow.OnShowAboutViewCommand, Source={StaticResource ViewModelLocator}}" />
</StackPanel>
</Grid> </Grid>
</UserControl> </UserControl>