Squall8 wrote: ↑Sun Mar 18, 2018 3:36 am
Cielos wrote: ↑Wed Mar 07, 2018 8:29 am
So from using ultimap I managed to narrow down the calls for the debug menu, ASSUMING the callcount increases by 1 each time I bring up the menu. Did some quick testing by nopping the calls. Unfortunately, none seems to crash the game or even stop the menu from appearing, so I doubt I have any viable options. But to be thorough I want to do further testing by seeing if I can still bring the menu up with CE.
I wrote out a script that should update the calls by activation. However the few calls I have tested so far gives me an access violation instead of a straight up crash. So I'm not sure if I wrote the script out correctly or what. I was hoping you can take a look at it, see if I'm doing something wrong. Or if you have a better way to write it out.
Notes for each call is in Advanced Options.
Quick edit before posting: Did some backtracing on a call for the "visual menu". Found another call that renders the debug menu completely useless (doesn't pop up at all)! It's the last call in Advanced Options. Will start messing around more with this tomorrow.
sorry for a late reply, having a cold.
so, I'll keep it as breif as possible. hope you can understand my gibberish.
1. by looking at the aob
it is a call opcode right?
it should be some thing like "call ffxv_s.exe+xxxxx" right?
if so,
is this "call ffxv_s.exe+xxxxx" the first line of the function you want to call, or
is it the destintion of this "call ffxv_s.exe+xxxxx" (i.e., ffxv_s.exe+xxxxx) you want to call?
if it's the former, jump to "2.".
if it's the later, the aobscan should be search for the first line of "ffxv_s.exe+xxxxx", instead of the call itself.
e.g.,
let say the aob you searched for is "call ffxv_s.exe+197800". and the address of this aob would be "ffxv_s.exe+4567".
and your script would assign the label "calldbmenu" for "ffxv_s.exe+4567".
now when you "call calldbmenu" in your aa, it'd call to line "ffxv_s.exe+4567" and the first opcode this call start with would be "call ffxv_s.exe+197800".
is that what you want?
if not, you should search the aob of the first line of "ffxv_s.exe+197800" instead, so the label "calldbmenu" would refer to "ffxv_s.exe+197800" instead of "ffxv_s.exe+4567".
2. I noticed you didn't give any argument for the call at all, nor preparing any of the registers for it. are you sure the call don't need any and the call would work with all empty registers?
3. about the last opcode of the code list:
note that when it involves a register for the calling address, most likely it's handling tons of other calls as well.
noping this could be a very bad idea...
if you want to back trace from here, remember to make sure it's calling to your destination, but not any of the calls it would call to.
(after typing this I realized you probably aware of this already. just treat this as a reminder anyway....)
also, after you filter out the route it takes from this call to your destination (the debug mode bits), remember to take notes of the immediate stack and the registers it uses when making the call that related to the debug mode. it could help later on.
4. is the debug mode a menu similar to the other in-game menu? if so, you can also trace the game of how it works when it brings up other menus, if the in-game menus calls and the dev mode calls share the same method, you can examine the arguments (most likely pushed to the stack before the call) and the registers they need for the call, it COULD help filer the actual call the debug mode use (which may be shared with many other menu calls), and it helps when you're actually building your own debug mode call.
5. they could be some other thing I missed or some other things I wanted to mention, but now I'm exhausted...
I shouldn't read forum in this state...
hope that helps~
and hoping you'll have a find a way to open the dev mode on steam when I play the game again..
p.s.
now I remember something else.
the game would initialize some in-game modules during savegame loading, thus the in-game debug mode module may need to be initialize during the savegame loading first before the in-game dev mode call matters. or if you are lucky, it's all needed to done for it to be work on the legit steam...
that means if you want to migrate it to the legit steam game (assuming they haven't removed the dev codes from the exe of course, AND the module DO need to be initialized during savegame loading first, AND they are not being initialized in the steam game..), you may also need to find out how are the module being initialized in the dev exe, and attempt the same in the legit steam game. um.. it seems a long shot, but may worth a try IF nothing else works... good luck! and good night.