Cheat Engine Forum Index Cheat Engine
The Official Site of Cheat Engine
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 


Help find aobscan for DOF Life Is Strange
Goto page 1, 2, 3  Next
 
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine
View previous topic :: View next topic  
Author Message
idk31
Cheater
Reputation: 1

Joined: 11 Jan 2016
Posts: 42

PostPosted: Mon Jan 11, 2016 6:47 pm    Post subject: Help find aobscan for DOF Life Is Strange Reply with quote

Firstly...

I'm looking for help finding an aobscan (or a different solution?) for the DOF (Depth of Field) settings in the game Life Is Strange.

I know how to manually find the addresses and have a pointerscan with 15,000 entries. I've been trying to whittle it down for some time, but fewer and fewer are dropping off. I don't trust any one, random pointer because the addresses jump around even in the same level. Eventually while playing, it will be wrong. Another problem is the values don't change. So I can't follow most of the tutorials out there where it is something like ammo or health that I can see change. But, when I manually change the values I can see results on the screen. Ex: I know which controls the blurriness of the effect. When I change the value (float 0 to 1) I see it change in the game.

There already exists a cheat table for this game that has a DOF setting, but it isn't the game's preffered settings. How do I explain... it's like this one adds a second DOF with its own color grading that "fights" with the natural one. I can see flickering on screen while the two "fight for dominance." I asked the author of the table for help, but I think he has moved on. There is no correlation (that I can find) between the two like a particular offset between them. I can't use the findable DOF as a reference point.

Life is Strange is a beatiful game about a photography student. So, naturally there should be an elegant camera modIf I can get this working right I plan to release the mod for others to enjoy. I am only moderately familiar with Cheat Engine and have only begun learning about scripting. Any help in the right direction is appreciated.

Secondly (less important)...

I would like to know if/how I can save my camera coordinates temporarily. I want to save 3 values (camera x,y,z), move the camera, then be able to go right back to the same position. Is that possible? How would I do that?

