Saturday, May 19, 2018

VLTedit (MWPS Editing) For Dummies (old modtools)

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

No comments:

Post a Comment