mirror of
https://github.com/CookiePLMonster/SilentPatch.git
synced 2024-12-29 07:13:02 +05:00
Compare commits
7 commits
fd0fb93011
...
52a2798b40
Author | SHA1 | Date | |
---|---|---|---|
|
52a2798b40 | ||
|
c733f3e7d1 | ||
|
fdce60d22f | ||
|
9b6e5096e7 | ||
|
65925ef8e8 | ||
|
d0c35bd852 | ||
|
602ac27b38 |
5 changed files with 348 additions and 336 deletions
|
@ -71,6 +71,7 @@ All the remaining, non-critical fixes.
|
||||||
* Detached limbs now have properly working LODs, instead of rendering the normal and low-detail models at the same time.
|
* Detached limbs now have properly working LODs, instead of rendering the normal and low-detail models at the same time.
|
||||||
* Low Brightness options now load and save correctly, instead of reverting to overly bright values.
|
* Low Brightness options now load and save correctly, instead of reverting to overly bright values.
|
||||||
* Support for the `brakelights` dummy has been restored, allowing brake and reverse lights to work as they did in the PS2 version, rather than always sharing the same placement with the tail lights.
|
* Support for the `brakelights` dummy has been restored, allowing brake and reverse lights to work as they did in the PS2 version, rather than always sharing the same placement with the tail lights.
|
||||||
|
* The correct window icon is now displayed.
|
||||||
* ⚙️ Fixed siren corona placements in Firetruck, Ambulance, and Enforcer.
|
* ⚙️ Fixed siren corona placements in Firetruck, Ambulance, and Enforcer.
|
||||||
* ⚙️ Fixed taxi light corona placement for Taxi.
|
* ⚙️ Fixed taxi light corona placement for Taxi.
|
||||||
* ⚙️ Fixed police chopper's searchlight placement.
|
* ⚙️ Fixed police chopper's searchlight placement.
|
||||||
|
|
|
@ -229,6 +229,16 @@ namespace Common {
|
||||||
}
|
}
|
||||||
TXN_CATCH();
|
TXN_CATCH();
|
||||||
|
|
||||||
|
// III: Patch the icon handle to fix missing window icon
|
||||||
|
// (This is fixed since VC)
|
||||||
|
try
|
||||||
|
{
|
||||||
|
auto addr = get_pattern("c7 44 24 1c 00 00 00 00 c7 44 24 08 00 20 00", 0x4);
|
||||||
|
HICON wndIconIII = LoadIconA(GetModuleHandleA(nullptr), MAKEINTRESOURCEA(0x412)); // Group icon ID
|
||||||
|
|
||||||
|
Patch<HICON>(addr, wndIconIII);
|
||||||
|
}
|
||||||
|
TXN_CATCH();
|
||||||
|
|
||||||
// No censorships
|
// No censorships
|
||||||
try
|
try
|
||||||
|
@ -249,4 +259,4 @@ namespace Common {
|
||||||
TXN_CATCH();
|
TXN_CATCH();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -194,37 +194,37 @@ void ResetMousePos()
|
||||||
orgConstructRenderList();
|
orgConstructRenderList();
|
||||||
}
|
}
|
||||||
|
|
||||||
void __declspec(naked) M16StatsFix()
|
__declspec(naked) void M16StatsFix()
|
||||||
{
|
{
|
||||||
_asm
|
_asm
|
||||||
{
|
{
|
||||||
add eax, 34h
|
add eax, 0x34
|
||||||
add ebx, 34h
|
add ebx, 0x34
|
||||||
mov ecx, [InstantHitsFiredByPlayer]
|
mov ecx, InstantHitsFiredByPlayer
|
||||||
inc [ecx]
|
inc dword ptr [ecx]
|
||||||
retn
|
ret
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void __declspec(naked) HeadlightsFix()
|
static const float fMinusOne = -1.0f;
|
||||||
|
__declspec(naked) void HeadlightsFix()
|
||||||
{
|
{
|
||||||
static const float fMinusOne = -1.0f;
|
|
||||||
_asm
|
_asm
|
||||||
{
|
{
|
||||||
fld [esp+708h-690h]
|
fld dword ptr [esp+0x708-0x690]
|
||||||
fcomp fMinusOne
|
fcomp fMinusOne
|
||||||
fnstsw ax
|
fnstsw ax
|
||||||
and ah, 5
|
and ah, 5
|
||||||
cmp ah, 1
|
cmp ah, 1
|
||||||
jnz HeadlightsFix_DontLimit
|
jnz HeadlightsFix_DontLimit
|
||||||
fld fMinusOne
|
fld fMinusOne
|
||||||
fstp [esp+708h-690h]
|
fstp dword ptr [esp+0x708-0x690]
|
||||||
|
|
||||||
HeadlightsFix_DontLimit:
|
HeadlightsFix_DontLimit:
|
||||||
fld [esp+708h-690h]
|
fld dword ptr [esp+0x708-0x690]
|
||||||
fabs
|
fabs
|
||||||
fld st
|
fld st
|
||||||
jmp [HeadlightsFix_JumpBack]
|
jmp HeadlightsFix_JumpBack
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -312,68 +312,68 @@ float FixedRefValue()
|
||||||
return 1.0f;
|
return 1.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
void __declspec(naked) SubtitlesShadowFix()
|
__declspec(naked) void SubtitlesShadowFix()
|
||||||
{
|
{
|
||||||
_asm
|
_asm
|
||||||
{
|
{
|
||||||
push eax
|
push eax
|
||||||
call Recalculate
|
call Recalculate
|
||||||
fadd [esp+50h+8]
|
fadd dword ptr [esp+0x50+8]
|
||||||
fadd [fShadowYSize]
|
fadd fShadowYSize
|
||||||
jmp SubtitlesShadowFix_JumpBack
|
jmp SubtitlesShadowFix_JumpBack
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void __declspec(naked) III_SensResetFix()
|
__declspec(naked) void III_SensResetFix()
|
||||||
{
|
{
|
||||||
_asm
|
_asm
|
||||||
{
|
{
|
||||||
mov ecx, 3A76h
|
mov ecx, 0x3A76
|
||||||
mov edi, ebp
|
mov edi, ebp
|
||||||
fld dword ptr [ebp+194h]
|
fld dword ptr [ebp+0x194]
|
||||||
fld dword ptr [ebp+198h]
|
fld dword ptr [ebp+0x198]
|
||||||
rep stosd
|
rep stosd
|
||||||
fstp dword ptr [ebp+198h]
|
fstp dword ptr [ebp+0x198]
|
||||||
fstp dword ptr [ebp+194h]
|
fstp dword ptr [ebp+0x194]
|
||||||
retn
|
ret
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void* RadarBoundsCheckCoordBlip_JumpBack = AddressByVersion<void*>(0x4A55B8, 0x4A56A8, 0x4A5638);
|
static void* RadarBoundsCheckCoordBlip_JumpBack = AddressByVersion<void*>(0x4A55B8, 0x4A56A8, 0x4A5638);
|
||||||
static void* RadarBoundsCheckCoordBlip_Count = AddressByVersion<void*>(0x4A55AF, 0x4A569F, 0x4A562F);
|
static void* RadarBoundsCheckCoordBlip_Count = AddressByVersion<void*>(0x4A55AF, 0x4A569F, 0x4A562F);
|
||||||
void __declspec(naked) RadarBoundsCheckCoordBlip()
|
__declspec(naked) void RadarBoundsCheckCoordBlip()
|
||||||
{
|
{
|
||||||
_asm
|
_asm
|
||||||
{
|
{
|
||||||
mov edx, dword ptr [RadarBoundsCheckCoordBlip_Count]
|
mov edx, RadarBoundsCheckCoordBlip_Count
|
||||||
cmp cl, byte ptr [edx]
|
cmp cl, byte ptr [edx]
|
||||||
jnb OutOfBounds
|
jnb OutOfBounds
|
||||||
mov edx, ecx
|
mov edx, ecx
|
||||||
mov eax, [esp+4]
|
mov eax, [esp+4]
|
||||||
jmp RadarBoundsCheckCoordBlip_JumpBack
|
jmp RadarBoundsCheckCoordBlip_JumpBack
|
||||||
|
|
||||||
OutOfBounds:
|
OutOfBounds:
|
||||||
or eax, -1
|
or eax, -1
|
||||||
fcompp
|
fcompp
|
||||||
retn
|
ret
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void* RadarBoundsCheckEntityBlip_JumpBack = AddressByVersion<void*>(0x4A565E, 0x4A574E, 0x4A56DE);
|
static void* RadarBoundsCheckEntityBlip_JumpBack = AddressByVersion<void*>(0x4A565E, 0x4A574E, 0x4A56DE);
|
||||||
void __declspec(naked) RadarBoundsCheckEntityBlip()
|
__declspec(naked) void RadarBoundsCheckEntityBlip()
|
||||||
{
|
{
|
||||||
_asm
|
_asm
|
||||||
{
|
{
|
||||||
mov edx, dword ptr [RadarBoundsCheckCoordBlip_Count]
|
mov edx, RadarBoundsCheckCoordBlip_Count
|
||||||
cmp cl, byte ptr [edx]
|
cmp cl, byte ptr [edx]
|
||||||
jnb OutOfBounds
|
jnb OutOfBounds
|
||||||
mov edx, ecx
|
mov edx, ecx
|
||||||
mov eax, [esp+4]
|
mov eax, [esp+4]
|
||||||
jmp RadarBoundsCheckEntityBlip_JumpBack
|
jmp RadarBoundsCheckEntityBlip_JumpBack
|
||||||
|
|
||||||
OutOfBounds:
|
OutOfBounds:
|
||||||
or eax, -1
|
or eax, -1
|
||||||
retn
|
ret
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -411,11 +411,12 @@ unsigned int __cdecl AutoPilotTimerCalculation_III(unsigned int nTimer, int nSca
|
||||||
return nTimer - static_cast<unsigned int>(nScaleFactor * fScaleCoef);
|
return nTimer - static_cast<unsigned int>(nScaleFactor * fScaleCoef);
|
||||||
}
|
}
|
||||||
|
|
||||||
void __declspec(naked) AutoPilotTimerFix_III()
|
__declspec(naked) void AutoPilotTimerFix_III()
|
||||||
{
|
{
|
||||||
_asm {
|
_asm
|
||||||
push dword ptr[esp + 0x4]
|
{
|
||||||
push dword ptr[ebx + 0x10]
|
push dword ptr [esp + 0x4]
|
||||||
|
push dword ptr [ebx + 0x10]
|
||||||
push eax
|
push eax
|
||||||
call AutoPilotTimerCalculation_III
|
call AutoPilotTimerCalculation_III
|
||||||
add esp, 0xC
|
add esp, 0xC
|
||||||
|
@ -424,7 +425,7 @@ void __declspec(naked) AutoPilotTimerFix_III()
|
||||||
pop ebp
|
pop ebp
|
||||||
pop esi
|
pop esi
|
||||||
pop ebx
|
pop ebx
|
||||||
retn 4
|
ret 4
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -576,22 +577,22 @@ namespace SirenSwitchingFix
|
||||||
// ============= Fixed vehicles exploding twice if the driver leaves the car while it's exploding =============
|
// ============= Fixed vehicles exploding twice if the driver leaves the car while it's exploding =============
|
||||||
namespace RemoveDriverStatusFix
|
namespace RemoveDriverStatusFix
|
||||||
{
|
{
|
||||||
__declspec(naked) void RemoveDriver_SetStatus()
|
__declspec(naked) static void RemoveDriver_SetStatus()
|
||||||
{
|
{
|
||||||
// if (m_nStatus != STATUS_WRECKED)
|
// if (m_nStatus != STATUS_WRECKED)
|
||||||
// m_nStatus = STATUS_ABANDONED;
|
// m_nStatus = STATUS_ABANDONED;
|
||||||
_asm
|
_asm
|
||||||
{
|
{
|
||||||
mov ah, [ecx+50h]
|
mov ah, [ecx+0x50]
|
||||||
mov al, ah
|
mov al, ah
|
||||||
and ah, 0F8h
|
and ah, 0xF8
|
||||||
cmp ah, 28h
|
cmp ah, 0x28
|
||||||
je DontSetStatus
|
je DontSetStatus
|
||||||
and al, 7
|
and al, 7
|
||||||
or al, 20h
|
or al, 0x20
|
||||||
|
|
||||||
DontSetStatus:
|
DontSetStatus:
|
||||||
retn
|
ret
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -623,17 +624,17 @@ namespace EvasiveDiveFix
|
||||||
return CGeneral::LimitRadianAngle(angle);
|
return CGeneral::LimitRadianAngle(angle);
|
||||||
}
|
}
|
||||||
|
|
||||||
__declspec(naked) void CalculateAngle_Hook()
|
__declspec(naked) static void CalculateAngle_Hook()
|
||||||
{
|
{
|
||||||
_asm
|
_asm
|
||||||
{
|
{
|
||||||
push dword ptr [esi+7Ch]
|
push dword ptr [esi+0x7C]
|
||||||
push dword ptr [esi+78h]
|
push dword ptr [esi+0x78]
|
||||||
call CalculateAngle
|
call CalculateAngle
|
||||||
add esp, 8
|
add esp, 8
|
||||||
|
|
||||||
mov ecx, ebp
|
mov ecx, ebp
|
||||||
retn
|
ret
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -651,7 +652,7 @@ namespace NullTerminatedLines
|
||||||
{
|
{
|
||||||
mov eax, [esp+4]
|
mov eax, [esp+4]
|
||||||
mov byte ptr [eax+ecx], 0
|
mov byte ptr [eax+ecx], 0
|
||||||
jmp [orgSscanf_LoadPath]
|
jmp orgSscanf_LoadPath
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -662,7 +663,7 @@ namespace NullTerminatedLines
|
||||||
{
|
{
|
||||||
mov eax, [esp+4]
|
mov eax, [esp+4]
|
||||||
mov byte ptr [eax+ecx], 0
|
mov byte ptr [eax+ecx], 0
|
||||||
jmp [orgSscanf1]
|
jmp orgSscanf1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -670,12 +671,12 @@ namespace NullTerminatedLines
|
||||||
{
|
{
|
||||||
_asm
|
_asm
|
||||||
{
|
{
|
||||||
mov ecx, [gString]
|
mov ecx, gString
|
||||||
mov byte ptr [ecx+edx], 0
|
mov byte ptr [ecx+edx], 0
|
||||||
mov ecx, [esi]
|
mov ecx, [esi]
|
||||||
inc ebp
|
inc ebp
|
||||||
add ecx, [esp+0ACh-98h]
|
add ecx, [esp+0xAC-0x98]
|
||||||
retn
|
ret
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -705,14 +706,14 @@ namespace DodoKeyboardControls
|
||||||
{
|
{
|
||||||
_asm
|
_asm
|
||||||
{
|
{
|
||||||
call [orgFindPlayerVehicle]
|
call orgFindPlayerVehicle
|
||||||
mov ecx, [bAllDodosCheat]
|
mov ecx, bAllDodosCheat
|
||||||
cmp byte ptr [ecx], 0
|
cmp byte ptr [ecx], 0
|
||||||
je CheatDisabled
|
je CheatDisabled
|
||||||
mov byte ptr [esp+1Ch-14h], 1
|
mov byte ptr [esp+0x1C-0x14], 1
|
||||||
|
|
||||||
CheatDisabled:
|
CheatDisabled:
|
||||||
retn
|
ret
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -768,11 +769,11 @@ namespace GenerateNewPickup_ReuseObjectFix
|
||||||
static void* pPickupObject;
|
static void* pPickupObject;
|
||||||
static void (*orgGiveUsAPickUpObject)(int);
|
static void (*orgGiveUsAPickUpObject)(int);
|
||||||
|
|
||||||
__declspec(naked) void GiveUsAPickUpObject_CleanUpObject()
|
__declspec(naked) static void GiveUsAPickUpObject_CleanUpObject()
|
||||||
{
|
{
|
||||||
_asm
|
_asm
|
||||||
{
|
{
|
||||||
mov eax, [pPickupObject]
|
mov eax, pPickupObject
|
||||||
add eax, ebp
|
add eax, ebp
|
||||||
mov eax, [eax]
|
mov eax, [eax]
|
||||||
test eax, eax
|
test eax, eax
|
||||||
|
@ -781,7 +782,7 @@ namespace GenerateNewPickup_ReuseObjectFix
|
||||||
mov edi, eax
|
mov edi, eax
|
||||||
|
|
||||||
push edi
|
push edi
|
||||||
call [WorldRemove]
|
call WorldRemove
|
||||||
add esp, 4
|
add esp, 4
|
||||||
|
|
||||||
// Call dtor
|
// Call dtor
|
||||||
|
@ -793,7 +794,7 @@ namespace GenerateNewPickup_ReuseObjectFix
|
||||||
pop edi
|
pop edi
|
||||||
|
|
||||||
NoPickup:
|
NoPickup:
|
||||||
jmp [orgGiveUsAPickUpObject]
|
jmp orgGiveUsAPickUpObject
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2499,4 +2500,4 @@ extern "C" __declspec(dllexport)
|
||||||
uint32_t GetBuildNumber()
|
uint32_t GetBuildNumber()
|
||||||
{
|
{
|
||||||
return (SILENTPATCH_REVISION_ID << 8) | SILENTPATCH_BUILD_ID;
|
return (SILENTPATCH_REVISION_ID << 8) | SILENTPATCH_BUILD_ID;
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -669,12 +669,12 @@ float FixedRefValue()
|
||||||
return 1.0f;
|
return 1.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
void __declspec(naked) SubtitlesShadowFix()
|
__declspec(naked) void SubtitlesShadowFix()
|
||||||
{
|
{
|
||||||
_asm
|
_asm
|
||||||
{
|
{
|
||||||
mov [esp], eax
|
mov [esp], eax
|
||||||
fild [esp]
|
fild dword ptr [esp]
|
||||||
push eax
|
push eax
|
||||||
lea eax, [esp+20h-18h]
|
lea eax, [esp+20h-18h]
|
||||||
push eax
|
push eax
|
||||||
|
@ -685,14 +685,14 @@ void __declspec(naked) SubtitlesShadowFix()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void __declspec(naked) CreateInstance_BikeFix()
|
__declspec(naked) void CreateInstance_BikeFix()
|
||||||
{
|
{
|
||||||
_asm
|
_asm
|
||||||
{
|
{
|
||||||
push eax
|
push eax
|
||||||
mov ecx, ebp
|
mov ecx, ebp
|
||||||
call CVehicleModelInfo::GetExtrasFrame
|
call CVehicleModelInfo::GetExtrasFrame
|
||||||
retn
|
ret
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -731,11 +731,12 @@ unsigned int __cdecl AutoPilotTimerCalculation_VC(unsigned int nTimer, int nScal
|
||||||
return nTimer - static_cast<unsigned int>(nScaleFactor * fScaleCoef);
|
return nTimer - static_cast<unsigned int>(nScaleFactor * fScaleCoef);
|
||||||
}
|
}
|
||||||
|
|
||||||
void __declspec(naked) AutoPilotTimerFix_VC()
|
__declspec(naked) void AutoPilotTimerFix_VC()
|
||||||
{
|
{
|
||||||
_asm {
|
_asm
|
||||||
push dword ptr[esp + 0xC]
|
{
|
||||||
push dword ptr[ebx + 0x10]
|
push dword ptr [esp + 0xC]
|
||||||
|
push dword ptr [ebx + 0x10]
|
||||||
push eax
|
push eax
|
||||||
call AutoPilotTimerCalculation_VC
|
call AutoPilotTimerCalculation_VC
|
||||||
add esp, 0xC
|
add esp, 0xC
|
||||||
|
@ -743,7 +744,7 @@ void __declspec(naked) AutoPilotTimerFix_VC()
|
||||||
add esp, 0x30
|
add esp, 0x30
|
||||||
pop ebp
|
pop ebp
|
||||||
pop ebx
|
pop ebx
|
||||||
retn 4
|
ret 4
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -863,23 +864,23 @@ namespace Localization
|
||||||
// ============= Corrected FBI Washington sirens sound =============
|
// ============= Corrected FBI Washington sirens sound =============
|
||||||
namespace SirenSwitchingFix
|
namespace SirenSwitchingFix
|
||||||
{
|
{
|
||||||
void __declspec(naked) IsFBIRanchOrFBICar()
|
__declspec(naked) static void IsFBIRanchOrFBICar()
|
||||||
{
|
{
|
||||||
_asm
|
_asm
|
||||||
{
|
{
|
||||||
mov dword ptr [esi+1Ch], 1Ch
|
mov dword ptr [esi+0x1C], 0x1C
|
||||||
|
|
||||||
// al = 0 - high pitched siren
|
// al = 0 - high pitched siren
|
||||||
// al = 1 - normal siren
|
// al = 1 - normal siren
|
||||||
cmp dword ptr [ebp+14h], 90 // fbiranch
|
cmp dword ptr [ebp+0x14], 90 // fbiranch
|
||||||
je IsFBIRanchOrFBICar_HighPitchSiren
|
je IsFBIRanchOrFBICar_HighPitchSiren
|
||||||
cmp dword ptr [ebp+14h], 17 // fbicar
|
cmp dword ptr [ebp+0x14], 17 // fbicar
|
||||||
setne al
|
setne al
|
||||||
retn
|
ret
|
||||||
|
|
||||||
IsFBIRanchOrFBICar_HighPitchSiren:
|
IsFBIRanchOrFBICar_HighPitchSiren:
|
||||||
xor al, al
|
xor al, al
|
||||||
retn
|
ret
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -945,22 +946,22 @@ namespace FBISirenCoronaFix
|
||||||
// ============= Fixed vehicles exploding twice if the driver leaves the car while it's exploding =============
|
// ============= Fixed vehicles exploding twice if the driver leaves the car while it's exploding =============
|
||||||
namespace RemoveDriverStatusFix
|
namespace RemoveDriverStatusFix
|
||||||
{
|
{
|
||||||
__declspec(naked) void RemoveDriver_SetStatus()
|
__declspec(naked) static void RemoveDriver_SetStatus()
|
||||||
{
|
{
|
||||||
// if (m_nStatus != STATUS_WRECKED)
|
// if (m_nStatus != STATUS_WRECKED)
|
||||||
// m_nStatus = STATUS_ABANDONED;
|
// m_nStatus = STATUS_ABANDONED;
|
||||||
_asm
|
_asm
|
||||||
{
|
{
|
||||||
mov cl, [ebx+50h]
|
mov cl, [ebx+0x50]
|
||||||
mov al, cl
|
mov al, cl
|
||||||
and cl, 0F8h
|
and cl, 0xF8
|
||||||
cmp cl, 28h
|
cmp cl, 0x28
|
||||||
je DontSetStatus
|
je DontSetStatus
|
||||||
and al, 7
|
and al, 7
|
||||||
or al, 20h
|
or al, 0x20
|
||||||
|
|
||||||
DontSetStatus:
|
DontSetStatus:
|
||||||
retn
|
ret
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1038,7 +1039,7 @@ namespace NullTerminatedLines
|
||||||
{
|
{
|
||||||
mov eax, [esp+4]
|
mov eax, [esp+4]
|
||||||
mov byte ptr [eax+ecx], 0
|
mov byte ptr [eax+ecx], 0
|
||||||
jmp [orgSscanf_LoadPath]
|
jmp orgSscanf_LoadPath
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1066,9 +1067,9 @@ namespace PickupEffectsFixes
|
||||||
{
|
{
|
||||||
_asm
|
_asm
|
||||||
{
|
{
|
||||||
mov byte ptr [esp+184h-170h], 0
|
mov byte ptr [esp+0x184-0x170], 0
|
||||||
mov dword ptr [esp+184h-174h], 37
|
mov dword ptr [esp+0x184-0x174], 37
|
||||||
retn
|
ret
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1078,7 +1079,7 @@ namespace PickupEffectsFixes
|
||||||
{
|
{
|
||||||
cmp ecx, 294 // minigun2
|
cmp ecx, 294 // minigun2
|
||||||
jnz NotMinigun2
|
jnz NotMinigun2
|
||||||
mov byte ptr [esp+184h-170h], 0
|
mov byte ptr [esp+0x184-0x170], 0
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
jmp Return
|
jmp Return
|
||||||
|
|
||||||
|
@ -1087,7 +1088,7 @@ namespace PickupEffectsFixes
|
||||||
|
|
||||||
Return:
|
Return:
|
||||||
mov ebx, ecx
|
mov ebx, ecx
|
||||||
retn
|
ret
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1109,21 +1110,21 @@ namespace IsPlayerTargettingCharFix
|
||||||
{
|
{
|
||||||
test bl, bl
|
test bl, bl
|
||||||
jnz ReturnToUpdateCompareFlag
|
jnz ReturnToUpdateCompareFlag
|
||||||
mov eax, [bUseMouse3rdPerson]
|
mov eax, bUseMouse3rdPerson
|
||||||
cmp byte ptr [eax], 0
|
cmp byte ptr [eax], 0
|
||||||
jne CmpAndReturn
|
jne CmpAndReturn
|
||||||
mov ecx, [TheCamera]
|
mov ecx, TheCamera
|
||||||
call [Using1stPersonWeaponMode]
|
call Using1stPersonWeaponMode
|
||||||
test al, al
|
test al, al
|
||||||
jz ReturnToUpdateCompareFlag
|
jz ReturnToUpdateCompareFlag
|
||||||
|
|
||||||
CmpAndReturn:
|
CmpAndReturn:
|
||||||
cmp byte ptr [esp+11Ch-10Ch], 0
|
cmp byte ptr [esp+0x11C-0x10C], 0
|
||||||
retn
|
ret
|
||||||
|
|
||||||
ReturnToUpdateCompareFlag:
|
ReturnToUpdateCompareFlag:
|
||||||
xor al, al
|
xor al, al
|
||||||
retn
|
ret
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1214,8 +1215,8 @@ namespace SelectableBackfaceCulling
|
||||||
{
|
{
|
||||||
push ebx
|
push ebx
|
||||||
mov ebx, ecx
|
mov ebx, ecx
|
||||||
cmp dword ptr [ebx+4Ch], 0
|
cmp dword ptr [ebx+0x4C], 0
|
||||||
jmp [EntityRender_Prologue_JumpBack]
|
jmp EntityRender_Prologue_JumpBack
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1390,7 +1391,7 @@ namespace TommyFistShakeWithWeapons
|
||||||
return !bWeaponAllowsFistShake;
|
return !bWeaponAllowsFistShake;
|
||||||
}
|
}
|
||||||
|
|
||||||
static __declspec(naked) void CheckWeaponGroupHook()
|
__declspec(naked) static void CheckWeaponGroupHook()
|
||||||
{
|
{
|
||||||
_asm
|
_asm
|
||||||
{
|
{
|
||||||
|
@ -1398,7 +1399,7 @@ namespace TommyFistShakeWithWeapons
|
||||||
call WeaponProhibitsFistShake
|
call WeaponProhibitsFistShake
|
||||||
add esp, 4
|
add esp, 4
|
||||||
test al, al
|
test al, al
|
||||||
retn
|
ret
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2982,4 +2983,4 @@ extern "C" __declspec(dllexport)
|
||||||
uint32_t GetBuildNumber()
|
uint32_t GetBuildNumber()
|
||||||
{
|
{
|
||||||
return (SILENTPATCH_REVISION_ID << 8) | SILENTPATCH_BUILD_ID;
|
return (SILENTPATCH_REVISION_ID << 8) | SILENTPATCH_BUILD_ID;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue