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!

Changing resolution in OldSchool Clients (ZSZC, ECSRO)

Joined
Oct 12, 2011
Messages
554
Reaction score
318
I decided to re-release, since a lot asked me for it about pm, enjoy.

Hi guys here is my next release. It was kinda hard to do, but I decided to release it, and try to fix the swsro files together. I don't want to see in my thread such things like "bugged files" etc. These are the oldest files, from the best times, and it worth the time to care with it. If you follow this guide, you will be able to change your oldschool client's resolution to your screen size. You will need different files for each resolution, so if there are any good coders, please contact me, and code a resolution changer tool. I am using the ZSZC client. I am going to release some tools for it.
So let's start.

You will need these tools:

XVI32
OllyDBG
Photoshop
And some tools for the ZSZC Client, which you can find at the bottom of this thread.

ZSZC Client's blowfish key: (if somebody need)

ASCII: 2009Äę
HEX: 32 30 30 39 C4 EA

So, the first thing we will do is, to edit our sro_client.exe, and add the resolutions we want to use. It can be 5 different resolutions.
Open the sro_client.exe with OllyDBG

Press Ctrl+G, and go to this address: 00544B41
We are at the available resolutions now, your screen should look like this:

sladlejrhfpq - Changing resolution in OldSchool Clients (ZSZC, ECSRO) - RaGEZONE Forums


Lets see what is there, here is the first resolution
Code:
00544B41   . 81F9 20030000  CMP ECX,[COLOR="#FF0000"]320[/COLOR]
00544B47   . 75 0A          JNZ SHORT SRO_Clie.00544B53
00544B49   . 8B45 04        MOV EAX,DWORD PTR SS:[EBP+4]
00544B4C   . 3D 58020000    CMP EAX,[COLOR="#FF0000"]258[/COLOR]
00544B51   . 74 50          JE SHORT SRO_Clie.00544BA3
CMP ECX,320 is the width of the first resolution, which is 800 in decimal
CMP EAX,258 is the height of the first resolution, which is 600 in decimal

so, as we can see, the available resolutions are:

800x600
1024x768
1280x1024
1152x864
1600x1200

lets say, we want to add 1920x1080 resolution instead of the 1600x1200
what we need to do, is click on this line:
Code:
00544B89   > 81F9 40060000  CMP ECX,[COLOR="#FF0000"]640[/COLOR]
hit spacebar, and change 640 to 780 ( so we changed 1600 to 1920 )

do the same for this line, but this time change 4B0 to 438
Code:
00544B98   . 3D B0040000    CMP EAX,[COLOR="#FF0000"]4B0[/COLOR]
We have to do this for 2 more times, at different addresses. Lets go to 0063F4F7
do the same as before. After you are done, go to 00647D51

its a little bit different, then before, but the same thing. You will see something like this:
Code:
00647DA1   > 3D 40060000    CMP EAX,[COLOR="#FF0000"]640[/COLOR]
00647DA6   . 75 0D          JNZ SHORT SRO_Clie.00647DB5
00647DA8   . 81BC24 6801000>CMP DWORD PTR SS:[ESP+168],[COLOR="#FF0000"]4B0[/COLOR]
Do the changes again. After it, we are done with sro_client.exe
for saving it:
Right Click->Copy->Select All
Right Click->Copy to executable->Selection
A new window will appear.
Right Click on it->Save file

Now the resolution is available. But the client will still start with 1024x768.
We need to modify SROptionSet.dat, which is in the Settings folder of your client. If you dont have one, start your client to generate.
If you have it, make a backup, it is important and open this file with XVI32
press Ctrl+G, and go to hex offset: 5A
you will see 00 04 there, we must change it to 80 07 (780)
after it go to hex offset: 62, and change 00 03 to 38 04

Maybe it looks strange, that why 07 80 is stored as 80 07, it is the little endian byte order, which is used by intel processors.

If you did everything correct, it should look like this:

sladlejrhfpq - Changing resolution in OldSchool Clients (ZSZC, ECSRO) - RaGEZONE Forums


Our client will start with 1920x1080.
Next problem is, the position of all buttons, and texts. These settings are stored inside the Media.pk2, in resinfo folder.

We will need the following files:
ginterface.txt
pstitle.txt
pscharacterselect.txt
pscharacterchina.txt

Extract them using the ZSZC Pk2 Extractor.

Here are the list which functions (or whatever they are) need to be modified:

ginterface.txt

Minimap position:
GDR_MINIMAP:CIFMinimap



pstitle.txt

Login Screen:

Login Window
GDR_STA_LOGINWINDOW:CIFStatic

Connect
GDR_BTN_OK:CIFButton

Exit
GDR_BTN_CANCEL:CIFButton

Requesting user confirmation
GDR_TEXT_MESSAGE:CIFTextBox

Server Select
GDR_STA_SERVERWINDOW:CIFStatic

Select
GDR_BTN_SACCEPT:CIFButton

Cancel
GDR_BTN_SCANCEL:CIFButton


pscharacterselect.txt

Create
GDR_BTN_CREATE:CIFButton

Cancel
GDR_BTN_BACK:CIFButton

Start
GDR_BTN_START:CIFButton

Delete
GDR_BTN_DELETE:CIFButton

Cancel
GDR_BTN_BACK2:CIFButton

Restore
GDR_BTN_RESTORE:CIFButton

Text Box
GDR_TEXT_MESSAGE:CIFTextBox

Delete Time Window
GDR_STA_REMAINTIME:CIFStatic


pscharacterchina.txt

Confirm
GDR_BTN_OK:CIFButton

Cancel
GDR_BTN_BACK:CIFButton

Explain Window
GDR_STA_EXPLAIN:CIFStatic

Rotate Window
GDR_STA_ROTATE:CIFStatic

Customize Window
GDR_STA_CUSTOM:CIFStatic

Create Window
GDR_STA_WCREATE:CIFStatic

Text Box
GDR_TEXT_MESSAGE:CIFTextBox


I will show an example how it works, lets see for example ginterface.txt, and the minimap settings

Code:
	GDR_MINIMAP:CIFMinimap
	{
		ClientRect=RECT,"0,0,0,0"
		Color=COLOR,"255,49,79,177"
		DDJ=STRING,"interface\\minimap\\mm_window.ddj"
		FontColor=COLOR,"255,255,255,255"
		FontIndex=INTEGER,"0"
		HAlign=INTEGER,"1"
		ID=INTEGER,"10"
		Rect=RECT,"[COLOR="#FF0000"]892[/COLOR],[COLOR="#00FF00"]6[/COLOR],[COLOR="#0000FF"]140[/COLOR],[COLOR="#FFA500"]184[/COLOR]"
		Style=INTEGER,"0"
		SubSection=STRING,""
		Text=STRING,""
		UV_LB=POINT,"0,1"
		UV_LT=POINT,"0,0"
		UV_RB=POINT,"1,1"
		UV_RT=POINT,"1,0"
		VAlign=INTEGER,"1"
	}

The position where the minimap starts in pixels from the left side
The position where the minimap starts in pixels from the top of the screen
The width of mm_window.ddj in pixels
The height of mm_window.ddj in pixels

we have to modify only the first and the second.
I know it would be easy to calculate from the screen sizes (1024-892=132, 1920-132=1788), but we will use a different way, to determine the positions, because in the other files, it will be different. (x and y are 0,0 so we have to set the values)

Log in first, with 1024x768, and make a screen shot when you are in the game.

Open this screenshot in photoshop. It should look like this>

sladlejrhfpq - Changing resolution in OldSchool Clients (ZSZC, ECSRO) - RaGEZONE Forums


Create a new image, and make the size 1920x1080
Go back to the image you just opened, select it and copy to the 1920x1080 one. After it move it to the upper right corner, and click on the background layer (it is important).

