########################################################### ########################################################### # NAME: Silver Project v9.7 - Momentum Rack 5.2 - Karsten - Featuring Shadak, Santos, NuScorpii, PopsRacer, Panos, xkkkx, Pinkinatra and Kuku. High end wheel bases. # # HUGE THANKS! to Shadak, Panos, F.Santos, xkkkx, Pinkinatra and Kuku for continued suggestions & balancing of many ffb files! # # Also thanks to CycloZeb (for suggesting the grip impact on momentum) and to Alegunner, as well as all other Reiza Forum members for providing adjustment feedback. # # If you copy this over in full or partly, or base a solution on the same general methods after seeing it, please credit "Momentum Rack" however used("included"/"extended"/"modified"/"based on"), I would be pleased - Thanks. # ########################################################### # # Madness bug madness # # Create many vars here so the madness bug will hit that. # (madness_bug1 1.0) (madness_bug2 1.0) (madness_bug3 1.0) (madness_bug4 1.0) (madness_bug5 1.0) (madness_bug6 1.0) (madness_bug7 1.0) (madness_bug8 1.0) (madness_bug9 1.0) (madness_bug10 1.0) (madness_bug11 1.0) (madness_bug12 1.0) (madness_bug13 1.0) (madness_bug14 1.0) (madness_bug15 1.0) (madness_bug16 1.0) (madness_bug17 1.0) (madness_bug18 1.0) (madness_bug19 1.0) (madness_bug20 1.0) (madness_bug21 1.0) (madness_bug22 1.0) (madness_bug23 1.0) (madness_bug24 1.0) (madness_bug25 1.0) (madness_bug26 1.0) (madness_bug27 1.0) (madness_bug28 1.0) (madness_bug29 1.0) (madness_bug30 1.0) ########################################################### # # Main dials # (master_rack 1.55) #Rack & road scale. (master_effects 1.55) #Effects scale. ########################################################### # # Rack settings # (tighten_range 0) #use for lower end wheel bases. (tighten_falloff 0) #use for lower end wheel bases. (static_force_reduction 0.0) #Range: 0.0 - 1.0. Adjust up to reduce the very highest end of cornering resistance. (static_force_reduction_hi_df 0.0) #Range: 0.0 - 1.0. Adjust up to reduce the very highest end of cornering resistance. (brake_feel 2.0) #How much braking is felt (exaggerated_brake 0.0) #Differently calculated brake feel. (acc_boost_feel 0.0) #Further lightens the feel on acceleration. (dec_boost_feel 0.0) #Further tightens the feel on deceleration. (centering 0.22) #How fast the steering/tyres auto centers. (longitudinal_scale 0.9) (longitudinal_lfb 0.0) #0.0-1.0. Strengthen lower steering degrees. Makes it possible to relax the steering resistance if upping this, while lowering longitudinal_scale. (lateral_scale 1.5) (lateral_dyn_adjust 1.0) (lateral_min 0.15) (balance_scale 0.02) #How much balance under normal df. (balance_scale_hi_df 0.02) #How much balance under high df. This is here because balance is felt less under high df, so if you want to counter that you can increase that here. (exaggerate_front_load_feel 0.25) (exaggerate_front_load_feel_hi_df 0.25) (exaggerate_over_steer 0.0) #How much over steer is exaggerated. Can be negative as well. (over_steer_coeff 0.6) (front_grip_slip_feel_coeff 0.0) #0.0-1.0. 0 is linear, 1 is most feel of grip & exponential feel of loss of grip when getting close to no grip. (stretch_feel_scale 0.5) #0.0-1.0. 0 no feel of tyre stretch, 1 most feel of tyre stretch. This works in combination with stretch_feel_time. (stretch_feel_time 0.175) #Delta period for stretch feel. The higher the more the stretch is pronounced/felt. This works in combination with stretch_feel_scale. (limit_high_df 0.5) #Limits howe stiff the steering becomes in high df cars. Range: 0.0-1.0. 0.0=most extreme high df possible, 1.0=limit high df as much as possible. (damping_slider 0.5) ########################################################### # # Road features settings # (texture_scale 1.0) (kerb_bump_scale 0.4) #How big the tall curb bumps are. (track_bump_scale 0.4) #how much bumps on the track are felt. (offroad_bump_scale 0.4) #how much bumps off the track are felt. (kerbs_surface_scale 0.8) # (suspension_scale 1.1) #how much the suspension is felt. (change_of_balance_feel 0.0) #Feeling of balance shifting. The faster it shifts, the stronger the feeling. Mostly felt around center when turning left/right. ########################################################### # # Effect scales - Change here to make an effect more or less pronounced. # (engine_scale_at_still 0.7) (engine_scale_at_speed 0.0) (scrub_scale 0.3) (scrub_frq_scale 0.5) ########################################################### # # scale AMS2 -> PC2 # (FL_load (* FL_load 500)) (FR_load (* FR_load 500)) (FL_lat (* FL_lat 500)) (FR_lat (* FR_lat 500)) ################################################################################### # # Lateral force discovery static variables # (mmm_f mmm_f) (mmm_s mmm_s) ################################### # # Helper vars & prep # (kmh (* (abs vel_mag) 3600 0.001)) (speed_bias5 (max 0.0 (min 1.0 (/ (- kmh 1) 5.0)))) (dist_time_mult (/ 80 (max 20 kmh))) (flatspot_smoothing (blend (min 1 (* kmh 0.005)) 0.06 0.01)) (flatspot_vol (blend (min 1 (* kmh 0.005)) 2.5 1)) (fl_fs_sm (* 10 (smooth FL_Flatspot flatspot_smoothing))) (fr_fs_sm (* 10 (smooth FR_Flatspot flatspot_smoothing))) (f (+ (* 8 (power front_grip_slip_feel_coeff 2.0)) 0.0001)) (grip_fl (- 1.0 (abs FL_slide))) (grip_fr (- 1.0 (abs FR_slide))) (grip_fl (* (- 1 (/ 1 (+ 1 (* f (abs grip_fl))))) (if (min 0 grip_fl) -1 1))) (grip_fl (/ grip_fl (- 1 (/ 1 (+ 1 f))))) (grip_fr (* (- 1 (/ 1 (+ 1 (* f (abs grip_fr))))) (if (min 0 grip_fr) -1 1))) (grip_fr (/ grip_fr (- 1 (/ 1 (+ 1 f))))) (grip_fl (* grip_fl (- 1 (min 1 (abs fl_fs_sm))))) (grip_fr (* grip_fr (- 1 (min 1 (abs fr_fs_sm))))) (grip_rl (max (* (- 10.0 (max 0 (- (abs RL_scrub) 2))) 0.1) 0.0)) (grip_rr (max (* (- 10.0 (max 0 (- (abs RR_scrub) 2))) 0.1) 0.0)) (grip_fl (* grip_fl (if FL_bump_kerb 0.75 (if FL_bump_offroad 0.4 1)))) (grip_fr (* grip_fr (if FR_bump_kerb 0.75 (if FR_bump_offroad 0.4 1)))) (grip_rl (* grip_rl (if RL_bump_kerb 0.75 (if RL_bump_offroad 0.4 1)))) (grip_rr (* grip_rr (if RR_bump_kerb 0.75 (if RR_bump_offroad 0.4 1)))) (balance_start (* 0.2 dist_time_mult)) (steering_angle_l (* steering_angle_FL 3.14159265)) (steering_angle_r (* steering_angle_FR 3.14159265)) (steering_angle (* (+ steering_angle_l steering_angle_r) 0.5)) (read_smoothed (* 0.5 (+ (smooth FL_load 0.01) (smooth FR_load 0.01)))) (read_smoothed2 (* 0.5 (+ (smooth FL_load 0.5) (smooth FR_load 0.5)))) (start_load_front start_load_front) (start_load_front (if start_load_front start_load_front 10000)) (stand_still (if (min 0 (- kmh 1.0)) 1 0)) (stand_still (if (max 0 (- read_smoothed2 20.0)) stand_still 0)) (stand_still (if (min 0.0 (- (abs (- read_smoothed read_smoothed2)) 20.0)) stand_still 0)) (stand_still (if (min 0 (- 1 dt)) 0 stand_still)) (stand_still (if (- start_load_front 10000) stand_still 1)) (stand_still (if (min 0 (- et 30)) stand_still 0)) (start_load_front (if stand_still read_smoothed start_load_front)) (mmm_f (if stand_still 0 mmm_f)) (mmm_s (if stand_still 0 mmm_s)) (load_norm_wheel 250.0) (FL_load_norm (/ FL_load start_load_front)) (FR_load_norm (/ FR_load start_load_front)) #limit high df (x (+ 0.1 (* 0.2 limit_high_df))) (y (- 1 (/ 1 (+ 1 x)))) (FL_load_norm_s (smooth FL_load_norm 0.05)) (FR_load_norm_s (smooth FR_load_norm 0.05)) (FL_load_norm_s (* (/ 1 y) (- 1 (/ 1 (+ 1 (* x (abs FL_load_norm_s))))) (if (min 0 FL_load_norm_s) -1 1))) (FR_load_norm_s (* (/ 1 y) (- 1 (/ 1 (+ 1 (* x (abs FR_load_norm_s))))) (if (min 0 FR_load_norm_s) -1 1))) (FL_load_norm (+ FL_load_norm_s (- FL_load_norm (smooth FL_load_norm 0.05)))) (FR_load_norm (+ FR_load_norm_s (- FR_load_norm (smooth FR_load_norm 0.05)))) (FL_load_norm (* FL_load_norm load_norm_wheel)) (FR_load_norm (* FR_load_norm load_norm_wheel)) (m_FL_load (smooth (max 0 FL_load_norm) 0.15)) (m_FR_load (smooth (max 0 FR_load_norm) 0.15)) (rel_weight_FL (/ m_FL_load load_norm_wheel)) (rel_weight_FR (/ m_FR_load load_norm_wheel)) (load_df (+ (* 0.66 (min rel_weight_FL rel_weight_FR)) (* 0.33 (max rel_weight_FL rel_weight_FR)))) (load_power_fx (max 0.0 (min 1.0 (* 2.5 (- load_df 1))))) (load_power_fx (min load_power_fx (smooth load_power_fx 0.1))) (load_power (blend (power (* 2 (- (max 0.5 gain) 0.5)) 0.65) 1.0 0.25)) #load power of 1.0 at gain 50, power of 0.25 at gain 100. Only used on high down force. (load_power (blend load_power_fx 1.0 load_power)) (m_FL_load (if (min 0 (- m_FL_load load_norm_wheel)) (* load_norm_wheel 1.0625 (- 1 (/ 1 (+ 1 (* 16 (/ m_FL_load load_norm_wheel)))))) m_FL_load)) (m_FR_load (if (min 0 (- m_FR_load load_norm_wheel)) (* load_norm_wheel 1.0625 (- 1 (/ 1 (+ 1 (* 16 (/ m_FR_load load_norm_wheel)))))) m_FR_load)) (load_power_l (if (min 0.0 (- m_FL_load load_norm_wheel)) 1 load_power)) (load_power_r (if (min 0.0 (- m_FR_load load_norm_wheel)) 1 load_power)) (m_FL_load (min m_FL_load (* load_norm_wheel (power (/ m_FL_load load_norm_wheel) load_power_l)))) (m_FR_load (min m_FR_load (* load_norm_wheel (power (/ m_FR_load load_norm_wheel) load_power_r)))) (ex_front_load_l (max (- 1 load_power_fx) (/ (smooth FL_load_norm 0.02) (max 0.2 (smooth FL_load_norm 0.5))))) (ex_front_load_r (max (- 1 load_power_fx) (/ (smooth FR_load_norm 0.02) (max 0.2 (smooth FR_load_norm 0.5))))) (ex_front_load_l (max 0.0 (+ 1.0 (* (blend load_power_fx exaggerate_front_load_feel exaggerate_front_load_feel_hi_df) (- ex_front_load_l 1.0))))) (ex_front_load_r (max 0.0 (+ 1.0 (* (blend load_power_fx exaggerate_front_load_feel exaggerate_front_load_feel_hi_df) (- ex_front_load_r 1.0))))) (m_FL_load (* m_FL_load ex_front_load_l)) (m_FR_load (* m_FR_load ex_front_load_r)) (m_FL_load (* m_FL_load (+ 1 (* brake 0.15 brake_feel grip_fl)) (min 2 (max 1 (/ (smooth kmh 0.2) (max 1 (smooth kmh 0.01))))))) (m_FR_load (* m_FR_load (+ 1 (* brake 0.15 brake_feel grip_fr)) (min 2 (max 1 (/ (smooth kmh 0.2) (max 1 (smooth kmh 0.01))))))) (rel_weight_relaxed_FL (/ m_FL_load load_norm_wheel)) (rel_weight_relaxed_FR (/ m_FR_load load_norm_wheel)) (x (* 10 (/ kmh 400))) (vel_mag_k_pull (+ (* 0.002 (power x 2)) (/ 1 (+ 1 (* 3 x))))) (vel_mag_k_pull (+ 1 (* (- vel_mag_k_pull 1) 0.6))) (vel_mag_k_pull (* vel_mag_k_pull 2)) (mom_FL2 (* rel_weight_relaxed_FL vel_mag_k_pull)) (mom_FR2 (* rel_weight_relaxed_FR vel_mag_k_pull)) (acc_dec (/ (- vel_mag (smooth vel_mag 0.05)) (max 2 vel_mag))) (acc_dec_scale (- 1 (+ (* acc_boost_feel (max 0 acc_dec)) (* dec_boost_feel (min 0 acc_dec))))) (mom_FL (* mom_FL2 acc_dec_scale)) (mom_FR (* mom_FR2 acc_dec_scale)) (sa_delta (* (/ 1 (* dt 333)) (- steering_angle old_sa))) (old_sa steering_angle) (grip_feel_rear (min 1 (/ (+ (* grip_rl rel_weight_FL) (* grip_rr rel_weight_FR)) (max 0.0001 (+ rel_weight_FL rel_weight_FR))))) (grip_feel_front (min 1 (/ (+ (* grip_fl rel_weight_FL) (* grip_fr rel_weight_FR)) (max 0.0001 (+ rel_weight_FL rel_weight_FR))))) # Scale lateral force by dynamic detection of lateral force magnitude (mmmm (/ (* (if (min 0 (- kmh 3)) 0 1) (abs (+ (* FL_lat grip_fl) (* FR_lat grip_fr)))) (* (max kmh 3) (max 0.05 (abs steering_angle))))) (mmm_f (max mmm_f (smooth mmmm 0.005))) (mmm_s (max mmm_s (smooth mmmm 0.02))) (mm (blend (min 1 (* et 0.0333)) mmm_f (blend (min 1 (* et 0.01)) (* 0.5 (+ mmm_f mmm_s)) mmm_s))) (mm (* mm 0.0075)) (f (blend lateral_dyn_adjust 1 (max 1 (/ 0.9 (max 0.2 mm))))) (f (min f (+ 1 (* et 0.1)))) (lateral_scale (* 0.08 lateral_scale f)) (pct_of_max (max 0 (min 1 (min (* et 0.08) (/ (smooth mmmm 0.02) (max 0.01 mm)))))) # Rack weights (over_steer (- 1 (max 0 (- grip_feel_front (power (- 1 grip_feel_rear) over_steer_coeff))))) (rack_pct (- 1 over_steer)) (lateral_steer (+ over_steer (* 0.2 (power pct_of_max 2.5)))) #(lateral_scale (* lateral_scale (+ 1 (* 0.4 (power pct_of_max 2.0))) (+ 1 exaggerate_over_steer))) (lateral_pct (max lateral_min lateral_steer)) (t (+ rack_pct lateral_pct)) (rack_pct (* rack_pct (/ 1 t))) (lateral_pct (* lateral_pct (/ 1 t))) (rl (+ (* 8 (power longitudinal_lfb 1.4)) 0.0001)) ############ # # Momentum Rack - If you copy this over in full or partly, or base a solution on the same general methods after seeing it, please credit "Momentum Rack" however used("included"/"extended"/"modified"/"based on"), I would be pleased - Thanks. # # Handles each front wheel separately to calculate FFB when wheels are not in equal conditions. # # Calculations have not been shortened to make it easier to understand what is going on. # (stretch_l_mul (+ 1 (* stretch_feel_scale (- FL_stretch (smooth FL_stretch stretch_feel_time))))) (stretch_r_mul (+ 1 (* stretch_feel_scale (- FR_stretch (smooth FR_stretch stretch_feel_time))))) (brake_centering (+ 1 (* 10 brake exaggerated_brake grip_feel_front (abs (min 0 acc_dec))))) (travel (* brake_centering (/ 1 300) (/ kmh 3.6))) (m (power (- 1 centering) travel)) (wanted_sa_l (* (- steering_angle_l sa_delta) m)) #getting the old angle, to calc where it would have gone by itself (wanted_sa_r (* (- steering_angle_r sa_delta) m)) (angle_d_l (- wanted_sa_l steering_angle_l)) #diff from where it would have gone by itself to actual steering (angle_d_r (- wanted_sa_r steering_angle_r)) (angle_d_l (* (- 1 (/ 1 (+ 1 (* rl (abs angle_d_l))))) (if (min 0 angle_d_l) -1 1))) (angle_d_l (/ angle_d_l (- 1 (/ 1 (+ 1 rl))))) (angle_d_r (* (- 1 (/ 1 (+ 1 (* rl (abs angle_d_r))))) (if (min 0 angle_d_r) -1 1))) (angle_d_r (/ angle_d_r (- 1 (/ 1 (+ 1 rl))))) (angle_d_l (* longitudinal_scale (/ 0.6 centering) angle_d_l)) (angle_d_r (* longitudinal_scale (/ 0.6 centering) angle_d_r)) (angle_d_l (- angle_d_l (* damping_slider sa_delta))) (angle_d_r (- angle_d_r (* damping_slider sa_delta))) (rack_momentum_l (* 14 (smooth angle_d_l 0.01) mom_FL stretch_l_mul)) (rack_momentum_r (* 14 (smooth angle_d_r 0.01) mom_FR stretch_r_mul)) # Car balance - uses load on each wheel to calculate balance (slope_balance (/ (- (smooth FL_load_norm balance_start) (smooth FR_load_norm balance_start)) (* 2 load_norm_wheel))) (balance_s (* slope_balance 2 2 (power (* 0.1 (min 10.0 kmh)) 2) 0.4)) (balance_l (* balance_s stretch_l_mul)) (balance_r (* balance_s stretch_r_mul)) (balance_s (blend load_power_fx balance_scale balance_scale_hi_df)) (balance_l (* balance_l balance_s)) (balance_r (* balance_r balance_s)) (balance (+ balance_l balance_r)) # Lateral force - uses FL_lat/FR_lat forces (lateral_l (* 0.005 mom_FL2 stretch_l_mul load_power)) (lateral_r (* 0.005 mom_FR2 stretch_r_mul load_power)) (lateral_l_detail (* lateral_l (- FL_lat (smooth FL_lat 0.005)))) (lateral_r_detail (* lateral_r (- FR_lat (smooth FR_lat 0.005)))) (lateral_l (* lateral_l (smooth FL_lat 0.02))) (lateral_r (* lateral_r (smooth FR_lat 0.02))) (lateral_l (* lateral_l lateral_scale)) (lateral_r (* lateral_r lateral_scale)) (lateral_details (+ lateral_l_detail lateral_r_detail)) (lateral_details (* lateral_l_detail lateral_scale)) # Blend rack (rack_momentum_l (+ (* rack_momentum_l rack_pct) balance_l (* lateral_l lateral_pct))) (rack_momentum_r (+ (* rack_momentum_r rack_pct) balance_r (* lateral_r lateral_pct))) # LFB on each tyre is important before grip, lat_details, balance, damping & clip (f (+ (* 8 (power volume 1.4)) 0.0001)) (rack_momentum_l (* rack_momentum_l 2)) #adjust dual lfb left/right to match magnitude of single (rack_momentum_r (* rack_momentum_r 2)) (rack_momentum_l (* (- 1 (/ 1 (+ 1 (* f (abs rack_momentum_l))))) (if (min 0 rack_momentum_l) -1 1))) (rack_momentum_l (/ rack_momentum_l (- 1 (/ 1 (+ 1 f))))) (rack_momentum_r (* (- 1 (/ 1 (+ 1 (* f (abs rack_momentum_r))))) (if (min 0 rack_momentum_r) -1 1))) (rack_momentum_r (/ rack_momentum_r (- 1 (/ 1 (+ 1 f))))) (rack_momentum_l (* rack_momentum_l 0.5)) #adjust dual lfb left/right to match magnitude of single (rack_momentum_r (* rack_momentum_r 0.5)) # Add both tyres and add grip now. This makes LFB be done prior to scaling with grip, so it's linear grip no matter how strong the center is chosen to be. (rack_momentum (+ (* rack_momentum_l grip_fl) (* rack_momentum_r grip_fr))) # Enforce "edge" (rack_momentum (+ rack_momentum (* 2 (- rack_momentum (smooth rack_momentum 0.005))))) # Real damping (damping (* (power (min 1 (* (/ kmh 250) (/ load_power 2.5))) 2) 1500 damping_slider)) (rack_momentum (- rack_momentum (* damping (- sa_delta (smooth sa_delta 0.005))))) # Change of balance - when changing left-right-left you feel it around center, where the change of balance is happening most. (bal_rel (- balance (smooth balance 0.01))) (rack_momentum (+ rack_momentum (* 40 change_of_balance_feel grip_feel_front (smooth bal_rel 0.01)))) # Suspension (left (- (smooth FL_load 0.02) (smooth FL_load 0.03))) (right (- (smooth FR_load 0.02) (smooth FR_load 0.03))) (suspension (+ (* left mom_FL2 (if FL_bump_offroad 0.25 1)) (* right mom_FR2 (if FR_bump_offroad 0.25 1)))) (suspension (spring suspension 2500 1.0 1.0)) (suspension (* suspension 0.002 3 suspension_scale)) (rack_momentum (+ rack_momentum suspension)) # Smooth slightly (rack_momentum (smooth rack_momentum 0.005)) # Add lat details back in (rack_momentum (+ rack_momentum lateral_details)) # Rack spring (steer_spring_strength 1.0) (want_steer want_steer) (want_steer (* want_steer m)) (steer_delta (- want_steer steering_angle)) (steer_delta (if (max 0 (- (abs steer_delta) 0.5)) (* 0.5 (/ steer_delta (abs steer_delta))) steer_delta)) (want_steer (+ steering_angle steer_delta)) (steer_pull (hard_clip (* steer_spring_strength steer_delta 0.4) 0.5)) (want_steer (- want_steer (- steer_delta (hard_clip steer_delta (* 0.2 (max 0 (- (/ 1 (max kmh 2)) 0.05))))))) (steer_pull (- steer_pull (* 6 sa_delta))) (steer_pull (* 10 steer_pull grip_feel_front (* (/ 1 8) (+ FL_stretch FR_stretch 6)))) (rack_momentum (blend (min 1 (/ kmh 10)) steer_pull rack_momentum)) ########################################################### # # Static force reduction # (rack_momentum_long (smooth rack_momentum 0.2)) (rack_momentum_short (- rack_momentum rack_momentum_long)) (rack_momentum_long (* rack_momentum_long (blend (power (min 1 (abs rack_momentum_long)) 1.0) 1 (- 1 (blend load_power_fx static_force_reduction static_force_reduction_hi_df))))) (rack_momentum (+ rack_momentum_long rack_momentum_short)) ########################################################### # # Build road slope details & bumps # (curb_started curb_started) #-1 means left, 1 means right. 0 means no curb active. (curb_dist curb_dist) (curb_started (if curb_started curb_started (if FL_bump_kerb -1 (if FR_bump_kerb 1 0)))) (curb_dist (if (+ FL_bump_kerb FR_bump_kerb) 0 curb_dist)) (curb_started (if (min 0 (- curb_dist 10)) curb_started 0)) #within 10m we keep same curb side (curb_dist (+ curb_dist (* dt (/ kmh 3.6)))) (scale_on_track 0.5) (boost_on_curb 8) (FL_bump_kerb_active FL_bump_kerb_active) (FR_bump_kerb_active FR_bump_kerb_active) (FL_bump_kerb_active (if FL_bump_kerb 1 FL_bump_kerb_active)) (FR_bump_kerb_active (if FR_bump_kerb 1 FR_bump_kerb_active)) (FL_bump_kerb_active (max 0 (- FL_bump_kerb_active (* 4 dt)))) (FR_bump_kerb_active (max 0 (- FR_bump_kerb_active (* 4 dt)))) (FL_bal FL_bal) (FR_bal FR_bal) (FL_bal (* FL_bal (power 0.03 dt))) (FR_bal (* FR_bal (power 0.03 dt))) (FL_bal (max FL_bal FL_load)) (FR_bal (max FR_bal FR_load)) (FL_load3 (if FL_bump_kerb_active FL_bal FL_load)) (FR_load3 (if FR_bump_kerb_active FR_bal FR_load)) (dist_time_mult (max 0.5 (/ 80 (max 10 kmh)))) (fast (* 0.01 dist_time_mult)) (slow (* 0.02 dist_time_mult)) (tyre_l (- (smooth FL_load3 fast) (smooth FL_load3 slow))) (tyre_r (- (smooth FR_load3 fast) (smooth FR_load3 slow))) (tyre_l (/ tyre_l load_norm_wheel)) (tyre_r (/ tyre_r load_norm_wheel)) (tyre_l (max 0 (- tyre_l 0.05))) (tyre_r (max 0 (- tyre_r 0.05))) (tyre_l (* tyre_l (min 1 (/ (smooth FL_load3 fast) load_norm_wheel)))) (tyre_r (* tyre_r (min 1 (/ (smooth FR_load3 fast) load_norm_wheel)))) (tyre_l (* (+ 1 (* boost_on_curb FL_bump_kerb_active)) scale_on_track tyre_l)) (tyre_r (* (+ 1 (* boost_on_curb FR_bump_kerb_active)) scale_on_track tyre_r)) (tyre_l (* (if (min 0 tyre_l) -1 1) (- 1 (/ 1 (+ (abs (* 2 tyre_l)) 1))))) (tyre_r (* (if (min 0 tyre_r) -1 1) (- 1 (/ 1 (+ (abs (* 2 tyre_r)) 1))))) (tyre_l (* tyre_l (if (- curb_started 1) 1 -1))) #curb started right side means multiply left side with -1 (tyre_r (* tyre_r (if (+ curb_started 1) 1 -1))) #curb started left side means multiply right side with -1 (slope_large (spring (- tyre_r tyre_l) 50000 0.5 1)) (slope_large (* slope_large vel_mag_k_pull)) ########################################################### # # Road features # (left_texture_o left_texture_o) (right_texture_o right_texture_o) (left_texture (* 0.002 (- FL_load left_texture_o))) (right_texture (* 0.002 (- FR_load right_texture_o))) (left_texture_o FL_load) (right_texture_o FR_load) (left_texture (hard_clip left_texture 1)) (right_texture (hard_clip right_texture 1)) (left_texture (* left_texture (power (- 1 (abs left_texture)) 20))) (right_texture (* right_texture (power (- 1 (abs right_texture)) 20))) (left_texture (spring left_texture 200000 0.01)) (right_texture (spring right_texture 200000 0.01)) (texture (+ left_texture right_texture)) (texture_vibes (- texture (smooth texture 0.002))) (texture (+ texture (* texture_vibes 0.5))) (texture (* texture 1.5)) (left_bump (* 0.002 (- FL_load (smooth FL_load 0.015)))) (right_bump (* 0.002 (- FR_load (smooth FR_load 0.015)))) (left_bump (* (power (- 1 (min 1 (abs left_bump))) 1) left_bump)) (right_bump (* (power (- 1 (min 1 (abs right_bump))) 1) right_bump)) (left_bump (* left_bump (if FL_bump_kerb (* kerbs_surface_scale 4) (if FL_bump_offroad offroad_bump_scale track_bump_scale)))) (right_bump (* right_bump (if FR_bump_kerb (* kerbs_surface_scale 4) (if FR_bump_offroad offroad_bump_scale track_bump_scale)))) (left_bump (spring left_bump 10000 0.015)) (right_bump (spring right_bump 10000 0.015)) (road_bumps (blend (smooth (min 1 (+ FL_bump_kerb FR_bump_kerb)) 0.02) (+ left_bump right_bump) (- left_bump right_bump))) (road_bumps_vibes (- road_bumps (smooth road_bumps 0.002))) (road_bumps (+ road_bumps (* road_bumps_vibes 25))) (road_bumps (* road_bumps 0.3 0.25)) (road_features (* 0.8 (+ (* slope_large kerb_bump_scale) road_bumps (* texture texture_scale)))) ########################################################### # # Scrub FX # (scrub_scale_front 0.3) (scrub_scale_rear 0.5) (FL_scrub (* (if FL_bump_offroad 0 1) (smooth (abs FL_scrub) 0.01))) (FR_scrub (* (if FR_bump_offroad 0 1) (smooth (abs FR_scrub) 0.01))) (RL_scrub (* (if RL_bump_offroad 0 1) (smooth (abs RL_scrub) 0.01))) (RR_scrub (* (if RR_bump_offroad 0 1) (smooth (abs RR_scrub) 0.01))) (F_scrub (max FL_scrub FR_scrub)) (R_scrub (max RL_scrub RR_scrub)) (F_scrub (max 0 (- F_scrub 0.15))) (R_scrub (max 0 (- R_scrub 0.15))) (front_spin_feel (max grip_feel_front (* 2 (min 1 (* kmh 0.02))))) (rear_spin_feel (max grip_feel_rear (* 2 (min 1 (* kmh 0.02))))) (F_scrubVol (* 0.5 (+ 1 front_spin_feel) (power (min 1 (/ F_scrub 6)) 1.8))) (R_scrubVol (* 0.5 (+ 1 rear_spin_feel) (power (min 1 (/ R_scrub 6)) 1.8))) (F_scrubS (* scrub_frq_scale (- 1.3 (* 0.6 (power (/ (min 6 (abs F_scrub)) 6) 2.0))))) (R_scrubS (* scrub_frq_scale (- 1.3 (* 0.6 (power (/ (min 6 (abs R_scrub)) 6) 2.0))))) (F_scrubP (* 0.01 (/ 1 6.28) F_scrubS 0.4 750)) (R_scrubP (* 0.01 (/ 1 6.28) R_scrubS 0.4 500)) (F_scrub (+ (* 0.4 (oscillator (* 1.0 F_scrubP))) (* 0.3 (oscillator (* 1.5 F_scrubP))) (* 0.4 (oscillator (* 7.0 F_scrubP))))) (R_scrub (+ (* 0.4 (oscillator (* 1.0 R_scrubP))) (* 0.3 (oscillator (* 1.5 R_scrubP))) (* 0.4 (oscillator (* 7.0 R_scrubP))))) (F_scrub (* F_scrub scrub_scale_front F_scrubVol)) (R_scrub (* R_scrub scrub_scale_rear R_scrubVol)) (scrub_effect (* scrub_scale 0.8 (+ (spring F_scrub 200000 0.015) (spring R_scrub 200000 0.015)))) ########################################################### # # Join, blend & LFB # (road_features (blend speed_bias5 0.0 road_features)) (road_features (* (max 0.4 (min 0.75 gain)) road_features 1.1 master_rack (* 3 (power tone 1.6)))) (rack_big rack_momentum) # Smart clip (rack_big (* gain rack_big master_rack)) (rack_big2 (smooth (abs rack_big) 0.04)) (pos_neg (if (min 0.0 rack_big) -1 1)) (rack_big (if (max 0 (- (abs rack_big) 0.5)) (+ (min 0.90 rack_big2) (- (abs rack_big) rack_big2)) (abs rack_big))) (rack_big (* rack_big pos_neg)) (max_rack_big max_rack_big) (rack_big2 (smooth (abs rack_big) 0.01)) (max_rack_big (if (max 0 (- rack_big2 max_rack_big)) rack_big2 max_rack_big)) (rack_big (if (max 0 (- max_rack_big 0.9)) (/ (* 0.9 rack_big) max_rack_big) rack_big)) (max_rack_big (* max_rack_big (power 0.1 dt))) ########################################################### # # Gearbox # (gearbox (oscillator (* (abs (- driveshaft_core clutchshaft_core)) 1.0))) (gearbox (* gearbox gearbox_grind clutch 0.05)) (gearbox (spring gearbox 40000.0 0.6 1.0)) (gearbox (* gearbox 0.15)) ########################################################### # # Engine FX # (max_rps 8000.0) (cp (+ cp (min 6.28 (* dt crankshaft 0.7)))) (cp (if (min 0 cp) 0 cp)) (cp (if (max 0 (- cp 6.283)) (- cp 6.283) cp)) (cp (if (max 0 (- cp 6.283)) 0 cp)) (cp (max 0 (min cp 6.283))) (m (min (/ kmh 100.0) 1.0)) (engine_scale (blend m engine_scale_at_still engine_scale_at_speed)) (rps_scale (/ crankshaft max_rps)) (rps_scale (power rps_scale 0.8)) (rps_scale (min rps_scale 0.02)) (rps_scale (max rps_scale 0.14)) (load_mult (smooth throttle 0.1)) (load_mult (max load_mult 0.5)) (n (if (max 0 (- cp 3.14159265)) -1 1)) (x (if (max 0 (- cp 3.14159265)) (- cp 3.14159265) cp)) (engine_vibe (/ (* 16 x (- 3.14159265 x)) (- (* 5 3.14159265 3.14159265) (* 4 x (- 3.14159265 x))))) (engine_vibe (* engine_vibe n)) (engine_effect (* engine_scale load_mult engine_vibe rps_scale)) ########################################################### # # Final Rack & Effects Blending # (gearbox (spring gearbox device_filter_stiffness 0.4 1.0)) (effects (+ gearbox engine_effect scrub_effect)) (effects (* effects (* 2 (power fx 2)) (max 0.4 (min 0.75 gain)) master_effects)) (output (+ (smooth rack_big 0.01) road_features effects)) (output (* output (if (min 0 (- dt 0.1)) 1 0))) (output (* output (min 1 (* (max 0 (- et 0.5)) 0.5)))) ########################################################### (histogram output) # Lock Stops ----------------------------------------- (stops (bumpstop output 0.05 2.0 0.05 0.0)) (output (+ output (* stops device_lock_stop))) (output (if output (if (+ tighten_range tighten_falloff) (tighten output tighten_range tighten_falloff) output) output)) (output (hard_clip output 1.0))