Skip to content

Car Sound Tuner

Anil Gezergen edited this page Oct 18, 2026 · 2 revisions

Unlimiter (from v4.0.0.600 and up) implements all the functionality from Legacy Car Sound Tuner and reworks it to add possiblilty to use any file name instead of just numbers for easier configuration, figures out and corrects names of some values, increases file limit for each directory up to 128 from the default 100 and adds a fix which allocates more slots (64 instead of default 12) for the files opened inside SDATA\sdat.viv to prevent a crash when a race intro NIS (Non-Interactive Scene) is playing.

Here is a brief explanation which should help you configure the sound data for your car.

Explanation

The game has a function to map sound data from an array according to the car's ID (CarTypeID) in GlobalB.bun/lzc. The sound data is pulled from some arrays which are hardcoded in the executable.

int(*GetCarTypeMapping)(int CarTypeID) = (int(*)(int))0x459240;
#define g_SND_ENGINE_DATA 0x7F0DE0
#define g_SND_DUAL_GINSU 0x7F1AA8
#define g_SND_CARDATAMAPPING 0x7F2230
#define g_SND_SHIFTPATTERNS 0x7F2860
#define g_SND_SWEETNERDATASET 0x7F3040
#define g_SND_ACCELFROMIDLE 0x7F3248
#define g_SND_TURBODATASET 0x7F3338

This feature makes it simple to change the hardcoded data by overwriting them using the .ini files found in UnlimiterData\CarSoundData.

Some values take file names to refer to the configurations for other structures. For those values, you are free to include the .ini extension or not. Note that you still have to include .abk and .gin extensions for the sound file name values as they are still read by the vanilla game functions.

Car Type Mapping

Car Type Mapping files are found in the UnlimiterData\CarSoundData directory. They specify the Car Data Mapping that is used for the car it carries the same name as.

MUSTANGGT >> UnlimiterData\CarSoundData\MUSTANGGT.ini

[CarTypeMapping]
CarDataMapping = 20_MUSTANGGT

It means that MUSTANGGT should use the Car Data Mapping configuration with the name 20_MUSTANGGT.ini.

Car Data Mapping

These are used configure Car Data Mapping arrays. An array consist of 3 elements (Engine Sound, Sweetner and Turbo data) for each performance upgrade.

[CarTypeMapping]CarDataMapping = 20_MUSTANGGT >> UnlimiterData\CarSoundData\CarDataMapping\20_MUSTANGGT.ini

[Stock]
EngineData = 14_CAR_14_ENG_MB_EE
ShiftPattern = 08_GEAR_LRG_Base
TurboDataSet = 12_TURBO_TRUCK_0_MB

[Street]
EngineData = 12_CAR_12_ENG_MB_EE
ShiftPattern = 09_GEAR_LRG_Lev1
TurboDataSet = 12_TURBO_TRUCK_0_MB

[Pro]
EngineData = 12_CAR_12_ENG_MB_EE
ShiftPattern = 10_GEAR_LRG_Lev2
TurboDataSet = 13_TURBO_TRUCK_1_MB

[Extreme]
EngineData = 35_CAR_35_ENG_MB_EE
ShiftPattern = 11_GEAR_LRG_Lev3
TurboDataSet = 14_TURBO_TRUCK_2_MB

All the values refer to different configuration files to use for each engine, transmission and turbo performance upgrade packages. I will choose the data from Street Package to take a look. So, let's start with Engine Data.

Engine Data

These are used to configure the Engine Sounds. There are Bank Names, volume and RPM values along with some other stuff; references to Sweetner Data, Dual Ginsu and Accel From Idle.

[Street]EngineData = 12_CAR_12_ENG_MB_EE >> UnlimiterData\CarSoundData\EngineData\12_CAR_12_ENG_MB_EE.ini

