Skip to content

Instantly share code, notes, and snippets.

@lukaville
Created April 3, 2018 22:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lukaville/fb89a789eae032e9daf7bf9b26ff8d80 to your computer and use it in GitHub Desktop.
Save lukaville/fb89a789eae032e9daf7bf9b26ff8d80 to your computer and use it in GitHub Desktop.
int sub_6DC8(int assistantMode, signed int inputSpeedRpm, int assistantConfigAddress) {
signed int targetRpm; // r4
signed int asisstantCoefficient; // r3
signed int i; // r6
int power1; // r0
int power2; // r2
int rpmDiff; // r1
int rawPowerDiff; // r1
int powerDiff; // r1
int resultPower; // r0
int v12; // [sp+0h] [bp-30h]
int v13; // [sp+4h] [bp-2Ch]
int v14; // [sp+8h] [bp-28h]
int v15; // [sp+Ch] [bp-24h]
int v16; // [sp+10h] [bp-20h]
int v17; // [sp+14h] [bp-1Ch]
int v18; // [sp+18h] [bp-18h]
int v19; // [sp+1Ch] [bp-14h]
targetRpm = 0;
asisstantCoefficient = 50; // 50 = full, 25 = half?
if (inputSpeedRpm > 300) {
inputSpeedRpm = 300;
}
for (i = 0; i < 8; ++i) {
if (assistantMode == 1)
*(&v12 + i) = *(unsigned int *) (i + assistantConfigAddress + 2);
if (assistantMode == 2)
*(&v12 + i) = *(unsigned int *) (i + assistantConfigAddress + 10);
if (assistantMode == 3)
*(&v12 + i) = *(unsigned int *) (i + assistantConfigAddress + 18);
if (assistantMode == 4)
*(&v12 + i) = *(unsigned int *) (i + assistantConfigAddress + 26);
if (assistantMode == 5)
*(&v12 + i) = *(unsigned int *) (i + assistantConfigAddress + 34);
}
if (inputSpeedRpm >= 50) {
if (inputSpeedRpm >= 100) {
if (inputSpeedRpm >= 150) {
if (inputSpeedRpm >= 200) {
if (inputSpeedRpm >= 250) {
targetRpm = 275;
if (inputSpeedRpm >= 275) {
power2 = v19;
if (inputSpeedRpm >= 300) {
targetRpm = 300;
power1 = v19;
}
else {
asisstantCoefficient = 25;
power1 = v18;
}
}
else {
asisstantCoefficient = 25;
targetRpm = 250;
power1 = v17;
power2 = v18;
}
}
else {
targetRpm = 200;
power1 = v16;
power2 = v17;
}
}
else {
targetRpm = 150;
power1 = v15;
power2 = v16;
}
}
else {
targetRpm = 100;
power1 = v14;
power2 = v15;
}
}
else {
targetRpm = 50;
power1 = v13;
power2 = v14;
}
}
else {
power1 = v12;
power2 = v13;
}
rpmDiff = inputSpeedRpm - targetRpm;
if (power1 >= power2)
rawPowerDiff = rpmDiff * (power1 - power2);
else
rawPowerDiff = rpmDiff * (power2 - power1);
powerDiff = rawPowerDiff / asisstantCoefficient;
if (power1 >= power2)
resultPower = power1 - powerDiff;
else
resultPower = power1 + powerDiff;
return resultPower;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment