[CHEAT] STEAM ONLY FTL 1.01 Trainer!

All your guides, strategy discussions, request for help on how to play go here. Please use [SPOILER] if relevant.
UltraMantis
Posts: 2141
Joined: Thu Sep 20, 2012 3:17 pm

Re: [CHEAT] STEAM ONLY FTL 1.01 Trainer!

Postby UltraMantis » Tue Jan 08, 2013 7:30 am

artax001 wrote:For some reason since it has switched to the ALT shortcuts i cant get them to activate i just get a ding sound.

Are you sure you're using the latest version?
Durandall wrote:Updated for 1.03.1
Hotkeys now use Alt instead of Shift.
Jump Anywhere fixed.

FTLTrainer.zip
Report spam using the handy Report Button Mod.
Universal
Posts: 3
Joined: Sat Jan 12, 2013 4:53 am

Re: [CHEAT] STEAM ONLY FTL 1.01 Trainer!

Postby Universal » Sat Jan 12, 2013 5:00 am

So what does this latest update to the trainer do? I've taken the time to map out the addresses for Hull integrity, Shield Strength/Max Shield, Scraps, Fuel, Missles, and Drone Parts, the last apparently starting in one location and then moving to another address after your first jump. Was able to find the pointers to the values, so it always works no matter how many times you close the game and start it back up again. I just want to know if there's anything this update brings, and if I can bring anything to this. The version of the game I am using is 1.03.1.
Durandall
Posts: 15
Joined: Mon Sep 17, 2012 10:55 pm

Re: [CHEAT] STEAM ONLY FTL 1.01 Trainer!

Postby Durandall » Sat Jan 12, 2013 9:56 am

The latest update doesn't really add anything. It's just been reconfigured to work with the new version of FTL. I changed the hotkeys from alt to shift by request. The "Jump Anywhere" option was fixed. The old method I used was broken (don't know how I missed that when writing it) and would probably crash the game for anyone who enabled and then disabled it. When I tested the trainer, I never tried enabling and then disabling the options.

The trainer doesn't actually use any pointers. It modifies the code in memory directly. It was also updated at one point to include array of byte (AOB) scans to find the code locations (when they change) in memory. These AOB scans can help prevent the need to update the trainer for every new version of FTL. It also allows the trainer to work with the different types of FTL (Regular, GoG, Steam). Modifying the code is also more efficient, because values do not need to be constantly written into memory (unnecessary overhead from an outside source).

As for the Drone Parts, the code needs to be modified in two locations. One for before a drone control room is installed, and one after. As you noticed, the memory address for these value are also in two different locations for either ship state.

I don't really intend to add new features to the trainer. It's difficult to lose with all options on as it is. I might come back to it sometime and add something interesting.

I can provide the full Cheat Engine table if you wish to take a look at it or expand on it.
Universal
Posts: 3
Joined: Sat Jan 12, 2013 4:53 am

Re: [CHEAT] STEAM ONLY FTL 1.01 Trainer!

Postby Universal » Sat Jan 12, 2013 7:41 pm

That's something I didn't think of doing. An Array of Bytes is a good idea as long as the system keeps putting them in the same locations in relation to each other value. One change to that and you have to look for them all over again. A pointer method is just as sound as Array of Bytes, but if they update the pointer to reference the values differently, then I'm in trouble just the same. I'd like to send you my cheat table as well, so we can compare notes. So far I've been able to have all the cheats be referenced from the same pointer, a lower level address in the 0x00700000 area.

Both methods are very reasonable, having their individual cons and pros. I have yet to download the Steam version of this game to test the trainer on it. As for the GOG version, that's still just the standalone version, possibly wrapped in a different installation package.

Lets compare our tables and see if we can make an even better trainer.
Durandall
Posts: 15
Joined: Mon Sep 17, 2012 10:55 pm

Re: [CHEAT] STEAM ONLY FTL 1.01 Trainer!

Postby Durandall » Sat Jan 12, 2013 9:34 pm

I hope you take no offense to this post, none was meant.

Just to be clear, I'm using AOB scans to locate ASM opcodes. I'm changing the code, not the stored memory values. For example, I'm not using the trainer to set scrap to a high number and then freezing it. I'm actually using a simple method where I change the code that displays the player's scrap to also write scrap to a high number. This write is NOT done by Cheat Engine. FTL itself now writes the value. This is actually a lame method that won't work for most games (see Shared Code), but it was quick and easy and works perfectly for FTL.

Finding pointers can be a time consuming process and usually must be done for each new version of a game (assuming the new version changes the code and not just graphics/sfx). I have often found a pointer I thought was stable, only to find that at a later date or on a different computer, the pointer was no longer valid. You sound like you found a stable one that works with many versions? If so, that is lucky, you don't find it often. Pointers are less useful then just changing the game rules themselves through opcode modifications. You can change or freeze values with pointers, but that doesn't let you do more advanced things. Freezing a memory address through a trainer has often given me mixed results in the past. Sometimes the freezes will slow the game down, especially on older machines, or machines that barely run the game in question. An outside process (the trainer) must constantly write the value into the game process, which as I mentioned can create unnecessary overhead. A small change to the games code directly is faster. An example of something that can't be done in some instances with pointers is an invulnerabiliy code. The player's health is read from memory, modified, checked, and then written back into memory. The modify and checked portions are what is important here.

An example.
The trainer has frozen the player's health through a pointer to 100. The opcodes read that value into a CPU register (outside a pointers influence). The value is dropped to zero by incoming damage calculations by the opcodes (once again, in the CPU registers, not memory). Then the opcodes check to see if the health (in the CPU register) is 0 or lower. If it is, the player has died. The code would also write this new health back into memory for display purposes (the HUD). As you can see, it's too late to save the player. The pointer freeze would, of course, write 100 back over the 0, but it's still too late. The game code has already decided the player is dead and has taken action accordingly.

This is not to say pointers are useless. Sometimes it's difficult or impossible to change opcodes in a useful way.
Still, I try to use them sparingly and only when I can't find another way.

About the pointer address you mentioned. "FTLGame.exe+0x00300000" is a relative response for 0x00700000
Applications usually start at 0x00400000.
So FTLGame.exe = 0x00400000.
The pointer you found is 0x00300000 away from that.
So 0x00400000+0x00300000 = 0x00700000 or...
"FTLGame.exe+0x00300000"

If FTLGame.exe had started at 0x00200000 instead, then "FTLGame.exe+0x00300000" would still be valid, whereas 0x00700000 would not! (It would be at 0x00500000)
"FTLGame.exe+0x00300000" would now represent 0x00500000

The trainer table is here:
The trainer only uses Cheat Engine's Auto Assemble functions to modify opcodes. It can be confusing to read if you don't know what it is doing. If you have any questions, just let me know.
FTLTrainerCT.zip
Universal
Posts: 3
Joined: Sat Jan 12, 2013 4:53 am

Re: [CHEAT] STEAM ONLY FTL 1.01 Trainer!

Postby Universal » Sun Jan 13, 2013 3:08 am

Wow. That's a really complex and cool. As for offense, I take none. Half the time I wouldn't recognize an insult if it kicked me in the nuts. I love the coding. I definitely can't compete, and you have more things on there than me. Plus, it works with the standalone version too. Tested it with mine. The eax address is 0x00703e2c, on my computer at least. It's the singular pointer in which every other value is found from.

I think I understand the search method you used. You first use eax to find the address for a specific cheat, change it, then you do something. I don't understand the mov eax,[eax+xxxxxxxx], though I understand the one above it, and don't understand the jmp return code. You then use aobscan to find the group of bytes that match the values searched for, and assign those to a variable, then something about a label, registering a symbol. I have to catch up on my Lua and my ASM. But very nicely done.
Durandall
Posts: 15
Joined: Mon Sep 17, 2012 10:55 pm

Re: [CHEAT] STEAM ONLY FTL 1.01 Trainer!

Postby Durandall » Sun Jan 13, 2013 9:52 am

Yeah, the trainer is for all types of FTL (Regular, GoG, Steam). I didn't create this thread, I guess I kinda hijacked it. The options I included in this trainer are all extremely simple. Nothing impressive. Reading Auto-Assemble scripts just looks a little complicated if you haven't worked with it before. Not to mention that if you don't know what changes I'm making, the scripts will probably make no sense. I can try to explain them in more depth, but I'm not sure this is the appropriate place for it. The Cheat Engine forums/Cheat Engine Tutorial/Cheat Engine help file are all great resources for information on this. There is a sub-forum specifically for Auto-Assemble. This trainer does not use LUA for it's options, just Auto-Assemble scripts.
Durandall
Posts: 15
Joined: Mon Sep 17, 2012 10:55 pm

Re: [CHEAT] STEAM ONLY FTL 1.01 Trainer!

Postby Durandall » Tue Jan 29, 2013 12:46 am

poikjuyt
Posts: 13
Joined: Wed Sep 26, 2012 9:23 pm

Re: [CHEAT] STEAM ONLY FTL 1.01 Trainer!

Postby poikjuyt » Tue Apr 22, 2014 7:27 am

Hey guys, just wondering if theres going to be a trainer for the most recent version of FTL.
Duncan Evans
Vhati
Posts: 792
Joined: Thu Oct 25, 2012 12:01 pm

Re: [CHEAT] STEAM ONLY FTL 1.01 Trainer!

Postby Vhati » Tue Apr 22, 2014 4:49 pm

Someone has a thread on the CheatEngine forum with tables for FTL 1.5.10 steam.

I've never used it, or CheatEngine, so I can't say if it works or how well.