# AC / CM / CSP / MOZA Research

Date: 2026-03-13

This note captures the highest-signal sources found for extending the local coaching stack beyond the first shared-memory-only prototype.

## Assetto Corsa

Primary local evidence from the installed game and user data:

- AC creates three named shared-memory pages:
  - `acpmf_physics`
  - `acpmf_graphics`
  - `acpmf_static`
- AC writes post-session telemetry to:
  - `Documents\Assetto Corsa\aim\telemetry_dump.act`
  - `Documents\Assetto Corsa\out\race_out.json`
  - `Documents\Assetto Corsa\out\laps.ini`
  - `Documents\Assetto Corsa\logs\log.txt`
- AC logs show `RemoteTelemetryUDP :: creating socket on port 9996`.
- AC logs also show the game saving telemetry channels such as:
  - `G_LAT`
  - `STEERANGLE`
  - `SPEED`
  - `THROTTLE`
  - `BRAKE`
  - `GEAR`
  - `G_LON`
  - `CLUTCH`
  - `RPMS`
  - `SPLINE_POSITION`
  - wheel speeds
  - suspension travel

Useful external references:

- Open-source libraries refer back to the official AC forum shared-memory reference thread:
  - [mdjarv/assettocorsasharedmemory](https://github.com/mdjarv/assettocorsasharedmemory)
  - [rsys-dev/accsharedmemory](https://github.com/rsys-dev/accsharedmemory)
- Community mirrors still point to the same official source:
  - [[DOC] Shared Memory Reference | Assetto Corsa Mods](https://www.assettocorsamods.net/threads/doc-shared-memory-reference.58/)

Important implication:

- The current build should stop trusting advanced shared-memory fields blindly.
- The local AC install is already producing richer telemetry artifacts than shared memory alone, especially via `telemetry_dump.act` and the built-in telemetry channel export path.

Current gap:

- No primary-source public format documentation was found for `telemetry_dump.act`.
- That makes `.act` parsing a separate reverse-engineering or AiM-software-interoperability task.

## Content Manager

Primary-source findings from x4fab’s official changelog on AC Stuff:

- CM has an `acmanager://launch` URL command:
  - [0.8.2149.36611](https://acstuff.club/f/d/10-content-manager-detailed-changelog/243)
- CM has `acmanager://race/csp` support:
  - [0.8.2831.40039](https://acstuff.club/f/d/10-content-manager-detailed-changelog/278)
- Support for `acmanager://race/csp` was improved later:
  - [0.8.2854.40158](https://acstuff.club/f/d/10-content-manager-detailed-changelog/278)
- CM URL protocol can launch a Quick Drive preset with `&go=1`:
  - [0.8.2329.38887](https://acstuff.club/f/d/10-content-manager-detailed-changelog/254)
- CM also gained a command parameter to load a Quick Drive preset in UI mode:
  - [0.8.1709.34191](https://acstuff.club/f/d/10-content-manager-detailed-changelog/211)
- CM no longer requires replacing the original launcher for Steam integration:
  - [0.8.2831.40039](https://acstuff.club/f/d/10-content-manager-detailed-changelog/278)
- CM optionally reads AC shared memory itself:
  - [0.7.667.12738](https://acstuff.club/f/d/10-content-manager-detailed-changelog/69)

Local evidence from logs:

- CM launches AC through `AcManager.Tools.Starters.AppIdStarter`.
- In practice that starter launches `acs.exe`, not `AssettoCorsa.exe`.
- CM was already a better launch/control surface than the stock AC launcher on this machine.

Important implication:

- The best launch architecture is:
  - CM as the preferred interactive orchestrator.
  - `acs.exe` as the low-level fallback.
  - `AssettoCorsa.exe` launcher should be treated as suspect on this machine.
- The right next implementation is to learn CM’s `acmanager://race/...` payloads or Quick Drive preset flow instead of trying to steer an already-open CM instance by brute force.

Current gap:

- No primary-source, stable, fully documented single-instance retarget contract for an already-open CM instance was located in the available official web docs.

## Custom Shaders Patch

Primary-source official CSP docs:

- Main CSP docs tree:
  - [Documentation: CSP](https://cup.acstuff.club/docs/csp)
- Physics scripts for cars:
  - [CSP/Cars/Physics scripts](https://cup.acstuff.club/docs/csp/cars/physics-scripts)
- Python app live reload:
  - [CSP/Python Apps/Live reload](https://cup.acstuff.club/docs/csp/python-apps/live-reload)
- Track extended physics enablement:
  - [CSP/Tracks/Enabling extended physics](https://cup.acstuff.club/docs/csp/tracks/enabling-extended-physics)

What matters for this project:

- CSP physics scripts can:
  - access detailed car physics state;
  - modify user controls;
  - change engine RPM;
  - damage the car or drivetrain;
  - alter tyre inflation;
  - add forces to the car body.
- CSP Python apps can be reloaded live without restarting AC.
- CSP track extended physics gives a path to more advanced per-track logic, conditions, and possibly line-aware helpers without external memory pokes.

Important implication:

- A second-generation version of the coach should not stay purely external.
- The strongest extension path is:
  - external recorder and analysis remain as the stable capture layer;
  - CSP Python app or Lua logic provides in-sim overlay, richer state, or track-side helper logic;
  - CSP should be used for deliberate in-sim assist surfaces, not for fake launch automation.

Current gap:

- Official CSP docs expose a lot of configuration and script features, but not a simple official “do this to stream a custom coaching state externally” recipe.
- The next step there is likely a small CSP Python app or Lua script of our own.

## MOZA

Primary official MOZA sources:

- AC / ACC guide:
  - [Assetto Corsa (AC) / Assetto Corsa Competizione (ACC)](https://support.mozaracing.com/en/support/solutions/articles/70000627983-assetto-corsa-ac-assetto-corsa-competizione-acc-)
- Pit House user manual:
  - [MOZA Pit House User Manual](https://support.mozaracing.com/en/support/solutions/articles/70000625635-moza-pit-house-user-manual)
- Digital dash telemetry support matrix:
  - [Digital Dash Telemetry Support](https://support.mozaracing.com/en/support/solutions/articles/70000627978-digital-dash-telemetry-support)

Important findings:

- For AC/ACC, MOZA says FFB support does not need extra configuration.
- For telemetry, MOZA says Pit House can auto-configure AC.
- If telemetry is inaccurate or lost, MOZA’s manual path is:
  - copy the `Moza` folder from Pit House’s `bin\GameConfigs\Assetto Corsa`
  - into `assettocorsa\apps\python`
  - then enable the MOZA module in AC’s General UI Modules.
- MOZA’s AC/ACC article includes AC-specific wheel tuning notes:
  - lower speed FFB: `3 km/h`
  - reduction: `1%`
  - disable AC soft lock if rebound occurs from mismatched steering limits.
- MOZA’s digital dash matrix shows AC supports at least:
  - `MaxRpm`
  - `LapCount`
  - `CarCount`
  - `Lap`
  - `Pos`
  - `Gap`
  - `EstimatedLapTime`

Important implication:

- The MOZA AC plugin path is real and official.
- We should treat the MOZA Python app in `apps/python/Moza` as a first-class telemetry surface to inspect.
- The wheel should contribute:
  - dash-level data validation;
  - device-side tuning recommendations;
  - possibly map/opponent-position information;
  - but not be the authoritative base layer for lap analysis.

Current gap:

- No primary official API or file-format documentation was found for MOZA’s internal telemetry payloads on Windows.
- Pit House clearly installs/configures telemetry plugins, but the public docs stop at configuration instructions, not a programmable contract.

## Local Source Truth Already Available

The machine itself already contains valuable primary sources:

- `Documents\Assetto Corsa\cfg\race.ini`
- `Documents\Assetto Corsa\cfg\telemetry_user.ini`
- `Documents\Assetto Corsa\aim\telemetry_dump.act`
- `Documents\Assetto Corsa\logs\log.txt`
- `AppData\Local\AcTools Content Manager\Logs\Main Log_*.log`
- `AppData\Local\MOZA Pit House\Telemetry\TelemetryConfig.ini`
- local CSP Lua SDK and README files under the AC install

These should be considered authoritative before any community guesswork.

## What To Build Next

1. Fix the AC shared-memory field map using a verified current layout.
2. Add post-session artifact capture by default:
   - copy `.act`, `race_out.json`, `laps.ini`, and logs into each captured session.
3. Inspect the MOZA AC plugin package under Pit House and the installed `apps/python/Moza` files.
4. Add a CSP in-sim app or Lua component for live overlay and richer state.
5. Replace current CM launch assumptions with one of:
   - Quick Drive preset + `acmanager://...&go=1`
   - verified `acmanager://race/csp` payload
   - `acs.exe` fallback only when CM protocol can’t be driven reliably.
6. If `.act` parsing remains undocumented, either:
   - reverse enough of it for our needs, or
   - bridge through AiM tooling if that proves easier.

## Sources

- [MOZA AC / ACC support article](https://support.mozaracing.com/en/support/solutions/articles/70000627983-assetto-corsa-ac-assetto-corsa-competizione-acc-)
- [MOZA digital dash telemetry matrix](https://support.mozaracing.com/en/support/solutions/articles/70000627978-digital-dash-telemetry-support)
- [MOZA Pit House user manual](https://support.mozaracing.com/en/support/solutions/articles/70000625635-moza-pit-house-user-manual)
- [Content Manager detailed changelog](https://acstuff.club/f/d/10-content-manager-detailed-changelog)
- [Content Manager changelog entry with `acmanager://launch`](https://acstuff.club/f/d/10-content-manager-detailed-changelog/243)
- [Content Manager changelog entry with `acmanager://race/csp`](https://acstuff.club/f/d/10-content-manager-detailed-changelog/278)
- [Content Manager changelog entry mentioning Quick Drive preset launch via `&go=1`](https://acstuff.club/f/d/10-content-manager-detailed-changelog/254)
- [CSP docs root](https://cup.acstuff.club/docs/csp)
- [CSP car physics scripts](https://cup.acstuff.club/docs/csp/cars/physics-scripts)
- [CSP Python app live reload](https://cup.acstuff.club/docs/csp/python-apps/live-reload)
- [CSP track extended physics](https://cup.acstuff.club/docs/csp/tracks/enabling-extended-physics)
- [Open-source AC shared memory library citing the official forum thread](https://github.com/mdjarv/assettocorsasharedmemory)
- [Open-source AC shared memory library citing the official forum thread](https://github.com/rsys-dev/accsharedmemory)