[EngineData]
MainRAMBankName = CAR_12_ENG_MB_EE.abk
AuxRAMBankName = CAR_12_ENG_MB_SPU.abk
SweetnerDataSetFileName = 12_SWTN_CAR_12_MB
GinsuAccel = GIN_Mustang_Drag.gin
UseDualGinsu = 1
DualGinsuFileName = 00_GIN_Mustang_Drag_DCL
AccelFromIdleFileName = 06
MaxRPM = 6509.000000
MinRPM = 750.000000
AEMSVol = 18000
GinsuAccelVol = 28000
AccelDeltaRPMThreshold = 135.000000
AEMSMixLRPM = 0.200000
GinsuMixLRPM = 0.850000
AEMSMixSRPM = 0.850000
GinsuMixSRPM = 0.300000
AEMSMixNRPM = 0.250000
GinsuMixNRPM = 0.750000
GinsuLowPassCutoff = 300
  • Main/AuxRAMBankName and GinsuAccel are used to refer to the sound files stored in SOUND\ENGINE.
  • SweetnerDataSetFileName, DualGinsuFileName and AccelFromIdleFileName are used for their respective configurations found in their directories.
    Let's continue with Sweetner.

Sweetner Data

These control the volumes of the sweetner events. (Exhaust pop, gear changing sound, etc.)

[EngineData]SweetnerDataSetFileName = 12_SWTN_CAR_12_MB >> UnlimiterData\CarSoundData\SweetnerDataSet\12_SWTN_CAR_12_MB.ini

[Sweetner]
SweetBank = SWTN_CAR_12_MB.abk
ShiftSweetsVol = 20000
SputterVol = 18000
  • SweetBank is used to refer to a sound file stored in SOUND\ENGINE.

Dual Ginsu

These control the deceleration sounds and their values.

[EngineData]DualGinsuFileName = 00_GIN_Mustang_Drag_DCL >> UnlimiterData\CarSoundData\DualGinsu\00_GIN_Mustang_Drag_DCL.ini

[DualGinsu]
GinsuDecelFileName = GIN_Mustang_Drag_DCL.gin
AEMSDecelVol = 14000
GinsuDecelVol = 18000
MinRPM = 2779
MaxRPM = 6381
FadeIn = 0.250000
FadeOut = 0.250000
DecelDeltaRPMThreshold = 120.000000
DecelPitchOffset = 0
DecelAEMSMixLRPM = 0.200000
DecelGinsuMixLRPM = 0.800000
DecelAEMSMixSRPM = 0.700000
DecelGinsuMixSRPM = 0.200000
  • GinsuDecelFileName is used to refer to a sound file stored in SOUND\ENGINE.

Accel From Idle (AccelTrans)

These control the values used when you launch and accelerate from idle.

[EngineData]AccelFromIdleFileName = 06 >> UnlimiterData\CarSoundData\AccelFromIdle\06.ini

[AccelTrans]
PeakVol = 0.500000
PeakRPM = 6500
PeakT = 400
ResumeT = 2500
InteruptT = 1500

Shift Pattern

These control the values for shifting.

[Street]ShiftPattern = 09_GEAR_LRG_Lev1 >> UnlimiterData\CarSoundData\ShiftPattern\09_GEAR_LRG_Lev1.ini

[ShiftPattern]
BankName = GEAR_LRG_Lev1.abk
UpVolShift = 14000
UpShiftSoundDelay = 0.150000
UpDisengageFallRPM = 1200
UpDisengageFallT = 500
UpEngagingRiseRPM = 1500
UpEngagingRiseT = 550
UpEngagingAttackT = 500
UpEngagingAttackVol = 0.100000
LFOVolAmp = 2000
LFOVolFreq = 300
LFOVolDecayTime = 1200
LFORPMAmp = 400
LFORPMFreq = 250
LFORPMDecayTime = 800
DownVolShift = 12000
DownShiftSoundDelay = 0.100000
DownDisengageFallRPM = 800
DownDisengageFallT = 250
DownEngagingRiseRPM = 1200
DownEngagingRiseT = 400
DownEngagingFallRPM = 500
DownEngagingFallT = 350
DownReattachScale = 0.500000
  • Note: Names of these variable may not be entirely correct so they may change with later versions once they are figured out properly or the structure itself is found in the symbols of a debug/milestone build.

