I already know that there is a SpoilerAL SSG for this game, but I was curious about the game's internals and its so-called anticheat (which was pretty cool!).
Below are my own findings, alongside REDCAT's CG and Recollection/Extras scripts (since I couldn't be bothered to find those).
A few things to note...
- Kill Anti-Cheat
- Through trial-and-error, and some stubbornness on my end, I found that a particular function (which the function's prologue is at 00418E20) copies certain values (Celestine's Health/Mana, Lazlocke's Mana, turn counter, etc) and stores them in some allocated memory by calling AoiMemoryAlloc(), which will later be used for value comparisons. Simply, if a value is changed, then a copy of its original value overwrites the changed value. Afterwards, the allocated memory is freed by calling AoiMemoryFree().
Such logic can be bypassed by placing a return on the function's prologue, allowing you to change values freely (at least from my experience).
- Through trial-and-error, and some stubbornness on my end, I found that a particular function (which the function's prologue is at 00418E20) copies certain values (Celestine's Health/Mana, Lazlocke's Mana, turn counter, etc) and stores them in some allocated memory by calling AoiMemoryAlloc(), which will later be used for value comparisons. Simply, if a value is changed, then a copy of its original value overwrites the changed value. Afterwards, the allocated memory is freed by calling AoiMemoryFree().
- General Editor
- This editor can generally be used wherever to edit the character's hud (i.e., the hud displaying Celestine's Health/Mana, Lazlocke's Mana, turn counter, etc).
- Acquire Menu Editor
- This editor can only be used when whenever you have toggled the 'Acquire Menu' (i.e., the resulting menu when clicking 'Status', then 'Acquire'). This is because of how the game handles its own page(s) of memory. Therefore, memory will only be allocated whenever you are located inside the 'Acquire Menu' and, therefore, be populated with your character's skills, inventory, etc..
What is interesting to note is that you can get a handle to the page of memory through AoiMemoryHandleAddress().
- This editor can only be used when whenever you have toggled the 'Acquire Menu' (i.e., the resulting menu when clicking 'Status', then 'Acquire'). This is because of how the game handles its own page(s) of memory. Therefore, memory will only be allocated whenever you are located inside the 'Acquire Menu' and, therefore, be populated with your character's skills, inventory, etc..
- Debug Windows
- This game has a library named AGS. Specifically, this library contains a few interesting library functions such AgsDebugInit(), AgsDebugWindowCreate(), and AgsDebugRun(), which requires a "Debugwnd.ini" for it to successfully configure itself.
Creating a thread on AgsDebugInit() ran successfully without any exceptions, however the game window itself froze. If anyone is successful in initialization, please let me know.; I would like to learn how you managed to do so!
- This game has a library named AGS. Specifically, this library contains a few interesting library functions such AgsDebugInit(), AgsDebugWindowCreate(), and AgsDebugRun(), which requires a "Debugwnd.ini" for it to successfully configure itself.
I delayed posting this since some kept complaining about the difficulty, instead of learning the mechanics and adapting accordingly...
Oh well, this niche game was fun regardless.
Cheers!
hT
How to use this cheat table?
- Install Cheat Engine
- Double-click the .CT file in order to open it.
- Click the PC icon in Cheat Engine in order to select the game process.
- Keep the list.
- Activate the trainer options by checking boxes or setting values from 0 to 1