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!

Widescreen mod

Newbie Spellweaver
Joined
Mar 23, 2004
Messages
10
Reaction score
2
Hi there, some time ago I got my first ever wide screen lcd monitor, and like many I found Mu Online to be almost the only non-widescreen-friendly in my short list of "games I play". So I decided to get a little dirty and fix that. This is not a tutorial, or even a real guide, this is more like a log of what I did in hard strokes.

Patching 4 bytes did the trick for me, however this is not completely artifact-free. I did this on the korean client, so chinese may be different.

What we're gonna do here is replace some of the hardcoded resolutions with the one we choose to support. In this case I trashed 1600x1200, and replaced it with 1680x1050.

it looks like this:






ok, lets get started:

Load main.exe in IDA (you obviously need an unpacked main.exe for this to work). I found the first code to be replaced by searching for a reference to "SOFTWARE\\Webzen\\Mu\\Config", scroll down until the "call ds:RegCloseKey".
you should see a switch like this:

Code:
seg000:004B81D6                 call    ds:RegCloseKey
seg000:004B81DC                 mov     eax, ds:dword_5760A98
seg000:004B81E1                 cmp     eax, edi
seg000:004B81E3                 ja      short loc_4B8258
seg000:004B81E5                 jmp     ds:off_4B829C[eax*4] ; switch here
seg000:004B81EC
seg000:004B81EC loc_4B81EC:                             ; case 0
seg000:004B81EC                 mov     ds:width, 280h
seg000:004B81F6                 mov     ds:height, 1E0h
seg000:004B8200                 jmp     short loc_4B8258
seg000:004B8202 ; ---------------------------------------------------------------------------
seg000:004B8202
seg000:004B8202 loc_4B8202:                             ; case 1
seg000:004B8202                                         ; 
seg000:004B8202                 mov     ds:width, 320h
seg000:004B820C                 mov     ds:height, 258h
seg000:004B8216                 jmp     short loc_4B8258
seg000:004B8218 ; ---------------------------------------------------------------------------
seg000:004B8218
seg000:004B8218 loc_4B8218:                             ; case 2
seg000:004B8218                                         ; 
seg000:004B8218                 mov     ds:width, 400h
seg000:004B8222                 mov     ds:height, 300h
seg000:004B822C                 jmp     short loc_4B8258
seg000:004B822E ; ---------------------------------------------------------------------------
seg000:004B822E
seg000:004B822E loc_4B822E:                             ; case 3
seg000:004B822E                                         ; 
seg000:004B822E                 mov     ds:width, 500h
seg000:004B8238                 mov     ds:height, 400h
seg000:004B8242                 jmp     short loc_4B8258
seg000:004B8244 ; ---------------------------------------------------------------------------
seg000:004B8244
seg000:004B8244 loc_4B8244:                             ; case 4 ---> we need to patch these
seg000:004B8244                                         ;
seg000:004B8244                 mov     ds:width, 640h	; 640h = 1600 change to 690h
seg000:004B824E                 mov     ds:height, 4B0h ; 4B0 = 1200 change to 41Ah

Now we should have the game creating a full screen window of the right size, but the font is all fucked up... let's fix it. Search for "UpdateWindow", scroll down a bit and you should see this:

Code:
seg000:004B9439                 call    ds:UpdateWindow
seg000:004B943F                 mov     eax, ds:hWnd
seg000:004B9444                 push    eax
seg000:004B9445                 call    sub_44F1D0
seg000:004B944A                 add     esp, 4
seg000:004B944D                 push    offset aGgConnectWindo ; "> gg connect Window Handle.\r\n"
seg000:004B9452                 push    offset unk_5760850 ; int
seg000:004B9457                 call    sub_41FAC0
seg000:004B945C                 add     esp, 8
seg000:004B945F                 mov     ecx, offset unk_5760850 ; int
seg000:004B9464                 call    sub_41FC70
seg000:004B9469                 mov     ecx, ds:hWnd
seg000:004B946F                 push    ecx             ; HWND
seg000:004B9470                 mov     ecx, offset unk_5760850 ; int
seg000:004B9475                 call    sub_41FE50
seg000:004B947A                 mov     ecx, offset unk_5760850 ; int
seg000:004B947F                 call    sub_41FC70
seg000:004B9484                 push    401h
seg000:004B9489                 mov     edx, ds:hWnd
seg000:004B948F                 push    edx
seg000:004B9490                 mov     ecx, offset dword_5760828
seg000:004B9495                 call    sub_447040
seg000:004B949A                 mov     eax, ds:width		; get width
seg000:004B949F                 mov     [ebp+var_2458], eax
seg000:004B94A5                 cmp     [ebp+var_2458], 400h	; if(width>1024)
seg000:004B94AF                 ja      short loc_4B94D7	;   goto loc_4B94D7
seg000:004B94B1                 cmp     [ebp+var_2458], 400h
seg000:004B94BB                 jz      short loc_4B94FD
seg000:004B94BD                 cmp     [ebp+var_2458], 280h
seg000:004B94C7                 jz      short loc_4B94E5
seg000:004B94C9                 cmp     [ebp+var_2458], 320h
seg000:004B94D3                 jz      short loc_4B94F1
seg000:004B94D5                 jmp     short loc_4B9513
seg000:004B94D7 ; ---------------------------------------------------------------------------
seg000:004B94D7
seg000:004B94D7 loc_4B94D7:                             ; CODE XREF: WinMain(x,x,x,x)+B0Fj
seg000:004B94D7                 cmp     [ebp+var_2458], 500h	; --> change this to 690h
seg000:004B94E1                 jz      short loc_4B9509	 
seg000:004B94E3                 jmp     short loc_4B9513
[...a few lines below...]
seg000:004B956D                 call    ds:CreateFontA  ; ---> gotcha

