When version 30 of the game was released, I was also faced with the challenge of how to freeze the fuel value again. So I started to practise the cheat engine tutorials and read up on pointers and pointer scans on the Internet (including YouTube videos).
Even if a new cheat table for version 30 has already been released, I would like to describe here how I was able to find out the address for the fuel. For sure there are more elegant, faster or other ways to find this out, but for me it worked in the end.
Here are the single steps I took:
1. start SnowRunner and run it in (smaller) window mode to be able to switch better between the programs
2. start Cheat Engine
4. Cheat Engine -> Open Process -> 'SnowRunner'
5. perform New Scan (Value Type "Float"), with the amount in the tank (while the engine is turned off)
6. perform Next Scan, with the amount in the tank (after you have driven a little and turn off the engine again)
Repeat this step until only two addresses remain.
7. when (only two) values have been found, start the engine and observe which of the values changes the fastest / most frequently -> add this value to the address list and name it 'Value1'
8. right-click on the entry in the address list -> select "Find out what writes to this address" to start the debugger
9a. Restart the engine in the game until an entry appears in the assembler window (then turn the engine off again)
9b. Note the values in the [] brackets before the , -> Here in SnowRunner version 30 the value is [rcx+00000598]
Note: The HEX value after rcx indicates the offset.
9c. Press Stop in the assembler window and then press Close
10. right-click on Value1 in the address list and select 'Generate Pointermap'. Save the file as 'Value1Pointermap'.
11. end the current SnowRunner game and switch back to the main menu. Then resume the game to get changed the pointer.
12. repeat steps 5 - 7, but this time name the value as 'Value2'
13. right-click on Value2 in the address list and select 'Generate Pointermap'. Save the file as 'Value2Pointermap'.
14a. In the address list, right-click on Value2 and select 'Pointer scan for this address'
14b. Activate the checkbox 'Use saved pointermap' and select the previously saved 'Value2Pointermap.scandata'
14c. Activate the checkbox 'Compare results with other saved pointermap(s)' and select the previously saved 'Value1Pointermap.scandata'. Select the address with the name 'Value1' in the following drop-down field on the right.
14d. Then click on 'OK' (leave all other values in the dialog as they are) and save as file 'Results'
15a. Click on the 'Offset 6' column in the results list that appears. This will sort the values so that entries with the fewest offsets are displayed at the top.
15b. The first entry in the list has two offsets (Offset0=28, Offset1=598), with the base address '"SnowRunner.exe "+029A6E68'. Double-click on this entry to add it to the address list and close the pointer scan window
16. in the address list, double-click on the address in the new entry 'pointerscan result', enter 'Fuel' in the 'Description' field, for example, select 'Float' as the type and click 'OK'
17) The value of the tank from the game should now be displayed in the address list.
18. save the address list as a .CT file for future use on the PC
If the game is now exited and restarted, the pointer address for the tank is immediately available and can be frozen or changed.