Skip to content

Commit 5b871c6

Browse files
committed
ModelInfo limits for VC
1 parent 4020468 commit 5b871c6

7 files changed

+197
-27
lines changed

doc/limit_adjuster_gta3vcsa.ini

+5-2
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,13 @@ AudioScriptObj = 192
5353
ColModel = 10500
5454
AlphaEntityList = 1250
5555
VisibleEntityPtrs = unlimited
56+
AtomicModels = unlimited
5657
TimeModels = unlimited
58+
ClumpModels = unlimited
59+
VehicleModels = unlimited
60+
PedModels = unlimited
61+
WeaponModels = unlimited
5762
OutsideWorldWaterBlocks = 40
58-
StaticShadows = 2048
5963
Coronas = 2048
6064
FrameLimit = 30
6165
MemoryAvailable = 30%
@@ -72,7 +76,6 @@ AlphaEntityList = 1250
7276
VisibleEntityPtrs = unlimited
7377
TimeModels = unlimited
7478
OutsideWorldWaterBlocks = 40
75-
StaticShadows = 2048
7679
Coronas = 2048
7780
FrameLimit = 30
7881
MemoryAvailable = 30%

src/limits/ModelInfo/AtomicModels.cpp

+67-5
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,79 @@
77
#include "utility/dummy_object.hpp"
88

99
typedef dummy_object_vmt<0x20, 0x4C5540> CAtomicModelInfo_SA;
10+
typedef dummy_object_vmt<0x44, 0x5602D0> CAtomicModelInfo_VC;
1011

1112

13+
struct AtomicModelsVC : public StoreAdjuster<CAtomicModelInfo_VC, 0x709EAC, 3885> // T, pDefaultStore, dwDefaultCapacity
14+
{
15+
const char* GetLimitName()
16+
{
17+
return IsVC() ? "AtomicModels" : nullptr;
18+
}
19+
20+
AtomicModelsVC()
21+
{
22+
if (*(DWORD *)0x55FEC1 != 3885) //exe modified by another adjuster
23+
return;
24+
25+
this->SetGrower(0x48C688);
26+
this->AddPointer(0x55F732, 0x0);
27+
this->AddPointer(0x55F755, 0x0);
28+
this->AddPointer(0x55F75B, 0x0);
29+
this->AddPointer(0x55F764, 0x0);
30+
this->AddPointer(0x55F83A, 0x0);
31+
this->AddPointer(0x55F842, 0x0);
32+
this->AddPointer(0x55F858, 0x0);
33+
this->AddPointer(0x55F9BA, 0x0);
34+
this->AddPointer(0x55FB24, 0x0);
35+
this->AddPointer(0x55FB2E, 0x0);
36+
this->AddPointer(0x55FBB3, 0x0);
37+
this->AddPointer(0x55FBB9, 0x0);
38+
this->AddPointer(0x55FBC2, 0x0);
39+
this->AddPointer(0x55FBFA, 0x0);
40+
this->AddPointer(0x55FC17, 0x0);
41+
this->AddPointer(0x55FC1D, 0x0);
42+
this->AddPointer(0x55FC26, 0x0);
43+
this->AddPointer(0x55FC5E, 0x0);
44+
this->AddPointer(0x55FC7B, 0x0);
45+
this->AddPointer(0x55FC81, 0x0);
46+
this->AddPointer(0x55FC8A, 0x0);
47+
this->AddPointer(0x55FCC2, 0x0);
48+
this->AddPointer(0x55FCDF, 0x0);
49+
this->AddPointer(0x55FCE5, 0x0);
50+
this->AddPointer(0x55FCEE, 0x0);
51+
this->AddPointer(0x55FD26, 0x0);
52+
this->AddPointer(0x55FD43, 0x0);
53+
this->AddPointer(0x55FD49, 0x0);
54+
this->AddPointer(0x55FD52, 0x0);
55+
this->AddPointer(0x55FD8A, 0x0);
56+
this->AddPointer(0x55FDA7, 0x0);
57+
this->AddPointer(0x55FDAD, 0x0);
58+
this->AddPointer(0x55FDB6, 0x0);
59+
this->AddPointer(0x55FDEE, 0x0);
60+
this->AddPointer(0x55FE0B, 0x0);
61+
this->AddPointer(0x55FE11, 0x0);
62+
this->AddPointer(0x55FE1A, 0x0);
63+
this->AddPointer(0x55FE52, 0x0);
64+
this->AddPointer(0x55FE6F, 0x0);
65+
this->AddPointer(0x55FE75, 0x0);
66+
this->AddPointer(0x55FE7E, 0x0);
67+
//this->AddPointer(0x55FEE0, 0x0);
68+
//this->AddPointer(0x55FEF3, 0x0);
69+
if (GetLimitName()) injector::MakeNOP(0x55F74C, 5, true);
70+
}
71+
72+
} AtomicModelsVC;
73+
1274
struct AtomicModelsSA : public StoreAdjuster<CAtomicModelInfo_SA, 0xAAE950, 14000> // T, pDefaultStore, dwDefaultCapacity
1375
{
14-
const char* GetLimitName()
76+
const char* GetLimitName()
1577
{
1678
return IsSA()? "AtomicModels" : nullptr;
1779
}
1880

19-
AtomicModelsSA()
20-
{
81+
AtomicModelsSA()
82+
{
2183
this->SetGrower (0x5B3D9A);
2284
this->AddPointer(0x4C63E1, 0x0);
2385
this->AddPointer(0x4C63FE, 0x0);
@@ -56,6 +118,6 @@ struct AtomicModelsSA : public StoreAdjuster<CAtomicModelInfo_SA, 0xAAE950, 1400
56118
this->AddPointer(0x4C69EF, 0x4);
57119
this->AddPointer(0x4C6A2E, 0x4);
58120
this->AddPointer(0x4C68AC, 0x1C);
59-
}
121+
}
60122

61-
} AtomicModelInfoSA;
123+
} AtomicModelInfoSA;

