Fix float mode checking for arithmetic operators

This commit is contained in:
Aly 2021-04-10 12:38:37 -07:00
parent 9e3e01b6ac
commit a3be4673b1

View File

@ -1318,6 +1318,8 @@ static u32 Cheat_ApplyCheat(const Handle processHandle, CheatDescription* const
{ {
if (cheat_state.floatMode) if (cheat_state.floatMode)
{ {
float flarg1;
memcpy(&flarg1, &arg1, sizeof(float));
u32 tmp; u32 tmp;
if (!Cheat_Read32(processHandle, arg0 & 0x00FFFFFF, &tmp)) if (!Cheat_Read32(processHandle, arg0 & 0x00FFFFFF, &tmp))
{ {
@ -1325,7 +1327,7 @@ static u32 Cheat_ApplyCheat(const Handle processHandle, CheatDescription* const
} }
float value; float value;
memcpy(&value, &tmp, sizeof(float)); memcpy(&value, &tmp, sizeof(float));
value += arg1; value += flarg1;
memcpy(&tmp, &value, sizeof(u32)); memcpy(&tmp, &value, sizeof(u32));
if (!Cheat_Write32(processHandle, arg0 & 0x00FFFFFF, tmp)) if (!Cheat_Write32(processHandle, arg0 & 0x00FFFFFF, tmp))
{ {
@ -1351,6 +1353,8 @@ static u32 Cheat_ApplyCheat(const Handle processHandle, CheatDescription* const
{ {
if (cheat_state.floatMode) if (cheat_state.floatMode)
{ {
float flarg1;
memcpy(&flarg1, &arg1, sizeof(float));
u32 tmp; u32 tmp;
if (!Cheat_Read32(processHandle, arg0 & 0x00FFFFFF, &tmp)) if (!Cheat_Read32(processHandle, arg0 & 0x00FFFFFF, &tmp))
{ {
@ -1358,7 +1362,7 @@ static u32 Cheat_ApplyCheat(const Handle processHandle, CheatDescription* const
} }
float value; float value;
memcpy(&value, &tmp, sizeof(float)); memcpy(&value, &tmp, sizeof(float));
value *= arg1; value *= flarg1;
memcpy(&tmp, &value, sizeof(u32)); memcpy(&tmp, &value, sizeof(u32));
if (!Cheat_Write32(processHandle, arg0 & 0x00FFFFFF, tmp)) if (!Cheat_Write32(processHandle, arg0 & 0x00FFFFFF, tmp))
{ {
@ -1384,6 +1388,8 @@ static u32 Cheat_ApplyCheat(const Handle processHandle, CheatDescription* const
{ {
if (cheat_state.floatMode) if (cheat_state.floatMode)
{ {
float flarg1;
memcpy(&flarg1, &arg1, sizeof(float));
u32 tmp; u32 tmp;
if (!Cheat_Read32(processHandle, arg0 & 0x00FFFFFF, &tmp)) if (!Cheat_Read32(processHandle, arg0 & 0x00FFFFFF, &tmp))
{ {
@ -1391,7 +1397,7 @@ static u32 Cheat_ApplyCheat(const Handle processHandle, CheatDescription* const
} }
float value; float value;
memcpy(&value, &tmp, sizeof(float)); memcpy(&value, &tmp, sizeof(float));
value /= arg1; value /= flarg1;
memcpy(&tmp, &value, sizeof(u32)); memcpy(&tmp, &value, sizeof(u32));
if (!Cheat_Write32(processHandle, arg0 & 0x00FFFFFF, tmp)) if (!Cheat_Write32(processHandle, arg0 & 0x00FFFFFF, tmp))
{ {
@ -1417,9 +1423,11 @@ static u32 Cheat_ApplyCheat(const Handle processHandle, CheatDescription* const
{ {
if (cheat_state.data1Mode) if (cheat_state.data1Mode)
{ {
float flarg1;
memcpy(&flarg1, &arg1, sizeof(float));
float value; float value;
memcpy(&value, activeData(), sizeof(float)); memcpy(&value, activeData(), sizeof(float));
value *= arg1; value *= flarg1;
memcpy(activeData(), &value, sizeof(float)); memcpy(activeData(), &value, sizeof(float));
} }
else else
@ -1432,9 +1440,11 @@ static u32 Cheat_ApplyCheat(const Handle processHandle, CheatDescription* const
{ {
if (cheat_state.data1Mode) if (cheat_state.data1Mode)
{ {
float flarg1;
memcpy(&flarg1, &arg1, sizeof(float));
float value; float value;
memcpy(&value, activeData(), sizeof(float)); memcpy(&value, activeData(), sizeof(float));
value /= arg1; value /= flarg1;
memcpy(activeData(), &value, sizeof(float)); memcpy(activeData(), &value, sizeof(float));
} }
else else