sladlejrhfpq - Changing resolution in OldSchool Clients (ZSZC, ECSRO) - RaGEZONE Forums


We have to determine the width from the left side. Select everything on the picture, from the map's left side to the screen's left side. Press Ctrl+C. Click on File->New...

It will show you the width and height of the selected part of the picture.

sladlejrhfpq - Changing resolution in OldSchool Clients (ZSZC, ECSRO) - RaGEZONE Forums



As you can see on the picture, it says 1793 pixels. "(1024-892=132, 1920-132=1788)". It is nearly the same value, as I've calculated before, only 5 pixels difference, but in other cases we won't be able to do this as I've said it before.
So, if there would be 0, we couldn't calculate, but we could check it, in this example. For example later at buttons, it will be really different. Note that in some cases you have to move your 1024x768 pixels picture to the left upper corner, to the right downer corner etc.
Also note, that we just placed the minimap in the right position. Before you start editing, make sure you have screenshots from:

Ingame(as we just did)
Login screen
Character select screen
Character select screen, when you have selected a character
Character select screen, when you have selected a deleting character
Character create screen.

If you start the game now, with the SROptionSet.dat you modifed to 1920x1080, you won't be able to log in, because of the buttons. You will have to place them to the right position, this is why I said make the pictures before you start.
If you will start the client with 1024x768, log in, and change to 1920x1080, the minimap position won't work, this is why you have to do everything as I wrote in the tutorial.

