From ca9056613fd551f42cbbde0bf01099e82222878f Mon Sep 17 00:00:00 2001 From: TommySalami Date: Tue, 29 Jul 2025 08:39:37 -0600 Subject: [PATCH] Add project files. --- .gitattributes | 63 + .gitignore | 366 +++ CHANGELOG.md | 24 + CODE_OF_CONDUCT.md | 127 + CONTRIBUTING.md | 24 + DeheadEmAll-CLI/App.config | 6 + DeheadEmAll-CLI/App.ico | Bin 0 -> 4286 bytes DeheadEmAll-CLI/DeheadEmAll-CLI.csproj | 115 + DeheadEmAll-CLI/Program.cs | 56 + DeheadEmAll-CLI/Properties/AssemblyInfo.cs | 36 + .../Properties/Resources.Designer.cs | 63 + DeheadEmAll-CLI/Properties/Resources.resx | 120 + .../Resources/BASHes/DeheadEmAll-DH-A7800.sh | 4 + .../BASHes/DeheadEmAll-DH-All-Selected.sh | 4 + .../Resources/BASHes/DeheadEmAll-DH-All.sh | 4 + .../Resources/BASHes/DeheadEmAll-DH-FDS.sh | 4 + .../Resources/BASHes/DeheadEmAll-DH-Lynx.sh | 4 + .../Resources/BASHes/DeheadEmAll-DH-NES.sh | 4 + .../BASHes/DeheadEmAll-Print-Donation-Info.sh | 4 + .../BASHes/DeheadEmAll-Print-Help-CMD.sh | 4 + .../BASHes/DeheadEmAll-Print-License.sh | 4 + .../BASHes/DeheadEmAll-Print-Version.sh | 4 + .../BASHes/DeheadEmAll-Save-Options.sh | 4 + .../put your bash files in this directory.txt | 1 + .../Batches/DeheadEmAll-DH-A7800.bat | 7 + .../Batches/DeheadEmAll-DH-All-Selected.bat | 7 + .../Resources/Batches/DeheadEmAll-DH-All.bat | 7 + .../Resources/Batches/DeheadEmAll-DH-FDS.bat | 7 + .../Resources/Batches/DeheadEmAll-DH-Lynx.bat | 7 + .../Resources/Batches/DeheadEmAll-DH-NES.bat | 7 + .../DeheadEmAll-Print-Donation-Info.bat | 7 + .../Batches/DeheadEmAll-Print-Help-CMD.bat | 7 + .../Batches/DeheadEmAll-Print-License.bat | 7 + .../Batches/DeheadEmAll-Print-Version.bat | 7 + .../Batches/DeheadEmAll-Save-Options.bat | 7 + ...put your batch files in this directory.txt | 1 + DeheadEmAll-CLI/packages.config | 6 + DeheadEmAll-GUI/App.config | 6 + DeheadEmAll-GUI/App.ico | Bin 0 -> 4286 bytes DeheadEmAll-GUI/DeheadEmAll-GUI.csproj | 122 + DeheadEmAll-GUI/FrmDeheadEmAll.Designer.cs | 733 ++++++ DeheadEmAll-GUI/FrmDeheadEmAll.cs | 896 +++++++ DeheadEmAll-GUI/FrmDeheadEmAll.resx | 2026 ++++++++++++++++ DeheadEmAll-GUI/Program.cs | 36 + DeheadEmAll-GUI/Properties/AssemblyInfo.cs | 36 + .../Properties/Resources.Designer.cs | 193 ++ DeheadEmAll-GUI/Properties/Resources.resx | 160 ++ .../Properties/Settings.Designer.cs | 26 + DeheadEmAll-GUI/Properties/Settings.settings | 7 + .../Resources/Images/Cancel_16x16.png | Bin 0 -> 933 bytes .../Resources/Images/ChangeOption_16x16.png | Bin 0 -> 830 bytes .../Resources/Images/DeheadROMs_32x32.png | Bin 0 -> 1330 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 .../Resources/Images/License_32x32.png | Bin 0 -> 2415 bytes .../Resources/Images/LoadOptions_32x32.png | Bin 0 -> 2178 bytes .../Resources/Images/Log_32x32.png | Bin 0 -> 1457 bytes .../Resources/Images/Options_32x32.png | Bin 0 -> 2025 bytes .../Resources/Images/SaveLog_32x32.png | Bin 0 -> 1708 bytes .../Resources/Images/SaveOptions_32x32.png | Bin 0 -> 2203 bytes .../Resources/Images/Toolbar_32x32.png | Bin 0 -> 1386 bytes DeheadEmAll-GUI/packages.config | 5 + .../DeheadEmAll-Installer.vdproj | 2143 +++++++++++++++++ .../DeheadEmAll-Release.csproj | 126 + DeheadEmAll-Release/packages.config | 4 + DeheadEmAll.sln | 65 + DeheadEmAll/App.ico | Bin 0 -> 4286 bytes DeheadEmAll/DeheadEmAll.cs | 1110 +++++++++ DeheadEmAll/DeheadEmAll.csproj | 103 + DeheadEmAll/DeheadEmAll.nuspec | 42 + DeheadEmAll/DeheadEmAll.snk | Bin 0 -> 596 bytes DeheadEmAll/Properties/AssemblyInfo.cs | 36 + DeheadEmAll/Properties/Resources.Designer.cs | 149 ++ DeheadEmAll/Properties/Resources.resx | 133 + .../Resources/Docs/DeheadEmAll-DONATIONS.txt | 15 + .../Resources/Docs/DeheadEmAll-HELP-CMD.txt | 54 + .../Resources/Docs/DeheadEmAll-HELP.txt | 99 + .../Resources/Docs/DeheadEmAll-LICENSE.rtf | Bin 0 -> 2183 bytes .../Resources/Docs/DeheadEmAll-LICENSE.txt | 37 + DeheadEmAll/Resources/Icons/DeheadEmAll.ico | Bin 0 -> 4286 bytes DeheadEmAll/Resources/Images/DeheadEmAll.png | Bin 0 -> 3593 bytes ...t your options files in this directory.txt | 1 + .../ROMs/put your roms in this directory.txt | 1 + ...t your deheaded roms in this directory.txt | 1 + DeheadEmAll/packages.config | 5 + LICENSE | 37 + README.md | 57 + TODO.md | 5 + 89 files changed, 9598 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 DeheadEmAll-CLI/App.config create mode 100644 DeheadEmAll-CLI/App.ico create mode 100644 DeheadEmAll-CLI/DeheadEmAll-CLI.csproj create mode 100644 DeheadEmAll-CLI/Program.cs create mode 100644 DeheadEmAll-CLI/Properties/AssemblyInfo.cs create mode 100644 DeheadEmAll-CLI/Properties/Resources.Designer.cs create mode 100644 DeheadEmAll-CLI/Properties/Resources.resx create mode 100644 DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-DH-A7800.sh create mode 100644 DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-DH-All-Selected.sh create mode 100644 DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-DH-All.sh create mode 100644 DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-DH-FDS.sh create mode 100644 DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-DH-Lynx.sh create mode 100644 DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-DH-NES.sh create mode 100644 DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-Print-Donation-Info.sh create mode 100644 DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-Print-Help-CMD.sh create mode 100644 DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-Print-License.sh create mode 100644 DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-Print-Version.sh create mode 100644 DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-Save-Options.sh create mode 100644 DeheadEmAll-CLI/Resources/BASHes/put your bash files in this directory.txt create mode 100644 DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-DH-A7800.bat create mode 100644 DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-DH-All-Selected.bat create mode 100644 DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-DH-All.bat create mode 100644 DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-DH-FDS.bat create mode 100644 DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-DH-Lynx.bat create mode 100644 DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-DH-NES.bat create mode 100644 DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-Print-Donation-Info.bat create mode 100644 DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-Print-Help-CMD.bat create mode 100644 DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-Print-License.bat create mode 100644 DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-Print-Version.bat create mode 100644 DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-Save-Options.bat create mode 100644 DeheadEmAll-CLI/Resources/Batches/put your batch files in this directory.txt create mode 100644 DeheadEmAll-CLI/packages.config create mode 100644 DeheadEmAll-GUI/App.config create mode 100644 DeheadEmAll-GUI/App.ico create mode 100644 DeheadEmAll-GUI/DeheadEmAll-GUI.csproj create mode 100644 DeheadEmAll-GUI/FrmDeheadEmAll.Designer.cs create mode 100644 DeheadEmAll-GUI/FrmDeheadEmAll.cs create mode 100644 DeheadEmAll-GUI/FrmDeheadEmAll.resx create mode 100644 DeheadEmAll-GUI/Program.cs create mode 100644 DeheadEmAll-GUI/Properties/AssemblyInfo.cs create mode 100644 DeheadEmAll-GUI/Properties/Resources.Designer.cs create mode 100644 DeheadEmAll-GUI/Properties/Resources.resx create mode 100644 DeheadEmAll-GUI/Properties/Settings.Designer.cs create mode 100644 DeheadEmAll-GUI/Properties/Settings.settings create mode 100644 DeheadEmAll-GUI/Resources/Images/Cancel_16x16.png create mode 100644 DeheadEmAll-GUI/Resources/Images/ChangeOption_16x16.png create mode 100644 DeheadEmAll-GUI/Resources/Images/DeheadROMs_32x32.png create mode 100644 DeheadEmAll-GUI/Resources/Images/Donate_32x32.png create mode 100644 DeheadEmAll-GUI/Resources/Images/Exit_32x32.png create mode 100644 DeheadEmAll-GUI/Resources/Images/Help_32x32.png create mode 100644 DeheadEmAll-GUI/Resources/Images/License_32x32.png create mode 100644 DeheadEmAll-GUI/Resources/Images/LoadOptions_32x32.png create mode 100644 DeheadEmAll-GUI/Resources/Images/Log_32x32.png create mode 100644 DeheadEmAll-GUI/Resources/Images/Options_32x32.png create mode 100644 DeheadEmAll-GUI/Resources/Images/SaveLog_32x32.png create mode 100644 DeheadEmAll-GUI/Resources/Images/SaveOptions_32x32.png create mode 100644 DeheadEmAll-GUI/Resources/Images/Toolbar_32x32.png create mode 100644 DeheadEmAll-GUI/packages.config create mode 100644 DeheadEmAll-Installer/DeheadEmAll-Installer.vdproj create mode 100644 DeheadEmAll-Release/DeheadEmAll-Release.csproj create mode 100644 DeheadEmAll-Release/packages.config create mode 100644 DeheadEmAll.sln create mode 100644 DeheadEmAll/App.ico create mode 100644 DeheadEmAll/DeheadEmAll.cs create mode 100644 DeheadEmAll/DeheadEmAll.csproj create mode 100644 DeheadEmAll/DeheadEmAll.nuspec create mode 100644 DeheadEmAll/DeheadEmAll.snk create mode 100644 DeheadEmAll/Properties/AssemblyInfo.cs create mode 100644 DeheadEmAll/Properties/Resources.Designer.cs create mode 100644 DeheadEmAll/Properties/Resources.resx create mode 100644 DeheadEmAll/Resources/Docs/DeheadEmAll-DONATIONS.txt create mode 100644 DeheadEmAll/Resources/Docs/DeheadEmAll-HELP-CMD.txt create mode 100644 DeheadEmAll/Resources/Docs/DeheadEmAll-HELP.txt create mode 100644 DeheadEmAll/Resources/Docs/DeheadEmAll-LICENSE.rtf create mode 100644 DeheadEmAll/Resources/Docs/DeheadEmAll-LICENSE.txt create mode 100644 DeheadEmAll/Resources/Icons/DeheadEmAll.ico create mode 100644 DeheadEmAll/Resources/Images/DeheadEmAll.png create mode 100644 DeheadEmAll/Resources/Output/Options/put your options files in this directory.txt create mode 100644 DeheadEmAll/Resources/Output/ROMs/put your roms in this directory.txt create mode 100644 DeheadEmAll/Resources/Output/ROMsDeheaded/put your deheaded roms in this directory.txt create mode 100644 DeheadEmAll/packages.config create mode 100644 LICENSE 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..c63a385 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,24 @@ +Version 1.5.8 - 2025-07-29 + +* Update repository info and related URLs +* Minor changes + +Version 1.5.7 - 2024-09-01 + +* New repository created and URLs fixed +* Update some NuGet Packages +* Minor changes + +Version 1.5.6 - 2023-05-11 + +* Add BASH files +* Update commands and Batch files +* Update documentation files +* Minor code changes + +Version 1.5.5 - 2023-04-13 + +* Update to .NET Framework 4.8 +* Update all NuGet Packages +* Update and rename Setup project to Installer project +* Update Release project folder names and filenames structure 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..57133d1 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,24 @@ +# @DeheadEmAll +### The Original Automated ROM Deheaderer +## 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/DeheadEmAll](https://gitemall.devemall.int.eu.org/TommySalami/DeheadEmAll "GitEmAll") + +--- +###### Copyright (c) 2016-2025 DeheadEmAll - All Rights Reserved v2025-07-29-00 diff --git a/DeheadEmAll-CLI/App.config b/DeheadEmAll-CLI/App.config new file mode 100644 index 0000000..4bfa005 --- /dev/null +++ b/DeheadEmAll-CLI/App.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/DeheadEmAll-CLI/App.ico b/DeheadEmAll-CLI/App.ico new file mode 100644 index 0000000000000000000000000000000000000000..051e75ea4e2f4134e634e2c8961389e3440ba002 GIT binary patch literal 4286 zcmchb2~bp57KR_)Etr^8NvOoiG8I$Fq~g?6%BgH7lVwshT9c^3C8B_1SOmccqK3t2 zf;uLdfGHy`BW;o*APPdWHqd}gvu`RL0dWBtK-t^2S>!b|@XxuohqhUDX3R8v-1pu+ z_y6xX@4ov0L9n5(`SS(#Q;3@@2u}!t@Df3ngg+7NI{#4L#80NL@KlzsASZeWBO(6E zFb_QuPTuwzKEjbqA7PNdy`Wh9FHF$yC#^4(-h!UMOr(3Vei?Z`jLglC{&)D!LB=Lq zq;DiGFNV!c+_7~SHumE|ej3$B$xDV*4?#?E=YZNtByA9I;Rg?l4i7y@ zdo&kEA;rU%`H9J&a6s)O6zc_?m%C%+0sA)L2;w^Jo5w z4YtfrOk8inz*HnS3pl&$b#&C6g=px&&_EANVxNWKL6Ppu=#=+{)yz89G|-E|J{=4# zHK;u9fdp3x5?yV?GcHmFro~x`WKRdEf)*lg-(nPevz(K^e<`X@hhlheU`qcRj3efEP5JPtiRDx0Z9hrZP#L)y=j6nRPc5APVGDA1 zzm3yQY~C~Kil^4d7?>I?#2#DPNYeg;g??MYy9nelOx(>=EN=j$v^;cC`&@ z()ek$xu+PrTEf71q&T@sf|wOHhsUW--LZS$QkH^buNM*h5zF67&sux(u^8iM!yr#H(aQzIxjc@`X@}|g>8HKNgv-if zP;Pqz3eWjS^ZNtJj%-F}T?x1(H`qnDKsg{rM+*p20Khf4IkeGOjVEcONb7J#!eeA3TgC z&w1#mR$Ht`M}}ddcOPqqhm7=0e+Pw|1LB<@!Wq{&^c>Ho{p305u9d^s(@p!!TXfBi z_n9@B?u>{@?hi3&Kb{56oXHR4KO z&x__zpB0YGEpw6XJqu}GG8F846+`{E&|LH*(l^Z}>_ECR`YK+X;aWNooS!JY*WZ{I{~Wh_)%9|dX7 zNY3_o$PTb)F`_zXo~Zf!c@%#6Dr%y=X+7WJKJ1=%UsB;paxglp)9IP-!p+j3(42o1 zMnfyjVGvDuhmaTYG%61*hH1cnmLfUSfscbUp$;ZkYeio0lgQuoB8v7df@bHltWPWq z{jFHM?`4#S{TaWUa3k$DOP=P5nBT8AisdxN=TWfhSu`j^`SZ!@&{7zQ)`}QjlPiha zQLy_tkS4_vtPLeUs!z$^Xy5qe9aMxbK}FbN6z}~#>le$vUMNY+Wl3>ANW4V7VU;#~OKIQQNAxNvX@ zstzrMHo_6w!z&0!@>-6HZ(j%VzHsmjQ5*3-YUOKD6X}EoMKA_?+9%CH)HR_=^(`9H z_n_})^|*d^FIuS%HOE(@M()J5YUS%td&2qOuw#N>TgPLxhu%dMdDk9)Ppmuf7hH{T zBiwN{`V+Jj9^?0OoC%$!Y11`yzfO%j0d8t?* zvjU9?-e^qprIz7?j^ZOQ>i@|KZ1I|SU>eXvU!8=eB!51}GM?$o#2GKt$2j6z^ir`Y z!P!WlC1n$CD7WDzCjd9nx1#-QC=9g@+V0X-NVxP`%6*U{IIi>{&r6i=~) zdED6e>01`tlI#WMN%Xg6cs3Ad%kV-+wm&*@1JRiqLKbQkT1t~3nY z#b2XKv-@tJRXiIrJwbd-yULHeHWK8i^eF3Af4Whp@oU%R`$MN8^0yKJQ$W{QzlQZs z7cuYQr^I$rD*U8&aU;LTv?b0A8LwQJkPsL6>afj&tm0;T4hVo$5?b5&xbOiyD LiT@Ayf1m#g{>2-^ literal 0 HcmV?d00001 diff --git a/DeheadEmAll-CLI/DeheadEmAll-CLI.csproj b/DeheadEmAll-CLI/DeheadEmAll-CLI.csproj new file mode 100644 index 0000000..f83bd65 --- /dev/null +++ b/DeheadEmAll-CLI/DeheadEmAll-CLI.csproj @@ -0,0 +1,115 @@ + + + + + Debug + AnyCPU + {E26A5DBC-0C0A-4786-A3FD-EF3740C2DC47} + Exe + DeheadEmAll_CLI + DeheadEmAll-CLI + v4.8 + 512 + true + true + + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + bin\Debug\DeheadEmAll-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 + + + + + + + + {06f4a6d4-ee7f-47d3-947c-a259f1fc3d84} + DeheadEmAll + + + + + + + + + \ No newline at end of file diff --git a/DeheadEmAll-CLI/Program.cs b/DeheadEmAll-CLI/Program.cs new file mode 100644 index 0000000..61f478f --- /dev/null +++ b/DeheadEmAll-CLI/Program.cs @@ -0,0 +1,56 @@ +using System.Threading; +using System.Threading.Tasks; +using Serilog; +using Serilog.Formatting.Display; +using Serilog.Sinks.LogEmAll; + +namespace DeheadEmAll_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. + DeheadEmAll.DeheadEmAll DHEA = new DeheadEmAll.DeheadEmAll(); + + // Set the title. + DHEA.UpdateTitle(); + + // Print the version. + DHEA.PrintVersion(); + + // Load the options passed from the command line arguments. + DHEA.LoadOptionsFromCLI(args); + + // Load the options passed from the default options file. + DHEA.LoadOptionsFromFile(); + + // Process the command switch. + DHEA.ProcessCommandSwitch(); + + // Output the log to a text file. + DHEA.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/DeheadEmAll-CLI/Properties/AssemblyInfo.cs b/DeheadEmAll-CLI/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..cf38ca1 --- /dev/null +++ b/DeheadEmAll-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("DeheadEmAll-CLI")] +[assembly: AssemblyDescription("The Original Automated ROM Deheaderer")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("DeheadEmAll")] +[assembly: AssemblyProduct("DeheadEmAll-CLI")] +[assembly: AssemblyCopyright("Copyright (c) 2016-2025 DeheadEmAll - All Rights Reserved")] +[assembly: AssemblyTrademark("DeheadEmAll - The Original Automated ROM Deheaderer")] +[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("e26a5dbc-0c0a-4786-a3fd-ef3740c2dc47")] + +// 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.8")] +[assembly: AssemblyFileVersion("1.5.8")] diff --git a/DeheadEmAll-CLI/Properties/Resources.Designer.cs b/DeheadEmAll-CLI/Properties/Resources.Designer.cs new file mode 100644 index 0000000..de85d8b --- /dev/null +++ b/DeheadEmAll-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 DeheadEmAll_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("DeheadEmAll_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/DeheadEmAll-CLI/Properties/Resources.resx b/DeheadEmAll-CLI/Properties/Resources.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/DeheadEmAll-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/DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-DH-A7800.sh b/DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-DH-A7800.sh new file mode 100644 index 0000000..8cfc443 --- /dev/null +++ b/DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-DH-A7800.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# Main +mono "../DeheadEmAll-CLI.exe" -deheada7800 diff --git a/DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-DH-All-Selected.sh b/DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-DH-All-Selected.sh new file mode 100644 index 0000000..59f796d --- /dev/null +++ b/DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-DH-All-Selected.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# Main +mono "../DeheadEmAll-CLI.exe" -deheadallselected diff --git a/DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-DH-All.sh b/DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-DH-All.sh new file mode 100644 index 0000000..67b9761 --- /dev/null +++ b/DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-DH-All.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# Main +mono "../DeheadEmAll-CLI.exe" -deheadall diff --git a/DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-DH-FDS.sh b/DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-DH-FDS.sh new file mode 100644 index 0000000..17c5f81 --- /dev/null +++ b/DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-DH-FDS.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# Main +mono "../DeheadEmAll-CLI.exe" -deheadfds diff --git a/DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-DH-Lynx.sh b/DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-DH-Lynx.sh new file mode 100644 index 0000000..1890303 --- /dev/null +++ b/DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-DH-Lynx.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# Main +mono "../DeheadEmAll-CLI.exe" -deheadlynx diff --git a/DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-DH-NES.sh b/DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-DH-NES.sh new file mode 100644 index 0000000..9d23d8a --- /dev/null +++ b/DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-DH-NES.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# Main +mono "../DeheadEmAll-CLI.exe" -deheadnes diff --git a/DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-Print-Donation-Info.sh b/DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-Print-Donation-Info.sh new file mode 100644 index 0000000..2048a81 --- /dev/null +++ b/DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-Print-Donation-Info.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# Main +mono "../DownloadEmAll-CLI.exe" -donations diff --git a/DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-Print-Help-CMD.sh b/DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-Print-Help-CMD.sh new file mode 100644 index 0000000..4e64d66 --- /dev/null +++ b/DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-Print-Help-CMD.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# Main +mono "../DeheadEmAll-CLI.exe" -help diff --git a/DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-Print-License.sh b/DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-Print-License.sh new file mode 100644 index 0000000..02da797 --- /dev/null +++ b/DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-Print-License.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# Main +mono "../DeheadEmAll-CLI.exe" -license diff --git a/DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-Print-Version.sh b/DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-Print-Version.sh new file mode 100644 index 0000000..9084c30 --- /dev/null +++ b/DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-Print-Version.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# Main +mono "../DeheadEmAll-CLI.exe" -version diff --git a/DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-Save-Options.sh b/DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-Save-Options.sh new file mode 100644 index 0000000..d374fab --- /dev/null +++ b/DeheadEmAll-CLI/Resources/BASHes/DeheadEmAll-Save-Options.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# Main +mono "../DeheadEmAll-CLI.exe" -saveoptions diff --git a/DeheadEmAll-CLI/Resources/BASHes/put your bash files in this directory.txt b/DeheadEmAll-CLI/Resources/BASHes/put your bash files in this directory.txt new file mode 100644 index 0000000..6d78808 --- /dev/null +++ b/DeheadEmAll-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/DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-DH-A7800.bat b/DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-DH-A7800.bat new file mode 100644 index 0000000..18aedf7 --- /dev/null +++ b/DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-DH-A7800.bat @@ -0,0 +1,7 @@ +@echo off + +rem */ Main /* +"..\DeheadEmAll-CLI.exe" -deheada7800 + +rem */ Pause /* +@pause diff --git a/DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-DH-All-Selected.bat b/DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-DH-All-Selected.bat new file mode 100644 index 0000000..3f5e513 --- /dev/null +++ b/DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-DH-All-Selected.bat @@ -0,0 +1,7 @@ +@echo off + +rem */ Main /* +"..\DeheadEmAll-CLI.exe" -deheadallselected + +rem */ Pause /* +@pause diff --git a/DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-DH-All.bat b/DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-DH-All.bat new file mode 100644 index 0000000..5cad95d --- /dev/null +++ b/DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-DH-All.bat @@ -0,0 +1,7 @@ +@echo off + +rem */ Main /* +"..\DeheadEmAll-CLI.exe" -deheadall + +rem */ Pause /* +@pause diff --git a/DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-DH-FDS.bat b/DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-DH-FDS.bat new file mode 100644 index 0000000..5b38ce5 --- /dev/null +++ b/DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-DH-FDS.bat @@ -0,0 +1,7 @@ +@echo off + +rem */ Main /* +"..\DeheadEmAll-CLI.exe" -deheadfds + +rem */ Pause /* +@pause diff --git a/DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-DH-Lynx.bat b/DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-DH-Lynx.bat new file mode 100644 index 0000000..f2881af --- /dev/null +++ b/DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-DH-Lynx.bat @@ -0,0 +1,7 @@ +@echo off + +rem */ Main /* +"..\DeheadEmAll-CLI.exe" -deheadlynx + +rem */ Pause /* +@pause diff --git a/DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-DH-NES.bat b/DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-DH-NES.bat new file mode 100644 index 0000000..6ae3794 --- /dev/null +++ b/DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-DH-NES.bat @@ -0,0 +1,7 @@ +@echo off + +rem */ Main /* +"..\DeheadEmAll-CLI.exe" -deheadnes + +rem */ Pause /* +@pause diff --git a/DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-Print-Donation-Info.bat b/DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-Print-Donation-Info.bat new file mode 100644 index 0000000..237fa21 --- /dev/null +++ b/DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-Print-Donation-Info.bat @@ -0,0 +1,7 @@ +@echo off + +rem */ Main /* +"..\DownloadEmAll-CLI.exe" -donations + +rem */ Pause /* +@pause diff --git a/DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-Print-Help-CMD.bat b/DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-Print-Help-CMD.bat new file mode 100644 index 0000000..962f0c6 --- /dev/null +++ b/DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-Print-Help-CMD.bat @@ -0,0 +1,7 @@ +@echo off + +rem */ Main /* +"..\DeheadEmAll-CLI.exe" -help "LF:..\Logs\DeheadEmAll-Log-00000000_000000.txt" + +rem */ Pause /* +@pause diff --git a/DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-Print-License.bat b/DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-Print-License.bat new file mode 100644 index 0000000..84e7acc --- /dev/null +++ b/DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-Print-License.bat @@ -0,0 +1,7 @@ +@echo off + +rem */ Main /* +"..\DeheadEmAll-CLI.exe" -license + +rem */ Pause /* +@pause diff --git a/DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-Print-Version.bat b/DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-Print-Version.bat new file mode 100644 index 0000000..68fd6f0 --- /dev/null +++ b/DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-Print-Version.bat @@ -0,0 +1,7 @@ +@echo off + +rem */ Main /* +"..\DeheadEmAll-CLI.exe" -version + +rem */ Pause /* +@pause diff --git a/DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-Save-Options.bat b/DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-Save-Options.bat new file mode 100644 index 0000000..ec8b9ce --- /dev/null +++ b/DeheadEmAll-CLI/Resources/Batches/DeheadEmAll-Save-Options.bat @@ -0,0 +1,7 @@ +@echo off + +rem */ Main /* +"..\DeheadEmAll-CLI.exe" -saveoptions + +rem */ Pause /* +@pause diff --git a/DeheadEmAll-CLI/Resources/Batches/put your batch files in this directory.txt b/DeheadEmAll-CLI/Resources/Batches/put your batch files in this directory.txt new file mode 100644 index 0000000..6d78808 --- /dev/null +++ b/DeheadEmAll-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/DeheadEmAll-CLI/packages.config b/DeheadEmAll-CLI/packages.config new file mode 100644 index 0000000..b927374 --- /dev/null +++ b/DeheadEmAll-CLI/packages.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/DeheadEmAll-GUI/App.config b/DeheadEmAll-GUI/App.config new file mode 100644 index 0000000..4bfa005 --- /dev/null +++ b/DeheadEmAll-GUI/App.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/DeheadEmAll-GUI/App.ico b/DeheadEmAll-GUI/App.ico new file mode 100644 index 0000000000000000000000000000000000000000..051e75ea4e2f4134e634e2c8961389e3440ba002 GIT binary patch literal 4286 zcmchb2~bp57KR_)Etr^8NvOoiG8I$Fq~g?6%BgH7lVwshT9c^3C8B_1SOmccqK3t2 zf;uLdfGHy`BW;o*APPdWHqd}gvu`RL0dWBtK-t^2S>!b|@XxuohqhUDX3R8v-1pu+ z_y6xX@4ov0L9n5(`SS(#Q;3@@2u}!t@Df3ngg+7NI{#4L#80NL@KlzsASZeWBO(6E zFb_QuPTuwzKEjbqA7PNdy`Wh9FHF$yC#^4(-h!UMOr(3Vei?Z`jLglC{&)D!LB=Lq zq;DiGFNV!c+_7~SHumE|ej3$B$xDV*4?#?E=YZNtByA9I;Rg?l4i7y@ zdo&kEA;rU%`H9J&a6s)O6zc_?m%C%+0sA)L2;w^Jo5w z4YtfrOk8inz*HnS3pl&$b#&C6g=px&&_EANVxNWKL6Ppu=#=+{)yz89G|-E|J{=4# zHK;u9fdp3x5?yV?GcHmFro~x`WKRdEf)*lg-(nPevz(K^e<`X@hhlheU`qcRj3efEP5JPtiRDx0Z9hrZP#L)y=j6nRPc5APVGDA1 zzm3yQY~C~Kil^4d7?>I?#2#DPNYeg;g??MYy9nelOx(>=EN=j$v^;cC`&@ z()ek$xu+PrTEf71q&T@sf|wOHhsUW--LZS$QkH^buNM*h5zF67&sux(u^8iM!yr#H(aQzIxjc@`X@}|g>8HKNgv-if zP;Pqz3eWjS^ZNtJj%-F}T?x1(H`qnDKsg{rM+*p20Khf4IkeGOjVEcONb7J#!eeA3TgC z&w1#mR$Ht`M}}ddcOPqqhm7=0e+Pw|1LB<@!Wq{&^c>Ho{p305u9d^s(@p!!TXfBi z_n9@B?u>{@?hi3&Kb{56oXHR4KO z&x__zpB0YGEpw6XJqu}GG8F846+`{E&|LH*(l^Z}>_ECR`YK+X;aWNooS!JY*WZ{I{~Wh_)%9|dX7 zNY3_o$PTb)F`_zXo~Zf!c@%#6Dr%y=X+7WJKJ1=%UsB;paxglp)9IP-!p+j3(42o1 zMnfyjVGvDuhmaTYG%61*hH1cnmLfUSfscbUp$;ZkYeio0lgQuoB8v7df@bHltWPWq z{jFHM?`4#S{TaWUa3k$DOP=P5nBT8AisdxN=TWfhSu`j^`SZ!@&{7zQ)`}QjlPiha zQLy_tkS4_vtPLeUs!z$^Xy5qe9aMxbK}FbN6z}~#>le$vUMNY+Wl3>ANW4V7VU;#~OKIQQNAxNvX@ zstzrMHo_6w!z&0!@>-6HZ(j%VzHsmjQ5*3-YUOKD6X}EoMKA_?+9%CH)HR_=^(`9H z_n_})^|*d^FIuS%HOE(@M()J5YUS%td&2qOuw#N>TgPLxhu%dMdDk9)Ppmuf7hH{T zBiwN{`V+Jj9^?0OoC%$!Y11`yzfO%j0d8t?* zvjU9?-e^qprIz7?j^ZOQ>i@|KZ1I|SU>eXvU!8=eB!51}GM?$o#2GKt$2j6z^ir`Y z!P!WlC1n$CD7WDzCjd9nx1#-QC=9g@+V0X-NVxP`%6*U{IIi>{&r6i=~) zdED6e>01`tlI#WMN%Xg6cs3Ad%kV-+wm&*@1JRiqLKbQkT1t~3nY z#b2XKv-@tJRXiIrJwbd-yULHeHWK8i^eF3Af4Whp@oU%R`$MN8^0yKJQ$W{QzlQZs z7cuYQr^I$rD*U8&aU;LTv?b0A8LwQJkPsL6>afj&tm0;T4hVo$5?b5&xbOiyD LiT@Ayf1m#g{>2-^ literal 0 HcmV?d00001 diff --git a/DeheadEmAll-GUI/DeheadEmAll-GUI.csproj b/DeheadEmAll-GUI/DeheadEmAll-GUI.csproj new file mode 100644 index 0000000..b6e0dd3 --- /dev/null +++ b/DeheadEmAll-GUI/DeheadEmAll-GUI.csproj @@ -0,0 +1,122 @@ + + + + + Debug + AnyCPU + {FCEBBE29-8A30-4E30-9EEE-DF5F44922223} + WinExe + DeheadEmAll_GUI + DeheadEmAll-GUI + v4.8 + 512 + true + true + + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + bin\Debug\DeheadEmAll-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 + + + FrmDeheadEmAll.cs + + + + + FrmDeheadEmAll.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + + + + + + + + + + + + + + + + {06f4a6d4-ee7f-47d3-947c-a259f1fc3d84} + DeheadEmAll + + + + + + + \ No newline at end of file diff --git a/DeheadEmAll-GUI/FrmDeheadEmAll.Designer.cs b/DeheadEmAll-GUI/FrmDeheadEmAll.Designer.cs new file mode 100644 index 0000000..b7451ea --- /dev/null +++ b/DeheadEmAll-GUI/FrmDeheadEmAll.Designer.cs @@ -0,0 +1,733 @@ +namespace DeheadEmAll_GUI +{ + partial class FrmDeheadEmAll + { + /// + /// 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(FrmDeheadEmAll)); + this.msMain = new System.Windows.Forms.MenuStrip(); + this.tsmiCommand = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator(); + this.tsmiView = new System.Windows.Forms.ToolStripMenuItem(); + this.tsmiLog = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); + this.tsmiOptions = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator(); + this.tsmiHelp = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator(); + this.tsmiLicense = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator(); + this.tsmiDonations = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator(); + this.tsmiToolba = new System.Windows.Forms.ToolStripMenuItem(); + this.tsMain = new System.Windows.Forms.ToolStrip(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); + this.ssMain = new System.Windows.Forms.StatusStrip(); + this.tspbDeheaderProgress = new System.Windows.Forms.ToolStripProgressBar(); + this.tsslStatusMessage = new System.Windows.Forms.ToolStripStatusLabel(); + this.tsslSpring = new System.Windows.Forms.ToolStripStatusLabel(); + this.tcMain = new System.Windows.Forms.TabControl(); + this.tabLog = new System.Windows.Forms.TabPage(); + this.rtblLog = new Serilog.Sinks.LogEmAll.RichTextBoxLog(); + this.tabOptions = new System.Windows.Forms.TabPage(); + this.gbOptionsInfo = new System.Windows.Forms.GroupBox(); + this.lblOptionsInfo1 = new System.Windows.Forms.Label(); + this.gbSystem = new System.Windows.Forms.GroupBox(); + this.lblLogLevel = new System.Windows.Forms.Label(); + this.lblLanguage = new System.Windows.Forms.Label(); + this.cbLogLevel = new System.Windows.Forms.ComboBox(); + this.cbLanguage = new System.Windows.Forms.ComboBox(); + this.gbROMs = new System.Windows.Forms.GroupBox(); + this.chkA7800 = new System.Windows.Forms.CheckBox(); + this.chkLynx = new System.Windows.Forms.CheckBox(); + this.chkNES = new System.Windows.Forms.CheckBox(); + this.chkFDS = new System.Windows.Forms.CheckBox(); + this.gbPaths = new System.Windows.Forms.GroupBox(); + this.txtPathROMsDeheaderedDir = new System.Windows.Forms.TextBox(); + this.txtPathROMsDir = new System.Windows.Forms.TextBox(); + this.lblROMsDeheaderedDir = new System.Windows.Forms.Label(); + this.lblROMsDir = new System.Windows.Forms.Label(); + 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.bgwStartupTasks = new System.ComponentModel.BackgroundWorker(); + this.bgwDeheaderROMs = new System.ComponentModel.BackgroundWorker(); + this.tsmiDeheaderROMs = new System.Windows.Forms.ToolStripMenuItem(); + this.tsmiLoadOptions = new System.Windows.Forms.ToolStripMenuItem(); + this.tsmiSaveOptions = new System.Windows.Forms.ToolStripMenuItem(); + this.tsmiSaveLog = new System.Windows.Forms.ToolStripMenuItem(); + this.tsmiExit = new System.Windows.Forms.ToolStripMenuItem(); + this.tsbDeheaderROMs = new System.Windows.Forms.ToolStripButton(); + this.tsbLoadOptions = new System.Windows.Forms.ToolStripButton(); + this.tsbSaveOptions = new System.Windows.Forms.ToolStripButton(); + this.tsbSaveLog = new System.Windows.Forms.ToolStripButton(); + this.tsbViewLog = new System.Windows.Forms.ToolStripButton(); + this.tsbViewOptions = 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.tsbViewToolbar = new System.Windows.Forms.ToolStripButton(); + this.tsddbCancel = new System.Windows.Forms.ToolStripDropDownButton(); + this.msMain.SuspendLayout(); + this.tsMain.SuspendLayout(); + this.ssMain.SuspendLayout(); + this.tcMain.SuspendLayout(); + this.tabLog.SuspendLayout(); + this.tabOptions.SuspendLayout(); + this.gbOptionsInfo.SuspendLayout(); + this.gbSystem.SuspendLayout(); + this.gbROMs.SuspendLayout(); + this.gbPaths.SuspendLayout(); + this.tabHelp.SuspendLayout(); + this.tabLicense.SuspendLayout(); + this.tabDonations.SuspendLayout(); + this.SuspendLayout(); + // + // msMain + // + this.msMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.tsmiCommand, + this.tsmiView}); + resources.ApplyResources(this.msMain, "msMain"); + this.msMain.Name = "msMain"; + // + // tsmiCommand + // + this.tsmiCommand.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.tsmiDeheaderROMs, + this.toolStripSeparator8, + this.tsmiLoadOptions, + this.tsmiSaveOptions, + this.toolStripSeparator9, + this.tsmiSaveLog, + this.toolStripSeparator10, + this.tsmiExit}); + this.tsmiCommand.Name = "tsmiCommand"; + resources.ApplyResources(this.tsmiCommand, "tsmiCommand"); + // + // toolStripSeparator8 + // + this.toolStripSeparator8.Name = "toolStripSeparator8"; + resources.ApplyResources(this.toolStripSeparator8, "toolStripSeparator8"); + // + // toolStripSeparator9 + // + this.toolStripSeparator9.Name = "toolStripSeparator9"; + resources.ApplyResources(this.toolStripSeparator9, "toolStripSeparator9"); + // + // toolStripSeparator10 + // + this.toolStripSeparator10.Name = "toolStripSeparator10"; + resources.ApplyResources(this.toolStripSeparator10, "toolStripSeparator10"); + // + // tsmiView + // + this.tsmiView.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.tsmiLog, + this.toolStripSeparator4, + this.tsmiOptions, + this.toolStripSeparator5, + this.tsmiHelp, + this.toolStripSeparator6, + this.tsmiLicense, + this.toolStripSeparator7, + this.tsmiDonations, + this.toolStripSeparator11, + this.tsmiToolba}); + 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); + // + // toolStripSeparator4 + // + this.toolStripSeparator4.Name = "toolStripSeparator4"; + resources.ApplyResources(this.toolStripSeparator4, "toolStripSeparator4"); + // + // 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); + // + // toolStripSeparator5 + // + this.toolStripSeparator5.Name = "toolStripSeparator5"; + resources.ApplyResources(this.toolStripSeparator5, "toolStripSeparator5"); + // + // tsmiHelp + // + this.tsmiHelp.Name = "tsmiHelp"; + resources.ApplyResources(this.tsmiHelp, "tsmiHelp"); + this.tsmiHelp.Click += new System.EventHandler(this.ViewHelp_Click); + // + // toolStripSeparator6 + // + this.toolStripSeparator6.Name = "toolStripSeparator6"; + resources.ApplyResources(this.toolStripSeparator6, "toolStripSeparator6"); + // + // tsmiLicense + // + this.tsmiLicense.Name = "tsmiLicense"; + resources.ApplyResources(this.tsmiLicense, "tsmiLicense"); + this.tsmiLicense.Click += new System.EventHandler(this.ViewLicense_Click); + // + // toolStripSeparator7 + // + this.toolStripSeparator7.Name = "toolStripSeparator7"; + resources.ApplyResources(this.toolStripSeparator7, "toolStripSeparator7"); + // + // tsmiDonations + // + this.tsmiDonations.Name = "tsmiDonations"; + resources.ApplyResources(this.tsmiDonations, "tsmiDonations"); + this.tsmiDonations.Click += new System.EventHandler(this.ViewDonations_Click); + // + // toolStripSeparator11 + // + this.toolStripSeparator11.Name = "toolStripSeparator11"; + resources.ApplyResources(this.toolStripSeparator11, "toolStripSeparator11"); + // + // tsmiToolba + // + this.tsmiToolba.Checked = true; + this.tsmiToolba.CheckState = System.Windows.Forms.CheckState.Checked; + this.tsmiToolba.Name = "tsmiToolba"; + resources.ApplyResources(this.tsmiToolba, "tsmiToolba"); + this.tsmiToolba.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.tsbDeheaderROMs, + this.toolStripSeparator1, + this.tsbLoadOptions, + this.tsbSaveOptions, + this.toolStripSeparator2, + this.tsbSaveLog, + this.toolStripSeparator3, + this.tsbViewLog, + this.tsbViewOptions, + this.tsbViewHelp, + this.tsbViewLicense, + this.tsbDonations, + this.tsbViewToolbar}); + resources.ApplyResources(this.tsMain, "tsMain"); + this.tsMain.Name = "tsMain"; + // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1"); + // + // toolStripSeparator2 + // + this.toolStripSeparator2.Name = "toolStripSeparator2"; + resources.ApplyResources(this.toolStripSeparator2, "toolStripSeparator2"); + // + // toolStripSeparator3 + // + this.toolStripSeparator3.Name = "toolStripSeparator3"; + resources.ApplyResources(this.toolStripSeparator3, "toolStripSeparator3"); + // + // ssMain + // + this.ssMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.tsddbCancel, + this.tspbDeheaderProgress, + this.tsslStatusMessage, + this.tsslSpring}); + resources.ApplyResources(this.ssMain, "ssMain"); + this.ssMain.Name = "ssMain"; + // + // tspbDeheaderProgress + // + this.tspbDeheaderProgress.Name = "tspbDeheaderProgress"; + resources.ApplyResources(this.tspbDeheaderProgress, "tspbDeheaderProgress"); + // + // tsslStatusMessage + // + this.tsslStatusMessage.Name = "tsslStatusMessage"; + resources.ApplyResources(this.tsslStatusMessage, "tsslStatusMessage"); + // + // tsslSpring + // + this.tsslSpring.Name = "tsslSpring"; + resources.ApplyResources(this.tsslSpring, "tsslSpring"); + this.tsslSpring.Spring = true; + // + // tcMain + // + this.tcMain.Controls.Add(this.tabLog); + this.tcMain.Controls.Add(this.tabOptions); + this.tcMain.Controls.Add(this.tabHelp); + this.tcMain.Controls.Add(this.tabLicense); + this.tcMain.Controls.Add(this.tabDonations); + resources.ApplyResources(this.tcMain, "tcMain"); + this.tcMain.Name = "tcMain"; + this.tcMain.SelectedIndex = 0; + // + // tabLog + // + this.tabLog.Controls.Add(this.rtblLog); + resources.ApplyResources(this.tabLog, "tabLog"); + this.tabLog.Name = "tabLog"; + this.tabLog.UseVisualStyleBackColor = true; + // + // rtblLog + // + resources.ApplyResources(this.rtblLog, "rtblLog"); + this.rtblLog.Name = "rtblLog"; + this.rtblLog.ReadOnly = true; + // + // tabOptions + // + this.tabOptions.Controls.Add(this.gbOptionsInfo); + this.tabOptions.Controls.Add(this.gbSystem); + this.tabOptions.Controls.Add(this.gbROMs); + this.tabOptions.Controls.Add(this.gbPaths); + resources.ApplyResources(this.tabOptions, "tabOptions"); + this.tabOptions.Name = "tabOptions"; + this.tabOptions.UseVisualStyleBackColor = true; + // + // gbOptionsInfo + // + resources.ApplyResources(this.gbOptionsInfo, "gbOptionsInfo"); + this.gbOptionsInfo.Controls.Add(this.lblOptionsInfo1); + this.gbOptionsInfo.Name = "gbOptionsInfo"; + this.gbOptionsInfo.TabStop = false; + // + // lblOptionsInfo1 + // + resources.ApplyResources(this.lblOptionsInfo1, "lblOptionsInfo1"); + this.lblOptionsInfo1.Name = "lblOptionsInfo1"; + // + // gbSystem + // + resources.ApplyResources(this.gbSystem, "gbSystem"); + this.gbSystem.Controls.Add(this.lblLogLevel); + this.gbSystem.Controls.Add(this.lblLanguage); + this.gbSystem.Controls.Add(this.cbLogLevel); + this.gbSystem.Controls.Add(this.cbLanguage); + this.gbSystem.Name = "gbSystem"; + this.gbSystem.TabStop = false; + // + // lblLogLevel + // + resources.ApplyResources(this.lblLogLevel, "lblLogLevel"); + this.lblLogLevel.Name = "lblLogLevel"; + // + // lblLanguage + // + resources.ApplyResources(this.lblLanguage, "lblLanguage"); + this.lblLanguage.Name = "lblLanguage"; + // + // 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"; + // + // gbROMs + // + resources.ApplyResources(this.gbROMs, "gbROMs"); + this.gbROMs.Controls.Add(this.chkA7800); + this.gbROMs.Controls.Add(this.chkLynx); + this.gbROMs.Controls.Add(this.chkNES); + this.gbROMs.Controls.Add(this.chkFDS); + this.gbROMs.Name = "gbROMs"; + this.gbROMs.TabStop = false; + // + // chkA7800 + // + resources.ApplyResources(this.chkA7800, "chkA7800"); + this.chkA7800.Checked = true; + this.chkA7800.CheckState = System.Windows.Forms.CheckState.Checked; + this.chkA7800.Name = "chkA7800"; + this.chkA7800.UseVisualStyleBackColor = true; + // + // chkLynx + // + resources.ApplyResources(this.chkLynx, "chkLynx"); + this.chkLynx.Checked = true; + this.chkLynx.CheckState = System.Windows.Forms.CheckState.Checked; + this.chkLynx.Name = "chkLynx"; + this.chkLynx.UseVisualStyleBackColor = true; + // + // chkNES + // + resources.ApplyResources(this.chkNES, "chkNES"); + this.chkNES.Checked = true; + this.chkNES.CheckState = System.Windows.Forms.CheckState.Checked; + this.chkNES.Name = "chkNES"; + this.chkNES.UseVisualStyleBackColor = true; + // + // chkFDS + // + resources.ApplyResources(this.chkFDS, "chkFDS"); + this.chkFDS.Checked = true; + this.chkFDS.CheckState = System.Windows.Forms.CheckState.Checked; + this.chkFDS.Name = "chkFDS"; + this.chkFDS.UseVisualStyleBackColor = true; + // + // gbPaths + // + resources.ApplyResources(this.gbPaths, "gbPaths"); + this.gbPaths.Controls.Add(this.txtPathROMsDeheaderedDir); + this.gbPaths.Controls.Add(this.txtPathROMsDir); + this.gbPaths.Controls.Add(this.lblROMsDeheaderedDir); + this.gbPaths.Controls.Add(this.lblROMsDir); + this.gbPaths.Name = "gbPaths"; + this.gbPaths.TabStop = false; + // + // txtPathROMsDeheaderedDir + // + resources.ApplyResources(this.txtPathROMsDeheaderedDir, "txtPathROMsDeheaderedDir"); + this.txtPathROMsDeheaderedDir.Name = "txtPathROMsDeheaderedDir"; + this.txtPathROMsDeheaderedDir.ReadOnly = true; + this.txtPathROMsDeheaderedDir.Click += new System.EventHandler(this.ChangeROMsDeheaderedDir_Click); + // + // txtPathROMsDir + // + resources.ApplyResources(this.txtPathROMsDir, "txtPathROMsDir"); + this.txtPathROMsDir.Name = "txtPathROMsDir"; + this.txtPathROMsDir.ReadOnly = true; + this.txtPathROMsDir.Click += new System.EventHandler(this.ChangeROMsDir_Click); + // + // lblROMsDeheaderedDir + // + resources.ApplyResources(this.lblROMsDeheaderedDir, "lblROMsDeheaderedDir"); + this.lblROMsDeheaderedDir.Name = "lblROMsDeheaderedDir"; + // + // lblROMsDir + // + resources.ApplyResources(this.lblROMsDir, "lblROMsDir"); + this.lblROMsDir.Name = "lblROMsDir"; + // + // 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; + // + // bgwStartupTasks + // + this.bgwStartupTasks.DoWork += new System.ComponentModel.DoWorkEventHandler(this.StartupTasks_DoWork); + this.bgwStartupTasks.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.StartupTasks_RunWorkerCompleted); + // + // bgwDeheaderROMs + // + this.bgwDeheaderROMs.WorkerReportsProgress = true; + this.bgwDeheaderROMs.WorkerSupportsCancellation = true; + this.bgwDeheaderROMs.DoWork += new System.ComponentModel.DoWorkEventHandler(this.DeheaderROMs_DoWork); + this.bgwDeheaderROMs.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.DeheaderROMs_ProgressChanged); + this.bgwDeheaderROMs.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.DeheaderROMs_RunWorkerCompleted); + // + // tsmiDeheaderROMs + // + resources.ApplyResources(this.tsmiDeheaderROMs, "tsmiDeheaderROMs"); + this.tsmiDeheaderROMs.Name = "tsmiDeheaderROMs"; + this.tsmiDeheaderROMs.Click += new System.EventHandler(this.DeheadROMs_Click); + // + // tsmiLoadOptions + // + resources.ApplyResources(this.tsmiLoadOptions, "tsmiLoadOptions"); + this.tsmiLoadOptions.Name = "tsmiLoadOptions"; + this.tsmiLoadOptions.Click += new System.EventHandler(this.LoadOptions_Click); + // + // tsmiSaveOptions + // + resources.ApplyResources(this.tsmiSaveOptions, "tsmiSaveOptions"); + this.tsmiSaveOptions.Name = "tsmiSaveOptions"; + this.tsmiSaveOptions.Click += new System.EventHandler(this.SaveOptions_Click); + // + // tsmiSaveLog + // + resources.ApplyResources(this.tsmiSaveLog, "tsmiSaveLog"); + this.tsmiSaveLog.Name = "tsmiSaveLog"; + this.tsmiSaveLog.Click += new System.EventHandler(this.SaveLog_Click); + // + // tsmiExit + // + resources.ApplyResources(this.tsmiExit, "tsmiExit"); + this.tsmiExit.Name = "tsmiExit"; + this.tsmiExit.Click += new System.EventHandler(this.Exit_Click); + // + // tsbDeheaderROMs + // + this.tsbDeheaderROMs.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + resources.ApplyResources(this.tsbDeheaderROMs, "tsbDeheaderROMs"); + this.tsbDeheaderROMs.Name = "tsbDeheaderROMs"; + this.tsbDeheaderROMs.Click += new System.EventHandler(this.DeheadROMs_Click); + // + // tsbLoadOptions + // + this.tsbLoadOptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + resources.ApplyResources(this.tsbLoadOptions, "tsbLoadOptions"); + 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.Name = "tsbSaveOptions"; + this.tsbSaveOptions.Click += new System.EventHandler(this.SaveOptions_Click); + // + // tsbSaveLog + // + this.tsbSaveLog.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + resources.ApplyResources(this.tsbSaveLog, "tsbSaveLog"); + this.tsbSaveLog.Name = "tsbSaveLog"; + this.tsbSaveLog.Click += new System.EventHandler(this.SaveLog_Click); + // + // tsbViewLog + // + this.tsbViewLog.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + 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; + resources.ApplyResources(this.tsbViewOptions, "tsbViewOptions"); + this.tsbViewOptions.Name = "tsbViewOptions"; + this.tsbViewOptions.Click += new System.EventHandler(this.ViewOptions_Click); + // + // tsbViewHelp + // + this.tsbViewHelp.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + 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; + 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::DeheadEmAll_GUI.Properties.Resources.Donate_32x32; + resources.ApplyResources(this.tsbDonations, "tsbDonations"); + this.tsbDonations.Name = "tsbDonations"; + this.tsbDonations.Click += new System.EventHandler(this.ViewDonations_Click); + // + // tsbViewToolbar + // + this.tsbViewToolbar.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + resources.ApplyResources(this.tsbViewToolbar, "tsbViewToolbar"); + this.tsbViewToolbar.Name = "tsbViewToolbar"; + this.tsbViewToolbar.Click += new System.EventHandler(this.ViewToolbar_Click); + // + // tsddbCancel + // + this.tsddbCancel.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + resources.ApplyResources(this.tsddbCancel, "tsddbCancel"); + this.tsddbCancel.Image = global::DeheadEmAll_GUI.Properties.Resources.Cancel_16x16; + this.tsddbCancel.Name = "tsddbCancel"; + this.tsddbCancel.ShowDropDownArrow = false; + this.tsddbCancel.Click += new System.EventHandler(this.Cancel_Click); + // + // FrmDeheadEmAll + // + 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 = "FrmDeheadEmAll"; + this.WindowState = System.Windows.Forms.FormWindowState.Maximized; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form_FormClosing); + this.Shown += new System.EventHandler(this.Fprm_Shown); + 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.gbSystem.ResumeLayout(false); + this.gbSystem.PerformLayout(); + this.gbROMs.ResumeLayout(false); + this.gbROMs.PerformLayout(); + this.gbPaths.ResumeLayout(false); + this.gbPaths.PerformLayout(); + this.tabHelp.ResumeLayout(false); + this.tabLicense.ResumeLayout(false); + this.tabDonations.ResumeLayout(false); + 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 tsmiCommand; + private System.Windows.Forms.ToolStripMenuItem tsmiView; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; + private System.Windows.Forms.ToolStripButton tsbLoadOptions; + private System.Windows.Forms.ToolStripButton tsbSaveOptions; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; + private System.Windows.Forms.ToolStripButton tsbSaveLog; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator3; + private System.Windows.Forms.ToolStripButton tsbViewLog; + private System.Windows.Forms.ToolStripButton tsbViewOptions; + private System.Windows.Forms.ToolStripButton tsbViewHelp; + private System.Windows.Forms.ToolStripButton tsbViewLicense; + private System.Windows.Forms.TabControl tcMain; + private System.Windows.Forms.TabPage tabLog; + private System.Windows.Forms.TabPage tabOptions; + private System.Windows.Forms.TabPage tabHelp; + private System.Windows.Forms.TabPage tabLicense; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator8; + private System.Windows.Forms.ToolStripMenuItem tsmiExit; + private System.Windows.Forms.ToolStripMenuItem tsmiLog; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator4; + private System.Windows.Forms.ToolStripMenuItem tsmiOptions; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator5; + private System.Windows.Forms.ToolStripMenuItem tsmiHelp; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator6; + private System.Windows.Forms.ToolStripMenuItem tsmiLicense; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator7; + private System.Windows.Forms.ToolStripMenuItem tsmiToolba; + private System.Windows.Forms.ToolStripStatusLabel tsslStatusMessage; + private System.Windows.Forms.RichTextBox rtbHelp; + private System.Windows.Forms.RichTextBox rtbLicense; + private System.Windows.Forms.ToolStripMenuItem tsmiLoadOptions; + private System.Windows.Forms.ToolStripMenuItem tsmiSaveOptions; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator9; + private System.Windows.Forms.ToolStripMenuItem tsmiSaveLog; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator10; + private System.Windows.Forms.ToolStripButton tsbViewToolbar; + private System.ComponentModel.BackgroundWorker bgwStartupTasks; + private System.ComponentModel.BackgroundWorker bgwDeheaderROMs; + private System.Windows.Forms.GroupBox gbPaths; + private System.Windows.Forms.TextBox txtPathROMsDeheaderedDir; + private System.Windows.Forms.TextBox txtPathROMsDir; + private System.Windows.Forms.Label lblROMsDeheaderedDir; + private System.Windows.Forms.Label lblROMsDir; + private System.Windows.Forms.GroupBox gbROMs; + private System.Windows.Forms.CheckBox chkA7800; + private System.Windows.Forms.CheckBox chkLynx; + private System.Windows.Forms.CheckBox chkNES; + private System.Windows.Forms.CheckBox chkFDS; + private System.Windows.Forms.ToolStripMenuItem tsmiDeheaderROMs; + private System.Windows.Forms.ToolStripButton tsbDeheaderROMs; + private System.Windows.Forms.ToolStripDropDownButton tsddbCancel; + private System.Windows.Forms.ToolStripStatusLabel tsslSpring; + private Serilog.Sinks.LogEmAll.RichTextBoxLog rtblLog; + private System.Windows.Forms.ToolStripProgressBar tspbDeheaderProgress; + private System.Windows.Forms.GroupBox gbSystem; + 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.GroupBox gbOptionsInfo; + private System.Windows.Forms.Label lblOptionsInfo1; + private System.Windows.Forms.ToolStripButton tsbDonations; + private System.Windows.Forms.ToolStripMenuItem tsmiDonations; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator11; + private System.Windows.Forms.TabPage tabDonations; + private System.Windows.Forms.RichTextBox rtbDonations; + } +} + diff --git a/DeheadEmAll-GUI/FrmDeheadEmAll.cs b/DeheadEmAll-GUI/FrmDeheadEmAll.cs new file mode 100644 index 0000000..4a2a024 --- /dev/null +++ b/DeheadEmAll-GUI/FrmDeheadEmAll.cs @@ -0,0 +1,896 @@ +using System; +using System.ComponentModel; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Windows.Forms; +using Serilog; + +namespace DeheadEmAll_GUI +{ + /// + /// The DeheadEmAll Class which interacts with the Main Program Class. + /// + public partial class FrmDeheadEmAll : Form + { + #region Constructors + + DeheadEmAll.DeheadEmAll DHEA = new DeheadEmAll.DeheadEmAll(); + + /// + /// Constructor + /// + public FrmDeheadEmAll() + { + InitializeComponent(); + + // Print the version. + DHEA.PrintVersion(); + + // Load the options passed from the command line arguments. + DHEA.LoadOptionsFromCLI(Environment.GetCommandLineArgs()); + + // Load the options passed from the default options file. + DHEA.LoadOptionsFromFile(); + + // Add data bindings. + chkA7800.DataBindings.Add("Checked", DHEA, "A7800"); + chkNES.DataBindings.Add("Checked", DHEA, "NES"); + chkLynx.DataBindings.Add("Checked", DHEA, "Lynx"); + chkFDS.DataBindings.Add("Checked", DHEA, "FDS"); + txtPathROMsDir.DataBindings.Add("Text", DHEA, "PathROMsDir"); + txtPathROMsDeheaderedDir.DataBindings.Add("Text", DHEA, "PathROMsDeheadedDir"); + cbLanguage.DataBindings.Add("SelectedItem", DHEA, "Language"); + cbLogLevel.DataBindings.Add("SelectedItem", DHEA, "LogLevel"); + + // Update the title. + UpdateTitle(); + + // Hide the Help and License tabs. + tcMain.TabPages.Remove(tabHelp); + tcMain.TabPages.Remove(tabLicense); + tcMain.TabPages.Remove(tabDonations); + + // Load the GUI RichTextBoxes from resources. + rtbHelp.Text = DeheadEmAll.Properties.Resources.DeheadEmAll_HELP; + rtbLicense.Text = DeheadEmAll.Properties.Resources.DeheadEmAll_LICENSE; + rtbDonations.Text = DeheadEmAll.Properties.Resources.DeheadEmAll_DONATIONS; + } + + #endregion + + #region Getters/Setters Public Accessors + + /// LogLines + public string[] LogLines + { + get { return rtblLog.Lines; } + set { rtblLog.Lines = value; } + } + + #endregion + + #region Log + + /// + /// Saves the log to a text file. + /// + /// + /// + private bool SaveLogToFile(string strPath = null) + { + try + { + if (strPath != null) + { + DHEA.PathLogFile = strPath; + } + + // Determine if the user selected a log filename. + if (DHEA.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(DHEA.PathLogFile)) == false) Directory.CreateDirectory(Path.GetDirectoryName(DHEA.PathLogFile)); + + // Save the contents of the log to a text file. + File.WriteAllLines(DHEA.PathLogFile, LogLines); + + // Print to screen + Log.Information("Log file saved (" + DHEA.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 + + /// + /// Performs the startup tasks BGW DoWork. + /// + /// + /// + private void StartupTasks_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e) + { + // Run startup tasks. + DHEA.StartupTasks(); + } + + /// + /// Startup tasks BGW RunWorkerCompleted. + /// + /// + /// + private void StartupTasks_RunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e) + { + if (e.Cancelled) + { + Log.Warning("Startup tasks canceled"); + Log.Information("Ready"); + } + else if (e.Error != null) + { + Log.Error("Startup tasks failed"); + Log.Error(e.Error.Message); + Log.Information("Ready"); + } + else + { + Log.Information("Ready"); + } + + // Update the status message label. + UpdateStatusMessage("Ready"); + + // Enable buttons. + EnableAllButtons(); + } + + #endregion + + #region GUI Methods + + /// + /// Changes the path to the ROMs directory. + /// + /// + /// + private void ChangeROMsDir_Click(object sender, EventArgs e) + { + // Disable all buttons. + DisableAllButtons(); + + // 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.GetFullPath(DHEA.PathROMsDir) + }; + + // 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. + this.DHEA.PathROMsDir = fbdPathRomsDir.SelectedPath; + txtPathROMsDir.Text = fbdPathRomsDir.SelectedPath; + } + + // Dispose of the FolderBrowserDialog. + fbdPathRomsDir.Dispose(); + + // Enable all buttons. + EnableAllButtons(); + } + + /// + /// Changes the path to the ROMs deheadered directory. + /// + /// + /// + private void ChangeROMsDeheaderedDir_Click(object sender, EventArgs e) + { + // Disable all buttons. + DisableAllButtons(); + + // Create and initialize a FolderBrowserDialog for the ROMs deheadered directory. + FolderBrowserDialog fbdPathRomsDeheadedDir = new FolderBrowserDialog + { + ShowNewFolderButton = true, + Description = "Please enter a path to the ROMs deheadered directory: ", + SelectedPath = Path.GetFullPath(DHEA.PathROMsDeheadedDir) + }; + + // Determine if the user selected a folder name from the FolderBrowserDialog. + if (fbdPathRomsDeheadedDir.ShowDialog() == DialogResult.OK) + { + // Set both variables for compatibility for Windows .Net and Mono. + this.DHEA.PathROMsDeheadedDir = fbdPathRomsDeheadedDir.SelectedPath; + txtPathROMsDeheaderedDir.Text = fbdPathRomsDeheadedDir.SelectedPath; + } + + // Dispose of the FolderBrowserDialog. + fbdPathRomsDeheadedDir.Dispose(); + + // Enable all buttons. + EnableAllButtons(); + } + + /// + /// Cancels the current backgroundworker. + /// + /// + /// + private void Cancel_Click(object sender, EventArgs e) + { + if (bgwDeheaderROMs.WorkerSupportsCancellation == true) + { + // Print to screen + Log.Information("Cancellation pending after current operation ..."); + + // Update the status message label. + UpdateStatusMessage("Cancellation Pending ..."); + + // Disable the cancel button. + tsddbCancel.Enabled = false; + + // Cancel the asynchronous operation. + bgwDeheaderROMs.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.GetDirectoryName(DHEA.PathOptionsFile) + }; + + // 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. + DHEA.PathOptionsFile = ofdOptions.FileName; + + // Select the Log tab. + if (tcMain.TabPages.Contains(tabLog)) { tcMain.SelectTab(tabLog); } + + // Load the options. + DHEA.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 = "Options - DeheadEmAll.xml", + Title = "Please enter a path to the options file: ", + InitialDirectory = Path.GetDirectoryName(DHEA.PathOptionsFile) + }; + + // 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. + DHEA.PathOptionsFile = sfdOptions.FileName; + + // Select the Log tab. + if (tcMain.TabPages.Contains(tabLog)) { tcMain.SelectTab(tabLog); } + + // Save the options. + DHEA.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 = "DeheadEmAll-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. + DHEA.PathLogFile = sfdLog.FileName; + + // Select the Log tab. + if (tcMain.TabPages.Contains(tabLog)) { tcMain.SelectTab(tabLog); } + + // Save the log. + SaveLogToFile(DHEA.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"); + } + } + + /// + /// Toggles the visibility of the log. + /// + /// + /// + private void ViewLog_Click(object sender, EventArgs e) + { + if (tsmiLog.Checked) + { + tsmiLog.Checked = false; + tcMain.TabPages.Remove(tabLog); + } + else + { + tsmiLog.Checked = true; + 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; + tcMain.TabPages.Remove(tabOptions); + } + else + { + tsmiOptions.Checked = true; + tcMain.TabPages.Add(tabOptions); + tcMain.SelectTab(tabOptions); + } + } + + /// + /// Toggles the visibility of the help. + /// + /// + /// + private void ViewHelp_Click(object sender, EventArgs e) + { + if (tsmiHelp.Checked) + { + tsmiHelp.Checked = false; + tcMain.TabPages.Remove(tabHelp); + } + else + { + tsmiHelp.Checked = true; + 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; + tcMain.TabPages.Remove(tabLicense); + } + else + { + tsmiLicense.Checked = true; + tcMain.TabPages.Add(tabLicense); + tcMain.SelectTab(tabLicense); + } + } + + /// + /// 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; + tsmiToolba.Checked = false; + } + else + { + tsMain.Visible = true; + tsmiToolba.Checked = true; + } + } + + /// + /// After the form is shown, performs the startup tasks. + /// + /// + /// + private void Fprm_Shown(object sender, EventArgs e) + { + // Perform the application startup tasks. + bgwStartupTasks.RunWorkerAsync(); + } + + /// + /// Exits the WinForms app. + /// + /// + /// + private void Exit_Click(object sender, EventArgs e) + { + Application.Exit(); + } + + /// + /// Check some things to make sure it is safe to exit the WinForms application. + /// + /// + /// + private void Form_FormClosing(object sender, FormClosingEventArgs e) + { + if (bgwDeheaderROMs.IsBusy == true) + { + if (MessageBox.Show("The ROMs deheaderer 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; + } + } + } + + /// + /// Enables all of the buttons. + /// + private void EnableAllButtons() + { + // Enable all Menu Item buttons. + tsmiCommand.Enabled = true; + tsmiExit.Enabled = true; + tsmiDeheaderROMs.Enabled = true; + tsmiLoadOptions.Enabled = true; + tsmiSaveOptions.Enabled = true; + tsmiSaveLog.Enabled = true; + + // Enable all Toolbar buttons. + tsbDeheaderROMs.Enabled = true; + tsbLoadOptions.Enabled = true; + tsbSaveOptions.Enabled = true; + tsbSaveLog.Enabled = true; + + // Enable all Options buttons. + txtPathROMsDir.Enabled = true; + txtPathROMsDeheaderedDir.Enabled = true; + + // Enable all Options checkboxes. + chkA7800.Enabled = true; + chkFDS.Enabled = true; + chkLynx.Enabled = true; + chkNES.Enabled = true; + + // Disable all Options comboboxes. + cbLanguage.Enabled = true; + cbLogLevel.Enabled = true; + } + + /// + /// Disables all of the buttons. + /// + private void DisableAllButtons() + { + // Disable all Menu Item buttons. + tsmiCommand.Enabled = false; + tsmiExit.Enabled = false; + tsmiDeheaderROMs.Enabled = false; + tsmiLoadOptions.Enabled = false; + tsmiSaveOptions.Enabled = false; + tsmiSaveLog.Enabled = false; + + // Disable all Toolbar buttons. + tsbDeheaderROMs.Enabled = false; + tsbLoadOptions.Enabled = false; + tsbSaveOptions.Enabled = false; + tsbSaveLog.Enabled = false; + + // Disable all Options buttons. + txtPathROMsDir.Enabled = false; + txtPathROMsDeheaderedDir.Enabled = false; + + // Disable all Options checkboxes. + chkA7800.Enabled = false; + chkFDS.Enabled = false; + chkLynx.Enabled = false; + chkNES.Enabled = false; + + // Disable all Options comboboxes. + cbLanguage.Enabled = false; + cbLogLevel.Enabled = false; + } + + /// + /// Updates the application title. + /// + /// + /// + public bool UpdateTitle(string strTitle = "") + { + try + { + if (this.InvokeRequired && !this.IsDisposed) + { + Invoke(new MethodInvoker(delegate () + { + // Update the application title. + this.Text = DHEA.AppName + " v" + DHEA.AppVersion + strTitle; + })); + } + else if (!this.IsDisposed) + { + // Update the application title. + this.Text = DHEA.AppName + " v" + DHEA.AppVersion + strTitle; + } + return true; + } + catch (Exception) + { + return false; + } + } + + /// + /// Updates the progress status message label. + /// + /// + private void UpdateStatusMessage(string strMsg) + { + // Update the status message label. + tsslStatusMessage.Text = strMsg; + } + + /// + /// Updates the deheader progress bar. + /// + /// + private void UpdateDeheaderProgress(int intPercentage) + { + // Update the build progress status progress bar. + tspbDeheaderProgress.Value = intPercentage; + } + + #endregion + + #region Deheader ROMs + + /// + /// Deheaders all of the selected ROMs. + /// + /// + /// + private void DeheadROMs_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. + tsddbCancel.Enabled = true; + + // Change the log background color. + // rtblLog.BackColor = Color.LightGreen; + + // Update the status message label. + UpdateStatusMessage("Deheadering ROMs ..."); + + // Print to screen + Log.Information("Deheadering all selected ROMs ..."); + + // Deheader ROMs. + bgwDeheaderROMs.RunWorkerAsync(); + } + + /// + /// Deheaders all of the selected ROMs. + /// + /// + /// + private void DeheaderROMs_DoWork(object sender, DoWorkEventArgs e) + { + try + { + // Declarations + BackgroundWorker worker = sender as BackgroundWorker; // Background worker + int intProgress = 0; // Background worker progress + int intCountTotalFilesProcessed = 0; // Total files processed + int intCounterTotalDeheaded = 0; // Total deheadered counter + int intCountArrDirFiles = 0; // Total loop count + string strPathROMsDir = DHEA.PathROMsDir; // Path to the ROMs directory + string strPathROMsDeheadedDir = DHEA.PathROMsDeheadedDir; // Path to the deheadered ROMs directory + + // Checkers + bool boolPathROMsDirCheck = DHEA.PathROMsDirCheck(); + bool boolPathROMsDeheadedDirCheck = DHEA.PathROMsDeheadedDirCheck(); + + // Check the paths and directories. + if (boolPathROMsDirCheck != false && boolPathROMsDeheadedDirCheck != false) + { + // Print to screen + Log.Information("Options: ROMs Directory (" + strPathROMsDir + ")"); + Log.Information("Options: ROMsDeheaded Directory (" + strPathROMsDeheadedDir + ")"); + + // Get the directory files array and count. + string[] arrDirFiles = Directory.GetFiles(strPathROMsDir, "*.*", SearchOption.AllDirectories); + intCountArrDirFiles = arrDirFiles.Count(); + + // Create and start a stopwatch. + var stopWatch = new Stopwatch(); + stopWatch.Start(); + + // Main loop - Deheader all of the ROMs. + foreach (string strPathFile in arrDirFiles) + { + FileInfo fiInputFile = new FileInfo(strPathFile); + if ((fiInputFile.Extension == ".fds" || fiInputFile.Extension == ".nes") && (DHEA.FDS == true || DHEA.NES == true) && fiInputFile.Length > 16) + { + Log.Information("Deheadering: " + fiInputFile.FullName); + // UpdateStatusMessage("Deheadering " + (intCountTotalFilesProcessed + 1) + " of " + intCountArrDirFiles + " ROMs ..."); + int intOutputFileLength = (int)(fiInputFile.Length - 16); + byte[] arrOutputFileBytes = new byte[intOutputFileLength]; + using (BinaryReader reader = new BinaryReader(new FileStream(fiInputFile.FullName, FileMode.Open))) + { + reader.BaseStream.Seek(16, SeekOrigin.Begin); + reader.Read(arrOutputFileBytes, 0, intOutputFileLength); + } + File.WriteAllBytes(Path.Combine(strPathROMsDeheadedDir, fiInputFile.Name), arrOutputFileBytes); + intCounterTotalDeheaded++; + } + else if (fiInputFile.Extension == ".lnx" && DHEA.Lynx == true && fiInputFile.Length > 64) + { + Log.Information("Deheadering: " + fiInputFile.FullName); + // UpdateStatusMessage("Deheadering " + (intCountTotalFilesProcessed + 1) + " of " + intCountArrDirFiles + " ROMs ..."); + int intOutputFileLength = (int)(fiInputFile.Length - 64); + byte[] arrOutputFileBytes = new byte[intOutputFileLength]; + using (BinaryReader reader = new BinaryReader(new FileStream(fiInputFile.FullName, FileMode.Open))) + { + reader.BaseStream.Seek(64, SeekOrigin.Begin); + reader.Read(arrOutputFileBytes, 0, intOutputFileLength); + } + File.WriteAllBytes(Path.Combine(strPathROMsDeheadedDir, fiInputFile.Name), arrOutputFileBytes); + intCounterTotalDeheaded++; + } + else if (fiInputFile.Extension == ".a78" && DHEA.A7800 == true && fiInputFile.Length > 128) + { + Log.Information("Deheadering: " + fiInputFile.FullName); + // UpdateStatusMessage("Deheadering " + (intCountTotalFilesProcessed + 1) + " of " + intCountArrDirFiles + " ROMs ..."); + int intOutputFileLength = (int)(fiInputFile.Length - 128); + byte[] arrOutputFileBytes = new byte[intOutputFileLength]; + using (BinaryReader reader = new BinaryReader(new FileStream(fiInputFile.FullName, FileMode.Open))) + { + reader.BaseStream.Seek(128, SeekOrigin.Begin); + reader.Read(arrOutputFileBytes, 0, intOutputFileLength); + } + File.WriteAllBytes(Path.Combine(strPathROMsDeheadedDir, fiInputFile.Name), arrOutputFileBytes); + intCounterTotalDeheaded++; + } + else + { + Log.Information("Skipping: " + fiInputFile.FullName); + // UpdateStatusMessage("Skipping " + (intCountTotalFilesProcessed + 1) + " of " + intCountArrDirFiles + " ROMs ..."); + } + + // Increment the progress bar. + intCountTotalFilesProcessed++; + intProgress = (int)((double)intCountTotalFilesProcessed / (double)intCountArrDirFiles * 100); + worker.ReportProgress(intProgress); + + // 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("Deheadered " + intCounterTotalDeheaded + " ROMs in " + stopWatch.Elapsed); + } + } + catch (Exception ex) + { + // Print to screen + Log.Error("Error: " + ex.Message); + } + } + + /// + /// DeheaderROMs ProgressChanged. + /// + /// + /// + private void DeheaderROMs_ProgressChanged(object sender, ProgressChangedEventArgs e) + { + // Display the changed progress status. + UpdateDeheaderProgress(e.ProgressPercentage); + } + + /// + /// DeheaderROMs RunWorkerCompleted + /// + /// + /// + private void DeheaderROMs_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) + { + if (e.Cancelled) + { + Log.Warning("Deheadering all selected ROMs canceled"); + Log.Information("Ready"); + } + else if (e.Error != null) + { + Log.Error("Deheadering all selected ROMs failed"); + Log.Error(e.Error.Message); + Log.Information("Ready"); + } + else + { + Log.Information("Deheadering all selected ROMs completed"); + Log.Information("Ready"); + } + + // Reset the log background color. + // rtblLog.BackColor = SystemColors.Control; + + // Reset the progress bar. + UpdateDeheaderProgress(0); + + // Update the status message label. + UpdateStatusMessage("Ready"); + + // Disable the cancel button. + tsddbCancel.Enabled = false; + + // Enable all buttons. + EnableAllButtons(); + } + + #endregion + } +} diff --git a/DeheadEmAll-GUI/FrmDeheadEmAll.resx b/DeheadEmAll-GUI/FrmDeheadEmAll.resx new file mode 100644 index 0000000..c24a9af --- /dev/null +++ b/DeheadEmAll-GUI/FrmDeheadEmAll.resx @@ -0,0 +1,2026 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 17, 17 + + + + False + + + + + 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 + + + + 159, 22 + + + Deheader ROMs + + + 156, 6 + + + False + + + + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vwAADr8BOAVTJAAAB3VJREFUWEetlwtQlNcZho+K1hATbbSNaWumk6QzSWyjk+pMa2yaRp1YTZNYqyKI + yh0EuQgoai0xKgZirEmMpBaoNmoGhF1YLgssuysSubsgARzA4AUUAfG2CVf/vP3O2bPsBZqxTL+ZZ87l + /877Hs45//kXxiO0wrwovNJcEVFl7g+vNg+FVznB+5wZY47wIK/wcvPrwjzIeGtx0Jmee5uKbyOI2HT2 + NoKpdMC+j9f/Ww7BdXwNPQ74ETyHawsPgnsGG7tfY955HRe9tR3gBBd2YoueKOoaE2G6Tuw5dwumzgEH + zlzrRZS+CxFFncLD6kfUMA/VVbgTfpo2hOVeRygnZ2wEadrxQUkXnONOn4Jw0t2c0y48uBf39FBdecD+ + crIFq09dgn/6ZQSqriAgncgYG95prdhbdF3a2qLDPIQg0vbPsHhwL+658mSzwt5KbsSKlIvwPtkMn1Mt + VI4dz383ITbvmrS1xY17g/Alba9hj2bh+afkBoW98Wktlh+5gHUpDfD8VyOVHKpTyVkvS97vQZN1J9Ym + NYzKqqP12JH5tbS1xY27A1hP2h7DHg3C841PaxT2h4NVWPL3aqw5Ugu3zy7ALbGOuIBV1H7ncA3e/NiE + pYfOU855LCYWHazG64IqJ6qxMKEKAScapa0t2u/0w/2zOqwhXe7BvbjnawcrFfZKXCl+/34ZVh6qxsqP + zuPND0ksoRy/218G/mwB8UocrzuyUPSX4uV3SzA3lvMlnt9ZjNWJJmlri9buXvxmzzm8uq8MSxMqsDS+ + QrQX7i9V2Lx3z+K375VgeTyZ7vkSvD0v9izmU2mjxKleInL4uFh1E+JzL2GfpgW7M5uQVDzyDNwyDyIu + uwV7Nc04kPc1juqvIOqLBsz7W7HC5uww4OW/GjF/1xm8RPU5O4wELy3MJX61XY9ntxTiGeK5SN3ws9kx + eoQcv4DeQUVaPVy09fRh9SeVmL1Vr7AXowvBeUGUOomlj/N8VCF+vVOP2PRGxGc3IfJkneh/gfp5+fRm + LRbHlaCh/b6U//4oqu8iPQOeCc/H7Gidwp4L18JGvuCnm3LwZKAGs0JyMDMwGztT6+VwS6w6VIafUY41 + b4a/Br/cWoiCupsyY/RIMl7Gz0PzaNK5+EUE+YVpFTYrJJuMLDxNhtN8MuF+uByfl1zFkrhisDWp+Ejb + IiUs4Xu0GswtDZ5HKkTeon3FmLJRhZlBGiTqRr6GD2iHYr6owxO+mTRpi48gOEdhMwOyYGWatwrryLx/ + yLKnXff6kWRoRY95QLSt0XLTjGRjKwYffCfaHXf78OpuAx73UuHRDRmI/Lx2+NktGrvqUClc16cLj6do + xZ4K5CURkKWwGb4qcKYTj21Mx1fX7oqB/2ucKLmCie5pmO6jgot7KtaQqaG+Ewt2FWGSRxp+JH1m+Kpl + SfioFPYEDbDyyPrT8P9nFfpGOdVXu7+F6fIddN3vlz226L4/gCX7zsB1w2mLFom7ktbjXum0Iunij+N9 + FtS2Op/AVD81OFNo4HjP02ArT0FHM7eGuW8IfknVmE7L5+qVgZ9szsberIvyqSUScpvA3j4BF25KBlZN + Xp9GpSOZtrqvWmGP+mfiEWo8GZqDtYkV2Jr6FW5/MyiE+S56Hq0CW5uGySTmSrmTaKK8nZDXLHJ4NN/8 + BoHHTFjxcRke4xOlPK47JWA0smx1/0yF/YA6GB2ceK1N0Bp19G670Iwn+meB53EmE+N81JgVnY/7/Q9k + pi3+SHvP6DCKXDpoI9HY6vwQTqBXhw84XtYmJWyhru0Qz3iOPeNIZFJwNi7RuXAO9+TzYPRK8jyXUcm2 + 1QM1CmP0XjJvNfYXXJIStqilFWABNEEaJPKs0Ir8eFsh7vWNXIHFtA2M3neRR5Mc50CORLY3ZdME6ELg + yVOj8rE22YRo9UXc7h0SYvwM/DmJ/qINtO9CkHL5ZKi92+5yau76FkGn6vD2P6rgQrecyOO6I6BnAtnm + FxHjA6yD/Og8rMuAtrFbSgN36S3wOFaDyXSFcvMfRhZgB30TLNeMJfhkmBu9QXQlCwOr5ghIQyDbIbk0 + gTDqsEJ3u9ux2lG/bi203+Wtd+jn1ch7oIPugfkHzonxDnoCrVPdrh2aRxOgj5CAPwjJg+khv2rOkVja + RueFtseqN0y+U92uzT9GLII6rNDyvJNcM3yPd9F9kELCPfJMWKOZVuNYeTvkJ0OswNwEWgH6NDvobSlw + olAi2xEFNAFeoX21QA+D87AsyYSUyuuY8yGd6I2Z9FO71eIkYwVtE/PKwlspNThefQMvHaB3n1ZPjB/W + knoO6CSyvaWQJsArUdQpKLIQxldDLlmIFoEZjlfvgsOVlhz7vGGN70PqW9uR9INk5p6zLWJWW+lBtF7C + 6xJKnLrLiAj6PfcercTG1AZMELk0xj5vNHieA6QtkO1oXT3zy2haPmFbUa+YxDZ6uM0gSzu4WBgtaSj9 + peFU8sHOOQ8F17bqk2eMbqn4DzmxrG3Zix+UmSZuNwyMjzEq42MM/xfGEcye7YbvWIxxgG3Xm1iMfhlj + jP0HgownuXFWDYcAAAAASUVORK5CYII= + + + + 159, 22 + + + Load Options + + + False + + + + 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 + + + + 159, 22 + + + Save Options + + + 156, 6 + + + False + + + + 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 + + + + 159, 22 + + + Save Log + + + 156, 6 + + + + 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 + + + + 159, 22 + + + Exit + + + 90, 20 + + + DeheadEmAll + + + 128, 22 + + + Log + + + 125, 6 + + + 128, 22 + + + Options + + + 125, 6 + + + 128, 22 + + + Help + + + 125, 6 + + + 128, 22 + + + License + + + 125, 6 + + + 128, 22 + + + Donations + + + 125, 6 + + + 128, 22 + + + Toolbar + + + 44, 20 + + + View + + + 0, 0 + + + 784, 24 + + + 0 + + + msMain + + + msMain + + + System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 3 + + + 112, 17 + + + False + + + + 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 + + + + Magenta + + + 36, 36 + + + Deheader ROMs + + + 6, 39 + + + False + + + + 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 + + + + Magenta + + + 36, 36 + + + Load Options + + + False + + + + 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 + 7PMAAAAASUVORK5CYII= + + + + Magenta + + + 36, 36 + + + Save Options + + + 6, 39 + + + False + + + + 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 + + + + Magenta + + + 36, 36 + + + Save Log + + + 6, 39 + + + + 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 + qN6FMcb+AVml0ycOlyIiAAAAAElFTkSuQmCC + + + + Magenta + + + 36, 36 + + + Log + + + + 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 + Y0nnJPN0AAAAAElFTkSuQmCC + + + + Magenta + + + 36, 36 + + + Options + + + + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAZmSURBVFhHtZcJTBRnGIZ/WxPFmNRiW9uatFZb29p6tF6t + ptF61MQj0WrVVORSV1YRELxQ6l2r9UBbRQwe8ao2ssglC7jLjaKsClrxYGGVG6k0iMVj1bffNzsLwzor + PeyXPJl//nm/9/1ndpgZBFfAmfpp88/WWwJy6xFwluCtEp6zo5xzNnbUKo/xNqfe7H+m/hspXJta4+aR + ZrFq025Dm34bc2g7N6PWRvpzQvZjbx/KkLJSqx9Q9njhkVBR451QCW99JXyTqxBoqEbQ/wR7cwZneSdU + wCO+olBM093At7qb0MSWwv9EGfzin808wjeuDNqYUvjI8Jjn1PSOcIaG9JzJ2WLS4UJM/sWM2ZEW+Ogs + 0lYNzTELPI8UwYPwjbqBkMQy/GCswDoiRF+GuTTHxzyPFklaNQ+GMzSRxZh82AzOFuN2X8aEvQXwOnRd + FW9i2v5rcD9wDZtSynHKcge37lphfYzGsj5+gup6K7KK7+BHQxmmk9aNerj3Kc/DvL2GCXsKwNli1PY8 + jA3LhxtN2JmuYFL4JayMs6Dw1j05ruW6WtWAkJhiqVfpJfnTybrtuYwxlMnZYujmXIwMNWEKTTBTd14k + 8jFxRx6+2mLCjtRSbE8tQfzFGtm+5YrOu4Wd6aXYZriJkZtNktcU8mRvW04eRlAmZ4vB605h6PrTmLj1 + nMSYzWcxbEMOPl2ZhQ36YkRklKDvqiz0X52NmAvVcoTzisytbNTvzy7Dmjiz5PUleY7edFbOMWEIZXK2 + 6L8yA4NXZ2E0CQavoUba77ksDV4RF7AxwSyN+6/IQN/l6egdkg6dqVKOAuoarKi7Z5X3gKM55ehFetb2 + ox4ehyYVwy38vDSWsiiDswatzpT2Re+lKegbkop+IWnoRWPm4yVGFJTX40hOGd4LOomewUb0WWab70PH + l0degVsYncXaTAz9PhPu4efwXWQBegWnoCdrZG33BQZEn6vEhZt16LHYCM5if87iTN4XPRYmQ0kXPz20 + ey/I5wTszyxBF3893g9Kwkd0/MMFyXibNF0DEtGd5roHJkljnuNjrGEtz/1KJ2Avr10mvEM+jnni3QA9 + lLw5Jw76/Cq5zVZ702+gGzV3809oplVD0szX48ipUrnbVlG55XhdG/eUXrzlGw87nSn8g6BEVNfdl9ua + asauXHScFd2odYbrzGj47jsvdzVVye0GCkyQMpR68YZPDOy8POM4hqxKwRO5yV4NDx5jwLKT6DjzeKPW + Ga7k8cXKFDx81NyF9z8LMdACm3uIV2ZGwU4792MYuyFDbmkqc9VddNJEk3mT1hmu3lHorI1BKZ2xY41Y + m4r27pHN9MKVm2Ta0gJGqyygkBbw6qzj6EALUOrVeMlbJ52Z2gKG0QJcKEOpFx3YWKatpw4DVxhVf4Le + wclw8dI1ap3BHgOWG/BA5Sfos/RpD9GeLq0dF7rJOvnFo1LlJpwcdgatPHSNWmcI0nhGmOSuprrxewNc + 58ahHWU007ely6VEeEUh6nyF3Garn4xFcJkdgzaEo94R1rTzicWudIvcbatDOaUQnvQzO+hFa20slAjv + 4xhHZ2uvUGMxBN3Zrci49ZxYvEDmvEhBd7PQkAFDx3mOj7FGkFbQn2MYPT/sNXwrPfdJ91ReK7osSgT9 + nb5IB0wldfg5jb5YZtBlon3pGIfT1utgHgZuzMJri5LQiRi0KQueB+jVSg+aRi2b0yIiskuQWVQrnQB7 + K7MkneCHgSOaWArIxrxj9MEwixrn0hw1i9mxCM8qkc8JqP3zIdH0MtqWZrFdEdZyD+kDowrwyfpMaaya + JeadgCq0CM3RS1iecF0aC584hNPZtFTb6LLb9WuTzfA4mG/bV8tgBD27nUImmqO/wU9XgN2KF0tLFUZX + KTD6CjwPXZQ8VL3tCH4hPAttPD7fchrZxX/I9i1XmrkW/egn5F5VTyWCXqct4sur1WNUuAkHcitQRH/T + ygfNfesTmGsasO9MOYaH0WcWvZrFPOpR83JEBNE7+e/AYl4I4bLYgG7rMtEvNEeiK32UtFlkoBuPj1M4 + a9U81BALTuIfw40BFOKfaIPHPKembQmxKLFG8OqbYZRxnP+3OPFbcLJQiMUGN7HY+IhAE/StJqGc+y+o + +cU+FAsN46X/kEVw6lSxJOWqmB1pFcEpj2hfhsfPA6UfBS9KuSyCjV8LIcRfAWPVGGBEnSIAAAAASUVO + RK5CYII= + + + + Magenta + + + 36, 36 + + + Help + + + + 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 + + + + Magenta + + + 36, 36 + + + License + + + Magenta + + + 36, 36 + + + Donations + + + + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAUdSURBVFhHtZd9TJVlGMYfrelsWU4njmn+oZmaJW2lW4qa + qMkCTVQQUFHkm6N8C0m1XKAYFQKZtqa45cRZgHDk8CkcgdRDfAhOpAFqwgBxE1JwFVte3ffDezzv+cD1 + B+fZfrzve93Xc1/PeZ9z3nMQPCLrBj+Irh00hOv7/oku63y6S9/5rz3g3tFl3cPRtY8bImv/XC/Dw6r7 + V4VU9Q6EV/UjjAiv7oeGjmaoNT4fzWPpU9cJ7i0ziNCqh0OaqofrhX9xT/Oe4l4wmrI+xFQ8QCxzSYX6 + 2lbdlm7poWvurSnvk1kSXW+r2J53D75EUEEXooq6EanrRoSd4N6cEaTtkpmcLbaebYdndgeCc+4iLO8P + hObaF84Iyb0LL8rkbLHx1C1symqF/9k2BGS3Yw+J/4cAC2x5bCIz2uBBmRsoW7h+34SPjjdjR1YL/E7f + ws4spkUe/VTw9Q6asJ3wPdUC35Mt8FHBGtfYY2uusedOmdECtxPNWE/ZYnVaHdYerYcXCT4/3ID3CaYZ + XrQoj2NNcM9shGtGIz482kC+BqxJa4BLWj1RZ0G9rLFnHeGa3gg3mrvp2HV4Hm+SPX24N2Vso/N16fXg + bOGccg2rjhiwmYStGQ3YQOLa1FqsPHINzoevYrmEzxXI75xiUI5qWCMUH88ZmXsVK6jukmqAO/XeQhlb + Muqx6isDlpMulhysxrIva+BOhpXJV7CUrlnjo4kai3P19Wi6uYd7MiuSf4UbhS9LqpHXwunTSrz7mR5L + P7+MxYmVcErUY/GBSiucqPYOeRn2WXlUdfZa1QnZm2pLKIszOVss2l8G5k1JOebHluHthHIz3oovxxux + pVhExwVxpVgYZ+3h+QsUz3w68hxLD/deGDfiZThXzIsqBvM6MSeyGLm/deN235AZHfeHEPVTExxCtHA+ + qEfzvUdWnptdj+CSXIXp5Ak52Yh2mmPp0V2/j3nRJZirZDJi9t5CMLM0hZgbWYSegb9ha5ysvIOJO3Pw + 8TdXFMV6eGcaMGFHDtKK2hTFfPQPDWNBTAlmhl+UmYxwDC0AMyOkAK9pLuLOgyeK3XwcK23HeJ+f4ZpS + pSjWw+PbKxjnfR4p+a2KYj56Bv7CnAgdHILzZSYjpgfmgZkWkAfHkHzcHmUBmcVtEJ7nsC75sqJYj42p + NfRsz0ZyXouimI9uWsBsjRZT9+TKTEZMpT/MFFqAw3MWkCEXkI01yXpFsR7uqfSxogUkPWcBs2gBr9IC + jLliStAFMK8EXsA02obR3gPflXXIO7D60Oh3wO1rvgPncKjA9hYMPBmGI23zZHqxxlwxmfaDeZmYFJiP + 4NONyKAwNem0/+8n6THBPxcz9hUiSdtq5Tlc+DtmRumk570vKnCU5lh69p5pwktBI1nGXDGJ3ggmtBC7 + cyH8cqwYT3eI6xOD6Y2zy4aHtAn8IsjzAnmt6gz15ro6U7wYpoUknMKDSPCnfbEnlMFZxlwxjvZEQgWP + H+txprbLrvhkNcosY64Q/DBgAgsQev4mbvQMEo/txCBi8lpl1rNcsU+HZ2iIcBLpSWUfqDdnqDMFPX5N + 0LM5gqFzu0C9OUOdKfgL4RklCmptLLHRX8SUwgR9PUrU2lhio7+g72gT5QpqbSyx0V/QDwQTlxTU2lhi + o7+IL+0Q8SRKKhSM12ONRf+YS/doARWbRYJ2WCRQIYF+o0n43B6o+//yVOwv3y7/QxafVG4j8Y44oMcI + ZLILSv/4ik6RqN8thBD/AeYXmpqI6QYOAAAAAElFTkSuQmCC + + + + Magenta + + + 36, 36 + + + Toolbar + + + 0, 24 + + + 784, 39 + + + 1 + + + tsMain + + + tsMain + + + System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 2 + + + 200, 17 + + + False + + + Magenta + + + 20, 20 + + + Cancel + + + 200, 16 + + + 148, 17 + + + Performing startup tasks ... + + + 399, 17 + + + 0, 428 + + + 784, 22 + + + 2 + + + ssMain + + + ssMain + + + System.Windows.Forms.StatusStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 1 + + + + Top, Bottom, Left, Right + + + 6, 6 + + + 764, 327 + + + 0 + + + + + + rtblLog + + + Serilog.Sinks.LogEmAll.RichTextBoxLog, Serilog.Sinks.LogEmAll, Version=0.0.5.0, Culture=neutral, PublicKeyToken=null + + + tabLog + + + 0 + + + 4, 22 + + + 3, 3, 3, 3 + + + 776, 339 + + + 0 + + + Log + + + tabLog + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tcMain + + + 0 + + + Top, Left, Right + + + True + + + NoControl + + + 6, 16 + + + 357, 13 + + + 0 + + + To change the language or log level, save the options and restart the app. + + + lblOptionsInfo1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbOptionsInfo + + + 0 + + + 6, 210 + + + 764, 32 + + + 4 + + + Options Info + + + gbOptionsInfo + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabOptions + + + 0 + + + Top, Left, Right + + + True + + + NoControl + + + 6, 49 + + + 60, 13 + + + 3 + + + Log Level: + + + lblLogLevel + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbSystem + + + 0 + + + True + + + NoControl + + + 6, 22 + + + 61, 13 + + + 2 + + + Language: + + + lblLanguage + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbSystem + + + 1 + + + Top, Left, Right + + + False + + + Information + + + 73, 46 + + + 685, 21 + + + 1 + + + cbLogLevel + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbSystem + + + 2 + + + Top, Left, Right + + + False + + + en + + + 73, 19 + + + 685, 21 + + + 0 + + + cbLanguage + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbSystem + + + 3 + + + 6, 131 + + + 764, 73 + + + 3 + + + System + + + gbSystem + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabOptions + + + 1 + + + Top, Left, Right + + + True + + + NoControl + + + 6, 19 + + + 87, 17 + + + 3 + + + A7800 (.a78) + + + chkA7800 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbROMs + + + 0 + + + True + + + NoControl + + + 178, 19 + + + 73, 17 + + + 2 + + + Lynx (.lnx) + + + chkLynx + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbROMs + + + 1 + + + True + + + NoControl + + + 257, 19 + + + 77, 17 + + + 1 + + + NES (.nes) + + + chkNES + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbROMs + + + 2 + + + True + + + NoControl + + + 99, 19 + + + 73, 17 + + + 0 + + + FDS (.fds) + + + chkFDS + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbROMs + + + 3 + + + 6, 6 + + + 764, 42 + + + 2 + + + ROMs + + + gbROMs + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabOptions + + + 2 + + + Top, Left, Right + + + Top, Left, Right + + + 133, 45 + + + 625, 20 + + + 5 + + + txtPathROMsDeheaderedDir + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbPaths + + + 0 + + + Top, Left, Right + + + 133, 19 + + + 625, 20 + + + 4 + + + txtPathROMsDir + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbPaths + + + 1 + + + True + + + NoControl + + + 6, 48 + + + 121, 13 + + + 3 + + + ROMs Deheadered Dir: + + + lblROMsDeheaderedDir + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbPaths + + + 2 + + + True + + + NoControl + + + 6, 22 + + + 59, 13 + + + 2 + + + ROMs Dir: + + + lblROMsDir + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbPaths + + + 3 + + + 6, 54 + + + 764, 71 + + + 0 + + + Paths + + + gbPaths + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabOptions + + + 3 + + + 4, 22 + + + 3, 3, 3, 3 + + + 776, 339 + + + 1 + + + Options + + + tabOptions + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tcMain + + + 1 + + + Top, Bottom, Left, Right + + + 6, 6 + + + 764, 341 + + + 0 + + + + + + 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 + + + 776, 339 + + + 2 + + + Help + + + tabHelp + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tcMain + + + 2 + + + Top, Bottom, Left, Right + + + 6, 6 + + + 764, 327 + + + 0 + + + + + + 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 + + + 776, 339 + + + 3 + + + License + + + tabLicense + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tcMain + + + 3 + + + Top, Bottom, Left, Right + + + 6, 6 + + + 764, 327 + + + 0 + + + + + + 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 + + + 776, 339 + + + 4 + + + Donations + + + tabDonations + + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tcMain + + + 4 + + + Fill + + + 0, 63 + + + 784, 365 + + + 3 + + + tcMain + + + System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + 289, 17 + + + 433, 17 + + + True + + + 54 + + + 6, 13 + + + 784, 450 + + + + AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA + AAC2aQAat2kAmrdpAPK3aQD4t2kA97dpAPe3aQD3t2kA97dpAPe3aQD3t2kA97dpAPe3aQD3t2kA97dp + APe3aQD3t2kA97dpAPe3aQD3t2kA97dpAPe3aQD3t2kA97dpAPe3aQD3t2kA97dpAPe3aQD3t2kA+Ldp + AO63aQCLtmkAEbVoAJS2aAD5tmgA/7ZoAP+2aAD/tmgA/7ZoAP+2aAD/tmgA/7ZoAP+2aAD/tWgA/7Vo + AP+1aAD/tWgA/7VoAP+1aAD/tWgA/7VoAP+1aAD/tWgA/7VoAP+1aAD/tWgA/7VoAP+1aAD/tWgA/7Zo + AP+2aAD/tmgA/7ZoAPS1aAB9tGYA7rRmAP+0ZgD/tGYA/7RmAP+0ZgD/tGYA/7RmAP+0ZgD/s2MA/7Rm + BP+1aAr/tmoN/7ZqDf+2ag3/tmoN/7ZqDf+2ag3/tmoN/7ZqDf+2ag3/tmoN/7ZqDf+2ag3/tmoN/7Zq + Df+2aQv/tWcG/7NkAP+0ZQD/tGYA/7RmAN6zZAD4s2QA/7NkAP+zZAD/s2QA/7NkAP+zZAD/smMA/7du + E//PnmL/4L+X/+bMrf/o0bX/6dG2/+jRtf/o0bX/6NG1/+jRtf/o0bX/6NG1/+jRtf/o0bX/6NG1/+jR + tf/o0bX/6NG1/+fPsf/ixaD/1qx4/757Kf+yYwD/s2QA97FjAPexYwD/sWMA/7FjAP+xYwD/sWMA/7Fj + AP+wYAD/y5ZY//z49P////////////////////////////////////////////////////////////// + ////////////////////////////////////////3r2V/7FjBP+xYgD3sGEA97BhAP+wYQD/sGEA/7Bh + AP+wYQD/sGEA/65eAP/NnGL//vz6//////////////////////////////////////////////////// + ///////////////////////////////////////////////////hxKD/sGIG/7BhAPevXwD3r18A/69f + AP+vXwD/r18A/69fAP+vXwD/rVwA/8yaYf/9/Pr///////////////////////////////////////// + /////////////////////////////////////////////////////////////+DCoP+vYAb/rl8A961d + APetXQD/rV0A/61dAP+tXQD/rV0A/61dAP+rWgD/y5li//78+v////////////////////////////// + ////////////////////////////////////////////////////////////////////////4MKg/61e + Bv+tXQD3rFwB96xcAf+sXAH/rFwB/6xcAf+sXAH/rFwB/6tZAP+8ezb/6NO8//fw6P/69vH/+/fz//v3 + 8//79/P//Pn3/////v////////////////////////////38+v/79/P/+/fz//v38//79vL/+fPs//Di + 0//KmGL/q1sC/6xbAfeqWgP3qloD/6paA/+qWgP/qloD/6paA/+qWgP/qloD/6pZA/+vYxP/uHYw/76C + Rf/Bh03/wYdN/8CES//Sp3///Pn2////////////////////////////48it/8CFTP/Bh03/wYdN/8CE + Sf+7ejj/smkc/6paBv+qWgP/qloD96lYBPepWAT/qVgE/6lYBP+pWAT/qVgE/6lYBP+pWAT/qVgE/6hX + A/+oVgH/p1UA/6dVAP+nVQD/pVEA/7+CSv/69fD///7+//7+/f/+/v3//v79///////XsYv/plMA/6dU + AP+nVQD/p1UA/6hVAf+oVwL/qVgE/6lYBP+pWAT3qFYE96hWBP+oVgT/qFYE/6hWBP+oVgT/qFYE/6hW + BP+oVgT/qFYE/6hWBP+oVgT/qFYE/6hXBP+nVQL/sWkk/8qZav/Lmmr/y5tr/8uba//Lm2v/zJxs/7t8 + PP+nVgP/qFYE/6hWBP+oVgT/qFYE/6hWBP+oVgT/qFYE/6hWBPemVQT3plUE/6ZVBP+mVQT/plUE/6ZV + BP+mVQT/plUD/6ZUAv+lUgD/pFEA/6VRAP+lUQD/pVEA/6VSBP/HkmH/0qmB/6laEf+jTwD/pFEA/6RR + AP+kUQD/pVMB/6ZVA/+mVQT/plUE/6ZVBP+mVQT/plUE/6ZVBP+mVQT/plUE96VTAvelUwL/pVMC/6VT + Av+lUwL/pVMD/6RSAv+jUAH/qVsS/7l4Pf/HlWX/zqF1/8uabf+9gEr/xZBh//bt5v/+/Pv/3L2g/6xh + HP+jUAD/pVMC/6VTA/+lUwP/pVMC/6VTAv+lUwL/pVMC/6VTAv+lUwL/pVMC/6VTAv+lUwL3pFAC96RQ + Av+kUAL/pFAC/6RRAv+jTwD/plUM/8OMXP/n0b3/+PLs//bu5//y5tz/9u3l//nz7v/8+fb///////// + ///+/v3/4sew/69lJv+iTgD/pFEC/6RQAv+kUAL/pFAC/6RQAv+kUAL/pFAC/6RQAv+kUAL/pFAC/6RQ + AvejTwH3o08B/6NPAf+jTwH/ok0A/6haFf/XspP/+/f0//38+//XtJb/tHE3/61jIP+ybTH/x5Rq/+nW + xf/+/Pv/////////////////59K//7BoKv+iTQD/o08B/6NPAf+jTwH/o08B/6NPAf+jTwH/o08B/6NP + Af+jTwH/o08B96RRA/ekUQP/pFED/6NQAv+mVQz/17OT//79+////////vz7/9Sti/+lUwz/ok4A/6JO + AP+iTQD/rGAd/9axkP/8+fb////////////v4dT/tHAz/6JPAf+kUQP/pFED/6RRA/+kUQP/pFED/6RR + A/+kUQP/pFED/6RRA/+kUQP3plUI96ZVCP+mVQj/pVMF/8WPXv/79/T//////////////////Pr3/9Wv + i/+pWxH/plQG/6dVCP+lUwX/qVoQ/9i0kv///v7/+PHq/7+ETP+lUwX/plUI/6ZVCP+mVQj/plUI/6ZV + CP+mVQj/plUI/6ZVCP+mVQj/plUI/6ZVCPeqWgv3qloL/6paCv+uYxf/6NK9/////////////v38//v4 + 9P/+/fz//Pr4/9exjf+tYBP/qVkJ/6pbC/+pWAj/smkh/+zayP/48ev/u3o6/6lYB/+qWwv/qloL/6pa + C/+qWgv/qloL/6paC/+qWgv/qloL/6paC/+qWgv/qloL965hCfeuYQn/rV4F/7+AO//58uv///////37 + +P/dvJb/xItM/9u4kP/8+vf//fr4/9m0jP+xZhL/rl8H/69hCf+tXgT/z6Bs//38+v/TqHj/rV4F/65h + Cf+uYQn/rmEJ/65hCf+uYQn/rmEJ/65hCf+uYQn/rmEJ/65hCf+uYQn3tGcH97RoCP+yZAL/zJlb//36 + +P//////8OHO/7lyG/+xYgD/t28X/+7cxv///////fr4/9u3i/+2bBD/s2YF/7JlBP/BgjT/+vTt/+HD + nf+zZwj/s2cH/7RnB/+0Zwf/tGcH/7RnB/+0Zwf/tGcH/7RnB/+0Zwf/tGgH/7RnB/e4bgv3unET/7lu + Ef/SomP//vz6///////z5tb/wH8p/7ZpA/+/fCT/8eLP/////////////fv4/926jP+6cxP/t2wH/8GA + Kf/37+T/5cql/7hvDf+4bgv/uG4L/7huC/+4bgv/uG4L/7huC/+4bgv/uG4L/7pyF/+5cBH/uG4L9712 + F/e/eiP/wn40/9OiZv/8+fX///////79/P/r1bj/2K93/+nSs//58+r/5Mae/+HAlf/48OX//fv5/+C+ + kf++eBv/ypFF//v28P/iw5r/vXUV/712F/+9dxf/vXYX/712F/+9dhf/vXYX/753Gf/Aeyb/w4E4/795 + H/+9dhf3wn8l98SCLv/IikT/0Jtg//jw5v///////////////////v7//////+PEmv/CfiP/wXsf/9y0 + f//+/fv//fv4/+LCmf/lyaP//fv4/9iscv/BfCH/wn8l/8J+Jf/CfyX/wn8m/8OAKf/FgzH/x4c9/8mL + Rv/JikX/xIEs/8J/JffIhjD3yoo4/86STv/PlFH/7NO4//////////////////////////7/4b2P/8eF + MP/HhC7/2a1z//37+P///////v37//79/P/16tv/z5VM/8mINf/Kijn/y4s8/8uNQf/Nj0b/zpFL/8+S + T//Pk1D/z5NP/86STf/JiTb/yIYw982PN/fPkkH/1JpX/9OZVv/crXf/+fHn//////////////////// + ///37OD/4LiJ/96zgP/z5NL//////////////////fv5/+XCmf/TmFP/05pW/9SaV//Umlj/1JtZ/9Sb + Wf/Um1j/1JtY/9SaWP/Um1j/05pW/8+RPv/Ojzf31Jg/99abSP/Zo2D/2aNh/9miX//mwpb/+/bw//// + ///////////////////9+/j//fr3/////v////////////78+v/u1bb/26Vl/9mjYP/Zo2H/2aNh/9mj + Yf/Zo2H/2aNh/9mjYf/Zo2H/2aNh/9mjYf/Zol7/1ZpG/9SYP/faoUv326NQ/96rZv/erGn/3qtp/96r + aP/oxJT/+O7f///+/f/////////////////////////////////79u7/7tKu/+Cubv/eq2j/3qxp/96r + af/erGn/3qxp/96saf/erGn/3qxp/96saf/erGn/3qxp/96qZf/bo0//2qJL9+CrWfjgq1n/4rBn/+O0 + cf/ktHH/5LRw/+Ozb//nvH//8NSt//fp1P/79Or//Pjx//z27f/57d3/89y7/+rDjP/ktHD/47Rw/+S0 + cf/ktHH/5LRx/+S0cf/ktHH/5LRx/+S0cf/ktHH/5LRx/+S0cf/jtHD/4q9l/+CrWf/gq1n05rVj3Oa1 + Y//mtWX/6Llu/+i7df/pu3b/6bt1/+i7dP/ounP/6b15/+vDhP/sxor/68SG/+q/fP/ou3T/6Lpz/+m7 + df/pu3b/6bt1/+m7df/pu3X/6bt1/+m7df/pu3X/6bt1/+m7df/pu3b/6Lt0/+e4bf/mtWT/5rVj/+a0 + YsfrvWtk7L9t5+zAbv/sv27/7MBv/+zAcP/swHD/7MBw/+zAcP/swHD/7MBv/+y/bv/sv2//7MBv/+zA + cP/swHD/7MBw/+zAcP/swHD/7MBw/+zAcP/swHD/7MBw/+zAcP/swHD/7MBw/+zAcP/swG//7MBu/+zA + bv/sv23d671rT+7EdAbvxnZW8Mh4wPHJee7xyXn18cl59PHJefTxyXn08cl59PHJefTxyXn08cl59PHJ + efTxyXn08cl59PHJefTxyXn08cl59PHJefTxyXn08cl59PHJefTxyXn08cl59PHJefTxyXn08cl59PHJ + efXxyXnr8Mh3uO/GdUnswXACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + + + + DeheadEmAll + + + tsmiCommand + + + 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 + + + toolStripSeparator9 + + + System.Windows.Forms.ToolStripSeparator, 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 + + + 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 + + + toolStripSeparator4 + + + 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 + + + toolStripSeparator5 + + + 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 + + + toolStripSeparator6 + + + 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 + + + toolStripSeparator7 + + + 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 + + + toolStripSeparator11 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsmiToolba + + + 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 + + + toolStripSeparator2 + + + System.Windows.Forms.ToolStripSeparator, 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 + + + tspbDeheaderProgress + + + System.Windows.Forms.ToolStripProgressBar, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsslStatusMessage + + + System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsslSpring + + + System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + bgwStartupTasks + + + System.ComponentModel.BackgroundWorker, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + bgwDeheaderROMs + + + System.ComponentModel.BackgroundWorker, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsmiDeheaderROMs + + + System.Windows.Forms.ToolStripMenuItem, 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 + + + tsmiSaveLog + + + System.Windows.Forms.ToolStripMenuItem, 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 + + + tsbDeheaderROMs + + + System.Windows.Forms.ToolStripButton, 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 + + + tsbSaveLog + + + System.Windows.Forms.ToolStripButton, 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 + + + 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 + + + tsbViewToolbar + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsddbCancel + + + System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + FrmDeheadEmAll + + + 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/DeheadEmAll-GUI/Program.cs b/DeheadEmAll-GUI/Program.cs new file mode 100644 index 0000000..a50b585 --- /dev/null +++ b/DeheadEmAll-GUI/Program.cs @@ -0,0 +1,36 @@ +using System; +using System.Threading; +using System.Threading.Tasks; +using System.Windows.Forms; +using Serilog; +using Serilog.Formatting.Display; +using Serilog.Sinks.LogEmAll; + +namespace DeheadEmAll_GUI +{ + static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + ConfigureSerilog(); + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new FrmDeheadEmAll()); + } + + /// + /// 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/DeheadEmAll-GUI/Properties/AssemblyInfo.cs b/DeheadEmAll-GUI/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..33ca079 --- /dev/null +++ b/DeheadEmAll-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("DeheadEmAll-GUI")] +[assembly: AssemblyDescription("The Original Automated ROM Deheaderer")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("DeheadEmAll")] +[assembly: AssemblyProduct("DeheadEmAll-GUI")] +[assembly: AssemblyCopyright("Copyright (c) 2016-2025 DeheadEmAll - All Rights Reserved")] +[assembly: AssemblyTrademark("DeheadEmAll - The Original Automated ROM Deheaderer")] +[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("fcebbe29-8a30-4e30-9eee-df5f44922223")] + +// 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.8")] +[assembly: AssemblyFileVersion("1.5.8")] diff --git a/DeheadEmAll-GUI/Properties/Resources.Designer.cs b/DeheadEmAll-GUI/Properties/Resources.Designer.cs new file mode 100644 index 0000000..e27f813 --- /dev/null +++ b/DeheadEmAll-GUI/Properties/Resources.Designer.cs @@ -0,0 +1,193 @@ +//------------------------------------------------------------------------------ +// +// 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 DeheadEmAll_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("DeheadEmAll_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 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 DeheadROMs_32x32 { + get { + object obj = ResourceManager.GetObject("DeheadROMs_32x32", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 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.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 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 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 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 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 Toolbar_32x32 { + get { + object obj = ResourceManager.GetObject("Toolbar_32x32", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/DeheadEmAll-GUI/Properties/Resources.resx b/DeheadEmAll-GUI/Properties/Resources.resx new file mode 100644 index 0000000..d687810 --- /dev/null +++ b/DeheadEmAll-GUI/Properties/Resources.resx @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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\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\DeheadROMs_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\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\Images\Help_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\LoadOptions_32x32.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\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\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/DeheadEmAll-GUI/Properties/Settings.Designer.cs b/DeheadEmAll-GUI/Properties/Settings.Designer.cs new file mode 100644 index 0000000..bcadacd --- /dev/null +++ b/DeheadEmAll-GUI/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// 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 DeheadEmAll_GUI.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.5.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/DeheadEmAll-GUI/Properties/Settings.settings b/DeheadEmAll-GUI/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/DeheadEmAll-GUI/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/DeheadEmAll-GUI/Resources/Images/Cancel_16x16.png b/DeheadEmAll-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/DeheadEmAll-GUI/Resources/Images/DeheadROMs_32x32.png b/DeheadEmAll-GUI/Resources/Images/DeheadROMs_32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..22e5e1bf443805d73354b7527ab6ab7766b7e83e GIT binary patch literal 1330 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 literal 0 HcmV?d00001 diff --git a/DeheadEmAll-GUI/Resources/Images/Help_32x32.png b/DeheadEmAll-GUI/Resources/Images/Help_32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..3b3bae342fec1e473445c06e512f36b1867d0133 GIT binary patch literal 2060 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 literal 0 HcmV?d00001 diff --git a/DeheadEmAll-GUI/Resources/Images/LoadOptions_32x32.png b/DeheadEmAll-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/DeheadEmAll-GUI/Resources/Images/Log_32x32.png b/DeheadEmAll-GUI/Resources/Images/Log_32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..c202c5aa4524b8c0bc14815ecbfe7addbeac1d0c GIT binary patch literal 1457 zcmV;i1y1^jP)975Ip9AQJuoSt*#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/DeheadEmAll-GUI/Resources/Images/Options_32x32.png b/DeheadEmAll-GUI/Resources/Images/Options_32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..1500302b63a259f1aa730cf5babe672306e9919d GIT binary patch literal 2025 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

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/DeheadEmAll-GUI/Resources/Images/Toolbar_32x32.png b/DeheadEmAll-GUI/Resources/Images/Toolbar_32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..114c907ec66d01ca1a1ec13fd53e74fd9718e6d0 GIT binary patch literal 1386 zcmV-w1(o`VP)2mHsP2POp+`~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/DeheadEmAll-Installer/DeheadEmAll-Installer.vdproj b/DeheadEmAll-Installer/DeheadEmAll-Installer.vdproj new file mode 100644 index 0000000..dcbdaee --- /dev/null +++ b/DeheadEmAll-Installer/DeheadEmAll-Installer.vdproj @@ -0,0 +1,2143 @@ +"DeployProject" +{ +"VSVersion" = "3:800" +"ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}" +"IsWebType" = "8:FALSE" +"ProjectName" = "8:DeheadEmAll-Installer" +"LanguageId" = "3:1033" +"CodePage" = "3:1252" +"UILanguageId" = "3:1033" +"SccProjectName" = "8:" +"SccLocalPath" = "8:" +"SccAuxPath" = "8:" +"SccProvider" = "8:" + "Hierarchy" + { + "Entry" + { + "MsmKey" = "8:_0233402A97EA46FBA337755EA402492F" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_1171A5DA166941F99792E66BB442360A" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_1A6CBAAE3DFB48978A0B730F3F667F6C" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_1C1EB86C0F004251BC1D6A0756D66698" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_2121C31EAF3F09422921E6794612841B" + "OwnerKey" = "8:_4F381D56A9F84C4BB77CE66D1AE39C04" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_2121C31EAF3F09422921E6794612841B" + "OwnerKey" = "8:_C7BB2B2F230E4F41926C0637DB3ED9CC" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_235C47DD7D134E82BAFB4475A9754255" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_2FF3025DC1194EF09CE30654AD1DDB1F" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_3B5141338F7C4315AEAEC685CCB48BB7" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_3F0E7F9AB8664CE086519BAAE95279EE" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_41FC8A0CD44D490AB1C9CF6EE424EA61" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_4D2A534D54324BC8BF8BA52AA260AFD6" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_4D8BF54EE7CD4D849EBB0DFD71437FD9" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_4F381D56A9F84C4BB77CE66D1AE39C04" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_4F8301592BFB8F91A9DDB3DD8C116723" + "OwnerKey" = "8:_C7BB2B2F230E4F41926C0637DB3ED9CC" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_517B2A1ABA3E40B9AE915A97D1C55E28" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_56964DA696B64B64A6CCE960DF785881" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_62C623B3055B4A668393B08907FDECB4" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_72FB9BECA29B4DDE9A81F9990EAAD3B9" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_74BDA194DC444C1E9703291A9E8F37E8" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_799221201AB04493884047CCAA54F121" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_7D0A6FF45ED04ED3807F82B39E7961FA" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_7F0DBC9F094E43559E088B839BBDAD3F" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_90124898C3AC450DBF2E3905927865A8" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_9955AB1B4B8C43058D1FDB9BDE4FDF3C" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A092269FF88A4D37B0D4500B5F78C8A7" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A8F0FDE2EBA2210B20EEABDF66B7A44A" + "OwnerKey" = "8:_2121C31EAF3F09422921E6794612841B" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A8F0FDE2EBA2210B20EEABDF66B7A44A" + "OwnerKey" = "8:_4F8301592BFB8F91A9DDB3DD8C116723" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A8F0FDE2EBA2210B20EEABDF66B7A44A" + "OwnerKey" = "8:_C7BB2B2F230E4F41926C0637DB3ED9CC" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A8F0FDE2EBA2210B20EEABDF66B7A44A" + "OwnerKey" = "8:_4F381D56A9F84C4BB77CE66D1AE39C04" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A8F0FDE2EBA2210B20EEABDF66B7A44A" + "OwnerKey" = "8:_B9CAD97EB63476AFAC38BE823985D3AC" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_B2F5487CA3C14EF8998FDB5E07A7E807" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_B6D0C5ECAC2345BAA355715132C815FD" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_B9CAD97EB63476AFAC38BE823985D3AC" + "OwnerKey" = "8:_2121C31EAF3F09422921E6794612841B" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_B9CAD97EB63476AFAC38BE823985D3AC" + "OwnerKey" = "8:_C7BB2B2F230E4F41926C0637DB3ED9CC" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_B9CAD97EB63476AFAC38BE823985D3AC" + "OwnerKey" = "8:_4F381D56A9F84C4BB77CE66D1AE39C04" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_BD478101A9CF4B8685163E05586DD0AB" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_C2EA57BA44BC4ABEA375227E31566027" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_C3E59892D76545B8821A365DC1248515" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_C57E1AA8D49D4A7BB265E8C8978F571A" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_C7BB2B2F230E4F41926C0637DB3ED9CC" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_D3AF5585B4034F5BAFE30FDF76C7A624" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_D99AA2C7D93246E09DE8456A4CEC67DF" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_F41F48C2089C4FFA96EB1A7B4F771CEB" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_F4B5A91C0D1445D5A3FB5C91FFA63366" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_FC9A70F1BF9B4AFD9F9DAF68B41E8CCC" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_4F381D56A9F84C4BB77CE66D1AE39C04" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_C7BB2B2F230E4F41926C0637DB3ED9CC" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_4F8301592BFB8F91A9DDB3DD8C116723" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_2121C31EAF3F09422921E6794612841B" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_B9CAD97EB63476AFAC38BE823985D3AC" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_A8F0FDE2EBA2210B20EEABDF66B7A44A" + "MsmSig" = "8:_UNDEFINED" + } + } + "Configurations" + { + "Debug" + { + "DisplayName" = "8:Debug" + "IsDebugOnly" = "11:TRUE" + "IsReleaseOnly" = "11:FALSE" + "OutputFilename" = "8:bin\\Debug\\DeheadEmAll-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\\DeheadEmAll-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}:_28818750E4E34610B75740BCED54AF88" + { + "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}:_0233402A97EA46FBA337755EA402492F" + { + "SourcePath" = "8:..\\DeheadEmAll-CLI\\Resources\\Batches\\DeheadEmAll-Print-License.bat" + "TargetName" = "8:DeheadEmAll-Print-License.bat" + "Tag" = "8:" + "Folder" = "8:_87F318B250054CA59368E0136A54BFA1" + "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}:_1171A5DA166941F99792E66BB442360A" + { + "SourcePath" = "8:..\\DeheadEmAll-CLI\\Resources\\Batches\\DeheadEmAll-DH-FDS.bat" + "TargetName" = "8:DeheadEmAll-DH-FDS.bat" + "Tag" = "8:" + "Folder" = "8:_87F318B250054CA59368E0136A54BFA1" + "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}:_1A6CBAAE3DFB48978A0B730F3F667F6C" + { + "SourcePath" = "8:..\\DeheadEmAll-CLI\\Resources\\BASHes\\DeheadEmAll-DH-All-Selected.sh" + "TargetName" = "8:DeheadEmAll-DH-All-Selected.sh" + "Tag" = "8:" + "Folder" = "8:_778B5E23763947818FDB03DAA8440D88" + "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}:_1C1EB86C0F004251BC1D6A0756D66698" + { + "SourcePath" = "8:..\\DeheadEmAll-CLI\\Resources\\Batches\\DeheadEmAll-DH-All.bat" + "TargetName" = "8:DeheadEmAll-DH-All.bat" + "Tag" = "8:" + "Folder" = "8:_87F318B250054CA59368E0136A54BFA1" + "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}:_2121C31EAF3F09422921E6794612841B" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:DeheadEmAll, Version=1.5.7.0, Culture=neutral, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_2121C31EAF3F09422921E6794612841B" + { + "Name" = "8:DeheadEmAll.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:DeheadEmAll.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_078F54B871D0498E9A371540170A92D5" + "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}:_235C47DD7D134E82BAFB4475A9754255" + { + "SourcePath" = "8:..\\DeheadEmAll-CLI\\Resources\\Batches\\DeheadEmAll-DH-All-Selected.bat" + "TargetName" = "8:DeheadEmAll-DH-All-Selected.bat" + "Tag" = "8:" + "Folder" = "8:_87F318B250054CA59368E0136A54BFA1" + "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}:_2FF3025DC1194EF09CE30654AD1DDB1F" + { + "SourcePath" = "8:..\\DeheadEmAll-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:_87F318B250054CA59368E0136A54BFA1" + "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}:_3B5141338F7C4315AEAEC685CCB48BB7" + { + "SourcePath" = "8:..\\DeheadEmAll-CLI\\Resources\\Batches\\DeheadEmAll-DH-NES.bat" + "TargetName" = "8:DeheadEmAll-DH-NES.bat" + "Tag" = "8:" + "Folder" = "8:_87F318B250054CA59368E0136A54BFA1" + "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}:_3F0E7F9AB8664CE086519BAAE95279EE" + { + "SourcePath" = "8:..\\DeheadEmAll\\Resources\\Docs\\DeheadEmAll-LICENSE.rtf" + "TargetName" = "8:DeheadEmAll-LICENSE.rtf" + "Tag" = "8:" + "Folder" = "8:_FE1C09C832AD4C91AA5B9B403FEA0F82" + "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}:_41FC8A0CD44D490AB1C9CF6EE424EA61" + { + "SourcePath" = "8:..\\DeheadEmAll-CLI\\Resources\\BASHes\\DeheadEmAll-Print-Donation-Info.sh" + "TargetName" = "8:DeheadEmAll-Print-Donation-Info.sh" + "Tag" = "8:" + "Folder" = "8:_778B5E23763947818FDB03DAA8440D88" + "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}:_4D2A534D54324BC8BF8BA52AA260AFD6" + { + "SourcePath" = "8:..\\DeheadEmAll-CLI\\Resources\\Batches\\DeheadEmAll-DH-Lynx.bat" + "TargetName" = "8:DeheadEmAll-DH-Lynx.bat" + "Tag" = "8:" + "Folder" = "8:_87F318B250054CA59368E0136A54BFA1" + "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}:_4D8BF54EE7CD4D849EBB0DFD71437FD9" + { + "SourcePath" = "8:..\\DeheadEmAll\\Resources\\Output\\ROMs\\put your roms in this directory.txt" + "TargetName" = "8:put your roms in this directory.txt" + "Tag" = "8:" + "Folder" = "8:_FD7A0849E2F4480F8FB28A2A4479BEE8" + "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}:_4F8301592BFB8F91A9DDB3DD8C116723" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:Serilog.Sinks.Console, Version=4.1.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_4F8301592BFB8F91A9DDB3DD8C116723" + { + "Name" = "8:Serilog.Sinks.Console.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:Serilog.Sinks.Console.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_078F54B871D0498E9A371540170A92D5" + "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}:_517B2A1ABA3E40B9AE915A97D1C55E28" + { + "SourcePath" = "8:..\\DeheadEmAll-CLI\\Resources\\BASHes\\DeheadEmAll-DH-Lynx.sh" + "TargetName" = "8:DeheadEmAll-DH-Lynx.sh" + "Tag" = "8:" + "Folder" = "8:_778B5E23763947818FDB03DAA8440D88" + "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}:_56964DA696B64B64A6CCE960DF785881" + { + "SourcePath" = "8:..\\DeheadEmAll\\Resources\\Docs\\DeheadEmAll-DONATIONS.txt" + "TargetName" = "8:DeheadEmAll-DONATIONS.txt" + "Tag" = "8:" + "Folder" = "8:_FE1C09C832AD4C91AA5B9B403FEA0F82" + "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}:_62C623B3055B4A668393B08907FDECB4" + { + "SourcePath" = "8:..\\DeheadEmAll\\Resources\\Output\\ROMsDeheaded\\put your deheaded roms in this directory.txt" + "TargetName" = "8:put your deheaded roms in this directory.txt" + "Tag" = "8:" + "Folder" = "8:_BDAFEFF0217F4DA8B640DE22DCDA448A" + "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}:_72FB9BECA29B4DDE9A81F9990EAAD3B9" + { + "SourcePath" = "8:..\\DeheadEmAll-CLI\\Resources\\Batches\\DeheadEmAll-DH-A7800.bat" + "TargetName" = "8:DeheadEmAll-DH-A7800.bat" + "Tag" = "8:" + "Folder" = "8:_87F318B250054CA59368E0136A54BFA1" + "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}:_74BDA194DC444C1E9703291A9E8F37E8" + { + "SourcePath" = "8:..\\DeheadEmAll-CLI\\Resources\\BASHes\\DeheadEmAll-Print-Help-CMD.sh" + "TargetName" = "8:DeheadEmAll-Print-Help-CMD.sh" + "Tag" = "8:" + "Folder" = "8:_778B5E23763947818FDB03DAA8440D88" + "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}:_799221201AB04493884047CCAA54F121" + { + "SourcePath" = "8:..\\DeheadEmAll-CLI\\Resources\\BASHes\\DeheadEmAll-Save-Options.sh" + "TargetName" = "8:DeheadEmAll-Save-Options.sh" + "Tag" = "8:" + "Folder" = "8:_778B5E23763947818FDB03DAA8440D88" + "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}:_7D0A6FF45ED04ED3807F82B39E7961FA" + { + "SourcePath" = "8:..\\DeheadEmAll-CLI\\Resources\\BASHes\\DeheadEmAll-Print-License.sh" + "TargetName" = "8:DeheadEmAll-Print-License.sh" + "Tag" = "8:" + "Folder" = "8:_778B5E23763947818FDB03DAA8440D88" + "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}:_7F0DBC9F094E43559E088B839BBDAD3F" + { + "SourcePath" = "8:..\\DeheadEmAll-CLI\\Resources\\Batches\\DeheadEmAll-Save-Options.bat" + "TargetName" = "8:DeheadEmAll-Save-Options.bat" + "Tag" = "8:" + "Folder" = "8:_87F318B250054CA59368E0136A54BFA1" + "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}:_90124898C3AC450DBF2E3905927865A8" + { + "SourcePath" = "8:..\\DeheadEmAll-CLI\\Resources\\BASHes\\DeheadEmAll-Print-Version.sh" + "TargetName" = "8:DeheadEmAll-Print-Version.sh" + "Tag" = "8:" + "Folder" = "8:_778B5E23763947818FDB03DAA8440D88" + "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}:_9955AB1B4B8C43058D1FDB9BDE4FDF3C" + { + "SourcePath" = "8:..\\DeheadEmAll-CLI\\Resources\\Batches\\DeheadEmAll-Print-Version.bat" + "TargetName" = "8:DeheadEmAll-Print-Version.bat" + "Tag" = "8:" + "Folder" = "8:_87F318B250054CA59368E0136A54BFA1" + "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}:_A092269FF88A4D37B0D4500B5F78C8A7" + { + "SourcePath" = "8:..\\DeheadEmAll-CLI\\Resources\\Batches\\DeheadEmAll-Print-Help-CMD.bat" + "TargetName" = "8:DeheadEmAll-Print-Help-CMD.bat" + "Tag" = "8:" + "Folder" = "8:_87F318B250054CA59368E0136A54BFA1" + "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}:_A8F0FDE2EBA2210B20EEABDF66B7A44A" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:Serilog, Version=2.0.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_A8F0FDE2EBA2210B20EEABDF66B7A44A" + { + "Name" = "8:Serilog.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:Serilog.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_078F54B871D0498E9A371540170A92D5" + "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}:_B2F5487CA3C14EF8998FDB5E07A7E807" + { + "SourcePath" = "8:..\\DeheadEmAll-CLI\\Resources\\BASHes\\DeheadEmAll-DH-FDS.sh" + "TargetName" = "8:DeheadEmAll-DH-FDS.sh" + "Tag" = "8:" + "Folder" = "8:_778B5E23763947818FDB03DAA8440D88" + "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}:_B6D0C5ECAC2345BAA355715132C815FD" + { + "SourcePath" = "8:..\\DeheadEmAll-CLI\\Resources\\BASHes\\DeheadEmAll-DH-A7800.sh" + "TargetName" = "8:DeheadEmAll-DH-A7800.sh" + "Tag" = "8:" + "Folder" = "8:_778B5E23763947818FDB03DAA8440D88" + "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}:_B9CAD97EB63476AFAC38BE823985D3AC" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:Serilog.Sinks.LogEmAll, Version=0.0.6.0, Culture=neutral, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_B9CAD97EB63476AFAC38BE823985D3AC" + { + "Name" = "8:Serilog.Sinks.LogEmAll.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:Serilog.Sinks.LogEmAll.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_078F54B871D0498E9A371540170A92D5" + "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}:_BD478101A9CF4B8685163E05586DD0AB" + { + "SourcePath" = "8:..\\DeheadEmAll-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:_778B5E23763947818FDB03DAA8440D88" + "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}:_C2EA57BA44BC4ABEA375227E31566027" + { + "SourcePath" = "8:..\\DeheadEmAll\\Resources\\Docs\\DeheadEmAll-HELP-CMD.txt" + "TargetName" = "8:DeheadEmAll-HELP-CMD.txt" + "Tag" = "8:" + "Folder" = "8:_FE1C09C832AD4C91AA5B9B403FEA0F82" + "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}:_C3E59892D76545B8821A365DC1248515" + { + "SourcePath" = "8:..\\DeheadEmAll\\Resources\\Icons\\DeheadEmAll.ico" + "TargetName" = "8:DeheadEmAll.ico" + "Tag" = "8:" + "Folder" = "8:_078F54B871D0498E9A371540170A92D5" + "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}:_C57E1AA8D49D4A7BB265E8C8978F571A" + { + "SourcePath" = "8:..\\DeheadEmAll\\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:_5969C8158A3E438195D7928E3A063128" + "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}:_D3AF5585B4034F5BAFE30FDF76C7A624" + { + "SourcePath" = "8:..\\DeheadEmAll\\Resources\\Docs\\DeheadEmAll-HELP.txt" + "TargetName" = "8:DeheadEmAll-HELP.txt" + "Tag" = "8:" + "Folder" = "8:_FE1C09C832AD4C91AA5B9B403FEA0F82" + "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}:_D99AA2C7D93246E09DE8456A4CEC67DF" + { + "SourcePath" = "8:..\\DeheadEmAll-CLI\\Resources\\Batches\\DeheadEmAll-Print-Donation-Info.bat" + "TargetName" = "8:DeheadEmAll-Print-Donation-Info.bat" + "Tag" = "8:" + "Folder" = "8:_87F318B250054CA59368E0136A54BFA1" + "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}:_F41F48C2089C4FFA96EB1A7B4F771CEB" + { + "SourcePath" = "8:..\\DeheadEmAll-CLI\\Resources\\BASHes\\DeheadEmAll-DH-NES.sh" + "TargetName" = "8:DeheadEmAll-DH-NES.sh" + "Tag" = "8:" + "Folder" = "8:_778B5E23763947818FDB03DAA8440D88" + "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}:_F4B5A91C0D1445D5A3FB5C91FFA63366" + { + "SourcePath" = "8:..\\DeheadEmAll-CLI\\Resources\\BASHes\\DeheadEmAll-DH-All.sh" + "TargetName" = "8:DeheadEmAll-DH-All.sh" + "Tag" = "8:" + "Folder" = "8:_778B5E23763947818FDB03DAA8440D88" + "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}:_FC9A70F1BF9B4AFD9F9DAF68B41E8CCC" + { + "SourcePath" = "8:..\\DeheadEmAll\\Resources\\Output\\Logs\\put your logs in this directory.txt" + "TargetName" = "8:put your logs in this directory.txt" + "Tag" = "8:" + "Folder" = "8:_CECCB4F9071B439B99A492D719111D59" + "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" + { + "{3C67513D-01DD-4637-8A68-80971EB9504F}:_078F54B871D0498E9A371540170A92D5" + { + "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}:_5969C8158A3E438195D7928E3A063128" + { + "Name" = "8:Options" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_0C79348197884844A500E8C4690F6D93" + "Folders" + { + } + } + "{9EF0B969-E518-4E46-987F-47570745A589}:_778B5E23763947818FDB03DAA8440D88" + { + "Name" = "8:BASHes" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_B1E151F06B2C4F5C8450E0F16C91563F" + "Folders" + { + } + } + "{9EF0B969-E518-4E46-987F-47570745A589}:_87F318B250054CA59368E0136A54BFA1" + { + "Name" = "8:Batches" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_A36D29AE4B4B477490D3F9F17CAC681D" + "Folders" + { + } + } + "{9EF0B969-E518-4E46-987F-47570745A589}:_BDAFEFF0217F4DA8B640DE22DCDA448A" + { + "Name" = "8:ROMsDeheaded" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_E327418F7B4F46CDB449B1E007F43D02" + "Folders" + { + } + } + "{9EF0B969-E518-4E46-987F-47570745A589}:_CECCB4F9071B439B99A492D719111D59" + { + "Name" = "8:Logs" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_83F9DBF5A77F4E09BA50E01644B2D83E" + "Folders" + { + } + } + "{9EF0B969-E518-4E46-987F-47570745A589}:_FD7A0849E2F4480F8FB28A2A4479BEE8" + { + "Name" = "8:ROMs" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_2E78DB93FF4A43F88FEAE32521FA609A" + "Folders" + { + } + } + "{9EF0B969-E518-4E46-987F-47570745A589}:_FE1C09C832AD4C91AA5B9B403FEA0F82" + { + "Name" = "8:Docs" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_CC7DCE1374DF46B0A2B8376A663D34AD" + "Folders" + { + } + } + } + } + "{1525181F-901A-416C-8A58-119130FE478E}:_43131D91AAA24D8097806625F57BD7A0" + { + "Name" = "8:#1916" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:DesktopFolder" + "Folders" + { + } + } + "{1525181F-901A-416C-8A58-119130FE478E}:_F5F16BEC59A7488CAFA00F16AE778F6B" + { + "Name" = "8:#1919" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:ProgramMenuFolder" + "Folders" + { + "{9EF0B969-E518-4E46-987F-47570745A589}:_68AB06B20CE84BC89DDCCBB6212B1C6F" + { + "Name" = "8:DeheadEmAll" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_320DF93752624089AB3204F383BBF308" + "Folders" + { + "{9EF0B969-E518-4E46-987F-47570745A589}:_091AEBD3B74B4D248FE0155305258F35" + { + "Name" = "8:Docs" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_E7E2BB654014415E89DCD43F3A9094F7" + "Folders" + { + } + } + "{9EF0B969-E518-4E46-987F-47570745A589}:_25A66161347240D49EAEEE692DD9C54C" + { + "Name" = "8:Batches" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_FCA1D116C53849F295F2CD298F763BC5" + "Folders" + { + } + } + } + } + } + } + } + "LaunchCondition" + { + } + "Locator" + { + } + "MsiBootstrapper" + { + "LangId" = "3:1033" + "RequiresElevation" = "11:FALSE" + } + "Product" + { + "Name" = "8:Microsoft Visual Studio" + "ProductName" = "8:DeheadEmAll" + "ProductCode" = "8:{C0A09FAF-41B0-49A3-9F77-BBFF4A76911D}" + "PackageCode" = "8:{71D0896F-C95C-4D31-9EE7-6F1BE0EDCE9D}" + "UpgradeCode" = "8:{3203DDC4-FE50-4428-9964-78C5CCDE58EB}" + "AspNetVersion" = "8:4.0.30319.0" + "RestartWWWService" = "11:FALSE" + "RemovePreviousVersions" = "11:TRUE" + "DetectNewerInstalledVersion" = "11:TRUE" + "InstallAllUsers" = "11:FALSE" + "ProductVersion" = "8:1.5.8" + "Manufacturer" = "8:DeheadEmAll" + "ARPHELPTELEPHONE" = "8:" + "ARPHELPLINK" = "8:" + "Title" = "8:DeheadEmAll Installer" + "Subject" = "8:" + "ARPCONTACT" = "8:DeheadEmAll" + "Keywords" = "8:DeheadEmAll" + "ARPCOMMENTS" = "8:The Original Automated ROM Deheaderer" + "ARPURLINFOABOUT" = "8:https://www.devemall.int.eu.org" + "ARPPRODUCTICON" = "8:_C3E59892D76545B8821A365DC1248515" + "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}:_C0C9CDD295F848E7AA55715BF19E28F4" + { + "Name" = "8:Software" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_6969F53750E64D88ABA1C44F79230585" + { + "Name" = "8:[Manufacturer]" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + } + "Values" + { + } + } + } + "Values" + { + } + } + } + } + "HKCU" + { + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_C54525B799624F4A8F38FBDC7F93E3A8" + { + "Name" = "8:Software" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_D863F563DCE8425CA95FFC53FEF6859B" + { + "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}:_115A4C2464E042E09F25A9EF7D02CA91" + { + "Name" = "8:DeheadEmAll-DH-All-Selected" + "Arguments" = "8:" + "Description" = "8:" + "ShowCmd" = "3:1" + "IconIndex" = "3:0" + "Transitive" = "11:FALSE" + "Target" = "8:_235C47DD7D134E82BAFB4475A9754255" + "Folder" = "8:_25A66161347240D49EAEEE692DD9C54C" + "WorkingFolder" = "8:_87F318B250054CA59368E0136A54BFA1" + "Icon" = "8:" + "Feature" = "8:" + } + "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_53DE2495D7D84548BAED591871E91445" + { + "Name" = "8:DeheadEmAll-GUI" + "Arguments" = "8:" + "Description" = "8:" + "ShowCmd" = "3:1" + "IconIndex" = "3:0" + "Transitive" = "11:FALSE" + "Target" = "8:_4F381D56A9F84C4BB77CE66D1AE39C04" + "Folder" = "8:_68AB06B20CE84BC89DDCCBB6212B1C6F" + "WorkingFolder" = "8:_078F54B871D0498E9A371540170A92D5" + "Icon" = "8:_C3E59892D76545B8821A365DC1248515" + "Feature" = "8:" + } + "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_607EC03A824F4632928E90EB46E9962C" + { + "Name" = "8:DeheadEmAll-LICENSE" + "Arguments" = "8:" + "Description" = "8:" + "ShowCmd" = "3:1" + "IconIndex" = "3:0" + "Transitive" = "11:FALSE" + "Target" = "8:_3F0E7F9AB8664CE086519BAAE95279EE" + "Folder" = "8:_091AEBD3B74B4D248FE0155305258F35" + "WorkingFolder" = "8:_FE1C09C832AD4C91AA5B9B403FEA0F82" + "Icon" = "8:" + "Feature" = "8:" + } + "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_62A52A447019450CA2A69D354CB18A3C" + { + "Name" = "8:DeheadEmAll-CLI" + "Arguments" = "8:" + "Description" = "8:" + "ShowCmd" = "3:1" + "IconIndex" = "3:0" + "Transitive" = "11:FALSE" + "Target" = "8:_C7BB2B2F230E4F41926C0637DB3ED9CC" + "Folder" = "8:_68AB06B20CE84BC89DDCCBB6212B1C6F" + "WorkingFolder" = "8:_078F54B871D0498E9A371540170A92D5" + "Icon" = "8:_C3E59892D76545B8821A365DC1248515" + "Feature" = "8:" + } + "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_672269B34FAC4DCAB27A533D07741675" + { + "Name" = "8:DeheadEmAll-HELP-CMD" + "Arguments" = "8:" + "Description" = "8:" + "ShowCmd" = "3:1" + "IconIndex" = "3:0" + "Transitive" = "11:FALSE" + "Target" = "8:_C2EA57BA44BC4ABEA375227E31566027" + "Folder" = "8:_091AEBD3B74B4D248FE0155305258F35" + "WorkingFolder" = "8:_FE1C09C832AD4C91AA5B9B403FEA0F82" + "Icon" = "8:" + "Feature" = "8:" + } + "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_7E1F434EA754498C83ED690DF30EC7C7" + { + "Name" = "8:DeheadEmAll-DH-All" + "Arguments" = "8:" + "Description" = "8:" + "ShowCmd" = "3:1" + "IconIndex" = "3:0" + "Transitive" = "11:FALSE" + "Target" = "8:_1C1EB86C0F004251BC1D6A0756D66698" + "Folder" = "8:_25A66161347240D49EAEEE692DD9C54C" + "WorkingFolder" = "8:_87F318B250054CA59368E0136A54BFA1" + "Icon" = "8:" + "Feature" = "8:" + } + "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_D9C709CB59A64D77A6440E1AC9E64031" + { + "Name" = "8:DeheadEmAll-HELP" + "Arguments" = "8:" + "Description" = "8:" + "ShowCmd" = "3:1" + "IconIndex" = "3:0" + "Transitive" = "11:FALSE" + "Target" = "8:_D3AF5585B4034F5BAFE30FDF76C7A624" + "Folder" = "8:_091AEBD3B74B4D248FE0155305258F35" + "WorkingFolder" = "8:_FE1C09C832AD4C91AA5B9B403FEA0F82" + "Icon" = "8:" + "Feature" = "8:" + } + } + "UserInterface" + { + "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_01B4884BF50747649DABD3A037051393" + { + "UseDynamicProperties" = "11:FALSE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdBasicDialogs.wim" + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_08524C3A2E674B929EAC4B060ABFF263" + { + "Name" = "8:#1902" + "Sequence" = "3:1" + "Attributes" = "3:3" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_2B5BC995A1AE426A8B1B65508086A648" + { + "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" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_1C484208052146F8AE7844D9E324FAD8" + { + "Name" = "8:#1901" + "Sequence" = "3:2" + "Attributes" = "3:2" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_4331AED8F88A405E8F862165B365C983" + { + "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}:_2DCC01AFE1564B68B82B2A3978CC9520" + { + "Name" = "8:#1902" + "Sequence" = "3:2" + "Attributes" = "3:3" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_CA19F2306E134CFDB79EED5626BD911C" + { + "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}:_332B17ED8E8243BB8E675654CF30A99E" + { + "Name" = "8:#1900" + "Sequence" = "3:1" + "Attributes" = "3:1" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_66917646E8CD4CFA89BDFBC5A4683562" + { + "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:_3F0E7F9AB8664CE086519BAAE95279EE" + "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}:_9D0F6D97ADDA480AB093E13D9F038665" + { + "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" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_BB8E973D47B344628F3BD89DBB7E1A6A" + { + "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}:_FF1D5002D42B493F937CF83E20ADA332" + { + "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" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_43AF8B44A3B6420288F84BCF00A0BE51" + { + "Name" = "8:#1901" + "Sequence" = "3:1" + "Attributes" = "3:2" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_FCDB1D610FF643939A729557BD5DBF25" + { + "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" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_8090B031ADB9491DAA9AC59AA88C98FB" + { + "Name" = "8:#1900" + "Sequence" = "3:2" + "Attributes" = "3:1" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_2124FF11DD834BE683A91047D517C523" + { + "Sequence" = "3:300" + "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}:_509E4A2EB7D94114B68F01AF400C37BD" + { + "Sequence" = "3:210" + "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:_3F0E7F9AB8664CE086519BAAE95279EE" + "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}:_7A8ABC64E8BB4F7CB28B523B0AF667FE" + { + "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}:_8ACE34B63B554439B900D172B0085D1E" + { + "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" + } + } + } + } + } + "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_A9F7E9ED570D4B44AFF49E27F75797F1" + { + "UseDynamicProperties" = "11:FALSE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdUserInterface.wim" + } + } + "MergeModule" + { + } + "ProjectOutput" + { + "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_4F381D56A9F84C4BB77CE66D1AE39C04" + { + "SourcePath" = "8:..\\DeheadEmAll-GUI\\obj\\Debug\\DeheadEmAll-GUI.exe" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_078F54B871D0498E9A371540170A92D5" + "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:{FCEBBE29-8A30-4E30-9EEE-DF5F44922223}" + "ShowKeyOutput" = "11:TRUE" + "ExcludeFilters" + { + } + } + "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_C7BB2B2F230E4F41926C0637DB3ED9CC" + { + "SourcePath" = "8:..\\DeheadEmAll-CLI\\obj\\Debug\\DeheadEmAll-CLI.exe" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_078F54B871D0498E9A371540170A92D5" + "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:{E26A5DBC-0C0A-4786-A3FD-EF3740C2DC47}" + "ShowKeyOutput" = "11:TRUE" + "ExcludeFilters" + { + } + } + } + } +} diff --git a/DeheadEmAll-Release/DeheadEmAll-Release.csproj b/DeheadEmAll-Release/DeheadEmAll-Release.csproj new file mode 100644 index 0000000..1626634 --- /dev/null +++ b/DeheadEmAll-Release/DeheadEmAll-Release.csproj @@ -0,0 +1,126 @@ + + + + + + Debug + AnyCPU + {865F612F-0CAD-4A93-BCEA-3DF167DB2BC7} + + + + + AnyCPU + bin\Debug\ + + + AnyCPU + bin\Release\ + + + + + + + DeheadEmAll + 1.5.8 + DeheadEmAll-Portable + DeheadEmAll-Installer + DeheadEmAll-Package + DeheadEmAll-Source + DeheadEmAll + DeheadEmAll-CLI + DeheadEmAll-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/DeheadEmAll-Release/packages.config b/DeheadEmAll-Release/packages.config new file mode 100644 index 0000000..8f32205 --- /dev/null +++ b/DeheadEmAll-Release/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/DeheadEmAll.sln b/DeheadEmAll.sln new file mode 100644 index 0000000..3d2e214 --- /dev/null +++ b/DeheadEmAll.sln @@ -0,0 +1,65 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.33627.172 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DeheadEmAll-CLI", "DeheadEmAll-CLI\DeheadEmAll-CLI.csproj", "{E26A5DBC-0C0A-4786-A3FD-EF3740C2DC47}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DeheadEmAll-GUI", "DeheadEmAll-GUI\DeheadEmAll-GUI.csproj", "{FCEBBE29-8A30-4E30-9EEE-DF5F44922223}" +EndProject +Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "DeheadEmAll-Installer", "DeheadEmAll-Installer\DeheadEmAll-Installer.vdproj", "{BBD7564F-FF97-4338-A12F-A78726C8D866}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DeheadEmAll-Release", "DeheadEmAll-Release\DeheadEmAll-Release.csproj", "{865F612F-0CAD-4A93-BCEA-3DF167DB2BC7}" + ProjectSection(ProjectDependencies) = postProject + {FCEBBE29-8A30-4E30-9EEE-DF5F44922223} = {FCEBBE29-8A30-4E30-9EEE-DF5F44922223} + {BBD7564F-FF97-4338-A12F-A78726C8D866} = {BBD7564F-FF97-4338-A12F-A78726C8D866} + {E26A5DBC-0C0A-4786-A3FD-EF3740C2DC47} = {E26A5DBC-0C0A-4786-A3FD-EF3740C2DC47} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DeheadEmAll", "DeheadEmAll\DeheadEmAll.csproj", "{06F4A6D4-EE7F-47D3-947C-A259F1FC3D84}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{EBF65DF7-4E58-433C-991C-0A2FE3F52534}" + 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 Deheaderer + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {E26A5DBC-0C0A-4786-A3FD-EF3740C2DC47}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E26A5DBC-0C0A-4786-A3FD-EF3740C2DC47}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E26A5DBC-0C0A-4786-A3FD-EF3740C2DC47}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E26A5DBC-0C0A-4786-A3FD-EF3740C2DC47}.Release|Any CPU.Build.0 = Release|Any CPU + {FCEBBE29-8A30-4E30-9EEE-DF5F44922223}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FCEBBE29-8A30-4E30-9EEE-DF5F44922223}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FCEBBE29-8A30-4E30-9EEE-DF5F44922223}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FCEBBE29-8A30-4E30-9EEE-DF5F44922223}.Release|Any CPU.Build.0 = Release|Any CPU + {BBD7564F-FF97-4338-A12F-A78726C8D866}.Debug|Any CPU.ActiveCfg = Debug + {BBD7564F-FF97-4338-A12F-A78726C8D866}.Debug|Any CPU.Build.0 = Debug + {BBD7564F-FF97-4338-A12F-A78726C8D866}.Release|Any CPU.ActiveCfg = Release + {BBD7564F-FF97-4338-A12F-A78726C8D866}.Release|Any CPU.Build.0 = Release + {865F612F-0CAD-4A93-BCEA-3DF167DB2BC7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {865F612F-0CAD-4A93-BCEA-3DF167DB2BC7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {865F612F-0CAD-4A93-BCEA-3DF167DB2BC7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {865F612F-0CAD-4A93-BCEA-3DF167DB2BC7}.Release|Any CPU.Build.0 = Release|Any CPU + {06F4A6D4-EE7F-47D3-947C-A259F1FC3D84}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {06F4A6D4-EE7F-47D3-947C-A259F1FC3D84}.Debug|Any CPU.Build.0 = Debug|Any CPU + {06F4A6D4-EE7F-47D3-947C-A259F1FC3D84}.Release|Any CPU.ActiveCfg = Release|Any CPU + {06F4A6D4-EE7F-47D3-947C-A259F1FC3D84}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {59BBAD92-3CF4-41B5-8C2A-04F8F9C9F2AB} + EndGlobalSection +EndGlobal diff --git a/DeheadEmAll/App.ico b/DeheadEmAll/App.ico new file mode 100644 index 0000000000000000000000000000000000000000..051e75ea4e2f4134e634e2c8961389e3440ba002 GIT binary patch literal 4286 zcmchb2~bp57KR_)Etr^8NvOoiG8I$Fq~g?6%BgH7lVwshT9c^3C8B_1SOmccqK3t2 zf;uLdfGHy`BW;o*APPdWHqd}gvu`RL0dWBtK-t^2S>!b|@XxuohqhUDX3R8v-1pu+ z_y6xX@4ov0L9n5(`SS(#Q;3@@2u}!t@Df3ngg+7NI{#4L#80NL@KlzsASZeWBO(6E zFb_QuPTuwzKEjbqA7PNdy`Wh9FHF$yC#^4(-h!UMOr(3Vei?Z`jLglC{&)D!LB=Lq zq;DiGFNV!c+_7~SHumE|ej3$B$xDV*4?#?E=YZNtByA9I;Rg?l4i7y@ zdo&kEA;rU%`H9J&a6s)O6zc_?m%C%+0sA)L2;w^Jo5w z4YtfrOk8inz*HnS3pl&$b#&C6g=px&&_EANVxNWKL6Ppu=#=+{)yz89G|-E|J{=4# zHK;u9fdp3x5?yV?GcHmFro~x`WKRdEf)*lg-(nPevz(K^e<`X@hhlheU`qcRj3efEP5JPtiRDx0Z9hrZP#L)y=j6nRPc5APVGDA1 zzm3yQY~C~Kil^4d7?>I?#2#DPNYeg;g??MYy9nelOx(>=EN=j$v^;cC`&@ z()ek$xu+PrTEf71q&T@sf|wOHhsUW--LZS$QkH^buNM*h5zF67&sux(u^8iM!yr#H(aQzIxjc@`X@}|g>8HKNgv-if zP;Pqz3eWjS^ZNtJj%-F}T?x1(H`qnDKsg{rM+*p20Khf4IkeGOjVEcONb7J#!eeA3TgC z&w1#mR$Ht`M}}ddcOPqqhm7=0e+Pw|1LB<@!Wq{&^c>Ho{p305u9d^s(@p!!TXfBi z_n9@B?u>{@?hi3&Kb{56oXHR4KO z&x__zpB0YGEpw6XJqu}GG8F846+`{E&|LH*(l^Z}>_ECR`YK+X;aWNooS!JY*WZ{I{~Wh_)%9|dX7 zNY3_o$PTb)F`_zXo~Zf!c@%#6Dr%y=X+7WJKJ1=%UsB;paxglp)9IP-!p+j3(42o1 zMnfyjVGvDuhmaTYG%61*hH1cnmLfUSfscbUp$;ZkYeio0lgQuoB8v7df@bHltWPWq z{jFHM?`4#S{TaWUa3k$DOP=P5nBT8AisdxN=TWfhSu`j^`SZ!@&{7zQ)`}QjlPiha zQLy_tkS4_vtPLeUs!z$^Xy5qe9aMxbK}FbN6z}~#>le$vUMNY+Wl3>ANW4V7VU;#~OKIQQNAxNvX@ zstzrMHo_6w!z&0!@>-6HZ(j%VzHsmjQ5*3-YUOKD6X}EoMKA_?+9%CH)HR_=^(`9H z_n_})^|*d^FIuS%HOE(@M()J5YUS%td&2qOuw#N>TgPLxhu%dMdDk9)Ppmuf7hH{T zBiwN{`V+Jj9^?0OoC%$!Y11`yzfO%j0d8t?* zvjU9?-e^qprIz7?j^ZOQ>i@|KZ1I|SU>eXvU!8=eB!51}GM?$o#2GKt$2j6z^ir`Y z!P!WlC1n$CD7WDzCjd9nx1#-QC=9g@+V0X-NVxP`%6*U{IIi>{&r6i=~) zdED6e>01`tlI#WMN%Xg6cs3Ad%kV-+wm&*@1JRiqLKbQkT1t~3nY z#b2XKv-@tJRXiIrJwbd-yULHeHWK8i^eF3Af4Whp@oU%R`$MN8^0yKJQ$W{QzlQZs z7cuYQr^I$rD*U8&aU;LTv?b0A8LwQJkPsL6>afj&tm0;T4hVo$5?b5&xbOiyD LiT@Ayf1m#g{>2-^ literal 0 HcmV?d00001 diff --git a/DeheadEmAll/DeheadEmAll.cs b/DeheadEmAll/DeheadEmAll.cs new file mode 100644 index 0000000..57b8393 --- /dev/null +++ b/DeheadEmAll/DeheadEmAll.cs @@ -0,0 +1,1110 @@ +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.Text.RegularExpressions; +using System.Xml.Linq; +using Serilog; +using Serilog.Sinks.LogEmAll; + +namespace DeheadEmAll +{ + ///

+ /// The DeheadEmAll Class which interacts with the Main Program Class. + /// + public class DeheadEmAll : INotifyPropertyChanged + { + #region Constructors + + /// + /// DeheadEmAll Constructor + /// + public DeheadEmAll() + { + // Construct a DeheadEmAll 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 + + 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 readonly string _strLibName = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).ProductName; + private readonly string _strLibVersion = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).ProductVersion; + private readonly string _strLibCopyright = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).LegalCopyright; + private string _strCommandSwitch = "-deheadall"; + private string _strPathROMsDir = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "ROMs"); + private string _strPathROMsDeheadedDir = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "ROMsDeheaded"); + private string _strPathOptionsFile = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "Options", "Options - DeheadEmAll.xml"); + private string _strPathLogFile = ""; + private bool _boolNES = true; + private bool _boolFDS = true; + private bool _boolLynx = true; + private bool _boolA7800 = true; + private ListStringLog _logLines = new ListStringLog(); + private string _strLanguage = "en"; + private string _strLogLevel = "Information"; + private readonly string[] _arrLanguages = { "en" }; + private readonly string[] _arrLogLevels = { "Information" }; + + #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 { } + } + /// LibName + public string LibName + { + get { return _strLibName; } + set { } + } + /// LibVersion + public string LibVersion + { + get { return _strLibVersion; } + set { } + } + /// LibCopyright + public string LibCopyright + { + get { return _strLibCopyright; } + set { } + } + /// CommandSwitch + public string CommandSwitch + { + get { return _strCommandSwitch; } + set { _strCommandSwitch = value; } + } + /// PathROMsDir + public string PathROMsDir + { + get { return _strPathROMsDir; } + set { _strPathROMsDir = value; NotifyPropertyChanged("PathROMsDir"); } + } + /// PathROMsDeheadedDir + public string PathROMsDeheadedDir + { + get { return _strPathROMsDeheadedDir; } + set { _strPathROMsDeheadedDir = value; NotifyPropertyChanged("PathROMsDeheadedDir"); } + } + /// PathLogFile + public string PathLogFile + { + get { return _strPathLogFile; } + set { _strPathLogFile = value; } + } + /// PathOptionsFile + public string PathOptionsFile + { + get { return _strPathOptionsFile; } + set { _strPathOptionsFile = value; } + } + /// A7800 + public bool A7800 + { + get { return _boolA7800; } + set { _boolA7800 = value; NotifyPropertyChanged("A7800"); } + } + /// NES + public bool NES + { + get { return _boolNES; } + set { _boolNES = value; NotifyPropertyChanged("NES"); } + } + /// Lynx + public bool Lynx + { + get { return _boolLynx; } + set { _boolLynx = value; NotifyPropertyChanged("Lynx"); } + } + /// FDS + public bool FDS + { + get { return _boolFDS; } + set { _boolFDS = value; NotifyPropertyChanged("FDS"); } + } + /// LogLines + public ListStringLog LogLines + { + get { return _logLines; } + set { _logLines = value; } + } + /// Language + public string Language + { + get { return _strLanguage; } + set { _strLanguage = value; } + } + /// LogLevel + public string LogLevel + { + get { return _strLogLevel; } + set { _strLogLevel = value; } + } + + #endregion + + #region Startup Tasks + + /// + /// Performs the startup tasks. + /// + public void StartupTasks() + { + // + } + + #endregion + + #region Options + + /// + /// Loads the options passed 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. + if (xdocOptions.Element("Options") == null) { Log.Information("Options file is corrupt or outdated (Options)"); } + else + { + if (xdocOptions.Element("Options").Element("Paths") == null) { Log.Information("Options file is corrupt or outdated (Paths)"); } + else + { + if (xdocOptions.Element("Options").Element("Paths").Element("PathROMsDir") != null && xdocOptions.Element("Options").Element("Paths").Element("PathROMsDir").Value != "") { PathROMsDir = xdocOptions.Element("Options").Element("Paths").Element("PathROMsDir").Value; } + else { Log.Information("Options file is corrupt or outdated (PathROMsDir)"); } + if (xdocOptions.Element("Options").Element("Paths").Element("PathROMsDeheadedDir") != null && xdocOptions.Element("Options").Element("Paths").Element("PathROMsDeheadedDir").Value != "") { PathROMsDeheadedDir = xdocOptions.Element("Options").Element("Paths").Element("PathROMsDeheadedDir").Value; } + else { Log.Information("Options file is corrupt or outdated (PathROMsDeheadedDir)"); } + } + if (xdocOptions.Element("Options").Element("ROMs") == null) { Log.Information("Options file is corrupt or outdated (ROMs)"); } + else + { + if (xdocOptions.Element("Options").Element("ROMs").Element("A7800") != null) { A7800 = Convert.ToBoolean(xdocOptions.Element("Options").Element("ROMs").Element("A7800").Value); } + else { Log.Information("Options file is corrupt or outdated (A7800)"); } + if (xdocOptions.Element("Options").Element("ROMs").Element("FDS") != null) { FDS = Convert.ToBoolean(xdocOptions.Element("Options").Element("ROMs").Element("FDS").Value); } + else { Log.Information("Options file is corrupt or outdated (FDS)"); } + if (xdocOptions.Element("Options").Element("ROMs").Element("NES") != null) { NES = Convert.ToBoolean(xdocOptions.Element("Options").Element("ROMs").Element("NES").Value); } + else { Log.Information("Options file is corrupt or outdated (NES)"); } + if (xdocOptions.Element("Options").Element("ROMs").Element("Lynx") != null) { Lynx = Convert.ToBoolean(xdocOptions.Element("Options").Element("ROMs").Element("Lynx").Value); } + else { Log.Information("Options file is corrupt or outdated (Lynx)"); } + } + if (xdocOptions.Element("Options").Element("System") == null) { Log.Information("Options file is corrupt or outdated (System)"); } + else + { + if (xdocOptions.Element("Options").Element("System").Element("Language") != null) + { + if (_arrLanguages.Contains(xdocOptions.Element("Options").Element("System").Element("Language").Value)) { Language = xdocOptions.Element("Options").Element("System").Element("Language").Value; } + else { Log.Warning("Options file option is invalid dummy (Language)"); } + } + else { Log.Warning("Options file is corrupt or outdated (Language)"); } + if (xdocOptions.Element("Options").Element("System").Element("LogLevel") != null) + { + if (_arrLogLevels.Contains(xdocOptions.Element("Options").Element("System").Element("LogLevel").Value)) { LogLevel = xdocOptions.Element("Options").Element("System").Element("LogLevel").Value; } + else { Log.Warning("Options file option is invalid dummy (LogLevel)"); } + } + else { Log.Warning("Options file is corrupt or outdated (LogLevel)"); } + } + } + + // 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("Error: Loading options file failed"); + Log.Error("Error: " + ex.Message); + + // Return a bool value. + return false; + } + } + + /// + /// Loads the options passed from the command line. + /// + /// + 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, "^RE:", RegexOptions.IgnoreCase) == true) + { + // Set the path to the deheadered ROMs directory. + PathROMsDeheadedDir = 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, "^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("Error: Setting options from CLI failed"); + Log.Error("Error: " + ex.Message); + } + } + + /// + /// 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 DeheadEmAll options file"), + new XComment("WARNING: Using invalid values might cause this app to crash!"), + new XElement("Options", + new XAttribute("Version", AppVersion), + new XElement("Paths", + new XElement("PathROMsDir", PathROMsDir), + new XElement("PathROMsDeheadedDir", PathROMsDeheadedDir) + ), + new XElement("ROMs", + new XElement("A7800", A7800), + new XElement("FDS", FDS), + new XElement("NES", NES), + new XElement("Lynx", Lynx) + ), + new XElement("System", + 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.Information("Saving options to file failed"); + Log.Information(ex.Message); + + // Return a bool value. + return false; + } + } + + #endregion + + #region Log + + /// + /// Saves the log to a text file. + /// + public void SaveLogToFile() + { + try + { + // Determine if the user selected a log filename. + if (PathLogFile.Length > 0) + { + // Get the log file directory name. + FileInfo fi = new FileInfo(PathLogFile); + + // Create log file directory if it doesn't exist. + if (Directory.Exists(fi.DirectoryName) == false) Directory.CreateDirectory(fi.DirectoryName); + + // Save the contents of the log to a text file. + File.WriteAllLines(PathLogFile, LogLines); + + // Print to screen + Log.Information("Log file saved (" + PathLogFile + ")"); + } + } + catch (Exception ex) + { + // Print to screen + Log.Error("Error: Saving log file failed"); + Log.Error("Error: " + ex.Message); + } + } + + #endregion + + #region CLI Commands + + /// + /// Updates the application title. + /// + /// + /// + public bool UpdateTitle(string strTitle = "") + { + try + { + Console.Title = AppName + " v" + AppVersion + strTitle; + return true; + } + catch (Exception) + { + return false; + } + } + + /// + /// Processes the command switch. + /// + public void ProcessCommandSwitch() + { + switch (CommandSwitch) + { + case "-deheadall": + StartupTasks(); // Check and set the activation and options variables from the WWW. + DeheaderFDSROMs(); // Deheader all FDS ROMs. + DeheaderNESROMs(); // Deheader all NES ROMs. + DeheaderA7800ROMs(); // Deheader all A7800 ROMs. + DeheaderLynxROMs(); // Deheader all Lynx ROMs. + break; + case "-deheadallselected": + StartupTasks(); // Check and set the activation and options variables from the WWW. + DeheaderAllSelectedROMs(); // Deheader all selected FDS/NES/A7800/Lynx ROMs in the options file. + break; + case "-deheadfds": + StartupTasks(); // Check and set the activation and options variables from the WWW. + DeheaderFDSROMs(); // Deheader all FDS ROMs. + break; + case "-deheadnes": + StartupTasks(); // Check and set the activation and options variables from the WWW. + DeheaderNESROMs(); // Deheader all NES ROMs. + break; + case "-deheada7800": + StartupTasks(); // Check and set the activation and options variables from the WWW. + DeheaderA7800ROMs(); // Deheader all A7800 ROMs. + break; + case "-deheadlynx": + StartupTasks(); // Check and set the activation and options variables from the WWW. + DeheaderLynxROMs(); // Deheader all Lynx ROMs. + break; + case "-saveoptions": + SaveOptionsToFile(); // Saves a new default options file. + break; + case "-license": + PrintLicense(); // Print the license text. + break; + case "-donations": + PrintDonationInfo(); // Prints the donation information. + break; + case "-diagnostics": + StartupTasks(); // Performs the application startup tasks. + PrintDiagnosticsInfo(); // Prints the diagnostics information. + break; + case "-version": + // Do nothing. // Do nothing. + break; + default: + PrintHelp(); // Print the help text. + break; + } + } + + #endregion + + #region Checkers + + /// + /// Checks the ROMs directory path. + /// + /// + public bool PathROMsDirCheck() + { + // Check if the directory exists. + if (Directory.Exists(PathROMsDir) == true) + { + // Print to screen and set the return value. + Log.Debug("The ROMs directory path does exist (" + PathROMsDir + ")"); + return true; + } + else + { + // Print to screen and set the return value. + Log.Information("The ROMs directory path does not exist (" + PathROMsDir + ")"); + return false; + } + } + + /// + /// Checks the deheadered ROMs directory path. + /// + /// + public bool PathROMsDeheadedDirCheck() + { + // Check if the directory exists. + if (Directory.Exists(PathROMsDeheadedDir) == true) + { + // Print to screen and set the return value. + Log.Debug("The deheadered ROMs directory path does exist (" + PathROMsDeheadedDir + ")"); + return true; + } + else + { + // Print to screen and set the return value. + Log.Information("The deheadered ROMs directory path does not exist (" + PathROMsDeheadedDir + ")"); + return false; + } + } + + #endregion + + #region ROM Deheaderers + + /// + /// Deheaders all selected ROMs. + /// + public void DeheaderAllSelectedROMs() + { + try + { + // Print to screen + Log.Information("Deheadering all selected ROMs ..."); + + // Declarations + int intCounterTotalDeheaded = 0; // Total deheadered counter + int intCountArrDirFiles = 0; // Total loop count + string strPathROMsDir = PathROMsDir; // Path to the ROMs directory + string strPathROMsDeheadedDir = PathROMsDeheadedDir; // Path to the deheadered ROMs directory + + // Checkers + bool boolPathROMsDirCheck = PathROMsDirCheck(); + bool boolPathROMsDeheadedDirCheck = PathROMsDeheadedDirCheck(); + + // Check the paths and directories. + if (boolPathROMsDirCheck != false && boolPathROMsDeheadedDirCheck != false) + { + // Print to screen + Log.Information("Options: ROMs Directory (" + strPathROMsDir + ")"); + Log.Information("Options: ROMsDeheaded Directory (" + strPathROMsDeheadedDir + ")"); + + // Get the directory files array and count. + string[] arrDirFiles = Directory.GetFiles(strPathROMsDir, "*.*", SearchOption.AllDirectories); + intCountArrDirFiles = arrDirFiles.Count(); + + // Create and start a stopwatch. + var stopWatch = new Stopwatch(); + stopWatch.Start(); + + // Main loop - Deheader all of the ROMs. + foreach (string strPathFile in arrDirFiles) + { + FileInfo fiInputFile = new FileInfo(strPathFile); + if ((fiInputFile.Extension == ".fds" || fiInputFile.Extension == ".nes") && (FDS == true || NES == true) && fiInputFile.Length > 16) + { + Log.Information("Deheadering: " + fiInputFile.FullName); + int intOutputFileLength = (int)(fiInputFile.Length - 16); + byte[] arrOutputFileBytes = new byte[intOutputFileLength]; + using (BinaryReader reader = new BinaryReader(new FileStream(fiInputFile.FullName, FileMode.Open))) + { + reader.BaseStream.Seek(16, SeekOrigin.Begin); + reader.Read(arrOutputFileBytes, 0, intOutputFileLength); + } + File.WriteAllBytes(Path.Combine(strPathROMsDeheadedDir, fiInputFile.Name), arrOutputFileBytes); + intCounterTotalDeheaded++; + } + else if (fiInputFile.Extension == ".lnx" && Lynx == true && fiInputFile.Length > 64) + { + Log.Information("Deheadering: " + fiInputFile.FullName); + int intOutputFileLength = (int)(fiInputFile.Length - 64); + byte[] arrOutputFileBytes = new byte[intOutputFileLength]; + using (BinaryReader reader = new BinaryReader(new FileStream(fiInputFile.FullName, FileMode.Open))) + { + reader.BaseStream.Seek(64, SeekOrigin.Begin); + reader.Read(arrOutputFileBytes, 0, intOutputFileLength); + } + File.WriteAllBytes(Path.Combine(strPathROMsDeheadedDir, fiInputFile.Name), arrOutputFileBytes); + intCounterTotalDeheaded++; + } + else if (fiInputFile.Extension == ".a78" && A7800 == true && fiInputFile.Length > 128) + { + Log.Information("Deheadering: " + fiInputFile.FullName); + int intOutputFileLength = (int)(fiInputFile.Length - 128); + byte[] arrOutputFileBytes = new byte[intOutputFileLength]; + using (BinaryReader reader = new BinaryReader(new FileStream(fiInputFile.FullName, FileMode.Open))) + { + reader.BaseStream.Seek(128, SeekOrigin.Begin); + reader.Read(arrOutputFileBytes, 0, intOutputFileLength); + } + File.WriteAllBytes(Path.Combine(strPathROMsDeheadedDir, fiInputFile.Name), arrOutputFileBytes); + intCounterTotalDeheaded++; + } + } + + // Stop the stopwatch. + stopWatch.Stop(); + + // Print to screen + Log.Information("Deheadered " + intCounterTotalDeheaded + " ROMs in " + stopWatch.Elapsed); + } + + // Print to screen + Log.Information("Deheadering all selected ROMs completed"); + } + catch (Exception ex) + { + // Print to screen + Log.Error("Error: Deheadering all selected ROMs failed"); + Log.Error("Error: " + ex.Message); + } + } + + /// + /// Deheaders all possible FDS ROMs. + /// + public void DeheaderFDSROMs() + { + try + { + // Print to screen + Log.Information("Deheadering all possible FDS ROMs ..."); + + // Declarations + int intCounterTotalDeheaded = 0; // Total deheadered counter + int intCountArrDirFiles = 0; // Total loop count + string strPathROMsDir = PathROMsDir; // Path to the ROMs directory + string strPathROMsDeheadedDir = PathROMsDeheadedDir; // Path to the deheadered ROMs directory + + // Checkers + bool boolPathROMsDirCheck = PathROMsDirCheck(); + bool boolPathROMsDeheadedDirCheck = PathROMsDeheadedDirCheck(); + + // Check the paths and directories. + if (boolPathROMsDirCheck != false && boolPathROMsDeheadedDirCheck != false) + { + // Print to screen + Log.Information("Options: ROMs Directory (" + strPathROMsDir + ")"); + Log.Information("Options: ROMsDeheaded Directory (" + strPathROMsDeheadedDir + ")"); + + // Get the directory files array and count. + string[] arrDirFiles = Directory.GetFiles(strPathROMsDir, "*.fds", SearchOption.AllDirectories); + intCountArrDirFiles = arrDirFiles.Count(); + + // Create and start a stopwatch. + var stopWatch = new Stopwatch(); + stopWatch.Start(); + + // Main loop - Deheader all of the ROMs. + foreach (string strPathFile in arrDirFiles) + { + FileInfo fiInputFile = new FileInfo(strPathFile); + if (fiInputFile.Length > 16) + { + Log.Information("Deheadering: " + fiInputFile.FullName); + int intOutputFileLength = (int)(fiInputFile.Length - 16); + byte[] arrOutputFileBytes = new byte[intOutputFileLength]; + using (BinaryReader reader = new BinaryReader(new FileStream(fiInputFile.FullName, FileMode.Open))) + { + reader.BaseStream.Seek(16, SeekOrigin.Begin); + reader.Read(arrOutputFileBytes, 0, intOutputFileLength); + } + File.WriteAllBytes(Path.Combine(strPathROMsDeheadedDir, fiInputFile.Name), arrOutputFileBytes); + intCounterTotalDeheaded++; + } + } + + // Stop the stopwatch. + stopWatch.Stop(); + + // Print to screen + Log.Information("Deheadered " + intCounterTotalDeheaded + " ROMs in " + stopWatch.Elapsed); + } + + // Print to screen + Log.Information("Deheadering all possible FDS ROMs completed"); + } + catch (Exception ex) + { + // Print to screen + Log.Error("Error: Deheadering all possible FDS ROMs failed"); + Log.Error("Error: " + ex.Message); + } + } + + /// + /// Deheaders all possible NES ROMs. + /// + public void DeheaderNESROMs() + { + try + { + // Print to screen + Log.Information("Deheadering all possible NES ROMs ..."); + + // Declarations + int intCounterTotalDeheaded = 0; // Total deheadered counter + int intCountArrDirFiles = 0; // Total loop count + string strPathROMsDir = PathROMsDir; // Path to the ROMs directory + string strPathROMsDeheadedDir = PathROMsDeheadedDir; // Path to the deheadered ROMs directory + + // Checkers + bool boolPathROMsDirCheck = PathROMsDirCheck(); + bool boolPathROMsDeheadedDirCheck = PathROMsDeheadedDirCheck(); + + // Check the paths and directories. + if (boolPathROMsDirCheck != false && boolPathROMsDeheadedDirCheck != false) + { + // Print to screen + Log.Information("Options: ROMs Directory (" + strPathROMsDir + ")"); + Log.Information("Options: ROMsDeheaded Directory (" + strPathROMsDeheadedDir + ")"); + + // Get the directory files array and count. + string[] arrDirFiles = Directory.GetFiles(strPathROMsDir, "*.nes", SearchOption.AllDirectories); + intCountArrDirFiles = arrDirFiles.Count(); + + // Create and start a stopwatch. + var stopWatch = new Stopwatch(); + stopWatch.Start(); + + // Main loop - Deheader all of the ROMs. + foreach (string strPathFile in arrDirFiles) + { + FileInfo fiInputFile = new FileInfo(strPathFile); + if (fiInputFile.Length > 16) + { + Log.Information("Deheadering: " + fiInputFile.FullName); + int intOutputFileLength = (int)(fiInputFile.Length - 16); + byte[] arrOutputFileBytes = new byte[intOutputFileLength]; + using (BinaryReader reader = new BinaryReader(new FileStream(fiInputFile.FullName, FileMode.Open))) + { + reader.BaseStream.Seek(16, SeekOrigin.Begin); + reader.Read(arrOutputFileBytes, 0, intOutputFileLength); + } + File.WriteAllBytes(Path.Combine(strPathROMsDeheadedDir, fiInputFile.Name), arrOutputFileBytes); + intCounterTotalDeheaded++; + } + } + + // Stop the stopwatch. + stopWatch.Stop(); + + // Print to screen + Log.Information("Deheadered " + intCounterTotalDeheaded + " ROMs in " + stopWatch.Elapsed); + } + + // Print to screen + Log.Information("Deheadering all possible NES ROMs completed"); + } + catch (Exception ex) + { + // Print to screen + Log.Error("Error: Deheadering all possible NES ROMs failed"); + Log.Error("Error: " + ex.Message); + } + } + + /// + /// Deheaders all possible A7800 ROMs. + /// + public void DeheaderA7800ROMs() + { + try + { + // Print to screen + Log.Information("Deheadering all possible 7800 ROMs ..."); + + // Declarations + int intCounterTotalDeheaded = 0; // Total deheadered counter + int intCountArrDirFiles = 0; // Total loop count + string strPathROMsDir = PathROMsDir; // Path to the ROMs directory + string strPathROMsDeheadedDir = PathROMsDeheadedDir; // Path to the deheadered ROMs directory + + // Checkers + bool boolPathROMsDirCheck = PathROMsDirCheck(); + bool boolPathROMsDeheadedDirCheck = PathROMsDeheadedDirCheck(); + + // Check the paths and directories. + if (boolPathROMsDirCheck != false && boolPathROMsDeheadedDirCheck != false) + { + // Print to screen + Log.Information("Options: ROMs Directory (" + strPathROMsDir + ")"); + Log.Information("Options: ROMsDeheaded Directory (" + strPathROMsDeheadedDir + ")"); + + // Get the directory files array and count. + string[] arrDirFiles = Directory.GetFiles(strPathROMsDir, "*.a78", SearchOption.AllDirectories); + intCountArrDirFiles = arrDirFiles.Count(); + + // Create and start a stopwatch. + var stopWatch = new Stopwatch(); + stopWatch.Start(); + + // Main loop - Deheader all of the ROMs. + foreach (string strPathFile in arrDirFiles) + { + FileInfo fiInputFile = new FileInfo(strPathFile); + if (fiInputFile.Length > 128) + { + Log.Information("Deheadering: " + fiInputFile.FullName); + int intOutputFileLength = (int)(fiInputFile.Length - 128); + byte[] arrOutputFileBytes = new byte[intOutputFileLength]; + using (BinaryReader reader = new BinaryReader(new FileStream(fiInputFile.FullName, FileMode.Open))) + { + reader.BaseStream.Seek(128, SeekOrigin.Begin); + reader.Read(arrOutputFileBytes, 0, intOutputFileLength); + } + File.WriteAllBytes(Path.Combine(strPathROMsDeheadedDir, fiInputFile.Name), arrOutputFileBytes); + intCounterTotalDeheaded++; + } + } + + // Stop the stopwatch. + stopWatch.Stop(); + + // Print to screen + Log.Information("Deheadered " + intCounterTotalDeheaded + " ROMs in " + stopWatch.Elapsed); + } + + // Print to screen + Log.Information("Deheadering all possible 7800 ROMs completed"); + } + catch (Exception ex) + { + // Print to screen + Log.Error("Error: Deheadering all possible 7800 ROMs failed"); + Log.Error("Error: " + ex.Message); + } + } + + /// + /// Deheaders all possible Lynx ROMs. + /// + public void DeheaderLynxROMs() + { + try + { + // Print to screen + Log.Information("Deheadering all possible Lynx ROMs ..."); + + // Declarations + int intCounterTotalDeheaded = 0; // Total deheadered counter + int intCountArrDirFiles = 0; // Total loop count + string strPathROMsDir = PathROMsDir; // Path to the ROMs directory + string strPathROMsDeheadedDir = PathROMsDeheadedDir; // Path to the deheadered ROMs directory + + // Checkers + bool boolPathROMsDirCheck = PathROMsDirCheck(); + bool boolPathROMsDeheadedDirCheck = PathROMsDeheadedDirCheck(); + + // Check the paths and directories. + if (boolPathROMsDirCheck != false && boolPathROMsDeheadedDirCheck != false) + { + // Print to screen + Log.Information("Options: ROMs Directory (" + strPathROMsDir + ")"); + Log.Information("Options: ROMsDeheaded Directory (" + strPathROMsDeheadedDir + ")"); + + // Get the directory files array and count. + string[] arrDirFiles = Directory.GetFiles(strPathROMsDir, "*.lnx", SearchOption.AllDirectories); + intCountArrDirFiles = arrDirFiles.Count(); + + // Create and start a stopwatch. + var stopWatch = new Stopwatch(); + stopWatch.Start(); + + // Main loop - Deheader all of the ROMs. + foreach (string strPathFile in arrDirFiles) + { + FileInfo fiInputFile = new FileInfo(strPathFile); + if (fiInputFile.Length > 64) + { + Log.Information("Deheadering: " + fiInputFile.FullName); + int intOutputFileLength = (int)(fiInputFile.Length - 64); + byte[] arrOutputFileBytes = new byte[intOutputFileLength]; + using (BinaryReader reader = new BinaryReader(new FileStream(fiInputFile.FullName, FileMode.Open))) + { + reader.BaseStream.Seek(64, SeekOrigin.Begin); + reader.Read(arrOutputFileBytes, 0, intOutputFileLength); + } + File.WriteAllBytes(Path.Combine(strPathROMsDeheadedDir, fiInputFile.Name), arrOutputFileBytes); + intCounterTotalDeheaded++; + } + } + + // Stop the stopwatch. + stopWatch.Stop(); + + // Print to screen + Log.Information("Deheadered " + intCounterTotalDeheaded + " ROMs in " + stopWatch.Elapsed); + } + + // Print to screen + Log.Information("Deheadering all possible Lynx ROMs completed"); + } + catch (Exception ex) + { + // Print to screen + Log.Error("Error: Deheadering all possible Lynx ROMs failed"); + Log.Error("Error: " + ex.Message); + } + } + + #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.DeheadEmAll_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.DeheadEmAll_LICENSE); + + // Loop through each line of the array. + foreach (string strLine in arrLines) + { + // Print to screen. + Log.Information(strLine); + } + } + + /// + /// Prints the donation information. + /// + public void PrintDonationInfo() + { + // Read all of the lines of the file into an array. + string[] arrLines = ReadAllResourceLines(Properties.Resources.DeheadEmAll_DONATIONS); + + // 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 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/DeheadEmAll/DeheadEmAll.csproj b/DeheadEmAll/DeheadEmAll.csproj new file mode 100644 index 0000000..886ec4b --- /dev/null +++ b/DeheadEmAll/DeheadEmAll.csproj @@ -0,0 +1,103 @@ + + + + + Debug + AnyCPU + {06F4A6D4-EE7F-47D3-947C-A259F1FC3D84} + Library + Properties + DeheadEmAll + DeheadEmAll + v4.8 + 512 + true + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + bin\Debug\DeheadEmAll.xml + + + none + true + bin\Release\ + TRACE + prompt + 4 + + + false + + + DeheadEmAll.snk + + + App.ico + + + + ..\packages\Serilog.2.12.0\lib\net47\Serilog.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/DeheadEmAll/DeheadEmAll.nuspec b/DeheadEmAll/DeheadEmAll.nuspec new file mode 100644 index 0000000..91784ae --- /dev/null +++ b/DeheadEmAll/DeheadEmAll.nuspec @@ -0,0 +1,42 @@ + + + + DeheadEmAll + DeheadEmAll + 0.0.0 + + Use the DeheadEmAll Library (.dll) to deheader ROMs from anywhere in your application. + + First, install or add the DeheadEmAll Nuget Package to your application by downloading the [nuget.nupkg](https://gitemall.devemall.int.eu.org/TommySalami/DeheadEmAll/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 DeheadEmAll Object from anywhere in your application like the following: + + ``` + DeheadEmAll.DeheadEmAll dhea = new DeheadEmAll.DeheadEmAll(); + ``` + + DeheadEmAll + LICENSE.txt + false + icon.png + https://gitemall.devemall.int.eu.org/TommySalami/DeheadEmAll/DeheadEmAll/Resources/Images/DeheadEmAll.png + https://gitemall.devemall.int.eu.org/TommySalami/DeheadEmAll + See https://gitemall.devemall.int.eu.org/TommySalami/DeheadEmAll/releases for release notes. + Copyright (c) 2016-2025 DeheadEmAll - All Rights Reserved + DeheadEmAll Deheader ROMs Automated ROM Deheaderer Dehead WindowsForms WinForms Windows Forms Application Console + + + + + + + + + + + + \ No newline at end of file diff --git a/DeheadEmAll/DeheadEmAll.snk b/DeheadEmAll/DeheadEmAll.snk new file mode 100644 index 0000000000000000000000000000000000000000..31880c59be9add47c94dc6d66cbaf14872242457 GIT binary patch literal 596 zcmV-a0;~N80ssI2Bme+XQ$aES1ONa50097F;C#6@@@E<~2)@yvB{-{T3iZIcDv(4( zXJ-25k0^3}cjKSJ=x^MLh%=UVXF6VO7NsGnc>A)wG>4rJfI~s1nADM3O#_nCv`f=FH}F4Te1dT{T(lO~NAQRCeI1f#Lkzdc zDu7>1ZNH+B?$6xo*&0go-JH=u01C~kb+k7?V%LdoB*HnbV(6Ag{>bv~VtT{XDhGh7eIlJuwd;nP*;V+I>D9dsS=60|P+8{7gX<`SQ$ zlwoJ^;=LCfYHZura~_3 zbxzf~19maNj7IJM+Izk1MmmE!GbFCAc+L8S>WZt8!(pvsrq$HRF;KVF+R^YMGBXo~ zGWEw!+r$V=6Li=SWyo&ymM(0eJh0D>AUq0rMxO;xj1~R~27IhDj5&!)y%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 DeheadEmAll.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("DeheadEmAll.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 ------------------------------------------------------------------ + ///DeheadEmAll - Donations version 20240901 + ///Copyright (c) 2016-2024 DeheadEmAll - 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 + ///deheaderer. If you like or use this software regularly, maybe you + ///would like to make a donation. + /// + ///Please use the following donation link to ma [rest of string was truncated]";. + /// + public static string DeheadEmAll_DONATIONS { + get { + return ResourceManager.GetString("DeheadEmAll_DONATIONS", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to --------------------------------------------------------------- + ///DeheadEmAll - Help version 20240901 + ///Copyright (c) 2016-2024 DeheadEmAll - All Rights Reserved + ///--------------------------------------------------------------- + /// + ///[I] About + ///[II] Requirements + ///[III] Installation + ///[IV] How to Deheader ROMs + ///[V] Contributing + ///[VI] Contact + ///[VII] Disclaimers + /// + ///[I] About + ///--------------------------------------------------------------- + ///DeheadEmAll or DHEA is the original automated ROM deheaderer. Some ROM sets co [rest of string was truncated]";. + /// + public static string DeheadEmAll_HELP { + get { + return ResourceManager.GetString("DeheadEmAll_HELP", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to ------------------------------------------------------------------ + ///DeheadEmAll - Help - CMD version 20240901 + ///Copyright (c) 2016-2024 DeheadEmAll - All Rights Reserved + ///------------------------------------------------------------------ + /// + ///Usage: + /// DeheadEmAll-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 + /// If no command is passed then -deheadall will be used + /// + ///----------------------------- [rest of string was truncated]";. + /// + public static string DeheadEmAll_HELP_CMD { + get { + return ResourceManager.GetString("DeheadEmAll_HELP_CMD", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to --------------------------------------------------------------- + ///DeheadEmAll - License version 20240901 + ///Copyright (c) 2016-2024 DeheadEmAll - 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. DeheadEmAll may publish revised and/or [rest of string was truncated]";. + /// + public static string DeheadEmAll_LICENSE { + get { + return ResourceManager.GetString("DeheadEmAll_LICENSE", resourceCulture); + } + } + } +} diff --git a/DeheadEmAll/Properties/Resources.resx b/DeheadEmAll/Properties/Resources.resx new file mode 100644 index 0000000..8265ea9 --- /dev/null +++ b/DeheadEmAll/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\DeheadEmAll-DONATIONS.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 + + + ..\Resources\Docs\DeheadEmAll-HELP.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 + + + ..\Resources\Docs\DeheadEmAll-HELP-CMD.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 + + + ..\Resources\Docs\DeheadEmAll-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/DeheadEmAll/Resources/Docs/DeheadEmAll-DONATIONS.txt b/DeheadEmAll/Resources/Docs/DeheadEmAll-DONATIONS.txt new file mode 100644 index 0000000..6a15fa1 --- /dev/null +++ b/DeheadEmAll/Resources/Docs/DeheadEmAll-DONATIONS.txt @@ -0,0 +1,15 @@ +------------------------------------------------------------------ +DeheadEmAll - Donations version 20250729 +Copyright (c) 2016-2025 DeheadEmAll - 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 +deheaderer. 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/DeheadEmAll/Resources/Docs/DeheadEmAll-HELP-CMD.txt b/DeheadEmAll/Resources/Docs/DeheadEmAll-HELP-CMD.txt new file mode 100644 index 0000000..8affda0 --- /dev/null +++ b/DeheadEmAll/Resources/Docs/DeheadEmAll-HELP-CMD.txt @@ -0,0 +1,54 @@ +------------------------------------------------------------------ +DeheadEmAll - Help - CMD version 20250729 +Copyright (c) 2016-2025 DeheadEmAll - All Rights Reserved +------------------------------------------------------------------ + +Usage: + DeheadEmAll-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 + If no command is passed then -deheadall will be used + +------------------------------------------------------------------ + +Deheader All ROMs Example: + DeheadEmAll-CLI.exe -deheadall + +Deheader All Selected ROMs Example: + DeheadEmAll-CLI.exe -deheadallselected + +------------------------------------------------------------------ + +WARNING: + Using invalid options values may cause this app to crash! + +------------------------------------------------------------------ + +Standard Commands: + -deheadall Deheader all FDS/NES/A7800/Lynx ROMs + -deheadallselected Deheader all selected ROMs + -deheadfds Deheader all FDS (.fds) ROMs + -deheadnes Deheader all NES (.nes) ROMs + -deheada7800 Deheader all A7800 (.a78) ROMs + -deheadlynx Deheader all Lynx (.lnx) ROMs + -saveoptions Save a new default options file + -help Print the help + -donations Print the donations information + -license Print the license + -version Print the version + +------------------------------------------------------------------ + +Path Options: + RD: Path to the ROMs directory + RE: Path to the deheadered ROMs directory + LF: Path to the log file + +------------------------------------------------------------------ + +Developer Options: + LA: Language + en - DEFAULT + LL: Log level + Information - DEFAULT diff --git a/DeheadEmAll/Resources/Docs/DeheadEmAll-HELP.txt b/DeheadEmAll/Resources/Docs/DeheadEmAll-HELP.txt new file mode 100644 index 0000000..eb86155 --- /dev/null +++ b/DeheadEmAll/Resources/Docs/DeheadEmAll-HELP.txt @@ -0,0 +1,99 @@ +--------------------------------------------------------------- +DeheadEmAll - Help version 20250729 +Copyright (c) 2016-2025 DeheadEmAll - All Rights Reserved +--------------------------------------------------------------- + +[I] About +[II] Requirements +[III] Installation +[IV] How to Deheader ROMs +[V] Contributing +[VI] Contact +[VII] Disclaimers + +[I] About +--------------------------------------------------------------- +DeheadEmAll or DHEA is the original automated ROM deheaderer. Some ROM sets conatin headered ROMs, some sets contain deheadered ROMs. Use this software to deheader your headered ROMs. + +DeheadEmAll comes with both a command line interface and a graphical interface. No matter which interface you choose, deheadering all of your ROMs is easy. Just run DeheadEmAll to deheader all of your ROMs. + +Probably the easiest way to deheader your ROMs is to just put your ROMs into the ROMs directory and run DeheadEmAll to deheader everything using the following parameters: + +* (.fds) - Nintendo Famicom Disk System files will be deheadered. +* (.nes) - Nintendo Entertainment System files will be deheadered. +* (.a78) - Atari 7800 files will be deheadered. +* (.lnx) - Atari Lynx files will be deheadered. +* ROMs in all sub directories will be recursively deheadered. +* No original ROMs will be moved or deleted. +* Deheadered ROMs will be placed in the ROMsDeheaded directory overwriting any existing deheadered ROMs with the same name. + +If you happen to like bullshit, DeheadEmAll can also accept commands and options from the command line. For command line help, run the -help command. + +[II] Requirements +--------------------------------------------------------------- +This software has been tested and verified working on Windows, Linux and Mac using .NET 4.8 or Mono. + +[III] Installation +--------------------------------------------------------------- +This app 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 program 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 DHEA on my Windows C:\ drive or in my Linux ~/ (home) directory. My installation layout looks like this: + +C:\DHEA\BASHes\ +C:\DHEA\Batches\ +C:\DHEA\Docs\ +C:\DHEA\Logs\ +C:\DHEA\Options\ +C:\DHEA\ROMs\ +C:\DHEA\ROMsDeheaded\ +C:\DHEA\DeheadEmAll-CLI.exe +C:\DHEA\DeheadEmAll-GUI.exe + +or + +~/DHEA/BASHes/ +~/DHEA/Batches/ +~/DHEA/Docs/ +~/DHEA/Logs/ +~/DHEA/Options/ +~/DHEA/ROMs/ +~/DHEA/ROMsDeheaded/ +~/DHEA/DeheadEmAll-CLI.exe +~/DHEA/DeheadEmAll-GUI.exe + +After this app is installed, you can create a new options file using the GUI or CLI version. + +[IV] How to Deheader ROMs +--------------------------------------------------------------- +Step 1) +Put your ROMs into your ROMs directory. DeheadEmAll is recursive. You can put ROMs into sub directories. + +Step 2) +If you like using a graphical interface, run the DeheadEmAll GUI, check the ROMs that you want to deheader and click the Dehead ROMs button to deheader all of your ROMs. + +If you like using a command line interface, run the DeheadEmAll CLI directly or use some of the provided Windows Batch files to deheader all of your ROMs. Optionally, you may pass commands and options to the DeheadEmAll CLI. The proper syntax and help is available with the -help command. + +[V] 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 + +[VI] Contact +--------------------------------------------------------------- +GitEmAll: https://gitemall.devemall.int.eu.org/TommySalami/DeheadEmAll + +[VII] Disclaimers +--------------------------------------------------------------- +We do not upload, share, distribute or provide links to anything illegal, including ROMs or patches. diff --git a/DeheadEmAll/Resources/Docs/DeheadEmAll-LICENSE.rtf b/DeheadEmAll/Resources/Docs/DeheadEmAll-LICENSE.rtf new file mode 100644 index 0000000000000000000000000000000000000000..cf0709b5b38bbb282cdea4d40ccbe505c449dbd3 GIT binary patch literal 2183 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 LiT@Ayf1m#g{>2-^ literal 0 HcmV?d00001 diff --git a/DeheadEmAll/Resources/Images/DeheadEmAll.png b/DeheadEmAll/Resources/Images/DeheadEmAll.png new file mode 100644 index 0000000000000000000000000000000000000000..9edcaeb101beb63cc06d065fd92218f7d774ee14 GIT binary patch literal 3593 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 P00000NkvXXu0mjf$7j=9 literal 0 HcmV?d00001 diff --git a/DeheadEmAll/Resources/Output/Options/put your options files in this directory.txt b/DeheadEmAll/Resources/Output/Options/put your options files in this directory.txt new file mode 100644 index 0000000..6d78808 --- /dev/null +++ b/DeheadEmAll/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/DeheadEmAll/Resources/Output/ROMs/put your roms in this directory.txt b/DeheadEmAll/Resources/Output/ROMs/put your roms in this directory.txt new file mode 100644 index 0000000..6d78808 --- /dev/null +++ b/DeheadEmAll/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/DeheadEmAll/Resources/Output/ROMsDeheaded/put your deheaded roms in this directory.txt b/DeheadEmAll/Resources/Output/ROMsDeheaded/put your deheaded roms in this directory.txt new file mode 100644 index 0000000..6d78808 --- /dev/null +++ b/DeheadEmAll/Resources/Output/ROMsDeheaded/put your deheaded roms in this directory.txt @@ -0,0 +1 @@ +This file can be deleted. \ No newline at end of file diff --git a/DeheadEmAll/packages.config b/DeheadEmAll/packages.config new file mode 100644 index 0000000..9978c02 --- /dev/null +++ b/DeheadEmAll/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..e0cfc8d --- /dev/null +++ b/LICENSE @@ -0,0 +1,37 @@ +*************************************************************** +DeheadEmAll - License version 20250729 +Copyright (c) 2016-2025 DeheadEmAll - 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. DeheadEmAll 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 + DeheadEmAll 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 DEHEADEMALL 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 DEHEADEMALL 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. diff --git a/README.md b/README.md new file mode 100644 index 0000000..53b61ac --- /dev/null +++ b/README.md @@ -0,0 +1,57 @@ +# @DeheadEmAll +### The Original Automated ROM Deheaderer +## About +DeheadEmAll or DHEA is the original automated ROM deheaderer. Some ROM sets conatin headered ROMs, some sets contain deheadered ROMs. Use this software to deheader your headered ROMs. + +DeheadEmAll comes with both a command line interface and a graphical interface. No matter which interface you choose, deheadering all of your ROMs is easy. Just run DeheadEmAll to deheader all of your ROMs. + +Probably the easiest way to deheader your ROMs is to just put your ROMs into the ROMs directory and run DeheadEmAll to deheader everything using the following parameters: + +* (.fds) - Nintendo Famicom Disk System files will be deheadered. +* (.nes) - Nintendo Entertainment System files will be deheadered. +* (.a78) - Atari 7800 files will be deheadered. +* (.lnx) - Atari Lynx files will be deheadered. +* ROMs in all sub directories will be recursively deheadered. +* No original ROMs will be moved or deleted. +* Deheadered ROMs will be placed in the ROMsDeheaded directory overwriting any existing deheadered ROMs with the same name. + +If you happen to like bullshit, DeheadEmAll can also accept commands and options from the command line. For command line help, run the -help command. +## 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 +* DeheadEmAll - Class Library +* DeheadEmAll-CLI - Console App +* DeheadEmAll-GUI - Windows Forms App +* DeheadEmAll-Release - Release Project +* DeheadEmAll-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/DeheadEmAll](https://gitemall.devemall.int.eu.org/TommySalami/DeheadEmAll "GitEmAll") + +--- +###### Copyright (c) 2016-2025 DeheadEmAll - All Rights Reserved v2025-07-29-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