Inital Commit

This commit is contained in:
Li 2024-01-03 16:39:27 +13:00
parent 68db65b06c
commit 3ad0ec4cbb
90 changed files with 84066 additions and 2 deletions

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
.vs/*
GayMaker-PS3/bin/*
GayMaker-PS3/obj/*

37
GayMaker-PS3.sln Normal file
View File

@ -0,0 +1,37 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.8.34330.188
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GayMaker-PS3", "GayMaker-PS3\GayMaker-PS3.csproj", "{A574F9F8-D3B2-4EF6-80DE-5D546C43B57D}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{A574F9F8-D3B2-4EF6-80DE-5D546C43B57D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A574F9F8-D3B2-4EF6-80DE-5D546C43B57D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A574F9F8-D3B2-4EF6-80DE-5D546C43B57D}.Debug|x64.ActiveCfg = Debug|Any CPU
{A574F9F8-D3B2-4EF6-80DE-5D546C43B57D}.Debug|x64.Build.0 = Debug|Any CPU
{A574F9F8-D3B2-4EF6-80DE-5D546C43B57D}.Debug|x86.ActiveCfg = Debug|Any CPU
{A574F9F8-D3B2-4EF6-80DE-5D546C43B57D}.Debug|x86.Build.0 = Debug|Any CPU
{A574F9F8-D3B2-4EF6-80DE-5D546C43B57D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A574F9F8-D3B2-4EF6-80DE-5D546C43B57D}.Release|Any CPU.Build.0 = Release|Any CPU
{A574F9F8-D3B2-4EF6-80DE-5D546C43B57D}.Release|x64.ActiveCfg = Release|Any CPU
{A574F9F8-D3B2-4EF6-80DE-5D546C43B57D}.Release|x64.Build.0 = Release|Any CPU
{A574F9F8-D3B2-4EF6-80DE-5D546C43B57D}.Release|x86.ActiveCfg = Release|Any CPU
{A574F9F8-D3B2-4EF6-80DE-5D546C43B57D}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {F5C9BDFB-D36B-4937-80EF-77A22E065856}
EndGlobalSection
EndGlobal

File diff suppressed because one or more lines are too long

186
GayMaker-PS3/CDN.cs Normal file
View File

@ -0,0 +1,186 @@
using HtmlAgilityPack;
using Org.BouncyCastle.Crypto.Digests;
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Net.Cache;
using System.Text;
using System.Windows.Forms;
namespace GMTools
{
class CDNUrls
{
//GMS14
public const String GMS14 = "http://store.yoyogames.com/downloads/gm-studio/update-studio.rss";
public const String GMS14EA = "https://pastebin.com/raw/XN4gPX4u";
//GMS2
public const String GMS2 = "http://gms.yoyogames.com/Zeus-Runtime.rss";
public const String GMS2Beta = "http://gms.yoyogames.com/Zeus-Runtime-Beta.rss";
public static String FromIndex(int cdnIndex)
{
switch (cdnIndex)
{
case 1:
return CDNUrls.GMS14;
case 2:
return CDNUrls.GMS14EA;
case 3:
return CDNUrls.GMS2;
case 4:
return CDNUrls.GMS2Beta;
}
return "NF";
}
}
class CDN
{
private static string xmlData = "";
private static string bypassAuthentication(string url)
{
if (url.StartsWith("https://updater.yoyogames.com") && !url.Contains("original"))
{
return "http://updatecdn.yoyogames.com/" + Path.GetFileName(url);
}
else
{
return url;
}
}
private static string getOriginalUrl(string version)
{
if (version.StartsWith("1."))
{
return "https://updater.yoyogames.com/api/download/original?filename=Original-" + version + ".zip";
}
else if(version.StartsWith("2."))
{
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(xmlData);
var versions = doc.DocumentNode.SelectNodes("/rss/channel/item/enclosure");
foreach (HtmlNode ver in versions)
{
string verName = ver.GetAttributeValue("sparkle:version", "0.0.0.0");
if (verName == version)
{
return ver.GetAttributeValue("url", "http://example.com/").ToString();
}
}
}
return "NF";
}
public static void UseCDN(String CDN)
{
try
{
WebClient wc = new WebClient();
wc.CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore);
xmlData = wc.DownloadString(CDN);
}
catch (Exception)
{
MessageBox.Show("Could not connect to: " + CDN, "Connection Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
public static String GetModuleForVersion(String Version, String Module)
{
Module = Module.ToLower();
if (Module == "original")
return getOriginalUrl(Version);
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(xmlData);
var versions = doc.DocumentNode.SelectNodes("/rss/channel/item/enclosure");
foreach (HtmlNode version in versions)
{
string verName = version.GetAttributeValue("sparkle:version", "0.0.0.0");
if (verName == Version)
{
var modules = version.Elements("module");
foreach (var module in modules)
{
string moduleName = module.GetAttributeValue("name", "Original").ToLower();
string moduleUrl = module.GetAttributeValue("url", "http://127.0.0.1");
if (moduleName == Module)
{
return bypassAuthentication(moduleUrl);
}
}
}
}
return "NF"; // Not Found
}
public static String[] GetVersions(String Filter = "")
{
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(xmlData);
var versions = doc.DocumentNode.SelectNodes("/rss/channel/item/enclosure");
List<string> verList = new List<string>();
foreach (HtmlNode version in versions)
{
string versionName = version.GetAttributeValue("sparkle:version", "0.0.0.0");
if (Filter == "")
{
verList.Add(versionName);
}
else
{
if(GetModuleForVersion(versionName,Filter) != "NF")
{
verList.Add(versionName);
}
}
}
return verList.ToArray();
}
public static String GetPassword(String ZipName)
{
if (ZipName.ToLower().StartsWith("original") || ZipName.ToLower().StartsWith("gmstudio"))
{
return "12#_p@o3w$ir_ADD-_$#";
}
MD5Digest md5Digest = new MD5Digest();
byte[] array = new byte[16];
byte[] bytes = Encoding.UTF8.GetBytes("MRJA" + Path.GetFileName(ZipName) + "PHMD");
md5Digest.Reset();
md5Digest.BlockUpdate(bytes, 0, bytes.Length);
md5Digest.Finish();
md5Digest.DoFinal(array, 0);
string password = Convert.ToBase64String(array);
return password;
}
}
}

View File

@ -0,0 +1,77 @@
namespace GayMaker_PS3
{
partial class DownloadingUpdate
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.DownloadProgress = new System.Windows.Forms.ProgressBar();
this.label1 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// DownloadProgress
//
this.DownloadProgress.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.DownloadProgress.Location = new System.Drawing.Point(15, 44);
this.DownloadProgress.Name = "DownloadProgress";
this.DownloadProgress.Size = new System.Drawing.Size(419, 23);
this.DownloadProgress.TabIndex = 0;
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(12, 9);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(94, 13);
this.label1.TabIndex = 1;
this.label1.Text = "Starting Download";
//
// DownloadingUpdate
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(443, 95);
this.ControlBox = false;
this.Controls.Add(this.label1);
this.Controls.Add(this.DownloadProgress);
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "DownloadingUpdate";
this.ShowIcon = false;
this.ShowInTaskbar = false;
this.Text = "Downloading Update";
this.Load += new System.EventHandler(this.DownloadingUpdate_Load);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.ProgressBar DownloadProgress;
private System.Windows.Forms.Label label1;
}
}

View File

@ -0,0 +1,82 @@
using System;
using System.ComponentModel;
using System.Drawing;
using System.IO;
using System.IO.Compression;
using System.Net;
using System.Net.Cache;
using System.Reflection;
using System.Windows.Forms;
namespace GayMaker_PS3
{
public partial class DownloadingUpdate : Form
{
public DownloadingUpdate()
{
//Bypass Windows DPI Scaling
Font = new Font(Font.Name, 8.25f * 96f / CreateGraphics().DpiX, Font.Style, Font.Unit, Font.GdiCharSet, Font.GdiVerticalFont);
InitializeComponent();
}
private void startDownload()
{
WebClient wc = new WebClient();
wc.CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore);
String UpdateString = wc.DownloadString("https://bitbucket.org/SilicaAndPina/gaymaker-studio/raw/master/latest.md");
String[] Data = UpdateString.Split('~');
String UpdateUrl = Data[1];
wc.Dispose();
WebClient client = new WebClient();
client.Headers.Add("pragma", "no-cache");
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
client.DownloadFileCompleted += new AsyncCompletedEventHandler(client_DownloadFileCompleted);
client.DownloadFileAsync(new Uri(UpdateUrl), "upgrade.zip");
}
private void client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{
label1.Text = "Extracting...";
Application.DoEvents();
String EXEPath = Assembly.GetExecutingAssembly().Location;
File.Move(EXEPath, Path.ChangeExtension(EXEPath, ".old"));
ZipArchive archive = new ZipArchive(File.OpenRead("upgrade.zip"));
foreach (ZipArchiveEntry file in archive.Entries)
{
if (File.Exists(file.FullName))
{
File.Delete(file.FullName);
}
}
archive.Dispose();
ZipFile.ExtractToDirectory("upgrade.zip", Path.GetDirectoryName(EXEPath));
File.Delete("upgrade.zip");
Application.Restart();
}
private void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
DownloadProgress.Value = e.ProgressPercentage;
label1.Text = "Downloading: " + e.ProgressPercentage + "%";
}
private void DownloadingUpdate_Load(object sender, EventArgs e)
{
startDownload();
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

66
GayMaker-PS3/GMAC.cs Normal file
View File

@ -0,0 +1,66 @@
using System;
using System.Runtime.InteropServices;
namespace GayMaker_PS3
{
class GMAC
{
public enum FileMapProtection : uint
{
PageReadonly = 0x02,
PageReadWrite = 0x04,
PageWriteCopy = 0x08,
PageExecuteRead = 0x20,
PageExecuteReadWrite = 0x40,
SectionCommit = 0x8000000,
SectionImage = 0x1000000,
SectionNoCache = 0x10000000,
SectionReserve = 0x4000000,
}
public enum FileMapAccess : uint
{
FileMapCopy = 0x0001,
FileMapWrite = 0x0002,
FileMapRead = 0x0004,
FileMapReadWrite = 0x0006,
FileMapAllAccess = 0x001f,
FileMapExecute = 0x0020,
}
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern IntPtr CreateFileMapping(
IntPtr hFile,
IntPtr lpFileMappingAttributes,
FileMapProtection flProtect,
uint dwMaximumSizeHigh,
uint dwMaximumSizeLow,
string lpName
);
[DllImport("kernel32", SetLastError = true)]
public static extern IntPtr MapViewOfFile(IntPtr intptr_0, FileMapAccess dwDesiredAccess, int int_5, int int_6, IntPtr intptr_1);
[DllImport("kernel32", CharSet = CharSet.Auto, SetLastError = true)]
public static extern IntPtr OpenFileMapping(
FileMapAccess dwDesiredAccess,
bool bInheritHandle,
string lpName
);
[DllImport("kernel32", SetLastError = true)]
public static extern bool CloseHandle(IntPtr intptr_0);
public static void GetPermissionToExecute()
{
IntPtr Create = CreateFileMapping(new IntPtr(-1), IntPtr.Zero, FileMapProtection.PageReadWrite, 0x0, 0x1000, "YYMappingFileTestYY");
IntPtr DaFile = OpenFileMapping(FileMapAccess.FileMapWrite, false, "YYMappingFileTestYY");
IntPtr MapView = MapViewOfFile(DaFile, FileMapAccess.FileMapWrite, 0, 0, new IntPtr(4));
Marshal.WriteInt32(MapView, (int)(DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds);
CloseHandle(DaFile);
}
}
}

178
GayMaker-PS3/GameSettings.Designer.cs generated Normal file
View File

@ -0,0 +1,178 @@
namespace GayMaker_PS3
{
partial class GameSettings
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(GameSettings));
this.label1 = new System.Windows.Forms.Label();
this.panel1 = new System.Windows.Forms.Panel();
this.TexturePageSize = new System.Windows.Forms.ComboBox();
this.label3 = new System.Windows.Forms.Label();
this.Interporlate = new System.Windows.Forms.CheckBox();
this.FullScale = new System.Windows.Forms.RadioButton();
this.KeepAspect = new System.Windows.Forms.RadioButton();
this.label2 = new System.Windows.Forms.Label();
this.Save = new System.Windows.Forms.Button();
this.panel1.SuspendLayout();
this.SuspendLayout();
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(12, 9);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(112, 13);
this.label1.TabIndex = 0;
this.label1.Text = "Global Game Settings:";
//
// panel1
//
this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.panel1.Controls.Add(this.TexturePageSize);
this.panel1.Controls.Add(this.label3);
this.panel1.Controls.Add(this.Interporlate);
this.panel1.Controls.Add(this.FullScale);
this.panel1.Controls.Add(this.KeepAspect);
this.panel1.Controls.Add(this.label2);
this.panel1.Location = new System.Drawing.Point(12, 25);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(238, 150);
this.panel1.TabIndex = 1;
//
// TexturePageSize
//
this.TexturePageSize.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.TexturePageSize.FormattingEnabled = true;
this.TexturePageSize.Items.AddRange(new object[] {
"256",
"512",
"1024",
"2048",
"4096",
"8192",
"16384"});
this.TexturePageSize.Location = new System.Drawing.Point(6, 51);
this.TexturePageSize.Name = "TexturePageSize";
this.TexturePageSize.Size = new System.Drawing.Size(94, 21);
this.TexturePageSize.TabIndex = 6;
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(3, 35);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(97, 13);
this.label3.TabIndex = 5;
this.label3.Text = "Texture Page Size:";
//
// Interporlate
//
this.Interporlate.AutoSize = true;
this.Interporlate.Location = new System.Drawing.Point(3, 15);
this.Interporlate.Name = "Interporlate";
this.Interporlate.Size = new System.Drawing.Size(183, 17);
this.Interporlate.TabIndex = 3;
this.Interporlate.Text = "Interporlate colors between pixels";
this.Interporlate.UseVisualStyleBackColor = true;
//
// FullScale
//
this.FullScale.AutoSize = true;
this.FullScale.Location = new System.Drawing.Point(3, 120);
this.FullScale.Name = "FullScale";
this.FullScale.Size = new System.Drawing.Size(71, 17);
this.FullScale.TabIndex = 2;
this.FullScale.TabStop = true;
this.FullScale.Text = "Full Scale";
this.FullScale.UseVisualStyleBackColor = true;
//
// KeepAspect
//
this.KeepAspect.AutoSize = true;
this.KeepAspect.Location = new System.Drawing.Point(3, 97);
this.KeepAspect.Name = "KeepAspect";
this.KeepAspect.Size = new System.Drawing.Size(114, 17);
this.KeepAspect.TabIndex = 1;
this.KeepAspect.TabStop = true;
this.KeepAspect.Text = "Keep Aspect Ratio";
this.KeepAspect.UseVisualStyleBackColor = true;
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(3, 81);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(84, 13);
this.label2.TabIndex = 0;
this.label2.Text = "Scaling Options:";
//
// Save
//
this.Save.Location = new System.Drawing.Point(12, 181);
this.Save.Name = "Save";
this.Save.Size = new System.Drawing.Size(238, 23);
this.Save.TabIndex = 2;
this.Save.Text = "Save Changes";
this.Save.UseVisualStyleBackColor = true;
this.Save.Click += new System.EventHandler(this.Save_Click);
//
// GameSettings
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(262, 209);
this.Controls.Add(this.Save);
this.Controls.Add(this.panel1);
this.Controls.Add(this.label1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.Name = "GameSettings";
this.Text = "Global Game Settings";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.GameSettings_FormClosing);
this.Load += new System.EventHandler(this.GameSettings_Load);
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.ComboBox TexturePageSize;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.CheckBox Interporlate;
private System.Windows.Forms.RadioButton FullScale;
private System.Windows.Forms.RadioButton KeepAspect;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Button Save;
}
}

View File

@ -0,0 +1,125 @@
using System;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using System.Xml;
namespace GayMaker_PS3
{
public partial class GameSettings : Form
{
String ProjectPath;
XmlDocument DefaultConfig = new XmlDocument();
public GameSettings()
{
//Bypass Windows DPI Scaling
Font = new Font(Font.Name, 8.25f * 96f / CreateGraphics().DpiX, Font.Style, Font.Unit, Font.GdiCharSet, Font.GdiVerticalFont);
InitializeComponent();
}
private void GameSettings_Load(object sender, EventArgs e)
{
Program.GMS.Enabled = false;
ProjectPath = Path.GetDirectoryName(Program.GMS.GetProjectPath());
Console.WriteLine(ProjectPath);
DefaultConfig.Load(ProjectPath + "\\Configs\\Default.config.gmx");
XmlNode TP = DefaultConfig.GetElementsByTagName("option_ps3_texture_page")[0];
XmlNode IT = DefaultConfig.GetElementsByTagName("option_ps3_interpolate")[0];
XmlNode SC = DefaultConfig.GetElementsByTagName("option_ps3_scale")[0];
try
{
//If global game settings was never opened then its true/false for some reason
Interporlate.Checked = bool.Parse(IT.InnerText);
}
catch
{
//Otherwise its -1 / 0 (GM IS WEIRD)
if (int.Parse(IT.InnerText) == 0)
{
Interporlate.Checked = false;
}
else
{
Interporlate.Checked = true;
}
if (int.Parse(SC.InnerText) == 0)
{
FullScale.Checked = true;
KeepAspect.Checked = false;
}
else
{
FullScale.Checked = false;
KeepAspect.Checked = true;
}
};
TexturePageSize.Text = int.Parse(TP.InnerText).ToString();
}
private void Save_Click(object sender, EventArgs e)
{
try
{
if (Interporlate.Checked)
{
XmlNode IT = DefaultConfig.GetElementsByTagName("option_ps3_interpolate")[0];
IT.InnerText = "-1";
}
else
{
XmlNode IT = DefaultConfig.GetElementsByTagName("option_ps3_interpolate")[0];
IT.InnerText = "0";
}
if (KeepAspect.Checked)
{
XmlNode SC = DefaultConfig.GetElementsByTagName("option_ps3_scale")[0];
SC.InnerText = "-1";
}
else
{
XmlNode SC = DefaultConfig.GetElementsByTagName("option_ps3_scale")[0];
SC.InnerText = "0";
}
XmlNode TP = DefaultConfig.GetElementsByTagName("option_ps3_texture_page")[0];
TP.InnerText = TexturePageSize.Text;
XmlWriterSettings settings = new XmlWriterSettings { Indent = true, OmitXmlDeclaration = true };
XmlWriter writer = XmlWriter.Create(ProjectPath + "\\Configs\\Default.config.gmx", settings);
DefaultConfig.Save(writer);
writer.Close();
}
catch (Exception)
{
MessageBox.Show("There was an error while saving settings!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
Program.GMS.Enabled = true;
Close();
}
private void GameSettings_FormClosing(object sender, FormClosingEventArgs e)
{
Program.GMS.Enabled = true;
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,145 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{A574F9F8-D3B2-4EF6-80DE-5D546C43B57D}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>GayMaker_PS3</RootNamespace>
<AssemblyName>GayMaker-PS3</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<ApplicationManifest>app.manifest</ApplicationManifest>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>icon0.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup>
<StartupObject />
</PropertyGroup>
<ItemGroup>
<Reference Include="BouncyCastle.Crypto, Version=1.8.4.0, Culture=neutral, PublicKeyToken=0e99375e54769942">
<HintPath>..\packages\BouncyCastle.1.8.4\lib\BouncyCastle.Crypto.dll</HintPath>
</Reference>
<Reference Include="DotNetZip, Version=1.13.3.0, Culture=neutral, PublicKeyToken=6583c7c814667745, processorArchitecture=MSIL">
<HintPath>..\packages\DotNetZip.1.13.3\lib\net40\DotNetZip.dll</HintPath>
</Reference>
<Reference Include="HtmlAgilityPack, Version=1.9.2.0, Culture=neutral, PublicKeyToken=bd319b19eaf3b43a, processorArchitecture=MSIL">
<HintPath>..\packages\HtmlAgilityPack.1.9.2\lib\Net45\HtmlAgilityPack.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.IO.Compression" />
<Reference Include="System.IO.Compression.FileSystem" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="CDN.cs" />
<Compile Include="DownloadingUpdate.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="DownloadingUpdate.Designer.cs">
<DependentUpon>DownloadingUpdate.cs</DependentUpon>
</Compile>
<Compile Include="P3Tools.cs" />
<Compile Include="GameSettings.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="GameSettings.Designer.cs">
<DependentUpon>GameSettings.cs</DependentUpon>
</Compile>
<Compile Include="GayMakerPS3.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="GayMakerPS3.Designer.cs">
<DependentUpon>GayMakerPS3.cs</DependentUpon>
</Compile>
<Compile Include="GMAC.cs" />
<Compile Include="LiLib\MathUtil.cs" />
<Compile Include="LiLib\StreamUtil.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Sfo.cs" />
<Compile Include="VersionManager.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="VersionManager.Designer.cs">
<DependentUpon>VersionManager.cs</DependentUpon>
</Compile>
<EmbeddedResource Include="DownloadingUpdate.resx">
<DependentUpon>DownloadingUpdate.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GameSettings.resx">
<DependentUpon>GameSettings.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="GayMakerPS3.resx">
<DependentUpon>GayMakerPS3.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<EmbeddedResource Include="VersionManager.resx">
<DependentUpon>VersionManager.cs</DependentUpon>
</EmbeddedResource>
<None Include="app.config" />
<None Include="app.manifest" />
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<Content Include="icon0.ico" />
<None Include="Resources\PIC1.PNG" />
<None Include="Resources\folderIcon.png" />
<None Include="Resources\ps3Logo.png" />
<None Include="Resources\gameIcon.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

501
GayMaker-PS3/GayMakerPS3.Designer.cs generated Normal file
View File

@ -0,0 +1,501 @@
namespace GayMaker_PS3
{
partial class GayMakerPS3
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(GayMakerPS3));
this.xmbScreen = new System.Windows.Forms.RadioButton();
this.label1 = new System.Windows.Forms.Label();
this.GameSettings = new System.Windows.Forms.Panel();
this.label8 = new System.Windows.Forms.Label();
this.VersionSelect = new System.Windows.Forms.ComboBox();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.GlobalGameSettings = new System.Windows.Forms.Label();
this.label7 = new System.Windows.Forms.Label();
this.titleName = new System.Windows.Forms.TextBox();
this.label6 = new System.Windows.Forms.Label();
this.titleID = new System.Windows.Forms.TextBox();
this.label5 = new System.Windows.Forms.Label();
this.contentID = new System.Windows.Forms.TextBox();
this.browsePic = new System.Windows.Forms.Button();
this.picPath = new System.Windows.Forms.TextBox();
this.label4 = new System.Windows.Forms.Label();
this.browseIcon = new System.Windows.Forms.Button();
this.iconPath = new System.Windows.Forms.TextBox();
this.label3 = new System.Windows.Forms.Label();
this.browseProject = new System.Windows.Forms.Button();
this.projectPath = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.CreatePKG = new System.Windows.Forms.Button();
this.panel1 = new System.Windows.Forms.Panel();
this.GmacOut = new System.Windows.Forms.TextBox();
this.xmbPreview = new System.Windows.Forms.Panel();
this.ps3Icon = new System.Windows.Forms.PictureBox();
this.gameIcon = new System.Windows.Forms.PictureBox();
this.IconPreview2 = new System.Windows.Forms.PictureBox();
this.IconPreview = new System.Windows.Forms.PictureBox();
this.Title = new System.Windows.Forms.Label();
this.folderIcon = new System.Windows.Forms.PictureBox();
this.Logo = new System.Windows.Forms.PictureBox();
this.GameSettings.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.panel1.SuspendLayout();
this.xmbPreview.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.ps3Icon)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.gameIcon)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.IconPreview2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.IconPreview)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.folderIcon)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.Logo)).BeginInit();
this.SuspendLayout();
//
// xmbScreen
//
this.xmbScreen.AutoSize = true;
this.xmbScreen.Location = new System.Drawing.Point(69, 4);
this.xmbScreen.Name = "xmbScreen";
this.xmbScreen.Size = new System.Drawing.Size(48, 17);
this.xmbScreen.TabIndex = 0;
this.xmbScreen.TabStop = true;
this.xmbScreen.Text = "XMB";
this.xmbScreen.UseVisualStyleBackColor = true;
this.xmbScreen.CheckedChanged += new System.EventHandler(this.homeScreen_CheckedChanged);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(12, 4);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(48, 13);
this.label1.TabIndex = 6;
this.label1.Text = "Preview:";
//
// GameSettings
//
this.GameSettings.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.GameSettings.Controls.Add(this.label8);
this.GameSettings.Controls.Add(this.VersionSelect);
this.GameSettings.Controls.Add(this.pictureBox1);
this.GameSettings.Controls.Add(this.GlobalGameSettings);
this.GameSettings.Controls.Add(this.label7);
this.GameSettings.Controls.Add(this.titleName);
this.GameSettings.Controls.Add(this.label6);
this.GameSettings.Controls.Add(this.titleID);
this.GameSettings.Controls.Add(this.label5);
this.GameSettings.Controls.Add(this.contentID);
this.GameSettings.Controls.Add(this.browsePic);
this.GameSettings.Controls.Add(this.picPath);
this.GameSettings.Controls.Add(this.label4);
this.GameSettings.Controls.Add(this.browseIcon);
this.GameSettings.Controls.Add(this.iconPath);
this.GameSettings.Controls.Add(this.label3);
this.GameSettings.Controls.Add(this.browseProject);
this.GameSettings.Controls.Add(this.projectPath);
this.GameSettings.Controls.Add(this.label2);
this.GameSettings.Location = new System.Drawing.Point(968, 25);
this.GameSettings.Name = "GameSettings";
this.GameSettings.Size = new System.Drawing.Size(368, 301);
this.GameSettings.TabIndex = 7;
//
// label8
//
this.label8.AutoSize = true;
this.label8.Location = new System.Drawing.Point(182, 276);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(65, 13);
this.label8.TabIndex = 18;
this.label8.Text = "GM Version:";
//
// VersionSelect
//
this.VersionSelect.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.VersionSelect.FormattingEnabled = true;
this.VersionSelect.Items.AddRange(new object[] {
"1.4.9999"});
this.VersionSelect.Location = new System.Drawing.Point(253, 270);
this.VersionSelect.Name = "VersionSelect";
this.VersionSelect.Size = new System.Drawing.Size(103, 21);
this.VersionSelect.TabIndex = 17;
this.VersionSelect.SelectedIndexChanged += new System.EventHandler(this.VersionSelect_SelectedIndexChanged);
//
// pictureBox1
//
this.pictureBox1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("pictureBox1.BackgroundImage")));
this.pictureBox1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
this.pictureBox1.Location = new System.Drawing.Point(6, 272);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(17, 18);
this.pictureBox1.TabIndex = 16;
this.pictureBox1.TabStop = false;
//
// GlobalGameSettings
//
this.GlobalGameSettings.AutoSize = true;
this.GlobalGameSettings.Enabled = false;
this.GlobalGameSettings.Location = new System.Drawing.Point(29, 276);
this.GlobalGameSettings.Name = "GlobalGameSettings";
this.GlobalGameSettings.Size = new System.Drawing.Size(109, 13);
this.GlobalGameSettings.TabIndex = 15;
this.GlobalGameSettings.Text = "Global Game Settings";
this.GlobalGameSettings.DoubleClick += new System.EventHandler(this.GlobalGameSettings_DoubleClick);
this.GlobalGameSettings.MouseEnter += new System.EventHandler(this.GlobalGameSettings_MouseEnter);
this.GlobalGameSettings.MouseLeave += new System.EventHandler(this.GlobalGameSettings_MouseLeave);
//
// label7
//
this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(3, 170);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(30, 13);
this.label7.TabIndex = 14;
this.label7.Text = "Title:";
//
// titleName
//
this.titleName.Location = new System.Drawing.Point(6, 186);
this.titleName.MaxLength = 40;
this.titleName.Multiline = true;
this.titleName.Name = "titleName";
this.titleName.Size = new System.Drawing.Size(355, 78);
this.titleName.TabIndex = 13;
this.titleName.Text = "GameMaker: Studio";
this.titleName.TextChanged += new System.EventHandler(this.titleName_TextChanged);
//
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(262, 134);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(44, 13);
this.label6.TabIndex = 12;
this.label6.Text = "Title ID:";
//
// titleID
//
this.titleID.Location = new System.Drawing.Point(262, 147);
this.titleID.Name = "titleID";
this.titleID.ReadOnly = true;
this.titleID.Size = new System.Drawing.Size(100, 20);
this.titleID.TabIndex = 11;
this.titleID.Text = "NPXS00020";
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(3, 131);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(61, 13);
this.label5.TabIndex = 10;
this.label5.Text = "Content ID:";
//
// contentID
//
this.contentID.Location = new System.Drawing.Point(3, 147);
this.contentID.MaxLength = 36;
this.contentID.Name = "contentID";
this.contentID.Size = new System.Drawing.Size(253, 20);
this.contentID.TabIndex = 9;
this.contentID.Text = "IV0000-NPXS00020_00-GAMEMAKERSTUDIO0";
this.contentID.TextChanged += new System.EventHandler(this.contentID_TextChanged);
//
// browsePic
//
this.browsePic.Location = new System.Drawing.Point(280, 108);
this.browsePic.Name = "browsePic";
this.browsePic.Size = new System.Drawing.Size(75, 23);
this.browsePic.TabIndex = 8;
this.browsePic.Text = "Browse";
this.browsePic.UseVisualStyleBackColor = true;
this.browsePic.Click += new System.EventHandler(this.browsePic_Click);
//
// picPath
//
this.picPath.Location = new System.Drawing.Point(6, 108);
this.picPath.Name = "picPath";
this.picPath.ReadOnly = true;
this.picPath.Size = new System.Drawing.Size(268, 20);
this.picPath.TabIndex = 7;
this.picPath.Text = "img\\pic1.png";
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(3, 92);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(147, 13);
this.label4.TabIndex = 6;
this.label4.Text = "PIC1.PNG (PNG 1920x1080):";
//
// browseIcon
//
this.browseIcon.Location = new System.Drawing.Point(280, 66);
this.browseIcon.Name = "browseIcon";
this.browseIcon.Size = new System.Drawing.Size(75, 23);
this.browseIcon.TabIndex = 5;
this.browseIcon.Text = "Browse";
this.browseIcon.UseVisualStyleBackColor = true;
this.browseIcon.Click += new System.EventHandler(this.browseIcon_Click);
//
// iconPath
//
this.iconPath.Location = new System.Drawing.Point(6, 69);
this.iconPath.Name = "iconPath";
this.iconPath.ReadOnly = true;
this.iconPath.Size = new System.Drawing.Size(268, 20);
this.iconPath.TabIndex = 4;
this.iconPath.Text = "img\\icon0.png";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(3, 53);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(144, 13);
this.label3.TabIndex = 3;
this.label3.Text = "ICON0.PNG (PNG 320x176):";
//
// browseProject
//
this.browseProject.Location = new System.Drawing.Point(280, 28);
this.browseProject.Name = "browseProject";
this.browseProject.Size = new System.Drawing.Size(75, 23);
this.browseProject.TabIndex = 2;
this.browseProject.Text = "Browse";
this.browseProject.UseVisualStyleBackColor = true;
this.browseProject.Click += new System.EventHandler(this.browseProject_Click);
//
// projectPath
//
this.projectPath.Location = new System.Drawing.Point(6, 30);
this.projectPath.Name = "projectPath";
this.projectPath.ReadOnly = true;
this.projectPath.Size = new System.Drawing.Size(268, 20);
this.projectPath.TabIndex = 1;
this.projectPath.Text = "(none)";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(3, 14);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(93, 13);
this.label2.TabIndex = 0;
this.label2.Text = "Project File (.gmx):";
//
// CreatePKG
//
this.CreatePKG.Enabled = false;
this.CreatePKG.Location = new System.Drawing.Point(1022, 544);
this.CreatePKG.Name = "CreatePKG";
this.CreatePKG.Size = new System.Drawing.Size(257, 23);
this.CreatePKG.TabIndex = 9;
this.CreatePKG.Text = "Make PKG";
this.CreatePKG.UseVisualStyleBackColor = true;
this.CreatePKG.Click += new System.EventHandler(this.CreatePKG_Click);
//
// panel1
//
this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.panel1.Controls.Add(this.GmacOut);
this.panel1.Location = new System.Drawing.Point(3, 573);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(1333, 107);
this.panel1.TabIndex = 10;
//
// GmacOut
//
this.GmacOut.Dock = System.Windows.Forms.DockStyle.Fill;
this.GmacOut.Location = new System.Drawing.Point(0, 0);
this.GmacOut.Multiline = true;
this.GmacOut.Name = "GmacOut";
this.GmacOut.ReadOnly = true;
this.GmacOut.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
this.GmacOut.Size = new System.Drawing.Size(1329, 103);
this.GmacOut.TabIndex = 0;
//
// xmbPreview
//
this.xmbPreview.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("xmbPreview.BackgroundImage")));
this.xmbPreview.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
this.xmbPreview.Controls.Add(this.ps3Icon);
this.xmbPreview.Controls.Add(this.gameIcon);
this.xmbPreview.Controls.Add(this.IconPreview2);
this.xmbPreview.Controls.Add(this.IconPreview);
this.xmbPreview.Controls.Add(this.Title);
this.xmbPreview.Controls.Add(this.folderIcon);
this.xmbPreview.Location = new System.Drawing.Point(15, 20);
this.xmbPreview.Name = "xmbPreview";
this.xmbPreview.Size = new System.Drawing.Size(960, 544);
this.xmbPreview.TabIndex = 6;
//
// ps3Icon
//
this.ps3Icon.BackColor = System.Drawing.Color.Transparent;
this.ps3Icon.Image = global::GayMaker_PS3.Properties.Resources.ps3Logo;
this.ps3Icon.Location = new System.Drawing.Point(662, 267);
this.ps3Icon.Name = "ps3Icon";
this.ps3Icon.Size = new System.Drawing.Size(58, 13);
this.ps3Icon.TabIndex = 14;
this.ps3Icon.TabStop = false;
//
// gameIcon
//
this.gameIcon.BackColor = System.Drawing.Color.Transparent;
this.gameIcon.Image = global::GayMaker_PS3.Properties.Resources.gameIcon;
this.gameIcon.Location = new System.Drawing.Point(86, 125);
this.gameIcon.Name = "gameIcon";
this.gameIcon.Size = new System.Drawing.Size(61, 40);
this.gameIcon.TabIndex = 13;
this.gameIcon.TabStop = false;
//
// IconPreview2
//
this.IconPreview2.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("IconPreview2.BackgroundImage")));
this.IconPreview2.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
this.IconPreview2.Location = new System.Drawing.Point(209, 203);
this.IconPreview2.Name = "IconPreview2";
this.IconPreview2.Size = new System.Drawing.Size(169, 97);
this.IconPreview2.TabIndex = 12;
this.IconPreview2.TabStop = false;
//
// IconPreview
//
this.IconPreview.BackColor = System.Drawing.Color.Transparent;
this.IconPreview.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("IconPreview.BackgroundImage")));
this.IconPreview.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
this.IconPreview.Location = new System.Drawing.Point(67, 228);
this.IconPreview.Name = "IconPreview";
this.IconPreview.Size = new System.Drawing.Size(97, 56);
this.IconPreview.TabIndex = 10;
this.IconPreview.TabStop = false;
//
// Title
//
this.Title.BackColor = System.Drawing.Color.Transparent;
this.Title.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.Title.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.Title.ForeColor = System.Drawing.Color.White;
this.Title.Location = new System.Drawing.Point(392, 227);
this.Title.Name = "Title";
this.Title.Size = new System.Drawing.Size(309, 23);
this.Title.TabIndex = 11;
this.Title.Text = "GameMaker: Studio";
//
// folderIcon
//
this.folderIcon.BackColor = System.Drawing.Color.Transparent;
this.folderIcon.Image = global::GayMaker_PS3.Properties.Resources.folderIcon;
this.folderIcon.Location = new System.Drawing.Point(64, 216);
this.folderIcon.Name = "folderIcon";
this.folderIcon.Size = new System.Drawing.Size(111, 72);
this.folderIcon.TabIndex = 15;
this.folderIcon.TabStop = false;
//
// Logo
//
this.Logo.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("Logo.BackgroundImage")));
this.Logo.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
this.Logo.Location = new System.Drawing.Point(1022, 332);
this.Logo.Name = "Logo";
this.Logo.Size = new System.Drawing.Size(257, 206);
this.Logo.TabIndex = 8;
this.Logo.TabStop = false;
//
// GayMakerPS3
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(1344, 691);
this.Controls.Add(this.panel1);
this.Controls.Add(this.CreatePKG);
this.Controls.Add(this.Logo);
this.Controls.Add(this.GameSettings);
this.Controls.Add(this.label1);
this.Controls.Add(this.xmbScreen);
this.Controls.Add(this.xmbPreview);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.Name = "GayMakerPS3";
this.Text = "GayMaker: PS3 v";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.GayMakerPs3_FormClosing);
this.Load += new System.EventHandler(this.GayMakerPs3_Load);
this.GameSettings.ResumeLayout(false);
this.GameSettings.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
this.xmbPreview.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.ps3Icon)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.gameIcon)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.IconPreview2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.IconPreview)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.folderIcon)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.Logo)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.RadioButton xmbScreen;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Panel GameSettings;
private System.Windows.Forms.PictureBox Logo;
private System.Windows.Forms.Button CreatePKG;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.TextBox GmacOut;
private System.Windows.Forms.Button browseProject;
private System.Windows.Forms.TextBox projectPath;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Button browseIcon;
private System.Windows.Forms.TextBox iconPath;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.TextBox titleName;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.TextBox titleID;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.TextBox contentID;
private System.Windows.Forms.Button browsePic;
private System.Windows.Forms.TextBox picPath;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Panel xmbPreview;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.Label GlobalGameSettings;
private System.Windows.Forms.Label label8;
private System.Windows.Forms.ComboBox VersionSelect;
private System.Windows.Forms.PictureBox ps3Icon;
private System.Windows.Forms.PictureBox gameIcon;
private System.Windows.Forms.PictureBox IconPreview2;
private System.Windows.Forms.PictureBox IconPreview;
private System.Windows.Forms.Label Title;
private System.Windows.Forms.PictureBox folderIcon;
}
}

674
GayMaker-PS3/GayMakerPS3.cs Normal file
View File

@ -0,0 +1,674 @@
using System;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Net;
using System.Net.Cache;
using System.Reflection;
using System.Threading;
using System.Windows.Forms;
using System.Xml;
namespace GayMaker_PS3
{
public partial class GayMakerPS3 : Form
{
public String CurrentVerison = "1.0";
bool HasShaders = false;
public GayMakerPS3()
{
//Bypass Windows DPI Scaling
Font = new Font(Font.Name, 8.25f * 96f / CreateGraphics().DpiX, Font.Style, Font.Unit, Font.GdiCharSet, Font.GdiVerticalFont);
InitializeComponent();
}
public String GetProjectPath() //For GlobalGameSettings
{
return projectPath.Text;
}
private bool isValidContentId(string contentId)
{
if(contentId.Length == 36)
if (Char.IsLetter(contentId[0]))
if (Char.IsUpper(contentId[0]))
if (Char.IsLetter(contentId[1]))
if (Char.IsUpper(contentId[1]))
if (Char.IsNumber(contentId[2]))
if (Char.IsNumber(contentId[3]))
if (Char.IsNumber(contentId[4]))
if (Char.IsNumber(contentId[5]))
if (contentId[6] == '-')
if (Char.IsLetter(contentId[7]))
if (Char.IsUpper(contentId[7]))
if (Char.IsLetter(contentId[8]))
if (Char.IsUpper(contentId[8]))
if (Char.IsLetter(contentId[9]))
if (Char.IsUpper(contentId[9]))
if (Char.IsLetter(contentId[10]))
if (Char.IsUpper(contentId[10]))
if (Char.IsNumber(contentId[11]))
if (Char.IsNumber(contentId[12]))
if (Char.IsNumber(contentId[13]))
if (Char.IsNumber(contentId[14]))
if (Char.IsNumber(contentId[15]))
if (contentId[16] == '_')
if (Char.IsNumber(contentId[17]))
if (Char.IsNumber(contentId[18]))
if (contentId[19] == '-')
if ((Char.IsNumber(contentId[20])) || (Char.IsLetter(contentId[20]) && Char.IsUpper(contentId[20])))
if ((Char.IsNumber(contentId[21])) || (Char.IsLetter(contentId[21]) && Char.IsUpper(contentId[21])))
if ((Char.IsNumber(contentId[22])) || (Char.IsLetter(contentId[22]) && Char.IsUpper(contentId[22])))
if ((Char.IsNumber(contentId[23])) || (Char.IsLetter(contentId[23]) && Char.IsUpper(contentId[23])))
if ((Char.IsNumber(contentId[24])) || (Char.IsLetter(contentId[24]) && Char.IsUpper(contentId[24])))
if ((Char.IsNumber(contentId[25])) || (Char.IsLetter(contentId[25]) && Char.IsUpper(contentId[25])))
if ((Char.IsNumber(contentId[26])) || (Char.IsLetter(contentId[26]) && Char.IsUpper(contentId[26])))
if ((Char.IsNumber(contentId[27])) || (Char.IsLetter(contentId[27]) && Char.IsUpper(contentId[27])))
if ((Char.IsNumber(contentId[28])) || (Char.IsLetter(contentId[28]) && Char.IsUpper(contentId[28])))
if ((Char.IsNumber(contentId[29])) || (Char.IsLetter(contentId[29]) && Char.IsUpper(contentId[29])))
if ((Char.IsNumber(contentId[30])) || (Char.IsLetter(contentId[30]) && Char.IsUpper(contentId[30])))
if ((Char.IsNumber(contentId[31])) || (Char.IsLetter(contentId[31]) && Char.IsUpper(contentId[31])))
if ((Char.IsNumber(contentId[32])) || (Char.IsLetter(contentId[32]) && Char.IsUpper(contentId[32])))
if ((Char.IsNumber(contentId[33])) || (Char.IsLetter(contentId[33]) && Char.IsUpper(contentId[33])))
if ((Char.IsNumber(contentId[34])) || (Char.IsLetter(contentId[34]) && Char.IsUpper(contentId[34])))
if ((Char.IsNumber(contentId[35])) || (Char.IsLetter(contentId[35]) && Char.IsUpper(contentId[35])))
return true;
return false;
}
private bool canMakePkg()
{
if (File.Exists(projectPath.Text))
if (isValidContentId(contentID.Text))
return true;
return false;
}
private void reloadIcons()
{
try
{
IconPreview.BackgroundImage.Dispose();
IconPreview2.BackgroundImage.Dispose();
xmbPreview.BackgroundImage.Dispose();
}
catch { };
Image IBG = new Bitmap(iconPath.Text);
IconPreview.BackgroundImage = IBG;
IconPreview2.BackgroundImage = IBG;
Image PBG = new Bitmap(picPath.Text);
xmbPreview.BackgroundImage = PBG;
}
private void GayMakerPs3_FormClosing(object sender, FormClosingEventArgs e)
{
try
{
Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(@"Software\GayMakerPS3");
key.SetValue("project", projectPath.Text);
key.SetValue("icon0", iconPath.Text);
key.SetValue("pic1", picPath.Text);
key.SetValue("title", titleName.Text);
key.SetValue("contentID", contentID.Text);
key.SetValue("version", VersionSelect.SelectedIndex);
key.Close();
}
catch (Exception)
{
MessageBox.Show("Failed to save settings to registry.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void CheckForUpdates()
{
WebClient wc = new WebClient();
wc.CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore);
String UpdateString = wc.DownloadString("https://raw.githubusercontent.com/LiEnby/GayMaker-PS3/master/latest.md");
String[] Data = UpdateString.Split('~');
if (Data[0] != CurrentVerison)
{
DialogResult yesOrNo = MessageBox.Show("An update to GayMaker: PS3 was found, Version: " + Data[0] + "\nWant to download it?\n\nThis system software update improves system performance.", "UPDATE FOUND!", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (yesOrNo == DialogResult.Yes)
{
DownloadingUpdate updateForm = new DownloadingUpdate();
this.Hide();
updateForm.ShowDialog();
this.Close();
this.Dispose();
}
}
}
private void GayMakerPs3_Load(object sender, EventArgs e)
{
this.Text += CurrentVerison;
ReloadVersions();
String OldEXEPath = Path.ChangeExtension(Assembly.GetExecutingAssembly().Location,".old");
if(File.Exists(OldEXEPath))
{
File.Delete(OldEXEPath);
}
try
{
CheckForUpdates();
}
catch (Exception) { };
try
{
Microsoft.Win32.RegistryKey key;
key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(@"Software\GayMakerPS3");
projectPath.Text = key.GetValue("project").ToString();
iconPath.Text = key.GetValue("icon0").ToString();
picPath.Text = key.GetValue("pic1").ToString();
titleName.Text = key.GetValue("title").ToString();
contentID.Text = key.GetValue("contentID").ToString();
int VerIndex = 0;
int.TryParse(key.GetValue("version").ToString(), out VerIndex);
VersionSelect.SelectedIndex = VerIndex;
xmbScreen.Checked = true;
xmbPreview.Visible = true;
key.Close();
reloadIcons();
}
catch (Exception) { };
if (!File.Exists(iconPath.Text))
{
iconPath.Text = "img\\icon0.png";
}
if (!File.Exists(picPath.Text))
{
picPath.Text = "img\\pic1.png";
}
if (!File.Exists(projectPath.Text))
{
projectPath.Text = "(none)";
}
else
{
GlobalGameSettings.Enabled = true;
}
CreatePKG.Enabled = canMakePkg();
}
private void titleName_TextChanged(object sender, EventArgs e)
{
xmbScreen.Checked = true;
Title.Text = titleName.Text;
}
private void homeScreen_CheckedChanged(object sender, EventArgs e)
{
xmbPreview.Visible = false;
}
private void contentID_TextChanged(object sender, EventArgs e)
{
if(isValidContentId(contentID.Text))
{
titleID.Text = contentID.Text.Substring(7, 9);
}
else
{
titleID.Text = "(INVALID)";
}
CreatePKG.Enabled = canMakePkg();
}
private void browseProject_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.Filter = "GameMaker Studio Project Files|*.project.gmx;*.yyp|GameMaker Studio 1.x Project Files|*.project.gmx";
openFileDialog1.Title = "Select a GameMaker Studio Project File";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
titleName.Text = "GameMaker: Studio";
iconPath.Text = "img\\icon0.png";
picPath.Text = "img\\pic1.png";
contentID.Text = "IV0000-NPXS00020_00-GAMEMAKERSTUDIO0";
projectPath.Text = openFileDialog1.FileName;
CreatePKG.Enabled = true;
GlobalGameSettings.Enabled = true;
reloadIcons();
}
}
private void browseIcon_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.Filter = "Portable Network Graphics|*.PNG";
openFileDialog1.Title = "Select a PNG File";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
Image img = new Bitmap(openFileDialog1.FileName);
if (img.Height == 320 && img.Width == 176)
{
IconPreview.BackgroundImage.Dispose();
IconPreview2.BackgroundImage.Dispose();
IconPreview.BackgroundImage = img;
IconPreview2.BackgroundImage = img;
xmbScreen.Checked = true;
iconPath.Text = openFileDialog1.FileName;
}
else
{
img.Dispose(); //fix issue #2
MessageBox.Show("Image is not 320x176!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
private void browsePic_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.Filter = "Portable Network Graphics|*.PNG";
openFileDialog1.Title = "Select a PNG File";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
Image img = new Bitmap(openFileDialog1.FileName);
if (img.Height == 1080 && img.Width == 1920)
{
xmbPreview.BackgroundImage.Dispose();
xmbPreview.BackgroundImage = img;
picPath.Text = openFileDialog1.FileName;
}
else
{
img.Dispose(); //fix issue #2
MessageBox.Show("Image is not 1920x1080 !", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
private void GlobalGameSettings_MouseEnter(object sender, EventArgs e)
{
GlobalGameSettings.ForeColor = Color.Blue;
GlobalGameSettings.Font = new Font(label1.Font.Name, label1.Font.SizeInPoints, FontStyle.Underline);
this.Cursor = Cursors.Hand;
}
private void GlobalGameSettings_MouseLeave(object sender, EventArgs e)
{
GlobalGameSettings.ForeColor = Color.Black;
GlobalGameSettings.Font = new Font(label1.Font.Name, label1.Font.SizeInPoints, FontStyle.Regular);
this.Cursor = Cursors.Arrow;
}
private void GlobalGameSettings_DoubleClick(object sender, EventArgs e)
{
GameSettings GlobalGames = new GameSettings();
GlobalGames.ShowDialog();
}
private void CopyDir(string source, string target)
{
GmacOut.AppendText("Copying Directory: \"" + source + "\" -> \"" + target + "\"" + Environment.NewLine);
if (!Directory.Exists(target)) Directory.CreateDirectory(target);
string[] sysEntries = Directory.GetFileSystemEntries(source);
foreach (string sysEntry in sysEntries)
{
string fileName = Path.GetFileName(sysEntry);
string targetPath = Path.Combine(target, fileName);
if (Directory.Exists(sysEntry))
CopyDir(sysEntry, targetPath);
else
{
GmacOut.AppendText("Copying \"" + fileName + "\""+Environment.NewLine);
File.Copy(sysEntry, targetPath, true);
}
}
}
private void Make24Bit(string Src, string Dst)
{
GmacOut.AppendText("Making " + Src + " 24 bit color depth!");
Bitmap orig = new Bitmap(Src);
if ((orig.PixelFormat != PixelFormat.Format24bppRgb))
{
Bitmap clone = orig.Clone(new Rectangle(0, 0, orig.Width, orig.Height), PixelFormat.Format24bppRgb);
clone.Save(@Dst);
clone.Dispose();
GmacOut.AppendText(" Done!" + Environment.NewLine);
}
else
{
GmacOut.AppendText(" No need!" + Environment.NewLine);
File.Copy(Src, Dst);
}
orig.Dispose();
}
private bool CompileProject(string Src, string Dst)
{
string GMVer = VersionSelect.SelectedItem.ToString();
String TexturePageSize = "2048";
String SHEnabled = "False";
XmlDocument DefaultConfig = new XmlDocument();
DefaultConfig.Load(Path.GetDirectoryName(projectPath.Text) + "\\Configs\\Default.config.gmx");
TexturePageSize = DefaultConfig.GetElementsByTagName("option_ps3_texture_page")[0].InnerText;
SHEnabled = DefaultConfig.GetElementsByTagName("option_shortcircuit")[0].InnerText;
string versionBit = GMVer.Split('.')[2];
string args = "/c /m=ps3 /be /config=\"Default\" /tgt=2199023255552 /obob=True /obpp=False /obru=True /obes=False /i=3 /j=4 /cvm /tp=" + TexturePageSize + " /ps3sdk=\"" + Directory.GetCurrentDirectory() + "\\ps3sdk\" /mv=1 /iv=0 /rv=0 /bv=" + versionBit + " /gn=\"" + titleName.Text + "\" /sh="+SHEnabled+" /o=\"" + Dst + "\" \"" + Src + "\"";
GmacOut.AppendText("-- GMASSETCOMPILER BEGIN --" + Environment.NewLine);
GmacOut.AppendText("GMAssetCompiler.exe " + args + Environment.NewLine);
using (Process gmac = new Process())
{
if (GMVer == "1.4.9999")
{
gmac.StartInfo.FileName = "GMAssetCompiler.exe";
}
else
{
gmac.StartInfo.FileName = "versions\\" + GMVer + "\\GMAssetCompiler.exe";
gmac.StartInfo.WorkingDirectory = "versions\\" + GMVer;
}
gmac.StartInfo.Arguments = args;
gmac.StartInfo.UseShellExecute = false;
gmac.StartInfo.CreateNoWindow = true;
gmac.StartInfo.RedirectStandardOutput = true;
gmac.StartInfo.RedirectStandardError = true;
gmac.ErrorDataReceived += new DataReceivedEventHandler(gmacWrite);
gmac.OutputDataReceived += new DataReceivedEventHandler(gmacWrite);
GMAC.GetPermissionToExecute();
gmac.Start();
gmac.BeginOutputReadLine();
gmac.BeginErrorReadLine();
while (!gmac.HasExited)
{
Application.DoEvents();
}
if (gmac.ExitCode != 0)
{
MessageBox.Show("GMAssetCompiler.exe Error Code: " + gmac.ExitCode.ToString(), "GMAC Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
Directory.Delete(Dst, true);
return false;
}
}
GmacOut.AppendText("-- GMASSETCOMPILER FINISHED! --" + Environment.NewLine);
GmacOut.AppendText("Renaming to game.win...");
foreach (String file in Directory.GetFiles(Dst))
{
if (file.EndsWith(".win"))
{
File.Move(file, Dst + "\\game.win");
}
if (file.EndsWith(".yydebug"))
{
File.Delete(file);
}
}
GmacOut.AppendText("OK!" + Environment.NewLine);
return true;
}
void gmacWrite(object sender, DataReceivedEventArgs e)
{
Trace.WriteLine(e.Data);
this.BeginInvoke(new MethodInvoker(() =>
{
GmacOut.AppendText(e.Data + Environment.NewLine);
}));
}
private void CreatePKG_Click(object sender, EventArgs e)
{
string GMVer = VersionSelect.SelectedItem.ToString();
string tempdir = "";
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.Filter = "PS3 Packages|*.pkg";
saveFileDialog1.Title = "Save PKG File";
saveFileDialog1.FileName = contentID.Text;
CreatePKG.Enabled = false;
if(GMVer.StartsWith("1."))
HasShaders = File.ReadAllText(projectPath.Text).Contains("</shaders>"); //Too lazy to parse XML properly.
if (HasShaders)
{
if (!Directory.Exists(@"ps3sdk"))
{
DialogResult msgResult = MessageBox.Show("It's been detected that you are using Shaders in your GM Project\nHowever no copy of the PS3 Shader Compiler (sce-cgc.exe) was found.\nBrowse to sce-cgc.exe?", "Shader Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation);
if (msgResult == DialogResult.Yes)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "sce-cgc.exe|sce-cgc.exe";
openFileDialog.Title = "Browse to PS3 Shader Compiler.";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
if (!Directory.Exists(@"ps3sdk"))
{
GmacOut.AppendText("Creating PS3SDK Directory Structure\n");
Directory.CreateDirectory("ps3sdk");
Directory.CreateDirectory("ps3sdk/host_tools");
Directory.CreateDirectory("ps3sdk/host_tools/Cg");
Directory.CreateDirectory("ps3sdk/host_tools/Cg/bin");
}
File.Copy(openFileDialog.FileName, @"ps3sdk/host_tools/Cg/bin/sce-cgc.exe");
}
else
{
CreatePKG.Enabled = true;
return;
}
}
else
{
CreatePKG.Enabled = true;
return;
}
}
}
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
tempdir = Path.GetDirectoryName(saveFileDialog1.FileName) + "\\_temp";
if (Directory.Exists(tempdir))
{
Directory.Delete(tempdir, true);
}
Directory.CreateDirectory(tempdir);
Directory.CreateDirectory(tempdir + "\\package");
if (GMVer == "1.4.9999")
{
CopyDir(@"Runner", tempdir+"\\package");
}
else
{
CopyDir("versions\\" + GMVer + "\\Runner", tempdir + "\\package");
}
Make24Bit(iconPath.Text, tempdir + "\\package\\ICON0.png");
Make24Bit(iconPath.Text, tempdir + "\\package\\USRDIR\\ICON0.png");
Make24Bit(picPath.Text, tempdir + "\\package\\PIC1.png");
if (!CompileProject(projectPath.Text, tempdir + "\\package\\USRDIR"))
{
Directory.Delete(tempdir, true);
CreatePKG.Enabled = true;
return;
}
}
else
{
CreatePKG.Enabled = true;
return;
}
using (FileStream fd = File.Open(tempdir + "\\package\\PARAM.SFO", FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
Sfo sfo = Sfo.ReadSfo(fd);
GmacOut.AppendText("Writing " + titleName.Text + " to TITLE of param.sfo" + Environment.NewLine);
sfo["TITLE"] = titleName.Text;
GmacOut.AppendText("Writing " + titleID.Text + " to TITLE_ID of param.sfo" + Environment.NewLine);
sfo["TITLE_ID"] = titleID.Text;
GmacOut.AppendText("Writing " + contentID.Text + " to CONTENT_ID of param.sfo!" + Environment.NewLine);
sfo["CONTENT_ID"] = contentID.Text;
fd.Seek(0x00, SeekOrigin.Begin);
byte[] sfoData = sfo.WriteSfo();
fd.Write(sfoData, 0, sfoData.Length);
fd.SetLength(sfoData.Length);
}
GmacOut.AppendText("Creating package.conf ...");
File.AppendAllLines(tempdir+"\\package.conf", new string[] {
"Content_ID = " + contentID.Text,
"Klicensee = 0x00000000000000000000000000000000",
"DRMType = Free",
"ContentType = GameExec",
"PackageVersion = 1.00"
});
GmacOut.AppendText("OK!" + Environment.NewLine);
if (File.Exists(saveFileDialog1.FileName))
{
File.Delete(saveFileDialog1.FileName);
}
GmacOut.AppendText("Building PKG ...");
Thread thr = new Thread(() =>
{
P3Tools.MakePackage(tempdir + "\\package.conf", tempdir + "\\package", tempdir, new DataReceivedEventHandler(gmacWrite));
});
thr.Start();
while (thr.IsAlive)
{
Application.DoEvents();
}
GmacOut.AppendText("OK!" + Environment.NewLine);
File.Move(tempdir + "\\" + contentID.Text + ".pkg", saveFileDialog1.FileName);
GmacOut.AppendText("Deleting " + tempdir + " ...");
Directory.Delete(tempdir, true);
GmacOut.AppendText("OK!" + Environment.NewLine);
GmacOut.AppendText("Done!" + Environment.NewLine);
CreatePKG.Enabled = true;
MessageBox.Show("PKG Created!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
public void ReloadVersions()
{
VersionSelect.Items.Clear();
VersionSelect.Items.Add("1.4.9999");
try
{
foreach (String version in Directory.GetDirectories(@"versions"))
{
VersionSelect.Items.Add(Path.GetFileName(version));
}
}
catch (Exception) { };
VersionSelect.Items.Add("Manager");
VersionSelect.SelectedIndex = 0;
}
private void VersionSelect_SelectedIndexChanged(object sender, EventArgs e)
{
//1.4.9999 comes built in
if(VersionSelect.Text.StartsWith("1."))
{
GameSettings.Enabled = true;
}
else
{
GlobalGameSettings.Enabled = false;
}
if (VersionSelect.SelectedItem.ToString() == "Manager")
{
VersionSelect.SelectedIndex -= 1;
this.Enabled = false;
VersionManager VM = new VersionManager();
VM.Show();
VM.FormClosing += VM_FormClosing;
}
}
private void VM_FormClosing(object sender, FormClosingEventArgs e)
{
this.Enabled = true;
ReloadVersions();
this.Focus();
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,32 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Li.Utilities
{
public static class MathUtil
{
public static int CalculateDifference(int val1, int val2)
{
int smaller = Convert.ToInt32(Math.Min(val1, val2));
int larger = Convert.ToInt32(Math.Max(val1, val2));
return larger - smaller;
}
public static byte[] StringToByteArray(string hex)
{
return Enumerable.Range(0, hex.Length).Where(x => x % 2 == 0).Select(x => Convert.ToByte(hex.Substring(x, 2), 16)).ToArray();
}
public static int CalculatePaddingAmount(int total, int alignTo)
{
int remainder = total % alignTo;
int padAmt = alignTo - (remainder);
if ((remainder) == 0) return 0;
return padAmt;
}
}
}

View File

@ -0,0 +1,203 @@
using System;
using System.IO;
using System.Linq;
using System.Text;
namespace Li.Utilities
{
public class StreamUtil
{
private Stream s;
public StreamUtil(Stream s)
{
this.s = s;
}
public string ReadStrLen(int len)
{
return Encoding.UTF8.GetString(ReadBytes(len));
}
public string ReadCDStr(int len)
{
return ReadStrLen(len).Trim(' ');
}
public string ReadCStr()
{
using (MemoryStream ms = new MemoryStream())
{
while (true)
{
byte c = (byte)s.ReadByte();
if (c == 0)
break;
ms.WriteByte(c);
}
return Encoding.UTF8.GetString(ms.ToArray());
}
}
public UInt32 ReadUInt32At(int location)
{
long oldPos = s.Position;
s.Seek(location, SeekOrigin.Begin);
UInt32 outp = ReadUInt32();
s.Seek(oldPos, SeekOrigin.Begin);
return outp;
}
public Int32 ReadInt32At(int location)
{
long oldPos = s.Position;
s.Seek(location, SeekOrigin.Begin);
Int32 outp = ReadInt32();
s.Seek(oldPos, SeekOrigin.Begin);
return outp;
}
public byte[] ReadBytesAt(int location, int length)
{
long oldPos = s.Position;
s.Seek(location, SeekOrigin.Begin);
byte[] work_buf = ReadBytes(length);
s.Seek(oldPos, SeekOrigin.Begin);
return work_buf;
}
public string ReadStringAt(int location)
{
long oldPos = s.Position;
s.Seek(location, SeekOrigin.Begin);
string outp = ReadCStr();
s.Seek(oldPos, SeekOrigin.Begin);
return outp;
}
public byte ReadByte()
{
return (byte)s.ReadByte();
}
public byte[] ReadBytes(int len)
{
byte[] data = new byte[len];
s.Read(data, 0x00, len);
return data;
}
public UInt16 ReadUInt16()
{
byte[] vbytes = ReadBytes(0x2);
return BitConverter.ToUInt16(vbytes, 0);
}
public Int16 ReadInt16()
{
byte[] vbytes = ReadBytes(0x2);
return BitConverter.ToInt16(vbytes, 0);
}
public UInt32 ReadUInt32()
{
byte[] vbytes = ReadBytes(0x4);
return BitConverter.ToUInt32(vbytes, 0);
}
public Int32 ReadInt32()
{
byte[] vbytes = ReadBytes(0x4);
return BitConverter.ToInt32(vbytes, 0);
}
public void WriteBytesWithPadding(byte[] data, byte b, int len)
{
if (len < data.Length)
{
s.Write(data, 0, len);
return;
}
else
{
WriteBytes(data);
WritePadding(b, (len - data.Length));
}
}
public void WriteStrWithPadding(string str, byte b, int len)
{
WriteBytesWithPadding(Encoding.UTF8.GetBytes(str), b, len);
}
public void WriteUInt64(UInt64 v)
{
WriteBytes(BitConverter.GetBytes(v));
}
public void WriteInt64(Int64 v)
{
WriteBytes(BitConverter.GetBytes(v));
}
public void WriteUInt16(UInt16 v)
{
WriteBytes(BitConverter.GetBytes(v));
}
public void WriteInt16(Int16 v)
{
WriteBytes(BitConverter.GetBytes(v));
}
public void WriteUInt32(UInt32 v)
{
WriteBytes(BitConverter.GetBytes(v));
}
public void WriteInt32BE(Int32 v)
{
WriteBytes(BitConverter.GetBytes(v).Reverse().ToArray());
}
public void WriteInt32At(Int32 v, long location)
{
long oldPos = s.Position;
s.Seek(location, SeekOrigin.Begin);
WriteInt32(v);
s.Seek(oldPos, SeekOrigin.Begin);
}
public void WriteUInt32At(UInt32 v, long location)
{
long oldPos = s.Position;
s.Seek(location, SeekOrigin.Begin);
WriteUInt32(v);
s.Seek(oldPos, SeekOrigin.Begin);
}
public void WriteInt32(Int32 v)
{
WriteBytes(BitConverter.GetBytes(v));
}
public void WriteCStr(string str)
{
WriteStr(str);
WriteByte(0x00);
}
public void WriteStr(string str)
{
WriteBytes(Encoding.UTF8.GetBytes(str));
}
public void WritePadding(byte b, int len)
{
if (len < 0) return;
for(int i = 0; i < len; i++)
{
WriteByte(b);
}
}
public void AlignTo(byte padByte, int align)
{
int padAmt = MathUtil.CalculatePaddingAmount(Convert.ToInt32(s.Position), align);
this.WritePadding(padByte, padAmt);
}
public void PadUntil(byte b, int len)
{
int remain = Convert.ToInt32(len - s.Length);
WritePadding(b, remain);
}
public void WriteBytes(byte[] bytes)
{
s.Write(bytes, 0, bytes.Length);
}
public void WriteByte(byte b)
{
s.WriteByte(b);
}
}
}

107
GayMaker-PS3/P3Tools.cs Normal file
View File

@ -0,0 +1,107 @@

using System;
using System.Diagnostics;
using System.IO;
namespace
GayMaker_PS3
{
class P3Tools
{
public static void RemoveEdataChk(string elf)
{
byte[] signature = new byte[] { 0x38, 0xA0, 0x00, 0x00, 0x38, 0xC0, 0x03, 0xE9, 0x38, 0xE0, 0x40, 0x00, 0xF8, 0x81, 0x00, 0x70 }; /*
* li r5, 0
* li r6, 0x3e9
* li r7, 0x4000
* std r4, 0x70(r1)
*/
byte[] patch = new byte[] { 0x4E, 0x80, 0x00, 0x20 }; /*
* blr
*/
int offset = 0x24; // total bytes from li r5 to the start of the "psn_handle_content_error" function
byte[] fileData = File.ReadAllBytes(elf);
// search for signature within elf file
for (int i = 0; i < fileData.Length - signature.Length; i++)
{
bool match = true;
for (int k = 0; k < signature.Length; k++)
{
if (fileData[i + k] != signature[k])
{
match = false;
break;
}
}
if (match)
{
i -= offset; // minus the offset to find the start of the function
Array.ConstrainedCopy(patch, 0, fileData, i, patch.Length); // copy patch to the file data
File.WriteAllBytes(elf, fileData); // save patched ELF to disk.
return;
}
}
}
public static void MakePackage(string conf, string folder, string outFolder, DataReceivedEventHandler handler=null)
{
using (Process makepackage = new Process())
{
makepackage.StartInfo.FileName = @"P3Tools\\make_package_npdrm.exe";
makepackage.StartInfo.Arguments = "\"" + conf + "\" \"" + folder + "\"";
makepackage.StartInfo.UseShellExecute = false;
makepackage.StartInfo.RedirectStandardOutput = true;
makepackage.StartInfo.RedirectStandardError = true;
makepackage.StartInfo.CreateNoWindow = true;
makepackage.StartInfo.WorkingDirectory = outFolder;
if (handler != null) makepackage.OutputDataReceived += handler;
if (handler != null) makepackage.ErrorDataReceived += handler;
makepackage.Start();
makepackage.WaitForExit();
}
}
public static void UnmakeFself(string self, string elf, DataReceivedEventHandler handler = null)
{
using (Process unmakefself = new Process())
{
unmakefself.StartInfo.FileName = @"P3Tools\\unfself.exe";
unmakefself.StartInfo.Arguments = "\"" + self + "\" \"" + elf + "\"";
unmakefself.StartInfo.UseShellExecute = false;
unmakefself.StartInfo.RedirectStandardOutput = true;
unmakefself.StartInfo.RedirectStandardError = true;
unmakefself.StartInfo.CreateNoWindow = true;
if (handler != null) unmakefself.OutputDataReceived += handler;
if (handler != null) unmakefself.ErrorDataReceived += handler;
unmakefself.Start();
unmakefself.WaitForExit();
}
File.Delete(self);
}
public static void MakeFself(string elf, string self, DataReceivedEventHandler handler = null)
{
using (Process makefself = new Process())
{
makefself.StartInfo.FileName = @"P3Tools\\make_fself_npdrm.exe";
makefself.StartInfo.Arguments = "\""+elf + "\" \"" + self+"\"";
makefself.StartInfo.UseShellExecute = false;
makefself.StartInfo.RedirectStandardOutput = true;
makefself.StartInfo.RedirectStandardError = true;
makefself.StartInfo.CreateNoWindow = true;
if (handler != null) makefself.OutputDataReceived += handler;
if (handler != null) makefself.ErrorDataReceived += handler;
makefself.Start();
makefself.WaitForExit();
}
File.Delete(elf);
}
}
}

