From 976150ab4b45420ae172cb418e22d19eae49b37d Mon Sep 17 00:00:00 2001 From: TommySalami Date: Mon, 21 Jul 2025 23:19:39 -0600 Subject: [PATCH] Add project files. --- .gitattributes | 63 + .gitignore | 366 ++ CHANGELOG.md | 23 + CODE_OF_CONDUCT.md | 127 + CONTRIBUTING.md | 25 + LICENSE | 42 + PatchEmAll-CLI/App.config | 6 + PatchEmAll-CLI/App.ico | Bin 0 -> 4286 bytes PatchEmAll-CLI/PatchEmAll-CLI.csproj | 108 + PatchEmAll-CLI/Program.cs | 54 + PatchEmAll-CLI/Properties/AssemblyInfo.cs | 36 + .../Properties/Resources.Designer.cs | 63 + PatchEmAll-CLI/Properties/Resources.resx | 120 + .../BASHes/PatchEmAll-Build-Patches-Dat.sh | 4 + .../BASHes/PatchEmAll-Build-Patches.sh | 4 + .../Resources/BASHes/PatchEmAll-Build-ROMs.sh | 4 + .../BASHes/PatchEmAll-Print-Donation-Info.sh | 4 + .../Resources/BASHes/PatchEmAll-Print-Help.sh | 4 + .../BASHes/PatchEmAll-Print-License.sh | 4 + .../BASHes/PatchEmAll-Print-Version.sh | 4 + .../BASHes/PatchEmAll-Save-Options.sh | 4 + .../put your bash files in this directory.txt | 1 + .../Batches/PatchEmAll-Build-Patches-Dat.bat | 7 + .../Batches/PatchEmAll-Build-Patches.bat | 7 + .../Batches/PatchEmAll-Build-ROMs.bat | 7 + .../PatchEmAll-Print-Donation-Info.bat | 7 + .../Batches/PatchEmAll-Print-Help.bat | 7 + .../Batches/PatchEmAll-Print-License.bat | 7 + .../Batches/PatchEmAll-Print-Version.bat | 7 + .../Batches/PatchEmAll-Save-Options.bat | 7 + ...put your batch files in this directory.txt | 1 + PatchEmAll-CLI/packages.config | 6 + PatchEmAll-GUI/App.config | 6 + PatchEmAll-GUI/App.ico | Bin 0 -> 4286 bytes PatchEmAll-GUI/FrmPatchEmAll.Designer.cs | 1283 ++++++ PatchEmAll-GUI/FrmPatchEmAll.cs | 2101 ++++++++++ PatchEmAll-GUI/FrmPatchEmAll.resx | 3544 +++++++++++++++++ PatchEmAll-GUI/PatchEmAll-GUI.csproj | 128 + PatchEmAll-GUI/Program.cs | 34 + PatchEmAll-GUI/Properties/AssemblyInfo.cs | 36 + .../Properties/Resources.Designer.cs | 339 ++ PatchEmAll-GUI/Properties/Resources.resx | 205 + PatchEmAll-GUI/Resources/Audio/AddRemove.wav | Bin 0 -> 1063 bytes PatchEmAll-GUI/Resources/Audio/Complete.wav | Bin 0 -> 19115 bytes PatchEmAll-GUI/Resources/Audio/Confirm.wav | Bin 0 -> 1656 bytes PatchEmAll-GUI/Resources/Audio/Fail.wav | Bin 0 -> 4596 bytes .../Resources/Images/AddPrepatch_16x16.png | Bin 0 -> 667 bytes .../Resources/Images/BuildDatafile_32x32.png | Bin 0 -> 1533 bytes .../Resources/Images/BuildPatches_32x32.png | Bin 0 -> 1620 bytes .../Resources/Images/BuildROMs_32x32.png | Bin 0 -> 1751 bytes .../Resources/Images/Cancel_16x16.png | Bin 0 -> 933 bytes .../Resources/Images/ChangeOption_16x16.png | Bin 0 -> 830 bytes .../Images/CheckPrepatches_16x16.png | Bin 0 -> 678 bytes .../Resources/Images/Donate_32x32.png | Bin 0 -> 3420 bytes .../Resources/Images/Exit_32x32.png | Bin 0 -> 1701 bytes .../Resources/Images/Help_32x32.png | Bin 0 -> 2060 bytes PatchEmAll-GUI/Resources/Images/Key_32x32.png | Bin 0 -> 1821 bytes .../Resources/Images/License_32x32.png | Bin 0 -> 2415 bytes .../Resources/Images/LoadDat_16x16.png | Bin 0 -> 785 bytes .../Resources/Images/LoadOptions_32x32.png | Bin 0 -> 2178 bytes .../Resources/Images/LoadPPD_16x16.png | Bin 0 -> 683 bytes PatchEmAll-GUI/Resources/Images/Log_32x32.png | Bin 0 -> 1457 bytes .../Resources/Images/Options_32x32.png | Bin 0 -> 2025 bytes .../Resources/Images/PPDBuilder_32x32.png | Bin 0 -> 1882 bytes .../Images/RemoveAllPrepatches_16x16.png | Bin 0 -> 658 bytes .../Resources/Images/RemovePrepatch_16x16.png | Bin 0 -> 463 bytes .../Resources/Images/SaveLog_32x32.png | Bin 0 -> 1708 bytes .../Resources/Images/SaveOptions_32x32.png | Bin 0 -> 2203 bytes .../Resources/Images/SavePPD_16x16.png | Bin 0 -> 677 bytes .../Resources/Images/Toolbar_32x32.png | Bin 0 -> 1386 bytes PatchEmAll-GUI/packages.config | 5 + .../PatchEmAll-Installer.vdproj | 2075 ++++++++++ PatchEmAll-Release/PatchEmAll-Release.csproj | 130 + PatchEmAll-Release/packages.config | 4 + PatchEmAll.sln | 65 + PatchEmAll/App.ico | Bin 0 -> 4286 bytes PatchEmAll/CRC32CryptoServiceProvider.cs | 180 + PatchEmAll/PatchEmAll.cs | 1274 ++++++ PatchEmAll/PatchEmAll.csproj | 102 + PatchEmAll/PatchEmAll.nuspec | 44 + PatchEmAll/PatchEmAll.snk | Bin 0 -> 596 bytes PatchEmAll/Properties/AssemblyInfo.cs | 36 + PatchEmAll/Properties/Resources.Designer.cs | 149 + PatchEmAll/Properties/Resources.resx | 133 + .../Resources/Docs/PatchEmAll-DONATIONS.txt | 15 + .../Resources/Docs/PatchEmAll-HELP-CMD.txt | 75 + PatchEmAll/Resources/Docs/PatchEmAll-HELP.txt | 163 + .../Resources/Docs/PatchEmAll-LICENSE.rtf | Bin 0 -> 2471 bytes .../Resources/Docs/PatchEmAll-LICENSE.txt | 42 + PatchEmAll/Resources/Icons/PatchEmAll.ico | Bin 0 -> 4286 bytes PatchEmAll/Resources/Images/PatchEmAll.png | Bin 0 -> 4790 bytes .../Resources/Libs/xdelta3-3.1.0-i686.exe | Bin 0 -> 579138 bytes .../Resources/Libs/xdelta3-3.1.0-x86_64.exe | Bin 0 -> 624463 bytes .../Dats/put your dats in this directory.txt | 1 + ...t your options files in this directory.txt | 1 + .../put your patches in this directory.txt | 1 + .../ROMs/put your roms in this directory.txt | 1 + ...ut your xdelta files in this directory.txt | 1 + PatchEmAll/packages.config | 6 + README.md | 56 + TODO.md | 5 + 101 files changed, 13369 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 CHANGELOG.md create mode 100644 CODE_OF_CONDUCT.md create mode 100644 CONTRIBUTING.md create mode 100644 LICENSE create mode 100644 PatchEmAll-CLI/App.config create mode 100644 PatchEmAll-CLI/App.ico create mode 100644 PatchEmAll-CLI/PatchEmAll-CLI.csproj create mode 100644 PatchEmAll-CLI/Program.cs create mode 100644 PatchEmAll-CLI/Properties/AssemblyInfo.cs create mode 100644 PatchEmAll-CLI/Properties/Resources.Designer.cs create mode 100644 PatchEmAll-CLI/Properties/Resources.resx create mode 100644 PatchEmAll-CLI/Resources/BASHes/PatchEmAll-Build-Patches-Dat.sh create mode 100644 PatchEmAll-CLI/Resources/BASHes/PatchEmAll-Build-Patches.sh create mode 100644 PatchEmAll-CLI/Resources/BASHes/PatchEmAll-Build-ROMs.sh create mode 100644 PatchEmAll-CLI/Resources/BASHes/PatchEmAll-Print-Donation-Info.sh create mode 100644 PatchEmAll-CLI/Resources/BASHes/PatchEmAll-Print-Help.sh create mode 100644 PatchEmAll-CLI/Resources/BASHes/PatchEmAll-Print-License.sh create mode 100644 PatchEmAll-CLI/Resources/BASHes/PatchEmAll-Print-Version.sh create mode 100644 PatchEmAll-CLI/Resources/BASHes/PatchEmAll-Save-Options.sh create mode 100644 PatchEmAll-CLI/Resources/BASHes/put your bash files in this directory.txt create mode 100644 PatchEmAll-CLI/Resources/Batches/PatchEmAll-Build-Patches-Dat.bat create mode 100644 PatchEmAll-CLI/Resources/Batches/PatchEmAll-Build-Patches.bat create mode 100644 PatchEmAll-CLI/Resources/Batches/PatchEmAll-Build-ROMs.bat create mode 100644 PatchEmAll-CLI/Resources/Batches/PatchEmAll-Print-Donation-Info.bat create mode 100644 PatchEmAll-CLI/Resources/Batches/PatchEmAll-Print-Help.bat create mode 100644 PatchEmAll-CLI/Resources/Batches/PatchEmAll-Print-License.bat create mode 100644 PatchEmAll-CLI/Resources/Batches/PatchEmAll-Print-Version.bat create mode 100644 PatchEmAll-CLI/Resources/Batches/PatchEmAll-Save-Options.bat create mode 100644 PatchEmAll-CLI/Resources/Batches/put your batch files in this directory.txt create mode 100644 PatchEmAll-CLI/packages.config create mode 100644 PatchEmAll-GUI/App.config create mode 100644 PatchEmAll-GUI/App.ico create mode 100644 PatchEmAll-GUI/FrmPatchEmAll.Designer.cs create mode 100644 PatchEmAll-GUI/FrmPatchEmAll.cs create mode 100644 PatchEmAll-GUI/FrmPatchEmAll.resx create mode 100644 PatchEmAll-GUI/PatchEmAll-GUI.csproj create mode 100644 PatchEmAll-GUI/Program.cs create mode 100644 PatchEmAll-GUI/Properties/AssemblyInfo.cs create mode 100644 PatchEmAll-GUI/Properties/Resources.Designer.cs create mode 100644 PatchEmAll-GUI/Properties/Resources.resx create mode 100644 PatchEmAll-GUI/Resources/Audio/AddRemove.wav create mode 100644 PatchEmAll-GUI/Resources/Audio/Complete.wav create mode 100644 PatchEmAll-GUI/Resources/Audio/Confirm.wav create mode 100644 PatchEmAll-GUI/Resources/Audio/Fail.wav create mode 100644 PatchEmAll-GUI/Resources/Images/AddPrepatch_16x16.png create mode 100644 PatchEmAll-GUI/Resources/Images/BuildDatafile_32x32.png create mode 100644 PatchEmAll-GUI/Resources/Images/BuildPatches_32x32.png create mode 100644 PatchEmAll-GUI/Resources/Images/BuildROMs_32x32.png create mode 100644 PatchEmAll-GUI/Resources/Images/Cancel_16x16.png create mode 100644 PatchEmAll-GUI/Resources/Images/ChangeOption_16x16.png create mode 100644 PatchEmAll-GUI/Resources/Images/CheckPrepatches_16x16.png create mode 100644 PatchEmAll-GUI/Resources/Images/Donate_32x32.png create mode 100644 PatchEmAll-GUI/Resources/Images/Exit_32x32.png create mode 100644 PatchEmAll-GUI/Resources/Images/Help_32x32.png create mode 100644 PatchEmAll-GUI/Resources/Images/Key_32x32.png create mode 100644 PatchEmAll-GUI/Resources/Images/License_32x32.png create mode 100644 PatchEmAll-GUI/Resources/Images/LoadDat_16x16.png create mode 100644 PatchEmAll-GUI/Resources/Images/LoadOptions_32x32.png create mode 100644 PatchEmAll-GUI/Resources/Images/LoadPPD_16x16.png create mode 100644 PatchEmAll-GUI/Resources/Images/Log_32x32.png create mode 100644 PatchEmAll-GUI/Resources/Images/Options_32x32.png create mode 100644 PatchEmAll-GUI/Resources/Images/PPDBuilder_32x32.png create mode 100644 PatchEmAll-GUI/Resources/Images/RemoveAllPrepatches_16x16.png create mode 100644 PatchEmAll-GUI/Resources/Images/RemovePrepatch_16x16.png create mode 100644 PatchEmAll-GUI/Resources/Images/SaveLog_32x32.png create mode 100644 PatchEmAll-GUI/Resources/Images/SaveOptions_32x32.png create mode 100644 PatchEmAll-GUI/Resources/Images/SavePPD_16x16.png create mode 100644 PatchEmAll-GUI/Resources/Images/Toolbar_32x32.png create mode 100644 PatchEmAll-GUI/packages.config create mode 100644 PatchEmAll-Installer/PatchEmAll-Installer.vdproj create mode 100644 PatchEmAll-Release/PatchEmAll-Release.csproj create mode 100644 PatchEmAll-Release/packages.config create mode 100644 PatchEmAll.sln create mode 100644 PatchEmAll/App.ico create mode 100644 PatchEmAll/CRC32CryptoServiceProvider.cs create mode 100644 PatchEmAll/PatchEmAll.cs create mode 100644 PatchEmAll/PatchEmAll.csproj create mode 100644 PatchEmAll/PatchEmAll.nuspec create mode 100644 PatchEmAll/PatchEmAll.snk create mode 100644 PatchEmAll/Properties/AssemblyInfo.cs create mode 100644 PatchEmAll/Properties/Resources.Designer.cs create mode 100644 PatchEmAll/Properties/Resources.resx create mode 100644 PatchEmAll/Resources/Docs/PatchEmAll-DONATIONS.txt create mode 100644 PatchEmAll/Resources/Docs/PatchEmAll-HELP-CMD.txt create mode 100644 PatchEmAll/Resources/Docs/PatchEmAll-HELP.txt create mode 100644 PatchEmAll/Resources/Docs/PatchEmAll-LICENSE.rtf create mode 100644 PatchEmAll/Resources/Docs/PatchEmAll-LICENSE.txt create mode 100644 PatchEmAll/Resources/Icons/PatchEmAll.ico create mode 100644 PatchEmAll/Resources/Images/PatchEmAll.png create mode 100644 PatchEmAll/Resources/Libs/xdelta3-3.1.0-i686.exe create mode 100644 PatchEmAll/Resources/Libs/xdelta3-3.1.0-x86_64.exe create mode 100644 PatchEmAll/Resources/Output/Dats/put your dats in this directory.txt create mode 100644 PatchEmAll/Resources/Output/Options/put your options files in this directory.txt create mode 100644 PatchEmAll/Resources/Output/Patches/put your patches in this directory.txt create mode 100644 PatchEmAll/Resources/Output/ROMs/put your roms in this directory.txt create mode 100644 PatchEmAll/Resources/Output/Xdelta/put your xdelta files in this directory.txt create mode 100644 PatchEmAll/packages.config create mode 100644 README.md create mode 100644 TODO.md diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..1ff0c42 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,63 @@ +############################################################################### +# Set default behavior to automatically normalize line endings. +############################################################################### +* text=auto + +############################################################################### +# Set default behavior for command prompt diff. +# +# This is need for earlier builds of msysgit that does not have it on by +# default for csharp files. +# Note: This is only used by command line +############################################################################### +#*.cs diff=csharp + +############################################################################### +# Set the merge driver for project and solution files +# +# Merging from the command prompt will add diff markers to the files if there +# are conflicts (Merging from VS is not affected by the settings below, in VS +# the diff markers are never inserted). Diff markers may cause the following +# file extensions to fail to load in VS. An alternative would be to treat +# these files as binary and thus will always conflict and require user +# intervention with every merge. To do so, just uncomment the entries below +############################################################################### +#*.sln merge=binary +#*.csproj merge=binary +#*.vbproj merge=binary +#*.vcxproj merge=binary +#*.vcproj merge=binary +#*.dbproj merge=binary +#*.fsproj merge=binary +#*.lsproj merge=binary +#*.wixproj merge=binary +#*.modelproj merge=binary +#*.sqlproj merge=binary +#*.wwaproj merge=binary + +############################################################################### +# behavior for image files +# +# image files are treated as binary by default. +############################################################################### +#*.jpg binary +#*.png binary +#*.gif binary + +############################################################################### +# diff behavior for common document formats +# +# Convert binary document formats to text before diffing them. This feature +# is only available from the command line. Turn it on by uncommenting the +# entries below. +############################################################################### +#*.doc diff=astextplain +#*.DOC diff=astextplain +#*.docx diff=astextplain +#*.DOCX diff=astextplain +#*.dot diff=astextplain +#*.DOT diff=astextplain +#*.pdf diff=astextplain +#*.PDF diff=astextplain +#*.rtf diff=astextplain +#*.RTF diff=astextplain diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5d801b1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,366 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Oo]ut/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd + +# Extra misc solution files +misc/ diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..cb047b2 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,23 @@ +Version 1.5.7 - 2025-07-21 + +* Update repository info and related URLs +* Minor changes + +Version 1.5.6 - 2024-09-01 + +* Update repository info and related URLs +* Update some NuGet Packages +* Minor changes + +Version 1.5.5 - 2023-05-20 + +* Rename BuildEmAll to PatchEmAll +* Minor code changes + +Version 1.5.4 - 2023-04-11 + +* Update to .NET Framework 4.8 +* Update all NuGet Packages +* Update Release project +* Update Installer project +* Update and add resource files diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..41dd9eb --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,127 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..6305634 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,25 @@ +# @PatchEmAll +### The Original Automated ROM Patcher +## Contributing +Let's work better together. We are looking to collaborate with like-minded people who want to contribute in any capacity. Collaboration is open to everyone and we need your help if you are a: +* Collector +* Database Administrator +* Datter +* Developer +* Dumper +* Graphic Artist +* Translator +* Player +* Tester + +Feel free to: +* Fork the repository +* Create an issue +* Branch your repository with the issue number and a meaningful name related to the changes you are making +* Create a pull request + +## Contact +GitEmAll: [https://gitemall.devemall.int.eu.org/TommySalami/PatchEmAll](https://gitemall.devemall.int.eu.org/TommySalami/PatchEmAll "GitEmAll") + +--- +###### Copyright (c) 2016-2025 PatchEmAll - All Rights Reserved v2025-07-21-00 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..25cd386 --- /dev/null +++ b/LICENSE @@ -0,0 +1,42 @@ +------------------------------------------------------------------------------- +PatchEmAll - License version 20250721 +Copyright (c) 2016-2025 PatchEmAll - All Rights Reserved +*************************************************************** + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Redistributions in any form are not permitted whatsoever, +under any conditions. + +2. This software may not be reverse engineered, decompiled, +or disassembled. + +3. PatchEmAll may publish revised and/or new versions of the +license from time to time. Each version will be given a +distinguishing version number. No one other than +PatchEmAll has the right to modify the terms applicable +to covered code created under this License. + +4. It is your responsibility to use this software in accordance +with all applicable laws. + +*************************************************************** + +THIS SOFTWARE IS PROVIDED BY THE PATCHEMALL DEVELOPMENT TEAM +'AS IS' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT +NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT +SHALL THE PATCHEMALL DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. + +*************************************************************** + +This product includes Xdelta software, freely available from + diff --git a/PatchEmAll-CLI/App.config b/PatchEmAll-CLI/App.config new file mode 100644 index 0000000..4bfa005 --- /dev/null +++ b/PatchEmAll-CLI/App.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/PatchEmAll-CLI/App.ico b/PatchEmAll-CLI/App.ico new file mode 100644 index 0000000000000000000000000000000000000000..63922ff1ce0099105b02a876f6f9b281d5311d98 GIT binary patch literal 4286 zcmcgwYfx0@89rPh8MKX)YC1{VsZDK~wwX5lk?Hj2)WozMokT!T6cNKM#DdXQ(2gUC zNx(!~s}rKtNl4_f+;3sIi`?&5xd}vA5SGhwkp-5+WtXS#`z^cf5<2;%hk5q<_I;n{ zea`vLciyvuB-zm4mMs#0O7R;d=_yH)o+nU9`V)cU;-K8>Bj<>;F6S-Dlh8!a5#)yq z_P9;(B5#MR0O>$>fHXwFBgP1Mdnx^;I^~-ZRwHYTn2E!=wP4Dx9{+DGf2k?cSDGcj z3_s&M{S65j-YapAt;D~iSo&cJX@pcSBY4g+&WSn}e6GQ@%yCOEUrG0+k0fXKke3O> z&+v6X(ZBa0=bcx?oNFf^vPH7*lgK#nYvhGHqx4Dus&1SloI>f|NH~$Wo4v2WU|R+16VE|;dK=OMpT%fr1*SFq$PIY`X|!IJUhGYN z4B^XT%0UUWkwI8C7%<#fgRYV!=(H1H!zFnJ(?gvYZq7zu$>-=Ph!E&2iNtVI7N*sA zh%+s?bJ|ICmnLKQP8CTFsQ=>ELLgD*=#{BG*(9BK@q2j+mNbz}!a>jhp0SQSSMkITXj$r!E zIj)iDZi5u>O(?%|1T$lUqSk_L8n?oBioD5>y%P`EF~CS5UFBsD%#8NZ`s=YcuY;;S zpY~cHox^6*+6tbDzvf7s6rW8f`Q!*xb-7rSb)wd+Mun;fFX3UKlM~$S85B1n(Zdm0 z$9{qO&)&vJ%S|lJ&qAy2f->l*h~H;x=9&1bN9JS(ZpG9<2lS*JX)Q!U{yyx&&hx}k(L#aDum{hl-8eSSnaBgaZd-m!aZ8Hn9uhZtuY#O{9* zW!Fz&w5P>*@94Q(=4Wp~#>BlYR7bxH#i3`6TnnAT^J(fup&0MKL;GeuZN@N+bH3 zDZil8A~$pwa!&un+%H6q)_iViOlZdYIv`I|@3c5{_eY@&-iD~xXzj>b;p!mA(%xu_ zJ8QuLbdw|0%gdo|DWZN@h=G<;>f-}eoIBZ9(V>j6icM3$VJ>Ubw~OeVQBK!2Y{j{q z7>-!p$K;*3-%(CF_yqbZlg%9NJ!5wpaj!ZJIe&i<%E0H)TO392qgoi29_)>=u4-sH zE6qC2X}as6DvhOn@jSAR{}TOGDO9UL^dJ-QUQIfZJU3E5bCgrP9+%UpFAq28n9|TM z&SRpt32o`;so&XCKb6oJa}pChjp7|-BJ%r2JJ@deDtgs;PXn41r-deQza3gr!$mFq zqHN}kv=$(P-qY-z>F*$C2CTB;*DcXPt5V!Yp&%NmBdz3OZGvn%5)a)UMy9Oc50&2r(% zXHfUC8|KFQt!nXon4!HhGp?q!owLf#Yll&Lc?W9#vmNtOYO5UgD%Q-<^TahQkGY8f z)JNm0~d`w<1gFV^1D(qKs&AFG*aA_BsBAhW;PW^9AYbmpu>lbuTS4N`t!tYQW z_M$-Th2KJ5@u_&2=3*D3#c+qp*z-B zSA zuE5VCx58tt85CR5_ayk4b-h%>swQ!`W_Q%?uRigV$Uy?ie(|j?IdF+vZz1Wky zXVpsYiXo*phO&GxoEwCZf?z_(Lqf3d7|QYmdy;pJ=H}m=$8H7njTaq-5pUCY>>+_` x8-2*LpS;~B%TCzcuL#~fRdupdTYYMZF!zw5C9iVwbh%$1Y`^;d0gw9o{{ZklfEWM( literal 0 HcmV?d00001 diff --git a/PatchEmAll-CLI/PatchEmAll-CLI.csproj b/PatchEmAll-CLI/PatchEmAll-CLI.csproj new file mode 100644 index 0000000..15a01c2 --- /dev/null +++ b/PatchEmAll-CLI/PatchEmAll-CLI.csproj @@ -0,0 +1,108 @@ + + + + + Debug + AnyCPU + {2D9F35C9-4274-429F-851E-96DAE240B59E} + Exe + PatchEmAll_CLI + PatchEmAll-CLI + v4.8 + 512 + true + true + + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + bin\Debug\PatchEmAll-CLI.xml + + + AnyCPU + none + true + bin\Release\ + TRACE + prompt + 4 + + + true + + + App.ico + + + + ..\packages\Serilog.2.12.0\lib\net47\Serilog.dll + + + ..\packages\Serilog.Sinks.Console.4.1.0\lib\net45\Serilog.Sinks.Console.dll + + + ..\packages\Serilog.Sinks.LogEmAll.0.0.7\lib\net461\Serilog.Sinks.LogEmAll.dll + + + + + + + + + + + + True + True + Resources.resx + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + + + {956e3b6c-eee3-44a9-be64-7b3ae0238924} + PatchEmAll + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/PatchEmAll-CLI/Program.cs b/PatchEmAll-CLI/Program.cs new file mode 100644 index 0000000..993dc81 --- /dev/null +++ b/PatchEmAll-CLI/Program.cs @@ -0,0 +1,54 @@ +using Serilog; +using Serilog.Formatting.Display; +using Serilog.Sinks.LogEmAll; + +namespace PatchEmAll_CLI +{ + /// + /// The Main Program Class. + /// + class Program + { + /// + /// The Main entry point for the program. + /// + static void Main(string[] args) + { + // Configure the Logger. + ConfigureSerilog(); + + // Create a new program object. + PatchEmAll.PatchEmAll pea = new PatchEmAll.PatchEmAll(); + + // Set the title. + pea.UpdateTitle(); + + // Print the version. + pea.PrintVersion(); + + // Load the default options passed from the default options file. + pea.LoadOptionsFromFile(); + + // Load the default options passed from the command line arguments. + pea.LoadOptionsFromCLI(args); + + // Process the command switch. + pea.ProcessCommandSwitch(); + + // Output the log to a text file. + pea.SaveLogToFile(); + } + + /// + /// Configure the logger. + /// + public static void ConfigureSerilog() + { + Log.Logger = new LoggerConfiguration() + .MinimumLevel.Information() + .WriteTo.Console(outputTemplate: "{Level:u4}: {Message:lj}{NewLine}{Exception}") + .WriteToListString(new MessageTemplateTextFormatter("{Level:u4}: {Message:lj}{Exception}")) + .CreateLogger(); + } + } +} diff --git a/PatchEmAll-CLI/Properties/AssemblyInfo.cs b/PatchEmAll-CLI/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..a483158 --- /dev/null +++ b/PatchEmAll-CLI/Properties/AssemblyInfo.cs @@ -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("PatchEmAll-CLI")] +[assembly: AssemblyDescription("The Original Automated ROM Patcher")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("PatchEmAll")] +[assembly: AssemblyProduct("PatchEmAll-CLI")] +[assembly: AssemblyCopyright("Copyright (c) 2016-2025 PatchEmAll - All Rights Reserved")] +[assembly: AssemblyTrademark("PatchEmAll - The Original Automated ROM Patcher")] +[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("2d9f35c9-4274-429f-851e-96dae240b59e")] + +// 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.5.7")] +[assembly: AssemblyFileVersion("1.5.7")] diff --git a/PatchEmAll-CLI/Properties/Resources.Designer.cs b/PatchEmAll-CLI/Properties/Resources.Designer.cs new file mode 100644 index 0000000..05ceb8b --- /dev/null +++ b/PatchEmAll-CLI/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// 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. +// +//------------------------------------------------------------------------------ + +namespace PatchEmAll_CLI.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // 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() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [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("PatchEmAll_CLI.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/PatchEmAll-CLI/Properties/Resources.resx b/PatchEmAll-CLI/Properties/Resources.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/PatchEmAll-CLI/Properties/Resources.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/PatchEmAll-CLI/Resources/BASHes/PatchEmAll-Build-Patches-Dat.sh b/PatchEmAll-CLI/Resources/BASHes/PatchEmAll-Build-Patches-Dat.sh new file mode 100644 index 0000000..c4e0e85 --- /dev/null +++ b/PatchEmAll-CLI/Resources/BASHes/PatchEmAll-Build-Patches-Dat.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# Main +mono "../PatchEmAll-CLI.exe" -buildpatchesdat diff --git a/PatchEmAll-CLI/Resources/BASHes/PatchEmAll-Build-Patches.sh b/PatchEmAll-CLI/Resources/BASHes/PatchEmAll-Build-Patches.sh new file mode 100644 index 0000000..12fe495 --- /dev/null +++ b/PatchEmAll-CLI/Resources/BASHes/PatchEmAll-Build-Patches.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# Main +mono "../PatchEmAll-CLI.exe" -buildpatches diff --git a/PatchEmAll-CLI/Resources/BASHes/PatchEmAll-Build-ROMs.sh b/PatchEmAll-CLI/Resources/BASHes/PatchEmAll-Build-ROMs.sh new file mode 100644 index 0000000..12604a9 --- /dev/null +++ b/PatchEmAll-CLI/Resources/BASHes/PatchEmAll-Build-ROMs.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# Main +mono "../PatchEmAll-CLI.exe" -buildroms diff --git a/PatchEmAll-CLI/Resources/BASHes/PatchEmAll-Print-Donation-Info.sh b/PatchEmAll-CLI/Resources/BASHes/PatchEmAll-Print-Donation-Info.sh new file mode 100644 index 0000000..908a789 --- /dev/null +++ b/PatchEmAll-CLI/Resources/BASHes/PatchEmAll-Print-Donation-Info.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# Main +mono "../PatchEmAll-CLI.exe" -donations diff --git a/PatchEmAll-CLI/Resources/BASHes/PatchEmAll-Print-Help.sh b/PatchEmAll-CLI/Resources/BASHes/PatchEmAll-Print-Help.sh new file mode 100644 index 0000000..e279ab9 --- /dev/null +++ b/PatchEmAll-CLI/Resources/BASHes/PatchEmAll-Print-Help.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# Main +mono "../PatchEmAll-CLI.exe" -help diff --git a/PatchEmAll-CLI/Resources/BASHes/PatchEmAll-Print-License.sh b/PatchEmAll-CLI/Resources/BASHes/PatchEmAll-Print-License.sh new file mode 100644 index 0000000..e2d51ff --- /dev/null +++ b/PatchEmAll-CLI/Resources/BASHes/PatchEmAll-Print-License.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# Main +mono "../PatchEmAll-CLI.exe" -license diff --git a/PatchEmAll-CLI/Resources/BASHes/PatchEmAll-Print-Version.sh b/PatchEmAll-CLI/Resources/BASHes/PatchEmAll-Print-Version.sh new file mode 100644 index 0000000..4425fbc --- /dev/null +++ b/PatchEmAll-CLI/Resources/BASHes/PatchEmAll-Print-Version.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# Main +mono "../PatchEmAll-CLI.exe" -version diff --git a/PatchEmAll-CLI/Resources/BASHes/PatchEmAll-Save-Options.sh b/PatchEmAll-CLI/Resources/BASHes/PatchEmAll-Save-Options.sh new file mode 100644 index 0000000..e2609f1 --- /dev/null +++ b/PatchEmAll-CLI/Resources/BASHes/PatchEmAll-Save-Options.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# Main +mono "../PatchEmAll-CLI.exe" -saveoptions diff --git a/PatchEmAll-CLI/Resources/BASHes/put your bash files in this directory.txt b/PatchEmAll-CLI/Resources/BASHes/put your bash files in this directory.txt new file mode 100644 index 0000000..6d78808 --- /dev/null +++ b/PatchEmAll-CLI/Resources/BASHes/put your bash files in this directory.txt @@ -0,0 +1 @@ +This file can be deleted. \ No newline at end of file diff --git a/PatchEmAll-CLI/Resources/Batches/PatchEmAll-Build-Patches-Dat.bat b/PatchEmAll-CLI/Resources/Batches/PatchEmAll-Build-Patches-Dat.bat new file mode 100644 index 0000000..3d8d36a --- /dev/null +++ b/PatchEmAll-CLI/Resources/Batches/PatchEmAll-Build-Patches-Dat.bat @@ -0,0 +1,7 @@ +@echo off + +rem */ Main /* +"..\PatchEmAll-CLI.exe" -buildpatchesdat "PD:..\Patches" "XF:..\Xdelta\xdelta3-3.1.0-x86_64.exe" "XC:-e -9 -s" "MN:YourMachineName" "DD:..\Dats" "CO:YourComment" + +rem */ Pause /* +@pause diff --git a/PatchEmAll-CLI/Resources/Batches/PatchEmAll-Build-Patches.bat b/PatchEmAll-CLI/Resources/Batches/PatchEmAll-Build-Patches.bat new file mode 100644 index 0000000..94feb8e --- /dev/null +++ b/PatchEmAll-CLI/Resources/Batches/PatchEmAll-Build-Patches.bat @@ -0,0 +1,7 @@ +@echo off + +rem */ Main /* +"..\PatchEmAll-CLI.exe" -buildpatches "RD:..\ROMs" "PD:..\Patches" "XF:..\Xdelta\xdelta3-3.1.0-x86_64.exe" "XC:-e -9 -s" "DL: -- " "DF:..\Dats\YourDatPPDXMLFile.ppd" + +rem */ Pause /* +@pause diff --git a/PatchEmAll-CLI/Resources/Batches/PatchEmAll-Build-ROMs.bat b/PatchEmAll-CLI/Resources/Batches/PatchEmAll-Build-ROMs.bat new file mode 100644 index 0000000..de9ce40 --- /dev/null +++ b/PatchEmAll-CLI/Resources/Batches/PatchEmAll-Build-ROMs.bat @@ -0,0 +1,7 @@ +@echo off + +rem */ Main /* +"..\PatchEmAll-CLI.exe" -buildroms "RD:..\ROMs" "PD:..\Patches" "XF:..\Xdelta\xdelta3-3.1.0-x86_64.exe" "DL: -- " + +rem */ Pause /* +@pause diff --git a/PatchEmAll-CLI/Resources/Batches/PatchEmAll-Print-Donation-Info.bat b/PatchEmAll-CLI/Resources/Batches/PatchEmAll-Print-Donation-Info.bat new file mode 100644 index 0000000..22c5840 --- /dev/null +++ b/PatchEmAll-CLI/Resources/Batches/PatchEmAll-Print-Donation-Info.bat @@ -0,0 +1,7 @@ +@echo off + +rem */ Main /* +"..\PatchEmAll-CLI.exe" -donations + +rem */ Pause /* +@pause diff --git a/PatchEmAll-CLI/Resources/Batches/PatchEmAll-Print-Help.bat b/PatchEmAll-CLI/Resources/Batches/PatchEmAll-Print-Help.bat new file mode 100644 index 0000000..5902904 --- /dev/null +++ b/PatchEmAll-CLI/Resources/Batches/PatchEmAll-Print-Help.bat @@ -0,0 +1,7 @@ +@echo off + +rem */ Main /* +"..\PatchEmAll-CLI.exe" -help "LF:..\Logs\Log_PEA_00000000_000000.txt" + +rem */ Pause /* +@pause diff --git a/PatchEmAll-CLI/Resources/Batches/PatchEmAll-Print-License.bat b/PatchEmAll-CLI/Resources/Batches/PatchEmAll-Print-License.bat new file mode 100644 index 0000000..82fc507 --- /dev/null +++ b/PatchEmAll-CLI/Resources/Batches/PatchEmAll-Print-License.bat @@ -0,0 +1,7 @@ +@echo off + +rem */ Main /* +"..\PatchEmAll-CLI.exe" -license + +rem */ Pause /* +@pause diff --git a/PatchEmAll-CLI/Resources/Batches/PatchEmAll-Print-Version.bat b/PatchEmAll-CLI/Resources/Batches/PatchEmAll-Print-Version.bat new file mode 100644 index 0000000..ad8ef99 --- /dev/null +++ b/PatchEmAll-CLI/Resources/Batches/PatchEmAll-Print-Version.bat @@ -0,0 +1,7 @@ +@echo off + +rem */ Main /* +"..\PatchEmAll-CLI.exe" -version + +rem */ Pause /* +@pause diff --git a/PatchEmAll-CLI/Resources/Batches/PatchEmAll-Save-Options.bat b/PatchEmAll-CLI/Resources/Batches/PatchEmAll-Save-Options.bat new file mode 100644 index 0000000..de0121e --- /dev/null +++ b/PatchEmAll-CLI/Resources/Batches/PatchEmAll-Save-Options.bat @@ -0,0 +1,7 @@ +@echo off + +rem */ Main /* +"..\PatchEmAll-CLI.exe" -saveoptions + +rem */ Pause /* +@pause diff --git a/PatchEmAll-CLI/Resources/Batches/put your batch files in this directory.txt b/PatchEmAll-CLI/Resources/Batches/put your batch files in this directory.txt new file mode 100644 index 0000000..6d78808 --- /dev/null +++ b/PatchEmAll-CLI/Resources/Batches/put your batch files in this directory.txt @@ -0,0 +1 @@ +This file can be deleted. \ No newline at end of file diff --git a/PatchEmAll-CLI/packages.config b/PatchEmAll-CLI/packages.config new file mode 100644 index 0000000..b927374 --- /dev/null +++ b/PatchEmAll-CLI/packages.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/PatchEmAll-GUI/App.config b/PatchEmAll-GUI/App.config new file mode 100644 index 0000000..4bfa005 --- /dev/null +++ b/PatchEmAll-GUI/App.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/PatchEmAll-GUI/App.ico b/PatchEmAll-GUI/App.ico new file mode 100644 index 0000000000000000000000000000000000000000..63922ff1ce0099105b02a876f6f9b281d5311d98 GIT binary patch literal 4286 zcmcgwYfx0@89rPh8MKX)YC1{VsZDK~wwX5lk?Hj2)WozMokT!T6cNKM#DdXQ(2gUC zNx(!~s}rKtNl4_f+;3sIi`?&5xd}vA5SGhwkp-5+WtXS#`z^cf5<2;%hk5q<_I;n{ zea`vLciyvuB-zm4mMs#0O7R;d=_yH)o+nU9`V)cU;-K8>Bj<>;F6S-Dlh8!a5#)yq z_P9;(B5#MR0O>$>fHXwFBgP1Mdnx^;I^~-ZRwHYTn2E!=wP4Dx9{+DGf2k?cSDGcj z3_s&M{S65j-YapAt;D~iSo&cJX@pcSBY4g+&WSn}e6GQ@%yCOEUrG0+k0fXKke3O> z&+v6X(ZBa0=bcx?oNFf^vPH7*lgK#nYvhGHqx4Dus&1SloI>f|NH~$Wo4v2WU|R+16VE|;dK=OMpT%fr1*SFq$PIY`X|!IJUhGYN z4B^XT%0UUWkwI8C7%<#fgRYV!=(H1H!zFnJ(?gvYZq7zu$>-=Ph!E&2iNtVI7N*sA zh%+s?bJ|ICmnLKQP8CTFsQ=>ELLgD*=#{BG*(9BK@q2j+mNbz}!a>jhp0SQSSMkITXj$r!E zIj)iDZi5u>O(?%|1T$lUqSk_L8n?oBioD5>y%P`EF~CS5UFBsD%#8NZ`s=YcuY;;S zpY~cHox^6*+6tbDzvf7s6rW8f`Q!*xb-7rSb)wd+Mun;fFX3UKlM~$S85B1n(Zdm0 z$9{qO&)&vJ%S|lJ&qAy2f->l*h~H;x=9&1bN9JS(ZpG9<2lS*JX)Q!U{yyx&&hx}k(L#aDum{hl-8eSSnaBgaZd-m!aZ8Hn9uhZtuY#O{9* zW!Fz&w5P>*@94Q(=4Wp~#>BlYR7bxH#i3`6TnnAT^J(fup&0MKL;GeuZN@N+bH3 zDZil8A~$pwa!&un+%H6q)_iViOlZdYIv`I|@3c5{_eY@&-iD~xXzj>b;p!mA(%xu_ zJ8QuLbdw|0%gdo|DWZN@h=G<;>f-}eoIBZ9(V>j6icM3$VJ>Ubw~OeVQBK!2Y{j{q z7>-!p$K;*3-%(CF_yqbZlg%9NJ!5wpaj!ZJIe&i<%E0H)TO392qgoi29_)>=u4-sH zE6qC2X}as6DvhOn@jSAR{}TOGDO9UL^dJ-QUQIfZJU3E5bCgrP9+%UpFAq28n9|TM z&SRpt32o`;so&XCKb6oJa}pChjp7|-BJ%r2JJ@deDtgs;PXn41r-deQza3gr!$mFq zqHN}kv=$(P-qY-z>F*$C2CTB;*DcXPt5V!Yp&%NmBdz3OZGvn%5)a)UMy9Oc50&2r(% zXHfUC8|KFQt!nXon4!HhGp?q!owLf#Yll&Lc?W9#vmNtOYO5UgD%Q-<^TahQkGY8f z)JNm0~d`w<1gFV^1D(qKs&AFG*aA_BsBAhW;PW^9AYbmpu>lbuTS4N`t!tYQW z_M$-Th2KJ5@u_&2=3*D3#c+qp*z-B zSA zuE5VCx58tt85CR5_ayk4b-h%>swQ!`W_Q%?uRigV$Uy?ie(|j?IdF+vZz1Wky zXVpsYiXo*phO&GxoEwCZf?z_(Lqf3d7|QYmdy;pJ=H}m=$8H7njTaq-5pUCY>>+_` x8-2*LpS;~B%TCzcuL#~fRdupdTYYMZF!zw5C9iVwbh%$1Y`^;d0gw9o{{ZklfEWM( literal 0 HcmV?d00001 diff --git a/PatchEmAll-GUI/FrmPatchEmAll.Designer.cs b/PatchEmAll-GUI/FrmPatchEmAll.Designer.cs new file mode 100644 index 0000000..89178de --- /dev/null +++ b/PatchEmAll-GUI/FrmPatchEmAll.Designer.cs @@ -0,0 +1,1283 @@ +namespace PatchEmAll_GUI +{ + partial class FrmPatchEmAll + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmPatchEmAll)); + this.splitContainer4 = new System.Windows.Forms.SplitContainer(); + this.splitContainer5 = new System.Windows.Forms.SplitContainer(); + this.txtLoadedDatafile = new System.Windows.Forms.TextBox(); + this.lbFromDat = new System.Windows.Forms.ListBox(); + this.btnLoadDat = new System.Windows.Forms.Button(); + this.lbToDat = new System.Windows.Forms.ListBox(); + this.btnRemoveAllPrepatches = new System.Windows.Forms.Button(); + this.btnAddPrepatch = new System.Windows.Forms.Button(); + this.btnRemovePrepatch = new System.Windows.Forms.Button(); + this.lbPrepatches = new System.Windows.Forms.ListBox(); + this.btnLoadPPD = new System.Windows.Forms.Button(); + this.lblCountPrepatches = new System.Windows.Forms.Label(); + this.btnSavePPD = new System.Windows.Forms.Button(); + this.btnCheckPrepatches = new System.Windows.Forms.Button(); + this.msMain = new System.Windows.Forms.MenuStrip(); + this.tsmiCommands = new System.Windows.Forms.ToolStripMenuItem(); + this.tsmiBuildROMs = new System.Windows.Forms.ToolStripMenuItem(); + this.tsmiBuildPatches = new System.Windows.Forms.ToolStripMenuItem(); + this.tsmiBuildPatchesDatafile = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.tsmiLoadOptions = new System.Windows.Forms.ToolStripMenuItem(); + this.tsmiSaveOptions = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.tsmiSaveLog = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); + this.tsmiExit = new System.Windows.Forms.ToolStripMenuItem(); + this.tsmiView = new System.Windows.Forms.ToolStripMenuItem(); + this.tsmiLog = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator(); + this.tsmiOptions = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator(); + this.tsmiPPDBuilder = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator(); + this.tsmiHelp = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator(); + this.tsmiLicense = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator(); + this.tsmiDonations = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator12 = new System.Windows.Forms.ToolStripSeparator(); + this.tsmiRegistration = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator13 = new System.Windows.Forms.ToolStripSeparator(); + this.tsmiToolbar = new System.Windows.Forms.ToolStripMenuItem(); + this.tsMain = new System.Windows.Forms.ToolStrip(); + this.tsbBuildROMs = new System.Windows.Forms.ToolStripButton(); + this.tsbBuildPatches = new System.Windows.Forms.ToolStripButton(); + this.tsbBuildPatchesDatafile = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); + this.tsbLoadOptions = new System.Windows.Forms.ToolStripButton(); + this.tsbSaveOptions = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator(); + this.tsbSaveLog = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator(); + this.tsbViewLog = new System.Windows.Forms.ToolStripButton(); + this.tsbViewOptions = new System.Windows.Forms.ToolStripButton(); + this.tsbViewPPDBuilder = new System.Windows.Forms.ToolStripButton(); + this.tsbViewHelp = new System.Windows.Forms.ToolStripButton(); + this.tsbViewLicense = new System.Windows.Forms.ToolStripButton(); + this.tsbDonations = new System.Windows.Forms.ToolStripButton(); + this.tsbRegistration = new System.Windows.Forms.ToolStripButton(); + this.tsbViewToolbar = new System.Windows.Forms.ToolStripButton(); + this.ssMain = new System.Windows.Forms.StatusStrip(); + this.tsslSnap = new System.Windows.Forms.ToolStripStatusLabel(); + this.tsslStarusMessage = new System.Windows.Forms.ToolStripStatusLabel(); + this.tspbBuildProgress = new System.Windows.Forms.ToolStripProgressBar(); + this.tssbCancel = new System.Windows.Forms.ToolStripSplitButton(); + this.tcMain = new System.Windows.Forms.TabControl(); + this.tabLog = new System.Windows.Forms.TabPage(); + this.rtbLog = new Serilog.Sinks.LogEmAll.RichTextBoxLog(); + this.tabOptions = new System.Windows.Forms.TabPage(); + this.gbOptionsInfo = new System.Windows.Forms.GroupBox(); + this.lblOptionsInfo2 = new System.Windows.Forms.Label(); + this.lblOptionsInfo1 = new System.Windows.Forms.Label(); + this.gbOptions = new System.Windows.Forms.GroupBox(); + this.cbLogLevel = new System.Windows.Forms.ComboBox(); + this.cbLanguage = new System.Windows.Forms.ComboBox(); + this.cbSounds = new System.Windows.Forms.ComboBox(); + this.lblLogLevel = new System.Windows.Forms.Label(); + this.lblLanguage = new System.Windows.Forms.Label(); + this.txtComment = new System.Windows.Forms.TextBox(); + this.txtMachineName = new System.Windows.Forms.TextBox(); + this.txtDelimiter = new System.Windows.Forms.TextBox(); + this.txtXdeltaBuildCommand = new System.Windows.Forms.TextBox(); + this.txtPathXdeltaFile = new System.Windows.Forms.TextBox(); + this.txtPathDatPPDXMLFile = new System.Windows.Forms.TextBox(); + this.txtPathDatsDir = new System.Windows.Forms.TextBox(); + this.txtPathPatchesDir = new System.Windows.Forms.TextBox(); + this.txtPathROMsDir = new System.Windows.Forms.TextBox(); + this.lblSounds = new System.Windows.Forms.Label(); + this.lblComment = new System.Windows.Forms.Label(); + this.lblMachineName = new System.Windows.Forms.Label(); + this.lblDelimiter = new System.Windows.Forms.Label(); + this.lblXdeltaBuildCommand = new System.Windows.Forms.Label(); + this.lblPathXdeltaFile = new System.Windows.Forms.Label(); + this.lblPathDatPPDXMLFile = new System.Windows.Forms.Label(); + this.lblPathDatsDir = new System.Windows.Forms.Label(); + this.lblPathPatchesDir = new System.Windows.Forms.Label(); + this.lblPathROMsDir = new System.Windows.Forms.Label(); + this.tabPPDBuilder = new System.Windows.Forms.TabPage(); + this.tabHelp = new System.Windows.Forms.TabPage(); + this.rtbHelp = new System.Windows.Forms.RichTextBox(); + this.tabLicense = new System.Windows.Forms.TabPage(); + this.rtbLicense = new System.Windows.Forms.RichTextBox(); + this.tabDonations = new System.Windows.Forms.TabPage(); + this.rtbDonations = new System.Windows.Forms.RichTextBox(); + this.tabRegistration = new System.Windows.Forms.TabPage(); + this.gbRegistrationInfo = new System.Windows.Forms.GroupBox(); + this.lblRegistrationInfo1 = new System.Windows.Forms.Label(); + this.tlpRegistration = new System.Windows.Forms.TableLayoutPanel(); + this.gbRegistration = new System.Windows.Forms.GroupBox(); + this.lblRegistrationKey = new System.Windows.Forms.Label(); + this.lblRegistrationKeyLabel = new System.Windows.Forms.Label(); + this.lblRegistrationStatus = new System.Windows.Forms.Label(); + this.lblRegistrationStatusLabel = new System.Windows.Forms.Label(); + this.gbRegisterApp = new System.Windows.Forms.GroupBox(); + this.lblRegisterAppPassword = new System.Windows.Forms.Label(); + this.lblRegisterAppEmailAddress = new System.Windows.Forms.Label(); + this.lblRegisterAppUsername = new System.Windows.Forms.Label(); + this.btnRegisterApp = new System.Windows.Forms.Button(); + this.txtRegisterAppPassword = new System.Windows.Forms.TextBox(); + this.txtRegisterAppEmailAddress = new System.Windows.Forms.TextBox(); + this.txtRegisterAppUsername = new System.Windows.Forms.TextBox(); + this.bgwBuildROMs = new System.ComponentModel.BackgroundWorker(); + this.bgwBuildPatches = new System.ComponentModel.BackgroundWorker(); + this.bgwBuildDatafile = new System.ComponentModel.BackgroundWorker(); + this.bgwStartupTasks = new System.ComponentModel.BackgroundWorker(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer4)).BeginInit(); + this.splitContainer4.Panel1.SuspendLayout(); + this.splitContainer4.Panel2.SuspendLayout(); + this.splitContainer4.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer5)).BeginInit(); + this.splitContainer5.Panel1.SuspendLayout(); + this.splitContainer5.Panel2.SuspendLayout(); + this.splitContainer5.SuspendLayout(); + this.msMain.SuspendLayout(); + this.tsMain.SuspendLayout(); + this.ssMain.SuspendLayout(); + this.tcMain.SuspendLayout(); + this.tabLog.SuspendLayout(); + this.tabOptions.SuspendLayout(); + this.gbOptionsInfo.SuspendLayout(); + this.gbOptions.SuspendLayout(); + this.tabPPDBuilder.SuspendLayout(); + this.tabHelp.SuspendLayout(); + this.tabLicense.SuspendLayout(); + this.tabDonations.SuspendLayout(); + this.tabRegistration.SuspendLayout(); + this.gbRegistrationInfo.SuspendLayout(); + this.tlpRegistration.SuspendLayout(); + this.gbRegistration.SuspendLayout(); + this.gbRegisterApp.SuspendLayout(); + this.SuspendLayout(); + // + // splitContainer4 + // + resources.ApplyResources(this.splitContainer4, "splitContainer4"); + this.splitContainer4.Name = "splitContainer4"; + // + // splitContainer4.Panel1 + // + this.splitContainer4.Panel1.Controls.Add(this.splitContainer5); + // + // splitContainer4.Panel2 + // + this.splitContainer4.Panel2.Controls.Add(this.lbPrepatches); + this.splitContainer4.Panel2.Controls.Add(this.btnLoadPPD); + this.splitContainer4.Panel2.Controls.Add(this.lblCountPrepatches); + this.splitContainer4.Panel2.Controls.Add(this.btnSavePPD); + this.splitContainer4.Panel2.Controls.Add(this.btnCheckPrepatches); + // + // splitContainer5 + // + resources.ApplyResources(this.splitContainer5, "splitContainer5"); + this.splitContainer5.Name = "splitContainer5"; + // + // splitContainer5.Panel1 + // + this.splitContainer5.Panel1.Controls.Add(this.txtLoadedDatafile); + this.splitContainer5.Panel1.Controls.Add(this.lbFromDat); + this.splitContainer5.Panel1.Controls.Add(this.btnLoadDat); + // + // splitContainer5.Panel2 + // + this.splitContainer5.Panel2.Controls.Add(this.lbToDat); + this.splitContainer5.Panel2.Controls.Add(this.btnRemoveAllPrepatches); + this.splitContainer5.Panel2.Controls.Add(this.btnAddPrepatch); + this.splitContainer5.Panel2.Controls.Add(this.btnRemovePrepatch); + // + // txtLoadedDatafile + // + resources.ApplyResources(this.txtLoadedDatafile, "txtLoadedDatafile"); + this.txtLoadedDatafile.Name = "txtLoadedDatafile"; + this.txtLoadedDatafile.ReadOnly = true; + // + // lbFromDat + // + resources.ApplyResources(this.lbFromDat, "lbFromDat"); + this.lbFromDat.FormattingEnabled = true; + this.lbFromDat.Name = "lbFromDat"; + this.lbFromDat.Sorted = true; + // + // btnLoadDat + // + this.btnLoadDat.Image = global::PatchEmAll_GUI.Properties.Resources.LoadDat_16x16; + resources.ApplyResources(this.btnLoadDat, "btnLoadDat"); + this.btnLoadDat.Name = "btnLoadDat"; + this.btnLoadDat.UseVisualStyleBackColor = true; + this.btnLoadDat.Click += new System.EventHandler(this.LoadDat_Click); + // + // lbToDat + // + resources.ApplyResources(this.lbToDat, "lbToDat"); + this.lbToDat.FormattingEnabled = true; + this.lbToDat.Name = "lbToDat"; + this.lbToDat.Sorted = true; + // + // btnRemoveAllPrepatches + // + resources.ApplyResources(this.btnRemoveAllPrepatches, "btnRemoveAllPrepatches"); + this.btnRemoveAllPrepatches.Image = global::PatchEmAll_GUI.Properties.Resources.RemoveAllPrepatches_16x16; + this.btnRemoveAllPrepatches.Name = "btnRemoveAllPrepatches"; + this.btnRemoveAllPrepatches.UseVisualStyleBackColor = true; + this.btnRemoveAllPrepatches.Click += new System.EventHandler(this.RemoveAllPrepatches_Click); + // + // btnAddPrepatch + // + resources.ApplyResources(this.btnAddPrepatch, "btnAddPrepatch"); + this.btnAddPrepatch.Image = global::PatchEmAll_GUI.Properties.Resources.AddPrepatch_16x16; + this.btnAddPrepatch.Name = "btnAddPrepatch"; + this.btnAddPrepatch.UseVisualStyleBackColor = true; + this.btnAddPrepatch.Click += new System.EventHandler(this.AddPrepatch_Click); + // + // btnRemovePrepatch + // + resources.ApplyResources(this.btnRemovePrepatch, "btnRemovePrepatch"); + this.btnRemovePrepatch.Image = global::PatchEmAll_GUI.Properties.Resources.RemovePrepatch_16x16; + this.btnRemovePrepatch.Name = "btnRemovePrepatch"; + this.btnRemovePrepatch.UseVisualStyleBackColor = true; + this.btnRemovePrepatch.Click += new System.EventHandler(this.RemovePrepatch_Click); + // + // lbPrepatches + // + resources.ApplyResources(this.lbPrepatches, "lbPrepatches"); + this.lbPrepatches.FormattingEnabled = true; + this.lbPrepatches.Name = "lbPrepatches"; + // + // btnLoadPPD + // + this.btnLoadPPD.Image = global::PatchEmAll_GUI.Properties.Resources.LoadPPD_16x16; + resources.ApplyResources(this.btnLoadPPD, "btnLoadPPD"); + this.btnLoadPPD.Name = "btnLoadPPD"; + this.btnLoadPPD.UseVisualStyleBackColor = true; + this.btnLoadPPD.Click += new System.EventHandler(this.LoadPPD_Click); + // + // lblCountPrepatches + // + resources.ApplyResources(this.lblCountPrepatches, "lblCountPrepatches"); + this.lblCountPrepatches.Name = "lblCountPrepatches"; + // + // btnSavePPD + // + this.btnSavePPD.Image = global::PatchEmAll_GUI.Properties.Resources.SavePPD_16x16; + resources.ApplyResources(this.btnSavePPD, "btnSavePPD"); + this.btnSavePPD.Name = "btnSavePPD"; + this.btnSavePPD.UseVisualStyleBackColor = true; + this.btnSavePPD.Click += new System.EventHandler(this.SavePPD_Click); + // + // btnCheckPrepatches + // + resources.ApplyResources(this.btnCheckPrepatches, "btnCheckPrepatches"); + this.btnCheckPrepatches.Image = global::PatchEmAll_GUI.Properties.Resources.CheckPrepatches_16x16; + this.btnCheckPrepatches.Name = "btnCheckPrepatches"; + this.btnCheckPrepatches.UseVisualStyleBackColor = true; + this.btnCheckPrepatches.Click += new System.EventHandler(this.CheckPrepatches_Click); + // + // msMain + // + this.msMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.tsmiCommands, + this.tsmiView}); + resources.ApplyResources(this.msMain, "msMain"); + this.msMain.Name = "msMain"; + // + // tsmiCommands + // + this.tsmiCommands.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.tsmiBuildROMs, + this.tsmiBuildPatches, + this.tsmiBuildPatchesDatafile, + this.toolStripSeparator1, + this.tsmiLoadOptions, + this.tsmiSaveOptions, + this.toolStripSeparator2, + this.tsmiSaveLog, + this.toolStripSeparator3, + this.tsmiExit}); + this.tsmiCommands.Name = "tsmiCommands"; + resources.ApplyResources(this.tsmiCommands, "tsmiCommands"); + // + // tsmiBuildROMs + // + resources.ApplyResources(this.tsmiBuildROMs, "tsmiBuildROMs"); + this.tsmiBuildROMs.Image = global::PatchEmAll_GUI.Properties.Resources.BuildROMs_32x32; + this.tsmiBuildROMs.Name = "tsmiBuildROMs"; + this.tsmiBuildROMs.Click += new System.EventHandler(this.BuildROMs_Click); + // + // tsmiBuildPatches + // + resources.ApplyResources(this.tsmiBuildPatches, "tsmiBuildPatches"); + this.tsmiBuildPatches.Image = global::PatchEmAll_GUI.Properties.Resources.BuildPatches_32x32; + this.tsmiBuildPatches.Name = "tsmiBuildPatches"; + this.tsmiBuildPatches.Click += new System.EventHandler(this.BuildPatches_Click); + // + // tsmiBuildPatchesDatafile + // + resources.ApplyResources(this.tsmiBuildPatchesDatafile, "tsmiBuildPatchesDatafile"); + this.tsmiBuildPatchesDatafile.Image = global::PatchEmAll_GUI.Properties.Resources.BuildDatafile_32x32; + this.tsmiBuildPatchesDatafile.Name = "tsmiBuildPatchesDatafile"; + this.tsmiBuildPatchesDatafile.Click += new System.EventHandler(this.BuildPatchesDatafile_Click); + // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1"); + // + // tsmiLoadOptions + // + resources.ApplyResources(this.tsmiLoadOptions, "tsmiLoadOptions"); + this.tsmiLoadOptions.Image = global::PatchEmAll_GUI.Properties.Resources.LoadOptions_32x32; + this.tsmiLoadOptions.Name = "tsmiLoadOptions"; + this.tsmiLoadOptions.Click += new System.EventHandler(this.LoadOptions_Click); + // + // tsmiSaveOptions + // + resources.ApplyResources(this.tsmiSaveOptions, "tsmiSaveOptions"); + this.tsmiSaveOptions.Image = global::PatchEmAll_GUI.Properties.Resources.SaveOptions_32x32; + this.tsmiSaveOptions.Name = "tsmiSaveOptions"; + this.tsmiSaveOptions.Click += new System.EventHandler(this.SaveOptions_Click); + // + // toolStripSeparator2 + // + this.toolStripSeparator2.Name = "toolStripSeparator2"; + resources.ApplyResources(this.toolStripSeparator2, "toolStripSeparator2"); + // + // tsmiSaveLog + // + resources.ApplyResources(this.tsmiSaveLog, "tsmiSaveLog"); + this.tsmiSaveLog.Image = global::PatchEmAll_GUI.Properties.Resources.SaveLog_32x32; + this.tsmiSaveLog.Name = "tsmiSaveLog"; + this.tsmiSaveLog.Click += new System.EventHandler(this.SaveLog_Click); + // + // toolStripSeparator3 + // + this.toolStripSeparator3.Name = "toolStripSeparator3"; + resources.ApplyResources(this.toolStripSeparator3, "toolStripSeparator3"); + // + // tsmiExit + // + this.tsmiExit.Image = global::PatchEmAll_GUI.Properties.Resources.Exit_32x32; + this.tsmiExit.Name = "tsmiExit"; + resources.ApplyResources(this.tsmiExit, "tsmiExit"); + this.tsmiExit.Click += new System.EventHandler(this.ExitApp_Click); + // + // tsmiView + // + this.tsmiView.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.tsmiLog, + this.toolStripSeparator7, + this.tsmiOptions, + this.toolStripSeparator8, + this.tsmiPPDBuilder, + this.toolStripSeparator9, + this.tsmiHelp, + this.toolStripSeparator10, + this.tsmiLicense, + this.toolStripSeparator11, + this.tsmiDonations, + this.toolStripSeparator12, + this.tsmiRegistration, + this.toolStripSeparator13, + this.tsmiToolbar}); + this.tsmiView.Name = "tsmiView"; + resources.ApplyResources(this.tsmiView, "tsmiView"); + // + // tsmiLog + // + this.tsmiLog.Checked = true; + this.tsmiLog.CheckState = System.Windows.Forms.CheckState.Checked; + this.tsmiLog.Name = "tsmiLog"; + resources.ApplyResources(this.tsmiLog, "tsmiLog"); + this.tsmiLog.Click += new System.EventHandler(this.ViewLog_Click); + // + // toolStripSeparator7 + // + this.toolStripSeparator7.Name = "toolStripSeparator7"; + resources.ApplyResources(this.toolStripSeparator7, "toolStripSeparator7"); + // + // tsmiOptions + // + this.tsmiOptions.Checked = true; + this.tsmiOptions.CheckState = System.Windows.Forms.CheckState.Checked; + this.tsmiOptions.Name = "tsmiOptions"; + resources.ApplyResources(this.tsmiOptions, "tsmiOptions"); + this.tsmiOptions.Click += new System.EventHandler(this.ViewOptions_Click); + // + // toolStripSeparator8 + // + this.toolStripSeparator8.Name = "toolStripSeparator8"; + resources.ApplyResources(this.toolStripSeparator8, "toolStripSeparator8"); + // + // tsmiPPDBuilder + // + this.tsmiPPDBuilder.Checked = true; + this.tsmiPPDBuilder.CheckState = System.Windows.Forms.CheckState.Checked; + this.tsmiPPDBuilder.Name = "tsmiPPDBuilder"; + resources.ApplyResources(this.tsmiPPDBuilder, "tsmiPPDBuilder"); + this.tsmiPPDBuilder.Click += new System.EventHandler(this.ViewPPDBuilder_Click); + // + // toolStripSeparator9 + // + this.toolStripSeparator9.Name = "toolStripSeparator9"; + resources.ApplyResources(this.toolStripSeparator9, "toolStripSeparator9"); + // + // tsmiHelp + // + this.tsmiHelp.Name = "tsmiHelp"; + resources.ApplyResources(this.tsmiHelp, "tsmiHelp"); + this.tsmiHelp.Click += new System.EventHandler(this.ViewHelp_Click); + // + // toolStripSeparator10 + // + this.toolStripSeparator10.Name = "toolStripSeparator10"; + resources.ApplyResources(this.toolStripSeparator10, "toolStripSeparator10"); + // + // tsmiLicense + // + this.tsmiLicense.Name = "tsmiLicense"; + resources.ApplyResources(this.tsmiLicense, "tsmiLicense"); + this.tsmiLicense.Click += new System.EventHandler(this.ViewLicense_Click); + // + // toolStripSeparator11 + // + this.toolStripSeparator11.Name = "toolStripSeparator11"; + resources.ApplyResources(this.toolStripSeparator11, "toolStripSeparator11"); + // + // tsmiDonations + // + this.tsmiDonations.Name = "tsmiDonations"; + resources.ApplyResources(this.tsmiDonations, "tsmiDonations"); + this.tsmiDonations.Click += new System.EventHandler(this.ViewDonations_Click); + // + // toolStripSeparator12 + // + this.toolStripSeparator12.Name = "toolStripSeparator12"; + resources.ApplyResources(this.toolStripSeparator12, "toolStripSeparator12"); + // + // tsmiRegistration + // + this.tsmiRegistration.Name = "tsmiRegistration"; + resources.ApplyResources(this.tsmiRegistration, "tsmiRegistration"); + this.tsmiRegistration.Click += new System.EventHandler(this.ViewRegistration_Click); + // + // toolStripSeparator13 + // + this.toolStripSeparator13.Name = "toolStripSeparator13"; + resources.ApplyResources(this.toolStripSeparator13, "toolStripSeparator13"); + // + // tsmiToolbar + // + this.tsmiToolbar.Checked = true; + this.tsmiToolbar.CheckState = System.Windows.Forms.CheckState.Checked; + this.tsmiToolbar.Name = "tsmiToolbar"; + resources.ApplyResources(this.tsmiToolbar, "tsmiToolbar"); + this.tsmiToolbar.Click += new System.EventHandler(this.ViewToolbar_Click); + // + // tsMain + // + this.tsMain.ImageScalingSize = new System.Drawing.Size(32, 32); + this.tsMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.tsbBuildROMs, + this.tsbBuildPatches, + this.tsbBuildPatchesDatafile, + this.toolStripSeparator4, + this.tsbLoadOptions, + this.tsbSaveOptions, + this.toolStripSeparator5, + this.tsbSaveLog, + this.toolStripSeparator6, + this.tsbViewLog, + this.tsbViewOptions, + this.tsbViewPPDBuilder, + this.tsbViewHelp, + this.tsbViewLicense, + this.tsbDonations, + this.tsbRegistration, + this.tsbViewToolbar}); + resources.ApplyResources(this.tsMain, "tsMain"); + this.tsMain.Name = "tsMain"; + // + // tsbBuildROMs + // + this.tsbBuildROMs.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + resources.ApplyResources(this.tsbBuildROMs, "tsbBuildROMs"); + this.tsbBuildROMs.Image = global::PatchEmAll_GUI.Properties.Resources.BuildROMs_32x32; + this.tsbBuildROMs.Name = "tsbBuildROMs"; + this.tsbBuildROMs.Click += new System.EventHandler(this.BuildROMs_Click); + // + // tsbBuildPatches + // + this.tsbBuildPatches.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + resources.ApplyResources(this.tsbBuildPatches, "tsbBuildPatches"); + this.tsbBuildPatches.Image = global::PatchEmAll_GUI.Properties.Resources.BuildPatches_32x32; + this.tsbBuildPatches.Name = "tsbBuildPatches"; + this.tsbBuildPatches.Click += new System.EventHandler(this.BuildPatches_Click); + // + // tsbBuildPatchesDatafile + // + this.tsbBuildPatchesDatafile.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + resources.ApplyResources(this.tsbBuildPatchesDatafile, "tsbBuildPatchesDatafile"); + this.tsbBuildPatchesDatafile.Image = global::PatchEmAll_GUI.Properties.Resources.BuildDatafile_32x32; + this.tsbBuildPatchesDatafile.Name = "tsbBuildPatchesDatafile"; + this.tsbBuildPatchesDatafile.Click += new System.EventHandler(this.BuildPatchesDatafile_Click); + // + // toolStripSeparator4 + // + this.toolStripSeparator4.Name = "toolStripSeparator4"; + resources.ApplyResources(this.toolStripSeparator4, "toolStripSeparator4"); + // + // tsbLoadOptions + // + this.tsbLoadOptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + resources.ApplyResources(this.tsbLoadOptions, "tsbLoadOptions"); + this.tsbLoadOptions.Image = global::PatchEmAll_GUI.Properties.Resources.LoadOptions_32x32; + this.tsbLoadOptions.Name = "tsbLoadOptions"; + this.tsbLoadOptions.Click += new System.EventHandler(this.LoadOptions_Click); + // + // tsbSaveOptions + // + this.tsbSaveOptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + resources.ApplyResources(this.tsbSaveOptions, "tsbSaveOptions"); + this.tsbSaveOptions.Image = global::PatchEmAll_GUI.Properties.Resources.SaveOptions_32x32; + this.tsbSaveOptions.Name = "tsbSaveOptions"; + this.tsbSaveOptions.Click += new System.EventHandler(this.SaveOptions_Click); + // + // toolStripSeparator5 + // + this.toolStripSeparator5.Name = "toolStripSeparator5"; + resources.ApplyResources(this.toolStripSeparator5, "toolStripSeparator5"); + // + // tsbSaveLog + // + this.tsbSaveLog.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + resources.ApplyResources(this.tsbSaveLog, "tsbSaveLog"); + this.tsbSaveLog.Image = global::PatchEmAll_GUI.Properties.Resources.SaveLog_32x32; + this.tsbSaveLog.Name = "tsbSaveLog"; + this.tsbSaveLog.Click += new System.EventHandler(this.SaveLog_Click); + // + // toolStripSeparator6 + // + this.toolStripSeparator6.Name = "toolStripSeparator6"; + resources.ApplyResources(this.toolStripSeparator6, "toolStripSeparator6"); + // + // tsbViewLog + // + this.tsbViewLog.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.tsbViewLog.Image = global::PatchEmAll_GUI.Properties.Resources.Log_32x32; + resources.ApplyResources(this.tsbViewLog, "tsbViewLog"); + this.tsbViewLog.Name = "tsbViewLog"; + this.tsbViewLog.Click += new System.EventHandler(this.ViewLog_Click); + // + // tsbViewOptions + // + this.tsbViewOptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.tsbViewOptions.Image = global::PatchEmAll_GUI.Properties.Resources.Options_32x32; + resources.ApplyResources(this.tsbViewOptions, "tsbViewOptions"); + this.tsbViewOptions.Name = "tsbViewOptions"; + this.tsbViewOptions.Click += new System.EventHandler(this.ViewOptions_Click); + // + // tsbViewPPDBuilder + // + this.tsbViewPPDBuilder.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.tsbViewPPDBuilder.Image = global::PatchEmAll_GUI.Properties.Resources.PPDBuilder_32x32; + resources.ApplyResources(this.tsbViewPPDBuilder, "tsbViewPPDBuilder"); + this.tsbViewPPDBuilder.Name = "tsbViewPPDBuilder"; + this.tsbViewPPDBuilder.Click += new System.EventHandler(this.ViewPPDBuilder_Click); + // + // tsbViewHelp + // + this.tsbViewHelp.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.tsbViewHelp.Image = global::PatchEmAll_GUI.Properties.Resources.Help_32x32; + resources.ApplyResources(this.tsbViewHelp, "tsbViewHelp"); + this.tsbViewHelp.Name = "tsbViewHelp"; + this.tsbViewHelp.Click += new System.EventHandler(this.ViewHelp_Click); + // + // tsbViewLicense + // + this.tsbViewLicense.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.tsbViewLicense.Image = global::PatchEmAll_GUI.Properties.Resources.License_32x32; + resources.ApplyResources(this.tsbViewLicense, "tsbViewLicense"); + this.tsbViewLicense.Name = "tsbViewLicense"; + this.tsbViewLicense.Click += new System.EventHandler(this.ViewLicense_Click); + // + // tsbDonations + // + this.tsbDonations.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.tsbDonations.Image = global::PatchEmAll_GUI.Properties.Resources.Donate_32x32; + resources.ApplyResources(this.tsbDonations, "tsbDonations"); + this.tsbDonations.Name = "tsbDonations"; + this.tsbDonations.Click += new System.EventHandler(this.ViewDonations_Click); + // + // tsbRegistration + // + this.tsbRegistration.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.tsbRegistration.Image = global::PatchEmAll_GUI.Properties.Resources.Key_32x32; + resources.ApplyResources(this.tsbRegistration, "tsbRegistration"); + this.tsbRegistration.Name = "tsbRegistration"; + this.tsbRegistration.Click += new System.EventHandler(this.ViewRegistration_Click); + // + // tsbViewToolbar + // + this.tsbViewToolbar.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.tsbViewToolbar.Image = global::PatchEmAll_GUI.Properties.Resources.Toolbar_32x32; + resources.ApplyResources(this.tsbViewToolbar, "tsbViewToolbar"); + this.tsbViewToolbar.Name = "tsbViewToolbar"; + this.tsbViewToolbar.Click += new System.EventHandler(this.ViewToolbar_Click); + // + // ssMain + // + this.ssMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.tsslSnap, + this.tsslStarusMessage, + this.tspbBuildProgress, + this.tssbCancel}); + resources.ApplyResources(this.ssMain, "ssMain"); + this.ssMain.Name = "ssMain"; + // + // tsslSnap + // + this.tsslSnap.Name = "tsslSnap"; + resources.ApplyResources(this.tsslSnap, "tsslSnap"); + this.tsslSnap.Spring = true; + // + // tsslStarusMessage + // + this.tsslStarusMessage.Name = "tsslStarusMessage"; + resources.ApplyResources(this.tsslStarusMessage, "tsslStarusMessage"); + // + // tspbBuildProgress + // + this.tspbBuildProgress.Name = "tspbBuildProgress"; + resources.ApplyResources(this.tspbBuildProgress, "tspbBuildProgress"); + // + // tssbCancel + // + this.tssbCancel.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.tssbCancel.DropDownButtonWidth = 0; + resources.ApplyResources(this.tssbCancel, "tssbCancel"); + this.tssbCancel.Image = global::PatchEmAll_GUI.Properties.Resources.Cancel_16x16; + this.tssbCancel.Name = "tssbCancel"; + this.tssbCancel.Click += new System.EventHandler(this.CancelBuild_Click); + // + // tcMain + // + this.tcMain.Controls.Add(this.tabLog); + this.tcMain.Controls.Add(this.tabOptions); + this.tcMain.Controls.Add(this.tabPPDBuilder); + this.tcMain.Controls.Add(this.tabHelp); + this.tcMain.Controls.Add(this.tabLicense); + this.tcMain.Controls.Add(this.tabDonations); + this.tcMain.Controls.Add(this.tabRegistration); + resources.ApplyResources(this.tcMain, "tcMain"); + this.tcMain.Name = "tcMain"; + this.tcMain.SelectedIndex = 0; + // + // tabLog + // + this.tabLog.Controls.Add(this.rtbLog); + resources.ApplyResources(this.tabLog, "tabLog"); + this.tabLog.Name = "tabLog"; + this.tabLog.UseVisualStyleBackColor = true; + // + // rtbLog + // + resources.ApplyResources(this.rtbLog, "rtbLog"); + this.rtbLog.Name = "rtbLog"; + this.rtbLog.ReadOnly = true; + // + // tabOptions + // + this.tabOptions.Controls.Add(this.gbOptionsInfo); + this.tabOptions.Controls.Add(this.gbOptions); + resources.ApplyResources(this.tabOptions, "tabOptions"); + this.tabOptions.Name = "tabOptions"; + this.tabOptions.UseVisualStyleBackColor = true; + // + // gbOptionsInfo + // + resources.ApplyResources(this.gbOptionsInfo, "gbOptionsInfo"); + this.gbOptionsInfo.Controls.Add(this.lblOptionsInfo2); + this.gbOptionsInfo.Controls.Add(this.lblOptionsInfo1); + this.gbOptionsInfo.Name = "gbOptionsInfo"; + this.gbOptionsInfo.TabStop = false; + // + // lblOptionsInfo2 + // + resources.ApplyResources(this.lblOptionsInfo2, "lblOptionsInfo2"); + this.lblOptionsInfo2.Name = "lblOptionsInfo2"; + // + // lblOptionsInfo1 + // + resources.ApplyResources(this.lblOptionsInfo1, "lblOptionsInfo1"); + this.lblOptionsInfo1.Name = "lblOptionsInfo1"; + // + // gbOptions + // + resources.ApplyResources(this.gbOptions, "gbOptions"); + this.gbOptions.Controls.Add(this.cbLogLevel); + this.gbOptions.Controls.Add(this.cbLanguage); + this.gbOptions.Controls.Add(this.cbSounds); + this.gbOptions.Controls.Add(this.lblLogLevel); + this.gbOptions.Controls.Add(this.lblLanguage); + this.gbOptions.Controls.Add(this.txtComment); + this.gbOptions.Controls.Add(this.txtMachineName); + this.gbOptions.Controls.Add(this.txtDelimiter); + this.gbOptions.Controls.Add(this.txtXdeltaBuildCommand); + this.gbOptions.Controls.Add(this.txtPathXdeltaFile); + this.gbOptions.Controls.Add(this.txtPathDatPPDXMLFile); + this.gbOptions.Controls.Add(this.txtPathDatsDir); + this.gbOptions.Controls.Add(this.txtPathPatchesDir); + this.gbOptions.Controls.Add(this.txtPathROMsDir); + this.gbOptions.Controls.Add(this.lblSounds); + this.gbOptions.Controls.Add(this.lblComment); + this.gbOptions.Controls.Add(this.lblMachineName); + this.gbOptions.Controls.Add(this.lblDelimiter); + this.gbOptions.Controls.Add(this.lblXdeltaBuildCommand); + this.gbOptions.Controls.Add(this.lblPathXdeltaFile); + this.gbOptions.Controls.Add(this.lblPathDatPPDXMLFile); + this.gbOptions.Controls.Add(this.lblPathDatsDir); + this.gbOptions.Controls.Add(this.lblPathPatchesDir); + this.gbOptions.Controls.Add(this.lblPathROMsDir); + this.gbOptions.Name = "gbOptions"; + this.gbOptions.TabStop = false; + // + // cbLogLevel + // + resources.ApplyResources(this.cbLogLevel, "cbLogLevel"); + this.cbLogLevel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cbLogLevel.FormattingEnabled = true; + this.cbLogLevel.Items.AddRange(new object[] { + resources.GetString("cbLogLevel.Items")}); + this.cbLogLevel.Name = "cbLogLevel"; + // + // cbLanguage + // + resources.ApplyResources(this.cbLanguage, "cbLanguage"); + this.cbLanguage.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cbLanguage.FormattingEnabled = true; + this.cbLanguage.Items.AddRange(new object[] { + resources.GetString("cbLanguage.Items")}); + this.cbLanguage.Name = "cbLanguage"; + // + // cbSounds + // + resources.ApplyResources(this.cbSounds, "cbSounds"); + this.cbSounds.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cbSounds.FormattingEnabled = true; + this.cbSounds.Items.AddRange(new object[] { + resources.GetString("cbSounds.Items"), + resources.GetString("cbSounds.Items1")}); + this.cbSounds.Name = "cbSounds"; + // + // lblLogLevel + // + resources.ApplyResources(this.lblLogLevel, "lblLogLevel"); + this.lblLogLevel.Name = "lblLogLevel"; + // + // lblLanguage + // + resources.ApplyResources(this.lblLanguage, "lblLanguage"); + this.lblLanguage.Name = "lblLanguage"; + // + // txtComment + // + resources.ApplyResources(this.txtComment, "txtComment"); + this.txtComment.Name = "txtComment"; + this.txtComment.ReadOnly = true; + // + // txtMachineName + // + resources.ApplyResources(this.txtMachineName, "txtMachineName"); + this.txtMachineName.Name = "txtMachineName"; + this.txtMachineName.ReadOnly = true; + // + // txtDelimiter + // + resources.ApplyResources(this.txtDelimiter, "txtDelimiter"); + this.txtDelimiter.Name = "txtDelimiter"; + this.txtDelimiter.ReadOnly = true; + // + // txtXdeltaBuildCommand + // + resources.ApplyResources(this.txtXdeltaBuildCommand, "txtXdeltaBuildCommand"); + this.txtXdeltaBuildCommand.Name = "txtXdeltaBuildCommand"; + this.txtXdeltaBuildCommand.ReadOnly = true; + // + // txtPathXdeltaFile + // + resources.ApplyResources(this.txtPathXdeltaFile, "txtPathXdeltaFile"); + this.txtPathXdeltaFile.Name = "txtPathXdeltaFile"; + this.txtPathXdeltaFile.ReadOnly = true; + this.txtPathXdeltaFile.Click += new System.EventHandler(this.ChangePathXdeltaFile_Click); + // + // txtPathDatPPDXMLFile + // + resources.ApplyResources(this.txtPathDatPPDXMLFile, "txtPathDatPPDXMLFile"); + this.txtPathDatPPDXMLFile.Name = "txtPathDatPPDXMLFile"; + this.txtPathDatPPDXMLFile.ReadOnly = true; + this.txtPathDatPPDXMLFile.Click += new System.EventHandler(this.ChangePathDatPPDXMLFile_Click); + // + // txtPathDatsDir + // + resources.ApplyResources(this.txtPathDatsDir, "txtPathDatsDir"); + this.txtPathDatsDir.Name = "txtPathDatsDir"; + this.txtPathDatsDir.ReadOnly = true; + this.txtPathDatsDir.Click += new System.EventHandler(this.ChangePathDatsDir_Click); + // + // txtPathPatchesDir + // + resources.ApplyResources(this.txtPathPatchesDir, "txtPathPatchesDir"); + this.txtPathPatchesDir.Name = "txtPathPatchesDir"; + this.txtPathPatchesDir.ReadOnly = true; + this.txtPathPatchesDir.Click += new System.EventHandler(this.ChangePathPatchesDir_Click); + // + // txtPathROMsDir + // + resources.ApplyResources(this.txtPathROMsDir, "txtPathROMsDir"); + this.txtPathROMsDir.Name = "txtPathROMsDir"; + this.txtPathROMsDir.ReadOnly = true; + this.txtPathROMsDir.Click += new System.EventHandler(this.ChangePathRomsDir_Click); + // + // lblSounds + // + resources.ApplyResources(this.lblSounds, "lblSounds"); + this.lblSounds.Name = "lblSounds"; + // + // lblComment + // + resources.ApplyResources(this.lblComment, "lblComment"); + this.lblComment.Name = "lblComment"; + // + // lblMachineName + // + resources.ApplyResources(this.lblMachineName, "lblMachineName"); + this.lblMachineName.Name = "lblMachineName"; + // + // lblDelimiter + // + resources.ApplyResources(this.lblDelimiter, "lblDelimiter"); + this.lblDelimiter.Name = "lblDelimiter"; + // + // lblXdeltaBuildCommand + // + resources.ApplyResources(this.lblXdeltaBuildCommand, "lblXdeltaBuildCommand"); + this.lblXdeltaBuildCommand.Name = "lblXdeltaBuildCommand"; + // + // lblPathXdeltaFile + // + resources.ApplyResources(this.lblPathXdeltaFile, "lblPathXdeltaFile"); + this.lblPathXdeltaFile.Name = "lblPathXdeltaFile"; + // + // lblPathDatPPDXMLFile + // + resources.ApplyResources(this.lblPathDatPPDXMLFile, "lblPathDatPPDXMLFile"); + this.lblPathDatPPDXMLFile.Name = "lblPathDatPPDXMLFile"; + // + // lblPathDatsDir + // + resources.ApplyResources(this.lblPathDatsDir, "lblPathDatsDir"); + this.lblPathDatsDir.Name = "lblPathDatsDir"; + // + // lblPathPatchesDir + // + resources.ApplyResources(this.lblPathPatchesDir, "lblPathPatchesDir"); + this.lblPathPatchesDir.Name = "lblPathPatchesDir"; + // + // lblPathROMsDir + // + resources.ApplyResources(this.lblPathROMsDir, "lblPathROMsDir"); + this.lblPathROMsDir.Name = "lblPathROMsDir"; + // + // tabPPDBuilder + // + this.tabPPDBuilder.Controls.Add(this.splitContainer4); + resources.ApplyResources(this.tabPPDBuilder, "tabPPDBuilder"); + this.tabPPDBuilder.Name = "tabPPDBuilder"; + this.tabPPDBuilder.UseVisualStyleBackColor = true; + // + // tabHelp + // + this.tabHelp.Controls.Add(this.rtbHelp); + resources.ApplyResources(this.tabHelp, "tabHelp"); + this.tabHelp.Name = "tabHelp"; + this.tabHelp.UseVisualStyleBackColor = true; + // + // rtbHelp + // + resources.ApplyResources(this.rtbHelp, "rtbHelp"); + this.rtbHelp.Name = "rtbHelp"; + this.rtbHelp.ReadOnly = true; + // + // tabLicense + // + this.tabLicense.Controls.Add(this.rtbLicense); + resources.ApplyResources(this.tabLicense, "tabLicense"); + this.tabLicense.Name = "tabLicense"; + this.tabLicense.UseVisualStyleBackColor = true; + // + // rtbLicense + // + resources.ApplyResources(this.rtbLicense, "rtbLicense"); + this.rtbLicense.Name = "rtbLicense"; + this.rtbLicense.ReadOnly = true; + // + // tabDonations + // + this.tabDonations.Controls.Add(this.rtbDonations); + resources.ApplyResources(this.tabDonations, "tabDonations"); + this.tabDonations.Name = "tabDonations"; + this.tabDonations.UseVisualStyleBackColor = true; + // + // rtbDonations + // + resources.ApplyResources(this.rtbDonations, "rtbDonations"); + this.rtbDonations.Name = "rtbDonations"; + this.rtbDonations.ReadOnly = true; + // + // tabRegistration + // + this.tabRegistration.Controls.Add(this.gbRegistrationInfo); + this.tabRegistration.Controls.Add(this.tlpRegistration); + resources.ApplyResources(this.tabRegistration, "tabRegistration"); + this.tabRegistration.Name = "tabRegistration"; + this.tabRegistration.UseVisualStyleBackColor = true; + // + // gbRegistrationInfo + // + this.gbRegistrationInfo.Controls.Add(this.lblRegistrationInfo1); + resources.ApplyResources(this.gbRegistrationInfo, "gbRegistrationInfo"); + this.gbRegistrationInfo.Name = "gbRegistrationInfo"; + this.gbRegistrationInfo.TabStop = false; + // + // lblRegistrationInfo1 + // + resources.ApplyResources(this.lblRegistrationInfo1, "lblRegistrationInfo1"); + this.lblRegistrationInfo1.Name = "lblRegistrationInfo1"; + // + // tlpRegistration + // + resources.ApplyResources(this.tlpRegistration, "tlpRegistration"); + this.tlpRegistration.Controls.Add(this.gbRegistration, 1, 0); + this.tlpRegistration.Controls.Add(this.gbRegisterApp, 0, 0); + this.tlpRegistration.Name = "tlpRegistration"; + // + // gbRegistration + // + resources.ApplyResources(this.gbRegistration, "gbRegistration"); + this.gbRegistration.Controls.Add(this.lblRegistrationKey); + this.gbRegistration.Controls.Add(this.lblRegistrationKeyLabel); + this.gbRegistration.Controls.Add(this.lblRegistrationStatus); + this.gbRegistration.Controls.Add(this.lblRegistrationStatusLabel); + this.gbRegistration.Name = "gbRegistration"; + this.gbRegistration.TabStop = false; + // + // lblRegistrationKey + // + resources.ApplyResources(this.lblRegistrationKey, "lblRegistrationKey"); + this.lblRegistrationKey.Name = "lblRegistrationKey"; + // + // lblRegistrationKeyLabel + // + resources.ApplyResources(this.lblRegistrationKeyLabel, "lblRegistrationKeyLabel"); + this.lblRegistrationKeyLabel.Name = "lblRegistrationKeyLabel"; + // + // lblRegistrationStatus + // + resources.ApplyResources(this.lblRegistrationStatus, "lblRegistrationStatus"); + this.lblRegistrationStatus.Name = "lblRegistrationStatus"; + // + // lblRegistrationStatusLabel + // + resources.ApplyResources(this.lblRegistrationStatusLabel, "lblRegistrationStatusLabel"); + this.lblRegistrationStatusLabel.Name = "lblRegistrationStatusLabel"; + // + // gbRegisterApp + // + resources.ApplyResources(this.gbRegisterApp, "gbRegisterApp"); + this.gbRegisterApp.Controls.Add(this.lblRegisterAppPassword); + this.gbRegisterApp.Controls.Add(this.lblRegisterAppEmailAddress); + this.gbRegisterApp.Controls.Add(this.lblRegisterAppUsername); + this.gbRegisterApp.Controls.Add(this.btnRegisterApp); + this.gbRegisterApp.Controls.Add(this.txtRegisterAppPassword); + this.gbRegisterApp.Controls.Add(this.txtRegisterAppEmailAddress); + this.gbRegisterApp.Controls.Add(this.txtRegisterAppUsername); + this.gbRegisterApp.Name = "gbRegisterApp"; + this.gbRegisterApp.TabStop = false; + // + // lblRegisterAppPassword + // + resources.ApplyResources(this.lblRegisterAppPassword, "lblRegisterAppPassword"); + this.lblRegisterAppPassword.Name = "lblRegisterAppPassword"; + // + // lblRegisterAppEmailAddress + // + resources.ApplyResources(this.lblRegisterAppEmailAddress, "lblRegisterAppEmailAddress"); + this.lblRegisterAppEmailAddress.Name = "lblRegisterAppEmailAddress"; + // + // lblRegisterAppUsername + // + resources.ApplyResources(this.lblRegisterAppUsername, "lblRegisterAppUsername"); + this.lblRegisterAppUsername.Name = "lblRegisterAppUsername"; + // + // btnRegisterApp + // + resources.ApplyResources(this.btnRegisterApp, "btnRegisterApp"); + this.btnRegisterApp.Name = "btnRegisterApp"; + this.btnRegisterApp.UseVisualStyleBackColor = true; + // + // txtRegisterAppPassword + // + resources.ApplyResources(this.txtRegisterAppPassword, "txtRegisterAppPassword"); + this.txtRegisterAppPassword.Name = "txtRegisterAppPassword"; + // + // txtRegisterAppEmailAddress + // + resources.ApplyResources(this.txtRegisterAppEmailAddress, "txtRegisterAppEmailAddress"); + this.txtRegisterAppEmailAddress.Name = "txtRegisterAppEmailAddress"; + // + // txtRegisterAppUsername + // + resources.ApplyResources(this.txtRegisterAppUsername, "txtRegisterAppUsername"); + this.txtRegisterAppUsername.Name = "txtRegisterAppUsername"; + // + // bgwBuildROMs + // + this.bgwBuildROMs.WorkerReportsProgress = true; + this.bgwBuildROMs.WorkerSupportsCancellation = true; + this.bgwBuildROMs.DoWork += new System.ComponentModel.DoWorkEventHandler(this.BuildROMs_DoWork); + this.bgwBuildROMs.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.BuildROMs_ProgressChanged); + this.bgwBuildROMs.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.BuildROMs_RunWorkerCompleted); + // + // bgwBuildPatches + // + this.bgwBuildPatches.WorkerReportsProgress = true; + this.bgwBuildPatches.WorkerSupportsCancellation = true; + this.bgwBuildPatches.DoWork += new System.ComponentModel.DoWorkEventHandler(this.BuildPatches_DoWork); + this.bgwBuildPatches.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.BuildPatches_ProgressChanged); + this.bgwBuildPatches.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.BuildPatches_RunWorkerCompleted); + // + // bgwBuildDatafile + // + this.bgwBuildDatafile.WorkerReportsProgress = true; + this.bgwBuildDatafile.WorkerSupportsCancellation = true; + this.bgwBuildDatafile.DoWork += new System.ComponentModel.DoWorkEventHandler(this.BuildDatafile_DoWork); + this.bgwBuildDatafile.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.BuildDatafile_ProgressChanged); + this.bgwBuildDatafile.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.BuildDatafile_RunWorkerCompleted); + // + // bgwStartupTasks + // + this.bgwStartupTasks.DoWork += new System.ComponentModel.DoWorkEventHandler(this.StartupTasks_DoWork); + this.bgwStartupTasks.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.StartupTasks_RunWorkerCompleted); + // + // FrmPatchEmAll + // + resources.ApplyResources(this, "$this"); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.tcMain); + this.Controls.Add(this.ssMain); + this.Controls.Add(this.tsMain); + this.Controls.Add(this.msMain); + this.MainMenuStrip = this.msMain; + this.Name = "FrmPatchEmAll"; + this.WindowState = System.Windows.Forms.FormWindowState.Maximized; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form_FormClosing); + this.Shown += new System.EventHandler(this.Form_Shown); + this.splitContainer4.Panel1.ResumeLayout(false); + this.splitContainer4.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer4)).EndInit(); + this.splitContainer4.ResumeLayout(false); + this.splitContainer5.Panel1.ResumeLayout(false); + this.splitContainer5.Panel1.PerformLayout(); + this.splitContainer5.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer5)).EndInit(); + this.splitContainer5.ResumeLayout(false); + this.msMain.ResumeLayout(false); + this.msMain.PerformLayout(); + this.tsMain.ResumeLayout(false); + this.tsMain.PerformLayout(); + this.ssMain.ResumeLayout(false); + this.ssMain.PerformLayout(); + this.tcMain.ResumeLayout(false); + this.tabLog.ResumeLayout(false); + this.tabOptions.ResumeLayout(false); + this.gbOptionsInfo.ResumeLayout(false); + this.gbOptionsInfo.PerformLayout(); + this.gbOptions.ResumeLayout(false); + this.gbOptions.PerformLayout(); + this.tabPPDBuilder.ResumeLayout(false); + this.tabHelp.ResumeLayout(false); + this.tabLicense.ResumeLayout(false); + this.tabDonations.ResumeLayout(false); + this.tabRegistration.ResumeLayout(false); + this.gbRegistrationInfo.ResumeLayout(false); + this.gbRegistrationInfo.PerformLayout(); + this.tlpRegistration.ResumeLayout(false); + this.gbRegistration.ResumeLayout(false); + this.gbRegistration.PerformLayout(); + this.gbRegisterApp.ResumeLayout(false); + this.gbRegisterApp.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.MenuStrip msMain; + private System.Windows.Forms.ToolStrip tsMain; + private System.Windows.Forms.StatusStrip ssMain; + private System.Windows.Forms.ToolStripMenuItem tsmiCommands; + private System.Windows.Forms.ToolStripMenuItem tsmiBuildROMs; + private System.Windows.Forms.ToolStripMenuItem tsmiBuildPatches; + private System.Windows.Forms.ToolStripMenuItem tsmiBuildPatchesDatafile; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; + private System.Windows.Forms.ToolStripMenuItem tsmiLoadOptions; + private System.Windows.Forms.ToolStripMenuItem tsmiSaveOptions; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; + private System.Windows.Forms.ToolStripMenuItem tsmiSaveLog; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator3; + private System.Windows.Forms.ToolStripMenuItem tsmiExit; + private System.Windows.Forms.ToolStripMenuItem tsmiView; + private System.Windows.Forms.ToolStripMenuItem tsmiLog; + private System.Windows.Forms.ToolStripMenuItem tsmiOptions; + private System.Windows.Forms.ToolStripMenuItem tsmiPPDBuilder; + private System.Windows.Forms.ToolStripMenuItem tsmiHelp; + private System.Windows.Forms.ToolStripMenuItem tsmiLicense; + private System.Windows.Forms.TabControl tcMain; + private System.Windows.Forms.TabPage tabLog; + private System.Windows.Forms.TabPage tabOptions; + private System.Windows.Forms.TabPage tabPPDBuilder; + private System.Windows.Forms.TabPage tabHelp; + private System.Windows.Forms.TabPage tabLicense; + private System.Windows.Forms.ToolStripStatusLabel tsslSnap; + private System.Windows.Forms.ToolStripStatusLabel tsslStarusMessage; + private System.Windows.Forms.ToolStripButton tsbBuildROMs; + private System.Windows.Forms.ToolStripButton tsbBuildPatches; + private System.Windows.Forms.ToolStripButton tsbBuildPatchesDatafile; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator4; + private System.Windows.Forms.ToolStripButton tsbLoadOptions; + private System.Windows.Forms.ToolStripButton tsbSaveOptions; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator5; + private System.Windows.Forms.ToolStripButton tsbSaveLog; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator6; + private System.Windows.Forms.ToolStripButton tsbViewLog; + private System.Windows.Forms.ToolStripButton tsbViewOptions; + private System.Windows.Forms.ToolStripButton tsbViewPPDBuilder; + private System.Windows.Forms.ToolStripButton tsbViewHelp; + private System.Windows.Forms.ToolStripButton tsbViewLicense; + private System.Windows.Forms.ToolStripButton tsbViewToolbar; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator7; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator8; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator9; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator10; + private System.ComponentModel.BackgroundWorker bgwBuildROMs; + private System.ComponentModel.BackgroundWorker bgwBuildPatches; + private System.ComponentModel.BackgroundWorker bgwBuildDatafile; + private System.Windows.Forms.RichTextBox rtbHelp; + private System.Windows.Forms.RichTextBox rtbLicense; + private System.Windows.Forms.GroupBox gbOptions; + private System.Windows.Forms.TextBox txtComment; + private System.Windows.Forms.TextBox txtMachineName; + private System.Windows.Forms.TextBox txtDelimiter; + private System.Windows.Forms.TextBox txtXdeltaBuildCommand; + private System.Windows.Forms.TextBox txtPathXdeltaFile; + private System.Windows.Forms.TextBox txtPathDatPPDXMLFile; + private System.Windows.Forms.TextBox txtPathDatsDir; + private System.Windows.Forms.TextBox txtPathPatchesDir; + private System.Windows.Forms.TextBox txtPathROMsDir; + private System.Windows.Forms.Label lblSounds; + private System.Windows.Forms.Label lblComment; + private System.Windows.Forms.Label lblMachineName; + private System.Windows.Forms.Label lblDelimiter; + private System.Windows.Forms.Label lblXdeltaBuildCommand; + private System.Windows.Forms.Label lblPathXdeltaFile; + private System.Windows.Forms.Label lblPathDatPPDXMLFile; + private System.Windows.Forms.Label lblPathDatsDir; + private System.Windows.Forms.Label lblPathPatchesDir; + private System.Windows.Forms.Label lblPathROMsDir; + private System.ComponentModel.BackgroundWorker bgwStartupTasks; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator11; + private System.Windows.Forms.ToolStripMenuItem tsmiToolbar; + private System.Windows.Forms.ToolStripProgressBar tspbBuildProgress; + private System.Windows.Forms.ToolStripSplitButton tssbCancel; + private System.Windows.Forms.Button btnLoadDat; + private System.Windows.Forms.Button btnRemoveAllPrepatches; + private System.Windows.Forms.Button btnRemovePrepatch; + private System.Windows.Forms.Button btnAddPrepatch; + private System.Windows.Forms.Label lblCountPrepatches; + private System.Windows.Forms.Button btnCheckPrepatches; + private System.Windows.Forms.Button btnSavePPD; + private System.Windows.Forms.Button btnLoadPPD; + private System.Windows.Forms.ListBox lbFromDat; + private System.Windows.Forms.ListBox lbToDat; + private System.Windows.Forms.ListBox lbPrepatches; + private System.Windows.Forms.SplitContainer splitContainer4; + private System.Windows.Forms.SplitContainer splitContainer5; + private Serilog.Sinks.LogEmAll.RichTextBoxLog rtbLog; + private System.Windows.Forms.TextBox txtLoadedDatafile; + private System.Windows.Forms.Label lblLogLevel; + private System.Windows.Forms.Label lblLanguage; + private System.Windows.Forms.ComboBox cbLogLevel; + private System.Windows.Forms.ComboBox cbLanguage; + private System.Windows.Forms.ComboBox cbSounds; + private System.Windows.Forms.GroupBox gbOptionsInfo; + private System.Windows.Forms.Label lblOptionsInfo2; + private System.Windows.Forms.Label lblOptionsInfo1; + private System.Windows.Forms.TabPage tabDonations; + private System.Windows.Forms.TabPage tabRegistration; + private System.Windows.Forms.RichTextBox rtbDonations; + private System.Windows.Forms.TableLayoutPanel tlpRegistration; + private System.Windows.Forms.GroupBox gbRegistrationInfo; + private System.Windows.Forms.GroupBox gbRegisterApp; + private System.Windows.Forms.GroupBox gbRegistration; + private System.Windows.Forms.ToolStripMenuItem tsmiDonations; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator12; + private System.Windows.Forms.ToolStripMenuItem tsmiRegistration; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator13; + private System.Windows.Forms.ToolStripButton tsbDonations; + private System.Windows.Forms.ToolStripButton tsbRegistration; + private System.Windows.Forms.Label lblRegistrationInfo1; + private System.Windows.Forms.Label lblRegistrationKey; + private System.Windows.Forms.Label lblRegistrationKeyLabel; + private System.Windows.Forms.Label lblRegistrationStatus; + private System.Windows.Forms.Label lblRegistrationStatusLabel; + private System.Windows.Forms.Label lblRegisterAppPassword; + private System.Windows.Forms.Label lblRegisterAppEmailAddress; + private System.Windows.Forms.Label lblRegisterAppUsername; + private System.Windows.Forms.Button btnRegisterApp; + private System.Windows.Forms.TextBox txtRegisterAppPassword; + private System.Windows.Forms.TextBox txtRegisterAppEmailAddress; + private System.Windows.Forms.TextBox txtRegisterAppUsername; + } +} + diff --git a/PatchEmAll-GUI/FrmPatchEmAll.cs b/PatchEmAll-GUI/FrmPatchEmAll.cs new file mode 100644 index 0000000..9ef4fe8 --- /dev/null +++ b/PatchEmAll-GUI/FrmPatchEmAll.cs @@ -0,0 +1,2101 @@ +using Serilog; +using System; +using System.ComponentModel; +using System.Diagnostics; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Media; +using System.Security.Cryptography; +using System.Xml.Linq; +using System.Windows.Forms; + +namespace PatchEmAll_GUI +{ + /// + /// The PatchEmAll GUI Form Class which interacts with the Main Program Class. + /// + public partial class FrmPatchEmAll : Form + { + #region Constructors + + PatchEmAll.PatchEmAll pea = new PatchEmAll.PatchEmAll(); + + /// + /// Constructor + /// + public FrmPatchEmAll() + { + // Initialize the form. + InitializeComponent(); + + // Print the version. + pea.PrintVersion(); + + // Load the default options passed from the default options file. + pea.LoadOptionsFromFile(); + + // Load the default options passed from the command line arguments. + pea.LoadOptionsFromCLI(Environment.GetCommandLineArgs()); + + // Add data bindings. + txtPathROMsDir.DataBindings.Add("Text", pea, "PathROMsDir"); + txtPathPatchesDir.DataBindings.Add("Text", pea, "PathPatchesDir"); + txtPathDatsDir.DataBindings.Add("Text", pea, "PathDatsDir"); + txtPathDatPPDXMLFile.DataBindings.Add("Text", pea, "PathDatPPDXMLFile"); + txtPathXdeltaFile.DataBindings.Add("Text", pea, "PathXdeltaFile"); + txtXdeltaBuildCommand.DataBindings.Add("Text", pea, "XdeltaBuildCommand"); + txtDelimiter.DataBindings.Add("Text", pea, "Delimiter"); + txtMachineName.DataBindings.Add("Text", pea, "MachineName"); + txtComment.DataBindings.Add("Text", pea, "Comment"); + cbSounds.DataBindings.Add("SelectedItem", pea, "Sounds"); + cbLanguage.DataBindings.Add("SelectedItem", pea, "Language"); + cbLogLevel.DataBindings.Add("SelectedItem", pea, "LogLevel"); + lblRegistrationStatus.DataBindings.Add("Text", pea, "RegistrationStatus"); + lblRegistrationKey.DataBindings.Add("Text", pea, "RegistrationKey"); + txtRegisterAppUsername.DataBindings.Add("Text", pea, "RegisterAppUsername"); + txtRegisterAppEmailAddress.DataBindings.Add("Text", pea, "RegisterAppEmailAddress"); + txtRegisterAppPassword.DataBindings.Add("Text", pea, "RegisterAppPassword"); + + // Hide some tabs. + tcMain.TabPages.Remove(tabHelp); + tcMain.TabPages.Remove(tabLicense); + tcMain.TabPages.Remove(tabDonations); + tcMain.TabPages.Remove(tabRegistration); + + // Set the title. + UpdateTitle(); + + // Load the GUI RichTextBoxes from resources. + rtbHelp.Text = PatchEmAll.Properties.Resources.PatchEmAll_HELP; + rtbLicense.Text = PatchEmAll.Properties.Resources.PatchEmAll_LICENSE; + rtbDonations.Text = PatchEmAll.Properties.Resources.PatchEmAll_DONATIONS; + } + + #endregion + + #region Getters/Setters Public Accessors + + /// LogLines + public string[] LogLines + { + get { return rtbLog.Lines; } + set { rtbLog.Lines = value; } + } + + #endregion + + #region Log + + /// + /// Saves the log to a text file. + /// + /// + /// + public bool SaveLogToFile(string strPath = null) + { + try + { + if (strPath != null) + { + pea.PathLogFile = strPath; + } + + // Determine if the user selected a log filename. + if (pea.PathLogFile.Length == 0) + { + // Return a bool value. + return false; + } + else + { + // Print to screen + Log.Information("Saving log file ..."); + + // Create log file directory if it doesn't exist. + if (Directory.Exists(Path.GetDirectoryName(pea.PathLogFile)) == false) Directory.CreateDirectory(Path.GetDirectoryName(pea.PathLogFile)); + + // Save the contents of the log to a text file. + File.WriteAllLines(pea.PathLogFile, LogLines); + + // Print to screen + Log.Information("Log file saved (" + pea.PathLogFile + ")"); + + // Return a bool value. + return true; + } + } + catch (Exception ex) + { + // Print to screen + Log.Error("Saving log file failed"); + Log.Error(ex.Message); + + // Return a bool value. + return false; + } + } + + #endregion + + #region Startup Tasks + + /// + /// StartupTasks DoWork + /// + /// + /// + private void StartupTasks_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e) + { + // + } + + /// + /// StartupTasks RunWorkerCompleted + /// + /// + /// + private void StartupTasks_RunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e) + { + if (e.Cancelled) + { + // Print to screen. + Log.Information("Startup tasks canceled"); + Log.Information("Ready"); + } + else if (e.Error != null) + { + // Print to screen. + Log.Error("Startup tasks failed"); + Log.Error("" + e.Error.Message); + Log.Information("Ready"); + } + else + { + // Print to screen. + Log.Information("Startup tasks completed"); + Log.Information("Ready"); + } + + // Update the status message label. + UpdateStatusMessageLabel("Ready"); + + // Enable all buttons. + EnableAllButtons(); + } + + #endregion + + #region GUI Methods + + /// + /// Updates the build progress status progress bar. + /// + /// + private void UpdateStatusBuildProgress(int intPercentage) + { + // Update the build progress status progress bar. + tspbBuildProgress.Value = intPercentage; + } + + /// + /// Updates the progress status message label. + /// + /// + private void UpdateStatusMessageLabel(string strMsg) + { + // Update the progress status message label. + tsslStarusMessage.Text = strMsg; + } + + /// + /// Updates/Sets the application title. + /// + /// + /// + private bool UpdateTitle(string strTitle = "") + { + try + { + if (this.InvokeRequired && !this.IsDisposed) + { + Invoke(new MethodInvoker(delegate () + { + // Update the application title. + this.Text = pea.AppName + " v" + pea.AppVersion + strTitle; + })); + } + else if (!this.IsDisposed) + { + // Update the application title. + this.Text = pea.AppName + " v" + pea.AppVersion + strTitle; + } + return true; + } + catch (Exception) + { + return false; + } + } + + /// + /// Cancels the current build operation. + /// + /// + /// + private void CancelBuild_Click(object sender, EventArgs e) + { + // Print to screen + Log.Information("Cancellation pending after current operation"); + + // Disable the cancel button. + tssbCancel.Enabled = false; + + if (bgwBuildROMs.WorkerSupportsCancellation == true) + { + // Cancel the asynchronous operation. + bgwBuildROMs.CancelAsync(); + } + if (bgwBuildPatches.WorkerSupportsCancellation == true) + { + // Cancel the asynchronous operation. + bgwBuildPatches.CancelAsync(); + } + if (bgwBuildDatafile.WorkerSupportsCancellation == true) + { + // Cancel the asynchronous operation. + bgwBuildDatafile.CancelAsync(); + } + } + + /// + /// Loads an options file. + /// + private void LoadOptions_Click(object sender, EventArgs e) + { + try + { + // Disable all buttons. + DisableAllButtons(); + + // Create and initialize an OpenFileDialog for the options file. + OpenFileDialog ofdOptions = new OpenFileDialog + { + DefaultExt = "*.xml", + Filter = "XML Files|*.xml", + Title = "Please enter a path to the options file: ", + InitialDirectory = Path.Combine(Application.StartupPath, "Options") + }; + + // Determine if the user selected a file name from the OpenFileDialog. + if (ofdOptions.ShowDialog() == DialogResult.OK && ofdOptions.FileName.Length > 0) + { + // Set the options file path. + pea.PathOptionsFile = ofdOptions.FileName; + + // Select the Log tab. + if (tcMain.TabPages.Contains(tabLog)) { tcMain.SelectTab(tabLog); } + + // Load the options. + pea.LoadOptionsFromFile(); + + // Print to screen + Log.Information("Ready"); + } + + // Dispose of the OpenFileDialog. + ofdOptions.Dispose(); + + // Enable all buttons. + EnableAllButtons(); + } + catch (Exception ex) + { + // Print to screen + Log.Error("Loading options failed"); + Log.Error("" + ex.Message); + Log.Information("Ready"); + } + } + + /// + /// Saves an options file. + /// + private void SaveOptions_Click(object sender, EventArgs e) + { + try + { + // Disable all buttons. + DisableAllButtons(); + + // Create and initialize a SaveFileDialog for the options file. + SaveFileDialog sfdOptions = new SaveFileDialog + { + DefaultExt = "*.xml", + Filter = "XML Files|*.xml", + FileName = "PatchEmAll-Options.xml", + Title = "Please enter a path to the options file: ", + InitialDirectory = Path.Combine(Application.StartupPath, "Options") + }; + + // Determine if the user selected a file name from the SaveFileDialog. + if (sfdOptions.ShowDialog() == DialogResult.OK && sfdOptions.FileName.Length > 0) + { + // Set the options file path. + pea.PathOptionsFile = sfdOptions.FileName; + + // Select the Log tab. + if (tcMain.TabPages.Contains(tabLog)) { tcMain.SelectTab(tabLog); } + + // Save the options. + pea.SaveOptionsToFile(); + + // Print to screen + Log.Information("Ready"); + } + + // Dispose of the SaveFileDialog. + sfdOptions.Dispose(); + + // Enable all buttons. + EnableAllButtons(); + } + catch (Exception ex) + { + // Print to screen + Log.Error("Saving options failed"); + Log.Error("" + ex.Message); + Log.Information("Ready"); + } + + } + + /// + /// Saves a log file. + /// + private void SaveLog_Click(object sender, EventArgs e) + { + try + { + // Disable all buttons. + DisableAllButtons(); + + // Create and initialize a SaveFileDialog for the log file. + SaveFileDialog sfdLog = new SaveFileDialog + { + DefaultExt = "*.txt", + Filter = "TXT Files|*.txt", + FileName = "PatchEmAll-Log-" + DateTime.Now.ToString("yyyyMMdd_HHmmss") + ".txt", + Title = "Please enter a path to the log file: ", + InitialDirectory = Path.Combine(Application.StartupPath, "Logs") + }; + + // Determine if the user selected a log filename. + if (sfdLog.ShowDialog() == DialogResult.OK && sfdLog.FileName.Length > 0) + { + // Set the log file path. + pea.PathLogFile = sfdLog.FileName; + + // Select the Log tab. + if (tcMain.TabPages.Contains(tabLog)) { tcMain.SelectTab(tabLog); } + + // Save the log. + SaveLogToFile(pea.PathLogFile); + + // Print to screen + Log.Information("Ready"); + } + + // Dispose of the SaveFileDialog. + sfdLog.Dispose(); + + // Enable all buttons. + EnableAllButtons(); + } + catch (Exception ex) + { + // Print to screen + Log.Error("Saving log file failed"); + Log.Error("" + ex.Message); + Log.Information("Ready"); + } + } + + /// + /// Enables all of the buttons. + /// + private void EnableAllButtons() + { + // Enable all Menu Item buttons. + tsmiCommands.Enabled = true; + tsmiExit.Enabled = true; + tsmiBuildROMs.Enabled = true; + tsmiBuildPatches.Enabled = true; + tsmiBuildPatchesDatafile.Enabled = true; + tsmiLoadOptions.Enabled = true; + tsmiSaveOptions.Enabled = true; + tsmiSaveLog.Enabled = true; + + // Enable all Toolbar buttons. + tsbBuildROMs.Enabled = true; + tsbBuildPatches.Enabled = true; + tsbBuildPatchesDatafile.Enabled = true; + tsbLoadOptions.Enabled = true; + tsbSaveOptions.Enabled = true; + tsbSaveLog.Enabled = true; + + // Enable all Options buttons. + txtPathROMsDir.Enabled = true; + txtPathPatchesDir.Enabled = true; + txtPathDatsDir.Enabled = true; + txtPathDatPPDXMLFile.Enabled = true; + txtPathXdeltaFile.Enabled = true; + txtXdeltaBuildCommand.Enabled = true; + txtDelimiter.Enabled = true; + txtMachineName.Enabled = true; + txtComment.Enabled = true; + cbSounds.Enabled = true; + cbLanguage.Enabled = true; + cbLogLevel.Enabled = true; + } + + /// + /// Disables all of the buttons. + /// + private void DisableAllButtons() + { + // Disable all Menu Item buttons. + tsmiCommands.Enabled = false; + tsmiExit.Enabled = false; + tsmiBuildROMs.Enabled = false; + tsmiBuildPatches.Enabled = false; + tsmiBuildPatchesDatafile.Enabled = false; + tsmiLoadOptions.Enabled = false; + tsmiSaveOptions.Enabled = false; + tsmiSaveLog.Enabled = false; + + // Disable all Toolbar buttons. + tsbBuildROMs.Enabled = false; + tsbBuildPatches.Enabled = false; + tsbBuildPatchesDatafile.Enabled = false; + tsbLoadOptions.Enabled = false; + tsbSaveOptions.Enabled = false; + tsbSaveLog.Enabled = false; + + // Disable all Options buttons. + txtPathROMsDir.Enabled = false; + txtPathPatchesDir.Enabled = false; + txtPathDatsDir.Enabled = false; + txtPathDatPPDXMLFile.Enabled = false; + txtPathXdeltaFile.Enabled = false; + txtXdeltaBuildCommand.Enabled = false; + txtDelimiter.Enabled = false; + txtMachineName.Enabled = false; + txtComment.Enabled = false; + cbSounds.Enabled = false; + cbLanguage.Enabled = false; + cbLogLevel.Enabled = false; + } + + /// + /// Exits the WinForm app. + /// + /// + /// + private void ExitApp_Click(object sender, EventArgs e) + { + Application.Exit(); + } + + #endregion + + #region Change Options Click Events + + /// + /// Changes the path to the ROMs directory. + /// + /// + /// + private void ChangePathRomsDir_Click(object sender, EventArgs e) + { + // Disable all buttons. + DisableAllButtons(); + + if (txtPathROMsDir.Text == "") { txtPathROMsDir.Text = Path.Combine(Application.StartupPath, "ROMs"); } + + // Play a sound. + PlaySound("Confirm"); + + // Create and initialize a FolderBrowserDialog for the ROMs directory. + FolderBrowserDialog fbdPathRomsDir = new FolderBrowserDialog + { + ShowNewFolderButton = true, + Description = "Please enter a path to the ROMs directory: ", + SelectedPath = Path.Combine(Application.StartupPath, "ROMs") + }; + + // Determine if the user selected a folder name from the FolderBrowserDialog. + if (fbdPathRomsDir.ShowDialog() == DialogResult.OK) + { + // Set both variables for compatibility for Windows .Net and Mono. + pea.PathROMsDir = fbdPathRomsDir.SelectedPath; + txtPathROMsDir.Text = fbdPathRomsDir.SelectedPath; + } + + // Enable all buttons. + EnableAllButtons(); + } + + /// + /// Changes the path to the patches directory. + /// + /// + /// + private void ChangePathPatchesDir_Click(object sender, EventArgs e) + { + // Disable all buttons. + DisableAllButtons(); + + if (txtPathPatchesDir.Text == "") { txtPathPatchesDir.Text = Path.Combine(Application.StartupPath, "Patches"); } + + // Play a sound. + PlaySound("Confirm"); + + // Create and initialize a FolderBrowserDialog for the patches directory. + FolderBrowserDialog fbdPathPatchesDir = new FolderBrowserDialog + { + ShowNewFolderButton = true, + Description = "Please enter a path to the patches directory: ", + SelectedPath = Path.Combine(Application.StartupPath, "Patches") + }; + + // Determine if the user selected OK from the FolderBrowserDialog. + if (fbdPathPatchesDir.ShowDialog() == DialogResult.OK) + { + // Set both variables for compatibility for Windows .Net and Mono. + pea.PathPatchesDir = fbdPathPatchesDir.SelectedPath; + txtPathPatchesDir.Text = fbdPathPatchesDir.SelectedPath; + } + + // Enable all buttons. + EnableAllButtons(); + } + + /// + /// Changes the path to the dats directory. + /// + /// + /// + private void ChangePathDatsDir_Click(object sender, EventArgs e) + { + // Disable all buttons. + DisableAllButtons(); + + if (txtPathDatsDir.Text == "") { txtPathDatsDir.Text = Path.Combine(Application.StartupPath, "Dats"); } + + // Play a sound. + PlaySound("Confirm"); + + // Create and initialize a FolderBrowserDialog for the dats directory. + FolderBrowserDialog fbdPathDatsDir = new FolderBrowserDialog + { + ShowNewFolderButton = true, + Description = "Please enter a path to the dats directory: ", + SelectedPath = Path.Combine(Application.StartupPath, "Dats") + }; + + // Determine if the user selected a folder name from the FolderBrowserDialog. + if (fbdPathDatsDir.ShowDialog() == DialogResult.OK) + { + // Set both variables for compatibility for Windows .Net and Mono. + pea.PathDatsDir = fbdPathDatsDir.SelectedPath; + txtPathDatsDir.Text = fbdPathDatsDir.SelectedPath; + } + + // Enable all buttons. + EnableAllButtons(); + } + + /// + /// Changes the path to the Dat/PPD/XML file. + /// + /// + /// + private void ChangePathDatPPDXMLFile_Click(object sender, EventArgs e) + { + // Disable all buttons. + DisableAllButtons(); + + // Play a sound. + PlaySound("Confirm"); + + // Create and initialize an OpenFileDialog for the Dat/PPD/XML file. + OpenFileDialog ofdPathDatFile = new OpenFileDialog + { + DefaultExt = "*.dat", + Filter = "All Datafiles|*.dat;*.ppd;*.xml|DAT Files|*.dat|PPD Files|*.ppd|XML Files|*.xml", + Title = "Please enter a path to the Dat/PPD/XML file: ", + InitialDirectory = Path.Combine(Application.StartupPath, "Dats") + }; + + // Determine if the user selected a file name from the OpenFileDialog. + if (ofdPathDatFile.ShowDialog() == DialogResult.OK && ofdPathDatFile.FileName.Length > 0) + { + // Set both variables for compatibility for Windows .Net and Mono. + pea.PathDatPPDXMLFile = ofdPathDatFile.FileName; + txtPathDatPPDXMLFile.Text = ofdPathDatFile.FileName; + } + + // Enable all buttons. + EnableAllButtons(); + } + + /// + /// Changes the path to the Xdelta file. + /// + /// + /// + private void ChangePathXdeltaFile_Click(object sender, EventArgs e) + { + // Disable all buttons. + DisableAllButtons(); + + // Play a sound. + PlaySound("Confirm"); + + // Create and initialize an OpenFileDialog for the Xdelta file. + OpenFileDialog ofdPathXdeltaFile = new OpenFileDialog + { + DefaultExt = "*.exe", + Filter = "EXE Files|*.exe|BIN Files|*.bin", + Title = "Please enter a path to the Xdelta file: ", + InitialDirectory = Path.Combine(Application.StartupPath, "Xdelta") + }; + + // Determine if the user selected a file name from the OpenFileDialog. + if (ofdPathXdeltaFile.ShowDialog() == DialogResult.OK && ofdPathXdeltaFile.FileName.Length > 0) + { + // Set both variables for compatibility for Windows .Net and Mono. + pea.PathXdeltaFile = ofdPathXdeltaFile.FileName; + txtPathXdeltaFile.Text = ofdPathXdeltaFile.FileName; + } + + // Enable all buttons. + EnableAllButtons(); + } + + // Command must end with '-s' and should not contain '-v' + + #endregion + + #region View Click Events + + /// + /// Toggles the visibility of the log. + /// + private void ViewLog_Click(object sender, EventArgs e) + { + if (tsmiLog.Checked) + { + tsmiLog.Checked = false; + tsmiLog.CheckState = CheckState.Unchecked; + tcMain.TabPages.Remove(tabLog); + } + else + { + tsmiLog.Checked = true; + tsmiLog.CheckState = CheckState.Checked; + tcMain.TabPages.Add(tabLog); + tcMain.SelectTab(tabLog); + } + } + + /// + /// Toggles the visibility of the options. + /// + private void ViewOptions_Click(object sender, EventArgs e) + { + if (tsmiOptions.Checked) + { + tsmiOptions.Checked = false; + tsmiOptions.CheckState = CheckState.Unchecked; + tcMain.TabPages.Remove(tabOptions); + } + else + { + tsmiOptions.Checked = true; + tsmiOptions.CheckState = CheckState.Checked; + tcMain.TabPages.Add(tabOptions); + tcMain.SelectTab(tabOptions); + } + } + + /// + /// Toggles the visibility of the PPD Builder. + /// + private void ViewPPDBuilder_Click(object sender, EventArgs e) + { + if (tsmiPPDBuilder.Checked) + { + tsmiPPDBuilder.Checked = false; + tsmiPPDBuilder.CheckState = CheckState.Unchecked; + tcMain.TabPages.Remove(tabPPDBuilder); + } + else + { + tsmiPPDBuilder.Checked = true; + tsmiPPDBuilder.CheckState = CheckState.Checked; + tcMain.TabPages.Add(tabPPDBuilder); + tcMain.SelectTab(tabPPDBuilder); + } + } + + /// + /// Toggles the visibility of the help. + /// + private void ViewHelp_Click(object sender, EventArgs e) + { + if (tsmiHelp.Checked) + { + tsmiHelp.Checked = false; + tsmiHelp.CheckState = CheckState.Unchecked; + tcMain.TabPages.Remove(tabHelp); + } + else + { + tsmiHelp.Checked = true; + tsmiHelp.CheckState = CheckState.Checked; + tcMain.TabPages.Add(tabHelp); + tcMain.SelectTab(tabHelp); + } + } + + /// + /// Toggles the visibility of the license. + /// + private void ViewLicense_Click(object sender, EventArgs e) + { + if (tsmiLicense.Checked) + { + tsmiLicense.Checked = false; + tsmiLicense.CheckState = CheckState.Unchecked; + tcMain.TabPages.Remove(tabLicense); + } + else + { + tsmiLicense.Checked = true; + tsmiLicense.CheckState = CheckState.Checked; + tcMain.TabPages.Add(tabLicense); + tcMain.SelectTab(tabLicense); + } + } + + /// + /// Toggles the visibility of the registration. + /// + private void ViewRegistration_Click(object sender, EventArgs e) + { + if (tsmiRegistration.Checked) + { + tsmiRegistration.Checked = false; + tsmiRegistration.CheckState = CheckState.Unchecked; + tcMain.TabPages.Remove(tabRegistration); + } + else + { + tsmiRegistration.Checked = true; + tsmiRegistration.CheckState = CheckState.Checked; + tcMain.TabPages.Add(tabRegistration); + tcMain.SelectTab(tabRegistration); + } + } + + /// + /// Toggles the visibility of the Donations. + /// + private void ViewDonations_Click(object sender, EventArgs e) + { + if (tsmiDonations.Checked) + { + tsmiDonations.Checked = false; + tsmiDonations.CheckState = CheckState.Unchecked; + tcMain.TabPages.Remove(tabDonations); + } + else + { + tsmiDonations.Checked = true; + tsmiDonations.CheckState = CheckState.Checked; + tcMain.TabPages.Add(tabDonations); + tcMain.SelectTab(tabDonations); + } + } + + /// + /// Toggles the visibility of the toolbar. + /// + private void ViewToolbar_Click(object sender, EventArgs e) + { + if (tsMain.Visible) + { + tsMain.Visible = false; + tsmiToolbar.Checked = false; + } + else + { + tsMain.Visible = true; + tsmiToolbar.Checked = true; + } + } + + #endregion + + #region Form Events + + /// + /// Form Shown + /// + /// + /// + private void Form_Shown(object sender, EventArgs e) + { + // Perform the startup tasks. + bgwStartupTasks.RunWorkerAsync(); + } + + /// + /// Check some things to make sure it is safe to exit the WinForms application. + /// + /// + /// + private void Form_FormClosing(object sender, FormClosingEventArgs e) + { + if (bgwBuildROMs.IsBusy == true || bgwBuildPatches.IsBusy == true || bgwBuildDatafile.IsBusy == true) + { + if (MessageBox.Show("The builder is currently running. Exiting now may cause corrupt or incomplete files! Are you sure you want to exit now?", "Confirm Exit", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK) + { + e.Cancel = true; + } + } + } + + #endregion + + #region Sounds + + /// + /// Plays a Resource sound file. + /// + /// + private void PlaySound(string strSoundName) + { + // Check to see if the sounds are turned on. + if (pea.Sounds == "On") + { + // Create a new SoundPlayer object. + SoundPlayer soundPlayer = new SoundPlayer(); + + // Set the stream resource. + if (strSoundName == "Confirm") + { + soundPlayer.Stream = Properties.Resources.Confirm; + } + if (strSoundName == "Fail") + { + soundPlayer.Stream = Properties.Resources.Fail; + } + if (strSoundName == "AddRemove") + { + soundPlayer.Stream = Properties.Resources.AddRemove; + } + if (strSoundName == "Complete") + { + soundPlayer.Stream = Properties.Resources.Complete; + } + + // Play the sound. + soundPlayer.Play(); + } + } + + #endregion + + #region Build ROMs + + /// + /// Builds all possible ROMs from all supplied patches. + /// + /// + /// + private void BuildROMs_Click(object sender, EventArgs e) + { + // Select the Log tab. + if (tcMain.TabPages.Contains(tabLog)) { tcMain.SelectTab(tabLog); } + + // Disable all buttons. + DisableAllButtons(); + + // Enable the cancel button. + tssbCancel.Enabled = true; + + // Change the log background color. + rtbLog.BackColor = Color.LightGreen; + + // Update the status message label. + UpdateStatusMessageLabel("Building ROMs ..."); + + // Build ROMs. + bgwBuildROMs.RunWorkerAsync(); + } + + /// + /// Does the work for the Build ROMs bgw process. + /// + /// + /// + private void BuildROMs_DoWork(object sender, DoWorkEventArgs e) + { + try + { + if (e != null && e.Cancel == true) + { + // Do nothing. + } + else + { + // Print to screen + Log.Information("Building all possible ROMs ..."); + + // Declarations + BackgroundWorker worker = sender as BackgroundWorker; // Background worker + int intProgress = 0; // Background worker progress + bool boolExitFlag = false; // Exit flag + int intCounterTotalBuilt = 0; // Total built counter + int intCountArrDirFiles = 0; // Total loop count + string strPathRomsDir = pea.PathROMsDir; // Path to the ROMs directory + string strPathPatchesDir = pea.PathPatchesDir; // Path to the Patches directory + string strPathXdeltaFile = pea.PathXdeltaFile; // Path to the Xdelta file + string strDelimiter = pea.Delimiter; // Delimiter + + // Checkers + bool boolPathROMsDirCheck = pea.PathROMsDirCheck(); + bool boolPathPatchesDirCheck = pea.PathPatchesDirCheck(); + bool boolPathXdeltaFileCheck = pea.PathXdeltaFileCheck(); + + // Check the paths and directories. + if (boolPathROMsDirCheck == false && boolPathPatchesDirCheck == false && boolPathXdeltaFileCheck == false) + { + // Print to screen + Log.Information("Options: ROMs Directory (" + strPathRomsDir + ")"); + Log.Information("Options: Patches Directory (" + strPathPatchesDir + ")"); + Log.Information("Options: Xdelta File (" + strPathXdeltaFile + ")"); + Log.Information("Options: Delimiter (" + strDelimiter + ")"); + + // Get the directory files array and count. + string[] arrDirFiles = Directory.GetFiles(strPathPatchesDir, "*.xd3"); + intCountArrDirFiles = arrDirFiles.Count(); + + // Create and start a stopwatch. + var stopWatch = new Stopwatch(); + stopWatch.Start(); + + // Main loop - Build all possible ROMs from all supplied patches. + while (intCountArrDirFiles > 0 && boolExitFlag == false) + { + // Set the exit flag to true. + boolExitFlag = true; + + // Loop through the patches directory files array. + foreach (string strPatchName in arrDirFiles) + { + // Explode the patch filename. + string strPatchNameNew = Path.GetFileName(strPatchName); + string[] arrDelimiters = { strDelimiter }; + string[] arrPatchNames = strPatchNameNew.Split(arrDelimiters, StringSplitOptions.RemoveEmptyEntries); + + // Check for source and destination parts. + if (arrPatchNames.Count() > 1) + { + // Rename the source and destination file. + string strPatchNameSrc = arrPatchNames[0]; + string strPatchNameDest = arrPatchNames[1].Replace(".xd3", ""); + + // If the source file exists and the destination file doesn't exist, build the destination file. + if (File.Exists(Path.Combine(strPathRomsDir, strPatchNameSrc)) == true && File.Exists(Path.Combine(strPathRomsDir, strPatchNameDest)) == false) + { + // Print to screen + Log.Information("Building: " + strPatchNameDest); + Log.Information("From: " + strPatchNameSrc); + UpdateStatusMessageLabel("Building " + (intCounterTotalBuilt + 1) + " of " + intCountArrDirFiles + " ROMs from patches dir ..."); + + // Build the ROM. + Process pProcess = new Process(); + pProcess.StartInfo.UseShellExecute = false; + pProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; + pProcess.StartInfo.CreateNoWindow = true; + pProcess.StartInfo.RedirectStandardInput = true; + pProcess.StartInfo.RedirectStandardOutput = true; + pProcess.StartInfo.RedirectStandardError = true; + pProcess.StartInfo.FileName = strPathXdeltaFile; + pProcess.StartInfo.Arguments = "-d -s \"" + Path.Combine(strPathRomsDir, strPatchNameSrc) + "\" \"" + Path.Combine(strPathPatchesDir, strPatchNameNew) + "\" \"" + Path.Combine(strPathRomsDir, strPatchNameDest) + "\""; + pProcess.Start(); + string strError = pProcess.StandardError.ReadToEnd(); + pProcess.WaitForExit(); + + // This isn't the preferred way to check for errors. + if (strError == "") + { + // Increment the counter and progress bar. + intCounterTotalBuilt++; + intProgress = (int)((double)intCounterTotalBuilt / (double)intCountArrDirFiles * 100); + worker.ReportProgress(intProgress); + boolExitFlag = false; + } + else + { + // Print the output of Xdelta to the screen. + Log.Error("Bad patch (" + strPatchNameNew + ")"); + Log.Error(strError); + } + } + } + else + { + // Print to screen + Log.Error("Bad patch name (" + arrPatchNames[0] + ")"); + } + + // Check if the background worker is pending cancellation. + if (worker.CancellationPending == true) + { + boolExitFlag = true; + e.Cancel = true; + break; + } + } + } + + // Stop the stopwatch. + stopWatch.Stop(); + + // Print to screen + Log.Information("" + intCounterTotalBuilt + " ROMs built successfully in " + stopWatch.Elapsed); + } + + // Print to screen + Log.Information("Building all possible ROMs completed"); + } + } + catch (Exception ex) + { + // Print to screen + Log.Error("Building all possible ROMs failed"); + Log.Error("" + ex.Message); + } + } + + /// + /// Changes the progress of the Build ROMs bgw process. + /// + /// + /// + private void BuildROMs_ProgressChanged(object sender, ProgressChangedEventArgs e) + { + // Display the changed progress status. + UpdateStatusBuildProgress(e.ProgressPercentage); + } + + /// + /// Completes the Build ROMs bgw process. + /// + /// + /// + private void BuildROMs_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) + { + if (e.Cancelled) + { + // Print to screen. + Log.Information("Building all possible ROMs canceled"); + Log.Information("Ready"); + } + else if (e.Error != null) + { + // Print to screen. + Log.Error("Building all possible ROMs failed"); + Log.Error("" + e.Error.Message); + Log.Information("Ready"); + } + else + { + // Print to screen. + Log.Information("Ready"); + } + + // Reset the log background color. + rtbLog.BackColor = SystemColors.Control; + + // Enable all buttons. + EnableAllButtons(); + + // Reset the progress status. + UpdateStatusBuildProgress(0); + + // Update the status message label. + UpdateStatusMessageLabel("Ready"); + + // Disable the cancel button. + tssbCancel.Enabled = false; + + // Play a sound. + PlaySound("Complete"); + } + + #endregion + + #region Build Patches + + /// + /// Builds all possible patches from all supplied ROMs and a datafile. + /// + /// + /// + private void BuildPatches_Click(object sender, EventArgs e) + { + // Select the Log tab. + if (tcMain.TabPages.Contains(tabLog)) { tcMain.SelectTab(tabLog); } + + // Disable all buttons. + DisableAllButtons(); + + // Enable the cancel button. + tssbCancel.Enabled = true; + + // Change the log background color. + rtbLog.BackColor = Color.LightGreen; + + // Update the status message label. + UpdateStatusMessageLabel("Building Patches ..."); + + // Build patches. + bgwBuildPatches.RunWorkerAsync(); + } + + /// + /// Does the work for the Build Patches bgw process. + /// + /// + /// + private void BuildPatches_DoWork(object sender, DoWorkEventArgs e) + { + try + { + if (e != null && e.Cancel == true) + { + // Do nothing. + } + else + { + // Print to screen + Log.Information("Info: Building all possible patches ..."); + + // Declarations + BackgroundWorker worker = sender as BackgroundWorker; // Background worker + int intProgress = 0; // Background worker progress + int intCounterTotalBuilt = 0; // Total built counter + int intCountXdocPatches = 0; // Total loop counter + string strPathXdeltaFile = pea.PathXdeltaFile; // Path to the Xdelta file + string strXdeltaBuildCommand = pea.XdeltaBuildCommand; // Xdelta build command + string strPathDatPPDXMLFile = pea.PathDatPPDXMLFile; // Path to the Dat/PPD/XML file + string strPathRomsDir = pea.PathROMsDir; // Path to the ROMs directory + string strPathPatchesDir = pea.PathPatchesDir; // Path to the Patches directory + string strDelimiter = pea.Delimiter; // Delimiter + + // Checkers + bool boolPathROMsDirCheck = pea.PathROMsDirCheck(); + bool boolPathPatchesDirCheck = pea.PathPatchesDirCheck(); + bool boolPathXdeltaFileCheck = pea.PathXdeltaFileCheck(); + bool boolPathDatPPDXMLFileCheck = pea.PathDatPPDXMLFileCheck(); + + // Check the paths and directories. + if (boolPathROMsDirCheck == false && boolPathPatchesDirCheck == false && boolPathXdeltaFileCheck == false && boolPathDatPPDXMLFileCheck == false) + { + // Print to screen + Log.Information("Options: ROMs Directory (" + strPathRomsDir + ")"); + Log.Information("Options: Patches Directory (" + strPathPatchesDir + ")"); + Log.Information("Options: Dat/PPD/XML File (" + strPathDatPPDXMLFile + ")"); + Log.Information("Options: Xdelta File (" + strPathXdeltaFile + ")"); + Log.Information("Options: Xdelta Build Command (" + strXdeltaBuildCommand + ")"); + + // Get the patches XDocument from the dat file and count. + XDocument xdocPatches = new XDocument(); + xdocPatches = XDocument.Load(strPathDatPPDXMLFile); + intCountXdocPatches = xdocPatches.Descendants("rom").Count(); + + // Create and start a stopwatch. + var stopWatch = new Stopwatch(); + stopWatch.Start(); + + // Main Loop - Build the patches from the datafile and all supplied ROMs. + if (intCountXdocPatches > 0) + { + // Loop through the rom elements. + foreach (XElement xmlRom in xdocPatches.Descendants("rom")) + { + // Get the XML decoded patch name. + string strPatchName = xmlRom.Attribute("name").Value; + + // Explode the patch filename. + string[] arrDelimiters = { strDelimiter }; + string[] arrPatchNames = strPatchName.Split(arrDelimiters, StringSplitOptions.RemoveEmptyEntries); + + // Check for source and destination parts. + if (arrPatchNames.Count() > 1) + { + // Rename the source and destination file. + string strPatchNameSrc = arrPatchNames[0]; + string strPatchNameDest = arrPatchNames[1].Replace(".xd3", ""); + + // If the source file exists, the destination file exists and the patch doesn't exist, build the patch. + if (File.Exists(Path.Combine(strPathRomsDir, strPatchNameSrc)) == true && File.Exists(Path.Combine(strPathRomsDir, strPatchNameDest)) == true && File.Exists(Path.Combine(strPathPatchesDir, strPatchName)) == false) + { + // Print to screen + Log.Information("Building: " + strPatchName); + UpdateStatusMessageLabel("Building " + (intCounterTotalBuilt + 1) + " of " + intCountXdocPatches + " patches from datafile ..."); + + // Build the patch. + Process pProcess = new Process(); + pProcess.StartInfo.UseShellExecute = false; + pProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; + pProcess.StartInfo.CreateNoWindow = true; + pProcess.StartInfo.RedirectStandardInput = true; + pProcess.StartInfo.RedirectStandardOutput = true; + pProcess.StartInfo.RedirectStandardError = true; + pProcess.StartInfo.FileName = strPathXdeltaFile; + pProcess.StartInfo.Arguments = strXdeltaBuildCommand + " \"" + Path.Combine(strPathRomsDir, strPatchNameSrc) + "\" \"" + Path.Combine(strPathRomsDir, strPatchNameDest) + "\" \"" + Path.Combine(strPathPatchesDir, strPatchName) + "\""; + pProcess.Start(); + string strError = pProcess.StandardError.ReadToEnd(); + pProcess.WaitForExit(); + + // This isn't the preferred way to check for errors. + if (strError == "") + { + // Increment the counter and progress bar. + intCounterTotalBuilt++; + intProgress = (int)((double)intCounterTotalBuilt / (double)intCountXdocPatches * 100); + worker.ReportProgress(intProgress); + } + else + { + // Print the output of Xdelta to the screen. + Log.Information("Bad patch (" + strPatchName + ")"); + Log.Information(strError); + } + } + } + else + { + // Print to screen + Log.Information("Bad patch name (" + arrPatchNames[0] + ")"); + } + + // Check if the background worker is pending cancellation. + if (worker.CancellationPending == true) + { + e.Cancel = true; + break; + } + } + } + + // Stop the stopwatch. + stopWatch.Stop(); + + // Print to screen + Log.Information(intCounterTotalBuilt + " Patches built successfully in " + stopWatch.Elapsed); + } + + // Print to screen + Log.Information("Building all possible patches completed"); + } + } + catch (Exception ex) + { + // Print to screen + Log.Error("Building all possible patches failed"); + Log.Error(ex.Message); + } + } + + /// + /// Changes the progress of the Build ROMs bgw process. + /// + /// + /// + private void BuildPatches_ProgressChanged(object sender, ProgressChangedEventArgs e) + { + // Display the changed progress status. + UpdateStatusBuildProgress(e.ProgressPercentage); + } + + /// + /// Completes the Build ROMs bgw process. + /// + /// + /// + private void BuildPatches_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) + { + if (e.Cancelled) + { + // Print to screen. + Log.Information("Building all possible patches canceled"); + Log.Information("Ready"); + } + else if (e.Error != null) + { + // Print to screen. + Log.Error("Building all possible patches failed"); + Log.Error("" + e.Error.Message); + Log.Information("Ready"); + } + else + { + // Print to screen. + Log.Information("Ready"); + } + + // Reset the log background color. + rtbLog.BackColor = SystemColors.Control; + + // Enable all buttons. + EnableAllButtons(); + + // Reset the progress status. + UpdateStatusBuildProgress(0); + + // Update the status message label. + UpdateStatusMessageLabel("Ready"); + + // Disable the cancel button. + tssbCancel.Enabled = false; + + // Play a sound. + PlaySound("Complete"); + } + + #endregion + + #region Build Patches Datafile + + /// + /// Builds a datafile from the patches directory. + /// + /// + /// + private void BuildPatchesDatafile_Click(object sender, EventArgs e) + { + // Select the Log tab. + if (tcMain.TabPages.Contains(tabLog)) { tcMain.SelectTab(tabLog); } + + // Disable all buttons. + DisableAllButtons(); + + // Enable the cancel button. + tssbCancel.Enabled = true; + + // Change the log background color. + rtbLog.BackColor = Color.LightGreen; + + // Update the status message label. + UpdateStatusMessageLabel("Building Patches Datafile ..."); + + // Build patches datafile. + bgwBuildDatafile.RunWorkerAsync(); + } + + /// + /// Does the work for the Build Patches Datafile bgw process. + /// + /// + /// + private void BuildDatafile_DoWork(object sender, DoWorkEventArgs e) + { + try + { + if (e != null && e.Cancel == true) + { + // Do nothing. + } + else + { + // Print to screen + Log.Information("Building patches datafile ..."); + + // Declarations + BackgroundWorker worker = sender as BackgroundWorker; // Background worker + int intProgress = 0; // Background worker progress + int intCounterTotalBuilt = 0; // Total built counter + int intCountArrDirFiles = 0; // Total loop count + string strPathPatchesDir = pea.PathPatchesDir; // Path to the Patches directory + string strPathDatsDir = pea.PathDatsDir; // Path to the Dats directory + string strName = pea.MachineName; // Datafile name + string strVersion = DateTime.Now.ToString("yyyyMMdd HHmmss"); // Datafile version + string strDate = DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss"); // Datafile date + string strDescription = pea.MachineName + " - Patches (0) (" + strVersion + ")"; // Datafile description + string strCategory = "Patches"; // Datafile category + string strAuthor = pea.AppName + " v" + pea.AppVersion; // Datafile author + string strComment = pea.Comment; // Datafile comment + string strPathSaveFilename = ""; // Path to the new datafile + string strXdeltaFile = Path.GetFileName(pea.PathXdeltaFile); // Datafile Xdelta file + string strXdeltaBuildCommand = pea.XdeltaBuildCommand; // Datafile Xdelta build command + string strMachineName = pea.MachineName + " - Patches"; // Datafile machine name + + // Checkers + bool boolPathDatsDirCheck = pea.PathDatsDirCheck(); + bool boolPathPatchesDirCheck = pea.PathPatchesDirCheck(); + + // Check the paths and directories. + if (boolPathDatsDirCheck == false && boolPathPatchesDirCheck == false) + { + // Print to screen + Log.Information("Options: Patches Directory (" + strPathPatchesDir + ")"); + Log.Information("Options: Dats Directory (" + strPathDatsDir + ")"); + Log.Information("Options: Dat Name (" + strName + ")"); + Log.Information("Options: Dat Category (" + strCategory + ")"); + Log.Information("Options: Dat Date (" + strDate + ")"); + Log.Information("Options: Dat Comment (" + strComment + ")"); + Log.Information("Options: Xdelta File (" + strXdeltaFile + ")"); + Log.Information("Options: Xdelta Build Command (" + strXdeltaBuildCommand + ")"); + + // Get the directory files array and count. + string[] arrDirFiles = Directory.GetFiles(strPathPatchesDir, "*.xd3"); + intCountArrDirFiles = arrDirFiles.Count(); + + // Create and start a stopwatch. + var stopWatch = new Stopwatch(); + stopWatch.Start(); + + // Main loop - Build a datafile from the patches directory files. + if (intCountArrDirFiles > 0) + { + // Create a new datafile XDocument. + XDocument xdocDatafile = new XDocument( + new XDeclaration("1.0", "utf-8", "yes"), + new XElement("datafile", + new XElement("header", + new XElement("name", strName), + new XElement("description", strDescription), + new XElement("category", strCategory), + new XElement("version", strVersion), + new XElement("date", strDate), + new XElement("author", strAuthor), + new XElement("comment", strComment), + new XElement("buildemall", + new XAttribute("xdeltafile", strXdeltaFile), + new XAttribute("xdeltabuildcommand", strXdeltaBuildCommand) + ) + ) + ) + ); + + // Loop through the directory files array. + foreach (string strPathFile in arrDirFiles) + { + // Get the patch filesize and filename. + string strRomFilename = Path.GetFileName(strPathFile); + string strRomFileSize = new FileInfo(strPathFile).Length.ToString(); + + // Print to screen + Log.Information("Adding: " + strRomFilename); + UpdateStatusMessageLabel("Adding " + (intCounterTotalBuilt + 1) + " of " + intCountArrDirFiles + " patches to datafile ..."); + + // Get the game name, category and description. + string strGameName = Path.GetFileNameWithoutExtension(strPathFile); + string strGameCategory = "Patches"; + string strGameDescription = Path.GetFileNameWithoutExtension(strPathFile); + + // Get the patch hashes. + byte[] arrRomFileHashSHA1 = new SHA1CryptoServiceProvider().ComputeHash(File.OpenRead(strPathFile)); + byte[] arrRomFileHashMD5 = new MD5CryptoServiceProvider().ComputeHash(File.OpenRead(strPathFile)); + byte[] arrRomFileHashCRC = new PatchEmAll.CRC32CryptoServiceProvider().ComputeHash(File.OpenRead(strPathFile)); + string strRomFileHashSHA1 = BitConverter.ToString(arrRomFileHashSHA1).Replace("-", "").ToLower(); + string strRomFileHashMD5 = BitConverter.ToString(arrRomFileHashMD5).Replace("-", "").ToLower(); + string strRomFileHashCRC = BitConverter.ToString(arrRomFileHashCRC).Replace("-", "").ToLower(); + + // Add the patch file to the datafile XDocument. + xdocDatafile.Element("datafile").Add( + new XElement("game", + new XAttribute("name", strGameName), + new XElement("category", strGameCategory), + new XElement("description", strGameDescription), + new XElement("rom", + new XAttribute("name", strRomFilename), + new XAttribute("size", strRomFileSize), + new XAttribute("crc", strRomFileHashCRC), + new XAttribute("md5", strRomFileHashMD5), + new XAttribute("sha1", strRomFileHashSHA1) + ) + ) + ); + + // Increment the counter. + intCounterTotalBuilt++; + intProgress = (int)((double)intCounterTotalBuilt / (double)intCountArrDirFiles * 100); + worker.ReportProgress(intProgress); + + // Check if the background worker is pending cancellation. + if (worker.CancellationPending == true) + { + e.Cancel = true; + break; + } + } + + // Modify the datafile header elements and filename. + xdocDatafile.Element("datafile").Element("header").Element("description").Value = strMachineName + " (" + intCounterTotalBuilt + ") (" + strVersion + ")"; + strPathSaveFilename = Path.Combine(strPathDatsDir, strMachineName + " (" + intCounterTotalBuilt + ") (" + strVersion + ").dat"); + + // Save the contents of the datafile XDocument to the file. + xdocDatafile.Save(strPathSaveFilename); + } + + // Stop the stopwatch. + stopWatch.Stop(); + + // Print to screen + Log.Information("" + intCounterTotalBuilt + " patches added to datafile successfully in " + stopWatch.Elapsed); + } + + // Print to screen + Log.Information("Building patches datafile completed"); + } + } + catch (Exception ex) + { + // Print to screen + Log.Error("Building patches datafile failed"); + Log.Error(ex.Message); + } + } + + /// + /// Changes the progress of the Build Patches Datafile bgw process. + /// + /// + /// + private void BuildDatafile_ProgressChanged(object sender, ProgressChangedEventArgs e) + { + // Display the changed progress status. + UpdateStatusBuildProgress(e.ProgressPercentage); + } + + /// + /// Completes the Build Patches Datafile bgw process. + /// + /// + /// + private void BuildDatafile_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) + { + if (e.Cancelled) + { + // Print to screen. + Log.Information("Building patches datafile canceled"); + Log.Information("Ready"); + } + else if (e.Error != null) + { + // Print to screen. + Log.Error("Building patches datafile failed"); + Log.Error("" + e.Error.Message); + Log.Information("Ready"); + } + else + { + // Print to screen. + Log.Information("Ready"); + } + + // Reset the log background color. + rtbLog.BackColor = SystemColors.Control; + + // Enable all buttons. + EnableAllButtons(); + + // Reset the progress status. + UpdateStatusBuildProgress(0); + + // Update the status message label. + UpdateStatusMessageLabel("Ready"); + + // Disable the cancel button. + tssbCancel.Enabled = false; + + // Play a sound. + PlaySound("Complete"); + } + + #endregion + + #region PPD Builder + + /// + /// Updates the prepatch counter label. + /// + private void UpdateLblCountPrepatches() + { + // Update the prepatch counter label. + lblCountPrepatches.Text = lbPrepatches.Items.Count + " Prepatches"; + } + + /// + /// Adds the selected prepatch to the prepatches ListBox. + /// + /// + /// + private void AddPrepatch_Click(object sender, EventArgs e) + { + if (lbFromDat.SelectedItem != null && lbToDat.SelectedItem != null) + { + // Declarations + string strPrepatchName = lbFromDat.SelectedItem.ToString() + pea.Delimiter + lbToDat.SelectedItem.ToString() + ".xd3"; + + // Add the selected prepatch to the prepatches ListBox if it doesn't already exist. + if (lbPrepatches.Items.Contains(strPrepatchName) == false) + { + // Play a sound. + PlaySound("AddRemove"); + + // Add the prepatch to the Prepatches Listbox. + lbPrepatches.Items.Add(strPrepatchName); + + // Update the prepatches counter label. + UpdateLblCountPrepatches(); + + // Select the added item. + lbPrepatches.SelectedItem = strPrepatchName; + } + else + { + // Play a sound. + PlaySound("Fail"); + } + } + else + { + // Play a sound. + PlaySound("Fail"); + } + } + + /// + /// Removes the selected prepatch from the prepatches ListBox. + /// + /// + /// + private void RemovePrepatch_Click(object sender, EventArgs e) + { + if (lbPrepatches.SelectedItem != null) + { + // Play a sound. + PlaySound("AddRemove"); + + // Remove the selected prepatch from the prepatches ListBox. + lbPrepatches.Items.Remove(lbPrepatches.SelectedItem); + + // Update the prepatches counter label. + UpdateLblCountPrepatches(); + } + else + { + // Play a sound. + PlaySound("Fail"); + } + } + + /// + /// Removes all of the items from the prepatches ListBox. + /// + /// + /// + private void RemoveAllPrepatches_Click(object sender, EventArgs e) + { + // Clear all of the prepatches if any exist. + if (lbPrepatches.Items.Count > 0) + { + // Play a sound. + PlaySound("Confirm"); + + // Display a dialog box with a question icon and a default button. + DialogResult drClearPatches = MessageBox.Show("Are you sure you want to remove all prepatches?", + "Removal Warning", + MessageBoxButtons.YesNo, + MessageBoxIcon.Question, + MessageBoxDefaultButton.Button1); + + // Clear all of the items from the prepatches ListBox. + if (drClearPatches == DialogResult.Yes) + { + lbPrepatches.Items.Clear(); + } + + // Update the prepatches counter label. + UpdateLblCountPrepatches(); + } + else + { + // Play a sound. + PlaySound("Fail"); + } + } + + /// + /// Saves the PPD file. + /// + /// + /// + private void SavePPD_Click(object sender, EventArgs e) + { + // Disable all buttons. + DisableAllButtons(); + + // Play a sound. + PlaySound("Confirm"); + + // Declarations + int intCountPrepatches = lbPrepatches.Items.Count; + string strName = pea.MachineName; + string strVersion = DateTime.Now.ToString("yyyyMMdd HHmmss"); + string strDescription = pea.MachineName + " - Prepatches (" + intCountPrepatches + ") (" + strVersion + ")"; + string strCategory = "Prepatches"; + string strDate = DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss"); + string strAuthor = pea.AppName + " v" + pea.AppVersion; + string strComment = pea.Comment; + string strXdeltaFile = Path.GetFileName(pea.PathXdeltaFile); + string strXdeltaBuildCommand = pea.XdeltaBuildCommand; + string strPathDatsDir = pea.PathDatsDir; + string strPathSaveFilename = Path.Combine(strPathDatsDir, strDescription + ".ppd"); + + // Create and initialize a SaveFileDialog for the PPD. + SaveFileDialog sfdPPD = new SaveFileDialog + { + DefaultExt = "*.ppd", + Filter = "PPD Files|*.ppd", + FileName = strPathSaveFilename, + Title = "Please enter a path to the PPD file", + InitialDirectory = strPathDatsDir + }; + + // Determine if the user selected a file name from the SaveFileDialog. + if (sfdPPD.ShowDialog() == DialogResult.OK && sfdPPD.FileName.Length > 0) + { + try + { + // Create a new datafile XDocument. + XDocument xdocDatafile = new XDocument( + new XDeclaration("1.0", "utf-8", "yes"), + new XElement("datafile", + new XElement("header", + new XElement("name", strName), + new XElement("description", strDescription), + new XElement("category", strCategory), + new XElement("version", strVersion), + new XElement("date", strDate), + new XElement("author", strAuthor), + new XElement("comment", strComment), + new XElement("clrmamepro"), + new XElement("buildemall", + new XAttribute("xdeltafile", strXdeltaFile), + new XAttribute("xdeltabuildcommand", strXdeltaBuildCommand) + ) + ) + ) + ); + + // Loop through the prepatches. + foreach (string strPrepatchName in lbPrepatches.Items) + { + // Get the patch filesize and filename. + string strRomFilename = Path.GetFileName(strPrepatchName); + string strRomFileSize = "0"; + + // Get the game name, category and description. + string strGameName = Path.GetFileNameWithoutExtension(strPrepatchName); + string strGameCategory = "Patches"; + string strGameDescription = Path.GetFileNameWithoutExtension(strPrepatchName); + + // Get the patch hashes. + string strRomFileHashSHA1 = "0"; + string strRomFileHashMD5 = "0"; + string strRomFileHashCRC = "0"; + + // Add the patch file to the datafile XDocument. + xdocDatafile.Element("datafile").Add( + new XElement("game", + new XAttribute("name", strGameName), + new XElement("category", strGameCategory), + new XElement("description", strGameDescription), + new XElement("rom", + new XAttribute("name", strRomFilename), + new XAttribute("size", strRomFileSize), + new XAttribute("crc", strRomFileHashCRC), + new XAttribute("md5", strRomFileHashMD5), + new XAttribute("sha1", strRomFileHashSHA1) + ) + ) + ); + } + + // Save the contents of the PPD XDocument to the file. + xdocDatafile.Save(sfdPPD.FileName); + + // Print to screen + Log.Information("PPD Builder: Saved PPD file (" + sfdPPD.FileName + ")"); + Log.Information("Ready"); + } + catch (Exception ex) + { + // Print to screen + Log.Error("PPD Builder: Save PPD failed"); + Log.Error("" + ex.Message); + Log.Information("Ready"); + } + } + + // Dispose of the SaveFileDialog. + sfdPPD.Dispose(); + + // Enable all buttons. + EnableAllButtons(); + } + + /// + /// Adds all of the patches from the ppd file into the lbPrepatches ListBox after clearing the ListBox. + /// + /// + /// + private void LoadPPD_Click(object sender, EventArgs e) + { + // Disable all buttons. + DisableAllButtons(); + + // Play a sound. + PlaySound("Confirm"); + + // Declarations + string strPathDatsDir = pea.PathDatsDir; // Datafile dats directory path + + // Create and initialize an OpenFileDialog for the ppd file. + OpenFileDialog ofdPathDatFile = new OpenFileDialog + { + DefaultExt = "*.ppd", + Filter = "PPD Files|*.ppd", + Title = "Please enter a path to the PPD file", + InitialDirectory = strPathDatsDir + }; + + // Determine if the user selected a file name from the OpenFileDialog. + if (ofdPathDatFile.ShowDialog() == DialogResult.OK && ofdPathDatFile.FileName.Length > 0) + { + try + { + // Clear the ListBox. + lbPrepatches.Items.Clear(); + + // Load the prepatch names from the XML datafile. + XDocument xdocDatafile = XDocument.Load(ofdPathDatFile.FileName); + + // Add all of the the prepatch names to the lbPrepatches ListBox. + foreach (XElement xelemRom in xdocDatafile.Descendants("rom")) + { + // Add the selected prepatch to the prepatches ListBox if it doesn't already exist. + if (lbPrepatches.Items.Contains(xelemRom.Attribute("name").Value) == false) + { + lbPrepatches.Items.Add(xelemRom.Attribute("name").Value); + } + else + { + // Print to screen + Log.Information("PPD Builder: Removed duplicate prepatch: " + xelemRom.Attribute("name").Value); + } + } + + // Update the prepatches counter label. + UpdateLblCountPrepatches(); + + // Print to screen + Log.Information("PPD Builder: Loaded PPD file (" + ofdPathDatFile.FileName + ")"); + Log.Information("Ready"); + } + catch (Exception ex) + { + // Print to screen + Log.Error("PPD Builder: Load PPD failed"); + Log.Error("" + ex.Message); + Log.Information("Ready"); + } + } + + // Dispose of the OpenFileDialog. + ofdPathDatFile.Dispose(); + + // Enable all buttons. + EnableAllButtons(); + } + + /// + /// Adds all of the ROM names from the dat file into the FromDat ListBox and the ToDat ListBox after clearing the FromDat and ToDat ListBoxes. + /// + /// + /// + private void LoadDat_Click(object sender, EventArgs e) + { + // Disable all buttons. + DisableAllButtons(); + + // Play a sound. + PlaySound("Confirm"); + + // Declarations + string strPathDatsDir = pea.PathDatsDir; // Datafile dats directory path + + // Create and initialize an OpenFileDialog for the dat file. + OpenFileDialog ofdPathDatFile = new OpenFileDialog + { + DefaultExt = "*.dat", + Filter = "DAT Files|*.dat|XML Files|*.xml", + Title = "Please enter a path to the dat file", + InitialDirectory = strPathDatsDir + }; + + // Determine if the user selected a file name from the OpenFileDialog. + if (ofdPathDatFile.ShowDialog() == DialogResult.OK && ofdPathDatFile.FileName.Length > 0) + { + try + { + // Load the ROM names from the XML datafile. + XDocument xdocDatafile = XDocument.Load(ofdPathDatFile.FileName); + + // Clear the ListBoxes. + lbFromDat.Items.Clear(); + lbToDat.Items.Clear(); + + // Add all of the the ROM names to the FromDat ListBox. + foreach (XElement xelemRom in xdocDatafile.Descendants("rom")) + { + // Add the ROM name. + lbFromDat.Items.Add(xelemRom.Attribute("name").Value); + } + + // Add all of the the ROM names to the ToDat ListBox. + foreach (XElement xelemRom in xdocDatafile.Descendants("rom")) + { + // Add the ROM name. + lbToDat.Items.Add(xelemRom.Attribute("name").Value); + } + + // Update the loaded datafile textbox. + txtLoadedDatafile.Text = ofdPathDatFile.FileName; + + // Print to screen + Log.Information("PPD Builder: Loaded dat file (" + ofdPathDatFile.FileName + ")"); + Log.Information("Ready"); + } + catch (Exception ex) + { + // Print to screen + Log.Error("PPD Builder: Load Dat failed"); + Log.Error("" + ex.Message); + Log.Information("Ready"); + } + } + + // Dispose of the OpenFileDialog. + ofdPathDatFile.Dispose(); + + // Enable all buttons. + EnableAllButtons(); + } + + /// + /// Checks the prepatches. + /// + /// + /// + private void CheckPrepatches_Click(object sender, EventArgs e) + { + // Select the Log tab + if (tcMain.TabPages.Contains(tabLog)) { tcMain.SelectTab(tabLog); } + + // Disable all buttons. + DisableAllButtons(); + + // Change the log background color. + rtbLog.BackColor = Color.LightGreen; + + // Print to screen + Log.Information("PPD Builder: Checking prepatches ..."); + + // Check prepatches. + foreach (string strPrepatchName in lbPrepatches.Items) + { + // Explode the prepatch name. + string[] arrDelimiters = { pea.Delimiter }; + string[] arrPrepatchNames = strPrepatchName.Split(arrDelimiters, StringSplitOptions.RemoveEmptyEntries); + + // Check for source and destination parts. + if (arrPrepatchNames.Count() > 1) + { + // Set the source and destination ROM names. + string strPrepatchNameSrc = arrPrepatchNames[0]; + string strPrepatchNameDest = arrPrepatchNames[1].Replace(".xd3", ""); + + // Set the opposite prepatch name. + string strPrepatchNameOpposite = strPrepatchNameDest + pea.Delimiter + strPrepatchNameSrc + ".xd3"; + + // Check if the opposite prepatch exists. + if (lbPrepatches.Items.Contains(strPrepatchNameOpposite) == false) + { + // Print to screen + Log.Warning("PPD Builder: Missing opposite prepatch: " + strPrepatchNameOpposite); + } + + // Check if a dat has been loaded. + if (lbFromDat.Items.Count > 0 && lbToDat.Items.Count > 0) + { + // Check for bad prepatch ROM names. + if (lbFromDat.Items.Contains(strPrepatchNameSrc) == false || lbToDat.Items.Contains(strPrepatchNameDest) == false) + { + // Print to screen + Log.Error("PPD Builder: Bad prepatch ROM name in: " + strPrepatchName); + } + } + + // Check for self prepatches. + if (strPrepatchNameSrc == strPrepatchNameDest) + { + // Print to screen + Log.Error("PPD Builder: Bad self prepatch: " + strPrepatchName); + } + } + else + { + // Print to screen + Log.Error("PPD Builder: Bad prepatch name: " + strPrepatchName); + } + } + + // Print to screen + Log.Information("PPD Builder: Checking prepatches completed"); + Log.Information("Ready"); + + // Reset the log background color. + rtbLog.BackColor = SystemColors.Control; + + // Enable all buttons. + EnableAllButtons(); + + // Play a sound. + PlaySound("Complete"); + } + + #endregion + } +} diff --git a/PatchEmAll-GUI/FrmPatchEmAll.resx b/PatchEmAll-GUI/FrmPatchEmAll.resx new file mode 100644 index 0000000..093d3c3 --- /dev/null +++ b/PatchEmAll-GUI/FrmPatchEmAll.resx @@ -0,0 +1,3544 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + Top, Bottom, Left, Right + + + + 6, 6 + + + Horizontal + + + Fill + + + 0, 0 + + + Top, Left, Right + + + 93, 7 + + + 289, 20 + + + + 2 + + + txtLoadedDatafile + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + splitContainer5.Panel1 + + + 0 + + + Top, Bottom, Left, Right + + + 3, 35 + + + 379, 186 + + + 1 + + + lbFromDat + + + System.Windows.Forms.ListBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + splitContainer5.Panel1 + + + 1 + + + NoControl + + + 3, 3 + + + 84, 26 + + + 0 + + + Load Dat + + + ImageBeforeText + + + btnLoadDat + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + splitContainer5.Panel1 + + + 2 + + + splitContainer5.Panel1 + + + System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + splitContainer5 + + + 0 + + + Top, Bottom, Left, Right + + + 3, 35 + + + 379, 186 + + + 3 + + + lbToDat + + + System.Windows.Forms.ListBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + splitContainer5.Panel2 + + + 0 + + + Top, Right + + + NoControl + + + 232, 3 + + + 150, 26 + + + 2 + + + Remove All Prepatches + + + ImageBeforeText + + + btnRemoveAllPrepatches + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + splitContainer5.Panel2 + + + 1 + + + Top, Right + + + NoControl + + + 3, 3 + + + 98, 26 + + + 0 + + + Add Prepatch + + + ImageBeforeText + + + btnAddPrepatch + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + splitContainer5.Panel2 + + + 2 + + + Top, Right + + + NoControl + + + 107, 3 + + + 119, 26 + + + 1 + + + Remove Prepatch + + + ImageBeforeText + + + btnRemovePrepatch + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + splitContainer5.Panel2 + + + 3 + + + splitContainer5.Panel2 + + + System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + splitContainer5 + + + 1 + + + 774, 224 + + + 385 + + + 0 + + + splitContainer5 + + + System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + splitContainer4.Panel1 + + + 0 + + + splitContainer4.Panel1 + + + System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + splitContainer4 + + + 0 + + + Top, Bottom, Left, Right + + + 3, 35 + + + 768, 134 + + + 4 + + + lbPrepatches + + + System.Windows.Forms.ListBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + splitContainer4.Panel2 + + + 0 + + + NoControl + + + 3, 3 + + + 84, 26 + + + 0 + + + Load PPD + + + ImageBeforeText + + + btnLoadPPD + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + splitContainer4.Panel2 + + + 1 + + + Top, Right + + + NoControl + + + 429, 5 + + + 214, 23 + + + 3 + + + 0 Prepatches + + + MiddleRight + + + lblCountPrepatches + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + splitContainer4.Panel2 + + + 2 + + + NoControl + + + 93, 3 + + + 84, 26 + + + 1 + + + Save PPD + + + ImageBeforeText + + + btnSavePPD + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + splitContainer4.Panel2 + + + 3 + + + Top, Right + + + NoControl + + + 649, 3 + + + 122, 26 + + + 2 + + + Check Prepatches + + + ImageBeforeText + + + btnCheckPrepatches + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + splitContainer4.Panel2 + + + 4 + + + splitContainer4.Panel2 + + + System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + splitContainer4 + + + 1 + + + 774, 403 + + + 224 + + + 1 + + + splitContainer4 + + + System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPPDBuilder + + + 0 + + + 17, 17 + + + 0, 0 + + + 794, 24 + + + 0 + + + msMain + + + msMain + + + System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 3 + + + 80, 20 + + + PatchEmAll + + + False + + + 188, 22 + + + Build ROMs + + + False + + + 188, 22 + + + Build Patches + + + False + + + 188, 22 + + + Build Patches Datafile + + + 185, 6 + + + False + + + 188, 22 + + + Load Options + + + False + + + 188, 22 + + + Save Options + + + 185, 6 + + + False + + + 188, 22 + + + Save Log + + + 185, 6 + + + 188, 22 + + + Exit + + + 44, 20 + + + View + + + 137, 22 + + + Log + + + 134, 6 + + + 137, 22 + + + Options + + + 134, 6 + + + 137, 22 + + + PPD Builder + + + 134, 6 + + + 137, 22 + + + Help + + + 134, 6 + + + 137, 22 + + + License + + + 134, 6 + + + 137, 22 + + + Donations + + + 134, 6 + + + 137, 22 + + + Registration + + + 134, 6 + + + 137, 22 + + + Toolbar + + + 112, 17 + + + 0, 24 + + + 794, 39 + + + 1 + + + tsMain + + + tsMain + + + System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 2 + + + False + + + Magenta + + + 36, 36 + + + Build ROMs + + + False + + + Magenta + + + 36, 36 + + + Build Patches + + + False + + + Magenta + + + 36, 36 + + + Build Patches Datafile + + + 6, 39 + + + False + + + Magenta + + + 36, 36 + + + Load Options + + + False + + + Magenta + + + 36, 36 + + + Save Options + + + 6, 39 + + + False + + + Magenta + + + 36, 36 + + + Save Log + + + 6, 39 + + + Magenta + + + 36, 36 + + + Log + + + Magenta + + + 36, 36 + + + Options + + + Magenta + + + 36, 36 + + + PPD Builder + + + Magenta + + + 36, 36 + + + Help + + + Magenta + + + 36, 36 + + + License + + + Magenta + + + 36, 36 + + + Donations + + + Magenta + + + 36, 36 + + + Registration + + + Magenta + + + 36, 36 + + + Toolbar + + + 200, 17 + + + 0, 504 + + + 794, 22 + + + 2 + + + ssMain + + + ssMain + + + System.Windows.Forms.StatusStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 1 + + + 406, 17 + + + 150, 17 + + + Performing Startup Tasks ... + + + 200, 16 + + + False + + + Magenta + + + 21, 20 + + + Cancel + + + rtbLog + + + Serilog.Sinks.LogEmAll.RichTextBoxLog, Serilog.Sinks.LogEmAll, Version=0.0.5.0, Culture=neutral, PublicKeyToken=null + + + tabLog + + + 0 + + + 4, 22 + + + 3, 3, 3, 3 + + + 786, 415 + + + 0 + + + Log + + + tabLog + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tcMain + + + 0 + + + gbOptionsInfo + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabOptions + + + 0 + + + gbOptions + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabOptions + + + 1 + + + 4, 22 + + + 3, 3, 3, 3 + + + 786, 415 + + + 1 + + + Options + + + tabOptions + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tcMain + + + 1 + + + 4, 22 + + + 3, 3, 3, 3 + + + 786, 415 + + + 2 + + + PPD Builder + + + tabPPDBuilder + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tcMain + + + 2 + + + rtbHelp + + + System.Windows.Forms.RichTextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHelp + + + 0 + + + 4, 22 + + + 3, 3, 3, 3 + + + 786, 415 + + + 3 + + + Help + + + tabHelp + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tcMain + + + 3 + + + rtbLicense + + + System.Windows.Forms.RichTextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabLicense + + + 0 + + + 4, 22 + + + 3, 3, 3, 3 + + + 786, 415 + + + 4 + + + License + + + tabLicense + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tcMain + + + 4 + + + rtbDonations + + + System.Windows.Forms.RichTextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabDonations + + + 0 + + + 4, 22 + + + 3, 3, 3, 3 + + + 786, 415 + + + 5 + + + Donations + + + tabDonations + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tcMain + + + 5 + + + True + + + NoControl + + + 6, 16 + + + 356, 13 + + + 0 + + + Enter your username, email address and password and click Register App. + + + lblRegistrationInfo1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbRegistrationInfo + + + 0 + + + 6, 144 + + + 774, 38 + + + 2 + + + Registration Info + + + gbRegistrationInfo + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabRegistration + + + 0 + + + Top, Left, Right + + + 2 + + + gbRegistration + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tlpRegistration + + + 0 + + + gbRegisterApp + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tlpRegistration + + + 1 + + + 6, 6 + + + 1 + + + 774, 132 + + + 0 + + + tlpRegistration + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabRegistration + + + 1 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="gbRegistration" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="gbRegisterApp" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,50,Percent,50" /><Rows Styles="Percent,50" /></TableLayoutSettings> + + + 4, 22 + + + 3, 3, 3, 3 + + + 786, 415 + + + 6 + + + Registration + + + tabRegistration + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tcMain + + + 6 + + + Fill + + + 0, 63 + + + 794, 441 + + + 3 + + + tcMain + + + System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + Top, Bottom, Left, Right + + + 6, 6 + + + 774, 403 + + + 0 + + + + + + rtbLog + + + Serilog.Sinks.LogEmAll.RichTextBoxLog, Serilog.Sinks.LogEmAll, Version=0.0.5.0, Culture=neutral, PublicKeyToken=null + + + tabLog + + + 0 + + + Top, Left, Right + + + lblOptionsInfo2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptionsInfo + + + 0 + + + lblOptionsInfo1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptionsInfo + + + 1 + + + 6, 346 + + + 774, 45 + + + 1 + + + Options Info + + + gbOptionsInfo + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabOptions + + + 0 + + + True + + + NoControl + + + 6, 29 + + + 357, 13 + + + 1 + + + To change the language or log level, save the options and restart the app. + + + lblOptionsInfo2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptionsInfo + + + 0 + + + True + + + NoControl + + + 6, 16 + + + 297, 13 + + + 0 + + + Xdelta Command must end with '-s' and should not contain '-v' + + + lblOptionsInfo1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptionsInfo + + + 1 + + + Top, Left, Right + + + cbLogLevel + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 0 + + + cbLanguage + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 1 + + + cbSounds + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 2 + + + lblLogLevel + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 3 + + + lblLanguage + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 4 + + + txtComment + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 5 + + + txtMachineName + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 6 + + + txtDelimiter + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 7 + + + txtXdeltaBuildCommand + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 8 + + + txtPathXdeltaFile + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 9 + + + txtPathDatPPDXMLFile + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 10 + + + txtPathDatsDir + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 11 + + + txtPathPatchesDir + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 12 + + + txtPathROMsDir + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 13 + + + lblSounds + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 14 + + + lblComment + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 15 + + + lblMachineName + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 16 + + + lblDelimiter + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 17 + + + lblXdeltaBuildCommand + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 18 + + + lblPathXdeltaFile + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 19 + + + lblPathDatPPDXMLFile + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 20 + + + lblPathDatsDir + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 21 + + + lblPathPatchesDir + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 22 + + + lblPathROMsDir + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 23 + + + 6, 6 + + + 774, 334 + + + 0 + + + Options + + + gbOptions + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabOptions + + + 1 + + + Top, Left, Right + + + False + + + Information + + + 131, 307 + + + 637, 21 + + + 38 + + + cbLogLevel + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 0 + + + Top, Left, Right + + + False + + + en + + + 131, 280 + + + 637, 21 + + + 37 + + + cbLanguage + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 1 + + + Top, Left, Right + + + False + + + Off + + + On + + + 131, 253 + + + 637, 21 + + + 36 + + + cbSounds + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 2 + + + True + + + NoControl + + + 6, 310 + + + 60, 13 + + + 34 + + + Log Level: + + + lblLogLevel + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 3 + + + True + + + NoControl + + + 6, 283 + + + 61, 13 + + + 31 + + + Language: + + + lblLanguage + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 4 + + + Top, Left, Right + + + False + + + 131, 227 + + + 637, 20 + + + 28 + + + txtComment + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 5 + + + Top, Left, Right + + + False + + + 131, 201 + + + 637, 20 + + + 27 + + + txtMachineName + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 6 + + + Top, Left, Right + + + False + + + 131, 175 + + + 637, 20 + + + 26 + + + -- + + + txtDelimiter + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 7 + + + Top, Left, Right + + + False + + + 131, 149 + + + 637, 20 + + + 25 + + + -e -9 -s + + + txtXdeltaBuildCommand + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 8 + + + Top, Left, Right + + + False + + + 131, 123 + + + 637, 20 + + + 24 + + + txtPathXdeltaFile + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 9 + + + Top, Left, Right + + + False + + + 131, 97 + + + 637, 20 + + + 23 + + + txtPathDatPPDXMLFile + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 10 + + + Top, Left, Right + + + False + + + 131, 71 + + + 637, 20 + + + 22 + + + txtPathDatsDir + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 11 + + + Top, Left, Right + + + False + + + 131, 45 + + + 637, 20 + + + 21 + + + txtPathPatchesDir + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 12 + + + Top, Left, Right + + + False + + + 131, 19 + + + 637, 20 + + + 20 + + + txtPathROMsDir + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 13 + + + True + + + NoControl + + + 6, 256 + + + 49, 13 + + + 19 + + + Sounds: + + + lblSounds + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 14 + + + True + + + NoControl + + + 6, 230 + + + 49, 13 + + + 18 + + + Coment: + + + lblComment + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 15 + + + True + + + NoControl + + + 6, 204 + + + 85, 13 + + + 17 + + + Machine Name: + + + lblMachineName + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 16 + + + True + + + NoControl + + + 6, 178 + + + 53, 13 + + + 16 + + + Delimiter: + + + lblDelimiter + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 17 + + + True + + + NoControl + + + 6, 152 + + + 119, 13 + + + 15 + + + Xdelta Build Command: + + + lblXdeltaBuildCommand + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 18 + + + True + + + NoControl + + + 6, 126 + + + 62, 13 + + + 14 + + + Xdelta File: + + + lblPathXdeltaFile + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 19 + + + True + + + NoControl + + + 6, 100 + + + 103, 13 + + + 13 + + + Dat/PPD/XML File: + + + lblPathDatPPDXMLFile + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 20 + + + True + + + NoControl + + + 6, 74 + + + 51, 13 + + + 12 + + + Dats Dir: + + + lblPathDatsDir + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 21 + + + True + + + NoControl + + + 6, 48 + + + 68, 13 + + + 11 + + + Patches Dir: + + + lblPathPatchesDir + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 22 + + + True + + + NoControl + + + 6, 22 + + + 59, 13 + + + 10 + + + ROMs Dir: + + + lblPathROMsDir + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptions + + + 23 + + + Top, Bottom, Left, Right + + + 6, 6 + + + 774, 403 + + + 0 + + + + + + rtbHelp + + + System.Windows.Forms.RichTextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabHelp + + + 0 + + + Top, Bottom, Left, Right + + + 6, 6 + + + 774, 403 + + + 0 + + + + + + rtbLicense + + + System.Windows.Forms.RichTextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabLicense + + + 0 + + + Top, Bottom, Left, Right + + + 6, 6 + + + 774, 403 + + + 0 + + + + + + rtbDonations + + + System.Windows.Forms.RichTextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabDonations + + + 0 + + + Top, Bottom, Left, Right + + + lblRegistrationKey + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbRegistration + + + 0 + + + lblRegistrationKeyLabel + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbRegistration + + + 1 + + + lblRegistrationStatus + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbRegistration + + + 2 + + + lblRegistrationStatusLabel + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbRegistration + + + 3 + + + 390, 3 + + + 381, 126 + + + 1 + + + Registration + + + gbRegistration + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tlpRegistration + + + 0 + + + Top, Left, Right + + + NoControl + + + 55, 48 + + + 320, 13 + + + 3 + + + lblRegistrationKey + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbRegistration + + + 0 + + + True + + + NoControl + + + 18, 48 + + + 31, 13 + + + 2 + + + Key: + + + lblRegistrationKeyLabel + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbRegistration + + + 1 + + + Top, Left, Right + + + NoControl + + + 55, 22 + + + 320, 13 + + + 1 + + + unregistered + + + lblRegistrationStatus + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbRegistration + + + 2 + + + True + + + NoControl + + + 6, 22 + + + 43, 13 + + + 0 + + + Status: + + + lblRegistrationStatusLabel + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbRegistration + + + 3 + + + Top, Bottom, Left, Right + + + lblRegisterAppPassword + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbRegisterApp + + + 0 + + + lblRegisterAppEmailAddress + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbRegisterApp + + + 1 + + + lblRegisterAppUsername + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbRegisterApp + + + 2 + + + btnRegisterApp + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbRegisterApp + + + 3 + + + txtRegisterAppPassword + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbRegisterApp + + + 4 + + + txtRegisterAppEmailAddress + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbRegisterApp + + + 5 + + + txtRegisterAppUsername + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbRegisterApp + + + 6 + + + 3, 3 + + + 381, 126 + + + 0 + + + Register App + + + gbRegisterApp + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tlpRegistration + + + 1 + + + True + + + NoControl + + + 6, 71 + + + 59, 13 + + + 6 + + + Password: + + + lblRegisterAppPassword + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbRegisterApp + + + 0 + + + True + + + NoControl + + + 6, 48 + + + 79, 13 + + + 5 + + + Email Address: + + + lblRegisterAppEmailAddress + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbRegisterApp + + + 1 + + + True + + + NoControl + + + 6, 22 + + + 61, 13 + + + 4 + + + Username: + + + lblRegisterAppUsername + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbRegisterApp + + + 2 + + + False + + + NoControl + + + 91, 97 + + + 100, 23 + + + 3 + + + Register App + + + btnRegisterApp + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbRegisterApp + + + 3 + + + Top, Left, Right + + + False + + + 91, 71 + + + 284, 20 + + + 2 + + + txtRegisterAppPassword + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbRegisterApp + + + 4 + + + Top, Left, Right + + + False + + + 91, 45 + + + 284, 20 + + + 1 + + + txtRegisterAppEmailAddress + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbRegisterApp + + + 5 + + + Top, Left, Right + + + False + + + 91, 19 + + + 284, 20 + + + 0 + + + txtRegisterAppUsername + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbRegisterApp + + + 6 + + + 289, 17 + + + 424, 17 + + + 568, 17 + + + 712, 17 + + + True + + + 51 + + + 6, 13 + + + 794, 526 + + + + AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA + AAC3agAGt2kAXbdpAM+3aQD1t2kA97dpAPe3aQD3t2kA97dpAPe3aQD3t2kA97dpAPe3aQD3t2kA97dp + APe3aQD3t2kA97dpAPe3aQD3t2kA97dpAPe3aQD3t2kA97dpAPe3aQD3t2kA97dpAPe3aQD3t2kA9bdp + ANG3aQBft2oAB7VoAFq2aADmtmgA/7ZoAP+2aAD/tmgA/7ZoAP+2aAD/tmgA/7ZoAP+2aAD/tmgA/7Zo + AP+2aAD/tmgA/7ZoAP+2aAD/tmgA/7ZoAP+2aAD/tmgA/7ZoAP+2aAD/tmgA/7ZoAP+2aAD/tmgA/7Zo + AP+2aAD/tmgA/7ZoAOi1aABftGYAy7RnAP+0ZwD/tGcA/7RnAP+0ZwD/tWcA/7RnAP+0ZwD/tGcA/7Rn + AP+0ZwD/tGcA/7VnAP+1ZwD/tWcA/7VnAP+1ZwD/tWcA/7RnAP+0ZwD/tGcA/7RnAP+0ZwD/tGcA/7Vn + AP+0ZwD/tGcA/7RnAP+0ZwD/tGcA/7RmAM+zZAD0s2QA/7NkAP+zZAD/s2UA/7NkAP+wYQD/sWIA/7Nk + AP+zZQD/s2UA/7NkAP+yYgD/sGAA/69gAP+uXwD/rl8A/69gAP+wYAD/smIA/7NkAP+zZQD/s2UA/7Nk + AP+xYgD/sGEA/7NkAP+zZQD/s2QA/7NkAP+zZAD/s2QA9bJjAPexYwD/sWMA/7FjAP+xYgD/sWQH/7+N + V/+3f0P/sWQH/7BgAP+sXgL/rGQS/7F0Mf+5hlH/wpZo/8ehd//HoXj/wpdp/7qGUv+xdDH/rGUT/6xe + A/+wYAD/sWQG/7d/Qf+/jlj/sWQI/7FiAP+xYwD/sWMA/7FjAP+yYwD3sGEA97BhAP+wYQD/sGEA/69g + AP+3dSn/8eje/+rayP+xbST/tHk8/8yohf/j08P/9O7p//r5+P/+/v/////////////+/v//+/n4//Tv + 6v/k1MX/zKqH/7R7Pv+wbCL/6djF//Lq4f+4diz/r18A/7BhAP+wYQD/sGEA/7BhAPevYAD3r2AA/69g + AP+vYAD/rVwA/8qebf/+/f3/59jJ/9nBq//18e3///7+//v38//y5tj/59C2/+DBn//du5T/3buU/+DB + nv/nz7X/8uXX//v38v///v7/9vHu/9rCrP/n18f//v79/8ygcf+sXAD/r2AA/69gAP+vYAD/r2AA961d + APetXQD/rV0A/61dAP+uYxD/5NC6///////9/fz//Pn2/+3byP/VrH//wIRD/7VuHf+vYg3/rV4F/6xc + Av+sXAL/rV4F/69iDP+1bRz/wINC/9Srfv/t2sb//Pn2//79/P//////5tK+/69kEv+tXQD/rV4A/61d + AP+tXQD3rFwB96xcAf+sXAH/qlkA/72DRv/49PD///////Tt5v/FmG3/rWMW/6pZAf+qWQD/q1oA/6tb + AP+rWwD/rFsB/6xbAf+rWwD/q1sA/6taAP+qWQD/qlgB/61iFP/Elmr/8+vk///////59fL/voVK/6pZ + AP+sXAH/rFwB/6xcAfeqWgP3qloD/6paA/+pWAH/xpFb//Pp3v/+/fz/+vj1/9/Muv/Clmz/rWMV/6pZ + Av+qWgP/qloD/6paA/+qWgP/qloD/6paA/+qWgP/qloD/6pZAv+tYxT/wZVq/9/LuP/69/X//v38//Tq + 3//HlF//qVgB/6paA/+qWgP/qloD96lYBPepWAT/qVgE/6lYBP+qWwr/tXAr/8ydb//o0rz/+/j0//Hl + 2f+0bSf/qFcC/6lYBP+pWAT/qVgE/6lYBP+pWAT/qVgE/6lYBP+pWAT/qFcC/7NsJP/w49b//Pj0/+jT + vf/NnnH/tXEs/6pbCv+pWAT/qVgE/6lYBP+pWAT3qFcE96hXBP+oVwT/qFcE/6dWBP+nVAH/plIA/6lb + Dv+6fUT/wYpV/6ZVB/+nVQH/qFYE/6hXBP+oVwT/qFcE/6hXBP+oVwT/qFcE/6hWBP+nVQH/plUG/8CK + VP+7fkX/qVsP/6ZSAP+nVAH/p1YD/6hXBP+oVwT/qFcE/6hXBPemVAT3plQE/6ZUBP+mVQT/plQC/6NS + A/+nYiD/toFQ/8CVbP/Cl27/uIVW/6lmJf+jUgX/plMC/6ZVBP+mVAT/plQE/6ZVBP+mUwL/o1IF/6hl + JP+4hVX/wZdu/8CWbf+2glH/qGMh/6NSBP+mUwL/plUE/6ZUBP+mVAT/plQE96VTAvelUwL/pVMD/6RR + Af+lWRL/w5p0/+nd0v/69/X//v7+//7+/v/7+ff/7eLZ/8ijgP+mXhr/pFEB/6VTAv+lUwP/pFEB/6Zd + Gf/HoX7/7OHX//r49v/+/v7//v7+//r39f/q3tP/xJx2/6VaFP+kUQH/pVMD/6VTAv+lUwL3pFEC96RR + Av+jUAD/plsX/9W5n//7+vn//////////////////////////////////fz8/9zFsf+oYSL/o08A/6NP + AP+oYB//28Ou//38+//////////////////////////////////8+vn/1rui/6ZcGf+jUAD/pFEC/6RR + AvejTwH3o08B/6JQBv/OqYn//f38/////////////////////////////////////////////v///9a4 + nv+jUgv/o1IK/9S2mv/+/v7////////////////////////////////////////////9/f3/z6yM/6JQ + B/+jTwD/o08B96NQA/eiTgD/s3M7//Tt5v/////////////////38u7/7OHW/+vg1f/18Or///7+//// + ////////+fXx/7h+S/+3e0f/+PTw//////////////7+//bw6//r4NX/7ODW//fy7f////////////// + ///17+n/tHU+/6JNAP+jUAP3plQH96VSBP/Pp4H/////////////////9e7o/+TUxP/l0r//5NC9/+PS + wv/y6uP/////////////////17aX/9a0lP/////////////////y6+T/49LC/+TQvf/l0b//49PE//Tt + 5//////////////////Rqob/pVIF/6ZUB/eqWQr3q1wP/+HGrP////////////79/P/r3M7/4siv/7dy + MP+0bCb/3sCi/+rayv/9+/n////////////r2cj/6tjG/////////////fv5/+ray//fwqX/tG0o/7Zx + Lv/hx63/69zN//79/P///////////+LJsP+rXRD/qlkK965fCPewZBL/59C3/////////////Pr4/+3e + z//UsIr/qloE/6pYAP/OpHf/7d3O//v38/////////////Ll1//x5NX////////////7+PT/7N3N/8+m + e/+qWAD/qlkD/9Ouhv/t3s///Pr3////////////6NO7/7FlE/+uXwj3s2YH97NoC//jx6T///////// + /////v7/6t3Q/+DMuf+6h1H/t4FI/97Is//o2sv//fz7////////////69i//+vWvP////////////79 + /P/o2sz/3sm0/7eCSv+5hU//38u4/+rc0P/+/v7////////////kyaj/tGgM/7NmB/e4bQr3uG0L/9iv + ff/+/v3////////////59fH/5dbH/+PTxP/j08T/5NXG//bx7P/////////////////duYn/3LeF//// + //////////////fy7f/k1cb/49PE/+PTxP/l1cf/+PTw//////////////7+/9mxgf+4bQz/uG0K9712 + Ffe9dxr/y5NV//bs4f/////////////////8+vj/8+3n//Ps5f/7+Pb/////////////////+PHn/8qR + RP/Jj0H/+PDl//////////////////v59//z7OX/8+3m//z6+P/////////////////27eP/zJRX/712 + G/+9dhX3wn4k98OAKv/IiEH/37mQ//369v////////////////////////////////////////////38 + +f/gvI7/wn4k/8J9I//fuov//fv4/////////////////////////////////////////////fr3/9+7 + k//IiEL/w4Aq/8J+JPfHhS/3yYc1/82QS//PlFH/5MSf//v28f////////////////////////////// + ///8+fX/5cae/8qLOv/IhTD/yIUw/8qLOf/lxZz//Pj0//////////////////////////////////v3 + 8v/lxaH/z5RS/82RS//JiDX/x4Uv982ON/fOkD3/05lU/9OZVv/Umlj/37WE//Ddxf/68+v//fn1//35 + 9v/79O3/8uDL/+G6i//TmVX/0pZQ/9KXUf/Sl1H/0pZQ/9OZVf/huYr/8t/K//r07f/9+fb//fn1//rz + 6//x3cb/4LaF/9SaWP/TmVb/05lU/86QPf/Njjf305c+99SZRP/ZoV3/2aJg/9miX//YoF3/2qRi/9+v + dv/iuYb/4rmG/9+xeP/apWT/2KBd/9miX//ZomD/2aJg/9miYP/ZomD/2aJf/9igXf/apWT/37B4/+K5 + hv/iuYb/37B2/9qkY//YoF3/2aJf/9miYP/ZoV3/1JlF/9OXPvfZoUr32qJN/92pY//eq2j/3qpn/96r + aP/eqmf/3qlm/92pZP/dqWT/3all/96qZ//eq2j/3qpo/96qZ//eqmf/3qpn/96qZ//eqmj/3qto/96q + Z//dqWX/3alk/92pZP/eqWb/3qpn/96raP/eqmf/3qto/92pZP/aok7/2aFK99+qWPPgq1j/4a9k/+Oz + cP/js3D/47Nw/+OzcP/js3D/47Nw/+OzcP/js3D/47Nw/+OzcP/js3D/47Nw/+OzcP/js3D/47Nw/+Oz + cP/js3D/47Nw/+OzcP/js3D/47Nw/+OzcP/js3D/47Nw/+OzcP/js3D/4a9k/+CrWP/fqlj05bRixea0 + Yv/mtWP/57ht/+i7df/ou3b/6Lt2/+i7dv/ou3b/6Lt2/+i7dv/ou3b/6Lt2/+i7dv/ou3b/6Lt2/+i7 + dv/ou3b/6Lt2/+i7dv/ou3b/6Lt2/+i7dv/ou3b/6Lt2/+i7dv/ou3b/6Lt1/+e4bf/mtWT/5rRi/+W0 + YsnqvGtR675t4Oy/bv/sv27/7L9v/+y/cP/sv3D/7L9w/+y/cP/sv3D/7L9w/+y/cP/sv3D/7L9w/+y/ + cP/sv3D/7L9w/+y/cP/sv3D/7L9w/+y/cP/sv3D/7L9w/+y/cP/sv3D/7L9w/+y/cP/sv2//7L9u/+y/ + bv/rvm3h6rxrVe7DdAPvxXVP8Md3wvHIePDxyHj28ch49vHIePbxyHj28ch49vHIePbxyHj28ch49vHI + ePbxyHj28ch49vHIePbxyHj28ch49vHIePbxyHj28ch49vHIePbxyHj28ch49vHIePbxyHj28ch49vHI + ePbxyHjx8Md3xO/FdVLvxHUEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + + + + PatchEmAll + + + tsmiCommands + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsmiBuildROMs + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsmiBuildPatches + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsmiBuildPatchesDatafile + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSeparator1 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsmiLoadOptions + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsmiSaveOptions + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSeparator2 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsmiSaveLog + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSeparator3 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsmiExit + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsmiView + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsmiLog + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSeparator7 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsmiOptions + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSeparator8 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsmiPPDBuilder + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSeparator9 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsmiHelp + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSeparator10 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsmiLicense + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSeparator11 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsmiDonations + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSeparator12 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsmiRegistration + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSeparator13 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsmiToolbar + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbBuildROMs + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbBuildPatches + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbBuildPatchesDatafile + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSeparator4 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbLoadOptions + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbSaveOptions + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSeparator5 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbSaveLog + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSeparator6 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbViewLog + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbViewOptions + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbViewPPDBuilder + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbViewHelp + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbViewLicense + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbDonations + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbRegistration + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbViewToolbar + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsslSnap + + + System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsslStarusMessage + + + System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tspbBuildProgress + + + System.Windows.Forms.ToolStripProgressBar, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tssbCancel + + + System.Windows.Forms.ToolStripSplitButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + bgwBuildROMs + + + System.ComponentModel.BackgroundWorker, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + bgwBuildPatches + + + System.ComponentModel.BackgroundWorker, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + bgwBuildDatafile + + + System.ComponentModel.BackgroundWorker, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + bgwStartupTasks + + + System.ComponentModel.BackgroundWorker, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + FrmPatchEmAll + + + System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/PatchEmAll-GUI/PatchEmAll-GUI.csproj b/PatchEmAll-GUI/PatchEmAll-GUI.csproj new file mode 100644 index 0000000..e6ced98 --- /dev/null +++ b/PatchEmAll-GUI/PatchEmAll-GUI.csproj @@ -0,0 +1,128 @@ + + + + + Debug + AnyCPU + {114ADC53-8575-4DA6-9EC3-36187C0B55E9} + WinExe + PatchEmAll_GUI + PatchEmAll-GUI + v4.8 + 512 + true + true + + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + bin\Debug\PatchEmAll-GUI.xml + + + AnyCPU + none + true + bin\Release\ + TRACE + prompt + 4 + + + true + + + App.ico + + + + ..\packages\Serilog.2.12.0\lib\net47\Serilog.dll + + + ..\packages\Serilog.Sinks.LogEmAll.0.0.7\lib\net461\Serilog.Sinks.LogEmAll.dll + + + + + + + + + + + + + Form + + + FrmPatchEmAll.cs + + + + + FrmPatchEmAll.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + + + + {956e3b6c-eee3-44a9-be64-7b3ae0238924} + PatchEmAll + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/PatchEmAll-GUI/Program.cs b/PatchEmAll-GUI/Program.cs new file mode 100644 index 0000000..cd1d5c6 --- /dev/null +++ b/PatchEmAll-GUI/Program.cs @@ -0,0 +1,34 @@ +using Serilog; +using Serilog.Formatting.Display; +using Serilog.Sinks.LogEmAll; +using System; +using System.Windows.Forms; + +namespace PatchEmAll_GUI +{ + static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + ConfigureSerilog(); + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new FrmPatchEmAll()); + } + + /// + /// Configure the logger. + /// + public static void ConfigureSerilog() + { + Log.Logger = new LoggerConfiguration() + .MinimumLevel.Information() + .WriteToRichTextBox(new MessageTemplateTextFormatter("{Level:u4}: {Message:lj}{NewLine}{Exception}")) + .CreateLogger(); + } + } +} diff --git a/PatchEmAll-GUI/Properties/AssemblyInfo.cs b/PatchEmAll-GUI/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..ad43133 --- /dev/null +++ b/PatchEmAll-GUI/Properties/AssemblyInfo.cs @@ -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("PatchEmAll-GUI")] +[assembly: AssemblyDescription("The Original Automated ROM Patcher")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("PatchEmAll")] +[assembly: AssemblyProduct("PatchEmAll-GUI")] +[assembly: AssemblyCopyright("Copyright (c) 2016-2025 PatchEmAll - All Rights Reserved")] +[assembly: AssemblyTrademark("PatchEmAll - The Original Automated ROM Patcher")] +[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("114adc53-8575-4da6-9ec3-36187c0b55e9")] + +// 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.5.7")] +[assembly: AssemblyFileVersion("1.5.7")] diff --git a/PatchEmAll-GUI/Properties/Resources.Designer.cs b/PatchEmAll-GUI/Properties/Resources.Designer.cs new file mode 100644 index 0000000..941e372 --- /dev/null +++ b/PatchEmAll-GUI/Properties/Resources.Designer.cs @@ -0,0 +1,339 @@ +//------------------------------------------------------------------------------ +// +// 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. +// +//------------------------------------------------------------------------------ + +namespace PatchEmAll_GUI.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // 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() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [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("PatchEmAll_GUI.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap AddPrepatch_16x16 { + get { + object obj = ResourceManager.GetObject("AddPrepatch_16x16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream. + /// + internal static System.IO.UnmanagedMemoryStream AddRemove { + get { + return ResourceManager.GetStream("AddRemove", resourceCulture); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap BuildDatafile_32x32 { + get { + object obj = ResourceManager.GetObject("BuildDatafile_32x32", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap BuildPatches_32x32 { + get { + object obj = ResourceManager.GetObject("BuildPatches_32x32", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap BuildROMs_32x32 { + get { + object obj = ResourceManager.GetObject("BuildROMs_32x32", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Cancel_16x16 { + get { + object obj = ResourceManager.GetObject("Cancel_16x16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ChangeOption_16x16 { + get { + object obj = ResourceManager.GetObject("ChangeOption_16x16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap CheckPrepatches_16x16 { + get { + object obj = ResourceManager.GetObject("CheckPrepatches_16x16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream. + /// + internal static System.IO.UnmanagedMemoryStream Complete { + get { + return ResourceManager.GetStream("Complete", resourceCulture); + } + } + + /// + /// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream. + /// + internal static System.IO.UnmanagedMemoryStream Confirm { + get { + return ResourceManager.GetStream("Confirm", resourceCulture); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Donate_32x32 { + get { + object obj = ResourceManager.GetObject("Donate_32x32", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Exit_32x32 { + get { + object obj = ResourceManager.GetObject("Exit_32x32", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream. + /// + internal static System.IO.UnmanagedMemoryStream Fail { + get { + return ResourceManager.GetStream("Fail", resourceCulture); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Help_32x32 { + get { + object obj = ResourceManager.GetObject("Help_32x32", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Key_32x32 { + get { + object obj = ResourceManager.GetObject("Key_32x32", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap License_32x32 { + get { + object obj = ResourceManager.GetObject("License_32x32", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap LoadDat_16x16 { + get { + object obj = ResourceManager.GetObject("LoadDat_16x16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap LoadOptions_32x32 { + get { + object obj = ResourceManager.GetObject("LoadOptions_32x32", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap LoadPPD_16x16 { + get { + object obj = ResourceManager.GetObject("LoadPPD_16x16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Log_32x32 { + get { + object obj = ResourceManager.GetObject("Log_32x32", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Options_32x32 { + get { + object obj = ResourceManager.GetObject("Options_32x32", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap PPDBuilder_32x32 { + get { + object obj = ResourceManager.GetObject("PPDBuilder_32x32", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap RemoveAllPrepatches_16x16 { + get { + object obj = ResourceManager.GetObject("RemoveAllPrepatches_16x16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap RemovePrepatch_16x16 { + get { + object obj = ResourceManager.GetObject("RemovePrepatch_16x16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap SaveLog_32x32 { + get { + object obj = ResourceManager.GetObject("SaveLog_32x32", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap SaveOptions_32x32 { + get { + object obj = ResourceManager.GetObject("SaveOptions_32x32", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap SavePPD_16x16 { + get { + object obj = ResourceManager.GetObject("SavePPD_16x16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Toolbar_32x32 { + get { + object obj = ResourceManager.GetObject("Toolbar_32x32", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/PatchEmAll-GUI/Properties/Resources.resx b/PatchEmAll-GUI/Properties/Resources.resx new file mode 100644 index 0000000..d412174 --- /dev/null +++ b/PatchEmAll-GUI/Properties/Resources.resx @@ -0,0 +1,205 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\Images\AddPrepatch_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Audio\AddRemove.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\Images\BuildDatafile_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\BuildPatches_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\BuildROMs_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\Cancel_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\ChangeOption_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\CheckPrepatches_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Audio\Complete.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\Audio\Confirm.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\Images\Donate_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\Exit_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Audio\Fail.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\Images\Help_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\Key_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\License_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\LoadDat_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\LoadOptions_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\LoadPPD_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\Log_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\Options_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\PPDBuilder_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\RemoveAllPrepatches_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\RemovePrepatch_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\SaveLog_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\SaveOptions_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\SavePPD_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\Toolbar_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/PatchEmAll-GUI/Resources/Audio/AddRemove.wav b/PatchEmAll-GUI/Resources/Audio/AddRemove.wav new file mode 100644 index 0000000000000000000000000000000000000000..e0186d348a53549ecc43bafb880ac10e41f0c144 GIT binary patch literal 1063 zcmX9+L5Cbs5bj70Ip!ZEzaiILl0!nSIV6|8B$5b`5SC?GmZ9l*Jc^Zs2-& zci7)IhTFsImxnL^-W-Nnw&U5!RXO_khA!Ukj(?s1(F6ZC(Yy2Cv)|ud{$9z0i+28_ zAM~kzlCt@B`s(WH%g1+`KZ_q+w)r^E&g)5(ub)UfyKO=!Q_I$Zy=_>=%t<5jG<~<* zu6-)CcPmFWN7NK2>N^dpa9+VdDT&12u63*0N!B~4haYmMW`evtBIz9cuBxt zm7y0aNCQ%#97^2r7NMc(_*M;;ICP;Tgacr{hlCNJ!Y9Hx5W)`SSUgd2t-&lHADMUp z3un?`)Tk_a5lcZbfe|cF#|BeVx++Y>4_M$_GWUY6;cYgU0zYAzF5+O>;#C7gNT5YX zw?^$`Cx=ILsjFB|r$S=$Je^=#Ht5IKdDNWCyeeAD;Y=6P+41*jA)mdBZKY`=An~r7 zs;dgcRXID9;f$&++irlP~%s8!}#Cb&$cSYt!Oxn_)P%-$>Ha#wb#btLmN zPD~i)f{j4II5wJ%PQoeJ1#1;EwGYDLX2@q@M>ZNR7#H*&^D5{I(XtDZCeVsHxKc2o zd#~XYrjA%DW=|I6jtz#16qhqE6%}xhhKND}cz`1~=JE~l!GZ=llCWY_7>=^ZQi}#6 O1CgSHOd|o+=hc76oq5Rs literal 0 HcmV?d00001 diff --git a/PatchEmAll-GUI/Resources/Audio/Complete.wav b/PatchEmAll-GUI/Resources/Audio/Complete.wav new file mode 100644 index 0000000000000000000000000000000000000000..06e389e21918ee622a896ef8911c27b397026e4d GIT binary patch literal 19115 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 literal 0 HcmV?d00001 diff --git a/PatchEmAll-GUI/Resources/Images/AddPrepatch_16x16.png b/PatchEmAll-GUI/Resources/Images/AddPrepatch_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..43141e45a6979db07c391f736c453aa515487a8f GIT binary patch literal 667 zcmV;M0%ZM(P)3&dzRrsdr}-4@(7qAb1FN!WCj`A=p{iTZo7Vg4!t9T3J{q*!T~K2-;|I zf`Wxb&;vz_a7Xs?Ym?n1JK0&^tjQ!2E&MK%?9O-g^WHpWoojEKR~_Npavk^%W|eA= zEX(f&8&b@=W>#kyYn?rkK{L9$#}m~u33{@CO)QsOEEnDUxi?DD?4_78%-=B05Gs8` z2Ccs9mprIR$24Q5vA$Nt1rAfMzjW~ILjxsGJ5vET9!9sBL$!n*fKG zfm91F+I&Yg2-u?XC|1Ayn~KM1heHbp>7ZZlqF2ZZPQa6{oqPP|8@_M%2?z&RIZ(#U^GEToI(=v*AM^EM;|Dgwm|4(% zsx$m=rIW)T1%qky65M(I*=|8Iob|O;oIAOiKW}^u@akh7!kca3XOrqhkAQ-QAWCqb z08EWA_3M{US-`tmfO}6r0cGC;oRWlV0NNFxH0jbdHI)hkPs=Z`w^V{Cdw*=h944vf zlC|aP9BNDOp6mX$mOkcJPG@yapN5;}b9~ud063BjwE);9@Z^0RFKavb;|@bcr2q(L zL5dE BD8K*! literal 0 HcmV?d00001 diff --git a/PatchEmAll-GUI/Resources/Images/BuildDatafile_32x32.png b/PatchEmAll-GUI/Resources/Images/BuildDatafile_32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..01207a5871dec1a1d24cda262282b3e27fe92e40 GIT binary patch literal 1533 zcmVdtcmj^*Xkcv>S)|XQH;Drj}1%y7tq9CFm zh@vQBQ7J0eqWGeqV8mLqimAoeO4@jB(@nP7o!z;d<9B8z>E4o^2t8ynmvhelf9LzJ zEB1ahX;{Lo9f`r-W^7;IiScX+{awk5`K;}uRCM8x zp=u&TbeW#Ql<-^ce$ASaC+7t)=L0-_-u7q? zC^FzckouyMfsJYwN5kdno3HA?o~^yXyTel`DQgsHa~6vp=j9xLdVXSajZ1TwCA$R6 zGhi#LV&SYSXj|#iT-K4qV5SL2#&eMTIL#AG7it-h6goq*dRjPzXgOMjs&oaEY$pWZ zkS^ONfM|(EP4Fmjvd9O$s6cz&F}NylKA&b#fg)gNWor!pm)`e#HXksSG7KbX-gLr1 zig*4Id>9SdOaXukL?X$6BNQBdn096PV=2Gj`}a<&hWwAOm^FkCkXNGdbEngQi_C`9(x z`9RhIKw9YWF_SbUOV@+s9x+cww3UjI6fV5@xy!YTzzqFI`87pcN1`^=&sFu7~XLWhOSr= zH8Vb*c;hI{=CF@2%Zs)~F4@uCdTj>#?^}<}13mw{_uKjMH@Km{8xP%ib$Nhb?5`PW zO<-29Ih**UA5yyS{vkYl?>d+YI zI>wt1Z^DkPeT!1`?#OBULE-vDK>?+(Jni1ul0-*ysOZBZ6WIIK_n7!+21Zk5-(gDn zfTG=6J5soNbPDA1Fnuq_>){>u~RaA4#NM#j!#IZboV^_k$xbfyI=kN&H>1>HwQO`Jk^ zR};2f*NdH7R$@zkS4FA)X(EUHhknJuZzsZ7OU5>1R$%wxEKzm}I*@Xs%%}S{QIi^V zFHTS1oCYZT!KJKVjz`Rw6UT@4AX{o+dE7ApdEq>M5Qb`ovZ$IN`DJ zX&lou&vu+iGS!ldS$--Ea8mogOHksO*vPfQl(Eon-?&4g9oC%fXNa&R6?^z$87}?M jicj(O9N9elp8x{@dsfw9Vd^sA00000NkvXXu0mjfIpNg9 literal 0 HcmV?d00001 diff --git a/PatchEmAll-GUI/Resources/Images/BuildPatches_32x32.png b/PatchEmAll-GUI/Resources/Images/BuildPatches_32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..65fa0a7060b2a3fb32b96ad3ba788cc4cec02af7 GIT binary patch literal 1620 zcmV-a2CMmrP)la8 z8d8>t9}pP*5iB&d(hRAUi?p@nT+X@OyX}6R&$s72=k5#VcJHKjoO{ka_kDk#&+qyD zCboRn7l}yY9bt&|P>3n~ze|K4S>IQC9oK(bI*zx?as15+D)>c;!lo&tC~o(B1tA2l z@XS=_v<5fuP$hWkEv-{#vd#;N(o933I$|IqrnW%uk4XcSF#{Rfhvg~Qt`CDUq#-7? zz^2gyjt^f2#&4nlw$evx%S^uXkS`(!Jdf(C2wq)13pSOfX+%%j#j&;&deaV#m?U^q z7WIIB%hO*Ya)1WJOaWgg2zW z)C>R_2YsH!J^lOD4x@7 z%Ry~rWZc_S)lw;nk3Vd>+11e`j#$-`)q_EwR zmFs*u%<+!rmf_x|bJ2M{gDZVG9R1-kK5w~%a(Z8^T3^{G<8uL7i9)w5I-bU3pY`#cC<%ZpF|D~O9t}ulAVpj=?}lmI zv|^yUA6XS;a_qi-DQ;5unlhCRCD{r$cqDWgV6ZP6(wvsTeZJmXC_O>O)ANBBv|WX# zh?hI&SL6L-e;_$T9w?BMoTzVlc9_HEO|@9LD1ilY;=wkH%%%BXUykdIJO|&s(dR6c zp1IfuYtX`yg)_0^+2weGpw&yK@5SAxs96@u&@je~S!_C42TQ4R`!mb1?yd&XsWB~{ zc8%BFRb-Gs?nfkK=&=#YW&kmf(v;%#sXPMUYLjt|W8Vvi}zxKGn&Qk1}cKMD!41 zKov1Xmaz7Je;KcT(TeV#3{V~&ZGB=w1B|e{@LnDbOQW4RJ#w}i$J=^QR};hItLpK< z(m9OI1I^Ky(mj^ibnL&-0u#y5Vf5nri8sXomW-`5}z?6Y9)^~7^OpCDk zGzJdyVMFk>7#T(|M~x2qLf#5q_vv1+86ht`s(mW)AMNQbJqI3S&fok`fB^uL2f=)b S8oI;)0000>e?>2R8g(SVl5yB14sIiJz!#aY*Rv3PnWCS|Ef&$V=G*mc&A#?A`Drm;CYg`V$;ZjIUQ%Yo8I&L~5DjSz07^8X!6XkvgtM7owNC!g zh%nuR^yxc_ku^?9JME_AdQe{I#(~BjWVvOV+?+W)BcxYn0Kte3l>w03Sb30Q-K!ah zkmpnuk& z_YpTFM6%VGu)zf)7W`oWQe|^Mn6%09=dWF;?LLJ*=6Ct3JSZEH%9Wre@?eTc_tCFT-ssWwzIyxr{G<`W>@w&-5VE=dzarK}ywt=A@2Wh2)VP>nV#AD#I@> znvQ}@H{RQR1|h1naS)x#u+qg9kPfh-nbY!d8(BG(m@W%J#mAs#!-P(tG@4;9*}O*2 zd}(n-5GRfKm|RN=15!nk}1Z*M&Yx~H9+Qxc+IF~`IR>nNR^h4ssC z#v|2JpvvMO^?%QPQje(#EzHGp@x;7|Y*R|fkq62okiLtLQn}N+wRHdb8_pwW8Z4cV%=CGV< zKY5Yw{DKVU68n)z`O4=FXu05rAlF+1qOO?a3Vw+z<%)UNr*A3Mh5{lYGoHOFD8?!o zRY_rFj;#CsG&b*Of<>7i`P}i&7=u0FtO$fgDN4ykd2#Yyp`PxKSGOF)(X(_Ha5E#4 zx9XGy2@)o9Z9v|04VR>}0I}5@cQs?v&L%{u@kBffsY;>J--Gdw1Ikw(C))g|`S}9& zp1N$WJvgfv%jQl*>4fnkD&Kde6K{Nb3cogY*#(DMrE7|%RHgp;9o=*&hd6}yADe++ z&h=p1k-wma=$hsq7fcZ94Kt`Kx_@R7o~)jXyDRc2jpcqJO+>;?dw#=~Lv66QaJk3a zKVFfra%UF-$YoDk+yqiKz$F7in+t<~nHY8smru&T!W#=vQS8I<^Sw6U0Oz+ybt>W5 zN2i2UyAPA<>d{;^pjtWQnP*}!U|FONbZU7ACA_rfK6={2tvvqU5hHsRQ5Ik?)#nEY t&01QlK)Oy$e{ilhlD9UH!}k3xzyN+MUZDAHs%!uN002ovPDHLkV1l|BL%#q3 literal 0 HcmV?d00001 diff --git a/PatchEmAll-GUI/Resources/Images/Cancel_16x16.png b/PatchEmAll-GUI/Resources/Images/Cancel_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..40c4bdbc43eb4f7800d4da6e717cd1a3d7e5626c GIT binary patch literal 933 zcmV;W16urvP)c0N^!we8WEMGo+WngAwVGsjK7TL=&umL5iH{4;k^Yj}7CmS=^ z0FY)G0d|H0JBWPqmir7(-+yKJ^7{`1Kmaj){rsKbJKmmsT{}}|im>H_Q6d8C~ z{xdvy{*mF)i%$$J|Na2Q6d1&LS-~Oj2B`iW5QFpr1Q64wFFzPwef-97?%rF5xEW^{ z9>4p+AT7YgFgaSAL5!Q3fs6S+!=xxJ1|<}aBoIzfgli}gp?+m|y&R3P-W_bDO7ema{lMI(0ePrO_ zU}5KrFxh{ey%vH0FN&14YkYhQI&*!=vvnFl@g4{tK4-1rz@dApio1=_fNY z!%twy{$ycd`0(dHgN!5}!`5;;1}$k`hKIoLxb^BAgOVs0!`3o8232_hhW9`(fz*Qa z05L!SG5r7%Ap8xeSyqylVN0PEgSt33!=n#B8QdluV{qy{%5W2C2*^8I3al7ZiifSCRP36LigBzPJ27h5xE05v}ZYWA3XlHu0NuMAH=0@+heGTeOqjX@D; z$lf9=22G$#Kt2cQ1qdJ}1|Y!z^u}*sAb=9gb6`|?Og+VL{rP7G25vS61};{H2f#q| zn0A`s!TTQ!>>%|_AUzNa5I~F!MZ5ol0}vQ+5`vrz-0aK@cb@?@1CuvOTK@TmL0O8I zfeDzFZ-eAnnZdCJ5I`(IQ+@)a*%>&P7+!n=fr|~H83ur2cY!Ve15RLy1g8VW ze*ggl^a5iQ5PxO>P)`55S z6xc~IOy2*SVcV5A3|y?tU^Og2XR$H?4FcNs<>zk(fB<6o_W3&l3y|>*=$t=5r+@kR z2PnzFFzfYah8S}x20uL!hNVXzF?;}O26+kO5>_CC8))FyUw;_@0*K`k(11@s;cvhH zGFYn#Gngt#Fw8&rkiikiW?=^U6{zU@*B{`Z1eyU4*!R%D1qdLP&)UpshkY>sY_~SRjFCZU`k@Nrr5YsPaCI%S(3B>={Ss1tlxfo7A z`pB^4_!F>mT>Z2qLQiVSoT)`U@nmVFnHshI`MyFw8je2<(a&GZ_YL6=8S2PWsQ(NA0mRH;m%s@$ z(E^xGnZRik9RqCvMd$hZ9~j>K_ybJG%n)%##(zM1F+hL;06Eww7NiF=_y7O^07*qo IM6N<$g3p{}zW@LL literal 0 HcmV?d00001 diff --git a/PatchEmAll-GUI/Resources/Images/CheckPrepatches_16x16.png b/PatchEmAll-GUI/Resources/Images/CheckPrepatches_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..63b40512049dd1a12c5b38067f5c17963c61981e GIT binary patch literal 678 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 literal 0 HcmV?d00001 diff --git a/PatchEmAll-GUI/Resources/Images/Help_32x32.png b/PatchEmAll-GUI/Resources/Images/Help_32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..3b3bae342fec1e473445c06e512f36b1867d0133 GIT binary patch literal 2060 zcmV+n2=n)eP)gg>1_nk3RPY~(&4?t1i;b?90aYF2e}=pN|1(tn`SW)* zKmf7){rxBA@9)3!fl@3`Nd`tHMohyf0WjnK{b%?Gu|pZiT>=#O4G=&qKfnFz2MU2L z=VE4LU;|pt$Uqwa^3N}zBfk9wvi|>P19H0o0*K}3_g^CafmZUcGBGd%o%iQIVMBny z$M6?u(0?QkG6NmXM1;$Meq>+)TJq)3KcK$>D2 z_dYRPe)bjYU^bwp|JV!!O8y2q_79K-2q2bUz!3NkbinWb*c0#f-+vi&qq zb6|BO$OB?LEI`c5U=4KO&6nR9mYjUSaO3$`22NIH)XW5Rz^|WwzzzopAeNs$e>408 zIRG9+U=<9%fs&triu?`589=dp^TijO4nPMtfNG@$SQ$jQ`53lbe9gee!2)(92>u7h z@qdP&PzL}65X*0%13;Zz#{Qb-D9T?XifN>gbE(Hw6{|qzsKLV$dzkmNR_!)@d zwS4WF7Yyy&?t<0lILkBGsR=NwKl_4#9~fnvz_h{1!VK{s&|Z)O00M|v!ZyBv@gFdC z0)^iK)59lVlzjUBo54tqmqCn|jbYaQhYYMhxBdI~k74h%Hw#snyf5B183{JRz7=8mi3J^dn zzkm!-6#N9zzkrs&3XD=O6^4tCKQjCPItW-efV0_OU}9`ucb(zlgAWY%UVUYF{O&tA zRm%x;G02N>GHe9;6coh3yuk1WsP-2yyD0+29W;a)qNkk!=CpqdKS7Ba82q4U1%&`W z0I~f3{RbZZAn*;CIz0^}z`g|GU%&q`)UUY;_9ZADfqEGh9(n+F5DO@406qH%=(~eJ z!?@U(!DYcOV2b_?bU=HA4uiju1lU}2C4Pnj*IqMl0@eIMvJW7DSbhP61R4DL^M}FD zSQ5^UvylZBI{z42fj$Sh8{nILKU-(N`90dbjt#BX3wgF*mQl(&ZIFoc;)!_DzE zl4RI^;W;=vBLjc{V)^w4;Q&zS#>dIZV5A^`qA1Z$p5f??*9;rZJZ0c!XTh5Yzx?>a z5M?dL5Me2UB5tB2$iM?Ez`g^cni;9c1PCCO-$)Ml0Ss;xac%}tK6Vt%-+?9FP1M07n5Ul6NKeIT%EE*cfiT_zX|9AOH|RC=U1uj1FE77L3a1+57Jd z4_|);2QOgGWk`pdwCR6YU(5X(O#z5k#XTLttF zX!$=P3ZcKCw1J~O`3I9n5(5YzrhmXh1;e0}^!D3tjPhGrkdr}5gqz_fxISmZi-C0v zgRB@gu)IJmH9=AG4rn$o0idV{2p}d<2?)cCz;gQmFt}fS`iY{M6Ic$Y%kne)02+?0 z9vl7vbiJ0W0JtJTiN+5<7#@B632b>Vqo@Z6Af`W{Vi=1512w(;{EOlE-FGOOC-1w* zu=(N(1~y>&Kvs_pvjf$vI{S=a7O<>921o9^Wq9`$Snn{Sss{)lCUhTwinjSD9>XX_okO~V_@Bj@-bW&ot2CVV!19JvQ zw=yu!)x>xh794*JPOOZ;Z1$h&KSS2y3kK`uz)WGKhakPme5e`taR z)jHQ-eqoq)_#vna1)GJQzySgX(sn|}z!K}^?YH2Xt}aj$n1ug<^U#bq1GwcNAjriE zw;TlW>=hU$M(ZN8%qJ(eF6+J0vzzX{u3DF zPk{OSFfgc>0JGrU8*d=ZXjW!|Mgs&8BSY~n;`%?}b~&UT;N)gwkOH=h1c5at2!Kks zr@%ty=ht5lp8*Rlob7Tn01!Yd#43bD38WSSwHfce`iAI4faE}-0d){503d)^fLQ|= zUJN2wJ99WYhm4R$B&nT4O!Mvl1P~|@76S2Kyor%E_%{%j0t67K@?QdEfSPFyph6AW qfu?e|lo7pFz752+z$n}R5MTg8#v{sqd3^Q&0000F*0zoFfy<)F*48+ z{QCEw;p?CO4F4fMYXt}(mY?5$ae`R9tjr8dz)<*w?BoAPK}ZDn4^;mTXu&@q8{`jW zMn(+%AaPb;Fns>~7sM3=2q2IHAPRxHe~{@bki|d${9|AR#-A`ZD+32GB)|Ro$MEjk zZ-&1>2eGpCGn!Cgxb#eJMW3$-LT!FbKN*9@ypzl4Sa#2LSS z{sub$Ab?mv46p-W9)rXN!=L{kpZy1001B$V{~_Z4k@DNupMMx)ETrI;pMUfjXxU4K zSD$|YLxO`L(oBLuRg8-v#7LCk@tbc92XDRyMh_E;0{{Yu)e}?_nUNcON)@IO==3xjj z7H8Of`4t1>Uq)b>V`BLI^AFf_00G4G6BHLf{2l0!7oWZ}y#D-y;p_L`3_pMUhQt#R z{)L1;fBVItDbB?p$i>3&3z)4Y?YhVC4H%tljQ<%Jfd;cP{bzXf;XA{WJ@>&5lo#e; z5aeNDc=YZYP~9)Ec_6z10*D2~07b!%UyvYS#8!%60pEeCScHca%zp9l2gCiBUw{_> z2O9bhp&J-yH=cY1M%7;iZgyq{VW49_eg6p*hp71jR1Xk9EWdyMfyX~7;5RTIgF*oW zcsN)Xn1IRjE67Jk1sNzh*!bBP*r4$aQV%S38NMU=5+Hz>egOr@!NB~-aPGl-uq8sk zyzizf1`hHcpeO=a0*vFgpMEg-8%u)I#1~*FTmyy%C>J4{0}wzgzyACotAPIl%odj) zePFoz@+*UuG%rJyzb3x zVrX7>6H8lBK28<}O`wA`p^gFp zP>7T)KF{#-!w+!b^cyX}0Ro7H6#xH)T0SApkRi<(VfnSEpBTa?9%GOabJ zVPkmt@h8KPo39y8+8yNhcqM8*w)ChPCAb?o@;Awy`LWBJm$nsc2hAbyVxZIhC9~gqCoCKC^-x)Z8 zDf>4AX>A7>00F$KQplKvm@1{qyvBeV)=_B z1pb3;0a`vGTAv{g$#Ph$W=51AgC8)VUA*^>fe{$|gK^O$&gg6;?VfvUS&hnVf|I#T*haKmai^6l_N%A)wDC`8gQQm05#*hYk+i`@rBo z^9;iWU?n36i~>*v^Bd?eaA$%{01!Y-pw-91BSYDquRxj$Z^sT&89+)Pkb_9F9B&8n9Y6qqvSB4rSq2o>pw!OH zM0S?Lf~x=m2$%*KCIK0sS{l?nmn6_1BC~sp0iFSIGcYb^0t6TUlom10|6q2D00000 LNkvXXu0mjf^?or- literal 0 HcmV?d00001 diff --git a/PatchEmAll-GUI/Resources/Images/License_32x32.png b/PatchEmAll-GUI/Resources/Images/License_32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..854ed974145683d3d3e5e2f6206243076db49e37 GIT binary patch literal 2415 zcmW+&d0dj|7XASFKt;hcg)+h1ux$K*shDgOQd7&!tWoE-h>F@`sYNci04`{aQ|hRh zV`6Ex-U*v&s(VW@TyRNg#?LE#YJ;7Qo7={0)QzZ$dA1*{Z&lwHw(4Gf{K@UrKL?1KBzof6bj{p`VpbX zwS!>>&!AsUK(c@)o&MvHRZ#?@AVX-$;UL{P4Hc^m4Baw5J`hOpDe1Q)usnQP^namG zrn6_>aHF}LgqVgS1Re5>euP}&Ysi~E0%9qZVkLhn*S@{|X`6IGd{*7h-3XeQ zB;M)kflzzEMrXm3dU8UMCWM~57SN1Gr8$P$1BvQtsIZePQq2sUe&){Wa3g@YYmwI$Z~t<-p4q)uRuTxaXCBaC+`;)jtjW)!-_VZB`1sk+;yUYoi@Dfu=bj zoGgaWcU)UY#*qbkB=7&gi>x0g={AqtX`0pNXgaVu;(@^yWv4*Y-079pfTmU@PblAf zLA3N9Z+u)}snIQa%J7`5yxh?PK_yp)ca^HwDHe*gb|i029t3#~zItl{qPGzpo+9$PiKa_e&{p>nfm0$1C@eJC)7PCXDtX=j9 zb0hXwV~So7c?}t)qr%F(wf9m+PlKm}97MqhXwl`1hXlSQ=)+9;pA@Z9nr?!nG%8zQ zNT*r)S^fS(6pk;Lz7WNyGml~!H_n}61dpD+pzfC8amCW~SVUuKZQvSQ54$-4WV@De zqWFk+UlC4>CSMj>96nN9fsWqg=M|k|qAv3Sjrld1BR`moaPX%P5}Yu<*_1aL81|10)#_e7 z9@os$>uNk$J#gJHhQJDL5!gPR+ssj5Pc}hS?&dW6=J{&1;k~DH#Vi>bHzdr_%KhBS zZ$%u6A5I&0k;#UlNb$4(?UYPSGaf#sLyIhpIrIY`{h245x-Pxb{j_dfD~dOn1aiF) z$RhMu?3ijFW*xG9>ZVr`DF^u{APJ2nm^7wu49cGsx4?bL>efu~t4*QJ+J335uMIjr zbX-)wIm)+(uw7COtKNL}3H{(Dd1$8CZnmw=?xxH`&B&OY67~B#=Iu{Hq?1o0xf$cUx`JfuOd-n04vec}!$5 zcG9XOy9K74JMv{B3&UT-d6f~AP4XiYo!IKW$fN?rZ}oTetFe-U-^H}Rj%EkL>xk4W z1N&L-cU;QH(ho+}EBW#lc9P+&<&|Ys&iPCd>r#QmYA0UzC3&zpd$GXLz)MO`X)V<3_y%#WNWmu1E zGpM&SUJBOUxM&ev7Y0)Q#u3NTqO#+lvI)%XpX}5ziai7_6C0eLC~aFZk6h8=MWwgx z?`eIu#iF=u?*(tVV8^k88SKEm3BRmX~Gfo3OZZ4apo6VlGsady0Y%O|1Gw7gKrYzr2tQHs)u z+N>B3SeYwNHGYKF@{Mw$jq=wE-dq(J?$I>3U~~byAGx(DOG;6^JZK3DIYQG=9 zmA$aF6Scc{s1iZcajz4M$6#eGU$}>R)A1?inulDX8M79pNlSG7#Yf33fTl)wU^ z6EWoZBy-kCg&S`fKo(8;3=BayGo?~W=|7M|s?t}H!jajXvUc#qse^!RPxxp6(UqJ9 zq{@|W(ZX8~sMW>uNn1(t*jm)X`xxG0TVOWG$UunB?UGh6YVDGFbt6V272_W5XLr?- z>N8Nm+V6kq#_jdJPdfj<%znbRvs-2L7o#W}S1OVnye+}+9W6Nm8sjmh(iHz1SwG?B zj7d4!L|-g?4>j!XqI)ox${kY-8Od*CgRjt7%65_N`0yHFVU5J9?Cq^K=$lCM!(C+2 zy1Lz!wHe)Wq$;^;Ls;Y>=DwStpu!EB|9$xwG>P2V_p(zg@Lli>v^u|Ot&u{yO=9N^ z@X*NsF_9lXH4rv{YdAFhs$tv+Z^}j1gdr0hP^%s52AhbId`9Vb?A&v!*icOP%UQws z4a)Sq=stA-PIb?IH)VgtP@J%n)s~dOxVlC-In7gyOu<9z dcO$S6aEkIgTNx+WWZam5Apa1*U$${_{|^UiN&f%< literal 0 HcmV?d00001 diff --git a/PatchEmAll-GUI/Resources/Images/LoadDat_16x16.png b/PatchEmAll-GUI/Resources/Images/LoadDat_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..3cb4e5a85edc4afd2908654d7198b6edf426a5d2 GIT binary patch literal 785 zcmV+s1Md8ZP)C6+TlJP-1GOH?|heC9#8gZ8XMLa z42GS}@v-#)sQ_ESlv3Sby<_vSfY9pweCPBcMMqj{&=EF}ElNC?NMe=#d0Q@vL^AL3 z7y|Zx+84?a1_Ib!CE(*0a+v~(B^wFT)S97!BRIFGz(HYJ8gOA->QM)KM+G zcs;WU5vKximlOq!ZOlPeux$y}9KguMW2p8C_dY~u@11YO$h&zwd_M=~?|ri3-2X`| zSrXErd7XN>R>si-Aw;iq;&5XvZ9w7b<4?Ht>xxlC}X4|A)9uwj>DFAcfsbu315-tpgHFKi}z%W$3&1TYv!oKSvbNjGj6j P00000NkvXXu0mjfq(5aG literal 0 HcmV?d00001 diff --git a/PatchEmAll-GUI/Resources/Images/LoadOptions_32x32.png b/PatchEmAll-GUI/Resources/Images/LoadOptions_32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..c7aea4cd45bee2e9cde089f1bc85d3a7648135e3 GIT binary patch literal 2178 zcmV-|2z~d7P)1V5X;Z+zcfJZZMrZ>350(VQ=^rTmi)8tK9NFO4pZ^R(Tud1D1B063&rgVjpj-wDkzYXm zA0QtffWT4k4`}fpMo1p~35>6AfByo5^FLT4IBQ}_6hMD~<-UXC5+d^B&tHc3yv!JC zf!Unl-s{f{Y)niHT&zrBw}1Zihk*r{@BspdT*I00G4E z8|r{pzyC7){QD2;+y5w5gM#kc&%a<%P#kizLwx!D=YNK`pMEfuN9r(evNGXJoWeY; z43$1AaQ>5bKN$8byUg$%82SJK#Pa+19|l;~XT(y>fr1xgVUU#!0~e5f_306(2(L~c=7%lgBTw>ib4Eb ztiWLW#^9tQ3Rb5t&(HAS)fa~N>8BWG?74?oL<5sm<%-J;WlJvtJ@glxEq?+%{tL(k z2p~p@^o{WF{s9#9F_L1KlWq!j;cH-UZ#w&oA<$HsL5K%Yyxw{Fh2hZk*9@_?3gCqJ z;^Pm7@QKHPA@Kod*?)!%7iEU_NIkIJ+b_QuGUuLU*m~|610N?VxU4~n;(q`E#3+)o z?msNnLD}V4lM926EI-Mm;L;-x84`gZz{knL@bUX^hF~*UhIF7qYF1umICJkE13ysw zKSqvX_y-U`OrS&t!k|P2DsU$6ybTPAe;5`#dh?CpJkW=)KmWv#d-M4h!@@%k7+6^u z!AA1|qiFNFrwjqThZ!zD`oO>ov>cSu{$arY0mSl`3ED~kS`N%r46}CJW(c*EV{p+H z1B-tF7MVrBxLbGnDL8Qo0HY$yMTMc-PXq3N`G+4c>^}8`frXzPT&#manU$Rd>?u|j z28O?QS}p(q#PSEI8k8#exY-zdO+*=Fg}4}u6$Ig#F>CP!hQ<5uGjMRTGBB|+Grals zo1q4npxA)yQcqQ|x&UKohI@fu8D0X@%$}>Sz(p*$U}b{%5?|8^Ab=Rzfr;=Z(3hPN zx(sC=swk3|pMGXAYTO4-IM9FsYX=qAGD4gTSDRfJc-c{lUN2x`+bU-8Wwu{s1jw1{S3#J^}jvB`_pj0n-C7I~R%`L0)#S`5<$# zH!Dy@0Ro8SFSrrN$nfkFX5vy5;RZJ5KnaKuRUa^83-EI=i1M&w=y?S!;TV8f7-B9) zfMci!2p|@4*aCgnvHK3gr6-@jL0jpr!XOAtxq85&H3(P+tULS=SRS)N%3e^G0oDuI z4vN4^1`_oh-*cDY88Ac++nHXwD#O{a6u)=#m127rN&U}fv8-T0}HF^n{ER0A3Lb|%K%R> z1cDy~00M}SA%EL{q*f(EgqaM(yeM6a+U*Xo9C!=N?{dPN43cO?^9!K3->fqXr|-Q7 zrVl1k+VuYb0*HwLng+m2QK{)FKjFj|noZD43DJoyw@aw0-t=8;F>1dCz;&_iHz z!8CRZ5J1cfRFcPYh>)l?|wOlfCW+!>sMM8Tf#$96KdJxC2sGUt{Q4 zd!6Cp`|sd(V-|@0@FODe5%f7+&3}LZVnIX!G>$mg7`9!0#jx$-OK{?30A{r(A5pXD zOJEHLN^qNiYBrsJ0a3@nil>u^I}ri|5R0S$=bh&teyD&Afpy8)keb#k{~4A8TR@z^ z!bgych2h@Y?+hm&eS)NRLOmEpf&$k80*Enf-3{-#C!enV`{y4gr~pALDiQ6nUyz0b zIJ!WVGm_JNLdgZ+fj9^tfS7=_;MS=@8X;PeJm-N8h+j-hjQ=n&3)4R)F4lic+-(1t zIDs@X(?6{0&@ix{@s9x&gL)>QzTkNv4gtDn2S9)U07{Z*JAX`15C8xG07*qoM6N<$ Ef+wcs$^ZZW literal 0 HcmV?d00001 diff --git a/PatchEmAll-GUI/Resources/Images/LoadPPD_16x16.png b/PatchEmAll-GUI/Resources/Images/LoadPPD_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..fd747d12893d499fb35a437cc653977f43aca6e6 GIT binary patch literal 683 zcmV;c0#yBpP)eRb6>ui6pKo`s77(&MqLSh;KKd_aZy*UL_s$yE?fvAsQ3rEsS9_4Xu*%Y zh+T9M#7!v(BB3>iN!qkYn)hBl-kb5xd$Bc*N(Y9ykGbc}x#!*|ZqL`QNhuykfwaKx zS7^}I+B_DQ-+V7;NsedK?%_7mV}{K@uTr(X0P4Qvs@e;81~%-8u0TWZ$E~S6_UD`^`A5BjnU5tX#6(GEG_0fUb~RP&F0@bB=miWm=rKv! zkvKj%f&*izh+wqh;!C9gz5)q>1ed!vp|I8oK@}#b7%R!JRDsZ{a1{J*xFy%)#Epi} z1aXc%%Y0fhNHqN@iTcTg2_&;a>uu9GmYbZ{C-~D1>Ur%b=vi0ntDM|P5Olar5CkE- zTFbH{GKe2=`dy=dfrdecCvrG_bRWDn*F^%kw6jGpmQCWqxqK97k_v^dH57j~nM;Bs z*K0zF76UJy$z%HL!J)n%naJYpz4KB0x=_N0#R?=51glW$#PnT3GSlj6%q^_I3ZFVQ z{?`F|IJblwv!CE{d5X&rQuq`q6&s~u10TIy!naiyPp_UtE)`qrb^=^~_8HIL7lD*x zf%x4cGNcBdaR@KwSFl`b975Ip9AQJuoSt*#G}vDMKJ@HBcx5Ab?nYe*4uAWQc$i za4<6gF(Wp;6a$!j6o7yK+9QKnHc{5hPaZDY5#x* z0TILRzl5F2&cevR%)|(G0FcSR0(8I^AOn9`xegP#wGy~KDe?hJU8vgqqFl2yYUw|6K_}CcA z+?2tVgTUt>zlln%KY@1q{_%%_iG_*bAJ_r^;0^!?AQlh*{5gG*kRlc76UjX_a_6K?R|KY!t&g%7;_@{{4k$8QXRoU9BSEKFcMAdiDW4_mR$6p3@NgjrY(OL{Lf*dGi%-=u%h{~?NfB#|l3`_&R z|NH@`13oquhTp(M_zM`i00G4E6Bs`r2fPMa{^RdIu#dqR25Py!JU_#LaS+Qv zije_``yCj4L^%K$svvuq8UBN9`1bn`+%|v!V)^y^FGhI^O7oyRD=)&qFl*mEtcA^Q zpaWTf@yW`}NR$IW_Ap_oBme@4<=3CT7zHNCLU|D`hQ<(W1~wKPc?@U<8!-Pd5)lG_ zfKm1H4=Az!$EYL#0*K`|76*U|8<052a&{Ibit7PTXo1oJ3nOMN1rR`39q=2P4Pnv# z6_{er-G4{4g&=*pviuA}JdlL@_wQe@hai4IbpSvBv0zKb|Gp(lRnY>_RmcAb?o@Fk*KAviR%IzZjODe2lZ@g^}uki6GEOia`mO zlfY?!0pg)QSV90GfUr8?A0rcr1K5GtO0kFIWnu(dE0Ro8SKb8<+Kud&_0Jgj2Z?1AvMa+ zztrg?fyx9>{Qt-7*8v0&C=p%+(k2*59OQE@CI+ek%n*125J12d1!FM~e?rMB^ud2X zb^`8|o00000 LNkvXXu0mjf@%U!q literal 0 HcmV?d00001 diff --git a/PatchEmAll-GUI/Resources/Images/Options_32x32.png b/PatchEmAll-GUI/Resources/Images/Options_32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..1500302b63a259f1aa730cf5babe672306e9919d GIT binary patch literal 2025 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 literal 0 HcmV?d00001 diff --git a/PatchEmAll-GUI/Resources/Images/RemoveAllPrepatches_16x16.png b/PatchEmAll-GUI/Resources/Images/RemoveAllPrepatches_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..5577826e07c698fec6f3c9312ccb0237a044ec23 GIT binary patch literal 658 zcmV;D0&V??P)b^nQqqANN=gk3SNJrqxM%!i+! z%a)(4bN-?3_s#X?wn`NSfvNs2HkEO`MAc7^^;gX zy^IctI;<#aj-(oQFC0f%xv-wU{f$>2dPv#|17n@u8jMhy0zI-n*f0S+^*QrR$*OrZ z%(Jw0w4;fspucBBd=u~dEdKJ`vH@PqBA5LU zp4c)}cl)tHC79++SGAwX%!cF8%#>0Wfz$XoD0mYUyj*kBAgx-H82XNBQI5|eF+A66>df_)487$um@v$ zE1SmcX<VdR2DmxaVyq}IW3@+z~4LR^u=50BHAvTQJl zGfUl3ge+DFlbi`$*~0zmxCpmY$OLRy%TwqxhC0ItA6)q64NP9m1g+3vf`XMWj*(>+ zhr65D+u5juzkPnk{mUmjEkRkFz(gtbw_7+l*s4U(=}mC=^ac@VNR!Xpay4e4G`BFD zu_XCEuIb^1W%a(&N(7IuJ;yWK&nbd%1tC|EhkaS_98;~V6`_~N*Xw7i8vVmC^d`A$vgI1IG8%up=dt)tFp1~uV)mBK0nRAAQv`^M~6n> z%rYK?vkxJj!;{i!lx)1{LYMX~Oxg4)0Arj(XIb3^X7r#?Ao9ci=DOT*>|L0aJJ>BnW9rk*Qs+BZOO9-)sMY-M& zu^?ZPH?(IxPt6>9$drP=i9{mYpB$vhv7@?ViWMATvB7Pp)AbCuwh!Oa(%f7(K0B)q zDlP)NYyx;Lu@e$QME6vyV$)A~v#`T5NEQI8FWq4&(v`I98vm$8^7Rj!DA?970R~qN zd`;hGmkq*tSAy~++uM%qakBUonvOWt=`X_$BxjyK$I+f`EOa>Tz`FcGtQzv=zwPXl zE1W32lEn1DVcm8bO@^Wa){Bi>32|4B$UIIONbrNaO(ck!6bdgiJpBnyYafJ}=aMD% zc}HyAww53n>NHphB{Vj`tg({c0l_;-S_O#6J%*lEe@4-+;nP~PY+0-g5J;k=7Yg~* z$==^ePHu=%Z`(^#*DZC#B_I2AX*@8>&$V0xi1Z5uEC$0$F7aWGVsv&V8NOu}WKf)e zCKsXG$uefKWLV!ekFfLy=T@mGf#g2zd4G|lWNx>prDuw2_&NA+?;^la$Wc-3Z!A8( zaa2XfoQ-9;!;<$UMl}c+{lur8aJJMS!~7Do$;xcHYhohhuiIkveTC~x&pmT$Ou#Rr z^C5~k;nx&o$TkMuOj$BXrziJ92oO3P(_6--^hmKB^8silEqr9%x4an#rO9$AW!b1r zoJ!u>!@g{Q6KiDOF;wl8(!806pVgPE4bf0c)q1E(aOl0LxcJzoDPUr$_thU(VjV@Alzze2r*oM3IiA0XTj(_$myrE5R>J`FwnV z4>hB`myOS!C>wWha+XNh_4IS95F|Pn#ou?nnq|TImiQDvVQ*&1(MP`lttn6t{)_fq zk@bu3g~aYAu|*(G+x6+4!AEV)8lcGl`2xzmhvpvuF$~3GR{~QwhIbq5QNdB5u{j9F zxob%u;5!91#acg0uM{xjMx2f%pY}~Hilo}wR_gX3kM2ai%NFLIb{yqdSeZ9~Y*Vv( z+WaJ*w#R>eyopp1-+s^5Fur9typrIA)F~#I;=+ug^KXwr)UT`jz9>+HI$GmVrh1m8g#PybqQDI}wpwA=zSb(n=YR0&-MrYTXr%r-m%qqt4g`;5xkD`a`bgZ$ zkg>LfF*{9L%LS5;> zr|Rp+5=fktzL2rGe#istgi5)vWq4xED>Je^sf^LZ3?SNzZqj5kJ?184X)n{!EJWa3ynpO(uWzmI+iU%P`}f;xH}Er8 zySvVJ1pvT3H6>}SBh%*sk9C}td-r~FB&TBD*E|6D{mEdKfaSRRRIL(Jt=l24+MQof z1n@*V3X15d+w+Ty))wW9_LSc(iU$CEcxns9f1xCWFx154ewnpEB6;0k$e#%sx!YF6=D_RQdFKj1(b8RK#$dG*8{J%ED;A{DU?73N8MvS zlA=d3;pogLt@g)x5s7sK4s<7T

JjD3gK;Co)7f@VM8QOz81G=K}gVH@b{V0B#&< zXgX>7Lzt|PqIajvN;T@kWo8RowVRrVOT4@K2k3nd`czhHuIgzi*PDs)v*4(nbR6VF z(s$F;KCLo>*@n_|Lb^?vgp=)?f!-`Aiw;y|ho)l58_M9QBlm8?32pab_R*Ea=1(&b zP@KU-Ehm_vpJ2Mo@!5HoCIWd`d?3!qF|2Ro5Aj}pDI;-o_l$`q7GlmTc zUTPh5K5_c&b!x~a5jF7Rx4jbdKf4t|E)m6GUH;F<%qh8#C&>NQ0qUe%6&7M9`P4vO zGEaG)#k*eXGRq0;L5t1q85xu`5Z?LX9vrVh0-Z$8Pko+&#~meW?x@DzEx;zXQ)EEF z%=8qIna^Zd<;#sh2E(|9Zkr}j7o+w}7_1l}42$x`l82;%>y}SsU6Z$v3V?V|5Vd2{&j`7d9MrC#7#k2ujI550 zhu4r~2}W&a1U!?zB+>8QoeAeRC*jr3ig{U!J#oG_XHJ}{nBIv5_b??uWi5bnV|oK* zhT+FKEzSNxyM<~#{N)-vF+9$Zw6Xn16Z!tLwxgymG|7u1BT^(roW<+;dDaACA>VFC ziRlgaswI3vo!Vy8Pkf13gp+kp=rTbKYS-cQmPWyMKM!g8+JkNnw1?|(OGi1nhq*g^ zPT!m*ED;&B-9u8DqHwv9W@zN7?M$ou-HdBC?y5sgf*MS%Uu+FeJ2M@$Xj=uK#}bgX zuj?NdH_LCmKONdlop(+tMhc4x%viXhd3hOPNbsHT?u6{%qelZADfNjR*-N6!S{-E; zD%60!j-xSt^*N_7MYSHOo_&jBUa&__l=o<&>L+{H`>dZ2n`j0DOSn@Z$laqLa_z+S zZZ5$*MNG%b(o)+0%xa&HZ_+pz0KU3O*RXS;dfaC}8mT9ktI~H%jV&_Bw?F24xU0BEDxdgB! zr-G{J0k5vTL@o*Go_K@^YF;sPuW!?+ze2T=B z!jt}a$P97F&b;t_X<@a^go9!XnD#nCs0K+TWV^9+mF^{Yz=^~@oGOBt@2G=kt9>#C zlYCxo_o99hF&GllU#qc4KL)_NH}7}$ItFv(SmB;ea+79kH{3$GqG8Ehd>7MgZSB3z z)B&Z`R)l~GPcqwy4MwJnOOr+Sf#SI_L2MVNVlox~ef=5ki0=y4vh%-eQV@kwwge#i zbP@-<6cF$^Xa2u~9VVBB_-)=C z4eNQv5LF}Y@7S&&Lk47d$6}@#`iaTO&za;B*ply{P8n*z;7rPIIlHHo#djmpjstt=Rpko3Rm_%CXxPOUNw@vVgih z7Hz}i5o`5Qeu+&_r{C)*ZS{8_V06k$9&pSWm0v5Oz1ZB~vF(P}skuJ4Fm{I~`2~-I z!_QNMZKl$TQF+>*0*+EkV*W&`abaFOkIoRSj>%3|YS(;&4?_v9Zb_lL+1A-lo!p_f43}fM?>84K@-Xzu$G%J^o1q=qEDN)bY|vT z?4%S>f)A;f9jn*@YqkQ88B-lApzX8USIaRcYPbroX0ABs z6y+9RB0%}Lcn68MI>N67%o0~@oJ5B>fyh;_-|M)Kow^E43GIluD6j)f&i4F=!vj-o z_9LPG@ugYazgSA_V_$>|s~Lo>U;{t@V1Xo|kRID}ra*Cxo9EKU20$37qp()R$RpT} P?E*+$m6>!o0XgtLN`15t literal 0 HcmV?d00001 diff --git a/PatchEmAll-GUI/Resources/Images/SavePPD_16x16.png b/PatchEmAll-GUI/Resources/Images/SavePPD_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..0df8eb96175a7f92a5a885c6d36b8550d3d12afb GIT binary patch literal 677 zcmV;W0$TlvP)E3vT>L_{>?7g*Q`vCzUwu(a|I zXrmw^m`2eivczC?W;f1Gc4pp(_s!16oi$({%y7Byob&EI_dR+0b#Oxnw!(p702T*W zw)-`;HmfoS;`_rMs}BjbFVHQvk4UWSL|fU1ayy8$UzNxTWDjhJohp;Z70JQaUr|Os zMcaT2$vTo@n&VQMDDG#bK`is zx`=bLqfkKvO*~6HspAAH(>ODK7&n(@@uks%A}>xH8AFxI%pFe@);F5)$%lIv=CHN3 zgHPX@5abDCm!AD1%((Ayq?v&w=Oq!>*Dhjyx}FPsB=X5yFR4!hPB@P|NR@W(1d`K; z+{)a1Xv59RDf7PJyHHY2(VnFZH*zk!)k#(aJ-nv!oj~dOQ0Q`o1UN5WD`|=f_HG{y zIM4O-iRg09bt47^ge=?53|!9Z6LzttoVA)-C?6=P@3JKM;Cj9C2mHsP2POp+`~RPT6-XHYS!;np!2kio z^5fgDNkE1GNC77^69YRl#F;3Xso?-d2>0i|{|w*%`~!(_1Mvia0Al(1{g)m{f*WW# zD=QPj-`|*KQwxCH1oHkbpaZ@FF_5VN5I`UY0D~RqYc^(vpMM!aK}1skiee_9C4YYY zW%viA0Ro8S*N@)}OhD1!|Nk-kWhCAKj0DmfUX4IYeghrw2S@`15YPd?AP!()0n-o% z{D&u5WD7uYV44BK_>bl@MyMVL8{KgbGhq(+_45zIA7FX_2tYR(qyPYdKyc0a|9eZY zRs-o0q9}_x2kmnjlpTwLJ^<8U4CYQ!z?pkN?9Y!$Est3|D~u-TQHR}62mnifBY;?b z16}eDDES8{0iu8Y{Rd8^zkn8lEd7s^fe~TPh&vnn|BvQt25`u-0&^D^3o|g6F@eQl zApj6S;1B@0@E1`0)33h_KmPoM1r}BF;SV7G48$BPObmRiEDXPY{bu<6_df$b0I~e~ z4GDo)zk!zj{RasqEGZEjv`{<#VUGczPZ5EDEir>~+s|Kr7=AGS0p|cvA_NE^mOns& zKXCIH8U6xIXJbM2Kgh6OK*zBHgYWM@h$C5;QPqI-fuf8VsOAq;EhAc1`3X!+OyKDL z0}msB00M@f|oMp^Uu$sTXc*bqUuRjnq|DX;42q2a}NDg4asD}{% zTn+%${{4%)%=-(B`~M&{|Ndc>2kHFt7gz#7MyOg$zy+-E{zA=Qgqi~o zKrDZu3{VmI4H&!)8?G^EOY@=Sg8vLFPd#B^117+0FTOCeY`($3$H9uC<|{BeUwHb7 zfsL1qVg0#h3|t(Lx&;~Be))yrBQSk{90&^qfB<6T%-HxJxit9>tQ{dG4O$2QUC$0I zN z^)O%VZ8C%iKmf6z6xd9#xS^#3P|XJjAQsdrixGPVgR1RfQ~(e_zz|@<)2N`80}$o| z1Q2EjFwi#y00L;h9RLtOphS2VNGlJJ10Dec5UAZ$2E@PNjXwHeU>BIN3Lt=h4q#XZ s424)Az7NiZ^udpTI0 + + + + \ No newline at end of file diff --git a/PatchEmAll-Installer/PatchEmAll-Installer.vdproj b/PatchEmAll-Installer/PatchEmAll-Installer.vdproj new file mode 100644 index 0000000..51c69c9 --- /dev/null +++ b/PatchEmAll-Installer/PatchEmAll-Installer.vdproj @@ -0,0 +1,2075 @@ +"DeployProject" +{ +"VSVersion" = "3:800" +"ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}" +"IsWebType" = "8:FALSE" +"ProjectName" = "8:PatchEmAll-Installer" +"LanguageId" = "3:1033" +"CodePage" = "3:1252" +"UILanguageId" = "3:1033" +"SccProjectName" = "8:" +"SccLocalPath" = "8:" +"SccAuxPath" = "8:" +"SccProvider" = "8:" + "Hierarchy" + { + "Entry" + { + "MsmKey" = "8:_0C7AB05845A54A7CB56FAE20E23B70BF" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_1238A302B48A4747A9EC35BF56ACE498" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_15A0FD2F6BA049F3915CBBD17C523141" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_237AD22737B84115823F0922EF706E13" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_2632341F85074C25A9C9EE70B9469B2E" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_2707210B6B404D188D331462E589DEA3" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_34BA3C7060F545EC838E42C1D82482DF" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_43CA9BB90CB54FF5ABD77DBDD47F5974" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_4478536FC74C43A5997BE7E70E836B68" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_4668ED80A4E24EB1A4C8CFADF0DEE3B3" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_4C0F2A0B4C9B0B74687ADB49ADF7A58C" + "OwnerKey" = "8:_15A0FD2F6BA049F3915CBBD17C523141" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_4C0F2A0B4C9B0B74687ADB49ADF7A58C" + "OwnerKey" = "8:_65A646FA3C0C48A8ABEFEB2EBEE1A6A2" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_54AF83ED79D14F9E9C7975BBF0D0E054" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_5589F0FF22574C38A113C425EA50D1EA" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_5F40C9E995D0415CA195AA380914F0E0" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_65A646FA3C0C48A8ABEFEB2EBEE1A6A2" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_66191ECF36E4496DB06DAFBFE5B34540" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_69CFAB0A4F334B9980F94A9AE4FEE92F" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_79B6E1C4D4A540E2A89D389C3796E88A" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_909AB891358C4C678135A3668F899C4B" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_90A294B866D74A9DAF040B059184F185" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_9A271A34E738C91E8FBEEAC7360D2414" + "OwnerKey" = "8:_15A0FD2F6BA049F3915CBBD17C523141" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_9E2EE2F32BD34CE2AE69B3844A9F9224" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A38602EE4197447197AB51F40BF978F5" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A431E1E02EEF4AEF8FDFD9D2DDE93DA1" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_B73D6796D10548F78BCE031B591BC194" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_C06CD75E14004FD48EB8BE8C14E14038" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_C1B5A45ECA12423AA4A4C067191C3059" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_C1BB9591FECB48F9A3EF13935AF8CF6D" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_C2F397A0651D41988A0BE5B00B16B3A9" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_C46C53B802494B32BECC3B57D786E7E2" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_DB34A797B5EE43D6A863DCE4C4C42105" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_DC7D096CB2AF1A4F59D1E92FCA037B04" + "OwnerKey" = "8:_15A0FD2F6BA049F3915CBBD17C523141" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_DC7D096CB2AF1A4F59D1E92FCA037B04" + "OwnerKey" = "8:_65A646FA3C0C48A8ABEFEB2EBEE1A6A2" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_DC7D096CB2AF1A4F59D1E92FCA037B04" + "OwnerKey" = "8:_4C0F2A0B4C9B0B74687ADB49ADF7A58C" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_E872733E2D0754533283823B580397E7" + "OwnerKey" = "8:_15A0FD2F6BA049F3915CBBD17C523141" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_E872733E2D0754533283823B580397E7" + "OwnerKey" = "8:_65A646FA3C0C48A8ABEFEB2EBEE1A6A2" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_E872733E2D0754533283823B580397E7" + "OwnerKey" = "8:_4C0F2A0B4C9B0B74687ADB49ADF7A58C" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_E872733E2D0754533283823B580397E7" + "OwnerKey" = "8:_DC7D096CB2AF1A4F59D1E92FCA037B04" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_E872733E2D0754533283823B580397E7" + "OwnerKey" = "8:_9A271A34E738C91E8FBEEAC7360D2414" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_EB9FBC4EC89C4ACEA5450F20934294DF" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_F80259DE12B14922AA4352C4C56BA422" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_15A0FD2F6BA049F3915CBBD17C523141" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_65A646FA3C0C48A8ABEFEB2EBEE1A6A2" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_4C0F2A0B4C9B0B74687ADB49ADF7A58C" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_DC7D096CB2AF1A4F59D1E92FCA037B04" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_9A271A34E738C91E8FBEEAC7360D2414" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_E872733E2D0754533283823B580397E7" + "MsmSig" = "8:_UNDEFINED" + } + } + "Configurations" + { + "Debug" + { + "DisplayName" = "8:Debug" + "IsDebugOnly" = "11:TRUE" + "IsReleaseOnly" = "11:FALSE" + "OutputFilename" = "8:bin\\Debug\\PatchEmAll-Installer.msi" + "PackageFilesAs" = "3:2" + "PackageFileSize" = "3:-2147483648" + "CabType" = "3:1" + "Compression" = "3:2" + "SignOutput" = "11:FALSE" + "CertificateFile" = "8:" + "PrivateKeyFile" = "8:" + "TimeStampServer" = "8:" + "InstallerBootstrapper" = "3:2" + "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}" + { + "Enabled" = "11:TRUE" + "PromptEnabled" = "11:TRUE" + "PrerequisitesLocation" = "2:1" + "Url" = "8:" + "ComponentsUrl" = "8:" + "Items" + { + "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.8" + { + "Name" = "8:Microsoft .NET Framework 4.8 (x86 and x64)" + "ProductCode" = "8:.NETFramework,Version=v4.8" + } + } + } + } + "Release" + { + "DisplayName" = "8:Release" + "IsDebugOnly" = "11:FALSE" + "IsReleaseOnly" = "11:TRUE" + "OutputFilename" = "8:bin\\Release\\PatchEmAll-Installer.msi" + "PackageFilesAs" = "3:2" + "PackageFileSize" = "3:-2147483648" + "CabType" = "3:1" + "Compression" = "3:2" + "SignOutput" = "11:FALSE" + "CertificateFile" = "8:" + "PrivateKeyFile" = "8:" + "TimeStampServer" = "8:" + "InstallerBootstrapper" = "3:2" + "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}" + { + "Enabled" = "11:TRUE" + "PromptEnabled" = "11:TRUE" + "PrerequisitesLocation" = "2:1" + "Url" = "8:" + "ComponentsUrl" = "8:" + "Items" + { + "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.8" + { + "Name" = "8:Microsoft .NET Framework 4.8 (x86 and x64)" + "ProductCode" = "8:.NETFramework,Version=v4.8" + } + } + } + } + } + "Deployable" + { + "CustomAction" + { + } + "DefaultFeature" + { + "Name" = "8:DefaultFeature" + "Title" = "8:" + "Description" = "8:" + } + "ExternalPersistence" + { + "LaunchCondition" + { + "{A06ECF26-33A3-4562-8140-9B0E340D4F24}:_FBBD270E7B3E45F4A9CBA7351EB58AB3" + { + "Name" = "8:.NET Framework" + "Message" = "8:[VSDNETMSG]" + "FrameworkVersion" = "8:.NETFramework,Version=v4.8" + "AllowLaterVersions" = "11:FALSE" + "InstallUrl" = "8:http://go.microsoft.com/fwlink/?LinkId=863262" + } + } + } + "File" + { + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_0C7AB05845A54A7CB56FAE20E23B70BF" + { + "SourcePath" = "8:..\\PatchEmAll-CLI\\Resources\\BASHes\\PatchEmAll-Print-License.sh" + "TargetName" = "8:PatchEmAll-Print-License.sh" + "Tag" = "8:" + "Folder" = "8:_709E7A005A2442DF81FC7B342DAB0A42" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_1238A302B48A4747A9EC35BF56ACE498" + { + "SourcePath" = "8:..\\PatchEmAll-CLI\\Resources\\BASHes\\PatchEmAll-Print-Donation-Info.sh" + "TargetName" = "8:PatchEmAll-Print-Donation-Info.sh" + "Tag" = "8:" + "Folder" = "8:_709E7A005A2442DF81FC7B342DAB0A42" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_237AD22737B84115823F0922EF706E13" + { + "SourcePath" = "8:..\\PatchEmAll-CLI\\Resources\\Batches\\PatchEmAll-Print-Help.bat" + "TargetName" = "8:PatchEmAll-Print-Help.bat" + "Tag" = "8:" + "Folder" = "8:_4E7A381D281F45B4B99E6B600695A444" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_2632341F85074C25A9C9EE70B9469B2E" + { + "SourcePath" = "8:..\\PatchEmAll\\Resources\\Docs\\PatchEmAll-LICENSE.txt" + "TargetName" = "8:PatchEmAll-LICENSE.txt" + "Tag" = "8:" + "Folder" = "8:_1E9C5B74D23D414287FAF5C9C81D04FD" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_2707210B6B404D188D331462E589DEA3" + { + "SourcePath" = "8:..\\PatchEmAll\\Resources\\Docs\\PatchEmAll-LICENSE.rtf" + "TargetName" = "8:PatchEmAll-LICENSE.rtf" + "Tag" = "8:" + "Folder" = "8:_1E9C5B74D23D414287FAF5C9C81D04FD" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_34BA3C7060F545EC838E42C1D82482DF" + { + "SourcePath" = "8:..\\PatchEmAll-CLI\\Resources\\Batches\\PatchEmAll-Build-ROMs.bat" + "TargetName" = "8:PatchEmAll-Build-ROMs.bat" + "Tag" = "8:" + "Folder" = "8:_4E7A381D281F45B4B99E6B600695A444" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_43CA9BB90CB54FF5ABD77DBDD47F5974" + { + "SourcePath" = "8:..\\PatchEmAll-CLI\\Resources\\BASHes\\put your bash files in this directory.txt" + "TargetName" = "8:put your bash files in this directory.txt" + "Tag" = "8:" + "Folder" = "8:_709E7A005A2442DF81FC7B342DAB0A42" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_4478536FC74C43A5997BE7E70E836B68" + { + "SourcePath" = "8:..\\PatchEmAll\\Resources\\Docs\\PatchEmAll-HELP-CMD.txt" + "TargetName" = "8:PatchEmAll-HELP-CMD.txt" + "Tag" = "8:" + "Folder" = "8:_1E9C5B74D23D414287FAF5C9C81D04FD" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_4668ED80A4E24EB1A4C8CFADF0DEE3B3" + { + "SourcePath" = "8:..\\PatchEmAll-CLI\\Resources\\Batches\\PatchEmAll-Save-Options.bat" + "TargetName" = "8:PatchEmAll-Save-Options.bat" + "Tag" = "8:" + "Folder" = "8:_4E7A381D281F45B4B99E6B600695A444" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_4C0F2A0B4C9B0B74687ADB49ADF7A58C" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:PatchEmAll, Version=1.5.6.0, Culture=neutral, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_4C0F2A0B4C9B0B74687ADB49ADF7A58C" + { + "Name" = "8:PatchEmAll.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:PatchEmAll.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_6FBC65191EB34C8EA10C20A6AC7DC2B9" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_54AF83ED79D14F9E9C7975BBF0D0E054" + { + "SourcePath" = "8:..\\PatchEmAll-CLI\\Resources\\Batches\\PatchEmAll-Build-Patches-Dat.bat" + "TargetName" = "8:PatchEmAll-Build-Patches-Dat.bat" + "Tag" = "8:" + "Folder" = "8:_4E7A381D281F45B4B99E6B600695A444" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_5589F0FF22574C38A113C425EA50D1EA" + { + "SourcePath" = "8:..\\PatchEmAll-CLI\\Resources\\BASHes\\PatchEmAll-Build-Patches-Dat.sh" + "TargetName" = "8:PatchEmAll-Build-Patches-Dat.sh" + "Tag" = "8:" + "Folder" = "8:_709E7A005A2442DF81FC7B342DAB0A42" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_5F40C9E995D0415CA195AA380914F0E0" + { + "SourcePath" = "8:..\\PatchEmAll\\Resources\\Docs\\PatchEmAll-HELP.txt" + "TargetName" = "8:PatchEmAll-HELP.txt" + "Tag" = "8:" + "Folder" = "8:_1E9C5B74D23D414287FAF5C9C81D04FD" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_66191ECF36E4496DB06DAFBFE5B34540" + { + "SourcePath" = "8:..\\PatchEmAll-CLI\\Resources\\Batches\\PatchEmAll-Print-Version.bat" + "TargetName" = "8:PatchEmAll-Print-Version.bat" + "Tag" = "8:" + "Folder" = "8:_4E7A381D281F45B4B99E6B600695A444" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_69CFAB0A4F334B9980F94A9AE4FEE92F" + { + "SourcePath" = "8:..\\PatchEmAll-CLI\\Resources\\Batches\\PatchEmAll-Print-Donation-Info.bat" + "TargetName" = "8:PatchEmAll-Print-Donation-Info.bat" + "Tag" = "8:" + "Folder" = "8:_4E7A381D281F45B4B99E6B600695A444" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_79B6E1C4D4A540E2A89D389C3796E88A" + { + "SourcePath" = "8:..\\PatchEmAll\\Resources\\Output\\Dats\\put your dats in this directory.txt" + "TargetName" = "8:put your dats in this directory.txt" + "Tag" = "8:" + "Folder" = "8:_17EB6B19F9924AE1A7EF2EDF462F697E" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_909AB891358C4C678135A3668F899C4B" + { + "SourcePath" = "8:..\\PatchEmAll-CLI\\Resources\\BASHes\\PatchEmAll-Print-Version.sh" + "TargetName" = "8:PatchEmAll-Print-Version.sh" + "Tag" = "8:" + "Folder" = "8:_709E7A005A2442DF81FC7B342DAB0A42" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_90A294B866D74A9DAF040B059184F185" + { + "SourcePath" = "8:..\\PatchEmAll\\Resources\\Output\\Logs\\put your logs in this directory.txt" + "TargetName" = "8:put your logs in this directory.txt" + "Tag" = "8:" + "Folder" = "8:_9F7299131CFF403197C2C05F4B00CBC5" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_9A271A34E738C91E8FBEEAC7360D2414" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:Serilog.Sinks.Console, Version=4.1.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_9A271A34E738C91E8FBEEAC7360D2414" + { + "Name" = "8:Serilog.Sinks.Console.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:Serilog.Sinks.Console.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_6FBC65191EB34C8EA10C20A6AC7DC2B9" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_9E2EE2F32BD34CE2AE69B3844A9F9224" + { + "SourcePath" = "8:..\\PatchEmAll-CLI\\Resources\\BASHes\\PatchEmAll-Build-ROMs.sh" + "TargetName" = "8:PatchEmAll-Build-ROMs.sh" + "Tag" = "8:" + "Folder" = "8:_709E7A005A2442DF81FC7B342DAB0A42" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_A38602EE4197447197AB51F40BF978F5" + { + "SourcePath" = "8:..\\PatchEmAll-CLI\\Resources\\Batches\\PatchEmAll-Print-License.bat" + "TargetName" = "8:PatchEmAll-Print-License.bat" + "Tag" = "8:" + "Folder" = "8:_4E7A381D281F45B4B99E6B600695A444" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_A431E1E02EEF4AEF8FDFD9D2DDE93DA1" + { + "SourcePath" = "8:..\\PatchEmAll-CLI\\Resources\\Batches\\put your batch files in this directory.txt" + "TargetName" = "8:put your batch files in this directory.txt" + "Tag" = "8:" + "Folder" = "8:_4E7A381D281F45B4B99E6B600695A444" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_B73D6796D10548F78BCE031B591BC194" + { + "SourcePath" = "8:..\\PatchEmAll\\Resources\\Output\\Xdelta\\put your xdelta files in this directory.txt" + "TargetName" = "8:put your xdelta files in this directory.txt" + "Tag" = "8:" + "Folder" = "8:_0C0590302E5149B1AF70EE13BE19753F" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_C06CD75E14004FD48EB8BE8C14E14038" + { + "SourcePath" = "8:..\\PatchEmAll-CLI\\Resources\\BASHes\\PatchEmAll-Build-Patches.sh" + "TargetName" = "8:PatchEmAll-Build-Patches.sh" + "Tag" = "8:" + "Folder" = "8:_709E7A005A2442DF81FC7B342DAB0A42" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_C1B5A45ECA12423AA4A4C067191C3059" + { + "SourcePath" = "8:..\\PatchEmAll\\Resources\\Output\\ROMs\\put your roms in this directory.txt" + "TargetName" = "8:put your roms in this directory.txt" + "Tag" = "8:" + "Folder" = "8:_45AA59F4FB5D42D5B6F2FA53CD026035" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_C1BB9591FECB48F9A3EF13935AF8CF6D" + { + "SourcePath" = "8:..\\PatchEmAll\\Resources\\Icons\\PatchEmAll.ico" + "TargetName" = "8:PatchEmAll.ico" + "Tag" = "8:" + "Folder" = "8:_6FBC65191EB34C8EA10C20A6AC7DC2B9" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_C2F397A0651D41988A0BE5B00B16B3A9" + { + "SourcePath" = "8:..\\PatchEmAll-CLI\\Resources\\Batches\\PatchEmAll-Build-Patches.bat" + "TargetName" = "8:PatchEmAll-Build-Patches.bat" + "Tag" = "8:" + "Folder" = "8:_4E7A381D281F45B4B99E6B600695A444" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_C46C53B802494B32BECC3B57D786E7E2" + { + "SourcePath" = "8:..\\PatchEmAll-CLI\\Resources\\BASHes\\PatchEmAll-Print-Help.sh" + "TargetName" = "8:PatchEmAll-Print-Help.sh" + "Tag" = "8:" + "Folder" = "8:_709E7A005A2442DF81FC7B342DAB0A42" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_DB34A797B5EE43D6A863DCE4C4C42105" + { + "SourcePath" = "8:..\\PatchEmAll\\Resources\\Output\\Patches\\put your patches in this directory.txt" + "TargetName" = "8:put your patches in this directory.txt" + "Tag" = "8:" + "Folder" = "8:_DC2D2CC079E44828B5E76AF6C255C7F5" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_DC7D096CB2AF1A4F59D1E92FCA037B04" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:Serilog.Sinks.LogEmAll, Version=0.0.6.0, Culture=neutral, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_DC7D096CB2AF1A4F59D1E92FCA037B04" + { + "Name" = "8:Serilog.Sinks.LogEmAll.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:Serilog.Sinks.LogEmAll.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_6FBC65191EB34C8EA10C20A6AC7DC2B9" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_E872733E2D0754533283823B580397E7" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:Serilog, Version=2.0.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_E872733E2D0754533283823B580397E7" + { + "Name" = "8:Serilog.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:Serilog.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_6FBC65191EB34C8EA10C20A6AC7DC2B9" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_EB9FBC4EC89C4ACEA5450F20934294DF" + { + "SourcePath" = "8:..\\PatchEmAll\\Resources\\Output\\Options\\put your options files in this directory.txt" + "TargetName" = "8:put your options files in this directory.txt" + "Tag" = "8:" + "Folder" = "8:_986D64EDA5B24CA99C28BAC3CD24F601" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_F80259DE12B14922AA4352C4C56BA422" + { + "SourcePath" = "8:..\\PatchEmAll-CLI\\Resources\\BASHes\\PatchEmAll-Save-Options.sh" + "TargetName" = "8:PatchEmAll-Save-Options.sh" + "Tag" = "8:" + "Folder" = "8:_709E7A005A2442DF81FC7B342DAB0A42" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + } + "FileType" + { + } + "Folder" + { + "{1525181F-901A-416C-8A58-119130FE478E}:_3601C51ED5A64BEAB886368313E0346F" + { + "Name" = "8:#1919" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:ProgramMenuFolder" + "Folders" + { + "{9EF0B969-E518-4E46-987F-47570745A589}:_B407707995D54D3FAB55644413B76BA2" + { + "Name" = "8:PatchEmAll" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_B7567540CAD84F29A3E5663B6D0FB789" + "Folders" + { + "{9EF0B969-E518-4E46-987F-47570745A589}:_123722D6F1B04585BFBA6B0E32D080AD" + { + "Name" = "8:Docs" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_FAFC252ADCDD43469CDF45B7E8E13F15" + "Folders" + { + } + } + "{9EF0B969-E518-4E46-987F-47570745A589}:_74885FA929E04F5B80D1841073C6DB7F" + { + "Name" = "8:Batches" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_CB749E65A0604E66B5A6E04F1A2A65C6" + "Folders" + { + } + } + } + } + } + } + "{3C67513D-01DD-4637-8A68-80971EB9504F}:_6FBC65191EB34C8EA10C20A6AC7DC2B9" + { + "DefaultLocation" = "8:[ProgramFilesFolder][Manufacturer]\\[ProductName]" + "Name" = "8:#1925" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:TARGETDIR" + "Folders" + { + "{9EF0B969-E518-4E46-987F-47570745A589}:_0C0590302E5149B1AF70EE13BE19753F" + { + "Name" = "8:Xdelta" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_3B34637D5E8C421A9558FBDD6DCCA280" + "Folders" + { + } + } + "{9EF0B969-E518-4E46-987F-47570745A589}:_17EB6B19F9924AE1A7EF2EDF462F697E" + { + "Name" = "8:Dats" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_9A689CE6584C4FC1B859C315D3964B36" + "Folders" + { + } + } + "{9EF0B969-E518-4E46-987F-47570745A589}:_1E9C5B74D23D414287FAF5C9C81D04FD" + { + "Name" = "8:Docs" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_CEDC338F6E9447C494A341C12CE3B031" + "Folders" + { + } + } + "{9EF0B969-E518-4E46-987F-47570745A589}:_45AA59F4FB5D42D5B6F2FA53CD026035" + { + "Name" = "8:ROMs" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_94D7F3F2CD884CE0B714A269896C979B" + "Folders" + { + } + } + "{9EF0B969-E518-4E46-987F-47570745A589}:_4E7A381D281F45B4B99E6B600695A444" + { + "Name" = "8:Batches" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_782E1355CCF1455A900A3BF728C8FAF0" + "Folders" + { + } + } + "{9EF0B969-E518-4E46-987F-47570745A589}:_709E7A005A2442DF81FC7B342DAB0A42" + { + "Name" = "8:BASHes" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_9CD55166AD1143208551E87036019E01" + "Folders" + { + } + } + "{9EF0B969-E518-4E46-987F-47570745A589}:_986D64EDA5B24CA99C28BAC3CD24F601" + { + "Name" = "8:Options" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_B8DCCB29904041889E789573F236D04D" + "Folders" + { + } + } + "{9EF0B969-E518-4E46-987F-47570745A589}:_9F7299131CFF403197C2C05F4B00CBC5" + { + "Name" = "8:Logs" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_42092F6C72E24B288BA28CCABC2CDBF2" + "Folders" + { + } + } + "{9EF0B969-E518-4E46-987F-47570745A589}:_DC2D2CC079E44828B5E76AF6C255C7F5" + { + "Name" = "8:Patches" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_B0D03B6D532A48AE86B9F01AC4603611" + "Folders" + { + } + } + } + } + "{1525181F-901A-416C-8A58-119130FE478E}:_B18D72031C8145309D20098A07287B34" + { + "Name" = "8:#1916" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:DesktopFolder" + "Folders" + { + } + } + } + "LaunchCondition" + { + } + "Locator" + { + } + "MsiBootstrapper" + { + "LangId" = "3:1033" + "RequiresElevation" = "11:FALSE" + } + "Product" + { + "Name" = "8:Microsoft Visual Studio" + "ProductName" = "8:PatchEmAll" + "ProductCode" = "8:{2F487C4C-1C6B-4945-B9C5-E2F876A7A555}" + "PackageCode" = "8:{FF7179C4-C373-47C6-B58D-DCC216D69073}" + "UpgradeCode" = "8:{7036F923-824D-4931-AE8A-8971E40A9645}" + "AspNetVersion" = "8:4.0.30319.0" + "RestartWWWService" = "11:FALSE" + "RemovePreviousVersions" = "11:TRUE" + "DetectNewerInstalledVersion" = "11:TRUE" + "InstallAllUsers" = "11:FALSE" + "ProductVersion" = "8:1.5.7" + "Manufacturer" = "8:PatchEmAll" + "ARPHELPTELEPHONE" = "8:" + "ARPHELPLINK" = "8:" + "Title" = "8:PatchEmAll Installer" + "Subject" = "8:" + "ARPCONTACT" = "8:PatchEmAll" + "Keywords" = "8:PatchEmAll" + "ARPCOMMENTS" = "8:The Original Automated ROM Patcher" + "ARPURLINFOABOUT" = "8:https://www.devemall.int.eu.org" + "ARPPRODUCTICON" = "8:_C1BB9591FECB48F9A3EF13935AF8CF6D" + "ARPIconIndex" = "3:0" + "SearchPath" = "8:" + "UseSystemSearchPath" = "11:TRUE" + "TargetPlatform" = "3:0" + "PreBuildEvent" = "8:" + "PostBuildEvent" = "8:" + "RunPostBuildEvent" = "3:0" + } + "Registry" + { + "HKLM" + { + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_85E088C7E0F14CF2925C1FA86328C3F3" + { + "Name" = "8:Software" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_5E5B9F59A1F647F08A637316136AD73A" + { + "Name" = "8:[Manufacturer]" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + } + "Values" + { + } + } + } + "Values" + { + } + } + } + } + "HKCU" + { + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_387CA44EC40647A295EAAD3201E823A3" + { + "Name" = "8:Software" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_DA2E21547E9B45FE953E235A802B9AA1" + { + "Name" = "8:[Manufacturer]" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + } + "Values" + { + } + } + } + "Values" + { + } + } + } + } + "HKCR" + { + "Keys" + { + } + } + "HKU" + { + "Keys" + { + } + } + "HKPU" + { + "Keys" + { + } + } + } + "Sequences" + { + } + "Shortcut" + { + "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_15EADC973A064F60973537FC7475972E" + { + "Name" = "8:PatchEmAll-GUI" + "Arguments" = "8:" + "Description" = "8:" + "ShowCmd" = "3:1" + "IconIndex" = "3:0" + "Transitive" = "11:FALSE" + "Target" = "8:_65A646FA3C0C48A8ABEFEB2EBEE1A6A2" + "Folder" = "8:_B407707995D54D3FAB55644413B76BA2" + "WorkingFolder" = "8:_6FBC65191EB34C8EA10C20A6AC7DC2B9" + "Icon" = "8:_C1BB9591FECB48F9A3EF13935AF8CF6D" + "Feature" = "8:" + } + "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_16EBDD6B0D104C5CAAEE851CEAE5857E" + { + "Name" = "8:PatchEmAll-Build-Patches-Dat" + "Arguments" = "8:" + "Description" = "8:" + "ShowCmd" = "3:1" + "IconIndex" = "3:0" + "Transitive" = "11:FALSE" + "Target" = "8:_54AF83ED79D14F9E9C7975BBF0D0E054" + "Folder" = "8:_74885FA929E04F5B80D1841073C6DB7F" + "WorkingFolder" = "8:_4E7A381D281F45B4B99E6B600695A444" + "Icon" = "8:" + "Feature" = "8:" + } + "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_50783DB5834242F68A8792DE0CEDDBD4" + { + "Name" = "8:PatchEmAll-LICENSE" + "Arguments" = "8:" + "Description" = "8:" + "ShowCmd" = "3:1" + "IconIndex" = "3:0" + "Transitive" = "11:FALSE" + "Target" = "8:_2632341F85074C25A9C9EE70B9469B2E" + "Folder" = "8:_123722D6F1B04585BFBA6B0E32D080AD" + "WorkingFolder" = "8:_1E9C5B74D23D414287FAF5C9C81D04FD" + "Icon" = "8:" + "Feature" = "8:" + } + "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_70A46A9AB1894DB4B8F3A093BC94A1BF" + { + "Name" = "8:PatchEmAll-CLI" + "Arguments" = "8:" + "Description" = "8:" + "ShowCmd" = "3:1" + "IconIndex" = "3:0" + "Transitive" = "11:FALSE" + "Target" = "8:_15A0FD2F6BA049F3915CBBD17C523141" + "Folder" = "8:_B407707995D54D3FAB55644413B76BA2" + "WorkingFolder" = "8:_6FBC65191EB34C8EA10C20A6AC7DC2B9" + "Icon" = "8:_C1BB9591FECB48F9A3EF13935AF8CF6D" + "Feature" = "8:" + } + "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_984B0FBE16C24AF3B6D3DBFE439F70DB" + { + "Name" = "8:PatchEmAll-HELP" + "Arguments" = "8:" + "Description" = "8:" + "ShowCmd" = "3:1" + "IconIndex" = "3:0" + "Transitive" = "11:FALSE" + "Target" = "8:_5F40C9E995D0415CA195AA380914F0E0" + "Folder" = "8:_123722D6F1B04585BFBA6B0E32D080AD" + "WorkingFolder" = "8:_1E9C5B74D23D414287FAF5C9C81D04FD" + "Icon" = "8:" + "Feature" = "8:" + } + "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_B709680C6651437B8CB131FF2509B6D9" + { + "Name" = "8:PatchEmAll-HELP-CMD" + "Arguments" = "8:" + "Description" = "8:" + "ShowCmd" = "3:1" + "IconIndex" = "3:0" + "Transitive" = "11:FALSE" + "Target" = "8:_4478536FC74C43A5997BE7E70E836B68" + "Folder" = "8:_123722D6F1B04585BFBA6B0E32D080AD" + "WorkingFolder" = "8:_1E9C5B74D23D414287FAF5C9C81D04FD" + "Icon" = "8:" + "Feature" = "8:" + } + "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_CF8ACC89D5404CF9A3F049C14DE93E49" + { + "Name" = "8:PatchEmAll-Build-ROMs" + "Arguments" = "8:" + "Description" = "8:" + "ShowCmd" = "3:1" + "IconIndex" = "3:0" + "Transitive" = "11:FALSE" + "Target" = "8:_34BA3C7060F545EC838E42C1D82482DF" + "Folder" = "8:_74885FA929E04F5B80D1841073C6DB7F" + "WorkingFolder" = "8:_4E7A381D281F45B4B99E6B600695A444" + "Icon" = "8:" + "Feature" = "8:" + } + "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_F718ECFD14824AECAA50915867F132C0" + { + "Name" = "8:PatchEmAll-Build-Patches" + "Arguments" = "8:" + "Description" = "8:" + "ShowCmd" = "3:1" + "IconIndex" = "3:0" + "Transitive" = "11:FALSE" + "Target" = "8:_C2F397A0651D41988A0BE5B00B16B3A9" + "Folder" = "8:_74885FA929E04F5B80D1841073C6DB7F" + "WorkingFolder" = "8:_4E7A381D281F45B4B99E6B600695A444" + "Icon" = "8:" + "Feature" = "8:" + } + } + "UserInterface" + { + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_0FDDA2FBAF7146F8AF6EB7EA1D1D0134" + { + "Name" = "8:#1900" + "Sequence" = "3:2" + "Attributes" = "3:1" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_3FF4F46FD24847C68C8D92989C89C068" + { + "Sequence" = "3:200" + "DisplayName" = "8:Installation Folder" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminFolderDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_4E76213C377E4387A4A44E9255EC75BA" + { + "Sequence" = "3:400" + "DisplayName" = "8:License Agreement" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminLicenseDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "EulaText" + { + "Name" = "8:EulaText" + "DisplayName" = "8:#1008" + "Description" = "8:#1108" + "Type" = "3:6" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:2" + "Value" = "8:_2707210B6B404D188D331462E589DEA3" + "UsePlugInResources" = "11:TRUE" + } + "Sunken" + { + "Name" = "8:Sunken" + "DisplayName" = "8:#1007" + "Description" = "8:#1107" + "Type" = "3:5" + "ContextData" = "8:4;True=4;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:4" + "DefaultValue" = "3:4" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_A9A8760D5C1144729D6002FE5FC8F7A0" + { + "Sequence" = "3:410" + "DisplayName" = "8:Confirm Installation" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminConfirmDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_E4277B9EBBC94A6D82C05C2B3A5F8120" + { + "Sequence" = "3:100" + "DisplayName" = "8:Welcome" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminWelcomeDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "CopyrightWarning" + { + "Name" = "8:CopyrightWarning" + "DisplayName" = "8:#1002" + "Description" = "8:#1102" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1202" + "DefaultValue" = "8:#1202" + "UsePlugInResources" = "11:TRUE" + } + "Welcome" + { + "Name" = "8:Welcome" + "DisplayName" = "8:#1003" + "Description" = "8:#1103" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1203" + "DefaultValue" = "8:#1203" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_48697F32EE084220B60953BBB436A8F8" + { + "Name" = "8:#1902" + "Sequence" = "3:2" + "Attributes" = "3:3" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_8DEC3226F0B947D1AB2B0703904DC6AC" + { + "Sequence" = "3:100" + "DisplayName" = "8:Finished" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminFinishedDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_5A7D6B5A71D245058BE87D31A72BA754" + { + "Name" = "8:#1900" + "Sequence" = "3:1" + "Attributes" = "3:1" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_0534ED710446405E813EADE71EFB44DF" + { + "Sequence" = "3:400" + "DisplayName" = "8:License Agreement" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdLicenseDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "EulaText" + { + "Name" = "8:EulaText" + "DisplayName" = "8:#1008" + "Description" = "8:#1108" + "Type" = "3:6" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:2" + "Value" = "8:_2707210B6B404D188D331462E589DEA3" + "UsePlugInResources" = "11:TRUE" + } + "Sunken" + { + "Name" = "8:Sunken" + "DisplayName" = "8:#1007" + "Description" = "8:#1107" + "Type" = "3:5" + "ContextData" = "8:4;True=4;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:4" + "DefaultValue" = "3:4" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_06362FE06567403786D1E3B2535028FA" + { + "Sequence" = "3:100" + "DisplayName" = "8:Welcome" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdWelcomeDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "CopyrightWarning" + { + "Name" = "8:CopyrightWarning" + "DisplayName" = "8:#1002" + "Description" = "8:#1102" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1202" + "DefaultValue" = "8:#1202" + "UsePlugInResources" = "11:TRUE" + } + "Welcome" + { + "Name" = "8:Welcome" + "DisplayName" = "8:#1003" + "Description" = "8:#1103" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1203" + "DefaultValue" = "8:#1203" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_094B05D6CCC94C348FC56FC77FA1C690" + { + "Sequence" = "3:410" + "DisplayName" = "8:Confirm Installation" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdConfirmDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_2E55A20E15C449E59AB64E169CF1B326" + { + "Sequence" = "3:200" + "DisplayName" = "8:Installation Folder" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdFolderDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "InstallAllUsersVisible" + { + "Name" = "8:InstallAllUsersVisible" + "DisplayName" = "8:#1059" + "Description" = "8:#1159" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_723ABC4D64E14CCA951E27DEEF71AD2F" + { + "Name" = "8:#1901" + "Sequence" = "3:1" + "Attributes" = "3:2" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_01AA808F34E84E208A0668D3D9D2D6A9" + { + "Sequence" = "3:100" + "DisplayName" = "8:Progress" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdProgressDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "ShowProgress" + { + "Name" = "8:ShowProgress" + "DisplayName" = "8:#1009" + "Description" = "8:#1109" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_8D98A70C6997445EAE9A0F1F79D204DF" + { + "UseDynamicProperties" = "11:FALSE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdUserInterface.wim" + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_918561D5F2D64DE189766EA847D2600F" + { + "Name" = "8:#1901" + "Sequence" = "3:2" + "Attributes" = "3:2" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_3425FEE70F0C4280A8B01A254E83015A" + { + "Sequence" = "3:100" + "DisplayName" = "8:Progress" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminProgressDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "ShowProgress" + { + "Name" = "8:ShowProgress" + "DisplayName" = "8:#1009" + "Description" = "8:#1109" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_C1D37477FBAC4E06BB6015487B3B3B4B" + { + "Name" = "8:#1902" + "Sequence" = "3:1" + "Attributes" = "3:3" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_DF67E2F364BC4D5A9EDEA07EB5E96B19" + { + "Sequence" = "3:100" + "DisplayName" = "8:Finished" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdFinishedDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "UpdateText" + { + "Name" = "8:UpdateText" + "DisplayName" = "8:#1058" + "Description" = "8:#1158" + "Type" = "3:15" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1258" + "DefaultValue" = "8:#1258" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_F13F262CFD724A5A8451498A7C18B1EB" + { + "UseDynamicProperties" = "11:FALSE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdBasicDialogs.wim" + } + } + "MergeModule" + { + } + "ProjectOutput" + { + "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_15A0FD2F6BA049F3915CBBD17C523141" + { + "SourcePath" = "8:..\\PatchEmAll-CLI\\obj\\Debug\\PatchEmAll-CLI.exe" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_6FBC65191EB34C8EA10C20A6AC7DC2B9" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + "ProjectOutputGroupRegister" = "3:1" + "OutputConfiguration" = "8:" + "OutputGroupCanonicalName" = "8:Built" + "OutputProjectGuid" = "8:{2D9F35C9-4274-429F-851E-96DAE240B59E}" + "ShowKeyOutput" = "11:TRUE" + "ExcludeFilters" + { + } + } + "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_65A646FA3C0C48A8ABEFEB2EBEE1A6A2" + { + "SourcePath" = "8:..\\PatchEmAll-GUI\\obj\\Debug\\PatchEmAll-GUI.exe" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_6FBC65191EB34C8EA10C20A6AC7DC2B9" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + "ProjectOutputGroupRegister" = "3:1" + "OutputConfiguration" = "8:" + "OutputGroupCanonicalName" = "8:Built" + "OutputProjectGuid" = "8:{114ADC53-8575-4DA6-9EC3-36187C0B55E9}" + "ShowKeyOutput" = "11:TRUE" + "ExcludeFilters" + { + } + } + } + } +} diff --git a/PatchEmAll-Release/PatchEmAll-Release.csproj b/PatchEmAll-Release/PatchEmAll-Release.csproj new file mode 100644 index 0000000..47e884b --- /dev/null +++ b/PatchEmAll-Release/PatchEmAll-Release.csproj @@ -0,0 +1,130 @@ + + + + + + Debug + AnyCPU + {D40C2F3F-E3A2-47EB-8EF3-9C2C707B4FFB} + + + + + AnyCPU + bin\Debug\ + + + AnyCPU + bin\Release\ + + + + + + + PatchEmAll + 1.5.7 + PatchEmAll-Portable + PatchEmAll-Installer + PatchEmAll-Package + PatchEmAll-Source + PatchEmAll + PatchEmAll-CLI + PatchEmAll-GUI + $(OutputPath)Portable\ + $(OutputPath)ILMerge\ + $(OutputPath)Package\ + $(OutputPath)Installer\ + $(OutputPath)Source\ + $(OutputPath)Releases\ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + \ No newline at end of file diff --git a/PatchEmAll-Release/packages.config b/PatchEmAll-Release/packages.config new file mode 100644 index 0000000..8f32205 --- /dev/null +++ b/PatchEmAll-Release/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/PatchEmAll.sln b/PatchEmAll.sln new file mode 100644 index 0000000..a6fbaaa --- /dev/null +++ b/PatchEmAll.sln @@ -0,0 +1,65 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.33516.290 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PatchEmAll-CLI", "PatchEmAll-CLI\PatchEmAll-CLI.csproj", "{2D9F35C9-4274-429F-851E-96DAE240B59E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PatchEmAll-GUI", "PatchEmAll-GUI\PatchEmAll-GUI.csproj", "{114ADC53-8575-4DA6-9EC3-36187C0B55E9}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PatchEmAll", "PatchEmAll\PatchEmAll.csproj", "{956E3B6C-EEE3-44A9-BE64-7B3AE0238924}" +EndProject +Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "PatchEmAll-Installer", "PatchEmAll-Installer\PatchEmAll-Installer.vdproj", "{BB792664-EB4F-48D3-85B1-0EEF3CF11BFC}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PatchEmAll-Release", "PatchEmAll-Release\PatchEmAll-Release.csproj", "{D40C2F3F-E3A2-47EB-8EF3-9C2C707B4FFB}" + ProjectSection(ProjectDependencies) = postProject + {114ADC53-8575-4DA6-9EC3-36187C0B55E9} = {114ADC53-8575-4DA6-9EC3-36187C0B55E9} + {BB792664-EB4F-48D3-85B1-0EEF3CF11BFC} = {BB792664-EB4F-48D3-85B1-0EEF3CF11BFC} + {2D9F35C9-4274-429F-851E-96DAE240B59E} = {2D9F35C9-4274-429F-851E-96DAE240B59E} + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{EF51289A-9DF0-4262-9867-D4E6F9C321EE}" + ProjectSection(SolutionItems) = preProject + CHANGELOG.md = CHANGELOG.md + CODE_OF_CONDUCT.md = CODE_OF_CONDUCT.md + CONTRIBUTING.md = CONTRIBUTING.md + LICENSE = LICENSE + README.md = README.md + TODO.md = TODO.md + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + Description = The Original Automated ROM Patcher + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {2D9F35C9-4274-429F-851E-96DAE240B59E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2D9F35C9-4274-429F-851E-96DAE240B59E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2D9F35C9-4274-429F-851E-96DAE240B59E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2D9F35C9-4274-429F-851E-96DAE240B59E}.Release|Any CPU.Build.0 = Release|Any CPU + {114ADC53-8575-4DA6-9EC3-36187C0B55E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {114ADC53-8575-4DA6-9EC3-36187C0B55E9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {114ADC53-8575-4DA6-9EC3-36187C0B55E9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {114ADC53-8575-4DA6-9EC3-36187C0B55E9}.Release|Any CPU.Build.0 = Release|Any CPU + {956E3B6C-EEE3-44A9-BE64-7B3AE0238924}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {956E3B6C-EEE3-44A9-BE64-7B3AE0238924}.Debug|Any CPU.Build.0 = Debug|Any CPU + {956E3B6C-EEE3-44A9-BE64-7B3AE0238924}.Release|Any CPU.ActiveCfg = Release|Any CPU + {956E3B6C-EEE3-44A9-BE64-7B3AE0238924}.Release|Any CPU.Build.0 = Release|Any CPU + {BB792664-EB4F-48D3-85B1-0EEF3CF11BFC}.Debug|Any CPU.ActiveCfg = Debug + {BB792664-EB4F-48D3-85B1-0EEF3CF11BFC}.Debug|Any CPU.Build.0 = Debug + {BB792664-EB4F-48D3-85B1-0EEF3CF11BFC}.Release|Any CPU.ActiveCfg = Release + {BB792664-EB4F-48D3-85B1-0EEF3CF11BFC}.Release|Any CPU.Build.0 = Release + {D40C2F3F-E3A2-47EB-8EF3-9C2C707B4FFB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D40C2F3F-E3A2-47EB-8EF3-9C2C707B4FFB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D40C2F3F-E3A2-47EB-8EF3-9C2C707B4FFB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D40C2F3F-E3A2-47EB-8EF3-9C2C707B4FFB}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {CDB3CD11-F8EC-41D7-8562-9BC4D0C84D98} + EndGlobalSection +EndGlobal diff --git a/PatchEmAll/App.ico b/PatchEmAll/App.ico new file mode 100644 index 0000000000000000000000000000000000000000..63922ff1ce0099105b02a876f6f9b281d5311d98 GIT binary patch literal 4286 zcmcgwYfx0@89rPh8MKX)YC1{VsZDK~wwX5lk?Hj2)WozMokT!T6cNKM#DdXQ(2gUC zNx(!~s}rKtNl4_f+;3sIi`?&5xd}vA5SGhwkp-5+WtXS#`z^cf5<2;%hk5q<_I;n{ zea`vLciyvuB-zm4mMs#0O7R;d=_yH)o+nU9`V)cU;-K8>Bj<>;F6S-Dlh8!a5#)yq z_P9;(B5#MR0O>$>fHXwFBgP1Mdnx^;I^~-ZRwHYTn2E!=wP4Dx9{+DGf2k?cSDGcj z3_s&M{S65j-YapAt;D~iSo&cJX@pcSBY4g+&WSn}e6GQ@%yCOEUrG0+k0fXKke3O> z&+v6X(ZBa0=bcx?oNFf^vPH7*lgK#nYvhGHqx4Dus&1SloI>f|NH~$Wo4v2WU|R+16VE|;dK=OMpT%fr1*SFq$PIY`X|!IJUhGYN z4B^XT%0UUWkwI8C7%<#fgRYV!=(H1H!zFnJ(?gvYZq7zu$>-=Ph!E&2iNtVI7N*sA zh%+s?bJ|ICmnLKQP8CTFsQ=>ELLgD*=#{BG*(9BK@q2j+mNbz}!a>jhp0SQSSMkITXj$r!E zIj)iDZi5u>O(?%|1T$lUqSk_L8n?oBioD5>y%P`EF~CS5UFBsD%#8NZ`s=YcuY;;S zpY~cHox^6*+6tbDzvf7s6rW8f`Q!*xb-7rSb)wd+Mun;fFX3UKlM~$S85B1n(Zdm0 z$9{qO&)&vJ%S|lJ&qAy2f->l*h~H;x=9&1bN9JS(ZpG9<2lS*JX)Q!U{yyx&&hx}k(L#aDum{hl-8eSSnaBgaZd-m!aZ8Hn9uhZtuY#O{9* zW!Fz&w5P>*@94Q(=4Wp~#>BlYR7bxH#i3`6TnnAT^J(fup&0MKL;GeuZN@N+bH3 zDZil8A~$pwa!&un+%H6q)_iViOlZdYIv`I|@3c5{_eY@&-iD~xXzj>b;p!mA(%xu_ zJ8QuLbdw|0%gdo|DWZN@h=G<;>f-}eoIBZ9(V>j6icM3$VJ>Ubw~OeVQBK!2Y{j{q z7>-!p$K;*3-%(CF_yqbZlg%9NJ!5wpaj!ZJIe&i<%E0H)TO392qgoi29_)>=u4-sH zE6qC2X}as6DvhOn@jSAR{}TOGDO9UL^dJ-QUQIfZJU3E5bCgrP9+%UpFAq28n9|TM z&SRpt32o`;so&XCKb6oJa}pChjp7|-BJ%r2JJ@deDtgs;PXn41r-deQza3gr!$mFq zqHN}kv=$(P-qY-z>F*$C2CTB;*DcXPt5V!Yp&%NmBdz3OZGvn%5)a)UMy9Oc50&2r(% zXHfUC8|KFQt!nXon4!HhGp?q!owLf#Yll&Lc?W9#vmNtOYO5UgD%Q-<^TahQkGY8f z)JNm0~d`w<1gFV^1D(qKs&AFG*aA_BsBAhW;PW^9AYbmpu>lbuTS4N`t!tYQW z_M$-Th2KJ5@u_&2=3*D3#c+qp*z-B zSA zuE5VCx58tt85CR5_ayk4b-h%>swQ!`W_Q%?uRigV$Uy?ie(|j?IdF+vZz1Wky zXVpsYiXo*phO&GxoEwCZf?z_(Lqf3d7|QYmdy;pJ=H}m=$8H7njTaq-5pUCY>>+_` x8-2*LpS;~B%TCzcuL#~fRdupdTYYMZF!zw5C9iVwbh%$1Y`^;d0gw9o{{ZklfEWM( literal 0 HcmV?d00001 diff --git a/PatchEmAll/CRC32CryptoServiceProvider.cs b/PatchEmAll/CRC32CryptoServiceProvider.cs new file mode 100644 index 0000000..c73ad17 --- /dev/null +++ b/PatchEmAll/CRC32CryptoServiceProvider.cs @@ -0,0 +1,180 @@ +using System; +using System.Collections.Generic; +using System.Security.Cryptography; + +namespace PatchEmAll +{ + ///

+ /// Implements a 32-bit CRC hash algorithm compatible with Zip etc. + /// + /// + /// If you need to call multiple times for the same data either use the HashAlgorithm + /// interface or remember that the result of one Compute call needs to be ~ (XOR) before + /// being passed in as the seed for the next Compute call. + /// + public sealed class CRC32CryptoServiceProvider : HashAlgorithm + { + /// DefaultPolynomial + public const UInt32 DefaultPolynomial = 0xedb88320u; + /// DefaultSeed + public const UInt32 DefaultSeed = 0xffffffffu; + /// defaultTable + static UInt32[] defaultTable; + /// seed + readonly UInt32 seed; + /// table + readonly UInt32[] table; + /// hash + UInt32 hash; + + /// + /// CRC32CryptoServiceProvider Constructor + /// + public CRC32CryptoServiceProvider() : this(DefaultPolynomial, DefaultSeed) + { + + } + + /// + /// CRC32CryptoServiceProvider Constructor Overloaded + /// + /// + /// + public CRC32CryptoServiceProvider(UInt32 polynomial, UInt32 seed) + { + table = InitializeTable(polynomial); + this.seed = hash = seed; + } + + /// + /// Initialize + /// + public override void Initialize() + { + hash = seed; + } + + /// + /// HashCore + /// + /// + /// + /// + protected override void HashCore(byte[] array, int ibStart, int cbSize) + { + hash = CalculateHash(table, hash, array, ibStart, cbSize); + } + + /// + /// HashFinal + /// + /// + protected override byte[] HashFinal() + { + var hashBuffer = UInt32ToBigEndianBytes(~hash); + HashValue = hashBuffer; + return hashBuffer; + } + + /// + /// HashSize + /// + public override int HashSize + { + get { return 32; } + } + + /// + /// Compute + /// + /// + /// + public static UInt32 Compute(byte[] buffer) + { + return Compute(DefaultSeed, buffer); + } + + /// + /// Compute + /// + /// + /// + /// + public static UInt32 Compute(UInt32 seed, byte[] buffer) + { + return Compute(DefaultPolynomial, seed, buffer); + } + + /// + /// Compute + /// + /// + /// + /// + /// + public static UInt32 Compute(UInt32 polynomial, UInt32 seed, byte[] buffer) + { + return ~CalculateHash(InitializeTable(polynomial), seed, buffer, 0, buffer.Length); + } + + /// + /// InitializeTable + /// + /// + /// + static UInt32[] InitializeTable(UInt32 polynomial) + { + if (polynomial == DefaultPolynomial && defaultTable != null) + return defaultTable; + + var createTable = new UInt32[256]; + for (var i = 0; i < 256; i++) + { + var entry = (UInt32)i; + for (var j = 0; j < 8; j++) + if ((entry & 1) == 1) + entry = (entry >> 1) ^ polynomial; + else + entry = entry >> 1; + createTable[i] = entry; + } + + if (polynomial == DefaultPolynomial) + defaultTable = createTable; + + return createTable; + } + + /// + /// CalculateHash + /// + /// + /// + /// + /// + /// + /// + static UInt32 CalculateHash(UInt32[] table, UInt32 seed, IList buffer, int start, int size) + { + var hash = seed; + for (var i = start; i < start + size; i++) + hash = (hash >> 8) ^ table[buffer[i] ^ hash & 0xff]; + return hash; + } + + /// + /// UInt32ToBigEndianBytes + /// + /// + /// + static byte[] UInt32ToBigEndianBytes(UInt32 uint32) + { + var result = BitConverter.GetBytes(uint32); + + if (BitConverter.IsLittleEndian) + Array.Reverse(result); + + return result; + } + } +} diff --git a/PatchEmAll/PatchEmAll.cs b/PatchEmAll/PatchEmAll.cs new file mode 100644 index 0000000..41cefbd --- /dev/null +++ b/PatchEmAll/PatchEmAll.cs @@ -0,0 +1,1274 @@ +using Serilog; +using Serilog.Sinks.LogEmAll; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Runtime.InteropServices; +using System.Security.Cryptography; +using System.Text.RegularExpressions; +using System.Xml.Linq; + +namespace PatchEmAll +{ + /// + /// The PatchEmAll Class which interacts with the Main Program Class. + /// + public class PatchEmAll : INotifyPropertyChanged + { + #region Constructors + + /// + /// PatchEmAll Constructor + /// + public PatchEmAll() + { + // Construct a PatchEmAll object. + } + + #endregion + + #region INotifyPropertyChanged + + /// PropertyChanged Event + public event PropertyChangedEventHandler PropertyChanged; + + /// + /// NotifyPropertyChanged + /// + /// + private void NotifyPropertyChanged(String pName) + { + PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(pName)); + } + + #endregion + + #region Private Members + + // Not Options + private readonly string _strAppName = FileVersionInfo.GetVersionInfo(Assembly.GetEntryAssembly().Location).ProductName; + private readonly string _strAppVersion = FileVersionInfo.GetVersionInfo(Assembly.GetEntryAssembly().Location).ProductVersion; + private readonly string _strAppCopyright = FileVersionInfo.GetVersionInfo(Assembly.GetEntryAssembly().Location).LegalCopyright; + private string _strCommandSwitch = "-help"; + private string _strXdeltaBuildCommand = "-e -9 -s"; + private string _strDelimiter = " -- "; + private string _strMachineName = ""; + private string _strComment = ""; + private ListStringLog _logLines = new ListStringLog(); + // Devs Options + private string _strSounds = "Off"; + private string _strLanguage = "en"; + private string _strLogLevel = "Information"; + // Paths Options + private string _strPathLogFile = ""; + private string _strPathOptionsFile = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "Options", "PatchEmAll-Options.xml"); + private string _strPathROMsDir = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "ROMs"); + private string _strPathPatchesDir = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "Patches"); + private string _strPathDatsDir = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "Dats"); + private string _strPathDatPPDXMLFile = ""; + private string _strPathXdeltaFile = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "Xdelta", "xdelta3-3.1.0-i686.exe"); + // Registration Options + private string _registrationStatus = "unregistered"; + private string _registrationKey = ""; + private string _registerAppUsername = ""; + private string _registerAppEmailAddress = ""; + private string _registerAppPassword = ""; + + #endregion + + #region Getters/Setters Public Accessors + + /// AppName + public string AppName + { + get { return _strAppName; } + set { } + } + /// AppVersion + public string AppVersion + { + get { return _strAppVersion; } + set { } + } + /// AppCopyright + public string AppCopyright + { + get { return _strAppCopyright; } + set { } + } + /// PathOptionsFile + public string PathOptionsFile + { + get { return _strPathOptionsFile; } + set { _strPathOptionsFile = value; } + } + /// PathROMsDir + public string PathROMsDir + { + get { return _strPathROMsDir; } + set { _strPathROMsDir = value; NotifyPropertyChanged("PathROMsDir"); } + } + /// PathPatchesDir + public string PathPatchesDir + { + get { return _strPathPatchesDir; } + set { _strPathPatchesDir = value; NotifyPropertyChanged("PathPatchesDir"); } + } + /// PathDatsDir + public string PathDatsDir + { + get { return _strPathDatsDir; } + set { _strPathDatsDir = value; NotifyPropertyChanged("PathDatsDir"); } + } + /// PathDatPPDXMLFile + public string PathDatPPDXMLFile + { + get { return _strPathDatPPDXMLFile; } + set { _strPathDatPPDXMLFile = value; NotifyPropertyChanged("PathDatPPDXMLFile"); } + } + /// PathXdeltaFile + public string PathXdeltaFile + { + get { return _strPathXdeltaFile; } + set { _strPathXdeltaFile = value; NotifyPropertyChanged("PathXdeltaFile"); } + } + /// XdeltaBuildCommand + public string XdeltaBuildCommand + { + get { return _strXdeltaBuildCommand; } + set { _strXdeltaBuildCommand = value; NotifyPropertyChanged("XdeltaBuildCommand"); } + } + /// Delimiter + public string Delimiter + { + get { return _strDelimiter; } + set { _strDelimiter = value; NotifyPropertyChanged("Delimiter"); } + } + /// MachineName + public string MachineName + { + get { return _strMachineName; } + set { _strMachineName = value; NotifyPropertyChanged("MachineName"); } + } + /// Comment + public string Comment + { + get { return _strComment; } + set { _strComment = value; NotifyPropertyChanged("Comment"); } + } + /// PathLogFile + public string PathLogFile + { + get { return _strPathLogFile; } + set { _strPathLogFile = value; } + } + /// CommandSwitch + public string CommandSwitch + { + get { return _strCommandSwitch; } + set { _strCommandSwitch = value; } + } + /// Sounds + public string Sounds + { + get { return _strSounds; } + set { _strSounds = value; NotifyPropertyChanged("Sounds"); } + } + /// LogLines + public ListStringLog LogLines + { + get { return _logLines; } + set { _logLines = value; } + } + /// Language + public string Language + { + get { return _strLanguage; } + set { _strLanguage = value; NotifyPropertyChanged("Language"); } + } + /// LogLevel + public string LogLevel + { + get { return _strLogLevel; } + set { _strLogLevel = value; NotifyPropertyChanged("LogLevel"); } + } + /// RegistrationStatus + public string RegistrationStatus + { + get { return _registrationStatus; } + set { _registrationStatus = value; NotifyPropertyChanged("RegistrationStatus"); } + } + /// RegistrationKey + public string RegistrationKey + { + get { return _registrationKey; } + set { _registrationKey = value; NotifyPropertyChanged("RegistrationKey"); } + } + /// RegisterAppUsername + public string RegisterAppUsername + { + get { return _registerAppUsername; } + set { _registerAppUsername = value; NotifyPropertyChanged("RegisterAppUsername"); } + } + /// RegisterAppEmailAddress + public string RegisterAppEmailAddress + { + get { return _registerAppEmailAddress; } + set { _registerAppEmailAddress = value; NotifyPropertyChanged("RegisterAppEmailAddress"); } + } + /// RegisterAppPassword + public string RegisterAppPassword + { + get { return _registerAppPassword; } + set { _registerAppPassword = value; NotifyPropertyChanged("RegisterAppPassword"); } + } + + #endregion + + #region Startup Tasks + + /// + /// Performs the startup tasks. + /// + private void StartupTasks() + { + // + } + + #endregion + + #region Registration + + /// + /// Register the app. + /// + /// + /// + /// + /// + public bool RegisterApp(string strUsername = null, string strEmailAddress = null, string strPassword = null) + { + try + { + // Return a bool value + return true; + } + catch (Exception ex) + { + // Print to screen + Log.Error("Registering app failed"); + Log.Error(ex.Message); + + // Return a value + return false; + } + } + + #endregion + + #region Options + + /// + /// Loads and sets the options variables from the options file. + /// + /// + /// + public bool LoadOptionsFromFile(string strPath = null) + { + try + { + if (strPath != null) + { + PathOptionsFile = strPath; + } + + if (File.Exists(PathOptionsFile) == true) + { + // Load the options from the XML file. + XDocument xdocOptions = XDocument.Load(PathOptionsFile); + + // Set the variables. + PathROMsDir = xdocOptions.Element("Options").Element("PathROMsDir").Value; + PathPatchesDir = xdocOptions.Element("Options").Element("PathPatchesDir").Value; + PathDatsDir = xdocOptions.Element("Options").Element("PathDatsDir").Value; + PathDatPPDXMLFile = xdocOptions.Element("Options").Element("PathDatPPDXMLFile").Value; + PathXdeltaFile = xdocOptions.Element("Options").Element("PathXdeltaFile").Value; + XdeltaBuildCommand = xdocOptions.Element("Options").Element("XdeltaBuildCommand").Value; + MachineName = xdocOptions.Element("Options").Element("MachineName").Value; + Delimiter = xdocOptions.Element("Options").Element("Delimiter").Value; + Comment = xdocOptions.Element("Options").Element("Comment").Value; + Sounds = xdocOptions.Element("Options").Element("Sounds").Value; + Language = xdocOptions.Element("Options").Element("Language").Value; + LogLevel = xdocOptions.Element("Options").Element("LogLevel").Value; + + // Print to screen + Log.Information("Options file loaded (" + PathOptionsFile + ")"); + + // Return a bool value. + return true; + } + else + { + // Print to screen + Log.Information("Options file was not found"); + + // Return a bool value. + return false; + } + } + catch (Exception ex) + { + // Print to screen + Log.Error("Loading options from file failed"); + Log.Error("" + ex.Message); + + // Return a bool value. + return false; + } + } + + /// + /// Saves a new options file. + /// + /// + /// + public bool SaveOptionsToFile(string strPath = null) + { + try + { + if (strPath != null) + { + PathOptionsFile = strPath; + } + + // Print to screen + Log.Information("Saving options file ..."); + + // Create a new options XDocument. + XDocument xdocOptions = new XDocument( + new XDeclaration("1.0", "utf-8", "yes"), + new XComment("This is a PatchEmAll options file"), + new XComment("WARNING: Using invalid values might cause this app to crash!"), + new XElement("Options", + new XAttribute("Version", AppVersion), + new XElement("PathROMsDir", PathROMsDir), + new XElement("PathPatchesDir", PathPatchesDir), + new XElement("PathDatsDir", PathDatsDir), + new XElement("PathDatPPDXMLFile", PathDatPPDXMLFile), + new XElement("PathXdeltaFile", PathXdeltaFile), + new XElement("XdeltaBuildCommand", XdeltaBuildCommand), + new XElement("MachineName", MachineName), + new XElement("Delimiter", Delimiter), + new XElement("Comment", Comment), + new XElement("Sounds", Sounds), + new XElement("Language", Language), + new XElement("LogLevel", LogLevel) + ) + ); + + // Create options file directory if it doesn't exist. + if (Directory.Exists(Path.GetDirectoryName(PathOptionsFile)) == false) Directory.CreateDirectory(Path.GetDirectoryName(PathOptionsFile)); + + // Save the contents of the options XDocument to the file. + xdocOptions.Save(PathOptionsFile); + + // Print to screen + Log.Information("Options file saved (" + PathOptionsFile + ")"); + + // Return a bool value. + return true; + } + catch (Exception ex) + { + // Print to screen + Log.Error("Saving options failed"); + Log.Error("" + ex.Message); + Log.Information("Ready"); + + // Return a bool value. + return false; + } + } + + /// + /// Sets the variables passed from the CLI. + /// + /// + public void LoadOptionsFromCLI(string[] strArgs) + { + try + { + foreach (string strArg in strArgs) + { + if (Regex.IsMatch(strArg, "^-", RegexOptions.IgnoreCase) == true) + { + // Set the command switch. + CommandSwitch = strArg; + } + if (Regex.IsMatch(strArg, "^RD:", RegexOptions.IgnoreCase) == true) + { + // Set the path to the ROMs directory. + PathROMsDir = strArg.Substring(3); + } + if (Regex.IsMatch(strArg, "^PD:", RegexOptions.IgnoreCase) == true) + { + // Set the path to the patches directory. + PathPatchesDir = strArg.Substring(3); + } + if (Regex.IsMatch(strArg, "^DD:", RegexOptions.IgnoreCase) == true) + { + // Set the path to the datafiles directory. + PathDatsDir = strArg.Substring(3); + } + if (Regex.IsMatch(strArg, "^DF:", RegexOptions.IgnoreCase) == true) + { + // Set the path to the Dat/PPD/XML file. + PathDatPPDXMLFile = strArg.Substring(3); + } + if (Regex.IsMatch(strArg, "^XF:", RegexOptions.IgnoreCase) == true) + { + // Set the path to the Xdelta file. + PathXdeltaFile = strArg.Substring(3); + } + if (Regex.IsMatch(strArg, "^XC:", RegexOptions.IgnoreCase) == true) + { + // Set the Xdelta command to use for building patches. + XdeltaBuildCommand = strArg.Substring(3); + } + if (Regex.IsMatch(strArg, "^DL:", RegexOptions.IgnoreCase) == true) + { + // Set the delimiter to use between game names. + Delimiter = strArg.Substring(3); + } + if (Regex.IsMatch(strArg, "^MN:", RegexOptions.IgnoreCase) == true) + { + // Set the machine name to use for building an official datafile. + MachineName = strArg.Substring(3); + } + if (Regex.IsMatch(strArg, "^CO:", RegexOptions.IgnoreCase) == true) + { + // Set the comment to use in patches and prepatches datafiles. + Comment = strArg.Substring(3); + } + if (Regex.IsMatch(strArg, "^OF:", RegexOptions.IgnoreCase) == true) + { + // Set the path to the options file. + PathOptionsFile = strArg.Substring(3); + } + if (Regex.IsMatch(strArg, "^LF:", RegexOptions.IgnoreCase) == true) + { + // Set the path to the log file. + PathLogFile = strArg.Substring(3); + } + if (Regex.IsMatch(strArg, "^SO:", RegexOptions.IgnoreCase) == true) + { + // Turn the sounds on or off. + Sounds = strArg.Substring(3); + } + if (Regex.IsMatch(strArg, "^LA:", RegexOptions.IgnoreCase) == true) + { + // Set the language. + Language = strArg.Substring(3); + } + if (Regex.IsMatch(strArg, "^LL:", RegexOptions.IgnoreCase) == true) + { + // Set the log level. + LogLevel = strArg.Substring(3); + } + } + } + catch (Exception ex) + { + // Print to screen + Log.Error("Loading options from CLI failed"); + Log.Error("" + ex.Message); + } + } + + #endregion + + #region CLI Methods + + /// + /// Updates/Sets the application title. + /// + /// + /// + public bool UpdateTitle(string strTitle = "") + { + try + { + Console.Title = AppName + " v" + AppVersion + strTitle; + return true; + } + catch (Exception) + { + return false; + } + } + + /// + /// Saves the log to a text file. + /// + /// + /// + public bool SaveLogToFile(string strPath = null) + { + try + { + if (strPath != null) + { + PathLogFile = strPath; + } + + // Determine if the user selected a log filename. + if (PathLogFile.Length == 0) + { + // Return a bool value. + return false; + } + else + { + // Print to screen + Log.Information("Saving log file ..."); + + // Create log file directory if it doesn't exist. + if (Directory.Exists(Path.GetDirectoryName(PathLogFile)) == false) Directory.CreateDirectory(Path.GetDirectoryName(PathLogFile)); + + // Save the contents of the log to a text file. + File.WriteAllLines(PathLogFile, LogLines); + + // Print to screen + Log.Information("Log file saved (" + PathLogFile + ")"); + + // Return a bool value. + return true; + } + } + catch (Exception ex) + { + // Print to screen + Log.Error("Saving log file failed"); + Log.Error(ex.Message); + + // Return a bool value. + return false; + } + } + + /// + /// Processes the command switch. + /// + public void ProcessCommandSwitch() + { + switch (CommandSwitch) + { + case "-buildroms": + StartupTasks(); // Checks and sets the activation and options variables from the WWW. + BuildROMs(); // Builds all possible ROMs. + break; + case "-buildpatches": + StartupTasks(); // Checks and sets the activation and options variables from the WWW. + BuildPatches(); // Builds all possible patches. + break; + case "-buildpatchesdat": + StartupTasks(); // Checks and sets the activation and options variables from the WWW. + BuildPatchesDatafile(); // Builds a datafile from the patches directory. + break; + case "-donations": + PrintDonationInfo(); // Prints the donation information. + break; + case "-registerapp": + RegisterApp(); // Registers the app. + break; + case "-diagnostics": + StartupTasks(); // Performs the application startup tasks. + PrintDiagnosticsInfo(); // Prints the diagnostics information. + break; + case "-license": + PrintLicense(); // Prints the license text. + break; + case "-version": + // Do nothing. // Does nothing. + break; + default: + PrintHelp(); // Prints the help text. + break; + } + } + + #endregion + + #region Build ROMs + + /// + /// Builds all possible ROMs from all supplied patches. + /// + public void BuildROMs() + { + try + { + // Print to screen + Log.Information("Building all possible ROMs ..."); + + // Declarations + bool boolExitFlag = false; // Exit flag + int intCounterTotalBuilt = 0; // Total built counter + int intCountArrDirFiles = 0; // Total loop count + string strPathRomsDir = PathROMsDir; // Path to the ROMs directory + string strPathPatchesDir = PathPatchesDir; // Path to the Patches directory + string strPathXdeltaFile = PathXdeltaFile; // Path to the Xdelta file + string strDelimiter = Delimiter; // Delimiter + + // Checkers + bool boolPathROMsDirCheck = PathROMsDirCheck(); + bool boolPathPatchesDirCheck = PathPatchesDirCheck(); + bool boolPathXdeltaFileCheck = PathXdeltaFileCheck(); + + // Check the paths and directories. + if (boolPathROMsDirCheck == false && boolPathPatchesDirCheck == false && boolPathXdeltaFileCheck == false) + { + // Print to screen + Log.Information("Options: ROMs Directory (" + strPathRomsDir + ")"); + Log.Information("Options: Patches Directory (" + strPathPatchesDir + ")"); + Log.Information("Options: Xdelta File (" + strPathXdeltaFile + ")"); + Log.Information("Options: Delimiter (" + strDelimiter + ")"); + + // Get the directory files array and count. + string[] arrDirFiles = Directory.GetFiles(strPathPatchesDir, "*.xd3"); + intCountArrDirFiles = arrDirFiles.Count(); + + // Create and start a stopwatch. + var stopWatch = new Stopwatch(); + stopWatch.Start(); + + // Main loop - Build all possible ROMs from all supplied patches. + while (intCountArrDirFiles > 0 && boolExitFlag == false) + { + // Set the exit flag to true. + boolExitFlag = true; + + // Loop through the patches directory files array. + foreach (string strPatchName in arrDirFiles) + { + // Explode the patch filename. + string strPatchNameNew = Path.GetFileName(strPatchName); + string[] arrDelimiters = { strDelimiter }; + string[] arrPatchNames = strPatchNameNew.Split(arrDelimiters, StringSplitOptions.RemoveEmptyEntries); + + // Check for source and destination parts. + if (arrPatchNames.Count() > 1) + { + // Rename the source and destination file. + string strPatchNameSrc = arrPatchNames[0]; + string strPatchNameDest = arrPatchNames[1].Replace(".xd3", ""); + + // If the source file exists and the destination file doesn't exist, build the destination file. + if (File.Exists(Path.Combine(strPathRomsDir, strPatchNameSrc)) == true && File.Exists(Path.Combine(strPathRomsDir, strPatchNameDest)) == false) + { + // Print to screen + Log.Information("Building: " + strPatchNameDest); + Log.Information("From: " + strPatchNameSrc); + + // Build the ROM. + Process pProcess = new Process(); + pProcess.StartInfo.UseShellExecute = false; + pProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; + pProcess.StartInfo.CreateNoWindow = true; + pProcess.StartInfo.RedirectStandardInput = true; + pProcess.StartInfo.RedirectStandardOutput = true; + pProcess.StartInfo.RedirectStandardError = true; + pProcess.StartInfo.FileName = strPathXdeltaFile; + pProcess.StartInfo.Arguments = "-d -s \"" + Path.Combine(strPathRomsDir, strPatchNameSrc) + "\" \"" + Path.Combine(strPathPatchesDir, strPatchNameNew) + "\" \"" + Path.Combine(strPathRomsDir, strPatchNameDest) + "\""; + pProcess.Start(); + string strError = pProcess.StandardError.ReadToEnd(); + pProcess.WaitForExit(); + + // This isn't the preferred way to check for errors. + if (strError == "") + { + // Increment the counter. + intCounterTotalBuilt++; + + // Set exit flag. + boolExitFlag = false; + } + else + { + // Print the output of Xdelta to the screen. + Log.Error("Bad patch (" + strPatchNameNew + ")"); + Log.Error(strError); + } + } + } + else + { + // Print to screen + Log.Error("Bad patch name (" + arrPatchNames[0] + ")"); + } + } + } + + // Stop the stopwatch. + stopWatch.Stop(); + + // Print to screen + Log.Information("" + intCounterTotalBuilt + " ROMs built successfully in " + stopWatch.Elapsed); + } + + // Print to screen + Log.Information("Building all possible ROMs completed"); + } + catch (Exception ex) + { + // Print to screen + Log.Error("Building all possible ROMs failed"); + Log.Error("" + ex.Message); + } + } + + #endregion + + #region Build Patches + + /// + /// Builds all possible patches from all supplied ROMs. + /// + public void BuildPatches() + { + try + { + // Print to screen + Log.Information("Building all possible patches ..."); + + // Declarations + int intCounterTotalBuilt = 0; // Total built counter + int intCountXdocPatches = 0; // Total loop counter + string strPathXdeltaFile = PathXdeltaFile; // Path to the Xdelta file + string strXdeltaBuildCommand = XdeltaBuildCommand; // Xdelta build command + string strPathDatPPDXMLFile = PathDatPPDXMLFile; // Path to the Dat/PPD/XML file + string strPathRomsDir = PathROMsDir; // Path to the ROMs directory + string strPathPatchesDir = PathPatchesDir; // Path to the Patches directory + string strDelimiter = Delimiter; // Delimiter + + // Checkers + bool boolPathROMsDirCheck = PathROMsDirCheck(); + bool boolPathPatchesDirCheck = PathPatchesDirCheck(); + bool boolPathXdeltaFileCheck = PathXdeltaFileCheck(); + bool boolPathDatPPDXMLFileCheck = PathDatPPDXMLFileCheck(); + + // Check the paths and directories. + if (boolPathROMsDirCheck == false && boolPathPatchesDirCheck == false && boolPathXdeltaFileCheck == false && boolPathDatPPDXMLFileCheck == false) + { + // Print to screen + Log.Information("Options: ROMs Directory (" + strPathRomsDir + ")"); + Log.Information("Options: Patches Directory (" + strPathPatchesDir + ")"); + Log.Information("Options: Dat/PPD/XML File (" + strPathDatPPDXMLFile + ")"); + Log.Information("Options: Xdelta File (" + strPathXdeltaFile + ")"); + Log.Information("Options: Xdelta Build Command (" + strXdeltaBuildCommand + ")"); + + // Get the patches XDocument from the dat file and count. + XDocument xdocPatches = new XDocument(); + xdocPatches = XDocument.Load(strPathDatPPDXMLFile); + intCountXdocPatches = xdocPatches.Descendants("rom").Count(); + + // Create and start a stopwatch. + var stopWatch = new Stopwatch(); + stopWatch.Start(); + + // Main Loop - Build the patches from the datafile and all supplied ROMs. + if (intCountXdocPatches > 0) + { + // Loop through the rom elements. + foreach (XElement xmlRom in xdocPatches.Descendants("rom")) + { + // Get the XML decoded patch name. + string strPatchName = xmlRom.Attribute("name").Value; + + // Explode the patch filename. + string[] arrDelimiters = { strDelimiter }; + string[] arrPatchNames = strPatchName.Split(arrDelimiters, StringSplitOptions.RemoveEmptyEntries); + + // Check for source and destination parts. + if (arrPatchNames.Count() > 1) + { + // Rename the source and destination file. + string strPatchNameSrc = arrPatchNames[0]; + string strPatchNameDest = arrPatchNames[1].Replace(".xd3", ""); + + // If the source file exists, the destination file exists and the patch doesn't exist, build the patch. + if (File.Exists(Path.Combine(strPathRomsDir, strPatchNameSrc)) == true && File.Exists(Path.Combine(strPathRomsDir, strPatchNameDest)) == true && File.Exists(Path.Combine(strPathPatchesDir, strPatchName)) == false) + { + // Print to screen + Log.Information("Building: " + strPatchName); + + // Build the patch. + Process pProcess = new Process(); + pProcess.StartInfo.UseShellExecute = false; + pProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; + pProcess.StartInfo.CreateNoWindow = true; + pProcess.StartInfo.RedirectStandardInput = true; + pProcess.StartInfo.RedirectStandardOutput = true; + pProcess.StartInfo.RedirectStandardError = true; + pProcess.StartInfo.FileName = strPathXdeltaFile; + pProcess.StartInfo.Arguments = strXdeltaBuildCommand + " \"" + Path.Combine(strPathRomsDir, strPatchNameSrc) + "\" \"" + Path.Combine(strPathRomsDir, strPatchNameDest) + "\" \"" + Path.Combine(strPathPatchesDir, strPatchName) + "\""; + pProcess.Start(); + string strError = pProcess.StandardError.ReadToEnd(); + pProcess.WaitForExit(); + + // This isn't the preferred way to check for errors. + if (strError == "") + { + // Increment the counter. + intCounterTotalBuilt++; + } + else + { + // Print the output of Xdelta to the screen. + Log.Error("Bad patch (" + strPatchName + ")"); + Log.Error(strError); + } + } + } + else + { + // Print to screen + Log.Error("Bad patch name (" + arrPatchNames[0] + ")"); + } + } + } + + // Stop the stopwatch. + stopWatch.Stop(); + + // Print to screen + Log.Information("" + intCounterTotalBuilt + " Patches built successfully in " + stopWatch.Elapsed); + } + + // Print to screen + Log.Information("Building all possible patches completed"); + } + catch (Exception ex) + { + // Print to screen + Log.Error("Building all possible patches failed"); + Log.Error(ex.Message); + } + } + + #endregion + + #region Build Patches Datafile + + /// + /// Builds a datafile from the patches directory. + /// + public void BuildPatchesDatafile() + { + try + { + // Print to screen + Log.Information("Building patches datafile ..."); + + // Declarations + int intCounterTotalBuilt = 0; // Total built counter + int intCountArrDirFiles = 0; // Total loop count + string strPathPatchesDir = PathPatchesDir; // Path to the Patches directory + string strPathDatsDir = PathDatsDir; // Path to the Dats directory + string strName = MachineName; // Datafile name + string strVersion = DateTime.Now.ToString("yyyyMMdd HHmmss"); // Datafile version + string strDate = DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss"); // Datafile date + string strDescription = MachineName + " - Patches (0) (" + strVersion + ")"; // Datafile description + string strCategory = "Patches"; // Datafile category + string strAuthor = AppName + " v" + AppVersion; // Datafile author + string strComment = Comment; // Datafile comment + string strPathSaveFilename = ""; // Path to the new datafile + string strXdeltaFile = Path.GetFileName(PathXdeltaFile); // Datafile Xdelta file + string strXdeltaBuildCommand = XdeltaBuildCommand; // Datafile Xdelta build command + string strMachineName = MachineName + " - Patches"; // Datafile machine name + + // Checkers + bool boolPathDatsDirCheck = PathDatsDirCheck(); + bool boolPathPatchesDirCheck = PathPatchesDirCheck(); + + // Check the paths and directories. + if (boolPathDatsDirCheck == false && boolPathPatchesDirCheck == false) + { + // Print to screen + Log.Information("Options: Patches Directory (" + strPathPatchesDir + ")"); + Log.Information("Options: Dats Directory (" + strPathDatsDir + ")"); + Log.Information("Options: Dat Name (" + strName + ")"); + Log.Information("Options: Dat Category (" + strCategory + ")"); + Log.Information("Options: Dat Date (" + strDate + ")"); + Log.Information("Options: Dat Comment (" + strComment + ")"); + Log.Information("Options: Xdelta File (" + strXdeltaFile + ")"); + Log.Information("Options: Xdelta Build Command (" + strXdeltaBuildCommand + ")"); + + // Get the directory files array and count. + string[] arrDirFiles = Directory.GetFiles(strPathPatchesDir, "*.xd3"); + intCountArrDirFiles = arrDirFiles.Count(); + + // Create and start a stopwatch. + var stopWatch = new Stopwatch(); + stopWatch.Start(); + + // Main loop - Build a datafile from the patches directory files. + if (intCountArrDirFiles > 0) + { + // Create a new datafile XDocument. + XDocument xdocDatafile = new XDocument( + new XDeclaration("1.0", "utf-8", "yes"), + new XElement("datafile", + new XElement("header", + new XElement("name", strName), + new XElement("description", strDescription), + new XElement("category", strCategory), + new XElement("version", strVersion), + new XElement("date", strDate), + new XElement("author", strAuthor), + new XElement("comment", strComment), + new XElement("buildemall", + new XAttribute("xdeltafile", strXdeltaFile), + new XAttribute("xdeltabuildcommand", strXdeltaBuildCommand) + ) + ) + ) + ); + + // Loop through the directory files array. + foreach (string strPathFile in arrDirFiles) + { + // Get the patch filesize and filename. + string strRomFilename = Path.GetFileName(strPathFile); + string strRomFileSize = new FileInfo(strPathFile).Length.ToString(); + + // Print to screen + Log.Information("Adding: " + strRomFilename); + + // Get the game name, category and description. + string strGameName = Path.GetFileNameWithoutExtension(strPathFile); + string strGameCategory = "Patches"; + string strGameDescription = Path.GetFileNameWithoutExtension(strPathFile); + + // Get the patch hashes. + byte[] arrRomFileHashSHA1 = new SHA1CryptoServiceProvider().ComputeHash(File.OpenRead(strPathFile)); + byte[] arrRomFileHashMD5 = new MD5CryptoServiceProvider().ComputeHash(File.OpenRead(strPathFile)); + byte[] arrRomFileHashCRC = new CRC32CryptoServiceProvider().ComputeHash(File.OpenRead(strPathFile)); + string strRomFileHashSHA1 = BitConverter.ToString(arrRomFileHashSHA1).Replace("-", "").ToLower(); + string strRomFileHashMD5 = BitConverter.ToString(arrRomFileHashMD5).Replace("-", "").ToLower(); + string strRomFileHashCRC = BitConverter.ToString(arrRomFileHashCRC).Replace("-", "").ToLower(); + + // Add the patch file to the datafile XDocument. + xdocDatafile.Element("datafile").Add( + new XElement("game", + new XAttribute("name", strGameName), + new XElement("category", strGameCategory), + new XElement("description", strGameDescription), + new XElement("rom", + new XAttribute("name", strRomFilename), + new XAttribute("size", strRomFileSize), + new XAttribute("crc", strRomFileHashCRC), + new XAttribute("md5", strRomFileHashMD5), + new XAttribute("sha1", strRomFileHashSHA1) + ) + ) + ); + + // Increment the counter. + intCounterTotalBuilt++; + } + + // Modify the datafile header elements and filename. + xdocDatafile.Element("datafile").Element("header").Element("description").Value = strMachineName + " (" + intCounterTotalBuilt + ") (" + strVersion + ")"; + strPathSaveFilename = Path.Combine(strPathDatsDir, strMachineName + " (" + intCounterTotalBuilt + ") (" + strVersion + ").dat"); + + // Save the contents of the datafile XDocument to the file. + xdocDatafile.Save(strPathSaveFilename); + } + + // Stop the stopwatch. + stopWatch.Stop(); + + // Print to screen + Log.Information("" + intCounterTotalBuilt + " patches added to datafile successfully in " + stopWatch.Elapsed); + } + + // Print to screen + Log.Information("Building patches datafile completed"); + } + catch (Exception ex) + { + // Print to screen + Log.Error("Building patches datafile failed"); + Log.Error(ex.Message); + } + } + + #endregion + + #region Checkers + + /// + /// Checks the Dat/PPD/XML file path. + /// + /// + public bool PathDatPPDXMLFileCheck() + { + // Check if the file exists. + if (File.Exists(PathDatPPDXMLFile) == true) + { + // Return the exit value. + return false; + } + else + { + // Print to screen and set the exit flag value. + Log.Error("The Dat/PPD/XML file path does not exist (" + PathDatPPDXMLFile + ")"); + return true; + } + } + + /// + /// Checks the ROMs directory path. + /// + /// + public bool PathROMsDirCheck() + { + // Check if the directory exists. + if (Directory.Exists(PathROMsDir) == true) + { + // Return the exit value. + return false; + } + else + { + // Print to screen and set the exit flag value. + Log.Error("The ROMs directory path does not exist (" + PathROMsDir + ")"); + return true; + } + } + + /// + /// Checks the Xdelta file path. + /// + /// + public bool PathXdeltaFileCheck() + { + // Check if the file exists. + if (File.Exists(PathXdeltaFile) == true) + { + // Return the exit value. + return false; + } + else + { + // Print to screen and set the exit flag value. + Log.Error("The Xdelta file path does not exist (" + PathXdeltaFile + ")"); + return true; + } + } + + /// + /// Checks the Patches directory path. + /// + /// + public bool PathPatchesDirCheck() + { + // Check if the directory exists. + if (Directory.Exists(PathPatchesDir) == true) + { + // Return the exit value. + return false; + } + else + { + // Print to screen and set the exit flag value. + Log.Error("The Patches directory path does not exist (" + PathPatchesDir + ")"); + return true; + } + } + + /// + /// Checks the Dats directory path. + /// + /// + public bool PathDatsDirCheck() + { + // Check if the directory exists. + if (Directory.Exists(PathDatsDir) == true) + { + // Return the exit value. + return false; + } + else + { + // Print to screen and set the exit flag value. + Log.Error("The Dats directory path does not exist (" + PathDatsDir + ")"); + return true; + } + } + + #endregion + + #region Printers + + /// + /// EnumerateLines + /// + /// + /// + public IEnumerable EnumerateLines(TextReader reader) + { + string line; + + while ((line = reader.ReadLine()) != null) + { + yield return line; + } + } + + /// + /// ReadAllResourceLines + /// + /// + /// + public string[] ReadAllResourceLines(string resourceText) + { + using (StringReader reader = new StringReader(resourceText)) + { + return EnumerateLines(reader).ToArray(); + } + } + + /// + /// Prints the help text. + /// + public void PrintHelp() + { + // Read all of the lines of the file into an array. + string[] arrLines = ReadAllResourceLines(Properties.Resources.PatchEmAll_HELP_CMD); + + // Loop through each line of the array. + foreach (string strLine in arrLines) + { + // Print to screen. + Log.Information(strLine); + } + } + + /// + /// Prints the license text. + /// + public void PrintLicense() + { + // Read all of the lines of the file into an array. + string[] arrLines = ReadAllResourceLines(Properties.Resources.PatchEmAll_LICENSE); + + // Loop through each line of the array. + foreach (string strLine in arrLines) + { + // Print to screen. + Log.Information(strLine); + } + } + + /// + /// Prints the version and copyright notice texts. + /// + public void PrintVersion() + { + // Print to screen + Log.Information("-------------------------------------------------------------------------"); + Log.Information(AppName + " v" + AppVersion); + Log.Information(AppCopyright); + Log.Information("-------------------------------------------------------------------------"); + } + + /// + /// Prints the donation information. + /// + public void PrintDonationInfo() + { + // Read all of the lines of the file into an array. + string[] arrLines = ReadAllResourceLines(Properties.Resources.PatchEmAll_DONATIONS); + + // Loop through each line of the array. + foreach (string strLine in arrLines) + { + // Print to screen. + Log.Information(strLine); + } + } + + /// + /// Prints the diagnostics information + /// + public void PrintDiagnosticsInfo() + { + try + { + // Print to screen + Log.Information("-Diagnostics Info"); + + // Print to screen + Log.Information("-Environment.OSVersion Detaiils"); + Log.Information("OS Version: " + Environment.OSVersion.Version.ToString()); + Log.Information("OS Platoform: " + Environment.OSVersion.Platform.ToString()); + Log.Information("OS SP: " + Environment.OSVersion.ServicePack.ToString()); + Log.Information("OS Version String: " + Environment.OSVersion.VersionString.ToString()); + + // Print to screen + Log.Information("-Environment.OSVersion.Version Detaiils"); + Log.Information("Major version: " + Environment.OSVersion.Version.Major.ToString()); + Log.Information("Major Revision: " + Environment.OSVersion.Version.MajorRevision.ToString()); + Log.Information("Minor version: " + Environment.OSVersion.Version.Minor.ToString()); + Log.Information("Minor Revision: " + Environment.OSVersion.Version.MinorRevision.ToString()); + Log.Information("Build: " + Environment.OSVersion.Version.Build.ToString()); + + // Print to screen + Log.Information("-Runtime.InteropServices.RuntimeInformation Detaiils"); + Log.Information("Framework Description: " + RuntimeInformation.FrameworkDescription.ToString()); + Log.Information("OS Architecture: " + RuntimeInformation.OSArchitecture.ToString()); + Log.Information("OS Description: " + RuntimeInformation.OSDescription.ToString()); + Log.Information("Process Architecture: " + RuntimeInformation.ProcessArchitecture.ToString()); + + // Print to screen + Log.Information("-Assembly.GetEntryAssembly Detaiils"); + Log.Information("Product Name: " + FileVersionInfo.GetVersionInfo(Assembly.GetEntryAssembly().Location).ProductName); + Log.Information("Product Version: " + FileVersionInfo.GetVersionInfo(Assembly.GetEntryAssembly().Location).ProductVersion); + Log.Information("Legal Copyright: " + FileVersionInfo.GetVersionInfo(Assembly.GetEntryAssembly().Location).LegalCopyright); + + // Print to screen + Log.Information("-Assembly.GetExecutingAssembly Detaiils"); + Log.Information("Product Name: " + FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).ProductName); + Log.Information("Product Version: " + FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).ProductVersion); + Log.Information("Legal Copyright: " + FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).LegalCopyright); + + // Print to screen + Log.Information("-Environment Detaiils"); + Log.Information("Processor Count: " + Environment.ProcessorCount.ToString()); + Log.Information("Is 64 Bit OS: " + Environment.Is64BitOperatingSystem.ToString()); + // Log.Information("Machine Name: " + Environment.MachineName.ToString()); + // Log.Information("User Name: " + Environment.UserName.ToString()); + + // Print to screen + // Log.Information("-App Details"); + // Log.Information(""); + } + catch (Exception ex) + { + // Print to screen + Log.Error("Test failed"); + Log.Error(ex.Message); + Log.Error(ex.StackTrace); + Log.Error(ex.ToString()); + } + } + + #endregion + } +} diff --git a/PatchEmAll/PatchEmAll.csproj b/PatchEmAll/PatchEmAll.csproj new file mode 100644 index 0000000..07f2f36 --- /dev/null +++ b/PatchEmAll/PatchEmAll.csproj @@ -0,0 +1,102 @@ + + + + + Debug + AnyCPU + {956E3B6C-EEE3-44A9-BE64-7B3AE0238924} + Library + Properties + PatchEmAll + PatchEmAll + v4.8 + 512 + true + + + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + bin\Debug\PatchEmAll.xml + + + none + true + bin\Release\ + TRACE + prompt + 4 + + + false + + + PatchEmAll.snk + + + App.ico + + + + ..\packages\Serilog.2.12.0\lib\net47\Serilog.dll + + + ..\packages\Serilog.Sinks.Console.4.1.0\lib\net45\Serilog.Sinks.Console.dll + + + ..\packages\Serilog.Sinks.LogEmAll.0.0.7\lib\net461\Serilog.Sinks.LogEmAll.dll + + + + + + + + + + + + + True + True + Resources.resx + + + + + PublicResXFileCodeGenerator + Resources.Designer.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/PatchEmAll/PatchEmAll.nuspec b/PatchEmAll/PatchEmAll.nuspec new file mode 100644 index 0000000..2b8d835 --- /dev/null +++ b/PatchEmAll/PatchEmAll.nuspec @@ -0,0 +1,44 @@ + + + + PatchEmAll + PatchEmAll + 0.0.0 + + Use the PatchEmAll Library (.dll) to patch ROMs from anywhere in your application. + + First, install or add the PatchEmAll Nuget Package to your application by downloading the [nuget.nupkg](https://gitemall.devemall.int.eu.org/TommySalami/PatchEmAll/packages) to your project folder and opening a Nuget Package Manager Console in Visual Studio and type: + + ``` + Install-Package nuget.nupkg + ``` + + Then, create and use a new PatchEmAll Object from anywhere in your application like the following: + + ``` + PatchEmAll.PatchEmAll pea = new PatchEmAll.PatchEmAll(); + ``` + + PatchEmAll + LICENSE.txt + false + icon.png + https://gitemall.devemall.int.eu.org/TommySalami/PatchEmAll/PatchEmAll/Resources/Images/PatchEmAll.png + https://www.devemall.int.eu.org + See https://gitemall.devemall.int.eu.org/TommySalami/PatchEmAll/releases for release notes. + Copyright (c) 2016-2025 PatchEmAll - All Rights Reserved + PatchEmAll Automated ROM Patcher Patch ROMs + + + + + + + + + + + + + + \ No newline at end of file diff --git a/PatchEmAll/PatchEmAll.snk b/PatchEmAll/PatchEmAll.snk new file mode 100644 index 0000000000000000000000000000000000000000..0cada28c1b24511016942980195db624fe7ebf14 GIT binary patch literal 596 zcmV-a0;~N80ssI2Bme+XQ$aES1ONa50097}){BOOW~S;_6dXbUjn=R-VB<_aKzoHl zAjKVo=FkxQ!;ZAoefGGM5(K(uGQvj19z}QJq{I^yeElwC%jz#qJ|z;-)a?op-G>%o zD=&!*$;nLG&|$s5J@>r;I+d|(6T1B~@!VSbc4Q2b%=;G}hPe#2nb9iy(%J;o(*KDC zk7xASlG^|&+Lbs~*Hf_E!qq|>3JP%0X-e|zpT5D%yB%{EH?!cRFL=oC-IbNEDcj=mY6K&7K<>o7@x z{#;+GrzUo{6H~lG2+t=HEb(oEjTr@%gRW1zF2Z+~=XO3MKJ`TFkCaW^d{5!9q*UKiu7E=a82MQ1K{qq9d&P3OfJ7 ziOuMtoSkGX#p&+>Z5cIDLvWlnd0)U(Dw0=<11~Y)@@l(vonCpu=SRd~-%wN>2Wp$N z^~Z< +// 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. +// +//------------------------------------------------------------------------------ + +namespace PatchEmAll.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // 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()] + public 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() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("PatchEmAll.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to ------------------------------------------------------------------ + ///PatchEmAll - Donations version 20240901 + ///Copyright (c) 2016-2024 PatchEmAll - All Rights Reserved + ///------------------------------------------------------------------ + /// + ///As you may know, a lot of time, effort and hard work goes into the + ///development and maintenance of a world class automated ROM + ///patcher. If you like or use this software regularly, maybe you + ///would like to make a donation. + /// + ///Please use the following donation link to make a [rest of string was truncated]";. + /// + public static string PatchEmAll_DONATIONS { + get { + return ResourceManager.GetString("PatchEmAll_DONATIONS", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to ------------------------------------------------------------------------------- + ///PatchEmAll - Help version 20240901 + ///Copyright (c) 2016-2024 PatchEmAll - All Rights Reserved + ///------------------------------------------------------------------------------- + /// + ///[I] About + ///[II] Notes + ///[III] Installation + ///[IV] How To Build ROMs, Patches and Datafiles + ///[V] How To Build PPDs + ///[VI] FAQ + ///[VII] Contributing + ///[VIII] Contact + ///[IX] Disclaimers + /// + ///[I] About + ///---------------------------------------------------------------- [rest of string was truncated]";. + /// + public static string PatchEmAll_HELP { + get { + return ResourceManager.GetString("PatchEmAll_HELP", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to ------------------------------------------------------------------------------- + ///PatchEmAll - Help - CMD version 20240901 + ///Copyright (c) 2016-2024 PatchEmAll - All Rights Reserved + ///------------------------------------------------------------------------------- + /// + ///Usage: + /// PatchEmAll-CLI.exe [-command] [option:] + /// Options that contain spaces must be enclosed in quotations + /// Options may be specified in any order + /// Only one command may be be used + /// + ///------------------------------------------------------------- [rest of string was truncated]";. + /// + public static string PatchEmAll_HELP_CMD { + get { + return ResourceManager.GetString("PatchEmAll_HELP_CMD", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to *************************************************************** + ///PatchEmAll - License version 20240901 + ///Copyright (c) 2016-2024 PatchEmAll - All Rights Reserved + ///*************************************************************** + /// + ///TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + /// + ///1. Redistributions in any form are not permitted whatsoever, + ///under any conditions. + /// + ///2. This software may not be reverse engineered, decompiled, + ///or disassembled. + /// + ///3. PatchEmAll may publish revised and/or new versio [rest of string was truncated]";. + /// + public static string PatchEmAll_LICENSE { + get { + return ResourceManager.GetString("PatchEmAll_LICENSE", resourceCulture); + } + } + } +} diff --git a/PatchEmAll/Properties/Resources.resx b/PatchEmAll/Properties/Resources.resx new file mode 100644 index 0000000..853560c --- /dev/null +++ b/PatchEmAll/Properties/Resources.resx @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\Docs\PatchEmAll-DONATIONS.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 + + + ..\Resources\Docs\PatchEmAll-HELP.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 + + + ..\Resources\Docs\PatchEmAll-HELP-CMD.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 + + + ..\Resources\Docs\PatchEmAll-LICENSE.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 + + \ No newline at end of file diff --git a/PatchEmAll/Resources/Docs/PatchEmAll-DONATIONS.txt b/PatchEmAll/Resources/Docs/PatchEmAll-DONATIONS.txt new file mode 100644 index 0000000..1098658 --- /dev/null +++ b/PatchEmAll/Resources/Docs/PatchEmAll-DONATIONS.txt @@ -0,0 +1,15 @@ +------------------------------------------------------------------ +PatchEmAll - Donations version 20250721 +Copyright (c) 2016-2025 PatchEmAll - All Rights Reserved +------------------------------------------------------------------ + +As you may know, a lot of time, effort and hard work goes into the +development and maintenance of a world class automated ROM +patcher. If you like or use this software regularly, maybe you +would like to make a donation. + +Please use the following donation link to make a donation: + +https://www.devemall.int.eu.org/index.php?action=donations + +Home Page: https://www.devemall.int.eu.org/ diff --git a/PatchEmAll/Resources/Docs/PatchEmAll-HELP-CMD.txt b/PatchEmAll/Resources/Docs/PatchEmAll-HELP-CMD.txt new file mode 100644 index 0000000..fff595d --- /dev/null +++ b/PatchEmAll/Resources/Docs/PatchEmAll-HELP-CMD.txt @@ -0,0 +1,75 @@ +------------------------------------------------------------------------------- +PatchEmAll - Help - CMD version 20250721 +Copyright (c) 2016-2025 PatchEmAll - All Rights Reserved +------------------------------------------------------------------------------- + +Usage: + PatchEmAll-CLI.exe [-command] [option:] + Options that contain spaces must be enclosed in quotations + Options may be specified in any order + Only one command may be be used + +------------------------------------------------------------------------------- + +Build ROMs Example: + PatchEmAll-CLI.exe -buildroms "RD:C:\PEA\ROMs" "PD:C:\PEA\Patches" "XF:C:\PEA\Xdelta\xdelta3-3.1.0-x86_64.exe" "DL: -- " + +------------------------------------------------------------------------------- + +Build Patches Example: + PatchEmAll-CLI.exe -buildpatches "RD:C:\PEA\ROMs" "PD:C:\PEA\Patches" "XF:C:\PEA\Xdelta\xdelta3-3.1.0-x86_64.exe" "XC:-e -9 -s" "DL: -- " "DF:C:\PEA\Dats\YourDatPPDXMLFile.dat" + +------------------------------------------------------------------------------- + +Build Patches Datafile Example: + PatchEmAll-CLI.exe -buildpatchesdat "PD:C:\PEA\Patches" "XF:C:\PEA\Xdelta\xdelta3-3.1.0-x86_64.exe" "XC:-e -9 -s" "MN:YourMachineName" "DD:C:\PEA\Dats" "CO:YourComment" + +------------------------------------------------------------------------------- + +Standard Commands: + -buildroms Build all possible ROMs + -buildpatches Build all possible patches + -buildpatchesdat Build a datafile from the patches directory + -saveoptions Save the options + -help Print the help + -donations Print the donations information + -license Print the license + -version Print the version + -registerapp Register the app + +------------------------------------------------------------------------------- + +Build Options: + XC: Command to use for building Xdelta patches + DL: Delimiter used between game names + MN: Machine name to use for building a datafile + CO: Comment to use for building a datafile + +------------------------------------------------------------------ + +Path Options: + RD: Path to the ROMs directory + PD: Path to the patches directory + DD: Path to the datafiles directory + DF: Path to the Dat/PPD/XML file + XF: Path to the Xdelta file + OF: Path to the options file - Overwrites all options + LF: Path to the log file + +------------------------------------------------------------------ + +Developer Options: + SO: Turn the sounds on or off + on + off - DEFAULT + LA: Language + en - DEFAULT + LL: Log Level + Information - DEFAULT + +------------------------------------------------------------------ + +Registration Options: + RA: Register app username + RB: Register app email address + RC: Register app password diff --git a/PatchEmAll/Resources/Docs/PatchEmAll-HELP.txt b/PatchEmAll/Resources/Docs/PatchEmAll-HELP.txt new file mode 100644 index 0000000..ed8ded4 --- /dev/null +++ b/PatchEmAll/Resources/Docs/PatchEmAll-HELP.txt @@ -0,0 +1,163 @@ +------------------------------------------------------------------------------- +PatchEmAll - Help version 20250721 +Copyright (c) 2016-2025 PatchEmAll - All Rights Reserved +------------------------------------------------------------------------------- + +[I] About +[II] Notes +[III] Installation +[IV] How To Build ROMs, Patches and Datafiles +[V] How To Build PPDs +[VI] FAQ +[VII] Contributing +[VIII] Contact +[IX] Disclaimers + +[I] About +------------------------------------------------------------------------------- +PatchEmAll or PEA is the original software application for automating the process of building ROMs from patches and building patches from ROMs. + +Are you a ROM collector who wants to save vast amounts of time and bandwidth? Are you a patcher who is tired of working like an octopussy? If so, PatchEmAll is for you. It's easy and fun to use. + +PatchEmAll comes with both a command line interface and a graphical interface. No matter which interface you choose, building ROMs and patches is easy. Just run PatchEmAll to build all of the ROMs or patches. + +PatchEmAll uses Xdelta to create a patch containing the diff data between two ROMs. The resulting patch is usually very small and can be used to recreate an exact image of a second ROM. + +Although PatchEmAll has more than one purpose, it's main purpose is to automate the process of building ROMs and patches. This automated process not only saves you vast amounts of time and bandwidth, but also creates a uniform set of patches. + +PatchEmAll makes life simpler and easier. Just run PatchEmAll and go eat dinner, go to work or go to sleep. When you return, PatchEmAll has built every possible ROM or patch that it can... Or at least it's still working on it. + +Using PatchEmAll, the sky is the limit as to how many patches and datafiles you create. + +[II] Notes +------------------------------------------------------------------------------- +1) The ROMs, patches and datafiles directories should be as close to the drive's root directory as possible. The nature of things dictates that there will be very long filenames, on occasion. Keep in mind that some things may not work correctly if you choose too long of a path to put your files. +2) This software does not work on Zip, 7zip, TZip or any kind of archived ROMs. You must unzip or unarchive them into the appropriate directories. +3) Patch names and ROM names that do not exactly match the names in all official datafiles may break this software and may cause havoc, serious injury or death. +4) This software is not recursive. That means it won't find patches or ROMs inside of sub directories. +5) This software is not a ROM manager. Use a ROM manager for renaming, checking and managing your ROMs and patches. +6) This software is not a datafile tool. It doesn't have the ability to recognize every kind of datafile in existence. It should only be used with officially supported PatchEmAll datafiles. + +[III] Installation +------------------------------------------------------------------------------- +This software is designed to run on various operating systems, using .NET or Mono. Windows already comes with .NET Framework, but you can still install and use Mono if you'd like. + +First, if you are installing Mono, you should switch to the root user or System Administrator to install and use Mono and then switch to your downloademall user to install and use DownloadEmAll. + +Next, download and unzip the software to any new location that you wish to use. However, this software should be installed as close to the drive's root directory as possible. + +I like to put my installation in a directory called PEA on my Windows C:\ drive or in my Linux ~/ (home) directory. My installation layout looks like this: + +C:\PEA\BASHes\ +C:\PEA\Batches\ +C:\PEA\Dats\ +C:\PEA\Docs\ +C:\PEA\Logs\ +C:\PEA\Options\ +C:\PEA\Patches\ +C:\PEA\ROMs\ +C:\PEA\Xdelta\ +C:\PEA\PatchEmAll-CLI.exe +C:\PEA\PatchEmAll-GUI.exe + +or + +~/PEA/BASHes/ +~/PEA/Batches/ +~/PEA/Dats/ +~/PEA/Docs/ +~/PEA/Logs/ +~/PEA/Options/ +~/PEA/Patches/ +~/PEA/ROMs/ +~/PEA/Xdelta/ +~/PEA/PatchEmAll-CLI.exe +~/PEA/PatchEmAll-GUI.exe + +After this software is installed, you can create a new options file using the GUI or CLI version. + +PatchEmAll will try to automatically load the saved default options file. If it is not found, it will load some default options. + +PatchEmAll allows you to save many sets of options for numerous sets of patches and prepatches and quickly switch between them. + +[IV] How To Build ROMs, Patches and Datafiles +------------------------------------------------------------------------------- +Step 1) +Download the official PatchEmAll patches (.dat) and prepatches (.ppd) datafiles and unzip them into the Dats folder. + +Step 2) +Set the options according to the following requirements: +A) Building ROMs requires a ROMs directory, a patches directory, an Xdelta file and a delimiter. +B) Building patches requires a ROMs directory, a patches directory, an Xdelta file, an Xdelta build command, a delimiter and a Dat/PPD/XML file. +C) Building an official datafile requires a patches directory, an Xdelta file, an Xdelta build command, a machine name, a dats directory, and optionally a comment. + +Step 3) +Place all of the unzipped, unarchived ROMs into the ROMs directory. + +Step 4) +Place all of the unzipped, unarchived patches into the patches directory. + +Step 5) +Click the button with the action that you want to perform. + +[V] How To Build PPDs +------------------------------------------------------------------------------- +* The GUI version must be used to build PPDs. * + +Step 1) +Click the Load Dat button to load a datafile into the ROMs boxes. + +Step 2) +Select a ROM on the left to patch from. Select a ROM on the right to patch to. Click the Add Prepatch button. Add as many prepatches as you want. + +Step 3) +Set the machine name and a comment in the options. + +Step 4) +Save your PPD file. + +[VI] FAQ +------------------------------------------------------------------------------- +Q1: What is PatchEmAll? +A1: PatchEmAll is a software tool that automates the processes of building ROMs from patches and building patches from ROMs. + +Q2: Why do I need PatchEmAll? +A2: To automate the process of building ROMs and patches. Working like an octopussy is needless and senseless, when you can just run BuildEmall to build everything possible and all at once. A better question is, why would anyone want to build one ROM or one patch at a time, unless he only needs one ROM or patch? + +Q3: What makes PatchEmAll different? +A3: PatchEmAll is a software project, not a patching project. PatchEmAll is used by groups or individuals who operate and maintain patching projects. + +Q4: How do I get my datafiles included in the official PatchEmAll datafiles? +A4: Simply submit them to be included in the official datafiles. The official PatchEmAll datafiles should only contain 100% working patches. Each set has it's own datafile and there is no mess. + +Q5: I only want to build a few ROMs or patches. Do I have to build the entire set? +A5: Certainly not! Just put the few ROMs and patches into the ROMs and Patches directories and run PatchEmAll. It will only build the ROMs and patches that are possible out of the ROMs and patches that you supplied it with. + +[VII] Contributing +------------------------------------------------------------------------------- +Let's work better together. We are looking to collaborate with like-minded people who want to contribute in any capacity. Collaboration is open to everyone and we need your help if you are a: +* Collector +* Database Administrator +* Datter +* Developer +* Dumper +* Graphic Artist +* Translator +* Player +* Tester + +Feel free to: +* Fork the repository +* Create an issue +* Branch your repository with the issue number and a meaningful name related to the changes you are making +* Create a pull request + +[VIII] Contact +------------------------------------------------------------------------------- +GitEmAll: https://gitemall.devemall.int.eu.org/TommySalami/PatchEmAll + +[IX] Disclaimers +------------------------------------------------------------------------------- +We do not upload, share, distribute or provide links to anything illegal, including ROMs or patches. + +This software includes Xdelta software, freely available from http://www.xdelta.org/ diff --git a/PatchEmAll/Resources/Docs/PatchEmAll-LICENSE.rtf b/PatchEmAll/Resources/Docs/PatchEmAll-LICENSE.rtf new file mode 100644 index 0000000000000000000000000000000000000000..22e77a8989ccd8740e8e0a8e532b56fc67ea054d GIT binary patch literal 2471 zcmcImQE%He5Z-fv{)aL6kUB@ z_LUE>UzIzi>Qb|b=assh{QL>O+rBk^S=lTwL+xLbE$h}7aPnh68|w9|1vAx#Y=gFi z4-kurcbdaJS6avpCLYS-58-_8>#HH-nyY(WJJ26X_{4#@Z$Ywo4nYz@m?jY|Xqx13m1eNa$p|vC$kJ#T z+U?O`716xN=yYj!j&b}ka;$|mO00T=qG=Evu#lo})s}*(xWxb&mn@@7cENw=1s3kVudn2Z_NHMr57y zI_j1U)0PUjUc<;+S&Qaj*fS`)2DaNFMTVI>XSAs#s)ngmvgS}J&TL^^9gJ1_a1UMx zbv_1a01qEzuTUJl!&-}#XobOO5_+t{;QU-B+Xq!8Rn5BU5PL7o1{mt_l@zpWuU|y^ zFS~q3bI8-H;x@<#;2PWdhDIcU=^Yd^0*jysXJj74F+}8s#OY#Ak^%}6%$-_qgB<8ofR}(#z6*)WwuCj0yaUsq+uM;If<}X z2_z|CPRW5pKC@Z=OVUGDMQ(?JyY6Y0!<0Ai|^SMr&lRzY?*vJntHCx0x_5-lJK=D{_|;oVE=kp8o34#Y}_1q_!N8LEVO<;!Va z&|+B-xK7h3x9B;^ZfHpIONdic46W=;a}ZHb1Oo-cK}pdD9j42i4&u@T$6~fz*dg~G zX6Y@;hin7%kG_^7O>jN5Pnz9Xc&p1$t`XeM2r7)7kvIthE0CR>;h_pgwivlcv*IXk zNXT_euSpUT%PX}|w=^g3vAPsFUb`d^+!DAAF#58v3~W`Aq+1@f{Ag$ZpjQw?Hwc7X zdv(y#Hb2Tk4~;fx8O{#H_}}iMoh~~i>%PKS(p7C=a}A$s-Wv8i-$&5k>!N)CcF#m> z2N!P0t>gVGzC{`j-!y`^^<#NbHf=3BZ60TL3zEe&`5oSDjM@Eidb;25$A1mbW2x4s rZ=UQ^sI8T5&Exk?%D(k1{1g7ZJT~Ar7ufEX4Za8TWa4)4h4a(jp?u}C literal 0 HcmV?d00001 diff --git a/PatchEmAll/Resources/Docs/PatchEmAll-LICENSE.txt b/PatchEmAll/Resources/Docs/PatchEmAll-LICENSE.txt new file mode 100644 index 0000000..326c80f --- /dev/null +++ b/PatchEmAll/Resources/Docs/PatchEmAll-LICENSE.txt @@ -0,0 +1,42 @@ +*************************************************************** +PatchEmAll - License version 20250721 +Copyright (c) 2016-2025 PatchEmAll - All Rights Reserved +*************************************************************** + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Redistributions in any form are not permitted whatsoever, +under any conditions. + +2. This software may not be reverse engineered, decompiled, +or disassembled. + +3. PatchEmAll may publish revised and/or new versions of the +license from time to time. Each version will be given a +distinguishing version number. No one other than +PatchEmAll has the right to modify the terms applicable +to covered code created under this License. + +4. It is your responsibility to use this software in accordance +with all applicable laws. + +*************************************************************** + +THIS SOFTWARE IS PROVIDED BY THE PATCHEMALL DEVELOPMENT TEAM +'AS IS' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT +NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT +SHALL THE PATCHEMALL DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. + +*************************************************************** + +This product includes Xdelta software, freely available from + diff --git a/PatchEmAll/Resources/Icons/PatchEmAll.ico b/PatchEmAll/Resources/Icons/PatchEmAll.ico new file mode 100644 index 0000000000000000000000000000000000000000..63922ff1ce0099105b02a876f6f9b281d5311d98 GIT binary patch literal 4286 zcmcgwYfx0@89rPh8MKX)YC1{VsZDK~wwX5lk?Hj2)WozMokT!T6cNKM#DdXQ(2gUC zNx(!~s}rKtNl4_f+;3sIi`?&5xd}vA5SGhwkp-5+WtXS#`z^cf5<2;%hk5q<_I;n{ zea`vLciyvuB-zm4mMs#0O7R;d=_yH)o+nU9`V)cU;-K8>Bj<>;F6S-Dlh8!a5#)yq z_P9;(B5#MR0O>$>fHXwFBgP1Mdnx^;I^~-ZRwHYTn2E!=wP4Dx9{+DGf2k?cSDGcj z3_s&M{S65j-YapAt;D~iSo&cJX@pcSBY4g+&WSn}e6GQ@%yCOEUrG0+k0fXKke3O> z&+v6X(ZBa0=bcx?oNFf^vPH7*lgK#nYvhGHqx4Dus&1SloI>f|NH~$Wo4v2WU|R+16VE|;dK=OMpT%fr1*SFq$PIY`X|!IJUhGYN z4B^XT%0UUWkwI8C7%<#fgRYV!=(H1H!zFnJ(?gvYZq7zu$>-=Ph!E&2iNtVI7N*sA zh%+s?bJ|ICmnLKQP8CTFsQ=>ELLgD*=#{BG*(9BK@q2j+mNbz}!a>jhp0SQSSMkITXj$r!E zIj)iDZi5u>O(?%|1T$lUqSk_L8n?oBioD5>y%P`EF~CS5UFBsD%#8NZ`s=YcuY;;S zpY~cHox^6*+6tbDzvf7s6rW8f`Q!*xb-7rSb)wd+Mun;fFX3UKlM~$S85B1n(Zdm0 z$9{qO&)&vJ%S|lJ&qAy2f->l*h~H;x=9&1bN9JS(ZpG9<2lS*JX)Q!U{yyx&&hx}k(L#aDum{hl-8eSSnaBgaZd-m!aZ8Hn9uhZtuY#O{9* zW!Fz&w5P>*@94Q(=4Wp~#>BlYR7bxH#i3`6TnnAT^J(fup&0MKL;GeuZN@N+bH3 zDZil8A~$pwa!&un+%H6q)_iViOlZdYIv`I|@3c5{_eY@&-iD~xXzj>b;p!mA(%xu_ zJ8QuLbdw|0%gdo|DWZN@h=G<;>f-}eoIBZ9(V>j6icM3$VJ>Ubw~OeVQBK!2Y{j{q z7>-!p$K;*3-%(CF_yqbZlg%9NJ!5wpaj!ZJIe&i<%E0H)TO392qgoi29_)>=u4-sH zE6qC2X}as6DvhOn@jSAR{}TOGDO9UL^dJ-QUQIfZJU3E5bCgrP9+%UpFAq28n9|TM z&SRpt32o`;so&XCKb6oJa}pChjp7|-BJ%r2JJ@deDtgs;PXn41r-deQza3gr!$mFq zqHN}kv=$(P-qY-z>F*$C2CTB;*DcXPt5V!Yp&%NmBdz3OZGvn%5)a)UMy9Oc50&2r(% zXHfUC8|KFQt!nXon4!HhGp?q!owLf#Yll&Lc?W9#vmNtOYO5UgD%Q-<^TahQkGY8f z)JNm0~d`w<1gFV^1D(qKs&AFG*aA_BsBAhW;PW^9AYbmpu>lbuTS4N`t!tYQW z_M$-Th2KJ5@u_&2=3*D3#c+qp*z-B zSA zuE5VCx58tt85CR5_ayk4b-h%>swQ!`W_Q%?uRigV$Uy?ie(|j?IdF+vZz1Wky zXVpsYiXo*phO&GxoEwCZf?z_(Lqf3d7|QYmdy;pJ=H}m=$8H7njTaq-5pUCY>>+_` x8-2*LpS;~B%TCzcuL#~fRdupdTYYMZF!zw5C9iVwbh%$1Y`^;d0gw9o{{ZklfEWM( literal 0 HcmV?d00001 diff --git a/PatchEmAll/Resources/Images/PatchEmAll.png b/PatchEmAll/Resources/Images/PatchEmAll.png new file mode 100644 index 0000000000000000000000000000000000000000..aecca7e0824acd142fa3b9462e8715356eb2921a GIT binary patch literal 4790 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 Q1poj507*qoM6N<$f_GsXR{#J2 literal 0 HcmV?d00001 diff --git a/PatchEmAll/Resources/Libs/xdelta3-3.1.0-i686.exe b/PatchEmAll/Resources/Libs/xdelta3-3.1.0-i686.exe new file mode 100644 index 0000000000000000000000000000000000000000..8c7679bc6148d1a24b930b37d7867ea8fd254532 GIT binary patch literal 579138 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 UTn{rU{zml&zfkpG_tYInPRmz;XxF+ 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�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 O%;odv&*k3L{{I0IGaq*V literal 0 HcmV?d00001 diff --git a/PatchEmAll/Resources/Libs/xdelta3-3.1.0-x86_64.exe b/PatchEmAll/Resources/Libs/xdelta3-3.1.0-x86_64.exe new file mode 100644 index 0000000000000000000000000000000000000000..1cce3c5d60e77c2b2dae5db28ca97e492df0c84d GIT binary patch literal 624463 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 z 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 KcG|O~#^VFZrL*_| literal 0 HcmV?d00001 diff --git a/PatchEmAll/Resources/Output/Dats/put your dats in this directory.txt b/PatchEmAll/Resources/Output/Dats/put your dats in this directory.txt new file mode 100644 index 0000000..6d78808 --- /dev/null +++ b/PatchEmAll/Resources/Output/Dats/put your dats in this directory.txt @@ -0,0 +1 @@ +This file can be deleted. \ No newline at end of file diff --git a/PatchEmAll/Resources/Output/Options/put your options files in this directory.txt b/PatchEmAll/Resources/Output/Options/put your options files in this directory.txt new file mode 100644 index 0000000..6d78808 --- /dev/null +++ b/PatchEmAll/Resources/Output/Options/put your options files in this directory.txt @@ -0,0 +1 @@ +This file can be deleted. \ No newline at end of file diff --git a/PatchEmAll/Resources/Output/Patches/put your patches in this directory.txt b/PatchEmAll/Resources/Output/Patches/put your patches in this directory.txt new file mode 100644 index 0000000..6d78808 --- /dev/null +++ b/PatchEmAll/Resources/Output/Patches/put your patches in this directory.txt @@ -0,0 +1 @@ +This file can be deleted. \ No newline at end of file diff --git a/PatchEmAll/Resources/Output/ROMs/put your roms in this directory.txt b/PatchEmAll/Resources/Output/ROMs/put your roms in this directory.txt new file mode 100644 index 0000000..6d78808 --- /dev/null +++ b/PatchEmAll/Resources/Output/ROMs/put your roms in this directory.txt @@ -0,0 +1 @@ +This file can be deleted. \ No newline at end of file diff --git a/PatchEmAll/Resources/Output/Xdelta/put your xdelta files in this directory.txt b/PatchEmAll/Resources/Output/Xdelta/put your xdelta files in this directory.txt new file mode 100644 index 0000000..6d78808 --- /dev/null +++ b/PatchEmAll/Resources/Output/Xdelta/put your xdelta files in this directory.txt @@ -0,0 +1 @@ +This file can be deleted. \ No newline at end of file diff --git a/PatchEmAll/packages.config b/PatchEmAll/packages.config new file mode 100644 index 0000000..b927374 --- /dev/null +++ b/PatchEmAll/packages.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..7ef23a3 --- /dev/null +++ b/README.md @@ -0,0 +1,56 @@ +# @PatchEmAll +### The Original Automated ROM Patcher +## About +PatchEmAll or PEA is the original software application for automating the process of building ROMs from patches and building patches from ROMs. + +Are you a ROM collector who wants to save vast amounts of time and bandwidth? Are you a patcher who is tired of working like an octopussy? If so, PatchEmAll is for you. It's easy and fun to use. + +PatchEmAll comes with both a command line interface and a graphical interface. No matter which interface you choose, building ROMs and patches is easy. Just run PatchEmAll to build all of the ROMs or patches. + +PatchEmAll uses Xdelta to create a patch containing the diff data between two ROMs. The resulting patch is usually very small and can be used to recreate an exact image of a second ROM. + +Although PatchEmAll has more than one purpose, it's main purpose is to automate the process of building ROMs and patches. This automated process not only saves you vast amounts of time and bandwidth, but also creates a uniform set of patches. + +PatchEmAll makes life simpler and easier. Just run PatchEmAll and go eat dinner, go to work or go to sleep. When you return, PatchEmAll has built every possible ROM or patch that it can... Or at least it's still working on it. + +Using PatchEmAll, the sky is the limit as to how many patches and datafiles you create. +## Dependencies +.NET Framework 4.8 + +The following NuGet Packages are required to build a Debug and/or Release version of this app: +* ILMerge +* Serilog +* Serilog.Sinks.Console +* Serilog.Sinks.LogEmAll + +The following tools and extensions are required to be installed in your Visual Sudio IDE: +* Microsoft Visual Studio Installer Projects +## Projects +* PatchEmAll - Class Library +* PatchEmAll-CLI - Console App +* PatchEmAll-GUI - Windows Forms App +* PatchEmAll-Release - Release Project +* PatchEmAll-Installer - Installer Project +## Contributing +Let's work better together. We are looking to collaborate with like-minded people who want to contribute in any capacity. Collaboration is open to everyone and we need your help if you are a: +* Collector +* Database Administrator +* Datter +* Developer +* Dumper +* Graphic Artist +* Translator +* Player +* Tester + +Feel free to: +* Fork the repository +* Create an issue +* Branch your repository with the issue number and a meaningful name related to the changes you are making +* Create a pull request + +## Contact +GitEmAll: [https://gitemall.devemall.int.eu.org/TommySalami/PatchEmAll](https://gitemall.devemall.int.eu.org/TommySalami/PatchEmAll "GitEmAll") + +--- +###### Copyright (c) 2016-2025 PatchEmAll - All Rights Reserved v2025-07-21-00 diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..a38578c --- /dev/null +++ b/TODO.md @@ -0,0 +1,5 @@ +### To Do +* Nothing to do + +### Completed Tasks +* Develop initial release