Cheat Engine Forum Index Cheat Engine
The Official Site of Cheat Engine
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 


Devil May Cry 4 Special Edition Cheat Scripts

 
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine Tutorials -> Auto Assembler tutorials
View previous topic :: View next topic  
Author Message
ananth
How do I cheat?
Reputation: 1

Joined: 13 Jul 2013
Posts: 5

PostPosted: Thu Oct 19, 2017 7:21 am    Post subject: Devil May Cry 4 Special Edition Cheat Scripts This post has 1 review(s) Reply with quote

This post is about writing a cheat script for Devil May Cry 4 Special Edition Step by step. I must thank VergilGanesh for his excellently crafted trainer tutorial for the original DMC4. I am considering his method as base as its easy to get things explained in that way. The 2015 special edition features game play as the Lady, Trish and the naturally invincible vergil.

For this game i would like to list down the following cheat scripts:

1. Infinite Health
2. One Hit Kill
3. Infinite Devil Trigger
4. Easy Orbs
5. Easy Proud Souls
6. Infinite Max Act - Nero
7. Infinite Disaster Guage - Dante (Pandora)
8. Infinite Royal Guard - Dante
9. Infinite Concentration Meter - Vergil
10. Infinite Timer

So lets begin,
1. Infinite Health

Following its predecessor this game follows the shared code instruction. so to begin with, each bar of health is stored as a float address. So open cheat engine and the game and select process and Devil may cry 4 special edition. Each bar of health is 1000 float so if you have your health bar fully upgraded that is two full lines then the health with which you start is 20000 float and similarly if you have not upgraded the health meter at all you start with float 6000. So scan for your initial health address as exact value float and then get hit and scan you will end up with 3 results and the first one generally is your health address, to cross check add address and freeze it to ensure it totals up to your health. Right click on this address and find what writes to this address. You should ideally come across this address if you have done things right till now
Code:
movss [edi+30]

View the code in disassembler by selecting the disassembler option and right click on the code to identify "what addressess access this instruction" and then hit a few enemies without killing them. You will find a list being populated in the small pop up with addresses and their health values. in th bottom right of the box, it would specify 4 Bytes change it to float and you must note the player health and enemies health. Select all the addresses and dissect data or ctrl+d

Use control +a to add multiple addresses the more enemies the easier to spot our codes. The offset has to be subtracted from the original code. 30 is the offset so:
player code-30
enemy one code - 30
enemy two code -30 (so on and so forth)
Classify Player in Group 1 and reclassify the enemies in a seperate group and then run the structure to identify the addresses. If you notice carefully,
30 will have the player s current health and the enemies current health. 34 will have the maximum health of the player and the enemies. you can notice various addresses having common values for the enemies and a different one for the player. Note few offsets, close game choose a different set of enemies and you will then follow the same process and identify offset and note carefully, offset E0, will have value 0 for player and 2 for enemies. This is our offset for the script. With the research done lets put it to test and write the code.
Code:
alloc(newmem,2048)
label(returnhere)
label(normalhealth)
label(exit)

newmem:
cmp [edi+E0],00000000   //compare with 0 (as player offset value is 0)
jne normalhealth              //jump if not equal
mov eax,[edi+34]            // mov eax to max health
mov [edi+30],eax            // mov max health to current health
jmp exit

normalhealth:
movss [edi+30],xmm0    // orignial code where enemies will jump to.

exit:
jmp returnhere

"DevilMayCry4SpecialEdition.exe"+22DDE0:
jmp newmem
returnhere:


With the above code in place add to cheat table and you should have your infinite health for all the characters.

2. One Hit Kill

Follow the same steps as above for the infinite health code but there would be a small change in the coding alone.

Code:

alloc(newmem,2048)
label(returnhere)
label(instantenemydeath)
label(exit)

newmem:
cmp [edi+E0],00000000
jne instantenemydeath
mov eax,[edi+34]
mov [edi+30],eax
jmp exit

instantenemydeath:
mov [edi+30],00000000  // instead of xmm0 replace 0 foe death

exit:
jmp returnhere

"DevilMayCry4SpecialEdition.exe"+22DDE0:
jmp newmem
returnhere:


This must grant you invincibility and make your enemies shiver at the fragility of their lives Laughing Laughing Laughing

