Skip to content

Commit b09cb68

Browse files
authored
Merge branch 'praydog:master' into master
2 parents 77cf8ac + 2f75948 commit b09cb68

39 files changed

Lines changed: 3531 additions & 209 deletions

CMakeLists.txt

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,12 +163,12 @@ FetchContent_Declare(bddisasm
163163
)
164164
FetchContent_MakeAvailable(bddisasm)
165165

166-
message(STATUS "Fetching kananlib (17cf2fdc7963a118684ece852a09e525305b3fae)...")
166+
message(STATUS "Fetching kananlib (c2081707cd50da11b8304deb529d18c88d46ba7a)...")
167167
FetchContent_Declare(kananlib
168168
GIT_REPOSITORY
169169
"https://github.com/cursey/kananlib"
170170
GIT_TAG
171-
17cf2fdc7963a118684ece852a09e525305b3fae
171+
c2081707cd50da11b8304deb529d18c88d46ba7a
172172
)
173173
FetchContent_MakeAvailable(kananlib)
174174

@@ -2399,6 +2399,8 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework
23992399
"src/mods/Camera.hpp"
24002400
"src/mods/DeveloperTools.cpp"
24012401
"src/mods/DeveloperTools.hpp"
2402+
"src/mods/FaultyFileDetector.cpp"
2403+
"src/mods/FaultyFileDetector.hpp"
24022404
"src/mods/FirstPerson.cpp"
24032405
"src/mods/FirstPerson.hpp"
24042406
"src/mods/FreeCam.cpp"
@@ -2601,6 +2603,8 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework
26012603
"src/mods/Camera.hpp"
26022604
"src/mods/DeveloperTools.cpp"
26032605
"src/mods/DeveloperTools.hpp"
2606+
"src/mods/FaultyFileDetector.cpp"
2607+
"src/mods/FaultyFileDetector.hpp"
26042608
"src/mods/FirstPerson.cpp"
26052609
"src/mods/FirstPerson.hpp"
26062610
"src/mods/FreeCam.cpp"
@@ -4722,6 +4726,8 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework
47224726
"src/mods/Camera.hpp"
47234727
"src/mods/DeveloperTools.cpp"
47244728
"src/mods/DeveloperTools.hpp"
4729+
"src/mods/FaultyFileDetector.cpp"
4730+
"src/mods/FaultyFileDetector.hpp"
47254731
"src/mods/FirstPerson.cpp"
47264732
"src/mods/FirstPerson.hpp"
47274733
"src/mods/FreeCam.cpp"
@@ -4924,6 +4930,8 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework
49244930
"src/mods/Camera.hpp"
49254931
"src/mods/DeveloperTools.cpp"
49264932
"src/mods/DeveloperTools.hpp"
4933+
"src/mods/FaultyFileDetector.cpp"
4934+
"src/mods/FaultyFileDetector.hpp"
49274935
"src/mods/FirstPerson.cpp"
49284936
"src/mods/FirstPerson.hpp"
49294937
"src/mods/FreeCam.cpp"
@@ -5126,6 +5134,8 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework
51265134
"src/mods/Camera.hpp"
51275135
"src/mods/DeveloperTools.cpp"
51285136
"src/mods/DeveloperTools.hpp"
5137+
"src/mods/FaultyFileDetector.cpp"
5138+
"src/mods/FaultyFileDetector.hpp"
51295139
"src/mods/FirstPerson.cpp"
51305140
"src/mods/FirstPerson.hpp"
51315141
"src/mods/FreeCam.cpp"
@@ -8208,6 +8218,8 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework
82088218
"src/mods/Camera.hpp"
82098219
"src/mods/DeveloperTools.cpp"
82108220
"src/mods/DeveloperTools.hpp"
8221+
"src/mods/FaultyFileDetector.cpp"
8222+
"src/mods/FaultyFileDetector.hpp"
82118223
"src/mods/FirstPerson.cpp"
82128224
"src/mods/FirstPerson.hpp"
82138225
"src/mods/FreeCam.cpp"
@@ -8410,6 +8422,8 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework
84108422
"src/mods/Camera.hpp"
84118423
"src/mods/DeveloperTools.cpp"
84128424
"src/mods/DeveloperTools.hpp"
8425+
"src/mods/FaultyFileDetector.cpp"
8426+
"src/mods/FaultyFileDetector.hpp"
84138427
"src/mods/FirstPerson.cpp"
84148428
"src/mods/FirstPerson.hpp"
84158429
"src/mods/FreeCam.cpp"
@@ -9573,6 +9587,8 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework
95739587
"src/mods/Camera.hpp"
95749588
"src/mods/DeveloperTools.cpp"
95759589
"src/mods/DeveloperTools.hpp"
9590+
"src/mods/FaultyFileDetector.cpp"
9591+
"src/mods/FaultyFileDetector.hpp"
95769592
"src/mods/FirstPerson.cpp"
95779593
"src/mods/FirstPerson.hpp"
95789594
"src/mods/FreeCam.cpp"
@@ -10734,6 +10750,8 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework
1073410750
"src/mods/Camera.hpp"
1073510751
"src/mods/DeveloperTools.cpp"
1073610752
"src/mods/DeveloperTools.hpp"
10753+
"src/mods/FaultyFileDetector.cpp"
10754+
"src/mods/FaultyFileDetector.hpp"
1073710755
"src/mods/FirstPerson.cpp"
1073810756
"src/mods/FirstPerson.hpp"
1073910757
"src/mods/FreeCam.cpp"
@@ -11897,6 +11915,8 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework
1189711915
"src/mods/Camera.hpp"
1189811916
"src/mods/DeveloperTools.cpp"
1189911917
"src/mods/DeveloperTools.hpp"
11918+
"src/mods/FaultyFileDetector.cpp"
11919+
"src/mods/FaultyFileDetector.hpp"
1190011920
"src/mods/FirstPerson.cpp"
1190111921
"src/mods/FirstPerson.hpp"
1190211922
"src/mods/FreeCam.cpp"
@@ -13060,6 +13080,8 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework
1306013080
"src/mods/Camera.hpp"
1306113081
"src/mods/DeveloperTools.cpp"
1306213082
"src/mods/DeveloperTools.hpp"
13083+
"src/mods/FaultyFileDetector.cpp"
13084+
"src/mods/FaultyFileDetector.hpp"
1306313085
"src/mods/FirstPerson.cpp"
1306413086
"src/mods/FirstPerson.hpp"
1306513087
"src/mods/FreeCam.cpp"
@@ -14223,6 +14245,8 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework
1422314245
"src/mods/Camera.hpp"
1422414246
"src/mods/DeveloperTools.cpp"
1422514247
"src/mods/DeveloperTools.hpp"
14248+
"src/mods/FaultyFileDetector.cpp"
14249+
"src/mods/FaultyFileDetector.hpp"
1422614250
"src/mods/FirstPerson.cpp"
1422714251
"src/mods/FirstPerson.hpp"
1422814252
"src/mods/FreeCam.cpp"
@@ -15386,6 +15410,8 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework
1538615410
"src/mods/Camera.hpp"
1538715411
"src/mods/DeveloperTools.cpp"
1538815412
"src/mods/DeveloperTools.hpp"
15413+
"src/mods/FaultyFileDetector.cpp"
15414+
"src/mods/FaultyFileDetector.hpp"
1538915415
"src/mods/FirstPerson.cpp"
1539015416
"src/mods/FirstPerson.hpp"
1539115417
"src/mods/FreeCam.cpp"
@@ -16549,6 +16575,8 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework
1654916575
"src/mods/Camera.hpp"
1655016576
"src/mods/DeveloperTools.cpp"
1655116577
"src/mods/DeveloperTools.hpp"
16578+
"src/mods/FaultyFileDetector.cpp"
16579+
"src/mods/FaultyFileDetector.hpp"
1655216580
"src/mods/FirstPerson.cpp"
1655316581
"src/mods/FirstPerson.hpp"
1655416582
"src/mods/FreeCam.cpp"
@@ -17712,6 +17740,8 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework
1771217740
"src/mods/Camera.hpp"
1771317741
"src/mods/DeveloperTools.cpp"
1771417742
"src/mods/DeveloperTools.hpp"
17743+
"src/mods/FaultyFileDetector.cpp"
17744+
"src/mods/FaultyFileDetector.hpp"
1771517745
"src/mods/FirstPerson.cpp"
1771617746
"src/mods/FirstPerson.hpp"
1771717747
"src/mods/FreeCam.cpp"
@@ -18875,6 +18905,8 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework
1887518905
"src/mods/Camera.hpp"
1887618906
"src/mods/DeveloperTools.cpp"
1887718907
"src/mods/DeveloperTools.hpp"
18908+
"src/mods/FaultyFileDetector.cpp"
18909+
"src/mods/FaultyFileDetector.hpp"
1887818910
"src/mods/FirstPerson.cpp"
1887918911
"src/mods/FirstPerson.hpp"
1888018912
"src/mods/FreeCam.cpp"

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,12 @@ Supports both DirectX 11 and DirectX 12.
5151
* Resident Evil 4
5252
* Resident Evil 7
5353
* Resident Evil Village
54+
* Resident Evil Requiem
5455
* Devil May Cry 5
5556
* Street Fighter 6
5657
* Monster Hunter Rise
5758
* Monster Hunter Wilds
59+
* Monster Hunter Stories 3
5860
* Dragon's Dogma 2
5961
* Ghosts 'n Goblins Resurrection (Using `RE8` build)
6062
* Apollo Justice: Ace Attorney Trilogy (Using `DD2` build)