(Would post helpful URLS, but I'm not allowed yet)


Last edited by idk31 on Mon Jan 11, 2016 10:33 pm; edited 1 time in total
Back to top
View user's profile Send private message
ParkourPenguin
I post too much
Reputation: 140

Joined: 06 Jul 2014
Posts: 4297

PostPosted: Mon Jan 11, 2016 8:19 pm    Post subject: Re: Help find aobscan for DOF Life Is Strange Reply with quote

idk31 wrote:
There already exists a cheat table for this game that has a DOF setting, but it isn't the game's preffered settings. How do I explain... it's like this one adds a second DOF with its own color grading that "fights" with the natural one. I can see flickering on screen while the two "fight for dominance."
If the thing in the table is a pointer to a value and you freeze it, then there will be some flickering as the game tries to set it back to its "real" value. Could you link to the original table? You will probably need to modify the URL so you can post it (e.g. put "(.)" instead of ".").

As for the second thing, if you can find some addresses that make your camera change, then sure, it'd be fairly simple to write a script that can do whatever you want with those values. Find them first, let us know how they work (relative to player, relative to world, polar system, rectangular system, etc.), and we can help you with making the script.

_________________
I don't know where I'm going, but I'll figure it out when I get there.
Back to top
View user's profile Send private message
idk31
Cheater
Reputation: 1

Joined: 11 Jan 2016
Posts: 42

PostPosted: Mon Jan 11, 2016 8:32 pm    Post subject: Reply with quote

Reference:
htt
ps://dl(.)dropboxusercontent(.)c
om/u/7875170/game%20settings/Cheat%20Tables/LifeIsStrange%201.3.CT - Life is Strange cheat table (someone else's)

htt
p://www(.)deadendthrills(.)com/forum/discussion/427/guide-%5Dlife-is-strange - Thread explaining cheat table and its use

htt
ps://drive(.)google(.)com/file/d/0Bz1PTpaR0llTUTdOamRZQWhsTlU/view?usp=sharing - My pointerscan


The other person's table includes the camera coords. And I forgot it's a 6 point system. 6 floats, rectuangular to the world. This is a UE3 game if that helps.

Camera layout low to high:
X float (camera)
Y float (camera)
Z float (camera)
pitch 4-byte (unused)
yaw 4-byte (unused)
roll 4-byte
FOV float
X float (target)
Y float (target)
Z float (target)

I am not freezing any values that would cause the flicker.

From this one value I can reliably find other things like lightshaft settings, bloom, color grading, and global illumination. The offsets don't change.


Last edited by idk31 on Mon Jan 11, 2016 9:24 pm; edited 2 times in total
Back to top
View user's profile Send private message
ParkourPenguin
I post too much
Reputation: 140

Joined: 06 Jul 2014
Posts: 4297

PostPosted: Mon Jan 11, 2016 9:00 pm    Post subject: Reply with quote

Ok, so you just enable the "Camera AOB Scan [Page Down]" script, then change the FOV to whatever you want without the active box on the left checked (for the "FOV [L. Arrow, R. Arrow]" entry)?
If it's still flickering, then either that's not the right address/value you're looking for, or the game is doing something weird with it.

Are you following the instructions on that page?
Quote:
...requires you to force it with the UE3 FOV keybind command while in game first, do this before going into the Pause Menu for it to work

If you are, it's still flickering, and you can't find any other address that could be the FOV, then the only option left I can think of is to look though the ASM around instructions that access that address. Whatever's doing stuff with the camera should be around there.

By the way... what are you trying to achieve by using the pointer scanner? It's not going to help you find the real address any more than scanning for stuff normally, and you already have a reliable way to get that other FOV address.

PS: you can leave out the http:// part on a web address if you're trying to get past forum filters.

_________________
I don't know where I'm going, but I'll figure it out when I get there.
Back to top
View user's profile Send private message
idk31
Cheater
Reputation: 1

Joined: 11 Jan 2016
Posts: 42

PostPosted: Mon Jan 11, 2016 9:14 pm    Post subject: Reply with quote

There is some setup required to get it to work. One being adding a hotkey in the keybinds ini to get to into the game console.

location: ...Documents\My Games\Life Is Strange\LifeIsStrangeGame\Config\LifeIsStrangeInput.ini

You have to enable 'talk' or just plain 'fov x'
EG. Bindings=(Name="T",Command="Talk",Control=False,Shift=False,Alt=False,bIgnoreCtrl=False,bIgnoreShift=False,bIgnoreAlt=False)

He is saying the FOV will not change via the pointer until you manually change it in game, but the FOV is not what I'm after. It's the DOF - depth of field. To enable theirs I check the box next to post processing and change the 7 to a 3 (next to [--- DOF Effect Enable [P] ---]) (how they explain to get it to work). Then it works but it has a whole different color setup that fights with the normal game.

The camera in this table only works while the game is paused via typing 'pause' in the console. HOWEVER...... I found that by adding 17C to the offset (technically a different camera) you can overide that requirement (after typing CycleCamera -1 in the game).

I have the pointerscan so that I can recalculate my values from the most correct-looking pointer. I open the file and copy the most occurring address and recalculate offsets from there. Very time consuming.

The whole point is to take some very nice-looking screenshots of the game. I want full control of how it looks. I've taken some nice shots you can see here: imgur(.)com/a/MfPhN

PS. I keep editing my posts after you have replied.


Last edited by idk31 on Mon Jan 11, 2016 10:23 pm; edited 2 times in total
Back to top
View user's profile Send private message
ParkourPenguin
I post too much
Reputation: 140

Joined: 06 Jul 2014
Posts: 4297

PostPosted: Mon Jan 11, 2016 9:35 pm    Post subject: Reply with quote

Oh, derp, sorry, I'm stupid and tired right now. I've seen a few people ask about FOV stuff recently; I'm getting it mixed up.

But the same general advice still applies. You can try looking though the structure the "Post processing" script gets using the "dissect data/structures" option in the tools menu in memory view. Enable the "Post Processing [Del]" script and get the start of the structure from that (the value of DOFEnable1), then paste that address into "Group 1" in the dissect data/structures window. Go to Structures -> Define new structure, go through the popups, and it should fill in a bunch of addresses and guess their types for you. Then just look through that and start modifying stuff.
A tutorial on structures can be found here.

If you still can't find it, then you could look through the ASM around instructions that access the addresses in there. That'll require an above average understanding of ASM, however. You might also be able to look at that and find out what other addresses in that structure are being accessed. That might give you some clue as to which addresses are useful.

_________________
I don't know where I'm going, but I'll figure it out when I get there.
Back to top
View user's profile Send private message
idk31
Cheater
Reputation: 1

Joined: 11 Jan 2016
Posts: 42

PostPosted: Mon Jan 11, 2016 9:43 pm    Post subject: Reply with quote

Many thanks! I leave you to your sleep now while I read up on this.
Back to top
View user's profile Send private message
++METHOS
I post too much
Reputation: 92

Joined: 29 Oct 2010
Posts: 4197

PostPosted: Mon Jan 11, 2016 10:29 pm    Post subject: Reply with quote

CE can build an AOB script for you, automatically, by using the injection templates. You may have to replace some bytes with wildcards, though.
Back to top
View user's profile Send private message
idk31
Cheater
Reputation: 1

Joined: 11 Jan 2016
Posts: 42

PostPosted: Tue Jan 12, 2016 7:48 pm    Post subject: Reply with quote

I DID IT!! I DID IT!!

Well, not as an aobscan but as exe+offsets. It will at least keep me going for a while without all that messy recalculating by hand.

It is [[LifeIsStrange.exe+1156F44]+4b8]+myOffset

myOffsets:
0 start of structure
2a5 (binary 2 length 1) DOF on/off
2c8 (float 0-1) foreground bluriness
2d0 (float 0-1) background bluriness
2d8 (float) focal point radius
2dc (float) focal point distance
etc....


Thanks for your help getting me there!!

EDIT: Should I still search for an aobscan if I want to make it pucblicly availble? Or is this good enough?

EDIT: How do I go about saving my camera coords now?
Back to top
View user's profile Send private message
ParkourPenguin
I post too much
Reputation: 140

Joined: 06 Jul 2014
Posts: 4297

PostPosted: Tue Jan 12, 2016 9:14 pm    Post subject: Reply with quote

If you're planning on releasing that table for other people to use, then you should see if that pointer works on another computer. If you don't have another computer to use, then that's fine, just restart your own a few times and make sure it works every time. Do that, and it should be fine.

If it's not and people complain, then you should hook an instruction that accesses one of those addresses and copy the base address of the structure to some place in memory you've allocated. Try to find an instruction that's run somewhat often, only accesses that address (no other addresses), and has a good, short, unique AoB signature to search for. An example template:
Code:
[ENABLE]
aobscan(myDOFinject,8B 9A A5 02 00 00)
alloc(newmem,1024)
label(return)
label(baseDOF)

registersymbol(baseDOF)
registersymbol(myDOFinject)

newmem:
  mov [baseDOF],edx  // copies base of structure
  mov ebx,[edx+2A5]  // original code
  jmp return         // jmp back past injection point
  db CC CC CC        // padding; ignore (used for viewing in disassembler)
baseDOF:             // address where base of structure will be stored
  dd 0               // value of the base of the structure

myDOFinject:         // injection point
  jmp newmem         // jmp to your code
  nop                // nop
returnhere:          // return point after injection

[DISABLE]
myDOFinject:
  mov ebx,[edx+2A5]

dealloc(newmem)
unregistersymbol(baseDOF)
unregistersymbol(myDOFinject)

After you enable this hypothetical script, you can add an address manually, put in baseDOF+2a5 or whatever offset you want, and it'll work.

As for the camera coords, that should be easy. The only problem I can think of would be finding a reliable reference to those addresses. Are you using the script "Camera AOB Scan [Page Down]" in that table you linked to, are you using your own script to find it, or are you using pointers to do it?

_________________
I don't know where I'm going, but I'll figure it out when I get there.
Back to top
View user's profile Send private message
idk31
Cheater
Reputation: 1

Joined: 11 Jan 2016
Posts: 42

PostPosted: Fri Jan 15, 2016 2:08 am    Post subject: Reply with quote

Oh man, I'm dumb. I've found diddly squat is what I found. A pointer that doesn't actually work every time. But, one of my scans turned up only that one pointer, so I thought I found some magic pointer.

Back to the drawing board. Now I'm just trying to figure out the script that has already been made to see how I can modify it. But I still have no real clue as to what I'm doing. Your suggestion is gibberish to me :/ Though, learning about structures I think steered me a little closer. At least I have more addresses to play around with now I know how they are grouped.
Back to top
View user's profile Send private message
ParkourPenguin
I post too much
Reputation: 140

Joined: 06 Jul 2014
Posts: 4297

PostPosted: Fri Jan 15, 2016 1:44 pm    Post subject: Reply with quote

See the section called "injection copies" here for a more detailed tutorial of what I said.

Also, here's a script that should let you save your current camera position using Ctrl and most of the top number keys (1-9). You can then load them via Shift and any of the top number keys (0-9). 0 is special and will store the last place you were just before you loaded your camera position.

This hooks the same instruction the "Camera AOB Scan [Page Down]" script uses, so don't try to enable both at once. If you'd like to enable both at once, open the "Camera AOB Scan [Page Down]" script, delete everything inside it, and replace it with this new script. Make sure you have a backup of that old script just in case, though.
Code:
[ENABLE]
aobscan(camAOB,8B 48 08 89 4C 24 54 89)
alloc(newmem,1024)
label(return)
label(pCamera)

registersymbol(pCamera)
registersymbol(camAOB)

newmem:
  mov [pCamera],eax
  mov ecx,[eax+08]
  mov [esp+54],ecx
  jmp return
  db CC CC
pCamera:
  dd 0

camAOB:
  jmp newmem
  nop
  nop
return:

{$lua}
if syntaxcheck then return end
local symbolCheckT = createTimer()
symbolCheckT.Interval = 50
symbolCheckT.OnTimer = function(sender)
  local base = readInteger("pCamera")
  if base == 0 then return end

  if camCheat == nil then camCheat = {} end

  camCheat.addy = {base+0x8; base+0xC; base+0x10; base+0x24; base+0x28; base+0x2C; base+0x1C; base-0x2b8}

  for i=0,9,1 do
    camCheat[i] = {value = {}}

    local set = function(sender)
      for j=1,8,1 do
        camCheat[i].value[j] = readBytes(camCheat.addy[j],4,true)
      end
    end
    if i == 0 then set(nil) else
      camCheat[i].setHotkey = createHotkey(set, _G["VK_" .. i], VK_CONTROL)
      camCheat[i].setHotkey.DelayBetweenActivate = 1000
    end

    local get = function(sender)
      if #camCheat[i].value ~= 8 then return end
      for j=1,8,1 do
        if i ~= 0 then
          camCheat[0].value[j] = readBytes(camCheat.addy[j],4,true)
        end
        writeBytes(camCheat.addy[j], camCheat[i].value[j])
      end
    end
    camCheat[i].getHotkey = createHotkey(get, _G["VK_" .. i], VK_SHIFT)
    camCheat[i].getHotkey.DelayBetweenActivate = 1000
  end

  sender.destroy()
end
{$asm}

[DISABLE]
dealloc(newmem)
camAOB:
  mov ecx,[eax+08]
  mov [esp+54],ecx
unregistersymbol(pCamera)
unregistersymbol(camAOB)

{$lua}
if camCheat ~= nil then
  for i=0,9,1 do
    if i ~= 0 then
      camCheat[i].setHotkey.destroy()
    end
    camCheat[i].getHotkey.destroy()
  end
  camCheat = nil
end

If there are any bugs, let me know.

_________________
I don't know where I'm going, but I'll figure it out when I get there.
Back to top
View user's profile Send private message
idk31
Cheater
Reputation: 1

Joined: 11 Jan 2016
Posts: 42

PostPosted: Fri Jan 15, 2016 3:56 pm    Post subject: Reply with quote

Can I register a symbol from an aobscan (has some wildcards) without injection? Say for example I notice the start of a structure tends to begin "D0 D5 ?? ?? 40 B0 ?? ?? 18 00 10 00 01 00 07 02". I just want to have a pointer that looks like myDOFAOB+25C and in the script is something simple like aobscan(myDOFAOB, D0 D5 ?? ?? 40 B0 ?? ?? 18 00 10 00 01 00 07 02).


EDIT: Scratch that. It changes too much. It looked consistent, but it's not.
Back to top
View user's profile Send private message
idk31
Cheater
Reputation: 1

Joined: 11 Jan 2016
Posts: 42

PostPosted: Sun Jan 17, 2016 4:06 am    Post subject: Reply with quote

Ok, I read that article and made some headway. I think I'm starting to get it. Here's my first-draft table. It does a data scan:

drive.google(.)com/file/d/0Bz1PTpaR0llTNVRaVmZOWG1CeDA/view?usp=sharing


I tried injecting. I did not find any really good spots to hook into. But this seems like it will work for now. At least on MY computer.

This is saving me so much time! IT'S SO AWESOME! How do I tip you, good sir? Thanks so much!
Back to top
View user's profile Send private message
ParkourPenguin
I post too much
Reputation: 140

Joined: 06 Jul 2014
Posts: 4297

PostPosted: Sun Jan 17, 2016 9:47 am    Post subject: Reply with quote

If you're having a hard time finding a good instruction to hook, know that you don't have to pick a certain value in the structure- anything will do since it's all a part of the same structure. So the whole process would be more or less like this:
  1. Find the base address of the structure
  2. Find out what accesses it
  3. Select an instruction that's run often enough
  4. See if that instruction accesses any other addresses
  5. If it doesn't, then try searching for a unique AoB signature for that instruction
  6. If you can find one, then you can hook that instruction
  7. If an instruction doesn't conform to 3, 4, and 5, then move on to the next address (add 4) and repeat from step 2

_________________
I don't know where I'm going, but I'll figure it out when I get there.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine All times are GMT - 6 Hours
Goto page 1, 2, 3  Next
Page 1 of 3

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group

CE Wiki   IRC (#CEF)   Twitter
Third party websites