Turbo Data

These control the values for Turbo/Supercharger.

[Street]TurboDataSet = 12_TURBO_TRUCK_0_MB >> UnlimiterData\CarSoundData\TurboDataSet\12_TURBO_TRUCK_0_MB.ini

[Turbo]
TurboBank = TURBO_TRUCK_0_MB.abk
SpoolVol = 8500
BlowoffVol1 = 16500
BlowoffVol2 = 12500
ChargeTime = 40.000000
LeakRate = 0.500000
  • TurboBank is used to refer to a sound file stored in SOUND\TURBO.
  • TurboChargeVol is also accepted instead of vanilla variable name SpoolVol.
  • LowBoostBovVol is also accepted instead of vanilla variable name BlowoffVol1.
  • HighBoostBovVol is also accepted instead of vanilla variable name BlowoffVol2.

Conclusion

You can play around with these until you get the desired result. It's confusing but better than manually searching for them and HEX editing them from the executable instead.
You are free to use any file name for the configurations as long as you don't have more than 128 in a directory.

Backwards Compatibility with Legacy Car Sound Tuner

Unlimiter Car Sound Tuner is partially compatible with Legacy Car Sound Tuner. It can load Legacy Car Sound Tuner's data but it's suggested to upgrade to Unlimiter's Car Sound Tuner instead. Unlimiter has checks to detect if Legacy Car Sound Tuner is present to offer an upgrade while the game is starting.

image
  • If you choose Yes, Unlimiter will read Legacy Car Sound Tuner configuration found in scripts\CarSoundData, upgrade it and write the new Unlimiter Car Sound Tuner configuration in scripts\UnlimiterData\CarSoundData.
  • If you choose No, the game will continue booting.

After the upgrade is done, another popup will appear.

image

Tap/clicking OK will disable the option, Legacy Car Sound Tuner by modifying its configuration and close the game.

You can force an upgrade even when you don't have Legacy Car Sound Tuner present if you change this variable in NFSU2UnlimiterSettings.ini:

[Sound]
// ...
UpgradeFromLegacyCST = 0            // Forces upgrading Car Sound Data from Legacy Car Sound Tuner to Unlimiter, even when Legacy Car Sound Tuner is disabled. Gets disabled automatically after the data gets upgraded. (0 = False (Default), 1 = True)
// ...

You can also skip this check entirely:

[Sound]
// ...
SkipLegacyCSTCheck = 0              // Skips checking for Legacy Car Sound Tuner. (0 = False (Default), 1 = True)
// ...

Or, you can keep using Legacy Car Sound Tuner data:

[Sound]
// ...
UseLegacyCSTData = 0                // Allows using Legacy Car Sound Tuner data instead of Unlimiter's. (0 = False (Default), 1 = True)
// ...

If this option is enabled, Unlimiter will also disable Legacy Car Sound Tuner detection and upgrade prompt as if you have enabled SkipLegacyCSTCheck.

Exporting Vanilla Car Sound Data

You can export hardcoded vanilla values found in the game executable anytime by using this variable found in NFSU2UnlimiterSettings.ini:

[Sound]
// ...
ExportCarSoundData = 0              // Exports default values into UnlimiterData\CarSoundData. Overwrites any existing files. Gets disabled automatically after the data gets exported. (0 = False (Default), 1 = True)
// ...

The game will extract the data right when it gets launched. After the extraction is done, a popup will appear to let you know it's done.

image

Tap/clicking OK will disable the option and close the game.

Unable to Load / No Car Sound Data

If you don't have any Car Sound Tuner configuration in scripts\UnlimiterData\CarSoundData or Unlimiter fails to load them for some reason, it will show you a popup message.

image
  • If you choose Yes, the game will continue booting without Unlimiter modifying any car sound data.
  • If you choose No, the game will close.