WRC Telemetry for all motion systems and dashboards


# WRC Telemetry

This is a patch for WRC7, WRC8, and WRC9 that enables telemetry through shared memory.

Included you will find:
  • `WrcInjectionPayload.dll` -- a replacement DLL for `PhysXCooking64_s.dll`
  • `DirtRally2.exe` -- pretends WRC is DiRT Rally 2.0 for use with dashboards and motion systems

## Installation

Unzip `wrc-telemetry.zip` in WRC's installation folder then run `Install.bat`.

## Manual installation
  1. Unzip `wrc-telemetry.zip` in WRC's installation folder.
  2. Rename `PhysXCooking64_s.dll` to `PhysXCooking64_s_org.dll`.
  3. Rename `WrcInjectionPayload.dll` to `PhysXCooking64_s.dll`.

NOTE: The file `PhysXCooking64_s_org.dll` must exist. It must be the original `PhysXCooking64_s.dll` from the latest version of the game.

## Usage

  1. Install using the instructions above.
  2. (optional) Start `DirtRally2.exe` to pretend that WRC is DiRT Rally 2.0. This is necesarry unless your dashboard/buttkicker/motion system includes support for this patch.
  3. Start your dashboard/buttkicker/motion system.
  4. Start WRC.
  5. Enjoy :)
## Usage with SimTools

SimTools does not include native support for this telemetry protocol. Instead use the included DiRT Rally 2.0
emulator:

DirtRally2.exe /port 4123 /protocol simtools

SimTools doesn't start unless the game is "Patched". Follow the prompts issued by SimTools and select the folder Documents\My Games\DiRT Rally 2.0 when prompted (even if you don't have DiRT Rally 2.0 installed.)

## Will it break in the future?

Yes.

When Epic Games decides to update the game it will overwrite `PhysXCooking64_s.dll` with an unpatched copy. Run `Install.bat` to fix the issue.

The patch is resilient to smaller changes in WRC. However, if major changes are made to WRC this patch will stop working permanently.

## Where is the source code?

I've shown this is possible. Now do it yourself.

## Is this legal?

Yes. This package includes no copyrighted code or other assets. IANAL.

## Telemetry protocol

C++:
#include <inttypes.h>

constexpr const wchar_t *SHARED_MEMORY_NAME =
    L"Local\\WRC-8wSotWzFKAhBlbW10ZJBKaWMdWszbBXg";

#pragma pack(push, 1)

struct WrcTelemetry
{
    uint32_t sequence_number; // Odd while game is updating shared memory
    uint32_t version; // Version of this struct

    // Version 1:
    int32_t gear;
    float velocity[3]; // Forward, up, right [m/s]
    float acceleration[3]; // Forward, up, right [m/s^2]
    int32_t engine_idle_rpm;
    int32_t engine_max_rpm;
    int32_t engine_rpm;
    float suspension_travel[4]; // It can move this much (LF,LR,RR,RF) [m]
    float suspension_position[4]; // From zero (in air) to `suspension_travel` [m]
    float unknown[4]; // (LF,LR,RR,RF) [?]
};

#pragma pack(pop)
 
Hmm. Not able to get it to work with my Next Level Motion. It installed fine and when I start WRC 9 and drive I do see that the CMD box says Telemetry stream detected but no motion. The port 20777 is correct so I'm not sure what is going on. I'm using the Dirt Rally 2 profile in NLR software.
 
Upvote 0

Latest News

Online or Offline racing?

  • 100% online racing

    Votes: 105 7.9%
  • 75% online 25% offline

    Votes: 136 10.3%
  • 50% online 50% offline

    Votes: 189 14.3%
  • 25% online 75% offline

    Votes: 374 28.2%
  • 100% offline racing

    Votes: 516 38.9%
  • Something else, explain in comment

    Votes: 5 0.4%
Back
Top