3. Infinite Devil Trigger

Time to remove the limitation and unleash the devil within.
Each slot of the DT guage amounts to 1000 float. so first scan float with the amount of your DT guage either 3000 min without upgrade or a 10000 max with upgrade. then activate DT to lose some DT and then scan to find 3 addresses and the first address represents the DT guage of the player. freeze and maximise it to check. Unfreeze the address and right click to find what writes to this address and then activate DT and wait a while for two things:
1. The initial burst of DT
2. The DT drain on usage
Now we will ideally find codes this way:
Code:

movss [esi+00002504] // For initial burst
movss [esi+00002504] // For Drain on usage


For the first code which is for initial burst of DT, just nop the address to remove the usage of DT. to test the same, in the writing address box, right click and nop the instruction and activate DT to find out that the DT initial activation doesnt cost anything but after that the guage starts getting consumed. so after you find the address right click to identify which address reduces and which address works for the constant drain.

Code for initial burst:

Code:

alloc(newmem,2048)
label(returnhere)


newmem:
nop
jmp returnhere

"DevilMayCry4SpecialEdition.exe"+4C87A9:
jmp newmem
nop
nop
nop
returnhere:


The above code will nullify the initial burst of DT guage. Now on to the constant reduction. Select the code into disassembler mode and then dissect data and reducde 04 from the address and define data structure and you will notice your current DT guage is shown as part of 04 Offset and Max DT guage is shown as part of 08. Hence we are now set to write the code for stoppage of constant consumption of DT guage.
Code:

alloc(newmem,2048)
label(returnhere)


newmem:
mov eax,[esi+00002508]
mov [esi+00002504],eax
jmp returnhere

"DevilMayCry4SpecialEdition.exe"+4C889E:
jmp newmem
nop
nop
nop
returnhere:


The above code should give you infinite DT guage free from initial burst and constant consumption.

Now on to another aspect of DT guage in Special Edition of the game. When you play as vergil you get your DT guage consumed for usage of Spiral swords. The drain happens even if the above two codes are in place. so i would suggest you first freeze the initial burst and constant consumption code and then do a fresh scan, for the number of devil guage on float basis as above and then use spiral swords and then search for decreased value and then you will find 3 values and the first one generally locks on to the desired address. Freeze it and right click to find what writes to the address and you should find this code:

Code:

movss [esi+00002504] // For usage of DT for spiral swords.


Now that we know the code, we just have to nop it to get ultimate infinite devil trigger.

Code:

alloc(newmem,2048)
label(returnhere)

newmem:
nop

jmp returnhere

"DevilMayCry4SpecialEdition.exe"+4D004B:
jmp newmem
nop
nop
nop
returnhere:


Now you have infinite DT without loss of Initial Burst, Constant Drain and loss on usage of Spiral Swords. Very Happy Very Happy Very Happy

4. Easy Orbs

Go in game and scan for the number of orbs you have with 4bytes. get more orbs by fighting and you will have an increased count, scan for the same and identify the code and right click to find what writes to the address and then gain more orbs and you will find this address.

Code:
add [esi+00000184],edi


Now all you have to do is replace the add with imul to multiply orbs quicker. The code will be:

Code:
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)

newmem:
imul edi,edi,0000000A //Increases orbs by multiplying what you get by 10

originalcode:
add [esi+00000184],edi

exit:
jmp returnhere


If you want to increase them faster you could use 64 (x100) A(x10). now you can get all you want faster than you think. If you want your orbs not to decrease on usage, scan for orbs on purchase and you will still find another code for decreasing orbs.

Code:
add [esi+00000184],edi


just noping this would make sure your orbs doesnt decrease on use. Make sure to find them one by one so that you dont end up doing the opposite Razz Razz

5. Easy Proud Souls

The same method as above to arrive at the code:

Code:
add [esi+00000284],edi


you know the drill now, add goes out and imul replaces it:

Code:
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)

newmem:
imul edi,edi,00000003

originalcode:
add [esi+00000284],edi

exit:
jmp returnhere

"DevilMayCry4SpecialEdition.exe"+1ADBE6:
jmp newmem
nop
returnhere:


6. Infinite Max Act - Nero

