Skip to content

Commit 3a4e8aa

Browse files
authored
Merge branch 'praydog:master' into master
2 parents 8081888 + 072979b commit 3a4e8aa

174 files changed

Lines changed: 11991 additions & 115 deletions

File tree

Some content is hidden

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

.github/workflows/build-pr.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ jobs:
77
runs-on: windows-latest
88
strategy:
99
matrix:
10-
target: [RE2, RE2_TDB66, RE3, RE3_TDB67, RE4, RE7, RE7_TDB49, RE8, DMC5, MHRISE, SF6, DD2, MHWILDS, PRAGMATA, MHSTORIES3]
10+
target: [RE2, RE2_TDB66, RE3, RE3_TDB67, RE4, RE7, RE7_TDB49, RE8, RE9, DMC5, MHRISE, SF6, DD2, MHWILDS, PRAGMATA, MHSTORIES3]
1111
steps:
1212
- name: Checkout
1313
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683

.github/workflows/dev-release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ jobs:
4545
runs-on: windows-latest
4646
strategy:
4747
matrix:
48-
target: [RE2, RE2_TDB66, RE3, RE3_TDB67, RE4, RE7, RE7_TDB49, RE8, DMC5, MHRISE, SF6, DD2, MHWILDS, PRAGMATA, MHSTORIES3]
48+
target: [RE2, RE2_TDB66, RE3, RE3_TDB67, RE4, RE7, RE7_TDB49, RE8, RE9, DMC5, MHRISE, SF6, DD2, MHWILDS, PRAGMATA, MHSTORIES3]
4949
steps:
5050
- name: Checkout
5151
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683

CMakeLists.txt

Lines changed: 3176 additions & 2 deletions
Large diffs are not rendered by default.

cmake.toml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ REF_BUILD_SF6_SDK = false
6363
REF_BUILD_DD2_SDK = false
6464
REF_BUILD_MHWILDS_SDK = false
6565
REF_BUILD_MHSTORIES3_SDK = false
66+
REF_BUILD_RE9_SDK = false
6667
REF_BUILD_PRAGMATA_SDK = false
6768
REF_BUILD_FRAMEWORK = { value = true }
6869
REF_BUILD_DEPENDENCIES = { value = true }
@@ -84,6 +85,7 @@ build-sf6-sdk = "REF_BUILD_SF6_SDK OR REF_BUILD_FRAMEWORK"
8485
build-dd2-sdk = "REF_BUILD_DD2_SDK OR REF_BUILD_FRAMEWORK"
8586
build-mhwilds-sdk = "REF_BUILD_MHWILDS_SDK OR REF_BUILD_FRAMEWORK"
8687
build-mhstories3-sdk = "REF_BUILD_MHSTORIES3_SDK OR REF_BUILD_FRAMEWORK"
88+
build-re9-sdk = "REF_BUILD_RE9_SDK OR REF_BUILD_FRAMEWORK"
8789
build-pragmata-sdk = "REF_BUILD_PRAGMATA_SDK OR REF_BUILD_FRAMEWORK"
8890
build-framework-dependencies = "REF_BUILD_DEPENDENCIES AND CMAKE_SIZEOF_VOID_P EQUAL 8"
8991

@@ -209,7 +211,7 @@ tag = "v1.34.10"
209211

210212
[fetch-content.kananlib]
211213
git = "https://github.com/cursey/kananlib"
212-
tag = "522aa45e28ae03c3bc7e8064c4c46749ccc5f222"
214+
tag = "17cf2fdc7963a118684ece852a09e525305b3fae"
213215

214216
[target.utility]
215217
type = "static"
@@ -404,6 +406,14 @@ condition = "build-mhstories3-sdk"
404406
[target.MHSTORIES3]
405407
type = "game"
406408

409+
[target.RE9SDK]
410+
type = "sdk"
411+
compile-definitions = ["RE9", "REENGINE_PACKED", "REENGINE_AT"]
412+
condition = "build-re9-sdk"
413+
414+
[target.RE9]
415+
type = "game"
416+
407417
[target.PRAGMATASDK]
408418
type = "sdk"
409419
compile-definitions = ["PRAGMATA", "REENGINE_PACKED", "REENGINE_AT"]

csharp-api/CMakeLists.txt

Lines changed: 67 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,10 @@ check_dlls_exist("dd2" "${DD2_DLLS}" "REFRAMEWORK_REF_ASSEMBLIES_EXIST_DD2")
131131
set(MHWILDS_DLLS "REFramework.NET._System.Private.CoreLib.dll;REFramework.NET.application.dll;REFramework.NET.viacore.dll")
132132
check_dlls_exist("mhwilds" "${MHWILDS_DLLS}" "REFRAMEWORK_REF_ASSEMBLIES_EXIST_MHWILDS")
133133

134+
# RE9
135+
set(RE9_DLLS "REFramework.NET._System.Private.CoreLib.dll;REFramework.NET.application.dll;REFramework.NET.viacore.dll")
136+
check_dlls_exist("re9" "${RE9_DLLS}" "REFRAMEWORK_REF_ASSEMBLIES_EXIST_RE9")
137+
134138
# Define a list of NuGet packages and their versions
135139
# the last part, the package framework will only be used for copying the files
136140
set(REFRAMEWORK_NUGET_PACKAGES
@@ -157,6 +161,7 @@ set(REFCoreDeps_SOURCES
157161
"REFCoreDeps/Compiler.cs"
158162
"REFCoreDeps/GarbageCollectionDisplay.cs"
159163
"REFCoreDeps/HashHelper.cs"
164+
"REFCoreDeps/PipeServer.cs"
160165
cmake.toml
161166
)
162167

@@ -181,7 +186,7 @@ set_target_properties(REFCoreDeps PROPERTIES
181186
DOTNET_SDK
182187
Microsoft.NET.Sdk
183188
DOTNET_TARGET_FRAMEWORK
184-
net8.0-windows
189+
net10.0-windows
185190
VS_CONFIGURATION_TYPE
186191
ClassLibrary
187192
)
@@ -221,6 +226,7 @@ set(csharp-api_SOURCES
221226
"REFrameworkNET/Attributes/MethodHook.hpp"
222227
"REFrameworkNET/Attributes/Plugin.hpp"
223228
"REFrameworkNET/Callbacks.hpp"
229+
"REFrameworkNET/Collections.hpp"
224230
"REFrameworkNET/Field.hpp"
225231
"REFrameworkNET/IObject.hpp"
226232
"REFrameworkNET/IProxyable.hpp"
@@ -292,7 +298,7 @@ set_target_properties(csharp-api PROPERTIES
292298
COMMON_LANGUAGE_RUNTIME
293299
netcore
294300
DOTNET_TARGET_FRAMEWORK
295-
net8.0-windows
301+
net10.0-windows
296302
VS_GLOBAL_EnableManagedPackageReferenceSupport
297303
true
298304
VS_GLOBAL_ConcurrentGarbageCollection
@@ -362,7 +368,7 @@ set_target_properties(AssemblyGenerator PROPERTIES
362368
DOTNET_SDK
363369
Microsoft.NET.Sdk
364370
DOTNET_TARGET_FRAMEWORK
365-
net8.0-windows
371+
net10.0-windows
366372
VS_CONFIGURATION_TYPE
367373
ClassLibrary
368374
)
@@ -405,7 +411,7 @@ if(REFRAMEWORK_REF_ASSEMBLIES_EXIST_DD2) # build-csharp-test-dd2
405411
DOTNET_SDK
406412
Microsoft.NET.Sdk
407413
DOTNET_TARGET_FRAMEWORK
408-
net8.0-windows
414+
net10.0-windows
409415
VS_CONFIGURATION_TYPE
410416
ClassLibrary
411417
)
@@ -446,7 +452,7 @@ if(REFRAMEWORK_REF_ASSEMBLIES_EXIST_RE2) # build-csharp-test-re2
446452
DOTNET_SDK
447453
Microsoft.NET.Sdk
448454
DOTNET_TARGET_FRAMEWORK
449-
net8.0-windows
455+
net10.0-windows
450456
VS_CONFIGURATION_TYPE
451457
ClassLibrary
452458
)
@@ -487,7 +493,7 @@ if(REFRAMEWORK_REF_ASSEMBLIES_EXIST_RE4) # build-csharp-test-re4
487493
DOTNET_SDK
488494
Microsoft.NET.Sdk
489495
DOTNET_TARGET_FRAMEWORK
490-
net8.0-windows
496+
net10.0-windows
491497
VS_CONFIGURATION_TYPE
492498
ClassLibrary
493499
)
@@ -528,7 +534,7 @@ if(REFRAMEWORK_REF_ASSEMBLIES_EXIST_MHWILDS) # build-csharp-test-mhwilds
528534
DOTNET_SDK
529535
Microsoft.NET.Sdk
530536
DOTNET_TARGET_FRAMEWORK
531-
net8.0-windows
537+
net10.0-windows
532538
VS_CONFIGURATION_TYPE
533539
ClassLibrary
534540
)
@@ -537,23 +543,64 @@ if(REFRAMEWORK_REF_ASSEMBLIES_EXIST_MHWILDS) # build-csharp-test-mhwilds
537543
set_dotnet_references(CSharpAPITestMHWilds "mhwilds" "${MHWILDS_DLLS}")
538544

539545
endif()
540-
# Target: CSharpAPITestMHWildsWebAPI
546+
# Target: CSharpAPITestWebAPI
541547
if(REFRAMEWORK_REF_ASSEMBLIES_EXIST_MHWILDS) # build-csharp-test-mhwilds
542-
set(CSharpAPITestMHWildsWebAPI_SOURCES
543-
"test/Test/TestMHWildsWebAPI.cs"
548+
set(CSharpAPITestWebAPI_SOURCES
549+
"test/Test/TestWebAPI.cs"
550+
cmake.toml
551+
)
552+
553+
add_library(CSharpAPITestWebAPI SHARED)
554+
555+
target_sources(CSharpAPITestWebAPI PRIVATE ${CSharpAPITestWebAPI_SOURCES})
556+
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${CSharpAPITestWebAPI_SOURCES})
557+
558+
target_link_libraries(CSharpAPITestWebAPI PUBLIC
559+
csharp-api
560+
)
561+
562+
set_target_properties(CSharpAPITestWebAPI PROPERTIES
563+
RUNTIME_OUTPUT_DIRECTORY_RELEASE
564+
"${CMAKE_BINARY_DIR}/bin/"
565+
RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO
566+
"${CMAKE_BINARY_DIR}/bin"
567+
RUNTIME_OUTPUT_DIRECTORY_DEBUG
568+
"${CMAKE_BINARY_DIR}/bin"
569+
LIBRARY_OUTPUT_DIRECTORY_RELEASE
570+
"${CMAKE_BINARY_DIR}/lib"
571+
LIBRARY_OUTPUT_DIRECTORY_RELWITHDEBINFO
572+
"${CMAKE_BINARY_DIR}/lib"
573+
LIBRARY_OUTPUT_DIRECTORY_DEBUG
574+
"${CMAKE_BINARY_DIR}/lib"
575+
DOTNET_SDK
576+
Microsoft.NET.Sdk
577+
DOTNET_TARGET_FRAMEWORK
578+
net10.0-windows
579+
VS_CONFIGURATION_TYPE
580+
ClassLibrary
581+
)
582+
583+
set(CMKR_TARGET CSharpAPITestWebAPI)
584+
set_dotnet_references(CSharpAPITestWebAPI "mhwilds" "${MHWILDS_DLLS}")
585+
586+
endif()
587+
# Target: CSharpAPITestRE9
588+
if(REFRAMEWORK_REF_ASSEMBLIES_EXIST_RE9) # build-csharp-test-re9
589+
set(CSharpAPITestRE9_SOURCES
590+
"test/Test/TestRE9.cs"
544591
cmake.toml
545592
)
546593

547-
add_library(CSharpAPITestMHWildsWebAPI SHARED)
594+
add_library(CSharpAPITestRE9 SHARED)
548595

549-
target_sources(CSharpAPITestMHWildsWebAPI PRIVATE ${CSharpAPITestMHWildsWebAPI_SOURCES})
550-
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${CSharpAPITestMHWildsWebAPI_SOURCES})
596+
target_sources(CSharpAPITestRE9 PRIVATE ${CSharpAPITestRE9_SOURCES})
597+
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${CSharpAPITestRE9_SOURCES})
551598

552-
target_link_libraries(CSharpAPITestMHWildsWebAPI PUBLIC
599+
target_link_libraries(CSharpAPITestRE9 PUBLIC
553600
csharp-api
554601
)
555602

556-
set_target_properties(CSharpAPITestMHWildsWebAPI PROPERTIES
603+
set_target_properties(CSharpAPITestRE9 PROPERTIES
557604
RUNTIME_OUTPUT_DIRECTORY_RELEASE
558605
"${CMAKE_BINARY_DIR}/bin/"
559606
RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO
@@ -569,13 +616,13 @@ if(REFRAMEWORK_REF_ASSEMBLIES_EXIST_MHWILDS) # build-csharp-test-mhwilds
569616
DOTNET_SDK
570617
Microsoft.NET.Sdk
571618
DOTNET_TARGET_FRAMEWORK
572-
net8.0-windows
619+
net10.0-windows
573620
VS_CONFIGURATION_TYPE
574621
ClassLibrary
575622
)
576623

577-
set(CMKR_TARGET CSharpAPITestMHWildsWebAPI)
578-
set_dotnet_references(CSharpAPITestMHWildsWebAPI "mhwilds" "${MHWILDS_DLLS}")
624+
set(CMKR_TARGET CSharpAPITestRE9)
625+
set_dotnet_references(CSharpAPITestRE9 "re9" "${RE9_DLLS}")
579626

580627
endif()
581628
# Target: CSharpAPITestDMC5
@@ -610,7 +657,7 @@ if(REFRAMEWORK_REF_ASSEMBLIES_EXIST_DMC5) # build-csharp-test-dmc5
610657
DOTNET_SDK
611658
Microsoft.NET.Sdk
612659
DOTNET_TARGET_FRAMEWORK
613-
net8.0-windows
660+
net10.0-windows
614661
VS_CONFIGURATION_TYPE
615662
ClassLibrary
616663
)
@@ -651,7 +698,7 @@ if(REFRAMEWORK_REF_ASSEMBLIES_EXIST_RE2) # build-csharp-test-re2
651698
DOTNET_SDK
652699
Microsoft.NET.Sdk
653700
DOTNET_TARGET_FRAMEWORK
654-
net8.0-windows
701+
net10.0-windows
655702
VS_CONFIGURATION_TYPE
656703
ClassLibrary
657704
)

csharp-api/REFCoreDeps/Compiler.cs

Lines changed: 60 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections.Generic;
33
using System.Collections.Immutable;
4+
using System.Diagnostics;
45
using System.IO;
56
using System.Linq;
67
using System.Reflection;
@@ -13,6 +14,9 @@ namespace REFrameworkNET
1314
{
1415
public class Compiler
1516
{
17+
/// <summary>Set by host to forward errors to REFramework's log.</summary>
18+
public static Action<string> OnCompileError { get; set; }
19+
1620
public class DynamicAssemblyBytecode {
1721
public byte[] Bytecode {
1822
get;
@@ -41,7 +45,21 @@ static public byte[] Compile(string filepath, Assembly executingAssembly, List<A
4145

4246
foreach (var diagnostic in failures)
4347
{
44-
Console.Error.WriteLine("{0}: {1}", diagnostic.Id, diagnostic.GetMessage());
48+
string msg;
49+
var lineSpan = diagnostic.Location.GetMappedLineSpan();
50+
if (lineSpan.IsValid)
51+
{
52+
var pos = lineSpan.StartLinePosition;
53+
msg = $"{lineSpan.Path}({pos.Line + 1},{pos.Character + 1}): {diagnostic.Id}: {diagnostic.GetMessage()}";
54+
}
55+
else
56+
{
57+
msg = $"{diagnostic.Id}: {diagnostic.GetMessage()}";
58+
}
59+
60+
Console.Error.WriteLine(msg);
61+
62+
try { OnCompileError?.Invoke(msg); } catch { }
4563
}
4664

4765
return null;
@@ -144,11 +162,50 @@ public static List<PortableExecutableReference> GenerateExhaustiveMetadataRefere
144162
return referencesStr.Select(r => MetadataReference.CreateFromFile(r)).ToList();
145163
}
146164

165+
private static readonly Dictionary<string, string> s_gameAliases = new(StringComparer.OrdinalIgnoreCase)
166+
{
167+
{ "MonsterHunterWilds", "MHWILDS" },
168+
{ "DevilMayCry5", "DMC5" },
169+
{ "StreetFighter6", "SF6" },
170+
{ "DD2", "DD2" },
171+
};
172+
173+
private static List<string> GetGamePreprocessorSymbols()
174+
{
175+
var symbols = new List<string> { "REFRAMEWORK" };
176+
177+
try
178+
{
179+
var exePath = Process.GetCurrentProcess().MainModule.FileName;
180+
var exeName = Path.GetFileNameWithoutExtension(exePath);
181+
182+
// Always define the exe name (uppercased, non-alphanumeric stripped)
183+
var normalized = new string(exeName.Where(c => char.IsLetterOrDigit(c) || c == '_').ToArray()).ToUpperInvariant();
184+
if (normalized.Length > 0 && !char.IsDigit(normalized[0]))
185+
symbols.Add(normalized);
186+
187+
// Known short aliases
188+
if (s_gameAliases.TryGetValue(exeName, out var alias) && alias != normalized)
189+
symbols.Add(alias);
190+
191+
Console.WriteLine($"[Compiler] Preprocessor symbols: {string.Join(", ", symbols)}");
192+
}
193+
catch (Exception ex)
194+
{
195+
Console.WriteLine($"[Compiler] Failed to detect game for preprocessor symbols: {ex.Message}");
196+
}
197+
198+
return symbols;
199+
}
200+
147201
private static CSharpCompilation GenerateCode(string sourceCode, string filePath, Assembly executingAssembly, List<Assembly> deps)
148202
{
149203
var codeString = SourceText.From(sourceCode);
150-
var options = CSharpParseOptions.Default.WithLanguageVersion(LanguageVersion.CSharp12);
151-
var parsedSyntaxTree = SyntaxFactory.ParseSyntaxTree(codeString, options);
204+
var symbols = GetGamePreprocessorSymbols();
205+
var options = CSharpParseOptions.Default
206+
.WithLanguageVersion(LanguageVersion.CSharp12)
207+
.WithPreprocessorSymbols(symbols);
208+
var parsedSyntaxTree = SyntaxFactory.ParseSyntaxTree(codeString, options, path: filePath);
152209

153210
var references = GenerateExhaustiveMetadataReferences(executingAssembly, deps);
154211

0 commit comments

Comments
 (0)