A table for super speed and super jump. The basis for super speed is a post about AC: Brotherhood's super speed from user reverser69 (
viewtopic.php?p=174091#p174091), a lot of thanks to him. Modified his code, now, when jumping from a great height, a player like Flash does not fly far-far
Super speed code:
Code: Select all
{ Game : AssassinsCreedIIGame.exe
Version: 1.01 Steam/Uplay
Date : 2021-11-02
Author : hex
}
[ENABLE]
aobscanmodule(pSpeed,AssassinsCreedIIGame.exe,0F 28 86 A0 00 00 00 0F 29 85 ?? ?? ?? ?? 0F 28 05)
alloc(newmem,$1000)
alloc(bSuperSpeed,1)
alloc(pSpeedValue,4)
registersymbol(bSuperSpeed)
registersymbol(pSpeedValue)
bSuperSpeed:
db 1
pSpeedValue:
dd (float)1.75
label(code)
label(return)
newmem:
push ebx
mov ebx,[esi+08]
cmp byte ptr [bSuperSpeed],01
jne code
//Check player entity
cmp byte ptr [ebx+A8],01
jne code
xorps xmm0,xmm0
movss xmm0,[pSpeedValue]
//Check if the player is on the ground
cmp dword ptr [esi+99],01000100
je code
//Check if the player is jumping
cmp dword ptr [esi+99],10000100
je code
//Check if the player is still in the air
cmp dword ptr [esi+99],00000100
je code
//Z-axis
movss xmm2,[esi+A8]
movss [esi+A8],xmm2
//X-axis
movss xmm2,[esi+A0]
mulss xmm2,xmm0
movss [esi+A0],xmm2
//Y-axis
movss xmm2,[esi+A4]
mulss xmm2,xmm0
movss [esi+A4],xmm2
code:
pop ebx
movaps xmm0,[esi+A0]
jmp return
pSpeed:
jmp newmem
nop 2
return:
registersymbol(pSpeed)
[DISABLE]
pSpeed:
db 0F 28 86 A0 00 00 00
unregistersymbol(*)
dealloc(*)
{
// ORIGINAL CODE - INJECTION POINT: AssassinsCreedIIGame.exe+277DD3
AssassinsCreedIIGame.exe+277DAD: 8D 45 D0 - lea eax,[ebp-30]
AssassinsCreedIIGame.exe+277DB0: 50 - push eax
AssassinsCreedIIGame.exe+277DB1: E8 BA 18 68 00 - call AssassinsCreedIIGame.exe+8F9670
AssassinsCreedIIGame.exe+277DB6: 8B 45 D4 - mov eax,[ebp-2C]
AssassinsCreedIIGame.exe+277DB9: 83 C4 0C - add esp,0C
AssassinsCreedIIGame.exe+277DBC: 8B 4D D0 - mov ecx,[ebp-30]
AssassinsCreedIIGame.exe+277DBF: 0F 57 C0 - xorps xmm0,xmm0
AssassinsCreedIIGame.exe+277DC2: 0F 29 85 40 FF FF FF - movaps [ebp-000000C0],xmm0
AssassinsCreedIIGame.exe+277DC9: F3 0F 10 43 10 - movss xmm0,[ebx+10]
AssassinsCreedIIGame.exe+277DCE: F3 0F 11 45 84 - movss [ebp-7C],xmm0
// ---------- INJECTING HERE ----------
AssassinsCreedIIGame.exe+277DD3: 0F 28 86 A0 00 00 00 - movaps xmm0,[esi+000000A0]
// ---------- DONE INJECTING ----------
AssassinsCreedIIGame.exe+277DDA: 0F 29 85 50 FF FF FF - movaps [ebp-000000B0],xmm0
AssassinsCreedIIGame.exe+277DE1: 0F 28 05 D0 48 21 02 - movaps xmm0,[AssassinsCreedIIGame.exe+1E148D0]
AssassinsCreedIIGame.exe+277DE8: 0F 29 85 70 FF FF FF - movaps [ebp-00000090],xmm0
AssassinsCreedIIGame.exe+277DEF: F3 0F 10 05 40 BA CB 01 - movss xmm0,[AssassinsCreedIIGame.exe+18BBA40]
AssassinsCreedIIGame.exe+277DF7: 89 45 8C - mov [ebp-74],eax
AssassinsCreedIIGame.exe+277DFA: 83 C0 04 - add eax,04
AssassinsCreedIIGame.exe+277DFD: 0F C6 C0 00 - shufps xmm0,xmm0,00
AssassinsCreedIIGame.exe+277E01: 89 45 EC - mov [ebp-14],eax
AssassinsCreedIIGame.exe+277E04: 33 C0 - xor eax,eax
AssassinsCreedIIGame.exe+277E06: 0F 29 85 60 FF FF FF - movaps [ebp-000000A0],xmm0
}
Super jump code:
Code: Select all
{ Game : AssassinsCreedIIGame.exe
Version: 1.01 Steam/Uplay
Date : 2021-11-02
Author : hex
}
[ENABLE]
aobscanmodule(pJump,AssassinsCreedIIGame.exe,F3 0F 10 25 ?? ?? ?? ?? F3 0F 5A C8 66 0F 2F 0D ?? ?? ?? ?? 72 05)
alloc(newmem,$100,pJump)
alloc(bSuperJump,1)
alloc(pJumpValue,4)
registersymbol(bSuperJump)
registersymbol(pJumpValue)
label(code)
label(lJump)
label(return)
label(origCode)
registersymbol(origCode)
bSuperJump:
db 1
pJumpValue:
dd (float)7.00
newmem:
cmp byte ptr [bSuperJump],01
jne code
movss xmm4,[pJumpValue]
jmp lJump
code:
readmem(pJump,8)
lJump:
jmp return
origCode:
readmem(pJump,8)
pJump:
jmp newmem
nop 3
return:
registersymbol(pJump)
[DISABLE]
pJump:
readmem(origCode,8)
unregistersymbol(*)
dealloc(*)
{
// ORIGINAL CODE - INJECTION POINT: AssassinsCreedIIGame.exe+F052BD
AssassinsCreedIIGame.exe+F05298: F2 0F 5C CB - subsd xmm1,xmm3
AssassinsCreedIIGame.exe+F0529C: F3 0F 5A 5D A8 - cvtss2sd xmm3,[ebp-58]
AssassinsCreedIIGame.exe+F052A1: F2 0F 59 CB - mulsd xmm1,xmm3
AssassinsCreedIIGame.exe+F052A5: 0F 57 DB - xorps xmm3,xmm3
AssassinsCreedIIGame.exe+F052A8: F2 0F 5E C1 - divsd xmm0,xmm1
AssassinsCreedIIGame.exe+F052AC: F2 0F 5A C0 - cvtsd2ss xmm0,xmm0
AssassinsCreedIIGame.exe+F052B0: F3 0F 5A C8 - cvtss2sd xmm1,xmm0
AssassinsCreedIIGame.exe+F052B4: 66 0F 2F D9 - comisd xmm3,xmm1
AssassinsCreedIIGame.exe+F052B8: 72 03 - jb AssassinsCreedIIGame.exe+F052BD
AssassinsCreedIIGame.exe+F052BA: 0F 28 C6 - movaps xmm0,xmm6
// ---------- INJECTING HERE ----------
AssassinsCreedIIGame.exe+F052BD: F3 0F 10 25 EC 5A CA 01 - movss xmm4,[AssassinsCreedIIGame.exe+18A5AEC]
// ---------- DONE INJECTING ----------
AssassinsCreedIIGame.exe+F052C5: F3 0F 5A C8 - cvtss2sd xmm1,xmm0
AssassinsCreedIIGame.exe+F052C9: 66 0F 2F 0D 28 77 CA 01 - comisd xmm1,[AssassinsCreedIIGame.exe+18A7728]
AssassinsCreedIIGame.exe+F052D1: 72 05 - jb AssassinsCreedIIGame.exe+F052D8
AssassinsCreedIIGame.exe+F052D3: 0F 28 DC - movaps xmm3,xmm4
AssassinsCreedIIGame.exe+F052D6: EB 03 - jmp AssassinsCreedIIGame.exe+F052DB
AssassinsCreedIIGame.exe+F052D8: 0F 28 D8 - movaps xmm3,xmm0
AssassinsCreedIIGame.exe+F052DB: F3 0F 10 45 F0 - movss xmm0,[ebp-10]
AssassinsCreedIIGame.exe+F052E0: F3 0F 10 4D CC - movss xmm1,[ebp-34]
AssassinsCreedIIGame.exe+F052E5: 0F 5A F0 - cvtps2pd xmm6,xmm0
AssassinsCreedIIGame.exe+F052E8: 0F 5A F9 - cvtps2pd xmm7,xmm1
}
Super jump note: this function works
not only for Ezio, but for all NPCs, if anyone succeeds in "separating" the player from the rest of the NPCs, it will be just great. Also, sometimes the jump may not work correctly if you are jumping off a ledge.
I also hope that someone will be able to modify code for a super jump and make it only better, so that the jump works like a super jump in AC III or AC: Black Flag