25
GayMaker-PS3/Program.cs Normal file
View File

@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace GayMaker_PS3
{
static class Program
{
public static GayMakerPS3 GMS;
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
GMS = new GayMakerPS3();
Application.Run(GMS);
}
}
}

View File

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("GayMaker-Studio")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("GayMaker-Studio")]
[assembly: AssemblyCopyright("Copyright © 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("a574f9f8-d3b2-4ef6-80de-5d546c43b57d")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -0,0 +1,103 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace GayMaker_PS3.Properties {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("GayMaker_PS3.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap folderIcon {
get {
object obj = ResourceManager.GetObject("folderIcon", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap gameIcon {
get {
object obj = ResourceManager.GetObject("gameIcon", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap PIC1 {
get {
object obj = ResourceManager.GetObject("PIC1", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap ps3Logo {
get {
object obj = ResourceManager.GetObject("ps3Logo", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
}
}

View File

@ -0,0 +1,133 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="ps3Logo" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ps3Logo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="folderIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\folderIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="gameIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\gameIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="PIC1" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\PIC1.PNG;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

View File

@ -0,0 +1,26 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace GayMaker_PS3.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.8.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
}
}

View File

@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

255
GayMaker-PS3/Sfo.cs Normal file
View File

@ -0,0 +1,255 @@
using Li.Utilities;
using System;
using System.Collections.Generic;
using System.IO;
// A Sfo Parser Written by Li
// Because all the others are overly-complicated for no reason!
// MIT Licensed.
namespace GayMaker_PS3
{
public class Sfo
{
private struct SfoEntry
{
internal string keyName;
internal byte type;
internal UInt32 valueSize;
internal UInt32 totalSize;
internal byte align;
internal object value;
}
const int SFO_MAGIC = 0x46535000;
const byte PSF_TYPE_BIN = 0;
const byte PSF_TYPE_STR = 2;
const byte PSF_TYPE_VAL = 4;
private Dictionary<string, SfoEntry> sfoEntries;
public Object this[string index]
{
get
{
if (sfoEntries.ContainsKey(index))
return sfoEntries[index].value;
else
return null;
}
set
{
if (sfoEntries.ContainsKey(index))
{
SfoEntry sfoEnt = sfoEntries[index];
sfoEnt.value = value;
// update sz
sfoEnt.valueSize = getObjectSz(sfoEnt.value);
if (sfoEnt.valueSize > sfoEnt.totalSize)
sfoEnt.totalSize = Convert.ToUInt32(MathUtil.CalculatePaddingAmount(Convert.ToInt32(sfoEnt.valueSize), sfoEnt.align));
// update type
sfoEnt.type = getPsfType(sfoEnt.value);
sfoEntries[index] = sfoEnt;
}
else
{
UInt32 sz = getObjectSz(value);
int alg = MathUtil.CalculatePaddingAmount(Convert.ToInt32(sz), 4);
AddKey(index, value, Convert.ToUInt32(sz + alg), 4);
}
}
}
public void AddKey(string keyName, object value, UInt32 totalSize, byte align = 4)
{
SfoEntry ent = new SfoEntry();
ent.keyName = keyName;
ent.type = getPsfType(value);
ent.valueSize = getObjectSz(value);
ent.totalSize = Convert.ToUInt32(totalSize + MathUtil.CalculatePaddingAmount(Convert.ToInt32(totalSize), align));
ent.align = align;
ent.value = value;
sfoEntries[ent.keyName] = ent;
}
public Sfo()
{
sfoEntries = new Dictionary<string, SfoEntry>();
}
private static UInt32 getObjectSz(Object obj)
{
if (obj is Int32) return 4;
if (obj is UInt32) return 4;
if (obj is String) return Convert.ToUInt32((obj as String).Length+1);
if (obj is Byte[]) return Convert.ToUInt32((obj as Byte[]).Length);
throw new Exception("Object is of unsupported type: " + obj.GetType());
}
private static byte getPsfType(Object obj)
{
if (obj is Int32 || obj is UInt32) return PSF_TYPE_VAL;
if (obj is String) return PSF_TYPE_STR;
if (obj is Byte[]) return PSF_TYPE_BIN;
throw new Exception("Object is of unsupported type: " + obj.GetType());
}
public byte[] WriteSfo(UInt32 version = 0x101, Byte align = 0x4)
{
using (MemoryStream sfoStream = new MemoryStream())
{
WriteSfo(sfoStream, version, align);
byte[] sfoBytes = sfoStream.ToArray();
return sfoBytes;
}
}
public void WriteSfo(Stream SfoStream, UInt32 version=0x101, Byte align=0x4)
{
using(MemoryStream sfoStream = new MemoryStream())
{
StreamUtil sfoUtil = new StreamUtil(sfoStream);
sfoUtil.WriteUInt32(SFO_MAGIC);
sfoUtil.WriteUInt32(version);
sfoUtil.WriteUInt32(0xFFFFFFFF); // key offset
sfoUtil.WriteUInt32(0xFFFFFFFF); // value offset
// (will fill these in after the file is created)
sfoUtil.WriteInt32(sfoEntries.Count);
using (MemoryStream keyTable = new MemoryStream())
{
StreamUtil keyUtils = new StreamUtil(keyTable);
using (MemoryStream valueTable = new MemoryStream())
{
StreamUtil valueUtils = new StreamUtil(valueTable);
foreach (SfoEntry entry in sfoEntries.Values)
{
// write name
sfoUtil.WriteUInt16(Convert.ToUInt16(keyTable.Position));
keyUtils.WriteCStr(entry.keyName);
// write entry
sfoUtil.WriteByte(align); // align
sfoUtil.WriteByte(entry.type); // type
sfoUtil.WriteUInt32(entry.valueSize); // valueSize
sfoUtil.WriteUInt32(entry.totalSize); // totalSize
// write data
sfoUtil.WriteUInt32(Convert.ToUInt32(valueTable.Position)); // dataOffset
switch (entry.type)
{
case PSF_TYPE_VAL:
valueUtils.WriteUInt32(Convert.ToUInt32(entry.value));
valueUtils.WritePadding(0x00, Convert.ToInt32(entry.totalSize - entry.valueSize));
break;
case PSF_TYPE_STR:
valueUtils.WriteStrWithPadding(entry.value as String, 0x00, Convert.ToInt32(entry.totalSize));
break;
case PSF_TYPE_BIN:
valueUtils.WriteBytesWithPadding(entry.value as Byte[], 0x00, Convert.ToInt32(entry.totalSize));
break;
}
}
keyUtils.AlignTo(0x00, align);
UInt32 keyOffset = Convert.ToUInt32(sfoStream.Position);
keyTable.Seek(0x00, SeekOrigin.Begin);
keyTable.CopyTo(sfoStream);
UInt32 valueOffset = Convert.ToUInt32(sfoStream.Position);
valueTable.Seek(0x00, SeekOrigin.Begin);
valueTable.CopyTo(sfoStream);
sfoStream.Seek(0x8, SeekOrigin.Begin);
sfoUtil.WriteUInt32(keyOffset); // key offset
sfoUtil.WriteUInt32(valueOffset); // value offset
}
}
sfoStream.Seek(0x0, SeekOrigin.Begin);
sfoStream.CopyTo(SfoStream);
}
}
public static Sfo ReadSfo(Stream SfoStream)
{
Sfo sfoFile = new Sfo();
StreamUtil DataUtils = new StreamUtil(SfoStream);
// Read Sfo Header
UInt32 magic = DataUtils.ReadUInt32();
UInt32 version = DataUtils.ReadUInt32();
UInt32 keyOffset = DataUtils.ReadUInt32();
UInt32 valueOffset = DataUtils.ReadUInt32();
UInt32 count = DataUtils.ReadUInt32();
if (magic == SFO_MAGIC) //\x00PSF
{
for(int i = 0; i < count; i++)
{
SfoEntry entry = new SfoEntry();
UInt16 nameOffset = DataUtils.ReadUInt16();
entry.align = DataUtils.ReadByte();
entry.type = DataUtils.ReadByte();
entry.valueSize = DataUtils.ReadUInt32();
entry.totalSize = DataUtils.ReadUInt32();
UInt32 dataOffset = DataUtils.ReadUInt32();
int keyLocation = Convert.ToInt32(keyOffset + nameOffset);
entry.keyName = DataUtils.ReadStringAt(keyLocation);
int valueLocation = Convert.ToInt32(valueOffset + dataOffset);
switch (entry.type)
{
case PSF_TYPE_STR:
entry.value = DataUtils.ReadStringAt(valueLocation);
break;
case PSF_TYPE_VAL:
entry.value = DataUtils.ReadUInt32At(valueLocation);
break;
case PSF_TYPE_BIN:
entry.value = DataUtils.ReadBytesAt(valueLocation, Convert.ToInt32(entry.valueSize));
break;
}
sfoFile.sfoEntries[entry.keyName] = entry;
}
}
else
{
throw new InvalidDataException("Sfo Magic is Invalid.");
}
return sfoFile;
}
public static Sfo ReadSfo(byte[] Sfo)
{
using (MemoryStream SfoStream = new MemoryStream(Sfo))
{
return ReadSfo(SfoStream);
}
}
}
}

150
GayMaker-PS3/VersionManager.Designer.cs generated Normal file
View File

@ -0,0 +1,150 @@
namespace GayMaker_PS3
{
partial class VersionManager
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(VersionManager));
this.label1 = new System.Windows.Forms.Label();
this.DownloadList = new System.Windows.Forms.ListBox();
this.DownloadProgress = new System.Windows.Forms.ProgressBar();
this.StatusText = new System.Windows.Forms.Label();
this.DownloadButton = new System.Windows.Forms.Button();
this.label2 = new System.Windows.Forms.Label();
this.DownloadedList = new System.Windows.Forms.ListBox();
this.DeleteVersion = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(12, 9);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(109, 13);
this.label1.TabIndex = 0;
this.label1.Text = "Available Downloads:";
//
// DownloadList
//
this.DownloadList.FormattingEnabled = true;
this.DownloadList.Location = new System.Drawing.Point(12, 25);
this.DownloadList.Name = "DownloadList";
this.DownloadList.Size = new System.Drawing.Size(461, 186);
this.DownloadList.TabIndex = 1;
//
// DownloadProgress
//
this.DownloadProgress.Location = new System.Drawing.Point(12, 262);
this.DownloadProgress.Name = "DownloadProgress";
this.DownloadProgress.Size = new System.Drawing.Size(461, 23);
this.DownloadProgress.TabIndex = 2;
//
// StatusText
//
this.StatusText.AutoSize = true;
this.StatusText.Location = new System.Drawing.Point(9, 246);
this.StatusText.Name = "StatusText";
this.StatusText.Size = new System.Drawing.Size(52, 13);
this.StatusText.TabIndex = 3;
this.StatusText.Text = "Waiting...";
//
// DownloadButton
//
this.DownloadButton.Location = new System.Drawing.Point(12, 220);
this.DownloadButton.Name = "DownloadButton";
this.DownloadButton.Size = new System.Drawing.Size(461, 23);
this.DownloadButton.TabIndex = 4;
this.DownloadButton.Text = "Download This Version";
this.DownloadButton.UseVisualStyleBackColor = true;
this.DownloadButton.Click += new System.EventHandler(this.DownloadButton_Click);
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(12, 288);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(110, 13);
this.label2.TabIndex = 5;
this.label2.Text = "Allready Downloaded:";
//
// DownloadedList
//
this.DownloadedList.FormattingEnabled = true;
this.DownloadedList.Items.AddRange(new object[] {
"1.4.9999"});
this.DownloadedList.Location = new System.Drawing.Point(12, 304);
this.DownloadedList.Name = "DownloadedList";
this.DownloadedList.Size = new System.Drawing.Size(461, 199);
this.DownloadedList.TabIndex = 6;
//
// DeleteVersion
//
this.DeleteVersion.Location = new System.Drawing.Point(12, 509);
this.DeleteVersion.Name = "DeleteVersion";
this.DeleteVersion.Size = new System.Drawing.Size(461, 23);
this.DeleteVersion.TabIndex = 7;
this.DeleteVersion.Text = "Delete This Version";
this.DeleteVersion.UseVisualStyleBackColor = true;
this.DeleteVersion.Click += new System.EventHandler(this.DeleteVersion_Click);
//
// VersionManager
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(485, 544);
this.Controls.Add(this.DeleteVersion);
this.Controls.Add(this.DownloadedList);
this.Controls.Add(this.label2);
this.Controls.Add(this.DownloadButton);
this.Controls.Add(this.StatusText);
this.Controls.Add(this.DownloadProgress);
this.Controls.Add(this.DownloadList);
this.Controls.Add(this.label1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "VersionManager";
this.ShowInTaskbar = false;
this.Text = "GameMaker Studio Version Manager";
this.Load += new System.EventHandler(this.VersionManager_Load);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label label1;
private System.Windows.Forms.ListBox DownloadList;
private System.Windows.Forms.ProgressBar DownloadProgress;
private System.Windows.Forms.Label StatusText;
private System.Windows.Forms.Button DownloadButton;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.ListBox DownloadedList;
private System.Windows.Forms.Button DeleteVersion;
}
}

View File

@ -0,0 +1,327 @@
using GMTools;
using Ionic.Zip;
using System;
using System.Drawing;
using System.IO;
using System.Net;
using System.Net.Cache;
using System.Threading;
using System.Windows.Forms;
namespace GayMaker_PS3
{
public partial class VersionManager : Form
{
//private const int NUMBER_OF_CDN_URLS = 4; //Uncomment for GMS2
private const int NUMBER_OF_CDN_URLS = 2;
private string currentDownload = "";
private void CopyDir(string source, string target)
{
if (!Directory.Exists(target)) Directory.CreateDirectory(target);
string[] sysEntries = Directory.GetFileSystemEntries(source);
foreach (string sysEntry in sysEntries)
{
string fileName = Path.GetFileName(sysEntry);
string targetPath = Path.Combine(target, fileName);
if (Directory.Exists(sysEntry))
CopyDir(sysEntry, targetPath);
else
{
File.Copy(sysEntry, targetPath, true);
}
}
}
private string getUrlFileName(string url)
{
string filename = Path.GetFileName(new Uri(url).LocalPath);
if (!Path.HasExtension(filename))
filename = Path.ChangeExtension(filename, ".zip");
return filename;
}
public VersionManager()
{
//Bypass Windows DPI Scaling
Font = new Font(Font.Name, 8.25f * 96f / CreateGraphics().DpiX, Font.Style, Font.Unit, Font.GdiCharSet, Font.GdiVerticalFont);
InitializeComponent();
}
private void VersionManager_Load(object sender, EventArgs e)
{
this.Owner = Program.GMS;
Directory.CreateDirectory(@"versions");
for (int cdnIndex = 1; cdnIndex <= NUMBER_OF_CDN_URLS; cdnIndex++)
{
Thread downloadThread = new Thread(() =>
{
CDN.UseCDN(CDNUrls.FromIndex(cdnIndex));
});
downloadThread.Start();
while (downloadThread.IsAlive)
Application.DoEvents();
foreach (String Version in CDN.GetVersions("ps3"))
{
if (Version != "1.4.9999" || DownloadList.Items.Contains(Version))
DownloadList.Items.Add(Version);
}
}
foreach (String dir in Directory.GetDirectories(@"versions"))
{
DownloadedList.Items.Add(Path.GetFileName(dir));
DownloadList.Items.Remove(Path.GetFileName(dir));
}
}
private void startDownload(string URL, string path)
{
currentDownload = getUrlFileName(URL);
DownloadProgress.Value = 0;
DownloadProgress.Style = ProgressBarStyle.Continuous;
WebClient wc = new WebClient();
wc.CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore);
wc.Dispose();
WebClient client = new WebClient();
client.Headers.Add("pragma", "no-cache");
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
client.DownloadFileAsync(new Uri(URL), path);
while (client.IsBusy)
Application.DoEvents();
StatusText.Text = "Waiting...";
DownloadProgress.Value = 0;
DownloadProgress.Style = ProgressBarStyle.Continuous;
}
private void extractFile(string zipfile, string path, string password = "")
{
DownloadProgress.Style = ProgressBarStyle.Marquee;
Thread extractThread = new Thread(() =>
{
if (Directory.Exists(path))
{
while (true)
{
try
{
Directory.Delete(path, true);
}
catch (Exception) { };
break;
}
}
Thread.CurrentThread.IsBackground = true;
Invoke((Action)delegate { StatusText.Text = "Extracting: " + Path.GetFileName(zipfile); });
using (ZipFile archive = new ZipFile(zipfile))
{
archive.Password = password;
archive.Encryption = EncryptionAlgorithm.PkzipWeak;
archive.ExtractAll(path);
}
});
extractThread.Start();
while (extractThread.IsAlive)
Application.DoEvents();
StatusText.Text = "Waiting...";
DownloadProgress.Value = 0;
DownloadProgress.Style = ProgressBarStyle.Continuous;
File.Delete(zipfile);
}
private void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
DownloadProgress.Value = e.ProgressPercentage;
StatusText.Text = "Downloading: "+ currentDownload + " " + e.ProgressPercentage + "% (" + e.BytesReceived + "b / " + e.TotalBytesToReceive + "b)";
}
private void DownloadButton_Click(object sender, EventArgs e)
{
if (DownloadList.SelectedIndex <= -1) { return; }
DownloadList.Enabled = false;
DownloadButton.Enabled = false;
ControlBox = false;
string version = DownloadList.SelectedItem.ToString();
for (int cdnIndex = 1; cdnIndex <= NUMBER_OF_CDN_URLS; cdnIndex++)
{
Thread downloadThread = new Thread(() =>
{
CDN.UseCDN(CDNUrls.FromIndex(cdnIndex));
});
downloadThread.Start();
while (downloadThread.IsAlive)
Application.DoEvents();
string ps3 = CDN.GetModuleForVersion(version, "ps3");
if (ps3 != "NF")
{
string ps3Filename = getUrlFileName(ps3);
string ps3Password = CDN.GetPassword(ps3Filename);
string gamemakerUrl = CDN.GetModuleForVersion(version, "original");
string gamemakerFilename = getUrlFileName(gamemakerUrl);
string gamemakerPassword = CDN.GetPassword(gamemakerFilename);
startDownload(ps3, ps3Filename);
extractFile(ps3Filename, @"_ps3", ps3Password);
startDownload(gamemakerUrl, gamemakerFilename);
extractFile(gamemakerFilename, @"_gamemaker", gamemakerPassword);
DownloadProgress.Style = ProgressBarStyle.Marquee;
StatusText.Text = "Copying Files...";
Application.DoEvents();
Thread copyThread = new Thread(() =>
{
Directory.CreateDirectory(@"versions\\" + version + "\\Runner");
Directory.CreateDirectory(@"versions\\" + version + "\\Shaders");
try
{
File.Copy(@"_gamemaker\\GMAssetCompiler.exe", @"versions\\" + version + "\\GMAssetCompiler.exe", true);
File.Copy(@"_gamemaker\\ffmpeg.exe", @"versions\\" + version + "\\ffmpeg.exe", true);
File.Copy(@"_gamemaker\\BouncyCastle.Crypto.dll", @"versions\\" + version + "\\BouncyCastle.Crypto.dll", true);
File.Copy(@"_gamemaker\\spine-csharp.dll", @"versions\\" + version + "\\spine-csharp.dll", true);
File.Copy(@"_gamemaker\\SharpCompress.dll", @"versions\\" + version + "\\SharpCompress.dll", true);
File.Copy(@"_gamemaker\\Ionic.Zip.Reduced.dll", @"versions\\" + version + "\\Ionic.Zip.Reduced.dll", true);
File.Copy(@"_gamemaker\\Newtonsoft.Json.dll", @"versions\\" + version + "\\Newtonsoft.Json.dll", true);
}
catch (Exception) { };
CopyDir(@"Runner", @"versions\\" + version + "\\Runner");
CopyDir(@"_gamemaker\\Shaders", @"versions\\" + version + "\\Shaders");
File.Delete(@"versions\\" + version + "\\Runner\\eboot.bin");
try
{
File.Copy(@"_ps3\\PS3\\CG_PS3_PShaderCommon.shader", @"versions\\" + version + "\\Shaders\\CG_PS3_PShaderCommon.shader", true);
File.Copy(@"_ps3\\PS3\\CG_PS3_VShaderCommon.shader", @"versions\\" + version + "\\Shaders\\CG_PS3_VShaderCommon.shader", true);
File.Copy(@"_ps3\\PS3\\HLSL_to_CG_PS3.h", @"versions\\" + version + "\\Shaders\\HLSL_to_CG_PS3.h", true);
File.Copy(@"_ps3\\PS3\\snames", @"versions\\" + version + "\\Shaders\\snames", true);
File.Copy(@"_ps3\\PS3\\hnames", @"versions\\" + version + "\\Shaders\\hnames", true);
}
catch (Exception){ };
});
copyThread.Start();
while (copyThread.IsAlive)
Application.DoEvents();
DownloadProgress.Style = ProgressBarStyle.Marquee;
StatusText.Text = "Creating EBOOT.BIN ...";
Application.DoEvents();
P3Tools.UnmakeFself(@"_ps3\\PS3\\PS3Runner.self", @"_ps3\\PS3\\PS3Runner.elf");
P3Tools.RemoveEdataChk(@"_ps3\\PS3\PS3Runner.elf");
P3Tools.MakeFself(@"_ps3\\PS3\PS3Runner.elf", @"versions\\" + version + "\\Runner\\USRDIR\\EBOOT.BIN");
DownloadProgress.Style = ProgressBarStyle.Marquee;
StatusText.Text = "Deleting Unused Files...";
Application.DoEvents();
Thread deleteThread = new Thread(() =>
{
while(true)
{
try
{
Directory.Delete(@"_ps3", true);
Directory.Delete(@"_gamemaker", true);
}
catch (Exception) { };
break;
}
});
deleteThread.Start();
while (deleteThread.IsAlive)
Application.DoEvents();
DownloadProgress.Style = ProgressBarStyle.Continuous;
DownloadProgress.Value = 0;
StatusText.Text = "Waiting...";
DownloadedList.Items.Add(version);
DownloadList.Items.Remove(version);
DownloadList.Enabled = true;
DownloadButton.Enabled = true;
ControlBox = true;
}
}
}
private void DeleteVersion_Click(object sender, EventArgs e)
{
if (DownloadedList.SelectedIndex == -1) { return; }
string toRemove = DownloadedList.SelectedItem.ToString();
if (toRemove == "1.4.9999")
{
MessageBox.Show("Cannot delete builtin 1.4.9999 version!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
if (Directory.Exists(@"versions\\" + toRemove))
{
while (true)
{
try
{
Directory.Delete(@"versions\\" + toRemove, true);
}
catch (Exception) { };
break;
}
}
DownloadedList.Items.Remove(toRemove);
DownloadList.Items.Add(toRemove);
}
}
}
}

File diff suppressed because it is too large Load Diff

3
GayMaker-PS3/app.config Normal file
View File

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/></startup></configuration>

72
GayMaker-PS3/app.manifest Normal file
View File

@ -0,0 +1,72 @@
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<!-- UAC Manifest Options
If you want to change the Windows User Account Control level replace the
requestedExecutionLevel node with one of the following.
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
Specifying requestedExecutionLevel element will disable file and registry virtualization.
Remove this element if your application requires this virtualization for backwards
compatibility.
-->
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- A list of the Windows versions that this application has been tested on
and is designed to work with. Uncomment the appropriate elements
and Windows will automatically select the most compatible environment. -->
<!-- Windows Vista -->
<!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
<!-- Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
<!-- Windows 8 -->
<!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
<!-- Windows 8.1 -->
<!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
<!-- Windows 10 -->
<!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
</application>
</compatibility>
<!-- Lie to windows and say GayMaker is GPI-Aware so that windows wont rescale my shit.. -->
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
</windowsSettings>
</application>
<!-- Enable themes for Windows common controls and dialogs (Windows XP and later) -->
<!--
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
-->
</assembly>

BIN
GayMaker-PS3/icon0.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="BouncyCastle" version="1.8.4" targetFramework="net461" />
<package id="DotNetZip" version="1.13.3" targetFramework="net461" />
<package id="HtmlAgilityPack" version="1.9.2" targetFramework="net461" />
</packages>

167
LICENSE.md Normal file
View File

@ -0,0 +1,167 @@
This software uses the LibOrbisPkg library. Copyright 2018, 2019 Maxton
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.

Binary file not shown.

30
Packages/BouncyCastle.1.8.4/README.md vendored Normal file
View File

@ -0,0 +1,30 @@
# The Bouncy Castle Crypto Package For C Sharp
The Bouncy Castle Crypto package is a C\# implementation of cryptographic algorithms and protocols, it was developed by the Legion of the Bouncy Castle, a registered Australian Charity, with a little help! The Legion, and the latest goings on with this package, can be found at [http://www.bouncycastle.org](http://www.bouncycastle.org). In addition to providing basic cryptography algorithms, the package also provides support for CMS, TSP, X.509 certificate generation and a variety of other standards such as OpenPGP.
The Legion also gratefully acknowledges the contributions made to this package by others (see [here](http://www.bouncycastle.org/csharp/contributors.html) for the current list). If you would like to contribute to our efforts please feel free to get in touch with us or visit our [donations page](https://www.bouncycastle.org/donate), sponsor some specific work, or purchase a support contract through [Crypto Workshop](http://www.cryptoworkshop.com).
Except where otherwise stated, this software is distributed under a license based on the MIT X Consortium license. To view the license, [see here](http://www.bouncycastle.org/licence.html). The OpenPGP library also includes a modified BZIP2 library which is licensed under the [Apache Software License, Version 2.0](http://www.apache.org/licenses/).
**Note**: this source tree is not the FIPS version of the APIs - if you are interested in our FIPS version please contact us directly at [office@bouncycastle.org](mailto:office@bouncycastle.org).
## Mailing Lists
For those who are interested, there are 2 mailing lists for participation in this project. To subscribe use the links below and include the word subscribe in the message body. (To unsubscribe, replace **subscribe** with **unsubscribe** in the message body)
* [announce-crypto-csharp-request@bouncycastle.org](mailto:announce-crypto-csharp-request@bouncycastle.org)
This mailing list is for new release announcements only, general subscribers cannot post to it.
* [dev-crypto-csharp-request@bouncycastle.org](mailto:dev-crypto-csharp-request@bouncycastle.org)
This mailing list is for discussion of development of the package. This includes bugs, comments, requests for enhancements, questions about use or operation.
**NOTE:**You need to be subscribed to send mail to the above mailing list.
## Feedback
If you want to provide feedback directly to the members of **The Legion** then please use [feedback-crypto@bouncycastle.org](mailto:feedback-crypto@bouncycastle.org), if you want to help this project survive please consider [donating](https://www.bouncycastle.org/donate).
For bug reporting/requests you can report issues here on github, via feedback-crypto if required, and we also have a [Jira issue tracker](http://www.bouncycastle.org/jira). We will accept pull requests based on this repository as well.
## Finally
Enjoy!

Binary file not shown.

BIN
Packages/DotNetZip.1.13.3/.signature.p7s vendored Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,996 @@
{
"runtimeTarget": {
"name": ".NETStandard,Version=v2.0/",
"signature": "736d1c99e55ff4bbcec0fbaa1ab3cc51b8f9be8d"
},
"compilationOptions": {},
"targets": {
".NETStandard,Version=v2.0": {},
".NETStandard,Version=v2.0/": {
"HtmlAgilityPack/1.9.2": {
"dependencies": {
"NETStandard.Library": "2.0.3",
"System.Net.Http": "4.3.2",
"System.Xml.XPath": "4.3.0",
"System.Xml.XPath.XmlDocument": "4.3.0",
"System.Xml.XmlDocument": "4.3.0"
},
"runtime": {
"HtmlAgilityPack.dll": {}
}
},
"Microsoft.NETCore.Platforms/1.1.0": {},
"Microsoft.NETCore.Targets/1.1.0": {},
"NETStandard.Library/2.0.3": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0"
}
},
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
"runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
"runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
"runtime.native.System/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0"
}
},
"runtime.native.System.Net.Http/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0"
}
},
"runtime.native.System.Security.Cryptography.Apple/4.3.0": {
"dependencies": {
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "4.3.0"
}
},
"runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
"dependencies": {
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
"runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
}
},
"runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
"runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": {},
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
"runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
"runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
"runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
"runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
"System.Collections/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Collections.Concurrent/4.3.0": {
"dependencies": {
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Diagnostics.Tracing": "4.3.0",
"System.Globalization": "4.3.0",
"System.Reflection": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Threading": "4.3.0",
"System.Threading.Tasks": "4.3.0"
},
"runtime": {
"lib/netstandard1.3/System.Collections.Concurrent.dll": {
"assemblyVersion": "4.0.13.0",
"fileVersion": "4.6.24705.1"
}
}
},
"System.Diagnostics.Debug/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Diagnostics.DiagnosticSource/4.3.0": {
"dependencies": {
"System.Collections": "4.3.0",
"System.Diagnostics.Tracing": "4.3.0",
"System.Reflection": "4.3.0",
"System.Runtime": "4.3.0",
"System.Threading": "4.3.0"
},
"runtime": {
"lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll": {
"assemblyVersion": "4.0.1.0",
"fileVersion": "4.6.24705.1"
}
}
},
"System.Diagnostics.Tracing/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Globalization/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Globalization.Calendars/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Globalization": "4.3.0",
"System.Runtime": "4.3.0"
}
},
"System.Globalization.Extensions/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"System.Globalization": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.InteropServices": "4.3.0"
}
},
"System.IO/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading.Tasks": "4.3.0"
}
},
"System.IO.FileSystem/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.IO": "4.3.0",
"System.IO.FileSystem.Primitives": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading.Tasks": "4.3.0"
}
},
"System.IO.FileSystem.Primitives/4.3.0": {
"dependencies": {
"System.Runtime": "4.3.0"
},
"runtime": {
"lib/netstandard1.3/System.IO.FileSystem.Primitives.dll": {
"assemblyVersion": "4.0.2.0",
"fileVersion": "4.6.24705.1"
}
}
},
"System.Linq/4.3.0": {
"dependencies": {
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0"
},
"runtime": {
"lib/netstandard1.6/System.Linq.dll": {
"assemblyVersion": "4.1.1.0",
"fileVersion": "4.6.24705.1"
}
}
},
"System.Net.Http/4.3.2": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Diagnostics.DiagnosticSource": "4.3.0",
"System.Diagnostics.Tracing": "4.3.0",
"System.Globalization": "4.3.0",
"System.Globalization.Extensions": "4.3.0",
"System.IO": "4.3.0",
"System.IO.FileSystem": "4.3.0",
"System.Net.Primitives": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.OpenSsl": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Security.Cryptography.X509Certificates": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading": "4.3.0",
"System.Threading.Tasks": "4.3.0",
"runtime.native.System": "4.3.0",
"runtime.native.System.Net.Http": "4.3.0",
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
}
},
"System.Net.Primitives/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0",
"System.Runtime.Handles": "4.3.0"
}
},
"System.Reflection/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.IO": "4.3.0",
"System.Reflection.Primitives": "4.3.0",
"System.Runtime": "4.3.0"
}
},
"System.Reflection.Primitives/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Resources.ResourceManager/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Globalization": "4.3.0",
"System.Reflection": "4.3.0",
"System.Runtime": "4.3.0"
}
},
"System.Runtime/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0"
}
},
"System.Runtime.Extensions/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Runtime.Handles/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Runtime.InteropServices/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Reflection": "4.3.0",
"System.Reflection.Primitives": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Handles": "4.3.0"
}
},
"System.Runtime.Numerics/4.3.0": {
"dependencies": {
"System.Globalization": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0"
},
"runtime": {
"lib/netstandard1.3/System.Runtime.Numerics.dll": {
"assemblyVersion": "4.0.2.0",
"fileVersion": "4.6.24705.1"
}
}
},
"System.Security.Cryptography.Algorithms/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"System.Collections": "4.3.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Runtime.Numerics": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0",
"runtime.native.System.Security.Cryptography.Apple": "4.3.0",
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
}
},
"System.Security.Cryptography.Cng/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0"
}
},
"System.Security.Cryptography.Csp/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"System.IO": "4.3.0",
"System.Reflection": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading": "4.3.0"
}
},
"System.Security.Cryptography.Encoding/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"System.Collections": "4.3.0",
"System.Collections.Concurrent": "4.3.0",
"System.Linq": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0",
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
}
},
"System.Security.Cryptography.OpenSsl/4.3.0": {
"dependencies": {
"System.Collections": "4.3.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Runtime.Numerics": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0",
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
},
"runtime": {
"lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll": {
"assemblyVersion": "4.0.0.0",
"fileVersion": "1.0.24212.1"
}
}
},
"System.Security.Cryptography.Primitives/4.3.0": {
"dependencies": {
"System.Diagnostics.Debug": "4.3.0",
"System.Globalization": "4.3.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Threading": "4.3.0",
"System.Threading.Tasks": "4.3.0"
},
"runtime": {
"lib/netstandard1.3/System.Security.Cryptography.Primitives.dll": {
"assemblyVersion": "4.0.1.0",
"fileVersion": "4.6.24705.1"
}
}
},
"System.Security.Cryptography.X509Certificates/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Globalization": "4.3.0",
"System.Globalization.Calendars": "4.3.0",
"System.IO": "4.3.0",
"System.IO.FileSystem": "4.3.0",
"System.IO.FileSystem.Primitives": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Runtime.Numerics": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Security.Cryptography.Cng": "4.3.0",
"System.Security.Cryptography.Csp": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.OpenSsl": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading": "4.3.0",
"runtime.native.System": "4.3.0",
"runtime.native.System.Net.Http": "4.3.0",
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
}
},
"System.Text.Encoding/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Text.Encoding.Extensions/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0",
"System.Text.Encoding": "4.3.0"
}
},
"System.Text.RegularExpressions/4.3.0": {
"dependencies": {
"System.Collections": "4.3.0",
"System.Globalization": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Threading": "4.3.0"
},
"runtime": {
"lib/netstandard1.6/System.Text.RegularExpressions.dll": {
"assemblyVersion": "4.1.1.0",
"fileVersion": "4.6.24705.1"
}
}
},
"System.Threading/4.3.0": {
"dependencies": {
"System.Runtime": "4.3.0",
"System.Threading.Tasks": "4.3.0"
},
"runtime": {
"lib/netstandard1.3/System.Threading.dll": {
"assemblyVersion": "4.0.12.0",
"fileVersion": "4.6.24705.1"
}
}
},
"System.Threading.Tasks/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Threading.Tasks.Extensions/4.3.0": {
"dependencies": {
"System.Collections": "4.3.0",
"System.Runtime": "4.3.0",
"System.Threading.Tasks": "4.3.0"
},
"runtime": {
"lib/netstandard1.0/System.Threading.Tasks.Extensions.dll": {
"assemblyVersion": "4.1.0.0",
"fileVersion": "4.6.24705.1"
}
}
},
"System.Xml.ReaderWriter/4.3.0": {
"dependencies": {
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Globalization": "4.3.0",
"System.IO": "4.3.0",
"System.IO.FileSystem": "4.3.0",
"System.IO.FileSystem.Primitives": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Text.Encoding.Extensions": "4.3.0",
"System.Text.RegularExpressions": "4.3.0",
"System.Threading.Tasks": "4.3.0",
"System.Threading.Tasks.Extensions": "4.3.0"
},
"runtime": {
"lib/netstandard1.3/System.Xml.ReaderWriter.dll": {
"assemblyVersion": "4.1.0.0",
"fileVersion": "4.6.24705.1"
}
}
},
"System.Xml.XmlDocument/4.3.0": {
"dependencies": {
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Globalization": "4.3.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading": "4.3.0",
"System.Xml.ReaderWriter": "4.3.0"
},
"runtime": {
"lib/netstandard1.3/System.Xml.XmlDocument.dll": {
"assemblyVersion": "4.0.2.0",
"fileVersion": "4.6.24705.1"
}
}
},
"System.Xml.XPath/4.3.0": {
"dependencies": {
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Globalization": "4.3.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Threading": "4.3.0",
"System.Xml.ReaderWriter": "4.3.0"
},
"runtime": {
"lib/netstandard1.3/System.Xml.XPath.dll": {
"assemblyVersion": "4.0.2.0",
"fileVersion": "4.6.24705.1"
}
}
},
"System.Xml.XPath.XmlDocument/4.3.0": {
"dependencies": {
"System.Collections": "4.3.0",
"System.Globalization": "4.3.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Threading": "4.3.0",
"System.Xml.ReaderWriter": "4.3.0",
"System.Xml.XPath": "4.3.0",
"System.Xml.XmlDocument": "4.3.0"
},
"runtime": {
"lib/netstandard1.3/System.Xml.XPath.XmlDocument.dll": {
"assemblyVersion": "4.0.2.0",
"fileVersion": "4.6.24705.1"
}
}
}
}
},
"libraries": {
"HtmlAgilityPack/1.9.2": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"Microsoft.NETCore.Platforms/1.1.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==",
"path": "microsoft.netcore.platforms/1.1.0",
"hashPath": "microsoft.netcore.platforms.1.1.0.nupkg.sha512"
},
"Microsoft.NETCore.Targets/1.1.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==",
"path": "microsoft.netcore.targets/1.1.0",
"hashPath": "microsoft.netcore.targets.1.1.0.nupkg.sha512"
},
"NETStandard.Library/2.0.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==",
"path": "netstandard.library/2.0.3",
"hashPath": "netstandard.library.2.0.3.nupkg.sha512"
},
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-HdSSp5MnJSsg08KMfZThpuLPJpPwE5hBXvHwoKWosyHHfe8Mh5WKT0ylEOf6yNzX6Ngjxe4Whkafh5q7Ymac4Q==",
"path": "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
"hashPath": "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
},
"runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-+yH1a49wJMy8Zt4yx5RhJrxO/DBDByAiCzNwiETI+1S4mPdCu0OY4djdciC7Vssk0l22wQaDLrXxXkp+3+7bVA==",
"path": "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
"hashPath": "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
},
"runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-c3YNH1GQJbfIPJeCnr4avseugSqPrxwIqzthYyZDN6EuOyNOzq+y2KSUfRcXauya1sF4foESTgwM5e1A8arAKw==",
"path": "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
"hashPath": "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
},
"runtime.native.System/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==",
"path": "runtime.native.system/4.3.0",
"hashPath": "runtime.native.system.4.3.0.nupkg.sha512"
},
"runtime.native.System.Net.Http/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ZVuZJqnnegJhd2k/PtAbbIcZ3aZeITq3sj06oKfMBSfphW3HDmk/t4ObvbOk/JA/swGR0LNqMksAh/f7gpTROg==",
"path": "runtime.native.system.net.http/4.3.0",
"hashPath": "runtime.native.system.net.http.4.3.0.nupkg.sha512"
},
"runtime.native.System.Security.Cryptography.Apple/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-DloMk88juo0OuOWr56QG7MNchmafTLYWvABy36izkrLI5VledI0rq28KGs1i9wbpeT9NPQrx/wTf8U2vazqQ3Q==",
"path": "runtime.native.system.security.cryptography.apple/4.3.0",
"hashPath": "runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512"
},
"runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-NS1U+700m4KFRHR5o4vo9DSlTmlCKu/u7dtE5sUHVIPB+xpXxYQvgBgA6wEIeCz6Yfn0Z52/72WYsToCEPJnrw==",
"path": "runtime.native.system.security.cryptography.openssl/4.3.0",
"hashPath": "runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
},
"runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-b3pthNgxxFcD+Pc0WSEoC0+md3MyhRS6aCEeenvNE3Fdw1HyJ18ZhRFVJJzIeR/O/jpxPboB805Ho0T3Ul7w8A==",
"path": "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
"hashPath": "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
},
"runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-KeLz4HClKf+nFS7p/6Fi/CqyLXh81FpiGzcmuS8DGi9lUqSnZ6Es23/gv2O+1XVGfrbNmviF7CckBpavkBoIFQ==",
"path": "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
"hashPath": "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
},
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-kVXCuMTrTlxq4XOOMAysuNwsXWpYeboGddNGpIgNSZmv1b6r/s/DPk0fYMB7Q5Qo4bY68o48jt4T4y5BVecbCQ==",
"path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple/4.3.0",
"hashPath": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512"
},
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-X7IdhILzr4ROXd8mI1BUCQMSHSQwelUlBjF1JyTKCjXaOGn2fB4EKBxQbCK2VjO3WaWIdlXZL3W6TiIVnrhX4g==",
"path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
"hashPath": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
},
"runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-nyFNiCk/r+VOiIqreLix8yN+q3Wga9+SE8BCgkf+2BwEKiNx6DyvFjCgkfV743/grxv8jHJ8gUK4XEQw7yzRYg==",
"path": "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
"hashPath": "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
},
"runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ytoewC6wGorL7KoCAvRfsgoJPJbNq+64k2SqW6JcOAebWsFUvCCYgfzQMrnpvPiEl4OrblUlhF2ji+Q1+SVLrQ==",
"path": "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
"hashPath": "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
},
"runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-I8bKw2I8k58Wx7fMKQJn2R8lamboCAiHfHeV/pS65ScKWMMI0+wJkLYlEKvgW1D/XvSl/221clBoR2q9QNNM7A==",
"path": "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
"hashPath": "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
},
"runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-VB5cn/7OzUfzdnC8tqAIMQciVLiq2epm2NrAm1E9OjNRyG4lVhfR61SMcLizejzQP8R8Uf/0l5qOIbUEi+RdEg==",
"path": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
"hashPath": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
},
"System.Collections/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==",
"path": "system.collections/4.3.0",
"hashPath": "system.collections.4.3.0.nupkg.sha512"
},
"System.Collections.Concurrent/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==",
"path": "system.collections.concurrent/4.3.0",
"hashPath": "system.collections.concurrent.4.3.0.nupkg.sha512"
},
"System.Diagnostics.Debug/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==",
"path": "system.diagnostics.debug/4.3.0",
"hashPath": "system.diagnostics.debug.4.3.0.nupkg.sha512"
},
"System.Diagnostics.DiagnosticSource/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-tD6kosZnTAGdrEa0tZSuFyunMbt/5KYDnHdndJYGqZoNy00XVXyACd5d6KnE1YgYv3ne2CjtAfNXo/fwEhnKUA==",
"path": "system.diagnostics.diagnosticsource/4.3.0",
"hashPath": "system.diagnostics.diagnosticsource.4.3.0.nupkg.sha512"
},
"System.Diagnostics.Tracing/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==",
"path": "system.diagnostics.tracing/4.3.0",
"hashPath": "system.diagnostics.tracing.4.3.0.nupkg.sha512"
},
"System.Globalization/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==",
"path": "system.globalization/4.3.0",
"hashPath": "system.globalization.4.3.0.nupkg.sha512"
},
"System.Globalization.Calendars/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-GUlBtdOWT4LTV3I+9/PJW+56AnnChTaOqqTLFtdmype/L500M2LIyXgmtd9X2P2VOkmJd5c67H5SaC2QcL1bFA==",
"path": "system.globalization.calendars/4.3.0",
"hashPath": "system.globalization.calendars.4.3.0.nupkg.sha512"
},
"System.Globalization.Extensions/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==",
"path": "system.globalization.extensions/4.3.0",
"hashPath": "system.globalization.extensions.4.3.0.nupkg.sha512"
},
"System.IO/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==",
"path": "system.io/4.3.0",
"hashPath": "system.io.4.3.0.nupkg.sha512"
},
"System.IO.FileSystem/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==",
"path": "system.io.filesystem/4.3.0",
"hashPath": "system.io.filesystem.4.3.0.nupkg.sha512"
},
"System.IO.FileSystem.Primitives/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==",
"path": "system.io.filesystem.primitives/4.3.0",
"hashPath": "system.io.filesystem.primitives.4.3.0.nupkg.sha512"
},
"System.Linq/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==",
"path": "system.linq/4.3.0",
"hashPath": "system.linq.4.3.0.nupkg.sha512"
},
"System.Net.Http/4.3.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-y7hv0o0weI0j0mvEcBOdt1F3CAADiWlcw3e54m8TfYiRmBPDIsHElx8QUPDlY4x6yWXKPGN0Z2TuXCTPgkm5WQ==",
"path": "system.net.http/4.3.2",
"hashPath": "system.net.http.4.3.2.nupkg.sha512"
},
"System.Net.Primitives/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-qOu+hDwFwoZPbzPvwut2qATe3ygjeQBDQj91xlsaqGFQUI5i4ZnZb8yyQuLGpDGivEPIt8EJkd1BVzVoP31FXA==",
"path": "system.net.primitives/4.3.0",
"hashPath": "system.net.primitives.4.3.0.nupkg.sha512"
},
"System.Reflection/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==",
"path": "system.reflection/4.3.0",
"hashPath": "system.reflection.4.3.0.nupkg.sha512"
},
"System.Reflection.Primitives/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==",
"path": "system.reflection.primitives/4.3.0",
"hashPath": "system.reflection.primitives.4.3.0.nupkg.sha512"
},
"System.Resources.ResourceManager/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==",
"path": "system.resources.resourcemanager/4.3.0",
"hashPath": "system.resources.resourcemanager.4.3.0.nupkg.sha512"
},
"System.Runtime/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==",
"path": "system.runtime/4.3.0",
"hashPath": "system.runtime.4.3.0.nupkg.sha512"
},
"System.Runtime.Extensions/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==",
"path": "system.runtime.extensions/4.3.0",
"hashPath": "system.runtime.extensions.4.3.0.nupkg.sha512"
},
"System.Runtime.Handles/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==",
"path": "system.runtime.handles/4.3.0",
"hashPath": "system.runtime.handles.4.3.0.nupkg.sha512"
},
"System.Runtime.InteropServices/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==",
"path": "system.runtime.interopservices/4.3.0",
"hashPath": "system.runtime.interopservices.4.3.0.nupkg.sha512"
},
"System.Runtime.Numerics/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==",
"path": "system.runtime.numerics/4.3.0",
"hashPath": "system.runtime.numerics.4.3.0.nupkg.sha512"
},
"System.Security.Cryptography.Algorithms/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==",
"path": "system.security.cryptography.algorithms/4.3.0",
"hashPath": "system.security.cryptography.algorithms.4.3.0.nupkg.sha512"
},
"System.Security.Cryptography.Cng/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-03idZOqFlsKRL4W+LuCpJ6dBYDUWReug6lZjBa3uJWnk5sPCUXckocevTaUA8iT/MFSrY/2HXkOt753xQ/cf8g==",
"path": "system.security.cryptography.cng/4.3.0",
"hashPath": "system.security.cryptography.cng.4.3.0.nupkg.sha512"
},
"System.Security.Cryptography.Csp/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-X4s/FCkEUnRGnwR3aSfVIkldBmtURMhmexALNTwpjklzxWU7yjMk7GHLKOZTNkgnWnE0q7+BCf9N2LVRWxewaA==",
"path": "system.security.cryptography.csp/4.3.0",
"hashPath": "system.security.cryptography.csp.4.3.0.nupkg.sha512"
},
"System.Security.Cryptography.Encoding/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==",
"path": "system.security.cryptography.encoding/4.3.0",
"hashPath": "system.security.cryptography.encoding.4.3.0.nupkg.sha512"
},
"System.Security.Cryptography.OpenSsl/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-h4CEgOgv5PKVF/HwaHzJRiVboL2THYCou97zpmhjghx5frc7fIvlkY1jL+lnIQyChrJDMNEXS6r7byGif8Cy4w==",
"path": "system.security.cryptography.openssl/4.3.0",
"hashPath": "system.security.cryptography.openssl.4.3.0.nupkg.sha512"
},
"System.Security.Cryptography.Primitives/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==",
"path": "system.security.cryptography.primitives/4.3.0",
"hashPath": "system.security.cryptography.primitives.4.3.0.nupkg.sha512"
},
"System.Security.Cryptography.X509Certificates/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==",
"path": "system.security.cryptography.x509certificates/4.3.0",
"hashPath": "system.security.cryptography.x509certificates.4.3.0.nupkg.sha512"
},
"System.Text.Encoding/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==",
"path": "system.text.encoding/4.3.0",
"hashPath": "system.text.encoding.4.3.0.nupkg.sha512"
},
"System.Text.Encoding.Extensions/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-YVMK0Bt/A43RmwizJoZ22ei2nmrhobgeiYwFzC4YAN+nue8RF6djXDMog0UCn+brerQoYVyaS+ghy9P/MUVcmw==",
"path": "system.text.encoding.extensions/4.3.0",
"hashPath": "system.text.encoding.extensions.4.3.0.nupkg.sha512"
},
"System.Text.RegularExpressions/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-RpT2DA+L660cBt1FssIE9CAGpLFdFPuheB7pLpKpn6ZXNby7jDERe8Ua/Ne2xGiwLVG2JOqziiaVCGDon5sKFA==",
"path": "system.text.regularexpressions/4.3.0",
"hashPath": "system.text.regularexpressions.4.3.0.nupkg.sha512"
},
"System.Threading/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==",
"path": "system.threading/4.3.0",
"hashPath": "system.threading.4.3.0.nupkg.sha512"
},
"System.Threading.Tasks/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==",
"path": "system.threading.tasks/4.3.0",
"hashPath": "system.threading.tasks.4.3.0.nupkg.sha512"
},
"System.Threading.Tasks.Extensions/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-npvJkVKl5rKXrtl1Kkm6OhOUaYGEiF9wFbppFRWSMoApKzt2PiPHT2Bb8a5sAWxprvdOAtvaARS9QYMznEUtug==",
"path": "system.threading.tasks.extensions/4.3.0",
"hashPath": "system.threading.tasks.extensions.4.3.0.nupkg.sha512"
},
"System.Xml.ReaderWriter/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-GrprA+Z0RUXaR4N7/eW71j1rgMnEnEVlgii49GZyAjTH7uliMnrOU3HNFBr6fEDBCJCIdlVNq9hHbaDR621XBA==",
"path": "system.xml.readerwriter/4.3.0",
"hashPath": "system.xml.readerwriter.4.3.0.nupkg.sha512"
},
"System.Xml.XmlDocument/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-lJ8AxvkX7GQxpC6GFCeBj8ThYVyQczx2+f/cWHJU8tjS7YfI6Cv6bon70jVEgs2CiFbmmM8b9j1oZVx0dSI2Ww==",
"path": "system.xml.xmldocument/4.3.0",
"hashPath": "system.xml.xmldocument.4.3.0.nupkg.sha512"
},
"System.Xml.XPath/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-v1JQ5SETnQusqmS3RwStF7vwQ3L02imIzl++sewmt23VGygix04pEH+FCj1yWb+z4GDzKiljr1W7Wfvrx0YwgA==",
"path": "system.xml.xpath/4.3.0",
"hashPath": "system.xml.xpath.4.3.0.nupkg.sha512"
},
"System.Xml.XPath.XmlDocument/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-A/uxsWi/Ifzkmd4ArTLISMbfFs6XpRPsXZonrIqyTY70xi8t+mDtvSM5Os0RqyRDobjMBwIDHDL4NOIbkDwf7A==",
"path": "system.xml.xpath.xmldocument/4.3.0",
"hashPath": "system.xml.xpath.xmldocument.4.3.0.nupkg.sha512"
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
Packages/LibOrbisPkg.dll Normal file

