Misc 

  • Thread starter Deleted member 147278
  • Start date
Status
Not open for further replies.
I have a question, is there any way to make this tool work in F1 2020? If not, do you have any intentions to implement it for F1 2020? With the classic cars, it would be a lot of fun.
 
Watch this. No crash from Qualifying to Race. I did all of my transfers (F1, F2, DriverIDs) before Race 1 of Season 1. Tested both in MyTeam and Driver Career. Apparently it just works now?
  • Not to Do:
    • Transferring Free Agent drivers before Race 1 of any Season, even in Career hub, will result in a crash during Q to R transition rendering that save slot unloadable!
      (I will look into a making script extension that hopefully will prevent this, by editing the pre-generated weekend data.)
 
  • Deleted member 147278

>Regarding the 3rd point game crash, where you able to get past it afterwards, or are you basically now stuck on the contract negotiation days ?

I got past by following steps↓
1. New F2 2022 Driver or Same F2 2022 Driver didn't crash. So select them and sign a new contract.
2.If we want contract vanilla driver, use this mod after. no crash yet.

I haven't tried all combinations, but at the moment it seems safest to use this mod for contracts with MyTeam 2nd Driver.
Even if you intend to replace it, it seems better to renew the contract.
Of course, de facto cheats that save salaries are also possible:roflmao:

>And seeing hulk have the player team overalls while being a free agent is ... bit worrying, not really sure what's happening there other than something with the transfer has gone wrong.

The reason is the MyTeam Mod I have installed.
All free agent's suit is using "Calibrate".
I don't know why, but all MyTeam modders use calibrate.
I have verified this before using the mod.

View attachment 627826
While the contract signing crash is bit concerning, good to know that there at least is a way around it. Guess just going to be another thing on my pile of things to fix, IF I get around fixing anything :^)

Also good to know its just mod you have replacing the texture of the Free Agent suits, was simply worried there at the start thinking my script was not un-assigning the race suits for some odd reason. :roflmao:
 
  • Deleted member 147278

Watch this. No crash from Qualifying to Race. I did all of my transfers (F1, F2, DriverIDs) before Race 1 of Season 1. Tested both in MyTeam and Driver Career. Apparently it just works now?
Ye, I've had handful of reports recently of people claiming that Race 1 transfers seem to be working now, just haven't had the time to verify it myself.

But my best guess is that in result of the whole tyre allocation shazamble that codies did between 1.15 and 1.16, making it possible to change allocations between weekends has changed the way weekend sessions are loaded, and indirectly has also fixed the Race 1 issue for Driver Transfer.
Who would have guessed that codies can actually put out good updates.
 
  • Deleted member 147278

I have a question, is there any way to make this tool work in F1 2020? If not, do you have any intentions to implement it for F1 2020? With the classic cars, it would be a lot of fun.
I legit want to answer this, but I'm too dumb to put it in understandable terms ...
I can try my best by saying that 2 things need to be changed :
  1. All the AOB Scan hooks that get injected into the games process, those need to be change to that of F1 2020's gamecode.
  2. The save data block is slightly different for entrants in 2020, so the code portion that is responsible for the handling transfers needs to be updated to match that data block.
    • I already know from a little messing around I did back in September, that for example Helmet swapping is not possible (at least not with the current method), since 2020 doesn't seem to store customization data the same way.
Again the whole reason I put the ports of this script on-hold is because of how messy, just style wise I have written this script... and just navigating and porting it, is a headache.
Hence I wanted to re-write the entire script from ground up in a much cleaner and manageable fashion where porting it would be easier for me, but its something I started, yet never got around finishing it.

So as it stands because of my procrastination there is no plans for a port to previous games for now.
 
I legit want to answer this, but I'm too dumb to put it in understandable terms ...
I can try my best by saying that 2 things need to be changed :
  1. All the AOB Scan hooks that get injected into the games process, those need to be change to that of F1 2020's gamecode.
  2. The save data block is slightly different for entrants in 2020, so the code portion that is responsible for the handling transfers needs to be updated to match that data block.
    • I already know from a little messing around I did back in September, that for example Helmet swapping is not possible (at least not with the current method), since 2020 doesn't seem to store customization data the same way.