Now to use it, regedit to "HKEY_CURRENT_USER\Software\Webzen\Mu\Config" and set Resolution to 4.

hope you figure it out ;]
 
Initiate Mage
Joined
Oct 3, 2004
Messages
2
Reaction score
0
thx a lot, i dont understand why no one has actually made there main's to do this in the first place... poor people?? =P
 
Initiate Mage
Joined
Jan 5, 2007
Messages
2
Reaction score
0
Hey bro, im not sure what you just done, do you reckon you could brake down those steps from the get go, it would be much appreciated. BTW I too play of a 21inch monitor, my usual games are played at 1600x1200.
 
Newbie Spellweaver
Joined
Sep 16, 2006
Messages
5
Reaction score
0
What does it mean run main in IDA ? I need to make mu work in resolution 1366x768
 
Junior Spellweaver
Joined
Oct 24, 2006
Messages
106
Reaction score
0
Code:
seg000:004B8244 loc_4B8244:                             ; case 4 ---> we need to patch these
seg000:004B8244                                         ;
seg000:004B8244                 mov     ds:width, 640h    ; 640h = 1600 change to 690h
seg000:004B824E                 mov     ds:height, 4B0h ; 4B0 = 1200 change to 41Ah
How to change these values? :blink: Sorry for the dumb question, I'm absolute newbie in "coding", but I really really need the 1366x768 resolution.

Sorry for my bad English. :blush:
 
Newbie Spellweaver
Joined
Mar 23, 2004
Messages
10
Reaction score
2
Code:
seg000:004B8244 loc_4B8244:                             ; case 4 ---> we need to patch these
seg000:004B8244                                         ;
seg000:004B8244                 mov     ds:width, 640h    ; 640h = 1600 change to 690h
seg000:004B824E                 mov     ds:height, 4B0h ; 4B0 = 1200 change to 41Ah
How to change these values? :blink: Sorry for the dumb question, I'm absolute newbie in "coding", but I really really need the 1366x768 resolution.

Sorry for my bad English. :blush:

This is really basic patching stuff, I'll give you some keywords for you to look around. Convert the address to patch (for example 004B8244) to file offset (let's just say that's offset 0xA8244). Then use an hex editor to patch the values at that offset for the values you want there to be. You can use ollydbg also and save the patched file right there. No conversion from VA to file offset needed with olly.
 
Junior Spellweaver
Joined
Oct 24, 2006
Messages
106
Reaction score
0
This is really basic patching stuff, I'll give you some keywords for you to look around. Convert the address to patch (for example 004B8244) to file offset (let's just say that's offset 0xA8244). Then use an hex editor to patch the values at that offset for the values you want there to be. You can use ollydbg also and save the patched file right there. No conversion from VA to file offset needed with olly.

Thanx, but I sill don't get it... :blush:
What software do I need? Can I use only Olly DBG and Hex, or I will mandatory need IDA? Or maybe only IDA and Hex?
And how to "convert the addresss to patch to file offset" ?

Thanx again. :):
 
Junior Spellweaver
Joined
Jul 30, 2005
Messages
176
Reaction score
110
Works fine, but somethings got messed up, like M key, left/right map render and cash shop. Somobody knows how to fix or some clue to how find the functions to fix ?

cosoraro - Widescreen mod - RaGEZONE Forums


Thanks.
 
NN - Nord & Noob
Loyal Member
Joined
Jul 15, 2004
Messages
1,207
Reaction score
689
@cosoraro images
PS. i can do muonline windows mode who support wide - i was added it into my orion minazer then removed it ^^ and released it without custom resolutions :)
 
Junior Spellweaver
Joined
Jul 30, 2005
Messages
176
Reaction score
110
@cosoraro images
PS. i can do muonline windows mode who support wide - i was added it into my orion minazer then removed it ^^ and released it without custom resolutions :)

How u do that ? Can u share it ? Is trully wide or just stretched window ?
 
NN - Nord & Noob
Loyal Member
Joined
Jul 15, 2004
Messages
1,207
Reaction score
689
Your VGA drivers do strech / scale to wide window if game dont support it see eg: Nvidia control panel

cosoraro - Widescreen mod - RaGEZONE Forums


Added:

game is crap:
cosoraro - Widescreen mod - RaGEZONE Forums


Added:

Here is widescreen:
cosoraro - Widescreen mod - RaGEZONE Forums
 
Last edited:
Junior Spellweaver
Joined
Jul 30, 2005
Messages
176
Reaction score
110
In your sc are streched to, mather of fact all wide is scaled or streched! :p

Sorry fellow but it is not. My modification is trully wide. Look at the character and texts shapes. Not streched ! The only problem is find the float that render the whole screen. ;)
 
Experienced Elementalist
Joined
Aug 25, 2005
Messages
253
Reaction score
20
With this change, only the interface gets stretched. And the move menu and cash shop get messed up.
By using a 4:3 resolution on a widescreen (16:10, 16:9) display, then all the things get stretched, but the menu and cash shop are working fine.

Old screens: 1200x720 (to fit my 1366x768 display)
cosoraro - Widescreen mod - RaGEZONE Forums

cosoraro - Widescreen mod - RaGEZONE Forums

cosoraro - Widescreen mod - RaGEZONE Forums

cosoraro - Widescreen mod - RaGEZONE Forums
 
Back
Top