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 


FF8 remastered finding instructions problem
Goto page Previous  1, 2
 
Post new topic   Reply to topic    Cheat Engine Forum Index -> General Gamehacking
View previous topic :: View next topic  
Author Message
++METHOS
I post too much
Reputation: 92

Joined: 29 Oct 2010
Posts: 4197

PostPosted: Tue May 02, 2023 8:14 pm    Post subject: Reply with quote

You can certainly go that route if you choose.

If you check the value of the register, as described, then you should have a reliable filter forever, and you can do that with each value that the instruction accesses.
Back to top
View user's profile Send private message
Beginner999
Newbie cheater
Reputation: 0

Joined: 27 Jul 2018
Posts: 21

PostPosted: Tue May 02, 2023 8:35 pm    Post subject: Reply with quote

++METHOS wrote:
You can certainly go that route if you choose.

If you check the value of the register, as described, then you should have a reliable filter forever, and you can do that with each value that the instruction accesses.

Fix me if I'm wrong. So from here basically I found the instruction to the value I want and I can certainly make the multiplier script as intended using this method by filtering out the wanted address. With that in mind I made the multiplier script for gold below and it's crash the game, any idea what's wrong with it?

Code:
aobscanmodule(aob_master,FFVIII_EFIGS.dll,8B 04 01 5D C3 CC CC CC) // should be unique
alloc(newmem_master,$200,aob_master)


label(return_master)
label(originalcode_master)
label(gold)
label(gold_code)

registersymbol(aob_master)
registersymbol(gold)

label(gold1)
label(gold_code1)
registersymbol(gold1)

newmem_master:
  cmp ecx,D58
  je gold_code
  jmp originalcode_master

gold_code:
  push edi
  lea edi,[eax+ecx]
  mov [gold],edi
  pop edi

//multipler codeo start here

gold_code1:
  push edi
  mov edi,[eax+ecx]  //preparing for the comparision, suspecting problem here
  cmp edi,eax  //comparing new gold value with old gold value
  jle originalcode_master  //if new value is less or equal than old skip the multiplier
  sub edi,eax  //calculating1
  imul edi,[gold1] //calculating2
  add edi,eax  //calculating3
  mov [eax+ecx],edi //copy result to the original address
  pop edi

//multipler codeo end here

originalcode_master:
  mov eax,[eax+ecx]
  pop ebp
  ret
  jmp return_master

gold:
  dd 0
gold1:
  dd 4
aob_master:
  jmp newmem_master
return_master:


[DISABLE]
aob_master:
  db 8B 04 01 5D C3

unregistersymbol(*)
dealloc(*)
Back to top
View user's profile Send private message
++METHOS
I post too much
Reputation: 92

Joined: 29 Oct 2010
Posts: 4197

PostPosted: Tue May 02, 2023 9:08 pm    Post subject: Reply with quote

There is no need to do this, really. Since you have the address/value of gold always, you can set it to whatever you want at any time.

Also, you do not want to create a multiplier for something like gold in this case, where the instruction is accessing it several times per second. The value will become so large, so quickly, that it will probably crash the game. You could try adding 1 to it and see if that works.

I recommend starting with something else if you are insistent on applying a multiplier (and preferably use an instruction that writes instead of accesses so that the value does not get out of hand). I would also recommend that you set a breakpoint at the start of your code-cave and step through the code so that you can acquire some understanding about what is actually happening with your script. This will help you learn. It is also a good habit to comment out each line of code, one-by-one, if you are unsure what the problem is. This can help you to isolate and identify the problem more easily.
Back to top
View user's profile Send private message
Beginner999
Newbie cheater
Reputation: 0

Joined: 27 Jul 2018
Posts: 21

PostPosted: Tue May 02, 2023 9:46 pm    Post subject: Reply with quote

[quote="++METHOS"]There is no need to do this, really. Since you have the address/value of gold always, you can set it to whatever you want at any time.

Also, you do not want to create a multiplier for something like gold in this case, where the instruction is accessing it several times per second. The value will become so large, so quickly, that it will probably crash the game. You could try adding 1 to it and see if that works.

I recommend starting with something else if you are insistent on applying a multiplier (and preferably use an instruction that [i]writes [/i]instead of [i]accesses [/i]so that the value does not get out of hand). [b]I would also recommend that you set a breakpoint at the start of your code-cave and step through the code so that you can acquire some understanding about what is actually happening with your script. This will help you learn. It is also a good habit to comment out each line of code, one-by-one, if you are unsure what the problem is. [/b]This can help you to isolate and identify the problem more easily.[/quote]

This basically what I did for other games, I'm trying to learn using CE but this game just not friendly to me so far, I was able to make a working table with the PSX version but not the remastered one. Whenever I tried to do a break point it crash the game
:(
Back to top
View user's profile Send private message
++METHOS
I post too much
Reputation: 92

Joined: 29 Oct 2010
Posts: 4197

PostPosted: Tue May 02, 2023 10:03 pm    Post subject: Re: FF8 remastered finding instructions problem Reply with quote

Beginner999 wrote:
The problem I have with this game is most of the instructions that I found control multiple things (might goes up to thousands addresses)
-So it seems that we have resolved this issue now. Yes?

Beginner999 wrote:
On the other hand I downloaded a working table and it work just like a champ. Question is how do they were able to find those unique instruction? Is there any special technique?
-For this, it is difficult to say, since there are so many possibilities. I have not looked at the game again and probably won't. However, I can recommend the following:

1. Using the steps that we have followed thus far, check to see what is accessing the AP address, not just at random times, but when the value actually changes in-game, due to a specific event. You may find that additional instructions access this address during specific game sequences etc.. Doing so may allow you to find something interesting.

It may be that the original script is using an instruction that is writing to the address only during certain moments (and not constantly), which is why you haven't found it yet. So, you may find the correct instruction by letting the debugger capture instructions while you play through the game (especially during moments when the AP is applied - whatever that is).

If breakpoint crashes target, try changing the debugger settings.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Cheat Engine Forum Index -> General Gamehacking All times are GMT - 6 Hours
Goto page Previous  1, 2
Page 2 of 2

 
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