today i will be covering Front Mission 1st remake v1.0.3
this game was.....difficult to find codes and pointers for this game.
the spoiler below contains the journey to how i find the codes that i did.
now for tracing sake, i will write the pointers in full mode, if you know what youre doing, you can shorten them. but, that IF you know what you are doing. also,
PLEASE MAKE SURE YOU EDIT THE CODES BEFORE YOU USE THEM.
they are written for tracing.
this game was.....difficult to find codes and pointers for this game.
the spoiler below contains the journey to how i find the codes that i did.
at first, i tried to use nxdumptool to try and dump the globaldata.dat that was common in unity.
but either my base was bad or this game was doing something different. so i turn to the emulators, Ryujinx was faster to load, so i used it to extract the .dat file and just to make sure, i also extract the update main file as well.
so after following the tutorial for cracking unity games, i got my files and the use the dnSpy program to look at the "Assembly-CSharp.dll" and began searching.
thanks to that, i found a "ally check". so firing up ida, i began looking at the check, but i ran into the first of 2 problems: ALL the units come thru here, it didnt matter if it was the player/ally/enemy. All unit came thru. the second problem was that when i tried to write asm routine i would need to check because player/ally/enemy would return to different points, so i had to give up that route. so then i started looking into pointers, fortunately, as long as it was in the same turn, the addresses would hold on long enough for me to have pointer searcher get them. at this moment in time, it was trying to find the right parameters that would get a valid pointer, eventually, 5/10/1000 (i think) got me some pointers, so now i go back and create some different saves, using different settings (modern vs classic, the left side vs right side (your save would start with either an O or a U depending on who you selected.) now i tested the pointers by closing and reopening the game and loading different start up saves. after 5 times, i got it down to 5 pointer at would stick, so i completed a mission and see if the pointers still held, to my delight, they did. so now i started to look for connections to the check, and movement points was very close to the check. i will say this again with the code: "the movement points code will work differently depending on what mode you're on. if modern, it can be used immentidy, but with classic, you have to wait until youre next phase before the code's change are noticed." i also used noexs' memory viewer to search the surrounding area for more things, that was how i found the addresses for the exp for 4 types, which combine to give you the level that youre at (try setting the exps to over 1000 and reopen the details on your pilot).
but either my base was bad or this game was doing something different. so i turn to the emulators, Ryujinx was faster to load, so i used it to extract the .dat file and just to make sure, i also extract the update main file as well.
so after following the tutorial for cracking unity games, i got my files and the use the dnSpy program to look at the "Assembly-CSharp.dll" and began searching.
thanks to that, i found a "ally check". so firing up ida, i began looking at the check, but i ran into the first of 2 problems: ALL the units come thru here, it didnt matter if it was the player/ally/enemy. All unit came thru. the second problem was that when i tried to write asm routine i would need to check because player/ally/enemy would return to different points, so i had to give up that route. so then i started looking into pointers, fortunately, as long as it was in the same turn, the addresses would hold on long enough for me to have pointer searcher get them. at this moment in time, it was trying to find the right parameters that would get a valid pointer, eventually, 5/10/1000 (i think) got me some pointers, so now i go back and create some different saves, using different settings (modern vs classic, the left side vs right side (your save would start with either an O or a U depending on who you selected.) now i tested the pointers by closing and reopening the game and loading different start up saves. after 5 times, i got it down to 5 pointer at would stick, so i completed a mission and see if the pointers still held, to my delight, they did. so now i started to look for connections to the check, and movement points was very close to the check. i will say this again with the code: "the movement points code will work differently depending on what mode you're on. if modern, it can be used immentidy, but with classic, you have to wait until youre next phase before the code's change are noticed." i also used noexs' memory viewer to search the surrounding area for more things, that was how i found the addresses for the exp for 4 types, which combine to give you the level that youre at (try setting the exps to over 1000 and reopen the details on your pilot).
now for tracing sake, i will write the pointers in full mode, if you know what youre doing, you can shorten them. but, that IF you know what you are doing. also,
PLEASE MAKE SURE YOU EDIT THE CODES BEFORE YOU USE THEM.
they are written for tracing.
Code:
[Melee exp]
580F0000 0594AEC0
580F1000 000000B8
580F1000 00000000
580F1000 00000080
580F1000 000000F0
780F0000 00000030
640F0000 00000000 00000000
[short exp]
580F0000 0594AEC0
580F1000 000000B8
580F1000 00000000
580F1000 00000080
580F1000 000000F0
780F0000 00000034
640F0000 00000000 00000000
[long exp]
580F0000 0594AEC0
580F1000 000000B8
580F1000 00000000
580F1000 00000080
580F1000 000000F0
780F0000 00000038
640F0000 00000000 00000000
[dodge exp]
580F0000 0594AEC0
580F1000 000000B8
580F1000 00000000
580F1000 00000080
580F1000 000000F0
780F0000 0000003C
640F0000 00000000 00000000
[Unit id]
580F0000 0594AEC0
580F1000 000000B8
580F1000 00000000
580F1000 00000080
580F1000 000000F0
780F0000 00000081
610F0000 00000000 00000000
[Note: Do not change the active unit, the one with the orange square lit up]
00000000 00000000 00000000
[Note: 0-player, 1-ally, 2-enemy]
00000000 00000000 00000000
[Mov pts]
580F0000 0594AEC0
580F1000 000000B8
580F1000 00000000
580F1000 00000080
580F1000 000000F0
780F0000 000000C8
640F0000 00000000 000000FF
[Note: you really shouldnt need more than 255(FF) here]
00000000 00000000 00000000
[Cur body]
580F0000 0594AEC0
580F1000 000000B8
580F1000 00000000
580F1000 00000080
580F1000 000000F0
580F1000 00000048
780F0000 00000020
640F0000 00000000 00000000
[Cur Larm]
580F0000 0594AEC0
580F1000 000000B8
580F1000 00000000
580F1000 00000080
580F1000 000000F0
580F1000 00000048
780F0000 00000024
640F0000 00000000 00000000
[Cur Rarm]
580F0000 0594AEC0
580F1000 000000B8
580F1000 00000000
580F1000 00000080
580F1000 000000F0
580F1000 00000048
780F0000 00000028
640F0000 00000000 00000000
[Cur Feet]
580F0000 0594AEC0
580F1000 000000B8
580F1000 00000000
580F1000 00000080
580F1000 000000F0
580F1000 00000048
780F0000 0000002C
640F0000 00000000 00000000
[Cur ???]
580F0000 0594AEC0
580F1000 000000B8
580F1000 00000000
580F1000 00000080
580F1000 000000F0
580F1000 00000048
780F0000 00000030
640F0000 00000000 00000000
[max body]
580F0000 0594AEC0
580F1000 000000B8
580F1000 00000000
580F1000 00000080
580F1000 000000F0
580F1000 00000050
780F0000 00000020
640F0000 00000000 00000000
[max Larm]
580F0000 0594AEC0
580F1000 000000B8
580F1000 00000000
580F1000 00000080
580F1000 000000F0
580F1000 00000050
780F0000 00000024
640F0000 00000000 00000000
[max Rarm]
580F0000 0594AEC0
580F1000 000000B8
580F1000 00000000
580F1000 00000080
580F1000 000000F0
580F1000 00000050
780F0000 00000028
640F0000 00000000 00000000
[max Feet]
580F0000 0594AEC0
580F1000 000000B8
580F1000 00000000
580F1000 00000080
580F1000 000000F0
580F1000 00000050
780F0000 0000002C
640F0000 00000000 00000000
[max ???]
580F0000 0594AEC0
580F1000 000000B8
580F1000 00000000
580F1000 00000080
580F1000 000000F0
580F1000 00000050
780F0000 00000030
640F0000 00000000 00000000
[can re-move again(press B)]
04000000 01EBAEF0 52800008
[inf ammo]
04000000 035CACAC 7900450A
[shop total is always 1]
04000000 027306E0 0B000108
04000000 027306E0 52800028