cmake.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ tag = "v1.34.10"
211211

212212
[fetch-content.kananlib]
213213
git = "https://github.com/cursey/kananlib"
214-
tag = "17cf2fdc7963a118684ece852a09e525305b3fae"
214+
tag = "c2081707cd50da11b8304deb529d18c88d46ba7a"
215215

216216
[target.utility]
217217
type = "static"

csharp-api/AssemblyGenerator/ClassGenerator.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,11 @@ public class PseudoProperty {
4444

4545
// Collection types → ICollection
4646
["System.Collections.Generic.ICollection"] = ("REFrameworkNET.Collections.ICollection", 1),
47-
["System.Collections.Generic.HashSet"] = ("REFrameworkNET.Collections.ICollection", 1),
47+
["System.Collections.Generic.HashSet"] = ("REFrameworkNET.Collections.ISet", 1),
4848
["System.Collections.Generic.LinkedList"] = ("REFrameworkNET.Collections.ICollection", 1),
4949
["System.Collections.Generic.Queue"] = ("REFrameworkNET.Collections.IReadOnlyCollection", 1),
5050
["System.Collections.Generic.Stack"] = ("REFrameworkNET.Collections.IReadOnlyCollection", 1),
51+
["System.Collections.Generic.SortedSet"] = ("REFrameworkNET.Collections.ISet", 1),
5152

5253
// Dictionary types → IDictionary
5354
["System.Collections.Generic.Dictionary"] = ("REFrameworkNET.Collections.IDictionary", 2),

csharp-api/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,8 @@ set(csharp-api_SOURCES
213213
"REFrameworkNET/PluginLoadContext.cpp"
214214
"REFrameworkNET/PluginManager.cpp"
215215
"REFrameworkNET/Proxy.cpp"
216+
"REFrameworkNET/Resource.cpp"
217+
"REFrameworkNET/ResourceManager.cpp"
216218
"REFrameworkNET/SystemString.cpp"
217219
"REFrameworkNET/TDB.cpp"
218220
"REFrameworkNET/TypeDefinition.cpp"
@@ -246,6 +248,8 @@ set(csharp-api_SOURCES
246248
"REFrameworkNET/PluginManager.hpp"
247249
"REFrameworkNET/Property.hpp"
248250
"REFrameworkNET/Proxy.hpp"
251+
"REFrameworkNET/Resource.hpp"
252+
"REFrameworkNET/ResourceManager.hpp"
249253
"REFrameworkNET/SystemString.hpp"
250254
"REFrameworkNET/TDB.hpp"
251255
"REFrameworkNET/TypeDefinition.hpp"

csharp-api/REFCoreDeps/PipeServer.cs

Lines changed: 40 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@ static void ServerLoop()
154154
pipe = null; // prevent finally from disposing
155155
var clientThread = new Thread(() => {
156156
try { HandleClient(clientPipe, token); }
157+
catch (Exception ex) { Console.WriteLine("[PipeServer] Client error: " + ex.Message); }
157158
finally { try { clientPipe.Dispose(); } catch { } }
158159
}) { IsBackground = true, Name = "PipeServer.Client" };
159160
clientThread.Start();
@@ -178,46 +179,54 @@ static void ServerLoop()
178179

179180
static void HandleClient(NamedPipeServerStream pipe, CancellationToken token)
180181
{
181-
using var reader = new StreamReader(pipe, s_utf8NoBom, detectEncodingFromByteOrderMarks: false, leaveOpen: true);
182-
using var writer = new StreamWriter(pipe, s_utf8NoBom, leaveOpen: true) { AutoFlush = true };
182+
var reader = new StreamReader(pipe, s_utf8NoBom, detectEncodingFromByteOrderMarks: false, leaveOpen: true);
183+
var writer = new StreamWriter(pipe, s_utf8NoBom, leaveOpen: true) { AutoFlush = true };
183184

184-
while (!token.IsCancellationRequested && pipe.IsConnected)
185+
try
185186
{
186-
string line;
187-
try
188-
{
189-
line = reader.ReadLine();
190-
}
191-
catch
187+
while (!token.IsCancellationRequested && pipe.IsConnected)
192188
{
193-
break; // pipe broken
194-
}
189+
string line;
190+
try
191+
{
192+
line = reader.ReadLine();
193+
}
194+
catch
195+
{
196+
break; // pipe broken
197+
}
195198

196-
if (line == null) break; // client disconnected
199+
if (line == null) break; // client disconnected
197200

198-
line = line.Trim();
199-
if (line.Length == 0) continue;
201+
line = line.Trim();
202+
if (line.Length == 0) continue;
200203

201-
string response;
202-
try
203-
{
204-
response = DispatchRequest(line);
205-
}
206-
catch (Exception ex)
207-
{
208-
response = JsonSerializer.Serialize(new { id = 0, error = ex.Message });
209-
}
204+
string response;
205+
try
206+
{
207+
response = DispatchRequest(line);
208+
}
209+
catch (Exception ex)
210+
{
211+
response = JsonSerializer.Serialize(new { id = 0, error = ex.Message });
212+
}
210213

211-
try
212-
{
213-
writer.WriteLine(response);
214-
pipe.Flush();
215-
}
216-
catch
217-
{
218-
break; // pipe broken
214+
try
215+
{
216+
writer.WriteLine(response);
217+
pipe.Flush();
218+
}
219+
catch
220+
{
221+
break; // pipe broken
222+
}
219223
}
220224
}
225+
finally
226+
{
227+
try { writer.Dispose(); } catch { }
228+
try { reader.Dispose(); } catch { }
229+
}
221230

222231
Console.WriteLine("[PipeServer] Client disconnected");
223232
}

csharp-api/REFrameworkNET/API.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,4 +209,16 @@ System::String^ REFrameworkNET::API::GetPluginDirectory(System::Reflection::Asse
209209
}
210210

211211
return nullptr;
212+
}
213+
214+
REFrameworkNET::ResourceManager^ REFrameworkNET::API::GetResourceManager() {
215+
if (s_api == nullptr) {
216+
throw gcnew APINotInitializedException();
217+
}
218+
219+
auto mgr = s_api->resource_manager();
220+
if (mgr == nullptr) {
221+
return nullptr;
222+
}
223+
return gcnew REFrameworkNET::ResourceManager((REFrameworkResourceManagerHandle)mgr);
212224
}

csharp-api/REFrameworkNET/API.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include "ManagedSingleton.hpp"
1313
#include "NativeSingleton.hpp"
1414
#include "NativeObject.hpp"
15+
#include "ResourceManager.hpp"
1516

1617
#include "Callbacks.hpp"
1718
#include "Collections.hpp"
@@ -43,6 +44,7 @@ public ref class API
4344

4445
static reframework::API* GetNativeImplementation();
4546
static REFrameworkNET::TDB^ GetTDB();
47+
static REFrameworkNET::ResourceManager^ GetResourceManager();
4648

4749
static System::Collections::Generic::List<REFrameworkNET::ManagedSingleton^>^ GetManagedSingletons();
4850
static System::Collections::Generic::List<REFrameworkNET::NativeSingleton^>^ GetNativeSingletons();
@@ -92,6 +94,7 @@ public ref class API
9294
// Pass your own assembly, e.g. API.GetPluginDirectory(typeof(MyPlugin).Assembly)
9395
static System::String^ GetPluginDirectory(System::Reflection::Assembly^ assembly);
9496

97+
9598
protected:
9699
void Init_Internal(const REFrameworkPluginInitializeParam* param);
97100

csharp-api/REFrameworkNET/Collections.hpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,15 @@ public interface class IReadOnlyList {
5151
IEnumerator<T>^ GetEnumerator();
5252
};
5353

54+
generic <typename T>
55+
public interface class ISet {
56+
property int Count { int get(); }
57+
bool Add(T item);
58+
void Clear();
59+
bool Contains(T item);
60+
bool Remove(T item);
61+
IEnumerator<T>^ GetEnumerator();
62+
};
5463
generic <typename TKey, typename TValue>
5564
public interface class IDictionary {
5665
property int Count { int get(); }

0 commit comments

Comments
 (0)