Skip to content

Commit 4c33b76

Browse files
committed
Common separation
Preps for standalone archive utilities
1 parent 04ca28e commit 4c33b76

File tree

540 files changed

+3219
-2387
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

540 files changed

+3219
-2387
lines changed

Archive/Archive.cpp

+210
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,210 @@
1+
#include <Common/Standard.h>
2+
#include <Common/Types.h>
3+
4+
#include <Common/Archive/Archive.h>
5+
6+
#include <Common/Misc/BlowFish.h>
7+
8+
#include <Common/Utility/FileUtility.h>
9+
10+
using namespace Nippon;
11+
12+
I32 main(I32 Argc, char** Argv)
13+
{
14+
if (std::strcmp("PrintToC", Argv[1]) == 0)
15+
{
16+
std::vector<U8> archiveData = FileUtility::ReadBinary(Argv[2]);
17+
18+
BlowFish::Create(OKAMI_CIPHER_KEY);
19+
BlowFish::Decrypt(archiveData);
20+
21+
Archive archive;
22+
23+
archive.Deserialize(archiveData);
24+
archive.PrintTableOfContent([](char const* Message) { std::printf(Message); });
25+
}
26+
27+
if (std::strcmp("PrintOfType", Argv[1]) == 0)
28+
{
29+
std::vector<U8> archiveData = FileUtility::ReadBinary(Argv[2]);
30+
31+
BlowFish::Create(OKAMI_CIPHER_KEY);
32+
BlowFish::Decrypt(archiveData);
33+
34+
Archive archive;
35+
36+
archive.Deserialize(archiveData);
37+
archive.PrintOfType([](char const* Message) { std::printf(Message); }, Argv[3]);
38+
}
39+
40+
if (std::strcmp("Extract", Argv[1]) == 0)
41+
{
42+
std::vector<U8> archiveData = FileUtility::ReadBinary(Argv[2]);
43+
44+
BlowFish::Create(OKAMI_CIPHER_KEY);
45+
BlowFish::Decrypt(archiveData);
46+
47+
Archive archive;
48+
49+
archive.Deserialize(archiveData);
50+
archive.ExtractToDisk(Argv[3]);
51+
52+
std::printf("\n");
53+
std::printf("Done\n");
54+
std::printf("\n");
55+
}
56+
57+
if (std::strcmp("Unfold", Argv[1]) == 0)
58+
{
59+
std::vector<U8> archiveData = FileUtility::ReadBinary(Argv[2]);
60+
61+
BlowFish::Create(OKAMI_CIPHER_KEY);
62+
BlowFish::Decrypt(archiveData);
63+
64+
Archive archive;
65+
66+
archive.Deserialize(archiveData);
67+
archive.UnfoldToDisk(Argv[3]);
68+
69+
std::printf("\n");
70+
std::printf("Done\n");
71+
std::printf("\n");
72+
}
73+
74+
if (std::strcmp("ModifyByType", Argv[1]) == 0)
75+
{
76+
std::vector<U8> archiveData = FileUtility::ReadBinary(Argv[2]);
77+
std::vector<U8> targetData = FileUtility::ReadBinary(Argv[4]);
78+
79+
BlowFish::Create(OKAMI_CIPHER_KEY);
80+
BlowFish::Decrypt(archiveData);
81+
82+
Archive archive;
83+
84+
archive.Deserialize(archiveData);
85+
86+
std::vector<Archive*> targetArchives = archive.FindArchivesByType(Argv[3]);
87+
88+
if (targetArchives.size())
89+
{
90+
for (Archive* targetArchive : targetArchives)
91+
{
92+
targetArchive->SetData(targetData.data(), targetData.size());
93+
94+
archiveData = archive.Serialize();
95+
96+
BlowFish::Encrypt(archiveData);
97+
98+
FileUtility::WriteBinary(Argv[2], archiveData);
99+
}
100+
101+
std::printf("\n");
102+
std::printf("Done\n");
103+
std::printf("\n");
104+
}
105+
else
106+
{
107+
std::printf("\n");
108+
std::printf("Cannot find any archives\n");
109+
std::printf("\n");
110+
}
111+
}
112+
113+
if (std::strcmp("ModifyByName", Argv[1]) == 0)
114+
{
115+
std::vector<U8> archiveData = FileUtility::ReadBinary(Argv[2]);
116+
std::vector<U8> targetData = FileUtility::ReadBinary(Argv[4]);
117+
118+
BlowFish::Create(OKAMI_CIPHER_KEY);
119+
BlowFish::Decrypt(archiveData);
120+
121+
Archive archive;
122+
123+
archive.Deserialize(archiveData);
124+
125+
if (Archive* targetArchive = archive.FindArchiveByName(Argv[3]))
126+
{
127+
targetArchive->SetData(targetData.data(), targetData.size());
128+
129+
archiveData = archive.Serialize();
130+
131+
BlowFish::Encrypt(archiveData);
132+
133+
FileUtility::WriteBinary(Argv[2], archiveData);
134+
135+
std::printf("\n");
136+
std::printf("Done\n");
137+
std::printf("\n");
138+
}
139+
else
140+
{
141+
std::printf("\n");
142+
std::printf("Cannot find archive name\n");
143+
std::printf("\n");
144+
}
145+
}
146+
147+
if (std::strcmp("ModifyByTypeAndName", Argv[1]) == 0)
148+
{
149+
std::vector<U8> archiveData = FileUtility::ReadBinary(Argv[2]);
150+
std::vector<U8> targetData = FileUtility::ReadBinary(Argv[4]);
151+
152+
BlowFish::Create(OKAMI_CIPHER_KEY);
153+
BlowFish::Decrypt(archiveData);
154+
155+
Archive archive;
156+
157+
archive.Deserialize(archiveData);
158+
159+
if (Archive* targetArchive = archive.FindArchiveByTypeAndName(Argv[3], Argv[4]))
160+
{
161+
targetArchive->SetData(targetData.data(), targetData.size());
162+
163+
archiveData = archive.Serialize();
164+
165+
BlowFish::Encrypt(archiveData);
166+
167+
FileUtility::WriteBinary(Argv[2], archiveData);
168+
169+
std::printf("\n");
170+
std::printf("Done\n");
171+
std::printf("\n");
172+
}
173+
else
174+
{
175+
std::printf("\n");
176+
std::printf("Cannot find archive name\n");
177+
std::printf("\n");
178+
}
179+
}
180+
181+
if (std::strcmp("Help", Argv[1]) == 0)
182+
{
183+
std::printf("\n");
184+
std::printf("Usage:\n");
185+
std::printf("\n");
186+
std::printf(" Archive [Command] [Arguments]\n");
187+
std::printf("\n");
188+
std::printf("Commands:\n");
189+
std::printf(" PrintToC [Archive(Str)] Print the table of content\n");
190+
std::printf(" PrintOfType [Archive(Str)] [Type(Str)] Print all entries of type\n");
191+
std::printf(" Extract [Archive(Str)] [Folder(Str)] Extract an archive to disk\n");
192+
std::printf(" Unfold [Archive(Str)] [Folder(Str)] Unfold an archive to disk\n");
193+
std::printf(" ModifyByType [Archive(Str)] [Type(Str)] [File(Str)] Modify all archives of type with the content of a file\n");
194+
std::printf(" ModifyByName [Archive(Str)] [Name(Str)] [File(Str)] Modify an archive entry by name with the content of a file\n");
195+
std::printf(" ModifyByTypeAndName [Archive(Str)] [Type(Str)] [Name(Str)] [File(Str)] Modify an archive entry by type and name with the content of a file\n");
196+
std::printf(" Help Print this help message\n");
197+
std::printf("\n");
198+
std::printf("Examples:\n");
199+
std::printf(" Archive PrintToC \"r301.dat\"\n");
200+
std::printf(" Archive PrintOfType \"r301.dat\" \"DDS\"\n");
201+
std::printf(" Archive Extract \"r301.dat\" \"r301\"\n");
202+
std::printf(" Archive Unfold \"r301.dat\" \"r301\"\n");
203+
std::printf(" Archive ModifyByType \"r301.dat\" \"DDS\" \"example.dds\"\n");
204+
std::printf(" Archive ModifyByName \"r301.dat\" \"hyouzan\" \"example.dds\"\n");
205+
std::printf(" Archive ModifyByTypeAndName \"r301.dat\" \"DDS\" \"hyouzan\" \"example.dds\"\n");
206+
std::printf("\n");
207+
}
208+
209+
return 0;
210+
}

