Perfomance hex-editing experience

Discuss editing Need for Speed Carbon.

Perfomance hex-editing experience

Postby trickerer » 24 Feb 2013, 14:42

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
trickerer
Stock
Stock
 
Posts: 2
Joined: 24 Feb 2013, 13:43

Re: Perfomance hex-editing experience

Postby mbm1101 » 13 Mar 2013, 12:42

I am Interested!!!
mbm1101
Ricer
Ricer
 
Posts: 13
Joined: 11 Oct 2012, 15:07
Location: Oslo, Norway

Re: Perfomance hex-editing experience

Postby deVious » 15 Apr 2013, 23:55

Might be interesting to play a bit with this. Speak up!
deVious
Stock
Stock
 
Posts: 3
Joined: 13 Apr 2013, 01:59

Re: Perfomance hex-editing experience

Postby trickerer » 16 Apr 2013, 17:07

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 120 times
trickerer
Stock
Stock
 
Posts: 2
Joined: 24 Feb 2013, 13:43

Re: Perfomance hex-editing experience

Postby deVious » 16 Apr 2013, 19:52

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!
deVious
Stock
Stock
 
Posts: 3
Joined: 13 Apr 2013, 01:59

Re: Perfomance hex-editing experience

Postby gabojosue2 » 04 Jan 2014, 03:57

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.
gabojosue2
Stock
Stock
 
Posts: 2
Joined: 17 Nov 2012, 01:08

Re: Perfomance hex-editing experience

Postby rahulani » 13 May 2015, 11:48

what is kccx performance??? and no table opens when i open globalmemoryfile with artmoney...
plz reply
rahulani
Stock
Stock
 
Posts: 1
Joined: 13 May 2015, 11:45


Return to Editing

Who is online

Users browsing this forum: No registered users and 1 guest

cron