Need for Speed: Carbon (Save Editor)

Need for Speed: Carbon (Save Editor)

Need for Speed: Carbon (Save Editor)

Text file description:

[           Legend           ]
[ + added feature            ]
[ - bug fixed                ]
[ * improved/changed feature ]
[ ! major improvement        ]
v1.0
[+]   First public version
v1.1
[*]   Renamed the "unlock cars in car lot (not bonus cars)" -> "unlock stock cars"
[+]   Added unlocks for bonus cars
[+]   Added unlocks for custom cars
v1.2
[!]   Updated the code for unlocks: the 3391526480 array that holds IDs is now
      automatically repaired and ajusted, so potential bugs causing incomplete
      unlocks are now avoided (I hope)
[+]   Added unlocks for reward cards
v1.21
[*]   Renamed "make all reward cards "open"" -> "unlock all reward cards" (because
      it really instantly unlocks the corresponding bonuses, however the messages
      about them are displayed only after at least one of the reward card conditions
      is met, for example, "win a single career race")
[*]   Updated technical detais
v1.25
[-]   An error message was displayed when tried to edit the profile with incomplete
      career start sequence (crew name was empty)
[-]   "Save Changes" button was enabled when the profile was reloaded in Tools section
      via the "Browse..." button but no changes were made
v1.27
[*]   Not all spoilers were unlocked for such cars as Mazda Mazdaspeed3,
      Volkswagen Golf R32, Renault Clio v6 -> added some new id's
Need For Speed Carbon Save Editor
=================================
This small program allows you to:
- change the amount of money
- edit your alias and crew name
- modify the "heat" level on any of your cars in career mode
- unlock cars, perfomance, visual, aftermarket and autosculpt stuff
- repair your savefiles (fix checksum, change cd key)
- explore and modify internal data structures of the game
- also, there is a free savefile library, which you can use to create
  your own save modification programs
