12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- [enable]
- alloc(newmem,2048)
- label(returnhere)
- label(in_air)
- label(exit)
- //Vergil currently does not have a input combination:
- //Lock-ON + Back + Jump
- //while he is in air in his human form
- newmem: //still going to do this
- //currently this will be called every frame
- //currently esi is address of player character
- test byte ptr [esi+00001A64],01
- pushfd //keep flags for the conditional jump on returning
- je in_air
-
- exit:
- popfd //restore flags
- jmp returnhere
-
- in_air:
- //eax, ecx do not need to be pushed/popped
- //now for preliminary checks
- //these are done also on Trick Down (air)
- cmp dword ptr [esi+3924], 02
- jne exit
- cmp byte ptr [esi+3928], 01
- jne exit
- test byte ptr [esi+392c], 10
- je exit
- movq xmm0, [esi+3930] //prepare registers for function call
- mov ecx, [esi+3940]
- sub esp, 14 //make room on the stack
- mov eax, esp
- movq [eax], xmm0
- movq xmm0, [esi+3938]
- movq [eax+8], xmm0
- mov [eax+10], ecx
- call DevilMayCry4SpecialEdition.exe+4CCD40 //listen lock-on input
- //cmp [esi+1bfc], C //input for "back"
- //jne exit
- //mov eax, [esi] //get starting address for player character methods
- //mov eax, [eax+234]
- //push 2a //push animation i.d for trick down
- //call eax
- //don't add esp even though it's reasonable
- jmp exit
-
- "DevilMayCry4SpecialEdition.exe"+D2C77:
- jmp newmem
- nop
- nop
- returnhere:
-
- [disable]
- dealloc(newmem)
- "DevilMayCry4SpecialEdition.exe"+D2C77:
- test byte ptr [esi+00001A64],01
-
|