Perfomance hex-editing experience

Discuss editing Need for Speed Carbon.
Post Reply
trickerer
Stock
Stock
Posts: 2
Joined: 24 Feb 2013, 13:43

Perfomance hex-editing experience

Post by trickerer »

I couldn't find any Carbon cars perfomance editing guide so...

It took me ten minutes to find cars' perfomance memory block, 30 minutes to find parameters of a certain car there, and 1 hour to tune car's general perfomance values.
I may write a tutorial which will allow you modify perfomance of any car, but I don't know if anyone is still interessed, this game is getting old already.

This method also works for Undercover

Sorry for bad English if any

Here is a pic of 829 km/h with overcharged Dodge Viper
Attachments
Dodge Viper SRT-10 800+ kmh.jpg
mbm1101
Ricer
Ricer
Posts: 13
Joined: 11 Oct 2012, 15:07
Location: Oslo, Norway
Contact:

Re: Perfomance hex-editing experience

Post by mbm1101 »

I am Interested!!!
deVious
Stock
Stock
Posts: 3
Joined: 13 Apr 2013, 01:59

Re: Perfomance hex-editing experience

Post by deVious »

Might be interesting to play a bit with this. Speak up!
trickerer
Stock
Stock
Posts: 2
Joined: 24 Feb 2013, 13:43

Re: Perfomance hex-editing experience

Post by trickerer »

Okay, I'll post this quick manual. If you'll have questions post them here.
All attached files should work for version 1.2. These are ArtMoney tables but I hope you are alright with it.
We are working with GlobalMemoryFile.bin
All values you need are stored as float (4 bytes)

Part I - Perfomance

Before you start, verify if attached files will work for you. To do this, open GlobalMemoryFile.bin in ArtMoney, then open table with KCCX perfomance. If values you see do match descriptions, you can use provided tables (use table with 'ALL RPM values in range' and skip to step 3).

As you may know, you cannot find car's stats by name in NFSC, so you need to get them yourself.
1.1 Getting values range.
All cars' perfomance stats are stored in a single memory block. What you need to find first is beginning of this memory block and it's ending. You can do this by searching for values that represent RPM. They come in sequence, like this:

Code: Select all

0001FE54 7200.000
0001FE58 6200.000
They are not always differ by 1000.000, it can be also 400.000 or 600.000.
Car's stats structure looks like this:

Code: Select all

Address	Value
0001F9E0	0.000
0001F9E4	0.000
0001F9E8	945.000
0001F9EC	1393.000
0001F9F0	1796.000
0001F9F4	1999.000
0001F9F8	2315.000
0001F9FC	2413.000
0001FA00	2314.000
0001FA04	2166.000
0001FA08	2082.000
0001FA0C	1942.000
0001FA10	1723.000
0001FA14	1514.000
0001FA18	0.000
0001FA1C	0.000
0001FA20	0.000
0001FA24	0.400
0001FA28	0.500
0001FA2C	0.600
0001FA30	5.000
0001FA34	17500.000
0001FA38	17000.000
0001FA3C	800.000
Hint for you: To find beginning of the block search for 7900.000, 7500.000 (look for zerofilled space above these numbers), to find the ending look for 7200.000, 6200.000 (notice that struct ends with 800.000 and followed by zeros and meaningless high numbers below). You can also use range from attaced file ().

1.2 Getting values to work with.
So far we have no way to find our car inside this range but to test it ingame. But before this, we need to reduce values count we will work with. To be exact, we should sort out RPM's.
Now that we have values range we can just search through them for hight numbers to get RPM values. Use 'range of values' search in range you got in previous step, search from 3500.000 to 15000.000 and you will get RPM for all cars for sure. For me it was like 262 values (that basically means 131 car huh). Now we are to sort out unneded values. Here is the rules:
1) values always stick together (have offset 4)
2) higher value is followed by lower one
3) all values should be dividable by 100.000 or 50.000
4) values should have no 'floating' part (they are always exact)
After that you shoud have 260 values or less. Save this table. You can also use provided one.
If you got so far without shiznit bricks, you are ready for next step.

1.3 Getting our car
At this step you need to backup your GlobalMemoryFile.bin
We are to change values we got in previous step and see effect ingame. Notice: you must be well-acquaintanced with stats of car you want to modify.
1) Select half of values in table
2) Change them to 15000.000
3) Go into game and look if your car's max rpm has changed
4) If no, go to table and erase values you changed, then go to (1). Otherwise erase values that you didn't change and then go to (1), but this time reduce values to like 3000.000
Repeat until you finally get 2 values.
Now you need to save these addresses so you will not loose them. Restore your GlobalMemoryFile.bin (but do not delete the backup, you may need it sometime).
Now you need to add your car's stats structure to your table. Open memory editor at addresses you saved and add every value from structure they are in (look at car's stats structure example above, also watch for duplicates), I recommend to sort values by address. Now it's time to determine meaning of these values.

Code: Select all

Address	Value
0001F9E8	945.000
0001F9EC	1393.000
0001F9F0	1796.000
0001F9F4	1999.000
0001F9F8	2315.000
0001F9FC	2413.000
0001FA00	2314.000
0001FA04	2166.000
0001FA08	2082.000
0001FA0C	1942.000
0001FA10	1723.000
0001FA14	1514.000
This is torque curve (I expect you to know what is this), so this is for car's acceleration.

Code: Select all

Address	Value
0001FA24	0.400
0001FA28	0.500
0001FA2C	0.600
These values determine the rate at which your car loose speed at dirt, sand and normal track. Setting this to zero will cause car to loose no speed (almost). This also affects acceleraion a bit.

Code: Select all

Address	Value
0001FA30	5.000
RPM gain/loss rate, just change to see how it works.

Code: Select all

Address	Value
0001FA34	17500.000
0001FA38	17000.000
RPM absolute max, RPM max. Absolute max is RPM which you can get on last shift. I recommend to leave abs max at (max RPM + 500). Changing max RPM is the only way to increase car's max speed.

Code: Select all

Address	Value
0001FA3C	800.000
Minimum RPM. your RPM will never drop below this number. This affects initial acceleration but can decrease max speed. I recommend to set this to zero or so.


If anyone will succeed with this guide, part 2 will come (handling) which will allow to controll vehicle even on 500+ km/h.

Sorry for bad English if any.
I am from Russia.
Attachments
NFSC perfomance tables.rar
Perfomance tables
(2.33 KiB) Downloaded 296 times
deVious
Stock
Stock
Posts: 3
Joined: 13 Apr 2013, 01:59

Re: Perfomance hex-editing experience

Post by deVious »

First, your English is fine. :D
Second, thanks for a very detailed guide and provided resources.
Sadly, looking at this, my impression is that one has to be an advanced coder to pull this off. But I hope that won't stop me from trying. We'll see.
Thanks again!
gabojosue2
Stock
Stock
Posts: 2
Joined: 17 Nov 2012, 01:08

Re: Perfomance hex-editing experience

Post by gabojosue2 »

I am most interested in this post!

I really want to change the status of performance of some cars! (Viper, SLR, CarreraGT, LP640, Ford GT, M3GTR, LeMans, CCX)

Top Speed​​, Acceleration, and Handling!

But it is better if you can make a video tutorial on this subject because I do not know how.

Thank you.
rahulani
Stock
Stock
Posts: 1
Joined: 13 May 2015, 11:45

Re: Perfomance hex-editing experience

Post by rahulani »

what is kccx performance??? and no table opens when i open globalmemoryfile with artmoney...
plz reply
Post Reply

Return to “Editing”