src/limits/ModelInfo/ClumpModels.cpp

+33-4
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,46 @@
77
#include "utility/dummy_object.hpp"
88

99
typedef dummy_object_vmt<0x24, 0x4C56F0> CClumpModelInfo_SA;
10+
typedef dummy_object_vmt<0x30, 0x5601C0> CClumpModelInfo_VC;
1011

12+
struct ClumpModelsVC : public StoreAdjuster<CClumpModelInfo_VC, 0x752988, 5> // T, pDefaultStore, dwDefaultCapacity
13+
{
14+
const char* GetLimitName()
15+
{
16+
return IsVC() ? "ClumpModels" : nullptr;
17+
}
18+
19+
ClumpModelsVC()
20+
{
21+
if (*(char *)0x55FF7A != 5) //exe modified by another adjuster
22+
return;
23+
24+
this->SetGrower(0x48CABA);
25+
this->SetGrower(0x55F642, 0x0);
26+
this->SetGrower(0x55F65D, 0x0);
27+
this->SetGrower(0x55F665, 0x0);
28+
this->SetGrower(0x55F66E, 0x0);
29+
this->SetGrower(0x55F8DE, 0x0);
30+
this->SetGrower(0x55F8E6, 0x0);
31+
this->SetGrower(0x55F903, 0x0);
32+
this->SetGrower(0x55F9EC, 0x0);
33+
this->SetGrower(0x55FB77, 0x0);
34+
//this->SetGrower(0x55FF97, 0x0);
35+
//this->SetGrower(0x55FFAA, 0x0);
36+
if (GetLimitName()) injector::MakeNOP(0x55F655, 5, true);
37+
}
38+
39+
} ClumpModelsVC;
1140

1241
struct ClumpModelsSA : public StoreAdjuster<CClumpModelInfo_SA, 0xB1E958, 92> // T, pDefaultStore, dwDefaultCapacity
1342
{
14-
const char* GetLimitName()
43+
const char* GetLimitName()
1544
{
1645
return IsSA()? "ClumpModels" : nullptr;
1746
}
1847

19-
ClumpModelsSA()
20-
{
48+
ClumpModelsSA()
49+
{
2150
this->SetGrower (0x5B407E, 0x5B413B);
2251
this->AddPointer(0x4C64C9, 0x0);
2352
this->AddPointer(0x4C64E0, 0x0);
@@ -29,6 +58,6 @@ struct ClumpModelsSA : public StoreAdjuster<CClumpModelInfo_SA, 0xB1E958, 92>
2958
//this->AddPointer(0x856291, 0x0);
3059
this->AddPointer(0x4C64D4, 0x4);
3160
this->AddPointer(0x4C674D, 0x4);
32-
}
61+
}
3362

3463
} ClumpModelsSA;

src/limits/ModelInfo/DamageAtomicModels.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@ typedef dummy_object_vmt<0x24, 0x4C55A0> CDamageAtomicModelInfo_SA;
1111

