Skip to content

Commit

Permalink
Merge branch 'main' into feature/hotkeypicker-ui
Browse files Browse the repository at this point in the history
  • Loading branch information
FrankvdStam authored Dec 30, 2024
2 parents 8e9bc47 + fe56844 commit 92db7dd
Show file tree
Hide file tree
Showing 15 changed files with 257 additions and 89 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
name: build
on:
workflow_dispatch:
push:
branches: [ "main" ]
branches:
- main
pull_request:
branches: [ "main" ]
workflow_dispatch:

env:
CARGO_TERM_COLOR: always
Expand Down
10 changes: 6 additions & 4 deletions .github/workflows/qodana.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
name: Qodana
on:
workflow_dispatch:
pull_request:
#schedule:
# - cron: "30 1 * * *"
push:
branches: # Specify your branches here
- main # The 'main' branch
branches:
- main
pull_request:
workflow_dispatch:

jobs:
qodana:
Expand Down
Binary file modified Components/SoulMemory.dll
Binary file not shown.
Binary file modified Components/SoulSplitter.dll
Binary file not shown.
32 changes: 22 additions & 10 deletions Components/Updates.xml
Original file line number Diff line number Diff line change
@@ -1,16 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<updates>
<update version="1.7.4">
<files>
<file path="Components/SoulMemory.dll" status="changed"/>
<file path="Components/SoulSplitter.dll" status="changed"/>
</files>
<changelog>
<change>Elden Ring: Fixed 1.10.x screenstate offset (thanks Soarqin!)</change>
<change>Elden Ring: Added and fixed a couple eventflags (thanks Soarqin!)</change>
<change>Elden Ring: Fixed 1.12 offsets</change>
<change>Dark souls Remastered: Fixed 1.01 compatibility</change>
</changelog>
</update>
<update version="1.7.3">
<files>
<file path="Components/SoulMemory.dll" status="changed"/>
<file path="Components/SoulSplitter.dll" status="changed"/>
</files>
<changelog>
<change>Fixed event flag logger not opening from the menu</change>
<change>Elden Ring: Fixed MIGT (thanks ViRazY!)</change>
</changelog>
</update>
<update version="1.7.2">
<files>
<file path="Components/SoulMemory.dll" status="changed"/>
<file path="Components/SoulSplitter.dll" status="changed"/>
</files>
<changelog>
<change>Fixed event flag logger not opening from the menu</change>
<change>Elden Ring: Fixed MIGT (thanks ViRazY!)</change>
</changelog>
</update>
<update version="1.7.2">
<files>
<file path="Components/SoulMemory.dll" status="changed"/>
<file path="Components/SoulSplitter.dll" status="changed"/>
Expand Down
2 changes: 1 addition & 1 deletion Directory.Build.props
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<Project>
<PropertyGroup>
<Version>1.7.3</Version>
<Version>1.7.4</Version>
</PropertyGroup>
</Project>
49 changes: 46 additions & 3 deletions src/SoulMemory/DarkSouls1/Remastered.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Text.RegularExpressions;
using SoulMemory.Parameters;
Expand All @@ -65,11 +66,27 @@ public class Remastered : IDarkSouls1
private readonly Pointer _soloParamMan = new Pointer();
private readonly Pointer _loadingScreenItems = new Pointer();
private readonly Pointer _msgMan = new Pointer();
private DsrVersion _version;
private int? _steamId3;
private bool? _isJapanese;
private List<ItemLotParam> _itemLotParams = new List<ItemLotParam>();
private List<TextTableEntry> _weaponDescriptionsTable = new List<TextTableEntry>();

private long _playerCtrlOffset = 0x68;
private long _currentSaveSlotOffset = 0xaa0;

private enum DsrVersion
{
[Version("1.0.0.0")]
V101,
[Version("1.3.0.0")]
V130,
[Version("1.3.1.0")]
V131,
[Version("unknown")]
Unknown
}

public Process GetProcess() => _process;

public ResultErr<RefreshError> TryRefresh() => MemoryScanner.TryRefresh(ref _process, "darksoulsremastered", InitPointers, ResetPointers);
Expand All @@ -93,12 +110,20 @@ private void ResetPointers()
_weaponDescriptionsTable.Clear();
_steamId3 = null;
_isJapanese = null;
_version = DsrVersion.Unknown;
}

