12-11-2021, 11:55 AM
Friends,
I did a code analysis of our game (Windy.exe file) using the cheat engine, ghidra and ollydbg programs and found some opcodes/addresses that change some features of the game, as follows:
1) 004F3996=> This item, when reduced, greatly increases the speed of the player's car, without affecting the balance and stability of the car;
2) 004F3A33=> When we reduce the value, the player's car achieves superior performance with better acceleration, better braking and better tire consumption. When we increase the value, exactly the opposite happens;
3) 004F39A4=> The higher the number (Up to 244) the car is more stable and more grip;
4) 004F3A32=> When reduced, the car has better stability and performance;
5) 0043BEA6=> This code determines the break rate of the player and the AIs, the default code is "MOV EAX, 1B7740", if we change it, for example, to "MOV ECX, 9000", the breaks and crashes will become more frequent.
6) 0043BEAF=> This code is complementary to 43BEA6, the default is "STANDARD=> CMP EDX,64", if we change the 64 to a smaller number, the rate of player and AI breakdowns will be lower and the AI results will be more predictable, if we increase the value, breakdowns will be more frequent.
7) 004F398E=> This rate affects the player's average consumption, if the value is reduced to the minimum (1) he will not consume fuel, if increased the consumption rate will be higher;
8) 004F3A60=> When the driver has an accident or suffer a breakdown, this address is set to 48, if we reset this value to zero and lock, the car it will be unbreakable, if for some reason the car suffer a breakdown and we set value to zero, the car will come back to life;
9) 00527D20=> This is the REL address (The same one from the TRACK.TXT file), it can be manipulated between a training session and the race;
10) 004F0610=> Opponent strength value, this index is determined at the beginning of the championship, but it is possible to change between a race and change the dynamics of a championship;
11) 004F3AE2=> Player's engine power, the maximum and default value is 65535, if we reduce this value, the car will lose power;
12) 00472765=> This address calculates the pole position point, if we set it to NOP the owner of the best time will not receive the point for the pole position;
13) 00469732=> The extra point calculation is done at this address, a small change of the code "inc [ebx+00000090]" to "inc [ebx+00000150]", prevents the game from awarding the extra point to the driver who leads the most laps;
14) 004F2668 to 004F2689=> In this range we have the points that are distributed in the championship races, if we change it the game starts calculating based on the new values.
These addresses allow us to create cars with different speed, stability and durability characteristics.
It is now also possible to distribute points based on other championships in other categories, such as Formula 1.
I made a simulation of the 1987 season, that year we had Mario Andretti's Lola-Chevrolet which was fast but fragile. I created a version of Bobby Rahal's Lola-Cosworth, which was fast and very reliable. I also created versions of the March Cosworth (Michael Andretti) which was fast and reliable, but not as good as Rahal's car, and I also made a version of the Penske which was a car which was not as fast, not as reliable, but which achieved good results with Mears, Fittipaldi, Unser,Sr and Danny Sullivan.
Now it is possible to create cars with characteristics from other smaller categories like Formula Atlantic or Indylights, the possibilities are endless.
I think it is even possible to reproduce rainy conditions, because we have a way to change the grip of the car and the strength of the AIs so that they act as if they were in the rain.
The only prerequisite is to know how to use the Cheat Engine program (there are numerous tutorials on youtube). I recommend paying special attention to the "Auto-assemble" option because this is where we will make the changes.
I believe we now have many possibilities to make our beloved game even more dynamic.
Sorry for my english, i used google translate, if any phase not make a sense, i ask you to let me know.
I did a code analysis of our game (Windy.exe file) using the cheat engine, ghidra and ollydbg programs and found some opcodes/addresses that change some features of the game, as follows:
1) 004F3996=> This item, when reduced, greatly increases the speed of the player's car, without affecting the balance and stability of the car;
2) 004F3A33=> When we reduce the value, the player's car achieves superior performance with better acceleration, better braking and better tire consumption. When we increase the value, exactly the opposite happens;
3) 004F39A4=> The higher the number (Up to 244) the car is more stable and more grip;
4) 004F3A32=> When reduced, the car has better stability and performance;
5) 0043BEA6=> This code determines the break rate of the player and the AIs, the default code is "MOV EAX, 1B7740", if we change it, for example, to "MOV ECX, 9000", the breaks and crashes will become more frequent.
6) 0043BEAF=> This code is complementary to 43BEA6, the default is "STANDARD=> CMP EDX,64", if we change the 64 to a smaller number, the rate of player and AI breakdowns will be lower and the AI results will be more predictable, if we increase the value, breakdowns will be more frequent.
7) 004F398E=> This rate affects the player's average consumption, if the value is reduced to the minimum (1) he will not consume fuel, if increased the consumption rate will be higher;
8) 004F3A60=> When the driver has an accident or suffer a breakdown, this address is set to 48, if we reset this value to zero and lock, the car it will be unbreakable, if for some reason the car suffer a breakdown and we set value to zero, the car will come back to life;
9) 00527D20=> This is the REL address (The same one from the TRACK.TXT file), it can be manipulated between a training session and the race;
10) 004F0610=> Opponent strength value, this index is determined at the beginning of the championship, but it is possible to change between a race and change the dynamics of a championship;
11) 004F3AE2=> Player's engine power, the maximum and default value is 65535, if we reduce this value, the car will lose power;
12) 00472765=> This address calculates the pole position point, if we set it to NOP the owner of the best time will not receive the point for the pole position;
13) 00469732=> The extra point calculation is done at this address, a small change of the code "inc [ebx+00000090]" to "inc [ebx+00000150]", prevents the game from awarding the extra point to the driver who leads the most laps;
14) 004F2668 to 004F2689=> In this range we have the points that are distributed in the championship races, if we change it the game starts calculating based on the new values.
These addresses allow us to create cars with different speed, stability and durability characteristics.
It is now also possible to distribute points based on other championships in other categories, such as Formula 1.
I made a simulation of the 1987 season, that year we had Mario Andretti's Lola-Chevrolet which was fast but fragile. I created a version of Bobby Rahal's Lola-Cosworth, which was fast and very reliable. I also created versions of the March Cosworth (Michael Andretti) which was fast and reliable, but not as good as Rahal's car, and I also made a version of the Penske which was a car which was not as fast, not as reliable, but which achieved good results with Mears, Fittipaldi, Unser,Sr and Danny Sullivan.
Now it is possible to create cars with characteristics from other smaller categories like Formula Atlantic or Indylights, the possibilities are endless.
I think it is even possible to reproduce rainy conditions, because we have a way to change the grip of the car and the strength of the AIs so that they act as if they were in the rain.
The only prerequisite is to know how to use the Cheat Engine program (there are numerous tutorials on youtube). I recommend paying special attention to the "Auto-assemble" option because this is where we will make the changes.
I believe we now have many possibilities to make our beloved game even more dynamic.
Sorry for my english, i used google translate, if any phase not make a sense, i ask you to let me know.