The savefiles are usually located in My DocumentsNFS Carbon folder of the
currently logged on user. As the game reads savefile into memory, there is
no need to restart the game after savefile modification, just reload your
profile within the game. But, keep in mind, that the game reads the cd key
from registry only on startup and then it will compare it with that one
read from savefile, so it's always better to sync your cd key in save with
the cd key from registry while the game is running and not vice versa.
!!! ATTENTION !!!
I tried my best to make this program as safe as possible, but I strongly
recommend you to backup your saves before making any changes. Besides, you
have to know that unlock features can't be undone after they were once
applied, so don't blame me that I didn't warn you.
You can refer to TechInfo.txt to find some technical details and feature
highlights.
The latest version can be found on my homepage: http://kickme.to/coderipper
You can contact me via e-mail: code_ripper[at]ukr[dot]net
Have fun!
(C) 2006 CoDe RiPPeR
Need For Speed Carbon Save Editor
=================================
This program is really very simple to use, but there are a few features which
require a more detailed explanation.
After starting this editor you have to pick your game profile from the list
and then use "Edit" or "Tools" button. Its pretty obvious. The game reads the
"NFS Carbon" folder under My Documents and each profile is stored in a
separate folder named A<your_alias> in a file with the same name in that
folder. So, for example, if my alias is "Driv3r" then my savefile path is:
%USERPROFILE%My DocumentsNFS CarbonADriv3rADriv3r
The name displayed by both the game and this save editor will be the name of
the file without the leading 'A' char (which I think stands for "Alias").
Why not the name stored in savefile? Because of optimization. To read the name
from the savegame the main data table has to be decompressed and parsed as it
is stored as a plain text (that will be described in more detail later).
After you have selected your profile, use "Edit" button to make changes. There
is nothing special here except of the effect I emphasized in readme - make
backups of your savefiles before using unlock features because the changes
made can't be reverted later by no other means except restoring the file from
its backup copy.
The "Tools" section allows you to determine the state of your savefile:
whether its checksums are correct and the cd keys in save and in registry
match each other. You can change both cd keys (savefile/reg) but remember
that they must be equal (its ok if they are both empty). Also keep in mind
that nothing is physically changed unless you push the "Save Changes" button.
If you will manually edit your saves, you need to update the checksums.
To do that use "Fix" button. Incorrect checksums are highlighted in red.
The last thing here is the list of compressed data blocks in savefile.
Usually the savefile contains 3 compressed blocks, the last of them
is the main data table (a simple plain text). The smallest of these blocks
usually is empty and contain only zero bytes. That blocks are described by
"CompressedBlock" structure (defined in libNFSCSaveLib.h) and use two types
of compression algorithms. The program searches only for JDLZ blocks
(LZ dictionary based compression). The first block can be compressed with
either JDLZ or HUFF (Huffman coding?) algorithm, the latter two are always
compressed using JDLZ. You can decompress and store any of these blocks into
a file by using "Export..." button, maybe modify or view them and import back
with "Import..." button. The "LF <-> CR/LF (text/binary mode)" checkbox
controls how the decompressed/imported data must be treated: as a text file
(uses text mode for fopen() function - carriage returnlinefeed combinations
are translated into single linefeeds on input, and linefeed characters are
translated to carriage returnlinefeed combinations on output) or a binary
file (untranslated). And remember, not all the data is stored inside these
compressed blocks, the live example is car heat level.
Now about the main data table. It consists of lines of specially formatted
text. The first number is a unique key (or id, no matter how its called)
followed by the colon, then an array of values, delimited with tabulation
characters and all this ends up with linefeed character. Values can be
signed integers, floating point or strings (in that case they are surrounded
with double quotes). So, any value can be located by that unique id and its
position (offset, index) in the corresponding array. For example, to change
alias, we modify the first value in a row identified by the key 841929775
(later I will use the key[zero-based-index] notation, for the previous
example it will be 841929775[0]).
Also it is possible to modify gameplay and pursuit stats (partially) by
changing values of 831388323 array (the time is encoded in 1/4000 of second,
so for example, if you see that the game shows time 5:08.68 then you should
look for a value in a range (5*60+8)*4000 ... ((5*60+8)+1)*4000 (e.g.
1232000 ... 1236000) or just divide all rather big numbers by 4000 and compare
the result with the time in seconds.
Almost all unlocks implemented in this program manipulate the 3391526480 array.
This array holds (id, state) pairs which actually define unlocked items.
An id is a unique number/hash that identifies a specific part (it can be
a car, vinyl or anything else) and the state is a boolean value (1 or 0)
that makes "!" sign appear (in case of 1) alongside the corresponding menu
item. 3391526480[0] is a count of these pairs, 3391526480[1]...3391526480[3]
are also read by game code, but I did no examination about their meaning.
When the game displays the menu it consecutively takes the id's of the
parts and iterates through this array to see if it is there. So what this prog
does - it adds these part ids to the 3391526480 array and sets their state
to 0. That's why it can't be reverted (in fact it can ;-) but that would make
the program more complicated as the "alredy present" pairs must be stored
somewhere and then read back again on undo action).
To unlock reward cards the program searches the 2268361667 array for the value
of 100 (in case of main) or 40 (in case of online exclusive) followed by the
corresponding number of one/zero pairs. The first value in each pair defines
the state of the reward card task (1 - complete, 0 - incomplete), the second
is always zero. The program unlocks both main and online exclusive reward cards
and that means the corresponding bonuses are instantly available after you
reload your profile (it can be easily checked in Quick Race - you will get
all that bonus and custom cars). However the messages stating that you have
earned these bonuses will be displayed only after at least one of the reward
card tasks is accomplished. These arrays of pairs are projected on an actual
reward card tasks in a way as if you just moved from left to right across
them in the game with the "Right Arrow" key. So, for example, to completely
open the first main reward card we need to put 1 into the first value of the
1-st, 2-nd, 11-th and 12-th pair; for second - 3, 4, 13, 14 pair, etc.
And a few words about checksums. The checksum protection scheme is similar to
NFS Most Wanted, but EA has strengthened the default MD5 hash with custom
algorithm (more likely it is some part of libtomcrypt/libtommath lib but I
won't assert that, fairly I don't know and I had no time to discover what it
was in fact). That's why the hash calculation code was "borrowed" from the
game exe :-) Besides, you can use it in your own programs, just for that there
is a C header file with function prototypes and a lib for dynamic linking with
NFSCSaveLib.dll in the "lib" folder (read the comments in header to find out
how the specific function must be used).
Well, that's all I'd like to say...
And oh, don't send me e-mails like "anything else for NFS Carbon?" or
"can you for $$$ or something else make for me xxx yyy?" - these can be
deleted without confirmation. I do that for fun in my free time just because
I want to, besides I had played all the games of NFS series...
Any updates and bugfixes will be uploaded to my homepage. It is not permanent,
so use the following address: http://kickme.to/coderipper
If you have found a bug or something, please try first checking for the most
recent version at my homepage, maybe the problem is already solved.
Regards
                                          CoDe RiPPeR (code_ripper@ukr.net)

File information

Trainers are memory resident programs that alter the behaviour of a game.

Your anti-virus software and web browser may detect them as malware (viruses, worms, trojans, bots etc.).

This is almost always a false alarm.

File name: NEED.FOR.SPEED.C.SAVEEDITOR.CODERIPPER.ZIP

File size: 103.7 KB

Mime type: Stdin has more than one entry--rest ignored compressed-encoding=application/zip; charset=binary

Trainer FAQ