Experience beyond 2 screens in 1.13

This forum is for discussions on how to edit what can not be edited through the txt files, needless to say this isn't about battle net hacking.

Moderators: Nefarius, Havvoric

Post Reply
FearedBliss
Posts: 82
Joined: Sat Oct 16, 2010 4:29 pm
United States of America

Experience beyond 2 screens in 1.13

Post by FearedBliss » Thu Jul 07, 2011 7:57 am

Hello everyone,

I've been coming to these forums for years but I never actually posted anything, just learned. Anyways, I modded before about 4 years ago, but now is the time that I finally decided to dig deeper into code editing (I'm almost 20 now and starting my 3rd year of college, pursuing my BS in Computer Science.. since my brain probably wasn't as developed as it is now, I kinda didn't really understand the concepts of things as deep as I do now).

I completed most of the reading of Sir_General/Myhrginoc Code Editing tutorial and I did all the examples so I can get a deeper hands on understanding of using the environments.

I've also searched for the topics on Google and on FrozenKeep and found about 3 posts talking about it.

1. viewtopic.php?f=5&t=38907&hilit=experie ... +2+screens

This was the post with the most information but I fail to find anything in the D2Game.dll, D2Client.dll, and D2Common.dll.

2. viewtopic.php?f=8&t=22757&hilit=2+screen+exp+penalty

Since I was following the tutorial and the links above using 1.13, I couldn't use the direct addresses they had, so I relied on the hex values pertaining to the instructions and went around the code using context clues until I eventually landed into the same code, but with a different address.

In the first link, someone asked Nefarius how easy it was to add this code, and Nefarius responded with: "Just s single NOP."

I also messaged Nefarius about it, but I'm also posting this here so I can open up the discussion. I'm definitely interested in this, and maybe other people are as well.

Anyways, my mod is almost complete, It's a simple mod for the game that I made (mostly soft-code changes since thats were most of my requirements were) to play it the way I wanted to.

The last 3 things that I would like to add are:

1. Experience beyond 2 screens (1.09 and before I believe)
2. 1.09 static field uncapped (This is not required and I know that it can be OP/Abused.
3. Evened out Experience.txt (I've used Nefarius exp generator, and another one in the file center, but they don't work right for w/e reason. They do generate the values but at level 10, it's like 200k experience, as oppose to normal d2 where it's 72k)

Thanks for the help everyone.

lolet
Posts: 95
Joined: Sat Sep 04, 2010 8:43 pm

Re: Experience beyond 2 screens in 1.13

Post by lolet » Thu Jul 07, 2011 2:42 pm

look carefully at code posts in 2nd link and you'll see :

Code: Select all

6FCC32FE   . 81FA 00190000  CMP EDX,1900 =6400=80²
6FCC3304   . 77 52          JA SHORT D2Game.6FCC3358 
search for this constant in olly/ida and you'll find proper function for sure. 0x1900 is your exp range. Nop both lines to remove check

FearedBliss
Posts: 82
Joined: Sat Oct 16, 2010 4:29 pm
United States of America

Re: Experience beyond 2 screens in 1.13

Post by FearedBliss » Thu Jul 07, 2011 6:33 pm

That's what I did. I searched for 81FA 00190000

81FA (All CMP EDX instructions)

in D2Game.dll, D2Client.dll, and D2Common.dll and I couldn't find anything matching that. Maybe Blizzard changed the range, formula, or maybe I'm just doing it wrong, most likely.

User avatar
Mnw1995
Junior Member
Paladin
Posts: 100
Joined: Sat Apr 02, 2011 6:28 pm

Re: Experience beyond 2 screens in 1.13

Post by Mnw1995 » Thu Jul 07, 2011 6:51 pm

try to change 77 53 to 90 90 at HEX offset DAFCF in d2game.dll

FearedBliss
Posts: 82
Joined: Sat Oct 16, 2010 4:29 pm
United States of America

Re: Experience beyond 2 screens in 1.13

Post by FearedBliss » Thu Jul 07, 2011 8:45 pm

Thanks !! No wonder I couldn't find it, it wasn't EDX anymore, it was EAX. I'm going to test it out later when I get home today.

lolet
Posts: 95
Joined: Sat Sep 04, 2010 8:43 pm

Re: Experience beyond 2 screens in 1.13

Post by lolet » Fri Jul 08, 2011 1:23 am

You were searching for in wrong way and too strictly. Just for your info, you should search for constant -> 0x1900 not for whole command or type "cmp r32, 0x1900" in command search function ;)

FearedBliss
Posts: 82
Joined: Sat Oct 16, 2010 4:29 pm
United States of America

Re: Experience beyond 2 screens in 1.13

Post by FearedBliss » Fri Jul 08, 2011 3:00 am

Thanks lolet and Mnw1995. I tried out the changes and it worked perfectly. Just what I've been looking for a very long time, also thanks for the advice, I definitely was looking for it too strictly. I'm assuming the "r32" is a wildcard for any 32 bit register?

EDIT: Posting offsets just in case anyone else wants them in the future for 1.13c.

Code: Select all

D2GameBase @ 0x7441000

0751AFCA   . 3D 00190000    CMP EAX,1900                  <--- NOP
0751AFCF   . 77 53          JA SHORT D2Game.0751B024      <--- NOP

Offset: D9FCA

User avatar
devurandom
Forum Regular
Angel
Posts: 897
Joined: Sat Mar 07, 2015 9:07 pm
United States of America

Re: Experience beyond 2 screens in 1.13

Post by devurandom » Mon Dec 16, 2019 10:46 pm

reference:
http://d2mods.info/forum/viewtopic.php?f=8&t=22757
http://d2mods.info/forum/viewtopic.php?f=8&t=58283


[1.13d] Experience beyond 2 screens

Code: Select all

[1.13d] D2Game.0x87EFF

Code section

6FCA7EF8      03C2          ADD EAX,EDX
6FCA7EFA      3D 00190000   CMP EAX,1900
6FCA7EFF      77 53         JA SHORT 6FCA7F54
6FCA7F01      8B6C24 10     MOV EBP,DWORD PTR SS:[ESP+10]

change


6FCA7EFF      77 53         JA SHORT 6FCA7F54

to

6FCA7EFF      90            NOP
6FCA7F00      90            NOP
Assembly Reference | 1.13d Code Edits | UVLoD | BaseMod Plugin

Fiat paper money is the most elaborate and well devised form of slavery the world has ever seen..

User avatar
eleriaqueen
Posts: 57
Joined: Mon Dec 16, 2019 8:49 am
France

Re: Experience beyond 2 screens in 1.13

Post by eleriaqueen » Tue Dec 17, 2019 10:13 pm

Hi, I NOP-ed both instructions but am unsure if it is safe :

Code: Select all

cmp eax,1900
ja d2game.2C37F54
I tested the code edit, there isn't any apparent issue but you (devurandom) chose to only NOP the jump so I'm wondering ...

User avatar
devurandom
Forum Regular
Angel
Posts: 897
Joined: Sat Mar 07, 2015 9:07 pm
United States of America

Re: Experience beyond 2 screens in 1.13

Post by devurandom » Wed Dec 18, 2019 1:06 am

Its old notes for ASM I ported from another reference. The way you did it is just fine.
The way I do it now is with a one byte patch.

Code: Select all

6FCA7EFF      77 53         JA SHORT 6FCA7F54

to

6FCA7EFF      77 00         JA SHORT 6FCA7F01
Assembly Reference | 1.13d Code Edits | UVLoD | BaseMod Plugin

Fiat paper money is the most elaborate and well devised form of slavery the world has ever seen..

User avatar
marcelo_20xx
Posts: 35
Joined: Fri Aug 25, 2006 2:58 pm

Re: Experience beyond 2 screens in 1.13

Post by marcelo_20xx » Wed Jun 15, 2022 7:40 am

Can someone post the code for LoD version 1.09d, I searched for the constant 0x1900 or the CMP EAX/CMP EDX and nothing, thanks in advance

Post Reply

Return to “Code Editing”