Guest User

forza horizon 5 data out format

a guest
Nov 15th, 2021
3,717
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.99 KB | None | 0 0
  1. /*
  2. {
  3. size: number (in bytes)
  4. type: 'unknown' (binary) || 'int8' || 'uint8' || 'int16' || 'int32' || 'uint32' || 'float'
  5. // the type field may contain an '@' and after it say what conversion to apply:
  6. '@boolean' (0=false, 1=true, will be converted to boolean) || '@normalize255to1' (divides value / 255) || '@UTF' (will be converted into utf16 char)
  7. name: string (field name) || 'unknown' (field name is not known)
  8. }
  9.  
  10. */
  11.  
  12. // FORMAT SOURCE: https://forums.forzamotorsport.net/turn10_postst128499_Forza-Motorsport-7--Data-Out--feature-details.aspx
  13. const DATA_OUT_FORMAT = [
  14. {
  15. size: 4,
  16. type: 'int32',
  17. name: 'IsRaceOn'
  18. },
  19. {
  20. size: 4,
  21. type: 'uint32',
  22. name: 'TimestampMS'
  23. },
  24. {
  25. size: 4,
  26. type: 'float',
  27. name: 'EngineMaxRpm'
  28. },
  29. {
  30. size: 4,
  31. type: 'float',
  32. name: 'EngineIdleRpm'
  33. },
  34. {
  35. size: 4,
  36. type: 'float',
  37. name: 'CurrentEngineRpm'
  38. },
  39. {
  40. size: 4,
  41. type: 'float',
  42. name: 'AccelerationX' //In the car's local space; X = right, Y = up, Z = forward
  43. },
  44. {
  45. size: 4,
  46. type: 'float',
  47. name: 'AccelerationY'
  48. },
  49. {
  50. size: 4,
  51. type: 'float',
  52. name: 'AccelerationZ'
  53. },
  54. {
  55. size: 4,
  56. type: 'float',
  57. name: 'VelocityX' //In the car's local space; X = right, Y = up, Z = forward
  58. },
  59. {
  60. size: 4,
  61. type: 'float',
  62. name: 'VelocityY'
  63. },
  64. {
  65. size: 4,
  66. type: 'float',
  67. name: 'VelocityZ'
  68. },
  69. {
  70. size: 4,
  71. type: 'float',
  72. name: 'AngularVelocityX'
  73. },
  74. {
  75. size: 4,
  76. type: 'float',
  77. name: 'AngularVelocityY'
  78. },
  79. {
  80. size: 4,
  81. type: 'float',
  82. name: 'AngularVelocityZ'
  83. },
  84. {
  85. size: 4,
  86. type: 'float',
  87. name: 'Yaw'
  88. },
  89. {
  90. size: 4,
  91. type: 'float',
  92. name: 'Pitch'
  93. },
  94. {
  95. size: 4,
  96. type: 'float',
  97. name: 'Roll'
  98. },
  99. {
  100. size: 4,
  101. type: 'float',
  102. name: 'NormalizedSuspensionTravelFrontLeft' // Suspension travel normalized: 0.0f = max stretch; 1.0 = max compression
  103. },
  104. {
  105. size: 4,
  106. type: 'float',
  107. name: 'NormalizedSuspensionTravelFrontRight'
  108. },
  109. {
  110. size: 4,
  111. type: 'float',
  112. name: 'NormalizedSuspensionTravelRearLeft'
  113. },
  114. {
  115. size: 4,
  116. type: 'float',
  117. name: 'NormalizedSuspensionTravelRearRight'
  118. },
  119. {
  120. size: 4,
  121. type: 'float',
  122. name: 'TireSlipRatioFrontLeft' // Tire normalized slip ratio, = 0 means 100% grip and |ratio| > 1.0 means loss of grip. THis is longitudinal slip or just spin
  123. },
  124. {
  125. size: 4,
  126. type: 'float',
  127. name: 'TireSlipRatioFrontRight'
  128. },
  129. {
  130. size: 4,
  131. type: 'float',
  132. name: 'TireSlipRatioRearLeft'
  133. },
  134. {
  135. size: 4,
  136. type: 'float',
  137. name: 'TireSlipRatioRearRight'
  138. },
  139. {
  140. size: 4,
  141. type: 'float',
  142. name: 'WheelRotationSpeedFrontLeft' // Wheel rotation speed radians/sec.
  143. },
  144. {
  145. size: 4,
  146. type: 'float',
  147. name: 'WheelRotationSpeedFrontRight'
  148. },
  149. {
  150. size: 4,
  151. type: 'float',
  152. name: 'WheelRotationSpeedRearLeft'
  153. },
  154. {
  155. size: 4,
  156. type: 'float',
  157. name: 'WheelRotationSpeedRearRight'
  158. },
  159. {
  160. size: 4,
  161. type: 'int32@boolean',
  162. name: 'WheelOnRumbleStripFrontLeft' // = 1 when wheel is on rumble strip, = 0 when off.
  163. },
  164. {
  165. size: 4,
  166. type: 'int32@boolean',
  167. name: 'WheelOnRumbleStripFrontRight'
  168. },
  169. {
  170. size: 4,
  171. type: 'int32@boolean',
  172. name: 'WheelOnRumbleStripRearLeft'
  173. },
  174. {
  175. size: 4,
  176. type: 'int32@boolean',
  177. name: 'WheelOnRumbleStripRearRight'
  178. },
  179. {
  180. size: 4,
  181. type: 'int32@boolean',
  182. name: 'WheelInPuddleDepthFrontLeft' // = from 0 to 1, where 1 is the deepest puddle
  183. },
  184. {
  185. size: 4,
  186. type: 'int32@boolean',
  187. name: 'WheelInPuddleDepthFrontRight'
  188. },
  189. {
  190. size: 4,
  191. type: 'int32@boolean',
  192. name: 'WheelInPuddleDepthRearLeft'
  193. },
  194. {
  195. size: 4,
  196. type: 'int32@boolean',
  197. name: 'WheelInPuddleDepthRearRight'
  198. },
  199. {
  200. size: 4,
  201. type: 'float',
  202. name: 'SurfaceRumbleFrontLeft' // Non-dimensional surface rumble values passed to controller force feedback
  203. },
  204. {
  205. size: 4,
  206. type: 'float',
  207. name: 'SurfaceRumbleFrontRight'
  208. },
  209. {
  210. size: 4,
  211. type: 'float',
  212. name: 'SurfaceRumbleRearLeft'
  213. },
  214. {
  215. size: 4,
  216. type: 'float',
  217. name: 'SurfaceRumbleRearRight'
  218. },
  219. {
  220. size: 4,
  221. type: 'float',
  222. name: 'TireSlipAngleFrontLeft' // Tire normalized slip angle, = 0 means 100% grip and |angle| > 1.0 means loss of grip. This is lateral tire slip angle (not the same as wheel angle)
  223. },
  224. {
  225. size: 4,
  226. type: 'float',
  227. name: 'TireSlipAngleFrontRight'
  228. },
  229. {
  230. size: 4,
  231. type: 'float',
  232. name: 'TireSlipAngleRearLeft'
  233. },
  234. {
  235. size: 4,
  236. type: 'float',
  237. name: 'TireSlipAngleRearRight'
  238. },
  239. {
  240. size: 4,
  241. type: 'float',
  242. name: 'TireCombinedSlipFrontLeft'// Tire normalized combined slip, = 0 means 100% grip and |slip| > 1.0 means loss of grip. This is a combination of TireSlipRatioFrontLeft and TireSlipAngleFrontLeft.
  243. },
  244. {
  245. size: 4,
  246. type: 'float',
  247. name: 'TireCombinedSlipFrontRight'
  248. },
  249. {
  250. size: 4,
  251. type: 'float',
  252. name: 'TireCombinedSlipRearLeft'
  253. },
  254. {
  255. size: 4,
  256. type: 'float',
  257. name: 'TireCombinedSlipRearRight'
  258. },
  259. {
  260. size: 4,
  261. type: 'float',
  262. name: 'SuspensionTravelMetersFrontLeft' // Actual suspension travel in meters
  263. },
  264. {
  265. size: 4,
  266. type: 'float',
  267. name: 'SuspensionTravelMetersFrontRight'
  268. },
  269. {
  270. size: 4,
  271. type: 'float',
  272. name: 'SuspensionTravelMetersRearLeft'
  273. },
  274. {
  275. size: 4,
  276. type: 'float',
  277. name: 'SuspensionTravelMetersRearRight'
  278. },
  279. {
  280. size: 4,
  281. type: 'int32',
  282. name: 'CarOrdinal' //Unique ID of the car make/model
  283. },
  284. {
  285. size: 4,
  286. type: 'int32',
  287. name: 'CarClass'//Between 0 (D -- worst cars) and 7 (X class -- best cars) inclusive
  288. },
  289. {
  290. size: 4,
  291. type: 'int32',
  292. name: 'CarPerformanceIndex' //Between 100 (slowest car) and 999 (fastest car) inclusive
  293. },
  294. {
  295. size: 4,
  296. type: 'int32',
  297. name: 'DrivetrainType' //Corresponds to EDrivetrainType; 0 = FWD, 1 = RWD, 2 = AWD
  298. },
  299. {
  300. size: 4,
  301. type: 'int32',
  302. name: 'NumCylinders' //Number of cylinders in the engine
  303. },
  304.  
  305. // V2 additional values
  306.  
  307. {
  308. size: 4,
  309. type: 'int32',
  310. name: 'CarCategory'
  311. },
  312. {
  313. size: 4,
  314. type: 'int32',
  315. name: 'unknown' // > 0 when crashing into objects
  316. },
  317. {
  318. size: 4,
  319. type: 'int32',
  320. name: 'unknown' // > 0 when crashing into objects
  321. },
  322. {
  323. size: 4,
  324. type: 'float',
  325. name: 'PositionX' // in meters
  326. },
  327. {
  328. size: 4,
  329. type: 'float',
  330. name: 'PositionY'
  331. },
  332. {
  333. size: 4,
  334. type: 'float',
  335. name: 'PositionZ'
  336. },
  337. {
  338. size: 4,
  339. type: 'float',
  340. name: 'Speed' // in meters per second
  341. },
  342. {
  343. size: 4,
  344. type: 'float',
  345. name: 'Power' // in watts
  346. },
  347. {
  348. size: 4,
  349. type: 'float',
  350. name: 'Torque' // newton meter
  351. },
  352. {
  353. size: 4,
  354. type: 'float',
  355. name: 'TireTemperatureFrontLeft' // °F
  356. },
  357. {
  358. size: 4,
  359. type: 'float',
  360. name: 'TireTemperatureFrontRight'
  361. },
  362. {
  363. size: 4,
  364. type: 'float',
  365. name: 'TireTemperatureRearLeft'
  366. },
  367. {
  368. size: 4,
  369. type: 'float',
  370. name: 'TireTemperatureRearRight'
  371. },
  372. {
  373. size: 4,
  374. type: 'float',
  375. name: 'Boost'
  376. },
  377. {
  378. size: 4,
  379. type: 'float',
  380. name: 'Fuel'
  381. },
  382. {
  383. size: 4,
  384. type: 'float',
  385. name: 'DistanceTraveled'
  386. },
  387. {
  388. size: 4,
  389. type: 'float',
  390. name: 'BestLap'
  391. },
  392. {
  393. size: 4,
  394. type: 'float',
  395. name: 'LastLap'
  396. },
  397. {
  398. size: 4,
  399. type: 'float',
  400. name: 'CurrentLap'
  401. },
  402. {
  403. size: 4,
  404. type: 'float',
  405. name: 'CurrentRaceTime'
  406. },
  407. {
  408. size: 2,
  409. type: 'uint16',
  410. name: 'LapNumber'
  411. },
  412. {
  413. size: 1,
  414. type: 'uint8',
  415. name: 'RacePosition'
  416. },
  417. {
  418. size: 1,
  419. type: 'uint8@normalize255to1',
  420. name: 'Throttle'
  421. },
  422. {
  423. size: 1,
  424. type: 'uint8@normalize255to1',
  425. name: 'Brake'
  426. },
  427. {
  428. size: 1,
  429. type: 'uint8@normalize255to1',
  430. name: 'Clutch'
  431. },
  432. {
  433. size: 1,
  434. type: 'uint8@normalize255to1',
  435. name: 'HandBrake'
  436. },
  437. {
  438. size: 1,
  439. type: 'uint8',
  440. name: 'Gear'
  441. },
  442. {
  443. size: 1,
  444. type: 'uint8@normalize255to1',
  445. name: 'Steer'
  446. },
  447. {
  448. size: 1,
  449. type: 'int8',
  450. name: 'NormalizedDrivingLine'
  451. },
  452. {
  453. size: 1,
  454. type: 'int8',
  455. name: 'NormalizedAIBrakeDifference'
  456. }
  457. }
Advertisement
Add Comment
Please, Sign In to add comment