From b797c92b2ecec30d2d4dd43a3263d990c2ad7ecd Mon Sep 17 00:00:00 2001
From: PSI-Rockin <PSI-Rockin@users.noreply.github.com>
Date: Mon, 22 Apr 2024 18:17:58 -0400
Subject: [PATCH] [CRO] Offset the old data address by the start of the CRO

The old logic caused bad data relocations
---
 .gitignore                   | 1 +
 src/core/services/ldr_ro.cpp | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/.gitignore b/.gitignore
index 786db912..528462ad 100644
--- a/.gitignore
+++ b/.gitignore
@@ -65,3 +65,4 @@ fb.bat
 *.smdh
 
 config.toml
+CMakeSettings.json
diff --git a/src/core/services/ldr_ro.cpp b/src/core/services/ldr_ro.cpp
index 2ad62d99..a6114729 100644
--- a/src/core/services/ldr_ro.cpp
+++ b/src/core/services/ldr_ro.cpp
@@ -437,7 +437,7 @@ public:
 			const u32 segmentID = mem.read32(segmentTable.offset + 12 * segment + SegmentTable::ID);
 			switch (segmentID) {
 				case SegmentTable::SegmentID::DATA:
-					*oldDataVaddr = segmentOffset + dataVaddr; oldDataSegmentOffset = segmentOffset; segmentOffset = dataVaddr; break;
+					*oldDataVaddr = segmentOffset + croPointer; oldDataSegmentOffset = segmentOffset; segmentOffset = dataVaddr; break;
 				case SegmentTable::SegmentID::BSS: segmentOffset = bssVaddr; break;
 				case SegmentTable::SegmentID::TEXT:
 				case SegmentTable::SegmentID::RODATA: