Page 1 of 1

Dead Rising EXP de-multiplier

Posted: Sat Feb 12, 2022 8:10 pm
by lukasthefemboy
Recently, I've been trying to create a de-multiplier script for Dead Rising, but I just can't get it to work

I've tried tutorials, and I've also gotten help from a guy from Reddit, but it hasn't been working

I made a video where I go into further detail:

Any help would be appreciated

Re: Dead Rising EXP de-multiplier

Posted: Sat Feb 12, 2022 9:08 pm
by aSwedishMagyar
I see a pretty big problem which is you're doing an integer multiply with a float. You need to use the xmm registers to do float multiplication. Example below:


cvtsi2ss xmm0,ecx - convert integer exp value to single precision float
mulss xmm0,[multiplier] - multiply exp value by your multiplier
cvtss2si ecx,xmm0 - reconvert the float exp value back to an integer

Now that is taken care of, you need to determine how it is doing the addition. At the moment it is just moving into another address so you might have to inject a bit earlier when it hasn't added the total XP to it.

So I downloaded it to see what's going on:

Image

See the: add edx,edi? The edi contains your added XP and edx contains your previous total (mov edx,[rbx+50] tells you that). That is where you should be modifying, otherwise you are just changing the total XP after the addition.

Re: Dead Rising EXP de-multiplier

Posted: Sat Feb 12, 2022 9:43 pm
by lukasthefemboy
Can you please tell me how to write out the script, cause I'm mega amateurish when it comes to CE? QAQ

Alternatively, if you hop in a Discord call with me, and help me write out a script that works correctly, I'll strait up gift you a 20 Euro Steam card next month, I swear on my afterlife

Re: Dead Rising EXP de-multiplier

Posted: Sat Feb 12, 2022 10:00 pm
by lukasthefemboy
aSwedishMagyar wrote:
Sat Feb 12, 2022 9:08 pm
I see a pretty big problem which is you're doing an integer multiply with a float. You need to use the xmm registers to do float multiplication. Example below:


cvtsi2ss xmm0,ecx - convert integer exp value to single precision float
mulss xmm0,[multiplier] - multiply exp value by your multiplier
cvtss2si ecx,xmm0 - reconvert the float exp value back to an integer

Now that is taken care of, you need to determine how it is doing the addition. At the moment it is just moving into another address so you might have to inject a bit earlier when it hasn't added the total XP to it.

So I downloaded it to see what's going on:

Image

See the: add edx,edi? The edi contains your added XP and edx contains your previous total (mov edx,[rbx+50] tells you that). That is where you should be modifying, otherwise you are just changing the total XP after the addition.
Okay, thank you very much! I got a DM from someone else, who's willing to help me in a Discord call, so I'll try to use this with his help to fix up the script <3