31.10-2017 1:50
5.10.2017 20:49
8.10.2017 16:31
9.10.2017 12:23
More simplified formulas
I added all the missing parts and all car models.
The only problem is that I can not find the algorithm of a letter to src.
For comparison, I compared Car Tuning Nissan Skyline GTR R34 values were different. (QtNFSW vs NFSW). Used performanceparts Amerikon Improved Series.
[Only registered and activated users can see links. Click Here To Register...]
(GFX CUSTOM Parts)
[Only registered and activated users can see links. Click Here To Register...]
(GFX Original Parts)
[Only registered and activated users can see links. Click Here To Register...]
(Old calculator without elite series)
[Only registered and activated users can see links. Click Here To Register...]
PERFORMANCE PARTS.XLSX
[Only registered and activated users can see links. Click Here To Register...]
The only problem is that I can not find the algorithm of a letter to src.
For comparison, I compared Car Tuning Nissan Skyline GTR R34 values were different. (QtNFSW vs NFSW). Used performanceparts Amerikon Improved Series.
[Only registered and activated users can see links. Click Here To Register...]
(GFX CUSTOM Parts)
[Only registered and activated users can see links. Click Here To Register...]
(GFX Original Parts)
[Only registered and activated users can see links. Click Here To Register...]
(Old calculator without elite series)
[Only registered and activated users can see links. Click Here To Register...]
PERFORMANCE PARTS.XLSX
[Only registered and activated users can see links. Click Here To Register...]
5.10.2017 20:49
UPDATE: I found one function but I do not understand the assembler code.
1.Open Cheat Engine
2.Play NFSW
3.load NFSW to CE
4.click Memory View
5. goto adress(Crtl+G): 00672340
6.Left Mouse (on the first Push ebp)
7.Break and trace instruction
8.OK ; Yes;
9.Insert Some part into your car. (sometimes Freeze game)
10.Trace recorded.
11.save trace to Txt
D280A1F4 - Handling
A2E2BBBE - Acceleration
55B54322 - Top Speed
in NFSVlted
0 - Stock
1 - Calc. Handling
2 - Calc. Acceleration
3 - Calc. Top Speed
Car values (pvehicle) - Float type
Part Values (performancepart) - 4 byte /dword
2.Play NFSW
3.load NFSW to CE
4.click Memory View
5. goto adress(Crtl+G): 00672340
6.Left Mouse (on the first Push ebp)
7.Break and trace instruction
8.OK ; Yes;
9.Insert Some part into your car. (sometimes Freeze game)
10.Trace recorded.
11.save trace to Txt
D280A1F4 - Handling
A2E2BBBE - Acceleration
55B54322 - Top Speed
in NFSVlted
0 - Stock
1 - Calc. Handling
2 - Calc. Acceleration
3 - Calc. Top Speed
Car values (pvehicle) - Float type
Part Values (performancepart) - 4 byte /dword
8.10.2017 16:31
UPDATE:
I did not believe my own eyes. Just help the Cheat engine and one written script for Excel I would not get the result.from Function 672340 I had to run Break and Trace instructions (in CE)
Script for Excel
[Only registered and activated users can see links. Click Here To Register...]
Updated Document.
11.10 11:01 Now working on reverse calculates tuning.
13.10 11:09 Updated [Only registered and activated users can see links. Click Here To Register...]
The program calculates the value of a car tuning through a set utils.cpp do not know which features should I rewrite (for new Algorithm).
Utils.cpp
in Excel:
More formulas in one (too complicated)
I did not believe my own eyes. Just help the Cheat engine and one written script for Excel I would not get the result.from Function 672340 I had to run Break and Trace instructions (in CE)
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
Script for Excel
[Only registered and activated users can see links. Click Here To Register...]
Updated Document.
11.10 11:01 Now working on reverse calculates tuning.
13.10 11:09 Updated [Only registered and activated users can see links. Click Here To Register...]
The program calculates the value of a car tuning through a set utils.cpp do not know which features should I rewrite (for new Algorithm).
Utils.cpp
Code:
tValueF utils::ComputeStatF(const tTierF& _Tier, const tValue& _Basis, const tPercent& _Percent)
{
return ( BASE + _Tier * TIERSTEP - _Basis ) * _Percent / PSCALE + _Basis;
}
tPercentF utils::ComputePercentF(const tTierF& _Tier, const tValue& _Basis, const tValue& _Stat)
{
return PSCALE * ( _Stat - _Basis ) / ( BASE + _Tier * TIERSTEP - _Basis );
}
tValue utils::ComputeStatI(const tTierF& _Tier, const tValue& _Basis, const tPercent& _Percent)
{
return (tValue)( ( BASE + _Tier * TIERSTEP - _Basis ) * _Percent / PSCALE + _Basis );
}
tPercent utils::ComputePercentI(const tTierF& _Tier, const tValue& _Basis, const tValue& _Stat)
{
return qCeil(PSCALE * ( _Stat - _Basis ) / ( BASE + _Tier * TIERSTEP - _Basis ));
}
tValue utils::InverseStatI(const tTierF& _Tier, const tValue& _Value, const tPercent& _Percent)
{
return (tValue)qCeil(( PSCALE * _Value - _Percent * ( BASE + TIERSTEP * _Tier ) ) / ( PSCALE - _Percent ));
}
tValueF utils::InverseStatF(const tTierF& _Tier, const tValue& _Value, const tPercent& _Percent)
{
return ( PSCALE * _Value - _Percent * ( BASE + TIERSTEP * _Tier ) ) / ( PSCALE - _Percent );
in Excel:
More formulas in one (too complicated)
For Handling Attribute
For Acceleration Attribute
for TopSpeed Attribute
[Only registered and activated users can see links. Click Here To Register...]
FLOOR((((1-((1/((((HandlingSUM*0,01)+(AccelerationSUM*0,01)+(TopS peedSUM*0,01))*0,666666666666666)+1))*(HandlingSUM *0,01)))-((1/((((HandlingSUM*0,01)+(AccelerationSUM*0,01)+(TopS peedSUM*0,01))*0,666666666666666)+1))*(Acceleratio nSUM*0,01)))-((1/((((HandlingSUM*0,01)+(AccelerationSUM*0,01)+(TopS peedSUM*0,01))*0,666666666666666)+1))*(TopSpeedSUM *0,01)))*handling+((h_hnd_h1*((1/((((HandlingSUM*0,01)+(AccelerationSUM*0,01)+(TopS peedSUM*0,01))*0,666666666666666)+1))*(HandlingSUM *0,01)))+(h_acc_h2*((1/((((HandlingSUM*0,01)+(AccelerationSUM*0,01)+(TopS peedSUM*0,01))*0,666666666666666)+1))*(Acceleratio nSUM*0,01)))+(h_hnd_h3*((1/((((HandlingSUM*0,01)+(AccelerationSUM*0,01)+(TopS peedSUM*0,01))*0,666666666666666)+1))*(TopSpeedSUM *0,01))));1)
For Acceleration Attribute
FLOOR((((1-((1/((((HandlingSUM*0,01)+(AccelerationSUM*0,01)+(TopS peedSUM*0,01))*0,666666666666666)+1))*(HandlingSUM *0,01)))-((1/((((HandlingSUM*0,01)+(AccelerationSUM*0,01)+(TopS peedSUM*0,01))*0,666666666666666)+1))*(Acceleratio nSUM*0,01)))-((1/((((HandlingSUM*0,01)+(AccelerationSUM*0,01)+(TopS peedSUM*0,01))*0,666666666666666)+1))*(TopSpeedSUM *0,01)))*acceleration+((a_hnd_a1*((1/((((HandlingSUM*0,01)+(AccelerationSUM*0,01)+(TopS peedSUM*0,01))*0,666666666666666)+1))*(HandlingSUM *0,01)))+(a_acc_a2*((1/((((HandlingSUM*0,01)+(AccelerationSUM*0,01)+(TopS peedSUM*0,01))*0,666666666666666)+1))*(Acceleratio nSUM*0,01)))+(a_tsp_a3*((1/((((HandlingSUM*0,01)+(AccelerationSUM*0,01)+(TopS peedSUM*0,01))*0,666666666666666)+1))*(TopSpeedSUM *0,01))))
for TopSpeed Attribute
FLOOR((((1-((1/((((HandlingSUM*0,01)+(AccelerationSUM*0,01)+(TopS peedSUM*0,01))*0,666666666666666)+1))*(HandlingSUM *0,01)))-((1/((((HandlingSUM*0,01)+(AccelerationSUM*0,01)+(TopS peedSUM*0,01))*0,666666666666666)+1))*(Acceleratio nSUM*0,01)))-((1/((((HandlingSUM*0,01)+(AccelerationSUM*0,01)+(TopS peedSUM*0,01))*0,666666666666666)+1))*(TopSpeedSUM *0,01)))*topspeed+((t_hnd_t1*((1/((((HandlingSUM*0,01)+(AccelerationSUM*0,01)+(TopS peedSUM*0,01))*0,666666666666666)+1))*(HandlingSUM *0,01)))+(t_acc_t2*((1/((((HandlingSUM*0,01)+(AccelerationSUM*0,01)+(TopS peedSUM*0,01))*0,666666666666666)+1))*(Acceleratio nSUM*0,01)))+(t_tsp_t3*((1/((((HandlingSUM*0,01)+(AccelerationSUM*0,01)+(TopS peedSUM*0,01))*0,666666666666666)+1))*(TopSpeedSUM *0,01)))
[Only registered and activated users can see links. Click Here To Register...]
9.10.2017 12:23
More simplified formulas
Utils.cpp
...
#define RATIOCENT 0,01
#define RATIOFIRST 1
#define TWOHALFTHREE 0,66666666666666666666666
...
HandlingCent = HandlingPerformancePart*RATIOCENT
AccelerationCent = AccelerationPerformancePart*RATIOCENT
TopSpeedCent = TopSpeedPerformancePart*RATIOCENT
Fragment = RATIOFIRST/(((HandlingCent+AccelerationCent+TopSpeedCent)*TWO HALFTHREE)+RATIOFIRST)
HandlingFragment = Fragment*TopSpeedCent
AccelerationFragment = Fragment*AccelerationCent
TopSpeedFragment = Fragment*HandlingCent
TopSpeedTotal2 = FLOOR((((RATIOFIRST-HandlingFragment)-AccelerationFragment)-TopSpeedFragment)*topspeed+((t_hnd_t1*HandlingFrag ment)+(t_acc_t2*AccelerationFragment)+(t_tsp_t3*To pSpeedFragment));1)
AccelerationTotal2 = FLOOR((((RATIOFIRST-HandlingFragment)-AccelerationFragment)-TopSpeedFragment)*acceleration+((a_hnd_a1*Handling Fragment)+(a_acc_a2*AccelerationFragment)+(a_tsp_a 3*TopSpeedFragment));1)
HandlingTotal2 = FLOOR((((RATIOFIRST-
HandlingFragment)-AccelerationFragment)-TopSpeedFragment)*handling+((h_hnd_h1*HandlingFrag ment)+(h_acc_h2*AccelerationFragment)+(h_tsp_h3*To pSpeedFragment));1)
...
#define RATIOCENT 0,01
#define RATIOFIRST 1
#define TWOHALFTHREE 0,66666666666666666666666
...
HandlingCent = HandlingPerformancePart*RATIOCENT
AccelerationCent = AccelerationPerformancePart*RATIOCENT
TopSpeedCent = TopSpeedPerformancePart*RATIOCENT
Fragment = RATIOFIRST/(((HandlingCent+AccelerationCent+TopSpeedCent)*TWO HALFTHREE)+RATIOFIRST)
HandlingFragment = Fragment*TopSpeedCent
AccelerationFragment = Fragment*AccelerationCent
TopSpeedFragment = Fragment*HandlingCent
TopSpeedTotal2 = FLOOR((((RATIOFIRST-HandlingFragment)-AccelerationFragment)-TopSpeedFragment)*topspeed+((t_hnd_t1*HandlingFrag ment)+(t_acc_t2*AccelerationFragment)+(t_tsp_t3*To pSpeedFragment));1)
AccelerationTotal2 = FLOOR((((RATIOFIRST-HandlingFragment)-AccelerationFragment)-TopSpeedFragment)*acceleration+((a_hnd_a1*Handling Fragment)+(a_acc_a2*AccelerationFragment)+(a_tsp_a 3*TopSpeedFragment));1)
HandlingTotal2 = FLOOR((((RATIOFIRST-
HandlingFragment)-AccelerationFragment)-TopSpeedFragment)*handling+((h_hnd_h1*HandlingFrag ment)+(h_acc_h2*AccelerationFragment)+(h_tsp_h3*To pSpeedFragment));1)