Binary file not shown.

View File

@ -1,3 +1,87 @@
# GayMaker-PS3
# v1.2
Short Circuit Evaulations setting is now applied correctly
Fixed auto updater
Fixed version manager
GameMaker Studio -> PlayStation 3 Export tool
Download: https://github.com/KuromeSan/GayMaker-Studio/releases/download/v1.2/GayMaker-Studio.1.2.zip
# v1.1
Added version manager - now you can use any verison of GMS1.4 you want
Updated default version to 1.4.9999
Fixed a bug where changing the project wouldnt update the preview.
Fixed a bug where if you never opened "Global Game Settings" in GameMaker
Then GayMaker would crash (IT WAS A STRANGE PARSER DIFFERNTAL xD)
See issue [#9 on GayMaker](https://bitbucket.org/SilicaAndPina/gaymaker/issues/9/global-game-settings)
Added an update-checker it'll ask you if you want to update when a new update is avalible.
Download: https://bitbucket.org/SilicaAndPina/gaymaker-studio/downloads/GayMaker-Studio%201.1.zip
# v1.0
Inital Release!
Download: https://bitbucket.org/SilicaAndPina/gaymaker-studio/downloads/GayMaker-Studio.zip
#GayMaker: Studio
Homebrew GM:S Export tool (Based off the original [GayMaker Tool for PSVita](https://bitbucket.org/SilicaAndPina/gaymaker))
Run the program. and browse to a GameMaker Studio project file (.gmx).
you can also change the images, Title. and TitleID and then your game will be
"compiled" for PS4 and saved as a PKG to whereever you choose to save it
All projects are compiled using GameMaker 1.4.1804 - the latest version that works on 5.05
Packages are created using LibOrbisPkg, No changes made to the original source of the Libary.
However some snippits where taken from the PkgEditor and changed to not read from clipboard / drag n drop
Please show me any games you make with it! (though, please note i wont be too interested unless a girl dies)
#Shaders
When you compile a project that uses Shaders for the first time. you'll be prompted to browse to 'orbis-wave-psslc.exe'
This file will then be placed into the GayMaker: Studio install folder and you wont have to do it again after that.
Shaders will compile into the GXP format. which will then work on the console itself.
For *reasons*, i will not provide a link to orbis-wave-psslc.exe
# Controller Mapping
To Check DS4 Controls use the [GamePad](https://docs.yoyogames.com/source/dadiospice/002_reference/mouse,%20keyboard%20and%20other%20controls/gamepad%20input/index.html) commands
Here is what each control maps to:
gp_face1 = CROSS
gp_face2 = SQUARE
gp_face3 = CIRCLE
gp_face4 = TRIANGLE
gp_shoulderl = L1
gp_shoulderr = R1
gp_shoulderlb = L2
gp_shoulderrb = R2
gp_select = SELECT
gp_start = START
gp_stickl = L3
gp_stickr = R3
gp_padu = DPAD UP
gp_padd = DPAD DOWN
gp_padl = DPAD LEFT
gp_padr = DPAD RIGHT
gp_axislh = LEFT ANOLOUGE HORIZONTAL AXIES
gp_axislv = LEFT ANOLOUGE VERTICAL AXIES
gp_axisrh = RIGHT ANOLOUGE HORIZONTAL AXIES
gp_axisrv = RIGHT ANOLOUGE VERTICAL AXIES
# Homebrew Repo
This repository has some GameMaker: Studio Homebrew games / ports.
https://bitbucket.org/SilicaAndPina/gm-shb
# Credits
Thanks YoYoGames for GameMaker, "YOYO_DEV_ENABLE", and having a unsecured CDN
Thanks To the devs of DnSpy for indirectly making this possible ;)
Thanks To MaxTon for [LibOrbisPkg](https://github.com/maxton/LibOrbisPkg)
Thanks To ignacio1420 and Nagato for Testing!
Thanks To flat_z for [make_fself.py](https://twitter.com/flat_z/status/954856357664100354)

1
latest.md Normal file
View File

@ -0,0 +1 @@
1.0~https://github.com/LiEnby/GayMaker-PS3/releases/download/v1.0/GayMaker-Studio.1.0.zip