Add project files.

This commit is contained in:
2025-07-31 11:26:53 -06:00
commit 2210572805
45 changed files with 4908 additions and 0 deletions

63
.gitattributes vendored Normal file
View File

@@ -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

369
.gitignore vendored Normal file
View File

@@ -0,0 +1,369 @@
## 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/
# Libraries
*.dll

View File

@@ -0,0 +1,95 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{F0DD14E6-BDD1-408B-B826-D45DFDD2F4AB}</ProjectGuid>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<OutputPath>bin\Debug\</OutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<OutputPath>bin\Release\</OutputPath>
</PropertyGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<ReleaseName>AutomatedRedump2IRD</ReleaseName>
<ReleaseVersion>0.0.8</ReleaseVersion>
<PortableName>AutomatedRedump2IRD-Portable</PortableName>
<AltName>AutomatedRedump2IRD-Alt</AltName>
<SourceName>AutomatedRedump2IRD-Source</SourceName>
<PortableDir>$(OutputPath)Portable\</PortableDir>
<AltDir>$(OutputPath)Alt\</AltDir>
<SourceDir>$(OutputPath)Source\</SourceDir>
<ReleasesDir>$(OutputPath)Releases\</ReleasesDir>
</PropertyGroup>
<Target Name="Build">
<CallTarget Targets="Clean" />
<CallTarget Targets="CreatePortableFiles" />
<CallTarget Targets="CreateSourceFiles" />
<CallTarget Targets="CreateReleasesFiles" />
</Target>
<Target Name="Clean">
<RemoveDir Directories="$(PortableDir)" />
<MakeDir Directories="$(PortableDir)" />
<RemoveDir Directories="$(AltDir)" />
<MakeDir Directories="$(AltDir)" />
<RemoveDir Directories="$(SourceDir)" />
<MakeDir Directories="$(SourceDir)" />
<RemoveDir Directories="$(ReleasesDir)" />
<MakeDir Directories="$(ReleasesDir)" />
</Target>
<Target Name="CreatePortableFiles">
<ItemGroup>
<MySourceBINs Condition="$(Configuration) == 'Debug'" Include="$(SolutionDir)$(ReleaseName)\bin\$(Configuration)\**\*.*;" />
<MySourceBINs Condition="$(Configuration) == 'Release'" Include="$(SolutionDir)$(ReleaseName)\bin\$(Configuration)\**\*.exe;$(SolutionDir)$(ReleaseName)\bin\$(Configuration)\System.Data.SQLite.dll;" />
<MySourceLibsx64 Include="$(SolutionDir)$(ReleaseName)\bin\$(Configuration)\x64\**\*.dll;" />
<MySourceLibsx86 Include="$(SolutionDir)$(ReleaseName)\bin\$(Configuration)\x86\**\*.dll;" />
<MySourceLibsAlt Include="$(SolutionDir)$(ReleaseName)\bin\$(Configuration)\*.dll;" />
<MySourceDB Include="$(SolutionDir)$(ReleaseName)\Resources\DB\**\*.*;" />
<MySourceDocs Include="$(SolutionDir)$(ReleaseName)\Resources\Docs\**\*.*;" />
<MySourceIRDs Include="$(SolutionDir)$(ReleaseName)\Resources\IRDs\**\*.*;" />
<MySourceLogs Include="$(SolutionDir)$(ReleaseName)\Resources\Logs\**\*.*;" />
<MySourceROMs Include="$(SolutionDir)$(ReleaseName)\Resources\ROMs\**\*.*;" />
<MySourceTmp Include="$(SolutionDir)$(ReleaseName)\Resources\Tmp\**\*.*;" />
</ItemGroup>
<Copy SourceFiles="@(MySourceBINs)" DestinationFiles="@(MySourceBINs->'$(PortableDir)%(RecursiveDir)%(Filename)%(Extension)')" />
<Copy SourceFiles="@(MySourceLibsx64)" DestinationFiles="@(MySourceLibsx64->'$(PortableDir)x64\%(RecursiveDir)%(Filename)%(Extension)')" />
<Copy SourceFiles="@(MySourceLibsx86)" DestinationFiles="@(MySourceLibsx86->'$(PortableDir)x86\%(RecursiveDir)%(Filename)%(Extension)')" />
<Copy SourceFiles="@(MySourceDB)" DestinationFiles="@(MySourceDB->'$(PortableDir)DB\%(RecursiveDir)%(Filename)%(Extension)')" />
<Copy SourceFiles="@(MySourceDocs)" DestinationFiles="@(MySourceDocs->'$(PortableDir)Docs\%(RecursiveDir)%(Filename)%(Extension)')" />
<Copy SourceFiles="@(MySourceIRDs)" DestinationFiles="@(MySourceIRDs->'$(PortableDir)IRDs\%(RecursiveDir)%(Filename)%(Extension)')" />
<Copy SourceFiles="@(MySourceLogs)" DestinationFiles="@(MySourceLogs->'$(PortableDir)Logs\%(RecursiveDir)%(Filename)%(Extension)')" />
<Copy SourceFiles="@(MySourceReports)" DestinationFiles="@(MySourceReports->'$(PortableDir)Reports\%(RecursiveDir)%(Filename)%(Extension)')" />
<Copy SourceFiles="@(MySourceROMs)" DestinationFiles="@(MySourceROMs->'$(PortableDir)ROMs\%(RecursiveDir)%(Filename)%(Extension)')" />
<Copy SourceFiles="@(MySourceTmp)" DestinationFiles="@(MySourceTmp->'$(PortableDir)Tmp\%(RecursiveDir)%(Filename)%(Extension)')" />
<Copy SourceFiles="@(MySourceBINs)" DestinationFiles="@(MySourceBINs->'$(AltDir)%(RecursiveDir)%(Filename)%(Extension)')" />
<Copy SourceFiles="@(MySourceLibsx64)" DestinationFiles="@(MySourceLibsx64->'$(AltDir)x64\%(RecursiveDir)%(Filename)%(Extension)')" />
<Copy SourceFiles="@(MySourceLibsx86)" DestinationFiles="@(MySourceLibsx86->'$(AltDir)x86\%(RecursiveDir)%(Filename)%(Extension)')" />
<Copy SourceFiles="@(MySourceLibsAlt)" DestinationFiles="@(MySourceLibsAlt->'$(AltDir)%(RecursiveDir)%(Filename)%(Extension)')" />
<Copy SourceFiles="@(MySourceDB)" DestinationFiles="@(MySourceDB->'$(AltDir)DB\%(RecursiveDir)%(Filename)%(Extension)')" />
<Copy SourceFiles="@(MySourceDocs)" DestinationFiles="@(MySourceDocs->'$(AltDir)Docs\%(RecursiveDir)%(Filename)%(Extension)')" />
<Copy SourceFiles="@(MySourceIRDs)" DestinationFiles="@(MySourceIRDs->'$(AltDir)IRDs\%(RecursiveDir)%(Filename)%(Extension)')" />
<Copy SourceFiles="@(MySourceLogs)" DestinationFiles="@(MySourceLogs->'$(AltDir)Logs\%(RecursiveDir)%(Filename)%(Extension)')" />
<Copy SourceFiles="@(MySourceReports)" DestinationFiles="@(MySourceReports->'$(AltDir)Reports\%(RecursiveDir)%(Filename)%(Extension)')" />
<Copy SourceFiles="@(MySourceROMs)" DestinationFiles="@(MySourceROMs->'$(AltDir)ROMs\%(RecursiveDir)%(Filename)%(Extension)')" />
<Copy SourceFiles="@(MySourceTmp)" DestinationFiles="@(MySourceTmp->'$(AltDir)Tmp\%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>
<Target Name="CreateSourceFiles">
<ItemGroup>
<MySourceSourceFiles Include="$(SolutionDir)**\*;" Exclude="$(SolutionDir)**\obj\**\*.*;$(SolutionDir)**\bin\**\*.*;$(SolutionDir)**\misc\**\*.*;$(SolutionDir)**\packages\**\*.*;$(SolutionDir)**\.git\**\*.*;$(SolutionDir)**\.vs\**\*.*;" />
</ItemGroup>
<Copy SourceFiles="@(MySourceSourceFiles)" DestinationFiles="@(MySourceSourceFiles->'$(SourceDir)\%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>
<Target Name="CreateReleasesFiles">
<Delete Files="$(ReleasesDir)$(PortableName).$(ReleaseVersion).zip" />
<ZipDirectory SourceDirectory="$(PortableDir)" DestinationFile="$(ReleasesDir)$(PortableName).$(ReleaseVersion).zip" />
<Delete Files="$(ReleasesDir)$(SourceName).$(ReleaseVersion).zip" />
<ZipDirectory SourceDirectory="$(SourceDir)" DestinationFile="$(ReleasesDir)$(SourceName).$(ReleaseVersion).zip" />
<Delete Files="$(ReleasesDir)$(AltName).$(ReleaseVersion).zip" />
<ZipDirectory SourceDirectory="$(AltDir)" DestinationFile="$(ReleasesDir)$(AltName).$(ReleaseVersion).zip" />
</Target>
</Project>