1212
struct DamageAtomicModelsSA : public StoreAdjuster<CDamageAtomicModelInfo_SA, 0xB1BF58, 70> // T, pDefaultStore, dwDefaultCapacity
1313
{
14-
const char* GetLimitName()
14+
const char* GetLimitName()
1515
{
1616
return IsSA()? "DamageAtomicModels" : nullptr;
1717
}
1818

19-
DamageAtomicModelsSA()
20-
{
19+
DamageAtomicModelsSA()
20+
{
2121
this->SetGrower (0x5B3D8E);
2222
this->AddPointer(0x4C640B, 0x0);
2323
this->AddPointer(0x4C6428, 0x0);
@@ -29,6 +29,6 @@ struct DamageAtomicModelsSA : public StoreAdjuster<CDamageAtomicModelInfo_SA, 0x
2929
//this->AddPointer(0x856241, 0x0);
3030
this->AddPointer(0x4C6416, 0x4);
3131
this->AddPointer(0x4C665D, 0x4);
32-
}
32+
}
3333

3434
} DamageAtomicModelSA;

src/limits/ModelInfo/PedModels.cpp

+29-4
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,42 @@
77
#include "utility/dummy_object.hpp"
88

99
typedef dummy_object_vmt<0x44, 0x4C57A0> CPedModelInfo_SA;
10+
typedef dummy_object_vmt<0x48, 0x560120> CPedModelInfo_VC;
1011

12+
struct PedModelsVC : public StoreAdjuster<CPedModelInfo_VC, 0x75CA70, 130> // T, pDefaultStore, dwDefaultCapacity
13+
{
14+
const char* GetLimitName()
15+
{
16+
return IsVC() ? "PedModels" : nullptr;
17+
}
18+
19+
PedModelsVC()
20+
{
21+
this->SetGrower(0x48BDE6);
22+
this->AddPointer(0x55F582, 0x0);
23+
this->AddPointer(0x55F5A3, 0x0);
24+
this->AddPointer(0x55F5AB, 0x0);
25+
this->AddPointer(0x55F5B4, 0x0);
26+
this->AddPointer(0x55F951, 0x0);
27+
this->AddPointer(0x55F959, 0x0);
28+
this->AddPointer(0x55F973, 0x0);
29+
this->AddPointer(0x55F9C4, 0x0);
30+
this->AddPointer(0x55FB4D, 0x0);
31+
//this->AddPointer(0x560015, 0x0);
32+
//this->AddPointer(0x560028, 0x0);
33+
}
34+
35+
} PedModelsVC;
1136

1237
struct PedModelsSA : public StoreAdjuster<CPedModelInfo_SA, 0xB478F8, 278> // T, pDefaultStore, dwDefaultCapacity
1338
{
14-
const char* GetLimitName()
39+
const char* GetLimitName()
1540
{
1641
return IsSA()? "PedModels" : nullptr;
1742
}
1843

19-
PedModelsSA()
20-
{
44+
PedModelsSA()
45+
{
2146
this->SetGrower (0x5B74A7);
2247
this->AddPointer(0x4C6518, 0x0);
2348
this->AddPointer(0x4C652F, 0x0);
@@ -29,6 +54,6 @@ struct PedModelsSA : public StoreAdjuster<CPedModelInfo_SA, 0xB478F8, 278> //
2954
//this->AddPointer(0x8562B1, 0x0);
3055
this->AddPointer(0x4C6523, 0x4);
3156
this->AddPointer(0x4C67AD, 0x4);
32-
}
57+
}
3358

3459
} PedModelsSA;

src/limits/ModelInfo/VehicleModels.cpp

+29-4
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,37 @@
1010
static injector::hook_back<void*(__fastcall*)(void*)> hb_ctor;
1111

1212
typedef dummy_object_vmt<0x308, 0x4C75E0> CVehicleModelInfo_SA;
13+
typedef dummy_object_vmt<0x174, 0x57AA20> CVehicleModelInfo_VC;
1314

1415

16+
struct VehicleModelsVC : public StoreAdjuster<CVehicleModelInfo_VC, 0x752A88, 110> // T, pDefaultStore, dwDefaultCapacity
17+
{
18+
const char* GetLimitName()
19+
{
20+
return IsVC() ? "VehicleModels" : nullptr;
21+
}
22+
23+
VehicleModelsVC()
24+
{
25+
this->SetGrower(0x48BF16);
26+
this->AddPointer(0x55F5D2, 0x0);
27+
this->AddPointer(0x55F5ED, 0x0);
28+
this->AddPointer(0x55F5F3, 0x0);
29+
this->AddPointer(0x55F5FE, 0x0);
30+
this->AddPointer(0x55F919, 0x0);
31+
this->AddPointer(0x55F921, 0x0);
32+
this->AddPointer(0x55F93B, 0x0);
33+
this->AddPointer(0x55F9D8, 0x0);
34+
this->AddPointer(0x55FB62, 0x0);
35+
//this->AddPointer(0x55FFD6, 0x0);
36+
//this->AddPointer(0x55FFE9, 0x0);
37+
}
38+
39+
} VehicleModelsVC;
1540

