Qhimm.com Forums
Miscellaneous Forums => Scripting and Reverse Engineering => Topic started by: lycancowboy1989 on 2018-09-09 07:12:37
-
Going off the rules page i think this question belongs here, let me know if im wrong.
ff8 2013 PC steam version.
ive searched around and havent seen anything regarding this so im hoping i can get some help with this, if its even possible.
This version of the game has built in cheats activated with f-keys such as the assist function, which grants always full hp, always full atb, always limit break. essentially what im looking for is to change this cheat function but still have it activate via the f2 button. im trying to isolate this assistance cheat to ONLY grant always limit.
ideally this would be to split the three functions to three different keys, or to move the other two functions (hp and atb) to combine with the 9999 damage cheat making the f3 key grant full atb, full health, and 9999 damage. honestly most of that is not necessary and i would easily settle for being able to delete the "always full hp, always full atb" functions entirely leaving only "always limit"
so to recap the goal is to take the current cheat function of f2 and remove everything EXCEPT limit breaks, while still having it activate and deactivate via f2.
im kind of lost on this as its the first time im looking into things like this outside of mods, and the few bumbling attempts ive made to experiment to achieve this have obviously been unsuccessful.
-
AF3DN.P - This file contains functions for Steam mods including boosters. FFVIII load this file and overwrite it's functions with the loaded file content. You shall start searching there specifically. It's normal PE or DLL afair.
-
Thank you.
is there an easy way to edit a .p file?
i have no programming knowledge or whatever this might be, and realize now im out of my depth on this. ive tried a handful of programs and different things and cant seem to get to anything that is not useless information or encoded gibberish.
im poking around with LordPE atm but i dont really know what im doing tbh.
-
Is it absolutely necessary to modify the built-in Boosters? If not, it would be trivial to just use a program like Cheat Engine...
-
Not a hundred percent necessary but im not the only one that plays on this pc so having it be something to opt into instead of always on would be ideal. Also the convenience of being able to toggle it on and off via steam controller is nice.
-
well it might be nice to adjust the speed that F1 give us for eg...
atm isn't it up to 4x or something...
perhaps halving the value would make us use the feature more...
hard to select spells in battle while the game is running too fast atm... when using F1
-
If all goes well, I'll look into this weekend. No promises.
-
I have only had about 30m to look at this, but here is a starting point:
AF3DN.P+3DC78 | BYTE | HiSpeed
AF3DN.P+3DC79 | BYTE | Assist <- This is what you are interested in
AF3DN.P+3DC80 | BYTE | 9999
References (AF3DN.P):
Address | Disassembly
569EC460 | cmp byte ptr ds:[56A1DC79],0
569EC857 | xor byte ptr ds:[56A1DC79],1 <- This toggles off/on
569ECA86 | cmp byte ptr ds:[56A1DC79],0
Unless someone gets to it before me, I will follow up when I get more time. To be clear, this does nothing. I still need to determine how it interacts with ATB, HP, and Limit Break.
-
I have only had about 30m to look at this, but here is a starting point:
AF3DN.P+3DC78 | BYTE | HiSpeed
AF3DN.P+3DC79 | BYTE | Assist <- This is what you are interested in
AF3DN.P+3DC80 | BYTE | 9999
References (AF3DN.P):
Address | Disassembly
569EC460 | cmp byte ptr ds:[56A1DC79],0
569EC857 | xor byte ptr ds:[56A1DC79],1 <- This toggles off/on
569ECA86 | cmp byte ptr ds:[56A1DC79],0
Unless someone gets to it before me, I will follow up when I get more time. To be clear, this does nothing. I still need to determine how it interacts with ATB, HP, and Limit Break.
Is there any way to turn the HiSpeed into a framelocked hi-speed? For example, locking the game to 30fps? right now it bounces back and forth between 15 (battles), 30 (overworld maps/fields), and 60 (menus)
-
thanks for the interest, even if it doesnt pan out.
are you using any specific program to access these? nothing i tried allowed me to even get into the data of the file, only letting me see header info and other useless things.
-
Is there any way to turn the HiSpeed into a framelocked hi-speed? For example, locking the game to 30fps? right now it bounces back and forth between 15 (battles), 30 (overworld maps/fields), and 60 (menus)
Maybe. Take a look at 56A8DC9C. I noticed when HiSpeed is enabled the FPS increases and, maybe I'm wrong, but I think this is a side-effect of "speed hack" and the two are independent. Generally speaking (especially in older games), things are tied to the FPS and there is "good" reason to limit it.
thanks for the interest, even if it doesnt pan out.
are you using any specific program to access these? nothing i tried allowed me to even get into the data of the file, only letting me see header info and other useless things.
You can use any memory editor and/or debugger (I prefer Cheat Engine and x64dbg). The idea is to view the module after the processes has loaded it. You won't get far if you don't understand x86 assembly, though.
This was actually much easier than I anticipated--NOP these 6 addresses and you will have the desired effect. That said, I would still advocate for something like Cheat Engine to enable/disable this on-the-fly rather than patch this into your game permanently.
Party Member 1 (Top)
56A5C48D | 66:8991 72010000 | mov word ptr ds:[ecx+172],dx | HP
56A5C494 | 8B50 10 | mov edx,dword ptr ds:[eax+10] | ATB
Party Member 2 (Middle)
56A5C4BC | 66:8991 42030000 | mov word ptr ds:[ecx+342],dx | HP
56A5C4C3 | 8B90 E0000000 | mov edx,dword ptr ds:[eax+E0] | ATB
Party Member 3 (Bottom)
56A5C4F7 | 66:8991 12050000 | mov word ptr ds:[ecx+512],dx | HP
56A5C4FE | 8B90 B0010000 | mov edx,dword ptr ds:[eax+1B0] | ATB
P.S.
It is probably worth mentioning these are for the English version.
-
Thank you very much for the effort put in for this. we will see if i can manage to do it.