You are on page 1of 8

Subject: VLTedit for dummies [VLTedit research update #3]

Tired of the same old slow performance but like how the car looks?
Fed up with stock cars being totally lame?
Mod car you just downloaded is still slow but at least doesn't look like brick?
It can all be changed using only one program. VLTedit is the key to success
here.

Stuff necessary for whole modding to work:


Arushan's Ferrari 360 Mod - http://nfscars.net/file/view/mostwanted/6464.aspx
Updated VLTedit with extracted databases [also by Arushan] - enclosed to post
Notepad, understanding and some patience :P
1) If the car you want to mod is a downloaded custom car then skip steps
2 and 3.

2) Go to CARS directory in your NFS MW installation folder. Use this list for
reference if you're not sure which car folder contents you should use. After
ascertaining which dir holds data for the car you're looking for, copy the
entire folder named as the car you found in the list, go to folder named
ADDONS, then go to CARS_REPLACE and paste the folder copied from CARS
directory.
Example as follows - you think that Lexus IS300 sucks [generally does anyway]
and you want to soup it up. Go to CARS folder, find folder IS300, copy it, go
to ADDONS/CARS_REPLACE and paste the copied IS300 folder.

3) In the ADDONS/CARS_REPLACE/car-name folder create 3 additional files. First


make sure that you can see file extensions. Open any folder, click Tools menu,
go to View tab, and [if necessary] uncheck box 'Hide extensions for known file
types'. Files that you need to create in the copied car directory:
ATTRIBUTES.mpws , CAR.ini, FE.mpws
Now you can start some modding. Car I will use for demonstration purposes will
be the above mentioned Lexus IS300.

4) Unpack contents of VLTedit.zip some place you'll be able to find it and


quickly access. Open vltedit.exe. Blank program window will appear. Click File
menu in the upper right and click 'Open'. Window will pop up asking about file.
Choose 'db.vlt' and click OK. Data will load after few seconds and 'Database'
node will appear on the left side. Click [+] sign to expand database nodes.
You'll see a long list of nodes that define all performance and visual aspects
of in-game cars.
Nodes containing performance related values are:
'brakes', 'chassis', 'engine', 'induction', 'tires' and 'transmission'.
'Ecar' node controls stuff like wheel positioning and visual ride height.
'Pvehicle' controls mass, engine sounds, what performance related components
like engine, tires or induction are used and determines how many upgrades can
be installed and also what cops call all the cars in game.
Other nodes shouldn't be really modified unless you really know what you're
doing. Otherwise your game might crash, act in a weird way or not load at all.

5) Main idea behind performance modding is that game uses hexadecimal offsets
to define physics, movement, acceleration, top speed and particle system like
N2O smoke, exhausts, or even cop lights. Mod uses appropriate files [above
mentioned ATTRIBUTES.mwps, FE.mwps] to overwrite game defaults in order to
change hex offsets. Most frequently used offsets are those controlling how car
wheels are positioned since there are barely any cars that have identical
section or track width. But that isn't the only thing that can be overwritten
using offset patching [that's how the process is called].
Structure of .mwps files looks as follows:
patch <value_type> bin:0x<hex_offset> <value>
Example with Lexus IS300 having mass changed:
Node: pvehicle/default/cars/racers/is300 ; Field 'MASS' ; default value is 1547
Note that VLTedit displays offset below the black window listing values for
currently selected field.
patch float bin:0x31598 1100
The above patching script will modify the mass of IS300 in game. Using this
sequence any game value can be changed. Value types are:
float [most common] - any number ranging -65000 up to +65000; also decimal
numbers;
byte - for numbers 0-16;
word - same as above [used only to define gear count]
dword - for certain offsets to use offset packs [collections] example:
Node: pvehicle/default/cars/racers/is300 ; Field 'engineaudio [0]'
patch dword bin:0x31724 0x8db4a27
This will make the unupgraded Lexus use engine sounds from Ferrari 360.
Go to node engineaudio/default for reference. Note that pvehicle 'engineaudio'
field uses certain nodes in engineaudio node for cars and entire pack needs to
be defined. Proper offset for desired audio set can be obtained by typing the
following in the text field in the bottom of program window [click proper node
first to make sure that correct hash will be listed]:
hash fer_360
hash(fer_360)=0x8db4a27
This will give the needed hash to be used use with dword value type. Note that
offset to patch audio was bin:0x31724 although bin:0x31720 was displayed. This
is because 'Collection' value needs to be patched; not the 'Class'. VLTedit
will only show offset for first value in the selected field. To check which
offset you need to patch open calculator [view needs to be set to scientific],
switch to hexadecimal mode [hotkey F5], type the offset [without 0x], add 4 and
press Enter to get the result. Step for offsets is always 4 so 2nd value is +4,
3rd is +8, etc.

Also there is a possibility to make appropriate comments for each offset for
user convenience. Example:
## engine audio
patch dword bin:0x31724 0x8db4a27
Any character(s) put after ## will be ignored during data parsing and can be
used for naming sections for more organized view.

6) Now that you're familiarized with basics of VLTedit, it's time to do some
hex modding.
Following will be demonstration using modified offsets for STOCK Lexus Is300.
It's recommended that all .mwps files [ATTRIBUTES and FE] are blank before
proceeding with this demonstration since overlapping offset might cause the
game parse mod data incorrectly and crash it or it might not load at all.
Mistakes are costly...
As for CAR.ini it's necessary that it contains the following text [below is
text needed for IS300 modifications to take effect]:
[car]
name=Lexus IS300
manufacturer=lexus
internal=is300
modloader=0.2
'name' can be anything you want, manufacturer is asociated with FE.mwps which
will be explained in details later, internal needs to exactly the name of
directory that the mod car replaces; if it's for example Mercedes SLR then
internal will be slr, modloader value is always 0.2
WARNING!!!
It's very important that files: ATTRIBUTES.mwps, CAR.ini and FE.mwps are present
in the directory. All BIN files like TEXTURES and GEOMETRY also need to be in
the folder. Otherwise there won't be any changes in the game or the game might
crash.
Before creating any entries in the ATTRIBUTES.mwps file it's suggested but not
essential to add the following two lines on the top:
memfile GLOBAL\GlobalMemoryFile.bin
vpak GLOBAL\ATTRIBUTES.BIN db
This should allow offset patching to be possible.

IS300 is bit heavy [1547kg]. One of the most simple ways to improve
acceleration is to reduce weight. We go to node 'pvehicle', expand 'default',
then 'cars', 'racers' and go to 'is300'. Middle window will display all values
associated to the currently selected node and its element. MASS value will be
1547 meaning that car weighs 1547 kilograms. Below the Value display there is
offsets displayed - 'bin:0x31598' in this case. To change that, which is
possible only via Ferrari Modloader, you need to go to the created
ATTRIBUTES.mwps and insert this line:
patch float bin:0x31598 700
The above patching script will overwrite default offset value of 1547 at
address bin:0x31598 with new value of 700. In game it will make the car
lighter which will make it noticeably faster since the same amount of power
will be used to propel object with lower mass. Worth noting is that 'pvehicle'
values are for both stock and upgraded car. This means that mass for example
will remain the same regardless of performance. With pvehicle patching it's
possible to change things like number of upgrades [not advised], how cops call
the cars and engine audio values to make car sound different.
Now for some basic stuff with transmission. This step will show how to increase
top speed by changing only one value. Go to the following path:
'transmission/default/is300'. Find field named 'FINAL_GEAR'. This determines
the maximum speed that car can reach. Setting this is different than most
values since the lower the value the higher the top speed. Top speed however
depends on many values like gear ratios and RPM. Improper transmission
modifications can seriously impact car performance. Now to increase that top
speed. Stock value is 3.7. In game the stock top speed is 268km/h [~166.5MPH]
which is quite modest in the game. To make it more it's necessary to DECREASE
the FINAL_GEAR value. To do this add the following line in the ATTRIBUTES.mwps
file:
patch float bin:0x1e284 3.2
Decreasing by 0.1 should increase the top speed by about 10km/h. Therefore
above value should make top speed bigger by about 50km/h.
To add up - if top speed is 200km/h and FINAL_GEAR is 4.0 then 390km/h top
speed will be achieved by decreasing the FINAL_GEAR value by 1.9. Give or take
0.20 since it's not super precise and should be checked by launching the game
and personally ascertaining that. Setting up gear ratios is rather complicated
and should be done with help of programs that can create graphs/charts like Ms
Excel or similar.

Now that the car is lighter and has some better top speed it's time to increase
overall acceleration. Cars in NFS Most Wanted [as Excel charts show it] have
pretty unrealistic torque curves. But that doesn't really matter in an arcade
game. There are few rules to keep in mind when setting up torque values:
- values can NEVER be identical
- they CANNOT only rise
- starting at too high or too low values will make the car undriveable or
simply too slow
- at least 2 final values need to be decreasing assuming that 7th is peak, 8 is
lower than 7th, and 6th is bit lower than 7th
- gaps between torque values are the actual power increase rate that makes the
car move; too small gaps won't give good acceleration while too big will make
the car too hard to control
Example of torque values for upgraded, non-junkman Porsche Carrera GT which has
the most optimal torque curve in the game [unit used is ft-lb]:
165; 249; 369; 483; 553; 503; 464; 435; 419
+84 +120 +114 +70 -50 -39 -29 -16
Torque for Mercedes CLK500:
242; 374; 660; 748; 682; 572; 495; 435; 385
+132 +286 +88 -66 -110 -77 -60 -50

Note: numbers below ft-lb values are differences in torque curve regarding
previous values
Worth noticing is that CLK500 has got pretty impressive power and it starts
with a lot of torque. Unfortunately it loses a lot of power quickly. Peak vs
final value for Mercedes is over 360 ft-lb while Carrera GT loses only ~140
ft-lb. Simple deduction is that the less power the car loses the faster it will
reach the top speed. Therefore Mercedes might be good for drag races but
Carrera GT will do better in long distance races. That is also determined by
Carrera's lower lower mass [1400kg; CLK500 1629kg] and higher RPM limit with
Carrera's red line of 8400 and Mercedes' 6700. Lower RPM engines tend to be
more powerful but they lose lots of power. Exotics have less strong engines but
they are more efficient. At least that's how it looks in game. Now to put it
into hexadecimal gamedate. Navigate to the following node path:
'engine/default/is300'. You'll see a list of fields like engine_braking, idle
and torque. Field set that will be discussed for now is torque. After expanding
it you can see that it consists of 9 more sub-fields each with a certain float
type value. Defaults are:
119; 151; 194; 235; 232; 216; 194; 178; 167
+32 +43 +41 -3 -16 -22 -16 -11
Easy enough to notice that this engine isn't powerful since torque values don't
reach high numbers and start very low. But such power output is quite enough
considering that first step in modification was decreasing the mass over two
times. Therefore light cars like Lotus Elise or Fiat Punto don't need very high
torque to be fast. Upgraded, Lotus starts with 108 and has peak value of
284ft-lb. Not much if you don't take 861kg mass into account. Also it loses
only 58ft-lb in peak vs final torque which makes its engine very efficient.
Offsets for engine torque are simple to figure out. Only 1st field is needed to
figure out the rest and following fields are first offset +4 up till the final
9th value. Hexadecimal sequence for stock IS300 torque looks as follows:
patch float bin:0x13398 119
patch float bin:0x1339c 151
patch float bin:0x133a0 194
patch float bin:0x133a4 235
patch float bin:0x133a8 232
patch float bin:0x133ac 216
patch float bin:0x133b0 194
patch float bin:0x133b4 178
patch float bin:0x133b8 167
Fastest way to make a car faster is to simply increase torque values at each
point by identical value; 30 for example. Car will accelerate faster but its
engine will gain/lose power in the same way as previously since the curve is
only moved upwards. Another method of increasing top speed is to increase max
RPM and red line values. Note that both stock and upgraded values should be
identical for this change to take any effect in game. Max RPM in game isn't
limited but values above 10000 will not allow for engine to be blown and will
also move gear shifting points up. Optimal and recommended gap between red line
and max RPM is 1000. So if red line is 7600 then max RPM should be 8600. Bigger
gaps shouldn't affect general performance but will increase time needed to
reach top speed from 6th gear.

The previously mediocre in performance Lexus is now lighter, has better top
speed and acceleration. Now it's time to make it handle better. As a matter of
fact decreasing mass on the car did give satisfying results when it came to
handling. But in a fierce police pursuit car light like this will be very easy
to overtake and push to the wall or balustrade so it would be a good idea to
eventually keep it heavier. Return to the first offset that was used to patch
IS300 mass to 650kg and change it back to 1547. This will make it slower and
handle worse but will make it harder to push off during pursuits. Other way of
making it a road hugger and corner-cutter is by increasing tire grip. Navigate
to the following path in VLTedit: 'tires/default/is300'. List of fields like
tire_grip*, tire_upgrade#* and steering will appear. Those fields are very
crucial if you want your car to handle good and stick to the road.
Best and most convenient, yet time consuming, way is to write down offsets and
values belonging to all fields starting with 'tires_upgrade'. To make it easier
I'll write down whole list with comments for stock IS300 tire values. Each
field has 2 values so they are written in pairs. First value's offset is given.
Offset for next value in the same field is 'given offset +4'. 1st value is for
front and 2nd is for rear so dependant on drive type those values can vary.
## tires_upgrade1*
patch float bin:0x22848 1
patch float bin:0x2284c 1
## tires_upgrade2*
patch float bin:0x22850 1.4
patch float bin:0x22854 1.42
## tires_upgrade3*
patch float bin:0x22868 1.6
patch float bin:0x2286c 1.65
In order to quickly improve grip above values can be increased by 0.25 for
satisfactory results.
'tires_upgrade' field values don't differ significantly from car to car and
it's also possible to increase grip by modifying 'tire_grip*' field sub-fields.
## tire_grip*; stock
patch float bin:0x22838 0.1
patch float bin:0x2283c 0.2
patch float bin:0x22840 0.4
patch float bin:0x22844 0.5
If you want to feel a major difference in grip then above values should be
doubled.
One value that controls how fast you car responds to controller signals is
in 'steering' field. This value dependant on current number shouldn't be larger
than 1.15 or lower than 0.9. The bigger the value the faster the car responds
and the smaller the turning circle. Lower values do the opposite - car responds
slower and has larger turning circle. Steering ratio that will be too small or
too big will make the car undriveable.

So far the modified performance for stock IS300 looks quite promissing. I will
cover 2 more important matters: brakes and chassis.
First off are brakes. Generally the faster a car can go the quicker it should
be able to brake. Navigate to the following path: 'brakes/default/is300'.
Only 3 values control brake behaviour and power and those are in fields named:
brakes, brakes_BHP and brake_lock.
Field 'brakes' controls overall hydraulic power distribution to brake blocks.
The larger these values are the shorter the braking distance will be. Note that
difference between front and rear should be within 75 and 175 dependant on car
mass. Front should have values smaller than rear. Offsets are as follows:
## brakes
patch float bin:0x242b8 300
patch float bin:0x242bc 425
Brakes_BHP field controls power given to brakes dependant on vehicle mass and
engine power. So the faster the car the more power will be needed to stop it
effectively. Offset is as follows:
## brakes_BHP
patch float bin:0x242c0 475
Brake_lock field values control how power from above brakes_BHP field is
multiplied and distributed to front and rear brakes. To have more powerful
brakes you can either slightly increase multipliers or increase brakes_BHP
value. Offsets for brake_lock ratios are as follows:
## brake_lock
patch float bin:0x242b0 1
patch float bin:0x242b4 3
Note that proportion for locks shouldn't be lower than 0.27 or higher than
0.40. Otherwise car will be tough to handle or will brake hard enough to work
as reset car position which isn't desired in race or means hard times in police
pursuit.

Final matter in this tutorial is chassis data. It's as important as engine or


tires. Navigate to the following path: 'chassis/default/is300'. You'll see a
list of fields like wheel_base, drag_coefficient and roll_center.
I'll write down a list of all named values [identified by proper names] and
offsets for stock IS300:
## wheel_base
patch float bin:0x9248 2.77
## drag_coefficient
patch float bin:0x9264 0.29
## ride_height
patch float bin:0x920c 8
patch float bin:0x9210 8
## roll_center
patch float bin:0x9244 10
## track_width
patch float bin:0x9214 1.534
patch float bin:0x9218 1.544
There are some fields that aren't normally named but I'm still researching
those to find out what they change exactly. So now I'll explain how fields
listed above affect performance, what they really mean and how to properly
change them.
Wheel_base - game uses meters; horizontal distance between the center of the
front wheel, and the center of the rear wheel; decrease values to get smaller
turning circle and thus quicker handling
Drag_Coefficient - aerodynamic drag produced by car movement; the faster the
car moves the more drag it will make and top speed will take longer to reach;
decrease for better acceleration at high speeds
Ride_height - in inches; logical height of the car body regarding wheels;
decrease values to improve handling but don't go below 3, otherwise car will be
scratching the road and lose a lot of speed in the process
Roll_Center - probably in inches; logical vertical center of gravity; decrease
to make the car literally stick to the road by lowering its center of gravity;
setting to 1 or 0 will make it super stable and improve handling
Track_width - in metres; width of front and rear axles; not sure how affects
overall handling but might affect car stability
---------------------------------------
---------------------------------------
That's about it for basic car modding. Congratulations if you managed to read
through this tutorial. More advanced stuff will be covered on forum by demand.
Best regards and luck with car modding

-- DanielKeller

You might also like