1641
struct VehicleModelsSA : public StoreAdjuster<CVehicleModelInfo_SA, 0xB1F650, 212> // T, pDefaultStore, dwDefaultCapacity
1742
{
18-
const char* GetLimitName()
43+
const char* GetLimitName()
1944
{
2045
return IsSA()? "VehicleModels" : nullptr;
2146
}
@@ -29,8 +54,8 @@ struct VehicleModelsSA : public StoreAdjuster<CVehicleModelInfo_SA, 0xB1F650, 21
2954
return StoreAdjuster::ChangeLimit(0, value);
3055
}
3156

32-
VehicleModelsSA()
33-
{
57+
VehicleModelsSA()
58+
{
3459
// -----
3560
this->SetGrower (0x5B6FD1);
3661
this->AddPointer(0x4C64ED, 0x0);
@@ -43,7 +68,7 @@ struct VehicleModelsSA : public StoreAdjuster<CVehicleModelInfo_SA, 0xB1F650, 21
4368
//this->AddPointer(0x8562A1, 0x0);
4469
this->AddPointer(0x4C64F8, 0x4);
4570
this->AddPointer(0x4C6780, 0x4);
46-
}
71+
}
4772

4873
// Initialises CVehicleModelInfo::m_apDirtMaterials at CVehicleModelInfo constructor
4974
static void* __fastcall FixConstructor(CVehicleModelInfo_SA* p)

src/limits/ModelInfo/WeaponModels.cpp

+30-4
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,43 @@
77
#include "utility/dummy_object.hpp"
88

99
typedef dummy_object_vmt<0x28, 0x4C5760> CWeaponModelInfo_SA;
10+
typedef dummy_object_vmt<0x48, 0x560220> CWeaponModelInfo_VC;
1011

1112

13+
struct WeaponModelsVC : public StoreAdjuster<CWeaponModelInfo_VC, 0x751F10, 37> // T, pDefaultStore, dwDefaultCapacity
14+
{
15+
const char* GetLimitName()
16+
{
17+
return IsVC() ? "WeaponModels" : nullptr;
18+
}
19+
20+
WeaponModelsVC()
21+
{
22+
this->SetGrower(0x48CA2B);
23+
this->AddPointer(0x55F692, 0x0);
24+
this->AddPointer(0x55F6AF, 0x0);
25+
this->AddPointer(0x55F6B5, 0x0);
26+
this->AddPointer(0x55F6BE, 0x0);
27+
this->AddPointer(0x55F8A9, 0x0);
28+
this->AddPointer(0x55F8B1, 0x0);
29+
this->AddPointer(0x55F8C8, 0x0);
30+
this->AddPointer(0x55F9E2, 0x0);
31+
this->AddPointer(0x55FB8C, 0x0);
32+
//this->AddPointer(0x55FF5B, 0x0);
33+
//this->AddPointer(0x55FF6E, 0x0);
34+
}
35+
36+
} WeaponModelsVC;
37+
1238
struct WeaponModelsSA : public StoreAdjuster<CWeaponModelInfo_SA, 0xB1E158, 51> // T, pDefaultStore, dwDefaultCapacity
1339
{
14-
const char* GetLimitName()
40+
const char* GetLimitName()
1541
{
1642
return IsSA()? "WeaponModels" : nullptr;
1743
}
1844

19-
WeaponModelsSA()
20-
{
45+
WeaponModelsSA()
46+
{
2147
this->SetGrower (0x5B3FE6);
2248
this->AddPointer(0x4C64A5, 0x0);
2349
this->AddPointer(0x4C64BC, 0x0);
@@ -29,7 +55,7 @@ struct WeaponModelsSA : public StoreAdjuster<CWeaponModelInfo_SA, 0xB1E158, 51>
2955
//this->AddPointer(0x856281, 0x0);
3056
this->AddPointer(0x4C64B0, 0x4);
3157
this->AddPointer(0x4C671D, 0x4);
32-
}
58+
}
3359

3460
} WeaponModelsSA;
3561

0 commit comments

Comments
 (0)