Skip to content
This repository was archived by the owner on Jan 10, 2025. It is now read-only.

Commit adb5bdb

Browse files
authored
Merge pull request #154 from kagikn/b3095-fix-CTransmission__ProcessGears-stuff
Fix not nopping assembly code at 5 locations in b3095
2 parents ccf1e7a + d3be4a7 commit adb5bdb

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

Gears/Memory/MemoryPatcher.cpp

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,9 @@ void SetPatterns(int version) {
8484
"xx????" "xxx?" "xxx?????" "xxx?????" "xx?" "xx?",
8585
{ 0xE9, 0x00, 0x00, 0x00, 0x00, 0x90 });
8686

87-
// Valid for 877 to 1868, in 2060 last byte changed to 0xC4
88-
steeringControl = PatternInfo("\xF3\x0F\x11\x8B\xFC\x08\x00\x00" "\xF3\x0F\x10\x83\x00\x09\x00\x00" "\xF3\x0F\x58\x83\xFC\x08\x00\x00" "\x41\x0F\x2F\xC3",
89-
"xxxx??xx" "xxxx??xx" "xxxx??xx" "xxx?",
87+
// Valid for 877 to 1868, in 2060 last byte changed to 0xC4, in 3095 general-purpose register changed to rdi
88+
steeringControl = PatternInfo("\xF3\x0F\x11\x8B\xFC\x08\x00\x00" "\xF3\x0F\x10\x83\x00\x09\x00\x00" "\xF3\x0F\x58\x83\xFC\x08\x00\x00" "\x41\x0F\x2F\xC3" "\xF3\x0F\x11\x83\xFC\x08\x00\x00" "\x73\x06",
89+
"xxx???xx" "xxx???xx" "xxx???xx" "xxx?" "xxx???xx" "xx",
9090
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 });
9191

9292
// Valid for 1604 (FiveM) to 1868+
@@ -140,6 +140,21 @@ void SetPatterns(int version) {
140140
throttleLift = PatternInfo("\x44\x89\x77\x50\xf3\x0f\x11", "xxxxxxx",
141141
{ 0x90, 0x90, 0x90, 0x90 });
142142
}
143+
if (version >= G_VER_1_0_3095_0) {
144+
// compiler changed how to increment the current gear value
145+
shiftUp = PatternInfo("\x66\x01\x2B\xC7\x43\x54\xCD\xCC\xCC\x3D", "xxxxxxxxxx",
146+
{ 0x66, 0x01, 0x2B, });
147+
// compiler changed how to decrement the current gear value
148+
shiftDown = PatternInfo("\x66\xFF\x0B\xC7\x43\x54\xCD\xCC\xCC\x3D", "xxxxxxxxxx",
149+
{ 0x66, 0xFF, 0x0B });
150+
// the 2 offsets of CTransmission was shifted to 0x80 and 0x84 and the 2 mov opcodes changed
151+
clutchRevLimit = PatternInfo("\xC7\x43\x54\xCD\xCC\xCC\x3D\x44\x89\xB3\x84\x00\x00\x00\x44\x89\xA3\x80\x00\x00\x00",
152+
"xx?xxxxxxx????xxx????",
153+
{ 0xC7, 0x43, 0x54, 0xCD, 0xCC, 0xCC, 0x3D });
154+
// register has changed
155+
throttleLift = PatternInfo("\x89\x4F\x58\xF3\x44\x0F\x11", "xx?xxxx",
156+
{ 0x90, 0x90, 0x90 });
157+
}
143158
}
144159

145160
bool Test() {

Gears/Memory/Versions.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,8 @@ enum G_GameVersion : int {
261261
G_VER_1_0_2824_0, // 81
262262
G_VER_1_0_2845_0, // 82
263263
G_VER_1_0_2944_0, // 83
264+
G_VER_1_0_3028_0, // 84
265+
G_VER_1_0_3095_0, // 85
264266
};
265267

266268
static std::vector<std::pair<SVersion, std::vector<int>>> ExeVersionMap = {

0 commit comments

Comments
 (0)