I've been working on this a bit, and while i'm missing some things I think, i've got a version of this table operational, bear in mind its not perfectly made nor properly de-bugged so it may crash your game if you use it wrong. You've been warned.
I've been working on this a bit, and while i'm missing some things I think, i've got a version of this table operational, bear in mind its not perfectly made nor properly de-bugged so it may crash your game if you use it wrong. You've been warned.
mm8.CT
Hello,
Can you tell my which version of MM8 you have created trainer for please?
I have latest offline MM8 GOG version installed, overwriten with Merge+community packages and when I do what you described nothing happen.
I mean I have running cheat engine, opened file mm8.ct and opened mm8.exe process.
My MM8.exe is 1.155.02 bytes dated 6/15/2009
Can you tell me you have tested trainer with same game version please?
sorry, i've been working on a new computer and haven't had the power to get MM8 on for a bit to manage the merge mod and make any fixes. I wasn't using the GOG version though.
MMMerge has its own mm8.exe that overwrites any original mm8.exe. MMMerge's mm8.exe file is actually from GrayFace MM8 Patch v2.4.1. Its checksums are shown above.
It looks like your mm8.exe (1.155.072 bytes dated 6/15/2009) is the same one, although you still need to calculate one of the checksums to make sure.
If it's the same one, then it must be something else. You must open mm8.exe program, then run Cheat Engine, load the cheat table, and select mm8.exe process.
When you add a new party member the tables don't swap to the new one.
it seems the table follows the party you created at the beginning of the game, and if you didn't make a full party it defaults to some other recruitables instead of whatever you add later
can it be fixed?
UPDATE: After long, please, check my Post at Page 2 on this Thread for the final answers on those Portrait Addresses. For the patterns in this current post, although approximate and leading to the solution, were doomed to anomalies because I needed to further verify all the Hexadecimal values (00 to 15) on all those digits and make exact matching calculations on an appropriate counting table for them.
Hello, there;
So, while investigating, I've found out a way to improve the original CE file, but it's a bit of hardwork (although there could be better ways to automate the process that I'm not aware of).
Basically, I was able to successfully create new controllers for swapping the Portrait of additional Characters in-game, beyond that of the 5 starting Characters Party Creation: Characters (00), (38), (39), (40), (41), based on the in-game counting system in the Adventurer's Inn when your mouse hovers the Character Portraits that are resting in the there), and according to this simple chart I've made recently: [Link]
Theoretically, my simple research means that anyone with the correct Addresses at hand can create extra controllers for any aspects on each of the 50 playable Characters in the game, but unfortunately that CE file, when addressing Characters' aspects, is only doing so regarding those 5 Characters uniquely.
Here are some concrete examples of Portraits' Addresses:
00B21BCF Portrait of Character 00 (given by file) 00B238F7 Portrait of Character 01 (I was able to uncover following a counting pattern) 00B2561F Portrait of Character 02 (I was able to uncover following a counting pattern)
…
00B66FBF Portrait of Character 38 (given by file; as the first of a sequence, offers the start for a counting pattern)
00B68CE7 Portrait of Character 39 (given by file; follows the counting pattern that I've found and used)
00B6AA0F Portrait of Character 40 (given by file; follows the counting pattern that I've found and used)
00B6C737 Portrait of Character 41 (given by file; follows the counting pattern that I've found and used)
…
So, what I did was I first had to translate the Address code in that CE file into a number counting code with 16 digits (even though it starts as 00 and ends as 15).
Where (counting code ←translates into→ Address Code), like this:
00 ←→ 0
01 ←→ 1
02 ←→ 2
03 ←→ 3
04 ←→ 4
05 ←→ 5
06 ←→ 6
07 ←→ 7
08 ←→ 8
09 ←→ 9
10 ←→ A
11 ←→ B
12 ←→ C
13 ←→ D
14 ←→ E
15 ←→ F
Then I had to see if, especially regarding the last 4 Characters in CE file, their Portraits Addresses had some jumping pattern (and actually they kinda did, but it could have a few anomalies sometimes):
So, Character 00's Address is 00B21BCF. Let's forget about the first "00B" portion, which repeats anyways on most, if not all the 50 playable Character Portraits. Then the "2" (from "00B2") is prone to changes, however only on the long run; this is why Character 41, which waaay ahead, has the Address 00B6C737, where the staring portion "00B" is maintained, but now there is a "6" ("00B6") instead of a "2" ("00B2), so it grew a bit.
So, for the next bunch of Characters Portraits that are beyond Character 00 (and which Portrait Address is 00B21BCF), we can expect to just ignore its four starting symbols on the Address code: "00B2", and deal only with the remaining "1BCF".
The counting pattern for the counting code I was able to recover (comparing and translating the Address codes on the later grouped Characters: 38, 39, 40, 41) indicates the following:
If we've got Character 00's Portrait Address code and want to find the Character 01's Portrait Address code (like I did), we start with that last portion of the Address code for Character 00's Portrait which is:
1BCF
1 B C F ←translates → 01 11 12 15
It's better to start from the last sub-portion I found (like treating units first on a conventional sum).
So, the fourth and last sub-portion Address code is "F", which is actually 15 (the largest unit in our counting code, while the smallest unit is 00). The big pattern here is it always gets a constant +08 from a Character Portrait to the next one, so if our Character 00's Portrait starts here with a 15, then 15 +08 = 07, because it needs to reset like a clock, and don't forget to count the 00. So, for Character 01's Portrait, last sub-portion would be 15, which translates to "F" as Address code. And, as we can expect, for Character 02's Portrait, from this "F" meaning 15, the next +08 would make it a 15 again —just as it started for Character 00's Portrait. This pattern repeats itself on the later Character Portraits, so I believe it would match.
For the third sub-portion, "C" Address code, which means a 12 value, what we get is a regular and alternating +03 or +02 (addition), and it just happens that, from Character 00's Portrait to Character 01's Portrait, it started as a +03. So, 12 + 03 = 15, and 15 as we should know already is that last letter "F" for this particular sub-portion Address code for Character 01's Portrait.
So far for Character 01's Portrait we've got:
⌷ ⌷ F 7 ←translates → ⌷ ⌷ 15 07
Now, for second sub-portion, we've got "B" or value 11, and for some reason (probably simple maths I guess, but I couldn't verify), we've got regularly alternating -03 or -02 (subtraction), and it just happens it started with -03 (subtraction) from Character 00's Portrait to Character 01's Portrait. Thus, for our case here, 11 - 03 = 08, which means "8" in Address code. It is expected (and I successfully tested that) that by following this pattern, from Character's 01 Portrait to Character 02's Portrait, that subtraction will be -02 instead of -03 —since it's alternating regularly.
Finally, for the first sub-portion, "1" or actually 01, it just gets a constant +02 (addition), so from 01 +02 it becomes 03, which re-translates to "3" Address code.
This makes up for the following set
3 8 F 7 ←translates → 03 08 15 07
Which, if we include the other starting portion ("00B2") of the whole Address code that didn't change at all, we get this whole Address code for Character 01's Portrait; a new one that now can be tracked and edited from that file in CE:
0 0 B 2 3 8 F 7, which should be written this way: 00B238F7
Now, if you'd be interested, you can do the maths and find out why Character 02's Portrait Address code is 00B2561F,
and also verify why the Character Portraits from Characters 38, 39, 40 and 41 behave on that strange way (yes: because of the patterns I've taken from them exactly). I cannot guarantee there won't be any anomalies on the current pattern for the entire list of playable Characters regarding their Portraits, but it sounds to me that if not 100%, most of them would stick to the pattern and could be uncovered fairly easy. Other features that might require Addresses can be found this way.
For me, this small investigation was really fun to do.
I really don't know nearly anything about Cheat Engine, but I was glad that after some tricky beginning, I was finally able to understand just well enough so that I could have tracked those mysterious Address codes nearly from scratch, and more importantly: presented with relevant content (so I hope) in an understandable way (so I hope too), so that this would become more feasible to anyone willing to implement new features in CE if required.
Last edited by Kinox on Fri Feb 24, 2023 3:01 pm, edited 3 times in total.
When you add a new party member the tables don't swap to the new one.
it seems the table follows the party you created at the beginning of the game, and if you didn't make a full party it defaults to some other recruitables instead of whatever you add later
can it be fixed?
Hi, there.
Yes, definitively. I was able to do so, but to a limited extend.
You should read my previous post btw.
What is required is to know the CE Address codes for those playable Character features.
On my case, I was able to track down some of them Portraits Address codes, add them as new features thus making them editable from that CE file. You do not need to create new feature 'folder' of, say, Character 1/2/3/4/5/6… (although it is a good idea to keep it organized), you just need to create Copy/Paste the feature you need and put there the Address code of it.
The problem is how to know the Address code of a feature.
I found a peculiar way to uncover Address codes of features on that CE file, such as Character Portraits, but I could have used the same approach for finding the Address codes for the Voice, the Class, and etc., of the playable Characters. It looks like many (if not all) of those features follow a regular pattern, and their Address codes are made in a counting system, that one can translate and figure out more about its meaning relating to the game data.
I know this post is old, but maybe this can help curious people out there or CE use in general.
And I had the same kind of question as you had.
Cheat table kinda works but can't you just set up a pointer for character slots 2 through 5 rather than hunt down the specific portraits/roster address or whatever?
Cheat table kinda works but can't you just set up a pointer for character slots 2 through 5 rather than hunt down the specific portraits/roster address or whatever?
I now see what you meant. Maybe it's plausible to make that kind of automation in CE, but I really don't know.
What I understand is that the MM8-based system (the 5 Character Party with swapping system), apparently the Slots themselves don't have Addresses on their own regarding the whole Characters' settings that we are willing to edit. It seems a Slot (from the 5 Slots) in the Party just serves as a way to get one of the 50 playable Characters into the Party (and a few other stuff), but still uses the Addresses from that Character (which remains one of the 50) from that pool which is 'elsewhere'… and so a Character's setting still requires to be directly Addressed —literally— and then manipulated; unless the was some sort of 'channeler' feature for allowing such those indirect inputs. It would still require, first hand, to map out the Characters' settings I guess.