Skip to content

Commit 07f4b8f

Browse files
authored
Merge pull request #1066 from alextremblay/project-silverfish
Project silverfish
2 parents 1a6cdbc + e145df1 commit 07f4b8f

File tree

3 files changed

+178
-0
lines changed

3 files changed

+178
-0
lines changed

assets/Changelog.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ Added custom game configurations for Psychonauts 2 ([UE4SS #731](https://github.
4545

4646
Added custom game configurations for Lies of P ([UE4SS #787](https://github.com/UE4SS-RE/RE-UE4SS/pull/787))
4747

48+
Added custom game configurations for Project Silverfish ([UE4SS #1066](https://github.com/UE4SS-RE/RE-UE4SS/pull/1066))
49+
4850
The GUI can now be rendered in the game thread if `RenderMode` in UE4SS-settings.ini is set to
4951
`EngineTick` or `GameViewportClientTick` ([UE4SS #768](https://github.com/UE4SS-RE/RE-UE4SS/pull/768), [UE4SS #794](https://github.com/UE4SS-RE/RE-UE4SS/pull/794)).
5052

Lines changed: 169 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,169 @@
1+
[Overrides]
2+
; Path to the 'Mods' folder
3+
; Default: <dll_directory>/Mods
4+
ModsFolderPath =
5+
6+
[General]
7+
; Whether to reload all mods when the key defined by HotReloadKey is hit.
8+
; Default: 1
9+
EnableHotReloadSystem = 1
10+
11+
; The key that will trigger a reload of all mods.
12+
; The CTRL key is always required.
13+
; Valid values (case-insensitive): Anything from Mods/Keybinds/Scripts/main.lua
14+
; Default: R
15+
HotReloadKey = R
16+
17+
; Whether the cache system for AOBs will be used.
18+
; Default: 1
19+
UseCache = 1
20+
21+
; Whether caches will be invalidated if ue4ss.dll has changed
22+
; Default: 1
23+
InvalidateCacheIfDLLDiffers = 1
24+
25+
; The number of seconds the scanner will scan for before giving up
26+
; Default: 30
27+
SecondsToScanBeforeGivingUp = 30
28+
29+
; Whether to create UObject listeners in GUObjectArray to create a fast cache for use instead of iterating GUObjectArray.
30+
; Setting this to false can help if you're experiencing a crash on startup.
31+
; Default: true
32+
bUseUObjectArrayCache = true
33+
34+
; Whether to perform a single AOB scan as soon as possible after the game starts.
35+
; Default: 0
36+
DoEarlyScan = 0
37+
38+
[EngineVersionOverride]
39+
MajorVersion = 5
40+
MinorVersion = 4
41+
; True if the game is built as Debug, Development, or Test.
42+
; Default: false
43+
DebugBuild =
44+
45+
[ObjectDumper]
46+
; Whether to force all assets to be loaded before dumping objects
47+
; WARNING: Can require multiple gigabytes of extra memory
48+
; WARNING: Is not stable & will crash the game if you load past the main menu after dumping
49+
; Default: 0
50+
LoadAllAssetsBeforeDumpingObjects = 0
51+
52+
; Whether to display the offset from the main executable for functions instead of the function pointer
53+
; Default: 0
54+
UseModuleOffsets = 0
55+
56+
[CXXHeaderGenerator]
57+
; Whether to property offsets and sizes
58+
; Default: 1
59+
DumpOffsetsAndSizes = 1
60+
61+
; Whether memory layouts of classes and structs should be accurate
62+
; This must be set to 1, if you want to use the generated headers in an actual C++ project
63+
; When set to 0, padding member variables will not be generated
64+
; NOTE: A VALUE OF 1 HAS NO PURPOSE YET! MEMORY LAYOUT IS NOT ACCURATE EITHER WAY!
65+
; Default: 0
66+
KeepMemoryLayout = 0
67+
68+
; Whether to force all assets to be loaded before generating headers
69+
; WARNING: Can require multiple gigabytes of extra memory
70+
; WARNING: Is not stable & will crash the game if you load past the main menu after dumping
71+
; Default: 0
72+
LoadAllAssetsBeforeGeneratingCXXHeaders = 0
73+
74+
[UHTHeaderGenerator]
75+
; Whether to skip generating packages that belong to the engine
76+
; Some games make alterations to the engine and for those games you might want to set this to 0
77+
; Default: 0
78+
IgnoreAllCoreEngineModules = 0
79+
80+
; Whether to skip generating the "Engine" and "CoreUObject" packages
81+
; Default: 0
82+
IgnoreEngineAndCoreUObject = 0
83+
84+
; Whether to force all UFUNCTION macros to have "BlueprintCallable"
85+
; Note: This will cause some errors in the generated headers that you will need to manually fix
86+
; Default: 1
87+
MakeAllFunctionsBlueprintCallable = 1
88+
89+
; Whether to force all UPROPERTY macros to have "BlueprintReadWrite"
90+
; Also forces all UPROPERTY macros to have "meta=(AllowPrivateAccess=true)"
91+
; Default: 1
92+
MakeAllPropertyBlueprintsReadWrite = 1
93+
94+
; Whether to force UENUM macros on enums to have 'BlueprintType' if the underlying type was implicit or uint8
95+
; Note: This also forces the underlying type to be uint8 where the type would otherwise be implicit
96+
; Default: 1
97+
MakeEnumClassesBlueprintType = 1
98+
99+
; Whether to force "Config = Engine" on all UCLASS macros that use either one of:
100+
; "DefaultConfig", "GlobalUserConfig" or "ProjectUserConfig"
101+
; Default: 1
102+
MakeAllConfigsEngineConfig = 1
103+
104+
[Debug]
105+
; Whether to enable the external UE4SS debug console.
106+
ConsoleEnabled = 1
107+
GuiConsoleEnabled = 1
108+
GuiConsoleVisible = 1
109+
110+
; Multiplier for Font Size within the Debug Gui
111+
; Default: 1
112+
GuiConsoleFontScaling = 1
113+
114+
; The API that will be used to render the GUI debug window.
115+
; Valid values (case-insensitive): dx11, d3d11, opengl
116+
; Default: opengl
117+
GraphicsAPI = opengl
118+
119+
; The method with which the GUI will be rendered.
120+
; Valid values (case-insensitive):
121+
; ExternalThread: A separate thread will be used.
122+
; EngineTick: The UEngine::Tick function will be used.
123+
; GameViewportClientTick: The UGameViewportClient::Tick function will be used.
124+
; Default: ExternalThread
125+
RenderMode = ExternalThread
126+
127+
[Threads]
128+
; The number of threads that the sig scanner will use (not real cpu threads, can be over your physical & hyperthreading max)
129+
; If the game is modular then multi-threading will always be off regardless of the settings in this file
130+
; Min: 1
131+
; Max: 4294967295
132+
; Default: 8
133+
SigScannerNumThreads = 8
134+
135+
; The minimum size that a module has to be in order for multi-threading to be enabled
136+
; This should be large enough so that the cost of creating threads won't out-weigh the speed gained from scanning in multiple threads
137+
; Min: 0
138+
; Max: 4294967295
139+
; Default: 16777216
140+
SigScannerMultithreadingModuleSizeThreshold = 16777216
141+
142+
[Memory]
143+
; The maximum memory usage (in percentage, see Task Manager %) allowed before asset loading (when LoadAllAssetsBefore* is 1) cannot happen.
144+
; Once this percentage is reached, the asset loader will stop loading and whatever operation was in progress (object dump, or cxx generator) will continue.
145+
; Default: 85
146+
MaxMemoryUsageDuringAssetLoading = 85
147+
148+
[Hooks]
149+
HookProcessInternal = 1
150+
HookProcessLocalScriptFunction = 1
151+
HookInitGameState = 1
152+
HookLoadMap = 1
153+
HookCallFunctionByNameWithArguments = 1
154+
HookBeginPlay = 1
155+
HookEndPlay = 1
156+
HookLocalPlayerExec = 1
157+
HookAActorTick = 1
158+
HookEngineTick = 1
159+
HookGameViewportClientTick = 1
160+
HookUObjectProcessEvent = 1
161+
HookProcessConsoleExec = 1
162+
HookUStructLink = 1
163+
FExecVTableOffsetInLocalPlayer = 0x28
164+
165+
[CrashDump]
166+
EnableDumping = 1
167+
FullMemoryDump = 0
168+
169+
[ExperimentalFeatures]
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
function Register()
2+
return "48 89 5C 24 08 48 89 74 24 10 57 48 83 EC 40 48 8D 05 ?? ?? ?? ?? 33 F6 48 8B D9 48 89 44 24 28 48 8B FA 48 89 44 24 20 48 89 74 24 30 8D 4E ?? E8 ?? ?? ?? ?? 4C 8B C0 48 85 C0 74 4F 0F 10 44 24 20 48 89 70 ?? 48 8D 05 ?? ?? ?? ?? F2 0F 10 4C 24 30 41 0F 11 40 ?? 49 89 00 F2 41 0F 11 48 ?? 49 89 70 ?? 48 8B 07 49 89 40 ?? 48 89 37 8B 47 ?? 41 89 40 ?? 8B 47 ?? 41 89 40 ?? 48 89 77 ?? 49 89 70 ?? F0 41 FF 40 ?? EB 03 4C 8B C6 4C 89 03 48 8B C3 89 73 ?? 48 8B 5C 24 50 48 8B 74 24 58 48 83 C4 40 5F C3"
3+
end
4+
5+
function OnMatchFound(MatchAddress)
6+
return MatchAddress
7+
end

0 commit comments

Comments
 (0)