Well, since add weapon and parts options will crash my game, I pumped up some options to make it easier to get weapon prizes in arena.
Get Arena Prize In 1 Win
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>302010161</ID>
<Description>"Get Arena Prize In 1 Win"</Description>
<LastState/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>{ Game : Front Mission 2 Remake.exe
Version:
Date : 2025-04-06
Author : CannonFodder
This script does blah blah blah
}
[ENABLE]
//aobscan(ArenaPrizeCounterInject,49 63 47 38 89 44 24 28) // should be unique
aobscanregion(ArenaPrizeCounterInject,ArenaPilotStats+SpecialPrize:KillAndTryGetPrize+18,ArenaPilotStats+SpecialPrize:KillAndTryGetPrize+67,49 63 47 38 89 44 24 28) // should be unique
alloc(newmem,$1000,ArenaPrizeCounterInject)
label(code)
label(return)
newmem:
mov dword ptr [r15+38],#999
code:
movsxd rax,dword ptr [r15+38]
mov [rsp+28],eax
jmp return
ArenaPrizeCounterInject:
jmp newmem
nop 3
return:
registersymbol(ArenaPrizeCounterInject)
[DISABLE]
ArenaPrizeCounterInject:
db 49 63 47 38 89 44 24 28
unregistersymbol(ArenaPrizeCounterInject)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: ArenaPilotStats+SpecialPrize:KillAndTryGetPrize+3a
ArenaPilotStats+SpecialPrize:KillAndTryGetPrize+18: 33 C0 - xor eax,eax
ArenaPilotStats+SpecialPrize:KillAndTryGetPrize+1a: 48 89 06 - mov [rsi],rax
ArenaPilotStats+SpecialPrize:KillAndTryGetPrize+1d: 48 89 46 08 - mov [rsi+08],rax
ArenaPilotStats+SpecialPrize:KillAndTryGetPrize+21: 48 89 46 10 - mov [rsi+10],rax
ArenaPilotStats+SpecialPrize:KillAndTryGetPrize+25: 41 0F B6 4F 34 - movzx ecx,byte ptr [r15+34]
ArenaPilotStats+SpecialPrize:KillAndTryGetPrize+2a: 0F B6 44 24 30 - movzx eax,byte ptr [rsp+30]
ArenaPilotStats+SpecialPrize:KillAndTryGetPrize+2f: 3B C1 - cmp eax,ecx
ArenaPilotStats+SpecialPrize:KillAndTryGetPrize+31: 74 07 - je ArenaPilotStats+SpecialPrize:KillAndTryGetPrize+3a
ArenaPilotStats+SpecialPrize:KillAndTryGetPrize+33: 33 C0 - xor eax,eax
ArenaPilotStats+SpecialPrize:KillAndTryGetPrize+35: E9 7D 00 00 00 - jmp ArenaPilotStats+SpecialPrize:KillAndTryGetPrize+b7
// ---------- INJECTING HERE ----------
ArenaPilotStats+SpecialPrize:KillAndTryGetPrize+3a: 49 63 47 38 - movsxd rax,dword ptr [r15+38]
// ---------- DONE INJECTING ----------
ArenaPilotStats+SpecialPrize:KillAndTryGetPrize+3e: 89 44 24 28 - mov [rsp+28],eax
ArenaPilotStats+SpecialPrize:KillAndTryGetPrize+42: FF C0 - inc eax
ArenaPilotStats+SpecialPrize:KillAndTryGetPrize+44: 41 89 47 38 - mov [r15+38],eax
ArenaPilotStats+SpecialPrize:KillAndTryGetPrize+48: 49 63 47 38 - movsxd rax,dword ptr [r15+38]
ArenaPilotStats+SpecialPrize:KillAndTryGetPrize+4c: 49 63 4F 30 - movsxd rcx,dword ptr [r15+30]
ArenaPilotStats+SpecialPrize:KillAndTryGetPrize+50: 3B C1 - cmp eax,ecx
ArenaPilotStats+SpecialPrize:KillAndTryGetPrize+52: 0F 8C 5D 00 00 00 - jl ArenaPilotStats+SpecialPrize:KillAndTryGetPrize+b5
ArenaPilotStats+SpecialPrize:KillAndTryGetPrize+58: 41 0F B6 57 35 - movzx edx,byte ptr [r15+35]
ArenaPilotStats+SpecialPrize:KillAndTryGetPrize+5d: 48 B9 00 00 00 80 FF FF FF FF - mov rcx,FFFFFFFF80000000
ArenaPilotStats+SpecialPrize:KillAndTryGetPrize+67: 33 C0 - xor eax,eax
}
</AssemblerScript>
</CheatEntry>
</CheatEntries>
</CheatTable>
Get Second Level Prize In Arena Weapon Pool
refer to this link for a table of weapon pools and prize levels
[Link]
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>302010162</ID>
<Description>"Get Second Level Prize In Arena Weapon Pool"</Description>
<LastState/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>{ Game : Front Mission 2 Remake.exe
Version:
Date : 2025-04-06
Author : CannonFodder
refer to this link for a table of weapon pools and prize levels
https://gamefaqs.gamespot.com/ps/197397-front-mission-second/faqs/78312/acquiring-weapon-rewards#front-mission-2-remake-changes
}
[ENABLE]
//aobscan(ArenaPrizeValueInject,48 63 7D E4 48 8B 46 28) // should be unique
aobscanregion(ArenaPrizeValueInject,Colosseum.ArenaSoloGameManager:SetPrizeInfo+1d3,Colosseum.ArenaSoloGameManager:SetPrizeInfo+21f,48 63 7D E4 48 8B 46 28) // should be unique
alloc(newmem,$1000,ArenaPrizeValueInject)
label(code)
label(return)
newmem:
mov rdi, #2104 //second level //#1804 third level //#3000 first level
code:
//movsxd rdi,dword ptr [rbp-1C]
mov rax,[rsi+28]
jmp return
ArenaPrizeValueInject:
jmp newmem
nop 3
return:
registersymbol(ArenaPrizeValueInject)
[DISABLE]
ArenaPrizeValueInject:
db 48 63 7D E4 48 8B 46 28
unregistersymbol(ArenaPrizeValueInject)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: Colosseum.ArenaSoloGameManager:SetPrizeInfo+1fd
Colosseum.ArenaSoloGameManager:SetPrizeInfo+1d3: 48 8B C8 - mov rcx,rax
Colosseum.ArenaSoloGameManager:SetPrizeInfo+1d6: 83 38 00 - cmp dword ptr [rax],00
Colosseum.ArenaSoloGameManager:SetPrizeInfo+1d9: 48 8D 64 24 00 - lea rsp,[rsp+00]
Colosseum.ArenaSoloGameManager:SetPrizeInfo+1de: 49 BB 70 34 9A CC 7B 02 00 00 - mov r11,PointsCounter:CalculatePointsSolo
Colosseum.ArenaSoloGameManager:SetPrizeInfo+1e8: 41 FF D3 - call r11
Colosseum.ArenaSoloGameManager:SetPrizeInfo+1eb: 48 89 45 E0 - mov [rbp-20],rax
Colosseum.ArenaSoloGameManager:SetPrizeInfo+1ef: 48 8B 46 28 - mov rax,[rsi+28]
Colosseum.ArenaSoloGameManager:SetPrizeInfo+1f3: 48 63 4D E0 - movsxd rcx,dword ptr [rbp-20]
Colosseum.ArenaSoloGameManager:SetPrizeInfo+1f7: 83 38 00 - cmp dword ptr [rax],00
Colosseum.ArenaSoloGameManager:SetPrizeInfo+1fa: 89 48 30 - mov [rax+30],ecx
// ---------- INJECTING HERE ----------
Colosseum.ArenaSoloGameManager:SetPrizeInfo+1fd: 48 63 7D E4 - movsxd rdi,dword ptr [rbp-1C]
// ---------- DONE INJECTING ----------
Colosseum.ArenaSoloGameManager:SetPrizeInfo+201: 48 8B 46 28 - mov rax,[rsi+28]
Colosseum.ArenaSoloGameManager:SetPrizeInfo+205: 83 38 00 - cmp dword ptr [rax],00
Colosseum.ArenaSoloGameManager:SetPrizeInfo+208: 89 78 3C - mov [rax+3C],edi
Colosseum.ArenaSoloGameManager:SetPrizeInfo+20b: 48 8B 46 28 - mov rax,[rsi+28]
Colosseum.ArenaSoloGameManager:SetPrizeInfo+20f: 48 63 4D E4 - movsxd rcx,dword ptr [rbp-1C]
Colosseum.ArenaSoloGameManager:SetPrizeInfo+213: 48 63 55 E0 - movsxd rdx,dword ptr [rbp-20]
Colosseum.ArenaSoloGameManager:SetPrizeInfo+217: 2B CA - sub ecx,edx
Colosseum.ArenaSoloGameManager:SetPrizeInfo+219: 83 38 00 - cmp dword ptr [rax],00
Colosseum.ArenaSoloGameManager:SetPrizeInfo+21c: 89 48 38 - mov [rax+38],ecx
Colosseum.ArenaSoloGameManager:SetPrizeInfo+21f: 48 8B 86 A0 00 00 00 - mov rax,[rsi+000000A0]
}
</AssemblerScript>
</CheatEntry>
</CheatEntries>
</CheatTable>
Max Some Innate Skill Level Up Chance
Not sure what exact skills it will affect because I can't see the values
Useful for those skills not affected by the global level up chances mentioned in my previous post
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>302010106</ID>
<Description>"Max Some Innate Skill Level Up Chance"</Description>
<LastState/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>{ Game : Front Mission 2 Remake.exe
Version:
Date : 2025-04-05
Author : CannonFodder
This script does blah blah blah
}
[ENABLE]
//aobscan(SkillLvUpChanceInject,12 F3 0F 10 46 64) // should be unique
aobscanregion(SkillLvUpChanceInject,Skill:get_LevelUpChance+5d,Skill:get_LevelUpChance+ad,12 F3 0F 10 46 64) // should be unique
alloc(newmem,$1000,SkillLvUpChanceInject)
label(code)
label(return)
newmem:
mov [rsi+64],(float)100
code:
movss xmm0,[rsi+64]
jmp return
SkillLvUpChanceInject+01:
jmp newmem
return:
registersymbol(SkillLvUpChanceInject)
[DISABLE]
SkillLvUpChanceInject+01:
db F3 0F 10 46 64
unregistersymbol(SkillLvUpChanceInject)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: Skill:get_LevelUpChance+81
Skill:get_LevelUpChance+5d: 74 0D - je Skill:get_LevelUpChance+6c
Skill:get_LevelUpChance+5f: 66 0F 57 C0 - xorpd xmm0,xmm0
Skill:get_LevelUpChance+63: F2 0F 5A C0 - cvtsd2ss xmm0,xmm0
Skill:get_LevelUpChance+67: E9 97 00 00 00 - jmp Skill:get_LevelUpChance+103
Skill:get_LevelUpChance+6c: F3 0F 10 46 64 - movss xmm0,[rsi+64]
Skill:get_LevelUpChance+71: F3 0F 5A C0 - cvtss2sd xmm0,xmm0
Skill:get_LevelUpChance+75: 66 0F 57 C9 - xorpd xmm1,xmm1
Skill:get_LevelUpChance+79: 66 0F 2F C8 - comisd xmm1,xmm0
Skill:get_LevelUpChance+7d: 7A 14 - jp Skill:get_LevelUpChance+93
Skill:get_LevelUpChance+7f: 77 12 - ja Skill:get_LevelUpChance+93
// ---------- INJECTING HERE ----------
Skill:get_LevelUpChance+81: F3 0F 10 46 64 - movss xmm0,[rsi+64]
// ---------- DONE INJECTING ----------
Skill:get_LevelUpChance+86: F3 0F 5A C0 - cvtss2sd xmm0,xmm0
Skill:get_LevelUpChance+8a: F2 0F 5A C0 - cvtsd2ss xmm0,xmm0
Skill:get_LevelUpChance+8e: E9 70 00 00 00 - jmp Skill:get_LevelUpChance+103
Skill:get_LevelUpChance+93: 66 66 90 - nop 3
Skill:get_LevelUpChance+96: 49 BB E0 F1 C7 3D 78 02 00 00 - mov r11,DifficultyManager:get_Instance
Skill:get_LevelUpChance+a0: 41 FF D3 - call r11
Skill:get_LevelUpChance+a3: 48 8B C8 - mov rcx,rax
Skill:get_LevelUpChance+a6: 83 39 00 - cmp dword ptr [rcx],00
Skill:get_LevelUpChance+a9: 48 8B 40 18 - mov rax,[rax+18]
Skill:get_LevelUpChance+ad: 48 8B C8 - mov rcx,rax
}
</AssemblerScript>
<Hotkeys>
<Hotkey>
<Action>Activate</Action>
<Keys>
<Key>17</Key>
<Key>87</Key>
</Keys>
<ID>0</ID>
</Hotkey>
</Hotkeys>
</CheatEntry>
</CheatEntries>
</CheatTable>