Again the whole reason I put the ports of this script on-hold is because of how messy, just style wise I have written this script... and just navigating and porting it, is a headache.
Hence I wanted to re-write the entire script from ground up in a much cleaner and manageable fashion where porting it would be easier for me, but its something I started, yet never got around finishing it.

So as it stands because of my procrastination there is no plans for a port to previous games for now.
I see, it sounds complicated, I know basically nothing about Cheat Engine and my pc can barely do a simple string search without nearly exploding, but I have to ask this. How were you able to find and modify the game values? I know you can scan a certain value, but if that value doesn't change, it's very hard to find and modify it in the cheat engine, so how were you able to find every driver, every track, by name, by some ID ? What kind of scan do you do to find them? If I'm able to understand this, I'll try to dig a little deeper and maybe contribute to the community with something useful.
 
  • Deleted member 147278

I see, it sounds complicated, I know basically nothing about Cheat Engine and my pc can barely do a simple string search without nearly exploding, but I have to ask this. How were you able to find and modify the game values? I know you can scan a certain value, but if that value doesn't change, it's very hard to find and modify it in the cheat engine, so how were you able to find every driver, every track, by name, by some ID ? What kind of scan do you do to find them? If I'm able to understand this, I'll try to dig a little deeper and maybe contribute to the community with something useful.
I can definitely relate to PC nearly exploding whenever doing the initial scan, as 8Gb of RAM isn't enough to do full scans, and I end up needing to scan sectioned regions of the memory else I run out of RAM. Also one of reasons why my scripts require user to trigger certain game code for the table generation instead of relying on pointer maps, given pointer maps have other downsides on why I'm avoiding them.

And in case of how I have found most of the values, well lots of trial and error:
  • Tyre Swap
    • Found he values I need by searching unknown initial value, and the looking for changing value as I kept swapping my tyres in the pits. Then by looking at what accesses that value and looking at the registry values stumbled upon portion of the array that kept track of all players tyres. Dissecting the structure of that using the registry pointers as reference worked my way back to array holding all driver tyre data. And adjust the values as needed for the script.
  • Calendar swap
    • When making GP mode, kept changing the 1st track in the list, as I initially did unknown value scan with changing value scans following. Luckily F1 games seem to have a opcode that keeps getting called every few seconds that keeps track of all current 'active' events for all modes. So when I had found the TrackID and and looked at what accesses it, found that very opcode that allowed me to backtrack to Career modes active track list array, which then I again dissected through memory viewer and turned it into a script.
      • This is also where I also noticed that the games internal TrackID's match those of F1 22 UDP Spec sheet which can be found on the EA Forums. So that made the whole figuring out other ID's easier.
  • Driver transfer
    • So this one was bit trickier initially because like mentioned there is no value that changes. But this is where thinking outside of box comes into play the most, which you really need to do when dealing with CE. Because while the DriverID's might not change, you can change what driver you are looking at from the driver market... So I started there and tried to find the address for the currently displayed driver by searching for initially unknown value and changing values as before. And after I had found the visual driver address, I used the same old looking at what code accesses that address and working my way back through the opcodes using break and trace in memory viewer, to find where it was grabbing the DriverID value from to display, which then landed me at the entrant array entry, more wizardly with address access, registry pointers and memory structure dissect tool, and I had a general structure of the entrant array ready to be 'scriptified'.
      • In this instance the DriverID's matched the UDP spec sheet again so, again was easy to figure out each drivers ID afterwards. As well to test the ID's from previous games which I actually have compiled a full list of all UDP known values in this pastebin. Exception of F1 2021, as I haven't gotten around of checking the ID's in there, so some entries are missing.
  • Driver rating
    • I probably could have used the previous method of Driver transfer of finding the visual representation and then working my way back to the actual value, but @nikashi had already at the time shared the 'Shotgun' method of finding the rating data of looking for rating value on a fresh save in certain memory region, then changing 50% of them while leaving 50% of them unchanged and eliminating the ones that don't change the in-game value until you narrow down the one and only value that does change the in-game value.
      • Personally I hate this method of finding values as its like shooting a shotgun in a barrel of fish while praying you hit the fish without poking holes in the barrel. As this method is prone to crashing the game and having to start from scratch. And I feel like it should only be used as a last resort if all other methods fail.
    • So I just used his method, found the values, same old 'What accesses this address' to get opcodes and using memory viewer/dissecting the code worked my way back to the arrays holding all the pointers/data that I needed for the script.
While I know this was very 'brief' explanation, this is the best you will get out of me as I'm horrible at explaining this, as everyone has their own way of understanding things.

I do recommend checking out Cheat The Game on YouTube to maybe better understand the various methods you can use with Cheat Engine. As his videos are what I purely relied on when learning about CE. But as well there are some other good channels for tutorials in regards of finding actual values from 'visual' ones.

And one last thing, the EGO Engine modding discord actually has a somewhat functioning CT for 2020 that I never finished porting before dropping it in favor of re-doing my script code.
You can find the discords link on p2t5r's itch.io page from EGO ERP Archiver, and when in discord just look for messages from LohaTronsRS#2665 containing files using discords search function.

Edit: One thing I forgot to mention, while the UDP Spec sheet can be nice for reference for certain values, it shouldn't be fully relied on. As there are certain values internally that do not match the UDP output values, and you might find yourself in the trap of finding the UDP values only and not the internal ones, which is can also be very tricky to backtrack.
 
Last edited by a moderator:
I can definitely relate to PC nearly exploding whenever doing the initial scan, as 8Gb of RAM isn't enough to do full scans, and I end up needing to scan sectioned regions of the memory else I run out of RAM. Also one of reasons why my scripts require user to trigger certain game code for the table generation instead of relying on pointer maps, given pointer maps have other downsides on why I'm avoiding them.

And in case of how I have found most of the values, well lots of trial and error:
  • Tyre Swap
    • Found he values I need by searching unknown initial value, and the looking for changing value as I kept swapping my tyres in the pits. Then by looking at what accesses that value and looking at the registry values stumbled upon portion of the array that kept track of all players tyres. Dissecting the structure of that using the registry pointers as reference worked my way back to array holding all driver tyre data. And adjust the values as needed for the script.
  • Calendar swap
    • When making GP mode, kept changing the 1st track in the list, as I initially did unknown value scan with changing value scans following. Luckily F1 games seem to have a opcode that keeps getting called every few seconds that keeps track of all current 'active' events for all modes. So when I had found the TrackID and and looked at what accesses it, found that very opcode that allowed me to backtrack to Career modes active track list array, which then I again dissected through memory viewer and turned it into a script.
      • This is also where I also noticed that the games internal TrackID's match those of F1 22 UDP Spec sheet which can be found on the EA Forums. So that made the whole figuring out other ID's easier.
  • Driver transfer
    • So this one was bit trickier initially because like mentioned there is no value that changes. But this is where thinking outside of box comes into play the most, which you really need to do when dealing with CE. Because while the DriverID's might not change, you can change what driver you are looking at from the driver market... So I started there and tried to find the address for the currently displayed driver by searching for initially unknown value and changing values as before. And after I had found the visual driver address, I used the same old looking at what code accesses that address and working my way back through the opcodes using break and trace in memory viewer, to find where it was grabbing the DriverID value from to display, which then landed me at the entrant array entry, more wizardly with address access, registry pointers and memory structure dissect tool, and I had a general structure of the entrant array ready to be 'scriptified'.
      • In this instance the DriverID's matched the UDP spec sheet again so, again was easy to figure out each drivers ID afterwards. As well to test the ID's from previous games which I actually have compiled a full list of all UDP known values in this pastebin. Exception of F1 2021, as I haven't gotten around of checking the ID's in there, so some entries are missing.
  • Driver rating
    • I probably could have used the previous method of Driver transfer of finding the visual representation and then working my way back to the actual value, but @nikashi had already at the time shared the 'Shotgun' method of finding the rating data of looking for rating value on a fresh save in certain memory region, then changing 50% of them while leaving 50% of them unchanged and eliminating the ones that don't change the in-game value until you narrow down the one and only value that does change the in-game value.
      • Personally I hate this method of finding values as its like shooting a shotgun in a barrel of fish while praying you hit the fish without poking holes in the barrel. As this method is prone to crashing the game and having to start from scratch. And I feel like it should only be used as a last resort if all other methods fail.
    • So I just used his method, found the values, same old 'What accesses this address' to get opcodes and using memory viewer/dissecting the code worked my way back to the arrays holding all the pointers/data that I needed for the script.
