Page 1 of 1

Locating map dimensions in executable

PostPosted: Thu Nov 01, 2012 2:16 pm
by Warstone
There is simple method, how you can find and change map dimensions in client.

You need only hex editor (I'm using PSPad HEX).

1) Find constatnt "Felucca" in executable.
2) Get it's offset and add $40000 (IMAGE_BASE)
3) Result number is address of Felucca that you need to find. Rever it by bytes (addesses has 4 bytes. So: $12345678 will be $78563412).
4) Find that reverted number in client. This is pointer to map definition structure.

structure is:
Pointer (4Bytes) - Address of map name
Cardinal (4Bytes) - Map width
Cardinal (4Bytes) - Map Height
Cardinal (4Bytes) - Main map width // Extra height and width is "Dungeons"
Cardinal (4Bytes) - Main map height
24 Bytes - Unknown.
Cardinal (4Bytes) - Map rules ? (1 for Felucca, 0 for others)

And it repeats for every map.

So, if you change this numbers and makes map with new dimensions... You can play on it. Currently UO: Quintessence used it (for now they are in closed alpha, but must be opened near to new year).

PS: I'm not a member of stuff of that shard.
PPS: Sorry for my English.

Re: Locating map dimensions in executable

PostPosted: Thu Nov 01, 2012 3:42 pm
by Batlin
Thank you for sharing!

Re: Locating map dimensions in executable

PostPosted: Fri Nov 30, 2012 1:27 am
by Warstone
Some additional info:
24 bytes that unknown... This is indexes for files table. So, if you want to wipe out statics1.mul, than you can redirect it to any clear mul and delete it from installation.

For 7X clients there is 2 tables.. One for classic case, and one for X case.