- 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:
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:
Now to use it, regedit to "HKEY_CURRENT_USER\Software\Webzen\Mu\Config" and set Resolution to 4.
hope you figure it out ;]
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:
You must be registered to see links
You must be registered to see links
You must be registered to see links
You must be registered to see links
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 ;]