-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathSubnauticaCombined.asl
94 lines (84 loc) · 3.63 KB
/
SubnauticaCombined.asl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
//also known as 2.0
state("Subnautica", "March 2023")
{
//player is "UnityPlayer.dll", 0x17fbe70, 0x8, 0x10, 0x30, 0x58, 0x28, ...
//modules.First() length 675840
//this patch's rocketlaunching is actually StoryGoalScheduler.main.paused
//which only happens on rocket launch it seems (i hope im right)
bool rocketLaunching: "UnityPlayer.dll", 0x1847ed0, 0x110, 0xd0, 0xc0, 0x388, 0x3e0, 0x10, 0x20;
bool introCinematicActive: "UnityPlayer.dll", 0x179b680, 0x88, 0x198, 0x338, 0x30, 0x28, 0x28, 0x87;
bool playerCinematicActive : "UnityPlayer.dll", 0x17fbe70, 0x8, 0x10, 0x30, 0x58, 0x28, 0x284;
//something -> MainCameraControl (0x30) -> PlayerController (0x18) -> Player (0x1f0) -> biomeString (0x14)
string128 biomeString: "UnityPlayer.dll", 0x17fbe70, 0x8, 0x10, 0x30, 0x58, 0x28, 0x1f0, 0x14;
}
//also known as old patch
state("Subnautica", "September 2018")
{
//player is "Subnautica.exe", 0x142b908, 0x180, 0x128, 0x80, 0x1d0, 0x8, 0x248, ...
//modules.First() length 23801856
bool rocketLaunching: "mono.dll", 0x27EAD8, 0x40, 0x70, 0x50, 0x90, 0x30, 0x8, 0x80;
bool introCinematicActive: "Subnautica.exe", 0x142b908, 0x188, 0x150, 0xd0, 0x18, 0x1e8, 0x28, 0x86;
bool playerCinematicActive: "Subnautica.exe", 0x142b908, 0x180, 0x128, 0x80, 0x1d0, 0x8, 0x248, 0x240;
string128 biomeString: "Subnautica.exe", 0x142b908, 0x180, 0x128, 0x80, 0x1d0, 0x8, 0x248, 0x1d0, 0x14;
}
//also known as legacy patch
state("Subnautica", "December 2021")
{
//player is "UnityPlayer.dll", 0x1690cd0, 0x8, 0x10, 0x30, 0x678, 0x58, 0x188, ...
//modules.First() length 671744
bool rocketLaunching: "UnityPlayer.dll", 0x1678148, 0x40, 0x5f0, 0x424, 0x8, 0xd8, 0x40, 0x80;
bool introCinematicActive: "UnityPlayer.dll", 0x16d0400, 0x68, 0x140, 0xa8, 0x18, 0x60, 0x28, 0x86;
bool playerCinematicActive: "UnityPlayer.dll", 0x1690cd0, 0x8, 0x10, 0x30, 0x678, 0x58, 0x188, 0x248;
string128 biomeString: "UnityPlayer.dll", 0x1690cd0, 0x8, 0x10, 0x30, 0x678, 0x58, 0x188, 0x1d8, 0x14;
}
state("Subnautica", "March 2023")
{
//player is
bool introCinematicActive: "mono-2.0-bdwgc.dll", 0x499c78, 0x9d0, 0x130, 0x48, 0x250, 0x220, 0x28, 0x87;
}
init
{
int firstModuleSize = modules.First().ModuleMemorySize;
print(firstModuleSize.ToString());
switch (firstModuleSize)
{
case 23801856:
version = "September 2018";
print("Version is sept 2018");
break;
case 671744:
version = "December 2021";
print("Version is dec 2021");
break;
case 675840:
version = "March 2023";
print("Version is mar 2023");
break;
default:
print("No valid version found");
break;
}
}
startup
{
//settings.Add(id (string), default_value (bool), description (string), parent (string))
settings.Add("start", true, "Start after intro cutscene");
settings.Add("end", true, "Split on rocket launch");
settings.Add("gunDeactivate", false, "Split on gun deactivation");
}
split
{
if (!old.rocketLaunching && current.rocketLaunching && settings["end"]) { return true; }
if (!old.playerCinematicActive && current.playerCinematicActive && current.biomeString == "Precursor_Gun_ControlRoom" && settings["gunDeactivate"]) { return true; print("gun split"); }
}
start
{
if (old.introCinematicActive && !current.introCinematicActive && settings["start"]) { return true; }
}
update
{
//print(modules.First().ModuleMemorySize.ToString());
//print(modules.First().ToString());
//print(current.playerCinematicActive.ToString());
//print(current.biomeString);
}