Hmm, well, if I recall correctly, the only addresses that change when you reserve the top of memory (in most games) are the FST (they shift down a constant amount). At least, it works for GCARS-CS, and I think Action Replay also reserves the top of memory. If nothing else, it will behave the same as the GCARS engine does in Swiss as long as you reserve exactly 32KiB of memory (which is what the GCARS engine does), so any AR codes that work in GCARS/Swiss will work this way too.emu_kidid wrote:something I've never fully understood about cheat code engines is this:
If I move Arena1Hi (top of memory heap) down 32kb, wouldn't that push memory locations in the game down, thus making cheats which rely on patching specific memory locations fail by making them actually write over other values?
Lets say that Player 1 health for game X is at 0x817F0000 and is 4 bytes long.. I have a cheat to keep it at 99% full at all times which would write to that location 99 over and over. If I bump Arena1Hi down 32kb so I can reserve it for my stuff, wouldn't Player 1 health now lie in another location in memory?
So wouldn't the cheat engine all of a sudden try to write to player 1 health (but now is really at 0x817E8000) at 0x817F0000?
Or have I totally mistaken how clever a cheat engine actually is?
There are a few games that are known to complain if you mess with the top of memory (Starfox Adventures is one), but that's just due to the FST not wanting to be moved. I'm pretty sure that if you reserved, say, 1MiB of the top, it would change memory allocation or crash the game, but very few games actually store anything at the top 32KiB other than the FST, thus there's no reason for the allocator to do anything different.