Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

All addresses for v83 resolution change

Junior Spellweaver
Joined
Mar 16, 2013
Messages
167
Reaction score
19
"HD" clients went very popular these days and everyone wants to do it. Sadly, everyone is stealing maplems's client and using it on theirs servers like they did it by themselves.

Some say maplems haven't done a good security protection against copies, but I don't think it even has to be protected, since we couldn't get so far without the community work.

This being said, I'm here to give back to the community all addresses I have found when it comes to resolution change.With this addresses, you can create a client with whatever screen resolution you want.

All credits for this release goes to bms2 (my server) for releasing it, and OSM, because theirs v62 was the base I used to find all addresses for v83 and maplems for 2 or 3 important addresses they gave to me although they did not gave me credits for having shared all my addresses with them :(
PHP:
0x009F7B1D + 1 = screenHeight

0x009F7B23 + 1 = screenWidth

0x009E2E85 + 1 = -(screenHeight / 2)

0x009E2E8B + 1 = -(screenWidth / 2)

0x0059A15D + 2 = -(screenHeight / 2)

0x0059A169 + 2 = -(screenWidth / 2)

0x009F7078 + 1 = screenHeight

0x009F707D + 1 = screenWidth

0x005F481E + 1 = -(screenHeight / 2)

0x005F4824 + 1 = -(screenWidth / 2)

0x005F464D + 1 = screenWidth / 2

0x00BE2738 = (screenWidth / 2)

0x00BE273C = 128

0x00BE2DF0 = (screenWidth / 2)

0x00BE2DF4 = (screenHeight / 2)

0x009A3E72 + 1 = screenWidth

0x009A3E7F + 1 = screenHeight

0x008D3F73 + 1 = screenHeight - 93

0x008D3FE5 + 1 = screenHeight - 93

0x008D1FF4 + 1 = screenHeight - 22

0x008D1FF9 + 1 = screenWidth

0x008D1D50 + 1 = screenHeight - 22

0x008D1D55 + 1 = screenWidth

0x008D247B + 1 = screenHeight - 33

0x008D8353 + 1 = screenHeight - 46

0x008D83D1 + 1 = screenHeight - 55

0x008D8470 + 1 = screenHeight - 40

0x008D8BFE + 1 = screenHeight - 19

0x008D937E + 1 = screenHeight - 19

0x008D9AC9 + 1 = screenHeight - 19

0x008DA11C + 1 = screenHeight - 19

0x008DA3D4 + 1 = screenHeight - 56

0x008DA463 + 1 = screenHeight - 51

0x008DA4F2 + 1 = screenHeight - 51

0x008DA61B + 1 = screenHeight - 56

0x008DA90F + 1 = screenHeight - 51

0x008DA9C6 + 1 = screenHeight - 51

0x008DAC3F + 1 = screenHeight - 51

0x008DACF1 + 1 = screenHeight - 51

0x008DAF64 + 1 = screenHeight - 51

0x008DE8E5 + 2 = -(screenWidth - 150)

0x008DE8EE + 2 = -(screenHeight - 102)

0x008DEB93 + 1 = screenHeight - 20

0x008DEE2F + 1 = screenHeight - 20

0x008CFD4B + 1 = screenHeight - 22

0x008CFD50 + 1 = screenWidth

0x008DF7F8 + 1 = screenWidth - 150

0x008DFA6F + 1 = screenHeight - 81

0x008DFB01 + 1 = screenHeight - 81

0x008DFBA5 + 1 = screenHeight - 80

0x008DFC10 + 1 = screenHeight - 85

0x007E15BE + 1 = screenWidth

0x007E16B9 + 1 = screenHeight

0x007E16BE + 1 = screenWidth

0x007E1E07 + 2 = screenWidth

0x007E19CA + 2 = screenWidth

0x008D4AFB + 1 = screenHeight - 91

0x008D4C1F + 1 = screenHeight - 90

0x008D4CDD + 1 = screenHeight - 20

0x008D4BBC + 6 = screenHeight - 114

0x008D4C47 + 1 = screenHeight - 87

0x008D628B + 1 = screenHeight - 91

0x008D6300 + 1 = screenHeight - 90

0x008D4B6D + 1 = screenHeight - 90

0x008D276A + 1 = screenHeight - 19

0x008D7778 + 3 = screenHeight - 42

0x008D7785 + 3 = screenHeight - 26

0x008D783A + 3 = screenHeight - 41

0x008D7847 + 3 = screenHeight - 26

0x008D82F5 + 1 = screenHeight - 22

0x008D82FA + 1 = screenWidth

0x008D2FAE + 1 = screenHeight - 57

0x008D3056 + 1 = screenHeight - 57

0x008D311F + 1 = screenHeight - 57

0x00849E39 + 1 = screenHeight - 177

0x008D31E7 + 1 = screenHeight - 57

0x0084A5B7 + 1 = screenHeight - 281

0x00522C73 + 1 = screenHeight - 92

0x00522E65 + 1 = screenHeight - 92

0x0052307E + 1 = screenHeight - 92

0x00523359 + 1 = screenHeight - 92

0x00523154 + 1 = screenHeight - 102

0x00523595 + 1 = screenHeight - 92

0x0052378B + 1 = screenHeight - 92

0x0052397D + 1 = screenHeight - 92

0x00523BB1 + 1 = screenHeight - 92

0x00523DA5 + 1 = screenHeight - 92

0x00523FA3 + 1 = screenHeight - 92

0x005243DB + 1 = screenHeight - 92

0x008D326E + 1 = screenHeight - 85

0x008D32F5 + 1 = screenHeight - 85

0x008D337C + 1 = screenHeight - 85

0x008D3403 + 1 = screenHeight - 85

0x008D348A + 1 = screenHeight - 85

0x008D3586 + 1 = screenHeight - 85

0x008D3696 + 1 = screenHeight - 85

0x008D4058 + 1 = screenHeight - 85

0x008DF903 + 1 = screenHeight - 85

0x008D40CE + 1 = screenHeight - 81

0x008DFFCF + 1 = screenHeight - 85

0x008F32CC + 1 = screenWidth - 1

0x008F32DF + 1 = screenHeight - 1

0x009DFCF0 + 3 = -screenWidth

0x009DFD5C + 1 = screenWidth

0x009DFE68 + 3 = -screenHeight

0x009DFED2 + 1 = screenHeight

0x008D1790 + 2 = 1u

0x008D1793 + 1 = screenHeight - 78

0x008D179A + 1 = screenWidth - 150

0x008DF782 + 2 = screenHeight + 2

0x00641F61 + 1 = (screenWidth / 2)

0x00641FC8 + 1 = (screenHeight / 2)

0x007B2C97 + 2 = ((screenHeight - 600) / 2) + 277

0x007B2CB5 + 3 = ((screenWidth - 800) / 2) + 397

0x007B2DA0 + 2 = ((screenHeight - 600) / 2) + 277

0x007B2DBE + 3 = ((screenWidth - 800) / 2) + 397

0x007B2EA0 + 3 = -(screenWidth - 3)

0x007B3087 + 3 = -(screenWidth - 3)

0x005364AA + 2 = (screenWidth / 2) - 128

0x0089B636 + 2 = 1u

0x0089B639 + 1 = screenHeight - 166

0x0089B6F7 + 1 = screenWidth - 293

0x0045B97E + 1 = screenWidth

0x0045B337 + 1 = screenWidth

0x0045B417 + 1 = screenWidth - 225

0x0045B898 + 1 = screenWidth - 225

0x0060F79B + 1 = (screenHeight / 2) - 150

0x0060F7A4 + 1 = (screenHeight / 2) - 130

0x0060F7AC + 1 = (screenWidth / 2) - 201

0x0060F7B5 + 1 = (screenWidth / 2) - 181

0x004EDB78 + 1 = screenHeight

0x004EDB89 + 1 = screenWidth

0x0046948D + 1 = screenHeight - 188

0x004694CA + 1 = screenHeight - 55

0x0046B85C + 1 = screenHeight

0x0046B86A + 1 = screenWidth

0x004CC2B0 + 1 = screenWidth

0x004D59B2 + 1 = screenWidth

0x0058C8A6 + 1 = screenWidth

0x004EDABF + 1 = screenHeight

0x004EDAD8 + 1 = screenWidth

0x005362B2 + 1 = (screenWidth / 2) - 129

0x00592A06 + 1 = 1u

0x00592A08 + 1 = (screenWidth / 2) - 125

0x0059A898 + 1 = screenWidth

0x0059A8B1 + 1 = screenHeight

0x0059AC09 + 1 = screenWidth

0x0059AC22 + 1 = screenHeight

0x0060F7AC + 1 = (screenWidth / 2) - 201

0x0060F7B5 + 1 = (screenWidth / 2) - 181

0x00613093 + 1 = (screenHeight / 2) - 200

0x00613099 + 1 = (screenWidth / 2) - 45

0x0061DAFF + 1 = (screenHeight / 2) - 150

0x0061DB08 + 1 = (screenHeight / 2) - 130

0x0061DB10 + 1 = (screenWidth / 2) - 201

0x0061DB19 + 1 = (screenWidth / 2) - 181

0x0062121E + 1 = 1u

0x00621226 + 1 = (screenWidth / 2) - 216

0x0062F104 + 1 = screenHeight

0x0062F109 + 1 = screenWidth

0x00641038 + 2 = screenHeight

0x0064103F + 2 = screenWidth

0x00641048 + 1 = -(screenHeight / 2)

0x00641050 + 1 = -(screenWidth / 2)

0x00744E2A + 1 = 3 * screenWidth * screenHeight

0x00744E43 + 1 = screenWidth * screenHeight

0x00744EB4 + 1 = screenWidth

0x00744EB9 + 1 = screenHeight

0x007C2531 + 1 = screenHeight - 80

0x007E1CB7 + 1 = screenWidth

0x00897BB4 + 1 = (screenWidth / 2) - 143

0x0089B636 + 2 = 1u

0x00A5FC2B = 5u

0x0089B796 + 2 = screenHeight - 166

0x0089BA03 + 1 = screenHeight - 96

0x008C069F + 1 = (screenHeight / 2) - 14

0x008C06A4 + 1 = (screenWidth / 2) - 158

0x008DE82B + 1 = screenHeight - 93

0x008DE896 + 1 = screenWidth

0x008EBC3C + 1 = screenWidth

0x008EBC58 + 1 = screenHeight

0x00991854 + 1 = screenHeight

0x0099185F + 1 = (screenWidth / 2) - 134

0x00991867 + 1 = (screenWidth / 2) - 133

0x00992BA7 + 1 = screenWidth / 2

0x00992BAC + 1 = screenHeight / 2

0x009966B5 + 1 = screenHeight

0x009966CA + 2 = screenWidth

0x009966D2 + 1 = screenWidth - 100

0x00A24D0B + 1 = (screenWidth / 2) - 129

0x009F6E99 + 1 = screenHeight

0x009F6EA0 + 1 = screenWidth

0x00744DA6 + 1 = 4 * screenWidth * screenHeight
 
Last edited:
Newbie Spellweaver
Joined
Jul 30, 2015
Messages
73
Reaction score
9
How generous are you, Mr. Gosminha... rsrs

Dnd
 
Newbie Spellweaver
Joined
Jan 17, 2015
Messages
8
Reaction score
0
Would anyone have the v62 addresses as well? What are the offsets that you've provided (the +1, +2, etc.)

Thank you!
 
Junior Spellweaver
Joined
Mar 16, 2013
Messages
167
Reaction score
19
If you will apply the changes directly from olly, you can ignore those offsets. About the v62, I don't have the addresses, but you can easily find it by inspecting OMS's client
 
Newbie Spellweaver
Joined
Jan 31, 2019
Messages
50
Reaction score
18
Would anyone have the v62 addresses as well? What are the offsets that you've provided (the +1, +2, etc.)

Thank you!

The address given is the address for the instruction itself. For example "0x9F707D + 1 = width," is for the instruction "push 0x320". 9F707D is where the instruction starts, but the +1 tells you which address the "0x320" is in. It's different for different instructions which explains the variation (+1/+2/etc). So if you use a program like ollydbg to manually edit the values in, you'd put your new width value in 0x9F707E, and leave the byte at 0x9F707D untouched.
 
Newbie Spellweaver
Joined
Feb 20, 2017
Messages
14
Reaction score
0
The address given is the address for the instruction itself. For example "0x9F707D + 1 = width," is for the instruction "push 0x320". 9F707D is where the instruction starts, but the +1 tells you which address the "0x320" is in. It's different for different instructions which explains the variation (+1/+2/etc). So if you use a program like ollydbg to manually edit the values in, you'd put your new width value in 0x9F707E, and leave the byte at 0x9F707D untouched.

How can I edit the values manually in ollydbg? I found the addresses, but being a noob at this kind of stuff, I can't seem to figure out how I would edit it from 800 to 1280 for example?

I can see that the instruction(?) at the address 0x9F707E is add byte ptr ds:[eax], al and that doesn't make any sense to me at all, and I'm trying to learn
 
Skilled Illusionist
Joined
Apr 26, 2015
Messages
302
Reaction score
77
Please guys.. don't do it directly in your client using olly, just write a dll and inject in the client.
 
Experienced Elementalist
Joined
Sep 27, 2016
Messages
217
Reaction score
68
How can I edit the values manually in ollydbg? I found the addresses, but being a noob at this kind of stuff, I can't seem to figure out how I would edit it from 800 to 1280 for example?

I can see that the instruction(?) at the address 0x9F707E is add byte ptr ds:[eax], al and that doesn't make any sense to me at all, and I'm trying to learn

Think of it like this. 009F707D is the base address, but since the first byte is left untouched, you do +1, which is the equivalent to 009F707E (which is where the edit is taking place). Then use any hex converter on Google to get your new bytes. Typing in 800 would give you 320, so if you put in 1280, you'd get 500. A push 320 (bytes 20 03) to a push 500 (bytes 00 05). I hope you understand, seeing as I don't understand anything yet I was still able to accomplish it.
 
Custom Title Activated
Loyal Member
Joined
Jan 18, 2010
Messages
3,109
Reaction score
1,139
Some say maplems haven't done a good security protection against copies, but I don't think it even has to be protected, since we couldn't get so far without the community work.

Pretty sure that was the entire point. As long as HD clients weren't released to the community, that was a very key feature of the top servers out there. Now that it's public, anybody with a downloaded repack and client off this forum having no idea what they're doing could compete with the top servers.

Also, I feel like I should point this out here.. If MapleMS could have protected this, they probably would have. Unfortunately, you can't protect a v83 client for obvious reasons (one of which it still contains the Themida VM table.. duh!). The same thing goes for some other version clients. Unless you're using a custom DLL and know how to use Themida SDK, then anyone can (and will) rip off your edits.

Anyways, thanks for the public contribution. This is still missing a handful of addys, but it's a great start for the community to work off of. Also love that you thought of doing the calculations, so you must have been using a DLL for this -- very smart.
 
Newbie Spellweaver
Joined
Sep 15, 2013
Messages
39
Reaction score
1
Pretty sure that was the entire point. As long as HD clients weren't released to the community, that was a very key feature of the top servers out there. Now that it's public, anybody with a downloaded repack and client off this forum having no idea what they're doing could compete with the top servers.

Also, I feel like I should point this out here.. If MapleMS could have protected this, they probably would have. Unfortunately, you can't protect a v83 client for obvious reasons (one of which it still contains the Themida VM table.. duh!). The same thing goes for some other version clients. Unless you're using a custom DLL and know how to use Themida SDK, then anyone can (and will) rip off your edits.

Anyways, thanks for the public contribution. This is still missing a handful of addys, but it's a great start for the community to work off of. Also love that you thought of doing the calculations, so you must have been using a DLL for this -- very smart.

What kind of addys that is missing ? I thought is was all LOL.
 
Newbie Spellweaver
Joined
May 24, 2019
Messages
26
Reaction score
2
I meke I did everything and changed all addresses except these :
0x008D1790 + 2 = 1u
0x0089B636 + 2 = 1u
0x00592A06 + 1 = 1u
0x0062121E + 1 = 1u
0x0089B636 + 2 = 1u
0x00A5FC2B = 5u
What would "U" be?
My client stayed like this:



the window was the same size. Attributes have moved but window has not increased
 
Last edited:
Custom Title Activated
Loyal Member
Joined
Jan 18, 2010
Messages
3,109
Reaction score
1,139
What kind of addys that is missing ? I thought is was all LOL.

Why not start with the two most important ones? Unless you have figured out how to backport adjustable resolutions from DX9, you need to initialize the Gr2D interface to your new resolution so that the backbuffer is properly updated.
Code:
// CWvsApp::InitializeGr2D
0x009F7B1D + 1 = screenHeight
0x009F7B23 + 1 = screenWidth

I still wish to keep these things private, so I will only note one last thing -- this is missing a memory allocation fix for generating application screenshots. This one I noticed was also missing in MapleMS as well (probably others too), so when you try to generate a screenshot it does nothing.
Code:
// CScreenShot::SaveFullScreenToJpg
0x00744DA6 + 1 = 4 * screenWidth * screenHeight

I meke I did everything and changed all addresses except these :
0x008D1790 + 2 = 1u
0x0089B636 + 2 = 1u
0x00592A06 + 1 = 1u
0x0062121E + 1 = 1u
0x0089B636 + 2 = 1u
0x00A5FC2B = 5u
What would "U" be?
My client stayed like this:



the window was the same size. Attributes have moved but window has not increased

Update the two addresses I posted above to your new screen dimensions and your client will then open in those dimensions. Feel free to also use the additional address to fix a screenshot saving memory allocation problem.
 
Newbie Spellweaver
Joined
May 24, 2019
Messages
26
Reaction score
2
Why not start with the two most important ones? Unless you have figured out how to backport adjustable resolutions from DX9, you need to initialize the Gr2D interface to your new resolution so that the backbuffer is properly updated.
Code:
// CWvsApp::InitializeGr2D
0x009F7B1D + 1 = screenHeight
0x009F7B23 + 1 = screenWidth

I still wish to keep these things private, so I will only note one last thing -- this is missing a memory allocation fix for generating application screenshots. This one I noticed was also missing in MapleMS as well (probably others too), so when you try to generate a screenshot it does nothing.
Code:
// CScreenShot::SaveFullScreenToJpg
0x00744DA6 + 1 = 4 * screenWidth * screenHeight



Update the two addresses I posted above to your new screen dimensions and your client will then open in those dimensions. Feel free to also use the additional address to fix a screenshot saving memory allocation problem.

Thanks.
 
Last edited:
Junior Spellweaver
Joined
Mar 16, 2013
Messages
167
Reaction score
19
Oh, thanks for notice. I forgot to post them because they were distant from the others in my code haha, I'll edit the thread right now
 
Newbie Spellweaver
Joined
Feb 21, 2016
Messages
30
Reaction score
3
Is it possible to separate login section and in-game section(800x600 in login section and 1920x1080 in in-game section)?
 
Custom Title Activated
Loyal Member
Joined
Jan 18, 2010
Messages
3,109
Reaction score
1,139
Is it possible to separate login section and in-game section(800x600 in login section and 1920x1080 in in-game section)?

Why not start with the two most important ones? Unless you have figured out how to backport adjustable resolutions from DX9, you need to initialize the Gr2D interface to your new resolution so that the backbuffer is properly updated.

To answer your question though: yes, I've done this for Phoenix and uwu. Basically everything stays default 800x600, but when you enter in-game it re-adjusts and re-calculates all offsets and dimensions to your custom resolution. Then, when you go back to the login screen (or even the Cash Shop), it will re-adjust back to 800x600.

However, there's two important things to note with this: First, you cannot do this with a localhost. It is required to have a DLL for your client if you want to make this possible. Second, and most importantly, v89+ clients have updated Gr2D support and you can just call the same functions that v95 does (this is what Croosade does and what I do with uwu, for example). Buuuut, if you're using a pre-v89 client, then you have to backport Gr2D resolution adjusting functions in order for it to work (this is what I do with Phoenix).
 
Newbie Spellweaver
Joined
Feb 21, 2016
Messages
30
Reaction score
3
To answer your question though: yes, I've done this for Phoenix and uwu. Basically everything stays default 800x600, but when you enter in-game it re-adjusts and re-calculates all offsets and dimensions to your custom resolution. Then, when you go back to the login screen (or even the Cash Shop), it will re-adjust back to 800x600.

However, there's two important things to note with this: First, you cannot do this with a localhost. It is required to have a DLL for your client if you want to make this possible. Second, and most importantly, v89+ clients have updated Gr2D support and you can just call the same functions that v95 does (this is what Croosade does and what I do with uwu, for example). Buuuut, if you're using a pre-v89 client, then you have to backport Gr2D resolution adjusting functions in order for it to work (this is what I do with Phoenix).

Should I call CWvsContext::SetScreenResolution to re-adjust client's resolution?
 
Junior Spellweaver
Joined
Mar 16, 2013
Messages
167
Reaction score
19
To answer your question though: yes, I've done this for Phoenix and uwu. Basically everything stays default 800x600, but when you enter in-game it re-adjusts and re-calculates all offsets and dimensions to your custom resolution. Then, when you go back to the login screen (or even the Cash Shop), it will re-adjust back to 800x600.

However, there's two important things to note with this: First, you cannot do this with a localhost. It is required to have a DLL for your client if you want to make this possible. Second, and most importantly, v89+ clients have updated Gr2D support and you can just call the same functions that v95 does (this is what Croosade does and what I do with uwu, for example). Buuuut, if you're using a pre-v89 client, then you have to backport Gr2D resolution adjusting functions in order for it to work (this is what I do with Phoenix).

It would be very nice if you could teach us how to do it with v83
 
Newbie Spellweaver
Joined
May 24, 2019
Messages
26
Reaction score
2
if i understand, we need change this 2 adress with dll for your values of 800 x 600 if click cs button. Correct @Erick?

0x009F7B1D + 1 = screenHeight
0x009F7B23 + 1 = screenWidth
 
Back
Top