• Unfortunately, we have experienced significant hard drive damage that requires urgent maintenance and rebuilding. The forum will be a state of read only until we install our new drives and rebuild all the configurations needed. Please follow our Facebook page for updates, we will be back up shortly! (The forum could go offline at any given time due to the nature of the failed drives whilst awaiting the upgrades.) When you see an Incapsula error, you know we are in the process of migration.

MU Online Interface HD

Newbie Spellweaver
Joined
May 29, 2013
Messages
5
Reaction score
0
Hi guys!


I would like to discuss the topic of HD interface...

Can anyone find a few ideas?
 
Experienced Elementalist
Joined
Mar 6, 2012
Messages
241
Reaction score
153
What you mean by HD interface? Nowadays the term HD is so disturbed that I don't know what people means when use it.
 
Junior Spellweaver
Joined
Jan 11, 2007
Messages
137
Reaction score
2
The problem is that the images with a width of 640 px stretch for high resolution. Because the window resolution 640x480 px , and it really does not change , and stretched. As a result, we have lubricated interface. Not to mention the wide screens and not proportional to 640x480 resolutions. Sorry for the Google translation .

Проблема в том что картинки с шириной 640 px тянутся на большие разрешения. Потому что разрешение окна 640x480 px и оно на самом деле не меняется, а растягивается. В итоге мы имеем смазанный интерфейс. Не говоря уже о широкоформатных экранах и не пропорциональных 640x480 разрешениях.
 
Junior Spellweaver
Joined
Sep 12, 2004
Messages
134
Reaction score
14
The problem is that the images with a width of 640 px stretch for high resolution. Because the window resolution 640x480 px , and it really does not change , and stretched. As a result, we have lubricated interface. Not to mention the wide screens and not proportional to 640x480 resolutions. Sorry for the Google translation .

Проблема в том что картинки с шириной 640 px тянутся на большие разрешения. Потому что разрешение окна 640x480 px и оно на самом деле не меняется, а растягивается. В итоге мы имеем смазанный интерфейс. Не говоря уже о широкоформатных экранах и не пропорциональных 640x480 разрешениях.

That is right, but it's still possible to "fix" that.

Will be a painful job, but I think it's possible.

I had the same idea a few days ago...
So I start searching something and found some interesting stuff, like this:

The cursor.tga (32x32), game renders it as 24x24 on 640x480.

So i changed my resolution to 2560x1080, it looks awful.

(2560*24)/640=96px
(1080*24)/480=54px.

The game renders the cursor scaled, so it will be 96x54.

So I made a few changes and corrected the aspect ratio of the cursor, now it is 54x54.

See screenshot attached.

The same idea can be done with the UI, but will take a lot of effort and a good set of images in HD.
I'm not a designer, so... fail :p

[]'s
 

Attachments

You must be registered for see attachments list
Last edited:
Custom Title Activated
Loyal Member
Joined
Jan 10, 2009
Messages
1,688
Reaction score
395
Well the solution is to just test out with replacing a certain texture with an HD one, for example replace the original cursor with a HD one even a different one would work just to check if it would stretch or not. At least that's how I see things, before starting to work on something and wasting time.
 
Junior Spellweaver
Joined
Jan 11, 2007
Messages
137
Reaction score
2
I think maybe rewrite functions to display images . The interface is loaded separately from the game image and uses this to other functions.
You can try using OpenGl, according to an embodiment of the horizon or the sky. At least you can try to do something similar in zMain S3 ep2 already found offsets most of the functionality you need .

As a result , you can get any resolution and separate from the drawing interface 640x480 : D ( for example in the upper right corner).


Я думаю возможно переписать функции вывода изображений. Интерфейс загружается отдельного от игровой картинки и использует для этого другие функции.
Можно попробовать использовать OpenGl, по примеру реализации горизонта или неба. Как минимум можно попробовать сделать нечто подобное в zMain S3 ep2 так уже найдены офсеты большинства нужных функций.

Как итог можно получить любое разрешение и отдельно от рисованный интерфейс 640х480 : D (к примеру в верхнем правом углу).
 
Experienced Elementalist
Joined
Nov 26, 2013
Messages
270
Reaction score
90
That is right, but it's still possible to "fix" that.

Will be a painful job, but I think it's possible.

I had the same idea a few days ago...
So I start searching something and found some interesting stuff, like this:

The cursor.tga (32x32), game renders it as 24x24 on 640x480.

So i changed my resolution to 2560x1080, it looks awful.

(2560*24)/640=96px
(1080*24)/480=54px.

The game renders the cursor scaled, so it will be 96x54.

So I made a few changes and corrected the aspect ratio of the cursor, now it is 54x54.

See screenshot attached.

The same idea can be done with the UI, but will take a lot of effort and a good set of images in HD.
I'm not a designer, so... fail :p

[]'s

Can you post function what you used for resize texture?
 
Junior Spellweaver
Joined
Sep 12, 2004
Messages
134
Reaction score
14
Can you post function what you used for resize texture?
Not sure how I can do that but, let me try:

I started from here:

push 1 ; /Arg6 = 00000001
push 0 ; |Arg5 = 00000000
push 2900 ; |Arg4 = 00002900
push 2601 ; |Arg3 = 00002601
push 2 ; |Arg2 = 00000002
push 00726E54 ; |Arg1 = 00726E54 ASCII "Interface\Cursor.tga"
call 00696C9C ; \main.00696C9C

Set a few breaking points, see where it write, etc..

Then I get here:

fild dword ptr ds:[7DF17E8]
push 0
push 1
push 1
push 3F800000
fsub dword ptr ds:[7036FC]
push 3F800000
push 0
push 0
push 41C00000 ; height
push 41C00000 ; width
push ecx
fstp dword ptr ss:[esp]
fild dword ptr ds:[7DF17EC]
push ecx
fsub dword ptr ds:[7036FC]
fstp dword ptr ss:[esp]
push 2 ; |Arg1 = 00000002
call 0067A8D7 ; \main.0067A8D7 ; hook me

The bold number it's the texture number, so this function draw all sprites.

Just hook it and have fun with the input values.

VOID __CDECL Hook::Main::DrawSprite(DWORD id, FLOAT x, FLOAT y, FLOAT width, FLOAT height, FLOAT u, FLOAT v, FLOAT u2, FLOAT v2, BOOL scaleSize, BOOL scalePosition, FLOAT alpha)

This is far I can go, good luck with that now.
I think you have enough information to play around.

If you find anything useful, let me know.

[]'s
 
Experienced Elementalist
Joined
Nov 26, 2013
Messages
270
Reaction score
90
Not sure how I can do that but, let me try:

I started from here:



Set a few breaking points, see where it write, etc..

Then I get here:



The bold number it's the texture number, so this function draw all sprites.

Just hook it and have fun with the input values.



This is far I can go, good luck with that now.
I think you have enough information to play around.

If you find anything useful, let me know.

[]'s

Thanks!
Also zTeam client source already have this hook:
#define pDrawImage ((void(__cdecl*)(int ImageID, float PosX, float PosY, float Width, float Height, int Arg6, int Arg7, float ScaleX, float ScaleY, int ScaleSize, int ScalePosition, int Alpha)) 0x637C60)
 
Back
Top