private ResultErr<RefreshError> InitPointers()
{
try
try
{
if (_process.MainModule == null)
{
return Result.Err(new RefreshError(RefreshErrorReason.MainModuleNull));
}

_version = _process.MainModule.FileVersionInfo.ResolveVersion<DsrVersion>();
ResolveGameVersionSpecificOffsets(_version);
var treeBuilder = GetTreeBuilder();
var result = MemoryScanner.TryResolvePointers(treeBuilder, _process);
if(result.IsErr)
Expand All @@ -117,6 +142,24 @@ private ResultErr<RefreshError> InitPointers()
}
}

private void ResolveGameVersionSpecificOffsets(DsrVersion version)
{
switch (version)
{
default:
_playerCtrlOffset = 0x68;
_currentSaveSlotOffset = 0xaa0;
break;

case DsrVersion.V101:
_playerCtrlOffset = 0x48;
_currentSaveSlotOffset = 0xa90;
break;

}
Console.WriteLine(_playerCtrlOffset);
}

public TreeBuilder GetTreeBuilder()
{
var treeBuilder = new TreeBuilder();
Expand All @@ -134,7 +177,7 @@ public TreeBuilder GetTreeBuilder()
treeBuilder
.ScanRelative("WorldChrManImp", "48 8b 0d ? ? ? ? 0f 28 f1 48 85 c9 74 ? 48 89 7c", 3, 7)
.AddPointer(_playerIns, 0, 0x68)
.AddPointer(_playerPos, 0, 0x68, 0x68, 0x28)
.AddPointer(_playerPos, 0, 0x68, _playerCtrlOffset, 0x28)
;

treeBuilder
Expand Down Expand Up @@ -187,7 +230,7 @@ public TreeBuilder GetTreeBuilder()

public int NgCount() => _gameDataMan?.ReadInt32(0x78) ?? 0;

public int GetCurrentSaveSlot() => _gameMan?.ReadInt32(0xaa0) ?? 0;
public int GetCurrentSaveSlot() => _gameMan?.ReadInt32(_currentSaveSlotOffset) ?? 0;

public Vector3f GetPosition() => _playerPos == null ? new Vector3f(0, 0, 0) : new Vector3f(_playerPos.ReadFloat(0x10), _playerPos.ReadFloat(0x14), _playerPos.ReadFloat(0x18));

Expand Down
157 changes: 98 additions & 59 deletions src/SoulMemory/EldenRing/EldenRing.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using SoulMemory.Memory;
using SoulMemory.Native;
using Pointer = SoulMemory.Memory.Pointer;
Expand Down Expand Up @@ -80,47 +81,62 @@ private void InitializeOffsets(Version v)
var version = GetVersion(v);
switch (version)
{
case EldenRingVersion.V102:
case EldenRingVersion.V1_02_0:
case EldenRingVersion.V1_02_1:
case EldenRingVersion.V1_02_2:
case EldenRingVersion.V1_02_3:
_screenStateOffset = 0x718;
_positionOffset = 0x6b8;
_mapIdOffset = 0x6c8;
_playerInsOffset = 0x18468;
break;

case EldenRingVersion.V103:
case EldenRingVersion.V1_03_0:
case EldenRingVersion.V1_03_1:
case EldenRingVersion.V1_03_2:
_screenStateOffset = 0x728;
_positionOffset = 0x6b8;
_mapIdOffset = 0x6c8;
_playerInsOffset = 0x18468;
break;

case EldenRingVersion.V104:
case EldenRingVersion.V105:
case EldenRingVersion.V106:

case EldenRingVersion.V1_04_0:
case EldenRingVersion.V1_04_1:
case EldenRingVersion.V1_05_0:
case EldenRingVersion.V1_06_0:
_screenStateOffset = 0x728;
_positionOffset = 0x6B0;
_mapIdOffset = 0x6c0;
_playerInsOffset = 0x18468;
break;

case EldenRingVersion.V107:
case EldenRingVersion.V1_07_0:
_screenStateOffset = 0x728;
_positionOffset = 0x6B0;
_mapIdOffset = 0x6c0;
_playerInsOffset = 0x1e508;
break;

case EldenRingVersion.V108:
case EldenRingVersion.V109:
case EldenRingVersion.V110:
case EldenRingVersion.V1_08_0:
case EldenRingVersion.V1_08_1:
case EldenRingVersion.V1_09_0:
case EldenRingVersion.V1_09_1:
case EldenRingVersion.V1_10_0:
case EldenRingVersion.V1_10_1:
_screenStateOffset = 0x728;
_positionOffset = 0x6d4;
_mapIdOffset = 0x6d0;
_playerInsOffset = 0x1e508;
break;

default:
case EldenRingVersion.V112:
case EldenRingVersion.V1_12_0:
case EldenRingVersion.V1_12_3:
case EldenRingVersion.V1_13_0:
case EldenRingVersion.V1_14_0:
case EldenRingVersion.V1_15_0:
case EldenRingVersion.V1_16_0:
_screenStateOffset = 0x730;
_positionOffset = 0x6d4;
_mapIdOffset = 0x6d0;
Expand Down Expand Up @@ -186,67 +202,90 @@ private void ResetPointers()

#endregion

#region version ================================================================================================

private readonly Dictionary<EldenRingVersion, Version> _versions = new Dictionary<EldenRingVersion, Version>()
{

{ EldenRingVersion.V1_02_0, new Version(1,2,0,0) },
{ EldenRingVersion.V1_02_1, new Version(1,2,1,0) },
{ EldenRingVersion.V1_02_2, new Version(1,2,2,0) },
{ EldenRingVersion.V1_02_3, new Version(1,2,3,0) },
{ EldenRingVersion.V1_03_0, new Version(1,3,0,0) },
{ EldenRingVersion.V1_03_1, new Version(1,3,1,0) },
{ EldenRingVersion.V1_03_2, new Version(1,3,2,0) },
{ EldenRingVersion.V1_04_0, new Version(1,4,0,0) },
{ EldenRingVersion.V1_04_1, new Version(1,4,1,0) },
{ EldenRingVersion.V1_05_0, new Version(1,5,0,0) },
{ EldenRingVersion.V1_06_0, new Version(1,6,0,0) },
{ EldenRingVersion.V1_07_0, new Version(1,7,0,0) },
{ EldenRingVersion.V1_08_0, new Version(1,8,0,0) },
{ EldenRingVersion.V1_08_1, new Version(1,8,1,0) },
{ EldenRingVersion.V1_09_0, new Version(1,9,0,0) },
{ EldenRingVersion.V1_09_1, new Version(1,9,1,0) },
//1.10 turned into 2.0.0.0 for some reason
{ EldenRingVersion.V1_10_0, new Version(2,0,0,0) },
{ EldenRingVersion.V1_10_1, new Version(2,0,1,0) },
{ EldenRingVersion.V1_12_0, new Version(2,2,0,0) },
{ EldenRingVersion.V1_12_3, new Version(2,2,3,0) },
{ EldenRingVersion.V1_13_0, new Version(2,3,0,0) },
{ EldenRingVersion.V1_14_0, new Version(2,4,0,0) },
{ EldenRingVersion.V1_15_0, new Version(2,5,0,0) },
{ EldenRingVersion.V1_16_0, new Version(2,6,0,0) },
};

public enum EldenRingVersion
{
V102,
V103,
V104,
V105,
V106,
V107,
V108,
V109,
V110,
V112,

V1_02_0,
V1_02_1,
V1_02_2,
V1_02_3,

V1_03_0,
V1_03_1,
V1_03_2,

V1_04_0,
V1_04_1,

V1_05_0,
V1_06_0,
V1_07_0,

V1_08_0,
V1_08_1,

V1_09_0,
V1_09_1,

V1_10_0,
V1_10_1,

V1_12_0,
V1_12_3,

V1_13_0,
V1_14_0,
V1_15_0,
V1_16_0,

Unknown,
};

public EldenRingVersion GetVersion(Version v)
{
switch (v.Major)
var version = _versions.FirstOrDefault(i => i.Value.CompareTo(v) == 0);
if (version.Value == null)
{
default:
return EldenRingVersion.Unknown;

case 1:
switch (v.Minor)
{
default:
return EldenRingVersion.Unknown;
case 2:
return EldenRingVersion.V102;
case 3:
return EldenRingVersion.V103;
case 4:
return EldenRingVersion.V104;
case 5:
return EldenRingVersion.V105;
case 6:
return EldenRingVersion.V106;
case 7:
return EldenRingVersion.V107;
case 8:
return EldenRingVersion.V108;
case 9:
return EldenRingVersion.V109;
case 10:
return EldenRingVersion.V110;
}

case 2:
switch (v.Minor)
{
default:
return EldenRingVersion.Unknown;
case 0:
return EldenRingVersion.V110;
case 2:
return EldenRingVersion.V112;
}
return EldenRingVersion.Unknown;
}

return version.Key;
}

#endregion

public void EnableHud()
{
if (_hud != null)
Expand Down
Loading

0 comments on commit 92db7dd

Please sign in to comment.