• Dear visitors,

    The email issue has been finally solved.
    Thank you for your patience and happy browsing.

    Team ACM.

[DOC] Shared Memory Reference

Status
Not open for further replies.

assettocorsamods

Administrator
Staff member
This follows official communication, shared memory reference, useful when planning to develop new AC apps.

Fields in BLUE - represent the updated structure, according to latest evolutions.
***Last update on 25/04/2016***


SHARED MEMORY STRUCTS

#pragma once

typedef int AC_STATUS;

#define AC_OFF 0
#define AC_REPLAY 1
#define AC_LIVE 2
#define AC_PAUSE 3

typedef int AC_SESSION_TYPE;

#define AC_UNKNOWN -1
#define AC_PRACTICE 0
#define AC_QUALIFY 1
#define AC_RACE 2
#define AC_HOTLAP 3
#define AC_TIME_ATTACK 4
#define AC_DRIFT 5
#define AC_DRAG 6

typedef int AC_FLAG_TYPE;

#define AC_NO_FLAG 0
#define AC_BLUE_FLAG 1
#define AC_YELLOW_FLAG 2
#define AC_BLACK_FLAG 3
#define AC_WHITE_FLAG 4
#define AC_CHECKERED_FLAG 5
#define AC_PENALTY_FLAG 6


#pragma pack(push)
#pragma pack(4)

struct SPageFilePhysics
{
int packetId = 0;
float gas = 0;
float brake = 0;
float fuel = 0;
int gear = 0;
int rpms = 0;
float steerAngle = 0;
float speedKmh = 0;
float velocity[3];
float accG[3];
float wheelSlip[4];
float wheelLoad[4];
float wheelsPressure[4];
float wheelAngularSpeed[4];
float tyreWear[4];
float tyreDirtyLevel[4];
float tyreCoreTemperature[4];
float camberRAD[4];
float suspensionTravel[4];
float drs = 0;
float tc = 0;
float heading = 0;
float pitch = 0;
float roll = 0;
float cgHeight;
float carDamage[5];
int numberOfTyresOut = 0;
int pitLimiterOn = 0;
float abs = 0;
float kersCharge = 0;
float kersInput = 0;
int autoShifterOn = 0;
float rideHeight[2];
float turboBoost = 0;
float ballast = 0;
float airDensity = 0;

};


struct SPageFileGraphic
{
int packetId = 0;
AC_STATUS status = AC_OFF;
AC_SESSION_TYPE session = AC_PRACTICE;
wchar_t currentTime[15];
wchar_t lastTime[15];
wchar_t bestTime[15];
wchar_t split[15];
int completedLaps = 0;
int position = 0;
int iCurrentTime = 0;
int iLastTime = 0;
int iBestTime = 0;
float sessionTimeLeft = 0;
float distanceTraveled = 0;
int isInPit = 0;
int currentSectorIndex = 0;
int lastSectorTime = 0;
int numberOfLaps = 0;
wchar_t tyreCompound[33];

float replayTimeMultiplier = 0;
float normalizedCarPosition = 0;
float carCoordinates[3];
float penaltyTime = 0;
AC_FLAG_TYPE flag = AC_NO_FLAG;
int idealLineOn = 0;
int isInPitLane = 0;

float surfaceGrip = 0;

};


struct SPageFileStatic
{
wchar_t smVersion[15];
wchar_t acVersion[15];
// session static info
int numberOfSessions = 0;
int numCars = 0;
wchar_t carModel[33];
wchar_t track[33];
wchar_t playerName[33];
wchar_t playerSurname[33];
wchar_t playerNick[33];

int sectorCount = 0;

// car static info
float maxTorque = 0;
float maxPower = 0;
int maxRpm = 0;
float maxFuel = 0;
float suspensionMaxTravel[4];
float tyreRadius[4];
float maxTurboBoost = 0;

float airTemp = 0;
float roadTemp = 0;
bool penaltiesEnabled = false;

float aidFuelRate = 0;
float aidTireRate = 0;
float aidMechanicalDamage = 0;
bool aidAllowTyreBlankets = false;
float aidStability = 0;
bool aidAutoClutch = false;
bool aidAutoBlip = false;

};

#pragma pack(pop)


SHARED MEMORY NAMES

physics : acpmf_physics
graphics : acpmf_graphics
static : acpmf_static

***
SHARED MEMORY EXAMPLE in attachment
 

Attachments

Last edited by a moderator:
Status
Not open for further replies.
Top