Maybe there are easier way to get the pixels, I am not good in editing pictures, and it was the easiest one for me, but you can see how you should start.
Also I am releasing my working 1366x768 resolution. (my laptop's screen size), so you can see how I fixed for example the text boxes. I believe it is not difficult, to make a resolution following this tutorial, but takes time for sure.

/////////////////////////////////////////////////////////////////////////////////////

Addresses for ECSRO sro_client.exe

Code:
004819C5     81F9 20030000  CMP ECX,320
004819CB   . 75 0A          JNZ SHORT sro_clie.004819D7
004819CD   . 8B47 04        MOV EAX,DWORD PTR DS:[EDI+4]
004819D0     3D 58020000    CMP EAX,258
004819D5   . 74 50          JE SHORT sro_clie.00481A27
004819D7   > 81F9 00040000  CMP ECX,400
004819DD   . 75 0A          JNZ SHORT sro_clie.004819E9
004819DF   . 8B47 04        MOV EAX,DWORD PTR DS:[EDI+4]
004819E2   . 3D 00030000    CMP EAX,300
004819E7   . 74 3E          JE SHORT sro_clie.00481A27
004819E9   > 81F9 00050000  CMP ECX,500
004819EF   . 75 0A          JNZ SHORT sro_clie.004819FB
004819F1   . 8B47 04        MOV EAX,DWORD PTR DS:[EDI+4]
004819F4   . 3D 00040000    CMP EAX,400
004819F9   . 74 2C          JE SHORT sro_clie.00481A27
004819FB   > 81F9 80040000  CMP ECX,480
00481A01   . 75 0A          JNZ SHORT sro_clie.00481A0D
00481A03   . 8B47 04        MOV EAX,DWORD PTR DS:[EDI+4]
00481A06   . 3D 60030000    CMP EAX,360
00481A0B   . 74 1A          JE SHORT sro_clie.00481A27
00481A0D   > 81F9 40060000  CMP ECX,640
00481A13   . 0F85 85030000  JNZ sro_clie.00481D9E
00481A19   . 8B47 04        MOV EAX,DWORD PTR DS:[EDI+4]
00481A1C   . 3D B0040000    CMP EAX,4B0

Code:
005EBF6D  |> 81F9 20030000  ||CMP ECX,320
005EBF73  |. 75 08          ||JNZ SHORT sro_clie.005EBF7D
005EBF75  |. 81FE 58020000  ||CMP ESI,258
005EBF7B  |. 74 40          ||JE SHORT sro_clie.005EBFBD
005EBF7D  |> 81F9 00040000  ||CMP ECX,400
005EBF83  |. 75 08          ||JNZ SHORT sro_clie.005EBF8D
005EBF85  |. 81FE 00030000  ||CMP ESI,300
005EBF8B  |. 74 30          ||JE SHORT sro_clie.005EBFBD
005EBF8D  |> 81F9 00050000  ||CMP ECX,500
005EBF93  |. 75 08          ||JNZ SHORT sro_clie.005EBF9D
005EBF95  |. 81FE 00040000  ||CMP ESI,400
005EBF9B  |. 74 20          ||JE SHORT sro_clie.005EBFBD
005EBF9D  |> 81F9 80040000  ||CMP ECX,480
005EBFA3  |. 75 08          ||JNZ SHORT sro_clie.005EBFAD
005EBFA5  |. 81FE 60030000  ||CMP ESI,360
005EBFAB  |. 74 10          ||JE SHORT sro_clie.005EBFBD
005EBFAD  |> 81F9 40060000  ||CMP ECX,640
005EBFB3  |. 75 44          ||JNZ SHORT sro_clie.005EBFF9
005EBFB5  |. 81FE B0040000  ||CMP ESI,4B0

Code:
005EB141  |. 3D 20030000    CMP EAX,320
005EB146  |. 75 0A          JNZ SHORT sro_clie.005EB152
005EB148  |. 817C24 48 5802>CMP DWORD PTR SS:[ESP+48],258
005EB150  |. EB 42          JMP SHORT sro_clie.005EB194
005EB152  |> 3D 00040000    CMP EAX,400
005EB157  |. 75 0A          JNZ SHORT sro_clie.005EB163
005EB159  |. 817C24 48 0003>CMP DWORD PTR SS:[ESP+48],300
005EB161  |. EB 31          JMP SHORT sro_clie.005EB194
005EB163  |> 3D 80040000    CMP EAX,480
005EB168  |. 75 0A          JNZ SHORT sro_clie.005EB174
005EB16A  |. 817C24 48 6003>CMP DWORD PTR SS:[ESP+48],360
005EB172  |. EB 20          JMP SHORT sro_clie.005EB194
005EB174  |> 3D 00050000    CMP EAX,500
005EB179  |. 75 0A          JNZ SHORT sro_clie.005EB185
005EB17B  |. 817C24 48 0004>CMP DWORD PTR SS:[ESP+48],400
005EB183  |. EB 0F          JMP SHORT sro_clie.005EB194
005EB185  |> 3D 40060000    CMP EAX,640
005EB18A  |. 75 0A          JNZ SHORT sro_clie.005EB196
005EB18C  |. 817C24 48 B004>CMP DWORD PTR SS:[ESP+48],4B0

The differences between the two clients are only these, and of course the blowfish key
ECSRO's blowfish key is the same as the official clients (169841), so you can use the same tools as you use for vsro files.
/////////////////////////////////////////////////////////////////////////////////////

Download links:

ZSZC Client:



but as I've said before, we need different files to Media.pk2 for every resolutions, and I did only 1366x768
If you need offsets for level cap, party matching, skill show up etc, you can find it in this thread:
http://forum.ragezone.com/f722/offsets-zszc-client-848484/

Please, if it helped you, press a like, it was much work for me to perform it.
 
Last edited:
Junior Spellweaver
Joined
Jun 29, 2008
Messages
145
Reaction score
24
Can you just release the ZSZC sro_client.exe and the media that you fixed already? the resolution you did is exactly what I need. it would be appreciated.
 
Last edited by a moderator:
Newbie Spellweaver
Joined
Jan 8, 2012
Messages
11
Reaction score
0
BÖÖÖ :scared:

Hello Brother
I am interested in ecsro files. I have a question.
- The skill bar does not save in the game.
Nothing happens when I go in and out.

how can i solve it?

thanks
 
Back
Top