45
AutomatedRedump2IRD.sln Normal file
View File

@@ -0,0 +1,45 @@

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}") = "AutomatedRedump2IRD", "AutomatedRedump2IRD\AutomatedRedump2IRD.csproj", "{4535930B-6F1D-43C5-B661-3CB8A8332F07}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AutomatedRedump2IRD-Release", "AutomatedRedump2IRD-Release\AutomatedRedump2IRD-Release.csproj", "{F0DD14E6-BDD1-408B-B826-D45DFDD2F4AB}"
ProjectSection(ProjectDependencies) = postProject
{4535930B-6F1D-43C5-B661-3CB8A8332F07} = {4535930B-6F1D-43C5-B661-3CB8A8332F07}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{7703CBE6-6FAB-46BB-B637-ECF2326A6D2E}"
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 IRD Builder
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{4535930B-6F1D-43C5-B661-3CB8A8332F07}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4535930B-6F1D-43C5-B661-3CB8A8332F07}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4535930B-6F1D-43C5-B661-3CB8A8332F07}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4535930B-6F1D-43C5-B661-3CB8A8332F07}.Release|Any CPU.Build.0 = Release|Any CPU
{F0DD14E6-BDD1-408B-B826-D45DFDD2F4AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F0DD14E6-BDD1-408B-B826-D45DFDD2F4AB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F0DD14E6-BDD1-408B-B826-D45DFDD2F4AB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F0DD14E6-BDD1-408B-B826-D45DFDD2F4AB}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {CDE9A6F7-33F3-44CC-A41B-50EA62F8FDF4}
EndGlobalSection
EndGlobal

View File

@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.6.8.0" newVersion="2.6.8.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.6.8.0" newVersion="2.6.8.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<entityFramework>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
</providers>
</entityFramework>
</configuration>

BIN
AutomatedRedump2IRD/App.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@@ -0,0 +1,158 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{4535930B-6F1D-43C5-B661-3CB8A8332F07}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>AutomatedRedump2IRD</RootNamespace>
<AssemblyName>AutomatedRedump2IRD</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
<TargetFrameworkProfile />
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>bin\Debug\AutomatedRedump2IRD.xml</DocumentationFile>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>App.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="DiscUtils, Version=0.11.0.0, Culture=neutral, PublicKeyToken=d28ce54a2723c342, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>Resources\Libs\IsoTools.1.34.9\DiscUtils.dll</HintPath>
</Reference>
<Reference Include="Ionic.Zip, Version=1.9.1.8, Culture=neutral, PublicKeyToken=edbe51ad942a3f5c, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>Resources\Libs\IsoTools.1.34.9\Ionic.Zip.dll</HintPath>
</Reference>
<Reference Include="IsoTools.Common, Version=1.34.5151.16661, Culture=neutral, PublicKeyToken=d28ce54a2723c342, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>Resources\Libs\IsoTools.1.34.9\IsoTools.Common.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CompilerServices.AsyncTargetingPack.Net4, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>Resources\Libs\IsoTools.1.34.9\Microsoft.CompilerServices.AsyncTargetingPack.Net4.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Core" />
<Reference Include="System.Data.SQLite, Version=1.0.118.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
<HintPath>..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.118.0\lib\net40\System.Data.SQLite.dll</HintPath>
</Reference>
<Reference Include="System.Net" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions">
<EmbedInteropTypes>False</EmbedInteropTypes>
</Reference>
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data">
<EmbedInteropTypes>False</EmbedInteropTypes>
</Reference>
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="FrmAutomatedRedump2IRD.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FrmAutomatedRedump2IRD.Designer.cs">
<DependentUpon>FrmAutomatedRedump2IRD.cs</DependentUpon>
</Compile>
<Compile Include="DatabaseSQLite.cs" />
<Compile Include="IsoTools\IrdCreateRedumpFile.cs" />
<Compile Include="IsoTools\RedumpFileStream.cs" />
<Compile Include="IsoTools\RedumpInteraction.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="FrmAutomatedRedump2IRD.resx">
<DependentUpon>FrmAutomatedRedump2IRD.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<None Include="App.ico" />
<None Include="packages.config" />
<None Include="Resources\DB\ps3.redump.sqlite.db" />
<None Include="Resources\Docs\AutomatedRedump2IRD-LICENSE.txt" />
<None Include="Resources\Docs\AutomatedRedump2IRD-HELP.txt" />
<None Include="Resources\Icons\App.ico" />
<None Include="Resources\Images\Cancel_16x16.png" />
<None Include="Resources\Images\BuildIRDs_32x32.png" />
<None Include="Resources\Images\Exit_32x32.png" />
<None Include="Resources\Images\Help_32x32.png" />
<None Include="Resources\Images\License_32x32.png" />
<None Include="Resources\Images\Log_32x32.png" />
<None Include="Resources\Images\Options_32x32.png" />
<None Include="Resources\Images\SaveLog_32x32.png" />
<None Include="Resources\Images\Toolbar_32x32.png" />
<None Include="Resources\Libs\IsoTools.1.34.9\BouncyCastle.Crypto.dll" />
<None Include="Resources\Libs\IsoTools.1.34.9\CommandLine.dll" />
<None Include="Resources\Libs\IsoTools.1.34.9\DiscUtils.dll" />
<None Include="Resources\Libs\IsoTools.1.34.9\Ionic.Zip.dll" />
<None Include="Resources\Libs\IsoTools.1.34.9\IsoTools.Common.dll" />
<None Include="Resources\Libs\IsoTools.1.34.9\Microsoft.CompilerServices.AsyncTargetingPack.Net4.dll" />
<None Include="Resources\Libs\IsoTools.1.34.9\NUnrar.dll" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\DB\put your databases in this directory.txt" />
<None Include="Resources\Reports\put your reports in this directory.txt" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\IRDs\put your irds in this directory.txt" />
<None Include="Resources\Logs\put your logs in this directory.txt" />
<None Include="Resources\ROMs\put your roms in this directory.txt" />
<None Include="Resources\Tmp\put your tmp files in this directory.txt" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\Images\DB_32x32.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
<Import Project="..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.118.0\build\net40\Stub.System.Data.SQLite.Core.NetFramework.targets" Condition="Exists('..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.118.0\build\net40\Stub.System.Data.SQLite.Core.NetFramework.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>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}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.118.0\build\net40\Stub.System.Data.SQLite.Core.NetFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.118.0\build\net40\Stub.System.Data.SQLite.Core.NetFramework.targets'))" />
</Target>
</Project>

View File

@@ -0,0 +1,231 @@
using System;
using System.Data;
using System.Data.SQLite;
namespace AutomatedRedump2IRD
{
/// <summary>
/// Database SQLite class.
/// </summary>
class DatabaseSQLite
{
#region Constructors
/// <summary>
/// Constructor
/// </summary>
public DatabaseSQLite()
{
//
}
/// <summary>
/// Overloaded Constructor
/// </summary>
/// <param name="strPathDatabaseFile"></param>
public DatabaseSQLite(string strPathDatabaseFile)
{
connectionString = @"Data Source=" + strPathDatabaseFile + "; Version=3";
}
#endregion
#region Fields
/// Connection string
public string connectionString = @"Data Source=dbfile; Version=3";
string sqlSelectAllPS3IRDs = @"SELECT * FROM `ps3_irds`";
string sqlSelectAllPS3ISOs = @"SELECT * FROM `ps3_isos`";
#endregion
#region Update Methods
/// <summary>
/// Update the PS3 IRDs database.
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public bool UpdatePS3IRDs(DataTable dt)
{
using (SQLiteConnection con = new SQLiteConnection(connectionString))
{
con.Open();
SQLiteCommand command = new SQLiteCommand();
command.Connection = con;
command.CommandText = sqlSelectAllPS3IRDs;
SQLiteDataAdapter daPS3IRDs = new SQLiteDataAdapter(command);
SQLiteCommandBuilder scbPS3IRDs = new SQLiteCommandBuilder(daPS3IRDs);
daPS3IRDs.Update(dt);
con.Close();
}
return true;
}
/// <summary>
/// Update the PS3 ISOs database.
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public bool UpdatePS3ISOs(DataTable dt)
{
using (SQLiteConnection con = new SQLiteConnection(connectionString))
{
con.Open();
SQLiteCommand command = new SQLiteCommand();
command.Connection = con;
command.CommandText = sqlSelectAllPS3ISOs;
SQLiteDataAdapter daPS3ISOs = new SQLiteDataAdapter(command);
SQLiteCommandBuilder scbPS3ISOs = new SQLiteCommandBuilder(daPS3ISOs);
daPS3ISOs.Update(dt);
con.Close();
}
return true;
}
#endregion
#region Select Methods
/// <summary>
/// Selects all PS3 IRDs and returns a DataTable.
/// </summary>
/// <returns></returns>
public DataTable SelectAllPS3IRDsDataTable()
{
DataTable dt = new DataTable();
dt.Locale = System.Globalization.CultureInfo.InvariantCulture;
using (SQLiteConnection con = new SQLiteConnection(connectionString))
{
con.Open();
SQLiteCommand command = new SQLiteCommand();
command.Connection = con;
command.CommandText = sqlSelectAllPS3IRDs;
SQLiteDataAdapter daPS3IRDs = new SQLiteDataAdapter(command);
SQLiteCommandBuilder scbPS3IRDs = new SQLiteCommandBuilder(daPS3IRDs);
daPS3IRDs.Fill(dt);
con.Close();
}
return dt;
}
/// <summary>
/// Selects all PS3 ISOs and returns a DataTable.
/// </summary>
/// <returns></returns>
public DataTable SelectAllPS3ISOsDataTable()
{
DataTable dt = new DataTable();
dt.Locale = System.Globalization.CultureInfo.InvariantCulture;
using (SQLiteConnection con = new SQLiteConnection(connectionString))
{
con.Open();
SQLiteCommand command = new SQLiteCommand();
command.Connection = con;
command.CommandText = sqlSelectAllPS3ISOs;
SQLiteDataAdapter daPS3ISOs = new SQLiteDataAdapter(command);
SQLiteCommandBuilder scbPS3ISOs = new SQLiteCommandBuilder(daPS3ISOs);
daPS3ISOs.Fill(dt);
con.Close();
}
return dt;
}
#endregion
#region Insert Methods
/// <summary>
/// Inserts the PS3 ISO into the database.
/// </summary>
/// <param name="arrPS3ISOInfo"></param>
/// <returns></returns>
public bool InsertPS3ISO(string[] arrPS3ISOInfo)
{
using (SQLiteConnection con = new SQLiteConnection(connectionString))
{
con.Open();
SQLiteCommand cmd = new SQLiteCommand();
cmd.Connection = con;
cmd.CommandText = @"INSERT INTO `ps3_isos` (disc_redump_id, disc_dkey, disc_did, disc_dpic, ps3_iso_filename, ps3_iso_size, ps3_iso_crc32, ps3_iso_md5, ps3_iso_sha1) VALUES (@disc_redump_id, @disc_dkey, @disc_did, @disc_dpic, @ps3_iso_filename, @ps3_iso_size, @ps3_iso_crc32, @ps3_iso_md5, @ps3_iso_sha1)";
cmd.Parameters.AddWithValue("@disc_redump_id", arrPS3ISOInfo[0]);
cmd.Parameters.AddWithValue("@disc_dkey", arrPS3ISOInfo[1]);
cmd.Parameters.AddWithValue("@disc_did", arrPS3ISOInfo[2]);
cmd.Parameters.AddWithValue("@disc_dpic", arrPS3ISOInfo[3]);
cmd.Parameters.AddWithValue("@ps3_iso_filename", arrPS3ISOInfo[4]);
cmd.Parameters.AddWithValue("@ps3_iso_size", arrPS3ISOInfo[5]);
cmd.Parameters.AddWithValue("@ps3_iso_crc32", arrPS3ISOInfo[6]);
cmd.Parameters.AddWithValue("@ps3_iso_md5", arrPS3ISOInfo[7]);
cmd.Parameters.AddWithValue("@ps3_iso_sha1", arrPS3ISOInfo[8]);
cmd.ExecuteNonQuery();
con.Close();
}
return true;
}
/// <summary>
/// Inserts the PS3 IRD into the database.
/// </summary>
/// <param name="arrPS3IRDInfo"></param>
/// <returns></returns>
public int InsertPS3IRD(string[] arrPS3IRDInfo)
{
int intIRDID;
using (SQLiteConnection con = new SQLiteConnection(connectionString))
{
con.Open();
SQLiteCommand cmd = new SQLiteCommand();
cmd.Connection = con;
cmd.CommandText = @"INSERT INTO `ps3_irds` (ps3_iso_md5, ps3_ird_filename, ps3_ird_size, ps3_ird_crc32, ps3_ird_md5, ps3_ird_sha1) VALUES (@ps3_iso_md5, @ps3_ird_filename, @ps3_ird_size, @ps3_ird_crc32, @ps3_ird_md5, @ps3_ird_sha1)";
cmd.Parameters.AddWithValue("@ps3_iso_md5", arrPS3IRDInfo[0]);
cmd.Parameters.AddWithValue("@ps3_ird_filename", arrPS3IRDInfo[1]);
cmd.Parameters.AddWithValue("@ps3_ird_size", arrPS3IRDInfo[2]);
cmd.Parameters.AddWithValue("@ps3_ird_crc32", arrPS3IRDInfo[3]);
cmd.Parameters.AddWithValue("@ps3_ird_md5", arrPS3IRDInfo[4]);
cmd.Parameters.AddWithValue("@ps3_ird_sha1", arrPS3IRDInfo[5]);
cmd.ExecuteNonQuery();
intIRDID = (Int32)con.LastInsertRowId;
con.Close();
}
return intIRDID;
}
#endregion
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,232 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="msMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="tsMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>112, 17</value>
</metadata>
<metadata name="ssMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>200, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="tsbCancel.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAKhSURBVDhPlZJdSNNhFMZPQgRFF95kIIS1jCzSbroJu1OL
LgoqpBtTQ52rTd3K6bKJfWh103dRlxUZkqZz6ubUmTOXEGlR1jS1ufyYfeg2m18ZT+f9/6dEdFEv/HgP
55zneT9J7fSpNe1+X+5zP/L+EdGrcfqnNE6fgVLNI9PZljFobV5orGMSIv4bv9dVrEk1v12gg/f7kFkx
iPRH/dCbh1DU8Alp5f3IfjwIZQgRi1xhnQeGeo8UC82hB32g3de7kXznDdTlvfAG5jERXIDqoQuJV7uw
7/ZriaRr3Th6791SXVvxQdLsudENii91IvFiJ5JvdcHrn4MYw5NzOHDzJWKNDmwvbsfeKy8w8GVaqk0E
fyDl7isksGZXmRMUa7Ajjtl4oglJlzrg+TYjNY5MznJTB3aecaB/PCjlxgNz2H+5EwqdTdLEGVpA63Ms
EGzIsyAi24z4kla4v8qriblv7LsUi90llDmwhntEr6xrAEVkmSChlFmdVoVt+Y1wjU5JQjHcvP0dRU1Y
lVq11CfrakDhGdUIz6hBeKbMiiOVUGgb0DMcCMmBgc9BbNVbsTylcqlP0rCWViprIaGqxbL0aigKbHB5
5W27+T56Q+cXx9lyuhmU9kTqlXUmUNixOggo04R1p5rxPiQe4kvcZGxBpJ4NQyaDbBJdbAdlmBB2XOjM
INLwRbBBlNGOgdALuFkcc7YNlFULUpqlmouPIYbHx7VzXFPxopp6NsizcmBBpLEVPd4gRvmpNp93yA1a
rglU9YgqeYqPEzMYn5pHTGk7SM0L82sQ6ZpA/Aco14q1JW1QXHgmGdLJUF4gYs6JWjT/DcphU5HXNbJB
fsssAypgFkUi1v+ByC0ailhoDjf/JCq066jQFiD+Wf+Fzh6kAnvxLyFRu/khQA4QAAAAAElFTkSuQmCC
</value>
</data>
<metadata name="bgwBuildIRDs.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>435, 17</value>
</metadata>
<metadata name="bgwStartupTasks.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>291, 17</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>47</value>
</metadata>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAC2aQAAt2oASrhqAMO4agDruGoA7bhqAO24agDtuGoA7bhqAO24agDtuGoA7bhqAO24agDtuGoA7bhq
AO24agDtuGoA7bhqAO24agDtuGoA7bhqAO24agDtuGoA7bhqAO24agDtuGoA7bhqAO24agDtuGoA6rhq
AMK3agBIt2kAALZoAEa2aAD8tmgA/7ZoAP+2aAD/tmgA/7ZoAP+2aAD/tmgA/7ZoAP+2aAD/tmgA/7Zo
AP+2aAD/tmgA/7ZoAP+2aAD/tmgA/7ZoAP+2aAD/tmgA/7ZoAP+2aAD/tmgA/7ZoAP+2aAD/tmgA/7Zo
AP+2aAD/tmgA/7ZoAPu2aQBDtWcAxbRnAP+0ZgD/tGYA/7RnAP+0ZwD/tGcA/7RnAP+0ZwD/tGcA/7Rn
AP+1ZwD/tGYA/7JiAP+wXgD/sF4A/7BeAP+zZAD/tWcA/7RnAP+0ZwD/tGcA/7RnAP+0ZwD/tGcA/7Rn
AP+0ZwD/tGcA/7RnAP+0ZwD/tGcA/7VnAMGzZQDts2QA/7NlAf+yYQD/r10A/7JjAP+zZQD/s2UA/7Nl
AP+zZQD/smIA/69cAP+xXwD/vnsn/9Ola//fvpP/0aFj/7ZqDf+uWwD/s2MA/7NlAP+zZQD/s2UA/7Nl
AP+zZQD/s2UA/7NlAP+zZQD/s2UA/7NlAP+zZQD/s2UA6rJjAO6yYgD/smMD/968kf/Nmlv/smMF/61Z
AP+vXQD/rlwA/61ZAP+0aA3/zJhZ/+nStv/8+vb/////////////////8+fY/86dYf+wYAH/rlwA/7Jj
AP+yYwD/smMA/7JjAP+yYwD/smMA/7JjAP+yYwD/smMA/7JjAP+yYwDrsGEA7bBgAP+vXgD/8OLP////
///w4dD/1Kh1/758L//Bgzn/2rSI//Tp3P///////////////////////////////////////////+rV
vP++fTL/q1cA/69fAP+wYgD/sGEA/7BhAP+wYQD/sGEA/7BhAP+wYQD/sGEA/7BhAOqvXwDtr14A/65c
AP/t28X//////////////////v79////////////////////////////////////////////////////
//////////////z59v/WrX7/r2AH/6tYAP+vYAD/r2AA/69fAP+vXwD/r18A/69fAP+vXwD/r18A6q1e
AO2tXQD/rFsA/+zbxf//////////////////////////////////////////////////////////////
///////////////////////////////////t3Mf/vHw0/6hTAP+sXAD/rV4A/61eAP+tXgD/rV4A/61e
AP+tXgDqrFwB7axbAP+qWQD/7+DP////////////////////////////////////////////////////
//////////////Lm2P/s2sn/7t3L/+7fzf/v4M//8OLU///////8+fb/0aZ2/6pYAf+pVgD/rFwB/6xc
Af+sXAH/rFwB/6xcAeqqWgPtqlkC/6dUAP/Qo3T/////////////////////////////////////////
////////////////////////5s60/9q2k//buZP/2riR/9q3kP/Vrob/1a2C///+/v//////59C3/7Rs
I/+lUAD/qlkC/6paA/+qWgP/qloD6qlYBO2pWAT/qVcE/6RPAP/Ejlb/9/Do////////////////////
///////////////////////////////////////////////////////////////////VrYT/+PHp////
////////9+/n/8SOVv+mUgD/qVgE/6lYBP+pWATqqFYE7ahWBP+oVwT/p1YD/6JNAP+xaiP/38Kl//38
+v///////////////////////////////////////////////////////////////////////////8eU
YP/TqoL//v38/////////////////8qZaP+jTgD/qFYE/6hWBOqmVAPtplQD/6ZUA/+mVAP/plUD/6NP
AP+jTgD/tnIw/8mYZ//Vr4n/17GM/9Sshf/SqYD/0KV7/86hdf/Lm2z/yJZk/8aSX//GkFz/xY9Z/8OL
VP++g0j/p1YG/6FKAP+5eT3/6NTA////////////0qh//6FLAP+mVAP/plQD6qVTA+2lUwP/pVMD/6VT
A/+lUwP/pVMD/6VSAv+iTQD/oEkA/6BIAP+gSQD/n0gA/59HAP+bQAD/m0EA/6NPAP+pWw7/qVoN/6JO
AP+cQQD/nEMA/6FKAP+kUgH/pVMC/6FKAP+kUQT/yplq/9Gnf/+nVwv/pFEB/6VTA/+lUwPqpFEC7aRR
Av+kUQL/pFEC/6RRAv+kUQL/pFEC/6RRAv+kUQL/pFEC/6RRAv+iTAD/oUsA/72ASf/gw6n/8+nf//r2
8v/69fH/8uba/9y8nv+4dzz/oEgA/6JOAP+kUQL/pFEC/6NPAP+fSAD/n0cA/6NPAP+kUQL/pFEC/6RR
AuqiTwHtok8B/6JPAf+iTwH/ok8B/6JPAf+iTwH/ok8B/6JPAf+jTwH/n0kA/6dXEv/fwqj/////////
///////////////////////////////+/v/YtJP/o1AH/6BLAP+jTwH/ok8B/6JPAf+iTwD/ok8B/6JP
Af+iTwH/ok8B6qNQAu2jUAL/o1AC/6NQAv+jUAL/o1AC/6NQAv+jUAL/o1AD/6FMAP+mVhH/6tfF////
///////////////////////////////////////////////////iyK//o08H/6JOAP+jUAP/o1AC/6NQ
Av+jUAL/o1AC/6NQAv+jUALqplUI7aZVCP+mVQj/plUI/6ZVCP+mVQj/plUI/6ZVCP+mVAf/ok0B/96/
of/////////////////////////////////////////////////////////////////TqoP/oUsA/6ZV
CP+mVQj/plUI/6ZVCP+mVQj/plUI/6ZVCOqqWgvtqloL/6paC/+qWgv/qloL/6paC/+qWgv/qloL/6dU
Av+8fT////////////////////////////////////////////////////////////////////////v4
9P+0bSf/qFYF/6paC/+qWgv/qloL/6paC/+qWgv/qloL6q5gCe2uYAn/rmAJ/65gCf+uYAn/rmAJ/65g
Cf+uYAn/qlcA/928mP/////////////////////////////////z6Nv/9ezh////////////////////
/////////////9KoeP+pVwD/rmAJ/65gCf+uYAn/rmAJ/65gCf+uYAnqs2cH7bNnB/+zZgb/s2cH/7Nn
B/+zZwf/s2cH/7JmBf+yZQX/79/M////////////////////////////27aI/7JlCf+0aRD/4sWg////
////////////////////////5s6v/7BgAP+zZwf/s2cH/7NnB/+zZgb/s2cH/7NnB+q4bgntuW8P/7lx
FP+3bQf/uG4K/7huCv+4bgr/t2wH/7pyEv/27N7///////////////////////r17/+7dBX/tWgB/7Rm
AP/Cgi3//v38///////////////////////u3cb/tmoE/7htCf+4bgr/t20H/7lxE/+5bw//uG4J6r12
Fe2+eBz/w4E7/796I/+9dRX/vXUU/712Fv+8dBP/vngb//Xq2////////////////////////Pr2/8eL
O/+4agP/t2kA/8+aVP///v7//////////////////////+7cxP+7cQ7/vXUT/711FP+/eiL/w4E6/754
HP+9dhXqwn4j7cN/KP/Jikb/yYtI/8eHPP/EgS7/wn4m/8J9Iv/AeRv/7tvD////////////////////
////////8+bU/9SkZP/WqW7/9+3h////////////////////////////5sum/793Gf/EgS3/x4Y7/8mL
R//JikX/w38o/8J+I+rHhi/tyIc0/86STv/Okk//zpNR/86TUP/NkUv/zI5F/8iFM//hvpL/////////
///////////////////////////////////////////////////////////////////cs4H/y4tB/86S
UP/Ok1H/zpJP/86RTf/IhzT/x4Yv6s2ONu3OkDv/1JpW/9SaV//Umlf/1JpY/9SbWP/Um1n/1JlW/9eh
ZP/79vD/////////////////////////////////////////////////////////////////9+3h/9Wc
Wv/Umlf/1JpY/9SaV//Umlj/1JpW/86PPP/Njjbq1Jg97dWZQ//Zo1//2aNg/9mjYP/Zo2D/2aNg/9mj
YP/Zo2D/151X/+fEmP////////////////////////////////////////////////////////////79
/P/juof/2J5Y/9mjYP/Zo2D/2aNg/9mjYf/Zo17/1ZlD/9SYPeraoUru2qJM/96qZv/eq2n/3qto/96r
aP/eq2j/3qto/96raP/eq2j/3Kdg/+3Srf//////////////////////////////////////////////
///+/Pv/6sme/9ymX//eq2j/3qto/96raP/eq2j/3qtp/96qZf/aokz/2qFK6+CrWezgqlj/4a9k/+O0
cv/jtHD/47Rw/+O0cP/jtHD/47Rw/+O0cP/js2//4q9p/+zKmv/68OP/////////////////////////
////////+e3c/+rEkP/ir2j/47Nw/+O0cP/jtHD/47Rw/+O0cf/jtHH/4a9k/+CqWP/gq1np5rRjvea0
Y//mtGL/57ht/+i7dv/ovHf/6Lx3/+i8d//ovHf/6Lx3/+m8d//ovHf/57hv/+m8eP/vzpv/9N67//fm
zP/35sv/89y4/+7Mlv/ou3X/57hw/+m8d//ovHf/6Lx3/+i8d//ovHf/6Lt2/+e4bf/mtGL/5rRj/+a0
Y7rrvm077L9u9ey/bv/rv23/7L9v/+y/b//sv2//7L9v/+y/b//sv2//7L9v/+y/b//sv3D/679u/+q8
af/qu2f/6rxp/+q8aP/qu2f/67xq/+u/bv/sv3D/7L9v/+y/b//sv2//7L9v/+y/b//sv27/679t/+y/
bv/sv2/z675uOO3BcADvxnY68cl6s/LKeuXyyXrr8sl56/LJeevyyXnr8sl56/LJeevyyXnr8sl56/LJ
eevyyXnr8sl56/LJeevyyXnr8sl56/LJeevyyXnr8sl56/LJeevyyXnr8sl56/LJeevyyXnr8sl56/LJ
euvyynrl8cl5su/GdTjtwXAAgAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAE=
</value>
</data>
</root>

View File

@@ -0,0 +1,106 @@
using DiscUtils.Udf;
using IsoTools.Common.Properties;
using IsoTools.Iso9660;
using AutomatedRedump2IRD.IsoTools;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace IsoTools
{
/// <summary>
///
/// </summary>
public class IrdCreateRedumpFile : IrdCreateFile {
private readonly byte[] header_3k3y = Encoding.ASCII.GetBytes("Encrypted 3K ISO");
private readonly byte[] sector_3k3y = new byte[16 + 16 + 16 + 115];
/// <summary>
///
/// </summary>
/// <param name="decrypted"></param>
/// <param name="createIrdFile"></param>
/// <param name="d1"></param>
/// <param name="d2"></param>
/// <param name="pic"></param>
public IrdCreateRedumpFile(bool decrypted, bool createIrdFile, byte[] d1, byte[] d2, byte[] pic) : base(decrypted, createIrdFile) {
System.Diagnostics.Debug.Assert(header_3k3y.Length == 16, "Unexpected header_3k3y size.");
System.Diagnostics.Debug.Assert(d1.Length == 16, "Unexpected d1 size.");
System.Diagnostics.Debug.Assert(d2.Length == 16, "Unexpected d2 size.");
System.Diagnostics.Debug.Assert(pic.Length == 115, "Unexpected pic size.");
// Write the generic 3k3y header inforatmion.
Array.Copy(header_3k3y, sector_3k3y, header_3k3y.Length);
// Write the dynamic 3k3y information.
Array.Copy(d1, 0, sector_3k3y, 16, d1.Length);
Array.Copy(d2, 0, sector_3k3y, 32, d2.Length);
Array.Copy(pic, 0, sector_3k3y, 48, pic.Length);
}
/// <summary>
///
/// </summary>
/// <returns></returns>
protected override async Task<bool> CheckIfValid() {
// Get the ps3 header from the iso.
byte[] ps3_header = null;
using (Stream iso_stream = this.Open()) {
long ps3_header_size = 0;
PS3CDReader ps3_cd_reader = new PS3CDReader(iso_stream);
ICollection<DirectoryMemberInformation> members = ps3_cd_reader.Members;
List<DirectoryMemberInformation> list = (
from d in members
where d.IsFile
select d).Distinct<DirectoryMemberInformation>().ToList<DirectoryMemberInformation>();
ps3_header_size = list.First<DirectoryMemberInformation>().StartSector * 2048;
// Note: The full ps3_header_size isn't needed, the IRD's "Header" seems to always be smaller than 0>StartSector, but can't find why (from code seems to write all, so why IrdViewer is missing some)...
if (ps3_header_size == 0)
return false;
ps3_header = new byte[ps3_header_size];
iso_stream.Seek(0, SeekOrigin.Begin);
if (iso_stream.Read(ps3_header, 0, (int)ps3_header_size) != ps3_header_size)
return false;
}
// Modify the header with the d1/d2/key information at the 3k3y location (0xF70), and write it to the temporary Redump2IRD.exe.header file.
string tmp_header_info_file = new Uri(System.Reflection.Assembly.GetEntryAssembly().GetName().CodeBase + ".ps3-header-only.iso").LocalPath;
if (File.Exists(tmp_header_info_file))
File.Delete(tmp_header_info_file);
Array.Copy(sector_3k3y, 0, ps3_header, 0xF70, sector_3k3y.Length);
File.WriteAllBytes(tmp_header_info_file, ps3_header);
// Analayze the "header" file above so we can get correct information.
IsoCryptoClass isoCryptoClass = new IsoCryptoClass();
if (await isoCryptoClass.AnalyseISO(tmp_header_info_file) && isoCryptoClass.IsEncrypted) {
FileInfo fileInfo = new FileInfo(base.Path);
base.Regions = isoCryptoClass.Regions;
base.EndOfDataSector = (long)base.Regions.Last<Region>().End;
base.TotalSectors = (long)((uint)(fileInfo.Length / (long)2048));
File.Delete(tmp_header_info_file);
this.IsValid = true;
return true;
}
File.Delete(tmp_header_info_file);
this.IsValid = false;
return false;
}
/// <summary>
///
/// </summary>
/// <returns></returns>
protected override Stream Open() {
return new RedumpFileStream(base.Path, FileMode.Open, FileAccess.Read, sector_3k3y);
}
}
}

View File

@@ -0,0 +1,52 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
namespace AutomatedRedump2IRD.IsoTools {
/// <summary>
///
/// </summary>
public class RedumpFileStream : FileStream {
private const long size_3k3y_ = 16 + 16 + 16 + 115;
private const long start_3k3y_ = 0xF70;
private const long end_3k3y_ = start_3k3y_ + size_3k3y_;
private byte[] sec_3k3y_;
/// <summary>
///
/// </summary>
/// <param name="path"></param>
/// <param name="mode"></param>
/// <param name="access"></param>
/// <param name="sec_3k3y"></param>
public RedumpFileStream(string path, FileMode mode, FileAccess access, byte[] sec_3k3y) : base(path, mode, access) {
System.Diagnostics.Debug.Assert(sec_3k3y.Length == size_3k3y_, "Unexpected sec3k3y size.");
sec_3k3y_ = sec_3k3y;
}
/// <summary>
///
/// </summary>
/// <param name="array"></param>
/// <param name="offset"></param>
/// <param name="count"></param>
/// <returns></returns>
public override int Read(byte[] array, int offset, int count) {
int ret = base.Read(array, offset, count);
// Check if the read has data inside our 3k3y sector, if so copy the memory over.
if (base.Position >= start_3k3y_ && base.Position - ret <= end_3k3y_) {
long start_position_of_read = base.Position - ret;
long offset_of_3k3y_sector = start_position_of_read <= start_3k3y_ ? 0 : start_position_of_read - start_3k3y_;
long offset_of_3k3y_in_array = offset + (start_position_of_read >= start_3k3y_ ? 0 : start_3k3y_ - start_position_of_read);
Array.Copy(sec_3k3y_, offset_of_3k3y_sector, array, offset_of_3k3y_in_array, Math.Min(array.Length - offset_of_3k3y_in_array, size_3k3y_ - offset_of_3k3y_sector));
// TODO: array.Length - offset_of_3k3y_in_array is over-estimate, we can copy less...
// Could be some off-by-1 errors above for edge cases?
}
return ret;
}
}
}

View File

@@ -0,0 +1,76 @@
using IsoTools;
using System;
using System.IO;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace AutomatedRedump2IRD {
internal class RedumpInteraction : EmptyInteraction {
private readonly Timer progress_timer_ = null;
private readonly ProgressBar progress_bar_ = null;
private readonly RichTextBox output_ = null;
private int progress_ = 0;
public string pathIRDFileName_ = String.Empty;
public string pathISOFileName_ = String.Empty;
public RedumpInteraction(ProgressBar progress_bar, RichTextBox output, string pathIRDFileName, string pathISOFileName) {
progress_bar_ = progress_bar;
output_ = output;
pathIRDFileName_ = pathIRDFileName;
pathISOFileName_ = pathISOFileName;
progress_timer_ = new Timer();
progress_timer_.Interval = 200;
progress_timer_.Tick += new EventHandler(ProgressTimerTick);
progress_timer_.Start();
}
private string ird_output_inital_dir_ = String.Empty;
public override Task<string> GetIrdOutputFile(string inputFile)
{
ird_output_inital_dir_ = Path.GetDirectoryName(pathIRDFileName_);
return TaskEx.FromResult<string>(pathIRDFileName_);
}
private string iso_file_inital_dir_ = String.Empty;
public override Task<string[]> GetIsoFile(bool verify = false, bool multiple = true)
{
iso_file_inital_dir_ = Path.GetDirectoryName(pathISOFileName_);
return TaskEx.FromResult<string[]>(new string[] { pathISOFileName_ });
}
public override void ReportMessage(string message, ReportType reportType) {
if (output_ != null)
output_.Invoke((Action)(() => { output_.AppendText("Info: " + message + Environment.NewLine); }));
}
public override void ReportProgress(int progress) {
if (progress != -1)
progress_ = progress;
if (progress_bar_ != null)
progress_bar_.Invoke((Action)(() => { progress_bar_.Value = progress_; }));
}
public override void SetProgressMaximum(int max) {
if (progress_bar_ != null)
progress_bar_.Invoke((Action)(() => { progress_bar_.Maximum = max; }));
}
public override void TaskBegin(TaskType taskType) {
progress_ = 0;
if (progress_timer_ != null)
progress_timer_.Start();
if (progress_bar_ != null)
progress_bar_.Invoke((Action)(() => { progress_bar_.Value = progress_; }));
}
public override void TaskComplete() {
if (progress_timer_ != null)
progress_timer_.Stop();
}
private void ProgressTimerTick(object sender, EventArgs e) {
if (progress_bar_ != null)
progress_bar_.Value = progress_;
}
}
}

View File

@@ -0,0 +1,22 @@
using System;
using System.Windows.Forms;
namespace AutomatedRedump2IRD
{
/// <summary>
/// The main Program class.
/// </summary>
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new FrmAutomatedRedump2IRD());
}
}
}