While I know this was very 'brief' explanation, this is the best you will get out of me as I'm horrible at explaining this, as everyone has their own way of understanding things.

I do recommend checking out Cheat The Game on YouTube to maybe better understand the various methods you can use with Cheat Engine. As his videos are what I purely relied on when learning about CE. But as well there are some other good channels for tutorials in regards of finding actual values from 'visual' ones.

And one last thing, the EGO Engine modding discord actually has a somewhat functioning CT for 2020 that I never finished porting before dropping it in favor of re-doing my script code.
You can find the discords link on p2t5r's itch.io page from EGO ERP Archiver, and when in discord just look for messages from LohaTronsRS#2665 containing files using discords search function.

Edit: One thing I forgot to mention, while the UDP Spec sheet can be nice for reference for certain values, it shouldn't be fully relied on. As there are certain values internally that do not match the UDP output values, and you might find yourself in the trap of finding the UDP values only and not the internal ones, which is can also be very tricky to backtrack.
I really appreciate all the tips and all the information provided! You really make me think outside the box, because I couldn't even figure out where to start to get access to visual and static values, every tutorial out there talks about dynamic values. My first idea was to make a table that would make it possible to edit the engine, chassis, mgu in the performance of the teams in gp mode for F1 2022, instead of having to resort to the xml files of the game via erp, but my pc is so bad that I have been suffering with several errors related to memory allocation during the scan. Fortunately in F1 2020 I haven't been suffering from these errors, so it will be a good laboratory, I hope I can present something useful in a month, let's see. Thanks again.
 
Last edited:
Hi Trapaca,

I use the cheat table succesfully into f1 22 steam.
However after creating a season from scratch, I cannot change all of the new 2023 season drivers: This happened twice ( I make another driver / season), for the same drivers.
They appear inside the *CT file, but not in the drop down list when making changes for the first time. * Nico Hulkenberg, Nyck de Vries and Logan Sargeant are not visible.
As a neebie, I move then with an editor to reflect the 2023 season, but I got garbage .. lol
How to manage the *.ct file in order to *see* the missing drivers ?
Thanks
 
This might be a stupid question but I’m just curious, would it be possible to transfer yourself out of your myteam Team to one of the official teams?

Or would the game just get so confused it’d crash/corrupt the save?
 
  • Deleted member 147278

This might be a stupid question but I’m just curious, would it be possible to transfer yourself out of your myteam Team to one of the official teams?

Or would the game just get so confused it’d crash/corrupt the save?
Its... complicated to say the least, the current script does actually support MyTeam player transfers, it's simply disabled due the issues it causes. Which from my testing is basically, IF you do transfer the player to AI teams, the career save gets automatically "converted" from MyTeam to Driver career. Which I actually find interesting that the game determines the career type based on the team the driver is in. Even when reloading the save after the transfer you outright lose certain MyTeam menus that career hub usually has.

And this in result causes EGO dump crash upon loading into a weekend as the game tries to put 22 cars in 20 car event from my assumption. I haven't actually looked into the crash logs for this specific crash reason, but its a good guess given the career type change that happens.

So honestly, it is hard for me to say if its possible, but I wouldn't say its necessarily not possible. Because while with the current state it breaks... maybe with more memory messing it can be done... maybe ? It is something that needs more investigating and messing around in general, but finding time for that is bleh, when I'm already procrastinating as is.
 
  • Deleted member 147278

To add to my previous post, If anyone wants to experience the issues cause by MyTeam player transfer, you can simply re-enable it by editing the "Transfer core" script, finding and changing the lines:
Code:
function isPlayer(data)
    return readBytes(data..'+'..gEntrant.ID, 4, true)[4] == 0x10
end
to
Code:
function isPlayer(data)
    return false
end
This should remove the player specific restrictions I had enabled... assuming I haven't forgotten about some other checks I had in place.
But again this will most likely cause the game to crash with unloadable save, so ya know, backup or do it on a test save unless codies stealth fix my stuff again, and is more for self informative thing... or for whoever wants to try to make it work.
 
