i always wanted to create such a thing from day one i had the gp2x however i ditched the project ! for a few reasons :
- 1) unlike windows it's not as easy to alter another process memory, you don't own. (can be bypassed by creating the process as a child process of the cheat tool)
- 2) address are virtual addresses and you had to do some virtual to physical translation (here i got stuck cause i did not know what this was !)
- 3) emulators don't have this problem, why ? Emulators control the ram of the emulated device, so they can easily search the emulated systems memory and alter it...
- 4) Unlike windows most processes will have their addresses at a random spot each time you (re)run the same process... This can happen on windows as well but there are ways around this. For example by searching for specific "things" first in another memory location, most of the time the address your looking for exists at the same offset as before then, i know this because some years ago i did a Zinc emulator Trainer, it contained about 300 cheats for about 50 of the 71 emulated games... the trainer detected if the emulator was running and was also able to detect which game was running inside the emulator .. (so i know how these things work
) I also made another tool which could convert mame cheats to zinc emulator addresses for my trainer but never used it (although it did work) since the zinc emulator by that time had gotten less importance by the people
- 5) you will have to create a memsearch with onscreen display functions as well, might not be as easy as you think for example how will you write in a current proccess gfx display that it's enabled a cheat or something... i tried doing this and although it works it depends on how games use the frame buffer like how they erease everything... there is a way around it by switching back to the main process. You'd also have to create some system wide hooks or a deamon to trigger the search functions while the (child) process is running
- 6) ii'm not saying it's impossible, because it actually is possible on linux and gdb (gnu debugger) is the proof of it !
IMO it would be great if someone finally did this but the learning curve is steap, on the other hand it's much easier to create a cheat engine inside the emulator itselve since you already got all access to the emulated systems ram memory and can do whatever you like with it (maybe you should look at that).. I also think certain (dingoo) emulators already have cheating options in it although probably not a cheat / memory searcher