The red sword feature makes this character worthwhile to play. He has to charge it up and loses it after an attack, we are gonna make it last forever. fill up 3 bars by charging up and scan for 3 using 4 bytes, then use search for decreased value and then again charge and search for 3 after filling up all 3 and then eureka, you arrive at your address. right click to find out what writes to the address and go to the disassembler and dissect data for the following code:

Code:
mov [ecx+04],eax


when you dissect it reducing 04 from the address, you find offset 04 with your current max act and 08 with your maximum max act. So now we head on to write the code:

Code:
alloc(newmem,2048)
label(returnhere)


newmem:
mov [ecx+08],00000003

jmp returnhere

"DevilMayCry4SpecialEdition.exe"+518932:
jmp newmem
returnhere:


There s our infinite Max Act.

7. Infinite Disaster Guage - Dante (Pandora)

Full pandora bar has a float value of 10000. Now head over as dante use gunslinger and search for unknown initial value and use the pandora to find your address which belongs to the disaster guage. now right click and find what writes to the address.

movss [esi+00017994],xmm1 // For flying using pandora
movss [esi+00017994],xmm1 // For Increasing Pandora Meter

Now we have to nop the decrease on flying code

Code:
alloc(newmem,2048)
label(returnhere)


newmem:
nop

jmp returnhere


Now to the increase code which we are going to move to full meter always The full meter has a float value of 10000:

Code:
alloc(newmem,2048)
label(returnhere)

newmem:
mov [esi+00017994],(float)10000

jmp returnhere

"DevilMayCry4SpecialEdition.exe"+551DC9:
jmp newmem
nop
nop
nop
returnhere:


Now on using the pandora you notice a code to decrease the guage:

Code:
movss [ebx+00017994],xmm0


Now we nop the code to ensure it doesnt decrease on usage.

Code:
alloc(newmem,2048)
label(returnhere)

newmem:
nop

jmp returnhere

"DevilMayCry4SpecialEdition.exe"+50B78B:
jmp newmem
nop
nop
nop
returnhere:


8. Infinite Royal Guard - Dante

Full Royalguard bar has a Float value of 30000.

Similarly there are two codes for Royal guard on scanning with unknown initial value to an increase or decrease, you arrive at the value and find what writes to the address by right clicking and you arrive at these addresses:

Code:
movss [esi+00017530],xmm1 //For increasing RG meter
movss [eax+00017530],xmm0 //For usage of RG meter


Now we need to nop the second one for which the code is as follows:

Code:
alloc(newmem,2048)
label(returnhere)

newmem:
nop

jmp returnhere

"DevilMayCry4SpecialEdition.exe"+548013:
jmp newmem
nop
nop
nop
returnhere:


Now on to getting the maximum RG meter since the beginning. We need to find the maximum value of RG meter which is 30000. The code is as follows:

Code:
alloc(newmem,2048)
label(returnhere)

newmem:
mov [esi+00017530],(float)30000

jmp returnhere

"DevilMayCry4SpecialEdition.exe"+4DCE47:
jmp newmem
nop
nop
nop
returnhere:


This will give you infinite RG meter and usage.

9. Infinite Concentration Meter - Vergil

Now this is one amazing feature in the special edition to motivate players to reprise the role of the cool headed demon offspring of sparda and play as the cold and calm demon vergil. the more composed and timely your attacks the meter gets filled. A fuller meter means a more devastating vergil. When you scan for the initial value as unknown float and find the final address, you will right click to see what writes to this address, you will arrive at the following 3 codes:

Code:
movss [esi+00007B58],xmm0
movss [esi+00007B58],xmm0
movss [esi+00007B58],xmm0


Now all we have to do is, mov all these three codes to the max value of this meter which is 300. So the code has to be written in the same manner for all 3 of the codes.

Code:
alloc(newmem,2048)
label(returnhere)

newmem:
mov [esi+00007B58],(float)300

jmp returnhere

"DevilMayCry4SpecialEdition.exe"+D6F99:


Write the same code for all 3 addresses and you will have this meter always full for vergil and then you can keep "you shall die"ing Very Happy Very Happy Very Happy

10. Infinite Timer

Choose Mission 10 and ride down the elevator and your timer starts counting down. Use float and unknown initial value and dec value to arrive at the final address which is:

Code:
movss [esi+00000384],xmm2


now all we have to do is nop this code and we have all we need. the code is:

Code:
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)

newmem:
nop

originalcode:
//movss [esi+00000384],xmm2

exit:
jmp returnhere

"DevilMayCry4SpecialEdition.exe"+19B7A8:
jmp newmem
nop
nop
nop
returnhere:


Now we have unlimited timer too.

With this i think i have covered the major aspects. Do let me know if this works or if you have trouble getting these to work. If you do want any additional codes let me know. What i have left out is auto max charge for guns and infinite grenade for lady. If you guys want the same do leave a comment i will pen it down. I am no expert but have tried this out. I know am late on the release, but would like to help those who need help. The game s great especially with dante and vergil being on it. Hope you guys find this useful and enjoy. Very Happy Very Happy Very Happy
Back to top
View user's profile Send private message
123iamking
Newbie cheater
Reputation: 0

Joined: 06 Sep 2015
Posts: 12

PostPosted: Thu Apr 19, 2018 2:38 am    Post subject: Is it possible to get health's pointer in Devil May Cry 4 SE Reply with quote

So I can get the health

Quote:
Each bar of health is 1000 float so if you have your health bar fully upgraded that is two full lines then the health with which you start is 20000 float and similarly if you have not upgraded the health meter at all you start with float 6000.


but when I tried to get the health pointer (as Cheat Engine Tutorial 6 taught me), I stuck at searching the pointer: Please check the image attachment, I tried to post the image at imgur but I'm not allowed because I'm new.

so Is it possible to get health's pointer in Devil May Cry 4 SE?



DmC4SeCheatHealth.png
 Description:
 Filesize:  53.41 KB
 Viewed:  21610 Time(s)

DmC4SeCheatHealth.png


Back to top
View user's profile Send private message
123iamking
Newbie cheater
Reputation: 0

Joined: 06 Sep 2015
Posts: 12

PostPosted: Sun May 13, 2018 2:56 am    Post subject: Re: Is it possible to get health's pointer in Devil May Cry Reply with quote

123iamking wrote:

so Is it possible to get health's pointer in Devil May Cry 4 SE?

Yes, it is.
The health pointer is:
Base: 400000+f59f00
offset 1: 1B00
offset 2: 24

The full cheat table code is
Code:
<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="24">
  <CheatEntries>
    <CheatEntry>
      <ID>4</ID>
      <Description>"[getAddressList().getMemoryRecordByDescription('Max Health').Value]"</Description>
      <LastState Value="" RealAddress="00000000"/>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
    <CheatEntry>
      <ID>0</ID>
      <Description Activated="1">"Health"</Description>
      <VariableType>Float</VariableType>
      <Address>400000+f59f00</Address>
      <Offsets>
        <Offset>1B00</Offset>
        <Offset>24</Offset>
      </Offsets>
    </CheatEntry>
    <CheatEntry>
      <ID>1</ID>
      <Description>"Max Health"</Description>
      <VariableType>Float</VariableType>
      <Address>400000+f59f00</Address>
      <Offsets>
        <Offset>1B04</Offset>
        <Offset>24</Offset>
      </Offsets>
    </CheatEntry>
    <CheatEntry>
      <ID>5</ID>
      <Description>"[getAddressList().getMemoryRecordByDescription('Max Devil Trigger').Value]"</Description>
      <LastState Value="" RealAddress="00000000"/>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
    <CheatEntry>
      <ID>2</ID>
      <Description Activated="1">"Devil Trigger"</Description>
      <VariableType>Float</VariableType>
      <Address>400000+f59f00</Address>
      <Offsets>
        <Offset>2504</Offset>
        <Offset>24</Offset>
      </Offsets>
    </CheatEntry>
    <CheatEntry>
      <ID>3</ID>
      <Description>"Max Devil Trigger"</Description>
      <VariableType>Float</VariableType>
      <Address>400000+f59f00</Address>
      <Offsets>
        <Offset>2508</Offset>
        <Offset>24</Offset>
      </Offsets>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
</CheatTable>
[/code]
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine Tutorials -> Auto Assembler tutorials All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group

CE Wiki   IRC (#CEF)   Twitter
Third party websites