Last edited by a moderator:
Its... complicated to say the least, the current script does actually support MyTeam player transfers, it's simply disabled due the issues it causes. Which from my testing is basically, IF you do transfer the player to AI teams, the career save gets automatically "converted" from MyTeam to Driver career. Which I actually find interesting that the game determines the career type based on the team the driver is in. Even when reloading the save after the transfer you outright lose certain MyTeam menus that career hub usually has.

And this in result causes EGO dump crash upon loading into a weekend as the game tries to put 22 cars in 20 car event from my assumption. I haven't actually looked into the crash logs for this specific crash reason, but its a good guess given the career type change that happens.

So honestly, it is hard for me to say if its possible, but I wouldn't say its necessarily not possible. Because while with the current state it breaks... maybe with more memory messing it can be done... maybe ? It is something that needs more investigating and messing around in general, but finding time for that is bleh, when I'm already procrastinating as is.
Oh, that's really interesting that the game handles it like that. Maybe in driver career it allocates 20 slots in memory and then overflows trying to put 22 in or something?

I kind of just assumed it'd just brick the save immediately so I'm quite surprised by that
 
  • Deleted member 147278

Meanwhile CM with Patch 1.17
  • Fixed an issue which could lead to there being fewer than 20 drivers in a season in Career modes
Going to be interesting to see if people using the script will still see this issue pop-up, or if its fixed for good thanks to CM
And if it doesn't pop up again, does that mean my workaround from before was a outright a fix for a game bug that wasn't even my fault to begin with.

Find it hard to believe that we might have gotten another GOOD patch from CM, unless this will end up causing some other issues.
 
Meanwhile CM with Patch 1.17
  • Fixed an issue which could lead to there being fewer than 20 drivers in a season in Career modes
Going to be interesting to see if people using the script will still see this issue pop-up, or if its fixed for good thanks to CM
And if it doesn't pop up again, does that mean my workaround from before was a outright a fix for a game bug that wasn't even my fault to begin with.

Find it hard to believe that we might have gotten another GOOD patch from CM, unless this will end up causing some other issues.
Maybe they're watching this thread haha
 
Meanwhile CM with Patch 1.17
  • Fixed an issue which could lead to there being fewer than 20 drivers in a season in Career modes
Going to be interesting to see if people using the script will still see this issue pop-up, or if its fixed for good thanks to CM
And if it doesn't pop up again, does that mean my workaround from before was a outright a fix for a game bug that wasn't even my fault to begin with.

Find it hard to believe that we might have gotten another GOOD patch from CM, unless this will end up causing some other issues.
I don't have any pop up issue since patch 1.17,
I start to use your mod in "My team" Carreer.
However, normal driver carrer does not seems affected by the crash.

The only problem I have when I try to reflect the 2023 season (Drivers and faces ), is that I can't have the new drivers such as Nico Hulkenberg, Nyck de Vries and Logan Sargeant on the drop down list.
It's ok for Oscar Piastri. For the missing ones, they are inside the *.CT file, but never selectable.
Can you explain me why, and if it is only for me or for everyone. ?
Is there a way to correct the script ?
Thanks :)
 
Last edited:
  • Deleted member 147278

I don't have any pop up issue since patch 1.17,
I start to use your mod in "My team" Carreer.
However, normal driver carrer does not seems affected by the crash.

The only problem I have when I try to reflect the 2023 season (Drivers and faces ), is that I can't have the new drivers such as Nico Hulkenberg, Nyck de Vries and Logan Sargeant on the drop down list.
It's ok for Oscar Piastri. For the missing ones, they are inside the *.CT file, but never selectable.
Can you explain me why, and if it is only for me or for everyone. ?
Is there a way to correct the script ?
Thanks :)
For missing drivers in drop downs, please refer to the video in the mods overview page, as it explains/showcases DriverID swapping. The script itself handles driver transferring via 2 methods, regular transfers and ID swaps as certain drivers can only be swapped in, instead of transferred.

For missing faces, I also suggest reading through the mods overview page as I have covered it there.
 
Status
Not open for further replies.

Latest News

What is the reason for your passion for sim racing?

  • Watching real motorsport

    Votes: 451 69.7%
  • Physics and mechanics

    Votes: 279 43.1%
  • Competition and adrenaline

    Votes: 298 46.1%
  • Practice for real racing

    Votes: 133 20.6%
  • Community and simracers

    Votes: 174 26.9%
Back
Top