View File

@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Automated Redump 2 IRD")]
[assembly: AssemblyDescription("The Original Automated IRD Builder")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Automated Redump 2 IRD")]
[assembly: AssemblyProduct("Automated Redump 2 IRD")]
[assembly: AssemblyCopyright("Copyright (c) 2016-2025 Automated Redump 2 IRD - All Rights Reserved")]
[assembly: AssemblyTrademark("Automated Redump 2 IRD - The Original Automated IRD Builder")]
[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("4535930b-6f1d-43c5-b661-3cb8a8332f07")]
// 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("0.0.8")]
[assembly: AssemblyFileVersion("0.0.8")]

View File

@@ -0,0 +1,213 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace AutomatedRedump2IRD.Properties {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AutomatedRedump2IRD.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Looks up a localized string similar to ------------------------------------------------------------------
///Automated Redump 2 IRD - Help version 20240906
///Copyright (c) 2016-2024 Automated Redump 2 IRD - All Rights Reserved
///------------------------------------------------------------------
///
///[I] About
///[II] Requirements
///[III] Installation
///[IV] How To Build IRDs
///[V] FAQ
///[VI] Contributing
///[VII] Contact
///[VIII] Disclaimers
///
///[I] About
///----------
///Automated Redump 2 IRD, or AR2I is The Original Automated IRD Builder.
///
///Automated Redump 2 I [rest of string was truncated]&quot;;.
/// </summary>
internal static string AutomatedRedump2IRD_HELP {
get {
return ResourceManager.GetString("AutomatedRedump2IRD_HELP", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to ***************************************************************
///Automated Redump 2 IRD - License version 20240906
///Copyright (c) 2016-2024 Automated Redump 2 IRD
///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. Automated Redump [rest of string was truncated]&quot;;.
/// </summary>
internal static string AutomatedRedump2IRD_LICENSE {
get {
return ResourceManager.GetString("AutomatedRedump2IRD_LICENSE", resourceCulture);
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap BuildIRDs_32x32 {
get {
object obj = ResourceManager.GetObject("BuildIRDs_32x32", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Cancel_16x16 {
get {
object obj = ResourceManager.GetObject("Cancel_16x16", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap DB_32x32 {
get {
object obj = ResourceManager.GetObject("DB_32x32", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Exit_32x32 {
get {
object obj = ResourceManager.GetObject("Exit_32x32", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Help_32x32 {
get {
object obj = ResourceManager.GetObject("Help_32x32", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap License_32x32 {
get {
object obj = ResourceManager.GetObject("License_32x32", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Log_32x32 {
get {
object obj = ResourceManager.GetObject("Log_32x32", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Options_32x32 {
get {
object obj = ResourceManager.GetObject("Options_32x32", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap SaveLog_32x32 {
get {
object obj = ResourceManager.GetObject("SaveLog_32x32", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Toolbar_32x32 {
get {
object obj = ResourceManager.GetObject("Toolbar_32x32", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
}
}

View File

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

Binary file not shown.

View File

@@ -0,0 +1 @@
This file can be deleted.

View File

@@ -0,0 +1,105 @@
------------------------------------------------------------------
Automated Redump 2 IRD - Help version 20250731
Copyright (c) 2016-2025 Automated Redump 2 IRD - All Rights Reserved
------------------------------------------------------------------
[I] About
[II] Requirements
[III] Installation
[IV] How To Build IRDs
[V] FAQ
[VI] Contributing
[VII] Contact
[VIII] Disclaimers
[I] About
----------
Automated Redump 2 IRD, or AR2I is The Original Automated IRD Builder.
Automated Redump 2 IRD builds all the IRDs for all of the ISO files and Zipped ISO files in a directory recursively, using information from an SQLite DB.
The SQLite database can be viewed and edited directly from the app, allowing you to add IRDs and ISOs to the database.
IRDs cannot be built for ROMs with nonmatching titles. Please use a ROM manager to rename your ROMs to match the correct title in the DB.
IRDs are named using the MD5 hash value of the Redump ISO, enabling you to colect the IRDs in the IRDs folder.
[II] Requirements
------------------
This app does not ship with the following necessary IsoTools Libraries, which are distributed with IsoTools.
* DiscUtils.dll
* Ionic.Zip.dll
* IsoTools.Common.dll
* Microsoft.CompilerServices.AsyncTargetingPack.Net4.dll
Place these libraries in the program folder with the AutomatedRedump2IRD.exe file.
IsoTools appears to have been discontinued. We do not know where to find the necessary libraries.
[III] Installation
-----------------
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.
Place the IsoTools libraries into the program folder with the AutomatedRedump2IRD.exe file.
I like to put my installation in a directory called AR2I on my C:\ drive. My installation layout looks like this:
C:\AR2I\DB\
C:\AR2I\IRDs\
C:\AR2I\Logs\
C:\AR2I\ROMs\
C:\AR2I\Tmp\
C:\AR2I\AutomatedRedump2IRD.exe
C:\AR2I\DiscUtils.dll
C:\AR2I\Ionic.Zip.dll
C:\AR2I\IsoTools.Common.dll
C:\AR2I\Microsoft.CompilerServices.AsyncTargetingPack.Net4.dll
[IV] How to Build IRDs
--------------------------------
* If you have an account at Automated Redump 2 IRD, set your username and password by editing the Options from the GUI. This will allow you to send IRDs to the database.
* Rename your ROMs using a ROM manager to match the Redump DB you are using.
* Place your Redump DB file in the DB directory, or set the path to it.
* Set the other paths and options as needed.
* Click one of the Build IRDs buttons.
[V] FAQ
---------
Q1) I didn't read or follow the instructions in the help file and I can't get this software to work properly. Can you help?
A1) No.
Q2) Why do I keep getting errors about path and file lengths?
A2) Obviously, you chose an installation path that is too long. This won't happen if you follow the installation instructions. Please read the Installation Section again and this time follow the instructions.
Q3) I appear to be blocked from some or all databases, or appear to be blocked from using this software. What gives?
A3) There are way too many reasons why this may or may not be happening. One example might be that you are using a blacklisted or abusive host, which may be blocked by some networks. In many cases, the network filtering may also be completely out of anyone's control.
Q4) Why can't this software find matches based on ROM hashes? My ROMs are not named according to the Redump datafile that corresponds to the matching SQLite DB.
A4) This software is designed to be used specifically for the Redump database. Finding matches using this info takes a fraction of a second. Finding matches based on hash values could take many days to find a SINGLE match and build a SINGLE IRD. Using hash values to find matches would defy all common sense.
[VI] 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
[VII] Contact
----------------
GitEmAll: https://gitemall.devemall.int.eu.org/TommySalami/AutomatedRedump2IRD
[VIII] Disclaimers
----------------
We do not upload, share, distribute or provide links to anything illegal, including ROMs or patches.

View File

@@ -0,0 +1,40 @@
***************************************************************
Automated Redump 2 IRD - License version 20250731
Copyright (c) 2016-2025 Automated Redump 2 IRD
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. Automated Redump 2 IRD 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 Automated Redump 2 IRD 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 AUTOMATED REDUMP 2 IRD
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 AUTOMATED REDUMP
2 IRD 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.

View File

@@ -0,0 +1 @@
This file can be deleted.

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 933 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1 @@
This file can be deleted.

View File

@@ -0,0 +1 @@
This file can be deleted.

View File

@@ -0,0 +1 @@
This file can be deleted.

Binary file not shown.

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Stub.System.Data.SQLite.Core.NetFramework" version="1.0.118.0" targetFramework="net40" />
<package id="System.Data.SQLite.Core" version="1.0.118.0" targetFramework="net40" />
</packages>

29
CHANGELOG.md Normal file
View File

@@ -0,0 +1,29 @@
Version 0.0.8 - 2025-07-31
* Update repository info and related URLs
* Minor changes
Version 0.0.7 - 2024-09-06
* New repository created and URLs fixed
* Minor changes
Version 0.0.6 - 2023-06-12
* Add SQLite DB browser
Version 0.0.5 - 2023-05-27
* Fix GUI SQLite DB file selector
* Fix some cross threading issues with 2 way data binding
* Update all documentation
* Minor code changes
Version 0.0.4 - 2023-04-30
* Add CHANGELOG file
Version 0.0.3 - 2023-00-00
* Update to .NET Framework 4.8
* Initial release

127
CODE_OF_CONDUCT.md Normal file
View File

@@ -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.

25
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,25 @@
# @AutomatedRedump2IRD
### The Original Automated IRD Builder
## 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/AutomatedRedump2IRD](https://gitemall.devemall.int.eu.org/TommySalami/AutomatedRedump2IRD "GitEmAll")
---
###### Copyright (c) 2016-2025 Automated Redump 2 IRD - All Rights Reserved v2025-07-31-00

40
LICENSE Normal file
View File

@@ -0,0 +1,40 @@
***************************************************************
Automated Redump 2 IRD - License version 20250731
Copyright (c) 2016-2025 Automated Redump 2 IRD
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. Automated Redump 2 IRD 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 Automated Redump 2 IRD 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 AUTOMATED REDUMP 2 IRD
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 AUTOMATED REDUMP
2 IRD 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.

59
README.md Normal file
View File

@@ -0,0 +1,59 @@
# @AutomatedRedump2IRD
### The Original Automated IRD Builder
## About
Automated Redump 2 IRD, or AR2I is The Original Automated IRD Builder.
Automated Redump 2 IRD builds all the IRDs for all of the ISO files and Zipped ISO files in a directory recursively, using information from an SQLite DB.
The SQLite database can be viewed and edited directly from the app, allowing you to add IRDs and ISOs to the database.
IRDs cannot be built for ROMs with nonmatching titles. Please use a ROM manager to rename your ROMs to match the correct title in the DB.
IRDs are named using the MD5 hash value of the Redump ISO, enabling you to collect the IRDs in the IRDs folder.
## Dependencies
.NET Framework 4
The following NuGet Packages are required to build a Debug and/or Release version of this app:
* System.Data.SQLite.Core
This app does not ship with the following necessary IsoTools Libraries, which are distributed with IsoTools.
* DiscUtils.dll
* Ionic.Zip.dll
* IsoTools.Common.dll
* Microsoft.CompilerServices.AsyncTargetingPack.Net4.dll
Place these libraries in the AutomatedRedump2IRD/Resources/Libs/IsoTools.1.34.9 project folder.
IsoTools appears to have been discontinued. We do not know where to find the necessary libraries.
## Projects
* AutomatedRedump2IRD - Windows Forms App
* AutomatedRedump2IRD-Release - Release Project
## How to Build IRDs
* If you have an account at Automated Redump 2 IRD, set your username and password by editing the Options from the GUI. This will allow you to send IRDs to the database.
* Rename your ROMs using a ROM manager to match the Redump DB you are using.
* Place your Redump DB file in the DB directory, or set the path to it.
* Set the other paths and options as needed.
* Click one of the Build IRDs buttons.
## 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/AutomatedRedump2IRD](https://gitemall.devemall.int.eu.org/TommySalami/AutomatedRedump2IRD "GitEmAll")
---
###### Copyright (c) 2016-2025 Automated Redump 2 IRD - All Rights Reserved v2025-07-31-00

5
TODO.md Normal file
View File

@@ -0,0 +1,5 @@
### To Do
* Nothing to do
### Completed Tasks
* Develop initial release