-
-
Notifications
You must be signed in to change notification settings - Fork 1
Description
Hi everyone!
Firstly, huge thanks to the Tonyhax team, Alex-free, MottZilla, and everyone for all the work you've put into this.
I’ve been chasing a "Universal" way to read the joypad for the cheat engine (specifically for D4 Jokers and calling a reset/IGR STUFF) over the last 7 days and I'm hitting a wall. I’ve been looking at the standard kernel pointers:
; For Joypad Reading we need to know where the Ptr to the Joypad Data is in Kernel memory.
; If we call InitPad() ourselves we can then search Kernel memory for the Ptr to our buffer.
; This location in the Kernel memory won't change when we load up a game. But we should test to
; see what happens with InitPad, StartPad, StopPad depending on what we are doing.
; 74B4, 74B8, and 74C8 on different BIOS versions have contained the Ptr to the 1st Joypad buffer.
What I've found:
The Double Dereference: I realized it’s not just one buffer. It seems to be a pointer-to-a-pointer. (I'm really not sure 100% but I got as far as following the second dereference and matching the pad ID/data in my own tests, but it feels very unstable once the game starts.
my suspicion, is that i'm doing it too early?, I tried scanning for the pad address as soon as the game is loaded, but I always get FFFF or the trigger fires constantly even when I'm not touching the controller.
If the engine scans before the game has actually called InitPAD(), I'm just capturing a null address or garbage from the previous menu/ODE state.
Has anyone successfully made a "hunter" that waits for the game to actually initialize its pad before locking the address? Or is there a better way to handle games that bypass these BIOS pointers entirely?
i'm dumfounded and have scoured old docs and text and almost all pad read or joker support requires a phyiscal device on the parallel port.
I'm still learning the ropes here, so I might be totally off-base,
i be scratching my head and looking into hijacking the sio0 just to get my pad data across the engine via hardware that sniffs from the sio1 but that sounds too messy
but I’d love any advice or pointers!
Thank you