Both data are synergistic
Growlimit Iinvalidation for Movement history.
Each character also has a growth limit, so it stops at a certain value.
Base values are affected by the leader monster defeated in battle.
Edit 2022/12/08
Basic stats Grow Multipiler
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>116624</ID>
<Description>"Basic stats Grow Multipiler"</Description>
<Options moHideChildren="1"/>
<LastState/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>{ Game : Romancing SaGa -Minstrel Song- Remastered.exe
Version:
Date : 2022-12-07
Author : user
This script does blah blah blah
}
[ENABLE]
aobscanmodule(status_hitpoint_multipiler_AOB,GameAssembly.dll,0F B6 58 1C 45 33 C9) // should be unique
alloc(newmem,$1000,status_hitpoint_multipiler_AOB)
label(code)
label(return)
label(hitpoint_grow_multi)
newmem:
code:
movzx ebx,byte ptr [rax+1C]
imul ebx,[hitpoint_grow_multi]
xor r9d,r9d
jmp return
hitpoint_grow_multi:
dw 5
status_hitpoint_multipiler_AOB:
jmp newmem
nop 2
return:
registersymbol(status_hitpoint_multipiler_AOB)
registersymbol(hitpoint_grow_multi)
[DISABLE]
status_hitpoint_multipiler_AOB:
db 0F B6 58 1C 45 33 C9
unregistersymbol(status_hitpoint_multipiler_AOB)
unregistersymbol(hitpoint_grow_multi)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+4E19DE
GameAssembly.dll+4E19B4: 48 85 C0 - test rax,rax
GameAssembly.dll+4E19B7: 0F 84 31 04 00 00 - je GameAssembly.dll+4E1DEE
GameAssembly.dll+4E19BD: 0F B6 78 1D - movzx edi,byte ptr [rax+1D]
GameAssembly.dll+4E19C1: 45 33 C0 - xor r8d,r8d
GameAssembly.dll+4E19C4: 8B D3 - mov edx,ebx
GameAssembly.dll+4E19C6: 89 BC 24 90 00 00 00 - mov [rsp+00000090],edi
GameAssembly.dll+4E19CD: 49 8B CD - mov rcx,r13
GameAssembly.dll+4E19D0: E8 4B 45 02 00 - call MainGame.MONDATA
GameAssembly.dll+4E19D5: 48 85 C0 - test rax,rax
GameAssembly.dll+4E19D8: 0F 84 10 04 00 00 - je GameAssembly.dll+4E1DEE
// ---------- INJECTING HERE ----------
GameAssembly.dll+4E19DE: 0F B6 58 1C - movzx ebx,byte ptr [rax+1C]
// ---------- DONE INJECTING ----------
GameAssembly.dll+4E19E2: 45 33 C9 - xor r9d,r9d
GameAssembly.dll+4E19E5: 45 33 C0 - xor r8d,r8d
GameAssembly.dll+4E19E8: 89 9C 24 80 00 00 00 - mov [rsp+00000080],ebx
GameAssembly.dll+4E19EF: 49 8B CD - mov rcx,r13
GameAssembly.dll+4E19F2: 41 8D 51 03 - lea edx,[r9+03]
GameAssembly.dll+4E19F6: E8 45 67 1F 00 - call MainGame._isSherylWorkBit
GameAssembly.dll+4E19FB: 84 C0 - test al,al
GameAssembly.dll+4E19FD: 74 14 - je GameAssembly.dll+4E1A13
GameAssembly.dll+4E19FF: 83 C7 05 - add edi,05
GameAssembly.dll+4E1A02: 83 C3 05 - add ebx,05
}
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>116625</ID>
<Description>"Multipiler"</Description>
<ShowAsSigned>0</ShowAsSigned>
<VariableType>4 Bytes</VariableType>
<Address>hitpoint_grow_multi</Address>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatTable>
Grow stats multipiler
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>116626</ID>
<Description>"Grow stats multipiler"</Description>
<Options moHideChildren="1"/>
<LastState/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>{ Game : Romancing SaGa -Minstrel Song- Remastered.exe
Version:
Date : 2022-12-07
Author : user
This script does blah blah blah
}
[ENABLE]
aobscanmodule(grow_stats_multipiler_AOB,GameAssembly.dll,0F B6 78 1D 45 33 C0) // should be unique
alloc(newmem,$1000,grow_stats_multipiler_AOB)
label(code)
label(return)
label(grow_stats_multipiler)
newmem:
code:
movzx edi,byte ptr [rax+1D]
imul edi,[grow_stats_multipiler]
xor r8d,r8d
jmp return
grow_stats_multipiler:
dw 5
grow_stats_multipiler_AOB:
jmp newmem
nop 2
return:
registersymbol(grow_stats_multipiler_AOB)
registersymbol(grow_stats_multipiler)
[DISABLE]
grow_stats_multipiler_AOB:
db 0F B6 78 1D 45 33 C0
unregistersymbol(grow_stats_multipiler_AOB)
unregistersymbol(grow_stats_multipiler)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+4E19BD
GameAssembly.dll+4E1994: 49 8B 85 18 20 00 00 - mov rax,[r13+00002018]
GameAssembly.dll+4E199B: 48 85 C0 - test rax,rax
GameAssembly.dll+4E199E: 0F 84 4A 04 00 00 - je GameAssembly.dll+4E1DEE
GameAssembly.dll+4E19A4: 8B 58 54 - mov ebx,[rax+54]
GameAssembly.dll+4E19A7: 45 33 C0 - xor r8d,r8d
GameAssembly.dll+4E19AA: 8B D3 - mov edx,ebx
GameAssembly.dll+4E19AC: 49 8B CD - mov rcx,r13
GameAssembly.dll+4E19AF: E8 6C 45 02 00 - call MainGame.MONDATA
GameAssembly.dll+4E19B4: 48 85 C0 - test rax,rax
GameAssembly.dll+4E19B7: 0F 84 31 04 00 00 - je GameAssembly.dll+4E1DEE
// ---------- INJECTING HERE ----------
GameAssembly.dll+4E19BD: 0F B6 78 1D - movzx edi,byte ptr [rax+1D]
// ---------- DONE INJECTING ----------
GameAssembly.dll+4E19C1: 45 33 C0 - xor r8d,r8d
GameAssembly.dll+4E19C4: 8B D3 - mov edx,ebx
GameAssembly.dll+4E19C6: 89 BC 24 90 00 00 00 - mov [rsp+00000090],edi
GameAssembly.dll+4E19CD: 49 8B CD - mov rcx,r13
GameAssembly.dll+4E19D0: E8 4B 45 02 00 - call MainGame.MONDATA
GameAssembly.dll+4E19D5: 48 85 C0 - test rax,rax
GameAssembly.dll+4E19D8: 0F 84 10 04 00 00 - je GameAssembly.dll+4E1DEE
GameAssembly.dll+4E19DE: 0F B6 58 1C - movzx ebx,byte ptr [rax+1C]
GameAssembly.dll+4E19E2: 45 33 C9 - xor r9d,r9d
GameAssembly.dll+4E19E5: 45 33 C0 - xor r8d,r8d
}
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>116627</ID>
<Description>"Multipiler"</Description>
<ShowAsSigned>0</ShowAsSigned>
<VariableType>4 Bytes</VariableType>
<Address>grow_stats_multipiler</Address>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatTable>
Growlimit Iinvalidation
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>116640</ID>
<Description>"Growlimit Iinvalidation"</Description>
<Options moHideChildren="1"/>
<LastState/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>{ Game : Romancing SaGa -Minstrel Song- Remastered.exe
Version:
Date : 2022-12-08
Author : user
This script does blah blah blah
}
[ENABLE]
aobscanmodule(growlimit_invalidation_AOB,GameAssembly.dll,8D 43 0A 33 DB) // should be unique
alloc(newmem,$1000,growlimit_invalidation_AOB)
label(code)
label(return)
label(growlimit_invalidation)
newmem:
code:
mov rbx,[growlimit_invalidation]
lea eax,[rbx+0A]
xor ebx,ebx
jmp return
growlimit_invalidation:
dw 03e8
growlimit_invalidation_AOB:
jmp newmem
return:
registersymbol(growlimit_invalidation_AOB)
registersymbol(growlimit_invalidation)
[DISABLE]
growlimit_invalidation_AOB:
db 8D 43 0A 33 DB
unregistersymbol(growlimit_invalidation_AOB)
unregistersymbol(growlimit_invalidation)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+4E32FB
MainGame.calc_growth_rate: 48 89 5C 24 08 - mov [rsp+08],rbx
GameAssembly.dll+4E32D5: 57 - push rdi
GameAssembly.dll+4E32D6: 48 83 EC 20 - sub rsp,20
GameAssembly.dll+4E32DA: 80 3D E0 2A 88 02 00 - cmp byte ptr [GameAssembly.dll+2D65DC1],00
GameAssembly.dll+4E32E1: 41 8B F8 - mov edi,r8d
GameAssembly.dll+4E32E4: 8B DA - mov ebx,edx
GameAssembly.dll+4E32E6: 75 13 - jne GameAssembly.dll+4E32FB
GameAssembly.dll+4E32E8: 48 8D 0D 89 1C 6A 02 - lea rcx,[GameAssembly.dll+2B84F78]
GameAssembly.dll+4E32EF: E8 1C B3 DF FF - call GameAssembly.DllCanUnloadNow+8CA0
GameAssembly.dll+4E32F4: C6 05 C6 2A 88 02 01 - mov byte ptr [GameAssembly.dll+2D65DC1],01
// ---------- INJECTING HERE ----------
GameAssembly.dll+4E32FB: 8D 43 0A - lea eax,[rbx+0A]
// ---------- DONE INJECTING ----------
GameAssembly.dll+4E32FE: 33 DB - xor ebx,ebx
GameAssembly.dll+4E3300: 85 C0 - test eax,eax
GameAssembly.dll+4E3302: 0F 49 D8 - cmovns ebx,eax
GameAssembly.dll+4E3305: B8 14 00 00 00 - mov eax,00000014
GameAssembly.dll+4E330A: 3B D8 - cmp ebx,eax
GameAssembly.dll+4E330C: 0F 4F D8 - cmovg ebx,eax
GameAssembly.dll+4E330F: 48 8B 05 62 1C 6A 02 - mov rax,[GameAssembly.dll+2B84F78]
GameAssembly.dll+4E3316: F6 80 33 01 00 00 04 - test byte ptr [rax+00000133],04
GameAssembly.dll+4E331D: 74 18 - je GameAssembly.dll+4E3337
GameAssembly.dll+4E331F: 83 B8 E0 00 00 00 00 - cmp dword ptr [rax+000000E0],00
}
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>116641</ID>
<Description>"Growlimit Iinvalidation"</Description>
<ShowAsSigned>0</ShowAsSigned>
<VariableType>4 Bytes</VariableType>
<Address>growlimit_invalidation</Address>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatTable>