From c7d7f9ee1aee81bcefeb641938331d2dad475f70 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 17 Oct 2026 12:31:28 +0000 Subject: [PATCH 01/13] reimplement: SHC_3BB0A8C1_0x0044A620 100.0% Reimplemented Measured with reccmp 0.1.7+sourcehold against Stronghold Crusader 1.41 (sha256 3bb0a8c1), with all struct resolvers and all function resolvers of the built sources enabled. Previous status line: 0.0%. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01F2GxVJNKQs8Bd4Bqb96PFf --- status/addresses-SHC-3BB0A8C1.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index c51eb419db..415bf639ad 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -16641,7 +16641,7 @@ SHC_3BB0A8C1_0x0044A500 | 100.0% | Reimplemented, Security Cookie of DLL SHC_3BB0A8C1_0x0044A5A0 | 100.0% | Reimplemented, security cookie and function present, but uses dlls version -SHC_3BB0A8C1_0x0044A620 | 0.0% | Pending +SHC_3BB0A8C1_0x0044A620 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0044A6E0 | 0.0% | Pending From a73544a457e89993dd45460834b6d4e679d36866 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 17 Oct 2026 12:31:28 +0000 Subject: [PATCH 02/13] reimplement: SHC_3BB0A8C1_0x0044A6E0 100.0% Reimplemented Measured with reccmp 0.1.7+sourcehold against Stronghold Crusader 1.41 (sha256 3bb0a8c1), with all struct resolvers and all function resolvers of the built sources enabled. Previous status line: 0.0%. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01F2GxVJNKQs8Bd4Bqb96PFf --- status/addresses-SHC-3BB0A8C1.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 415bf639ad..fefa4723b2 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -16643,7 +16643,7 @@ SHC_3BB0A8C1_0x0044A5A0 | 100.0% | Reimplemented, security cookie and function p SHC_3BB0A8C1_0x0044A620 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0044A6E0 | 0.0% | Pending +SHC_3BB0A8C1_0x0044A6E0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0044A720 | 100.0% | Reimplemented From 75e69c5f0b7ced431556da840c0fd9a4a782991d Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 17 Oct 2026 12:31:28 +0000 Subject: [PATCH 03/13] reimplement: SHC_3BB0A8C1_0x0044BCE0 86.2% Reimplemented, heavy register mismatch, likely to a failure to reimplement one of the original loops Measured with reccmp 0.1.7+sourcehold against Stronghold Crusader 1.41 (sha256 3bb0a8c1), with all struct resolvers and all function resolvers of the built sources enabled. Previous status line: 84.0%. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01F2GxVJNKQs8Bd4Bqb96PFf --- status/addresses-SHC-3BB0A8C1.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index fefa4723b2..0df4f6b0b3 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -16877,7 +16877,7 @@ SHC_3BB0A8C1_0x0044B890 | 0.0% | Pending SHC_3BB0A8C1_0x0044BCA0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0044BCE0 | 84.0% | Reimplemented, heavy register mismatch, likely to a failure to reimplement one of the original loops +SHC_3BB0A8C1_0x0044BCE0 | 86.2% | Reimplemented, heavy register mismatch, likely to a failure to reimplement one of the original loops SHC_3BB0A8C1_0x0044BE40 | 0.0% | Pending From d64185c758fc25fe9f1e828822a66ea6da7055ec Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 17 Oct 2026 12:31:28 +0000 Subject: [PATCH 04/13] reimplement: SHC_3BB0A8C1_0x004586F0 100.0% Reimplemented Measured with reccmp 0.1.7+sourcehold against Stronghold Crusader 1.41 (sha256 3bb0a8c1), with all struct resolvers and all function resolvers of the built sources enabled. Previous status line: 0.0%. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01F2GxVJNKQs8Bd4Bqb96PFf --- status/addresses-SHC-3BB0A8C1.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 0df4f6b0b3..f2cb2e7b59 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -17695,7 +17695,7 @@ SHC_3BB0A8C1_0x004585F0 | 0.0% | Pending SHC_3BB0A8C1_0x004586D0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004586F0 | 0.0% | Pending +SHC_3BB0A8C1_0x004586F0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00458700 | 100.0% | Reimplemented From b00ecc3debac2014520741064466425c458cce4e Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 17 Oct 2026 12:31:28 +0000 Subject: [PATCH 05/13] reimplement: SHC_3BB0A8C1_0x00471D30 83.0% Reimplemented, but register diffs; logic is sound Measured with reccmp 0.1.7+sourcehold against Stronghold Crusader 1.41 (sha256 3bb0a8c1), with all struct resolvers and all function resolvers of the built sources enabled. Previous status line: 81.1%. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01F2GxVJNKQs8Bd4Bqb96PFf --- status/addresses-SHC-3BB0A8C1.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index f2cb2e7b59..4d7e6b8324 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -21343,7 +21343,7 @@ SHC_3BB0A8C1_0x00471C50 | 100.0% | Reimplemented, requires called function and s SHC_3BB0A8C1_0x00471CD0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00471D30 | 81.1% | Reimplemented, but register diffs; logic is sound +SHC_3BB0A8C1_0x00471D30 | 83.0% | Reimplemented, but register diffs; logic is sound SHC_3BB0A8C1_0x00471DC0 | 100.0% | Reimplemented From cefd8d020162600cb8567ab0a81f419359972a08 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 17 Oct 2026 12:31:29 +0000 Subject: [PATCH 06/13] reimplement: SHC_3BB0A8C1_0x00472EF0 58.7% Severe Register Issues, seem functional, but can not be considered done Measured with reccmp 0.1.7+sourcehold against Stronghold Crusader 1.41 (sha256 3bb0a8c1), with all struct resolvers and all function resolvers of the built sources enabled. Previous status line: 55.0%. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01F2GxVJNKQs8Bd4Bqb96PFf --- status/addresses-SHC-3BB0A8C1.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 4d7e6b8324..3ada46bd88 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -21433,7 +21433,7 @@ SHC_3BB0A8C1_0x00472D60 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00472DD0 | 0.0% | Pending -SHC_3BB0A8C1_0x00472EF0 | 55.0% | Severe Register Issues, seem functional, but can not be considered done +SHC_3BB0A8C1_0x00472EF0 | 58.7% | Severe Register Issues, seem functional, but can not be considered done SHC_3BB0A8C1_0x00473300 | 100.0% | Reimplemented From a2f24d4b96e6b6a408f32922ee0537cc2004e775 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 17 Oct 2026 12:31:29 +0000 Subject: [PATCH 07/13] reimplement: SHC_3BB0A8C1_0x00477EE0 87.5% Reimplemented, heavy stack reorder mismatch, logic should be sound; Return value optimization, always needs SHC_3BB0A8C1_0x00477B00 active Measured with reccmp 0.1.7+sourcehold against Stronghold Crusader 1.41 (sha256 3bb0a8c1), with all struct resolvers and all function resolvers of the built sources enabled. Previous status line: 86.0%. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01F2GxVJNKQs8Bd4Bqb96PFf --- status/addresses-SHC-3BB0A8C1.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 3ada46bd88..34a62446aa 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -22033,7 +22033,7 @@ SHC_3BB0A8C1_0x00477EA0 | 0.0% | Pending SHC_3BB0A8C1_0x00477EC0 | 0.0% | Pending -SHC_3BB0A8C1_0x00477EE0 | 86.0% | Reimplemented, heavy stack reorder mismatch, logic should be sound; Return value optimization, always needs SHC_3BB0A8C1_0x00477B00 active +SHC_3BB0A8C1_0x00477EE0 | 87.5% | Reimplemented, heavy stack reorder mismatch, logic should be sound; Return value optimization, always needs SHC_3BB0A8C1_0x00477B00 active SHC_3BB0A8C1_0x00478010 | 0.0% | Pending From 272deccf5eccbe4dfa59aca405d2e7f445de27d2 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 17 Oct 2026 12:31:29 +0000 Subject: [PATCH 08/13] reimplement: SHC_3BB0A8C1_0x004B20B0 83.1% shared arm fold direction Measured with reccmp 0.1.7+sourcehold against Stronghold Crusader 1.41 (sha256 3bb0a8c1), with all struct resolvers and all function resolvers of the built sources enabled. Previous status line: 82.4%. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01F2GxVJNKQs8Bd4Bqb96PFf --- status/addresses-SHC-3BB0A8C1.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 34a62446aa..97c1a165f1 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -26001,7 +26001,7 @@ SHC_3BB0A8C1_0x004B1E60 | 0.0% | Pending SHC_3BB0A8C1_0x004B1EB0 | 0.0% | Pending -SHC_3BB0A8C1_0x004B20B0 | 82.4% | shared arm fold direction +SHC_3BB0A8C1_0x004B20B0 | 83.1% | shared arm fold direction SHC_3BB0A8C1_0x004B2280 | 0.0% | Pending From 65b73630f160832dafb80451a8f8c2c0e2aec137 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 17 Oct 2026 12:31:29 +0000 Subject: [PATCH 09/13] reimplement: SHC_3BB0A8C1_0x004F2A10 100.0% Reimplemented Measured with reccmp 0.1.7+sourcehold against Stronghold Crusader 1.41 (sha256 3bb0a8c1), with all struct resolvers and all function resolvers of the built sources enabled. Previous status line: 0.0%. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01F2GxVJNKQs8Bd4Bqb96PFf --- status/addresses-SHC-3BB0A8C1.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 97c1a165f1..a77860426f 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -38471,7 +38471,7 @@ SHC_3BB0A8C1_0x004F2970 | 0.0% | Pending SHC_3BB0A8C1_0x004F29C0 | 0.0% | Pending -SHC_3BB0A8C1_0x004F2A10 | 0.0% | Pending +SHC_3BB0A8C1_0x004F2A10 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004F2A20 | 100.0% | Reimplemented From 0b41fbebffd4462b3724bfe5337a84ac5804b2a5 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 17 Oct 2026 12:31:30 +0000 Subject: [PATCH 10/13] reimplement: SHC_3BB0A8C1_0x00500640 100.0% Reimplemented Measured with reccmp 0.1.7+sourcehold against Stronghold Crusader 1.41 (sha256 3bb0a8c1), with all struct resolvers and all function resolvers of the built sources enabled. Previous status line: 46.2%. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01F2GxVJNKQs8Bd4Bqb96PFf --- status/addresses-SHC-3BB0A8C1.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index a77860426f..6bbd7194e1 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -41443,7 +41443,7 @@ SHC_3BB0A8C1_0x00500500 | 0.0% | Pending SHC_3BB0A8C1_0x005005F0 | 0.0% | Pending -SHC_3BB0A8C1_0x00500640 | 46.2% | register allocation differs +SHC_3BB0A8C1_0x00500640 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00500680 | 100.0% | Reimplemented From 51ccdcdc2d09f97df6a18c617041c8e3c1a236c6 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 17 Oct 2026 12:31:30 +0000 Subject: [PATCH 11/13] reimplement: SHC_3BB0A8C1_0x00521EB0 82.4% pop esi scheduling Measured with reccmp 0.1.7+sourcehold against Stronghold Crusader 1.41 (sha256 3bb0a8c1), with all struct resolvers and all function resolvers of the built sources enabled. Previous status line: 76.5%. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01F2GxVJNKQs8Bd4Bqb96PFf --- status/addresses-SHC-3BB0A8C1.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 6bbd7194e1..4990d30b1a 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -46633,7 +46633,7 @@ SHC_3BB0A8C1_0x00521EA5 | 0.0% | Pending SHC_3BB0A8C1_0x00521EA6 | 0.0% | Pending -SHC_3BB0A8C1_0x00521EB0 | 76.5% | pop esi scheduling +SHC_3BB0A8C1_0x00521EB0 | 82.4% | pop esi scheduling SHC_3BB0A8C1_0x00521EF0 | 0.0% | Pending From 3a1916bcd91f9e20abef92c1ab13005d766dfef9 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 17 Oct 2026 12:31:30 +0000 Subject: [PATCH 12/13] reimplement: SHC_3BB0A8C1_0x00533090 100.0% Reimplemented Measured with reccmp 0.1.7+sourcehold against Stronghold Crusader 1.41 (sha256 3bb0a8c1), with all struct resolvers and all function resolvers of the built sources enabled. Previous status line: 0.0%. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01F2GxVJNKQs8Bd4Bqb96PFf --- status/addresses-SHC-3BB0A8C1.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 4990d30b1a..17ca038fc2 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -50649,7 +50649,7 @@ SHC_3BB0A8C1_0x00532F80 | 0.0% | Pending SHC_3BB0A8C1_0x00533010 | 0.0% | Pending -SHC_3BB0A8C1_0x00533090 | 0.0% | Pending +SHC_3BB0A8C1_0x00533090 | 100.0% | Reimplemented SHC_3BB0A8C1_0x005330A0 | 0.0% | Pending From 282b2ea56f1aca13adeb4759c1a5cd1bccf4e649 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 17 Oct 2026 14:35:04 +0000 Subject: [PATCH 13/13] fix: stale GameSynchronyState field names in two sources Both files referenced field indices one higher than the generated header declares, so neither compiled once every src/OpenSHC/**/*.cpp was added to the build list. The addresses already agreed; only the index prefixes were stale after the header was renumbered, so the fix is a rename: QueueChangeGameIntensityOrBalance.cpp field235_0x1072e8 -> field234_0x1072e8 field236_0x1072ec -> field235_0x1072ec MenuView_General_Prepare_SwordShieldAndBorder.cpp field225_0x106ee4 -> field224_0x106ee4 Neither file is in the committed cmake/openshc-sources.txt, which is why the breakage went unnoticed. Verified with cl /Zs. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01F2GxVJNKQs8Bd4Bqb96PFf --- .../Synchrony/Commands/QueueChangeGameIntensityOrBalance.cpp | 4 ++-- .../General/MenuView_General_Prepare_SwordShieldAndBorder.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/Synchrony/Commands/QueueChangeGameIntensityOrBalance.cpp b/src/OpenSHC/Synchrony/Commands/QueueChangeGameIntensityOrBalance.cpp index b7a006091e..654566d7dd 100644 --- a/src/OpenSHC/Synchrony/Commands/QueueChangeGameIntensityOrBalance.cpp +++ b/src/OpenSHC/Synchrony/Commands/QueueChangeGameIntensityOrBalance.cpp @@ -14,8 +14,8 @@ namespace Synchrony { { MACRO_CALL_MEMBER(OpenSHC::Synchrony::GameSynchronyState_Func::queueCommand, DAT_GameSynchronyState::ptr)( OpenSHC::Commands::GCT_CHANGE_GAME_INTENSITY_OR_BALANCE); - DAT_GameSynchronyState::instance.field235_0x1072e8 = -1; - DAT_GameSynchronyState::instance.field236_0x1072ec = -1; + DAT_GameSynchronyState::instance.field234_0x1072e8 = -1; + DAT_GameSynchronyState::instance.field235_0x1072ec = -1; } } diff --git a/src/OpenSHC/UI/MenuViews/General/MenuView_General_Prepare_SwordShieldAndBorder.cpp b/src/OpenSHC/UI/MenuViews/General/MenuView_General_Prepare_SwordShieldAndBorder.cpp index 548deb820c..41c08a04ba 100644 --- a/src/OpenSHC/UI/MenuViews/General/MenuView_General_Prepare_SwordShieldAndBorder.cpp +++ b/src/OpenSHC/UI/MenuViews/General/MenuView_General_Prepare_SwordShieldAndBorder.cpp @@ -14,7 +14,7 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x0042BB70 void MenuView_General_Prepare_SwordShieldAndBorder() { - DAT_GameSynchronyState::instance.field225_0x106ee4 = 0; + DAT_GameSynchronyState::instance.field224_0x106ee4 = 0; DAT_TextureRenderCoreObject::instance.totalLoadedGfx = 0; MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::TextureRenderCore_Func::loadGfxFile, DAT_TextureRenderCoreObject::ptr)(s_frontend_combat3_tgx_005a2134);