Archive/Archive.vcxproj

+147
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<ItemGroup Label="ProjectConfigurations">
4+
<ProjectConfiguration Include="Debug|Win32">
5+
<Configuration>Debug</Configuration>
6+
<Platform>Win32</Platform>
7+
</ProjectConfiguration>
8+
<ProjectConfiguration Include="Release|Win32">
9+
<Configuration>Release</Configuration>
10+
<Platform>Win32</Platform>
11+
</ProjectConfiguration>
12+
<ProjectConfiguration Include="Debug|x64">
13+
<Configuration>Debug</Configuration>
14+
<Platform>x64</Platform>
15+
</ProjectConfiguration>
16+
<ProjectConfiguration Include="Release|x64">
17+
<Configuration>Release</Configuration>
18+
<Platform>x64</Platform>
19+
</ProjectConfiguration>
20+
</ItemGroup>
21+
<PropertyGroup Label="Globals">
22+
<VCProjectVersion>17.0</VCProjectVersion>
23+
<Keyword>Win32Proj</Keyword>
24+
<ProjectGuid>{e4c8f9ba-3a08-4510-9848-dca8ff38a229}</ProjectGuid>
25+
<RootNamespace>Archive</RootNamespace>
26+
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
27+
</PropertyGroup>
28+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
29+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
30+
<ConfigurationType>Application</ConfigurationType>
31+
<UseDebugLibraries>true</UseDebugLibraries>
32+
<PlatformToolset>v143</PlatformToolset>
33+
<CharacterSet>Unicode</CharacterSet>
34+
</PropertyGroup>
35+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
36+
<ConfigurationType>Application</ConfigurationType>
37+
<UseDebugLibraries>false</UseDebugLibraries>
38+
<PlatformToolset>v143</PlatformToolset>
39+
<WholeProgramOptimization>true</WholeProgramOptimization>
40+
<CharacterSet>Unicode</CharacterSet>
41+
</PropertyGroup>
42+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
43+
<ConfigurationType>Application</ConfigurationType>
44+
<UseDebugLibraries>true</UseDebugLibraries>
45+
<PlatformToolset>v143</PlatformToolset>
46+
<CharacterSet>Unicode</CharacterSet>
47+
</PropertyGroup>
48+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
49+
<ConfigurationType>Application</ConfigurationType>
50+
<UseDebugLibraries>false</UseDebugLibraries>
51+
<PlatformToolset>v143</PlatformToolset>
52+
<WholeProgramOptimization>true</WholeProgramOptimization>
53+
<CharacterSet>Unicode</CharacterSet>
54+
</PropertyGroup>
55+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
56+
<ImportGroup Label="ExtensionSettings">
57+
</ImportGroup>
58+
<ImportGroup Label="Shared">
59+
</ImportGroup>
60+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
61+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
62+
</ImportGroup>
63+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
64+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
65+
</ImportGroup>
66+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
67+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
68+
</ImportGroup>
69+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
70+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
71+
</ImportGroup>
72+
<PropertyGroup Label="UserMacros" />
73+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
74+
<IncludePath>$(SolutionDir);$(ProjectDir);$(IncludePath)</IncludePath>
75+
<LibraryPath>$(SolutionDir)$(IntDir);$(LibraryPath)</LibraryPath>
76+
</PropertyGroup>
77+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
78+
<IncludePath>$(SolutionDir);$(ProjectDir);$(IncludePath)</IncludePath>
79+
<LibraryPath>$(SolutionDir)$(IntDir);$(LibraryPath)</LibraryPath>
80+
</PropertyGroup>
81+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
82+
<ClCompile>
83+
<WarningLevel>Level3</WarningLevel>
84+
<SDLCheck>true</SDLCheck>
85+
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
86+
<ConformanceMode>true</ConformanceMode>
87+
</ClCompile>
88+
<Link>
89+
<SubSystem>Console</SubSystem>
90+
<GenerateDebugInformation>true</GenerateDebugInformation>
91+
</Link>
92+
</ItemDefinitionGroup>
93+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
94+
<ClCompile>
95+
<WarningLevel>Level3</WarningLevel>
96+
<FunctionLevelLinking>true</FunctionLevelLinking>
97+
<IntrinsicFunctions>true</IntrinsicFunctions>
98+
<SDLCheck>true</SDLCheck>
99+
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
100+
<ConformanceMode>true</ConformanceMode>
101+
</ClCompile>
102+
<Link>
103+
<SubSystem>Console</SubSystem>
104+
<EnableCOMDATFolding>true</EnableCOMDATFolding>
105+
<OptimizeReferences>true</OptimizeReferences>
106+
<GenerateDebugInformation>true</GenerateDebugInformation>
107+
</Link>
108+
</ItemDefinitionGroup>
109+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
110+
<ClCompile>
111+
<WarningLevel>Level3</WarningLevel>
112+
<SDLCheck>true</SDLCheck>
113+
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
114+
<ConformanceMode>true</ConformanceMode>
115+
<LanguageStandard>stdcpplatest</LanguageStandard>
116+
</ClCompile>
117+
<Link>
118+
<SubSystem>Console</SubSystem>
119+
<GenerateDebugInformation>true</GenerateDebugInformation>
120+
<AdditionalDependencies>Common.lib;%(AdditionalDependencies)</AdditionalDependencies>
121+
</Link>
122+
</ItemDefinitionGroup>
123+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
124+
<ClCompile>
125+
<WarningLevel>Level3</WarningLevel>
126+
<FunctionLevelLinking>true</FunctionLevelLinking>
127+
<IntrinsicFunctions>true</IntrinsicFunctions>
128+
<SDLCheck>true</SDLCheck>
129+
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
130+
<ConformanceMode>true</ConformanceMode>
131+
<LanguageStandard>stdcpplatest</LanguageStandard>
132+
</ClCompile>
133+
<Link>
134+
<SubSystem>Console</SubSystem>
135+
<EnableCOMDATFolding>true</EnableCOMDATFolding>
136+
<OptimizeReferences>true</OptimizeReferences>
137+
<GenerateDebugInformation>true</GenerateDebugInformation>
138+
<AdditionalDependencies>Common.lib;%(AdditionalDependencies)</AdditionalDependencies>
139+
</Link>
140+
</ItemDefinitionGroup>
141+
<ItemGroup>
142+
<ClCompile Include="Archive.cpp" />
143+
</ItemGroup>
144+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
145+
<ImportGroup Label="ExtensionTargets">
146+
</ImportGroup>
147+
</Project>

Archive/Archive.vcxproj.filters

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<ItemGroup>
4+
<Filter Include="Source Files">
5+
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
6+
<Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
7+
</Filter>
8+
<Filter Include="Header Files">
9+
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
10+
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
11+
</Filter>
12+
<Filter Include="Resource Files">
13+
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
14+
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
15+
</Filter>
16+
</ItemGroup>
17+
<ItemGroup>
18+
<ClCompile Include="Archive.cpp">
19+
<Filter>Source Files</Filter>
20+
</ClCompile>
21+
</ItemGroup>
22+
</Project>

0 commit comments

Comments
 (0)